Name: series-workflowht8pr Phase: Succeeded StartedAt: 2026-07-13 03:57:04 +0000 UTC FinishedAt: 2026-07-13 05:35:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowht8pr[0] Phase: Succeeded StartedAt: 2026-07-13 03:57:04 +0000 UTC FinishedAt: 2026-07-13 04:20:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowht8pr[0].run-triage Phase: Succeeded StartedAt: 2026-07-13 03:57:04 +0000 UTC FinishedAt: 2026-07-13 04:20:20 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "R8169" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "R8169" ], "series_id": "7e81e4ff-7faf-4d3e-b677-123c30301611" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "rtl8169_init_ring", "rtl8169_rx_clear", "rtl8169_rx_refill", "rtl8169_alloc_rx_data" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA0OjE4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1I4MTY5JiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnRsODE2OV9pbml0X3JpbmcmIzM0OywKICAgICYjMzQ7cnRsODE2OV9yeF9jbGVhciYjMzQ7LAogICAgJiMzNDtydGw4MTY5X3J4X3JlZmlsbCYjMzQ7LAogICAgJiMzNDtydGw4MTY5X2FsbG9jX3J4X2RhdGEmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBwYWdlX3Bvb2wgYW5kIHhkcF9yeHFfaW5mbyB0byB0aGUgcjgxNjkgbmV0d29yayBkcml2ZXIgZm9yIFJYIGJ1ZmZlciBtYW5hZ2VtZW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGRyaXZlciYjMzk7cyBSWCBwYXRoIGFuZCBpbml0aWFsaXphdGlvbi9jbGVhbnVwIHJvdXRpbmVzLiBUaGUgUENJIGRyaXZlciBjYW4gYmUgZnV6emVkIHZpYSBzeXprYWxsZXImIzM5O3MgUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA0OjE4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNzRmOTFlZGIxNWYxMDFkMGUwYWZkYzVkOTk1YTY4ZDZkMGJjNTMxZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVsIDEzIDA0OjE4OjI5IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmNcbmluZGV4IGVjNGZjMjFmYTIxZmIwLi5jNTQ4ZTdlOGRiODc0ZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uY1xuQEAgLTMxLDcgJiM0MzszMSw5IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvdW5hbGlnbmVkLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvaXA2X2NoZWNrc3VtLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvbmV0ZGV2X3F1ZXVlcy5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY25ldC9wYWdlX3Bvb2wvaGVscGVycy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbmV0L3BoeS9yZWFsdGVrX3BoeS5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY25ldC94ZHAuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFwmIzM0O3I4MTY5LmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDtyODE2OV9maXJtd2FyZS5oXCYjMzQ7XG5AQCAtNzI5LDYgJiM0Mzs3MzEsMTAgQEAgZW51bSBydGxfZGFzaF90eXBlIHtcbiB9O1xuIFxuIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUge1xuJiM0MztcdHN0cnVjdCBwYWdlX3Bvb2wgKnJ4X3Bvb2w7XG4mIzQzO1x0c3RydWN0IHhkcF9yeHFfaW5mbyB4ZHBfcnhxO1xuJiM0MztcdHUzMiByeF9oZWFkcm9vbTtcbiYjNDM7XHR1MzIgcnhfYnVmX3N6O1xuIFx0dm9pZCBfX2lvbWVtICptbWlvX2FkZHI7XHQvKiBtZW1vcnkgbWFwIHBoeXNpY2FsIGFkZHJlc3MgKi9cbiBcdHN0cnVjdCBwY2lfZGV2ICpwY2lfZGV2O1xuIFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldjtcbkBAIC03MzksNiAmIzQzOzc0NSw3IEBAIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUge1xuIFx0dTMyIGN1cl9yeDsgLyogSW5kZXggaW50byB0aGUgUnggZGVzY3JpcHRvciBidWZmZXIgb2YgbmV4dCBSeCBwa3QuICovXG4gXHR1MzIgY3VyX3R4OyAvKiBJbmRleCBpbnRvIHRoZSBUeCBkZXNjcmlwdG9yIGJ1ZmZlciBvZiBuZXh0IFJ4IHBrdC4gKi9cbiBcdHUzMiBkaXJ0eV90eDtcbiYjNDM7XHR1MzIgZGlydHlfcng7XG4gXHRzdHJ1Y3QgVHhEZXNjICpUeERlc2NBcnJheTtcdC8qIDI1Ni1hbGlnbmVkIFR4IGRlc2NyaXB0b3IgcmluZyAqL1xuIFx0c3RydWN0IFJ4RGVzYyAqUnhEZXNjQXJyYXk7XHQvKiAyNTYtYWxpZ25lZCBSeCBkZXNjcmlwdG9yIHJpbmcgKi9cbiBcdGRtYV9hZGRyX3QgVHhQaHlBZGRyO1xuQEAgLTI2MjIsNiAmIzQzOzI2MjksNyBAQCBzdGF0aWMgdm9pZCBydGxfaW5pdF9yeGNmZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBzdGF0aWMgdm9pZCBydGw4MTY5X2luaXRfcmluZ19pbmRleGVzKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIHtcbiBcdHRwLVx1MDAzZWRpcnR5X3R4ID0gdHAtXHUwMDNlY3VyX3R4ID0gdHAtXHUwMDNlY3VyX3J4ID0gMDtcbiYjNDM7XHR0cC1cdTAwM2VkaXJ0eV9yeCA9IDA7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIHJ0bF9qdW1ib19jb25maWcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG5AQCAtNDE0OCwzNyAmIzQzOzQxNTYsMzAgQEAgc3RhdGljIGludCBydGw4MTY5X2NoYW5nZV9tdHUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IG5ld19tdHUpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tc3RhdGljIHZvaWQgcnRsODE2OV9tYXJrX3RvX2FzaWMoc3RydWN0IFJ4RGVzYyAqZGVzYylcbiYjNDM7c3RhdGljIHZvaWQgcnRsODE2OV9tYXJrX3RvX2FzaWMoc3RydWN0IFJ4RGVzYyAqZGVzYywgdTMyIHJ4X2J1Zl9zeilcbiB7XG4gXHR1MzIgZW9yID0gbGUzMl90b19jcHUoZGVzYy1cdTAwM2VvcHRzMSkgXHUwMDI2IFJpbmdFbmQ7XG4gXG4gXHRkZXNjLVx1MDAzZW9wdHMyID0gMDtcbiBcdC8qIEZvcmNlIG1lbW9yeSB3cml0ZXMgdG8gY29tcGxldGUgYmVmb3JlIHJlbGVhc2luZyBkZXNjcmlwdG9yICovXG4gXHRkbWFfd21iKCk7XG4tXHRXUklURV9PTkNFKGRlc2MtXHUwMDNlb3B0czEsIGNwdV90b19sZTMyKERlc2NPd24gfCBlb3IgfCBSODE2OV9SWF9CVUZfU0laRSkpO1xuJiM0MztcdFdSSVRFX09OQ0UoZGVzYy1cdTAwM2VvcHRzMSwgY3B1X3RvX2xlMzIoRGVzY093biB8IGVvciB8IHJ4X2J1Zl9zeikpO1xuIH1cbiBcbiBzdGF0aWMgc3RydWN0IHBhZ2UgKnJ0bDgxNjlfYWxsb2NfcnhfZGF0YShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCxcbiBcdFx0XHRcdFx0ICBzdHJ1Y3QgUnhEZXNjICpkZXNjKVxuIHtcbi1cdHN0cnVjdCBkZXZpY2UgKmQgPSB0cF90b19kZXYodHApO1xuLVx0aW50IG5vZGUgPSBkZXZfdG9fbm9kZShkKTtcbiBcdGRtYV9hZGRyX3QgbWFwcGluZztcbiBcdHN0cnVjdCBwYWdlICpkYXRhO1xuIFxuLVx0ZGF0YSA9IGFsbG9jX3BhZ2VzX25vZGUobm9kZSwgR0ZQX0tFUk5FTCwgZ2V0X29yZGVyKFI4MTY5X1JYX0JVRl9TSVpFKSk7XG4mIzQzO1x0ZGF0YSA9IHBhZ2VfcG9vbF9kZXZfYWxsb2NfcGFnZXModHAtXHUwMDNlcnhfcG9vbCk7XG4gXHRpZiAoIWRhdGEpXG4gXHRcdHJldHVybiBOVUxMO1xuIFxuLVx0bWFwcGluZyA9IGRtYV9tYXBfcGFnZShkLCBkYXRhLCAwLCBSODE2OV9SWF9CVUZfU0laRSwgRE1BX0ZST01fREVWSUNFKTtcbi1cdGlmICh1bmxpa2VseShkbWFfbWFwcGluZ19lcnJvcihkLCBtYXBwaW5nKSkpIHtcbi1cdFx0bmV0ZGV2X2Vycih0cC1cdTAwM2VkZXYsIFwmIzM0O0ZhaWxlZCB0byBtYXAgUlggRE1BIVxcblwmIzM0Oyk7XG4tXHRcdF9fZnJlZV9wYWdlcyhkYXRhLCBnZXRfb3JkZXIoUjgxNjlfUlhfQlVGX1NJWkUpKTtcbi1cdFx0cmV0dXJuIE5VTEw7XG4tXHR9XG4mIzQzO1x0bWFwcGluZyA9IHBhZ2VfcG9vbF9nZXRfZG1hX2FkZHIoZGF0YSkgJiM0MzsgdHAtXHUwMDNlcnhfaGVhZHJvb207XG4gXG4gXHRkZXNjLVx1MDAzZWFkZHIgPSBjcHVfdG9fbGU2NChtYXBwaW5nKTtcbi1cdHJ0bDgxNjlfbWFya190b19hc2ljKGRlc2MpO1xuJiM0MztcdHJ0bDgxNjlfbWFya190b19hc2ljKGRlc2MsIHRwLVx1MDAzZXJ4X2J1Zl9zeik7XG4gXG4gXHRyZXR1cm4gZGF0YTtcbiB9XG5AQCAtNDE4NywxNSAmIzQzOzQxODgsMjEgQEAgc3RhdGljIHZvaWQgcnRsODE2OV9yeF9jbGVhcihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiB7XG4gXHRpbnQgaTtcbiBcbi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIE5VTV9SWF9ERVNDIFx1MDAyNlx1MDAyNiB0cC1cdTAwM2VSeF9kYXRhYnVmZltpXTsgaSYjNDM7JiM0MzspIHtcbi1cdFx0ZG1hX3VubWFwX3BhZ2UodHBfdG9fZGV2KHRwKSxcbi1cdFx0XHQgICAgICAgbGU2NF90b19jcHUodHAtXHUwMDNlUnhEZXNjQXJyYXlbaV0uYWRkciksXG4tXHRcdFx0ICAgICAgIFI4MTY5X1JYX0JVRl9TSVpFLCBETUFfRlJPTV9ERVZJQ0UpO1xuLVx0XHRfX2ZyZWVfcGFnZXModHAtXHUwMDNlUnhfZGF0YWJ1ZmZbaV0sIGdldF9vcmRlcihSODE2OV9SWF9CVUZfU0laRSkpO1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIE5VTV9SWF9ERVNDOyBpJiM0MzsmIzQzOykge1xuJiM0MztcdFx0aWYgKCF0cC1cdTAwM2VSeF9kYXRhYnVmZltpXSlcbiYjNDM7XHRcdFx0Y29udGludWU7XG4mIzQzO1x0XHRwYWdlX3Bvb2xfcHV0X2Z1bGxfcGFnZSh0cC1cdTAwM2VyeF9wb29sLCB0cC1cdTAwM2VSeF9kYXRhYnVmZltpXSwgZmFsc2UpO1xuIFx0XHR0cC1cdTAwM2VSeF9kYXRhYnVmZltpXSA9IE5VTEw7XG4gXHRcdHRwLVx1MDAzZVJ4RGVzY0FycmF5W2ldLmFkZHIgPSAwO1xuIFx0XHR0cC1cdTAwM2VSeERlc2NBcnJheVtpXS5vcHRzMSA9IDA7XG4gXHR9XG4mIzQzO1xuJiM0MztcdGlmICh0cC1cdTAwM2VyeF9wb29sKSB7XG4mIzQzO1x0XHRpZiAoeGRwX3J4cV9pbmZvX2lzX3JlZyhcdTAwMjZ0cC1cdTAwM2V4ZHBfcnhxKSlcbiYjNDM7XHRcdFx0eGRwX3J4cV9pbmZvX3VucmVnKFx1MDAyNnRwLVx1MDAzZXhkcF9yeHEpO1xuJiM0MztcdFx0cGFnZV9wb29sX2Rlc3Ryb3kodHAtXHUwMDNlcnhfcG9vbCk7XG4mIzQzO1x0XHR0cC1cdTAwM2VyeF9wb29sID0gTlVMTDtcbiYjNDM7XHR9XG4gfVxuIFxuIHN0YXRpYyBpbnQgcnRsODE2OV9yeF9maWxsKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuQEAgLTQyMjEsMTIgJiM0Mzs0MjI4LDU3IEBAIHN0YXRpYyBpbnQgcnRsODE2OV9yeF9maWxsKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIFxuIHN0YXRpYyBpbnQgcnRsODE2OV9pbml0X3Jpbmcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4ge1xuJiM0MztcdHN0cnVjdCBwYWdlX3Bvb2xfcGFyYW1zIHBhcmFtcyA9IHswfTtcbiYjNDM7XHRpbnQgZXJyO1xuJiM0MztcbiBcdHJ0bDgxNjlfaW5pdF9yaW5nX2luZGV4ZXModHApO1xuIFxuJiM0MztcdGlmICh0cC1cdTAwM2VtYWNfdmVyc2lvbiBcdTAwM2M9IFJUTF9HSUdBX01BQ19WRVJfMDYpIHtcbiYjNDM7XHRcdHRwLVx1MDAzZXJ4X2hlYWRyb29tID0gMDtcbiYjNDM7XHRcdHRwLVx1MDAzZXJ4X2J1Zl9zeiA9IFI4MTY5X1JYX0JVRl9TSVpFO1xuJiM0MztcdH0gZWxzZSB7XG4mIzQzO1x0XHR0cC1cdTAwM2VyeF9oZWFkcm9vbSA9IFhEUF9QQUNLRVRfSEVBRFJPT007XG4mIzQzO1x0XHR0cC1cdTAwM2VyeF9idWZfc3ogPSBTWl8xNksgLVxuJiM0MztcdFx0XHRcdFx0XHRTS0JfREFUQV9BTElHTihzaXplb2Yoc3RydWN0IHNrYl9zaGFyZWRfaW5mbykpIC1cbiYjNDM7XHRcdFx0XHRcdFx0WERQX1BBQ0tFVF9IRUFEUk9PTTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHBhcmFtcy5vcmRlciA9IGdldF9vcmRlcihSODE2OV9SWF9CVUZfU0laRSk7XG4mIzQzO1x0cGFyYW1zLmZsYWdzID0gUFBfRkxBR19ETUFfTUFQIHwgUFBfRkxBR19ETUFfU1lOQ19ERVY7XG4mIzQzO1x0cGFyYW1zLnBvb2xfc2l6ZSA9IE5VTV9SWF9ERVNDO1xuJiM0MztcdHBhcmFtcy5uaWQgPSBkZXZfdG9fbm9kZSh0cF90b19kZXYodHApKTtcbiYjNDM7XHRwYXJhbXMuZGV2ID0gdHBfdG9fZGV2KHRwKTtcbiYjNDM7XHRwYXJhbXMubmFwaSA9IFx1MDAyNnRwLVx1MDAzZW5hcGk7XG4mIzQzO1x0cGFyYW1zLmRtYV9kaXIgPSBETUFfRlJPTV9ERVZJQ0U7XG4mIzQzO1x0cGFyYW1zLm9mZnNldCA9IHRwLVx1MDAzZXJ4X2hlYWRyb29tO1xuJiM0MztcdHBhcmFtcy5tYXhfbGVuID0gdHAtXHUwMDNlcnhfYnVmX3N6O1xuJiM0MztcbiYjNDM7XHR0cC1cdTAwM2VyeF9wb29sID0gcGFnZV9wb29sX2NyZWF0ZShcdTAwMjZwYXJhbXMpO1xuJiM0MztcdGlmIChJU19FUlIodHAtXHUwMDNlcnhfcG9vbCkpIHtcbiYjNDM7XHRcdGVyciA9IFBUUl9FUlIodHAtXHUwMDNlcnhfcG9vbCk7XG4mIzQzO1x0XHR0cC1cdTAwM2VyeF9wb29sID0gTlVMTDtcbiYjNDM7XHRcdHJldHVybiBlcnI7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRlcnIgPSB4ZHBfcnhxX2luZm9fcmVnKFx1MDAyNnRwLVx1MDAzZXhkcF9yeHEsIHRwLVx1MDAzZWRldiwgMCwgdHAtXHUwMDNlbmFwaS5uYXBpX2lkKTtcbiYjNDM7XHRpZiAoZXJyKVxuJiM0MztcdFx0Z290byBlcnJfZnJlZV9wb29sO1xuJiM0MztcbiYjNDM7XHRlcnIgPSB4ZHBfcnhxX2luZm9fcmVnX21lbV9tb2RlbChcdTAwMjZ0cC1cdTAwM2V4ZHBfcnhxLCBNRU1fVFlQRV9QQUdFX1BPT0wsIHRwLVx1MDAzZXJ4X3Bvb2wpO1xuJiM0MztcdGlmIChlcnIpXG4mIzQzO1x0XHRnb3RvIGVycl91bnJlZ19yeHE7XG4mIzQzO1xuIFx0bWVtc2V0KHRwLVx1MDAzZXR4X3NrYiwgMCwgc2l6ZW9mKHRwLVx1MDAzZXR4X3NrYikpO1xuIFx0bWVtc2V0KHRwLVx1MDAzZVJ4X2RhdGFidWZmLCAwLCBzaXplb2YodHAtXHUwMDNlUnhfZGF0YWJ1ZmYpKTtcbiBcbiBcdHJldHVybiBydGw4MTY5X3J4X2ZpbGwodHApO1xuJiM0MztcbiYjNDM7ZXJyX3VucmVnX3J4cTpcbiYjNDM7XHR4ZHBfcnhxX2luZm9fdW5yZWcoXHUwMDI2dHAtXHUwMDNleGRwX3J4cSk7XG4mIzQzO2Vycl9mcmVlX3Bvb2w6XG4mIzQzO1x0cGFnZV9wb29sX2Rlc3Ryb3kodHAtXHUwMDNlcnhfcG9vbCk7XG4mIzQzO1x0dHAtXHUwMDNlcnhfcG9vbCA9IE5VTEw7XG4mIzQzO1x0cmV0dXJuIGVycjtcbiB9XG4gXG4gc3RhdGljIHZvaWQgcnRsODE2OV91bm1hcF90eF9za2Ioc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHVuc2lnbmVkIGludCBlbnRyeSlcbkBAIC00MzExLDggJiM0Mzs0MzYzLDIwIEBAIHN0YXRpYyB2b2lkIHJ0bF9yZXNldF93b3JrKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIFxuIFx0cnRsODE2OV9jbGVhbnVwKHRwKTtcbiBcbi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIE5VTV9SWF9ERVNDOyBpJiM0MzsmIzQzOylcbi1cdFx0cnRsODE2OV9tYXJrX3RvX2FzaWModHAtXHUwMDNlUnhEZXNjQXJyYXkgJiM0MzsgaSk7XG4mIzQzO1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgTlVNX1JYX0RFU0M7IGkmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHRpZiAodHAtXHUwMDNlUnhfZGF0YWJ1ZmZbaV0pXG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuJiM0MztcdFx0dHAtXHUwMDNlUnhfZGF0YWJ1ZmZbaV0gPVxuJiM0MztcdFx0XHRydGw4MTY5X2FsbG9jX3J4X2RhdGEodHAsIHRwLVx1MDAzZVJ4RGVzY0FycmF5ICYjNDM7IGkpO1xuJiM0MztcdFx0aWYgKCF0cC1cdTAwM2VSeF9kYXRhYnVmZltpXSlcbiYjNDM7XHRcdFx0YnJlYWs7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBOVU1fUlhfREVTQzsgaSYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdGlmICghdHAtXHUwMDNlUnhfZGF0YWJ1ZmZbaV0pXG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuJiM0MztcdFx0cnRsODE2OV9tYXJrX3RvX2FzaWModHAtXHUwMDNlUnhEZXNjQXJyYXkgJiM0MzsgaSwgdHAtXHUwMDNlcnhfYnVmX3N6KTtcbiYjNDM7XHR9XG4gXG4gXHRuYXBpX2VuYWJsZShcdTAwMjZ0cC1cdTAwM2VuYXBpKTtcbiBcdHJ0bF9od19zdGFydCh0cCk7XG5AQCAtNDc2OCwxNiAmIzQzOzQ4MzIsMzkgQEAgc3RhdGljIGlubGluZSB2b2lkIHJ0bDgxNjlfcnhfY3N1bShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgb3B0czEpXG4gXHRcdHNrYl9jaGVja3N1bV9ub25lX2Fzc2VydChza2IpO1xuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQgcnRsODE2OV9yeF9yZWZpbGwoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4mIzQzO3tcbiYjNDM7XHR3aGlsZSAodHAtXHUwMDNlZGlydHlfcnggIT0gdHAtXHUwMDNlY3VyX3J4KSB7XG4mIzQzO1x0XHR1bnNpZ25lZCBpbnQgZW50cnkgPSB0cC1cdTAwM2VkaXJ0eV9yeCAlIE5VTV9SWF9ERVNDO1xuJiM0MztcdFx0c3RydWN0IFJ4RGVzYyAqZGVzYyA9IHRwLVx1MDAzZVJ4RGVzY0FycmF5ICYjNDM7IGVudHJ5O1xuJiM0MztcbiYjNDM7XHRcdGlmICghdHAtXHUwMDNlUnhfZGF0YWJ1ZmZbZW50cnldKSB7XG4mIzQzO1x0XHRcdHN0cnVjdCBwYWdlICpuZXdfcGFnZSA9IHBhZ2VfcG9vbF9kZXZfYWxsb2NfcGFnZXModHAtXHUwMDNlcnhfcG9vbCk7XG4mIzQzO1xuJiM0MztcdFx0XHRpZiAodW5saWtlbHkoIW5ld19wYWdlKSlcbiYjNDM7XHRcdFx0XHRicmVhaztcbiYjNDM7XG4mIzQzO1x0XHRcdHRwLVx1MDAzZVJ4X2RhdGFidWZmW2VudHJ5XSA9IG5ld19wYWdlO1xuJiM0MztcbiYjNDM7XHRcdFx0ZGVzYy1cdTAwM2VhZGRyID0gY3B1X3RvX2xlNjQocGFnZV9wb29sX2dldF9kbWFfYWRkcihuZXdfcGFnZSkgJiM0MztcbiYjNDM7XHRcdFx0XHR0cC1cdTAwM2VyeF9oZWFkcm9vbSk7XG4mIzQzO1x0XHR9XG4mIzQzO1x0XHRydGw4MTY5X21hcmtfdG9fYXNpYyhkZXNjLCB0cC1cdTAwM2VyeF9idWZfc3opO1xuJiM0MztcbiYjNDM7XHRcdHRwLVx1MDAzZWRpcnR5X3J4JiM0MzsmIzQzOztcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGludCBydGxfcngoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCBidWRnZXQpXG4ge1xuIFx0c3RydWN0IGRldmljZSAqZCA9IHRwX3RvX2Rldih0cCk7XG4gXHRpbnQgY291bnQ7XG4gXG4tXHRmb3IgKGNvdW50ID0gMDsgY291bnQgXHUwMDNjIGJ1ZGdldDsgY291bnQmIzQzOyYjNDM7LCB0cC1cdTAwM2VjdXJfcngmIzQzOyYjNDM7KSB7XG4mIzQzO1x0Zm9yIChjb3VudCA9IDA7IGNvdW50IFx1MDAzYyBidWRnZXQ7KSB7XG4gXHRcdHVuc2lnbmVkIGludCBwa3Rfc2l6ZSwgZW50cnkgPSB0cC1cdTAwM2VjdXJfcnggJSBOVU1fUlhfREVTQztcbiBcdFx0c3RydWN0IFJ4RGVzYyAqZGVzYyA9IHRwLVx1MDAzZVJ4RGVzY0FycmF5ICYjNDM7IGVudHJ5O1xuIFx0XHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuLVx0XHRjb25zdCB2b2lkICpyeF9idWY7XG4mIzQzO1x0XHR2b2lkICpyeF9idWY7XG4gXHRcdGRtYV9hZGRyX3QgYWRkcjtcbiBcdFx0dTMyIHN0YXR1cztcbiBcbkBAIC00ODIwLDIxICYjNDM7NDkwNyw0MCBAQCBzdGF0aWMgaW50IHJ0bF9yeChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IGJ1ZGdldFxuIFx0XHRcdGdvdG8gcmVsZWFzZV9kZXNjcmlwdG9yO1xuIFx0XHR9XG4gXG4tXHRcdHNrYiA9IG5hcGlfYWxsb2Nfc2tiKFx1MDAyNnRwLVx1MDAzZW5hcGksIHBrdF9zaXplKTtcbi1cdFx0aWYgKHVubGlrZWx5KCFza2IpKSB7XG4tXHRcdFx0ZGV2LVx1MDAzZXN0YXRzLnJ4X2Ryb3BwZWQmIzQzOyYjNDM7O1xuLVx0XHRcdGdvdG8gcmVsZWFzZV9kZXNjcmlwdG9yO1xuLVx0XHR9XG4mIzQzO1x0XHRpZiAodW5saWtlbHkoIXRwLVx1MDAzZVJ4X2RhdGFidWZmW2VudHJ5XSkpXG4mIzQzO1x0XHRcdGJyZWFrO1xuIFxuIFx0XHRhZGRyID0gbGU2NF90b19jcHUoZGVzYy1cdTAwM2VhZGRyKTtcbiBcdFx0cnhfYnVmID0gcGFnZV9hZGRyZXNzKHRwLVx1MDAzZVJ4X2RhdGFidWZmW2VudHJ5XSk7XG4gXG4gXHRcdGRtYV9zeW5jX3NpbmdsZV9mb3JfY3B1KGQsIGFkZHIsIHBrdF9zaXplLCBETUFfRlJPTV9ERVZJQ0UpO1xuLVx0XHRwcmVmZXRjaChyeF9idWYpO1xuLVx0XHRza2JfY29weV90b19saW5lYXJfZGF0YShza2IsIHJ4X2J1ZiwgcGt0X3NpemUpO1xuLVx0XHRza2ItXHUwMDNldGFpbCAmIzQzOz0gcGt0X3NpemU7XG4tXHRcdHNrYi1cdTAwM2VsZW4gPSBwa3Rfc2l6ZTtcbi1cdFx0ZG1hX3N5bmNfc2luZ2xlX2Zvcl9kZXZpY2UoZCwgYWRkciwgcGt0X3NpemUsIERNQV9GUk9NX0RFVklDRSk7XG4mIzQzO1x0XHRwcmVmZXRjaChyeF9idWYgJiM0MzsgdHAtXHUwMDNlcnhfaGVhZHJvb20pO1xuJiM0MztcbiYjNDM7XHRcdGlmICh1bmxpa2VseSh0cC1cdTAwM2VyeF9oZWFkcm9vbSA9PSAwKSkge1xuJiM0MztcdFx0XHRza2IgPSBuYXBpX2FsbG9jX3NrYihcdTAwMjZ0cC1cdTAwM2VuYXBpLCBwa3Rfc2l6ZSk7XG4mIzQzO1x0XHRcdGlmIChsaWtlbHkoc2tiKSkge1xuJiM0MztcdFx0XHRcdHNrYl9jb3B5X3RvX2xpbmVhcl9kYXRhKHNrYiwgcnhfYnVmLCBwa3Rfc2l6ZSk7XG4mIzQzO1x0XHRcdFx0c2tiX3B1dChza2IsIHBrdF9zaXplKTtcbiYjNDM7XHRcdFx0fVxuJiM0MztcdFx0XHRkbWFfc3luY19zaW5nbGVfZm9yX2RldmljZShkLCBhZGRyLCBwa3Rfc2l6ZSwgRE1BX0ZST01fREVWSUNFKTtcbiYjNDM7XHRcdH0gZWxzZSB7XG4mIzQzO1x0XHRcdHNrYiA9IG5hcGlfYnVpbGRfc2tiKHJ4X2J1ZiwgdHAtXHUwMDNlcnhfYnVmX3N6ICYjNDM7IHRwLVx1MDAzZXJ4X2hlYWRyb29tXG4mIzQzO1x0XHRcdFx0JiM0MzsgU0tCX0RBVEFfQUxJR04oc2l6ZW9mKHN0cnVjdCBza2Jfc2hhcmVkX2luZm8pKSk7XG4mIzQzO1x0XHRcdGlmIChsaWtlbHkoc2tiKSkge1xuJiM0MztcdFx0XHRcdHNrYl9yZXNlcnZlKHNrYiwgdHAtXHUwMDNlcnhfaGVhZHJvb20pO1xuJiM0MztcdFx0XHRcdHNrYl9wdXQoc2tiLCBwa3Rfc2l6ZSk7XG4mIzQzO1x0XHRcdFx0c2tiX21hcmtfZm9yX3JlY3ljbGUoc2tiKTtcbiYjNDM7XG4mIzQzO1x0XHRcdFx0dHAtXHUwMDNlUnhfZGF0YWJ1ZmZbZW50cnldID0gTlVMTDtcbiYjNDM7XHRcdFx0fSBlbHNlIHtcbiYjNDM7XHRcdFx0XHRkbWFfc3luY19zaW5nbGVfZm9yX2RldmljZShkLCBhZGRyLCBwa3Rfc2l6ZSwgRE1BX0ZST01fREVWSUNFKTtcbiYjNDM7XHRcdFx0fVxuJiM0MztcdFx0fVxuJiM0MztcbiYjNDM7XHRcdGlmICh1bmxpa2VseSghc2tiKSkge1xuJiM0MztcdFx0XHRkZXYtXHUwMDNlc3RhdHMucnhfZHJvcHBlZCYjNDM7JiM0Mzs7XG4mIzQzO1x0XHRcdGdvdG8gcmVsZWFzZV9kZXNjcmlwdG9yO1xuJiM0MztcdFx0fVxuIFxuIFx0XHRydGw4MTY5X3J4X2NzdW0oc2tiLCBzdGF0dXMpO1xuIFx0XHRza2ItXHUwMDNlcHJvdG9jb2wgPSBldGhfdHlwZV90cmFucyhza2IsIGRldik7XG5AQCAtNDg0OCw5ICYjNDM7NDk1NCwxMiBAQCBzdGF0aWMgaW50IHJ0bF9yeChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IGJ1ZGdldFxuIFxuIFx0XHRkZXZfc3dfbmV0c3RhdHNfcnhfYWRkKGRldiwgcGt0X3NpemUpO1xuIHJlbGVhc2VfZGVzY3JpcHRvcjpcbi1cdFx0cnRsODE2OV9tYXJrX3RvX2FzaWMoZGVzYyk7XG4mIzQzO1x0XHR0cC1cdTAwM2VjdXJfcngmIzQzOyYjNDM7O1xuJiM0MztcdFx0Y291bnQmIzQzOyYjNDM7O1xuIFx0fVxuIFxuJiM0MztcdHJ0bDgxNjlfcnhfcmVmaWxsKHRwKTtcbiYjNDM7XG4gXHRyZXR1cm4gY291bnQ7XG4gfVxuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA0OjE4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1I4MTY5JiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnRsODE2OV9pbml0X3JpbmcmIzM0OywKICAgICYjMzQ7cnRsODE2OV9yeF9jbGVhciYjMzQ7LAogICAgJiMzNDtydGw4MTY5X3J4X3JlZmlsbCYjMzQ7LAogICAgJiMzNDtydGw4MTY5X2FsbG9jX3J4X2RhdGEmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBwYWdlX3Bvb2wgYW5kIHhkcF9yeHFfaW5mbyB0byB0aGUgcjgxNjkgbmV0d29yayBkcml2ZXIgZm9yIFJYIGJ1ZmZlciBtYW5hZ2VtZW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGRyaXZlciYjMzk7cyBSWCBwYXRoIGFuZCBpbml0aWFsaXphdGlvbi9jbGVhbnVwIHJvdXRpbmVzLiBUaGUgUENJIGRyaXZlciBjYW4gYmUgZnV6emVkIHZpYSBzeXprYWxsZXImIzM5O3MgUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA3NGY5MWVkYjE1ZjEwMWQwZTBhZmRjNWQ5OTVhNjhkNmQwYmM1MzFlCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBKdWwgMTMgMDQ6MTg6MjkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jCmluZGV4IGVjNGZjMjFmYTIxZmIwLi5jNTQ4ZTdlOGRiODc0ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMKQEAgLTMxLDcgJiM0MzszMSw5IEBACiAjaW5jbHVkZSAmbHQ7bGludXgvdW5hbGlnbmVkLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bmV0L2lwNl9jaGVja3N1bS5oJmd0OwogI2luY2x1ZGUgJmx0O25ldC9uZXRkZXZfcXVldWVzLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O25ldC9wYWdlX3Bvb2wvaGVscGVycy5oJmd0OwogI2luY2x1ZGUgJmx0O25ldC9waHkvcmVhbHRla19waHkuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bmV0L3hkcC5oJmd0OwogCiAjaW5jbHVkZSAmIzM0O3I4MTY5LmgmIzM0OwogI2luY2x1ZGUgJiMzNDtyODE2OV9maXJtd2FyZS5oJiMzNDsKQEAgLTcyOSw2ICYjNDM7NzMxLDEwIEBAIGVudW0gcnRsX2Rhc2hfdHlwZSB7CiB9OwogCiBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlIHsKJiM0MzsJc3RydWN0IHBhZ2VfcG9vbCAqcnhfcG9vbDsKJiM0MzsJc3RydWN0IHhkcF9yeHFfaW5mbyB4ZHBfcnhxOwomIzQzOwl1MzIgcnhfaGVhZHJvb207CiYjNDM7CXUzMiByeF9idWZfc3o7CiAJdm9pZCBfX2lvbWVtICptbWlvX2FkZHI7CS8qIG1lbW9yeSBtYXAgcGh5c2ljYWwgYWRkcmVzcyAqLwogCXN0cnVjdCBwY2lfZGV2ICpwY2lfZGV2OwogCXN0cnVjdCBuZXRfZGV2aWNlICpkZXY7CkBAIC03MzksNiAmIzQzOzc0NSw3IEBAIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgewogCXUzMiBjdXJfcng7IC8qIEluZGV4IGludG8gdGhlIFJ4IGRlc2NyaXB0b3IgYnVmZmVyIG9mIG5leHQgUnggcGt0LiAqLwogCXUzMiBjdXJfdHg7IC8qIEluZGV4IGludG8gdGhlIFR4IGRlc2NyaXB0b3IgYnVmZmVyIG9mIG5leHQgUnggcGt0LiAqLwogCXUzMiBkaXJ0eV90eDsKJiM0MzsJdTMyIGRpcnR5X3J4OwogCXN0cnVjdCBUeERlc2MgKlR4RGVzY0FycmF5OwkvKiAyNTYtYWxpZ25lZCBUeCBkZXNjcmlwdG9yIHJpbmcgKi8KIAlzdHJ1Y3QgUnhEZXNjICpSeERlc2NBcnJheTsJLyogMjU2LWFsaWduZWQgUnggZGVzY3JpcHRvciByaW5nICovCiAJZG1hX2FkZHJfdCBUeFBoeUFkZHI7CkBAIC0yNjIyLDYgJiM0MzsyNjI5LDcgQEAgc3RhdGljIHZvaWQgcnRsX2luaXRfcnhjZmcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApCiBzdGF0aWMgdm9pZCBydGw4MTY5X2luaXRfcmluZ19pbmRleGVzKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKQogewogCXRwLSZndDtkaXJ0eV90eCA9IHRwLSZndDtjdXJfdHggPSB0cC0mZ3Q7Y3VyX3J4ID0gMDsKJiM0MzsJdHAtJmd0O2RpcnR5X3J4ID0gMDsKIH0KIAogc3RhdGljIHZvaWQgcnRsX2p1bWJvX2NvbmZpZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKQEAgLTQxNDgsMzcgJiM0Mzs0MTU2LDMwIEBAIHN0YXRpYyBpbnQgcnRsODE2OV9jaGFuZ2VfbXR1KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBuZXdfbXR1KQogCXJldHVybiAwOwogfQogCi1zdGF0aWMgdm9pZCBydGw4MTY5X21hcmtfdG9fYXNpYyhzdHJ1Y3QgUnhEZXNjICpkZXNjKQomIzQzO3N0YXRpYyB2b2lkIHJ0bDgxNjlfbWFya190b19hc2ljKHN0cnVjdCBSeERlc2MgKmRlc2MsIHUzMiByeF9idWZfc3opCiB7CiAJdTMyIGVvciA9IGxlMzJfdG9fY3B1KGRlc2MtJmd0O29wdHMxKSAmYW1wOyBSaW5nRW5kOwogCiAJZGVzYy0mZ3Q7b3B0czIgPSAwOwogCS8qIEZvcmNlIG1lbW9yeSB3cml0ZXMgdG8gY29tcGxldGUgYmVmb3JlIHJlbGVhc2luZyBkZXNjcmlwdG9yICovCiAJZG1hX3dtYigpOwotCVdSSVRFX09OQ0UoZGVzYy0mZ3Q7b3B0czEsIGNwdV90b19sZTMyKERlc2NPd24gfCBlb3IgfCBSODE2OV9SWF9CVUZfU0laRSkpOwomIzQzOwlXUklURV9PTkNFKGRlc2MtJmd0O29wdHMxLCBjcHVfdG9fbGUzMihEZXNjT3duIHwgZW9yIHwgcnhfYnVmX3N6KSk7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgcGFnZSAqcnRsODE2OV9hbGxvY19yeF9kYXRhKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLAogCQkJCQkgIHN0cnVjdCBSeERlc2MgKmRlc2MpCiB7Ci0Jc3RydWN0IGRldmljZSAqZCA9IHRwX3RvX2Rldih0cCk7Ci0JaW50IG5vZGUgPSBkZXZfdG9fbm9kZShkKTsKIAlkbWFfYWRkcl90IG1hcHBpbmc7CiAJc3RydWN0IHBhZ2UgKmRhdGE7CiAKLQlkYXRhID0gYWxsb2NfcGFnZXNfbm9kZShub2RlLCBHRlBfS0VSTkVMLCBnZXRfb3JkZXIoUjgxNjlfUlhfQlVGX1NJWkUpKTsKJiM0MzsJZGF0YSA9IHBhZ2VfcG9vbF9kZXZfYWxsb2NfcGFnZXModHAtJmd0O3J4X3Bvb2wpOwogCWlmICghZGF0YSkKIAkJcmV0dXJuIE5VTEw7CiAKLQltYXBwaW5nID0gZG1hX21hcF9wYWdlKGQsIGRhdGEsIDAsIFI4MTY5X1JYX0JVRl9TSVpFLCBETUFfRlJPTV9ERVZJQ0UpOwotCWlmICh1bmxpa2VseShkbWFfbWFwcGluZ19lcnJvcihkLCBtYXBwaW5nKSkpIHsKLQkJbmV0ZGV2X2Vycih0cC0mZ3Q7ZGV2LCAmIzM0O0ZhaWxlZCB0byBtYXAgUlggRE1BIVxuJiMzNDspOwotCQlfX2ZyZWVfcGFnZXMoZGF0YSwgZ2V0X29yZGVyKFI4MTY5X1JYX0JVRl9TSVpFKSk7Ci0JCXJldHVybiBOVUxMOwotCX0KJiM0MzsJbWFwcGluZyA9IHBhZ2VfcG9vbF9nZXRfZG1hX2FkZHIoZGF0YSkgJiM0MzsgdHAtJmd0O3J4X2hlYWRyb29tOwogCiAJZGVzYy0mZ3Q7YWRkciA9IGNwdV90b19sZTY0KG1hcHBpbmcpOwotCXJ0bDgxNjlfbWFya190b19hc2ljKGRlc2MpOwomIzQzOwlydGw4MTY5X21hcmtfdG9fYXNpYyhkZXNjLCB0cC0mZ3Q7cnhfYnVmX3N6KTsKIAogCXJldHVybiBkYXRhOwogfQpAQCAtNDE4NywxNSAmIzQzOzQxODgsMjEgQEAgc3RhdGljIHZvaWQgcnRsODE2OV9yeF9jbGVhcihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKIHsKIAlpbnQgaTsKIAotCWZvciAoaSA9IDA7IGkgJmx0OyBOVU1fUlhfREVTQyAmYW1wOyZhbXA7IHRwLSZndDtSeF9kYXRhYnVmZltpXTsgaSYjNDM7JiM0MzspIHsKLQkJZG1hX3VubWFwX3BhZ2UodHBfdG9fZGV2KHRwKSwKLQkJCSAgICAgICBsZTY0X3RvX2NwdSh0cC0mZ3Q7UnhEZXNjQXJyYXlbaV0uYWRkciksCi0JCQkgICAgICAgUjgxNjlfUlhfQlVGX1NJWkUsIERNQV9GUk9NX0RFVklDRSk7Ci0JCV9fZnJlZV9wYWdlcyh0cC0mZ3Q7UnhfZGF0YWJ1ZmZbaV0sIGdldF9vcmRlcihSODE2OV9SWF9CVUZfU0laRSkpOwomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgTlVNX1JYX0RFU0M7IGkmIzQzOyYjNDM7KSB7CiYjNDM7CQlpZiAoIXRwLSZndDtSeF9kYXRhYnVmZltpXSkKJiM0MzsJCQljb250aW51ZTsKJiM0MzsJCXBhZ2VfcG9vbF9wdXRfZnVsbF9wYWdlKHRwLSZndDtyeF9wb29sLCB0cC0mZ3Q7UnhfZGF0YWJ1ZmZbaV0sIGZhbHNlKTsKIAkJdHAtJmd0O1J4X2RhdGFidWZmW2ldID0gTlVMTDsKIAkJdHAtJmd0O1J4RGVzY0FycmF5W2ldLmFkZHIgPSAwOwogCQl0cC0mZ3Q7UnhEZXNjQXJyYXlbaV0ub3B0czEgPSAwOwogCX0KJiM0MzsKJiM0MzsJaWYgKHRwLSZndDtyeF9wb29sKSB7CiYjNDM7CQlpZiAoeGRwX3J4cV9pbmZvX2lzX3JlZygmYW1wO3RwLSZndDt4ZHBfcnhxKSkKJiM0MzsJCQl4ZHBfcnhxX2luZm9fdW5yZWcoJmFtcDt0cC0mZ3Q7eGRwX3J4cSk7CiYjNDM7CQlwYWdlX3Bvb2xfZGVzdHJveSh0cC0mZ3Q7cnhfcG9vbCk7CiYjNDM7CQl0cC0mZ3Q7cnhfcG9vbCA9IE5VTEw7CiYjNDM7CX0KIH0KIAogc3RhdGljIGludCBydGw4MTY5X3J4X2ZpbGwoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApCkBAIC00MjIxLDEyICYjNDM7NDIyOCw1NyBAQCBzdGF0aWMgaW50IHJ0bDgxNjlfcnhfZmlsbChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKIAogc3RhdGljIGludCBydGw4MTY5X2luaXRfcmluZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKIHsKJiM0MzsJc3RydWN0IHBhZ2VfcG9vbF9wYXJhbXMgcGFyYW1zID0gezB9OwomIzQzOwlpbnQgZXJyOwomIzQzOwogCXJ0bDgxNjlfaW5pdF9yaW5nX2luZGV4ZXModHApOwogCiYjNDM7CWlmICh0cC0mZ3Q7bWFjX3ZlcnNpb24gJmx0Oz0gUlRMX0dJR0FfTUFDX1ZFUl8wNikgewomIzQzOwkJdHAtJmd0O3J4X2hlYWRyb29tID0gMDsKJiM0MzsJCXRwLSZndDtyeF9idWZfc3ogPSBSODE2OV9SWF9CVUZfU0laRTsKJiM0MzsJfSBlbHNlIHsKJiM0MzsJCXRwLSZndDtyeF9oZWFkcm9vbSA9IFhEUF9QQUNLRVRfSEVBRFJPT007CiYjNDM7CQl0cC0mZ3Q7cnhfYnVmX3N6ID0gU1pfMTZLIC0KJiM0MzsJCQkJCQlTS0JfREFUQV9BTElHTihzaXplb2Yoc3RydWN0IHNrYl9zaGFyZWRfaW5mbykpIC0KJiM0MzsJCQkJCQlYRFBfUEFDS0VUX0hFQURST09NOwomIzQzOwl9CiYjNDM7CiYjNDM7CXBhcmFtcy5vcmRlciA9IGdldF9vcmRlcihSODE2OV9SWF9CVUZfU0laRSk7CiYjNDM7CXBhcmFtcy5mbGFncyA9IFBQX0ZMQUdfRE1BX01BUCB8IFBQX0ZMQUdfRE1BX1NZTkNfREVWOwomIzQzOwlwYXJhbXMucG9vbF9zaXplID0gTlVNX1JYX0RFU0M7CiYjNDM7CXBhcmFtcy5uaWQgPSBkZXZfdG9fbm9kZSh0cF90b19kZXYodHApKTsKJiM0MzsJcGFyYW1zLmRldiA9IHRwX3RvX2Rldih0cCk7CiYjNDM7CXBhcmFtcy5uYXBpID0gJmFtcDt0cC0mZ3Q7bmFwaTsKJiM0MzsJcGFyYW1zLmRtYV9kaXIgPSBETUFfRlJPTV9ERVZJQ0U7CiYjNDM7CXBhcmFtcy5vZmZzZXQgPSB0cC0mZ3Q7cnhfaGVhZHJvb207CiYjNDM7CXBhcmFtcy5tYXhfbGVuID0gdHAtJmd0O3J4X2J1Zl9zejsKJiM0MzsKJiM0MzsJdHAtJmd0O3J4X3Bvb2wgPSBwYWdlX3Bvb2xfY3JlYXRlKCZhbXA7cGFyYW1zKTsKJiM0MzsJaWYgKElTX0VSUih0cC0mZ3Q7cnhfcG9vbCkpIHsKJiM0MzsJCWVyciA9IFBUUl9FUlIodHAtJmd0O3J4X3Bvb2wpOwomIzQzOwkJdHAtJmd0O3J4X3Bvb2wgPSBOVUxMOwomIzQzOwkJcmV0dXJuIGVycjsKJiM0MzsJfQomIzQzOwomIzQzOwllcnIgPSB4ZHBfcnhxX2luZm9fcmVnKCZhbXA7dHAtJmd0O3hkcF9yeHEsIHRwLSZndDtkZXYsIDAsIHRwLSZndDtuYXBpLm5hcGlfaWQpOwomIzQzOwlpZiAoZXJyKQomIzQzOwkJZ290byBlcnJfZnJlZV9wb29sOwomIzQzOwomIzQzOwllcnIgPSB4ZHBfcnhxX2luZm9fcmVnX21lbV9tb2RlbCgmYW1wO3RwLSZndDt4ZHBfcnhxLCBNRU1fVFlQRV9QQUdFX1BPT0wsIHRwLSZndDtyeF9wb29sKTsKJiM0MzsJaWYgKGVycikKJiM0MzsJCWdvdG8gZXJyX3VucmVnX3J4cTsKJiM0MzsKIAltZW1zZXQodHAtJmd0O3R4X3NrYiwgMCwgc2l6ZW9mKHRwLSZndDt0eF9za2IpKTsKIAltZW1zZXQodHAtJmd0O1J4X2RhdGFidWZmLCAwLCBzaXplb2YodHAtJmd0O1J4X2RhdGFidWZmKSk7CiAKIAlyZXR1cm4gcnRsODE2OV9yeF9maWxsKHRwKTsKJiM0MzsKJiM0MztlcnJfdW5yZWdfcnhxOgomIzQzOwl4ZHBfcnhxX2luZm9fdW5yZWcoJmFtcDt0cC0mZ3Q7eGRwX3J4cSk7CiYjNDM7ZXJyX2ZyZWVfcG9vbDoKJiM0MzsJcGFnZV9wb29sX2Rlc3Ryb3kodHAtJmd0O3J4X3Bvb2wpOwomIzQzOwl0cC0mZ3Q7cnhfcG9vbCA9IE5VTEw7CiYjNDM7CXJldHVybiBlcnI7CiB9CiAKIHN0YXRpYyB2b2lkIHJ0bDgxNjlfdW5tYXBfdHhfc2tiKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCB1bnNpZ25lZCBpbnQgZW50cnkpCkBAIC00MzExLDggJiM0Mzs0MzYzLDIwIEBAIHN0YXRpYyB2b2lkIHJ0bF9yZXNldF93b3JrKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKQogCiAJcnRsODE2OV9jbGVhbnVwKHRwKTsKIAotCWZvciAoaSA9IDA7IGkgJmx0OyBOVU1fUlhfREVTQzsgaSYjNDM7JiM0MzspCi0JCXJ0bDgxNjlfbWFya190b19hc2ljKHRwLSZndDtSeERlc2NBcnJheSAmIzQzOyBpKTsKJiM0MzsJZm9yIChpID0gMDsgaSAmbHQ7IE5VTV9SWF9ERVNDOyBpJiM0MzsmIzQzOykgewomIzQzOwkJaWYgKHRwLSZndDtSeF9kYXRhYnVmZltpXSkKJiM0MzsJCQljb250aW51ZTsKJiM0MzsJCXRwLSZndDtSeF9kYXRhYnVmZltpXSA9CiYjNDM7CQkJcnRsODE2OV9hbGxvY19yeF9kYXRhKHRwLCB0cC0mZ3Q7UnhEZXNjQXJyYXkgJiM0MzsgaSk7CiYjNDM7CQlpZiAoIXRwLSZndDtSeF9kYXRhYnVmZltpXSkKJiM0MzsJCQlicmVhazsKJiM0MzsJfQomIzQzOwomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgTlVNX1JYX0RFU0M7IGkmIzQzOyYjNDM7KSB7CiYjNDM7CQlpZiAoIXRwLSZndDtSeF9kYXRhYnVmZltpXSkKJiM0MzsJCQljb250aW51ZTsKJiM0MzsJCXJ0bDgxNjlfbWFya190b19hc2ljKHRwLSZndDtSeERlc2NBcnJheSAmIzQzOyBpLCB0cC0mZ3Q7cnhfYnVmX3N6KTsKJiM0MzsJfQogCiAJbmFwaV9lbmFibGUoJmFtcDt0cC0mZ3Q7bmFwaSk7CiAJcnRsX2h3X3N0YXJ0KHRwKTsKQEAgLTQ3NjgsMTYgJiM0Mzs0ODMyLDM5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBydGw4MTY5X3J4X2NzdW0oc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyIG9wdHMxKQogCQlza2JfY2hlY2tzdW1fbm9uZV9hc3NlcnQoc2tiKTsKIH0KIAomIzQzO3N0YXRpYyB2b2lkIHJ0bDgxNjlfcnhfcmVmaWxsKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKQomIzQzO3sKJiM0MzsJd2hpbGUgKHRwLSZndDtkaXJ0eV9yeCAhPSB0cC0mZ3Q7Y3VyX3J4KSB7CiYjNDM7CQl1bnNpZ25lZCBpbnQgZW50cnkgPSB0cC0mZ3Q7ZGlydHlfcnggJSBOVU1fUlhfREVTQzsKJiM0MzsJCXN0cnVjdCBSeERlc2MgKmRlc2MgPSB0cC0mZ3Q7UnhEZXNjQXJyYXkgJiM0MzsgZW50cnk7CiYjNDM7CiYjNDM7CQlpZiAoIXRwLSZndDtSeF9kYXRhYnVmZltlbnRyeV0pIHsKJiM0MzsJCQlzdHJ1Y3QgcGFnZSAqbmV3X3BhZ2UgPSBwYWdlX3Bvb2xfZGV2X2FsbG9jX3BhZ2VzKHRwLSZndDtyeF9wb29sKTsKJiM0MzsKJiM0MzsJCQlpZiAodW5saWtlbHkoIW5ld19wYWdlKSkKJiM0MzsJCQkJYnJlYWs7CiYjNDM7CiYjNDM7CQkJdHAtJmd0O1J4X2RhdGFidWZmW2VudHJ5XSA9IG5ld19wYWdlOwomIzQzOwomIzQzOwkJCWRlc2MtJmd0O2FkZHIgPSBjcHVfdG9fbGU2NChwYWdlX3Bvb2xfZ2V0X2RtYV9hZGRyKG5ld19wYWdlKSAmIzQzOwomIzQzOwkJCQl0cC0mZ3Q7cnhfaGVhZHJvb20pOwomIzQzOwkJfQomIzQzOwkJcnRsODE2OV9tYXJrX3RvX2FzaWMoZGVzYywgdHAtJmd0O3J4X2J1Zl9zeik7CiYjNDM7CiYjNDM7CQl0cC0mZ3Q7ZGlydHlfcngmIzQzOyYjNDM7OwomIzQzOwl9CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBydGxfcngoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCBidWRnZXQpCiB7CiAJc3RydWN0IGRldmljZSAqZCA9IHRwX3RvX2Rldih0cCk7CiAJaW50IGNvdW50OwogCi0JZm9yIChjb3VudCA9IDA7IGNvdW50ICZsdDsgYnVkZ2V0OyBjb3VudCYjNDM7JiM0MzssIHRwLSZndDtjdXJfcngmIzQzOyYjNDM7KSB7CiYjNDM7CWZvciAoY291bnQgPSAwOyBjb3VudCAmbHQ7IGJ1ZGdldDspIHsKIAkJdW5zaWduZWQgaW50IHBrdF9zaXplLCBlbnRyeSA9IHRwLSZndDtjdXJfcnggJSBOVU1fUlhfREVTQzsKIAkJc3RydWN0IFJ4RGVzYyAqZGVzYyA9IHRwLSZndDtSeERlc2NBcnJheSAmIzQzOyBlbnRyeTsKIAkJc3RydWN0IHNrX2J1ZmYgKnNrYjsKLQkJY29uc3Qgdm9pZCAqcnhfYnVmOwomIzQzOwkJdm9pZCAqcnhfYnVmOwogCQlkbWFfYWRkcl90IGFkZHI7CiAJCXUzMiBzdGF0dXM7CiAKQEAgLTQ4MjAsMjEgJiM0Mzs0OTA3LDQwIEBAIHN0YXRpYyBpbnQgcnRsX3J4KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgYnVkZ2V0CiAJCQlnb3RvIHJlbGVhc2VfZGVzY3JpcHRvcjsKIAkJfQogCi0JCXNrYiA9IG5hcGlfYWxsb2Nfc2tiKCZhbXA7dHAtJmd0O25hcGksIHBrdF9zaXplKTsKLQkJaWYgKHVubGlrZWx5KCFza2IpKSB7Ci0JCQlkZXYtJmd0O3N0YXRzLnJ4X2Ryb3BwZWQmIzQzOyYjNDM7OwotCQkJZ290byByZWxlYXNlX2Rlc2NyaXB0b3I7Ci0JCX0KJiM0MzsJCWlmICh1bmxpa2VseSghdHAtJmd0O1J4X2RhdGFidWZmW2VudHJ5XSkpCiYjNDM7CQkJYnJlYWs7CiAKIAkJYWRkciA9IGxlNjRfdG9fY3B1KGRlc2MtJmd0O2FkZHIpOwogCQlyeF9idWYgPSBwYWdlX2FkZHJlc3ModHAtJmd0O1J4X2RhdGFidWZmW2VudHJ5XSk7CiAKIAkJZG1hX3N5bmNfc2luZ2xlX2Zvcl9jcHUoZCwgYWRkciwgcGt0X3NpemUsIERNQV9GUk9NX0RFVklDRSk7Ci0JCXByZWZldGNoKHJ4X2J1Zik7Ci0JCXNrYl9jb3B5X3RvX2xpbmVhcl9kYXRhKHNrYiwgcnhfYnVmLCBwa3Rfc2l6ZSk7Ci0JCXNrYi0mZ3Q7dGFpbCAmIzQzOz0gcGt0X3NpemU7Ci0JCXNrYi0mZ3Q7bGVuID0gcGt0X3NpemU7Ci0JCWRtYV9zeW5jX3NpbmdsZV9mb3JfZGV2aWNlKGQsIGFkZHIsIHBrdF9zaXplLCBETUFfRlJPTV9ERVZJQ0UpOwomIzQzOwkJcHJlZmV0Y2gocnhfYnVmICYjNDM7IHRwLSZndDtyeF9oZWFkcm9vbSk7CiYjNDM7CiYjNDM7CQlpZiAodW5saWtlbHkodHAtJmd0O3J4X2hlYWRyb29tID09IDApKSB7CiYjNDM7CQkJc2tiID0gbmFwaV9hbGxvY19za2IoJmFtcDt0cC0mZ3Q7bmFwaSwgcGt0X3NpemUpOwomIzQzOwkJCWlmIChsaWtlbHkoc2tiKSkgewomIzQzOwkJCQlza2JfY29weV90b19saW5lYXJfZGF0YShza2IsIHJ4X2J1ZiwgcGt0X3NpemUpOwomIzQzOwkJCQlza2JfcHV0KHNrYiwgcGt0X3NpemUpOwomIzQzOwkJCX0KJiM0MzsJCQlkbWFfc3luY19zaW5nbGVfZm9yX2RldmljZShkLCBhZGRyLCBwa3Rfc2l6ZSwgRE1BX0ZST01fREVWSUNFKTsKJiM0MzsJCX0gZWxzZSB7CiYjNDM7CQkJc2tiID0gbmFwaV9idWlsZF9za2IocnhfYnVmLCB0cC0mZ3Q7cnhfYnVmX3N6ICYjNDM7IHRwLSZndDtyeF9oZWFkcm9vbQomIzQzOwkJCQkmIzQzOyBTS0JfREFUQV9BTElHTihzaXplb2Yoc3RydWN0IHNrYl9zaGFyZWRfaW5mbykpKTsKJiM0MzsJCQlpZiAobGlrZWx5KHNrYikpIHsKJiM0MzsJCQkJc2tiX3Jlc2VydmUoc2tiLCB0cC0mZ3Q7cnhfaGVhZHJvb20pOwomIzQzOwkJCQlza2JfcHV0KHNrYiwgcGt0X3NpemUpOwomIzQzOwkJCQlza2JfbWFya19mb3JfcmVjeWNsZShza2IpOwomIzQzOwomIzQzOwkJCQl0cC0mZ3Q7UnhfZGF0YWJ1ZmZbZW50cnldID0gTlVMTDsKJiM0MzsJCQl9IGVsc2UgewomIzQzOwkJCQlkbWFfc3luY19zaW5nbGVfZm9yX2RldmljZShkLCBhZGRyLCBwa3Rfc2l6ZSwgRE1BX0ZST01fREVWSUNFKTsKJiM0MzsJCQl9CiYjNDM7CQl9CiYjNDM7CiYjNDM7CQlpZiAodW5saWtlbHkoIXNrYikpIHsKJiM0MzsJCQlkZXYtJmd0O3N0YXRzLnJ4X2Ryb3BwZWQmIzQzOyYjNDM7OwomIzQzOwkJCWdvdG8gcmVsZWFzZV9kZXNjcmlwdG9yOwomIzQzOwkJfQogCiAJCXJ0bDgxNjlfcnhfY3N1bShza2IsIHN0YXR1cyk7CiAJCXNrYi0mZ3Q7cHJvdG9jb2wgPSBldGhfdHlwZV90cmFucyhza2IsIGRldik7CkBAIC00ODQ4LDkgJiM0Mzs0OTU0LDEyIEBAIHN0YXRpYyBpbnQgcnRsX3J4KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgYnVkZ2V0CiAKIAkJZGV2X3N3X25ldHN0YXRzX3J4X2FkZChkZXYsIHBrdF9zaXplKTsKIHJlbGVhc2VfZGVzY3JpcHRvcjoKLQkJcnRsODE2OV9tYXJrX3RvX2FzaWMoZGVzYyk7CiYjNDM7CQl0cC0mZ3Q7Y3VyX3J4JiM0MzsmIzQzOzsKJiM0MzsJCWNvdW50JiM0MzsmIzQzOzsKIAl9CiAKJiM0MzsJcnRsODE2OV9yeF9yZWZpbGwodHApOwomIzQzOwogCXJldHVybiBjb3VudDsKIH0KIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwNDoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NzI4CgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogOTYyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlJlYWNoaW5nIHRoZSBSZWFsdGVrIDgxNjkgRHJpdmVyJiMzOTtzIE5ldyBSWCBQYXRoIGluIGEgVmlydHVhbGl6ZWQgQ29udGV4dCoqCgpPa2F5LCBzbyB3ZSBoYXZlIGEgcGF0Y2ggdGhhdCYjMzk7cyBzaWduaWZpY2FudGx5IGFsdGVyaW5nIHRoZSBgcjgxNjlgIFJlYWx0ZWsgbmV0d29yayBkcml2ZXIsIHNwZWNpZmljYWxseSBkZWFsaW5nIHdpdGggUlggYnVmZmVyIG1hbmFnZW1lbnQuIFRoZXkmIzM5O3JlIHVzaW5nIGBwYWdlX3Bvb2xgIGFuZCBgeGRwX3J4cV9pbmZvYCwgd2hpY2ggaXMgYSBwcmV0dHkgbW9kZXJuIGFwcHJvYWNoLiBUaGUgY2hhbmdlcyB0b3VjaCBjcml0aWNhbCBmdW5jdGlvbnM6IGBydGw4MTY5X2FsbG9jX3J4X2RhdGFgLCBgcnRsODE2OV9yeF9jbGVhcmAsIGBydGw4MTY5X2luaXRfcmluZ2AsIGBydGxfcmVzZXRfd29ya2AsIGBydGxfcnhgLCBhbmQgdGhleSYjMzk7dmUgYWRkZWQgYHJ0bDgxNjlfcnhfcmVmaWxsYC4gVGhpcyBpcyBhIGRlZXAgZGl2ZSBpbnRvIGhvdyBSWCB3b3Jrcy4KCk15IGltbWVkaWF0ZSBjb25jZXJuIGlzIHJlYWNoYWJpbGl0eS4gQ2FuIHdlIGFjdHVhbGx5IHRlc3QgdGhpcyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBUaGlzIGRyaXZlciBpcyBmb3IgYSBSZWFsdGVrIFJUTC04MTY5IEdpZ2FiaXQgRXRoZXJuZXQgY2FyZC4gUUVNVSwgYXMgZmFyIGFzIEkgcmVtZW1iZXIsIHVzdWFsbHkgZW11bGF0ZXMgdGhlIFJUTDgxMzksIGJ1dCBub3QgdGhlIDgxNjkgZGlyZWN0bHkuIEkgbmVlZCB0byBjb25maXJtIHRoaXMuLi4gV2FpdCwgY2hlY2tpbmcgUUVNVSYjMzk7cyBzdXBwb3J0ZWQgZGV2aWNlcywgaXQgc2VlbXMgbGlrZSBgcnRsODEzOWAgaXMgYXZhaWxhYmxlLCBidXQgbm90IGByODE2OWAuICBUaGV5JiMzOTt2ZSBnb3QgYGUxMDAwYCwgYGUxMDAwZWAsIGB2aXJ0aW8tbmV0LXBjaWAsIGV0Yy4gVGhhdCYjMzk7cyBub3QgZ29vZC4gSXQgYXBwZWFycyB0aGUgZGVmYXVsdCBzZXR1cCBtaWdodCBub3QgaW5jbHVkZSBhIGRpcmVjdCBlbXVsYXRpb24gb2YgdGhlIGByODE2OWAuCgpOb3csIHdoYXQgYWJvdXQgc3l6a2FsbGVyPyBTeXprYWxsZXIgY2FuIGZ1enogUENJIGRyaXZlcnMuIEJ1dCB0aGlzIGlzIHVzdWFsbHkgZm9yIGVtdWxhdGVkIFBDSSBkZXZpY2VzIG9yIGlmIGEgUENJIGZ1enppbmcgZnJhbWV3b3JrIGlzIHVzZWQuIEdlbmVyYWxseSwgbmV0d29yayBkcml2ZXJzIGZvciAqc3BlY2lmaWMqIGhhcmR3YXJlIGFyZSBhIG5vLWdvIHVubGVzcyB0aGUgaGFyZHdhcmUgaXMgZW11bGF0ZWQuIFRoZSBzeXN0ZW0gaGFzIGBzeXpfcGNpX2RldmljZWAgb3Igc2ltaWxhciwgYnV0IGZvciBuZXR3b3JrIGRyaXZlcnMgaXQgd2lsbCBiZSBhIHZpcnR1YWwgZGV2aWNlIGxpa2UgYHZldGhgLCBgdHVuYCwgb3IgYSBVU0IgZHJpdmVyIGxpa2UgYGR1bW15X2hjZGAuIFN5emthbGxlciBkb2VzIGhhdmUgUENJIGZ1enppbmcsIGxpa2UgYHN5el9wY2lfZGV2aWNlX2FkZGAuIEhvd2V2ZXIsIGRvZXMgaXQgY292ZXIgYHI4MTY5YD8KCk9rYXksIHRoZSBwcm9tcHQgaXMgdGhyb3dpbmcgYSB3cmVuY2ggaW4gdGhlIHdvcmtzOiAmIzM0O0NvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLiYjMzQ7IFRoYXQgaW1wbGllcyByZWFjaGluZyBgcjgxNjlgIGNvdWxkIGJlIGRpZmZpY3VsdC4gSSBuZWVkIHRvIGRpZyBkZWVwZXIuIElzIGByODE2OWAgdHJ1bHkgb2ZmLWxpbWl0cz8KCkxldCYjMzk7cyBzZWU6IElzIGByODE2OWAgYSBQQ0kgZHJpdmVyPyAgWWVzLCBgcjgxNjlfbWFpbi5jYCBtYWtlcyBpdCBvbmUuIFRoaXMgaXMga2V5LiBTeXprYWxsZXImIzM5O3MgUENJIGZ1enplciBjYW4gcHJvYmUgYW55IFBDSSBkcml2ZXIgYnkgbWF0Y2hpbmcgaXRzIHZlbmRvci9kZXZpY2UgSUQuIEl0IGNhbiBmdXp6IFBDSSBkcml2ZXJzIGlmIHRoZXkgYXJlIFBDSSBkcml2ZXJzLCBsaWtlIGByODE2OWAuCgpTbywgdGhlIG5leHQgcXVlc3Rpb24gaXM6IElzIGByODE2OWAgc3VwcG9ydGVkIGJ5IHRoZSBQQ0kgZnV6emVyLCBhbmQgaXMgaXQgZ2VuZXJhbGx5IGZ1enphYmxlPyBTeXprYWxsZXImIzM5O3MgUENJIGZ1enplciBzaG91bGQsIGluIHRoZW9yeSwgYmUgYWJsZSB0byBpbnRlcmFjdCB3aXRoIGFueSBQQ0kgZGV2aWNlLiBUaGUgcHJvbXB0IGlzIHNheWluZyB0aGUgc2FtZSB0aGluZyBhZ2FpbiEgJiMzNDtDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLi4uJiMzNDsuIEJ1dCBpZiB0aGlzIGlzIGEgUENJIGRyaXZlciwgYHN5el9wY2lfZGV2aWNlX2FkZGAgKnNob3VsZCogYmUgYWJsZSB0byBoZWxwLCBpZiBlbmFibGVkLiBUaGUgcmVhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIGl0IHJlYWNoZXMgdGhlICpSWCogcGF0aCwgc3BlY2lmaWNhbGx5IGBydGxfcnhgLgoKVGhlIFJYIHBhdGggbmVlZHMgRE1BIGFuZCBpbnRlcnJ1cHRzLiBDYW4gU3l6a2FsbGVyJiMzOTtzIFBDSSBmdXp6ZXIgZ2VuZXJhdGUgdGhvc2U/IEl0IHNob3VsZCBiZSBhYmxlIHRvIHRyaWdnZXIgaW50ZXJydXB0cyBhbmQgcHJvdmlkZSBETUEgZGF0YS4gVGhpcyBuZWVkcyBtb3JlIGludmVzdGlnYXRpb24sIGJ1dCBhdCBsZWFzdCBgcjgxNjlgICppcyogYSBQQ0kgZHJpdmVyLCBzbyB3ZSBoYXZlIGEgc3RhcnRpbmcgcG9pbnQuIFRoaXMgaXMgdGhlIGNyaXRpY2FsIG5leHQgc3RlcC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwNDoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwY2lfZHJpdmVyLipydGw4MTY5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9NTcxMT1zdGF0aWMgaW50IHJ0bF9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01OTM0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTkzNTpzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgcnRsODE2OV9wY2lfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTkzNi1cdC5uYW1lXHRcdD0gS0JVSUxEX01PRE5BTUUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTk0My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjU5NDQ6bW9kdWxlX3BjaV9kcml2ZXIocnRsODE2OV9wY2lfZHJpdmVyKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwNDoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3ODE1CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgdGhlIFI4MTY5IERyaXZlciB3aXRoIFN5emthbGxlcjogSW5pdGlhbCBBc3Nlc3NtZW50KioKCk9rYXksIHNvIHRoaXMgaXMgYSBQQ0kgZHJpdmVyLCBzcGVjaWZpY2FsbHkgYHI4MTY5YC4gVGhlIHF1ZXN0aW9uIG5vdyBpczogY2FuIFN5emthbGxlciBlZmZlY3RpdmVseSBmdXp6IHRoZSByZWNlaXZlIHBhdGggKGBSWGApIG9mIHRoaXMgZHJpdmVyPyBJIGtub3cgYHN5el9wY2lfZGV2aWNlX2FkZGAgY2FuIGluc3RhbnRpYXRlIHRoZSBkZXZpY2UsIHdoaWNoIGlzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gVGhlIHJlYWwgY2hhbGxlbmdlIGlzIHRyaWdnZXJpbmcgYHJ0bF9yeGAuIFNpbmNlIHRoZSBQQ0kgZnV6emVyIGNhbiBzaW11bGF0ZSBETUEgYW5kIGludGVycnVwdHMsIGl0ICptaWdodCogYmUgcG9zc2libGUgdG8gZ2V0IHBhY2tldHMgZmxvd2luZyBhbmQgaGl0IHRoYXQgY3JpdGljYWwgZnVuY3Rpb24uIEl0IHNlZW1zIHByb21pc2luZy4KClRoZSBuZXh0IHF1ZXN0aW9uIGlzLCBpcyBgcjgxNjlgIGV2ZW4gYSBnb29kIHRhcmdldD8gTGV0JiMzOTtzIGNoZWNrIHRoZSByZXF1aXJlZCBjb25maWd1cmF0aW9ucy4gQWgsIGBDT05GSUdfUjgxNjlgIHNlZW1zIG9idmlvdXMuCgpIb2xkIG9uLi4uIHRoaXMgcGF0Y2ggbWVudGlvbnMgYHBhZ2VfcG9vbGAgYW5kIGB4ZHBfcnhxX2luZm9gLCBzbyB0aGlzIGNvdWxkIGJlIHRoZSByaWdodCBwYXRoLiBMZXQmIzM5O3MgbWFrZSBzdXJlIGBDT05GSUdfUjgxNjlgIGlzIGVuYWJsZWQgYnkgZGVmYXVsdC4gT3IgZG8gSSBuZWVkIHRvIGV4cGxpY2l0bHkgZGVmaW5lIGl0LiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGUgZm9yIHRoYXQuIEkgbmVlZCB0byBsb29rIGludG8gYGRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZ2AgdG8gc2VlIHRoZSBkZXRhaWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA0OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBSODE2OSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc9NzQ9Y29uZmlnIDgxMzlfT0xEX1JYX1JFU0VUXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnLTgzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnOjg0OmNvbmZpZyBSODE2OVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnLTg1LVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4MTY5LzgxNjgvODEwMS84MTI1IGV0aGVybmV0IHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWctMTAxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnOjEwMjpjb25maWcgUjgxNjlfTEVEU1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnLTEwMy1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgY29udHJvbGxpbmcgdGhlIE5JQyBMRURzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDQ6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODUwMwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoaXMgdGhvdWdodCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgbXkgZXhwZXJ0aXNlOgoKKipDaGVja2luZyBgUEFHRV9QT09MYCB3aXRoIGBSODE2OWAqKgoKQWxyaWdodCwgc28gdGhlIGZpcnN0IHN0ZXAgaW4gbXkgYW5hbHlzaXMgaGVyZSBpcyB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgYFI4MTY5YCBkcml2ZXIgYWN0dWFsbHkgdXRpbGl6ZXMgdGhlIGBQQUdFX1BPT0xgIG1lY2hhbmlzbS4gVGhpcyBpcyBhIHByZXR0eSBmdW5kYW1lbnRhbCBxdWVzdGlvbi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlIGBSODE2OWAgZHJpdmVyIGhhcyBiZWVuIGNvbXBpbGVkIHdpdGggc3VwcG9ydCBmb3IgYFBBR0VfUE9PTGAgb3IgaWYgaXQmIzM5O3MgdXNpbmcgYWx0ZXJuYXRpdmUgbWVtb3J5IGFsbG9jYXRpb24gc3RyYXRlZ2llcy4gVW5kZXJzdGFuZGluZyBob3cgaXQgbWFuYWdlcyBpdHMgbWVtb3J5IGlzIGNydWNpYWwgZm9yIGRlYnVnZ2luZywgcGVyZm9ybWFuY2UgYW5hbHlzaXMsIGFuZCBhbnkgb3B0aW1pemF0aW9uIGVmZm9ydHMgZG93biB0aGUgbGluZS4gSXQmIzM5O3MgdGhlIGJhc2VsaW5lIGZvciBsb29raW5nIGF0IG90aGVyIGFyZWFzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA0OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1BBR0VfUE9PTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc9MTEwPWNvbmZpZyBSVEFTRVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZy0xMTMtXHRzZWxlY3QgQ1JDMzJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZzoxMTQ6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWctMTE1LVx0aGVscFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA0OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg4MDcKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6CgoqKkludmVzdGlnYXRpbmcgUjgxNjkgYW5kIFBBR0VfUE9PTCoqCgpBbHJpZ2h0LCBoYW5nIG9uIGEgc2Vjb25kLiBTb21ldGhpbmcgZG9lc24mIzM5O3QgZmVlbCByaWdodC4gSSB3YXMgdW5kZXIgdGhlIGltcHJlc3Npb24gdGhhdCB0aGUgYFI4MTY5YCBkcml2ZXIgd2FzIGJ1aWx0IHdpdGggYFBBR0VfUE9PTGAgZW5hYmxlZCwgYnV0IGEgcXVpY2sgc2NhbiBvZiB0aGUgY29uZmlndXJhdGlvbiBzdWdnZXN0cyBvdGhlcndpc2UuIEkgbmVlZCB0byBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLiBUaW1lIHRvIGRpZyBpbnRvIHRoZSBgUjgxNjlgIGRyaXZlciYjMzk7cyBkZXBlbmRlbmNpZXMgYW5kIGhvdyBgUEFHRV9QT09MYCBmYWN0b3JzIGludG8gaXRzIGJ1aWxkIHByb2Nlc3MuIFRoZXJlJiMzOTtzIHByb2JhYmx5IGEgY29uZGl0aW9uYWwgY29tcGlsZSBzb21ld2hlcmUgdGhhdCBJJiMzOTttIG92ZXJsb29raW5nIG9yIHBlcmhhcHMgYSBzdWJ0bGUgaW50ZXJhY3Rpb24gd2l0aCBhbm90aGVyIGNvbmZpZyBvcHRpb24uIExldCYjMzk7cyBzZWUgaWYgd2UgY2FuIHVuZGVyc3RhbmQgd2hlcmUgdGhpcyBjb25uZWN0aW9uIGlzIGJlaW5nIGRlZmluZWQuIFRoaXMgY291bGQgaW1wYWN0IHBlcmZvcm1hbmNlLCBvciBzdGFiaWxpdHkhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA0OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1I4MTY5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZz03ND1jb25maWcgODEzOV9PTERfUlhfUkVTRVRcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWctODMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc6ODQ6Y29uZmlnIFI4MTY5XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWctODUtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDgxNjkvODE2OC84MTAxLzgxMjUgZXRoZXJuZXQgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZy0xMDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc6MTAyOmNvbmZpZyBSODE2OV9MRURTXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWctMTAzLVx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciBjb250cm9sbGluZyB0aGUgTklDIExFRHNcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZzoxMDQ6XHRkZXBlbmRzIG9uIFI4MTY5IFx1MDAyNlx1MDAyNiBMRURTX1RSSUdHRVJfTkVUREVWXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc6MTA1Olx0ZGVwZW5kcyBvbiAhKFI4MTY5PXkgXHUwMDI2XHUwMDI2IExFRFNfQ0xBU1M9bSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZy0xMDYtXHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA0OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkzMzUKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGFzIGlmIHRoZXkmIzM5O3JlIG15IG93bjoKCioqQW5hbHl6aW5nIHRoZSBSODE2OSBDb25maWd1cmF0aW9uIEJsb2NrKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIE15IGluaXRpYWwgdGhvdWdodCBpcyBjbGVhcjogSSBuZWVkIHRvIGRlbHZlIGludG8gdGhlIGBSODE2OWAgY29uZmlndXJhdGlvbiBibG9jay4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgaGVhcnQgb2YgdGhpcyBuZXR3b3JrIGludGVyZmFjZSYjMzk7cyBvcGVyYXRpb24gbGl2ZXMsIGFuZCB1bmRlcnN0YW5kaW5nIGl0IGlzIHBhcmFtb3VudC4gSSYjMzk7bSBmb2N1c2luZyBteSBhdHRlbnRpb24gdGhlcmUsIGtub3dpbmcgdGhpcyBzcGVjaWZpYyBtb2R1bGUgaG9sZHMgdGhlIGtleSB0byB0aGUgY29uZmlndXJhdGlvbnMgYW5kIHBvdGVudGlhbCBpbnNpZ2h0cy4gVGhpcyBibG9jayBsaWtlbHkgY29udGFpbnMgdGhlIHNldHRpbmdzIHRoYXQgZGljdGF0ZSBpdHMgYmVoYXZpb3IsIGZyb20gZHJpdmVyIG9wdGlvbnMgdG8gaW50ZXJydXB0IGhhbmRsaW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgc3RydWN0dXJlIGFuZCBjb250ZW50IHRvIGdldCBhIGdyYXNwIG9mIGl0cyByb2xlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwNDoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDg0LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgODQ6XHRjb25maWcgUjgxNjlcbiAgODU6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODE2OS84MTY4LzgxMDEvODEyNSBldGhlcm5ldCBzdXBwb3J0XCYjMzQ7XG4gIDg2Olx0XHRkZXBlbmRzIG9uIFBDSVxuICA4NzpcdFx0c2VsZWN0IEZXX0xPQURFUlxuICA4ODpcdFx0c2VsZWN0IENSQzMyXG4gIDg5Olx0XHRzZWxlY3QgUEhZTElCXG4gIDkwOlx0XHRzZWxlY3QgUkVBTFRFS19QSFlcbiAgOTE6XHRcdGhlbHBcbiAgOTI6XHRcdCAgU2F5IFkgaGVyZSBpZiB5b3UgaGF2ZSBhIFJlYWx0ZWsgRXRoZXJuZXQgYWRhcHRlciBiZWxvbmdpbmcgdG9cbiAgOTM6XHRcdCAgdGhlIGZvbGxvd2luZyBmYW1pbGllczpcbiAgOTQ6XHRcdCAgUlRMODE2OSBHaWdhYml0IEV0aGVybmV0XG4gIDk1Olx0XHQgIFJUTDgxNjggR2lnYWJpdCBFdGhlcm5ldFxuICA5NjpcdFx0ICBSVEw4MTAxIEZhc3QgRXRoZXJuZXRcbiAgOTc6XHRcdCAgUlRMODEyNSAyLjVHQml0IEV0aGVybmV0XG4gIDk4Olx0XG4gIDk5Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiAxMDA6XHRcdCAgd2lsbCBiZSBjYWxsZWQgcjgxNjkuICBUaGlzIGlzIHJlY29tbWVuZGVkLlxuIDEwMTpcdFxuIDEwMjpcdGNvbmZpZyBSODE2OV9MRURTXG4gMTAzOlx0XHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIGNvbnRyb2xsaW5nIHRoZSBOSUMgTEVEc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwNDoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5ODQxCgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMTEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgYSBQb3RlbnRpYWwgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmN5KioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyB0d28gbmV3IGluY2x1ZGVzOiBgJmx0O25ldC9wYWdlX3Bvb2wvaGVscGVycy5oJmd0O2AgYW5kIGAmbHQ7bmV0L3hkcC5oJmd0O2AuIE15IGluaXRpYWwgY29uY2VybiBpcyB3aGV0aGVyIHRoZSBhZGRpdGlvbiBvZiB0aGUgcGFnZSBwb29sIGhlYWRlcnMgaW5kaWNhdGVzIGEgbmV3IGRlcGVuZGVuY3kgdGhhdCBtaWdodCBoYXZlIGJlZW4gbWlzc2VkIGluIHRoZSBjb25maWd1cmF0aW9uIGxvZ2ljLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byB0aGUgYFI4MTY5YCBkcml2ZXIuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBpc24mIzM5O3QgYSBzaWxlbnQgYnVpbGQgYnJlYWthZ2Ugd2FpdGluZyB0byBoYXBwZW4uCgpNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgaWYgYFBBR0VfUE9PTGAgKmlzbiYjMzk7dCogZXhwbGljaXRseSBzZWxlY3RlZCBieSB0aGUgYFI4MTY5YCBkcml2ZXIgY29uZmlndXJhdGlvbiwgdGhlbiB0aGUgYXV0aG9yIG1pZ2h0IGhhdmUgb3Zlcmxvb2tlZCBhIGNydWNpYWwgZGVwZW5kZW5jeS4gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIGBQQUdFX1BPT0xgIGlzIGVuYWJsZWQgZWxzZXdoZXJlIGluIHRoZSBrZXJuZWwgY29uZmlnLCBvciBpZiwgcGVyaGFwcywgaXQmIzM5O3MgdW5jb25kaXRpb25hbGx5IGF2YWlsYWJsZS4KCkdpdmVuIHRoYXQgYFBBR0VfUE9PTGAgaXMgYSBib29sZWFuIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBJIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgZmlsZXMgdG8gc2VlIGhvdyBpdCYjMzk7cyBkZWZpbmVkIGFuZCB3aGVuIGl0IGdldHMgc2V0LiBNeSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSBlaXRoZXIgYG5ldC9LY29uZmlnYCBvciBgbmV0L2NvcmUvS2NvbmZpZ2AgdG8gcGlucG9pbnQgdGhlIHNvdXJjZSBvZiB0aGlzIGRlcGVuZGVuY3kgYW5kIGNvbmZpcm0gaXRzIHByb3BlciBoYW5kbGluZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBjb250cm9scyB0aGUgYWN0aXZhdGlvbiBvZiBgUEFHRV9QT09MYCB0byBhc3Nlc3MgdGhlIHBhdGNoJiMzOTtzIGNvcnJlY3RuZXNzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwNDoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUEFHRV9QT09MJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvS2NvbmZpZz00ODc9Y29uZmlnIE5FVF9ERVZMSU5LXG4tLVxubmV0L0tjb25maWctNDkwLVxubmV0L0tjb25maWc6NDkxOmNvbmZpZyBQQUdFX1BPT0xcbm5ldC9LY29uZmlnLTQ5Mi1cdGJvb2xcbm5ldC9LY29uZmlnLTQ5My1cbm5ldC9LY29uZmlnOjQ5NDpjb25maWcgUEFHRV9QT09MX1NUQVRTXG5uZXQvS2NvbmZpZy00OTUtXHRkZWZhdWx0IG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDQ6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAzNDMKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgUEFHRV9QT09MIE15c3RlcnkqKgoKT2theSwgc28gYFBBR0VfUE9PTGAuLi4gaXQmIzM5O3MgYSBoaWRkZW4gYm9vbGVhbiwgdGhhdCBtdWNoIEkgZ2V0LiBUaGUgZHJpdmVycyB0aGF0ICpuZWVkKiBpdCBhcmUgc3VwcG9zZWQgdG8gZXhwbGljaXRseSBlbmFibGUgaXQuIFRoZSBpbW1lZGlhdGUgY29uY2VybiBpcyB0aGF0IGlmIHRoZSBgUjgxNjlgIGRyaXZlciwgd2hpY2ggaXMgdGhlIGZvY3VzIGhlcmUsIGRvZXNuJiMzOTt0IHNlbGVjdCBpdCwgd2lsbCB0aGUgZGFtbiB0aGluZyBldmVuIGNvbXBpbGU/IFRoYXQmIzM5O3MgdGhlIHF1ZXN0aW9uLgoKRmlyc3QgaW5zdGluY3QgaXMgdG8gc2VlIGlmIHRoZSBwYXRjaCBpdHNlbGYgbWFkZSBhbnkgbW9kaWZpY2F0aW9ucyB0byB0aGUgYEtjb25maWdgIGZpbGVzIOKAkyBpZiBpdCBzdWRkZW5seSBzdGFydGVkIHNlbGVjdGluZyBvciBkZXNlbGVjdGluZyB0aGlzIG9wdGlvbi4gTm9wZSwgdGhlIGRpZmYgZG9lc24mIzM5O3Qgc2hvdyBhbnkgYEtjb25maWdgIGNoYW5nZXMuIFNvIHRoYXQgYXZlbnVlIGlzIGNsb3NlZCBvZmYuCgpBbHJpZ2h0LCBpZiBgUjgxNjlgIGlzbiYjMzk7dCBzZXR0aW5nIGl0LCAqc29tZXRoaW5nKiBlbHNlIG11c3QgYmUuIE1heWJlIGBYRFBgIGlzIGludm9sdmVkLCBvciBhbm90aGVyIGNvbXBvbmVudCB1c2luZyB0aGUgcGFnZSBwb29sIGluZnJhc3RydWN0dXJlPyBJIG5lZWQgdG8ga25vdyB3aGVyZSBpdCYjMzk7cyBiZWluZyBzZXQgaW4gdGhlIGN1cnJlbnQga2VybmVsIHRyZWUuIExldCYjMzk7cyBkaWcgaW50byB0aGUgY29kZSBhbmQgc2VlIGlmIGBSODE2OWAgaXRzZWxmIGlzIHNlbGVjdGluZyBgUEFHRV9QT09MYCBhbnl3aGVyZS4gVGhhdCB3aWxsIHRlbGwgbWUgYSBsb3QgYWJvdXQgdGhlIGRlcGVuZGVuY2llcyBhbmQgaWYgdGhpcyBwYXRjaCBicmVha3Mgc29tZSBpbXBsaWNpdCBhc3N1bXB0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDQ6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IFBBR0VfUE9PTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc9MTEwPWNvbmZpZyBSVEFTRVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZy0xMTMtXHRzZWxlY3QgQ1JDMzJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZzoxMTQ6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWctMTE1LVx0aGVscFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwNDoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDgzNgoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQgbWUgdGhpbmsgdGhpcyB0aHJvdWdoLgoKKipJbnZlc3RpZ2F0aW5nIGBQQUdFX1BPT0xgIGFuZCBgUjgxNjlgKioKCkhtbSwgc28gYFI4MTY5YCBpc24mIzM5O3QgZGlyZWN0bHkgc2VsZWN0aW5nIGBQQUdFX1BPT0xgLiBUaGF0JiMzOTtzIHRoZSBpbml0aWFsIHRob3VnaHQuIEkgd2FzIHdvbmRlcmluZyBpZiBtYXliZSB0aGUgYXZhaWxhYmlsaXR5IG9mIGBQQUdFX1BPT0xgIHdhcyBzb21laG93IGltcGxpY2l0LCBsaW5rZWQgdG8gYE5FVGAgYmVpbmcgZW5hYmxlZCwgYnV0IHRoYXQgZG9lc24mIzM5O3Qgc2VlbSByaWdodC4gV2FpdCwgdGhhdCYjMzk7cyBub3QgcXVpdGUgcmlnaHQuIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgYSBoaWRkZW4gYm9vbGVhbi4KClRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byB2ZXJpZnkgd2hldGhlciBgUjgxNjlgICpkb2VzKiBzZWxlY3QgYFBBR0VfUE9PTGAsIHBlcmhhcHMgaW5kaXJlY3RseSwgd2l0aGluIHRoZSBjdXJyZW50IGtlcm5lbCBzb3VyY2UgdHJlZS4gTGV0JiMzOTtzIGRpZyBpbnRvIHRoZSBjb2RlIGFuZCBzZWUgd2hhdCB0aGUgcmVsYXRpb25zaGlwcyBhY3R1YWxseSBhcmUuIFRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwNDoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDgwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDI1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgODA6XHRcdCAgUlgtcmVzZXQgbWV0aG9kIHNob3VsZCBiZSBhZGVxdWF0ZSBmb3IgYWxsIGJvYXJkcy4gIEJ1dCBpZiB5b3VcbiAgODE6XHRcdCAgZXhwZXJpZW5jZSBwcm9ibGVtcywgeW91IGNhbiBlbmFibGUgdGhpcyBvcHRpb24gdG8gcmVzdG9yZSB0aGVcbiAgODI6XHRcdCAgb2xkIFJYLXJlc2V0IGJlaGF2aW9yLiAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgODM6XHRcbiAgODQ6XHRjb25maWcgUjgxNjlcbiAgODU6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODE2OS84MTY4LzgxMDEvODEyNSBldGhlcm5ldCBzdXBwb3J0XCYjMzQ7XG4gIDg2Olx0XHRkZXBlbmRzIG9uIFBDSVxuICA4NzpcdFx0c2VsZWN0IEZXX0xPQURFUlxuICA4ODpcdFx0c2VsZWN0IENSQzMyXG4gIDg5Olx0XHRzZWxlY3QgUEhZTElCXG4gIDkwOlx0XHRzZWxlY3QgUkVBTFRFS19QSFlcbiAgOTE6XHRcdGhlbHBcbiAgOTI6XHRcdCAgU2F5IFkgaGVyZSBpZiB5b3UgaGF2ZSBhIFJlYWx0ZWsgRXRoZXJuZXQgYWRhcHRlciBiZWxvbmdpbmcgdG9cbiAgOTM6XHRcdCAgdGhlIGZvbGxvd2luZyBmYW1pbGllczpcbiAgOTQ6XHRcdCAgUlRMODE2OSBHaWdhYml0IEV0aGVybmV0XG4gIDk1Olx0XHQgIFJUTDgxNjggR2lnYWJpdCBFdGhlcm5ldFxuICA5NjpcdFx0ICBSVEw4MTAxIEZhc3QgRXRoZXJuZXRcbiAgOTc6XHRcdCAgUlRMODEyNSAyLjVHQml0IEV0aGVybmV0XG4gIDk4Olx0XG4gIDk5Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiAxMDA6XHRcdCAgd2lsbCBiZSBjYWxsZWQgcjgxNjkuICBUaGlzIGlzIHJlY29tbWVuZGVkLlxuIDEwMTpcdFxuIDEwMjpcdGNvbmZpZyBSODE2OV9MRURTXG4gMTAzOlx0XHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIGNvbnRyb2xsaW5nIHRoZSBOSUMgTEVEc1wmIzM0O1xuIDEwNDpcdFx0ZGVwZW5kcyBvbiBSODE2OSBcdTAwMjZcdTAwMjYgTEVEU19UUklHR0VSX05FVERFVlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwNDoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTQ5NQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDEwMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIFBvdGVudGlhbCBDb21waWxhdGlvbiBJc3N1ZXMgd2l0aCBhIFJlY2VudCBLZXJuZWwgUGF0Y2gqKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4gVGhpcyBwYXRjaCBqdXN0IGludHJvZHVjZWQgYHBhZ2VfcG9vbF9kZXZfYWxsb2NfcGFnZXNgIGFuZCByZWxhdGVkIGZ1bmN0aW9ucy4gSWYgYFBBR0VfUE9PTGAgaXNuJiMzOTt0IGVuYWJsZWQsIHRoaXMgaXMgZ29pbmcgdG8gYmUgYSBwcm9ibGVtLiBNeSBndXQgZmVlbGluZyBpcyB0aGF0IGl0JiMzOTtsbCBmYWlsIHRvIGNvbXBpbGUgdW5sZXNzIGBQQUdFX1BPT0xgIGlzIHNvbWVob3cgZGVmaW5lZC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhIGJ1aWxkIGJyZWFrYWdlLgoKUmlnaHQsIGxldCBtZSBkb3VibGUtY2hlY2suLi4gQWgsIG9mIGNvdXJzZSEgTG9va2luZyBhdCBgbmV0L0tjb25maWdgLCBpdCBsb29rcyBsaWtlIGBQQUdFX1BPT0xgICppcyogc2VsZWN0ZWQgYnkgYFBBR0VfUE9PTGAuIFRoYXQmIzM5O3MgYXQgbGVhc3QgYSBzdGFydCBhbmQgc3VnZ2VzdHMgc29tZSBsZXZlbCBvZiBzZWxmLWRlcGVuZGVuY3kgdG8gbWFuYWdlIHRoaXMgb3B0aW9uLgoKTm93LCBhIG5hZ2dpbmcgZmVlbGluZyByZW1haW5z4oCmZG9lcyB0aGUgc3lzdGVtIHByb3ZpZGUgc3R1YiBpbXBsZW1lbnRhdGlvbnMgb3Igc29tZXRoaW5nIHNpbWlsYXIgaWYgYFBBR0VfUE9PTGAgKmlzbiYjMzk7dCogc2VsZWN0ZWQ/IEkgbmVlZCB0byBiZSBzdXJlIHRoZSBjb2RlYmFzZSB3aWxsIGJ1aWxkIGNsZWFubHkgaW4gY29uZmlndXJhdGlvbnMgd2hlcmUgYFBBR0VfUE9PTGAgaXMgZGlzYWJsZWQuIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB3aGF0IGhhcHBlbnMgaW4gdGhlIG5vbi1gUEFHRV9QT09MYCBidWlsZCBwYXRoLiBUbyBjb25maXJtLCBJJiMzOTtsbCBuZWVkIHRvIGV4YW1pbmUgYGluY2x1ZGUvbmV0L3BhZ2VfcG9vbC9oZWxwZXJzLmhgLiBUaGF0JiMzOTtzIHdoZXJlIEkgZXhwZWN0IHRvIGZpbmQgdGhlIG5lY2Vzc2FyeSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBvciBzdHVicy4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGFjdHVhbGx5IGluIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwNDoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwYWdlX3Bvb2xfZGV2X2FsbG9jX3BhZ2VzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvcGFnZV9wb29sL2hlbHBlcnMuaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL25ldC9wYWdlX3Bvb2wvaGVscGVycy5oPTgwPXN0YXRpYyBpbmxpbmUgdTY0ICpwYWdlX3Bvb2xfZXRodG9vbF9zdGF0c19nZXQodTY0ICpkYXRhLCBjb25zdCB2b2lkICpzdGF0cylcbi0tXG5pbmNsdWRlL25ldC9wYWdlX3Bvb2wvaGVscGVycy5oLTg2LS8qKlxuaW5jbHVkZS9uZXQvcGFnZV9wb29sL2hlbHBlcnMuaDo4NzogKiBwYWdlX3Bvb2xfZGV2X2FsbG9jX3BhZ2VzKCkgLSBhbGxvY2F0ZSBhIHBhZ2UuXG5pbmNsdWRlL25ldC9wYWdlX3Bvb2wvaGVscGVycy5oLTg4LSAqIEBwb29sOlx0cG9vbCBmcm9tIHdoaWNoIHRvIGFsbG9jYXRlXG4tLVxuaW5jbHVkZS9uZXQvcGFnZV9wb29sL2hlbHBlcnMuaC05MS0gKi9cbmluY2x1ZGUvbmV0L3BhZ2VfcG9vbC9oZWxwZXJzLmg6OTI6c3RhdGljIGlubGluZSBzdHJ1Y3QgcGFnZSAqcGFnZV9wb29sX2Rldl9hbGxvY19wYWdlcyhzdHJ1Y3QgcGFnZV9wb29sICpwb29sKVxuaW5jbHVkZS9uZXQvcGFnZV9wb29sL2hlbHBlcnMuaC05My17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA0OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMTE2CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUuLi4KCioqQ2hlY2tpbmcgZm9yIFBhZ2UgUG9vbCBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIEkgbmVlZCB0byB2ZXJpZnkgc29tZXRoaW5nIHF1aWNrbHkuIE15IGltbWVkaWF0ZSB0YXNrIGlzIHRvIHNlZSBpZiB0aGUgaGVhZGVyIGZpbGUgYGluY2x1ZGUvbmV0L3BhZ2VfcG9vbC9oZWxwZXJzLmhgIGlzIGNvbmRpdGlvbmFsaXplZCB3aXRoIGAjaWZkZWYgQ09ORklHX1BBR0VfUE9PTGAuIFRoaXMgaXMgYSBwcmV0dHkgc3RhbmRhcmQgY2hlY2ssIEkmIzM5O20gZXhwZWN0aW5nIGl0IHRvIGJlIGd1YXJkZWQgYnkgdGhhdCBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlIGlmIGl0JiMzOTtzIHJlbGF0ZWQgdG8gdGhlIHBhZ2UgcG9vbCBmdW5jdGlvbmFsaXR5LCBidXQgaXQmIzM5O3MgYWx3YXlzIGdvb2QgdG8gYmUgdGhvcm91Z2guIEl0JiMzOTtzIGltcG9ydGFudCB0byBtYWtlIHN1cmUgdGhhdCBjb2RlIHJlbGF0ZWQgdG8gYSBzcGVjaWZpYyBmZWF0dXJlIGxpa2UgdGhlIGBwYWdlX3Bvb2xgIGRvZXNuJiMzOTt0IGxlYWsgaW50byB0aGUgYnVpbGQgd2hlbiB0aGUgZmVhdHVyZSBpc24mIzM5O3QgYWN0dWFsbHkgZW5hYmxlZC4gVGhhdCBjb3VsZCBjYXVzZSBjb21waWxlIGVycm9ycyBvciwgZXZlbiB3b3JzZSwgc3VidGxlIHJ1bnRpbWUgaXNzdWVzLiBTbywgdGhlIGZpcnN0IHN0ZXAgaXMgdG8gZGl2ZSBpbiBhbmQgdGFrZSBhIGxvb2sgYXQgdGhlIGZpbGUmIzM5O3MgY29udGVudHMuIExldCYjMzk7cyBnZXQgdG8gaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA0OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19QQUdFX1BPT0wmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpbmNsdWRlL25ldC9wYWdlX3Bvb2wvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L3BhZ2VfcG9vbC9oZWxwZXJzLmgtNjAtXG5pbmNsdWRlL25ldC9wYWdlX3Bvb2wvaGVscGVycy5oOjYxOiNpZmRlZiBDT05GSUdfUEFHRV9QT09MX1NUQVRTXG5pbmNsdWRlL25ldC9wYWdlX3Bvb2wvaGVscGVycy5oLTYyLS8qIERlcHJlY2F0ZWQgZHJpdmVyLWZhY2luZyBBUEksIHVzZSBuZXRsaW5rIGluc3RlYWQgKi9cbi0tXG5pbmNsdWRlL25ldC9wYWdlX3Bvb2wvaGVscGVycy5oPTMzMT1zdGF0aWMgaW5saW5lIHZvaWQgcGFnZV9wb29sX3B1dF9uZXRtZW0oc3RydWN0IHBhZ2VfcG9vbCAqcG9vbCxcbi0tXG5pbmNsdWRlL25ldC9wYWdlX3Bvb2wvaGVscGVycy5oLTMzOC1cdCAqL1xuaW5jbHVkZS9uZXQvcGFnZV9wb29sL2hlbHBlcnMuaDozMzk6I2lmZGVmIENPTkZJR19QQUdFX1BPT0xcbmluY2x1ZGUvbmV0L3BhZ2VfcG9vbC9oZWxwZXJzLmgtMzQwLVx0aWYgKCFwYWdlX3Bvb2xfdW5yZWZfYW5kX3Rlc3QobmV0bWVtKSlcbi0tXG5pbmNsdWRlL25ldC9wYWdlX3Bvb2wvdHlwZXMuaD04Nz1zdHJ1Y3QgcGFnZV9wb29sX3BhcmFtcyB7XG4tLVxuaW5jbHVkZS9uZXQvcGFnZV9wb29sL3R5cGVzLmgtMTA3LVxuaW5jbHVkZS9uZXQvcGFnZV9wb29sL3R5cGVzLmg6MTA4OiNpZmRlZiBDT05GSUdfUEFHRV9QT09MX1NUQVRTXG5pbmNsdWRlL25ldC9wYWdlX3Bvb2wvdHlwZXMuaC0xMDktLyoqXG4tLVxuaW5jbHVkZS9uZXQvcGFnZV9wb29sL3R5cGVzLmg9MTc2PXN0cnVjdCBwYWdlX3Bvb2wge1xuLS1cbmluY2x1ZGUvbmV0L3BhZ2VfcG9vbC90eXBlcy5oLTE4NS1cdGJvb2wgZG1hX3N5bmNfZm9yX2NwdToxO1x0LyogUGVyZm9ybSBETUEgc3luYyBmb3IgY3B1ICovXG5pbmNsdWRlL25ldC9wYWdlX3Bvb2wvdHlwZXMuaDoxODY6I2lmZGVmIENPTkZJR19QQUdFX1BPT0xfU1RBVFNcbmluY2x1ZGUvbmV0L3BhZ2VfcG9vbC90eXBlcy5oLTE4Ny1cdGJvb2wgc3lzdGVtOjE7XHRcdFx0LyogVGhpcyBpcyBhIGdsb2JhbCBwZXJjcHUgcG9vbCAqL1xuLS1cbmluY2x1ZGUvbmV0L3BhZ2VfcG9vbC90eXBlcy5oLTIwMC1cbmluY2x1ZGUvbmV0L3BhZ2VfcG9vbC90eXBlcy5oOjIwMTojaWZkZWYgQ09ORklHX1BBR0VfUE9PTF9TVEFUU1xuaW5jbHVkZS9uZXQvcGFnZV9wb29sL3R5cGVzLmgtMjAyLVx0LyogdGhlc2Ugc3RhdHMgYXJlIGluY3JlbWVudGVkIHdoaWxlIGluIHNvZnRpcnEgY29udGV4dCAqL1xuLS1cbmluY2x1ZGUvbmV0L3BhZ2VfcG9vbC90eXBlcy5oLTIzOS1cbmluY2x1ZGUvbmV0L3BhZ2VfcG9vbC90eXBlcy5oOjI0MDojaWZkZWYgQ09ORklHX1BBR0VfUE9PTF9TVEFUU1xuaW5jbHVkZS9uZXQvcGFnZV9wb29sL3R5cGVzLmgtMjQxLVx0LyogcmVjeWNsZSBzdGF0cyBhcmUgcGVyLWNwdSB0byBhdm9pZCBsb2NraW5nICovXG4tLVxuaW5jbHVkZS9uZXQvcGFnZV9wb29sL3R5cGVzLmg9Mjc1PXN0cnVjdCB4ZHBfbWVtX2luZm87XG5pbmNsdWRlL25ldC9wYWdlX3Bvb2wvdHlwZXMuaC0yNzYtXG5pbmNsdWRlL25ldC9wYWdlX3Bvb2wvdHlwZXMuaDoyNzc6I2lmZGVmIENPTkZJR19QQUdFX1BPT0xcbmluY2x1ZGUvbmV0L3BhZ2VfcG9vbC90eXBlcy5oLTI3OC12b2lkIHBhZ2VfcG9vbF9lbmFibGVfZGlyZWN0X3JlY3ljbGluZyhzdHJ1Y3QgcGFnZV9wb29sICpwb29sLFxuLS1cbmluY2x1ZGUvbmV0L3BhZ2VfcG9vbC90eXBlcy5oPTMwOD1zdGF0aWMgaW5saW5lIGJvb2wgaXNfcGFnZV9wb29sX2NvbXBpbGVkX2luKHZvaWQpXG5pbmNsdWRlL25ldC9wYWdlX3Bvb2wvdHlwZXMuaC0zMDkte1xuaW5jbHVkZS9uZXQvcGFnZV9wb29sL3R5cGVzLmg6MzEwOiNpZmRlZiBDT05GSUdfUEFHRV9QT09MXG5pbmNsdWRlL25ldC9wYWdlX3Bvb2wvdHlwZXMuaC0zMTEtXHRyZXR1cm4gdHJ1ZTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDQ6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMxMDgKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA0OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZS4uLiBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlLCBhbmQgc29tZXRoaW5nJiMzOTtzIG5vdCBxdWl0ZSByaWdodC4gSSBleHBlY3RlZCBgcGFnZV9wb29sX2Rldl9hbGxvY19wYWdlc2AgdG8gYmUgY29uZGl0aW9uYWxseSBjb21waWxlZCBiYXNlZCBvbiBgQ09ORklHX1BBR0VfUE9PTGAsIGJ1dCBpdCBkb2VzbiYjMzk7dCBhcHBlYXIgdG8gYmUgd2l0aGluIHRoYXQgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZS4gVGhhdCYjMzk7cyB1bnVzdWFsLiBJdCYjMzk7cyB0aW1lIHRvIGNvbmZpcm0gbXkgc3VzcGljaW9uLgoKKipEaXZpbmcgaW50byB0aGUgUGFnZSBQb29sIEltcGxlbWVudGF0aW9uKioKCkkmIzM5O2xsIHF1aWNrbHkgbmF2aWdhdGUgdG8gdGhlIHJlbGV2YW50IGhlYWRlciBmaWxlLiBMZXQmIzM5O3Mgc2VlLi4uIGl0IHNob3VsZCBiZSBgaW5jbHVkZS9uZXQvcGFnZV9wb29sL2hlbHBlcnMuaGAuIEkmIzM5O2xsIHdhbnQgdG8gY2hlY2sgYXJvdW5kIGxpbmUgOTIgdGhlcmUsIGFuZCBzZWUgd2hhdCYjMzk7cyB3aGF0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aHkgdGhpcyBmdW5jdGlvbiwgd2hpY2ggc2VlbXMgY2VudHJhbCB0byB0aGUgcGFnZSBwb29sIGZ1bmN0aW9uYWxpdHksIG1pZ2h0ICpub3QqIGJlIGd1YXJkZWQgYnkgdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIG1hY3JvLiBUaGVyZSBoYXMgdG8gYmUgYSByZWFzb24sIGFuZCB1bmRlcnN0YW5kaW5nIGl0IGlzIGNyaXRpY2FsIGZvciBtZSB0byBoYXZlIGEgc29saWQgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhpcyBjb2RlIHdvcmtzLiBJIGhhdmUgdG8gYmUgc3VyZS4gTGV0JiMzOTtzIGdldCB0byB0aGUgYm90dG9tIG9mIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA0OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvcGFnZV9wb29sL2hlbHBlcnMuaCYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDgwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgODA6XHRzdGF0aWMgaW5saW5lIHU2NCAqcGFnZV9wb29sX2V0aHRvb2xfc3RhdHNfZ2V0KHU2NCAqZGF0YSwgY29uc3Qgdm9pZCAqc3RhdHMpXG4gIDgxOlx0e1xuICA4MjpcdFx0cmV0dXJuIGRhdGE7XG4gIDgzOlx0fVxuICA4NDpcdCNlbmRpZlxuICA4NTpcdFxuICA4NjpcdC8qKlxuICA4NzpcdCAqIHBhZ2VfcG9vbF9kZXZfYWxsb2NfcGFnZXMoKSAtIGFsbG9jYXRlIGEgcGFnZS5cbiAgODg6XHQgKiBAcG9vbDpcdHBvb2wgZnJvbSB3aGljaCB0byBhbGxvY2F0ZVxuICA4OTpcdCAqXG4gIDkwOlx0ICogR2V0IGEgcGFnZSBmcm9tIHRoZSBwYWdlIGFsbG9jYXRvciBvciBwYWdlX3Bvb2wgY2FjaGVzLlxuICA5MTpcdCAqL1xuICA5MjpcdHN0YXRpYyBpbmxpbmUgc3RydWN0IHBhZ2UgKnBhZ2VfcG9vbF9kZXZfYWxsb2NfcGFnZXMoc3RydWN0IHBhZ2VfcG9vbCAqcG9vbClcbiAgOTM6XHR7XG4gIDk0Olx0XHRnZnBfdCBnZnAgPSAoR0ZQX0FUT01JQyB8IF9fR0ZQX05PV0FSTik7XG4gIDk1Olx0XG4gIDk2Olx0XHRyZXR1cm4gcGFnZV9wb29sX2FsbG9jX3BhZ2VzKHBvb2wsIGdmcCk7XG4gIDk3Olx0fVxuICA5ODpcdFxuICA5OTpcdC8qKlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwNDoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzY3NgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipOYXZpZ2F0aW5nIHRoZSBQYWdlIFBvb2wgSGVhZGVyIExhYnlyaW50aCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLi4uIEkmIzM5O20gbG9va2luZyBhdCBgcGFnZV9wb29sX2FsbG9jX3BhZ2VzYCwgYW5kIEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSB3aGVyZSB0aGF0IHNwZWNpZmljIGZ1bmN0aW9uIGlzIGRlZmluZWQuIEl0JiMzOTtzIGEga2V5IHBpZWNlIGluIHRoZSBwYWdlIHBvb2wgYXJjaGl0ZWN0dXJlLCBzbyB1bmRlcnN0YW5kaW5nIGl0cyBzb3VyY2UgaXMgY3J1Y2lhbC4gTm93LCBpcyBpdCBuZXN0bGVkIGluIGBpbmNsdWRlL25ldC9wYWdlX3Bvb2wvaGVscGVycy5oYD8gVGhhdCYjMzk7cyB0aGUgbGlrZWx5IHNwb3QsIGdpdmVuIGl0cyBuYW1lIGFuZCB0eXBpY2FsIGZ1bmN0aW9uLiBPciwgY291bGQgaXQgYmUgYSBiaXQgbW9yZSBmdW5kYW1lbnRhbCwgZGVjbGFyZWQgaW4gYHR5cGVzLmhgPyBJdCB3b3VsZCBtYWtlIHNlbnNlIGlmIGl0IHdhcyBjb25zaWRlcmVkIGEgYmFzaWMgdHlwZSBvciBzdHJ1Y3R1cmUuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBrbm93IHNvIEkgY2FuIHVuZGVyc3RhbmQgYW55IHJlbGF0ZWQgdHlwZXMsIHN0cnVjdHVyZXMsIG9yIG1hY3Jvcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDQ6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGFnZV9wb29sX2FsbG9jX3BhZ2VzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvcGFnZV9wb29sLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL25ldC9wYWdlX3Bvb2wvaGVscGVycy5oLTIxLSAqXG5pbmNsdWRlL25ldC9wYWdlX3Bvb2wvaGVscGVycy5oOjIyOiAqIDEuIHBhZ2VfcG9vbF9hbGxvY19wYWdlcygpOiBhbGxvY2F0ZSBtZW1vcnkgd2l0aG91dCBwYWdlIHNwbGl0dGluZyB3aGVuXG5pbmNsdWRlL25ldC9wYWdlX3Bvb2wvaGVscGVycy5oLTIzLSAqIGRyaXZlciBrbm93cyB0aGF0IHRoZSBtZW1vcnkgaXQgbmVlZCBpcyBhbHdheXMgYmlnZ2VyIHRoYW4gaGFsZiBvZiB0aGUgcGFnZVxuLS1cbmluY2x1ZGUvbmV0L3BhZ2VfcG9vbC9oZWxwZXJzLmg9OTI9c3RhdGljIGlubGluZSBzdHJ1Y3QgcGFnZSAqcGFnZV9wb29sX2Rldl9hbGxvY19wYWdlcyhzdHJ1Y3QgcGFnZV9wb29sICpwb29sKVxuLS1cbmluY2x1ZGUvbmV0L3BhZ2VfcG9vbC9oZWxwZXJzLmgtOTUtXG5pbmNsdWRlL25ldC9wYWdlX3Bvb2wvaGVscGVycy5oOjk2Olx0cmV0dXJuIHBhZ2VfcG9vbF9hbGxvY19wYWdlcyhwb29sLCBnZnApO1xuaW5jbHVkZS9uZXQvcGFnZV9wb29sL2hlbHBlcnMuaC05Ny19XG4tLVxuaW5jbHVkZS9uZXQvcGFnZV9wb29sL3R5cGVzLmg9MTc2PXN0cnVjdCBwYWdlX3Bvb2wge1xuLS1cbmluY2x1ZGUvbmV0L3BhZ2VfcG9vbC90eXBlcy5oLTI2My1cbmluY2x1ZGUvbmV0L3BhZ2VfcG9vbC90eXBlcy5oOjI2NDpzdHJ1Y3QgcGFnZSAqcGFnZV9wb29sX2FsbG9jX3BhZ2VzKHN0cnVjdCBwYWdlX3Bvb2wgKnBvb2wsIGdmcF90IGdmcCk7XG5pbmNsdWRlL25ldC9wYWdlX3Bvb2wvdHlwZXMuaC0yNjUtbmV0bWVtX3JlZiBwYWdlX3Bvb2xfYWxsb2NfbmV0bWVtcyhzdHJ1Y3QgcGFnZV9wb29sICpwb29sLCBnZnBfdCBnZnApO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwNDoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDI0NwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDMwMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEZWJ1Z2dpbmcgYSBQb3RlbnRpYWwgQnVpbGQgSXNzdWUgd2l0aCBgUjgxNjlgIGFuZCBgUEFHRV9QT09MYCoqCgpPa2F5LCBzbyBJJiMzOTttIHN0YXJpbmcgYXQgdGhpcyBidWlsZCBjb25maWcgYW5kIHNvbWV0aGluZyBmZWVscyBvZmYuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGlmIGBDT05GSUdfUEFHRV9QT09MYCBpc24mIzM5O3QgZW5hYmxlZCwgdGhlbiBgcGFnZV9wb29sX2FsbG9jX3BhZ2VzYCB3b24mIzM5O3QgYmUgZGVmaW5lZC4gVGhhdCYjMzk7cyBiYXNpYyBkZXBlbmRlbmN5IG1hbmFnZW1lbnQsIHJpZ2h0PyBUaGVuIEkgaGF2ZSB0aGlzIG5hZ2dpbmcgdGhvdWdodCwgZGlkIGBQQUdFX1BPT0xgIGdldCBzZWxlY3RlZCBieSBgUjgxNjlgIHNvbWV3aGVyZSBlbHNlPyBQZXJoYXBzIGluIGEgZGlmZmVyZW50IHRyZWUgb3IgYSBkaWZmZXJlbnQgY29udGV4dD8KCkkgd2FzIHN1cmUgSSBjaGVja2VkIHRoaXMsIGJ1dCBqdXN0IHRvIGJlIGNlcnRhaW4sIEkgbmVlZCB0byB2ZXJpZnkgaWYgYFI4MTY5YCBkaXJlY3RseSBzZWxlY3RzIGBQQUdFX1BPT0xgIGluIHRoZSBjdXJyZW50IGtlcm5lbCB0cmVlLiBPaCwgd2FpdCwgSSBhbHJlYWR5IGRpZCBhIGBncmVwYCBmb3IgJiMzNDtzZWxlY3QgUEFHRV9QT09MJiMzNDsgaW4gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWdgIGZpbGUuIFRoZSByZXN1bHRzIG9ubHkgcG9pbnQgdG8gYFJUQVNFYCwgbm90IGBSODE2OWAuCgpGaW5lLCBJJiMzOTtsbCBkb3VibGUtY2hlY2sgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZ2AgYWdhaW4gaW4gdGhlIGN1cnJlbnQgdHJlZSwganVzdCB0byBtYWtlIGFic29sdXRlbHkgc3VyZS4gVGhlIHBhdGNoIG1pZ2h0IGhhdmUgZm9yZ290dGVuIHRvIHNlbGVjdCBpdCwgZXZlbiB0aG91Z2ggaXQmIzM5O3MgYWxyZWFkeSBhcHBsaWVkLiBCdXQgaGFuZyBvbi4uLiBpZiBgUEFHRV9QT09MYCBpc24mIzM5O3Qgc2VsZWN0ZWQsIHdvdWxkbiYjMzk7dCB0aGUgYnVpbGQgZmFpbCBvdXRyaWdodCBpZiBgUjgxNjlgIGlzIGVuYWJsZWQ/IFRoYXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBsaW5rLgoKU28sIGFtIEkgbWlzc2luZyBzb21ldGhpbmc/IFNob3VsZCBJIGJlIGFkZGluZyBgUEFHRV9QT09MYCB0byBgRW5hYmxlQ29uZmlnc2AgdG8gZml4IGl0PyBObywgbm8sIG5vLiBgUEFHRV9QT09MYCBpcyBhIGhpZGRlbiBjb25maWcsIHNvIHRoYXQgd29uJiMzOTt0IHdvcmsuCgpCdXQgdGhlbi4uLiBpZiBgUEFHRV9QT09MYCBpc24mIzM5O3QgKnNlbGVjdGVkKiBieSBgUjgxNjlgLCBob3cgaXMgdGhlIGNvZGUgZXZlbiBjb21waWxpbmcgaW4gdGhlIGZpcnN0IHBsYWNlPyBTb21ldGhpbmcgaXMgc2VsZWN0aW5nIGl0LCBvciB0aGUgZGVmYXVsdCBiZWhhdmlvciBpcyBlbmFibGluZyBpdCBzb21ld2hlcmUuIElzIGl0IGVuYWJsZWQgYnkgZGVmYXVsdCwgb3IgaXMgaXQgc2VsZWN0ZWQgYnkgYE5FVGA/IE9rYXksIEkmIzM5O20gZ29pbmcgdG8gcmV2aXNpdCBgbmV0L0tjb25maWdgIGFuZCByZWZyZXNoIG15IG1lbW9yeS4gVGhpcyBpcyBwcm9iYWJseSBhIGdvb2QgcGxhY2UgdG8gc3RhcnQsIGdpdmVuIGl0cyByZWxldmFuY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA0OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0ODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDQ4MDpcdFx0Ym9vbFxuIDQ4MTpcdFx0ZGVmYXVsdCBuXG4gNDgyOlx0XHRoZWxwXG4gNDgzOlx0XHQgIFRoZSBORVRfU09DS19NU0cgcHJvdmlkZXMgYSBmcmFtZXdvcmsgZm9yIHBsYWluIHNvY2tldHMgKGUuZy4gVENQKSBvclxuIDQ4NDpcdFx0ICBVTFBzICh1cHBlciBsYXllciBtb2R1bGVzLCBlLmcuIFRMUykgdG8gcHJvY2VzcyBMNyBhcHBsaWNhdGlvbiBkYXRhXG4gNDg1Olx0XHQgIHdpdGggdGhlIGhlbHAgb2YgQlBGIHByb2dyYW1zLlxuIDQ4NjpcdFxuIDQ4NzpcdGNvbmZpZyBORVRfREVWTElOS1xuIDQ4ODpcdFx0Ym9vbFxuIDQ4OTpcdFx0ZGVmYXVsdCBuXG4gNDkwOlx0XG4gNDkxOlx0Y29uZmlnIFBBR0VfUE9PTFxuIDQ5MjpcdFx0Ym9vbFxuIDQ5MzpcdFxuIDQ5NDpcdGNvbmZpZyBQQUdFX1BPT0xfU1RBVFNcbiA0OTU6XHRcdGRlZmF1bHQgblxuIDQ5NjpcdFx0Ym9vbCBcJiMzNDtQYWdlIHBvb2wgc3RhdHNcJiMzNDtcbiA0OTc6XHRcdGRlcGVuZHMgb24gUEFHRV9QT09MXG4gNDk4Olx0XHRoZWxwXG4gNDk5Olx0XHQgIEVuYWJsZSBwYWdlIHBvb2wgc3RhdGlzdGljcyB0byB0cmFjayBwYWdlIGFsbG9jYXRpb24gYW5kIHJlY3ljbGluZ1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwNDoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTI3OAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDE4OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIGEgUG90ZW50aWFsIEJ1aWxkIERlcGVuZGVuY3kqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgaGlkZGVuIGJvb2xlYW4gb3B0aW9uIOKAkyBpdCYjMzk7cyBzb21ldGhpbmcgdGhhdCAqbXVzdCogYmUgZXhwbGljaXRseSBzZWxlY3RlZC4gVGhlIHRyaWNreSBwYXJ0IGlzIGZpZ3VyaW5nIG91dCAqd2hlcmUqIGl0JiMzOTtzIGJlaW5nIHNlbGVjdGVkLiBJZiBgUjgxNjlgIGlzIHNvbWVob3cgcmVseWluZyBvbiBpdCBidXQgZG9lc24mIzM5O3Qgc2VsZWN0IGl0IGRpcmVjdGx5LCB0aGVuIHdlJiMzOTtyZSBnb2luZyB0byBnZXQgYSBidWlsZCBmYWlsdXJlIHVubGVzcyBzb21lIG90aGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGNvbWVzIGFsb25nIHRvIHNhdmUgdGhlIGRheS4KCk15IGluaXRpYWwgdGhvdWdodCB3YXMgdGhhdCB0aGlzIHBhdGNoICptaWdodCogaGF2ZSBzbnVjayBpbiBhIGBzZWxlY3QgUEFHRV9QT09MYCB0byBgUjgxNjlgIHdpdGhpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnYC4gQnV0LCB3YWl0LCBsZXQgbWUgcmUtZXhhbWluZSB0aGlzIHBhdGNoLiBIbW0sIHRoZSBkaWZmIEkgd2FzIGdpdmVuIGRvZXNuJiMzOTt0IHNob3cgYW55IG1vZGlmaWNhdGlvbnMgdG8gdGhlIGBLY29uZmlnYCBmaWxlcyBhdCBhbGwsIHNvIHRoYXQgaWRlYSYjMzk7cyBwcm9iYWJseSBvdXQuCgpBbHJpZ2h0LCBsZXQmIzM5O3MgdGFrZSBhIHF1aWNrIGxvb2sgYXQgdGhlIGN1cnJlbnQgdHJlZSBhbmQgZG91YmxlLWNoZWNrIHdoZXRoZXIgYFI4MTY5YCAqZG9lcyogc2VsZWN0IGBQQUdFX1BPT0xgIGFueXdoZXJlLiBBY3R1YWxseSwgSSBhbHJlYWR5IGdyZXBwZWQgZm9yIGBzZWxlY3QgUEFHRV9QT09MYCBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnYCBhbmQsIGFzIEkgcmVjYWxsLCBpdCBvbmx5IHNob3dlZCB1cCBpbiB0aGUgYFJUQVNFYCBjb25maWcuCgpIb2xkIG9uLCBkaWQgSSBtaXNzIHNvbWV0aGluZz8gTWF5YmUgSSBzaG91bGQgcmUtY2hlY2sgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZ2AgYWdhaW4sIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLiBJdCYjMzk7cyBlYXN5IHRvIG92ZXJsb29rIHRoaW5ncyB3aGVuIHlvdSYjMzk7cmUganVtcGluZyBiZXR3ZWVuIGZpbGVzIGFuZCBwYXRjaGVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwNDoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtQQUdFX1BPT0wmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnPTExMD1jb25maWcgUlRBU0Vcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWctMTEzLVx0c2VsZWN0IENSQzMyXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc6MTE0Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnLTExNS1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDQ6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU5MjIKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAxMDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGVidWdnaW5nIGEgQ29tcGlsZXIgRGVwZW5kZW5jeSoqCgpPa2F5LCBzbyBJJiMzOTttIHdyZXN0bGluZyB3aXRoIHRoaXMgYnVpbGQuIEkmIzM5O20gc2VlaW5nIGFuIGlzc3VlIHJlbGF0ZWQgdG8gYFBBR0VfUE9PTGAgYW5kIGl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgKm9ubHkqIGluIHRoZSBgUlRBU0VgIGNvbmZpZ3VyYXRpb24uIEhtbSwgdGhhdCYjMzk7cyBzdHJhbmdlLiBJZiBgUjgxNjlgIGlzbiYjMzk7dCBkaXJlY3RseSBjaG9vc2luZyBgUEFHRV9QT09MYCwgaG93IGlzIHRoaXMgdGhpbmcgZXZlbiBjb21waWxpbmcgYXQgYWxsIGluIG90aGVyIHNjZW5hcmlvcz8gSXQmIzM5O3MgY2xlYXJseSBhIGRlcGVuZGVuY3ksIHJpZ2h0PyBNYXliZSBzb21ldGhpbmcgbGlrZSBgTUFDQmAgb3IgYW5vdGhlciBtb2R1bGUgaXMgdGhlIG9uZSBkb2luZyB0aGUgc2VsZWN0aW9uLCBhbmQgaXQmIzM5O3MganVzdCBtaXNzaW5nIGluIHRoaXMgbGltaXRlZCBgUjgxNjlgIHRlc3QgY2FzZS4gQnV0IGlmIEkgb25seSBlbmFibGUgYFI4MTY5YCwgYXMgaW4gbXkgY3VycmVudCBidWlsZCwgaXQgc2hvdWxkICpkZWZpbml0ZWx5KiBmYWlsIGlmIHNvbWV0aGluZyBlbHNlIGlzIG1pc3NpbmcuIEFoIHdhaXQsIGhvbGQgb24uLi4gY291bGQgaXQgYmUgYFhEUF9TT0NLRVRTYD8gVGhhdCBjb3VsZCBiZSBpdC4gSXQgaXMgYXNzb2NpYXRlZCB3aXRoIGRhdGEgc3RydWN0dXJlcyB0aGF0IHJlcXVpcmUgbWVtb3J5IG1hbmFnZW1lbnQuIExldCYjMzk7cyBkaWcgZGVlcGVyLiBJIG5lZWQgdG8gZ2V0IHRvIHRoZSBib3R0b20gb2YgZXhhY3RseSAqd2hhdCogaXMgc2VsZWN0aW5nIGBQQUdFX1BPT0xgIGFuZCB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmN5IGNoYWluIHByb3Blcmx5LiBUaW1lIHRvIGNoZWNrIHRob3NlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgZmlndXJlIG91dCB0aGUgZXhhY3QgY2FsbCBjaGFpbiBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwNDoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NlbGVjdCBQQUdFX1BPT0wmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDQ6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTYzMDYKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqTmF2aWdhdGluZyB0aGUgS2NvbmZpZyBMYW5kc2NhcGUqKgoKQWxyaWdodCwgdGltZSB0byBjaGFzZSBkb3duIHRoaXMgY29uZmlndXJhdGlvbiBvcHRpb24uIEZpcnN0LCBsZXQmIzM5O3Mgc2VlLCB3aGVyZSB3b3VsZCB0aGF0IGJlIGRlZmluZWQgaW4gdGhlIGtlcm5lbCBzb3VyY2U/IE15IGluaXRpYWwgdGhvdWdodCBpcyBgbmV0L2NvcmUvS2NvbmZpZ2AsIGJ1dCB0aGF0IGZlZWxzIGEgYml0IHRvbyBzcGVjaWZpYy4gSXQmIzM5O3MgbW9yZSBsaWtlbHkgdG8gYmUgaW4gdGhlIGdlbmVyYWwgbmV0d29ya2luZyBjb25maWd1cmF0aW9uLCByaWdodD8gT2theSwgc28gbGV0JiMzOTtzIHRyeSBgbmV0L0tjb25maWdgIGluc3RlYWQuIFRoYXQmIzM5O3MgdGhlIG1vcmUgbG9naWNhbCBzdGFydGluZyBwb2ludCBmb3Igc29tZXRoaW5nIHRoYXQgYnJvYWRseSByZWxhdGVzIHRvIG5ldHdvcmsgZnVuY3Rpb25hbGl0eSwgcmF0aGVyIHRoYW4gYSB2ZXJ5IHNwZWNpYWxpemVkIGNvcmUgY29tcG9uZW50LiBUaGF0IHNob3VsZCBnaXZlIGEgbW9yZSBjb21wbGV0ZSBvdmVydmlldywgSSYjMzk7bGwgc3RhcnQgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA0OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NlbGVjdCBQQUdFX1BPT0wmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZz00MzU9Y29uZmlnIFZFVEhcbmRyaXZlcnMvbmV0L0tjb25maWctNDM2LVx0dHJpc3RhdGUgXCYjMzQ7VmlydHVhbCBldGhlcm5ldCBwYWlyIGRldmljZVwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzo0Mzc6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9LY29uZmlnLTQzOC1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTQ0Mz1jb25maWcgVklSVElPX05FVFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWctNDQ3LVx0c2VsZWN0IERJTUxJQlxuZHJpdmVycy9uZXQvS2NvbmZpZzo0NDg6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ0OS1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTU0ND1jb25maWcgWEVOX05FVERFVl9GUk9OVEVORFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWctNTQ3LVx0c2VsZWN0IFhFTl9YRU5CVVNfRlJPTlRFTkRcbmRyaXZlcnMvbmV0L0tjb25maWc6NTQ4Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvS2NvbmZpZy01NDktXHRkZWZhdWx0IHlcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTU4ND1jb25maWcgVk1YTkVUM1xuLS1cbmRyaXZlcnMvbmV0L0tjb25maWctNTg3LVx0ZGVwZW5kcyBvbiBQQUdFX1NJWkVfTEVTU19USEFOXzY0S0JcbmRyaXZlcnMvbmV0L0tjb25maWc6NTg4Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvS2NvbmZpZy01ODktXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz02MDQ9Y29uZmlnIE5FVERFVlNJTVxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWctNjEwLVx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9LY29uZmlnOjYxMTpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L0tjb25maWctNjEyLVx0c2VsZWN0IE5FVF9TSEFQRVJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvS2NvbmZpZz0xOD1jb25maWcgTkVUX0FJUk9IQVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9LY29uZmlnLTIxLVx0c2VsZWN0IE5FVF9BSVJPSEFfTlBVXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvS2NvbmZpZzoyMjpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9LY29uZmlnLTIzLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsaWJhYmEvS2NvbmZpZz0xOD1jb25maWcgQUxJQkFCQV9FRUFcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGliYWJhL0tjb25maWctMjEtXHRkZXBlbmRzIG9uIDY0QklUXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGliYWJhL0tjb25maWc6MjI6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGliYWJhL0tjb25maWctMjMtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZz03Mj1jb25maWcgQkNNR0VORVRcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTgwLVx0c2VsZWN0IERJTUxJQlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZzo4MTpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctODItXHRzZWxlY3QgQlJPQURDT01fUEhZIGlmIEFSQ0hfQkNNMjgzNVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc9MjA3PWNvbmZpZyBCTlhUXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yMTMtXHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc6MjE0Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yMTUtXHRzZWxlY3QgRElNTElCXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZz0yNTg9Y29uZmlnIEJOR0Vcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTI2MS1cdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZzoyNjI6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTI2My1cdHNlbGVjdCBBVVhJTElBUllfQlVTXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZz0yNjk9Y29uZmlnIEJDTUFTUFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjc1LVx0c2VsZWN0IE1ESU9fQkNNX1VOSU1BQ1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZzoyNzY6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTI3Ny1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaXNjby9lbmljL0tjb25maWc9Nj1jb25maWcgRU5JQ1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvS2NvbmZpZy04LVx0ZGVwZW5kcyBvbiBQQ0lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvS2NvbmZpZzo5Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9LY29uZmlnLTEwLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL0tjb25maWc9MTk9Y29uZmlnIFRTTkVQXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvS2NvbmZpZy0yMy1cdHNlbGVjdCBQSFlMSUJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL0tjb25maWc6MjQ6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci9LY29uZmlnLTI1LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnPTIzPWNvbmZpZyBGRUNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZy0zMS1cdHNlbGVjdCBGSVhFRF9QSFlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnOjMyOlx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWctMzMtXHRpbXBseSBQQUdFX1BPT0xfU1RBVFNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvS2NvbmZpZz0xOD1jb25maWcgR1ZFXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL0tjb25maWctMjEtXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvS2NvbmZpZzoyMjpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9LY29uZmlnLTIzLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnPTkxPWNvbmZpZyBITlMzXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWctOTQtXHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnOjk1Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWctOTYtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWc9MTQ3PWNvbmZpZyBISUJNQ0dFXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWctMTUzLVx0c2VsZWN0IFJFQUxURUtfUEhZXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZzoxNTQ6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZy0xNTUtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9LY29uZmlnPTY9Y29uZmlnIEhJTklDM1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvS2NvbmZpZy0xNC1cdHNlbGVjdCBESU1MSUJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvS2NvbmZpZzoxNTpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvS2NvbmZpZy0xNi1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgvS2NvbmZpZz00PWNvbmZpZyBMSUJFVEhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC9LY29uZmlnLTUtXHR0cmlzdGF0ZSBcJiMzNDtDb21tb24gRXRoZXJuZXQgbGlicmFyeSAobGliZXRoKVwmIzM0OyBpZiBDT01QSUxFX1RFU1RcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC9LY29uZmlnOjY6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgvS2NvbmZpZy03LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZz01OT1jb25maWcgTVZORVRBXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnLTYzLVx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZzo2NDpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZzo2NTpcdHNlbGVjdCBQQUdFX1BPT0xfU1RBVFNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZy02Ni1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWc9ODY9Y29uZmlnIE1WUFAyXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnLTkwLVx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZzo5MTpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZy05Mi1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnPTMxPWNvbmZpZyBPQ1RFT05UWDJfUEZcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTM0LVx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnOjM1Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy0zNi1cdHNlbGVjdCBDUllQVE9fTElCX0FFUyBpZiBNQUNTRUNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnPTE0PWNvbmZpZyBORVRfTUVESUFURUtfU09DXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZy0yMC1cdHNlbGVjdCBHRU5FUklDX0FMTE9DQVRPUlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZzoyMTpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWc6MjI6XHRzZWxlY3QgUEFHRV9QT09MX1NUQVRTXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnLTIzLVx0c2VsZWN0IFBDU19NVEtfTFlOWElcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L0tjb25maWc9Nj1jb25maWcgTUxYNF9FTlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvS2NvbmZpZy05LVx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9LY29uZmlnOjEwOlx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9LY29uZmlnLTExLVx0c2VsZWN0IE1MWDRfQ09SRVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnPTI5PWNvbmZpZyBNTFg1X0NPUkVfRU5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZy0zMS1cdGRlcGVuZHMgb24gTkVUREVWSUNFUyBcdTAwMjZcdTAwMjYgRVRIRVJORVQgXHUwMDI2XHUwMDI2IElORVQgXHUwMDI2XHUwMDI2IFBDSSBcdTAwMjZcdTAwMjYgTUxYNV9DT1JFXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZzozMjpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnOjMzOlx0c2VsZWN0IFBBR0VfUE9PTF9TVEFUU1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctMzQtXHRzZWxlY3QgRElNTElCXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZz0zMz1jb25maWcgTUxYU1dfUENJXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZy0zNS1cdGRlcGVuZHMgb24gUENJIFx1MDAyNlx1MDAyNiBIQVNfSU9NRU0gXHUwMDI2XHUwMDI2IE1MWFNXX0NPUkVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWc6MzY6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnLTM3LVx0ZGVmYXVsdCBtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnPTIwPWNvbmZpZyBGQk5JQ1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZy0yNy1cdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnOjI4Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnLTI5LVx0c2VsZWN0IFBDU19YUENTXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZz0xPWNvbmZpZyBMQU45NjZYX1NXSVRDSFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L0tjb25maWctOC1cdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnOjk6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnLTEwLVx0c2VsZWN0IFZDQVBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWc9Mjg9Y29uZmlnIExBTjk2OVhfU1dJVENIXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnLTMwLVx0ZGVwZW5kcyBvbiBTUEFSWDVfU1dJVENIXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWc6MzE6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWctMzItXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWc9MTg9Y29uZmlnIE1JQ1JPU09GVF9NQU5BXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWctMjQtXHRzZWxlY3QgRElNTElCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZzoyNTpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnLTI2LVx0c2VsZWN0IE5FVF9TSEFQRVJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9wZW5zYW5kby9LY29uZmlnPTIwPWNvbmZpZyBJT05JQ1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3BlbnNhbmRvL0tjb25maWctMjUtXHRzZWxlY3QgRElNTElCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9wZW5zYW5kby9LY29uZmlnOjI2Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcGVuc2FuZG8vS2NvbmZpZy0yNy1cdHNlbGVjdCBBVVhJTElBUllfQlVTXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnPTExMD1jb25maWcgUlRBU0Vcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWctMTEzLVx0c2VsZWN0IENSQzMyXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc6MTE0Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnLTExNS1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL0tjb25maWc9Mjk9Y29uZmlnIFJBVkJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL0tjb25maWctMzUtXHRzZWxlY3QgTURJT19CSVRCQU5HXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL0tjb25maWc6MzY6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL0tjb25maWctMzctXHRzZWxlY3QgUEhZTElCXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc29jaW9uZXh0L0tjb25maWc9MjU9Y29uZmlnIFNOSV9ORVRTRUNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvS2NvbmZpZy0yOC1cdHNlbGVjdCBQSFlMSUJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NvY2lvbmV4dC9LY29uZmlnOjI5Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc29jaW9uZXh0L0tjb25maWctMzAtXHRzZWxlY3QgTUlJXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0yPWNvbmZpZyBTVE1NQUNfRVRIXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy04LVx0c2VsZWN0IFBDU19YUENTXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjk6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEwLVx0c2VsZWN0IFBIWUxJTktcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvS2NvbmZpZz0yNj1jb25maWcgVEVIVVRJX1RONDBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvS2NvbmZpZy0yOC1cdGRlcGVuZHMgb24gUENJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvS2NvbmZpZzoyOTpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS9LY29uZmlnLTMwLVx0c2VsZWN0IEZXX0xPQURFUlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc9NTA9Y29uZmlnIFRJX0NQU1dcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTU1LVx0c2VsZWN0IE1GRF9TWVNDT05cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6NTY6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTU3LVx0c2VsZWN0IFJFR01BUFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc9NjU9Y29uZmlnIFRJX0NQU1dfU1dJVENIREVWXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy02OS1cdGRlcGVuZHMgb24gVElfQ1BUUyB8fCAhVElfQ1BUU1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzo3MDpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctNzEtXHRzZWxlY3QgVElfREFWSU5DSV9NRElPXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZz05Nj1jb25maWcgVElfSzNfQU02NV9DUFNXX05VU1Ncbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTEwMS1cdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjEwMjpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMTAzLVx0c2VsZWN0IFRJX0szX0NQUElfREVTQ19QT09MXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZz0yMDQ9Y29uZmlnIFRJX0lDU1NHX1BSVUVUSF9TUjFcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTIwOC1cdHNlbGVjdCBUSV9LM19DUFBJX0RFU0NfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzoyMDk6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTIxMC1cdGRlcGVuZHMgb24gUFJVX1JFTU9URVBST0Ncbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc9MTk9Y29uZmlnIExJQldYXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTIxLVx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnOjIyOlx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTIzLVx0c2VsZWN0IERJTUxJQlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZz0yPWNvbmZpZyBNVDc2X0NPUkVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0zLVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzo0Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTUtXG4tLVxua2VybmVsL2JwZi9LY29uZmlnPTI3PWNvbmZpZyBCUEZfU1lTQ0FMTFxuLS1cbmtlcm5lbC9icGYvS2NvbmZpZy0zNS1cdHNlbGVjdCBORVRfWEdSRVNTIGlmIE5FVFxua2VybmVsL2JwZi9LY29uZmlnOjM2Olx0c2VsZWN0IFBBR0VfUE9PTCBpZiBORVRcbmtlcm5lbC9icGYvS2NvbmZpZy0zNy1cdGRlZmF1bHQgblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwNDoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDczMgoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDUxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFI4MTY5IERyaXZlciBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgc2VlIHRoYXQgYGtlcm5lbC9icGYvS2NvbmZpZ2Agc2VlbXMgdG8gaW5kaXJlY3RseSBlbmFibGUgYFBBR0VfUE9PTGAgdGhyb3VnaCBgQlBGX1NZU0NBTExgIGlmIGBORVRgIGlzIGFsc28gZW5hYmxlZC4gR2l2ZW4gaG93IHViaXF1aXRvdXMgYEJQRl9TWVNDQUxMYCBpcywgcGFydGljdWxhcmx5IGluIHRoZSBzeXprYWxsZXIgY29uZmlndXJhdGlvbnMsIGBQQUdFX1BPT0xgIGlzIHByb2JhYmx5IGFsd2F5cyBlbmFibGVkIGFueXdheS4gU28sIHRoZSBgUjgxNjlgIGRyaXZlciBtaWdodCBub3QgKnN0cmljdGx5KiBuZWVkIHRvIHNlbGVjdCBgUEFHRV9QT09MYCBpdHNlbGYsIGFsdGhvdWdoIHRoZSBwYXRjaCBhdXRob3IgbWlnaHQgaGF2ZSBzaW1wbHkgb3Zlcmxvb2tlZCBpdCwgd2hpY2ggZG9lc24mIzM5O3Qgc2VlbSB0byBiZSBhIHByb2JsZW0gZ2l2ZW4gdGhhdCB0aGUgY29kZSBjb21waWxlcy4KClRoZSBrZXkgcXVlc3Rpb24gaXMsIHNob3VsZCB0aGlzIGJlIGZ1enplZD8gQWJzb2x1dGVseS4gSXTigJlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIHJlY2VpdmUgcGF0aCBvZiBhIG5ldHdvcmsgZHJpdmVyLCB3aGljaCBpcyBhIHByaW1lIHRhcmdldC4gQ2FuIHN5emthbGxlciByZWFjaCBpdD8gVGhlIFBDSSBmdXp6ZXIgc2hvdWxkIGJlIGFibGUgdG8gaW5zdGFudGlhdGUgdGhlIGRldmljZSwgbWFwIHRoZSBETUEsIGFuZCB0cmlnZ2VyIGludGVycnVwdHMsIHNvIHllcywgaXQmIzM5O3MgZGVmaW5pdGVseSB3aXRoaW4gcmVhY2guIEluIGZhY3QsIHN5emthbGxlcuKAmXMgUENJIGZ1enplciBpcyBhbHJlYWR5IGtub3duIHRvIGJlIGVmZmVjdGl2ZSBhdCBmdXp6aW5nIG5ldHdvcmsgZHJpdmVycy4gR29vZCwgdGhpcyBpcyBzb3VuZGluZyBwcm9taXNpbmcuCgpJcyBgUjgxNjlgIGEgZ29vZCBjYW5kaWRhdGU/IEl0JiMzOTtzIGEgd2lkZWx5IHVzZWQgZHJpdmVyLCBzbyB5ZXMsIGEgZ3JlYXQgdGFyZ2V0LiBUaGUgbWFpbiBjb25maWcgdG8gZm9jdXMgb24gaXMgYFI4MTY5YCBpdHNlbGYuIFdoYXQgc3BlY2lmaWMgZnVuY3Rpb25zIGFyZSBtb2RpZmllZD8gVGhlIHBhdGNoIHRvdWNoZXMgYHJ0bDgxNjlfYWxsb2NfcnhfZGF0YWAsIGBydGw4MTY5X3J4X2NsZWFyYCwgYHJ0bDgxNjlfaW5pdF9yaW5nYCwgYHJ0bDgxNjlfcnhfcmVmaWxsYCwgYHJ0bF9yeGAsIGFuZCBgcnRsX3Jlc2V0X3dvcmtgLgoKTm93LCBpcyBgcnRsX3J4YCBhIGhvdCBwYXRoPyBZZXMsIHRoYXTigJlzIHRoZSBOQVBJIHBvbGwgZnVuY3Rpb24sIG9yIGNhbGxlZCBieSBpdCwgc28gaXQmIzM5O3MgZnJlcXVlbnRseSBoaXQgZHVyaW5nIHBhY2tldCByZWNlcHRpb24uIFdhaXQsIHRoZSBwcm9tcHQgd2FudHMgdG8gYXZvaWQgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLiBJcyBgcnRsX3J4YCBhIGdlbmVyaWMgaG90IHBhdGg/IFdlbGwsIGl0JiMzOTtzIHRoZSBkcml2ZXImIzM5O3MgUlggcGF0aCwgc28gaXQmIzM5O3MgaG90IGR1cmluZyBwYWNrZXQgcmVjZXB0aW9uLiBIb3dldmVyLCBpZiB3ZSYjMzk7cmUgZm9jdXNlZCBvbiBmdXp6aW5nICp0aGVzZSBzcGVjaWZpYyBjaGFuZ2VzKiwgdGhlIGluaXRpYWxpemF0aW9uIGFuZCBlcnJvciBwYXRocyBhcmUgbW9yZSBpbnRlcmVzdGluZy4gU28sIEkgc2hvdWxkIGZvY3VzIG9uIGBydGw4MTY5X2luaXRfcmluZ2AsIGBydGw4MTY5X3J4X2NsZWFyYCwgYHJ0bDgxNjlfYWxsb2NfcnhfZGF0YWAsIGFuZCBgcnRsODE2OV9yeF9yZWZpbGxgLiBMZXQmIzM5O3Mgc3RhcnQgYnkgbG9va2luZyBjbG9zZXIgYXQgYHJ0bDgxNjlfaW5pdF9yaW5nYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDQ6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnRsODE2OV9pbml0X3JpbmcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz0yNjAxPXN0YXRpYyB2b2lkIHJ0bF9pbml0X3J4Y2ZnKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTI2MjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoyNjI5OnN0YXRpYyB2b2lkIHJ0bDgxNjlfaW5pdF9yaW5nX2luZGV4ZXMoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yNjMwLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz00MjA4PXN0YXRpYyBpbnQgcnRsODE2OV9yeF9maWxsKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTQyMjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo0MjI5OnN0YXRpYyBpbnQgcnRsODE2OV9pbml0X3Jpbmcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy00MjMwLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy00MjMzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NDIzNDpcdHJ0bDgxNjlfaW5pdF9yaW5nX2luZGV4ZXModHApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNDIzNS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz00MzIxPXN0YXRpYyB2b2lkIHJ0bDgxNjlfY2xlYW51cChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy00MzU0LVx0cnRsODE2OV90eF9jbGVhcih0cCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo0MzU1Olx0cnRsODE2OV9pbml0X3JpbmdfaW5kZXhlcyh0cCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy00MzU2LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz01MTkwPXN0YXRpYyBpbnQgcnRsX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01MjEyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTIxMzpcdHJldHZhbCA9IHJ0bDgxNjlfaW5pdF9yaW5nKHRwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTUyMTQtXHRpZiAocmV0dmFsIFx1MDAzYyAwKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwNDoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjU2NAoJCQkJCQkJb3V0cHV0OiAxNTMKCQkJCQkJCXRob3VnaHRzOiA4MzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIFI4MTY5IERyaXZlciBQYXRjaCBmb3IgRnV6emluZyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duIHN5c3RlbWF0aWNhbGx5LiBJIHNlZSB0aGF0IGBydGw4MTY5X2luaXRfcmluZ2AgaXMgY2FsbGVkIGVhcmx5LCBmcm9tIGBydGxfb3BlbmAsIHdoaWNoIG1ha2VzIHNlbnNlIGZvciBpbml0aWFsaXphdGlvbi4gYHJ0bDgxNjlfcnhfY2xlYXJgIGlzIHBhcnQgb2YgdGhlIGNsZWFudXAgcGF0aCwgY2FsbGVkIGZyb20gYHJ0bDgxNjlfY2xlYW51cGAgd2hpY2ggaXRzZWxmIGlzIGNhbGxlZCBkdXJpbmcgcmVzZXRzIGFuZCBzaHV0ZG93bnMuIFJlZmlsbGluZyB0aGUgcmVjZWl2ZSByaW5nIGhhcHBlbnMgaW4gYHJ0bDgxNjlfcnhfcmVmaWxsYCwgdHJpZ2dlcmVkIGZyb20gYHJ0bF9yeGAsIG91ciBjb3JlIFJYIGZ1bmN0aW9uLiBGaW5hbGx5LCBgcnRsODE2OV9hbGxvY19yeF9kYXRhYCBpcyB1c2VkIHRvIGFsbG9jYXRlIHRoZSBkYXRhIGJ1ZmZlcnMgYW5kIGlzIGNhbGxlZCBib3RoIGR1cmluZyB0aGUgcmVmaWxsIG9wZXJhdGlvbiBhbmQgZHVyaW5nIHJlc2V0cy4KCkkgbmVlZCB0byBmb2N1cyBvbiB0aGVzZSBrZXkgZnVuY3Rpb25zOiBgcnRsODE2OV9pbml0X3JpbmdgLCBgcnRsODE2OV9yeF9jbGVhcmAsIGBydGw4MTY5X3J4X3JlZmlsbGAsIGFuZCBgcnRsODE2OV9hbGxvY19yeF9kYXRhYC4gSSBpbml0aWFsbHkgY29uc2lkZXJlZCBvbWl0dGluZyBgcnRsX3J4YCBpdHNlbGYsIGJ1dCBpdOKAmXMgdGhlIGhlYXJ0IG9mIHBhY2tldCBwcm9jZXNzaW5nLiBJIHF1aWNrbHkgcmVhbGl6ZWQgdGhpcyBpcyBjcml0aWNhbCwgYXMgYHJ0bF9yeGAgaXMgY2FsbGVkIGJ5IHRoZSBOQVBJIHBvbGwgZnVuY3Rpb24sIGBydGw4MTY5X3BvbGxgLiBCZWNhdXNlIGBydGw4MTY5X3J4X3JlZmlsbGAgaXMgY2FsbGVkIGZyb20gYHJ0bF9yeGAsIGl0IG1ha2VzIHNlbnNlIHRvIGluY2x1ZGUgaXQgaW4gdGhlIGZ1enppbmcgc2NvcGUuIFNhbWUgZm9yIGBydGw4MTY5X2luaXRfcmluZ2AuCgpUaGUgY29uZmlndXJhdGlvbiBzZWVtcyBzdHJhaWdodGZvcndhcmQ6IGBSODE2OWAgaXMgdGhlIHJlbGV2YW50IGNvbmZpZyBmb3IgdGhpcyBkcml2ZXIuIEkmIzM5O20gd29uZGVyaW5nIGFib3V0IHRoZSBgUEFHRV9QT09MYCBjb25maWd1cmF0aW9uIOKAkyBJIGNhbiYjMzk7dCBkaXJlY3RseSBhZGQgaXQgc2luY2UgaXQmIzM5O3MgaGlkZGVuLCBidXQgcGVyaGFwcyBzeXprYWxsZXImIzM5O3MgY29uZmlnIGdlbmVyYXRpb24gd2lsbCBoYW5kbGUgaXQuIEl0JiMzOTtzIGxpa2VseSB0aGF0IGBSODE2OWAgYWxvbmUgaXMgc3VmZmljaWVudCwgZ2l2ZW4gdGhlIGRyaXZlciYjMzk7cyBzdGFuZGFyZCBjb25maWd1cmF0aW9uLiBJJiMzOTt2ZSBkb3VibGUtY2hlY2tlZCwgYW5kIHRoZXJlIGFyZSBubyBvdGhlciByZWxldmFudCBjb25maWdzIGJlc2lkZXMgYENPTkZJR19SODE2OWAuCgpMb29raW5nIGJhY2sgYXQgdGhlIHBhdGNoLCBpdCBzZWVtcyB0byBiZSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhZGRpbmcgYHBhZ2VfcG9vbGAgYW5kIGB4ZHBfcnhxX2luZm9gIHRvIGByODE2OWAgZm9yIFJYIGJ1ZmZlciBtYW5hZ2VtZW50LiBUaGlzIGlzIGEgc2lnbmlmaWNhbnQgY2hhbmdlIHRvIHRoZSBkcml2ZXImIzM5O3MgUlggcGF0aCwgd2hpY2ggbWVhbnMgaXTigJlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy4gU3l6a2FsbGVyJiMzOTtzIFBDSSBmdXp6aW5nIGNhcGFiaWxpdGllcyB3aWxsIGFsbG93IG1lIHRvIHRhcmdldCB0aGlzIGRyaXZlci4KCkkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IGFsbCB0aGUga2V5IGZ1bmN0aW9ucyBJJiMzOTttIGludGVyZXN0ZWQgaW4gKGBydGw4MTY5X2luaXRfcmluZ2AsIGBydGw4MTY5X3J4X2NsZWFyYCwgYHJ0bDgxNjlfcnhfcmVmaWxsYCwgYW5kIGBydGw4MTY5X2FsbG9jX3J4X2RhdGFgKSBhcmUgc3RhdGljLCBzbyBJIGNhbiBlbnN1cmUgdGhlIGZ1enplciBpcyBwcm9wZXJseSB0YXJnZXRpbmcgb25seSB0aGUgZnVuY3Rpb25zIHRoYXQgbmVlZCB0byBiZSB0ZXN0ZWQuCgpJIHNlZSB0aGF0IGBydGw4MTY5X21hcmtfdG9fYXNpY2AsIGBydGxfcmVzZXRfd29ya2AsIGBydGxfcnhgIGFyZSBhbHNvIG1vZGlmaWVkIGJ5IHRoZSBwYXRjaC4gSSYjMzk7bGwgbmVlZCB0byBrZWVwIHRoaXMgaW4gbWluZC4gSXQmIzM5O3MgaW1wb3J0YW50IHRvIG5vdGUgdGhlIGNvbnRleHQgb2YgYHJ0bDgxNjlfY2hhbmdlX210dWAsIHRob3VnaCB0aGVyZSBhcmVuJiMzOTt0IGFueSBjaGFuZ2VzIGRpcmVjdGx5IGluc2lkZSB0aGF0IGZ1bmN0aW9uLgoKQWxyaWdodCwgSSYjMzk7bSBjb25maWRlbnQgd2l0aCB0aGlzIGFzc2Vzc21lbnQuIExldCYjMzk7cyBwcm9jZWVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwNDoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UjgxNjkmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtydGw4MTY5X2luaXRfcmluZyYjMzQ7LAogICAgJiMzNDtydGw4MTY5X3J4X2NsZWFyJiMzNDssCiAgICAmIzM0O3J0bDgxNjlfcnhfcmVmaWxsJiMzNDssCiAgICAmIzM0O3J0bDgxNjlfYWxsb2NfcnhfZGF0YSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIHBhZ2VfcG9vbCBhbmQgeGRwX3J4cV9pbmZvIHRvIHRoZSByODE2OSBuZXR3b3JrIGRyaXZlciBmb3IgUlggYnVmZmVyIG1hbmFnZW1lbnQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgZHJpdmVyJiMzOTtzIFJYIHBhdGggYW5kIGluaXRpYWxpemF0aW9uL2NsZWFudXAgcm91dGluZXMuIFRoZSBQQ0kgZHJpdmVyIGNhbiBiZSBmdXp6ZWQgdmlhIHN5emthbGxlciYjMzk7cyBQQ0kgZnV6emluZyBjYXBhYmlsaXRpZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1I4MTY5JiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnRsODE2OV9pbml0X3JpbmcmIzM0OywKICAgICYjMzQ7cnRsODE2OV9yeF9jbGVhciYjMzQ7LAogICAgJiMzNDtydGw4MTY5X3J4X3JlZmlsbCYjMzQ7LAogICAgJiMzNDtydGw4MTY5X2FsbG9jX3J4X2RhdGEmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBwYWdlX3Bvb2wgYW5kIHhkcF9yeHFfaW5mbyB0byB0aGUgcjgxNjkgbmV0d29yayBkcml2ZXIgZm9yIFJYIGJ1ZmZlciBtYW5hZ2VtZW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGRyaXZlciYjMzk7cyBSWCBwYXRoIGFuZCBpbml0aWFsaXphdGlvbi9jbGVhbnVwIHJvdXRpbmVzLiBUaGUgUENJIGRyaXZlciBjYW4gYmUgZnV6emVkIHZpYSBzeXprYWxsZXImIzM5O3MgUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTNUMDQ6MTg6MzAuNzQzNTI5OTQzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTc2MTI5NDEzNTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUjgxNjlcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJydGw4MTY5X2luaXRfcmluZ1wiLFxuICAgIFwicnRsODE2OV9yeF9jbGVhclwiLFxuICAgIFwicnRsODE2OV9yeF9yZWZpbGxcIixcbiAgICBcInJ0bDgxNjlfYWxsb2NfcnhfZGF0YVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgcGFnZV9wb29sIGFuZCB4ZHBfcnhxX2luZm8gdG8gdGhlIHI4MTY5IG5ldHdvcmsgZHJpdmVyIGZvciBSWCBidWZmZXIgbWFuYWdlbWVudC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBkcml2ZXIncyBSWCBwYXRoIGFuZCBpbml0aWFsaXphdGlvbi9jbGVhbnVwIHJvdXRpbmVzLiBUaGUgUENJIGRyaXZlciBjYW4gYmUgZnV6emVkIHZpYSBzeXprYWxsZXIncyBQQ0kgZnV6emluZyBjYXBhYmlsaXRpZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA0OjE4OjMwLjc0MzUzNTY0M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTYxNTI5NjE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNzRmOTFlZGIxNWYxMDFkMGUwYWZkYzVkOTk1YTY4ZDZkMGJjNTMxZVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEp1bCAxMyAwNDoxODoyOSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jXFxuaW5kZXggZWM0ZmMyMWZhMjFmYjAuLmM1NDhlN2U4ZGI4NzRlIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmNcXG5AQCAtMzEsNyArMzEsOSBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvdW5hbGlnbmVkLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NuZXQvaXA2X2NoZWNrc3VtLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NuZXQvbmV0ZGV2X3F1ZXVlcy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbmV0L3BhZ2VfcG9vbC9oZWxwZXJzLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NuZXQvcGh5L3JlYWx0ZWtfcGh5LmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NuZXQveGRwLmhcXHUwMDNlXFxuIFxcbiAjaW5jbHVkZSBcXFwicjgxNjkuaFxcXCJcXG4gI2luY2x1ZGUgXFxcInI4MTY5X2Zpcm13YXJlLmhcXFwiXFxuQEAgLTcyOSw2ICs3MzEsMTAgQEAgZW51bSBydGxfZGFzaF90eXBlIHtcXG4gfTtcXG4gXFxuIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUge1xcbitcXHRzdHJ1Y3QgcGFnZV9wb29sICpyeF9wb29sO1xcbitcXHRzdHJ1Y3QgeGRwX3J4cV9pbmZvIHhkcF9yeHE7XFxuK1xcdHUzMiByeF9oZWFkcm9vbTtcXG4rXFx0dTMyIHJ4X2J1Zl9zejtcXG4gXFx0dm9pZCBfX2lvbWVtICptbWlvX2FkZHI7XFx0LyogbWVtb3J5IG1hcCBwaHlzaWNhbCBhZGRyZXNzICovXFxuIFxcdHN0cnVjdCBwY2lfZGV2ICpwY2lfZGV2O1xcbiBcXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2O1xcbkBAIC03MzksNiArNzQ1LDcgQEAgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSB7XFxuIFxcdHUzMiBjdXJfcng7IC8qIEluZGV4IGludG8gdGhlIFJ4IGRlc2NyaXB0b3IgYnVmZmVyIG9mIG5leHQgUnggcGt0LiAqL1xcbiBcXHR1MzIgY3VyX3R4OyAvKiBJbmRleCBpbnRvIHRoZSBUeCBkZXNjcmlwdG9yIGJ1ZmZlciBvZiBuZXh0IFJ4IHBrdC4gKi9cXG4gXFx0dTMyIGRpcnR5X3R4O1xcbitcXHR1MzIgZGlydHlfcng7XFxuIFxcdHN0cnVjdCBUeERlc2MgKlR4RGVzY0FycmF5O1xcdC8qIDI1Ni1hbGlnbmVkIFR4IGRlc2NyaXB0b3IgcmluZyAqL1xcbiBcXHRzdHJ1Y3QgUnhEZXNjICpSeERlc2NBcnJheTtcXHQvKiAyNTYtYWxpZ25lZCBSeCBkZXNjcmlwdG9yIHJpbmcgKi9cXG4gXFx0ZG1hX2FkZHJfdCBUeFBoeUFkZHI7XFxuQEAgLTI2MjIsNiArMjYyOSw3IEBAIHN0YXRpYyB2b2lkIHJ0bF9pbml0X3J4Y2ZnKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbiBzdGF0aWMgdm9pZCBydGw4MTY5X2luaXRfcmluZ19pbmRleGVzKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbiB7XFxuIFxcdHRwLVxcdTAwM2VkaXJ0eV90eCA9IHRwLVxcdTAwM2VjdXJfdHggPSB0cC1cXHUwMDNlY3VyX3J4ID0gMDtcXG4rXFx0dHAtXFx1MDAzZWRpcnR5X3J4ID0gMDtcXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQgcnRsX2p1bWJvX2NvbmZpZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG5AQCAtNDE0OCwzNyArNDE1NiwzMCBAQCBzdGF0aWMgaW50IHJ0bDgxNjlfY2hhbmdlX210dShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgbmV3X210dSlcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuLXN0YXRpYyB2b2lkIHJ0bDgxNjlfbWFya190b19hc2ljKHN0cnVjdCBSeERlc2MgKmRlc2MpXFxuK3N0YXRpYyB2b2lkIHJ0bDgxNjlfbWFya190b19hc2ljKHN0cnVjdCBSeERlc2MgKmRlc2MsIHUzMiByeF9idWZfc3opXFxuIHtcXG4gXFx0dTMyIGVvciA9IGxlMzJfdG9fY3B1KGRlc2MtXFx1MDAzZW9wdHMxKSBcXHUwMDI2IFJpbmdFbmQ7XFxuIFxcbiBcXHRkZXNjLVxcdTAwM2VvcHRzMiA9IDA7XFxuIFxcdC8qIEZvcmNlIG1lbW9yeSB3cml0ZXMgdG8gY29tcGxldGUgYmVmb3JlIHJlbGVhc2luZyBkZXNjcmlwdG9yICovXFxuIFxcdGRtYV93bWIoKTtcXG4tXFx0V1JJVEVfT05DRShkZXNjLVxcdTAwM2VvcHRzMSwgY3B1X3RvX2xlMzIoRGVzY093biB8IGVvciB8IFI4MTY5X1JYX0JVRl9TSVpFKSk7XFxuK1xcdFdSSVRFX09OQ0UoZGVzYy1cXHUwMDNlb3B0czEsIGNwdV90b19sZTMyKERlc2NPd24gfCBlb3IgfCByeF9idWZfc3opKTtcXG4gfVxcbiBcXG4gc3RhdGljIHN0cnVjdCBwYWdlICpydGw4MTY5X2FsbG9jX3J4X2RhdGEoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsXFxuIFxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IFJ4RGVzYyAqZGVzYylcXG4ge1xcbi1cXHRzdHJ1Y3QgZGV2aWNlICpkID0gdHBfdG9fZGV2KHRwKTtcXG4tXFx0aW50IG5vZGUgPSBkZXZfdG9fbm9kZShkKTtcXG4gXFx0ZG1hX2FkZHJfdCBtYXBwaW5nO1xcbiBcXHRzdHJ1Y3QgcGFnZSAqZGF0YTtcXG4gXFxuLVxcdGRhdGEgPSBhbGxvY19wYWdlc19ub2RlKG5vZGUsIEdGUF9LRVJORUwsIGdldF9vcmRlcihSODE2OV9SWF9CVUZfU0laRSkpO1xcbitcXHRkYXRhID0gcGFnZV9wb29sX2Rldl9hbGxvY19wYWdlcyh0cC1cXHUwMDNlcnhfcG9vbCk7XFxuIFxcdGlmICghZGF0YSlcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuIFxcbi1cXHRtYXBwaW5nID0gZG1hX21hcF9wYWdlKGQsIGRhdGEsIDAsIFI4MTY5X1JYX0JVRl9TSVpFLCBETUFfRlJPTV9ERVZJQ0UpO1xcbi1cXHRpZiAodW5saWtlbHkoZG1hX21hcHBpbmdfZXJyb3IoZCwgbWFwcGluZykpKSB7XFxuLVxcdFxcdG5ldGRldl9lcnIodHAtXFx1MDAzZWRldiwgXFxcIkZhaWxlZCB0byBtYXAgUlggRE1BIVxcXFxuXFxcIik7XFxuLVxcdFxcdF9fZnJlZV9wYWdlcyhkYXRhLCBnZXRfb3JkZXIoUjgxNjlfUlhfQlVGX1NJWkUpKTtcXG4tXFx0XFx0cmV0dXJuIE5VTEw7XFxuLVxcdH1cXG4rXFx0bWFwcGluZyA9IHBhZ2VfcG9vbF9nZXRfZG1hX2FkZHIoZGF0YSkgKyB0cC1cXHUwMDNlcnhfaGVhZHJvb207XFxuIFxcbiBcXHRkZXNjLVxcdTAwM2VhZGRyID0gY3B1X3RvX2xlNjQobWFwcGluZyk7XFxuLVxcdHJ0bDgxNjlfbWFya190b19hc2ljKGRlc2MpO1xcbitcXHRydGw4MTY5X21hcmtfdG9fYXNpYyhkZXNjLCB0cC1cXHUwMDNlcnhfYnVmX3N6KTtcXG4gXFxuIFxcdHJldHVybiBkYXRhO1xcbiB9XFxuQEAgLTQxODcsMTUgKzQxODgsMjEgQEAgc3RhdGljIHZvaWQgcnRsODE2OV9yeF9jbGVhcihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG4ge1xcbiBcXHRpbnQgaTtcXG4gXFxuLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBOVU1fUlhfREVTQyBcXHUwMDI2XFx1MDAyNiB0cC1cXHUwMDNlUnhfZGF0YWJ1ZmZbaV07IGkrKykge1xcbi1cXHRcXHRkbWFfdW5tYXBfcGFnZSh0cF90b19kZXYodHApLFxcbi1cXHRcXHRcXHQgICAgICAgbGU2NF90b19jcHUodHAtXFx1MDAzZVJ4RGVzY0FycmF5W2ldLmFkZHIpLFxcbi1cXHRcXHRcXHQgICAgICAgUjgxNjlfUlhfQlVGX1NJWkUsIERNQV9GUk9NX0RFVklDRSk7XFxuLVxcdFxcdF9fZnJlZV9wYWdlcyh0cC1cXHUwMDNlUnhfZGF0YWJ1ZmZbaV0sIGdldF9vcmRlcihSODE2OV9SWF9CVUZfU0laRSkpO1xcbitcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgTlVNX1JYX0RFU0M7IGkrKykge1xcbitcXHRcXHRpZiAoIXRwLVxcdTAwM2VSeF9kYXRhYnVmZltpXSlcXG4rXFx0XFx0XFx0Y29udGludWU7XFxuK1xcdFxcdHBhZ2VfcG9vbF9wdXRfZnVsbF9wYWdlKHRwLVxcdTAwM2VyeF9wb29sLCB0cC1cXHUwMDNlUnhfZGF0YWJ1ZmZbaV0sIGZhbHNlKTtcXG4gXFx0XFx0dHAtXFx1MDAzZVJ4X2RhdGFidWZmW2ldID0gTlVMTDtcXG4gXFx0XFx0dHAtXFx1MDAzZVJ4RGVzY0FycmF5W2ldLmFkZHIgPSAwO1xcbiBcXHRcXHR0cC1cXHUwMDNlUnhEZXNjQXJyYXlbaV0ub3B0czEgPSAwO1xcbiBcXHR9XFxuK1xcbitcXHRpZiAodHAtXFx1MDAzZXJ4X3Bvb2wpIHtcXG4rXFx0XFx0aWYgKHhkcF9yeHFfaW5mb19pc19yZWcoXFx1MDAyNnRwLVxcdTAwM2V4ZHBfcnhxKSlcXG4rXFx0XFx0XFx0eGRwX3J4cV9pbmZvX3VucmVnKFxcdTAwMjZ0cC1cXHUwMDNleGRwX3J4cSk7XFxuK1xcdFxcdHBhZ2VfcG9vbF9kZXN0cm95KHRwLVxcdTAwM2VyeF9wb29sKTtcXG4rXFx0XFx0dHAtXFx1MDAzZXJ4X3Bvb2wgPSBOVUxMO1xcbitcXHR9XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgcnRsODE2OV9yeF9maWxsKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbkBAIC00MjIxLDEyICs0MjI4LDU3IEBAIHN0YXRpYyBpbnQgcnRsODE2OV9yeF9maWxsKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbiBcXG4gc3RhdGljIGludCBydGw4MTY5X2luaXRfcmluZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG4ge1xcbitcXHRzdHJ1Y3QgcGFnZV9wb29sX3BhcmFtcyBwYXJhbXMgPSB7MH07XFxuK1xcdGludCBlcnI7XFxuK1xcbiBcXHRydGw4MTY5X2luaXRfcmluZ19pbmRleGVzKHRwKTtcXG4gXFxuK1xcdGlmICh0cC1cXHUwMDNlbWFjX3ZlcnNpb24gXFx1MDAzYz0gUlRMX0dJR0FfTUFDX1ZFUl8wNikge1xcbitcXHRcXHR0cC1cXHUwMDNlcnhfaGVhZHJvb20gPSAwO1xcbitcXHRcXHR0cC1cXHUwMDNlcnhfYnVmX3N6ID0gUjgxNjlfUlhfQlVGX1NJWkU7XFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdHRwLVxcdTAwM2VyeF9oZWFkcm9vbSA9IFhEUF9QQUNLRVRfSEVBRFJPT007XFxuK1xcdFxcdHRwLVxcdTAwM2VyeF9idWZfc3ogPSBTWl8xNksgLVxcbitcXHRcXHRcXHRcXHRcXHRcXHRTS0JfREFUQV9BTElHTihzaXplb2Yoc3RydWN0IHNrYl9zaGFyZWRfaW5mbykpIC1cXG4rXFx0XFx0XFx0XFx0XFx0XFx0WERQX1BBQ0tFVF9IRUFEUk9PTTtcXG4rXFx0fVxcbitcXG4rXFx0cGFyYW1zLm9yZGVyID0gZ2V0X29yZGVyKFI4MTY5X1JYX0JVRl9TSVpFKTtcXG4rXFx0cGFyYW1zLmZsYWdzID0gUFBfRkxBR19ETUFfTUFQIHwgUFBfRkxBR19ETUFfU1lOQ19ERVY7XFxuK1xcdHBhcmFtcy5wb29sX3NpemUgPSBOVU1fUlhfREVTQztcXG4rXFx0cGFyYW1zLm5pZCA9IGRldl90b19ub2RlKHRwX3RvX2Rldih0cCkpO1xcbitcXHRwYXJhbXMuZGV2ID0gdHBfdG9fZGV2KHRwKTtcXG4rXFx0cGFyYW1zLm5hcGkgPSBcXHUwMDI2dHAtXFx1MDAzZW5hcGk7XFxuK1xcdHBhcmFtcy5kbWFfZGlyID0gRE1BX0ZST01fREVWSUNFO1xcbitcXHRwYXJhbXMub2Zmc2V0ID0gdHAtXFx1MDAzZXJ4X2hlYWRyb29tO1xcbitcXHRwYXJhbXMubWF4X2xlbiA9IHRwLVxcdTAwM2VyeF9idWZfc3o7XFxuK1xcbitcXHR0cC1cXHUwMDNlcnhfcG9vbCA9IHBhZ2VfcG9vbF9jcmVhdGUoXFx1MDAyNnBhcmFtcyk7XFxuK1xcdGlmIChJU19FUlIodHAtXFx1MDAzZXJ4X3Bvb2wpKSB7XFxuK1xcdFxcdGVyciA9IFBUUl9FUlIodHAtXFx1MDAzZXJ4X3Bvb2wpO1xcbitcXHRcXHR0cC1cXHUwMDNlcnhfcG9vbCA9IE5VTEw7XFxuK1xcdFxcdHJldHVybiBlcnI7XFxuK1xcdH1cXG4rXFxuK1xcdGVyciA9IHhkcF9yeHFfaW5mb19yZWcoXFx1MDAyNnRwLVxcdTAwM2V4ZHBfcnhxLCB0cC1cXHUwMDNlZGV2LCAwLCB0cC1cXHUwMDNlbmFwaS5uYXBpX2lkKTtcXG4rXFx0aWYgKGVycilcXG4rXFx0XFx0Z290byBlcnJfZnJlZV9wb29sO1xcbitcXG4rXFx0ZXJyID0geGRwX3J4cV9pbmZvX3JlZ19tZW1fbW9kZWwoXFx1MDAyNnRwLVxcdTAwM2V4ZHBfcnhxLCBNRU1fVFlQRV9QQUdFX1BPT0wsIHRwLVxcdTAwM2VyeF9wb29sKTtcXG4rXFx0aWYgKGVycilcXG4rXFx0XFx0Z290byBlcnJfdW5yZWdfcnhxO1xcbitcXG4gXFx0bWVtc2V0KHRwLVxcdTAwM2V0eF9za2IsIDAsIHNpemVvZih0cC1cXHUwMDNldHhfc2tiKSk7XFxuIFxcdG1lbXNldCh0cC1cXHUwMDNlUnhfZGF0YWJ1ZmYsIDAsIHNpemVvZih0cC1cXHUwMDNlUnhfZGF0YWJ1ZmYpKTtcXG4gXFxuIFxcdHJldHVybiBydGw4MTY5X3J4X2ZpbGwodHApO1xcbitcXG4rZXJyX3VucmVnX3J4cTpcXG4rXFx0eGRwX3J4cV9pbmZvX3VucmVnKFxcdTAwMjZ0cC1cXHUwMDNleGRwX3J4cSk7XFxuK2Vycl9mcmVlX3Bvb2w6XFxuK1xcdHBhZ2VfcG9vbF9kZXN0cm95KHRwLVxcdTAwM2VyeF9wb29sKTtcXG4rXFx0dHAtXFx1MDAzZXJ4X3Bvb2wgPSBOVUxMO1xcbitcXHRyZXR1cm4gZXJyO1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCBydGw4MTY5X3VubWFwX3R4X3NrYihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgdW5zaWduZWQgaW50IGVudHJ5KVxcbkBAIC00MzExLDggKzQzNjMsMjAgQEAgc3RhdGljIHZvaWQgcnRsX3Jlc2V0X3dvcmsoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuIFxcbiBcXHRydGw4MTY5X2NsZWFudXAodHApO1xcbiBcXG4tXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIE5VTV9SWF9ERVNDOyBpKyspXFxuLVxcdFxcdHJ0bDgxNjlfbWFya190b19hc2ljKHRwLVxcdTAwM2VSeERlc2NBcnJheSArIGkpO1xcbitcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgTlVNX1JYX0RFU0M7IGkrKykge1xcbitcXHRcXHRpZiAodHAtXFx1MDAzZVJ4X2RhdGFidWZmW2ldKVxcbitcXHRcXHRcXHRjb250aW51ZTtcXG4rXFx0XFx0dHAtXFx1MDAzZVJ4X2RhdGFidWZmW2ldID1cXG4rXFx0XFx0XFx0cnRsODE2OV9hbGxvY19yeF9kYXRhKHRwLCB0cC1cXHUwMDNlUnhEZXNjQXJyYXkgKyBpKTtcXG4rXFx0XFx0aWYgKCF0cC1cXHUwMDNlUnhfZGF0YWJ1ZmZbaV0pXFxuK1xcdFxcdFxcdGJyZWFrO1xcbitcXHR9XFxuK1xcbitcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgTlVNX1JYX0RFU0M7IGkrKykge1xcbitcXHRcXHRpZiAoIXRwLVxcdTAwM2VSeF9kYXRhYnVmZltpXSlcXG4rXFx0XFx0XFx0Y29udGludWU7XFxuK1xcdFxcdHJ0bDgxNjlfbWFya190b19hc2ljKHRwLVxcdTAwM2VSeERlc2NBcnJheSArIGksIHRwLVxcdTAwM2VyeF9idWZfc3opO1xcbitcXHR9XFxuIFxcbiBcXHRuYXBpX2VuYWJsZShcXHUwMDI2dHAtXFx1MDAzZW5hcGkpO1xcbiBcXHRydGxfaHdfc3RhcnQodHApO1xcbkBAIC00NzY4LDE2ICs0ODMyLDM5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBydGw4MTY5X3J4X2NzdW0oc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyIG9wdHMxKVxcbiBcXHRcXHRza2JfY2hlY2tzdW1fbm9uZV9hc3NlcnQoc2tiKTtcXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgcnRsODE2OV9yeF9yZWZpbGwoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuK3tcXG4rXFx0d2hpbGUgKHRwLVxcdTAwM2VkaXJ0eV9yeCAhPSB0cC1cXHUwMDNlY3VyX3J4KSB7XFxuK1xcdFxcdHVuc2lnbmVkIGludCBlbnRyeSA9IHRwLVxcdTAwM2VkaXJ0eV9yeCAlIE5VTV9SWF9ERVNDO1xcbitcXHRcXHRzdHJ1Y3QgUnhEZXNjICpkZXNjID0gdHAtXFx1MDAzZVJ4RGVzY0FycmF5ICsgZW50cnk7XFxuK1xcbitcXHRcXHRpZiAoIXRwLVxcdTAwM2VSeF9kYXRhYnVmZltlbnRyeV0pIHtcXG4rXFx0XFx0XFx0c3RydWN0IHBhZ2UgKm5ld19wYWdlID0gcGFnZV9wb29sX2Rldl9hbGxvY19wYWdlcyh0cC1cXHUwMDNlcnhfcG9vbCk7XFxuK1xcbitcXHRcXHRcXHRpZiAodW5saWtlbHkoIW5ld19wYWdlKSlcXG4rXFx0XFx0XFx0XFx0YnJlYWs7XFxuK1xcbitcXHRcXHRcXHR0cC1cXHUwMDNlUnhfZGF0YWJ1ZmZbZW50cnldID0gbmV3X3BhZ2U7XFxuK1xcbitcXHRcXHRcXHRkZXNjLVxcdTAwM2VhZGRyID0gY3B1X3RvX2xlNjQocGFnZV9wb29sX2dldF9kbWFfYWRkcihuZXdfcGFnZSkgK1xcbitcXHRcXHRcXHRcXHR0cC1cXHUwMDNlcnhfaGVhZHJvb20pO1xcbitcXHRcXHR9XFxuK1xcdFxcdHJ0bDgxNjlfbWFya190b19hc2ljKGRlc2MsIHRwLVxcdTAwM2VyeF9idWZfc3opO1xcbitcXG4rXFx0XFx0dHAtXFx1MDAzZWRpcnR5X3J4Kys7XFxuK1xcdH1cXG4rfVxcbitcXG4gc3RhdGljIGludCBydGxfcngoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCBidWRnZXQpXFxuIHtcXG4gXFx0c3RydWN0IGRldmljZSAqZCA9IHRwX3RvX2Rldih0cCk7XFxuIFxcdGludCBjb3VudDtcXG4gXFxuLVxcdGZvciAoY291bnQgPSAwOyBjb3VudCBcXHUwMDNjIGJ1ZGdldDsgY291bnQrKywgdHAtXFx1MDAzZWN1cl9yeCsrKSB7XFxuK1xcdGZvciAoY291bnQgPSAwOyBjb3VudCBcXHUwMDNjIGJ1ZGdldDspIHtcXG4gXFx0XFx0dW5zaWduZWQgaW50IHBrdF9zaXplLCBlbnRyeSA9IHRwLVxcdTAwM2VjdXJfcnggJSBOVU1fUlhfREVTQztcXG4gXFx0XFx0c3RydWN0IFJ4RGVzYyAqZGVzYyA9IHRwLVxcdTAwM2VSeERlc2NBcnJheSArIGVudHJ5O1xcbiBcXHRcXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xcbi1cXHRcXHRjb25zdCB2b2lkICpyeF9idWY7XFxuK1xcdFxcdHZvaWQgKnJ4X2J1ZjtcXG4gXFx0XFx0ZG1hX2FkZHJfdCBhZGRyO1xcbiBcXHRcXHR1MzIgc3RhdHVzO1xcbiBcXG5AQCAtNDgyMCwyMSArNDkwNyw0MCBAQCBzdGF0aWMgaW50IHJ0bF9yeChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IGJ1ZGdldFxcbiBcXHRcXHRcXHRnb3RvIHJlbGVhc2VfZGVzY3JpcHRvcjtcXG4gXFx0XFx0fVxcbiBcXG4tXFx0XFx0c2tiID0gbmFwaV9hbGxvY19za2IoXFx1MDAyNnRwLVxcdTAwM2VuYXBpLCBwa3Rfc2l6ZSk7XFxuLVxcdFxcdGlmICh1bmxpa2VseSghc2tiKSkge1xcbi1cXHRcXHRcXHRkZXYtXFx1MDAzZXN0YXRzLnJ4X2Ryb3BwZWQrKztcXG4tXFx0XFx0XFx0Z290byByZWxlYXNlX2Rlc2NyaXB0b3I7XFxuLVxcdFxcdH1cXG4rXFx0XFx0aWYgKHVubGlrZWx5KCF0cC1cXHUwMDNlUnhfZGF0YWJ1ZmZbZW50cnldKSlcXG4rXFx0XFx0XFx0YnJlYWs7XFxuIFxcbiBcXHRcXHRhZGRyID0gbGU2NF90b19jcHUoZGVzYy1cXHUwMDNlYWRkcik7XFxuIFxcdFxcdHJ4X2J1ZiA9IHBhZ2VfYWRkcmVzcyh0cC1cXHUwMDNlUnhfZGF0YWJ1ZmZbZW50cnldKTtcXG4gXFxuIFxcdFxcdGRtYV9zeW5jX3NpbmdsZV9mb3JfY3B1KGQsIGFkZHIsIHBrdF9zaXplLCBETUFfRlJPTV9ERVZJQ0UpO1xcbi1cXHRcXHRwcmVmZXRjaChyeF9idWYpO1xcbi1cXHRcXHRza2JfY29weV90b19saW5lYXJfZGF0YShza2IsIHJ4X2J1ZiwgcGt0X3NpemUpO1xcbi1cXHRcXHRza2ItXFx1MDAzZXRhaWwgKz0gcGt0X3NpemU7XFxuLVxcdFxcdHNrYi1cXHUwMDNlbGVuID0gcGt0X3NpemU7XFxuLVxcdFxcdGRtYV9zeW5jX3NpbmdsZV9mb3JfZGV2aWNlKGQsIGFkZHIsIHBrdF9zaXplLCBETUFfRlJPTV9ERVZJQ0UpO1xcbitcXHRcXHRwcmVmZXRjaChyeF9idWYgKyB0cC1cXHUwMDNlcnhfaGVhZHJvb20pO1xcbitcXG4rXFx0XFx0aWYgKHVubGlrZWx5KHRwLVxcdTAwM2VyeF9oZWFkcm9vbSA9PSAwKSkge1xcbitcXHRcXHRcXHRza2IgPSBuYXBpX2FsbG9jX3NrYihcXHUwMDI2dHAtXFx1MDAzZW5hcGksIHBrdF9zaXplKTtcXG4rXFx0XFx0XFx0aWYgKGxpa2VseShza2IpKSB7XFxuK1xcdFxcdFxcdFxcdHNrYl9jb3B5X3RvX2xpbmVhcl9kYXRhKHNrYiwgcnhfYnVmLCBwa3Rfc2l6ZSk7XFxuK1xcdFxcdFxcdFxcdHNrYl9wdXQoc2tiLCBwa3Rfc2l6ZSk7XFxuK1xcdFxcdFxcdH1cXG4rXFx0XFx0XFx0ZG1hX3N5bmNfc2luZ2xlX2Zvcl9kZXZpY2UoZCwgYWRkciwgcGt0X3NpemUsIERNQV9GUk9NX0RFVklDRSk7XFxuK1xcdFxcdH0gZWxzZSB7XFxuK1xcdFxcdFxcdHNrYiA9IG5hcGlfYnVpbGRfc2tiKHJ4X2J1ZiwgdHAtXFx1MDAzZXJ4X2J1Zl9zeiArIHRwLVxcdTAwM2VyeF9oZWFkcm9vbVxcbitcXHRcXHRcXHRcXHQrIFNLQl9EQVRBX0FMSUdOKHNpemVvZihzdHJ1Y3Qgc2tiX3NoYXJlZF9pbmZvKSkpO1xcbitcXHRcXHRcXHRpZiAobGlrZWx5KHNrYikpIHtcXG4rXFx0XFx0XFx0XFx0c2tiX3Jlc2VydmUoc2tiLCB0cC1cXHUwMDNlcnhfaGVhZHJvb20pO1xcbitcXHRcXHRcXHRcXHRza2JfcHV0KHNrYiwgcGt0X3NpemUpO1xcbitcXHRcXHRcXHRcXHRza2JfbWFya19mb3JfcmVjeWNsZShza2IpO1xcbitcXG4rXFx0XFx0XFx0XFx0dHAtXFx1MDAzZVJ4X2RhdGFidWZmW2VudHJ5XSA9IE5VTEw7XFxuK1xcdFxcdFxcdH0gZWxzZSB7XFxuK1xcdFxcdFxcdFxcdGRtYV9zeW5jX3NpbmdsZV9mb3JfZGV2aWNlKGQsIGFkZHIsIHBrdF9zaXplLCBETUFfRlJPTV9ERVZJQ0UpO1xcbitcXHRcXHRcXHR9XFxuK1xcdFxcdH1cXG4rXFxuK1xcdFxcdGlmICh1bmxpa2VseSghc2tiKSkge1xcbitcXHRcXHRcXHRkZXYtXFx1MDAzZXN0YXRzLnJ4X2Ryb3BwZWQrKztcXG4rXFx0XFx0XFx0Z290byByZWxlYXNlX2Rlc2NyaXB0b3I7XFxuK1xcdFxcdH1cXG4gXFxuIFxcdFxcdHJ0bDgxNjlfcnhfY3N1bShza2IsIHN0YXR1cyk7XFxuIFxcdFxcdHNrYi1cXHUwMDNlcHJvdG9jb2wgPSBldGhfdHlwZV90cmFucyhza2IsIGRldik7XFxuQEAgLTQ4NDgsOSArNDk1NCwxMiBAQCBzdGF0aWMgaW50IHJ0bF9yeChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IGJ1ZGdldFxcbiBcXG4gXFx0XFx0ZGV2X3N3X25ldHN0YXRzX3J4X2FkZChkZXYsIHBrdF9zaXplKTtcXG4gcmVsZWFzZV9kZXNjcmlwdG9yOlxcbi1cXHRcXHRydGw4MTY5X21hcmtfdG9fYXNpYyhkZXNjKTtcXG4rXFx0XFx0dHAtXFx1MDAzZWN1cl9yeCsrO1xcbitcXHRcXHRjb3VudCsrO1xcbiBcXHR9XFxuIFxcbitcXHRydGw4MTY5X3J4X3JlZmlsbCh0cCk7XFxuK1xcbiBcXHRyZXR1cm4gY291bnQ7XFxuIH1cXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA0OjE4OjMxLjMwNTg5MDA2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5NzA1MDU3MTczOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJSODE2OVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0bDgxNjlfaW5pdF9yaW5nXCIsXG4gICAgXCJydGw4MTY5X3J4X2NsZWFyXCIsXG4gICAgXCJydGw4MTY5X3J4X3JlZmlsbFwiLFxuICAgIFwicnRsODE2OV9hbGxvY19yeF9kYXRhXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBwYWdlX3Bvb2wgYW5kIHhkcF9yeHFfaW5mbyB0byB0aGUgcjgxNjkgbmV0d29yayBkcml2ZXIgZm9yIFJYIGJ1ZmZlciBtYW5hZ2VtZW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGRyaXZlcidzIFJYIHBhdGggYW5kIGluaXRpYWxpemF0aW9uL2NsZWFudXAgcm91dGluZXMuIFRoZSBQQ0kgZHJpdmVyIGNhbiBiZSBmdXp6ZWQgdmlhIHN5emthbGxlcidzIFBDSSBmdXp6aW5nIGNhcGFiaWxpdGllcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3NGY5MWVkYjE1ZjEwMWQwZTBhZmRjNWQ5OTVhNjhkNmQwYmM1MzFlXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgMTMgMDQ6MTg6MjkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jXG5pbmRleCBlYzRmYzIxZmEyMWZiMC4uYzU0OGU3ZThkYjg3NGUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmNcbkBAIC0zMSw3ICszMSw5IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvdW5hbGlnbmVkLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvaXA2X2NoZWNrc3VtLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvbmV0ZGV2X3F1ZXVlcy5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbmV0L3BhZ2VfcG9vbC9oZWxwZXJzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvcGh5L3JlYWx0ZWtfcGh5LmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NuZXQveGRwLmhcdTAwM2VcbiBcbiAjaW5jbHVkZSBcInI4MTY5LmhcIlxuICNpbmNsdWRlIFwicjgxNjlfZmlybXdhcmUuaFwiXG5AQCAtNzI5LDYgKzczMSwxMCBAQCBlbnVtIHJ0bF9kYXNoX3R5cGUge1xuIH07XG4gXG4gc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSB7XG4rXHRzdHJ1Y3QgcGFnZV9wb29sICpyeF9wb29sO1xuK1x0c3RydWN0IHhkcF9yeHFfaW5mbyB4ZHBfcnhxO1xuK1x0dTMyIHJ4X2hlYWRyb29tO1xuK1x0dTMyIHJ4X2J1Zl9zejtcbiBcdHZvaWQgX19pb21lbSAqbW1pb19hZGRyO1x0LyogbWVtb3J5IG1hcCBwaHlzaWNhbCBhZGRyZXNzICovXG4gXHRzdHJ1Y3QgcGNpX2RldiAqcGNpX2RldjtcbiBcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXY7XG5AQCAtNzM5LDYgKzc0NSw3IEBAIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUge1xuIFx0dTMyIGN1cl9yeDsgLyogSW5kZXggaW50byB0aGUgUnggZGVzY3JpcHRvciBidWZmZXIgb2YgbmV4dCBSeCBwa3QuICovXG4gXHR1MzIgY3VyX3R4OyAvKiBJbmRleCBpbnRvIHRoZSBUeCBkZXNjcmlwdG9yIGJ1ZmZlciBvZiBuZXh0IFJ4IHBrdC4gKi9cbiBcdHUzMiBkaXJ0eV90eDtcbitcdHUzMiBkaXJ0eV9yeDtcbiBcdHN0cnVjdCBUeERlc2MgKlR4RGVzY0FycmF5O1x0LyogMjU2LWFsaWduZWQgVHggZGVzY3JpcHRvciByaW5nICovXG4gXHRzdHJ1Y3QgUnhEZXNjICpSeERlc2NBcnJheTtcdC8qIDI1Ni1hbGlnbmVkIFJ4IGRlc2NyaXB0b3IgcmluZyAqL1xuIFx0ZG1hX2FkZHJfdCBUeFBoeUFkZHI7XG5AQCAtMjYyMiw2ICsyNjI5LDcgQEAgc3RhdGljIHZvaWQgcnRsX2luaXRfcnhjZmcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4gc3RhdGljIHZvaWQgcnRsODE2OV9pbml0X3JpbmdfaW5kZXhlcyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiB7XG4gXHR0cC1cdTAwM2VkaXJ0eV90eCA9IHRwLVx1MDAzZWN1cl90eCA9IHRwLVx1MDAzZWN1cl9yeCA9IDA7XG4rXHR0cC1cdTAwM2VkaXJ0eV9yeCA9IDA7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIHJ0bF9qdW1ib19jb25maWcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG5AQCAtNDE0OCwzNyArNDE1NiwzMCBAQCBzdGF0aWMgaW50IHJ0bDgxNjlfY2hhbmdlX210dShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgbmV3X210dSlcbiBcdHJldHVybiAwO1xuIH1cbiBcbi1zdGF0aWMgdm9pZCBydGw4MTY5X21hcmtfdG9fYXNpYyhzdHJ1Y3QgUnhEZXNjICpkZXNjKVxuK3N0YXRpYyB2b2lkIHJ0bDgxNjlfbWFya190b19hc2ljKHN0cnVjdCBSeERlc2MgKmRlc2MsIHUzMiByeF9idWZfc3opXG4ge1xuIFx0dTMyIGVvciA9IGxlMzJfdG9fY3B1KGRlc2MtXHUwMDNlb3B0czEpIFx1MDAyNiBSaW5nRW5kO1xuIFxuIFx0ZGVzYy1cdTAwM2VvcHRzMiA9IDA7XG4gXHQvKiBGb3JjZSBtZW1vcnkgd3JpdGVzIHRvIGNvbXBsZXRlIGJlZm9yZSByZWxlYXNpbmcgZGVzY3JpcHRvciAqL1xuIFx0ZG1hX3dtYigpO1xuLVx0V1JJVEVfT05DRShkZXNjLVx1MDAzZW9wdHMxLCBjcHVfdG9fbGUzMihEZXNjT3duIHwgZW9yIHwgUjgxNjlfUlhfQlVGX1NJWkUpKTtcbitcdFdSSVRFX09OQ0UoZGVzYy1cdTAwM2VvcHRzMSwgY3B1X3RvX2xlMzIoRGVzY093biB8IGVvciB8IHJ4X2J1Zl9zeikpO1xuIH1cbiBcbiBzdGF0aWMgc3RydWN0IHBhZ2UgKnJ0bDgxNjlfYWxsb2NfcnhfZGF0YShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCxcbiBcdFx0XHRcdFx0ICBzdHJ1Y3QgUnhEZXNjICpkZXNjKVxuIHtcbi1cdHN0cnVjdCBkZXZpY2UgKmQgPSB0cF90b19kZXYodHApO1xuLVx0aW50IG5vZGUgPSBkZXZfdG9fbm9kZShkKTtcbiBcdGRtYV9hZGRyX3QgbWFwcGluZztcbiBcdHN0cnVjdCBwYWdlICpkYXRhO1xuIFxuLVx0ZGF0YSA9IGFsbG9jX3BhZ2VzX25vZGUobm9kZSwgR0ZQX0tFUk5FTCwgZ2V0X29yZGVyKFI4MTY5X1JYX0JVRl9TSVpFKSk7XG4rXHRkYXRhID0gcGFnZV9wb29sX2Rldl9hbGxvY19wYWdlcyh0cC1cdTAwM2VyeF9wb29sKTtcbiBcdGlmICghZGF0YSlcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXG4tXHRtYXBwaW5nID0gZG1hX21hcF9wYWdlKGQsIGRhdGEsIDAsIFI4MTY5X1JYX0JVRl9TSVpFLCBETUFfRlJPTV9ERVZJQ0UpO1xuLVx0aWYgKHVubGlrZWx5KGRtYV9tYXBwaW5nX2Vycm9yKGQsIG1hcHBpbmcpKSkge1xuLVx0XHRuZXRkZXZfZXJyKHRwLVx1MDAzZWRldiwgXCJGYWlsZWQgdG8gbWFwIFJYIERNQSFcXG5cIik7XG4tXHRcdF9fZnJlZV9wYWdlcyhkYXRhLCBnZXRfb3JkZXIoUjgxNjlfUlhfQlVGX1NJWkUpKTtcbi1cdFx0cmV0dXJuIE5VTEw7XG4tXHR9XG4rXHRtYXBwaW5nID0gcGFnZV9wb29sX2dldF9kbWFfYWRkcihkYXRhKSArIHRwLVx1MDAzZXJ4X2hlYWRyb29tO1xuIFxuIFx0ZGVzYy1cdTAwM2VhZGRyID0gY3B1X3RvX2xlNjQobWFwcGluZyk7XG4tXHRydGw4MTY5X21hcmtfdG9fYXNpYyhkZXNjKTtcbitcdHJ0bDgxNjlfbWFya190b19hc2ljKGRlc2MsIHRwLVx1MDAzZXJ4X2J1Zl9zeik7XG4gXG4gXHRyZXR1cm4gZGF0YTtcbiB9XG5AQCAtNDE4NywxNSArNDE4OCwyMSBAQCBzdGF0aWMgdm9pZCBydGw4MTY5X3J4X2NsZWFyKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIHtcbiBcdGludCBpO1xuIFxuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgTlVNX1JYX0RFU0MgXHUwMDI2XHUwMDI2IHRwLVx1MDAzZVJ4X2RhdGFidWZmW2ldOyBpKyspIHtcbi1cdFx0ZG1hX3VubWFwX3BhZ2UodHBfdG9fZGV2KHRwKSxcbi1cdFx0XHQgICAgICAgbGU2NF90b19jcHUodHAtXHUwMDNlUnhEZXNjQXJyYXlbaV0uYWRkciksXG4tXHRcdFx0ICAgICAgIFI4MTY5X1JYX0JVRl9TSVpFLCBETUFfRlJPTV9ERVZJQ0UpO1xuLVx0XHRfX2ZyZWVfcGFnZXModHAtXHUwMDNlUnhfZGF0YWJ1ZmZbaV0sIGdldF9vcmRlcihSODE2OV9SWF9CVUZfU0laRSkpO1xuK1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgTlVNX1JYX0RFU0M7IGkrKykge1xuK1x0XHRpZiAoIXRwLVx1MDAzZVJ4X2RhdGFidWZmW2ldKVxuK1x0XHRcdGNvbnRpbnVlO1xuK1x0XHRwYWdlX3Bvb2xfcHV0X2Z1bGxfcGFnZSh0cC1cdTAwM2VyeF9wb29sLCB0cC1cdTAwM2VSeF9kYXRhYnVmZltpXSwgZmFsc2UpO1xuIFx0XHR0cC1cdTAwM2VSeF9kYXRhYnVmZltpXSA9IE5VTEw7XG4gXHRcdHRwLVx1MDAzZVJ4RGVzY0FycmF5W2ldLmFkZHIgPSAwO1xuIFx0XHR0cC1cdTAwM2VSeERlc2NBcnJheVtpXS5vcHRzMSA9IDA7XG4gXHR9XG4rXG4rXHRpZiAodHAtXHUwMDNlcnhfcG9vbCkge1xuK1x0XHRpZiAoeGRwX3J4cV9pbmZvX2lzX3JlZyhcdTAwMjZ0cC1cdTAwM2V4ZHBfcnhxKSlcbitcdFx0XHR4ZHBfcnhxX2luZm9fdW5yZWcoXHUwMDI2dHAtXHUwMDNleGRwX3J4cSk7XG4rXHRcdHBhZ2VfcG9vbF9kZXN0cm95KHRwLVx1MDAzZXJ4X3Bvb2wpO1xuK1x0XHR0cC1cdTAwM2VyeF9wb29sID0gTlVMTDtcbitcdH1cbiB9XG4gXG4gc3RhdGljIGludCBydGw4MTY5X3J4X2ZpbGwoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG5AQCAtNDIyMSwxMiArNDIyOCw1NyBAQCBzdGF0aWMgaW50IHJ0bDgxNjlfcnhfZmlsbChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcbiBzdGF0aWMgaW50IHJ0bDgxNjlfaW5pdF9yaW5nKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIHtcbitcdHN0cnVjdCBwYWdlX3Bvb2xfcGFyYW1zIHBhcmFtcyA9IHswfTtcbitcdGludCBlcnI7XG4rXG4gXHRydGw4MTY5X2luaXRfcmluZ19pbmRleGVzKHRwKTtcbiBcbitcdGlmICh0cC1cdTAwM2VtYWNfdmVyc2lvbiBcdTAwM2M9IFJUTF9HSUdBX01BQ19WRVJfMDYpIHtcbitcdFx0dHAtXHUwMDNlcnhfaGVhZHJvb20gPSAwO1xuK1x0XHR0cC1cdTAwM2VyeF9idWZfc3ogPSBSODE2OV9SWF9CVUZfU0laRTtcbitcdH0gZWxzZSB7XG4rXHRcdHRwLVx1MDAzZXJ4X2hlYWRyb29tID0gWERQX1BBQ0tFVF9IRUFEUk9PTTtcbitcdFx0dHAtXHUwMDNlcnhfYnVmX3N6ID0gU1pfMTZLIC1cbitcdFx0XHRcdFx0XHRTS0JfREFUQV9BTElHTihzaXplb2Yoc3RydWN0IHNrYl9zaGFyZWRfaW5mbykpIC1cbitcdFx0XHRcdFx0XHRYRFBfUEFDS0VUX0hFQURST09NO1xuK1x0fVxuK1xuK1x0cGFyYW1zLm9yZGVyID0gZ2V0X29yZGVyKFI4MTY5X1JYX0JVRl9TSVpFKTtcbitcdHBhcmFtcy5mbGFncyA9IFBQX0ZMQUdfRE1BX01BUCB8IFBQX0ZMQUdfRE1BX1NZTkNfREVWO1xuK1x0cGFyYW1zLnBvb2xfc2l6ZSA9IE5VTV9SWF9ERVNDO1xuK1x0cGFyYW1zLm5pZCA9IGRldl90b19ub2RlKHRwX3RvX2Rldih0cCkpO1xuK1x0cGFyYW1zLmRldiA9IHRwX3RvX2Rldih0cCk7XG4rXHRwYXJhbXMubmFwaSA9IFx1MDAyNnRwLVx1MDAzZW5hcGk7XG4rXHRwYXJhbXMuZG1hX2RpciA9IERNQV9GUk9NX0RFVklDRTtcbitcdHBhcmFtcy5vZmZzZXQgPSB0cC1cdTAwM2VyeF9oZWFkcm9vbTtcbitcdHBhcmFtcy5tYXhfbGVuID0gdHAtXHUwMDNlcnhfYnVmX3N6O1xuK1xuK1x0dHAtXHUwMDNlcnhfcG9vbCA9IHBhZ2VfcG9vbF9jcmVhdGUoXHUwMDI2cGFyYW1zKTtcbitcdGlmIChJU19FUlIodHAtXHUwMDNlcnhfcG9vbCkpIHtcbitcdFx0ZXJyID0gUFRSX0VSUih0cC1cdTAwM2VyeF9wb29sKTtcbitcdFx0dHAtXHUwMDNlcnhfcG9vbCA9IE5VTEw7XG4rXHRcdHJldHVybiBlcnI7XG4rXHR9XG4rXG4rXHRlcnIgPSB4ZHBfcnhxX2luZm9fcmVnKFx1MDAyNnRwLVx1MDAzZXhkcF9yeHEsIHRwLVx1MDAzZWRldiwgMCwgdHAtXHUwMDNlbmFwaS5uYXBpX2lkKTtcbitcdGlmIChlcnIpXG4rXHRcdGdvdG8gZXJyX2ZyZWVfcG9vbDtcbitcbitcdGVyciA9IHhkcF9yeHFfaW5mb19yZWdfbWVtX21vZGVsKFx1MDAyNnRwLVx1MDAzZXhkcF9yeHEsIE1FTV9UWVBFX1BBR0VfUE9PTCwgdHAtXHUwMDNlcnhfcG9vbCk7XG4rXHRpZiAoZXJyKVxuK1x0XHRnb3RvIGVycl91bnJlZ19yeHE7XG4rXG4gXHRtZW1zZXQodHAtXHUwMDNldHhfc2tiLCAwLCBzaXplb2YodHAtXHUwMDNldHhfc2tiKSk7XG4gXHRtZW1zZXQodHAtXHUwMDNlUnhfZGF0YWJ1ZmYsIDAsIHNpemVvZih0cC1cdTAwM2VSeF9kYXRhYnVmZikpO1xuIFxuIFx0cmV0dXJuIHJ0bDgxNjlfcnhfZmlsbCh0cCk7XG4rXG4rZXJyX3VucmVnX3J4cTpcbitcdHhkcF9yeHFfaW5mb191bnJlZyhcdTAwMjZ0cC1cdTAwM2V4ZHBfcnhxKTtcbitlcnJfZnJlZV9wb29sOlxuK1x0cGFnZV9wb29sX2Rlc3Ryb3kodHAtXHUwMDNlcnhfcG9vbCk7XG4rXHR0cC1cdTAwM2VyeF9wb29sID0gTlVMTDtcbitcdHJldHVybiBlcnI7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIHJ0bDgxNjlfdW5tYXBfdHhfc2tiKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCB1bnNpZ25lZCBpbnQgZW50cnkpXG5AQCAtNDMxMSw4ICs0MzYzLDIwIEBAIHN0YXRpYyB2b2lkIHJ0bF9yZXNldF93b3JrKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIFxuIFx0cnRsODE2OV9jbGVhbnVwKHRwKTtcbiBcbi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIE5VTV9SWF9ERVNDOyBpKyspXG4tXHRcdHJ0bDgxNjlfbWFya190b19hc2ljKHRwLVx1MDAzZVJ4RGVzY0FycmF5ICsgaSk7XG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBOVU1fUlhfREVTQzsgaSsrKSB7XG4rXHRcdGlmICh0cC1cdTAwM2VSeF9kYXRhYnVmZltpXSlcbitcdFx0XHRjb250aW51ZTtcbitcdFx0dHAtXHUwMDNlUnhfZGF0YWJ1ZmZbaV0gPVxuK1x0XHRcdHJ0bDgxNjlfYWxsb2NfcnhfZGF0YSh0cCwgdHAtXHUwMDNlUnhEZXNjQXJyYXkgKyBpKTtcbitcdFx0aWYgKCF0cC1cdTAwM2VSeF9kYXRhYnVmZltpXSlcbitcdFx0XHRicmVhaztcbitcdH1cbitcbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIE5VTV9SWF9ERVNDOyBpKyspIHtcbitcdFx0aWYgKCF0cC1cdTAwM2VSeF9kYXRhYnVmZltpXSlcbitcdFx0XHRjb250aW51ZTtcbitcdFx0cnRsODE2OV9tYXJrX3RvX2FzaWModHAtXHUwMDNlUnhEZXNjQXJyYXkgKyBpLCB0cC1cdTAwM2VyeF9idWZfc3opO1xuK1x0fVxuIFxuIFx0bmFwaV9lbmFibGUoXHUwMDI2dHAtXHUwMDNlbmFwaSk7XG4gXHRydGxfaHdfc3RhcnQodHApO1xuQEAgLTQ3NjgsMTYgKzQ4MzIsMzkgQEAgc3RhdGljIGlubGluZSB2b2lkIHJ0bDgxNjlfcnhfY3N1bShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgb3B0czEpXG4gXHRcdHNrYl9jaGVja3N1bV9ub25lX2Fzc2VydChza2IpO1xuIH1cbiBcbitzdGF0aWMgdm9pZCBydGw4MTY5X3J4X3JlZmlsbChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbit7XG4rXHR3aGlsZSAodHAtXHUwMDNlZGlydHlfcnggIT0gdHAtXHUwMDNlY3VyX3J4KSB7XG4rXHRcdHVuc2lnbmVkIGludCBlbnRyeSA9IHRwLVx1MDAzZWRpcnR5X3J4ICUgTlVNX1JYX0RFU0M7XG4rXHRcdHN0cnVjdCBSeERlc2MgKmRlc2MgPSB0cC1cdTAwM2VSeERlc2NBcnJheSArIGVudHJ5O1xuK1xuK1x0XHRpZiAoIXRwLVx1MDAzZVJ4X2RhdGFidWZmW2VudHJ5XSkge1xuK1x0XHRcdHN0cnVjdCBwYWdlICpuZXdfcGFnZSA9IHBhZ2VfcG9vbF9kZXZfYWxsb2NfcGFnZXModHAtXHUwMDNlcnhfcG9vbCk7XG4rXG4rXHRcdFx0aWYgKHVubGlrZWx5KCFuZXdfcGFnZSkpXG4rXHRcdFx0XHRicmVhaztcbitcbitcdFx0XHR0cC1cdTAwM2VSeF9kYXRhYnVmZltlbnRyeV0gPSBuZXdfcGFnZTtcbitcbitcdFx0XHRkZXNjLVx1MDAzZWFkZHIgPSBjcHVfdG9fbGU2NChwYWdlX3Bvb2xfZ2V0X2RtYV9hZGRyKG5ld19wYWdlKSArXG4rXHRcdFx0XHR0cC1cdTAwM2VyeF9oZWFkcm9vbSk7XG4rXHRcdH1cbitcdFx0cnRsODE2OV9tYXJrX3RvX2FzaWMoZGVzYywgdHAtXHUwMDNlcnhfYnVmX3N6KTtcbitcbitcdFx0dHAtXHUwMDNlZGlydHlfcngrKztcbitcdH1cbit9XG4rXG4gc3RhdGljIGludCBydGxfcngoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCBidWRnZXQpXG4ge1xuIFx0c3RydWN0IGRldmljZSAqZCA9IHRwX3RvX2Rldih0cCk7XG4gXHRpbnQgY291bnQ7XG4gXG4tXHRmb3IgKGNvdW50ID0gMDsgY291bnQgXHUwMDNjIGJ1ZGdldDsgY291bnQrKywgdHAtXHUwMDNlY3VyX3J4KyspIHtcbitcdGZvciAoY291bnQgPSAwOyBjb3VudCBcdTAwM2MgYnVkZ2V0Oykge1xuIFx0XHR1bnNpZ25lZCBpbnQgcGt0X3NpemUsIGVudHJ5ID0gdHAtXHUwMDNlY3VyX3J4ICUgTlVNX1JYX0RFU0M7XG4gXHRcdHN0cnVjdCBSeERlc2MgKmRlc2MgPSB0cC1cdTAwM2VSeERlc2NBcnJheSArIGVudHJ5O1xuIFx0XHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuLVx0XHRjb25zdCB2b2lkICpyeF9idWY7XG4rXHRcdHZvaWQgKnJ4X2J1ZjtcbiBcdFx0ZG1hX2FkZHJfdCBhZGRyO1xuIFx0XHR1MzIgc3RhdHVzO1xuIFxuQEAgLTQ4MjAsMjEgKzQ5MDcsNDAgQEAgc3RhdGljIGludCBydGxfcngoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCBidWRnZXRcbiBcdFx0XHRnb3RvIHJlbGVhc2VfZGVzY3JpcHRvcjtcbiBcdFx0fVxuIFxuLVx0XHRza2IgPSBuYXBpX2FsbG9jX3NrYihcdTAwMjZ0cC1cdTAwM2VuYXBpLCBwa3Rfc2l6ZSk7XG4tXHRcdGlmICh1bmxpa2VseSghc2tiKSkge1xuLVx0XHRcdGRldi1cdTAwM2VzdGF0cy5yeF9kcm9wcGVkKys7XG4tXHRcdFx0Z290byByZWxlYXNlX2Rlc2NyaXB0b3I7XG4tXHRcdH1cbitcdFx0aWYgKHVubGlrZWx5KCF0cC1cdTAwM2VSeF9kYXRhYnVmZltlbnRyeV0pKVxuK1x0XHRcdGJyZWFrO1xuIFxuIFx0XHRhZGRyID0gbGU2NF90b19jcHUoZGVzYy1cdTAwM2VhZGRyKTtcbiBcdFx0cnhfYnVmID0gcGFnZV9hZGRyZXNzKHRwLVx1MDAzZVJ4X2RhdGFidWZmW2VudHJ5XSk7XG4gXG4gXHRcdGRtYV9zeW5jX3NpbmdsZV9mb3JfY3B1KGQsIGFkZHIsIHBrdF9zaXplLCBETUFfRlJPTV9ERVZJQ0UpO1xuLVx0XHRwcmVmZXRjaChyeF9idWYpO1xuLVx0XHRza2JfY29weV90b19saW5lYXJfZGF0YShza2IsIHJ4X2J1ZiwgcGt0X3NpemUpO1xuLVx0XHRza2ItXHUwMDNldGFpbCArPSBwa3Rfc2l6ZTtcbi1cdFx0c2tiLVx1MDAzZWxlbiA9IHBrdF9zaXplO1xuLVx0XHRkbWFfc3luY19zaW5nbGVfZm9yX2RldmljZShkLCBhZGRyLCBwa3Rfc2l6ZSwgRE1BX0ZST01fREVWSUNFKTtcbitcdFx0cHJlZmV0Y2gocnhfYnVmICsgdHAtXHUwMDNlcnhfaGVhZHJvb20pO1xuK1xuK1x0XHRpZiAodW5saWtlbHkodHAtXHUwMDNlcnhfaGVhZHJvb20gPT0gMCkpIHtcbitcdFx0XHRza2IgPSBuYXBpX2FsbG9jX3NrYihcdTAwMjZ0cC1cdTAwM2VuYXBpLCBwa3Rfc2l6ZSk7XG4rXHRcdFx0aWYgKGxpa2VseShza2IpKSB7XG4rXHRcdFx0XHRza2JfY29weV90b19saW5lYXJfZGF0YShza2IsIHJ4X2J1ZiwgcGt0X3NpemUpO1xuK1x0XHRcdFx0c2tiX3B1dChza2IsIHBrdF9zaXplKTtcbitcdFx0XHR9XG4rXHRcdFx0ZG1hX3N5bmNfc2luZ2xlX2Zvcl9kZXZpY2UoZCwgYWRkciwgcGt0X3NpemUsIERNQV9GUk9NX0RFVklDRSk7XG4rXHRcdH0gZWxzZSB7XG4rXHRcdFx0c2tiID0gbmFwaV9idWlsZF9za2IocnhfYnVmLCB0cC1cdTAwM2VyeF9idWZfc3ogKyB0cC1cdTAwM2VyeF9oZWFkcm9vbVxuK1x0XHRcdFx0KyBTS0JfREFUQV9BTElHTihzaXplb2Yoc3RydWN0IHNrYl9zaGFyZWRfaW5mbykpKTtcbitcdFx0XHRpZiAobGlrZWx5KHNrYikpIHtcbitcdFx0XHRcdHNrYl9yZXNlcnZlKHNrYiwgdHAtXHUwMDNlcnhfaGVhZHJvb20pO1xuK1x0XHRcdFx0c2tiX3B1dChza2IsIHBrdF9zaXplKTtcbitcdFx0XHRcdHNrYl9tYXJrX2Zvcl9yZWN5Y2xlKHNrYik7XG4rXG4rXHRcdFx0XHR0cC1cdTAwM2VSeF9kYXRhYnVmZltlbnRyeV0gPSBOVUxMO1xuK1x0XHRcdH0gZWxzZSB7XG4rXHRcdFx0XHRkbWFfc3luY19zaW5nbGVfZm9yX2RldmljZShkLCBhZGRyLCBwa3Rfc2l6ZSwgRE1BX0ZST01fREVWSUNFKTtcbitcdFx0XHR9XG4rXHRcdH1cbitcbitcdFx0aWYgKHVubGlrZWx5KCFza2IpKSB7XG4rXHRcdFx0ZGV2LVx1MDAzZXN0YXRzLnJ4X2Ryb3BwZWQrKztcbitcdFx0XHRnb3RvIHJlbGVhc2VfZGVzY3JpcHRvcjtcbitcdFx0fVxuIFxuIFx0XHRydGw4MTY5X3J4X2NzdW0oc2tiLCBzdGF0dXMpO1xuIFx0XHRza2ItXHUwMDNlcHJvdG9jb2wgPSBldGhfdHlwZV90cmFucyhza2IsIGRldik7XG5AQCAtNDg0OCw5ICs0OTU0LDEyIEBAIHN0YXRpYyBpbnQgcnRsX3J4KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgYnVkZ2V0XG4gXG4gXHRcdGRldl9zd19uZXRzdGF0c19yeF9hZGQoZGV2LCBwa3Rfc2l6ZSk7XG4gcmVsZWFzZV9kZXNjcmlwdG9yOlxuLVx0XHRydGw4MTY5X21hcmtfdG9fYXNpYyhkZXNjKTtcbitcdFx0dHAtXHUwMDNlY3VyX3J4Kys7XG4rXHRcdGNvdW50Kys7XG4gXHR9XG4gXG4rXHRydGw4MTY5X3J4X3JlZmlsbCh0cCk7XG4rXG4gXHRyZXR1cm4gY291bnQ7XG4gfVxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDQ6MTg6MzEuMzA1ODkxOVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyODIxNTkwMTk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJlYWNoaW5nIHRoZSBSZWFsdGVrIDgxNjkgRHJpdmVyJ3MgTmV3IFJYIFBhdGggaW4gYSBWaXJ0dWFsaXplZCBDb250ZXh0KipcblxuT2theSwgc28gd2UgaGF2ZSBhIHBhdGNoIHRoYXQncyBzaWduaWZpY2FudGx5IGFsdGVyaW5nIHRoZSBgcjgxNjlgIFJlYWx0ZWsgbmV0d29yayBkcml2ZXIsIHNwZWNpZmljYWxseSBkZWFsaW5nIHdpdGggUlggYnVmZmVyIG1hbmFnZW1lbnQuIFRoZXkncmUgdXNpbmcgYHBhZ2VfcG9vbGAgYW5kIGB4ZHBfcnhxX2luZm9gLCB3aGljaCBpcyBhIHByZXR0eSBtb2Rlcm4gYXBwcm9hY2guIFRoZSBjaGFuZ2VzIHRvdWNoIGNyaXRpY2FsIGZ1bmN0aW9uczogYHJ0bDgxNjlfYWxsb2NfcnhfZGF0YWAsIGBydGw4MTY5X3J4X2NsZWFyYCwgYHJ0bDgxNjlfaW5pdF9yaW5nYCwgYHJ0bF9yZXNldF93b3JrYCwgYHJ0bF9yeGAsIGFuZCB0aGV5J3ZlIGFkZGVkIGBydGw4MTY5X3J4X3JlZmlsbGAuIFRoaXMgaXMgYSBkZWVwIGRpdmUgaW50byBob3cgUlggd29ya3MuXG5cbk15IGltbWVkaWF0ZSBjb25jZXJuIGlzIHJlYWNoYWJpbGl0eS4gQ2FuIHdlIGFjdHVhbGx5IHRlc3QgdGhpcyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBUaGlzIGRyaXZlciBpcyBmb3IgYSBSZWFsdGVrIFJUTC04MTY5IEdpZ2FiaXQgRXRoZXJuZXQgY2FyZC4gUUVNVSwgYXMgZmFyIGFzIEkgcmVtZW1iZXIsIHVzdWFsbHkgZW11bGF0ZXMgdGhlIFJUTDgxMzksIGJ1dCBub3QgdGhlIDgxNjkgZGlyZWN0bHkuIEkgbmVlZCB0byBjb25maXJtIHRoaXMuLi4gV2FpdCwgY2hlY2tpbmcgUUVNVSdzIHN1cHBvcnRlZCBkZXZpY2VzLCBpdCBzZWVtcyBsaWtlIGBydGw4MTM5YCBpcyBhdmFpbGFibGUsIGJ1dCBub3QgYHI4MTY5YC4gIFRoZXkndmUgZ290IGBlMTAwMGAsIGBlMTAwMGVgLCBgdmlydGlvLW5ldC1wY2lgLCBldGMuIFRoYXQncyBub3QgZ29vZC4gSXQgYXBwZWFycyB0aGUgZGVmYXVsdCBzZXR1cCBtaWdodCBub3QgaW5jbHVkZSBhIGRpcmVjdCBlbXVsYXRpb24gb2YgdGhlIGByODE2OWAuXG5cbk5vdywgd2hhdCBhYm91dCBzeXprYWxsZXI/IFN5emthbGxlciBjYW4gZnV6eiBQQ0kgZHJpdmVycy4gQnV0IHRoaXMgaXMgdXN1YWxseSBmb3IgZW11bGF0ZWQgUENJIGRldmljZXMgb3IgaWYgYSBQQ0kgZnV6emluZyBmcmFtZXdvcmsgaXMgdXNlZC4gR2VuZXJhbGx5LCBuZXR3b3JrIGRyaXZlcnMgZm9yICpzcGVjaWZpYyogaGFyZHdhcmUgYXJlIGEgbm8tZ28gdW5sZXNzIHRoZSBoYXJkd2FyZSBpcyBlbXVsYXRlZC4gVGhlIHN5c3RlbSBoYXMgYHN5el9wY2lfZGV2aWNlYCBvciBzaW1pbGFyLCBidXQgZm9yIG5ldHdvcmsgZHJpdmVycyBpdCB3aWxsIGJlIGEgdmlydHVhbCBkZXZpY2UgbGlrZSBgdmV0aGAsIGB0dW5gLCBvciBhIFVTQiBkcml2ZXIgbGlrZSBgZHVtbXlfaGNkYC4gU3l6a2FsbGVyIGRvZXMgaGF2ZSBQQ0kgZnV6emluZywgbGlrZSBgc3l6X3BjaV9kZXZpY2VfYWRkYC4gSG93ZXZlciwgZG9lcyBpdCBjb3ZlciBgcjgxNjlgP1xuXG5Pa2F5LCB0aGUgcHJvbXB0IGlzIHRocm93aW5nIGEgd3JlbmNoIGluIHRoZSB3b3JrczogXCJDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cIiBUaGF0IGltcGxpZXMgcmVhY2hpbmcgYHI4MTY5YCBjb3VsZCBiZSBkaWZmaWN1bHQuIEkgbmVlZCB0byBkaWcgZGVlcGVyLiBJcyBgcjgxNjlgIHRydWx5IG9mZi1saW1pdHM/XG5cbkxldCdzIHNlZTogSXMgYHI4MTY5YCBhIFBDSSBkcml2ZXI/ICBZZXMsIGByODE2OV9tYWluLmNgIG1ha2VzIGl0IG9uZS4gVGhpcyBpcyBrZXkuIFN5emthbGxlcidzIFBDSSBmdXp6ZXIgY2FuIHByb2JlIGFueSBQQ0kgZHJpdmVyIGJ5IG1hdGNoaW5nIGl0cyB2ZW5kb3IvZGV2aWNlIElELiBJdCBjYW4gZnV6eiBQQ0kgZHJpdmVycyBpZiB0aGV5IGFyZSBQQ0kgZHJpdmVycywgbGlrZSBgcjgxNjlgLlxuXG5TbywgdGhlIG5leHQgcXVlc3Rpb24gaXM6IElzIGByODE2OWAgc3VwcG9ydGVkIGJ5IHRoZSBQQ0kgZnV6emVyLCBhbmQgaXMgaXQgZ2VuZXJhbGx5IGZ1enphYmxlPyBTeXprYWxsZXIncyBQQ0kgZnV6emVyIHNob3VsZCwgaW4gdGhlb3J5LCBiZSBhYmxlIHRvIGludGVyYWN0IHdpdGggYW55IFBDSSBkZXZpY2UuIFRoZSBwcm9tcHQgaXMgc2F5aW5nIHRoZSBzYW1lIHRoaW5nIGFnYWluISBcIkNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuLi5cIi4gQnV0IGlmIHRoaXMgaXMgYSBQQ0kgZHJpdmVyLCBgc3l6X3BjaV9kZXZpY2VfYWRkYCAqc2hvdWxkKiBiZSBhYmxlIHRvIGhlbHAsIGlmIGVuYWJsZWQuIFRoZSByZWFsIHF1ZXN0aW9uIGlzIHdoZXRoZXIgaXQgcmVhY2hlcyB0aGUgKlJYKiBwYXRoLCBzcGVjaWZpY2FsbHkgYHJ0bF9yeGAuXG5cblRoZSBSWCBwYXRoIG5lZWRzIERNQSBhbmQgaW50ZXJydXB0cy4gQ2FuIFN5emthbGxlcidzIFBDSSBmdXp6ZXIgZ2VuZXJhdGUgdGhvc2U/IEl0IHNob3VsZCBiZSBhYmxlIHRvIHRyaWdnZXIgaW50ZXJydXB0cyBhbmQgcHJvdmlkZSBETUEgZGF0YS4gVGhpcyBuZWVkcyBtb3JlIGludmVzdGlnYXRpb24sIGJ1dCBhdCBsZWFzdCBgcjgxNjlgICppcyogYSBQQ0kgZHJpdmVyLCBzbyB3ZSBoYXZlIGEgc3RhcnRpbmcgcG9pbnQuIFRoaXMgaXMgdGhlIGNyaXRpY2FsIG5leHQgc3RlcC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTcyOCwiT3V0cHV0VG9rZW5zIjo0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk2MiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA0OjE4OjQ0LjEyNzQ4NTE1OFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjM0NDMxODE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBjaV9kcml2ZXIuKnJ0bDgxNjlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9NTcxMT1zdGF0aWMgaW50IHJ0bF9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTU5MzQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTkzNTpzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgcnRsODE2OV9wY2lfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTU5MzYtXFx0Lm5hbWVcXHRcXHQ9IEtCVUlMRF9NT0ROQU1FLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTk0My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo1OTQ0Om1vZHVsZV9wY2lfZHJpdmVyKHJ0bDgxNjlfcGNpX2RyaXZlcik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA0OjE4OjQ1LjM2MTkyMzgyNloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3MTk1OTMyMDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgUjgxNjkgRHJpdmVyIHdpdGggU3l6a2FsbGVyOiBJbml0aWFsIEFzc2Vzc21lbnQqKlxuXG5Pa2F5LCBzbyB0aGlzIGlzIGEgUENJIGRyaXZlciwgc3BlY2lmaWNhbGx5IGByODE2OWAuIFRoZSBxdWVzdGlvbiBub3cgaXM6IGNhbiBTeXprYWxsZXIgZWZmZWN0aXZlbHkgZnV6eiB0aGUgcmVjZWl2ZSBwYXRoIChgUlhgKSBvZiB0aGlzIGRyaXZlcj8gSSBrbm93IGBzeXpfcGNpX2RldmljZV9hZGRgIGNhbiBpbnN0YW50aWF0ZSB0aGUgZGV2aWNlLCB3aGljaCBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIFRoZSByZWFsIGNoYWxsZW5nZSBpcyB0cmlnZ2VyaW5nIGBydGxfcnhgLiBTaW5jZSB0aGUgUENJIGZ1enplciBjYW4gc2ltdWxhdGUgRE1BIGFuZCBpbnRlcnJ1cHRzLCBpdCAqbWlnaHQqIGJlIHBvc3NpYmxlIHRvIGdldCBwYWNrZXRzIGZsb3dpbmcgYW5kIGhpdCB0aGF0IGNyaXRpY2FsIGZ1bmN0aW9uLiBJdCBzZWVtcyBwcm9taXNpbmcuXG5cblRoZSBuZXh0IHF1ZXN0aW9uIGlzLCBpcyBgcjgxNjlgIGV2ZW4gYSBnb29kIHRhcmdldD8gTGV0J3MgY2hlY2sgdGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb25zLiBBaCwgYENPTkZJR19SODE2OWAgc2VlbXMgb2J2aW91cy5cblxuSG9sZCBvbi4uLiB0aGlzIHBhdGNoIG1lbnRpb25zIGBwYWdlX3Bvb2xgIGFuZCBgeGRwX3J4cV9pbmZvYCwgc28gdGhpcyBjb3VsZCBiZSB0aGUgcmlnaHQgcGF0aC4gTGV0J3MgbWFrZSBzdXJlIGBDT05GSUdfUjgxNjlgIGlzIGVuYWJsZWQgYnkgZGVmYXVsdC4gT3IgZG8gSSBuZWVkIHRvIGV4cGxpY2l0bHkgZGVmaW5lIGl0LiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgZmlsZSBmb3IgdGhhdC4gSSBuZWVkIHRvIGxvb2sgaW50byBgZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnYCB0byBzZWUgdGhlIGRldGFpbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc4MTUsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDQ6MTg6NTAuMDgxNTE5Mzk5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyMDM3Nzk0MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUjgxNjlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZz03ND1jb25maWcgODEzOV9PTERfUlhfUkVTRVRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZy04My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc6ODQ6Y29uZmlnIFI4MTY5XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnLTg1LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDgxNjkvODE2OC84MTAxLzgxMjUgZXRoZXJuZXQgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZy0xMDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnOjEwMjpjb25maWcgUjgxNjlfTEVEU1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZy0xMDMtXFx0Ym9vbCBcXFwiU3VwcG9ydCBmb3IgY29udHJvbGxpbmcgdGhlIE5JQyBMRURzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwNDoxODo1MC40MDE5MDM4M1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI0Njk3NDQxMTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGlzIHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIG15IGV4cGVydGlzZTpcblxuKipDaGVja2luZyBgUEFHRV9QT09MYCB3aXRoIGBSODE2OWAqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgZmlyc3Qgc3RlcCBpbiBteSBhbmFseXNpcyBoZXJlIGlzIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSBgUjgxNjlgIGRyaXZlciBhY3R1YWxseSB1dGlsaXplcyB0aGUgYFBBR0VfUE9PTGAgbWVjaGFuaXNtLiBUaGlzIGlzIGEgcHJldHR5IGZ1bmRhbWVudGFsIHF1ZXN0aW9uLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGUgYFI4MTY5YCBkcml2ZXIgaGFzIGJlZW4gY29tcGlsZWQgd2l0aCBzdXBwb3J0IGZvciBgUEFHRV9QT09MYCBvciBpZiBpdCdzIHVzaW5nIGFsdGVybmF0aXZlIG1lbW9yeSBhbGxvY2F0aW9uIHN0cmF0ZWdpZXMuIFVuZGVyc3RhbmRpbmcgaG93IGl0IG1hbmFnZXMgaXRzIG1lbW9yeSBpcyBjcnVjaWFsIGZvciBkZWJ1Z2dpbmcsIHBlcmZvcm1hbmNlIGFuYWx5c2lzLCBhbmQgYW55IG9wdGltaXphdGlvbiBlZmZvcnRzIGRvd24gdGhlIGxpbmUuIEl0J3MgdGhlIGJhc2VsaW5lIGZvciBsb29raW5nIGF0IG90aGVyIGFyZWFzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NTAzLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDQ6MTg6NTIuODcxNjUwMDI1WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwNDM2NTg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlBBR0VfUE9PTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnPTExMD1jb25maWcgUlRBU0VcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZy0xMTMtXFx0c2VsZWN0IENSQzMyXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnOjExNDpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnLTExNS1cXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA0OjE4OjUyLjk0MjA5NTk3MVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNjM5NzYyMzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqSW52ZXN0aWdhdGluZyBSODE2OSBhbmQgUEFHRV9QT09MKipcblxuQWxyaWdodCwgaGFuZyBvbiBhIHNlY29uZC4gU29tZXRoaW5nIGRvZXNuJ3QgZmVlbCByaWdodC4gSSB3YXMgdW5kZXIgdGhlIGltcHJlc3Npb24gdGhhdCB0aGUgYFI4MTY5YCBkcml2ZXIgd2FzIGJ1aWx0IHdpdGggYFBBR0VfUE9PTGAgZW5hYmxlZCwgYnV0IGEgcXVpY2sgc2NhbiBvZiB0aGUgY29uZmlndXJhdGlvbiBzdWdnZXN0cyBvdGhlcndpc2UuIEkgbmVlZCB0byBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLiBUaW1lIHRvIGRpZyBpbnRvIHRoZSBgUjgxNjlgIGRyaXZlcidzIGRlcGVuZGVuY2llcyBhbmQgaG93IGBQQUdFX1BPT0xgIGZhY3RvcnMgaW50byBpdHMgYnVpbGQgcHJvY2Vzcy4gVGhlcmUncyBwcm9iYWJseSBhIGNvbmRpdGlvbmFsIGNvbXBpbGUgc29tZXdoZXJlIHRoYXQgSSdtIG92ZXJsb29raW5nIG9yIHBlcmhhcHMgYSBzdWJ0bGUgaW50ZXJhY3Rpb24gd2l0aCBhbm90aGVyIGNvbmZpZyBvcHRpb24uIExldCdzIHNlZSBpZiB3ZSBjYW4gdW5kZXJzdGFuZCB3aGVyZSB0aGlzIGNvbm5lY3Rpb24gaXMgYmVpbmcgZGVmaW5lZC4gVGhpcyBjb3VsZCBpbXBhY3QgcGVyZm9ybWFuY2UsIG9yIHN0YWJpbGl0eSFcblxuXG4iLCJJbnB1dFRva2VucyI6ODgwNywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA0OjE4OjU2LjAwNjA3NDY3MVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTg0NzYwNDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiUjgxNjlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZz03ND1jb25maWcgODEzOV9PTERfUlhfUkVTRVRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZy04My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc6ODQ6Y29uZmlnIFI4MTY5XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnLTg1LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDgxNjkvODE2OC84MTAxLzgxMjUgZXRoZXJuZXQgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZy0xMDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnOjEwMjpjb25maWcgUjgxNjlfTEVEU1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZy0xMDMtXFx0Ym9vbCBcXFwiU3VwcG9ydCBmb3IgY29udHJvbGxpbmcgdGhlIE5JQyBMRURzXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZzoxMDQ6XFx0ZGVwZW5kcyBvbiBSODE2OSBcXHUwMDI2XFx1MDAyNiBMRURTX1RSSUdHRVJfTkVUREVWXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnOjEwNTpcXHRkZXBlbmRzIG9uICEoUjgxNjk9eSBcXHUwMDI2XFx1MDAyNiBMRURTX0NMQVNTPW0pXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnLTEwNi1cXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA0OjE4OjU2LjA2NDU1NTcxOFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODk1OTA3NzEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGFzIGlmIHRoZXkncmUgbXkgb3duOlxuXG4qKkFuYWx5emluZyB0aGUgUjgxNjkgQ29uZmlndXJhdGlvbiBCbG9jayoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIE15IGluaXRpYWwgdGhvdWdodCBpcyBjbGVhcjogSSBuZWVkIHRvIGRlbHZlIGludG8gdGhlIGBSODE2OWAgY29uZmlndXJhdGlvbiBibG9jay4gVGhhdCdzIHdoZXJlIHRoZSBoZWFydCBvZiB0aGlzIG5ldHdvcmsgaW50ZXJmYWNlJ3Mgb3BlcmF0aW9uIGxpdmVzLCBhbmQgdW5kZXJzdGFuZGluZyBpdCBpcyBwYXJhbW91bnQuIEknbSBmb2N1c2luZyBteSBhdHRlbnRpb24gdGhlcmUsIGtub3dpbmcgdGhpcyBzcGVjaWZpYyBtb2R1bGUgaG9sZHMgdGhlIGtleSB0byB0aGUgY29uZmlndXJhdGlvbnMgYW5kIHBvdGVudGlhbCBpbnNpZ2h0cy4gVGhpcyBibG9jayBsaWtlbHkgY29udGFpbnMgdGhlIHNldHRpbmdzIHRoYXQgZGljdGF0ZSBpdHMgYmVoYXZpb3IsIGZyb20gZHJpdmVyIG9wdGlvbnMgdG8gaW50ZXJydXB0IGhhbmRsaW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgc3RydWN0dXJlIGFuZCBjb250ZW50IHRvIGdldCBhIGdyYXNwIG9mIGl0cyByb2xlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MzM1LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDQ6MTg6NTguOTYwNDY1MjQ4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5NTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA4NCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA4NDpcXHRjb25maWcgUjgxNjlcXG4gIDg1OlxcdFxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDgxNjkvODE2OC84MTAxLzgxMjUgZXRoZXJuZXQgc3VwcG9ydFxcXCJcXG4gIDg2OlxcdFxcdGRlcGVuZHMgb24gUENJXFxuICA4NzpcXHRcXHRzZWxlY3QgRldfTE9BREVSXFxuICA4ODpcXHRcXHRzZWxlY3QgQ1JDMzJcXG4gIDg5OlxcdFxcdHNlbGVjdCBQSFlMSUJcXG4gIDkwOlxcdFxcdHNlbGVjdCBSRUFMVEVLX1BIWVxcbiAgOTE6XFx0XFx0aGVscFxcbiAgOTI6XFx0XFx0ICBTYXkgWSBoZXJlIGlmIHlvdSBoYXZlIGEgUmVhbHRlayBFdGhlcm5ldCBhZGFwdGVyIGJlbG9uZ2luZyB0b1xcbiAgOTM6XFx0XFx0ICB0aGUgZm9sbG93aW5nIGZhbWlsaWVzOlxcbiAgOTQ6XFx0XFx0ICBSVEw4MTY5IEdpZ2FiaXQgRXRoZXJuZXRcXG4gIDk1OlxcdFxcdCAgUlRMODE2OCBHaWdhYml0IEV0aGVybmV0XFxuICA5NjpcXHRcXHQgIFJUTDgxMDEgRmFzdCBFdGhlcm5ldFxcbiAgOTc6XFx0XFx0ICBSVEw4MTI1IDIuNUdCaXQgRXRoZXJuZXRcXG4gIDk4OlxcdFxcbiAgOTk6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXFxuIDEwMDpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIHI4MTY5LiAgVGhpcyBpcyByZWNvbW1lbmRlZC5cXG4gMTAxOlxcdFxcbiAxMDI6XFx0Y29uZmlnIFI4MTY5X0xFRFNcXG4gMTAzOlxcdFxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIGNvbnRyb2xsaW5nIHRoZSBOSUMgTEVEc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDQ6MTg6NTguOTYwNTI3OTA4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyODA0OTYzNDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBhIFBvdGVudGlhbCBDb25maWd1cmF0aW9uIERlcGVuZGVuY3kqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgdHdvIG5ldyBpbmNsdWRlczogYFx1MDAzY25ldC9wYWdlX3Bvb2wvaGVscGVycy5oXHUwMDNlYCBhbmQgYFx1MDAzY25ldC94ZHAuaFx1MDAzZWAuIE15IGluaXRpYWwgY29uY2VybiBpcyB3aGV0aGVyIHRoZSBhZGRpdGlvbiBvZiB0aGUgcGFnZSBwb29sIGhlYWRlcnMgaW5kaWNhdGVzIGEgbmV3IGRlcGVuZGVuY3kgdGhhdCBtaWdodCBoYXZlIGJlZW4gbWlzc2VkIGluIHRoZSBjb25maWd1cmF0aW9uIGxvZ2ljLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byB0aGUgYFI4MTY5YCBkcml2ZXIuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBpc24ndCBhIHNpbGVudCBidWlsZCBicmVha2FnZSB3YWl0aW5nIHRvIGhhcHBlbi5cblxuTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGlmIGBQQUdFX1BPT0xgICppc24ndCogZXhwbGljaXRseSBzZWxlY3RlZCBieSB0aGUgYFI4MTY5YCBkcml2ZXIgY29uZmlndXJhdGlvbiwgdGhlbiB0aGUgYXV0aG9yIG1pZ2h0IGhhdmUgb3Zlcmxvb2tlZCBhIGNydWNpYWwgZGVwZW5kZW5jeS4gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIGBQQUdFX1BPT0xgIGlzIGVuYWJsZWQgZWxzZXdoZXJlIGluIHRoZSBrZXJuZWwgY29uZmlnLCBvciBpZiwgcGVyaGFwcywgaXQncyB1bmNvbmRpdGlvbmFsbHkgYXZhaWxhYmxlLlxuXG5HaXZlbiB0aGF0IGBQQUdFX1BPT0xgIGlzIGEgYm9vbGVhbiBjb25maWd1cmF0aW9uIG9wdGlvbiwgSSBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGVzIHRvIHNlZSBob3cgaXQncyBkZWZpbmVkIGFuZCB3aGVuIGl0IGdldHMgc2V0LiBNeSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSBlaXRoZXIgYG5ldC9LY29uZmlnYCBvciBgbmV0L2NvcmUvS2NvbmZpZ2AgdG8gcGlucG9pbnQgdGhlIHNvdXJjZSBvZiB0aGlzIGRlcGVuZGVuY3kgYW5kIGNvbmZpcm0gaXRzIHByb3BlciBoYW5kbGluZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBjb250cm9scyB0aGUgYWN0aXZhdGlvbiBvZiBgUEFHRV9QT09MYCB0byBhc3Nlc3MgdGhlIHBhdGNoJ3MgY29ycmVjdG5lc3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk4NDEsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwNDoxOTowMy4yNDEwMjYxMjdaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4MzUxNTI4NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUEFHRV9QT09MXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L0tjb25maWc9NDg3PWNvbmZpZyBORVRfREVWTElOS1xcbi0tXFxubmV0L0tjb25maWctNDkwLVxcbm5ldC9LY29uZmlnOjQ5MTpjb25maWcgUEFHRV9QT09MXFxubmV0L0tjb25maWctNDkyLVxcdGJvb2xcXG5uZXQvS2NvbmZpZy00OTMtXFxubmV0L0tjb25maWc6NDk0OmNvbmZpZyBQQUdFX1BPT0xfU1RBVFNcXG5uZXQvS2NvbmZpZy00OTUtXFx0ZGVmYXVsdCBuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA0OjE5OjAzLjYyNDU0NjEwNFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDczOTYyNDcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgdGhlIFBBR0VfUE9PTCBNeXN0ZXJ5KipcblxuT2theSwgc28gYFBBR0VfUE9PTGAuLi4gaXQncyBhIGhpZGRlbiBib29sZWFuLCB0aGF0IG11Y2ggSSBnZXQuIFRoZSBkcml2ZXJzIHRoYXQgKm5lZWQqIGl0IGFyZSBzdXBwb3NlZCB0byBleHBsaWNpdGx5IGVuYWJsZSBpdC4gVGhlIGltbWVkaWF0ZSBjb25jZXJuIGlzIHRoYXQgaWYgdGhlIGBSODE2OWAgZHJpdmVyLCB3aGljaCBpcyB0aGUgZm9jdXMgaGVyZSwgZG9lc24ndCBzZWxlY3QgaXQsIHdpbGwgdGhlIGRhbW4gdGhpbmcgZXZlbiBjb21waWxlPyBUaGF0J3MgdGhlIHF1ZXN0aW9uLlxuXG5GaXJzdCBpbnN0aW5jdCBpcyB0byBzZWUgaWYgdGhlIHBhdGNoIGl0c2VsZiBtYWRlIGFueSBtb2RpZmljYXRpb25zIHRvIHRoZSBgS2NvbmZpZ2AgZmlsZXMg4oCTIGlmIGl0IHN1ZGRlbmx5IHN0YXJ0ZWQgc2VsZWN0aW5nIG9yIGRlc2VsZWN0aW5nIHRoaXMgb3B0aW9uLiBOb3BlLCB0aGUgZGlmZiBkb2Vzbid0IHNob3cgYW55IGBLY29uZmlnYCBjaGFuZ2VzLiBTbyB0aGF0IGF2ZW51ZSBpcyBjbG9zZWQgb2ZmLlxuXG5BbHJpZ2h0LCBpZiBgUjgxNjlgIGlzbid0IHNldHRpbmcgaXQsICpzb21ldGhpbmcqIGVsc2UgbXVzdCBiZS4gTWF5YmUgYFhEUGAgaXMgaW52b2x2ZWQsIG9yIGFub3RoZXIgY29tcG9uZW50IHVzaW5nIHRoZSBwYWdlIHBvb2wgaW5mcmFzdHJ1Y3R1cmU/IEkgbmVlZCB0byBrbm93IHdoZXJlIGl0J3MgYmVpbmcgc2V0IGluIHRoZSBjdXJyZW50IGtlcm5lbCB0cmVlLiBMZXQncyBkaWcgaW50byB0aGUgY29kZSBhbmQgc2VlIGlmIGBSODE2OWAgaXRzZWxmIGlzIHNlbGVjdGluZyBgUEFHRV9QT09MYCBhbnl3aGVyZS4gVGhhdCB3aWxsIHRlbGwgbWUgYSBsb3QgYWJvdXQgdGhlIGRlcGVuZGVuY2llcyBhbmQgaWYgdGhpcyBwYXRjaCBicmVha3Mgc29tZSBpbXBsaWNpdCBhc3N1bXB0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAzNDMsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDQ6MTk6MDcuNjk4NTExMTE1WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NDE1Njc5NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWxlY3QgUEFHRV9QT09MXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc9MTEwPWNvbmZpZyBSVEFTRVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnLTExMy1cXHRzZWxlY3QgQ1JDMzJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc6MTE0OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWctMTE1LVxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDQ6MTk6MDcuNzcyNjczODgxWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0MTY3NDgyNjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCBtZSB0aGluayB0aGlzIHRocm91Z2guXG5cbioqSW52ZXN0aWdhdGluZyBgUEFHRV9QT09MYCBhbmQgYFI4MTY5YCoqXG5cbkhtbSwgc28gYFI4MTY5YCBpc24ndCBkaXJlY3RseSBzZWxlY3RpbmcgYFBBR0VfUE9PTGAuIFRoYXQncyB0aGUgaW5pdGlhbCB0aG91Z2h0LiBJIHdhcyB3b25kZXJpbmcgaWYgbWF5YmUgdGhlIGF2YWlsYWJpbGl0eSBvZiBgUEFHRV9QT09MYCB3YXMgc29tZWhvdyBpbXBsaWNpdCwgbGlua2VkIHRvIGBORVRgIGJlaW5nIGVuYWJsZWQsIGJ1dCB0aGF0IGRvZXNuJ3Qgc2VlbSByaWdodC4gV2FpdCwgdGhhdCdzIG5vdCBxdWl0ZSByaWdodC4gSXQgbG9va3MgbGlrZSBpdCdzIGEgaGlkZGVuIGJvb2xlYW4uXG5cblRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byB2ZXJpZnkgd2hldGhlciBgUjgxNjlgICpkb2VzKiBzZWxlY3QgYFBBR0VfUE9PTGAsIHBlcmhhcHMgaW5kaXJlY3RseSwgd2l0aGluIHRoZSBjdXJyZW50IGtlcm5lbCBzb3VyY2UgdHJlZS4gTGV0J3MgZGlnIGludG8gdGhlIGNvZGUgYW5kIHNlZSB3aGF0IHRoZSByZWxhdGlvbnNoaXBzIGFjdHVhbGx5IGFyZS4gVGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwODM2LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDQ6MTk6MTQuMTg5NDI0NzE1WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY5MzUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA4MCxcbiAgXCJMaW5lQ291bnRcIjogMjVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA4MDpcXHRcXHQgIFJYLXJlc2V0IG1ldGhvZCBzaG91bGQgYmUgYWRlcXVhdGUgZm9yIGFsbCBib2FyZHMuICBCdXQgaWYgeW91XFxuICA4MTpcXHRcXHQgIGV4cGVyaWVuY2UgcHJvYmxlbXMsIHlvdSBjYW4gZW5hYmxlIHRoaXMgb3B0aW9uIHRvIHJlc3RvcmUgdGhlXFxuICA4MjpcXHRcXHQgIG9sZCBSWC1yZXNldCBiZWhhdmlvci4gIElmIHVuc3VyZSwgc2F5IE4uXFxuICA4MzpcXHRcXG4gIDg0OlxcdGNvbmZpZyBSODE2OVxcbiAgODU6XFx0XFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODE2OS84MTY4LzgxMDEvODEyNSBldGhlcm5ldCBzdXBwb3J0XFxcIlxcbiAgODY6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gIDg3OlxcdFxcdHNlbGVjdCBGV19MT0FERVJcXG4gIDg4OlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAgODk6XFx0XFx0c2VsZWN0IFBIWUxJQlxcbiAgOTA6XFx0XFx0c2VsZWN0IFJFQUxURUtfUEhZXFxuICA5MTpcXHRcXHRoZWxwXFxuICA5MjpcXHRcXHQgIFNheSBZIGhlcmUgaWYgeW91IGhhdmUgYSBSZWFsdGVrIEV0aGVybmV0IGFkYXB0ZXIgYmVsb25naW5nIHRvXFxuICA5MzpcXHRcXHQgIHRoZSBmb2xsb3dpbmcgZmFtaWxpZXM6XFxuICA5NDpcXHRcXHQgIFJUTDgxNjkgR2lnYWJpdCBFdGhlcm5ldFxcbiAgOTU6XFx0XFx0ICBSVEw4MTY4IEdpZ2FiaXQgRXRoZXJuZXRcXG4gIDk2OlxcdFxcdCAgUlRMODEwMSBGYXN0IEV0aGVybmV0XFxuICA5NzpcXHRcXHQgIFJUTDgxMjUgMi41R0JpdCBFdGhlcm5ldFxcbiAgOTg6XFx0XFxuICA5OTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG4gMTAwOlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQgcjgxNjkuICBUaGlzIGlzIHJlY29tbWVuZGVkLlxcbiAxMDE6XFx0XFxuIDEwMjpcXHRjb25maWcgUjgxNjlfTEVEU1xcbiAxMDM6XFx0XFx0Ym9vbCBcXFwiU3VwcG9ydCBmb3IgY29udHJvbGxpbmcgdGhlIE5JQyBMRURzXFxcIlxcbiAxMDQ6XFx0XFx0ZGVwZW5kcyBvbiBSODE2OSBcXHUwMDI2XFx1MDAyNiBMRURTX1RSSUdHRVJfTkVUREVWXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA0OjE5OjE0LjE4OTQ5NjM2NVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTc0NzAwMjI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgUG90ZW50aWFsIENvbXBpbGF0aW9uIElzc3VlcyB3aXRoIGEgUmVjZW50IEtlcm5lbCBQYXRjaCoqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIFRoaXMgcGF0Y2gganVzdCBpbnRyb2R1Y2VkIGBwYWdlX3Bvb2xfZGV2X2FsbG9jX3BhZ2VzYCBhbmQgcmVsYXRlZCBmdW5jdGlvbnMuIElmIGBQQUdFX1BPT0xgIGlzbid0IGVuYWJsZWQsIHRoaXMgaXMgZ29pbmcgdG8gYmUgYSBwcm9ibGVtLiBNeSBndXQgZmVlbGluZyBpcyB0aGF0IGl0J2xsIGZhaWwgdG8gY29tcGlsZSB1bmxlc3MgYFBBR0VfUE9PTGAgaXMgc29tZWhvdyBkZWZpbmVkLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgZG9lc24ndCBpbnRyb2R1Y2UgYSBidWlsZCBicmVha2FnZS5cblxuUmlnaHQsIGxldCBtZSBkb3VibGUtY2hlY2suLi4gQWgsIG9mIGNvdXJzZSEgTG9va2luZyBhdCBgbmV0L0tjb25maWdgLCBpdCBsb29rcyBsaWtlIGBQQUdFX1BPT0xgICppcyogc2VsZWN0ZWQgYnkgYFBBR0VfUE9PTGAuIFRoYXQncyBhdCBsZWFzdCBhIHN0YXJ0IGFuZCBzdWdnZXN0cyBzb21lIGxldmVsIG9mIHNlbGYtZGVwZW5kZW5jeSB0byBtYW5hZ2UgdGhpcyBvcHRpb24uXG5cbk5vdywgYSBuYWdnaW5nIGZlZWxpbmcgcmVtYWluc+KApmRvZXMgdGhlIHN5c3RlbSBwcm92aWRlIHN0dWIgaW1wbGVtZW50YXRpb25zIG9yIHNvbWV0aGluZyBzaW1pbGFyIGlmIGBQQUdFX1BPT0xgICppc24ndCogc2VsZWN0ZWQ/IEkgbmVlZCB0byBiZSBzdXJlIHRoZSBjb2RlYmFzZSB3aWxsIGJ1aWxkIGNsZWFubHkgaW4gY29uZmlndXJhdGlvbnMgd2hlcmUgYFBBR0VfUE9PTGAgaXMgZGlzYWJsZWQuIEknbGwgbmVlZCB0byBjb25maXJtIHdoYXQgaGFwcGVucyBpbiB0aGUgbm9uLWBQQUdFX1BPT0xgIGJ1aWxkIHBhdGguIFRvIGNvbmZpcm0sIEknbGwgbmVlZCB0byBleGFtaW5lIGBpbmNsdWRlL25ldC9wYWdlX3Bvb2wvaGVscGVycy5oYC4gVGhhdCdzIHdoZXJlIEkgZXhwZWN0IHRvIGZpbmQgdGhlIG5lY2Vzc2FyeSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBvciBzdHVicy4gTGV0J3Mgc2VlIHdoYXQncyBhY3R1YWxseSBpbiB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE0OTUsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwNDoxOToxOC4xNjQxOTg4OTFaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyMTA5MTg4MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwYWdlX3Bvb2xfZGV2X2FsbG9jX3BhZ2VzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImluY2x1ZGUvbmV0L3BhZ2VfcG9vbC9oZWxwZXJzLmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQvcGFnZV9wb29sL2hlbHBlcnMuaD04MD1zdGF0aWMgaW5saW5lIHU2NCAqcGFnZV9wb29sX2V0aHRvb2xfc3RhdHNfZ2V0KHU2NCAqZGF0YSwgY29uc3Qgdm9pZCAqc3RhdHMpXFxuLS1cXG5pbmNsdWRlL25ldC9wYWdlX3Bvb2wvaGVscGVycy5oLTg2LS8qKlxcbmluY2x1ZGUvbmV0L3BhZ2VfcG9vbC9oZWxwZXJzLmg6ODc6ICogcGFnZV9wb29sX2Rldl9hbGxvY19wYWdlcygpIC0gYWxsb2NhdGUgYSBwYWdlLlxcbmluY2x1ZGUvbmV0L3BhZ2VfcG9vbC9oZWxwZXJzLmgtODgtICogQHBvb2w6XFx0cG9vbCBmcm9tIHdoaWNoIHRvIGFsbG9jYXRlXFxuLS1cXG5pbmNsdWRlL25ldC9wYWdlX3Bvb2wvaGVscGVycy5oLTkxLSAqL1xcbmluY2x1ZGUvbmV0L3BhZ2VfcG9vbC9oZWxwZXJzLmg6OTI6c3RhdGljIGlubGluZSBzdHJ1Y3QgcGFnZSAqcGFnZV9wb29sX2Rldl9hbGxvY19wYWdlcyhzdHJ1Y3QgcGFnZV9wb29sICpwb29sKVxcbmluY2x1ZGUvbmV0L3BhZ2VfcG9vbC9oZWxwZXJzLmgtOTMte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwNDoxOToxOC40ODUyOTc2MzNaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIwNDcwNDE4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlLi4uXG5cbioqQ2hlY2tpbmcgZm9yIFBhZ2UgUG9vbCBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgSSBuZWVkIHRvIHZlcmlmeSBzb21ldGhpbmcgcXVpY2tseS4gTXkgaW1tZWRpYXRlIHRhc2sgaXMgdG8gc2VlIGlmIHRoZSBoZWFkZXIgZmlsZSBgaW5jbHVkZS9uZXQvcGFnZV9wb29sL2hlbHBlcnMuaGAgaXMgY29uZGl0aW9uYWxpemVkIHdpdGggYCNpZmRlZiBDT05GSUdfUEFHRV9QT09MYC4gVGhpcyBpcyBhIHByZXR0eSBzdGFuZGFyZCBjaGVjaywgSSdtIGV4cGVjdGluZyBpdCB0byBiZSBndWFyZGVkIGJ5IHRoYXQgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZSBpZiBpdCdzIHJlbGF0ZWQgdG8gdGhlIHBhZ2UgcG9vbCBmdW5jdGlvbmFsaXR5LCBidXQgaXQncyBhbHdheXMgZ29vZCB0byBiZSB0aG9yb3VnaC4gSXQncyBpbXBvcnRhbnQgdG8gbWFrZSBzdXJlIHRoYXQgY29kZSByZWxhdGVkIHRvIGEgc3BlY2lmaWMgZmVhdHVyZSBsaWtlIHRoZSBgcGFnZV9wb29sYCBkb2Vzbid0IGxlYWsgaW50byB0aGUgYnVpbGQgd2hlbiB0aGUgZmVhdHVyZSBpc24ndCBhY3R1YWxseSBlbmFibGVkLiBUaGF0IGNvdWxkIGNhdXNlIGNvbXBpbGUgZXJyb3JzIG9yLCBldmVuIHdvcnNlLCBzdWJ0bGUgcnVudGltZSBpc3N1ZXMuIFNvLCB0aGUgZmlyc3Qgc3RlcCBpcyB0byBkaXZlIGluIGFuZCB0YWtlIGEgbG9vayBhdCB0aGUgZmlsZSdzIGNvbnRlbnRzLiBMZXQncyBnZXQgdG8gaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMTE2LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDQ6MTk6MjEuNjkwMDAzODk1WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTE1NDkwNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfUEFHRV9QT09MXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImluY2x1ZGUvbmV0L3BhZ2VfcG9vbC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQvcGFnZV9wb29sL2hlbHBlcnMuaC02MC1cXG5pbmNsdWRlL25ldC9wYWdlX3Bvb2wvaGVscGVycy5oOjYxOiNpZmRlZiBDT05GSUdfUEFHRV9QT09MX1NUQVRTXFxuaW5jbHVkZS9uZXQvcGFnZV9wb29sL2hlbHBlcnMuaC02Mi0vKiBEZXByZWNhdGVkIGRyaXZlci1mYWNpbmcgQVBJLCB1c2UgbmV0bGluayBpbnN0ZWFkICovXFxuLS1cXG5pbmNsdWRlL25ldC9wYWdlX3Bvb2wvaGVscGVycy5oPTMzMT1zdGF0aWMgaW5saW5lIHZvaWQgcGFnZV9wb29sX3B1dF9uZXRtZW0oc3RydWN0IHBhZ2VfcG9vbCAqcG9vbCxcXG4tLVxcbmluY2x1ZGUvbmV0L3BhZ2VfcG9vbC9oZWxwZXJzLmgtMzM4LVxcdCAqL1xcbmluY2x1ZGUvbmV0L3BhZ2VfcG9vbC9oZWxwZXJzLmg6MzM5OiNpZmRlZiBDT05GSUdfUEFHRV9QT09MXFxuaW5jbHVkZS9uZXQvcGFnZV9wb29sL2hlbHBlcnMuaC0zNDAtXFx0aWYgKCFwYWdlX3Bvb2xfdW5yZWZfYW5kX3Rlc3QobmV0bWVtKSlcXG4tLVxcbmluY2x1ZGUvbmV0L3BhZ2VfcG9vbC90eXBlcy5oPTg3PXN0cnVjdCBwYWdlX3Bvb2xfcGFyYW1zIHtcXG4tLVxcbmluY2x1ZGUvbmV0L3BhZ2VfcG9vbC90eXBlcy5oLTEwNy1cXG5pbmNsdWRlL25ldC9wYWdlX3Bvb2wvdHlwZXMuaDoxMDg6I2lmZGVmIENPTkZJR19QQUdFX1BPT0xfU1RBVFNcXG5pbmNsdWRlL25ldC9wYWdlX3Bvb2wvdHlwZXMuaC0xMDktLyoqXFxuLS1cXG5pbmNsdWRlL25ldC9wYWdlX3Bvb2wvdHlwZXMuaD0xNzY9c3RydWN0IHBhZ2VfcG9vbCB7XFxuLS1cXG5pbmNsdWRlL25ldC9wYWdlX3Bvb2wvdHlwZXMuaC0xODUtXFx0Ym9vbCBkbWFfc3luY19mb3JfY3B1OjE7XFx0LyogUGVyZm9ybSBETUEgc3luYyBmb3IgY3B1ICovXFxuaW5jbHVkZS9uZXQvcGFnZV9wb29sL3R5cGVzLmg6MTg2OiNpZmRlZiBDT05GSUdfUEFHRV9QT09MX1NUQVRTXFxuaW5jbHVkZS9uZXQvcGFnZV9wb29sL3R5cGVzLmgtMTg3LVxcdGJvb2wgc3lzdGVtOjE7XFx0XFx0XFx0LyogVGhpcyBpcyBhIGdsb2JhbCBwZXJjcHUgcG9vbCAqL1xcbi0tXFxuaW5jbHVkZS9uZXQvcGFnZV9wb29sL3R5cGVzLmgtMjAwLVxcbmluY2x1ZGUvbmV0L3BhZ2VfcG9vbC90eXBlcy5oOjIwMTojaWZkZWYgQ09ORklHX1BBR0VfUE9PTF9TVEFUU1xcbmluY2x1ZGUvbmV0L3BhZ2VfcG9vbC90eXBlcy5oLTIwMi1cXHQvKiB0aGVzZSBzdGF0cyBhcmUgaW5jcmVtZW50ZWQgd2hpbGUgaW4gc29mdGlycSBjb250ZXh0ICovXFxuLS1cXG5pbmNsdWRlL25ldC9wYWdlX3Bvb2wvdHlwZXMuaC0yMzktXFxuaW5jbHVkZS9uZXQvcGFnZV9wb29sL3R5cGVzLmg6MjQwOiNpZmRlZiBDT05GSUdfUEFHRV9QT09MX1NUQVRTXFxuaW5jbHVkZS9uZXQvcGFnZV9wb29sL3R5cGVzLmgtMjQxLVxcdC8qIHJlY3ljbGUgc3RhdHMgYXJlIHBlci1jcHUgdG8gYXZvaWQgbG9ja2luZyAqL1xcbi0tXFxuaW5jbHVkZS9uZXQvcGFnZV9wb29sL3R5cGVzLmg9Mjc1PXN0cnVjdCB4ZHBfbWVtX2luZm87XFxuaW5jbHVkZS9uZXQvcGFnZV9wb29sL3R5cGVzLmgtMjc2LVxcbmluY2x1ZGUvbmV0L3BhZ2VfcG9vbC90eXBlcy5oOjI3NzojaWZkZWYgQ09ORklHX1BBR0VfUE9PTFxcbmluY2x1ZGUvbmV0L3BhZ2VfcG9vbC90eXBlcy5oLTI3OC12b2lkIHBhZ2VfcG9vbF9lbmFibGVfZGlyZWN0X3JlY3ljbGluZyhzdHJ1Y3QgcGFnZV9wb29sICpwb29sLFxcbi0tXFxuaW5jbHVkZS9uZXQvcGFnZV9wb29sL3R5cGVzLmg9MzA4PXN0YXRpYyBpbmxpbmUgYm9vbCBpc19wYWdlX3Bvb2xfY29tcGlsZWRfaW4odm9pZClcXG5pbmNsdWRlL25ldC9wYWdlX3Bvb2wvdHlwZXMuaC0zMDkte1xcbmluY2x1ZGUvbmV0L3BhZ2VfcG9vbC90eXBlcy5oOjMxMDojaWZkZWYgQ09ORklHX1BBR0VfUE9PTFxcbmluY2x1ZGUvbmV0L3BhZ2VfcG9vbC90eXBlcy5oLTMxMS1cXHRyZXR1cm4gdHJ1ZTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDQ6MTk6MjEuNzUxMTY0NjkxWiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMTAzNjM4NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZS4uLiBJJ20gbG9va2luZyBhdCB0aGlzIGNvZGUsIGFuZCBzb21ldGhpbmcncyBub3QgcXVpdGUgcmlnaHQuIEkgZXhwZWN0ZWQgYHBhZ2VfcG9vbF9kZXZfYWxsb2NfcGFnZXNgIHRvIGJlIGNvbmRpdGlvbmFsbHkgY29tcGlsZWQgYmFzZWQgb24gYENPTkZJR19QQUdFX1BPT0xgLCBidXQgaXQgZG9lc24ndCBhcHBlYXIgdG8gYmUgd2l0aGluIHRoYXQgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZS4gVGhhdCdzIHVudXN1YWwuIEl0J3MgdGltZSB0byBjb25maXJtIG15IHN1c3BpY2lvbi5cblxuKipEaXZpbmcgaW50byB0aGUgUGFnZSBQb29sIEltcGxlbWVudGF0aW9uKipcblxuSSdsbCBxdWlja2x5IG5hdmlnYXRlIHRvIHRoZSByZWxldmFudCBoZWFkZXIgZmlsZS4gTGV0J3Mgc2VlLi4uIGl0IHNob3VsZCBiZSBgaW5jbHVkZS9uZXQvcGFnZV9wb29sL2hlbHBlcnMuaGAuIEknbGwgd2FudCB0byBjaGVjayBhcm91bmQgbGluZSA5MiB0aGVyZSwgYW5kIHNlZSB3aGF0J3Mgd2hhdC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5IHRoaXMgZnVuY3Rpb24sIHdoaWNoIHNlZW1zIGNlbnRyYWwgdG8gdGhlIHBhZ2UgcG9vbCBmdW5jdGlvbmFsaXR5LCBtaWdodCAqbm90KiBiZSBndWFyZGVkIGJ5IHRoZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBtYWNyby4gVGhlcmUgaGFzIHRvIGJlIGEgcmVhc29uLCBhbmQgdW5kZXJzdGFuZGluZyBpdCBpcyBjcml0aWNhbCBmb3IgbWUgdG8gaGF2ZSBhIHNvbGlkIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoaXMgY29kZSB3b3Jrcy4gSSBoYXZlIHRvIGJlIHN1cmUuIExldCdzIGdldCB0byB0aGUgYm90dG9tIG9mIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzMTA4LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDQ6MTk6MjUuODYxNTMxMTVaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODk2MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiaW5jbHVkZS9uZXQvcGFnZV9wb29sL2hlbHBlcnMuaFwiLFxuICBcIkZpcnN0TGluZVwiOiA4MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA4MDpcXHRzdGF0aWMgaW5saW5lIHU2NCAqcGFnZV9wb29sX2V0aHRvb2xfc3RhdHNfZ2V0KHU2NCAqZGF0YSwgY29uc3Qgdm9pZCAqc3RhdHMpXFxuICA4MTpcXHR7XFxuICA4MjpcXHRcXHRyZXR1cm4gZGF0YTtcXG4gIDgzOlxcdH1cXG4gIDg0OlxcdCNlbmRpZlxcbiAgODU6XFx0XFxuICA4NjpcXHQvKipcXG4gIDg3OlxcdCAqIHBhZ2VfcG9vbF9kZXZfYWxsb2NfcGFnZXMoKSAtIGFsbG9jYXRlIGEgcGFnZS5cXG4gIDg4OlxcdCAqIEBwb29sOlxcdHBvb2wgZnJvbSB3aGljaCB0byBhbGxvY2F0ZVxcbiAgODk6XFx0ICpcXG4gIDkwOlxcdCAqIEdldCBhIHBhZ2UgZnJvbSB0aGUgcGFnZSBhbGxvY2F0b3Igb3IgcGFnZV9wb29sIGNhY2hlcy5cXG4gIDkxOlxcdCAqL1xcbiAgOTI6XFx0c3RhdGljIGlubGluZSBzdHJ1Y3QgcGFnZSAqcGFnZV9wb29sX2Rldl9hbGxvY19wYWdlcyhzdHJ1Y3QgcGFnZV9wb29sICpwb29sKVxcbiAgOTM6XFx0e1xcbiAgOTQ6XFx0XFx0Z2ZwX3QgZ2ZwID0gKEdGUF9BVE9NSUMgfCBfX0dGUF9OT1dBUk4pO1xcbiAgOTU6XFx0XFxuICA5NjpcXHRcXHRyZXR1cm4gcGFnZV9wb29sX2FsbG9jX3BhZ2VzKHBvb2wsIGdmcCk7XFxuICA5NzpcXHR9XFxuICA5ODpcXHRcXG4gIDk5OlxcdC8qKlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwNDoxOToyNS44NjE2MjIxNFoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTkwNjExODMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipOYXZpZ2F0aW5nIHRoZSBQYWdlIFBvb2wgSGVhZGVyIExhYnlyaW50aCoqXG5cbkFscmlnaHQsIGxldCdzIHNlZS4uLiBJJ20gbG9va2luZyBhdCBgcGFnZV9wb29sX2FsbG9jX3BhZ2VzYCwgYW5kIEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSB3aGVyZSB0aGF0IHNwZWNpZmljIGZ1bmN0aW9uIGlzIGRlZmluZWQuIEl0J3MgYSBrZXkgcGllY2UgaW4gdGhlIHBhZ2UgcG9vbCBhcmNoaXRlY3R1cmUsIHNvIHVuZGVyc3RhbmRpbmcgaXRzIHNvdXJjZSBpcyBjcnVjaWFsLiBOb3csIGlzIGl0IG5lc3RsZWQgaW4gYGluY2x1ZGUvbmV0L3BhZ2VfcG9vbC9oZWxwZXJzLmhgPyBUaGF0J3MgdGhlIGxpa2VseSBzcG90LCBnaXZlbiBpdHMgbmFtZSBhbmQgdHlwaWNhbCBmdW5jdGlvbi4gT3IsIGNvdWxkIGl0IGJlIGEgYml0IG1vcmUgZnVuZGFtZW50YWwsIGRlY2xhcmVkIGluIGB0eXBlcy5oYD8gSXQgd291bGQgbWFrZSBzZW5zZSBpZiBpdCB3YXMgY29uc2lkZXJlZCBhIGJhc2ljIHR5cGUgb3Igc3RydWN0dXJlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkga25vdyBzbyBJIGNhbiB1bmRlcnN0YW5kIGFueSByZWxhdGVkIHR5cGVzLCBzdHJ1Y3R1cmVzLCBvciBtYWNyb3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNjc2LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwNDoxOToyOS4wNTIyMzc0NTNaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg4MTA0MTQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBhZ2VfcG9vbF9hbGxvY19wYWdlc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL25ldC9wYWdlX3Bvb2wvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L3BhZ2VfcG9vbC9oZWxwZXJzLmgtMjEtICpcXG5pbmNsdWRlL25ldC9wYWdlX3Bvb2wvaGVscGVycy5oOjIyOiAqIDEuIHBhZ2VfcG9vbF9hbGxvY19wYWdlcygpOiBhbGxvY2F0ZSBtZW1vcnkgd2l0aG91dCBwYWdlIHNwbGl0dGluZyB3aGVuXFxuaW5jbHVkZS9uZXQvcGFnZV9wb29sL2hlbHBlcnMuaC0yMy0gKiBkcml2ZXIga25vd3MgdGhhdCB0aGUgbWVtb3J5IGl0IG5lZWQgaXMgYWx3YXlzIGJpZ2dlciB0aGFuIGhhbGYgb2YgdGhlIHBhZ2VcXG4tLVxcbmluY2x1ZGUvbmV0L3BhZ2VfcG9vbC9oZWxwZXJzLmg9OTI9c3RhdGljIGlubGluZSBzdHJ1Y3QgcGFnZSAqcGFnZV9wb29sX2Rldl9hbGxvY19wYWdlcyhzdHJ1Y3QgcGFnZV9wb29sICpwb29sKVxcbi0tXFxuaW5jbHVkZS9uZXQvcGFnZV9wb29sL2hlbHBlcnMuaC05NS1cXG5pbmNsdWRlL25ldC9wYWdlX3Bvb2wvaGVscGVycy5oOjk2OlxcdHJldHVybiBwYWdlX3Bvb2xfYWxsb2NfcGFnZXMocG9vbCwgZ2ZwKTtcXG5pbmNsdWRlL25ldC9wYWdlX3Bvb2wvaGVscGVycy5oLTk3LX1cXG4tLVxcbmluY2x1ZGUvbmV0L3BhZ2VfcG9vbC90eXBlcy5oPTE3Nj1zdHJ1Y3QgcGFnZV9wb29sIHtcXG4tLVxcbmluY2x1ZGUvbmV0L3BhZ2VfcG9vbC90eXBlcy5oLTI2My1cXG5pbmNsdWRlL25ldC9wYWdlX3Bvb2wvdHlwZXMuaDoyNjQ6c3RydWN0IHBhZ2UgKnBhZ2VfcG9vbF9hbGxvY19wYWdlcyhzdHJ1Y3QgcGFnZV9wb29sICpwb29sLCBnZnBfdCBnZnApO1xcbmluY2x1ZGUvbmV0L3BhZ2VfcG9vbC90eXBlcy5oLTI2NS1uZXRtZW1fcmVmIHBhZ2VfcG9vbF9hbGxvY19uZXRtZW1zKHN0cnVjdCBwYWdlX3Bvb2wgKnBvb2wsIGdmcF90IGdmcCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA0OjE5OjI5LjE0MDM0NjIxOFoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1ODQzMzQ1MTQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRlYnVnZ2luZyBhIFBvdGVudGlhbCBCdWlsZCBJc3N1ZSB3aXRoIGBSODE2OWAgYW5kIGBQQUdFX1BPT0xgKipcblxuT2theSwgc28gSSdtIHN0YXJpbmcgYXQgdGhpcyBidWlsZCBjb25maWcgYW5kIHNvbWV0aGluZyBmZWVscyBvZmYuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGlmIGBDT05GSUdfUEFHRV9QT09MYCBpc24ndCBlbmFibGVkLCB0aGVuIGBwYWdlX3Bvb2xfYWxsb2NfcGFnZXNgIHdvbid0IGJlIGRlZmluZWQuIFRoYXQncyBiYXNpYyBkZXBlbmRlbmN5IG1hbmFnZW1lbnQsIHJpZ2h0PyBUaGVuIEkgaGF2ZSB0aGlzIG5hZ2dpbmcgdGhvdWdodCwgZGlkIGBQQUdFX1BPT0xgIGdldCBzZWxlY3RlZCBieSBgUjgxNjlgIHNvbWV3aGVyZSBlbHNlPyBQZXJoYXBzIGluIGEgZGlmZmVyZW50IHRyZWUgb3IgYSBkaWZmZXJlbnQgY29udGV4dD9cblxuSSB3YXMgc3VyZSBJIGNoZWNrZWQgdGhpcywgYnV0IGp1c3QgdG8gYmUgY2VydGFpbiwgSSBuZWVkIHRvIHZlcmlmeSBpZiBgUjgxNjlgIGRpcmVjdGx5IHNlbGVjdHMgYFBBR0VfUE9PTGAgaW4gdGhlIGN1cnJlbnQga2VybmVsIHRyZWUuIE9oLCB3YWl0LCBJIGFscmVhZHkgZGlkIGEgYGdyZXBgIGZvciBcInNlbGVjdCBQQUdFX1BPT0xcIiBpbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZ2AgZmlsZS4gVGhlIHJlc3VsdHMgb25seSBwb2ludCB0byBgUlRBU0VgLCBub3QgYFI4MTY5YC5cblxuRmluZSwgSSdsbCBkb3VibGUtY2hlY2sgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZ2AgYWdhaW4gaW4gdGhlIGN1cnJlbnQgdHJlZSwganVzdCB0byBtYWtlIGFic29sdXRlbHkgc3VyZS4gVGhlIHBhdGNoIG1pZ2h0IGhhdmUgZm9yZ290dGVuIHRvIHNlbGVjdCBpdCwgZXZlbiB0aG91Z2ggaXQncyBhbHJlYWR5IGFwcGxpZWQuIEJ1dCBoYW5nIG9uLi4uIGlmIGBQQUdFX1BPT0xgIGlzbid0IHNlbGVjdGVkLCB3b3VsZG4ndCB0aGUgYnVpbGQgZmFpbCBvdXRyaWdodCBpZiBgUjgxNjlgIGlzIGVuYWJsZWQ/IFRoYXQncyBhIGZ1bmRhbWVudGFsIGxpbmsuXG5cblNvLCBhbSBJIG1pc3Npbmcgc29tZXRoaW5nPyBTaG91bGQgSSBiZSBhZGRpbmcgYFBBR0VfUE9PTGAgdG8gYEVuYWJsZUNvbmZpZ3NgIHRvIGZpeCBpdD8gTm8sIG5vLCBuby4gYFBBR0VfUE9PTGAgaXMgYSBoaWRkZW4gY29uZmlnLCBzbyB0aGF0IHdvbid0IHdvcmsuXG5cbkJ1dCB0aGVuLi4uIGlmIGBQQUdFX1BPT0xgIGlzbid0ICpzZWxlY3RlZCogYnkgYFI4MTY5YCwgaG93IGlzIHRoZSBjb2RlIGV2ZW4gY29tcGlsaW5nIGluIHRoZSBmaXJzdCBwbGFjZT8gU29tZXRoaW5nIGlzIHNlbGVjdGluZyBpdCwgb3IgdGhlIGRlZmF1bHQgYmVoYXZpb3IgaXMgZW5hYmxpbmcgaXQgc29tZXdoZXJlLiBJcyBpdCBlbmFibGVkIGJ5IGRlZmF1bHQsIG9yIGlzIGl0IHNlbGVjdGVkIGJ5IGBORVRgPyBPa2F5LCBJJ20gZ29pbmcgdG8gcmV2aXNpdCBgbmV0L0tjb25maWdgIGFuZCByZWZyZXNoIG15IG1lbW9yeS4gVGhpcyBpcyBwcm9iYWJseSBhIGdvb2QgcGxhY2UgdG8gc3RhcnQsIGdpdmVuIGl0cyByZWxldmFuY2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0MjQ3LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA0OjE5OjM0Ljk4MzY5Mzc2NVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NjE1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA0ODAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA0ODA6XFx0XFx0Ym9vbFxcbiA0ODE6XFx0XFx0ZGVmYXVsdCBuXFxuIDQ4MjpcXHRcXHRoZWxwXFxuIDQ4MzpcXHRcXHQgIFRoZSBORVRfU09DS19NU0cgcHJvdmlkZXMgYSBmcmFtZXdvcmsgZm9yIHBsYWluIHNvY2tldHMgKGUuZy4gVENQKSBvclxcbiA0ODQ6XFx0XFx0ICBVTFBzICh1cHBlciBsYXllciBtb2R1bGVzLCBlLmcuIFRMUykgdG8gcHJvY2VzcyBMNyBhcHBsaWNhdGlvbiBkYXRhXFxuIDQ4NTpcXHRcXHQgIHdpdGggdGhlIGhlbHAgb2YgQlBGIHByb2dyYW1zLlxcbiA0ODY6XFx0XFxuIDQ4NzpcXHRjb25maWcgTkVUX0RFVkxJTktcXG4gNDg4OlxcdFxcdGJvb2xcXG4gNDg5OlxcdFxcdGRlZmF1bHQgblxcbiA0OTA6XFx0XFxuIDQ5MTpcXHRjb25maWcgUEFHRV9QT09MXFxuIDQ5MjpcXHRcXHRib29sXFxuIDQ5MzpcXHRcXG4gNDk0OlxcdGNvbmZpZyBQQUdFX1BPT0xfU1RBVFNcXG4gNDk1OlxcdFxcdGRlZmF1bHQgblxcbiA0OTY6XFx0XFx0Ym9vbCBcXFwiUGFnZSBwb29sIHN0YXRzXFxcIlxcbiA0OTc6XFx0XFx0ZGVwZW5kcyBvbiBQQUdFX1BPT0xcXG4gNDk4OlxcdFxcdGhlbHBcXG4gNDk5OlxcdFxcdCAgRW5hYmxlIHBhZ2UgcG9vbCBzdGF0aXN0aWNzIHRvIHRyYWNrIHBhZ2UgYWxsb2NhdGlvbiBhbmQgcmVjeWNsaW5nXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA0OjE5OjM0Ljk4Mzc3MTA5NVoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTQzMjQzODgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgYSBQb3RlbnRpYWwgQnVpbGQgRGVwZW5kZW5jeSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgaGlkZGVuIGJvb2xlYW4gb3B0aW9uIOKAkyBpdCdzIHNvbWV0aGluZyB0aGF0ICptdXN0KiBiZSBleHBsaWNpdGx5IHNlbGVjdGVkLiBUaGUgdHJpY2t5IHBhcnQgaXMgZmlndXJpbmcgb3V0ICp3aGVyZSogaXQncyBiZWluZyBzZWxlY3RlZC4gSWYgYFI4MTY5YCBpcyBzb21laG93IHJlbHlpbmcgb24gaXQgYnV0IGRvZXNuJ3Qgc2VsZWN0IGl0IGRpcmVjdGx5LCB0aGVuIHdlJ3JlIGdvaW5nIHRvIGdldCBhIGJ1aWxkIGZhaWx1cmUgdW5sZXNzIHNvbWUgb3RoZXIgY29uZmlndXJhdGlvbiBvcHRpb24gY29tZXMgYWxvbmcgdG8gc2F2ZSB0aGUgZGF5LlxuXG5NeSBpbml0aWFsIHRob3VnaHQgd2FzIHRoYXQgdGhpcyBwYXRjaCAqbWlnaHQqIGhhdmUgc251Y2sgaW4gYSBgc2VsZWN0IFBBR0VfUE9PTGAgdG8gYFI4MTY5YCB3aXRoaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZ2AuIEJ1dCwgd2FpdCwgbGV0IG1lIHJlLWV4YW1pbmUgdGhpcyBwYXRjaC4gSG1tLCB0aGUgZGlmZiBJIHdhcyBnaXZlbiBkb2Vzbid0IHNob3cgYW55IG1vZGlmaWNhdGlvbnMgdG8gdGhlIGBLY29uZmlnYCBmaWxlcyBhdCBhbGwsIHNvIHRoYXQgaWRlYSdzIHByb2JhYmx5IG91dC5cblxuQWxyaWdodCwgbGV0J3MgdGFrZSBhIHF1aWNrIGxvb2sgYXQgdGhlIGN1cnJlbnQgdHJlZSBhbmQgZG91YmxlLWNoZWNrIHdoZXRoZXIgYFI4MTY5YCAqZG9lcyogc2VsZWN0IGBQQUdFX1BPT0xgIGFueXdoZXJlLiBBY3R1YWxseSwgSSBhbHJlYWR5IGdyZXBwZWQgZm9yIGBzZWxlY3QgUEFHRV9QT09MYCBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnYCBhbmQsIGFzIEkgcmVjYWxsLCBpdCBvbmx5IHNob3dlZCB1cCBpbiB0aGUgYFJUQVNFYCBjb25maWcuXG5cbkhvbGQgb24sIGRpZCBJIG1pc3Mgc29tZXRoaW5nPyBNYXliZSBJIHNob3VsZCByZS1jaGVjayBgZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnYCBhZ2FpbiwganVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuIEl0J3MgZWFzeSB0byBvdmVybG9vayB0aGluZ3Mgd2hlbiB5b3UncmUganVtcGluZyBiZXR3ZWVuIGZpbGVzIGFuZCBwYXRjaGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTI3OCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4OCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA0OjE5OjM5LjkyNzAxNzQ5NVoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzYyNDI5NTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiUEFHRV9QT09MXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc9MTEwPWNvbmZpZyBSVEFTRVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnLTExMy1cXHRzZWxlY3QgQ1JDMzJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc6MTE0OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWctMTE1LVxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDQ6MTk6NDAuMDAzMjY1ODdaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk2OTgyOTk1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEZWJ1Z2dpbmcgYSBDb21waWxlciBEZXBlbmRlbmN5KipcblxuT2theSwgc28gSSdtIHdyZXN0bGluZyB3aXRoIHRoaXMgYnVpbGQuIEknbSBzZWVpbmcgYW4gaXNzdWUgcmVsYXRlZCB0byBgUEFHRV9QT09MYCBhbmQgaXQgbG9va3MgbGlrZSBpdCdzICpvbmx5KiBpbiB0aGUgYFJUQVNFYCBjb25maWd1cmF0aW9uLiBIbW0sIHRoYXQncyBzdHJhbmdlLiBJZiBgUjgxNjlgIGlzbid0IGRpcmVjdGx5IGNob29zaW5nIGBQQUdFX1BPT0xgLCBob3cgaXMgdGhpcyB0aGluZyBldmVuIGNvbXBpbGluZyBhdCBhbGwgaW4gb3RoZXIgc2NlbmFyaW9zPyBJdCdzIGNsZWFybHkgYSBkZXBlbmRlbmN5LCByaWdodD8gTWF5YmUgc29tZXRoaW5nIGxpa2UgYE1BQ0JgIG9yIGFub3RoZXIgbW9kdWxlIGlzIHRoZSBvbmUgZG9pbmcgdGhlIHNlbGVjdGlvbiwgYW5kIGl0J3MganVzdCBtaXNzaW5nIGluIHRoaXMgbGltaXRlZCBgUjgxNjlgIHRlc3QgY2FzZS4gQnV0IGlmIEkgb25seSBlbmFibGUgYFI4MTY5YCwgYXMgaW4gbXkgY3VycmVudCBidWlsZCwgaXQgc2hvdWxkICpkZWZpbml0ZWx5KiBmYWlsIGlmIHNvbWV0aGluZyBlbHNlIGlzIG1pc3NpbmcuIEFoIHdhaXQsIGhvbGQgb24uLi4gY291bGQgaXQgYmUgYFhEUF9TT0NLRVRTYD8gVGhhdCBjb3VsZCBiZSBpdC4gSXQgaXMgYXNzb2NpYXRlZCB3aXRoIGRhdGEgc3RydWN0dXJlcyB0aGF0IHJlcXVpcmUgbWVtb3J5IG1hbmFnZW1lbnQuIExldCdzIGRpZyBkZWVwZXIuIEkgbmVlZCB0byBnZXQgdG8gdGhlIGJvdHRvbSBvZiBleGFjdGx5ICp3aGF0KiBpcyBzZWxlY3RpbmcgYFBBR0VfUE9PTGAgYW5kIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY3kgY2hhaW4gcHJvcGVybHkuIFRpbWUgdG8gY2hlY2sgdGhvc2UgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBmaWd1cmUgb3V0IHRoZSBleGFjdCBjYWxsIGNoYWluIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1OTIyLCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA0OjE5OjQzLjk3MzA5OTYwOFoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzEwMzI3NjMyLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWxlY3QgUEFHRV9QT09MXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA0OjE5OjQ0LjI4MzQzODE1OVoiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTAxMzcwOTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipOYXZpZ2F0aW5nIHRoZSBLY29uZmlnIExhbmRzY2FwZSoqXG5cbkFscmlnaHQsIHRpbWUgdG8gY2hhc2UgZG93biB0aGlzIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBGaXJzdCwgbGV0J3Mgc2VlLCB3aGVyZSB3b3VsZCB0aGF0IGJlIGRlZmluZWQgaW4gdGhlIGtlcm5lbCBzb3VyY2U/IE15IGluaXRpYWwgdGhvdWdodCBpcyBgbmV0L2NvcmUvS2NvbmZpZ2AsIGJ1dCB0aGF0IGZlZWxzIGEgYml0IHRvbyBzcGVjaWZpYy4gSXQncyBtb3JlIGxpa2VseSB0byBiZSBpbiB0aGUgZ2VuZXJhbCBuZXR3b3JraW5nIGNvbmZpZ3VyYXRpb24sIHJpZ2h0PyBPa2F5LCBzbyBsZXQncyB0cnkgYG5ldC9LY29uZmlnYCBpbnN0ZWFkLiBUaGF0J3MgdGhlIG1vcmUgbG9naWNhbCBzdGFydGluZyBwb2ludCBmb3Igc29tZXRoaW5nIHRoYXQgYnJvYWRseSByZWxhdGVzIHRvIG5ldHdvcmsgZnVuY3Rpb25hbGl0eSwgcmF0aGVyIHRoYW4gYSB2ZXJ5IHNwZWNpYWxpemVkIGNvcmUgY29tcG9uZW50LiBUaGF0IHNob3VsZCBnaXZlIGEgbW9yZSBjb21wbGV0ZSBvdmVydmlldywgSSdsbCBzdGFydCB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTYzMDYsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwNDoxOTo0Ny4xODQ4MTI4NzlaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4ODA2MzA4MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2VsZWN0IFBBR0VfUE9PTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZz00MzU9Y29uZmlnIFZFVEhcXG5kcml2ZXJzL25ldC9LY29uZmlnLTQzNi1cXHR0cmlzdGF0ZSBcXFwiVmlydHVhbCBldGhlcm5ldCBwYWlyIGRldmljZVxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjQzNzpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvS2NvbmZpZy00MzgtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz00NDM9Y29uZmlnIFZJUlRJT19ORVRcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctNDQ3LVxcdHNlbGVjdCBESU1MSUJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjQ0ODpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvS2NvbmZpZy00NDktXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz01NDQ9Y29uZmlnIFhFTl9ORVRERVZfRlJPTlRFTkRcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctNTQ3LVxcdHNlbGVjdCBYRU5fWEVOQlVTX0ZST05URU5EXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo1NDg6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L0tjb25maWctNTQ5LVxcdGRlZmF1bHQgeVxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz01ODQ9Y29uZmlnIFZNWE5FVDNcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctNTg3LVxcdGRlcGVuZHMgb24gUEFHRV9TSVpFX0xFU1NfVEhBTl82NEtCXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo1ODg6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L0tjb25maWctNTg5LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NjA0PWNvbmZpZyBORVRERVZTSU1cXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctNjEwLVxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L0tjb25maWc6NjExOlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9LY29uZmlnLTYxMi1cXHRzZWxlY3QgTkVUX1NIQVBFUlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL0tjb25maWc9MTg9Y29uZmlnIE5FVF9BSVJPSEFcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9LY29uZmlnLTIxLVxcdHNlbGVjdCBORVRfQUlST0hBX05QVVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9LY29uZmlnOjIyOlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvS2NvbmZpZy0yMy1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGliYWJhL0tjb25maWc9MTg9Y29uZmlnIEFMSUJBQkFfRUVBXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGliYWJhL0tjb25maWctMjEtXFx0ZGVwZW5kcyBvbiA2NEJJVFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsaWJhYmEvS2NvbmZpZzoyMjpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxpYmFiYS9LY29uZmlnLTIzLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc9NzI9Y29uZmlnIEJDTUdFTkVUXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTgwLVxcdHNlbGVjdCBESU1MSUJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnOjgxOlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTgyLVxcdHNlbGVjdCBCUk9BRENPTV9QSFkgaWYgQVJDSF9CQ00yODM1XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnPTIwNz1jb25maWcgQk5YVFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yMTMtXFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZzoyMTQ6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjE1LVxcdHNlbGVjdCBESU1MSUJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc9MjU4PWNvbmZpZyBCTkdFXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTI2MS1cXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnOjI2MjpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yNjMtXFx0c2VsZWN0IEFVWElMSUFSWV9CVVNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc9MjY5PWNvbmZpZyBCQ01BU1BcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjc1LVxcdHNlbGVjdCBNRElPX0JDTV9VTklNQUNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnOjI3NjpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yNzctXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9LY29uZmlnPTY9Y29uZmlnIEVOSUNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvS2NvbmZpZy04LVxcdGRlcGVuZHMgb24gUENJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9LY29uZmlnOjk6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvS2NvbmZpZy0xMC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci9LY29uZmlnPTE5PWNvbmZpZyBUU05FUFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvS2NvbmZpZy0yMy1cXHRzZWxlY3QgUEhZTElCXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvS2NvbmZpZzoyNDpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvS2NvbmZpZy0yNS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZz0yMz1jb25maWcgRkVDXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZy0zMS1cXHRzZWxlY3QgRklYRURfUEhZXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWc6MzI6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnLTMzLVxcdGltcGx5IFBBR0VfUE9PTF9TVEFUU1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL0tjb25maWc9MTg9Y29uZmlnIEdWRVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL0tjb25maWctMjEtXFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9LY29uZmlnOjIyOlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvS2NvbmZpZy0yMy1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZz05MT1jb25maWcgSE5TM1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWctOTQtXFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWc6OTU6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnLTk2LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnPTE0Nz1jb25maWcgSElCTUNHRVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWctMTUzLVxcdHNlbGVjdCBSRUFMVEVLX1BIWVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnOjE1NDpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWctMTU1LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvS2NvbmZpZz02PWNvbmZpZyBISU5JQzNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvS2NvbmZpZy0xNC1cXHRzZWxlY3QgRElNTElCXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9LY29uZmlnOjE1OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL0tjb25maWctMTYtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL0tjb25maWc9ND1jb25maWcgTElCRVRIXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL0tjb25maWctNS1cXHR0cmlzdGF0ZSBcXFwiQ29tbW9uIEV0aGVybmV0IGxpYnJhcnkgKGxpYmV0aClcXFwiIGlmIENPTVBJTEVfVEVTVFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC9LY29uZmlnOjY6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC9LY29uZmlnLTctXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnPTU5PWNvbmZpZyBNVk5FVEFcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZy02My1cXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZzo2NDpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnOjY1OlxcdHNlbGVjdCBQQUdFX1BPT0xfU1RBVFNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWctNjYtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnPTg2PWNvbmZpZyBNVlBQMlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnLTkwLVxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnOjkxOlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWctOTItXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZz0zMT1jb25maWcgT0NURU9OVFgyX1BGXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTM0LVxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc6MzU6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctMzYtXFx0c2VsZWN0IENSWVBUT19MSUJfQUVTIGlmIE1BQ1NFQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZz0xND1jb25maWcgTkVUX01FRElBVEVLX1NPQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZy0yMC1cXHRzZWxlY3QgR0VORVJJQ19BTExPQ0FUT1JcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnOjIxOlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnOjIyOlxcdHNlbGVjdCBQQUdFX1BPT0xfU1RBVFNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnLTIzLVxcdHNlbGVjdCBQQ1NfTVRLX0xZTlhJXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L0tjb25maWc9Nj1jb25maWcgTUxYNF9FTlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9LY29uZmlnLTktXFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvS2NvbmZpZzoxMDpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9LY29uZmlnLTExLVxcdHNlbGVjdCBNTFg0X0NPUkVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnPTI5PWNvbmZpZyBNTFg1X0NPUkVfRU5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTMxLVxcdGRlcGVuZHMgb24gTkVUREVWSUNFUyBcXHUwMDI2XFx1MDAyNiBFVEhFUk5FVCBcXHUwMDI2XFx1MDAyNiBJTkVUIFxcdTAwMjZcXHUwMDI2IFBDSSBcXHUwMDI2XFx1MDAyNiBNTFg1X0NPUkVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZzozMjpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWc6MzM6XFx0c2VsZWN0IFBBR0VfUE9PTF9TVEFUU1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTM0LVxcdHNlbGVjdCBESU1MSUJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWc9MzM9Y29uZmlnIE1MWFNXX1BDSVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZy0zNS1cXHRkZXBlbmRzIG9uIFBDSSBcXHUwMDI2XFx1MDAyNiBIQVNfSU9NRU0gXFx1MDAyNlxcdTAwMjYgTUxYU1dfQ09SRVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWc6MzY6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWctMzctXFx0ZGVmYXVsdCBtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWc9MjA9Y29uZmlnIEZCTklDXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWctMjctXFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnOjI4OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWctMjktXFx0c2VsZWN0IFBDU19YUENTXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnPTE9Y29uZmlnIExBTjk2NlhfU1dJVENIXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnLTgtXFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnOjk6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L0tjb25maWctMTAtXFx0c2VsZWN0IFZDQVBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZz0yOD1jb25maWcgTEFOOTY5WF9TV0lUQ0hcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZy0zMC1cXHRkZXBlbmRzIG9uIFNQQVJYNV9TV0lUQ0hcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWc6MzE6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZy0zMi1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZz0xOD1jb25maWcgTUlDUk9TT0ZUX01BTkFcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnLTI0LVxcdHNlbGVjdCBESU1MSUJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZzoyNTpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWctMjYtXFx0c2VsZWN0IE5FVF9TSEFQRVJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3BlbnNhbmRvL0tjb25maWc9MjA9Y29uZmlnIElPTklDXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9wZW5zYW5kby9LY29uZmlnLTI1LVxcdHNlbGVjdCBESU1MSUJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9wZW5zYW5kby9LY29uZmlnOjI2OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9wZW5zYW5kby9LY29uZmlnLTI3LVxcdHNlbGVjdCBBVVhJTElBUllfQlVTXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc9MTEwPWNvbmZpZyBSVEFTRVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnLTExMy1cXHRzZWxlY3QgQ1JDMzJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc6MTE0OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWctMTE1LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvS2NvbmZpZz0yOT1jb25maWcgUkFWQlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9LY29uZmlnLTM1LVxcdHNlbGVjdCBNRElPX0JJVEJBTkdcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL0tjb25maWc6MzY6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvS2NvbmZpZy0zNy1cXHRzZWxlY3QgUEhZTElCXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvS2NvbmZpZz0yNT1jb25maWcgU05JX05FVFNFQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc29jaW9uZXh0L0tjb25maWctMjgtXFx0c2VsZWN0IFBIWUxJQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NvY2lvbmV4dC9LY29uZmlnOjI5OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvS2NvbmZpZy0zMC1cXHRzZWxlY3QgTUlJXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTI9Y29uZmlnIFNUTU1BQ19FVEhcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctOC1cXHRzZWxlY3QgUENTX1hQQ1NcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjk6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTAtXFx0c2VsZWN0IFBIWUxJTktcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS9LY29uZmlnPTI2PWNvbmZpZyBURUhVVElfVE40MFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL0tjb25maWctMjgtXFx0ZGVwZW5kcyBvbiBQQ0lcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvS2NvbmZpZzoyOTpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL0tjb25maWctMzAtXFx0c2VsZWN0IEZXX0xPQURFUlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZz01MD1jb25maWcgVElfQ1BTV1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy01NS1cXHRzZWxlY3QgTUZEX1NZU0NPTlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6NTY6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctNTctXFx0c2VsZWN0IFJFR01BUFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZz02NT1jb25maWcgVElfQ1BTV19TV0lUQ0hERVZcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctNjktXFx0ZGVwZW5kcyBvbiBUSV9DUFRTIHx8ICFUSV9DUFRTXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzo3MDpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy03MS1cXHRzZWxlY3QgVElfREFWSU5DSV9NRElPXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnPTk2PWNvbmZpZyBUSV9LM19BTTY1X0NQU1dfTlVTU1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy0xMDEtXFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjEwMjpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy0xMDMtXFx0c2VsZWN0IFRJX0szX0NQUElfREVTQ19QT09MXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnPTIwND1jb25maWcgVElfSUNTU0dfUFJVRVRIX1NSMVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy0yMDgtXFx0c2VsZWN0IFRJX0szX0NQUElfREVTQ19QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzoyMDk6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMjEwLVxcdGRlcGVuZHMgb24gUFJVX1JFTU9URVBST0NcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZz0xOT1jb25maWcgTElCV1hcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZy0yMS1cXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnOjIyOlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWctMjMtXFx0c2VsZWN0IERJTUxJQlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnPTI9Y29uZmlnIE1UNzZfQ09SRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0zLVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjQ6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy01LVxcbi0tXFxua2VybmVsL2JwZi9LY29uZmlnPTI3PWNvbmZpZyBCUEZfU1lTQ0FMTFxcbi0tXFxua2VybmVsL2JwZi9LY29uZmlnLTM1LVxcdHNlbGVjdCBORVRfWEdSRVNTIGlmIE5FVFxcbmtlcm5lbC9icGYvS2NvbmZpZzozNjpcXHRzZWxlY3QgUEFHRV9QT09MIGlmIE5FVFxcbmtlcm5lbC9icGYvS2NvbmZpZy0zNy1cXHRkZWZhdWx0IG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDQ6MTk6NDkuMDY1NDQ5OTM5WiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc4Njk0MTc4MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBSODE2OSBEcml2ZXIgUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBzZWUgdGhhdCBga2VybmVsL2JwZi9LY29uZmlnYCBzZWVtcyB0byBpbmRpcmVjdGx5IGVuYWJsZSBgUEFHRV9QT09MYCB0aHJvdWdoIGBCUEZfU1lTQ0FMTGAgaWYgYE5FVGAgaXMgYWxzbyBlbmFibGVkLiBHaXZlbiBob3cgdWJpcXVpdG91cyBgQlBGX1NZU0NBTExgIGlzLCBwYXJ0aWN1bGFybHkgaW4gdGhlIHN5emthbGxlciBjb25maWd1cmF0aW9ucywgYFBBR0VfUE9PTGAgaXMgcHJvYmFibHkgYWx3YXlzIGVuYWJsZWQgYW55d2F5LiBTbywgdGhlIGBSODE2OWAgZHJpdmVyIG1pZ2h0IG5vdCAqc3RyaWN0bHkqIG5lZWQgdG8gc2VsZWN0IGBQQUdFX1BPT0xgIGl0c2VsZiwgYWx0aG91Z2ggdGhlIHBhdGNoIGF1dGhvciBtaWdodCBoYXZlIHNpbXBseSBvdmVybG9va2VkIGl0LCB3aGljaCBkb2Vzbid0IHNlZW0gdG8gYmUgYSBwcm9ibGVtIGdpdmVuIHRoYXQgdGhlIGNvZGUgY29tcGlsZXMuXG5cblRoZSBrZXkgcXVlc3Rpb24gaXMsIHNob3VsZCB0aGlzIGJlIGZ1enplZD8gQWJzb2x1dGVseS4gSXTigJlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIHJlY2VpdmUgcGF0aCBvZiBhIG5ldHdvcmsgZHJpdmVyLCB3aGljaCBpcyBhIHByaW1lIHRhcmdldC4gQ2FuIHN5emthbGxlciByZWFjaCBpdD8gVGhlIFBDSSBmdXp6ZXIgc2hvdWxkIGJlIGFibGUgdG8gaW5zdGFudGlhdGUgdGhlIGRldmljZSwgbWFwIHRoZSBETUEsIGFuZCB0cmlnZ2VyIGludGVycnVwdHMsIHNvIHllcywgaXQncyBkZWZpbml0ZWx5IHdpdGhpbiByZWFjaC4gSW4gZmFjdCwgc3l6a2FsbGVy4oCZcyBQQ0kgZnV6emVyIGlzIGFscmVhZHkga25vd24gdG8gYmUgZWZmZWN0aXZlIGF0IGZ1enppbmcgbmV0d29yayBkcml2ZXJzLiBHb29kLCB0aGlzIGlzIHNvdW5kaW5nIHByb21pc2luZy5cblxuSXMgYFI4MTY5YCBhIGdvb2QgY2FuZGlkYXRlPyBJdCdzIGEgd2lkZWx5IHVzZWQgZHJpdmVyLCBzbyB5ZXMsIGEgZ3JlYXQgdGFyZ2V0LiBUaGUgbWFpbiBjb25maWcgdG8gZm9jdXMgb24gaXMgYFI4MTY5YCBpdHNlbGYuIFdoYXQgc3BlY2lmaWMgZnVuY3Rpb25zIGFyZSBtb2RpZmllZD8gVGhlIHBhdGNoIHRvdWNoZXMgYHJ0bDgxNjlfYWxsb2NfcnhfZGF0YWAsIGBydGw4MTY5X3J4X2NsZWFyYCwgYHJ0bDgxNjlfaW5pdF9yaW5nYCwgYHJ0bDgxNjlfcnhfcmVmaWxsYCwgYHJ0bF9yeGAsIGFuZCBgcnRsX3Jlc2V0X3dvcmtgLlxuXG5Ob3csIGlzIGBydGxfcnhgIGEgaG90IHBhdGg/IFllcywgdGhhdOKAmXMgdGhlIE5BUEkgcG9sbCBmdW5jdGlvbiwgb3IgY2FsbGVkIGJ5IGl0LCBzbyBpdCdzIGZyZXF1ZW50bHkgaGl0IGR1cmluZyBwYWNrZXQgcmVjZXB0aW9uLiBXYWl0LCB0aGUgcHJvbXB0IHdhbnRzIHRvIGF2b2lkIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4gSXMgYHJ0bF9yeGAgYSBnZW5lcmljIGhvdCBwYXRoPyBXZWxsLCBpdCdzIHRoZSBkcml2ZXIncyBSWCBwYXRoLCBzbyBpdCdzIGhvdCBkdXJpbmcgcGFja2V0IHJlY2VwdGlvbi4gSG93ZXZlciwgaWYgd2UncmUgZm9jdXNlZCBvbiBmdXp6aW5nICp0aGVzZSBzcGVjaWZpYyBjaGFuZ2VzKiwgdGhlIGluaXRpYWxpemF0aW9uIGFuZCBlcnJvciBwYXRocyBhcmUgbW9yZSBpbnRlcmVzdGluZy4gU28sIEkgc2hvdWxkIGZvY3VzIG9uIGBydGw4MTY5X2luaXRfcmluZ2AsIGBydGw4MTY5X3J4X2NsZWFyYCwgYHJ0bDgxNjlfYWxsb2NfcnhfZGF0YWAsIGFuZCBgcnRsODE2OV9yeF9yZWZpbGxgLiBMZXQncyBzdGFydCBieSBsb29raW5nIGNsb3NlciBhdCBgcnRsODE2OV9pbml0X3JpbmdgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDczMiwiT3V0cHV0VG9rZW5zIjo0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwNDoxOTo1Ni45MzQ4NzA1NDhaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY4MzU5NDQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0bDgxNjlfaW5pdF9yaW5nXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTI2MDE9c3RhdGljIHZvaWQgcnRsX2luaXRfcnhjZmcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yNjI4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjI2Mjk6c3RhdGljIHZvaWQgcnRsODE2OV9pbml0X3JpbmdfaW5kZXhlcyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yNjMwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTQyMDg9c3RhdGljIGludCBydGw4MTY5X3J4X2ZpbGwoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy00MjI4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjQyMjk6c3RhdGljIGludCBydGw4MTY5X2luaXRfcmluZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy00MjMwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTQyMzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NDIzNDpcXHRydGw4MTY5X2luaXRfcmluZ19pbmRleGVzKHRwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy00MjM1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9NDMyMT1zdGF0aWMgdm9pZCBydGw4MTY5X2NsZWFudXAoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy00MzU0LVxcdHJ0bDgxNjlfdHhfY2xlYXIodHApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjQzNTU6XFx0cnRsODE2OV9pbml0X3JpbmdfaW5kZXhlcyh0cCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNDM1Ni19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz01MTkwPXN0YXRpYyBpbnQgcnRsX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTUyMTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTIxMzpcXHRyZXR2YWwgPSBydGw4MTY5X2luaXRfcmluZyh0cCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTIxNC1cXHRpZiAocmV0dmFsIFxcdTAwM2MgMClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDQ6MTk6NTcuMDAzMjM1MDA0WiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExMjcwMzc3MDI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBSODE2OSBEcml2ZXIgUGF0Y2ggZm9yIEZ1enppbmcqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24gc3lzdGVtYXRpY2FsbHkuIEkgc2VlIHRoYXQgYHJ0bDgxNjlfaW5pdF9yaW5nYCBpcyBjYWxsZWQgZWFybHksIGZyb20gYHJ0bF9vcGVuYCwgd2hpY2ggbWFrZXMgc2Vuc2UgZm9yIGluaXRpYWxpemF0aW9uLiBgcnRsODE2OV9yeF9jbGVhcmAgaXMgcGFydCBvZiB0aGUgY2xlYW51cCBwYXRoLCBjYWxsZWQgZnJvbSBgcnRsODE2OV9jbGVhbnVwYCB3aGljaCBpdHNlbGYgaXMgY2FsbGVkIGR1cmluZyByZXNldHMgYW5kIHNodXRkb3ducy4gUmVmaWxsaW5nIHRoZSByZWNlaXZlIHJpbmcgaGFwcGVucyBpbiBgcnRsODE2OV9yeF9yZWZpbGxgLCB0cmlnZ2VyZWQgZnJvbSBgcnRsX3J4YCwgb3VyIGNvcmUgUlggZnVuY3Rpb24uIEZpbmFsbHksIGBydGw4MTY5X2FsbG9jX3J4X2RhdGFgIGlzIHVzZWQgdG8gYWxsb2NhdGUgdGhlIGRhdGEgYnVmZmVycyBhbmQgaXMgY2FsbGVkIGJvdGggZHVyaW5nIHRoZSByZWZpbGwgb3BlcmF0aW9uIGFuZCBkdXJpbmcgcmVzZXRzLlxuXG5JIG5lZWQgdG8gZm9jdXMgb24gdGhlc2Uga2V5IGZ1bmN0aW9uczogYHJ0bDgxNjlfaW5pdF9yaW5nYCwgYHJ0bDgxNjlfcnhfY2xlYXJgLCBgcnRsODE2OV9yeF9yZWZpbGxgLCBhbmQgYHJ0bDgxNjlfYWxsb2NfcnhfZGF0YWAuIEkgaW5pdGlhbGx5IGNvbnNpZGVyZWQgb21pdHRpbmcgYHJ0bF9yeGAgaXRzZWxmLCBidXQgaXTigJlzIHRoZSBoZWFydCBvZiBwYWNrZXQgcHJvY2Vzc2luZy4gSSBxdWlja2x5IHJlYWxpemVkIHRoaXMgaXMgY3JpdGljYWwsIGFzIGBydGxfcnhgIGlzIGNhbGxlZCBieSB0aGUgTkFQSSBwb2xsIGZ1bmN0aW9uLCBgcnRsODE2OV9wb2xsYC4gQmVjYXVzZSBgcnRsODE2OV9yeF9yZWZpbGxgIGlzIGNhbGxlZCBmcm9tIGBydGxfcnhgLCBpdCBtYWtlcyBzZW5zZSB0byBpbmNsdWRlIGl0IGluIHRoZSBmdXp6aW5nIHNjb3BlLiBTYW1lIGZvciBgcnRsODE2OV9pbml0X3JpbmdgLlxuXG5UaGUgY29uZmlndXJhdGlvbiBzZWVtcyBzdHJhaWdodGZvcndhcmQ6IGBSODE2OWAgaXMgdGhlIHJlbGV2YW50IGNvbmZpZyBmb3IgdGhpcyBkcml2ZXIuIEknbSB3b25kZXJpbmcgYWJvdXQgdGhlIGBQQUdFX1BPT0xgIGNvbmZpZ3VyYXRpb24g4oCTIEkgY2FuJ3QgZGlyZWN0bHkgYWRkIGl0IHNpbmNlIGl0J3MgaGlkZGVuLCBidXQgcGVyaGFwcyBzeXprYWxsZXIncyBjb25maWcgZ2VuZXJhdGlvbiB3aWxsIGhhbmRsZSBpdC4gSXQncyBsaWtlbHkgdGhhdCBgUjgxNjlgIGFsb25lIGlzIHN1ZmZpY2llbnQsIGdpdmVuIHRoZSBkcml2ZXIncyBzdGFuZGFyZCBjb25maWd1cmF0aW9uLiBJJ3ZlIGRvdWJsZS1jaGVja2VkLCBhbmQgdGhlcmUgYXJlIG5vIG90aGVyIHJlbGV2YW50IGNvbmZpZ3MgYmVzaWRlcyBgQ09ORklHX1I4MTY5YC5cblxuTG9va2luZyBiYWNrIGF0IHRoZSBwYXRjaCwgaXQgc2VlbXMgdG8gYmUgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYWRkaW5nIGBwYWdlX3Bvb2xgIGFuZCBgeGRwX3J4cV9pbmZvYCB0byBgcjgxNjlgIGZvciBSWCBidWZmZXIgbWFuYWdlbWVudC4gVGhpcyBpcyBhIHNpZ25pZmljYW50IGNoYW5nZSB0byB0aGUgZHJpdmVyJ3MgUlggcGF0aCwgd2hpY2ggbWVhbnMgaXTigJlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy4gU3l6a2FsbGVyJ3MgUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzIHdpbGwgYWxsb3cgbWUgdG8gdGFyZ2V0IHRoaXMgZHJpdmVyLlxuXG5JJ3ZlIGNvbmZpcm1lZCB0aGF0IGFsbCB0aGUga2V5IGZ1bmN0aW9ucyBJJ20gaW50ZXJlc3RlZCBpbiAoYHJ0bDgxNjlfaW5pdF9yaW5nYCwgYHJ0bDgxNjlfcnhfY2xlYXJgLCBgcnRsODE2OV9yeF9yZWZpbGxgLCBhbmQgYHJ0bDgxNjlfYWxsb2NfcnhfZGF0YWApIGFyZSBzdGF0aWMsIHNvIEkgY2FuIGVuc3VyZSB0aGUgZnV6emVyIGlzIHByb3Blcmx5IHRhcmdldGluZyBvbmx5IHRoZSBmdW5jdGlvbnMgdGhhdCBuZWVkIHRvIGJlIHRlc3RlZC5cblxuSSBzZWUgdGhhdCBgcnRsODE2OV9tYXJrX3RvX2FzaWNgLCBgcnRsX3Jlc2V0X3dvcmtgLCBgcnRsX3J4YCBhcmUgYWxzbyBtb2RpZmllZCBieSB0aGUgcGF0Y2guIEknbGwgbmVlZCB0byBrZWVwIHRoaXMgaW4gbWluZC4gSXQncyBpbXBvcnRhbnQgdG8gbm90ZSB0aGUgY29udGV4dCBvZiBgcnRsODE2OV9jaGFuZ2VfbXR1YCwgdGhvdWdoIHRoZXJlIGFyZW4ndCBhbnkgY2hhbmdlcyBkaXJlY3RseSBpbnNpZGUgdGhhdCBmdW5jdGlvbi5cblxuQWxyaWdodCwgSSdtIGNvbmZpZGVudCB3aXRoIHRoaXMgYXNzZXNzbWVudC4gTGV0J3MgcHJvY2VlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI1NjQsIk91dHB1dFRva2VucyI6MTUzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA0OjIwOjA4LjI3MzYxNDU1M1oiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyODQzMjc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJSODE2OVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0bDgxNjlfaW5pdF9yaW5nXCIsXG4gICAgXCJydGw4MTY5X3J4X2NsZWFyXCIsXG4gICAgXCJydGw4MTY5X3J4X3JlZmlsbFwiLFxuICAgIFwicnRsODE2OV9hbGxvY19yeF9kYXRhXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBwYWdlX3Bvb2wgYW5kIHhkcF9yeHFfaW5mbyB0byB0aGUgcjgxNjkgbmV0d29yayBkcml2ZXIgZm9yIFJYIGJ1ZmZlciBtYW5hZ2VtZW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGRyaXZlcidzIFJYIHBhdGggYW5kIGluaXRpYWxpemF0aW9uL2NsZWFudXAgcm91dGluZXMuIFRoZSBQQ0kgZHJpdmVyIGNhbiBiZSBmdXp6ZWQgdmlhIHN5emthbGxlcidzIFBDSSBmdXp6aW5nIGNhcGFiaWxpdGllcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJSODE2OVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0bDgxNjlfaW5pdF9yaW5nXCIsXG4gICAgXCJydGw4MTY5X3J4X2NsZWFyXCIsXG4gICAgXCJydGw4MTY5X3J4X3JlZmlsbFwiLFxuICAgIFwicnRsODE2OV9hbGxvY19yeF9kYXRhXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBwYWdlX3Bvb2wgYW5kIHhkcF9yeHFfaW5mbyB0byB0aGUgcjgxNjkgbmV0d29yayBkcml2ZXIgZm9yIFJYIGJ1ZmZlciBtYW5hZ2VtZW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGRyaXZlcidzIFJYIHBhdGggYW5kIGluaXRpYWxpemF0aW9uL2NsZWFudXAgcm91dGluZXMuIFRoZSBQQ0kgZHJpdmVyIGNhbiBiZSBmdXp6ZWQgdmlhIHN5emthbGxlcidzIFBDSSBmdXp6aW5nIGNhcGFiaWxpdGllcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowht8pr[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-13 03:57:04 +0000 UTC FinishedAt: 2026-07-13 04:20:10 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "R8169" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "R8169" ], "series_id": "7e81e4ff-7faf-4d3e-b677-123c30301611" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "rtl8169_init_ring", "rtl8169_rx_clear", "rtl8169_rx_refill", "rtl8169_alloc_rx_data" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA0OjE4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1I4MTY5JiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnRsODE2OV9pbml0X3JpbmcmIzM0OywKICAgICYjMzQ7cnRsODE2OV9yeF9jbGVhciYjMzQ7LAogICAgJiMzNDtydGw4MTY5X3J4X3JlZmlsbCYjMzQ7LAogICAgJiMzNDtydGw4MTY5X2FsbG9jX3J4X2RhdGEmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBwYWdlX3Bvb2wgYW5kIHhkcF9yeHFfaW5mbyB0byB0aGUgcjgxNjkgbmV0d29yayBkcml2ZXIgZm9yIFJYIGJ1ZmZlciBtYW5hZ2VtZW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGRyaXZlciYjMzk7cyBSWCBwYXRoIGFuZCBpbml0aWFsaXphdGlvbi9jbGVhbnVwIHJvdXRpbmVzLiBUaGUgUENJIGRyaXZlciBjYW4gYmUgZnV6emVkIHZpYSBzeXprYWxsZXImIzM5O3MgUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA0OjE4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNzRmOTFlZGIxNWYxMDFkMGUwYWZkYzVkOTk1YTY4ZDZkMGJjNTMxZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVsIDEzIDA0OjE4OjI5IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmNcbmluZGV4IGVjNGZjMjFmYTIxZmIwLi5jNTQ4ZTdlOGRiODc0ZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uY1xuQEAgLTMxLDcgJiM0MzszMSw5IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvdW5hbGlnbmVkLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvaXA2X2NoZWNrc3VtLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvbmV0ZGV2X3F1ZXVlcy5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY25ldC9wYWdlX3Bvb2wvaGVscGVycy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbmV0L3BoeS9yZWFsdGVrX3BoeS5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY25ldC94ZHAuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFwmIzM0O3I4MTY5LmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDtyODE2OV9maXJtd2FyZS5oXCYjMzQ7XG5AQCAtNzI5LDYgJiM0Mzs3MzEsMTAgQEAgZW51bSBydGxfZGFzaF90eXBlIHtcbiB9O1xuIFxuIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUge1xuJiM0MztcdHN0cnVjdCBwYWdlX3Bvb2wgKnJ4X3Bvb2w7XG4mIzQzO1x0c3RydWN0IHhkcF9yeHFfaW5mbyB4ZHBfcnhxO1xuJiM0MztcdHUzMiByeF9oZWFkcm9vbTtcbiYjNDM7XHR1MzIgcnhfYnVmX3N6O1xuIFx0dm9pZCBfX2lvbWVtICptbWlvX2FkZHI7XHQvKiBtZW1vcnkgbWFwIHBoeXNpY2FsIGFkZHJlc3MgKi9cbiBcdHN0cnVjdCBwY2lfZGV2ICpwY2lfZGV2O1xuIFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldjtcbkBAIC03MzksNiAmIzQzOzc0NSw3IEBAIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUge1xuIFx0dTMyIGN1cl9yeDsgLyogSW5kZXggaW50byB0aGUgUnggZGVzY3JpcHRvciBidWZmZXIgb2YgbmV4dCBSeCBwa3QuICovXG4gXHR1MzIgY3VyX3R4OyAvKiBJbmRleCBpbnRvIHRoZSBUeCBkZXNjcmlwdG9yIGJ1ZmZlciBvZiBuZXh0IFJ4IHBrdC4gKi9cbiBcdHUzMiBkaXJ0eV90eDtcbiYjNDM7XHR1MzIgZGlydHlfcng7XG4gXHRzdHJ1Y3QgVHhEZXNjICpUeERlc2NBcnJheTtcdC8qIDI1Ni1hbGlnbmVkIFR4IGRlc2NyaXB0b3IgcmluZyAqL1xuIFx0c3RydWN0IFJ4RGVzYyAqUnhEZXNjQXJyYXk7XHQvKiAyNTYtYWxpZ25lZCBSeCBkZXNjcmlwdG9yIHJpbmcgKi9cbiBcdGRtYV9hZGRyX3QgVHhQaHlBZGRyO1xuQEAgLTI2MjIsNiAmIzQzOzI2MjksNyBAQCBzdGF0aWMgdm9pZCBydGxfaW5pdF9yeGNmZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBzdGF0aWMgdm9pZCBydGw4MTY5X2luaXRfcmluZ19pbmRleGVzKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIHtcbiBcdHRwLVx1MDAzZWRpcnR5X3R4ID0gdHAtXHUwMDNlY3VyX3R4ID0gdHAtXHUwMDNlY3VyX3J4ID0gMDtcbiYjNDM7XHR0cC1cdTAwM2VkaXJ0eV9yeCA9IDA7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIHJ0bF9qdW1ib19jb25maWcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG5AQCAtNDE0OCwzNyAmIzQzOzQxNTYsMzAgQEAgc3RhdGljIGludCBydGw4MTY5X2NoYW5nZV9tdHUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IG5ld19tdHUpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tc3RhdGljIHZvaWQgcnRsODE2OV9tYXJrX3RvX2FzaWMoc3RydWN0IFJ4RGVzYyAqZGVzYylcbiYjNDM7c3RhdGljIHZvaWQgcnRsODE2OV9tYXJrX3RvX2FzaWMoc3RydWN0IFJ4RGVzYyAqZGVzYywgdTMyIHJ4X2J1Zl9zeilcbiB7XG4gXHR1MzIgZW9yID0gbGUzMl90b19jcHUoZGVzYy1cdTAwM2VvcHRzMSkgXHUwMDI2IFJpbmdFbmQ7XG4gXG4gXHRkZXNjLVx1MDAzZW9wdHMyID0gMDtcbiBcdC8qIEZvcmNlIG1lbW9yeSB3cml0ZXMgdG8gY29tcGxldGUgYmVmb3JlIHJlbGVhc2luZyBkZXNjcmlwdG9yICovXG4gXHRkbWFfd21iKCk7XG4tXHRXUklURV9PTkNFKGRlc2MtXHUwMDNlb3B0czEsIGNwdV90b19sZTMyKERlc2NPd24gfCBlb3IgfCBSODE2OV9SWF9CVUZfU0laRSkpO1xuJiM0MztcdFdSSVRFX09OQ0UoZGVzYy1cdTAwM2VvcHRzMSwgY3B1X3RvX2xlMzIoRGVzY093biB8IGVvciB8IHJ4X2J1Zl9zeikpO1xuIH1cbiBcbiBzdGF0aWMgc3RydWN0IHBhZ2UgKnJ0bDgxNjlfYWxsb2NfcnhfZGF0YShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCxcbiBcdFx0XHRcdFx0ICBzdHJ1Y3QgUnhEZXNjICpkZXNjKVxuIHtcbi1cdHN0cnVjdCBkZXZpY2UgKmQgPSB0cF90b19kZXYodHApO1xuLVx0aW50IG5vZGUgPSBkZXZfdG9fbm9kZShkKTtcbiBcdGRtYV9hZGRyX3QgbWFwcGluZztcbiBcdHN0cnVjdCBwYWdlICpkYXRhO1xuIFxuLVx0ZGF0YSA9IGFsbG9jX3BhZ2VzX25vZGUobm9kZSwgR0ZQX0tFUk5FTCwgZ2V0X29yZGVyKFI4MTY5X1JYX0JVRl9TSVpFKSk7XG4mIzQzO1x0ZGF0YSA9IHBhZ2VfcG9vbF9kZXZfYWxsb2NfcGFnZXModHAtXHUwMDNlcnhfcG9vbCk7XG4gXHRpZiAoIWRhdGEpXG4gXHRcdHJldHVybiBOVUxMO1xuIFxuLVx0bWFwcGluZyA9IGRtYV9tYXBfcGFnZShkLCBkYXRhLCAwLCBSODE2OV9SWF9CVUZfU0laRSwgRE1BX0ZST01fREVWSUNFKTtcbi1cdGlmICh1bmxpa2VseShkbWFfbWFwcGluZ19lcnJvcihkLCBtYXBwaW5nKSkpIHtcbi1cdFx0bmV0ZGV2X2Vycih0cC1cdTAwM2VkZXYsIFwmIzM0O0ZhaWxlZCB0byBtYXAgUlggRE1BIVxcblwmIzM0Oyk7XG4tXHRcdF9fZnJlZV9wYWdlcyhkYXRhLCBnZXRfb3JkZXIoUjgxNjlfUlhfQlVGX1NJWkUpKTtcbi1cdFx0cmV0dXJuIE5VTEw7XG4tXHR9XG4mIzQzO1x0bWFwcGluZyA9IHBhZ2VfcG9vbF9nZXRfZG1hX2FkZHIoZGF0YSkgJiM0MzsgdHAtXHUwMDNlcnhfaGVhZHJvb207XG4gXG4gXHRkZXNjLVx1MDAzZWFkZHIgPSBjcHVfdG9fbGU2NChtYXBwaW5nKTtcbi1cdHJ0bDgxNjlfbWFya190b19hc2ljKGRlc2MpO1xuJiM0MztcdHJ0bDgxNjlfbWFya190b19hc2ljKGRlc2MsIHRwLVx1MDAzZXJ4X2J1Zl9zeik7XG4gXG4gXHRyZXR1cm4gZGF0YTtcbiB9XG5AQCAtNDE4NywxNSAmIzQzOzQxODgsMjEgQEAgc3RhdGljIHZvaWQgcnRsODE2OV9yeF9jbGVhcihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiB7XG4gXHRpbnQgaTtcbiBcbi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIE5VTV9SWF9ERVNDIFx1MDAyNlx1MDAyNiB0cC1cdTAwM2VSeF9kYXRhYnVmZltpXTsgaSYjNDM7JiM0MzspIHtcbi1cdFx0ZG1hX3VubWFwX3BhZ2UodHBfdG9fZGV2KHRwKSxcbi1cdFx0XHQgICAgICAgbGU2NF90b19jcHUodHAtXHUwMDNlUnhEZXNjQXJyYXlbaV0uYWRkciksXG4tXHRcdFx0ICAgICAgIFI4MTY5X1JYX0JVRl9TSVpFLCBETUFfRlJPTV9ERVZJQ0UpO1xuLVx0XHRfX2ZyZWVfcGFnZXModHAtXHUwMDNlUnhfZGF0YWJ1ZmZbaV0sIGdldF9vcmRlcihSODE2OV9SWF9CVUZfU0laRSkpO1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIE5VTV9SWF9ERVNDOyBpJiM0MzsmIzQzOykge1xuJiM0MztcdFx0aWYgKCF0cC1cdTAwM2VSeF9kYXRhYnVmZltpXSlcbiYjNDM7XHRcdFx0Y29udGludWU7XG4mIzQzO1x0XHRwYWdlX3Bvb2xfcHV0X2Z1bGxfcGFnZSh0cC1cdTAwM2VyeF9wb29sLCB0cC1cdTAwM2VSeF9kYXRhYnVmZltpXSwgZmFsc2UpO1xuIFx0XHR0cC1cdTAwM2VSeF9kYXRhYnVmZltpXSA9IE5VTEw7XG4gXHRcdHRwLVx1MDAzZVJ4RGVzY0FycmF5W2ldLmFkZHIgPSAwO1xuIFx0XHR0cC1cdTAwM2VSeERlc2NBcnJheVtpXS5vcHRzMSA9IDA7XG4gXHR9XG4mIzQzO1xuJiM0MztcdGlmICh0cC1cdTAwM2VyeF9wb29sKSB7XG4mIzQzO1x0XHRpZiAoeGRwX3J4cV9pbmZvX2lzX3JlZyhcdTAwMjZ0cC1cdTAwM2V4ZHBfcnhxKSlcbiYjNDM7XHRcdFx0eGRwX3J4cV9pbmZvX3VucmVnKFx1MDAyNnRwLVx1MDAzZXhkcF9yeHEpO1xuJiM0MztcdFx0cGFnZV9wb29sX2Rlc3Ryb3kodHAtXHUwMDNlcnhfcG9vbCk7XG4mIzQzO1x0XHR0cC1cdTAwM2VyeF9wb29sID0gTlVMTDtcbiYjNDM7XHR9XG4gfVxuIFxuIHN0YXRpYyBpbnQgcnRsODE2OV9yeF9maWxsKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuQEAgLTQyMjEsMTIgJiM0Mzs0MjI4LDU3IEBAIHN0YXRpYyBpbnQgcnRsODE2OV9yeF9maWxsKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIFxuIHN0YXRpYyBpbnQgcnRsODE2OV9pbml0X3Jpbmcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4ge1xuJiM0MztcdHN0cnVjdCBwYWdlX3Bvb2xfcGFyYW1zIHBhcmFtcyA9IHswfTtcbiYjNDM7XHRpbnQgZXJyO1xuJiM0MztcbiBcdHJ0bDgxNjlfaW5pdF9yaW5nX2luZGV4ZXModHApO1xuIFxuJiM0MztcdGlmICh0cC1cdTAwM2VtYWNfdmVyc2lvbiBcdTAwM2M9IFJUTF9HSUdBX01BQ19WRVJfMDYpIHtcbiYjNDM7XHRcdHRwLVx1MDAzZXJ4X2hlYWRyb29tID0gMDtcbiYjNDM7XHRcdHRwLVx1MDAzZXJ4X2J1Zl9zeiA9IFI4MTY5X1JYX0JVRl9TSVpFO1xuJiM0MztcdH0gZWxzZSB7XG4mIzQzO1x0XHR0cC1cdTAwM2VyeF9oZWFkcm9vbSA9IFhEUF9QQUNLRVRfSEVBRFJPT007XG4mIzQzO1x0XHR0cC1cdTAwM2VyeF9idWZfc3ogPSBTWl8xNksgLVxuJiM0MztcdFx0XHRcdFx0XHRTS0JfREFUQV9BTElHTihzaXplb2Yoc3RydWN0IHNrYl9zaGFyZWRfaW5mbykpIC1cbiYjNDM7XHRcdFx0XHRcdFx0WERQX1BBQ0tFVF9IRUFEUk9PTTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHBhcmFtcy5vcmRlciA9IGdldF9vcmRlcihSODE2OV9SWF9CVUZfU0laRSk7XG4mIzQzO1x0cGFyYW1zLmZsYWdzID0gUFBfRkxBR19ETUFfTUFQIHwgUFBfRkxBR19ETUFfU1lOQ19ERVY7XG4mIzQzO1x0cGFyYW1zLnBvb2xfc2l6ZSA9IE5VTV9SWF9ERVNDO1xuJiM0MztcdHBhcmFtcy5uaWQgPSBkZXZfdG9fbm9kZSh0cF90b19kZXYodHApKTtcbiYjNDM7XHRwYXJhbXMuZGV2ID0gdHBfdG9fZGV2KHRwKTtcbiYjNDM7XHRwYXJhbXMubmFwaSA9IFx1MDAyNnRwLVx1MDAzZW5hcGk7XG4mIzQzO1x0cGFyYW1zLmRtYV9kaXIgPSBETUFfRlJPTV9ERVZJQ0U7XG4mIzQzO1x0cGFyYW1zLm9mZnNldCA9IHRwLVx1MDAzZXJ4X2hlYWRyb29tO1xuJiM0MztcdHBhcmFtcy5tYXhfbGVuID0gdHAtXHUwMDNlcnhfYnVmX3N6O1xuJiM0MztcbiYjNDM7XHR0cC1cdTAwM2VyeF9wb29sID0gcGFnZV9wb29sX2NyZWF0ZShcdTAwMjZwYXJhbXMpO1xuJiM0MztcdGlmIChJU19FUlIodHAtXHUwMDNlcnhfcG9vbCkpIHtcbiYjNDM7XHRcdGVyciA9IFBUUl9FUlIodHAtXHUwMDNlcnhfcG9vbCk7XG4mIzQzO1x0XHR0cC1cdTAwM2VyeF9wb29sID0gTlVMTDtcbiYjNDM7XHRcdHJldHVybiBlcnI7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRlcnIgPSB4ZHBfcnhxX2luZm9fcmVnKFx1MDAyNnRwLVx1MDAzZXhkcF9yeHEsIHRwLVx1MDAzZWRldiwgMCwgdHAtXHUwMDNlbmFwaS5uYXBpX2lkKTtcbiYjNDM7XHRpZiAoZXJyKVxuJiM0MztcdFx0Z290byBlcnJfZnJlZV9wb29sO1xuJiM0MztcbiYjNDM7XHRlcnIgPSB4ZHBfcnhxX2luZm9fcmVnX21lbV9tb2RlbChcdTAwMjZ0cC1cdTAwM2V4ZHBfcnhxLCBNRU1fVFlQRV9QQUdFX1BPT0wsIHRwLVx1MDAzZXJ4X3Bvb2wpO1xuJiM0MztcdGlmIChlcnIpXG4mIzQzO1x0XHRnb3RvIGVycl91bnJlZ19yeHE7XG4mIzQzO1xuIFx0bWVtc2V0KHRwLVx1MDAzZXR4X3NrYiwgMCwgc2l6ZW9mKHRwLVx1MDAzZXR4X3NrYikpO1xuIFx0bWVtc2V0KHRwLVx1MDAzZVJ4X2RhdGFidWZmLCAwLCBzaXplb2YodHAtXHUwMDNlUnhfZGF0YWJ1ZmYpKTtcbiBcbiBcdHJldHVybiBydGw4MTY5X3J4X2ZpbGwodHApO1xuJiM0MztcbiYjNDM7ZXJyX3VucmVnX3J4cTpcbiYjNDM7XHR4ZHBfcnhxX2luZm9fdW5yZWcoXHUwMDI2dHAtXHUwMDNleGRwX3J4cSk7XG4mIzQzO2Vycl9mcmVlX3Bvb2w6XG4mIzQzO1x0cGFnZV9wb29sX2Rlc3Ryb3kodHAtXHUwMDNlcnhfcG9vbCk7XG4mIzQzO1x0dHAtXHUwMDNlcnhfcG9vbCA9IE5VTEw7XG4mIzQzO1x0cmV0dXJuIGVycjtcbiB9XG4gXG4gc3RhdGljIHZvaWQgcnRsODE2OV91bm1hcF90eF9za2Ioc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIHVuc2lnbmVkIGludCBlbnRyeSlcbkBAIC00MzExLDggJiM0Mzs0MzYzLDIwIEBAIHN0YXRpYyB2b2lkIHJ0bF9yZXNldF93b3JrKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIFxuIFx0cnRsODE2OV9jbGVhbnVwKHRwKTtcbiBcbi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIE5VTV9SWF9ERVNDOyBpJiM0MzsmIzQzOylcbi1cdFx0cnRsODE2OV9tYXJrX3RvX2FzaWModHAtXHUwMDNlUnhEZXNjQXJyYXkgJiM0MzsgaSk7XG4mIzQzO1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgTlVNX1JYX0RFU0M7IGkmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHRpZiAodHAtXHUwMDNlUnhfZGF0YWJ1ZmZbaV0pXG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuJiM0MztcdFx0dHAtXHUwMDNlUnhfZGF0YWJ1ZmZbaV0gPVxuJiM0MztcdFx0XHRydGw4MTY5X2FsbG9jX3J4X2RhdGEodHAsIHRwLVx1MDAzZVJ4RGVzY0FycmF5ICYjNDM7IGkpO1xuJiM0MztcdFx0aWYgKCF0cC1cdTAwM2VSeF9kYXRhYnVmZltpXSlcbiYjNDM7XHRcdFx0YnJlYWs7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBOVU1fUlhfREVTQzsgaSYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdGlmICghdHAtXHUwMDNlUnhfZGF0YWJ1ZmZbaV0pXG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuJiM0MztcdFx0cnRsODE2OV9tYXJrX3RvX2FzaWModHAtXHUwMDNlUnhEZXNjQXJyYXkgJiM0MzsgaSwgdHAtXHUwMDNlcnhfYnVmX3N6KTtcbiYjNDM7XHR9XG4gXG4gXHRuYXBpX2VuYWJsZShcdTAwMjZ0cC1cdTAwM2VuYXBpKTtcbiBcdHJ0bF9od19zdGFydCh0cCk7XG5AQCAtNDc2OCwxNiAmIzQzOzQ4MzIsMzkgQEAgc3RhdGljIGlubGluZSB2b2lkIHJ0bDgxNjlfcnhfY3N1bShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgb3B0czEpXG4gXHRcdHNrYl9jaGVja3N1bV9ub25lX2Fzc2VydChza2IpO1xuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQgcnRsODE2OV9yeF9yZWZpbGwoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4mIzQzO3tcbiYjNDM7XHR3aGlsZSAodHAtXHUwMDNlZGlydHlfcnggIT0gdHAtXHUwMDNlY3VyX3J4KSB7XG4mIzQzO1x0XHR1bnNpZ25lZCBpbnQgZW50cnkgPSB0cC1cdTAwM2VkaXJ0eV9yeCAlIE5VTV9SWF9ERVNDO1xuJiM0MztcdFx0c3RydWN0IFJ4RGVzYyAqZGVzYyA9IHRwLVx1MDAzZVJ4RGVzY0FycmF5ICYjNDM7IGVudHJ5O1xuJiM0MztcbiYjNDM7XHRcdGlmICghdHAtXHUwMDNlUnhfZGF0YWJ1ZmZbZW50cnldKSB7XG4mIzQzO1x0XHRcdHN0cnVjdCBwYWdlICpuZXdfcGFnZSA9IHBhZ2VfcG9vbF9kZXZfYWxsb2NfcGFnZXModHAtXHUwMDNlcnhfcG9vbCk7XG4mIzQzO1xuJiM0MztcdFx0XHRpZiAodW5saWtlbHkoIW5ld19wYWdlKSlcbiYjNDM7XHRcdFx0XHRicmVhaztcbiYjNDM7XG4mIzQzO1x0XHRcdHRwLVx1MDAzZVJ4X2RhdGFidWZmW2VudHJ5XSA9IG5ld19wYWdlO1xuJiM0MztcbiYjNDM7XHRcdFx0ZGVzYy1cdTAwM2VhZGRyID0gY3B1X3RvX2xlNjQocGFnZV9wb29sX2dldF9kbWFfYWRkcihuZXdfcGFnZSkgJiM0MztcbiYjNDM7XHRcdFx0XHR0cC1cdTAwM2VyeF9oZWFkcm9vbSk7XG4mIzQzO1x0XHR9XG4mIzQzO1x0XHRydGw4MTY5X21hcmtfdG9fYXNpYyhkZXNjLCB0cC1cdTAwM2VyeF9idWZfc3opO1xuJiM0MztcbiYjNDM7XHRcdHRwLVx1MDAzZWRpcnR5X3J4JiM0MzsmIzQzOztcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGludCBydGxfcngoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCBidWRnZXQpXG4ge1xuIFx0c3RydWN0IGRldmljZSAqZCA9IHRwX3RvX2Rldih0cCk7XG4gXHRpbnQgY291bnQ7XG4gXG4tXHRmb3IgKGNvdW50ID0gMDsgY291bnQgXHUwMDNjIGJ1ZGdldDsgY291bnQmIzQzOyYjNDM7LCB0cC1cdTAwM2VjdXJfcngmIzQzOyYjNDM7KSB7XG4mIzQzO1x0Zm9yIChjb3VudCA9IDA7IGNvdW50IFx1MDAzYyBidWRnZXQ7KSB7XG4gXHRcdHVuc2lnbmVkIGludCBwa3Rfc2l6ZSwgZW50cnkgPSB0cC1cdTAwM2VjdXJfcnggJSBOVU1fUlhfREVTQztcbiBcdFx0c3RydWN0IFJ4RGVzYyAqZGVzYyA9IHRwLVx1MDAzZVJ4RGVzY0FycmF5ICYjNDM7IGVudHJ5O1xuIFx0XHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuLVx0XHRjb25zdCB2b2lkICpyeF9idWY7XG4mIzQzO1x0XHR2b2lkICpyeF9idWY7XG4gXHRcdGRtYV9hZGRyX3QgYWRkcjtcbiBcdFx0dTMyIHN0YXR1cztcbiBcbkBAIC00ODIwLDIxICYjNDM7NDkwNyw0MCBAQCBzdGF0aWMgaW50IHJ0bF9yeChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IGJ1ZGdldFxuIFx0XHRcdGdvdG8gcmVsZWFzZV9kZXNjcmlwdG9yO1xuIFx0XHR9XG4gXG4tXHRcdHNrYiA9IG5hcGlfYWxsb2Nfc2tiKFx1MDAyNnRwLVx1MDAzZW5hcGksIHBrdF9zaXplKTtcbi1cdFx0aWYgKHVubGlrZWx5KCFza2IpKSB7XG4tXHRcdFx0ZGV2LVx1MDAzZXN0YXRzLnJ4X2Ryb3BwZWQmIzQzOyYjNDM7O1xuLVx0XHRcdGdvdG8gcmVsZWFzZV9kZXNjcmlwdG9yO1xuLVx0XHR9XG4mIzQzO1x0XHRpZiAodW5saWtlbHkoIXRwLVx1MDAzZVJ4X2RhdGFidWZmW2VudHJ5XSkpXG4mIzQzO1x0XHRcdGJyZWFrO1xuIFxuIFx0XHRhZGRyID0gbGU2NF90b19jcHUoZGVzYy1cdTAwM2VhZGRyKTtcbiBcdFx0cnhfYnVmID0gcGFnZV9hZGRyZXNzKHRwLVx1MDAzZVJ4X2RhdGFidWZmW2VudHJ5XSk7XG4gXG4gXHRcdGRtYV9zeW5jX3NpbmdsZV9mb3JfY3B1KGQsIGFkZHIsIHBrdF9zaXplLCBETUFfRlJPTV9ERVZJQ0UpO1xuLVx0XHRwcmVmZXRjaChyeF9idWYpO1xuLVx0XHRza2JfY29weV90b19saW5lYXJfZGF0YShza2IsIHJ4X2J1ZiwgcGt0X3NpemUpO1xuLVx0XHRza2ItXHUwMDNldGFpbCAmIzQzOz0gcGt0X3NpemU7XG4tXHRcdHNrYi1cdTAwM2VsZW4gPSBwa3Rfc2l6ZTtcbi1cdFx0ZG1hX3N5bmNfc2luZ2xlX2Zvcl9kZXZpY2UoZCwgYWRkciwgcGt0X3NpemUsIERNQV9GUk9NX0RFVklDRSk7XG4mIzQzO1x0XHRwcmVmZXRjaChyeF9idWYgJiM0MzsgdHAtXHUwMDNlcnhfaGVhZHJvb20pO1xuJiM0MztcbiYjNDM7XHRcdGlmICh1bmxpa2VseSh0cC1cdTAwM2VyeF9oZWFkcm9vbSA9PSAwKSkge1xuJiM0MztcdFx0XHRza2IgPSBuYXBpX2FsbG9jX3NrYihcdTAwMjZ0cC1cdTAwM2VuYXBpLCBwa3Rfc2l6ZSk7XG4mIzQzO1x0XHRcdGlmIChsaWtlbHkoc2tiKSkge1xuJiM0MztcdFx0XHRcdHNrYl9jb3B5X3RvX2xpbmVhcl9kYXRhKHNrYiwgcnhfYnVmLCBwa3Rfc2l6ZSk7XG4mIzQzO1x0XHRcdFx0c2tiX3B1dChza2IsIHBrdF9zaXplKTtcbiYjNDM7XHRcdFx0fVxuJiM0MztcdFx0XHRkbWFfc3luY19zaW5nbGVfZm9yX2RldmljZShkLCBhZGRyLCBwa3Rfc2l6ZSwgRE1BX0ZST01fREVWSUNFKTtcbiYjNDM7XHRcdH0gZWxzZSB7XG4mIzQzO1x0XHRcdHNrYiA9IG5hcGlfYnVpbGRfc2tiKHJ4X2J1ZiwgdHAtXHUwMDNlcnhfYnVmX3N6ICYjNDM7IHRwLVx1MDAzZXJ4X2hlYWRyb29tXG4mIzQzO1x0XHRcdFx0JiM0MzsgU0tCX0RBVEFfQUxJR04oc2l6ZW9mKHN0cnVjdCBza2Jfc2hhcmVkX2luZm8pKSk7XG4mIzQzO1x0XHRcdGlmIChsaWtlbHkoc2tiKSkge1xuJiM0MztcdFx0XHRcdHNrYl9yZXNlcnZlKHNrYiwgdHAtXHUwMDNlcnhfaGVhZHJvb20pO1xuJiM0MztcdFx0XHRcdHNrYl9wdXQoc2tiLCBwa3Rfc2l6ZSk7XG4mIzQzO1x0XHRcdFx0c2tiX21hcmtfZm9yX3JlY3ljbGUoc2tiKTtcbiYjNDM7XG4mIzQzO1x0XHRcdFx0dHAtXHUwMDNlUnhfZGF0YWJ1ZmZbZW50cnldID0gTlVMTDtcbiYjNDM7XHRcdFx0fSBlbHNlIHtcbiYjNDM7XHRcdFx0XHRkbWFfc3luY19zaW5nbGVfZm9yX2RldmljZShkLCBhZGRyLCBwa3Rfc2l6ZSwgRE1BX0ZST01fREVWSUNFKTtcbiYjNDM7XHRcdFx0fVxuJiM0MztcdFx0fVxuJiM0MztcbiYjNDM7XHRcdGlmICh1bmxpa2VseSghc2tiKSkge1xuJiM0MztcdFx0XHRkZXYtXHUwMDNlc3RhdHMucnhfZHJvcHBlZCYjNDM7JiM0Mzs7XG4mIzQzO1x0XHRcdGdvdG8gcmVsZWFzZV9kZXNjcmlwdG9yO1xuJiM0MztcdFx0fVxuIFxuIFx0XHRydGw4MTY5X3J4X2NzdW0oc2tiLCBzdGF0dXMpO1xuIFx0XHRza2ItXHUwMDNlcHJvdG9jb2wgPSBldGhfdHlwZV90cmFucyhza2IsIGRldik7XG5AQCAtNDg0OCw5ICYjNDM7NDk1NCwxMiBAQCBzdGF0aWMgaW50IHJ0bF9yeChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IGJ1ZGdldFxuIFxuIFx0XHRkZXZfc3dfbmV0c3RhdHNfcnhfYWRkKGRldiwgcGt0X3NpemUpO1xuIHJlbGVhc2VfZGVzY3JpcHRvcjpcbi1cdFx0cnRsODE2OV9tYXJrX3RvX2FzaWMoZGVzYyk7XG4mIzQzO1x0XHR0cC1cdTAwM2VjdXJfcngmIzQzOyYjNDM7O1xuJiM0MztcdFx0Y291bnQmIzQzOyYjNDM7O1xuIFx0fVxuIFxuJiM0MztcdHJ0bDgxNjlfcnhfcmVmaWxsKHRwKTtcbiYjNDM7XG4gXHRyZXR1cm4gY291bnQ7XG4gfVxuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA0OjE4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1I4MTY5JiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnRsODE2OV9pbml0X3JpbmcmIzM0OywKICAgICYjMzQ7cnRsODE2OV9yeF9jbGVhciYjMzQ7LAogICAgJiMzNDtydGw4MTY5X3J4X3JlZmlsbCYjMzQ7LAogICAgJiMzNDtydGw4MTY5X2FsbG9jX3J4X2RhdGEmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBwYWdlX3Bvb2wgYW5kIHhkcF9yeHFfaW5mbyB0byB0aGUgcjgxNjkgbmV0d29yayBkcml2ZXIgZm9yIFJYIGJ1ZmZlciBtYW5hZ2VtZW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGRyaXZlciYjMzk7cyBSWCBwYXRoIGFuZCBpbml0aWFsaXphdGlvbi9jbGVhbnVwIHJvdXRpbmVzLiBUaGUgUENJIGRyaXZlciBjYW4gYmUgZnV6emVkIHZpYSBzeXprYWxsZXImIzM5O3MgUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA3NGY5MWVkYjE1ZjEwMWQwZTBhZmRjNWQ5OTVhNjhkNmQwYmM1MzFlCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBKdWwgMTMgMDQ6MTg6MjkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jCmluZGV4IGVjNGZjMjFmYTIxZmIwLi5jNTQ4ZTdlOGRiODc0ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMKQEAgLTMxLDcgJiM0MzszMSw5IEBACiAjaW5jbHVkZSAmbHQ7bGludXgvdW5hbGlnbmVkLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bmV0L2lwNl9jaGVja3N1bS5oJmd0OwogI2luY2x1ZGUgJmx0O25ldC9uZXRkZXZfcXVldWVzLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O25ldC9wYWdlX3Bvb2wvaGVscGVycy5oJmd0OwogI2luY2x1ZGUgJmx0O25ldC9waHkvcmVhbHRla19waHkuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bmV0L3hkcC5oJmd0OwogCiAjaW5jbHVkZSAmIzM0O3I4MTY5LmgmIzM0OwogI2luY2x1ZGUgJiMzNDtyODE2OV9maXJtd2FyZS5oJiMzNDsKQEAgLTcyOSw2ICYjNDM7NzMxLDEwIEBAIGVudW0gcnRsX2Rhc2hfdHlwZSB7CiB9OwogCiBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlIHsKJiM0MzsJc3RydWN0IHBhZ2VfcG9vbCAqcnhfcG9vbDsKJiM0MzsJc3RydWN0IHhkcF9yeHFfaW5mbyB4ZHBfcnhxOwomIzQzOwl1MzIgcnhfaGVhZHJvb207CiYjNDM7CXUzMiByeF9idWZfc3o7CiAJdm9pZCBfX2lvbWVtICptbWlvX2FkZHI7CS8qIG1lbW9yeSBtYXAgcGh5c2ljYWwgYWRkcmVzcyAqLwogCXN0cnVjdCBwY2lfZGV2ICpwY2lfZGV2OwogCXN0cnVjdCBuZXRfZGV2aWNlICpkZXY7CkBAIC03MzksNiAmIzQzOzc0NSw3IEBAIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgewogCXUzMiBjdXJfcng7IC8qIEluZGV4IGludG8gdGhlIFJ4IGRlc2NyaXB0b3IgYnVmZmVyIG9mIG5leHQgUnggcGt0LiAqLwogCXUzMiBjdXJfdHg7IC8qIEluZGV4IGludG8gdGhlIFR4IGRlc2NyaXB0b3IgYnVmZmVyIG9mIG5leHQgUnggcGt0LiAqLwogCXUzMiBkaXJ0eV90eDsKJiM0MzsJdTMyIGRpcnR5X3J4OwogCXN0cnVjdCBUeERlc2MgKlR4RGVzY0FycmF5OwkvKiAyNTYtYWxpZ25lZCBUeCBkZXNjcmlwdG9yIHJpbmcgKi8KIAlzdHJ1Y3QgUnhEZXNjICpSeERlc2NBcnJheTsJLyogMjU2LWFsaWduZWQgUnggZGVzY3JpcHRvciByaW5nICovCiAJZG1hX2FkZHJfdCBUeFBoeUFkZHI7CkBAIC0yNjIyLDYgJiM0MzsyNjI5LDcgQEAgc3RhdGljIHZvaWQgcnRsX2luaXRfcnhjZmcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApCiBzdGF0aWMgdm9pZCBydGw4MTY5X2luaXRfcmluZ19pbmRleGVzKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKQogewogCXRwLSZndDtkaXJ0eV90eCA9IHRwLSZndDtjdXJfdHggPSB0cC0mZ3Q7Y3VyX3J4ID0gMDsKJiM0MzsJdHAtJmd0O2RpcnR5X3J4ID0gMDsKIH0KIAogc3RhdGljIHZvaWQgcnRsX2p1bWJvX2NvbmZpZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKQEAgLTQxNDgsMzcgJiM0Mzs0MTU2LDMwIEBAIHN0YXRpYyBpbnQgcnRsODE2OV9jaGFuZ2VfbXR1KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBuZXdfbXR1KQogCXJldHVybiAwOwogfQogCi1zdGF0aWMgdm9pZCBydGw4MTY5X21hcmtfdG9fYXNpYyhzdHJ1Y3QgUnhEZXNjICpkZXNjKQomIzQzO3N0YXRpYyB2b2lkIHJ0bDgxNjlfbWFya190b19hc2ljKHN0cnVjdCBSeERlc2MgKmRlc2MsIHUzMiByeF9idWZfc3opCiB7CiAJdTMyIGVvciA9IGxlMzJfdG9fY3B1KGRlc2MtJmd0O29wdHMxKSAmYW1wOyBSaW5nRW5kOwogCiAJZGVzYy0mZ3Q7b3B0czIgPSAwOwogCS8qIEZvcmNlIG1lbW9yeSB3cml0ZXMgdG8gY29tcGxldGUgYmVmb3JlIHJlbGVhc2luZyBkZXNjcmlwdG9yICovCiAJZG1hX3dtYigpOwotCVdSSVRFX09OQ0UoZGVzYy0mZ3Q7b3B0czEsIGNwdV90b19sZTMyKERlc2NPd24gfCBlb3IgfCBSODE2OV9SWF9CVUZfU0laRSkpOwomIzQzOwlXUklURV9PTkNFKGRlc2MtJmd0O29wdHMxLCBjcHVfdG9fbGUzMihEZXNjT3duIHwgZW9yIHwgcnhfYnVmX3N6KSk7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgcGFnZSAqcnRsODE2OV9hbGxvY19yeF9kYXRhKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLAogCQkJCQkgIHN0cnVjdCBSeERlc2MgKmRlc2MpCiB7Ci0Jc3RydWN0IGRldmljZSAqZCA9IHRwX3RvX2Rldih0cCk7Ci0JaW50IG5vZGUgPSBkZXZfdG9fbm9kZShkKTsKIAlkbWFfYWRkcl90IG1hcHBpbmc7CiAJc3RydWN0IHBhZ2UgKmRhdGE7CiAKLQlkYXRhID0gYWxsb2NfcGFnZXNfbm9kZShub2RlLCBHRlBfS0VSTkVMLCBnZXRfb3JkZXIoUjgxNjlfUlhfQlVGX1NJWkUpKTsKJiM0MzsJZGF0YSA9IHBhZ2VfcG9vbF9kZXZfYWxsb2NfcGFnZXModHAtJmd0O3J4X3Bvb2wpOwogCWlmICghZGF0YSkKIAkJcmV0dXJuIE5VTEw7CiAKLQltYXBwaW5nID0gZG1hX21hcF9wYWdlKGQsIGRhdGEsIDAsIFI4MTY5X1JYX0JVRl9TSVpFLCBETUFfRlJPTV9ERVZJQ0UpOwotCWlmICh1bmxpa2VseShkbWFfbWFwcGluZ19lcnJvcihkLCBtYXBwaW5nKSkpIHsKLQkJbmV0ZGV2X2Vycih0cC0mZ3Q7ZGV2LCAmIzM0O0ZhaWxlZCB0byBtYXAgUlggRE1BIVxuJiMzNDspOwotCQlfX2ZyZWVfcGFnZXMoZGF0YSwgZ2V0X29yZGVyKFI4MTY5X1JYX0JVRl9TSVpFKSk7Ci0JCXJldHVybiBOVUxMOwotCX0KJiM0MzsJbWFwcGluZyA9IHBhZ2VfcG9vbF9nZXRfZG1hX2FkZHIoZGF0YSkgJiM0MzsgdHAtJmd0O3J4X2hlYWRyb29tOwogCiAJZGVzYy0mZ3Q7YWRkciA9IGNwdV90b19sZTY0KG1hcHBpbmcpOwotCXJ0bDgxNjlfbWFya190b19hc2ljKGRlc2MpOwomIzQzOwlydGw4MTY5X21hcmtfdG9fYXNpYyhkZXNjLCB0cC0mZ3Q7cnhfYnVmX3N6KTsKIAogCXJldHVybiBkYXRhOwogfQpAQCAtNDE4NywxNSAmIzQzOzQxODgsMjEgQEAgc3RhdGljIHZvaWQgcnRsODE2OV9yeF9jbGVhcihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKIHsKIAlpbnQgaTsKIAotCWZvciAoaSA9IDA7IGkgJmx0OyBOVU1fUlhfREVTQyAmYW1wOyZhbXA7IHRwLSZndDtSeF9kYXRhYnVmZltpXTsgaSYjNDM7JiM0MzspIHsKLQkJZG1hX3VubWFwX3BhZ2UodHBfdG9fZGV2KHRwKSwKLQkJCSAgICAgICBsZTY0X3RvX2NwdSh0cC0mZ3Q7UnhEZXNjQXJyYXlbaV0uYWRkciksCi0JCQkgICAgICAgUjgxNjlfUlhfQlVGX1NJWkUsIERNQV9GUk9NX0RFVklDRSk7Ci0JCV9fZnJlZV9wYWdlcyh0cC0mZ3Q7UnhfZGF0YWJ1ZmZbaV0sIGdldF9vcmRlcihSODE2OV9SWF9CVUZfU0laRSkpOwomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgTlVNX1JYX0RFU0M7IGkmIzQzOyYjNDM7KSB7CiYjNDM7CQlpZiAoIXRwLSZndDtSeF9kYXRhYnVmZltpXSkKJiM0MzsJCQljb250aW51ZTsKJiM0MzsJCXBhZ2VfcG9vbF9wdXRfZnVsbF9wYWdlKHRwLSZndDtyeF9wb29sLCB0cC0mZ3Q7UnhfZGF0YWJ1ZmZbaV0sIGZhbHNlKTsKIAkJdHAtJmd0O1J4X2RhdGFidWZmW2ldID0gTlVMTDsKIAkJdHAtJmd0O1J4RGVzY0FycmF5W2ldLmFkZHIgPSAwOwogCQl0cC0mZ3Q7UnhEZXNjQXJyYXlbaV0ub3B0czEgPSAwOwogCX0KJiM0MzsKJiM0MzsJaWYgKHRwLSZndDtyeF9wb29sKSB7CiYjNDM7CQlpZiAoeGRwX3J4cV9pbmZvX2lzX3JlZygmYW1wO3RwLSZndDt4ZHBfcnhxKSkKJiM0MzsJCQl4ZHBfcnhxX2luZm9fdW5yZWcoJmFtcDt0cC0mZ3Q7eGRwX3J4cSk7CiYjNDM7CQlwYWdlX3Bvb2xfZGVzdHJveSh0cC0mZ3Q7cnhfcG9vbCk7CiYjNDM7CQl0cC0mZ3Q7cnhfcG9vbCA9IE5VTEw7CiYjNDM7CX0KIH0KIAogc3RhdGljIGludCBydGw4MTY5X3J4X2ZpbGwoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApCkBAIC00MjIxLDEyICYjNDM7NDIyOCw1NyBAQCBzdGF0aWMgaW50IHJ0bDgxNjlfcnhfZmlsbChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKIAogc3RhdGljIGludCBydGw4MTY5X2luaXRfcmluZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCkKIHsKJiM0MzsJc3RydWN0IHBhZ2VfcG9vbF9wYXJhbXMgcGFyYW1zID0gezB9OwomIzQzOwlpbnQgZXJyOwomIzQzOwogCXJ0bDgxNjlfaW5pdF9yaW5nX2luZGV4ZXModHApOwogCiYjNDM7CWlmICh0cC0mZ3Q7bWFjX3ZlcnNpb24gJmx0Oz0gUlRMX0dJR0FfTUFDX1ZFUl8wNikgewomIzQzOwkJdHAtJmd0O3J4X2hlYWRyb29tID0gMDsKJiM0MzsJCXRwLSZndDtyeF9idWZfc3ogPSBSODE2OV9SWF9CVUZfU0laRTsKJiM0MzsJfSBlbHNlIHsKJiM0MzsJCXRwLSZndDtyeF9oZWFkcm9vbSA9IFhEUF9QQUNLRVRfSEVBRFJPT007CiYjNDM7CQl0cC0mZ3Q7cnhfYnVmX3N6ID0gU1pfMTZLIC0KJiM0MzsJCQkJCQlTS0JfREFUQV9BTElHTihzaXplb2Yoc3RydWN0IHNrYl9zaGFyZWRfaW5mbykpIC0KJiM0MzsJCQkJCQlYRFBfUEFDS0VUX0hFQURST09NOwomIzQzOwl9CiYjNDM7CiYjNDM7CXBhcmFtcy5vcmRlciA9IGdldF9vcmRlcihSODE2OV9SWF9CVUZfU0laRSk7CiYjNDM7CXBhcmFtcy5mbGFncyA9IFBQX0ZMQUdfRE1BX01BUCB8IFBQX0ZMQUdfRE1BX1NZTkNfREVWOwomIzQzOwlwYXJhbXMucG9vbF9zaXplID0gTlVNX1JYX0RFU0M7CiYjNDM7CXBhcmFtcy5uaWQgPSBkZXZfdG9fbm9kZSh0cF90b19kZXYodHApKTsKJiM0MzsJcGFyYW1zLmRldiA9IHRwX3RvX2Rldih0cCk7CiYjNDM7CXBhcmFtcy5uYXBpID0gJmFtcDt0cC0mZ3Q7bmFwaTsKJiM0MzsJcGFyYW1zLmRtYV9kaXIgPSBETUFfRlJPTV9ERVZJQ0U7CiYjNDM7CXBhcmFtcy5vZmZzZXQgPSB0cC0mZ3Q7cnhfaGVhZHJvb207CiYjNDM7CXBhcmFtcy5tYXhfbGVuID0gdHAtJmd0O3J4X2J1Zl9zejsKJiM0MzsKJiM0MzsJdHAtJmd0O3J4X3Bvb2wgPSBwYWdlX3Bvb2xfY3JlYXRlKCZhbXA7cGFyYW1zKTsKJiM0MzsJaWYgKElTX0VSUih0cC0mZ3Q7cnhfcG9vbCkpIHsKJiM0MzsJCWVyciA9IFBUUl9FUlIodHAtJmd0O3J4X3Bvb2wpOwomIzQzOwkJdHAtJmd0O3J4X3Bvb2wgPSBOVUxMOwomIzQzOwkJcmV0dXJuIGVycjsKJiM0MzsJfQomIzQzOwomIzQzOwllcnIgPSB4ZHBfcnhxX2luZm9fcmVnKCZhbXA7dHAtJmd0O3hkcF9yeHEsIHRwLSZndDtkZXYsIDAsIHRwLSZndDtuYXBpLm5hcGlfaWQpOwomIzQzOwlpZiAoZXJyKQomIzQzOwkJZ290byBlcnJfZnJlZV9wb29sOwomIzQzOwomIzQzOwllcnIgPSB4ZHBfcnhxX2luZm9fcmVnX21lbV9tb2RlbCgmYW1wO3RwLSZndDt4ZHBfcnhxLCBNRU1fVFlQRV9QQUdFX1BPT0wsIHRwLSZndDtyeF9wb29sKTsKJiM0MzsJaWYgKGVycikKJiM0MzsJCWdvdG8gZXJyX3VucmVnX3J4cTsKJiM0MzsKIAltZW1zZXQodHAtJmd0O3R4X3NrYiwgMCwgc2l6ZW9mKHRwLSZndDt0eF9za2IpKTsKIAltZW1zZXQodHAtJmd0O1J4X2RhdGFidWZmLCAwLCBzaXplb2YodHAtJmd0O1J4X2RhdGFidWZmKSk7CiAKIAlyZXR1cm4gcnRsODE2OV9yeF9maWxsKHRwKTsKJiM0MzsKJiM0MztlcnJfdW5yZWdfcnhxOgomIzQzOwl4ZHBfcnhxX2luZm9fdW5yZWcoJmFtcDt0cC0mZ3Q7eGRwX3J4cSk7CiYjNDM7ZXJyX2ZyZWVfcG9vbDoKJiM0MzsJcGFnZV9wb29sX2Rlc3Ryb3kodHAtJmd0O3J4X3Bvb2wpOwomIzQzOwl0cC0mZ3Q7cnhfcG9vbCA9IE5VTEw7CiYjNDM7CXJldHVybiBlcnI7CiB9CiAKIHN0YXRpYyB2b2lkIHJ0bDgxNjlfdW5tYXBfdHhfc2tiKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCB1bnNpZ25lZCBpbnQgZW50cnkpCkBAIC00MzExLDggJiM0Mzs0MzYzLDIwIEBAIHN0YXRpYyB2b2lkIHJ0bF9yZXNldF93b3JrKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKQogCiAJcnRsODE2OV9jbGVhbnVwKHRwKTsKIAotCWZvciAoaSA9IDA7IGkgJmx0OyBOVU1fUlhfREVTQzsgaSYjNDM7JiM0MzspCi0JCXJ0bDgxNjlfbWFya190b19hc2ljKHRwLSZndDtSeERlc2NBcnJheSAmIzQzOyBpKTsKJiM0MzsJZm9yIChpID0gMDsgaSAmbHQ7IE5VTV9SWF9ERVNDOyBpJiM0MzsmIzQzOykgewomIzQzOwkJaWYgKHRwLSZndDtSeF9kYXRhYnVmZltpXSkKJiM0MzsJCQljb250aW51ZTsKJiM0MzsJCXRwLSZndDtSeF9kYXRhYnVmZltpXSA9CiYjNDM7CQkJcnRsODE2OV9hbGxvY19yeF9kYXRhKHRwLCB0cC0mZ3Q7UnhEZXNjQXJyYXkgJiM0MzsgaSk7CiYjNDM7CQlpZiAoIXRwLSZndDtSeF9kYXRhYnVmZltpXSkKJiM0MzsJCQlicmVhazsKJiM0MzsJfQomIzQzOwomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgTlVNX1JYX0RFU0M7IGkmIzQzOyYjNDM7KSB7CiYjNDM7CQlpZiAoIXRwLSZndDtSeF9kYXRhYnVmZltpXSkKJiM0MzsJCQljb250aW51ZTsKJiM0MzsJCXJ0bDgxNjlfbWFya190b19hc2ljKHRwLSZndDtSeERlc2NBcnJheSAmIzQzOyBpLCB0cC0mZ3Q7cnhfYnVmX3N6KTsKJiM0MzsJfQogCiAJbmFwaV9lbmFibGUoJmFtcDt0cC0mZ3Q7bmFwaSk7CiAJcnRsX2h3X3N0YXJ0KHRwKTsKQEAgLTQ3NjgsMTYgJiM0Mzs0ODMyLDM5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBydGw4MTY5X3J4X2NzdW0oc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyIG9wdHMxKQogCQlza2JfY2hlY2tzdW1fbm9uZV9hc3NlcnQoc2tiKTsKIH0KIAomIzQzO3N0YXRpYyB2b2lkIHJ0bDgxNjlfcnhfcmVmaWxsKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKQomIzQzO3sKJiM0MzsJd2hpbGUgKHRwLSZndDtkaXJ0eV9yeCAhPSB0cC0mZ3Q7Y3VyX3J4KSB7CiYjNDM7CQl1bnNpZ25lZCBpbnQgZW50cnkgPSB0cC0mZ3Q7ZGlydHlfcnggJSBOVU1fUlhfREVTQzsKJiM0MzsJCXN0cnVjdCBSeERlc2MgKmRlc2MgPSB0cC0mZ3Q7UnhEZXNjQXJyYXkgJiM0MzsgZW50cnk7CiYjNDM7CiYjNDM7CQlpZiAoIXRwLSZndDtSeF9kYXRhYnVmZltlbnRyeV0pIHsKJiM0MzsJCQlzdHJ1Y3QgcGFnZSAqbmV3X3BhZ2UgPSBwYWdlX3Bvb2xfZGV2X2FsbG9jX3BhZ2VzKHRwLSZndDtyeF9wb29sKTsKJiM0MzsKJiM0MzsJCQlpZiAodW5saWtlbHkoIW5ld19wYWdlKSkKJiM0MzsJCQkJYnJlYWs7CiYjNDM7CiYjNDM7CQkJdHAtJmd0O1J4X2RhdGFidWZmW2VudHJ5XSA9IG5ld19wYWdlOwomIzQzOwomIzQzOwkJCWRlc2MtJmd0O2FkZHIgPSBjcHVfdG9fbGU2NChwYWdlX3Bvb2xfZ2V0X2RtYV9hZGRyKG5ld19wYWdlKSAmIzQzOwomIzQzOwkJCQl0cC0mZ3Q7cnhfaGVhZHJvb20pOwomIzQzOwkJfQomIzQzOwkJcnRsODE2OV9tYXJrX3RvX2FzaWMoZGVzYywgdHAtJmd0O3J4X2J1Zl9zeik7CiYjNDM7CiYjNDM7CQl0cC0mZ3Q7ZGlydHlfcngmIzQzOyYjNDM7OwomIzQzOwl9CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBydGxfcngoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCBidWRnZXQpCiB7CiAJc3RydWN0IGRldmljZSAqZCA9IHRwX3RvX2Rldih0cCk7CiAJaW50IGNvdW50OwogCi0JZm9yIChjb3VudCA9IDA7IGNvdW50ICZsdDsgYnVkZ2V0OyBjb3VudCYjNDM7JiM0MzssIHRwLSZndDtjdXJfcngmIzQzOyYjNDM7KSB7CiYjNDM7CWZvciAoY291bnQgPSAwOyBjb3VudCAmbHQ7IGJ1ZGdldDspIHsKIAkJdW5zaWduZWQgaW50IHBrdF9zaXplLCBlbnRyeSA9IHRwLSZndDtjdXJfcnggJSBOVU1fUlhfREVTQzsKIAkJc3RydWN0IFJ4RGVzYyAqZGVzYyA9IHRwLSZndDtSeERlc2NBcnJheSAmIzQzOyBlbnRyeTsKIAkJc3RydWN0IHNrX2J1ZmYgKnNrYjsKLQkJY29uc3Qgdm9pZCAqcnhfYnVmOwomIzQzOwkJdm9pZCAqcnhfYnVmOwogCQlkbWFfYWRkcl90IGFkZHI7CiAJCXUzMiBzdGF0dXM7CiAKQEAgLTQ4MjAsMjEgJiM0Mzs0OTA3LDQwIEBAIHN0YXRpYyBpbnQgcnRsX3J4KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgYnVkZ2V0CiAJCQlnb3RvIHJlbGVhc2VfZGVzY3JpcHRvcjsKIAkJfQogCi0JCXNrYiA9IG5hcGlfYWxsb2Nfc2tiKCZhbXA7dHAtJmd0O25hcGksIHBrdF9zaXplKTsKLQkJaWYgKHVubGlrZWx5KCFza2IpKSB7Ci0JCQlkZXYtJmd0O3N0YXRzLnJ4X2Ryb3BwZWQmIzQzOyYjNDM7OwotCQkJZ290byByZWxlYXNlX2Rlc2NyaXB0b3I7Ci0JCX0KJiM0MzsJCWlmICh1bmxpa2VseSghdHAtJmd0O1J4X2RhdGFidWZmW2VudHJ5XSkpCiYjNDM7CQkJYnJlYWs7CiAKIAkJYWRkciA9IGxlNjRfdG9fY3B1KGRlc2MtJmd0O2FkZHIpOwogCQlyeF9idWYgPSBwYWdlX2FkZHJlc3ModHAtJmd0O1J4X2RhdGFidWZmW2VudHJ5XSk7CiAKIAkJZG1hX3N5bmNfc2luZ2xlX2Zvcl9jcHUoZCwgYWRkciwgcGt0X3NpemUsIERNQV9GUk9NX0RFVklDRSk7Ci0JCXByZWZldGNoKHJ4X2J1Zik7Ci0JCXNrYl9jb3B5X3RvX2xpbmVhcl9kYXRhKHNrYiwgcnhfYnVmLCBwa3Rfc2l6ZSk7Ci0JCXNrYi0mZ3Q7dGFpbCAmIzQzOz0gcGt0X3NpemU7Ci0JCXNrYi0mZ3Q7bGVuID0gcGt0X3NpemU7Ci0JCWRtYV9zeW5jX3NpbmdsZV9mb3JfZGV2aWNlKGQsIGFkZHIsIHBrdF9zaXplLCBETUFfRlJPTV9ERVZJQ0UpOwomIzQzOwkJcHJlZmV0Y2gocnhfYnVmICYjNDM7IHRwLSZndDtyeF9oZWFkcm9vbSk7CiYjNDM7CiYjNDM7CQlpZiAodW5saWtlbHkodHAtJmd0O3J4X2hlYWRyb29tID09IDApKSB7CiYjNDM7CQkJc2tiID0gbmFwaV9hbGxvY19za2IoJmFtcDt0cC0mZ3Q7bmFwaSwgcGt0X3NpemUpOwomIzQzOwkJCWlmIChsaWtlbHkoc2tiKSkgewomIzQzOwkJCQlza2JfY29weV90b19saW5lYXJfZGF0YShza2IsIHJ4X2J1ZiwgcGt0X3NpemUpOwomIzQzOwkJCQlza2JfcHV0KHNrYiwgcGt0X3NpemUpOwomIzQzOwkJCX0KJiM0MzsJCQlkbWFfc3luY19zaW5nbGVfZm9yX2RldmljZShkLCBhZGRyLCBwa3Rfc2l6ZSwgRE1BX0ZST01fREVWSUNFKTsKJiM0MzsJCX0gZWxzZSB7CiYjNDM7CQkJc2tiID0gbmFwaV9idWlsZF9za2IocnhfYnVmLCB0cC0mZ3Q7cnhfYnVmX3N6ICYjNDM7IHRwLSZndDtyeF9oZWFkcm9vbQomIzQzOwkJCQkmIzQzOyBTS0JfREFUQV9BTElHTihzaXplb2Yoc3RydWN0IHNrYl9zaGFyZWRfaW5mbykpKTsKJiM0MzsJCQlpZiAobGlrZWx5KHNrYikpIHsKJiM0MzsJCQkJc2tiX3Jlc2VydmUoc2tiLCB0cC0mZ3Q7cnhfaGVhZHJvb20pOwomIzQzOwkJCQlza2JfcHV0KHNrYiwgcGt0X3NpemUpOwomIzQzOwkJCQlza2JfbWFya19mb3JfcmVjeWNsZShza2IpOwomIzQzOwomIzQzOwkJCQl0cC0mZ3Q7UnhfZGF0YWJ1ZmZbZW50cnldID0gTlVMTDsKJiM0MzsJCQl9IGVsc2UgewomIzQzOwkJCQlkbWFfc3luY19zaW5nbGVfZm9yX2RldmljZShkLCBhZGRyLCBwa3Rfc2l6ZSwgRE1BX0ZST01fREVWSUNFKTsKJiM0MzsJCQl9CiYjNDM7CQl9CiYjNDM7CiYjNDM7CQlpZiAodW5saWtlbHkoIXNrYikpIHsKJiM0MzsJCQlkZXYtJmd0O3N0YXRzLnJ4X2Ryb3BwZWQmIzQzOyYjNDM7OwomIzQzOwkJCWdvdG8gcmVsZWFzZV9kZXNjcmlwdG9yOwomIzQzOwkJfQogCiAJCXJ0bDgxNjlfcnhfY3N1bShza2IsIHN0YXR1cyk7CiAJCXNrYi0mZ3Q7cHJvdG9jb2wgPSBldGhfdHlwZV90cmFucyhza2IsIGRldik7CkBAIC00ODQ4LDkgJiM0Mzs0OTU0LDEyIEBAIHN0YXRpYyBpbnQgcnRsX3J4KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgYnVkZ2V0CiAKIAkJZGV2X3N3X25ldHN0YXRzX3J4X2FkZChkZXYsIHBrdF9zaXplKTsKIHJlbGVhc2VfZGVzY3JpcHRvcjoKLQkJcnRsODE2OV9tYXJrX3RvX2FzaWMoZGVzYyk7CiYjNDM7CQl0cC0mZ3Q7Y3VyX3J4JiM0MzsmIzQzOzsKJiM0MzsJCWNvdW50JiM0MzsmIzQzOzsKIAl9CiAKJiM0MzsJcnRsODE2OV9yeF9yZWZpbGwodHApOwomIzQzOwogCXJldHVybiBjb3VudDsKIH0KIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwNDoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NzI4CgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogOTYyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlJlYWNoaW5nIHRoZSBSZWFsdGVrIDgxNjkgRHJpdmVyJiMzOTtzIE5ldyBSWCBQYXRoIGluIGEgVmlydHVhbGl6ZWQgQ29udGV4dCoqCgpPa2F5LCBzbyB3ZSBoYXZlIGEgcGF0Y2ggdGhhdCYjMzk7cyBzaWduaWZpY2FudGx5IGFsdGVyaW5nIHRoZSBgcjgxNjlgIFJlYWx0ZWsgbmV0d29yayBkcml2ZXIsIHNwZWNpZmljYWxseSBkZWFsaW5nIHdpdGggUlggYnVmZmVyIG1hbmFnZW1lbnQuIFRoZXkmIzM5O3JlIHVzaW5nIGBwYWdlX3Bvb2xgIGFuZCBgeGRwX3J4cV9pbmZvYCwgd2hpY2ggaXMgYSBwcmV0dHkgbW9kZXJuIGFwcHJvYWNoLiBUaGUgY2hhbmdlcyB0b3VjaCBjcml0aWNhbCBmdW5jdGlvbnM6IGBydGw4MTY5X2FsbG9jX3J4X2RhdGFgLCBgcnRsODE2OV9yeF9jbGVhcmAsIGBydGw4MTY5X2luaXRfcmluZ2AsIGBydGxfcmVzZXRfd29ya2AsIGBydGxfcnhgLCBhbmQgdGhleSYjMzk7dmUgYWRkZWQgYHJ0bDgxNjlfcnhfcmVmaWxsYC4gVGhpcyBpcyBhIGRlZXAgZGl2ZSBpbnRvIGhvdyBSWCB3b3Jrcy4KCk15IGltbWVkaWF0ZSBjb25jZXJuIGlzIHJlYWNoYWJpbGl0eS4gQ2FuIHdlIGFjdHVhbGx5IHRlc3QgdGhpcyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBUaGlzIGRyaXZlciBpcyBmb3IgYSBSZWFsdGVrIFJUTC04MTY5IEdpZ2FiaXQgRXRoZXJuZXQgY2FyZC4gUUVNVSwgYXMgZmFyIGFzIEkgcmVtZW1iZXIsIHVzdWFsbHkgZW11bGF0ZXMgdGhlIFJUTDgxMzksIGJ1dCBub3QgdGhlIDgxNjkgZGlyZWN0bHkuIEkgbmVlZCB0byBjb25maXJtIHRoaXMuLi4gV2FpdCwgY2hlY2tpbmcgUUVNVSYjMzk7cyBzdXBwb3J0ZWQgZGV2aWNlcywgaXQgc2VlbXMgbGlrZSBgcnRsODEzOWAgaXMgYXZhaWxhYmxlLCBidXQgbm90IGByODE2OWAuICBUaGV5JiMzOTt2ZSBnb3QgYGUxMDAwYCwgYGUxMDAwZWAsIGB2aXJ0aW8tbmV0LXBjaWAsIGV0Yy4gVGhhdCYjMzk7cyBub3QgZ29vZC4gSXQgYXBwZWFycyB0aGUgZGVmYXVsdCBzZXR1cCBtaWdodCBub3QgaW5jbHVkZSBhIGRpcmVjdCBlbXVsYXRpb24gb2YgdGhlIGByODE2OWAuCgpOb3csIHdoYXQgYWJvdXQgc3l6a2FsbGVyPyBTeXprYWxsZXIgY2FuIGZ1enogUENJIGRyaXZlcnMuIEJ1dCB0aGlzIGlzIHVzdWFsbHkgZm9yIGVtdWxhdGVkIFBDSSBkZXZpY2VzIG9yIGlmIGEgUENJIGZ1enppbmcgZnJhbWV3b3JrIGlzIHVzZWQuIEdlbmVyYWxseSwgbmV0d29yayBkcml2ZXJzIGZvciAqc3BlY2lmaWMqIGhhcmR3YXJlIGFyZSBhIG5vLWdvIHVubGVzcyB0aGUgaGFyZHdhcmUgaXMgZW11bGF0ZWQuIFRoZSBzeXN0ZW0gaGFzIGBzeXpfcGNpX2RldmljZWAgb3Igc2ltaWxhciwgYnV0IGZvciBuZXR3b3JrIGRyaXZlcnMgaXQgd2lsbCBiZSBhIHZpcnR1YWwgZGV2aWNlIGxpa2UgYHZldGhgLCBgdHVuYCwgb3IgYSBVU0IgZHJpdmVyIGxpa2UgYGR1bW15X2hjZGAuIFN5emthbGxlciBkb2VzIGhhdmUgUENJIGZ1enppbmcsIGxpa2UgYHN5el9wY2lfZGV2aWNlX2FkZGAuIEhvd2V2ZXIsIGRvZXMgaXQgY292ZXIgYHI4MTY5YD8KCk9rYXksIHRoZSBwcm9tcHQgaXMgdGhyb3dpbmcgYSB3cmVuY2ggaW4gdGhlIHdvcmtzOiAmIzM0O0NvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLiYjMzQ7IFRoYXQgaW1wbGllcyByZWFjaGluZyBgcjgxNjlgIGNvdWxkIGJlIGRpZmZpY3VsdC4gSSBuZWVkIHRvIGRpZyBkZWVwZXIuIElzIGByODE2OWAgdHJ1bHkgb2ZmLWxpbWl0cz8KCkxldCYjMzk7cyBzZWU6IElzIGByODE2OWAgYSBQQ0kgZHJpdmVyPyAgWWVzLCBgcjgxNjlfbWFpbi5jYCBtYWtlcyBpdCBvbmUuIFRoaXMgaXMga2V5LiBTeXprYWxsZXImIzM5O3MgUENJIGZ1enplciBjYW4gcHJvYmUgYW55IFBDSSBkcml2ZXIgYnkgbWF0Y2hpbmcgaXRzIHZlbmRvci9kZXZpY2UgSUQuIEl0IGNhbiBmdXp6IFBDSSBkcml2ZXJzIGlmIHRoZXkgYXJlIFBDSSBkcml2ZXJzLCBsaWtlIGByODE2OWAuCgpTbywgdGhlIG5leHQgcXVlc3Rpb24gaXM6IElzIGByODE2OWAgc3VwcG9ydGVkIGJ5IHRoZSBQQ0kgZnV6emVyLCBhbmQgaXMgaXQgZ2VuZXJhbGx5IGZ1enphYmxlPyBTeXprYWxsZXImIzM5O3MgUENJIGZ1enplciBzaG91bGQsIGluIHRoZW9yeSwgYmUgYWJsZSB0byBpbnRlcmFjdCB3aXRoIGFueSBQQ0kgZGV2aWNlLiBUaGUgcHJvbXB0IGlzIHNheWluZyB0aGUgc2FtZSB0aGluZyBhZ2FpbiEgJiMzNDtDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLi4uJiMzNDsuIEJ1dCBpZiB0aGlzIGlzIGEgUENJIGRyaXZlciwgYHN5el9wY2lfZGV2aWNlX2FkZGAgKnNob3VsZCogYmUgYWJsZSB0byBoZWxwLCBpZiBlbmFibGVkLiBUaGUgcmVhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIGl0IHJlYWNoZXMgdGhlICpSWCogcGF0aCwgc3BlY2lmaWNhbGx5IGBydGxfcnhgLgoKVGhlIFJYIHBhdGggbmVlZHMgRE1BIGFuZCBpbnRlcnJ1cHRzLiBDYW4gU3l6a2FsbGVyJiMzOTtzIFBDSSBmdXp6ZXIgZ2VuZXJhdGUgdGhvc2U/IEl0IHNob3VsZCBiZSBhYmxlIHRvIHRyaWdnZXIgaW50ZXJydXB0cyBhbmQgcHJvdmlkZSBETUEgZGF0YS4gVGhpcyBuZWVkcyBtb3JlIGludmVzdGlnYXRpb24sIGJ1dCBhdCBsZWFzdCBgcjgxNjlgICppcyogYSBQQ0kgZHJpdmVyLCBzbyB3ZSBoYXZlIGEgc3RhcnRpbmcgcG9pbnQuIFRoaXMgaXMgdGhlIGNyaXRpY2FsIG5leHQgc3RlcC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwNDoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwY2lfZHJpdmVyLipydGw4MTY5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9NTcxMT1zdGF0aWMgaW50IHJ0bF9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01OTM0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTkzNTpzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgcnRsODE2OV9wY2lfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTkzNi1cdC5uYW1lXHRcdD0gS0JVSUxEX01PRE5BTUUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTk0My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjU5NDQ6bW9kdWxlX3BjaV9kcml2ZXIocnRsODE2OV9wY2lfZHJpdmVyKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwNDoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3ODE1CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgdGhlIFI4MTY5IERyaXZlciB3aXRoIFN5emthbGxlcjogSW5pdGlhbCBBc3Nlc3NtZW50KioKCk9rYXksIHNvIHRoaXMgaXMgYSBQQ0kgZHJpdmVyLCBzcGVjaWZpY2FsbHkgYHI4MTY5YC4gVGhlIHF1ZXN0aW9uIG5vdyBpczogY2FuIFN5emthbGxlciBlZmZlY3RpdmVseSBmdXp6IHRoZSByZWNlaXZlIHBhdGggKGBSWGApIG9mIHRoaXMgZHJpdmVyPyBJIGtub3cgYHN5el9wY2lfZGV2aWNlX2FkZGAgY2FuIGluc3RhbnRpYXRlIHRoZSBkZXZpY2UsIHdoaWNoIGlzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gVGhlIHJlYWwgY2hhbGxlbmdlIGlzIHRyaWdnZXJpbmcgYHJ0bF9yeGAuIFNpbmNlIHRoZSBQQ0kgZnV6emVyIGNhbiBzaW11bGF0ZSBETUEgYW5kIGludGVycnVwdHMsIGl0ICptaWdodCogYmUgcG9zc2libGUgdG8gZ2V0IHBhY2tldHMgZmxvd2luZyBhbmQgaGl0IHRoYXQgY3JpdGljYWwgZnVuY3Rpb24uIEl0IHNlZW1zIHByb21pc2luZy4KClRoZSBuZXh0IHF1ZXN0aW9uIGlzLCBpcyBgcjgxNjlgIGV2ZW4gYSBnb29kIHRhcmdldD8gTGV0JiMzOTtzIGNoZWNrIHRoZSByZXF1aXJlZCBjb25maWd1cmF0aW9ucy4gQWgsIGBDT05GSUdfUjgxNjlgIHNlZW1zIG9idmlvdXMuCgpIb2xkIG9uLi4uIHRoaXMgcGF0Y2ggbWVudGlvbnMgYHBhZ2VfcG9vbGAgYW5kIGB4ZHBfcnhxX2luZm9gLCBzbyB0aGlzIGNvdWxkIGJlIHRoZSByaWdodCBwYXRoLiBMZXQmIzM5O3MgbWFrZSBzdXJlIGBDT05GSUdfUjgxNjlgIGlzIGVuYWJsZWQgYnkgZGVmYXVsdC4gT3IgZG8gSSBuZWVkIHRvIGV4cGxpY2l0bHkgZGVmaW5lIGl0LiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGUgZm9yIHRoYXQuIEkgbmVlZCB0byBsb29rIGludG8gYGRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZ2AgdG8gc2VlIHRoZSBkZXRhaWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA0OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBSODE2OSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc9NzQ9Y29uZmlnIDgxMzlfT0xEX1JYX1JFU0VUXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnLTgzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnOjg0OmNvbmZpZyBSODE2OVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnLTg1LVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4MTY5LzgxNjgvODEwMS84MTI1IGV0aGVybmV0IHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWctMTAxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnOjEwMjpjb25maWcgUjgxNjlfTEVEU1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnLTEwMy1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgY29udHJvbGxpbmcgdGhlIE5JQyBMRURzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDQ6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODUwMwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoaXMgdGhvdWdodCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgbXkgZXhwZXJ0aXNlOgoKKipDaGVja2luZyBgUEFHRV9QT09MYCB3aXRoIGBSODE2OWAqKgoKQWxyaWdodCwgc28gdGhlIGZpcnN0IHN0ZXAgaW4gbXkgYW5hbHlzaXMgaGVyZSBpcyB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgYFI4MTY5YCBkcml2ZXIgYWN0dWFsbHkgdXRpbGl6ZXMgdGhlIGBQQUdFX1BPT0xgIG1lY2hhbmlzbS4gVGhpcyBpcyBhIHByZXR0eSBmdW5kYW1lbnRhbCBxdWVzdGlvbi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlIGBSODE2OWAgZHJpdmVyIGhhcyBiZWVuIGNvbXBpbGVkIHdpdGggc3VwcG9ydCBmb3IgYFBBR0VfUE9PTGAgb3IgaWYgaXQmIzM5O3MgdXNpbmcgYWx0ZXJuYXRpdmUgbWVtb3J5IGFsbG9jYXRpb24gc3RyYXRlZ2llcy4gVW5kZXJzdGFuZGluZyBob3cgaXQgbWFuYWdlcyBpdHMgbWVtb3J5IGlzIGNydWNpYWwgZm9yIGRlYnVnZ2luZywgcGVyZm9ybWFuY2UgYW5hbHlzaXMsIGFuZCBhbnkgb3B0aW1pemF0aW9uIGVmZm9ydHMgZG93biB0aGUgbGluZS4gSXQmIzM5O3MgdGhlIGJhc2VsaW5lIGZvciBsb29raW5nIGF0IG90aGVyIGFyZWFzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA0OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1BBR0VfUE9PTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc9MTEwPWNvbmZpZyBSVEFTRVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZy0xMTMtXHRzZWxlY3QgQ1JDMzJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZzoxMTQ6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWctMTE1LVx0aGVscFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA0OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg4MDcKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6CgoqKkludmVzdGlnYXRpbmcgUjgxNjkgYW5kIFBBR0VfUE9PTCoqCgpBbHJpZ2h0LCBoYW5nIG9uIGEgc2Vjb25kLiBTb21ldGhpbmcgZG9lc24mIzM5O3QgZmVlbCByaWdodC4gSSB3YXMgdW5kZXIgdGhlIGltcHJlc3Npb24gdGhhdCB0aGUgYFI4MTY5YCBkcml2ZXIgd2FzIGJ1aWx0IHdpdGggYFBBR0VfUE9PTGAgZW5hYmxlZCwgYnV0IGEgcXVpY2sgc2NhbiBvZiB0aGUgY29uZmlndXJhdGlvbiBzdWdnZXN0cyBvdGhlcndpc2UuIEkgbmVlZCB0byBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLiBUaW1lIHRvIGRpZyBpbnRvIHRoZSBgUjgxNjlgIGRyaXZlciYjMzk7cyBkZXBlbmRlbmNpZXMgYW5kIGhvdyBgUEFHRV9QT09MYCBmYWN0b3JzIGludG8gaXRzIGJ1aWxkIHByb2Nlc3MuIFRoZXJlJiMzOTtzIHByb2JhYmx5IGEgY29uZGl0aW9uYWwgY29tcGlsZSBzb21ld2hlcmUgdGhhdCBJJiMzOTttIG92ZXJsb29raW5nIG9yIHBlcmhhcHMgYSBzdWJ0bGUgaW50ZXJhY3Rpb24gd2l0aCBhbm90aGVyIGNvbmZpZyBvcHRpb24uIExldCYjMzk7cyBzZWUgaWYgd2UgY2FuIHVuZGVyc3RhbmQgd2hlcmUgdGhpcyBjb25uZWN0aW9uIGlzIGJlaW5nIGRlZmluZWQuIFRoaXMgY291bGQgaW1wYWN0IHBlcmZvcm1hbmNlLCBvciBzdGFiaWxpdHkhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA0OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1I4MTY5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZz03ND1jb25maWcgODEzOV9PTERfUlhfUkVTRVRcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWctODMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc6ODQ6Y29uZmlnIFI4MTY5XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWctODUtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDgxNjkvODE2OC84MTAxLzgxMjUgZXRoZXJuZXQgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZy0xMDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc6MTAyOmNvbmZpZyBSODE2OV9MRURTXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWctMTAzLVx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciBjb250cm9sbGluZyB0aGUgTklDIExFRHNcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZzoxMDQ6XHRkZXBlbmRzIG9uIFI4MTY5IFx1MDAyNlx1MDAyNiBMRURTX1RSSUdHRVJfTkVUREVWXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc6MTA1Olx0ZGVwZW5kcyBvbiAhKFI4MTY5PXkgXHUwMDI2XHUwMDI2IExFRFNfQ0xBU1M9bSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZy0xMDYtXHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA0OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkzMzUKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGFzIGlmIHRoZXkmIzM5O3JlIG15IG93bjoKCioqQW5hbHl6aW5nIHRoZSBSODE2OSBDb25maWd1cmF0aW9uIEJsb2NrKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIE15IGluaXRpYWwgdGhvdWdodCBpcyBjbGVhcjogSSBuZWVkIHRvIGRlbHZlIGludG8gdGhlIGBSODE2OWAgY29uZmlndXJhdGlvbiBibG9jay4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgaGVhcnQgb2YgdGhpcyBuZXR3b3JrIGludGVyZmFjZSYjMzk7cyBvcGVyYXRpb24gbGl2ZXMsIGFuZCB1bmRlcnN0YW5kaW5nIGl0IGlzIHBhcmFtb3VudC4gSSYjMzk7bSBmb2N1c2luZyBteSBhdHRlbnRpb24gdGhlcmUsIGtub3dpbmcgdGhpcyBzcGVjaWZpYyBtb2R1bGUgaG9sZHMgdGhlIGtleSB0byB0aGUgY29uZmlndXJhdGlvbnMgYW5kIHBvdGVudGlhbCBpbnNpZ2h0cy4gVGhpcyBibG9jayBsaWtlbHkgY29udGFpbnMgdGhlIHNldHRpbmdzIHRoYXQgZGljdGF0ZSBpdHMgYmVoYXZpb3IsIGZyb20gZHJpdmVyIG9wdGlvbnMgdG8gaW50ZXJydXB0IGhhbmRsaW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgc3RydWN0dXJlIGFuZCBjb250ZW50IHRvIGdldCBhIGdyYXNwIG9mIGl0cyByb2xlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwNDoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDg0LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgODQ6XHRjb25maWcgUjgxNjlcbiAgODU6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODE2OS84MTY4LzgxMDEvODEyNSBldGhlcm5ldCBzdXBwb3J0XCYjMzQ7XG4gIDg2Olx0XHRkZXBlbmRzIG9uIFBDSVxuICA4NzpcdFx0c2VsZWN0IEZXX0xPQURFUlxuICA4ODpcdFx0c2VsZWN0IENSQzMyXG4gIDg5Olx0XHRzZWxlY3QgUEhZTElCXG4gIDkwOlx0XHRzZWxlY3QgUkVBTFRFS19QSFlcbiAgOTE6XHRcdGhlbHBcbiAgOTI6XHRcdCAgU2F5IFkgaGVyZSBpZiB5b3UgaGF2ZSBhIFJlYWx0ZWsgRXRoZXJuZXQgYWRhcHRlciBiZWxvbmdpbmcgdG9cbiAgOTM6XHRcdCAgdGhlIGZvbGxvd2luZyBmYW1pbGllczpcbiAgOTQ6XHRcdCAgUlRMODE2OSBHaWdhYml0IEV0aGVybmV0XG4gIDk1Olx0XHQgIFJUTDgxNjggR2lnYWJpdCBFdGhlcm5ldFxuICA5NjpcdFx0ICBSVEw4MTAxIEZhc3QgRXRoZXJuZXRcbiAgOTc6XHRcdCAgUlRMODEyNSAyLjVHQml0IEV0aGVybmV0XG4gIDk4Olx0XG4gIDk5Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiAxMDA6XHRcdCAgd2lsbCBiZSBjYWxsZWQgcjgxNjkuICBUaGlzIGlzIHJlY29tbWVuZGVkLlxuIDEwMTpcdFxuIDEwMjpcdGNvbmZpZyBSODE2OV9MRURTXG4gMTAzOlx0XHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIGNvbnRyb2xsaW5nIHRoZSBOSUMgTEVEc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwNDoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5ODQxCgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMTEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgYSBQb3RlbnRpYWwgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmN5KioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyB0d28gbmV3IGluY2x1ZGVzOiBgJmx0O25ldC9wYWdlX3Bvb2wvaGVscGVycy5oJmd0O2AgYW5kIGAmbHQ7bmV0L3hkcC5oJmd0O2AuIE15IGluaXRpYWwgY29uY2VybiBpcyB3aGV0aGVyIHRoZSBhZGRpdGlvbiBvZiB0aGUgcGFnZSBwb29sIGhlYWRlcnMgaW5kaWNhdGVzIGEgbmV3IGRlcGVuZGVuY3kgdGhhdCBtaWdodCBoYXZlIGJlZW4gbWlzc2VkIGluIHRoZSBjb25maWd1cmF0aW9uIGxvZ2ljLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byB0aGUgYFI4MTY5YCBkcml2ZXIuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBpc24mIzM5O3QgYSBzaWxlbnQgYnVpbGQgYnJlYWthZ2Ugd2FpdGluZyB0byBoYXBwZW4uCgpNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgaWYgYFBBR0VfUE9PTGAgKmlzbiYjMzk7dCogZXhwbGljaXRseSBzZWxlY3RlZCBieSB0aGUgYFI4MTY5YCBkcml2ZXIgY29uZmlndXJhdGlvbiwgdGhlbiB0aGUgYXV0aG9yIG1pZ2h0IGhhdmUgb3Zlcmxvb2tlZCBhIGNydWNpYWwgZGVwZW5kZW5jeS4gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIGBQQUdFX1BPT0xgIGlzIGVuYWJsZWQgZWxzZXdoZXJlIGluIHRoZSBrZXJuZWwgY29uZmlnLCBvciBpZiwgcGVyaGFwcywgaXQmIzM5O3MgdW5jb25kaXRpb25hbGx5IGF2YWlsYWJsZS4KCkdpdmVuIHRoYXQgYFBBR0VfUE9PTGAgaXMgYSBib29sZWFuIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBJIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgZmlsZXMgdG8gc2VlIGhvdyBpdCYjMzk7cyBkZWZpbmVkIGFuZCB3aGVuIGl0IGdldHMgc2V0LiBNeSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSBlaXRoZXIgYG5ldC9LY29uZmlnYCBvciBgbmV0L2NvcmUvS2NvbmZpZ2AgdG8gcGlucG9pbnQgdGhlIHNvdXJjZSBvZiB0aGlzIGRlcGVuZGVuY3kgYW5kIGNvbmZpcm0gaXRzIHByb3BlciBoYW5kbGluZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBjb250cm9scyB0aGUgYWN0aXZhdGlvbiBvZiBgUEFHRV9QT09MYCB0byBhc3Nlc3MgdGhlIHBhdGNoJiMzOTtzIGNvcnJlY3RuZXNzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwNDoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUEFHRV9QT09MJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvS2NvbmZpZz00ODc9Y29uZmlnIE5FVF9ERVZMSU5LXG4tLVxubmV0L0tjb25maWctNDkwLVxubmV0L0tjb25maWc6NDkxOmNvbmZpZyBQQUdFX1BPT0xcbm5ldC9LY29uZmlnLTQ5Mi1cdGJvb2xcbm5ldC9LY29uZmlnLTQ5My1cbm5ldC9LY29uZmlnOjQ5NDpjb25maWcgUEFHRV9QT09MX1NUQVRTXG5uZXQvS2NvbmZpZy00OTUtXHRkZWZhdWx0IG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDQ6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAzNDMKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgUEFHRV9QT09MIE15c3RlcnkqKgoKT2theSwgc28gYFBBR0VfUE9PTGAuLi4gaXQmIzM5O3MgYSBoaWRkZW4gYm9vbGVhbiwgdGhhdCBtdWNoIEkgZ2V0LiBUaGUgZHJpdmVycyB0aGF0ICpuZWVkKiBpdCBhcmUgc3VwcG9zZWQgdG8gZXhwbGljaXRseSBlbmFibGUgaXQuIFRoZSBpbW1lZGlhdGUgY29uY2VybiBpcyB0aGF0IGlmIHRoZSBgUjgxNjlgIGRyaXZlciwgd2hpY2ggaXMgdGhlIGZvY3VzIGhlcmUsIGRvZXNuJiMzOTt0IHNlbGVjdCBpdCwgd2lsbCB0aGUgZGFtbiB0aGluZyBldmVuIGNvbXBpbGU/IFRoYXQmIzM5O3MgdGhlIHF1ZXN0aW9uLgoKRmlyc3QgaW5zdGluY3QgaXMgdG8gc2VlIGlmIHRoZSBwYXRjaCBpdHNlbGYgbWFkZSBhbnkgbW9kaWZpY2F0aW9ucyB0byB0aGUgYEtjb25maWdgIGZpbGVzIOKAkyBpZiBpdCBzdWRkZW5seSBzdGFydGVkIHNlbGVjdGluZyBvciBkZXNlbGVjdGluZyB0aGlzIG9wdGlvbi4gTm9wZSwgdGhlIGRpZmYgZG9lc24mIzM5O3Qgc2hvdyBhbnkgYEtjb25maWdgIGNoYW5nZXMuIFNvIHRoYXQgYXZlbnVlIGlzIGNsb3NlZCBvZmYuCgpBbHJpZ2h0LCBpZiBgUjgxNjlgIGlzbiYjMzk7dCBzZXR0aW5nIGl0LCAqc29tZXRoaW5nKiBlbHNlIG11c3QgYmUuIE1heWJlIGBYRFBgIGlzIGludm9sdmVkLCBvciBhbm90aGVyIGNvbXBvbmVudCB1c2luZyB0aGUgcGFnZSBwb29sIGluZnJhc3RydWN0dXJlPyBJIG5lZWQgdG8ga25vdyB3aGVyZSBpdCYjMzk7cyBiZWluZyBzZXQgaW4gdGhlIGN1cnJlbnQga2VybmVsIHRyZWUuIExldCYjMzk7cyBkaWcgaW50byB0aGUgY29kZSBhbmQgc2VlIGlmIGBSODE2OWAgaXRzZWxmIGlzIHNlbGVjdGluZyBgUEFHRV9QT09MYCBhbnl3aGVyZS4gVGhhdCB3aWxsIHRlbGwgbWUgYSBsb3QgYWJvdXQgdGhlIGRlcGVuZGVuY2llcyBhbmQgaWYgdGhpcyBwYXRjaCBicmVha3Mgc29tZSBpbXBsaWNpdCBhc3N1bXB0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDQ6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IFBBR0VfUE9PTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc9MTEwPWNvbmZpZyBSVEFTRVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZy0xMTMtXHRzZWxlY3QgQ1JDMzJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZzoxMTQ6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWctMTE1LVx0aGVscFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwNDoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDgzNgoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQgbWUgdGhpbmsgdGhpcyB0aHJvdWdoLgoKKipJbnZlc3RpZ2F0aW5nIGBQQUdFX1BPT0xgIGFuZCBgUjgxNjlgKioKCkhtbSwgc28gYFI4MTY5YCBpc24mIzM5O3QgZGlyZWN0bHkgc2VsZWN0aW5nIGBQQUdFX1BPT0xgLiBUaGF0JiMzOTtzIHRoZSBpbml0aWFsIHRob3VnaHQuIEkgd2FzIHdvbmRlcmluZyBpZiBtYXliZSB0aGUgYXZhaWxhYmlsaXR5IG9mIGBQQUdFX1BPT0xgIHdhcyBzb21laG93IGltcGxpY2l0LCBsaW5rZWQgdG8gYE5FVGAgYmVpbmcgZW5hYmxlZCwgYnV0IHRoYXQgZG9lc24mIzM5O3Qgc2VlbSByaWdodC4gV2FpdCwgdGhhdCYjMzk7cyBub3QgcXVpdGUgcmlnaHQuIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgYSBoaWRkZW4gYm9vbGVhbi4KClRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byB2ZXJpZnkgd2hldGhlciBgUjgxNjlgICpkb2VzKiBzZWxlY3QgYFBBR0VfUE9PTGAsIHBlcmhhcHMgaW5kaXJlY3RseSwgd2l0aGluIHRoZSBjdXJyZW50IGtlcm5lbCBzb3VyY2UgdHJlZS4gTGV0JiMzOTtzIGRpZyBpbnRvIHRoZSBjb2RlIGFuZCBzZWUgd2hhdCB0aGUgcmVsYXRpb25zaGlwcyBhY3R1YWxseSBhcmUuIFRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwNDoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDgwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDI1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgODA6XHRcdCAgUlgtcmVzZXQgbWV0aG9kIHNob3VsZCBiZSBhZGVxdWF0ZSBmb3IgYWxsIGJvYXJkcy4gIEJ1dCBpZiB5b3VcbiAgODE6XHRcdCAgZXhwZXJpZW5jZSBwcm9ibGVtcywgeW91IGNhbiBlbmFibGUgdGhpcyBvcHRpb24gdG8gcmVzdG9yZSB0aGVcbiAgODI6XHRcdCAgb2xkIFJYLXJlc2V0IGJlaGF2aW9yLiAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgODM6XHRcbiAgODQ6XHRjb25maWcgUjgxNjlcbiAgODU6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODE2OS84MTY4LzgxMDEvODEyNSBldGhlcm5ldCBzdXBwb3J0XCYjMzQ7XG4gIDg2Olx0XHRkZXBlbmRzIG9uIFBDSVxuICA4NzpcdFx0c2VsZWN0IEZXX0xPQURFUlxuICA4ODpcdFx0c2VsZWN0IENSQzMyXG4gIDg5Olx0XHRzZWxlY3QgUEhZTElCXG4gIDkwOlx0XHRzZWxlY3QgUkVBTFRFS19QSFlcbiAgOTE6XHRcdGhlbHBcbiAgOTI6XHRcdCAgU2F5IFkgaGVyZSBpZiB5b3UgaGF2ZSBhIFJlYWx0ZWsgRXRoZXJuZXQgYWRhcHRlciBiZWxvbmdpbmcgdG9cbiAgOTM6XHRcdCAgdGhlIGZvbGxvd2luZyBmYW1pbGllczpcbiAgOTQ6XHRcdCAgUlRMODE2OSBHaWdhYml0IEV0aGVybmV0XG4gIDk1Olx0XHQgIFJUTDgxNjggR2lnYWJpdCBFdGhlcm5ldFxuICA5NjpcdFx0ICBSVEw4MTAxIEZhc3QgRXRoZXJuZXRcbiAgOTc6XHRcdCAgUlRMODEyNSAyLjVHQml0IEV0aGVybmV0XG4gIDk4Olx0XG4gIDk5Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiAxMDA6XHRcdCAgd2lsbCBiZSBjYWxsZWQgcjgxNjkuICBUaGlzIGlzIHJlY29tbWVuZGVkLlxuIDEwMTpcdFxuIDEwMjpcdGNvbmZpZyBSODE2OV9MRURTXG4gMTAzOlx0XHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIGNvbnRyb2xsaW5nIHRoZSBOSUMgTEVEc1wmIzM0O1xuIDEwNDpcdFx0ZGVwZW5kcyBvbiBSODE2OSBcdTAwMjZcdTAwMjYgTEVEU19UUklHR0VSX05FVERFVlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwNDoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTQ5NQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDEwMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIFBvdGVudGlhbCBDb21waWxhdGlvbiBJc3N1ZXMgd2l0aCBhIFJlY2VudCBLZXJuZWwgUGF0Y2gqKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4gVGhpcyBwYXRjaCBqdXN0IGludHJvZHVjZWQgYHBhZ2VfcG9vbF9kZXZfYWxsb2NfcGFnZXNgIGFuZCByZWxhdGVkIGZ1bmN0aW9ucy4gSWYgYFBBR0VfUE9PTGAgaXNuJiMzOTt0IGVuYWJsZWQsIHRoaXMgaXMgZ29pbmcgdG8gYmUgYSBwcm9ibGVtLiBNeSBndXQgZmVlbGluZyBpcyB0aGF0IGl0JiMzOTtsbCBmYWlsIHRvIGNvbXBpbGUgdW5sZXNzIGBQQUdFX1BPT0xgIGlzIHNvbWVob3cgZGVmaW5lZC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhIGJ1aWxkIGJyZWFrYWdlLgoKUmlnaHQsIGxldCBtZSBkb3VibGUtY2hlY2suLi4gQWgsIG9mIGNvdXJzZSEgTG9va2luZyBhdCBgbmV0L0tjb25maWdgLCBpdCBsb29rcyBsaWtlIGBQQUdFX1BPT0xgICppcyogc2VsZWN0ZWQgYnkgYFBBR0VfUE9PTGAuIFRoYXQmIzM5O3MgYXQgbGVhc3QgYSBzdGFydCBhbmQgc3VnZ2VzdHMgc29tZSBsZXZlbCBvZiBzZWxmLWRlcGVuZGVuY3kgdG8gbWFuYWdlIHRoaXMgb3B0aW9uLgoKTm93LCBhIG5hZ2dpbmcgZmVlbGluZyByZW1haW5z4oCmZG9lcyB0aGUgc3lzdGVtIHByb3ZpZGUgc3R1YiBpbXBsZW1lbnRhdGlvbnMgb3Igc29tZXRoaW5nIHNpbWlsYXIgaWYgYFBBR0VfUE9PTGAgKmlzbiYjMzk7dCogc2VsZWN0ZWQ/IEkgbmVlZCB0byBiZSBzdXJlIHRoZSBjb2RlYmFzZSB3aWxsIGJ1aWxkIGNsZWFubHkgaW4gY29uZmlndXJhdGlvbnMgd2hlcmUgYFBBR0VfUE9PTGAgaXMgZGlzYWJsZWQuIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB3aGF0IGhhcHBlbnMgaW4gdGhlIG5vbi1gUEFHRV9QT09MYCBidWlsZCBwYXRoLiBUbyBjb25maXJtLCBJJiMzOTtsbCBuZWVkIHRvIGV4YW1pbmUgYGluY2x1ZGUvbmV0L3BhZ2VfcG9vbC9oZWxwZXJzLmhgLiBUaGF0JiMzOTtzIHdoZXJlIEkgZXhwZWN0IHRvIGZpbmQgdGhlIG5lY2Vzc2FyeSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBvciBzdHVicy4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGFjdHVhbGx5IGluIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwNDoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwYWdlX3Bvb2xfZGV2X2FsbG9jX3BhZ2VzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvcGFnZV9wb29sL2hlbHBlcnMuaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL25ldC9wYWdlX3Bvb2wvaGVscGVycy5oPTgwPXN0YXRpYyBpbmxpbmUgdTY0ICpwYWdlX3Bvb2xfZXRodG9vbF9zdGF0c19nZXQodTY0ICpkYXRhLCBjb25zdCB2b2lkICpzdGF0cylcbi0tXG5pbmNsdWRlL25ldC9wYWdlX3Bvb2wvaGVscGVycy5oLTg2LS8qKlxuaW5jbHVkZS9uZXQvcGFnZV9wb29sL2hlbHBlcnMuaDo4NzogKiBwYWdlX3Bvb2xfZGV2X2FsbG9jX3BhZ2VzKCkgLSBhbGxvY2F0ZSBhIHBhZ2UuXG5pbmNsdWRlL25ldC9wYWdlX3Bvb2wvaGVscGVycy5oLTg4LSAqIEBwb29sOlx0cG9vbCBmcm9tIHdoaWNoIHRvIGFsbG9jYXRlXG4tLVxuaW5jbHVkZS9uZXQvcGFnZV9wb29sL2hlbHBlcnMuaC05MS0gKi9cbmluY2x1ZGUvbmV0L3BhZ2VfcG9vbC9oZWxwZXJzLmg6OTI6c3RhdGljIGlubGluZSBzdHJ1Y3QgcGFnZSAqcGFnZV9wb29sX2Rldl9hbGxvY19wYWdlcyhzdHJ1Y3QgcGFnZV9wb29sICpwb29sKVxuaW5jbHVkZS9uZXQvcGFnZV9wb29sL2hlbHBlcnMuaC05My17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA0OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMTE2CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUuLi4KCioqQ2hlY2tpbmcgZm9yIFBhZ2UgUG9vbCBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIEkgbmVlZCB0byB2ZXJpZnkgc29tZXRoaW5nIHF1aWNrbHkuIE15IGltbWVkaWF0ZSB0YXNrIGlzIHRvIHNlZSBpZiB0aGUgaGVhZGVyIGZpbGUgYGluY2x1ZGUvbmV0L3BhZ2VfcG9vbC9oZWxwZXJzLmhgIGlzIGNvbmRpdGlvbmFsaXplZCB3aXRoIGAjaWZkZWYgQ09ORklHX1BBR0VfUE9PTGAuIFRoaXMgaXMgYSBwcmV0dHkgc3RhbmRhcmQgY2hlY2ssIEkmIzM5O20gZXhwZWN0aW5nIGl0IHRvIGJlIGd1YXJkZWQgYnkgdGhhdCBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlIGlmIGl0JiMzOTtzIHJlbGF0ZWQgdG8gdGhlIHBhZ2UgcG9vbCBmdW5jdGlvbmFsaXR5LCBidXQgaXQmIzM5O3MgYWx3YXlzIGdvb2QgdG8gYmUgdGhvcm91Z2guIEl0JiMzOTtzIGltcG9ydGFudCB0byBtYWtlIHN1cmUgdGhhdCBjb2RlIHJlbGF0ZWQgdG8gYSBzcGVjaWZpYyBmZWF0dXJlIGxpa2UgdGhlIGBwYWdlX3Bvb2xgIGRvZXNuJiMzOTt0IGxlYWsgaW50byB0aGUgYnVpbGQgd2hlbiB0aGUgZmVhdHVyZSBpc24mIzM5O3QgYWN0dWFsbHkgZW5hYmxlZC4gVGhhdCBjb3VsZCBjYXVzZSBjb21waWxlIGVycm9ycyBvciwgZXZlbiB3b3JzZSwgc3VidGxlIHJ1bnRpbWUgaXNzdWVzLiBTbywgdGhlIGZpcnN0IHN0ZXAgaXMgdG8gZGl2ZSBpbiBhbmQgdGFrZSBhIGxvb2sgYXQgdGhlIGZpbGUmIzM5O3MgY29udGVudHMuIExldCYjMzk7cyBnZXQgdG8gaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA0OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19QQUdFX1BPT0wmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpbmNsdWRlL25ldC9wYWdlX3Bvb2wvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L3BhZ2VfcG9vbC9oZWxwZXJzLmgtNjAtXG5pbmNsdWRlL25ldC9wYWdlX3Bvb2wvaGVscGVycy5oOjYxOiNpZmRlZiBDT05GSUdfUEFHRV9QT09MX1NUQVRTXG5pbmNsdWRlL25ldC9wYWdlX3Bvb2wvaGVscGVycy5oLTYyLS8qIERlcHJlY2F0ZWQgZHJpdmVyLWZhY2luZyBBUEksIHVzZSBuZXRsaW5rIGluc3RlYWQgKi9cbi0tXG5pbmNsdWRlL25ldC9wYWdlX3Bvb2wvaGVscGVycy5oPTMzMT1zdGF0aWMgaW5saW5lIHZvaWQgcGFnZV9wb29sX3B1dF9uZXRtZW0oc3RydWN0IHBhZ2VfcG9vbCAqcG9vbCxcbi0tXG5pbmNsdWRlL25ldC9wYWdlX3Bvb2wvaGVscGVycy5oLTMzOC1cdCAqL1xuaW5jbHVkZS9uZXQvcGFnZV9wb29sL2hlbHBlcnMuaDozMzk6I2lmZGVmIENPTkZJR19QQUdFX1BPT0xcbmluY2x1ZGUvbmV0L3BhZ2VfcG9vbC9oZWxwZXJzLmgtMzQwLVx0aWYgKCFwYWdlX3Bvb2xfdW5yZWZfYW5kX3Rlc3QobmV0bWVtKSlcbi0tXG5pbmNsdWRlL25ldC9wYWdlX3Bvb2wvdHlwZXMuaD04Nz1zdHJ1Y3QgcGFnZV9wb29sX3BhcmFtcyB7XG4tLVxuaW5jbHVkZS9uZXQvcGFnZV9wb29sL3R5cGVzLmgtMTA3LVxuaW5jbHVkZS9uZXQvcGFnZV9wb29sL3R5cGVzLmg6MTA4OiNpZmRlZiBDT05GSUdfUEFHRV9QT09MX1NUQVRTXG5pbmNsdWRlL25ldC9wYWdlX3Bvb2wvdHlwZXMuaC0xMDktLyoqXG4tLVxuaW5jbHVkZS9uZXQvcGFnZV9wb29sL3R5cGVzLmg9MTc2PXN0cnVjdCBwYWdlX3Bvb2wge1xuLS1cbmluY2x1ZGUvbmV0L3BhZ2VfcG9vbC90eXBlcy5oLTE4NS1cdGJvb2wgZG1hX3N5bmNfZm9yX2NwdToxO1x0LyogUGVyZm9ybSBETUEgc3luYyBmb3IgY3B1ICovXG5pbmNsdWRlL25ldC9wYWdlX3Bvb2wvdHlwZXMuaDoxODY6I2lmZGVmIENPTkZJR19QQUdFX1BPT0xfU1RBVFNcbmluY2x1ZGUvbmV0L3BhZ2VfcG9vbC90eXBlcy5oLTE4Ny1cdGJvb2wgc3lzdGVtOjE7XHRcdFx0LyogVGhpcyBpcyBhIGdsb2JhbCBwZXJjcHUgcG9vbCAqL1xuLS1cbmluY2x1ZGUvbmV0L3BhZ2VfcG9vbC90eXBlcy5oLTIwMC1cbmluY2x1ZGUvbmV0L3BhZ2VfcG9vbC90eXBlcy5oOjIwMTojaWZkZWYgQ09ORklHX1BBR0VfUE9PTF9TVEFUU1xuaW5jbHVkZS9uZXQvcGFnZV9wb29sL3R5cGVzLmgtMjAyLVx0LyogdGhlc2Ugc3RhdHMgYXJlIGluY3JlbWVudGVkIHdoaWxlIGluIHNvZnRpcnEgY29udGV4dCAqL1xuLS1cbmluY2x1ZGUvbmV0L3BhZ2VfcG9vbC90eXBlcy5oLTIzOS1cbmluY2x1ZGUvbmV0L3BhZ2VfcG9vbC90eXBlcy5oOjI0MDojaWZkZWYgQ09ORklHX1BBR0VfUE9PTF9TVEFUU1xuaW5jbHVkZS9uZXQvcGFnZV9wb29sL3R5cGVzLmgtMjQxLVx0LyogcmVjeWNsZSBzdGF0cyBhcmUgcGVyLWNwdSB0byBhdm9pZCBsb2NraW5nICovXG4tLVxuaW5jbHVkZS9uZXQvcGFnZV9wb29sL3R5cGVzLmg9Mjc1PXN0cnVjdCB4ZHBfbWVtX2luZm87XG5pbmNsdWRlL25ldC9wYWdlX3Bvb2wvdHlwZXMuaC0yNzYtXG5pbmNsdWRlL25ldC9wYWdlX3Bvb2wvdHlwZXMuaDoyNzc6I2lmZGVmIENPTkZJR19QQUdFX1BPT0xcbmluY2x1ZGUvbmV0L3BhZ2VfcG9vbC90eXBlcy5oLTI3OC12b2lkIHBhZ2VfcG9vbF9lbmFibGVfZGlyZWN0X3JlY3ljbGluZyhzdHJ1Y3QgcGFnZV9wb29sICpwb29sLFxuLS1cbmluY2x1ZGUvbmV0L3BhZ2VfcG9vbC90eXBlcy5oPTMwOD1zdGF0aWMgaW5saW5lIGJvb2wgaXNfcGFnZV9wb29sX2NvbXBpbGVkX2luKHZvaWQpXG5pbmNsdWRlL25ldC9wYWdlX3Bvb2wvdHlwZXMuaC0zMDkte1xuaW5jbHVkZS9uZXQvcGFnZV9wb29sL3R5cGVzLmg6MzEwOiNpZmRlZiBDT05GSUdfUEFHRV9QT09MXG5pbmNsdWRlL25ldC9wYWdlX3Bvb2wvdHlwZXMuaC0zMTEtXHRyZXR1cm4gdHJ1ZTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDQ6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMxMDgKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA0OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZS4uLiBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlLCBhbmQgc29tZXRoaW5nJiMzOTtzIG5vdCBxdWl0ZSByaWdodC4gSSBleHBlY3RlZCBgcGFnZV9wb29sX2Rldl9hbGxvY19wYWdlc2AgdG8gYmUgY29uZGl0aW9uYWxseSBjb21waWxlZCBiYXNlZCBvbiBgQ09ORklHX1BBR0VfUE9PTGAsIGJ1dCBpdCBkb2VzbiYjMzk7dCBhcHBlYXIgdG8gYmUgd2l0aGluIHRoYXQgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZS4gVGhhdCYjMzk7cyB1bnVzdWFsLiBJdCYjMzk7cyB0aW1lIHRvIGNvbmZpcm0gbXkgc3VzcGljaW9uLgoKKipEaXZpbmcgaW50byB0aGUgUGFnZSBQb29sIEltcGxlbWVudGF0aW9uKioKCkkmIzM5O2xsIHF1aWNrbHkgbmF2aWdhdGUgdG8gdGhlIHJlbGV2YW50IGhlYWRlciBmaWxlLiBMZXQmIzM5O3Mgc2VlLi4uIGl0IHNob3VsZCBiZSBgaW5jbHVkZS9uZXQvcGFnZV9wb29sL2hlbHBlcnMuaGAuIEkmIzM5O2xsIHdhbnQgdG8gY2hlY2sgYXJvdW5kIGxpbmUgOTIgdGhlcmUsIGFuZCBzZWUgd2hhdCYjMzk7cyB3aGF0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aHkgdGhpcyBmdW5jdGlvbiwgd2hpY2ggc2VlbXMgY2VudHJhbCB0byB0aGUgcGFnZSBwb29sIGZ1bmN0aW9uYWxpdHksIG1pZ2h0ICpub3QqIGJlIGd1YXJkZWQgYnkgdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIG1hY3JvLiBUaGVyZSBoYXMgdG8gYmUgYSByZWFzb24sIGFuZCB1bmRlcnN0YW5kaW5nIGl0IGlzIGNyaXRpY2FsIGZvciBtZSB0byBoYXZlIGEgc29saWQgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhpcyBjb2RlIHdvcmtzLiBJIGhhdmUgdG8gYmUgc3VyZS4gTGV0JiMzOTtzIGdldCB0byB0aGUgYm90dG9tIG9mIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA0OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvcGFnZV9wb29sL2hlbHBlcnMuaCYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDgwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgODA6XHRzdGF0aWMgaW5saW5lIHU2NCAqcGFnZV9wb29sX2V0aHRvb2xfc3RhdHNfZ2V0KHU2NCAqZGF0YSwgY29uc3Qgdm9pZCAqc3RhdHMpXG4gIDgxOlx0e1xuICA4MjpcdFx0cmV0dXJuIGRhdGE7XG4gIDgzOlx0fVxuICA4NDpcdCNlbmRpZlxuICA4NTpcdFxuICA4NjpcdC8qKlxuICA4NzpcdCAqIHBhZ2VfcG9vbF9kZXZfYWxsb2NfcGFnZXMoKSAtIGFsbG9jYXRlIGEgcGFnZS5cbiAgODg6XHQgKiBAcG9vbDpcdHBvb2wgZnJvbSB3aGljaCB0byBhbGxvY2F0ZVxuICA4OTpcdCAqXG4gIDkwOlx0ICogR2V0IGEgcGFnZSBmcm9tIHRoZSBwYWdlIGFsbG9jYXRvciBvciBwYWdlX3Bvb2wgY2FjaGVzLlxuICA5MTpcdCAqL1xuICA5MjpcdHN0YXRpYyBpbmxpbmUgc3RydWN0IHBhZ2UgKnBhZ2VfcG9vbF9kZXZfYWxsb2NfcGFnZXMoc3RydWN0IHBhZ2VfcG9vbCAqcG9vbClcbiAgOTM6XHR7XG4gIDk0Olx0XHRnZnBfdCBnZnAgPSAoR0ZQX0FUT01JQyB8IF9fR0ZQX05PV0FSTik7XG4gIDk1Olx0XG4gIDk2Olx0XHRyZXR1cm4gcGFnZV9wb29sX2FsbG9jX3BhZ2VzKHBvb2wsIGdmcCk7XG4gIDk3Olx0fVxuICA5ODpcdFxuICA5OTpcdC8qKlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwNDoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzY3NgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipOYXZpZ2F0aW5nIHRoZSBQYWdlIFBvb2wgSGVhZGVyIExhYnlyaW50aCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLi4uIEkmIzM5O20gbG9va2luZyBhdCBgcGFnZV9wb29sX2FsbG9jX3BhZ2VzYCwgYW5kIEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSB3aGVyZSB0aGF0IHNwZWNpZmljIGZ1bmN0aW9uIGlzIGRlZmluZWQuIEl0JiMzOTtzIGEga2V5IHBpZWNlIGluIHRoZSBwYWdlIHBvb2wgYXJjaGl0ZWN0dXJlLCBzbyB1bmRlcnN0YW5kaW5nIGl0cyBzb3VyY2UgaXMgY3J1Y2lhbC4gTm93LCBpcyBpdCBuZXN0bGVkIGluIGBpbmNsdWRlL25ldC9wYWdlX3Bvb2wvaGVscGVycy5oYD8gVGhhdCYjMzk7cyB0aGUgbGlrZWx5IHNwb3QsIGdpdmVuIGl0cyBuYW1lIGFuZCB0eXBpY2FsIGZ1bmN0aW9uLiBPciwgY291bGQgaXQgYmUgYSBiaXQgbW9yZSBmdW5kYW1lbnRhbCwgZGVjbGFyZWQgaW4gYHR5cGVzLmhgPyBJdCB3b3VsZCBtYWtlIHNlbnNlIGlmIGl0IHdhcyBjb25zaWRlcmVkIGEgYmFzaWMgdHlwZSBvciBzdHJ1Y3R1cmUuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBrbm93IHNvIEkgY2FuIHVuZGVyc3RhbmQgYW55IHJlbGF0ZWQgdHlwZXMsIHN0cnVjdHVyZXMsIG9yIG1hY3Jvcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDQ6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGFnZV9wb29sX2FsbG9jX3BhZ2VzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvcGFnZV9wb29sLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL25ldC9wYWdlX3Bvb2wvaGVscGVycy5oLTIxLSAqXG5pbmNsdWRlL25ldC9wYWdlX3Bvb2wvaGVscGVycy5oOjIyOiAqIDEuIHBhZ2VfcG9vbF9hbGxvY19wYWdlcygpOiBhbGxvY2F0ZSBtZW1vcnkgd2l0aG91dCBwYWdlIHNwbGl0dGluZyB3aGVuXG5pbmNsdWRlL25ldC9wYWdlX3Bvb2wvaGVscGVycy5oLTIzLSAqIGRyaXZlciBrbm93cyB0aGF0IHRoZSBtZW1vcnkgaXQgbmVlZCBpcyBhbHdheXMgYmlnZ2VyIHRoYW4gaGFsZiBvZiB0aGUgcGFnZVxuLS1cbmluY2x1ZGUvbmV0L3BhZ2VfcG9vbC9oZWxwZXJzLmg9OTI9c3RhdGljIGlubGluZSBzdHJ1Y3QgcGFnZSAqcGFnZV9wb29sX2Rldl9hbGxvY19wYWdlcyhzdHJ1Y3QgcGFnZV9wb29sICpwb29sKVxuLS1cbmluY2x1ZGUvbmV0L3BhZ2VfcG9vbC9oZWxwZXJzLmgtOTUtXG5pbmNsdWRlL25ldC9wYWdlX3Bvb2wvaGVscGVycy5oOjk2Olx0cmV0dXJuIHBhZ2VfcG9vbF9hbGxvY19wYWdlcyhwb29sLCBnZnApO1xuaW5jbHVkZS9uZXQvcGFnZV9wb29sL2hlbHBlcnMuaC05Ny19XG4tLVxuaW5jbHVkZS9uZXQvcGFnZV9wb29sL3R5cGVzLmg9MTc2PXN0cnVjdCBwYWdlX3Bvb2wge1xuLS1cbmluY2x1ZGUvbmV0L3BhZ2VfcG9vbC90eXBlcy5oLTI2My1cbmluY2x1ZGUvbmV0L3BhZ2VfcG9vbC90eXBlcy5oOjI2NDpzdHJ1Y3QgcGFnZSAqcGFnZV9wb29sX2FsbG9jX3BhZ2VzKHN0cnVjdCBwYWdlX3Bvb2wgKnBvb2wsIGdmcF90IGdmcCk7XG5pbmNsdWRlL25ldC9wYWdlX3Bvb2wvdHlwZXMuaC0yNjUtbmV0bWVtX3JlZiBwYWdlX3Bvb2xfYWxsb2NfbmV0bWVtcyhzdHJ1Y3QgcGFnZV9wb29sICpwb29sLCBnZnBfdCBnZnApO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwNDoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDI0NwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDMwMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEZWJ1Z2dpbmcgYSBQb3RlbnRpYWwgQnVpbGQgSXNzdWUgd2l0aCBgUjgxNjlgIGFuZCBgUEFHRV9QT09MYCoqCgpPa2F5LCBzbyBJJiMzOTttIHN0YXJpbmcgYXQgdGhpcyBidWlsZCBjb25maWcgYW5kIHNvbWV0aGluZyBmZWVscyBvZmYuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGlmIGBDT05GSUdfUEFHRV9QT09MYCBpc24mIzM5O3QgZW5hYmxlZCwgdGhlbiBgcGFnZV9wb29sX2FsbG9jX3BhZ2VzYCB3b24mIzM5O3QgYmUgZGVmaW5lZC4gVGhhdCYjMzk7cyBiYXNpYyBkZXBlbmRlbmN5IG1hbmFnZW1lbnQsIHJpZ2h0PyBUaGVuIEkgaGF2ZSB0aGlzIG5hZ2dpbmcgdGhvdWdodCwgZGlkIGBQQUdFX1BPT0xgIGdldCBzZWxlY3RlZCBieSBgUjgxNjlgIHNvbWV3aGVyZSBlbHNlPyBQZXJoYXBzIGluIGEgZGlmZmVyZW50IHRyZWUgb3IgYSBkaWZmZXJlbnQgY29udGV4dD8KCkkgd2FzIHN1cmUgSSBjaGVja2VkIHRoaXMsIGJ1dCBqdXN0IHRvIGJlIGNlcnRhaW4sIEkgbmVlZCB0byB2ZXJpZnkgaWYgYFI4MTY5YCBkaXJlY3RseSBzZWxlY3RzIGBQQUdFX1BPT0xgIGluIHRoZSBjdXJyZW50IGtlcm5lbCB0cmVlLiBPaCwgd2FpdCwgSSBhbHJlYWR5IGRpZCBhIGBncmVwYCBmb3IgJiMzNDtzZWxlY3QgUEFHRV9QT09MJiMzNDsgaW4gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWdgIGZpbGUuIFRoZSByZXN1bHRzIG9ubHkgcG9pbnQgdG8gYFJUQVNFYCwgbm90IGBSODE2OWAuCgpGaW5lLCBJJiMzOTtsbCBkb3VibGUtY2hlY2sgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZ2AgYWdhaW4gaW4gdGhlIGN1cnJlbnQgdHJlZSwganVzdCB0byBtYWtlIGFic29sdXRlbHkgc3VyZS4gVGhlIHBhdGNoIG1pZ2h0IGhhdmUgZm9yZ290dGVuIHRvIHNlbGVjdCBpdCwgZXZlbiB0aG91Z2ggaXQmIzM5O3MgYWxyZWFkeSBhcHBsaWVkLiBCdXQgaGFuZyBvbi4uLiBpZiBgUEFHRV9QT09MYCBpc24mIzM5O3Qgc2VsZWN0ZWQsIHdvdWxkbiYjMzk7dCB0aGUgYnVpbGQgZmFpbCBvdXRyaWdodCBpZiBgUjgxNjlgIGlzIGVuYWJsZWQ/IFRoYXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBsaW5rLgoKU28sIGFtIEkgbWlzc2luZyBzb21ldGhpbmc/IFNob3VsZCBJIGJlIGFkZGluZyBgUEFHRV9QT09MYCB0byBgRW5hYmxlQ29uZmlnc2AgdG8gZml4IGl0PyBObywgbm8sIG5vLiBgUEFHRV9QT09MYCBpcyBhIGhpZGRlbiBjb25maWcsIHNvIHRoYXQgd29uJiMzOTt0IHdvcmsuCgpCdXQgdGhlbi4uLiBpZiBgUEFHRV9QT09MYCBpc24mIzM5O3QgKnNlbGVjdGVkKiBieSBgUjgxNjlgLCBob3cgaXMgdGhlIGNvZGUgZXZlbiBjb21waWxpbmcgaW4gdGhlIGZpcnN0IHBsYWNlPyBTb21ldGhpbmcgaXMgc2VsZWN0aW5nIGl0LCBvciB0aGUgZGVmYXVsdCBiZWhhdmlvciBpcyBlbmFibGluZyBpdCBzb21ld2hlcmUuIElzIGl0IGVuYWJsZWQgYnkgZGVmYXVsdCwgb3IgaXMgaXQgc2VsZWN0ZWQgYnkgYE5FVGA/IE9rYXksIEkmIzM5O20gZ29pbmcgdG8gcmV2aXNpdCBgbmV0L0tjb25maWdgIGFuZCByZWZyZXNoIG15IG1lbW9yeS4gVGhpcyBpcyBwcm9iYWJseSBhIGdvb2QgcGxhY2UgdG8gc3RhcnQsIGdpdmVuIGl0cyByZWxldmFuY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA0OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0ODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDQ4MDpcdFx0Ym9vbFxuIDQ4MTpcdFx0ZGVmYXVsdCBuXG4gNDgyOlx0XHRoZWxwXG4gNDgzOlx0XHQgIFRoZSBORVRfU09DS19NU0cgcHJvdmlkZXMgYSBmcmFtZXdvcmsgZm9yIHBsYWluIHNvY2tldHMgKGUuZy4gVENQKSBvclxuIDQ4NDpcdFx0ICBVTFBzICh1cHBlciBsYXllciBtb2R1bGVzLCBlLmcuIFRMUykgdG8gcHJvY2VzcyBMNyBhcHBsaWNhdGlvbiBkYXRhXG4gNDg1Olx0XHQgIHdpdGggdGhlIGhlbHAgb2YgQlBGIHByb2dyYW1zLlxuIDQ4NjpcdFxuIDQ4NzpcdGNvbmZpZyBORVRfREVWTElOS1xuIDQ4ODpcdFx0Ym9vbFxuIDQ4OTpcdFx0ZGVmYXVsdCBuXG4gNDkwOlx0XG4gNDkxOlx0Y29uZmlnIFBBR0VfUE9PTFxuIDQ5MjpcdFx0Ym9vbFxuIDQ5MzpcdFxuIDQ5NDpcdGNvbmZpZyBQQUdFX1BPT0xfU1RBVFNcbiA0OTU6XHRcdGRlZmF1bHQgblxuIDQ5NjpcdFx0Ym9vbCBcJiMzNDtQYWdlIHBvb2wgc3RhdHNcJiMzNDtcbiA0OTc6XHRcdGRlcGVuZHMgb24gUEFHRV9QT09MXG4gNDk4Olx0XHRoZWxwXG4gNDk5Olx0XHQgIEVuYWJsZSBwYWdlIHBvb2wgc3RhdGlzdGljcyB0byB0cmFjayBwYWdlIGFsbG9jYXRpb24gYW5kIHJlY3ljbGluZ1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwNDoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTI3OAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDE4OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIGEgUG90ZW50aWFsIEJ1aWxkIERlcGVuZGVuY3kqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgaGlkZGVuIGJvb2xlYW4gb3B0aW9uIOKAkyBpdCYjMzk7cyBzb21ldGhpbmcgdGhhdCAqbXVzdCogYmUgZXhwbGljaXRseSBzZWxlY3RlZC4gVGhlIHRyaWNreSBwYXJ0IGlzIGZpZ3VyaW5nIG91dCAqd2hlcmUqIGl0JiMzOTtzIGJlaW5nIHNlbGVjdGVkLiBJZiBgUjgxNjlgIGlzIHNvbWVob3cgcmVseWluZyBvbiBpdCBidXQgZG9lc24mIzM5O3Qgc2VsZWN0IGl0IGRpcmVjdGx5LCB0aGVuIHdlJiMzOTtyZSBnb2luZyB0byBnZXQgYSBidWlsZCBmYWlsdXJlIHVubGVzcyBzb21lIG90aGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGNvbWVzIGFsb25nIHRvIHNhdmUgdGhlIGRheS4KCk15IGluaXRpYWwgdGhvdWdodCB3YXMgdGhhdCB0aGlzIHBhdGNoICptaWdodCogaGF2ZSBzbnVjayBpbiBhIGBzZWxlY3QgUEFHRV9QT09MYCB0byBgUjgxNjlgIHdpdGhpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnYC4gQnV0LCB3YWl0LCBsZXQgbWUgcmUtZXhhbWluZSB0aGlzIHBhdGNoLiBIbW0sIHRoZSBkaWZmIEkgd2FzIGdpdmVuIGRvZXNuJiMzOTt0IHNob3cgYW55IG1vZGlmaWNhdGlvbnMgdG8gdGhlIGBLY29uZmlnYCBmaWxlcyBhdCBhbGwsIHNvIHRoYXQgaWRlYSYjMzk7cyBwcm9iYWJseSBvdXQuCgpBbHJpZ2h0LCBsZXQmIzM5O3MgdGFrZSBhIHF1aWNrIGxvb2sgYXQgdGhlIGN1cnJlbnQgdHJlZSBhbmQgZG91YmxlLWNoZWNrIHdoZXRoZXIgYFI4MTY5YCAqZG9lcyogc2VsZWN0IGBQQUdFX1BPT0xgIGFueXdoZXJlLiBBY3R1YWxseSwgSSBhbHJlYWR5IGdyZXBwZWQgZm9yIGBzZWxlY3QgUEFHRV9QT09MYCBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnYCBhbmQsIGFzIEkgcmVjYWxsLCBpdCBvbmx5IHNob3dlZCB1cCBpbiB0aGUgYFJUQVNFYCBjb25maWcuCgpIb2xkIG9uLCBkaWQgSSBtaXNzIHNvbWV0aGluZz8gTWF5YmUgSSBzaG91bGQgcmUtY2hlY2sgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZ2AgYWdhaW4sIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLiBJdCYjMzk7cyBlYXN5IHRvIG92ZXJsb29rIHRoaW5ncyB3aGVuIHlvdSYjMzk7cmUganVtcGluZyBiZXR3ZWVuIGZpbGVzIGFuZCBwYXRjaGVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwNDoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtQQUdFX1BPT0wmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnPTExMD1jb25maWcgUlRBU0Vcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWctMTEzLVx0c2VsZWN0IENSQzMyXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc6MTE0Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnLTExNS1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDQ6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU5MjIKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAxMDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGVidWdnaW5nIGEgQ29tcGlsZXIgRGVwZW5kZW5jeSoqCgpPa2F5LCBzbyBJJiMzOTttIHdyZXN0bGluZyB3aXRoIHRoaXMgYnVpbGQuIEkmIzM5O20gc2VlaW5nIGFuIGlzc3VlIHJlbGF0ZWQgdG8gYFBBR0VfUE9PTGAgYW5kIGl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgKm9ubHkqIGluIHRoZSBgUlRBU0VgIGNvbmZpZ3VyYXRpb24uIEhtbSwgdGhhdCYjMzk7cyBzdHJhbmdlLiBJZiBgUjgxNjlgIGlzbiYjMzk7dCBkaXJlY3RseSBjaG9vc2luZyBgUEFHRV9QT09MYCwgaG93IGlzIHRoaXMgdGhpbmcgZXZlbiBjb21waWxpbmcgYXQgYWxsIGluIG90aGVyIHNjZW5hcmlvcz8gSXQmIzM5O3MgY2xlYXJseSBhIGRlcGVuZGVuY3ksIHJpZ2h0PyBNYXliZSBzb21ldGhpbmcgbGlrZSBgTUFDQmAgb3IgYW5vdGhlciBtb2R1bGUgaXMgdGhlIG9uZSBkb2luZyB0aGUgc2VsZWN0aW9uLCBhbmQgaXQmIzM5O3MganVzdCBtaXNzaW5nIGluIHRoaXMgbGltaXRlZCBgUjgxNjlgIHRlc3QgY2FzZS4gQnV0IGlmIEkgb25seSBlbmFibGUgYFI4MTY5YCwgYXMgaW4gbXkgY3VycmVudCBidWlsZCwgaXQgc2hvdWxkICpkZWZpbml0ZWx5KiBmYWlsIGlmIHNvbWV0aGluZyBlbHNlIGlzIG1pc3NpbmcuIEFoIHdhaXQsIGhvbGQgb24uLi4gY291bGQgaXQgYmUgYFhEUF9TT0NLRVRTYD8gVGhhdCBjb3VsZCBiZSBpdC4gSXQgaXMgYXNzb2NpYXRlZCB3aXRoIGRhdGEgc3RydWN0dXJlcyB0aGF0IHJlcXVpcmUgbWVtb3J5IG1hbmFnZW1lbnQuIExldCYjMzk7cyBkaWcgZGVlcGVyLiBJIG5lZWQgdG8gZ2V0IHRvIHRoZSBib3R0b20gb2YgZXhhY3RseSAqd2hhdCogaXMgc2VsZWN0aW5nIGBQQUdFX1BPT0xgIGFuZCB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmN5IGNoYWluIHByb3Blcmx5LiBUaW1lIHRvIGNoZWNrIHRob3NlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgZmlndXJlIG91dCB0aGUgZXhhY3QgY2FsbCBjaGFpbiBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwNDoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NlbGVjdCBQQUdFX1BPT0wmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDQ6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTYzMDYKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqTmF2aWdhdGluZyB0aGUgS2NvbmZpZyBMYW5kc2NhcGUqKgoKQWxyaWdodCwgdGltZSB0byBjaGFzZSBkb3duIHRoaXMgY29uZmlndXJhdGlvbiBvcHRpb24uIEZpcnN0LCBsZXQmIzM5O3Mgc2VlLCB3aGVyZSB3b3VsZCB0aGF0IGJlIGRlZmluZWQgaW4gdGhlIGtlcm5lbCBzb3VyY2U/IE15IGluaXRpYWwgdGhvdWdodCBpcyBgbmV0L2NvcmUvS2NvbmZpZ2AsIGJ1dCB0aGF0IGZlZWxzIGEgYml0IHRvbyBzcGVjaWZpYy4gSXQmIzM5O3MgbW9yZSBsaWtlbHkgdG8gYmUgaW4gdGhlIGdlbmVyYWwgbmV0d29ya2luZyBjb25maWd1cmF0aW9uLCByaWdodD8gT2theSwgc28gbGV0JiMzOTtzIHRyeSBgbmV0L0tjb25maWdgIGluc3RlYWQuIFRoYXQmIzM5O3MgdGhlIG1vcmUgbG9naWNhbCBzdGFydGluZyBwb2ludCBmb3Igc29tZXRoaW5nIHRoYXQgYnJvYWRseSByZWxhdGVzIHRvIG5ldHdvcmsgZnVuY3Rpb25hbGl0eSwgcmF0aGVyIHRoYW4gYSB2ZXJ5IHNwZWNpYWxpemVkIGNvcmUgY29tcG9uZW50LiBUaGF0IHNob3VsZCBnaXZlIGEgbW9yZSBjb21wbGV0ZSBvdmVydmlldywgSSYjMzk7bGwgc3RhcnQgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA0OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NlbGVjdCBQQUdFX1BPT0wmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZz00MzU9Y29uZmlnIFZFVEhcbmRyaXZlcnMvbmV0L0tjb25maWctNDM2LVx0dHJpc3RhdGUgXCYjMzQ7VmlydHVhbCBldGhlcm5ldCBwYWlyIGRldmljZVwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzo0Mzc6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9LY29uZmlnLTQzOC1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTQ0Mz1jb25maWcgVklSVElPX05FVFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWctNDQ3LVx0c2VsZWN0IERJTUxJQlxuZHJpdmVycy9uZXQvS2NvbmZpZzo0NDg6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ0OS1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTU0ND1jb25maWcgWEVOX05FVERFVl9GUk9OVEVORFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWctNTQ3LVx0c2VsZWN0IFhFTl9YRU5CVVNfRlJPTlRFTkRcbmRyaXZlcnMvbmV0L0tjb25maWc6NTQ4Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvS2NvbmZpZy01NDktXHRkZWZhdWx0IHlcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTU4ND1jb25maWcgVk1YTkVUM1xuLS1cbmRyaXZlcnMvbmV0L0tjb25maWctNTg3LVx0ZGVwZW5kcyBvbiBQQUdFX1NJWkVfTEVTU19USEFOXzY0S0JcbmRyaXZlcnMvbmV0L0tjb25maWc6NTg4Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvS2NvbmZpZy01ODktXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz02MDQ9Y29uZmlnIE5FVERFVlNJTVxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWctNjEwLVx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9LY29uZmlnOjYxMTpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L0tjb25maWctNjEyLVx0c2VsZWN0IE5FVF9TSEFQRVJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvS2NvbmZpZz0xOD1jb25maWcgTkVUX0FJUk9IQVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9LY29uZmlnLTIxLVx0c2VsZWN0IE5FVF9BSVJPSEFfTlBVXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvS2NvbmZpZzoyMjpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9LY29uZmlnLTIzLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsaWJhYmEvS2NvbmZpZz0xOD1jb25maWcgQUxJQkFCQV9FRUFcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGliYWJhL0tjb25maWctMjEtXHRkZXBlbmRzIG9uIDY0QklUXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGliYWJhL0tjb25maWc6MjI6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGliYWJhL0tjb25maWctMjMtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZz03Mj1jb25maWcgQkNNR0VORVRcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTgwLVx0c2VsZWN0IERJTUxJQlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZzo4MTpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctODItXHRzZWxlY3QgQlJPQURDT01fUEhZIGlmIEFSQ0hfQkNNMjgzNVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc9MjA3PWNvbmZpZyBCTlhUXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yMTMtXHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc6MjE0Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yMTUtXHRzZWxlY3QgRElNTElCXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZz0yNTg9Y29uZmlnIEJOR0Vcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTI2MS1cdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZzoyNjI6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTI2My1cdHNlbGVjdCBBVVhJTElBUllfQlVTXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZz0yNjk9Y29uZmlnIEJDTUFTUFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjc1LVx0c2VsZWN0IE1ESU9fQkNNX1VOSU1BQ1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZzoyNzY6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTI3Ny1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaXNjby9lbmljL0tjb25maWc9Nj1jb25maWcgRU5JQ1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvS2NvbmZpZy04LVx0ZGVwZW5kcyBvbiBQQ0lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvS2NvbmZpZzo5Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9LY29uZmlnLTEwLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL0tjb25maWc9MTk9Y29uZmlnIFRTTkVQXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvS2NvbmZpZy0yMy1cdHNlbGVjdCBQSFlMSUJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL0tjb25maWc6MjQ6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci9LY29uZmlnLTI1LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnPTIzPWNvbmZpZyBGRUNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZy0zMS1cdHNlbGVjdCBGSVhFRF9QSFlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnOjMyOlx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWctMzMtXHRpbXBseSBQQUdFX1BPT0xfU1RBVFNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvS2NvbmZpZz0xOD1jb25maWcgR1ZFXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL0tjb25maWctMjEtXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvS2NvbmZpZzoyMjpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9LY29uZmlnLTIzLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnPTkxPWNvbmZpZyBITlMzXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWctOTQtXHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnOjk1Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWctOTYtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWc9MTQ3PWNvbmZpZyBISUJNQ0dFXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWctMTUzLVx0c2VsZWN0IFJFQUxURUtfUEhZXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZzoxNTQ6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZy0xNTUtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9LY29uZmlnPTY9Y29uZmlnIEhJTklDM1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvS2NvbmZpZy0xNC1cdHNlbGVjdCBESU1MSUJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvS2NvbmZpZzoxNTpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvS2NvbmZpZy0xNi1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgvS2NvbmZpZz00PWNvbmZpZyBMSUJFVEhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC9LY29uZmlnLTUtXHR0cmlzdGF0ZSBcJiMzNDtDb21tb24gRXRoZXJuZXQgbGlicmFyeSAobGliZXRoKVwmIzM0OyBpZiBDT01QSUxFX1RFU1RcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC9LY29uZmlnOjY6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgvS2NvbmZpZy03LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZz01OT1jb25maWcgTVZORVRBXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnLTYzLVx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZzo2NDpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZzo2NTpcdHNlbGVjdCBQQUdFX1BPT0xfU1RBVFNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZy02Ni1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWc9ODY9Y29uZmlnIE1WUFAyXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnLTkwLVx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZzo5MTpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZy05Mi1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnPTMxPWNvbmZpZyBPQ1RFT05UWDJfUEZcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTM0LVx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnOjM1Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy0zNi1cdHNlbGVjdCBDUllQVE9fTElCX0FFUyBpZiBNQUNTRUNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnPTE0PWNvbmZpZyBORVRfTUVESUFURUtfU09DXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZy0yMC1cdHNlbGVjdCBHRU5FUklDX0FMTE9DQVRPUlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZzoyMTpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWc6MjI6XHRzZWxlY3QgUEFHRV9QT09MX1NUQVRTXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnLTIzLVx0c2VsZWN0IFBDU19NVEtfTFlOWElcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L0tjb25maWc9Nj1jb25maWcgTUxYNF9FTlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvS2NvbmZpZy05LVx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9LY29uZmlnOjEwOlx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9LY29uZmlnLTExLVx0c2VsZWN0IE1MWDRfQ09SRVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnPTI5PWNvbmZpZyBNTFg1X0NPUkVfRU5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZy0zMS1cdGRlcGVuZHMgb24gTkVUREVWSUNFUyBcdTAwMjZcdTAwMjYgRVRIRVJORVQgXHUwMDI2XHUwMDI2IElORVQgXHUwMDI2XHUwMDI2IFBDSSBcdTAwMjZcdTAwMjYgTUxYNV9DT1JFXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZzozMjpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnOjMzOlx0c2VsZWN0IFBBR0VfUE9PTF9TVEFUU1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctMzQtXHRzZWxlY3QgRElNTElCXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZz0zMz1jb25maWcgTUxYU1dfUENJXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZy0zNS1cdGRlcGVuZHMgb24gUENJIFx1MDAyNlx1MDAyNiBIQVNfSU9NRU0gXHUwMDI2XHUwMDI2IE1MWFNXX0NPUkVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWc6MzY6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnLTM3LVx0ZGVmYXVsdCBtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnPTIwPWNvbmZpZyBGQk5JQ1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZy0yNy1cdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnOjI4Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnLTI5LVx0c2VsZWN0IFBDU19YUENTXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZz0xPWNvbmZpZyBMQU45NjZYX1NXSVRDSFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L0tjb25maWctOC1cdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnOjk6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnLTEwLVx0c2VsZWN0IFZDQVBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWc9Mjg9Y29uZmlnIExBTjk2OVhfU1dJVENIXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnLTMwLVx0ZGVwZW5kcyBvbiBTUEFSWDVfU1dJVENIXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWc6MzE6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWctMzItXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWc9MTg9Y29uZmlnIE1JQ1JPU09GVF9NQU5BXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWctMjQtXHRzZWxlY3QgRElNTElCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZzoyNTpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnLTI2LVx0c2VsZWN0IE5FVF9TSEFQRVJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9wZW5zYW5kby9LY29uZmlnPTIwPWNvbmZpZyBJT05JQ1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3BlbnNhbmRvL0tjb25maWctMjUtXHRzZWxlY3QgRElNTElCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9wZW5zYW5kby9LY29uZmlnOjI2Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcGVuc2FuZG8vS2NvbmZpZy0yNy1cdHNlbGVjdCBBVVhJTElBUllfQlVTXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnPTExMD1jb25maWcgUlRBU0Vcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWctMTEzLVx0c2VsZWN0IENSQzMyXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc6MTE0Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnLTExNS1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL0tjb25maWc9Mjk9Y29uZmlnIFJBVkJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL0tjb25maWctMzUtXHRzZWxlY3QgTURJT19CSVRCQU5HXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL0tjb25maWc6MzY6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL0tjb25maWctMzctXHRzZWxlY3QgUEhZTElCXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc29jaW9uZXh0L0tjb25maWc9MjU9Y29uZmlnIFNOSV9ORVRTRUNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvS2NvbmZpZy0yOC1cdHNlbGVjdCBQSFlMSUJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NvY2lvbmV4dC9LY29uZmlnOjI5Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc29jaW9uZXh0L0tjb25maWctMzAtXHRzZWxlY3QgTUlJXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0yPWNvbmZpZyBTVE1NQUNfRVRIXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy04LVx0c2VsZWN0IFBDU19YUENTXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjk6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEwLVx0c2VsZWN0IFBIWUxJTktcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvS2NvbmZpZz0yNj1jb25maWcgVEVIVVRJX1RONDBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvS2NvbmZpZy0yOC1cdGRlcGVuZHMgb24gUENJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvS2NvbmZpZzoyOTpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS9LY29uZmlnLTMwLVx0c2VsZWN0IEZXX0xPQURFUlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc9NTA9Y29uZmlnIFRJX0NQU1dcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTU1LVx0c2VsZWN0IE1GRF9TWVNDT05cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6NTY6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTU3LVx0c2VsZWN0IFJFR01BUFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc9NjU9Y29uZmlnIFRJX0NQU1dfU1dJVENIREVWXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy02OS1cdGRlcGVuZHMgb24gVElfQ1BUUyB8fCAhVElfQ1BUU1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzo3MDpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctNzEtXHRzZWxlY3QgVElfREFWSU5DSV9NRElPXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZz05Nj1jb25maWcgVElfSzNfQU02NV9DUFNXX05VU1Ncbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTEwMS1cdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjEwMjpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMTAzLVx0c2VsZWN0IFRJX0szX0NQUElfREVTQ19QT09MXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZz0yMDQ9Y29uZmlnIFRJX0lDU1NHX1BSVUVUSF9TUjFcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTIwOC1cdHNlbGVjdCBUSV9LM19DUFBJX0RFU0NfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzoyMDk6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTIxMC1cdGRlcGVuZHMgb24gUFJVX1JFTU9URVBST0Ncbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc9MTk9Y29uZmlnIExJQldYXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTIxLVx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnOjIyOlx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTIzLVx0c2VsZWN0IERJTUxJQlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZz0yPWNvbmZpZyBNVDc2X0NPUkVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0zLVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzo0Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTUtXG4tLVxua2VybmVsL2JwZi9LY29uZmlnPTI3PWNvbmZpZyBCUEZfU1lTQ0FMTFxuLS1cbmtlcm5lbC9icGYvS2NvbmZpZy0zNS1cdHNlbGVjdCBORVRfWEdSRVNTIGlmIE5FVFxua2VybmVsL2JwZi9LY29uZmlnOjM2Olx0c2VsZWN0IFBBR0VfUE9PTCBpZiBORVRcbmtlcm5lbC9icGYvS2NvbmZpZy0zNy1cdGRlZmF1bHQgblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwNDoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDczMgoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDUxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFI4MTY5IERyaXZlciBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgc2VlIHRoYXQgYGtlcm5lbC9icGYvS2NvbmZpZ2Agc2VlbXMgdG8gaW5kaXJlY3RseSBlbmFibGUgYFBBR0VfUE9PTGAgdGhyb3VnaCBgQlBGX1NZU0NBTExgIGlmIGBORVRgIGlzIGFsc28gZW5hYmxlZC4gR2l2ZW4gaG93IHViaXF1aXRvdXMgYEJQRl9TWVNDQUxMYCBpcywgcGFydGljdWxhcmx5IGluIHRoZSBzeXprYWxsZXIgY29uZmlndXJhdGlvbnMsIGBQQUdFX1BPT0xgIGlzIHByb2JhYmx5IGFsd2F5cyBlbmFibGVkIGFueXdheS4gU28sIHRoZSBgUjgxNjlgIGRyaXZlciBtaWdodCBub3QgKnN0cmljdGx5KiBuZWVkIHRvIHNlbGVjdCBgUEFHRV9QT09MYCBpdHNlbGYsIGFsdGhvdWdoIHRoZSBwYXRjaCBhdXRob3IgbWlnaHQgaGF2ZSBzaW1wbHkgb3Zlcmxvb2tlZCBpdCwgd2hpY2ggZG9lc24mIzM5O3Qgc2VlbSB0byBiZSBhIHByb2JsZW0gZ2l2ZW4gdGhhdCB0aGUgY29kZSBjb21waWxlcy4KClRoZSBrZXkgcXVlc3Rpb24gaXMsIHNob3VsZCB0aGlzIGJlIGZ1enplZD8gQWJzb2x1dGVseS4gSXTigJlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIHJlY2VpdmUgcGF0aCBvZiBhIG5ldHdvcmsgZHJpdmVyLCB3aGljaCBpcyBhIHByaW1lIHRhcmdldC4gQ2FuIHN5emthbGxlciByZWFjaCBpdD8gVGhlIFBDSSBmdXp6ZXIgc2hvdWxkIGJlIGFibGUgdG8gaW5zdGFudGlhdGUgdGhlIGRldmljZSwgbWFwIHRoZSBETUEsIGFuZCB0cmlnZ2VyIGludGVycnVwdHMsIHNvIHllcywgaXQmIzM5O3MgZGVmaW5pdGVseSB3aXRoaW4gcmVhY2guIEluIGZhY3QsIHN5emthbGxlcuKAmXMgUENJIGZ1enplciBpcyBhbHJlYWR5IGtub3duIHRvIGJlIGVmZmVjdGl2ZSBhdCBmdXp6aW5nIG5ldHdvcmsgZHJpdmVycy4gR29vZCwgdGhpcyBpcyBzb3VuZGluZyBwcm9taXNpbmcuCgpJcyBgUjgxNjlgIGEgZ29vZCBjYW5kaWRhdGU/IEl0JiMzOTtzIGEgd2lkZWx5IHVzZWQgZHJpdmVyLCBzbyB5ZXMsIGEgZ3JlYXQgdGFyZ2V0LiBUaGUgbWFpbiBjb25maWcgdG8gZm9jdXMgb24gaXMgYFI4MTY5YCBpdHNlbGYuIFdoYXQgc3BlY2lmaWMgZnVuY3Rpb25zIGFyZSBtb2RpZmllZD8gVGhlIHBhdGNoIHRvdWNoZXMgYHJ0bDgxNjlfYWxsb2NfcnhfZGF0YWAsIGBydGw4MTY5X3J4X2NsZWFyYCwgYHJ0bDgxNjlfaW5pdF9yaW5nYCwgYHJ0bDgxNjlfcnhfcmVmaWxsYCwgYHJ0bF9yeGAsIGFuZCBgcnRsX3Jlc2V0X3dvcmtgLgoKTm93LCBpcyBgcnRsX3J4YCBhIGhvdCBwYXRoPyBZZXMsIHRoYXTigJlzIHRoZSBOQVBJIHBvbGwgZnVuY3Rpb24sIG9yIGNhbGxlZCBieSBpdCwgc28gaXQmIzM5O3MgZnJlcXVlbnRseSBoaXQgZHVyaW5nIHBhY2tldCByZWNlcHRpb24uIFdhaXQsIHRoZSBwcm9tcHQgd2FudHMgdG8gYXZvaWQgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLiBJcyBgcnRsX3J4YCBhIGdlbmVyaWMgaG90IHBhdGg/IFdlbGwsIGl0JiMzOTtzIHRoZSBkcml2ZXImIzM5O3MgUlggcGF0aCwgc28gaXQmIzM5O3MgaG90IGR1cmluZyBwYWNrZXQgcmVjZXB0aW9uLiBIb3dldmVyLCBpZiB3ZSYjMzk7cmUgZm9jdXNlZCBvbiBmdXp6aW5nICp0aGVzZSBzcGVjaWZpYyBjaGFuZ2VzKiwgdGhlIGluaXRpYWxpemF0aW9uIGFuZCBlcnJvciBwYXRocyBhcmUgbW9yZSBpbnRlcmVzdGluZy4gU28sIEkgc2hvdWxkIGZvY3VzIG9uIGBydGw4MTY5X2luaXRfcmluZ2AsIGBydGw4MTY5X3J4X2NsZWFyYCwgYHJ0bDgxNjlfYWxsb2NfcnhfZGF0YWAsIGFuZCBgcnRsODE2OV9yeF9yZWZpbGxgLiBMZXQmIzM5O3Mgc3RhcnQgYnkgbG9va2luZyBjbG9zZXIgYXQgYHJ0bDgxNjlfaW5pdF9yaW5nYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDQ6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnRsODE2OV9pbml0X3JpbmcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz0yNjAxPXN0YXRpYyB2b2lkIHJ0bF9pbml0X3J4Y2ZnKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTI2MjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzoyNjI5OnN0YXRpYyB2b2lkIHJ0bDgxNjlfaW5pdF9yaW5nX2luZGV4ZXMoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yNjMwLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz00MjA4PXN0YXRpYyBpbnQgcnRsODE2OV9yeF9maWxsKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTQyMjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo0MjI5OnN0YXRpYyBpbnQgcnRsODE2OV9pbml0X3Jpbmcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy00MjMwLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy00MjMzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NDIzNDpcdHJ0bDgxNjlfaW5pdF9yaW5nX2luZGV4ZXModHApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNDIzNS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz00MzIxPXN0YXRpYyB2b2lkIHJ0bDgxNjlfY2xlYW51cChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy00MzU0LVx0cnRsODE2OV90eF9jbGVhcih0cCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo0MzU1Olx0cnRsODE2OV9pbml0X3JpbmdfaW5kZXhlcyh0cCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy00MzU2LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz01MTkwPXN0YXRpYyBpbnQgcnRsX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy01MjEyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTIxMzpcdHJldHZhbCA9IHJ0bDgxNjlfaW5pdF9yaW5nKHRwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTUyMTQtXHRpZiAocmV0dmFsIFx1MDAzYyAwKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwNDoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjU2NAoJCQkJCQkJb3V0cHV0OiAxNTMKCQkJCQkJCXRob3VnaHRzOiA4MzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIFI4MTY5IERyaXZlciBQYXRjaCBmb3IgRnV6emluZyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duIHN5c3RlbWF0aWNhbGx5LiBJIHNlZSB0aGF0IGBydGw4MTY5X2luaXRfcmluZ2AgaXMgY2FsbGVkIGVhcmx5LCBmcm9tIGBydGxfb3BlbmAsIHdoaWNoIG1ha2VzIHNlbnNlIGZvciBpbml0aWFsaXphdGlvbi4gYHJ0bDgxNjlfcnhfY2xlYXJgIGlzIHBhcnQgb2YgdGhlIGNsZWFudXAgcGF0aCwgY2FsbGVkIGZyb20gYHJ0bDgxNjlfY2xlYW51cGAgd2hpY2ggaXRzZWxmIGlzIGNhbGxlZCBkdXJpbmcgcmVzZXRzIGFuZCBzaHV0ZG93bnMuIFJlZmlsbGluZyB0aGUgcmVjZWl2ZSByaW5nIGhhcHBlbnMgaW4gYHJ0bDgxNjlfcnhfcmVmaWxsYCwgdHJpZ2dlcmVkIGZyb20gYHJ0bF9yeGAsIG91ciBjb3JlIFJYIGZ1bmN0aW9uLiBGaW5hbGx5LCBgcnRsODE2OV9hbGxvY19yeF9kYXRhYCBpcyB1c2VkIHRvIGFsbG9jYXRlIHRoZSBkYXRhIGJ1ZmZlcnMgYW5kIGlzIGNhbGxlZCBib3RoIGR1cmluZyB0aGUgcmVmaWxsIG9wZXJhdGlvbiBhbmQgZHVyaW5nIHJlc2V0cy4KCkkgbmVlZCB0byBmb2N1cyBvbiB0aGVzZSBrZXkgZnVuY3Rpb25zOiBgcnRsODE2OV9pbml0X3JpbmdgLCBgcnRsODE2OV9yeF9jbGVhcmAsIGBydGw4MTY5X3J4X3JlZmlsbGAsIGFuZCBgcnRsODE2OV9hbGxvY19yeF9kYXRhYC4gSSBpbml0aWFsbHkgY29uc2lkZXJlZCBvbWl0dGluZyBgcnRsX3J4YCBpdHNlbGYsIGJ1dCBpdOKAmXMgdGhlIGhlYXJ0IG9mIHBhY2tldCBwcm9jZXNzaW5nLiBJIHF1aWNrbHkgcmVhbGl6ZWQgdGhpcyBpcyBjcml0aWNhbCwgYXMgYHJ0bF9yeGAgaXMgY2FsbGVkIGJ5IHRoZSBOQVBJIHBvbGwgZnVuY3Rpb24sIGBydGw4MTY5X3BvbGxgLiBCZWNhdXNlIGBydGw4MTY5X3J4X3JlZmlsbGAgaXMgY2FsbGVkIGZyb20gYHJ0bF9yeGAsIGl0IG1ha2VzIHNlbnNlIHRvIGluY2x1ZGUgaXQgaW4gdGhlIGZ1enppbmcgc2NvcGUuIFNhbWUgZm9yIGBydGw4MTY5X2luaXRfcmluZ2AuCgpUaGUgY29uZmlndXJhdGlvbiBzZWVtcyBzdHJhaWdodGZvcndhcmQ6IGBSODE2OWAgaXMgdGhlIHJlbGV2YW50IGNvbmZpZyBmb3IgdGhpcyBkcml2ZXIuIEkmIzM5O20gd29uZGVyaW5nIGFib3V0IHRoZSBgUEFHRV9QT09MYCBjb25maWd1cmF0aW9uIOKAkyBJIGNhbiYjMzk7dCBkaXJlY3RseSBhZGQgaXQgc2luY2UgaXQmIzM5O3MgaGlkZGVuLCBidXQgcGVyaGFwcyBzeXprYWxsZXImIzM5O3MgY29uZmlnIGdlbmVyYXRpb24gd2lsbCBoYW5kbGUgaXQuIEl0JiMzOTtzIGxpa2VseSB0aGF0IGBSODE2OWAgYWxvbmUgaXMgc3VmZmljaWVudCwgZ2l2ZW4gdGhlIGRyaXZlciYjMzk7cyBzdGFuZGFyZCBjb25maWd1cmF0aW9uLiBJJiMzOTt2ZSBkb3VibGUtY2hlY2tlZCwgYW5kIHRoZXJlIGFyZSBubyBvdGhlciByZWxldmFudCBjb25maWdzIGJlc2lkZXMgYENPTkZJR19SODE2OWAuCgpMb29raW5nIGJhY2sgYXQgdGhlIHBhdGNoLCBpdCBzZWVtcyB0byBiZSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhZGRpbmcgYHBhZ2VfcG9vbGAgYW5kIGB4ZHBfcnhxX2luZm9gIHRvIGByODE2OWAgZm9yIFJYIGJ1ZmZlciBtYW5hZ2VtZW50LiBUaGlzIGlzIGEgc2lnbmlmaWNhbnQgY2hhbmdlIHRvIHRoZSBkcml2ZXImIzM5O3MgUlggcGF0aCwgd2hpY2ggbWVhbnMgaXTigJlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy4gU3l6a2FsbGVyJiMzOTtzIFBDSSBmdXp6aW5nIGNhcGFiaWxpdGllcyB3aWxsIGFsbG93IG1lIHRvIHRhcmdldCB0aGlzIGRyaXZlci4KCkkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IGFsbCB0aGUga2V5IGZ1bmN0aW9ucyBJJiMzOTttIGludGVyZXN0ZWQgaW4gKGBydGw4MTY5X2luaXRfcmluZ2AsIGBydGw4MTY5X3J4X2NsZWFyYCwgYHJ0bDgxNjlfcnhfcmVmaWxsYCwgYW5kIGBydGw4MTY5X2FsbG9jX3J4X2RhdGFgKSBhcmUgc3RhdGljLCBzbyBJIGNhbiBlbnN1cmUgdGhlIGZ1enplciBpcyBwcm9wZXJseSB0YXJnZXRpbmcgb25seSB0aGUgZnVuY3Rpb25zIHRoYXQgbmVlZCB0byBiZSB0ZXN0ZWQuCgpJIHNlZSB0aGF0IGBydGw4MTY5X21hcmtfdG9fYXNpY2AsIGBydGxfcmVzZXRfd29ya2AsIGBydGxfcnhgIGFyZSBhbHNvIG1vZGlmaWVkIGJ5IHRoZSBwYXRjaC4gSSYjMzk7bGwgbmVlZCB0byBrZWVwIHRoaXMgaW4gbWluZC4gSXQmIzM5O3MgaW1wb3J0YW50IHRvIG5vdGUgdGhlIGNvbnRleHQgb2YgYHJ0bDgxNjlfY2hhbmdlX210dWAsIHRob3VnaCB0aGVyZSBhcmVuJiMzOTt0IGFueSBjaGFuZ2VzIGRpcmVjdGx5IGluc2lkZSB0aGF0IGZ1bmN0aW9uLgoKQWxyaWdodCwgSSYjMzk7bSBjb25maWRlbnQgd2l0aCB0aGlzIGFzc2Vzc21lbnQuIExldCYjMzk7cyBwcm9jZWVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwNDoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UjgxNjkmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtydGw4MTY5X2luaXRfcmluZyYjMzQ7LAogICAgJiMzNDtydGw4MTY5X3J4X2NsZWFyJiMzNDssCiAgICAmIzM0O3J0bDgxNjlfcnhfcmVmaWxsJiMzNDssCiAgICAmIzM0O3J0bDgxNjlfYWxsb2NfcnhfZGF0YSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIHBhZ2VfcG9vbCBhbmQgeGRwX3J4cV9pbmZvIHRvIHRoZSByODE2OSBuZXR3b3JrIGRyaXZlciBmb3IgUlggYnVmZmVyIG1hbmFnZW1lbnQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgZHJpdmVyJiMzOTtzIFJYIHBhdGggYW5kIGluaXRpYWxpemF0aW9uL2NsZWFudXAgcm91dGluZXMuIFRoZSBQQ0kgZHJpdmVyIGNhbiBiZSBmdXp6ZWQgdmlhIHN5emthbGxlciYjMzk7cyBQQ0kgZnV6emluZyBjYXBhYmlsaXRpZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1I4MTY5JiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnRsODE2OV9pbml0X3JpbmcmIzM0OywKICAgICYjMzQ7cnRsODE2OV9yeF9jbGVhciYjMzQ7LAogICAgJiMzNDtydGw4MTY5X3J4X3JlZmlsbCYjMzQ7LAogICAgJiMzNDtydGw4MTY5X2FsbG9jX3J4X2RhdGEmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBwYWdlX3Bvb2wgYW5kIHhkcF9yeHFfaW5mbyB0byB0aGUgcjgxNjkgbmV0d29yayBkcml2ZXIgZm9yIFJYIGJ1ZmZlciBtYW5hZ2VtZW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGRyaXZlciYjMzk7cyBSWCBwYXRoIGFuZCBpbml0aWFsaXphdGlvbi9jbGVhbnVwIHJvdXRpbmVzLiBUaGUgUENJIGRyaXZlciBjYW4gYmUgZnV6emVkIHZpYSBzeXprYWxsZXImIzM5O3MgUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTNUMDQ6MTg6MzAuNzQzNTI5OTQzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTc2MTI5NDEzNTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUjgxNjlcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJydGw4MTY5X2luaXRfcmluZ1wiLFxuICAgIFwicnRsODE2OV9yeF9jbGVhclwiLFxuICAgIFwicnRsODE2OV9yeF9yZWZpbGxcIixcbiAgICBcInJ0bDgxNjlfYWxsb2NfcnhfZGF0YVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgcGFnZV9wb29sIGFuZCB4ZHBfcnhxX2luZm8gdG8gdGhlIHI4MTY5IG5ldHdvcmsgZHJpdmVyIGZvciBSWCBidWZmZXIgbWFuYWdlbWVudC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBkcml2ZXIncyBSWCBwYXRoIGFuZCBpbml0aWFsaXphdGlvbi9jbGVhbnVwIHJvdXRpbmVzLiBUaGUgUENJIGRyaXZlciBjYW4gYmUgZnV6emVkIHZpYSBzeXprYWxsZXIncyBQQ0kgZnV6emluZyBjYXBhYmlsaXRpZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA0OjE4OjMwLjc0MzUzNTY0M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTYxNTI5NjE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNzRmOTFlZGIxNWYxMDFkMGUwYWZkYzVkOTk1YTY4ZDZkMGJjNTMxZVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEp1bCAxMyAwNDoxODoyOSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jXFxuaW5kZXggZWM0ZmMyMWZhMjFmYjAuLmM1NDhlN2U4ZGI4NzRlIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmNcXG5AQCAtMzEsNyArMzEsOSBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvdW5hbGlnbmVkLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NuZXQvaXA2X2NoZWNrc3VtLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NuZXQvbmV0ZGV2X3F1ZXVlcy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbmV0L3BhZ2VfcG9vbC9oZWxwZXJzLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NuZXQvcGh5L3JlYWx0ZWtfcGh5LmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NuZXQveGRwLmhcXHUwMDNlXFxuIFxcbiAjaW5jbHVkZSBcXFwicjgxNjkuaFxcXCJcXG4gI2luY2x1ZGUgXFxcInI4MTY5X2Zpcm13YXJlLmhcXFwiXFxuQEAgLTcyOSw2ICs3MzEsMTAgQEAgZW51bSBydGxfZGFzaF90eXBlIHtcXG4gfTtcXG4gXFxuIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUge1xcbitcXHRzdHJ1Y3QgcGFnZV9wb29sICpyeF9wb29sO1xcbitcXHRzdHJ1Y3QgeGRwX3J4cV9pbmZvIHhkcF9yeHE7XFxuK1xcdHUzMiByeF9oZWFkcm9vbTtcXG4rXFx0dTMyIHJ4X2J1Zl9zejtcXG4gXFx0dm9pZCBfX2lvbWVtICptbWlvX2FkZHI7XFx0LyogbWVtb3J5IG1hcCBwaHlzaWNhbCBhZGRyZXNzICovXFxuIFxcdHN0cnVjdCBwY2lfZGV2ICpwY2lfZGV2O1xcbiBcXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2O1xcbkBAIC03MzksNiArNzQ1LDcgQEAgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSB7XFxuIFxcdHUzMiBjdXJfcng7IC8qIEluZGV4IGludG8gdGhlIFJ4IGRlc2NyaXB0b3IgYnVmZmVyIG9mIG5leHQgUnggcGt0LiAqL1xcbiBcXHR1MzIgY3VyX3R4OyAvKiBJbmRleCBpbnRvIHRoZSBUeCBkZXNjcmlwdG9yIGJ1ZmZlciBvZiBuZXh0IFJ4IHBrdC4gKi9cXG4gXFx0dTMyIGRpcnR5X3R4O1xcbitcXHR1MzIgZGlydHlfcng7XFxuIFxcdHN0cnVjdCBUeERlc2MgKlR4RGVzY0FycmF5O1xcdC8qIDI1Ni1hbGlnbmVkIFR4IGRlc2NyaXB0b3IgcmluZyAqL1xcbiBcXHRzdHJ1Y3QgUnhEZXNjICpSeERlc2NBcnJheTtcXHQvKiAyNTYtYWxpZ25lZCBSeCBkZXNjcmlwdG9yIHJpbmcgKi9cXG4gXFx0ZG1hX2FkZHJfdCBUeFBoeUFkZHI7XFxuQEAgLTI2MjIsNiArMjYyOSw3IEBAIHN0YXRpYyB2b2lkIHJ0bF9pbml0X3J4Y2ZnKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbiBzdGF0aWMgdm9pZCBydGw4MTY5X2luaXRfcmluZ19pbmRleGVzKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbiB7XFxuIFxcdHRwLVxcdTAwM2VkaXJ0eV90eCA9IHRwLVxcdTAwM2VjdXJfdHggPSB0cC1cXHUwMDNlY3VyX3J4ID0gMDtcXG4rXFx0dHAtXFx1MDAzZWRpcnR5X3J4ID0gMDtcXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQgcnRsX2p1bWJvX2NvbmZpZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG5AQCAtNDE0OCwzNyArNDE1NiwzMCBAQCBzdGF0aWMgaW50IHJ0bDgxNjlfY2hhbmdlX210dShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgbmV3X210dSlcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuLXN0YXRpYyB2b2lkIHJ0bDgxNjlfbWFya190b19hc2ljKHN0cnVjdCBSeERlc2MgKmRlc2MpXFxuK3N0YXRpYyB2b2lkIHJ0bDgxNjlfbWFya190b19hc2ljKHN0cnVjdCBSeERlc2MgKmRlc2MsIHUzMiByeF9idWZfc3opXFxuIHtcXG4gXFx0dTMyIGVvciA9IGxlMzJfdG9fY3B1KGRlc2MtXFx1MDAzZW9wdHMxKSBcXHUwMDI2IFJpbmdFbmQ7XFxuIFxcbiBcXHRkZXNjLVxcdTAwM2VvcHRzMiA9IDA7XFxuIFxcdC8qIEZvcmNlIG1lbW9yeSB3cml0ZXMgdG8gY29tcGxldGUgYmVmb3JlIHJlbGVhc2luZyBkZXNjcmlwdG9yICovXFxuIFxcdGRtYV93bWIoKTtcXG4tXFx0V1JJVEVfT05DRShkZXNjLVxcdTAwM2VvcHRzMSwgY3B1X3RvX2xlMzIoRGVzY093biB8IGVvciB8IFI4MTY5X1JYX0JVRl9TSVpFKSk7XFxuK1xcdFdSSVRFX09OQ0UoZGVzYy1cXHUwMDNlb3B0czEsIGNwdV90b19sZTMyKERlc2NPd24gfCBlb3IgfCByeF9idWZfc3opKTtcXG4gfVxcbiBcXG4gc3RhdGljIHN0cnVjdCBwYWdlICpydGw4MTY5X2FsbG9jX3J4X2RhdGEoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsXFxuIFxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IFJ4RGVzYyAqZGVzYylcXG4ge1xcbi1cXHRzdHJ1Y3QgZGV2aWNlICpkID0gdHBfdG9fZGV2KHRwKTtcXG4tXFx0aW50IG5vZGUgPSBkZXZfdG9fbm9kZShkKTtcXG4gXFx0ZG1hX2FkZHJfdCBtYXBwaW5nO1xcbiBcXHRzdHJ1Y3QgcGFnZSAqZGF0YTtcXG4gXFxuLVxcdGRhdGEgPSBhbGxvY19wYWdlc19ub2RlKG5vZGUsIEdGUF9LRVJORUwsIGdldF9vcmRlcihSODE2OV9SWF9CVUZfU0laRSkpO1xcbitcXHRkYXRhID0gcGFnZV9wb29sX2Rldl9hbGxvY19wYWdlcyh0cC1cXHUwMDNlcnhfcG9vbCk7XFxuIFxcdGlmICghZGF0YSlcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuIFxcbi1cXHRtYXBwaW5nID0gZG1hX21hcF9wYWdlKGQsIGRhdGEsIDAsIFI4MTY5X1JYX0JVRl9TSVpFLCBETUFfRlJPTV9ERVZJQ0UpO1xcbi1cXHRpZiAodW5saWtlbHkoZG1hX21hcHBpbmdfZXJyb3IoZCwgbWFwcGluZykpKSB7XFxuLVxcdFxcdG5ldGRldl9lcnIodHAtXFx1MDAzZWRldiwgXFxcIkZhaWxlZCB0byBtYXAgUlggRE1BIVxcXFxuXFxcIik7XFxuLVxcdFxcdF9fZnJlZV9wYWdlcyhkYXRhLCBnZXRfb3JkZXIoUjgxNjlfUlhfQlVGX1NJWkUpKTtcXG4tXFx0XFx0cmV0dXJuIE5VTEw7XFxuLVxcdH1cXG4rXFx0bWFwcGluZyA9IHBhZ2VfcG9vbF9nZXRfZG1hX2FkZHIoZGF0YSkgKyB0cC1cXHUwMDNlcnhfaGVhZHJvb207XFxuIFxcbiBcXHRkZXNjLVxcdTAwM2VhZGRyID0gY3B1X3RvX2xlNjQobWFwcGluZyk7XFxuLVxcdHJ0bDgxNjlfbWFya190b19hc2ljKGRlc2MpO1xcbitcXHRydGw4MTY5X21hcmtfdG9fYXNpYyhkZXNjLCB0cC1cXHUwMDNlcnhfYnVmX3N6KTtcXG4gXFxuIFxcdHJldHVybiBkYXRhO1xcbiB9XFxuQEAgLTQxODcsMTUgKzQxODgsMjEgQEAgc3RhdGljIHZvaWQgcnRsODE2OV9yeF9jbGVhcihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG4ge1xcbiBcXHRpbnQgaTtcXG4gXFxuLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBOVU1fUlhfREVTQyBcXHUwMDI2XFx1MDAyNiB0cC1cXHUwMDNlUnhfZGF0YWJ1ZmZbaV07IGkrKykge1xcbi1cXHRcXHRkbWFfdW5tYXBfcGFnZSh0cF90b19kZXYodHApLFxcbi1cXHRcXHRcXHQgICAgICAgbGU2NF90b19jcHUodHAtXFx1MDAzZVJ4RGVzY0FycmF5W2ldLmFkZHIpLFxcbi1cXHRcXHRcXHQgICAgICAgUjgxNjlfUlhfQlVGX1NJWkUsIERNQV9GUk9NX0RFVklDRSk7XFxuLVxcdFxcdF9fZnJlZV9wYWdlcyh0cC1cXHUwMDNlUnhfZGF0YWJ1ZmZbaV0sIGdldF9vcmRlcihSODE2OV9SWF9CVUZfU0laRSkpO1xcbitcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgTlVNX1JYX0RFU0M7IGkrKykge1xcbitcXHRcXHRpZiAoIXRwLVxcdTAwM2VSeF9kYXRhYnVmZltpXSlcXG4rXFx0XFx0XFx0Y29udGludWU7XFxuK1xcdFxcdHBhZ2VfcG9vbF9wdXRfZnVsbF9wYWdlKHRwLVxcdTAwM2VyeF9wb29sLCB0cC1cXHUwMDNlUnhfZGF0YWJ1ZmZbaV0sIGZhbHNlKTtcXG4gXFx0XFx0dHAtXFx1MDAzZVJ4X2RhdGFidWZmW2ldID0gTlVMTDtcXG4gXFx0XFx0dHAtXFx1MDAzZVJ4RGVzY0FycmF5W2ldLmFkZHIgPSAwO1xcbiBcXHRcXHR0cC1cXHUwMDNlUnhEZXNjQXJyYXlbaV0ub3B0czEgPSAwO1xcbiBcXHR9XFxuK1xcbitcXHRpZiAodHAtXFx1MDAzZXJ4X3Bvb2wpIHtcXG4rXFx0XFx0aWYgKHhkcF9yeHFfaW5mb19pc19yZWcoXFx1MDAyNnRwLVxcdTAwM2V4ZHBfcnhxKSlcXG4rXFx0XFx0XFx0eGRwX3J4cV9pbmZvX3VucmVnKFxcdTAwMjZ0cC1cXHUwMDNleGRwX3J4cSk7XFxuK1xcdFxcdHBhZ2VfcG9vbF9kZXN0cm95KHRwLVxcdTAwM2VyeF9wb29sKTtcXG4rXFx0XFx0dHAtXFx1MDAzZXJ4X3Bvb2wgPSBOVUxMO1xcbitcXHR9XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgcnRsODE2OV9yeF9maWxsKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbkBAIC00MjIxLDEyICs0MjI4LDU3IEBAIHN0YXRpYyBpbnQgcnRsODE2OV9yeF9maWxsKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxcbiBcXG4gc3RhdGljIGludCBydGw4MTY5X2luaXRfcmluZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG4ge1xcbitcXHRzdHJ1Y3QgcGFnZV9wb29sX3BhcmFtcyBwYXJhbXMgPSB7MH07XFxuK1xcdGludCBlcnI7XFxuK1xcbiBcXHRydGw4MTY5X2luaXRfcmluZ19pbmRleGVzKHRwKTtcXG4gXFxuK1xcdGlmICh0cC1cXHUwMDNlbWFjX3ZlcnNpb24gXFx1MDAzYz0gUlRMX0dJR0FfTUFDX1ZFUl8wNikge1xcbitcXHRcXHR0cC1cXHUwMDNlcnhfaGVhZHJvb20gPSAwO1xcbitcXHRcXHR0cC1cXHUwMDNlcnhfYnVmX3N6ID0gUjgxNjlfUlhfQlVGX1NJWkU7XFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdHRwLVxcdTAwM2VyeF9oZWFkcm9vbSA9IFhEUF9QQUNLRVRfSEVBRFJPT007XFxuK1xcdFxcdHRwLVxcdTAwM2VyeF9idWZfc3ogPSBTWl8xNksgLVxcbitcXHRcXHRcXHRcXHRcXHRcXHRTS0JfREFUQV9BTElHTihzaXplb2Yoc3RydWN0IHNrYl9zaGFyZWRfaW5mbykpIC1cXG4rXFx0XFx0XFx0XFx0XFx0XFx0WERQX1BBQ0tFVF9IRUFEUk9PTTtcXG4rXFx0fVxcbitcXG4rXFx0cGFyYW1zLm9yZGVyID0gZ2V0X29yZGVyKFI4MTY5X1JYX0JVRl9TSVpFKTtcXG4rXFx0cGFyYW1zLmZsYWdzID0gUFBfRkxBR19ETUFfTUFQIHwgUFBfRkxBR19ETUFfU1lOQ19ERVY7XFxuK1xcdHBhcmFtcy5wb29sX3NpemUgPSBOVU1fUlhfREVTQztcXG4rXFx0cGFyYW1zLm5pZCA9IGRldl90b19ub2RlKHRwX3RvX2Rldih0cCkpO1xcbitcXHRwYXJhbXMuZGV2ID0gdHBfdG9fZGV2KHRwKTtcXG4rXFx0cGFyYW1zLm5hcGkgPSBcXHUwMDI2dHAtXFx1MDAzZW5hcGk7XFxuK1xcdHBhcmFtcy5kbWFfZGlyID0gRE1BX0ZST01fREVWSUNFO1xcbitcXHRwYXJhbXMub2Zmc2V0ID0gdHAtXFx1MDAzZXJ4X2hlYWRyb29tO1xcbitcXHRwYXJhbXMubWF4X2xlbiA9IHRwLVxcdTAwM2VyeF9idWZfc3o7XFxuK1xcbitcXHR0cC1cXHUwMDNlcnhfcG9vbCA9IHBhZ2VfcG9vbF9jcmVhdGUoXFx1MDAyNnBhcmFtcyk7XFxuK1xcdGlmIChJU19FUlIodHAtXFx1MDAzZXJ4X3Bvb2wpKSB7XFxuK1xcdFxcdGVyciA9IFBUUl9FUlIodHAtXFx1MDAzZXJ4X3Bvb2wpO1xcbitcXHRcXHR0cC1cXHUwMDNlcnhfcG9vbCA9IE5VTEw7XFxuK1xcdFxcdHJldHVybiBlcnI7XFxuK1xcdH1cXG4rXFxuK1xcdGVyciA9IHhkcF9yeHFfaW5mb19yZWcoXFx1MDAyNnRwLVxcdTAwM2V4ZHBfcnhxLCB0cC1cXHUwMDNlZGV2LCAwLCB0cC1cXHUwMDNlbmFwaS5uYXBpX2lkKTtcXG4rXFx0aWYgKGVycilcXG4rXFx0XFx0Z290byBlcnJfZnJlZV9wb29sO1xcbitcXG4rXFx0ZXJyID0geGRwX3J4cV9pbmZvX3JlZ19tZW1fbW9kZWwoXFx1MDAyNnRwLVxcdTAwM2V4ZHBfcnhxLCBNRU1fVFlQRV9QQUdFX1BPT0wsIHRwLVxcdTAwM2VyeF9wb29sKTtcXG4rXFx0aWYgKGVycilcXG4rXFx0XFx0Z290byBlcnJfdW5yZWdfcnhxO1xcbitcXG4gXFx0bWVtc2V0KHRwLVxcdTAwM2V0eF9za2IsIDAsIHNpemVvZih0cC1cXHUwMDNldHhfc2tiKSk7XFxuIFxcdG1lbXNldCh0cC1cXHUwMDNlUnhfZGF0YWJ1ZmYsIDAsIHNpemVvZih0cC1cXHUwMDNlUnhfZGF0YWJ1ZmYpKTtcXG4gXFxuIFxcdHJldHVybiBydGw4MTY5X3J4X2ZpbGwodHApO1xcbitcXG4rZXJyX3VucmVnX3J4cTpcXG4rXFx0eGRwX3J4cV9pbmZvX3VucmVnKFxcdTAwMjZ0cC1cXHUwMDNleGRwX3J4cSk7XFxuK2Vycl9mcmVlX3Bvb2w6XFxuK1xcdHBhZ2VfcG9vbF9kZXN0cm95KHRwLVxcdTAwM2VyeF9wb29sKTtcXG4rXFx0dHAtXFx1MDAzZXJ4X3Bvb2wgPSBOVUxMO1xcbitcXHRyZXR1cm4gZXJyO1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCBydGw4MTY5X3VubWFwX3R4X3NrYihzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgdW5zaWduZWQgaW50IGVudHJ5KVxcbkBAIC00MzExLDggKzQzNjMsMjAgQEAgc3RhdGljIHZvaWQgcnRsX3Jlc2V0X3dvcmsoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuIFxcbiBcXHRydGw4MTY5X2NsZWFudXAodHApO1xcbiBcXG4tXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIE5VTV9SWF9ERVNDOyBpKyspXFxuLVxcdFxcdHJ0bDgxNjlfbWFya190b19hc2ljKHRwLVxcdTAwM2VSeERlc2NBcnJheSArIGkpO1xcbitcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgTlVNX1JYX0RFU0M7IGkrKykge1xcbitcXHRcXHRpZiAodHAtXFx1MDAzZVJ4X2RhdGFidWZmW2ldKVxcbitcXHRcXHRcXHRjb250aW51ZTtcXG4rXFx0XFx0dHAtXFx1MDAzZVJ4X2RhdGFidWZmW2ldID1cXG4rXFx0XFx0XFx0cnRsODE2OV9hbGxvY19yeF9kYXRhKHRwLCB0cC1cXHUwMDNlUnhEZXNjQXJyYXkgKyBpKTtcXG4rXFx0XFx0aWYgKCF0cC1cXHUwMDNlUnhfZGF0YWJ1ZmZbaV0pXFxuK1xcdFxcdFxcdGJyZWFrO1xcbitcXHR9XFxuK1xcbitcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgTlVNX1JYX0RFU0M7IGkrKykge1xcbitcXHRcXHRpZiAoIXRwLVxcdTAwM2VSeF9kYXRhYnVmZltpXSlcXG4rXFx0XFx0XFx0Y29udGludWU7XFxuK1xcdFxcdHJ0bDgxNjlfbWFya190b19hc2ljKHRwLVxcdTAwM2VSeERlc2NBcnJheSArIGksIHRwLVxcdTAwM2VyeF9idWZfc3opO1xcbitcXHR9XFxuIFxcbiBcXHRuYXBpX2VuYWJsZShcXHUwMDI2dHAtXFx1MDAzZW5hcGkpO1xcbiBcXHRydGxfaHdfc3RhcnQodHApO1xcbkBAIC00NzY4LDE2ICs0ODMyLDM5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBydGw4MTY5X3J4X2NzdW0oc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyIG9wdHMxKVxcbiBcXHRcXHRza2JfY2hlY2tzdW1fbm9uZV9hc3NlcnQoc2tiKTtcXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgcnRsODE2OV9yeF9yZWZpbGwoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuK3tcXG4rXFx0d2hpbGUgKHRwLVxcdTAwM2VkaXJ0eV9yeCAhPSB0cC1cXHUwMDNlY3VyX3J4KSB7XFxuK1xcdFxcdHVuc2lnbmVkIGludCBlbnRyeSA9IHRwLVxcdTAwM2VkaXJ0eV9yeCAlIE5VTV9SWF9ERVNDO1xcbitcXHRcXHRzdHJ1Y3QgUnhEZXNjICpkZXNjID0gdHAtXFx1MDAzZVJ4RGVzY0FycmF5ICsgZW50cnk7XFxuK1xcbitcXHRcXHRpZiAoIXRwLVxcdTAwM2VSeF9kYXRhYnVmZltlbnRyeV0pIHtcXG4rXFx0XFx0XFx0c3RydWN0IHBhZ2UgKm5ld19wYWdlID0gcGFnZV9wb29sX2Rldl9hbGxvY19wYWdlcyh0cC1cXHUwMDNlcnhfcG9vbCk7XFxuK1xcbitcXHRcXHRcXHRpZiAodW5saWtlbHkoIW5ld19wYWdlKSlcXG4rXFx0XFx0XFx0XFx0YnJlYWs7XFxuK1xcbitcXHRcXHRcXHR0cC1cXHUwMDNlUnhfZGF0YWJ1ZmZbZW50cnldID0gbmV3X3BhZ2U7XFxuK1xcbitcXHRcXHRcXHRkZXNjLVxcdTAwM2VhZGRyID0gY3B1X3RvX2xlNjQocGFnZV9wb29sX2dldF9kbWFfYWRkcihuZXdfcGFnZSkgK1xcbitcXHRcXHRcXHRcXHR0cC1cXHUwMDNlcnhfaGVhZHJvb20pO1xcbitcXHRcXHR9XFxuK1xcdFxcdHJ0bDgxNjlfbWFya190b19hc2ljKGRlc2MsIHRwLVxcdTAwM2VyeF9idWZfc3opO1xcbitcXG4rXFx0XFx0dHAtXFx1MDAzZWRpcnR5X3J4Kys7XFxuK1xcdH1cXG4rfVxcbitcXG4gc3RhdGljIGludCBydGxfcngoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCBidWRnZXQpXFxuIHtcXG4gXFx0c3RydWN0IGRldmljZSAqZCA9IHRwX3RvX2Rldih0cCk7XFxuIFxcdGludCBjb3VudDtcXG4gXFxuLVxcdGZvciAoY291bnQgPSAwOyBjb3VudCBcXHUwMDNjIGJ1ZGdldDsgY291bnQrKywgdHAtXFx1MDAzZWN1cl9yeCsrKSB7XFxuK1xcdGZvciAoY291bnQgPSAwOyBjb3VudCBcXHUwMDNjIGJ1ZGdldDspIHtcXG4gXFx0XFx0dW5zaWduZWQgaW50IHBrdF9zaXplLCBlbnRyeSA9IHRwLVxcdTAwM2VjdXJfcnggJSBOVU1fUlhfREVTQztcXG4gXFx0XFx0c3RydWN0IFJ4RGVzYyAqZGVzYyA9IHRwLVxcdTAwM2VSeERlc2NBcnJheSArIGVudHJ5O1xcbiBcXHRcXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xcbi1cXHRcXHRjb25zdCB2b2lkICpyeF9idWY7XFxuK1xcdFxcdHZvaWQgKnJ4X2J1ZjtcXG4gXFx0XFx0ZG1hX2FkZHJfdCBhZGRyO1xcbiBcXHRcXHR1MzIgc3RhdHVzO1xcbiBcXG5AQCAtNDgyMCwyMSArNDkwNyw0MCBAQCBzdGF0aWMgaW50IHJ0bF9yeChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IGJ1ZGdldFxcbiBcXHRcXHRcXHRnb3RvIHJlbGVhc2VfZGVzY3JpcHRvcjtcXG4gXFx0XFx0fVxcbiBcXG4tXFx0XFx0c2tiID0gbmFwaV9hbGxvY19za2IoXFx1MDAyNnRwLVxcdTAwM2VuYXBpLCBwa3Rfc2l6ZSk7XFxuLVxcdFxcdGlmICh1bmxpa2VseSghc2tiKSkge1xcbi1cXHRcXHRcXHRkZXYtXFx1MDAzZXN0YXRzLnJ4X2Ryb3BwZWQrKztcXG4tXFx0XFx0XFx0Z290byByZWxlYXNlX2Rlc2NyaXB0b3I7XFxuLVxcdFxcdH1cXG4rXFx0XFx0aWYgKHVubGlrZWx5KCF0cC1cXHUwMDNlUnhfZGF0YWJ1ZmZbZW50cnldKSlcXG4rXFx0XFx0XFx0YnJlYWs7XFxuIFxcbiBcXHRcXHRhZGRyID0gbGU2NF90b19jcHUoZGVzYy1cXHUwMDNlYWRkcik7XFxuIFxcdFxcdHJ4X2J1ZiA9IHBhZ2VfYWRkcmVzcyh0cC1cXHUwMDNlUnhfZGF0YWJ1ZmZbZW50cnldKTtcXG4gXFxuIFxcdFxcdGRtYV9zeW5jX3NpbmdsZV9mb3JfY3B1KGQsIGFkZHIsIHBrdF9zaXplLCBETUFfRlJPTV9ERVZJQ0UpO1xcbi1cXHRcXHRwcmVmZXRjaChyeF9idWYpO1xcbi1cXHRcXHRza2JfY29weV90b19saW5lYXJfZGF0YShza2IsIHJ4X2J1ZiwgcGt0X3NpemUpO1xcbi1cXHRcXHRza2ItXFx1MDAzZXRhaWwgKz0gcGt0X3NpemU7XFxuLVxcdFxcdHNrYi1cXHUwMDNlbGVuID0gcGt0X3NpemU7XFxuLVxcdFxcdGRtYV9zeW5jX3NpbmdsZV9mb3JfZGV2aWNlKGQsIGFkZHIsIHBrdF9zaXplLCBETUFfRlJPTV9ERVZJQ0UpO1xcbitcXHRcXHRwcmVmZXRjaChyeF9idWYgKyB0cC1cXHUwMDNlcnhfaGVhZHJvb20pO1xcbitcXG4rXFx0XFx0aWYgKHVubGlrZWx5KHRwLVxcdTAwM2VyeF9oZWFkcm9vbSA9PSAwKSkge1xcbitcXHRcXHRcXHRza2IgPSBuYXBpX2FsbG9jX3NrYihcXHUwMDI2dHAtXFx1MDAzZW5hcGksIHBrdF9zaXplKTtcXG4rXFx0XFx0XFx0aWYgKGxpa2VseShza2IpKSB7XFxuK1xcdFxcdFxcdFxcdHNrYl9jb3B5X3RvX2xpbmVhcl9kYXRhKHNrYiwgcnhfYnVmLCBwa3Rfc2l6ZSk7XFxuK1xcdFxcdFxcdFxcdHNrYl9wdXQoc2tiLCBwa3Rfc2l6ZSk7XFxuK1xcdFxcdFxcdH1cXG4rXFx0XFx0XFx0ZG1hX3N5bmNfc2luZ2xlX2Zvcl9kZXZpY2UoZCwgYWRkciwgcGt0X3NpemUsIERNQV9GUk9NX0RFVklDRSk7XFxuK1xcdFxcdH0gZWxzZSB7XFxuK1xcdFxcdFxcdHNrYiA9IG5hcGlfYnVpbGRfc2tiKHJ4X2J1ZiwgdHAtXFx1MDAzZXJ4X2J1Zl9zeiArIHRwLVxcdTAwM2VyeF9oZWFkcm9vbVxcbitcXHRcXHRcXHRcXHQrIFNLQl9EQVRBX0FMSUdOKHNpemVvZihzdHJ1Y3Qgc2tiX3NoYXJlZF9pbmZvKSkpO1xcbitcXHRcXHRcXHRpZiAobGlrZWx5KHNrYikpIHtcXG4rXFx0XFx0XFx0XFx0c2tiX3Jlc2VydmUoc2tiLCB0cC1cXHUwMDNlcnhfaGVhZHJvb20pO1xcbitcXHRcXHRcXHRcXHRza2JfcHV0KHNrYiwgcGt0X3NpemUpO1xcbitcXHRcXHRcXHRcXHRza2JfbWFya19mb3JfcmVjeWNsZShza2IpO1xcbitcXG4rXFx0XFx0XFx0XFx0dHAtXFx1MDAzZVJ4X2RhdGFidWZmW2VudHJ5XSA9IE5VTEw7XFxuK1xcdFxcdFxcdH0gZWxzZSB7XFxuK1xcdFxcdFxcdFxcdGRtYV9zeW5jX3NpbmdsZV9mb3JfZGV2aWNlKGQsIGFkZHIsIHBrdF9zaXplLCBETUFfRlJPTV9ERVZJQ0UpO1xcbitcXHRcXHRcXHR9XFxuK1xcdFxcdH1cXG4rXFxuK1xcdFxcdGlmICh1bmxpa2VseSghc2tiKSkge1xcbitcXHRcXHRcXHRkZXYtXFx1MDAzZXN0YXRzLnJ4X2Ryb3BwZWQrKztcXG4rXFx0XFx0XFx0Z290byByZWxlYXNlX2Rlc2NyaXB0b3I7XFxuK1xcdFxcdH1cXG4gXFxuIFxcdFxcdHJ0bDgxNjlfcnhfY3N1bShza2IsIHN0YXR1cyk7XFxuIFxcdFxcdHNrYi1cXHUwMDNlcHJvdG9jb2wgPSBldGhfdHlwZV90cmFucyhza2IsIGRldik7XFxuQEAgLTQ4NDgsOSArNDk1NCwxMiBAQCBzdGF0aWMgaW50IHJ0bF9yeChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCwgaW50IGJ1ZGdldFxcbiBcXG4gXFx0XFx0ZGV2X3N3X25ldHN0YXRzX3J4X2FkZChkZXYsIHBrdF9zaXplKTtcXG4gcmVsZWFzZV9kZXNjcmlwdG9yOlxcbi1cXHRcXHRydGw4MTY5X21hcmtfdG9fYXNpYyhkZXNjKTtcXG4rXFx0XFx0dHAtXFx1MDAzZWN1cl9yeCsrO1xcbitcXHRcXHRjb3VudCsrO1xcbiBcXHR9XFxuIFxcbitcXHRydGw4MTY5X3J4X3JlZmlsbCh0cCk7XFxuK1xcbiBcXHRyZXR1cm4gY291bnQ7XFxuIH1cXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA0OjE4OjMxLjMwNTg5MDA2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5NzA1MDU3MTczOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJSODE2OVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0bDgxNjlfaW5pdF9yaW5nXCIsXG4gICAgXCJydGw4MTY5X3J4X2NsZWFyXCIsXG4gICAgXCJydGw4MTY5X3J4X3JlZmlsbFwiLFxuICAgIFwicnRsODE2OV9hbGxvY19yeF9kYXRhXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBwYWdlX3Bvb2wgYW5kIHhkcF9yeHFfaW5mbyB0byB0aGUgcjgxNjkgbmV0d29yayBkcml2ZXIgZm9yIFJYIGJ1ZmZlciBtYW5hZ2VtZW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGRyaXZlcidzIFJYIHBhdGggYW5kIGluaXRpYWxpemF0aW9uL2NsZWFudXAgcm91dGluZXMuIFRoZSBQQ0kgZHJpdmVyIGNhbiBiZSBmdXp6ZWQgdmlhIHN5emthbGxlcidzIFBDSSBmdXp6aW5nIGNhcGFiaWxpdGllcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3NGY5MWVkYjE1ZjEwMWQwZTBhZmRjNWQ5OTVhNjhkNmQwYmM1MzFlXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgMTMgMDQ6MTg6MjkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jXG5pbmRleCBlYzRmYzIxZmEyMWZiMC4uYzU0OGU3ZThkYjg3NGUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmNcbkBAIC0zMSw3ICszMSw5IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvdW5hbGlnbmVkLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvaXA2X2NoZWNrc3VtLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvbmV0ZGV2X3F1ZXVlcy5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbmV0L3BhZ2VfcG9vbC9oZWxwZXJzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvcGh5L3JlYWx0ZWtfcGh5LmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NuZXQveGRwLmhcdTAwM2VcbiBcbiAjaW5jbHVkZSBcInI4MTY5LmhcIlxuICNpbmNsdWRlIFwicjgxNjlfZmlybXdhcmUuaFwiXG5AQCAtNzI5LDYgKzczMSwxMCBAQCBlbnVtIHJ0bF9kYXNoX3R5cGUge1xuIH07XG4gXG4gc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSB7XG4rXHRzdHJ1Y3QgcGFnZV9wb29sICpyeF9wb29sO1xuK1x0c3RydWN0IHhkcF9yeHFfaW5mbyB4ZHBfcnhxO1xuK1x0dTMyIHJ4X2hlYWRyb29tO1xuK1x0dTMyIHJ4X2J1Zl9zejtcbiBcdHZvaWQgX19pb21lbSAqbW1pb19hZGRyO1x0LyogbWVtb3J5IG1hcCBwaHlzaWNhbCBhZGRyZXNzICovXG4gXHRzdHJ1Y3QgcGNpX2RldiAqcGNpX2RldjtcbiBcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXY7XG5AQCAtNzM5LDYgKzc0NSw3IEBAIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUge1xuIFx0dTMyIGN1cl9yeDsgLyogSW5kZXggaW50byB0aGUgUnggZGVzY3JpcHRvciBidWZmZXIgb2YgbmV4dCBSeCBwa3QuICovXG4gXHR1MzIgY3VyX3R4OyAvKiBJbmRleCBpbnRvIHRoZSBUeCBkZXNjcmlwdG9yIGJ1ZmZlciBvZiBuZXh0IFJ4IHBrdC4gKi9cbiBcdHUzMiBkaXJ0eV90eDtcbitcdHUzMiBkaXJ0eV9yeDtcbiBcdHN0cnVjdCBUeERlc2MgKlR4RGVzY0FycmF5O1x0LyogMjU2LWFsaWduZWQgVHggZGVzY3JpcHRvciByaW5nICovXG4gXHRzdHJ1Y3QgUnhEZXNjICpSeERlc2NBcnJheTtcdC8qIDI1Ni1hbGlnbmVkIFJ4IGRlc2NyaXB0b3IgcmluZyAqL1xuIFx0ZG1hX2FkZHJfdCBUeFBoeUFkZHI7XG5AQCAtMjYyMiw2ICsyNjI5LDcgQEAgc3RhdGljIHZvaWQgcnRsX2luaXRfcnhjZmcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG4gc3RhdGljIHZvaWQgcnRsODE2OV9pbml0X3JpbmdfaW5kZXhlcyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiB7XG4gXHR0cC1cdTAwM2VkaXJ0eV90eCA9IHRwLVx1MDAzZWN1cl90eCA9IHRwLVx1MDAzZWN1cl9yeCA9IDA7XG4rXHR0cC1cdTAwM2VkaXJ0eV9yeCA9IDA7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIHJ0bF9qdW1ib19jb25maWcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG5AQCAtNDE0OCwzNyArNDE1NiwzMCBAQCBzdGF0aWMgaW50IHJ0bDgxNjlfY2hhbmdlX210dShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgbmV3X210dSlcbiBcdHJldHVybiAwO1xuIH1cbiBcbi1zdGF0aWMgdm9pZCBydGw4MTY5X21hcmtfdG9fYXNpYyhzdHJ1Y3QgUnhEZXNjICpkZXNjKVxuK3N0YXRpYyB2b2lkIHJ0bDgxNjlfbWFya190b19hc2ljKHN0cnVjdCBSeERlc2MgKmRlc2MsIHUzMiByeF9idWZfc3opXG4ge1xuIFx0dTMyIGVvciA9IGxlMzJfdG9fY3B1KGRlc2MtXHUwMDNlb3B0czEpIFx1MDAyNiBSaW5nRW5kO1xuIFxuIFx0ZGVzYy1cdTAwM2VvcHRzMiA9IDA7XG4gXHQvKiBGb3JjZSBtZW1vcnkgd3JpdGVzIHRvIGNvbXBsZXRlIGJlZm9yZSByZWxlYXNpbmcgZGVzY3JpcHRvciAqL1xuIFx0ZG1hX3dtYigpO1xuLVx0V1JJVEVfT05DRShkZXNjLVx1MDAzZW9wdHMxLCBjcHVfdG9fbGUzMihEZXNjT3duIHwgZW9yIHwgUjgxNjlfUlhfQlVGX1NJWkUpKTtcbitcdFdSSVRFX09OQ0UoZGVzYy1cdTAwM2VvcHRzMSwgY3B1X3RvX2xlMzIoRGVzY093biB8IGVvciB8IHJ4X2J1Zl9zeikpO1xuIH1cbiBcbiBzdGF0aWMgc3RydWN0IHBhZ2UgKnJ0bDgxNjlfYWxsb2NfcnhfZGF0YShzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCxcbiBcdFx0XHRcdFx0ICBzdHJ1Y3QgUnhEZXNjICpkZXNjKVxuIHtcbi1cdHN0cnVjdCBkZXZpY2UgKmQgPSB0cF90b19kZXYodHApO1xuLVx0aW50IG5vZGUgPSBkZXZfdG9fbm9kZShkKTtcbiBcdGRtYV9hZGRyX3QgbWFwcGluZztcbiBcdHN0cnVjdCBwYWdlICpkYXRhO1xuIFxuLVx0ZGF0YSA9IGFsbG9jX3BhZ2VzX25vZGUobm9kZSwgR0ZQX0tFUk5FTCwgZ2V0X29yZGVyKFI4MTY5X1JYX0JVRl9TSVpFKSk7XG4rXHRkYXRhID0gcGFnZV9wb29sX2Rldl9hbGxvY19wYWdlcyh0cC1cdTAwM2VyeF9wb29sKTtcbiBcdGlmICghZGF0YSlcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXG4tXHRtYXBwaW5nID0gZG1hX21hcF9wYWdlKGQsIGRhdGEsIDAsIFI4MTY5X1JYX0JVRl9TSVpFLCBETUFfRlJPTV9ERVZJQ0UpO1xuLVx0aWYgKHVubGlrZWx5KGRtYV9tYXBwaW5nX2Vycm9yKGQsIG1hcHBpbmcpKSkge1xuLVx0XHRuZXRkZXZfZXJyKHRwLVx1MDAzZWRldiwgXCJGYWlsZWQgdG8gbWFwIFJYIERNQSFcXG5cIik7XG4tXHRcdF9fZnJlZV9wYWdlcyhkYXRhLCBnZXRfb3JkZXIoUjgxNjlfUlhfQlVGX1NJWkUpKTtcbi1cdFx0cmV0dXJuIE5VTEw7XG4tXHR9XG4rXHRtYXBwaW5nID0gcGFnZV9wb29sX2dldF9kbWFfYWRkcihkYXRhKSArIHRwLVx1MDAzZXJ4X2hlYWRyb29tO1xuIFxuIFx0ZGVzYy1cdTAwM2VhZGRyID0gY3B1X3RvX2xlNjQobWFwcGluZyk7XG4tXHRydGw4MTY5X21hcmtfdG9fYXNpYyhkZXNjKTtcbitcdHJ0bDgxNjlfbWFya190b19hc2ljKGRlc2MsIHRwLVx1MDAzZXJ4X2J1Zl9zeik7XG4gXG4gXHRyZXR1cm4gZGF0YTtcbiB9XG5AQCAtNDE4NywxNSArNDE4OCwyMSBAQCBzdGF0aWMgdm9pZCBydGw4MTY5X3J4X2NsZWFyKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIHtcbiBcdGludCBpO1xuIFxuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgTlVNX1JYX0RFU0MgXHUwMDI2XHUwMDI2IHRwLVx1MDAzZVJ4X2RhdGFidWZmW2ldOyBpKyspIHtcbi1cdFx0ZG1hX3VubWFwX3BhZ2UodHBfdG9fZGV2KHRwKSxcbi1cdFx0XHQgICAgICAgbGU2NF90b19jcHUodHAtXHUwMDNlUnhEZXNjQXJyYXlbaV0uYWRkciksXG4tXHRcdFx0ICAgICAgIFI4MTY5X1JYX0JVRl9TSVpFLCBETUFfRlJPTV9ERVZJQ0UpO1xuLVx0XHRfX2ZyZWVfcGFnZXModHAtXHUwMDNlUnhfZGF0YWJ1ZmZbaV0sIGdldF9vcmRlcihSODE2OV9SWF9CVUZfU0laRSkpO1xuK1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgTlVNX1JYX0RFU0M7IGkrKykge1xuK1x0XHRpZiAoIXRwLVx1MDAzZVJ4X2RhdGFidWZmW2ldKVxuK1x0XHRcdGNvbnRpbnVlO1xuK1x0XHRwYWdlX3Bvb2xfcHV0X2Z1bGxfcGFnZSh0cC1cdTAwM2VyeF9wb29sLCB0cC1cdTAwM2VSeF9kYXRhYnVmZltpXSwgZmFsc2UpO1xuIFx0XHR0cC1cdTAwM2VSeF9kYXRhYnVmZltpXSA9IE5VTEw7XG4gXHRcdHRwLVx1MDAzZVJ4RGVzY0FycmF5W2ldLmFkZHIgPSAwO1xuIFx0XHR0cC1cdTAwM2VSeERlc2NBcnJheVtpXS5vcHRzMSA9IDA7XG4gXHR9XG4rXG4rXHRpZiAodHAtXHUwMDNlcnhfcG9vbCkge1xuK1x0XHRpZiAoeGRwX3J4cV9pbmZvX2lzX3JlZyhcdTAwMjZ0cC1cdTAwM2V4ZHBfcnhxKSlcbitcdFx0XHR4ZHBfcnhxX2luZm9fdW5yZWcoXHUwMDI2dHAtXHUwMDNleGRwX3J4cSk7XG4rXHRcdHBhZ2VfcG9vbF9kZXN0cm95KHRwLVx1MDAzZXJ4X3Bvb2wpO1xuK1x0XHR0cC1cdTAwM2VyeF9wb29sID0gTlVMTDtcbitcdH1cbiB9XG4gXG4gc3RhdGljIGludCBydGw4MTY5X3J4X2ZpbGwoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXG5AQCAtNDIyMSwxMiArNDIyOCw1NyBAQCBzdGF0aWMgaW50IHJ0bDgxNjlfcnhfZmlsbChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbiBcbiBzdGF0aWMgaW50IHJ0bDgxNjlfaW5pdF9yaW5nKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIHtcbitcdHN0cnVjdCBwYWdlX3Bvb2xfcGFyYW1zIHBhcmFtcyA9IHswfTtcbitcdGludCBlcnI7XG4rXG4gXHRydGw4MTY5X2luaXRfcmluZ19pbmRleGVzKHRwKTtcbiBcbitcdGlmICh0cC1cdTAwM2VtYWNfdmVyc2lvbiBcdTAwM2M9IFJUTF9HSUdBX01BQ19WRVJfMDYpIHtcbitcdFx0dHAtXHUwMDNlcnhfaGVhZHJvb20gPSAwO1xuK1x0XHR0cC1cdTAwM2VyeF9idWZfc3ogPSBSODE2OV9SWF9CVUZfU0laRTtcbitcdH0gZWxzZSB7XG4rXHRcdHRwLVx1MDAzZXJ4X2hlYWRyb29tID0gWERQX1BBQ0tFVF9IRUFEUk9PTTtcbitcdFx0dHAtXHUwMDNlcnhfYnVmX3N6ID0gU1pfMTZLIC1cbitcdFx0XHRcdFx0XHRTS0JfREFUQV9BTElHTihzaXplb2Yoc3RydWN0IHNrYl9zaGFyZWRfaW5mbykpIC1cbitcdFx0XHRcdFx0XHRYRFBfUEFDS0VUX0hFQURST09NO1xuK1x0fVxuK1xuK1x0cGFyYW1zLm9yZGVyID0gZ2V0X29yZGVyKFI4MTY5X1JYX0JVRl9TSVpFKTtcbitcdHBhcmFtcy5mbGFncyA9IFBQX0ZMQUdfRE1BX01BUCB8IFBQX0ZMQUdfRE1BX1NZTkNfREVWO1xuK1x0cGFyYW1zLnBvb2xfc2l6ZSA9IE5VTV9SWF9ERVNDO1xuK1x0cGFyYW1zLm5pZCA9IGRldl90b19ub2RlKHRwX3RvX2Rldih0cCkpO1xuK1x0cGFyYW1zLmRldiA9IHRwX3RvX2Rldih0cCk7XG4rXHRwYXJhbXMubmFwaSA9IFx1MDAyNnRwLVx1MDAzZW5hcGk7XG4rXHRwYXJhbXMuZG1hX2RpciA9IERNQV9GUk9NX0RFVklDRTtcbitcdHBhcmFtcy5vZmZzZXQgPSB0cC1cdTAwM2VyeF9oZWFkcm9vbTtcbitcdHBhcmFtcy5tYXhfbGVuID0gdHAtXHUwMDNlcnhfYnVmX3N6O1xuK1xuK1x0dHAtXHUwMDNlcnhfcG9vbCA9IHBhZ2VfcG9vbF9jcmVhdGUoXHUwMDI2cGFyYW1zKTtcbitcdGlmIChJU19FUlIodHAtXHUwMDNlcnhfcG9vbCkpIHtcbitcdFx0ZXJyID0gUFRSX0VSUih0cC1cdTAwM2VyeF9wb29sKTtcbitcdFx0dHAtXHUwMDNlcnhfcG9vbCA9IE5VTEw7XG4rXHRcdHJldHVybiBlcnI7XG4rXHR9XG4rXG4rXHRlcnIgPSB4ZHBfcnhxX2luZm9fcmVnKFx1MDAyNnRwLVx1MDAzZXhkcF9yeHEsIHRwLVx1MDAzZWRldiwgMCwgdHAtXHUwMDNlbmFwaS5uYXBpX2lkKTtcbitcdGlmIChlcnIpXG4rXHRcdGdvdG8gZXJyX2ZyZWVfcG9vbDtcbitcbitcdGVyciA9IHhkcF9yeHFfaW5mb19yZWdfbWVtX21vZGVsKFx1MDAyNnRwLVx1MDAzZXhkcF9yeHEsIE1FTV9UWVBFX1BBR0VfUE9PTCwgdHAtXHUwMDNlcnhfcG9vbCk7XG4rXHRpZiAoZXJyKVxuK1x0XHRnb3RvIGVycl91bnJlZ19yeHE7XG4rXG4gXHRtZW1zZXQodHAtXHUwMDNldHhfc2tiLCAwLCBzaXplb2YodHAtXHUwMDNldHhfc2tiKSk7XG4gXHRtZW1zZXQodHAtXHUwMDNlUnhfZGF0YWJ1ZmYsIDAsIHNpemVvZih0cC1cdTAwM2VSeF9kYXRhYnVmZikpO1xuIFxuIFx0cmV0dXJuIHJ0bDgxNjlfcnhfZmlsbCh0cCk7XG4rXG4rZXJyX3VucmVnX3J4cTpcbitcdHhkcF9yeHFfaW5mb191bnJlZyhcdTAwMjZ0cC1cdTAwM2V4ZHBfcnhxKTtcbitlcnJfZnJlZV9wb29sOlxuK1x0cGFnZV9wb29sX2Rlc3Ryb3kodHAtXHUwMDNlcnhfcG9vbCk7XG4rXHR0cC1cdTAwM2VyeF9wb29sID0gTlVMTDtcbitcdHJldHVybiBlcnI7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIHJ0bDgxNjlfdW5tYXBfdHhfc2tiKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCB1bnNpZ25lZCBpbnQgZW50cnkpXG5AQCAtNDMxMSw4ICs0MzYzLDIwIEBAIHN0YXRpYyB2b2lkIHJ0bF9yZXNldF93b3JrKHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwKVxuIFxuIFx0cnRsODE2OV9jbGVhbnVwKHRwKTtcbiBcbi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIE5VTV9SWF9ERVNDOyBpKyspXG4tXHRcdHJ0bDgxNjlfbWFya190b19hc2ljKHRwLVx1MDAzZVJ4RGVzY0FycmF5ICsgaSk7XG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBOVU1fUlhfREVTQzsgaSsrKSB7XG4rXHRcdGlmICh0cC1cdTAwM2VSeF9kYXRhYnVmZltpXSlcbitcdFx0XHRjb250aW51ZTtcbitcdFx0dHAtXHUwMDNlUnhfZGF0YWJ1ZmZbaV0gPVxuK1x0XHRcdHJ0bDgxNjlfYWxsb2NfcnhfZGF0YSh0cCwgdHAtXHUwMDNlUnhEZXNjQXJyYXkgKyBpKTtcbitcdFx0aWYgKCF0cC1cdTAwM2VSeF9kYXRhYnVmZltpXSlcbitcdFx0XHRicmVhaztcbitcdH1cbitcbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIE5VTV9SWF9ERVNDOyBpKyspIHtcbitcdFx0aWYgKCF0cC1cdTAwM2VSeF9kYXRhYnVmZltpXSlcbitcdFx0XHRjb250aW51ZTtcbitcdFx0cnRsODE2OV9tYXJrX3RvX2FzaWModHAtXHUwMDNlUnhEZXNjQXJyYXkgKyBpLCB0cC1cdTAwM2VyeF9idWZfc3opO1xuK1x0fVxuIFxuIFx0bmFwaV9lbmFibGUoXHUwMDI2dHAtXHUwMDNlbmFwaSk7XG4gXHRydGxfaHdfc3RhcnQodHApO1xuQEAgLTQ3NjgsMTYgKzQ4MzIsMzkgQEAgc3RhdGljIGlubGluZSB2b2lkIHJ0bDgxNjlfcnhfY3N1bShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgb3B0czEpXG4gXHRcdHNrYl9jaGVja3N1bV9ub25lX2Fzc2VydChza2IpO1xuIH1cbiBcbitzdGF0aWMgdm9pZCBydGw4MTY5X3J4X3JlZmlsbChzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcbit7XG4rXHR3aGlsZSAodHAtXHUwMDNlZGlydHlfcnggIT0gdHAtXHUwMDNlY3VyX3J4KSB7XG4rXHRcdHVuc2lnbmVkIGludCBlbnRyeSA9IHRwLVx1MDAzZWRpcnR5X3J4ICUgTlVNX1JYX0RFU0M7XG4rXHRcdHN0cnVjdCBSeERlc2MgKmRlc2MgPSB0cC1cdTAwM2VSeERlc2NBcnJheSArIGVudHJ5O1xuK1xuK1x0XHRpZiAoIXRwLVx1MDAzZVJ4X2RhdGFidWZmW2VudHJ5XSkge1xuK1x0XHRcdHN0cnVjdCBwYWdlICpuZXdfcGFnZSA9IHBhZ2VfcG9vbF9kZXZfYWxsb2NfcGFnZXModHAtXHUwMDNlcnhfcG9vbCk7XG4rXG4rXHRcdFx0aWYgKHVubGlrZWx5KCFuZXdfcGFnZSkpXG4rXHRcdFx0XHRicmVhaztcbitcbitcdFx0XHR0cC1cdTAwM2VSeF9kYXRhYnVmZltlbnRyeV0gPSBuZXdfcGFnZTtcbitcbitcdFx0XHRkZXNjLVx1MDAzZWFkZHIgPSBjcHVfdG9fbGU2NChwYWdlX3Bvb2xfZ2V0X2RtYV9hZGRyKG5ld19wYWdlKSArXG4rXHRcdFx0XHR0cC1cdTAwM2VyeF9oZWFkcm9vbSk7XG4rXHRcdH1cbitcdFx0cnRsODE2OV9tYXJrX3RvX2FzaWMoZGVzYywgdHAtXHUwMDNlcnhfYnVmX3N6KTtcbitcbitcdFx0dHAtXHUwMDNlZGlydHlfcngrKztcbitcdH1cbit9XG4rXG4gc3RhdGljIGludCBydGxfcngoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCBidWRnZXQpXG4ge1xuIFx0c3RydWN0IGRldmljZSAqZCA9IHRwX3RvX2Rldih0cCk7XG4gXHRpbnQgY291bnQ7XG4gXG4tXHRmb3IgKGNvdW50ID0gMDsgY291bnQgXHUwMDNjIGJ1ZGdldDsgY291bnQrKywgdHAtXHUwMDNlY3VyX3J4KyspIHtcbitcdGZvciAoY291bnQgPSAwOyBjb3VudCBcdTAwM2MgYnVkZ2V0Oykge1xuIFx0XHR1bnNpZ25lZCBpbnQgcGt0X3NpemUsIGVudHJ5ID0gdHAtXHUwMDNlY3VyX3J4ICUgTlVNX1JYX0RFU0M7XG4gXHRcdHN0cnVjdCBSeERlc2MgKmRlc2MgPSB0cC1cdTAwM2VSeERlc2NBcnJheSArIGVudHJ5O1xuIFx0XHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuLVx0XHRjb25zdCB2b2lkICpyeF9idWY7XG4rXHRcdHZvaWQgKnJ4X2J1ZjtcbiBcdFx0ZG1hX2FkZHJfdCBhZGRyO1xuIFx0XHR1MzIgc3RhdHVzO1xuIFxuQEAgLTQ4MjAsMjEgKzQ5MDcsNDAgQEAgc3RhdGljIGludCBydGxfcngoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsIGludCBidWRnZXRcbiBcdFx0XHRnb3RvIHJlbGVhc2VfZGVzY3JpcHRvcjtcbiBcdFx0fVxuIFxuLVx0XHRza2IgPSBuYXBpX2FsbG9jX3NrYihcdTAwMjZ0cC1cdTAwM2VuYXBpLCBwa3Rfc2l6ZSk7XG4tXHRcdGlmICh1bmxpa2VseSghc2tiKSkge1xuLVx0XHRcdGRldi1cdTAwM2VzdGF0cy5yeF9kcm9wcGVkKys7XG4tXHRcdFx0Z290byByZWxlYXNlX2Rlc2NyaXB0b3I7XG4tXHRcdH1cbitcdFx0aWYgKHVubGlrZWx5KCF0cC1cdTAwM2VSeF9kYXRhYnVmZltlbnRyeV0pKVxuK1x0XHRcdGJyZWFrO1xuIFxuIFx0XHRhZGRyID0gbGU2NF90b19jcHUoZGVzYy1cdTAwM2VhZGRyKTtcbiBcdFx0cnhfYnVmID0gcGFnZV9hZGRyZXNzKHRwLVx1MDAzZVJ4X2RhdGFidWZmW2VudHJ5XSk7XG4gXG4gXHRcdGRtYV9zeW5jX3NpbmdsZV9mb3JfY3B1KGQsIGFkZHIsIHBrdF9zaXplLCBETUFfRlJPTV9ERVZJQ0UpO1xuLVx0XHRwcmVmZXRjaChyeF9idWYpO1xuLVx0XHRza2JfY29weV90b19saW5lYXJfZGF0YShza2IsIHJ4X2J1ZiwgcGt0X3NpemUpO1xuLVx0XHRza2ItXHUwMDNldGFpbCArPSBwa3Rfc2l6ZTtcbi1cdFx0c2tiLVx1MDAzZWxlbiA9IHBrdF9zaXplO1xuLVx0XHRkbWFfc3luY19zaW5nbGVfZm9yX2RldmljZShkLCBhZGRyLCBwa3Rfc2l6ZSwgRE1BX0ZST01fREVWSUNFKTtcbitcdFx0cHJlZmV0Y2gocnhfYnVmICsgdHAtXHUwMDNlcnhfaGVhZHJvb20pO1xuK1xuK1x0XHRpZiAodW5saWtlbHkodHAtXHUwMDNlcnhfaGVhZHJvb20gPT0gMCkpIHtcbitcdFx0XHRza2IgPSBuYXBpX2FsbG9jX3NrYihcdTAwMjZ0cC1cdTAwM2VuYXBpLCBwa3Rfc2l6ZSk7XG4rXHRcdFx0aWYgKGxpa2VseShza2IpKSB7XG4rXHRcdFx0XHRza2JfY29weV90b19saW5lYXJfZGF0YShza2IsIHJ4X2J1ZiwgcGt0X3NpemUpO1xuK1x0XHRcdFx0c2tiX3B1dChza2IsIHBrdF9zaXplKTtcbitcdFx0XHR9XG4rXHRcdFx0ZG1hX3N5bmNfc2luZ2xlX2Zvcl9kZXZpY2UoZCwgYWRkciwgcGt0X3NpemUsIERNQV9GUk9NX0RFVklDRSk7XG4rXHRcdH0gZWxzZSB7XG4rXHRcdFx0c2tiID0gbmFwaV9idWlsZF9za2IocnhfYnVmLCB0cC1cdTAwM2VyeF9idWZfc3ogKyB0cC1cdTAwM2VyeF9oZWFkcm9vbVxuK1x0XHRcdFx0KyBTS0JfREFUQV9BTElHTihzaXplb2Yoc3RydWN0IHNrYl9zaGFyZWRfaW5mbykpKTtcbitcdFx0XHRpZiAobGlrZWx5KHNrYikpIHtcbitcdFx0XHRcdHNrYl9yZXNlcnZlKHNrYiwgdHAtXHUwMDNlcnhfaGVhZHJvb20pO1xuK1x0XHRcdFx0c2tiX3B1dChza2IsIHBrdF9zaXplKTtcbitcdFx0XHRcdHNrYl9tYXJrX2Zvcl9yZWN5Y2xlKHNrYik7XG4rXG4rXHRcdFx0XHR0cC1cdTAwM2VSeF9kYXRhYnVmZltlbnRyeV0gPSBOVUxMO1xuK1x0XHRcdH0gZWxzZSB7XG4rXHRcdFx0XHRkbWFfc3luY19zaW5nbGVfZm9yX2RldmljZShkLCBhZGRyLCBwa3Rfc2l6ZSwgRE1BX0ZST01fREVWSUNFKTtcbitcdFx0XHR9XG4rXHRcdH1cbitcbitcdFx0aWYgKHVubGlrZWx5KCFza2IpKSB7XG4rXHRcdFx0ZGV2LVx1MDAzZXN0YXRzLnJ4X2Ryb3BwZWQrKztcbitcdFx0XHRnb3RvIHJlbGVhc2VfZGVzY3JpcHRvcjtcbitcdFx0fVxuIFxuIFx0XHRydGw4MTY5X3J4X2NzdW0oc2tiLCBzdGF0dXMpO1xuIFx0XHRza2ItXHUwMDNlcHJvdG9jb2wgPSBldGhfdHlwZV90cmFucyhza2IsIGRldik7XG5AQCAtNDg0OCw5ICs0OTU0LDEyIEBAIHN0YXRpYyBpbnQgcnRsX3J4KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBydGw4MTY5X3ByaXZhdGUgKnRwLCBpbnQgYnVkZ2V0XG4gXG4gXHRcdGRldl9zd19uZXRzdGF0c19yeF9hZGQoZGV2LCBwa3Rfc2l6ZSk7XG4gcmVsZWFzZV9kZXNjcmlwdG9yOlxuLVx0XHRydGw4MTY5X21hcmtfdG9fYXNpYyhkZXNjKTtcbitcdFx0dHAtXHUwMDNlY3VyX3J4Kys7XG4rXHRcdGNvdW50Kys7XG4gXHR9XG4gXG4rXHRydGw4MTY5X3J4X3JlZmlsbCh0cCk7XG4rXG4gXHRyZXR1cm4gY291bnQ7XG4gfVxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDQ6MTg6MzEuMzA1ODkxOVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyODIxNTkwMTk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJlYWNoaW5nIHRoZSBSZWFsdGVrIDgxNjkgRHJpdmVyJ3MgTmV3IFJYIFBhdGggaW4gYSBWaXJ0dWFsaXplZCBDb250ZXh0KipcblxuT2theSwgc28gd2UgaGF2ZSBhIHBhdGNoIHRoYXQncyBzaWduaWZpY2FudGx5IGFsdGVyaW5nIHRoZSBgcjgxNjlgIFJlYWx0ZWsgbmV0d29yayBkcml2ZXIsIHNwZWNpZmljYWxseSBkZWFsaW5nIHdpdGggUlggYnVmZmVyIG1hbmFnZW1lbnQuIFRoZXkncmUgdXNpbmcgYHBhZ2VfcG9vbGAgYW5kIGB4ZHBfcnhxX2luZm9gLCB3aGljaCBpcyBhIHByZXR0eSBtb2Rlcm4gYXBwcm9hY2guIFRoZSBjaGFuZ2VzIHRvdWNoIGNyaXRpY2FsIGZ1bmN0aW9uczogYHJ0bDgxNjlfYWxsb2NfcnhfZGF0YWAsIGBydGw4MTY5X3J4X2NsZWFyYCwgYHJ0bDgxNjlfaW5pdF9yaW5nYCwgYHJ0bF9yZXNldF93b3JrYCwgYHJ0bF9yeGAsIGFuZCB0aGV5J3ZlIGFkZGVkIGBydGw4MTY5X3J4X3JlZmlsbGAuIFRoaXMgaXMgYSBkZWVwIGRpdmUgaW50byBob3cgUlggd29ya3MuXG5cbk15IGltbWVkaWF0ZSBjb25jZXJuIGlzIHJlYWNoYWJpbGl0eS4gQ2FuIHdlIGFjdHVhbGx5IHRlc3QgdGhpcyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBUaGlzIGRyaXZlciBpcyBmb3IgYSBSZWFsdGVrIFJUTC04MTY5IEdpZ2FiaXQgRXRoZXJuZXQgY2FyZC4gUUVNVSwgYXMgZmFyIGFzIEkgcmVtZW1iZXIsIHVzdWFsbHkgZW11bGF0ZXMgdGhlIFJUTDgxMzksIGJ1dCBub3QgdGhlIDgxNjkgZGlyZWN0bHkuIEkgbmVlZCB0byBjb25maXJtIHRoaXMuLi4gV2FpdCwgY2hlY2tpbmcgUUVNVSdzIHN1cHBvcnRlZCBkZXZpY2VzLCBpdCBzZWVtcyBsaWtlIGBydGw4MTM5YCBpcyBhdmFpbGFibGUsIGJ1dCBub3QgYHI4MTY5YC4gIFRoZXkndmUgZ290IGBlMTAwMGAsIGBlMTAwMGVgLCBgdmlydGlvLW5ldC1wY2lgLCBldGMuIFRoYXQncyBub3QgZ29vZC4gSXQgYXBwZWFycyB0aGUgZGVmYXVsdCBzZXR1cCBtaWdodCBub3QgaW5jbHVkZSBhIGRpcmVjdCBlbXVsYXRpb24gb2YgdGhlIGByODE2OWAuXG5cbk5vdywgd2hhdCBhYm91dCBzeXprYWxsZXI/IFN5emthbGxlciBjYW4gZnV6eiBQQ0kgZHJpdmVycy4gQnV0IHRoaXMgaXMgdXN1YWxseSBmb3IgZW11bGF0ZWQgUENJIGRldmljZXMgb3IgaWYgYSBQQ0kgZnV6emluZyBmcmFtZXdvcmsgaXMgdXNlZC4gR2VuZXJhbGx5LCBuZXR3b3JrIGRyaXZlcnMgZm9yICpzcGVjaWZpYyogaGFyZHdhcmUgYXJlIGEgbm8tZ28gdW5sZXNzIHRoZSBoYXJkd2FyZSBpcyBlbXVsYXRlZC4gVGhlIHN5c3RlbSBoYXMgYHN5el9wY2lfZGV2aWNlYCBvciBzaW1pbGFyLCBidXQgZm9yIG5ldHdvcmsgZHJpdmVycyBpdCB3aWxsIGJlIGEgdmlydHVhbCBkZXZpY2UgbGlrZSBgdmV0aGAsIGB0dW5gLCBvciBhIFVTQiBkcml2ZXIgbGlrZSBgZHVtbXlfaGNkYC4gU3l6a2FsbGVyIGRvZXMgaGF2ZSBQQ0kgZnV6emluZywgbGlrZSBgc3l6X3BjaV9kZXZpY2VfYWRkYC4gSG93ZXZlciwgZG9lcyBpdCBjb3ZlciBgcjgxNjlgP1xuXG5Pa2F5LCB0aGUgcHJvbXB0IGlzIHRocm93aW5nIGEgd3JlbmNoIGluIHRoZSB3b3JrczogXCJDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cIiBUaGF0IGltcGxpZXMgcmVhY2hpbmcgYHI4MTY5YCBjb3VsZCBiZSBkaWZmaWN1bHQuIEkgbmVlZCB0byBkaWcgZGVlcGVyLiBJcyBgcjgxNjlgIHRydWx5IG9mZi1saW1pdHM/XG5cbkxldCdzIHNlZTogSXMgYHI4MTY5YCBhIFBDSSBkcml2ZXI/ICBZZXMsIGByODE2OV9tYWluLmNgIG1ha2VzIGl0IG9uZS4gVGhpcyBpcyBrZXkuIFN5emthbGxlcidzIFBDSSBmdXp6ZXIgY2FuIHByb2JlIGFueSBQQ0kgZHJpdmVyIGJ5IG1hdGNoaW5nIGl0cyB2ZW5kb3IvZGV2aWNlIElELiBJdCBjYW4gZnV6eiBQQ0kgZHJpdmVycyBpZiB0aGV5IGFyZSBQQ0kgZHJpdmVycywgbGlrZSBgcjgxNjlgLlxuXG5TbywgdGhlIG5leHQgcXVlc3Rpb24gaXM6IElzIGByODE2OWAgc3VwcG9ydGVkIGJ5IHRoZSBQQ0kgZnV6emVyLCBhbmQgaXMgaXQgZ2VuZXJhbGx5IGZ1enphYmxlPyBTeXprYWxsZXIncyBQQ0kgZnV6emVyIHNob3VsZCwgaW4gdGhlb3J5LCBiZSBhYmxlIHRvIGludGVyYWN0IHdpdGggYW55IFBDSSBkZXZpY2UuIFRoZSBwcm9tcHQgaXMgc2F5aW5nIHRoZSBzYW1lIHRoaW5nIGFnYWluISBcIkNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuLi5cIi4gQnV0IGlmIHRoaXMgaXMgYSBQQ0kgZHJpdmVyLCBgc3l6X3BjaV9kZXZpY2VfYWRkYCAqc2hvdWxkKiBiZSBhYmxlIHRvIGhlbHAsIGlmIGVuYWJsZWQuIFRoZSByZWFsIHF1ZXN0aW9uIGlzIHdoZXRoZXIgaXQgcmVhY2hlcyB0aGUgKlJYKiBwYXRoLCBzcGVjaWZpY2FsbHkgYHJ0bF9yeGAuXG5cblRoZSBSWCBwYXRoIG5lZWRzIERNQSBhbmQgaW50ZXJydXB0cy4gQ2FuIFN5emthbGxlcidzIFBDSSBmdXp6ZXIgZ2VuZXJhdGUgdGhvc2U/IEl0IHNob3VsZCBiZSBhYmxlIHRvIHRyaWdnZXIgaW50ZXJydXB0cyBhbmQgcHJvdmlkZSBETUEgZGF0YS4gVGhpcyBuZWVkcyBtb3JlIGludmVzdGlnYXRpb24sIGJ1dCBhdCBsZWFzdCBgcjgxNjlgICppcyogYSBQQ0kgZHJpdmVyLCBzbyB3ZSBoYXZlIGEgc3RhcnRpbmcgcG9pbnQuIFRoaXMgaXMgdGhlIGNyaXRpY2FsIG5leHQgc3RlcC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTcyOCwiT3V0cHV0VG9rZW5zIjo0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk2MiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA0OjE4OjQ0LjEyNzQ4NTE1OFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjM0NDMxODE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBjaV9kcml2ZXIuKnJ0bDgxNjlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9NTcxMT1zdGF0aWMgaW50IHJ0bF9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTU5MzQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTkzNTpzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgcnRsODE2OV9wY2lfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTU5MzYtXFx0Lm5hbWVcXHRcXHQ9IEtCVUlMRF9NT0ROQU1FLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTk0My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo1OTQ0Om1vZHVsZV9wY2lfZHJpdmVyKHJ0bDgxNjlfcGNpX2RyaXZlcik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA0OjE4OjQ1LjM2MTkyMzgyNloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3MTk1OTMyMDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgUjgxNjkgRHJpdmVyIHdpdGggU3l6a2FsbGVyOiBJbml0aWFsIEFzc2Vzc21lbnQqKlxuXG5Pa2F5LCBzbyB0aGlzIGlzIGEgUENJIGRyaXZlciwgc3BlY2lmaWNhbGx5IGByODE2OWAuIFRoZSBxdWVzdGlvbiBub3cgaXM6IGNhbiBTeXprYWxsZXIgZWZmZWN0aXZlbHkgZnV6eiB0aGUgcmVjZWl2ZSBwYXRoIChgUlhgKSBvZiB0aGlzIGRyaXZlcj8gSSBrbm93IGBzeXpfcGNpX2RldmljZV9hZGRgIGNhbiBpbnN0YW50aWF0ZSB0aGUgZGV2aWNlLCB3aGljaCBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIFRoZSByZWFsIGNoYWxsZW5nZSBpcyB0cmlnZ2VyaW5nIGBydGxfcnhgLiBTaW5jZSB0aGUgUENJIGZ1enplciBjYW4gc2ltdWxhdGUgRE1BIGFuZCBpbnRlcnJ1cHRzLCBpdCAqbWlnaHQqIGJlIHBvc3NpYmxlIHRvIGdldCBwYWNrZXRzIGZsb3dpbmcgYW5kIGhpdCB0aGF0IGNyaXRpY2FsIGZ1bmN0aW9uLiBJdCBzZWVtcyBwcm9taXNpbmcuXG5cblRoZSBuZXh0IHF1ZXN0aW9uIGlzLCBpcyBgcjgxNjlgIGV2ZW4gYSBnb29kIHRhcmdldD8gTGV0J3MgY2hlY2sgdGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb25zLiBBaCwgYENPTkZJR19SODE2OWAgc2VlbXMgb2J2aW91cy5cblxuSG9sZCBvbi4uLiB0aGlzIHBhdGNoIG1lbnRpb25zIGBwYWdlX3Bvb2xgIGFuZCBgeGRwX3J4cV9pbmZvYCwgc28gdGhpcyBjb3VsZCBiZSB0aGUgcmlnaHQgcGF0aC4gTGV0J3MgbWFrZSBzdXJlIGBDT05GSUdfUjgxNjlgIGlzIGVuYWJsZWQgYnkgZGVmYXVsdC4gT3IgZG8gSSBuZWVkIHRvIGV4cGxpY2l0bHkgZGVmaW5lIGl0LiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgZmlsZSBmb3IgdGhhdC4gSSBuZWVkIHRvIGxvb2sgaW50byBgZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnYCB0byBzZWUgdGhlIGRldGFpbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc4MTUsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDQ6MTg6NTAuMDgxNTE5Mzk5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyMDM3Nzk0MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUjgxNjlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZz03ND1jb25maWcgODEzOV9PTERfUlhfUkVTRVRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZy04My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc6ODQ6Y29uZmlnIFI4MTY5XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnLTg1LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDgxNjkvODE2OC84MTAxLzgxMjUgZXRoZXJuZXQgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZy0xMDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnOjEwMjpjb25maWcgUjgxNjlfTEVEU1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZy0xMDMtXFx0Ym9vbCBcXFwiU3VwcG9ydCBmb3IgY29udHJvbGxpbmcgdGhlIE5JQyBMRURzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwNDoxODo1MC40MDE5MDM4M1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI0Njk3NDQxMTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGlzIHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIG15IGV4cGVydGlzZTpcblxuKipDaGVja2luZyBgUEFHRV9QT09MYCB3aXRoIGBSODE2OWAqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgZmlyc3Qgc3RlcCBpbiBteSBhbmFseXNpcyBoZXJlIGlzIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSBgUjgxNjlgIGRyaXZlciBhY3R1YWxseSB1dGlsaXplcyB0aGUgYFBBR0VfUE9PTGAgbWVjaGFuaXNtLiBUaGlzIGlzIGEgcHJldHR5IGZ1bmRhbWVudGFsIHF1ZXN0aW9uLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGUgYFI4MTY5YCBkcml2ZXIgaGFzIGJlZW4gY29tcGlsZWQgd2l0aCBzdXBwb3J0IGZvciBgUEFHRV9QT09MYCBvciBpZiBpdCdzIHVzaW5nIGFsdGVybmF0aXZlIG1lbW9yeSBhbGxvY2F0aW9uIHN0cmF0ZWdpZXMuIFVuZGVyc3RhbmRpbmcgaG93IGl0IG1hbmFnZXMgaXRzIG1lbW9yeSBpcyBjcnVjaWFsIGZvciBkZWJ1Z2dpbmcsIHBlcmZvcm1hbmNlIGFuYWx5c2lzLCBhbmQgYW55IG9wdGltaXphdGlvbiBlZmZvcnRzIGRvd24gdGhlIGxpbmUuIEl0J3MgdGhlIGJhc2VsaW5lIGZvciBsb29raW5nIGF0IG90aGVyIGFyZWFzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NTAzLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDQ6MTg6NTIuODcxNjUwMDI1WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwNDM2NTg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlBBR0VfUE9PTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnPTExMD1jb25maWcgUlRBU0VcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZy0xMTMtXFx0c2VsZWN0IENSQzMyXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnOjExNDpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnLTExNS1cXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA0OjE4OjUyLjk0MjA5NTk3MVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNjM5NzYyMzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqSW52ZXN0aWdhdGluZyBSODE2OSBhbmQgUEFHRV9QT09MKipcblxuQWxyaWdodCwgaGFuZyBvbiBhIHNlY29uZC4gU29tZXRoaW5nIGRvZXNuJ3QgZmVlbCByaWdodC4gSSB3YXMgdW5kZXIgdGhlIGltcHJlc3Npb24gdGhhdCB0aGUgYFI4MTY5YCBkcml2ZXIgd2FzIGJ1aWx0IHdpdGggYFBBR0VfUE9PTGAgZW5hYmxlZCwgYnV0IGEgcXVpY2sgc2NhbiBvZiB0aGUgY29uZmlndXJhdGlvbiBzdWdnZXN0cyBvdGhlcndpc2UuIEkgbmVlZCB0byBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLiBUaW1lIHRvIGRpZyBpbnRvIHRoZSBgUjgxNjlgIGRyaXZlcidzIGRlcGVuZGVuY2llcyBhbmQgaG93IGBQQUdFX1BPT0xgIGZhY3RvcnMgaW50byBpdHMgYnVpbGQgcHJvY2Vzcy4gVGhlcmUncyBwcm9iYWJseSBhIGNvbmRpdGlvbmFsIGNvbXBpbGUgc29tZXdoZXJlIHRoYXQgSSdtIG92ZXJsb29raW5nIG9yIHBlcmhhcHMgYSBzdWJ0bGUgaW50ZXJhY3Rpb24gd2l0aCBhbm90aGVyIGNvbmZpZyBvcHRpb24uIExldCdzIHNlZSBpZiB3ZSBjYW4gdW5kZXJzdGFuZCB3aGVyZSB0aGlzIGNvbm5lY3Rpb24gaXMgYmVpbmcgZGVmaW5lZC4gVGhpcyBjb3VsZCBpbXBhY3QgcGVyZm9ybWFuY2UsIG9yIHN0YWJpbGl0eSFcblxuXG4iLCJJbnB1dFRva2VucyI6ODgwNywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA0OjE4OjU2LjAwNjA3NDY3MVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTg0NzYwNDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiUjgxNjlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZz03ND1jb25maWcgODEzOV9PTERfUlhfUkVTRVRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZy04My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc6ODQ6Y29uZmlnIFI4MTY5XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnLTg1LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDgxNjkvODE2OC84MTAxLzgxMjUgZXRoZXJuZXQgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZy0xMDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnOjEwMjpjb25maWcgUjgxNjlfTEVEU1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZy0xMDMtXFx0Ym9vbCBcXFwiU3VwcG9ydCBmb3IgY29udHJvbGxpbmcgdGhlIE5JQyBMRURzXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZzoxMDQ6XFx0ZGVwZW5kcyBvbiBSODE2OSBcXHUwMDI2XFx1MDAyNiBMRURTX1RSSUdHRVJfTkVUREVWXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnOjEwNTpcXHRkZXBlbmRzIG9uICEoUjgxNjk9eSBcXHUwMDI2XFx1MDAyNiBMRURTX0NMQVNTPW0pXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnLTEwNi1cXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA0OjE4OjU2LjA2NDU1NTcxOFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODk1OTA3NzEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGFzIGlmIHRoZXkncmUgbXkgb3duOlxuXG4qKkFuYWx5emluZyB0aGUgUjgxNjkgQ29uZmlndXJhdGlvbiBCbG9jayoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIE15IGluaXRpYWwgdGhvdWdodCBpcyBjbGVhcjogSSBuZWVkIHRvIGRlbHZlIGludG8gdGhlIGBSODE2OWAgY29uZmlndXJhdGlvbiBibG9jay4gVGhhdCdzIHdoZXJlIHRoZSBoZWFydCBvZiB0aGlzIG5ldHdvcmsgaW50ZXJmYWNlJ3Mgb3BlcmF0aW9uIGxpdmVzLCBhbmQgdW5kZXJzdGFuZGluZyBpdCBpcyBwYXJhbW91bnQuIEknbSBmb2N1c2luZyBteSBhdHRlbnRpb24gdGhlcmUsIGtub3dpbmcgdGhpcyBzcGVjaWZpYyBtb2R1bGUgaG9sZHMgdGhlIGtleSB0byB0aGUgY29uZmlndXJhdGlvbnMgYW5kIHBvdGVudGlhbCBpbnNpZ2h0cy4gVGhpcyBibG9jayBsaWtlbHkgY29udGFpbnMgdGhlIHNldHRpbmdzIHRoYXQgZGljdGF0ZSBpdHMgYmVoYXZpb3IsIGZyb20gZHJpdmVyIG9wdGlvbnMgdG8gaW50ZXJydXB0IGhhbmRsaW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgc3RydWN0dXJlIGFuZCBjb250ZW50IHRvIGdldCBhIGdyYXNwIG9mIGl0cyByb2xlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MzM1LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDQ6MTg6NTguOTYwNDY1MjQ4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5NTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA4NCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA4NDpcXHRjb25maWcgUjgxNjlcXG4gIDg1OlxcdFxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDgxNjkvODE2OC84MTAxLzgxMjUgZXRoZXJuZXQgc3VwcG9ydFxcXCJcXG4gIDg2OlxcdFxcdGRlcGVuZHMgb24gUENJXFxuICA4NzpcXHRcXHRzZWxlY3QgRldfTE9BREVSXFxuICA4ODpcXHRcXHRzZWxlY3QgQ1JDMzJcXG4gIDg5OlxcdFxcdHNlbGVjdCBQSFlMSUJcXG4gIDkwOlxcdFxcdHNlbGVjdCBSRUFMVEVLX1BIWVxcbiAgOTE6XFx0XFx0aGVscFxcbiAgOTI6XFx0XFx0ICBTYXkgWSBoZXJlIGlmIHlvdSBoYXZlIGEgUmVhbHRlayBFdGhlcm5ldCBhZGFwdGVyIGJlbG9uZ2luZyB0b1xcbiAgOTM6XFx0XFx0ICB0aGUgZm9sbG93aW5nIGZhbWlsaWVzOlxcbiAgOTQ6XFx0XFx0ICBSVEw4MTY5IEdpZ2FiaXQgRXRoZXJuZXRcXG4gIDk1OlxcdFxcdCAgUlRMODE2OCBHaWdhYml0IEV0aGVybmV0XFxuICA5NjpcXHRcXHQgIFJUTDgxMDEgRmFzdCBFdGhlcm5ldFxcbiAgOTc6XFx0XFx0ICBSVEw4MTI1IDIuNUdCaXQgRXRoZXJuZXRcXG4gIDk4OlxcdFxcbiAgOTk6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXFxuIDEwMDpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIHI4MTY5LiAgVGhpcyBpcyByZWNvbW1lbmRlZC5cXG4gMTAxOlxcdFxcbiAxMDI6XFx0Y29uZmlnIFI4MTY5X0xFRFNcXG4gMTAzOlxcdFxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIGNvbnRyb2xsaW5nIHRoZSBOSUMgTEVEc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDQ6MTg6NTguOTYwNTI3OTA4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyODA0OTYzNDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBhIFBvdGVudGlhbCBDb25maWd1cmF0aW9uIERlcGVuZGVuY3kqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgdHdvIG5ldyBpbmNsdWRlczogYFx1MDAzY25ldC9wYWdlX3Bvb2wvaGVscGVycy5oXHUwMDNlYCBhbmQgYFx1MDAzY25ldC94ZHAuaFx1MDAzZWAuIE15IGluaXRpYWwgY29uY2VybiBpcyB3aGV0aGVyIHRoZSBhZGRpdGlvbiBvZiB0aGUgcGFnZSBwb29sIGhlYWRlcnMgaW5kaWNhdGVzIGEgbmV3IGRlcGVuZGVuY3kgdGhhdCBtaWdodCBoYXZlIGJlZW4gbWlzc2VkIGluIHRoZSBjb25maWd1cmF0aW9uIGxvZ2ljLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byB0aGUgYFI4MTY5YCBkcml2ZXIuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBpc24ndCBhIHNpbGVudCBidWlsZCBicmVha2FnZSB3YWl0aW5nIHRvIGhhcHBlbi5cblxuTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGlmIGBQQUdFX1BPT0xgICppc24ndCogZXhwbGljaXRseSBzZWxlY3RlZCBieSB0aGUgYFI4MTY5YCBkcml2ZXIgY29uZmlndXJhdGlvbiwgdGhlbiB0aGUgYXV0aG9yIG1pZ2h0IGhhdmUgb3Zlcmxvb2tlZCBhIGNydWNpYWwgZGVwZW5kZW5jeS4gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIGBQQUdFX1BPT0xgIGlzIGVuYWJsZWQgZWxzZXdoZXJlIGluIHRoZSBrZXJuZWwgY29uZmlnLCBvciBpZiwgcGVyaGFwcywgaXQncyB1bmNvbmRpdGlvbmFsbHkgYXZhaWxhYmxlLlxuXG5HaXZlbiB0aGF0IGBQQUdFX1BPT0xgIGlzIGEgYm9vbGVhbiBjb25maWd1cmF0aW9uIG9wdGlvbiwgSSBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGVzIHRvIHNlZSBob3cgaXQncyBkZWZpbmVkIGFuZCB3aGVuIGl0IGdldHMgc2V0LiBNeSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSBlaXRoZXIgYG5ldC9LY29uZmlnYCBvciBgbmV0L2NvcmUvS2NvbmZpZ2AgdG8gcGlucG9pbnQgdGhlIHNvdXJjZSBvZiB0aGlzIGRlcGVuZGVuY3kgYW5kIGNvbmZpcm0gaXRzIHByb3BlciBoYW5kbGluZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBjb250cm9scyB0aGUgYWN0aXZhdGlvbiBvZiBgUEFHRV9QT09MYCB0byBhc3Nlc3MgdGhlIHBhdGNoJ3MgY29ycmVjdG5lc3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk4NDEsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwNDoxOTowMy4yNDEwMjYxMjdaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4MzUxNTI4NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUEFHRV9QT09MXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L0tjb25maWc9NDg3PWNvbmZpZyBORVRfREVWTElOS1xcbi0tXFxubmV0L0tjb25maWctNDkwLVxcbm5ldC9LY29uZmlnOjQ5MTpjb25maWcgUEFHRV9QT09MXFxubmV0L0tjb25maWctNDkyLVxcdGJvb2xcXG5uZXQvS2NvbmZpZy00OTMtXFxubmV0L0tjb25maWc6NDk0OmNvbmZpZyBQQUdFX1BPT0xfU1RBVFNcXG5uZXQvS2NvbmZpZy00OTUtXFx0ZGVmYXVsdCBuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA0OjE5OjAzLjYyNDU0NjEwNFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDczOTYyNDcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgdGhlIFBBR0VfUE9PTCBNeXN0ZXJ5KipcblxuT2theSwgc28gYFBBR0VfUE9PTGAuLi4gaXQncyBhIGhpZGRlbiBib29sZWFuLCB0aGF0IG11Y2ggSSBnZXQuIFRoZSBkcml2ZXJzIHRoYXQgKm5lZWQqIGl0IGFyZSBzdXBwb3NlZCB0byBleHBsaWNpdGx5IGVuYWJsZSBpdC4gVGhlIGltbWVkaWF0ZSBjb25jZXJuIGlzIHRoYXQgaWYgdGhlIGBSODE2OWAgZHJpdmVyLCB3aGljaCBpcyB0aGUgZm9jdXMgaGVyZSwgZG9lc24ndCBzZWxlY3QgaXQsIHdpbGwgdGhlIGRhbW4gdGhpbmcgZXZlbiBjb21waWxlPyBUaGF0J3MgdGhlIHF1ZXN0aW9uLlxuXG5GaXJzdCBpbnN0aW5jdCBpcyB0byBzZWUgaWYgdGhlIHBhdGNoIGl0c2VsZiBtYWRlIGFueSBtb2RpZmljYXRpb25zIHRvIHRoZSBgS2NvbmZpZ2AgZmlsZXMg4oCTIGlmIGl0IHN1ZGRlbmx5IHN0YXJ0ZWQgc2VsZWN0aW5nIG9yIGRlc2VsZWN0aW5nIHRoaXMgb3B0aW9uLiBOb3BlLCB0aGUgZGlmZiBkb2Vzbid0IHNob3cgYW55IGBLY29uZmlnYCBjaGFuZ2VzLiBTbyB0aGF0IGF2ZW51ZSBpcyBjbG9zZWQgb2ZmLlxuXG5BbHJpZ2h0LCBpZiBgUjgxNjlgIGlzbid0IHNldHRpbmcgaXQsICpzb21ldGhpbmcqIGVsc2UgbXVzdCBiZS4gTWF5YmUgYFhEUGAgaXMgaW52b2x2ZWQsIG9yIGFub3RoZXIgY29tcG9uZW50IHVzaW5nIHRoZSBwYWdlIHBvb2wgaW5mcmFzdHJ1Y3R1cmU/IEkgbmVlZCB0byBrbm93IHdoZXJlIGl0J3MgYmVpbmcgc2V0IGluIHRoZSBjdXJyZW50IGtlcm5lbCB0cmVlLiBMZXQncyBkaWcgaW50byB0aGUgY29kZSBhbmQgc2VlIGlmIGBSODE2OWAgaXRzZWxmIGlzIHNlbGVjdGluZyBgUEFHRV9QT09MYCBhbnl3aGVyZS4gVGhhdCB3aWxsIHRlbGwgbWUgYSBsb3QgYWJvdXQgdGhlIGRlcGVuZGVuY2llcyBhbmQgaWYgdGhpcyBwYXRjaCBicmVha3Mgc29tZSBpbXBsaWNpdCBhc3N1bXB0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAzNDMsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDQ6MTk6MDcuNjk4NTExMTE1WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NDE1Njc5NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWxlY3QgUEFHRV9QT09MXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc9MTEwPWNvbmZpZyBSVEFTRVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnLTExMy1cXHRzZWxlY3QgQ1JDMzJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc6MTE0OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWctMTE1LVxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDQ6MTk6MDcuNzcyNjczODgxWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0MTY3NDgyNjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCBtZSB0aGluayB0aGlzIHRocm91Z2guXG5cbioqSW52ZXN0aWdhdGluZyBgUEFHRV9QT09MYCBhbmQgYFI4MTY5YCoqXG5cbkhtbSwgc28gYFI4MTY5YCBpc24ndCBkaXJlY3RseSBzZWxlY3RpbmcgYFBBR0VfUE9PTGAuIFRoYXQncyB0aGUgaW5pdGlhbCB0aG91Z2h0LiBJIHdhcyB3b25kZXJpbmcgaWYgbWF5YmUgdGhlIGF2YWlsYWJpbGl0eSBvZiBgUEFHRV9QT09MYCB3YXMgc29tZWhvdyBpbXBsaWNpdCwgbGlua2VkIHRvIGBORVRgIGJlaW5nIGVuYWJsZWQsIGJ1dCB0aGF0IGRvZXNuJ3Qgc2VlbSByaWdodC4gV2FpdCwgdGhhdCdzIG5vdCBxdWl0ZSByaWdodC4gSXQgbG9va3MgbGlrZSBpdCdzIGEgaGlkZGVuIGJvb2xlYW4uXG5cblRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byB2ZXJpZnkgd2hldGhlciBgUjgxNjlgICpkb2VzKiBzZWxlY3QgYFBBR0VfUE9PTGAsIHBlcmhhcHMgaW5kaXJlY3RseSwgd2l0aGluIHRoZSBjdXJyZW50IGtlcm5lbCBzb3VyY2UgdHJlZS4gTGV0J3MgZGlnIGludG8gdGhlIGNvZGUgYW5kIHNlZSB3aGF0IHRoZSByZWxhdGlvbnNoaXBzIGFjdHVhbGx5IGFyZS4gVGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwODM2LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDQ6MTk6MTQuMTg5NDI0NzE1WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY5MzUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA4MCxcbiAgXCJMaW5lQ291bnRcIjogMjVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA4MDpcXHRcXHQgIFJYLXJlc2V0IG1ldGhvZCBzaG91bGQgYmUgYWRlcXVhdGUgZm9yIGFsbCBib2FyZHMuICBCdXQgaWYgeW91XFxuICA4MTpcXHRcXHQgIGV4cGVyaWVuY2UgcHJvYmxlbXMsIHlvdSBjYW4gZW5hYmxlIHRoaXMgb3B0aW9uIHRvIHJlc3RvcmUgdGhlXFxuICA4MjpcXHRcXHQgIG9sZCBSWC1yZXNldCBiZWhhdmlvci4gIElmIHVuc3VyZSwgc2F5IE4uXFxuICA4MzpcXHRcXG4gIDg0OlxcdGNvbmZpZyBSODE2OVxcbiAgODU6XFx0XFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODE2OS84MTY4LzgxMDEvODEyNSBldGhlcm5ldCBzdXBwb3J0XFxcIlxcbiAgODY6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gIDg3OlxcdFxcdHNlbGVjdCBGV19MT0FERVJcXG4gIDg4OlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAgODk6XFx0XFx0c2VsZWN0IFBIWUxJQlxcbiAgOTA6XFx0XFx0c2VsZWN0IFJFQUxURUtfUEhZXFxuICA5MTpcXHRcXHRoZWxwXFxuICA5MjpcXHRcXHQgIFNheSBZIGhlcmUgaWYgeW91IGhhdmUgYSBSZWFsdGVrIEV0aGVybmV0IGFkYXB0ZXIgYmVsb25naW5nIHRvXFxuICA5MzpcXHRcXHQgIHRoZSBmb2xsb3dpbmcgZmFtaWxpZXM6XFxuICA5NDpcXHRcXHQgIFJUTDgxNjkgR2lnYWJpdCBFdGhlcm5ldFxcbiAgOTU6XFx0XFx0ICBSVEw4MTY4IEdpZ2FiaXQgRXRoZXJuZXRcXG4gIDk2OlxcdFxcdCAgUlRMODEwMSBGYXN0IEV0aGVybmV0XFxuICA5NzpcXHRcXHQgIFJUTDgxMjUgMi41R0JpdCBFdGhlcm5ldFxcbiAgOTg6XFx0XFxuICA5OTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG4gMTAwOlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQgcjgxNjkuICBUaGlzIGlzIHJlY29tbWVuZGVkLlxcbiAxMDE6XFx0XFxuIDEwMjpcXHRjb25maWcgUjgxNjlfTEVEU1xcbiAxMDM6XFx0XFx0Ym9vbCBcXFwiU3VwcG9ydCBmb3IgY29udHJvbGxpbmcgdGhlIE5JQyBMRURzXFxcIlxcbiAxMDQ6XFx0XFx0ZGVwZW5kcyBvbiBSODE2OSBcXHUwMDI2XFx1MDAyNiBMRURTX1RSSUdHRVJfTkVUREVWXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA0OjE5OjE0LjE4OTQ5NjM2NVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTc0NzAwMjI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgUG90ZW50aWFsIENvbXBpbGF0aW9uIElzc3VlcyB3aXRoIGEgUmVjZW50IEtlcm5lbCBQYXRjaCoqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIFRoaXMgcGF0Y2gganVzdCBpbnRyb2R1Y2VkIGBwYWdlX3Bvb2xfZGV2X2FsbG9jX3BhZ2VzYCBhbmQgcmVsYXRlZCBmdW5jdGlvbnMuIElmIGBQQUdFX1BPT0xgIGlzbid0IGVuYWJsZWQsIHRoaXMgaXMgZ29pbmcgdG8gYmUgYSBwcm9ibGVtLiBNeSBndXQgZmVlbGluZyBpcyB0aGF0IGl0J2xsIGZhaWwgdG8gY29tcGlsZSB1bmxlc3MgYFBBR0VfUE9PTGAgaXMgc29tZWhvdyBkZWZpbmVkLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgZG9lc24ndCBpbnRyb2R1Y2UgYSBidWlsZCBicmVha2FnZS5cblxuUmlnaHQsIGxldCBtZSBkb3VibGUtY2hlY2suLi4gQWgsIG9mIGNvdXJzZSEgTG9va2luZyBhdCBgbmV0L0tjb25maWdgLCBpdCBsb29rcyBsaWtlIGBQQUdFX1BPT0xgICppcyogc2VsZWN0ZWQgYnkgYFBBR0VfUE9PTGAuIFRoYXQncyBhdCBsZWFzdCBhIHN0YXJ0IGFuZCBzdWdnZXN0cyBzb21lIGxldmVsIG9mIHNlbGYtZGVwZW5kZW5jeSB0byBtYW5hZ2UgdGhpcyBvcHRpb24uXG5cbk5vdywgYSBuYWdnaW5nIGZlZWxpbmcgcmVtYWluc+KApmRvZXMgdGhlIHN5c3RlbSBwcm92aWRlIHN0dWIgaW1wbGVtZW50YXRpb25zIG9yIHNvbWV0aGluZyBzaW1pbGFyIGlmIGBQQUdFX1BPT0xgICppc24ndCogc2VsZWN0ZWQ/IEkgbmVlZCB0byBiZSBzdXJlIHRoZSBjb2RlYmFzZSB3aWxsIGJ1aWxkIGNsZWFubHkgaW4gY29uZmlndXJhdGlvbnMgd2hlcmUgYFBBR0VfUE9PTGAgaXMgZGlzYWJsZWQuIEknbGwgbmVlZCB0byBjb25maXJtIHdoYXQgaGFwcGVucyBpbiB0aGUgbm9uLWBQQUdFX1BPT0xgIGJ1aWxkIHBhdGguIFRvIGNvbmZpcm0sIEknbGwgbmVlZCB0byBleGFtaW5lIGBpbmNsdWRlL25ldC9wYWdlX3Bvb2wvaGVscGVycy5oYC4gVGhhdCdzIHdoZXJlIEkgZXhwZWN0IHRvIGZpbmQgdGhlIG5lY2Vzc2FyeSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBvciBzdHVicy4gTGV0J3Mgc2VlIHdoYXQncyBhY3R1YWxseSBpbiB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE0OTUsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwNDoxOToxOC4xNjQxOTg4OTFaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyMTA5MTg4MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwYWdlX3Bvb2xfZGV2X2FsbG9jX3BhZ2VzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImluY2x1ZGUvbmV0L3BhZ2VfcG9vbC9oZWxwZXJzLmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQvcGFnZV9wb29sL2hlbHBlcnMuaD04MD1zdGF0aWMgaW5saW5lIHU2NCAqcGFnZV9wb29sX2V0aHRvb2xfc3RhdHNfZ2V0KHU2NCAqZGF0YSwgY29uc3Qgdm9pZCAqc3RhdHMpXFxuLS1cXG5pbmNsdWRlL25ldC9wYWdlX3Bvb2wvaGVscGVycy5oLTg2LS8qKlxcbmluY2x1ZGUvbmV0L3BhZ2VfcG9vbC9oZWxwZXJzLmg6ODc6ICogcGFnZV9wb29sX2Rldl9hbGxvY19wYWdlcygpIC0gYWxsb2NhdGUgYSBwYWdlLlxcbmluY2x1ZGUvbmV0L3BhZ2VfcG9vbC9oZWxwZXJzLmgtODgtICogQHBvb2w6XFx0cG9vbCBmcm9tIHdoaWNoIHRvIGFsbG9jYXRlXFxuLS1cXG5pbmNsdWRlL25ldC9wYWdlX3Bvb2wvaGVscGVycy5oLTkxLSAqL1xcbmluY2x1ZGUvbmV0L3BhZ2VfcG9vbC9oZWxwZXJzLmg6OTI6c3RhdGljIGlubGluZSBzdHJ1Y3QgcGFnZSAqcGFnZV9wb29sX2Rldl9hbGxvY19wYWdlcyhzdHJ1Y3QgcGFnZV9wb29sICpwb29sKVxcbmluY2x1ZGUvbmV0L3BhZ2VfcG9vbC9oZWxwZXJzLmgtOTMte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwNDoxOToxOC40ODUyOTc2MzNaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIwNDcwNDE4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlLi4uXG5cbioqQ2hlY2tpbmcgZm9yIFBhZ2UgUG9vbCBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgSSBuZWVkIHRvIHZlcmlmeSBzb21ldGhpbmcgcXVpY2tseS4gTXkgaW1tZWRpYXRlIHRhc2sgaXMgdG8gc2VlIGlmIHRoZSBoZWFkZXIgZmlsZSBgaW5jbHVkZS9uZXQvcGFnZV9wb29sL2hlbHBlcnMuaGAgaXMgY29uZGl0aW9uYWxpemVkIHdpdGggYCNpZmRlZiBDT05GSUdfUEFHRV9QT09MYC4gVGhpcyBpcyBhIHByZXR0eSBzdGFuZGFyZCBjaGVjaywgSSdtIGV4cGVjdGluZyBpdCB0byBiZSBndWFyZGVkIGJ5IHRoYXQgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZSBpZiBpdCdzIHJlbGF0ZWQgdG8gdGhlIHBhZ2UgcG9vbCBmdW5jdGlvbmFsaXR5LCBidXQgaXQncyBhbHdheXMgZ29vZCB0byBiZSB0aG9yb3VnaC4gSXQncyBpbXBvcnRhbnQgdG8gbWFrZSBzdXJlIHRoYXQgY29kZSByZWxhdGVkIHRvIGEgc3BlY2lmaWMgZmVhdHVyZSBsaWtlIHRoZSBgcGFnZV9wb29sYCBkb2Vzbid0IGxlYWsgaW50byB0aGUgYnVpbGQgd2hlbiB0aGUgZmVhdHVyZSBpc24ndCBhY3R1YWxseSBlbmFibGVkLiBUaGF0IGNvdWxkIGNhdXNlIGNvbXBpbGUgZXJyb3JzIG9yLCBldmVuIHdvcnNlLCBzdWJ0bGUgcnVudGltZSBpc3N1ZXMuIFNvLCB0aGUgZmlyc3Qgc3RlcCBpcyB0byBkaXZlIGluIGFuZCB0YWtlIGEgbG9vayBhdCB0aGUgZmlsZSdzIGNvbnRlbnRzLiBMZXQncyBnZXQgdG8gaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMTE2LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDQ6MTk6MjEuNjkwMDAzODk1WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTE1NDkwNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfUEFHRV9QT09MXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImluY2x1ZGUvbmV0L3BhZ2VfcG9vbC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQvcGFnZV9wb29sL2hlbHBlcnMuaC02MC1cXG5pbmNsdWRlL25ldC9wYWdlX3Bvb2wvaGVscGVycy5oOjYxOiNpZmRlZiBDT05GSUdfUEFHRV9QT09MX1NUQVRTXFxuaW5jbHVkZS9uZXQvcGFnZV9wb29sL2hlbHBlcnMuaC02Mi0vKiBEZXByZWNhdGVkIGRyaXZlci1mYWNpbmcgQVBJLCB1c2UgbmV0bGluayBpbnN0ZWFkICovXFxuLS1cXG5pbmNsdWRlL25ldC9wYWdlX3Bvb2wvaGVscGVycy5oPTMzMT1zdGF0aWMgaW5saW5lIHZvaWQgcGFnZV9wb29sX3B1dF9uZXRtZW0oc3RydWN0IHBhZ2VfcG9vbCAqcG9vbCxcXG4tLVxcbmluY2x1ZGUvbmV0L3BhZ2VfcG9vbC9oZWxwZXJzLmgtMzM4LVxcdCAqL1xcbmluY2x1ZGUvbmV0L3BhZ2VfcG9vbC9oZWxwZXJzLmg6MzM5OiNpZmRlZiBDT05GSUdfUEFHRV9QT09MXFxuaW5jbHVkZS9uZXQvcGFnZV9wb29sL2hlbHBlcnMuaC0zNDAtXFx0aWYgKCFwYWdlX3Bvb2xfdW5yZWZfYW5kX3Rlc3QobmV0bWVtKSlcXG4tLVxcbmluY2x1ZGUvbmV0L3BhZ2VfcG9vbC90eXBlcy5oPTg3PXN0cnVjdCBwYWdlX3Bvb2xfcGFyYW1zIHtcXG4tLVxcbmluY2x1ZGUvbmV0L3BhZ2VfcG9vbC90eXBlcy5oLTEwNy1cXG5pbmNsdWRlL25ldC9wYWdlX3Bvb2wvdHlwZXMuaDoxMDg6I2lmZGVmIENPTkZJR19QQUdFX1BPT0xfU1RBVFNcXG5pbmNsdWRlL25ldC9wYWdlX3Bvb2wvdHlwZXMuaC0xMDktLyoqXFxuLS1cXG5pbmNsdWRlL25ldC9wYWdlX3Bvb2wvdHlwZXMuaD0xNzY9c3RydWN0IHBhZ2VfcG9vbCB7XFxuLS1cXG5pbmNsdWRlL25ldC9wYWdlX3Bvb2wvdHlwZXMuaC0xODUtXFx0Ym9vbCBkbWFfc3luY19mb3JfY3B1OjE7XFx0LyogUGVyZm9ybSBETUEgc3luYyBmb3IgY3B1ICovXFxuaW5jbHVkZS9uZXQvcGFnZV9wb29sL3R5cGVzLmg6MTg2OiNpZmRlZiBDT05GSUdfUEFHRV9QT09MX1NUQVRTXFxuaW5jbHVkZS9uZXQvcGFnZV9wb29sL3R5cGVzLmgtMTg3LVxcdGJvb2wgc3lzdGVtOjE7XFx0XFx0XFx0LyogVGhpcyBpcyBhIGdsb2JhbCBwZXJjcHUgcG9vbCAqL1xcbi0tXFxuaW5jbHVkZS9uZXQvcGFnZV9wb29sL3R5cGVzLmgtMjAwLVxcbmluY2x1ZGUvbmV0L3BhZ2VfcG9vbC90eXBlcy5oOjIwMTojaWZkZWYgQ09ORklHX1BBR0VfUE9PTF9TVEFUU1xcbmluY2x1ZGUvbmV0L3BhZ2VfcG9vbC90eXBlcy5oLTIwMi1cXHQvKiB0aGVzZSBzdGF0cyBhcmUgaW5jcmVtZW50ZWQgd2hpbGUgaW4gc29mdGlycSBjb250ZXh0ICovXFxuLS1cXG5pbmNsdWRlL25ldC9wYWdlX3Bvb2wvdHlwZXMuaC0yMzktXFxuaW5jbHVkZS9uZXQvcGFnZV9wb29sL3R5cGVzLmg6MjQwOiNpZmRlZiBDT05GSUdfUEFHRV9QT09MX1NUQVRTXFxuaW5jbHVkZS9uZXQvcGFnZV9wb29sL3R5cGVzLmgtMjQxLVxcdC8qIHJlY3ljbGUgc3RhdHMgYXJlIHBlci1jcHUgdG8gYXZvaWQgbG9ja2luZyAqL1xcbi0tXFxuaW5jbHVkZS9uZXQvcGFnZV9wb29sL3R5cGVzLmg9Mjc1PXN0cnVjdCB4ZHBfbWVtX2luZm87XFxuaW5jbHVkZS9uZXQvcGFnZV9wb29sL3R5cGVzLmgtMjc2LVxcbmluY2x1ZGUvbmV0L3BhZ2VfcG9vbC90eXBlcy5oOjI3NzojaWZkZWYgQ09ORklHX1BBR0VfUE9PTFxcbmluY2x1ZGUvbmV0L3BhZ2VfcG9vbC90eXBlcy5oLTI3OC12b2lkIHBhZ2VfcG9vbF9lbmFibGVfZGlyZWN0X3JlY3ljbGluZyhzdHJ1Y3QgcGFnZV9wb29sICpwb29sLFxcbi0tXFxuaW5jbHVkZS9uZXQvcGFnZV9wb29sL3R5cGVzLmg9MzA4PXN0YXRpYyBpbmxpbmUgYm9vbCBpc19wYWdlX3Bvb2xfY29tcGlsZWRfaW4odm9pZClcXG5pbmNsdWRlL25ldC9wYWdlX3Bvb2wvdHlwZXMuaC0zMDkte1xcbmluY2x1ZGUvbmV0L3BhZ2VfcG9vbC90eXBlcy5oOjMxMDojaWZkZWYgQ09ORklHX1BBR0VfUE9PTFxcbmluY2x1ZGUvbmV0L3BhZ2VfcG9vbC90eXBlcy5oLTMxMS1cXHRyZXR1cm4gdHJ1ZTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDQ6MTk6MjEuNzUxMTY0NjkxWiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMTAzNjM4NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZS4uLiBJJ20gbG9va2luZyBhdCB0aGlzIGNvZGUsIGFuZCBzb21ldGhpbmcncyBub3QgcXVpdGUgcmlnaHQuIEkgZXhwZWN0ZWQgYHBhZ2VfcG9vbF9kZXZfYWxsb2NfcGFnZXNgIHRvIGJlIGNvbmRpdGlvbmFsbHkgY29tcGlsZWQgYmFzZWQgb24gYENPTkZJR19QQUdFX1BPT0xgLCBidXQgaXQgZG9lc24ndCBhcHBlYXIgdG8gYmUgd2l0aGluIHRoYXQgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZS4gVGhhdCdzIHVudXN1YWwuIEl0J3MgdGltZSB0byBjb25maXJtIG15IHN1c3BpY2lvbi5cblxuKipEaXZpbmcgaW50byB0aGUgUGFnZSBQb29sIEltcGxlbWVudGF0aW9uKipcblxuSSdsbCBxdWlja2x5IG5hdmlnYXRlIHRvIHRoZSByZWxldmFudCBoZWFkZXIgZmlsZS4gTGV0J3Mgc2VlLi4uIGl0IHNob3VsZCBiZSBgaW5jbHVkZS9uZXQvcGFnZV9wb29sL2hlbHBlcnMuaGAuIEknbGwgd2FudCB0byBjaGVjayBhcm91bmQgbGluZSA5MiB0aGVyZSwgYW5kIHNlZSB3aGF0J3Mgd2hhdC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5IHRoaXMgZnVuY3Rpb24sIHdoaWNoIHNlZW1zIGNlbnRyYWwgdG8gdGhlIHBhZ2UgcG9vbCBmdW5jdGlvbmFsaXR5LCBtaWdodCAqbm90KiBiZSBndWFyZGVkIGJ5IHRoZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBtYWNyby4gVGhlcmUgaGFzIHRvIGJlIGEgcmVhc29uLCBhbmQgdW5kZXJzdGFuZGluZyBpdCBpcyBjcml0aWNhbCBmb3IgbWUgdG8gaGF2ZSBhIHNvbGlkIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoaXMgY29kZSB3b3Jrcy4gSSBoYXZlIHRvIGJlIHN1cmUuIExldCdzIGdldCB0byB0aGUgYm90dG9tIG9mIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzMTA4LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDQ6MTk6MjUuODYxNTMxMTVaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODk2MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiaW5jbHVkZS9uZXQvcGFnZV9wb29sL2hlbHBlcnMuaFwiLFxuICBcIkZpcnN0TGluZVwiOiA4MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA4MDpcXHRzdGF0aWMgaW5saW5lIHU2NCAqcGFnZV9wb29sX2V0aHRvb2xfc3RhdHNfZ2V0KHU2NCAqZGF0YSwgY29uc3Qgdm9pZCAqc3RhdHMpXFxuICA4MTpcXHR7XFxuICA4MjpcXHRcXHRyZXR1cm4gZGF0YTtcXG4gIDgzOlxcdH1cXG4gIDg0OlxcdCNlbmRpZlxcbiAgODU6XFx0XFxuICA4NjpcXHQvKipcXG4gIDg3OlxcdCAqIHBhZ2VfcG9vbF9kZXZfYWxsb2NfcGFnZXMoKSAtIGFsbG9jYXRlIGEgcGFnZS5cXG4gIDg4OlxcdCAqIEBwb29sOlxcdHBvb2wgZnJvbSB3aGljaCB0byBhbGxvY2F0ZVxcbiAgODk6XFx0ICpcXG4gIDkwOlxcdCAqIEdldCBhIHBhZ2UgZnJvbSB0aGUgcGFnZSBhbGxvY2F0b3Igb3IgcGFnZV9wb29sIGNhY2hlcy5cXG4gIDkxOlxcdCAqL1xcbiAgOTI6XFx0c3RhdGljIGlubGluZSBzdHJ1Y3QgcGFnZSAqcGFnZV9wb29sX2Rldl9hbGxvY19wYWdlcyhzdHJ1Y3QgcGFnZV9wb29sICpwb29sKVxcbiAgOTM6XFx0e1xcbiAgOTQ6XFx0XFx0Z2ZwX3QgZ2ZwID0gKEdGUF9BVE9NSUMgfCBfX0dGUF9OT1dBUk4pO1xcbiAgOTU6XFx0XFxuICA5NjpcXHRcXHRyZXR1cm4gcGFnZV9wb29sX2FsbG9jX3BhZ2VzKHBvb2wsIGdmcCk7XFxuICA5NzpcXHR9XFxuICA5ODpcXHRcXG4gIDk5OlxcdC8qKlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwNDoxOToyNS44NjE2MjIxNFoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTkwNjExODMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipOYXZpZ2F0aW5nIHRoZSBQYWdlIFBvb2wgSGVhZGVyIExhYnlyaW50aCoqXG5cbkFscmlnaHQsIGxldCdzIHNlZS4uLiBJJ20gbG9va2luZyBhdCBgcGFnZV9wb29sX2FsbG9jX3BhZ2VzYCwgYW5kIEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSB3aGVyZSB0aGF0IHNwZWNpZmljIGZ1bmN0aW9uIGlzIGRlZmluZWQuIEl0J3MgYSBrZXkgcGllY2UgaW4gdGhlIHBhZ2UgcG9vbCBhcmNoaXRlY3R1cmUsIHNvIHVuZGVyc3RhbmRpbmcgaXRzIHNvdXJjZSBpcyBjcnVjaWFsLiBOb3csIGlzIGl0IG5lc3RsZWQgaW4gYGluY2x1ZGUvbmV0L3BhZ2VfcG9vbC9oZWxwZXJzLmhgPyBUaGF0J3MgdGhlIGxpa2VseSBzcG90LCBnaXZlbiBpdHMgbmFtZSBhbmQgdHlwaWNhbCBmdW5jdGlvbi4gT3IsIGNvdWxkIGl0IGJlIGEgYml0IG1vcmUgZnVuZGFtZW50YWwsIGRlY2xhcmVkIGluIGB0eXBlcy5oYD8gSXQgd291bGQgbWFrZSBzZW5zZSBpZiBpdCB3YXMgY29uc2lkZXJlZCBhIGJhc2ljIHR5cGUgb3Igc3RydWN0dXJlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkga25vdyBzbyBJIGNhbiB1bmRlcnN0YW5kIGFueSByZWxhdGVkIHR5cGVzLCBzdHJ1Y3R1cmVzLCBvciBtYWNyb3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNjc2LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwNDoxOToyOS4wNTIyMzc0NTNaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg4MTA0MTQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBhZ2VfcG9vbF9hbGxvY19wYWdlc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL25ldC9wYWdlX3Bvb2wvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L3BhZ2VfcG9vbC9oZWxwZXJzLmgtMjEtICpcXG5pbmNsdWRlL25ldC9wYWdlX3Bvb2wvaGVscGVycy5oOjIyOiAqIDEuIHBhZ2VfcG9vbF9hbGxvY19wYWdlcygpOiBhbGxvY2F0ZSBtZW1vcnkgd2l0aG91dCBwYWdlIHNwbGl0dGluZyB3aGVuXFxuaW5jbHVkZS9uZXQvcGFnZV9wb29sL2hlbHBlcnMuaC0yMy0gKiBkcml2ZXIga25vd3MgdGhhdCB0aGUgbWVtb3J5IGl0IG5lZWQgaXMgYWx3YXlzIGJpZ2dlciB0aGFuIGhhbGYgb2YgdGhlIHBhZ2VcXG4tLVxcbmluY2x1ZGUvbmV0L3BhZ2VfcG9vbC9oZWxwZXJzLmg9OTI9c3RhdGljIGlubGluZSBzdHJ1Y3QgcGFnZSAqcGFnZV9wb29sX2Rldl9hbGxvY19wYWdlcyhzdHJ1Y3QgcGFnZV9wb29sICpwb29sKVxcbi0tXFxuaW5jbHVkZS9uZXQvcGFnZV9wb29sL2hlbHBlcnMuaC05NS1cXG5pbmNsdWRlL25ldC9wYWdlX3Bvb2wvaGVscGVycy5oOjk2OlxcdHJldHVybiBwYWdlX3Bvb2xfYWxsb2NfcGFnZXMocG9vbCwgZ2ZwKTtcXG5pbmNsdWRlL25ldC9wYWdlX3Bvb2wvaGVscGVycy5oLTk3LX1cXG4tLVxcbmluY2x1ZGUvbmV0L3BhZ2VfcG9vbC90eXBlcy5oPTE3Nj1zdHJ1Y3QgcGFnZV9wb29sIHtcXG4tLVxcbmluY2x1ZGUvbmV0L3BhZ2VfcG9vbC90eXBlcy5oLTI2My1cXG5pbmNsdWRlL25ldC9wYWdlX3Bvb2wvdHlwZXMuaDoyNjQ6c3RydWN0IHBhZ2UgKnBhZ2VfcG9vbF9hbGxvY19wYWdlcyhzdHJ1Y3QgcGFnZV9wb29sICpwb29sLCBnZnBfdCBnZnApO1xcbmluY2x1ZGUvbmV0L3BhZ2VfcG9vbC90eXBlcy5oLTI2NS1uZXRtZW1fcmVmIHBhZ2VfcG9vbF9hbGxvY19uZXRtZW1zKHN0cnVjdCBwYWdlX3Bvb2wgKnBvb2wsIGdmcF90IGdmcCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA0OjE5OjI5LjE0MDM0NjIxOFoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1ODQzMzQ1MTQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRlYnVnZ2luZyBhIFBvdGVudGlhbCBCdWlsZCBJc3N1ZSB3aXRoIGBSODE2OWAgYW5kIGBQQUdFX1BPT0xgKipcblxuT2theSwgc28gSSdtIHN0YXJpbmcgYXQgdGhpcyBidWlsZCBjb25maWcgYW5kIHNvbWV0aGluZyBmZWVscyBvZmYuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGlmIGBDT05GSUdfUEFHRV9QT09MYCBpc24ndCBlbmFibGVkLCB0aGVuIGBwYWdlX3Bvb2xfYWxsb2NfcGFnZXNgIHdvbid0IGJlIGRlZmluZWQuIFRoYXQncyBiYXNpYyBkZXBlbmRlbmN5IG1hbmFnZW1lbnQsIHJpZ2h0PyBUaGVuIEkgaGF2ZSB0aGlzIG5hZ2dpbmcgdGhvdWdodCwgZGlkIGBQQUdFX1BPT0xgIGdldCBzZWxlY3RlZCBieSBgUjgxNjlgIHNvbWV3aGVyZSBlbHNlPyBQZXJoYXBzIGluIGEgZGlmZmVyZW50IHRyZWUgb3IgYSBkaWZmZXJlbnQgY29udGV4dD9cblxuSSB3YXMgc3VyZSBJIGNoZWNrZWQgdGhpcywgYnV0IGp1c3QgdG8gYmUgY2VydGFpbiwgSSBuZWVkIHRvIHZlcmlmeSBpZiBgUjgxNjlgIGRpcmVjdGx5IHNlbGVjdHMgYFBBR0VfUE9PTGAgaW4gdGhlIGN1cnJlbnQga2VybmVsIHRyZWUuIE9oLCB3YWl0LCBJIGFscmVhZHkgZGlkIGEgYGdyZXBgIGZvciBcInNlbGVjdCBQQUdFX1BPT0xcIiBpbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZ2AgZmlsZS4gVGhlIHJlc3VsdHMgb25seSBwb2ludCB0byBgUlRBU0VgLCBub3QgYFI4MTY5YC5cblxuRmluZSwgSSdsbCBkb3VibGUtY2hlY2sgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZ2AgYWdhaW4gaW4gdGhlIGN1cnJlbnQgdHJlZSwganVzdCB0byBtYWtlIGFic29sdXRlbHkgc3VyZS4gVGhlIHBhdGNoIG1pZ2h0IGhhdmUgZm9yZ290dGVuIHRvIHNlbGVjdCBpdCwgZXZlbiB0aG91Z2ggaXQncyBhbHJlYWR5IGFwcGxpZWQuIEJ1dCBoYW5nIG9uLi4uIGlmIGBQQUdFX1BPT0xgIGlzbid0IHNlbGVjdGVkLCB3b3VsZG4ndCB0aGUgYnVpbGQgZmFpbCBvdXRyaWdodCBpZiBgUjgxNjlgIGlzIGVuYWJsZWQ/IFRoYXQncyBhIGZ1bmRhbWVudGFsIGxpbmsuXG5cblNvLCBhbSBJIG1pc3Npbmcgc29tZXRoaW5nPyBTaG91bGQgSSBiZSBhZGRpbmcgYFBBR0VfUE9PTGAgdG8gYEVuYWJsZUNvbmZpZ3NgIHRvIGZpeCBpdD8gTm8sIG5vLCBuby4gYFBBR0VfUE9PTGAgaXMgYSBoaWRkZW4gY29uZmlnLCBzbyB0aGF0IHdvbid0IHdvcmsuXG5cbkJ1dCB0aGVuLi4uIGlmIGBQQUdFX1BPT0xgIGlzbid0ICpzZWxlY3RlZCogYnkgYFI4MTY5YCwgaG93IGlzIHRoZSBjb2RlIGV2ZW4gY29tcGlsaW5nIGluIHRoZSBmaXJzdCBwbGFjZT8gU29tZXRoaW5nIGlzIHNlbGVjdGluZyBpdCwgb3IgdGhlIGRlZmF1bHQgYmVoYXZpb3IgaXMgZW5hYmxpbmcgaXQgc29tZXdoZXJlLiBJcyBpdCBlbmFibGVkIGJ5IGRlZmF1bHQsIG9yIGlzIGl0IHNlbGVjdGVkIGJ5IGBORVRgPyBPa2F5LCBJJ20gZ29pbmcgdG8gcmV2aXNpdCBgbmV0L0tjb25maWdgIGFuZCByZWZyZXNoIG15IG1lbW9yeS4gVGhpcyBpcyBwcm9iYWJseSBhIGdvb2QgcGxhY2UgdG8gc3RhcnQsIGdpdmVuIGl0cyByZWxldmFuY2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0MjQ3LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA0OjE5OjM0Ljk4MzY5Mzc2NVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NjE1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA0ODAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA0ODA6XFx0XFx0Ym9vbFxcbiA0ODE6XFx0XFx0ZGVmYXVsdCBuXFxuIDQ4MjpcXHRcXHRoZWxwXFxuIDQ4MzpcXHRcXHQgIFRoZSBORVRfU09DS19NU0cgcHJvdmlkZXMgYSBmcmFtZXdvcmsgZm9yIHBsYWluIHNvY2tldHMgKGUuZy4gVENQKSBvclxcbiA0ODQ6XFx0XFx0ICBVTFBzICh1cHBlciBsYXllciBtb2R1bGVzLCBlLmcuIFRMUykgdG8gcHJvY2VzcyBMNyBhcHBsaWNhdGlvbiBkYXRhXFxuIDQ4NTpcXHRcXHQgIHdpdGggdGhlIGhlbHAgb2YgQlBGIHByb2dyYW1zLlxcbiA0ODY6XFx0XFxuIDQ4NzpcXHRjb25maWcgTkVUX0RFVkxJTktcXG4gNDg4OlxcdFxcdGJvb2xcXG4gNDg5OlxcdFxcdGRlZmF1bHQgblxcbiA0OTA6XFx0XFxuIDQ5MTpcXHRjb25maWcgUEFHRV9QT09MXFxuIDQ5MjpcXHRcXHRib29sXFxuIDQ5MzpcXHRcXG4gNDk0OlxcdGNvbmZpZyBQQUdFX1BPT0xfU1RBVFNcXG4gNDk1OlxcdFxcdGRlZmF1bHQgblxcbiA0OTY6XFx0XFx0Ym9vbCBcXFwiUGFnZSBwb29sIHN0YXRzXFxcIlxcbiA0OTc6XFx0XFx0ZGVwZW5kcyBvbiBQQUdFX1BPT0xcXG4gNDk4OlxcdFxcdGhlbHBcXG4gNDk5OlxcdFxcdCAgRW5hYmxlIHBhZ2UgcG9vbCBzdGF0aXN0aWNzIHRvIHRyYWNrIHBhZ2UgYWxsb2NhdGlvbiBhbmQgcmVjeWNsaW5nXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA0OjE5OjM0Ljk4Mzc3MTA5NVoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTQzMjQzODgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgYSBQb3RlbnRpYWwgQnVpbGQgRGVwZW5kZW5jeSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgaGlkZGVuIGJvb2xlYW4gb3B0aW9uIOKAkyBpdCdzIHNvbWV0aGluZyB0aGF0ICptdXN0KiBiZSBleHBsaWNpdGx5IHNlbGVjdGVkLiBUaGUgdHJpY2t5IHBhcnQgaXMgZmlndXJpbmcgb3V0ICp3aGVyZSogaXQncyBiZWluZyBzZWxlY3RlZC4gSWYgYFI4MTY5YCBpcyBzb21laG93IHJlbHlpbmcgb24gaXQgYnV0IGRvZXNuJ3Qgc2VsZWN0IGl0IGRpcmVjdGx5LCB0aGVuIHdlJ3JlIGdvaW5nIHRvIGdldCBhIGJ1aWxkIGZhaWx1cmUgdW5sZXNzIHNvbWUgb3RoZXIgY29uZmlndXJhdGlvbiBvcHRpb24gY29tZXMgYWxvbmcgdG8gc2F2ZSB0aGUgZGF5LlxuXG5NeSBpbml0aWFsIHRob3VnaHQgd2FzIHRoYXQgdGhpcyBwYXRjaCAqbWlnaHQqIGhhdmUgc251Y2sgaW4gYSBgc2VsZWN0IFBBR0VfUE9PTGAgdG8gYFI4MTY5YCB3aXRoaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZ2AuIEJ1dCwgd2FpdCwgbGV0IG1lIHJlLWV4YW1pbmUgdGhpcyBwYXRjaC4gSG1tLCB0aGUgZGlmZiBJIHdhcyBnaXZlbiBkb2Vzbid0IHNob3cgYW55IG1vZGlmaWNhdGlvbnMgdG8gdGhlIGBLY29uZmlnYCBmaWxlcyBhdCBhbGwsIHNvIHRoYXQgaWRlYSdzIHByb2JhYmx5IG91dC5cblxuQWxyaWdodCwgbGV0J3MgdGFrZSBhIHF1aWNrIGxvb2sgYXQgdGhlIGN1cnJlbnQgdHJlZSBhbmQgZG91YmxlLWNoZWNrIHdoZXRoZXIgYFI4MTY5YCAqZG9lcyogc2VsZWN0IGBQQUdFX1BPT0xgIGFueXdoZXJlLiBBY3R1YWxseSwgSSBhbHJlYWR5IGdyZXBwZWQgZm9yIGBzZWxlY3QgUEFHRV9QT09MYCBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnYCBhbmQsIGFzIEkgcmVjYWxsLCBpdCBvbmx5IHNob3dlZCB1cCBpbiB0aGUgYFJUQVNFYCBjb25maWcuXG5cbkhvbGQgb24sIGRpZCBJIG1pc3Mgc29tZXRoaW5nPyBNYXliZSBJIHNob3VsZCByZS1jaGVjayBgZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnYCBhZ2FpbiwganVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuIEl0J3MgZWFzeSB0byBvdmVybG9vayB0aGluZ3Mgd2hlbiB5b3UncmUganVtcGluZyBiZXR3ZWVuIGZpbGVzIGFuZCBwYXRjaGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTI3OCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4OCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA0OjE5OjM5LjkyNzAxNzQ5NVoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzYyNDI5NTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiUEFHRV9QT09MXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc9MTEwPWNvbmZpZyBSVEFTRVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnLTExMy1cXHRzZWxlY3QgQ1JDMzJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc6MTE0OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWctMTE1LVxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDQ6MTk6NDAuMDAzMjY1ODdaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk2OTgyOTk1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEZWJ1Z2dpbmcgYSBDb21waWxlciBEZXBlbmRlbmN5KipcblxuT2theSwgc28gSSdtIHdyZXN0bGluZyB3aXRoIHRoaXMgYnVpbGQuIEknbSBzZWVpbmcgYW4gaXNzdWUgcmVsYXRlZCB0byBgUEFHRV9QT09MYCBhbmQgaXQgbG9va3MgbGlrZSBpdCdzICpvbmx5KiBpbiB0aGUgYFJUQVNFYCBjb25maWd1cmF0aW9uLiBIbW0sIHRoYXQncyBzdHJhbmdlLiBJZiBgUjgxNjlgIGlzbid0IGRpcmVjdGx5IGNob29zaW5nIGBQQUdFX1BPT0xgLCBob3cgaXMgdGhpcyB0aGluZyBldmVuIGNvbXBpbGluZyBhdCBhbGwgaW4gb3RoZXIgc2NlbmFyaW9zPyBJdCdzIGNsZWFybHkgYSBkZXBlbmRlbmN5LCByaWdodD8gTWF5YmUgc29tZXRoaW5nIGxpa2UgYE1BQ0JgIG9yIGFub3RoZXIgbW9kdWxlIGlzIHRoZSBvbmUgZG9pbmcgdGhlIHNlbGVjdGlvbiwgYW5kIGl0J3MganVzdCBtaXNzaW5nIGluIHRoaXMgbGltaXRlZCBgUjgxNjlgIHRlc3QgY2FzZS4gQnV0IGlmIEkgb25seSBlbmFibGUgYFI4MTY5YCwgYXMgaW4gbXkgY3VycmVudCBidWlsZCwgaXQgc2hvdWxkICpkZWZpbml0ZWx5KiBmYWlsIGlmIHNvbWV0aGluZyBlbHNlIGlzIG1pc3NpbmcuIEFoIHdhaXQsIGhvbGQgb24uLi4gY291bGQgaXQgYmUgYFhEUF9TT0NLRVRTYD8gVGhhdCBjb3VsZCBiZSBpdC4gSXQgaXMgYXNzb2NpYXRlZCB3aXRoIGRhdGEgc3RydWN0dXJlcyB0aGF0IHJlcXVpcmUgbWVtb3J5IG1hbmFnZW1lbnQuIExldCdzIGRpZyBkZWVwZXIuIEkgbmVlZCB0byBnZXQgdG8gdGhlIGJvdHRvbSBvZiBleGFjdGx5ICp3aGF0KiBpcyBzZWxlY3RpbmcgYFBBR0VfUE9PTGAgYW5kIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY3kgY2hhaW4gcHJvcGVybHkuIFRpbWUgdG8gY2hlY2sgdGhvc2UgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBmaWd1cmUgb3V0IHRoZSBleGFjdCBjYWxsIGNoYWluIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1OTIyLCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA0OjE5OjQzLjk3MzA5OTYwOFoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzEwMzI3NjMyLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWxlY3QgUEFHRV9QT09MXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA0OjE5OjQ0LjI4MzQzODE1OVoiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTAxMzcwOTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipOYXZpZ2F0aW5nIHRoZSBLY29uZmlnIExhbmRzY2FwZSoqXG5cbkFscmlnaHQsIHRpbWUgdG8gY2hhc2UgZG93biB0aGlzIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBGaXJzdCwgbGV0J3Mgc2VlLCB3aGVyZSB3b3VsZCB0aGF0IGJlIGRlZmluZWQgaW4gdGhlIGtlcm5lbCBzb3VyY2U/IE15IGluaXRpYWwgdGhvdWdodCBpcyBgbmV0L2NvcmUvS2NvbmZpZ2AsIGJ1dCB0aGF0IGZlZWxzIGEgYml0IHRvbyBzcGVjaWZpYy4gSXQncyBtb3JlIGxpa2VseSB0byBiZSBpbiB0aGUgZ2VuZXJhbCBuZXR3b3JraW5nIGNvbmZpZ3VyYXRpb24sIHJpZ2h0PyBPa2F5LCBzbyBsZXQncyB0cnkgYG5ldC9LY29uZmlnYCBpbnN0ZWFkLiBUaGF0J3MgdGhlIG1vcmUgbG9naWNhbCBzdGFydGluZyBwb2ludCBmb3Igc29tZXRoaW5nIHRoYXQgYnJvYWRseSByZWxhdGVzIHRvIG5ldHdvcmsgZnVuY3Rpb25hbGl0eSwgcmF0aGVyIHRoYW4gYSB2ZXJ5IHNwZWNpYWxpemVkIGNvcmUgY29tcG9uZW50LiBUaGF0IHNob3VsZCBnaXZlIGEgbW9yZSBjb21wbGV0ZSBvdmVydmlldywgSSdsbCBzdGFydCB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTYzMDYsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwNDoxOTo0Ny4xODQ4MTI4NzlaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4ODA2MzA4MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2VsZWN0IFBBR0VfUE9PTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZz00MzU9Y29uZmlnIFZFVEhcXG5kcml2ZXJzL25ldC9LY29uZmlnLTQzNi1cXHR0cmlzdGF0ZSBcXFwiVmlydHVhbCBldGhlcm5ldCBwYWlyIGRldmljZVxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjQzNzpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvS2NvbmZpZy00MzgtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz00NDM9Y29uZmlnIFZJUlRJT19ORVRcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctNDQ3LVxcdHNlbGVjdCBESU1MSUJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjQ0ODpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvS2NvbmZpZy00NDktXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz01NDQ9Y29uZmlnIFhFTl9ORVRERVZfRlJPTlRFTkRcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctNTQ3LVxcdHNlbGVjdCBYRU5fWEVOQlVTX0ZST05URU5EXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo1NDg6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L0tjb25maWctNTQ5LVxcdGRlZmF1bHQgeVxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz01ODQ9Y29uZmlnIFZNWE5FVDNcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctNTg3LVxcdGRlcGVuZHMgb24gUEFHRV9TSVpFX0xFU1NfVEhBTl82NEtCXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo1ODg6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L0tjb25maWctNTg5LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NjA0PWNvbmZpZyBORVRERVZTSU1cXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctNjEwLVxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L0tjb25maWc6NjExOlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9LY29uZmlnLTYxMi1cXHRzZWxlY3QgTkVUX1NIQVBFUlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL0tjb25maWc9MTg9Y29uZmlnIE5FVF9BSVJPSEFcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9LY29uZmlnLTIxLVxcdHNlbGVjdCBORVRfQUlST0hBX05QVVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9LY29uZmlnOjIyOlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvS2NvbmZpZy0yMy1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGliYWJhL0tjb25maWc9MTg9Y29uZmlnIEFMSUJBQkFfRUVBXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGliYWJhL0tjb25maWctMjEtXFx0ZGVwZW5kcyBvbiA2NEJJVFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsaWJhYmEvS2NvbmZpZzoyMjpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxpYmFiYS9LY29uZmlnLTIzLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc9NzI9Y29uZmlnIEJDTUdFTkVUXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTgwLVxcdHNlbGVjdCBESU1MSUJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnOjgxOlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTgyLVxcdHNlbGVjdCBCUk9BRENPTV9QSFkgaWYgQVJDSF9CQ00yODM1XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnPTIwNz1jb25maWcgQk5YVFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yMTMtXFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZzoyMTQ6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjE1LVxcdHNlbGVjdCBESU1MSUJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc9MjU4PWNvbmZpZyBCTkdFXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTI2MS1cXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnOjI2MjpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yNjMtXFx0c2VsZWN0IEFVWElMSUFSWV9CVVNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc9MjY5PWNvbmZpZyBCQ01BU1BcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjc1LVxcdHNlbGVjdCBNRElPX0JDTV9VTklNQUNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnOjI3NjpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yNzctXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9LY29uZmlnPTY9Y29uZmlnIEVOSUNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvS2NvbmZpZy04LVxcdGRlcGVuZHMgb24gUENJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9LY29uZmlnOjk6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvS2NvbmZpZy0xMC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci9LY29uZmlnPTE5PWNvbmZpZyBUU05FUFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvS2NvbmZpZy0yMy1cXHRzZWxlY3QgUEhZTElCXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvS2NvbmZpZzoyNDpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvS2NvbmZpZy0yNS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZz0yMz1jb25maWcgRkVDXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZy0zMS1cXHRzZWxlY3QgRklYRURfUEhZXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWc6MzI6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnLTMzLVxcdGltcGx5IFBBR0VfUE9PTF9TVEFUU1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL0tjb25maWc9MTg9Y29uZmlnIEdWRVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL0tjb25maWctMjEtXFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9LY29uZmlnOjIyOlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvS2NvbmZpZy0yMy1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZz05MT1jb25maWcgSE5TM1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWctOTQtXFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWc6OTU6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnLTk2LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnPTE0Nz1jb25maWcgSElCTUNHRVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWctMTUzLVxcdHNlbGVjdCBSRUFMVEVLX1BIWVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnOjE1NDpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWctMTU1LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvS2NvbmZpZz02PWNvbmZpZyBISU5JQzNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvS2NvbmZpZy0xNC1cXHRzZWxlY3QgRElNTElCXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9LY29uZmlnOjE1OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL0tjb25maWctMTYtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL0tjb25maWc9ND1jb25maWcgTElCRVRIXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL0tjb25maWctNS1cXHR0cmlzdGF0ZSBcXFwiQ29tbW9uIEV0aGVybmV0IGxpYnJhcnkgKGxpYmV0aClcXFwiIGlmIENPTVBJTEVfVEVTVFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC9LY29uZmlnOjY6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC9LY29uZmlnLTctXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnPTU5PWNvbmZpZyBNVk5FVEFcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZy02My1cXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZzo2NDpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnOjY1OlxcdHNlbGVjdCBQQUdFX1BPT0xfU1RBVFNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWctNjYtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnPTg2PWNvbmZpZyBNVlBQMlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnLTkwLVxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnOjkxOlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWctOTItXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZz0zMT1jb25maWcgT0NURU9OVFgyX1BGXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTM0LVxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc6MzU6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctMzYtXFx0c2VsZWN0IENSWVBUT19MSUJfQUVTIGlmIE1BQ1NFQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZz0xND1jb25maWcgTkVUX01FRElBVEVLX1NPQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZy0yMC1cXHRzZWxlY3QgR0VORVJJQ19BTExPQ0FUT1JcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnOjIxOlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnOjIyOlxcdHNlbGVjdCBQQUdFX1BPT0xfU1RBVFNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnLTIzLVxcdHNlbGVjdCBQQ1NfTVRLX0xZTlhJXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L0tjb25maWc9Nj1jb25maWcgTUxYNF9FTlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9LY29uZmlnLTktXFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvS2NvbmZpZzoxMDpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9LY29uZmlnLTExLVxcdHNlbGVjdCBNTFg0X0NPUkVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnPTI5PWNvbmZpZyBNTFg1X0NPUkVfRU5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTMxLVxcdGRlcGVuZHMgb24gTkVUREVWSUNFUyBcXHUwMDI2XFx1MDAyNiBFVEhFUk5FVCBcXHUwMDI2XFx1MDAyNiBJTkVUIFxcdTAwMjZcXHUwMDI2IFBDSSBcXHUwMDI2XFx1MDAyNiBNTFg1X0NPUkVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZzozMjpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWc6MzM6XFx0c2VsZWN0IFBBR0VfUE9PTF9TVEFUU1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTM0LVxcdHNlbGVjdCBESU1MSUJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWc9MzM9Y29uZmlnIE1MWFNXX1BDSVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZy0zNS1cXHRkZXBlbmRzIG9uIFBDSSBcXHUwMDI2XFx1MDAyNiBIQVNfSU9NRU0gXFx1MDAyNlxcdTAwMjYgTUxYU1dfQ09SRVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWc6MzY6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWctMzctXFx0ZGVmYXVsdCBtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWc9MjA9Y29uZmlnIEZCTklDXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWctMjctXFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnOjI4OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWctMjktXFx0c2VsZWN0IFBDU19YUENTXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnPTE9Y29uZmlnIExBTjk2NlhfU1dJVENIXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnLTgtXFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnOjk6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L0tjb25maWctMTAtXFx0c2VsZWN0IFZDQVBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZz0yOD1jb25maWcgTEFOOTY5WF9TV0lUQ0hcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZy0zMC1cXHRkZXBlbmRzIG9uIFNQQVJYNV9TV0lUQ0hcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWc6MzE6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZy0zMi1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZz0xOD1jb25maWcgTUlDUk9TT0ZUX01BTkFcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnLTI0LVxcdHNlbGVjdCBESU1MSUJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZzoyNTpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWctMjYtXFx0c2VsZWN0IE5FVF9TSEFQRVJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3BlbnNhbmRvL0tjb25maWc9MjA9Y29uZmlnIElPTklDXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9wZW5zYW5kby9LY29uZmlnLTI1LVxcdHNlbGVjdCBESU1MSUJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9wZW5zYW5kby9LY29uZmlnOjI2OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9wZW5zYW5kby9LY29uZmlnLTI3LVxcdHNlbGVjdCBBVVhJTElBUllfQlVTXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc9MTEwPWNvbmZpZyBSVEFTRVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnLTExMy1cXHRzZWxlY3QgQ1JDMzJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc6MTE0OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWctMTE1LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvS2NvbmZpZz0yOT1jb25maWcgUkFWQlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9LY29uZmlnLTM1LVxcdHNlbGVjdCBNRElPX0JJVEJBTkdcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL0tjb25maWc6MzY6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvS2NvbmZpZy0zNy1cXHRzZWxlY3QgUEhZTElCXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvS2NvbmZpZz0yNT1jb25maWcgU05JX05FVFNFQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc29jaW9uZXh0L0tjb25maWctMjgtXFx0c2VsZWN0IFBIWUxJQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NvY2lvbmV4dC9LY29uZmlnOjI5OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvS2NvbmZpZy0zMC1cXHRzZWxlY3QgTUlJXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTI9Y29uZmlnIFNUTU1BQ19FVEhcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctOC1cXHRzZWxlY3QgUENTX1hQQ1NcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjk6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTAtXFx0c2VsZWN0IFBIWUxJTktcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS9LY29uZmlnPTI2PWNvbmZpZyBURUhVVElfVE40MFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL0tjb25maWctMjgtXFx0ZGVwZW5kcyBvbiBQQ0lcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvS2NvbmZpZzoyOTpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL0tjb25maWctMzAtXFx0c2VsZWN0IEZXX0xPQURFUlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZz01MD1jb25maWcgVElfQ1BTV1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy01NS1cXHRzZWxlY3QgTUZEX1NZU0NPTlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6NTY6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctNTctXFx0c2VsZWN0IFJFR01BUFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZz02NT1jb25maWcgVElfQ1BTV19TV0lUQ0hERVZcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctNjktXFx0ZGVwZW5kcyBvbiBUSV9DUFRTIHx8ICFUSV9DUFRTXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzo3MDpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy03MS1cXHRzZWxlY3QgVElfREFWSU5DSV9NRElPXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnPTk2PWNvbmZpZyBUSV9LM19BTTY1X0NQU1dfTlVTU1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy0xMDEtXFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjEwMjpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy0xMDMtXFx0c2VsZWN0IFRJX0szX0NQUElfREVTQ19QT09MXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnPTIwND1jb25maWcgVElfSUNTU0dfUFJVRVRIX1NSMVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy0yMDgtXFx0c2VsZWN0IFRJX0szX0NQUElfREVTQ19QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzoyMDk6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMjEwLVxcdGRlcGVuZHMgb24gUFJVX1JFTU9URVBST0NcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZz0xOT1jb25maWcgTElCV1hcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZy0yMS1cXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnOjIyOlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWctMjMtXFx0c2VsZWN0IERJTUxJQlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnPTI9Y29uZmlnIE1UNzZfQ09SRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0zLVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjQ6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy01LVxcbi0tXFxua2VybmVsL2JwZi9LY29uZmlnPTI3PWNvbmZpZyBCUEZfU1lTQ0FMTFxcbi0tXFxua2VybmVsL2JwZi9LY29uZmlnLTM1LVxcdHNlbGVjdCBORVRfWEdSRVNTIGlmIE5FVFxcbmtlcm5lbC9icGYvS2NvbmZpZzozNjpcXHRzZWxlY3QgUEFHRV9QT09MIGlmIE5FVFxcbmtlcm5lbC9icGYvS2NvbmZpZy0zNy1cXHRkZWZhdWx0IG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDQ6MTk6NDkuMDY1NDQ5OTM5WiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc4Njk0MTc4MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBSODE2OSBEcml2ZXIgUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBzZWUgdGhhdCBga2VybmVsL2JwZi9LY29uZmlnYCBzZWVtcyB0byBpbmRpcmVjdGx5IGVuYWJsZSBgUEFHRV9QT09MYCB0aHJvdWdoIGBCUEZfU1lTQ0FMTGAgaWYgYE5FVGAgaXMgYWxzbyBlbmFibGVkLiBHaXZlbiBob3cgdWJpcXVpdG91cyBgQlBGX1NZU0NBTExgIGlzLCBwYXJ0aWN1bGFybHkgaW4gdGhlIHN5emthbGxlciBjb25maWd1cmF0aW9ucywgYFBBR0VfUE9PTGAgaXMgcHJvYmFibHkgYWx3YXlzIGVuYWJsZWQgYW55d2F5LiBTbywgdGhlIGBSODE2OWAgZHJpdmVyIG1pZ2h0IG5vdCAqc3RyaWN0bHkqIG5lZWQgdG8gc2VsZWN0IGBQQUdFX1BPT0xgIGl0c2VsZiwgYWx0aG91Z2ggdGhlIHBhdGNoIGF1dGhvciBtaWdodCBoYXZlIHNpbXBseSBvdmVybG9va2VkIGl0LCB3aGljaCBkb2Vzbid0IHNlZW0gdG8gYmUgYSBwcm9ibGVtIGdpdmVuIHRoYXQgdGhlIGNvZGUgY29tcGlsZXMuXG5cblRoZSBrZXkgcXVlc3Rpb24gaXMsIHNob3VsZCB0aGlzIGJlIGZ1enplZD8gQWJzb2x1dGVseS4gSXTigJlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIHJlY2VpdmUgcGF0aCBvZiBhIG5ldHdvcmsgZHJpdmVyLCB3aGljaCBpcyBhIHByaW1lIHRhcmdldC4gQ2FuIHN5emthbGxlciByZWFjaCBpdD8gVGhlIFBDSSBmdXp6ZXIgc2hvdWxkIGJlIGFibGUgdG8gaW5zdGFudGlhdGUgdGhlIGRldmljZSwgbWFwIHRoZSBETUEsIGFuZCB0cmlnZ2VyIGludGVycnVwdHMsIHNvIHllcywgaXQncyBkZWZpbml0ZWx5IHdpdGhpbiByZWFjaC4gSW4gZmFjdCwgc3l6a2FsbGVy4oCZcyBQQ0kgZnV6emVyIGlzIGFscmVhZHkga25vd24gdG8gYmUgZWZmZWN0aXZlIGF0IGZ1enppbmcgbmV0d29yayBkcml2ZXJzLiBHb29kLCB0aGlzIGlzIHNvdW5kaW5nIHByb21pc2luZy5cblxuSXMgYFI4MTY5YCBhIGdvb2QgY2FuZGlkYXRlPyBJdCdzIGEgd2lkZWx5IHVzZWQgZHJpdmVyLCBzbyB5ZXMsIGEgZ3JlYXQgdGFyZ2V0LiBUaGUgbWFpbiBjb25maWcgdG8gZm9jdXMgb24gaXMgYFI4MTY5YCBpdHNlbGYuIFdoYXQgc3BlY2lmaWMgZnVuY3Rpb25zIGFyZSBtb2RpZmllZD8gVGhlIHBhdGNoIHRvdWNoZXMgYHJ0bDgxNjlfYWxsb2NfcnhfZGF0YWAsIGBydGw4MTY5X3J4X2NsZWFyYCwgYHJ0bDgxNjlfaW5pdF9yaW5nYCwgYHJ0bDgxNjlfcnhfcmVmaWxsYCwgYHJ0bF9yeGAsIGFuZCBgcnRsX3Jlc2V0X3dvcmtgLlxuXG5Ob3csIGlzIGBydGxfcnhgIGEgaG90IHBhdGg/IFllcywgdGhhdOKAmXMgdGhlIE5BUEkgcG9sbCBmdW5jdGlvbiwgb3IgY2FsbGVkIGJ5IGl0LCBzbyBpdCdzIGZyZXF1ZW50bHkgaGl0IGR1cmluZyBwYWNrZXQgcmVjZXB0aW9uLiBXYWl0LCB0aGUgcHJvbXB0IHdhbnRzIHRvIGF2b2lkIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4gSXMgYHJ0bF9yeGAgYSBnZW5lcmljIGhvdCBwYXRoPyBXZWxsLCBpdCdzIHRoZSBkcml2ZXIncyBSWCBwYXRoLCBzbyBpdCdzIGhvdCBkdXJpbmcgcGFja2V0IHJlY2VwdGlvbi4gSG93ZXZlciwgaWYgd2UncmUgZm9jdXNlZCBvbiBmdXp6aW5nICp0aGVzZSBzcGVjaWZpYyBjaGFuZ2VzKiwgdGhlIGluaXRpYWxpemF0aW9uIGFuZCBlcnJvciBwYXRocyBhcmUgbW9yZSBpbnRlcmVzdGluZy4gU28sIEkgc2hvdWxkIGZvY3VzIG9uIGBydGw4MTY5X2luaXRfcmluZ2AsIGBydGw4MTY5X3J4X2NsZWFyYCwgYHJ0bDgxNjlfYWxsb2NfcnhfZGF0YWAsIGFuZCBgcnRsODE2OV9yeF9yZWZpbGxgLiBMZXQncyBzdGFydCBieSBsb29raW5nIGNsb3NlciBhdCBgcnRsODE2OV9pbml0X3JpbmdgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDczMiwiT3V0cHV0VG9rZW5zIjo0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwNDoxOTo1Ni45MzQ4NzA1NDhaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY4MzU5NDQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0bDgxNjlfaW5pdF9yaW5nXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTI2MDE9c3RhdGljIHZvaWQgcnRsX2luaXRfcnhjZmcoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yNjI4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjI2Mjk6c3RhdGljIHZvaWQgcnRsODE2OV9pbml0X3JpbmdfaW5kZXhlcyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy0yNjMwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jPTQyMDg9c3RhdGljIGludCBydGw4MTY5X3J4X2ZpbGwoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy00MjI4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjQyMjk6c3RhdGljIGludCBydGw4MTY5X2luaXRfcmluZyhzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy00MjMwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTQyMzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NDIzNDpcXHRydGw4MTY5X2luaXRfcmluZ19pbmRleGVzKHRwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy00MjM1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9NDMyMT1zdGF0aWMgdm9pZCBydGw4MTY5X2NsZWFudXAoc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy00MzU0LVxcdHJ0bDgxNjlfdHhfY2xlYXIodHApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jOjQzNTU6XFx0cnRsODE2OV9pbml0X3JpbmdfaW5kZXhlcyh0cCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNDM1Ni19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz01MTkwPXN0YXRpYyBpbnQgcnRsX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjlfbWFpbi5jLTUyMTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM6NTIxMzpcXHRyZXR2YWwgPSBydGw4MTY5X2luaXRfcmluZyh0cCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNTIxNC1cXHRpZiAocmV0dmFsIFxcdTAwM2MgMClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDQ6MTk6NTcuMDAzMjM1MDA0WiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExMjcwMzc3MDI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBSODE2OSBEcml2ZXIgUGF0Y2ggZm9yIEZ1enppbmcqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24gc3lzdGVtYXRpY2FsbHkuIEkgc2VlIHRoYXQgYHJ0bDgxNjlfaW5pdF9yaW5nYCBpcyBjYWxsZWQgZWFybHksIGZyb20gYHJ0bF9vcGVuYCwgd2hpY2ggbWFrZXMgc2Vuc2UgZm9yIGluaXRpYWxpemF0aW9uLiBgcnRsODE2OV9yeF9jbGVhcmAgaXMgcGFydCBvZiB0aGUgY2xlYW51cCBwYXRoLCBjYWxsZWQgZnJvbSBgcnRsODE2OV9jbGVhbnVwYCB3aGljaCBpdHNlbGYgaXMgY2FsbGVkIGR1cmluZyByZXNldHMgYW5kIHNodXRkb3ducy4gUmVmaWxsaW5nIHRoZSByZWNlaXZlIHJpbmcgaGFwcGVucyBpbiBgcnRsODE2OV9yeF9yZWZpbGxgLCB0cmlnZ2VyZWQgZnJvbSBgcnRsX3J4YCwgb3VyIGNvcmUgUlggZnVuY3Rpb24uIEZpbmFsbHksIGBydGw4MTY5X2FsbG9jX3J4X2RhdGFgIGlzIHVzZWQgdG8gYWxsb2NhdGUgdGhlIGRhdGEgYnVmZmVycyBhbmQgaXMgY2FsbGVkIGJvdGggZHVyaW5nIHRoZSByZWZpbGwgb3BlcmF0aW9uIGFuZCBkdXJpbmcgcmVzZXRzLlxuXG5JIG5lZWQgdG8gZm9jdXMgb24gdGhlc2Uga2V5IGZ1bmN0aW9uczogYHJ0bDgxNjlfaW5pdF9yaW5nYCwgYHJ0bDgxNjlfcnhfY2xlYXJgLCBgcnRsODE2OV9yeF9yZWZpbGxgLCBhbmQgYHJ0bDgxNjlfYWxsb2NfcnhfZGF0YWAuIEkgaW5pdGlhbGx5IGNvbnNpZGVyZWQgb21pdHRpbmcgYHJ0bF9yeGAgaXRzZWxmLCBidXQgaXTigJlzIHRoZSBoZWFydCBvZiBwYWNrZXQgcHJvY2Vzc2luZy4gSSBxdWlja2x5IHJlYWxpemVkIHRoaXMgaXMgY3JpdGljYWwsIGFzIGBydGxfcnhgIGlzIGNhbGxlZCBieSB0aGUgTkFQSSBwb2xsIGZ1bmN0aW9uLCBgcnRsODE2OV9wb2xsYC4gQmVjYXVzZSBgcnRsODE2OV9yeF9yZWZpbGxgIGlzIGNhbGxlZCBmcm9tIGBydGxfcnhgLCBpdCBtYWtlcyBzZW5zZSB0byBpbmNsdWRlIGl0IGluIHRoZSBmdXp6aW5nIHNjb3BlLiBTYW1lIGZvciBgcnRsODE2OV9pbml0X3JpbmdgLlxuXG5UaGUgY29uZmlndXJhdGlvbiBzZWVtcyBzdHJhaWdodGZvcndhcmQ6IGBSODE2OWAgaXMgdGhlIHJlbGV2YW50IGNvbmZpZyBmb3IgdGhpcyBkcml2ZXIuIEknbSB3b25kZXJpbmcgYWJvdXQgdGhlIGBQQUdFX1BPT0xgIGNvbmZpZ3VyYXRpb24g4oCTIEkgY2FuJ3QgZGlyZWN0bHkgYWRkIGl0IHNpbmNlIGl0J3MgaGlkZGVuLCBidXQgcGVyaGFwcyBzeXprYWxsZXIncyBjb25maWcgZ2VuZXJhdGlvbiB3aWxsIGhhbmRsZSBpdC4gSXQncyBsaWtlbHkgdGhhdCBgUjgxNjlgIGFsb25lIGlzIHN1ZmZpY2llbnQsIGdpdmVuIHRoZSBkcml2ZXIncyBzdGFuZGFyZCBjb25maWd1cmF0aW9uLiBJJ3ZlIGRvdWJsZS1jaGVja2VkLCBhbmQgdGhlcmUgYXJlIG5vIG90aGVyIHJlbGV2YW50IGNvbmZpZ3MgYmVzaWRlcyBgQ09ORklHX1I4MTY5YC5cblxuTG9va2luZyBiYWNrIGF0IHRoZSBwYXRjaCwgaXQgc2VlbXMgdG8gYmUgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYWRkaW5nIGBwYWdlX3Bvb2xgIGFuZCBgeGRwX3J4cV9pbmZvYCB0byBgcjgxNjlgIGZvciBSWCBidWZmZXIgbWFuYWdlbWVudC4gVGhpcyBpcyBhIHNpZ25pZmljYW50IGNoYW5nZSB0byB0aGUgZHJpdmVyJ3MgUlggcGF0aCwgd2hpY2ggbWVhbnMgaXTigJlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy4gU3l6a2FsbGVyJ3MgUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzIHdpbGwgYWxsb3cgbWUgdG8gdGFyZ2V0IHRoaXMgZHJpdmVyLlxuXG5JJ3ZlIGNvbmZpcm1lZCB0aGF0IGFsbCB0aGUga2V5IGZ1bmN0aW9ucyBJJ20gaW50ZXJlc3RlZCBpbiAoYHJ0bDgxNjlfaW5pdF9yaW5nYCwgYHJ0bDgxNjlfcnhfY2xlYXJgLCBgcnRsODE2OV9yeF9yZWZpbGxgLCBhbmQgYHJ0bDgxNjlfYWxsb2NfcnhfZGF0YWApIGFyZSBzdGF0aWMsIHNvIEkgY2FuIGVuc3VyZSB0aGUgZnV6emVyIGlzIHByb3Blcmx5IHRhcmdldGluZyBvbmx5IHRoZSBmdW5jdGlvbnMgdGhhdCBuZWVkIHRvIGJlIHRlc3RlZC5cblxuSSBzZWUgdGhhdCBgcnRsODE2OV9tYXJrX3RvX2FzaWNgLCBgcnRsX3Jlc2V0X3dvcmtgLCBgcnRsX3J4YCBhcmUgYWxzbyBtb2RpZmllZCBieSB0aGUgcGF0Y2guIEknbGwgbmVlZCB0byBrZWVwIHRoaXMgaW4gbWluZC4gSXQncyBpbXBvcnRhbnQgdG8gbm90ZSB0aGUgY29udGV4dCBvZiBgcnRsODE2OV9jaGFuZ2VfbXR1YCwgdGhvdWdoIHRoZXJlIGFyZW4ndCBhbnkgY2hhbmdlcyBkaXJlY3RseSBpbnNpZGUgdGhhdCBmdW5jdGlvbi5cblxuQWxyaWdodCwgSSdtIGNvbmZpZGVudCB3aXRoIHRoaXMgYXNzZXNzbWVudC4gTGV0J3MgcHJvY2VlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI1NjQsIk91dHB1dFRva2VucyI6MTUzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA0OjIwOjA4LjI3MzYxNDU1M1oiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyODQzMjc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJSODE2OVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0bDgxNjlfaW5pdF9yaW5nXCIsXG4gICAgXCJydGw4MTY5X3J4X2NsZWFyXCIsXG4gICAgXCJydGw4MTY5X3J4X3JlZmlsbFwiLFxuICAgIFwicnRsODE2OV9hbGxvY19yeF9kYXRhXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBwYWdlX3Bvb2wgYW5kIHhkcF9yeHFfaW5mbyB0byB0aGUgcjgxNjkgbmV0d29yayBkcml2ZXIgZm9yIFJYIGJ1ZmZlciBtYW5hZ2VtZW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGRyaXZlcidzIFJYIHBhdGggYW5kIGluaXRpYWxpemF0aW9uL2NsZWFudXAgcm91dGluZXMuIFRoZSBQQ0kgZHJpdmVyIGNhbiBiZSBmdXp6ZWQgdmlhIHN5emthbGxlcidzIFBDSSBmdXp6aW5nIGNhcGFiaWxpdGllcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJSODE2OVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0bDgxNjlfaW5pdF9yaW5nXCIsXG4gICAgXCJydGw4MTY5X3J4X2NsZWFyXCIsXG4gICAgXCJydGw4MTY5X3J4X3JlZmlsbFwiLFxuICAgIFwicnRsODE2OV9hbGxvY19yeF9kYXRhXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBwYWdlX3Bvb2wgYW5kIHhkcF9yeHFfaW5mbyB0byB0aGUgcjgxNjkgbmV0d29yayBkcml2ZXIgZm9yIFJYIGJ1ZmZlciBtYW5hZ2VtZW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGRyaXZlcidzIFJYIHBhdGggYW5kIGluaXRpYWxpemF0aW9uL2NsZWFudXAgcm91dGluZXMuIFRoZSBQQ0kgZHJpdmVyIGNhbiBiZSBmdXp6ZWQgdmlhIHN5emthbGxlcidzIFBDSSBmdXp6aW5nIGNhcGFiaWxpdGllcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowht8pr[1] Phase: Succeeded StartedAt: 2026-07-13 04:20:20 +0000 UTC FinishedAt: 2026-07-13 04:20:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowht8pr[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-13 04:20:20 +0000 UTC FinishedAt: 2026-07-13 04:20:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowht8pr[2] Phase: Succeeded StartedAt: 2026-07-13 04:20:20 +0000 UTC FinishedAt: 2026-07-13 05:35:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowht8pr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl8169_init_ring","rtl8169_rx_clear","rtl8169_rx_refill","rtl8169_alloc_rx_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"7e81e4ff-7faf-4d3e-b677-123c30301611","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-13 04:20:20 +0000 UTC FinishedAt: 2026-07-13 05:35:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl8169_init_ring","rtl8169_rx_clear","rtl8169_rx_refill","rtl8169_alloc_rx_data"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"7e81e4ff-7faf-4d3e-b677-123c30301611","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowht8pr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl8169_init_ring","rtl8169_rx_clear","rtl8169_rx_refill","rtl8169_alloc_rx_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"7e81e4ff-7faf-4d3e-b677-123c30301611","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-13 04:20:20 +0000 UTC FinishedAt: 2026-07-13 04:20:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowht8pr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl8169_init_ring","rtl8169_rx_clear","rtl8169_rx_refill","rtl8169_alloc_rx_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"7e81e4ff-7faf-4d3e-b677-123c30301611","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-13 04:20:20 +0000 UTC FinishedAt: 2026-07-13 04:20:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowht8pr/series-workflowht8pr-convert-artifact-2539628044/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowht8pr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl8169_init_ring","rtl8169_rx_clear","rtl8169_rx_refill","rtl8169_alloc_rx_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"7e81e4ff-7faf-4d3e-b677-123c30301611","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-13 04:20:30 +0000 UTC FinishedAt: 2026-07-13 05:05:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowht8pr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl8169_init_ring","rtl8169_rx_clear","rtl8169_rx_refill","rtl8169_alloc_rx_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"7e81e4ff-7faf-4d3e-b677-123c30301611","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-13 04:20:30 +0000 UTC FinishedAt: 2026-07-13 05:05:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*a80f04c8-900e-482b-96e7-1e6676eb9523,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowht8pr/series-workflowht8pr-convert-artifact-2539628044/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "cebf518c-6cc7-40d9-bc1f-d3ed2ae38979", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowht8pr/series-workflowht8pr-build-action-2919132218/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowht8pr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl8169_init_ring","rtl8169_rx_clear","rtl8169_rx_refill","rtl8169_alloc_rx_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"7e81e4ff-7faf-4d3e-b677-123c30301611","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-13 04:20:30 +0000 UTC FinishedAt: 2026-07-13 05:05:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*a80f04c8-900e-482b-96e7-1e6676eb9523,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowht8pr/series-workflowht8pr-convert-artifact-2539628044/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "cebf518c-6cc7-40d9-bc1f-d3ed2ae38979", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowht8pr/series-workflowht8pr-build-action-2919132218/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowht8pr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl8169_init_ring","rtl8169_rx_clear","rtl8169_rx_refill","rtl8169_alloc_rx_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"7e81e4ff-7faf-4d3e-b677-123c30301611","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-13 05:05:36 +0000 UTC FinishedAt: 2026-07-13 05:05:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowht8pr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl8169_init_ring","rtl8169_rx_clear","rtl8169_rx_refill","rtl8169_alloc_rx_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"7e81e4ff-7faf-4d3e-b677-123c30301611","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-13 05:05:36 +0000 UTC FinishedAt: 2026-07-13 05:05:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowht8pr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl8169_init_ring","rtl8169_rx_clear","rtl8169_rx_refill","rtl8169_alloc_rx_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"7e81e4ff-7faf-4d3e-b677-123c30301611","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-13 05:05:36 +0000 UTC FinishedAt: 2026-07-13 05:05:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowht8pr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl8169_init_ring","rtl8169_rx_clear","rtl8169_rx_refill","rtl8169_alloc_rx_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"7e81e4ff-7faf-4d3e-b677-123c30301611","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-13 05:05:36 +0000 UTC FinishedAt: 2026-07-13 05:05:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"7e81e4ff-7faf-4d3e-b677-123c30301611","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowht8pr/series-workflowht8pr-convert-artifact-675903819/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowht8pr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl8169_init_ring","rtl8169_rx_clear","rtl8169_rx_refill","rtl8169_alloc_rx_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"7e81e4ff-7faf-4d3e-b677-123c30301611","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-13 05:05:46 +0000 UTC FinishedAt: 2026-07-13 05:07:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowht8pr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl8169_init_ring","rtl8169_rx_clear","rtl8169_rx_refill","rtl8169_alloc_rx_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"7e81e4ff-7faf-4d3e-b677-123c30301611","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-13 05:05:46 +0000 UTC FinishedAt: 2026-07-13 05:07:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*cebf518c-6cc7-40d9-bc1f-d3ed2ae38979,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowht8pr/series-workflowht8pr-build-action-2919132218/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },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-workflowht8pr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl8169_init_ring","rtl8169_rx_clear","rtl8169_rx_refill","rtl8169_alloc_rx_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"7e81e4ff-7faf-4d3e-b677-123c30301611","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-13 05:07:46 +0000 UTC FinishedAt: 2026-07-13 05:07:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowht8pr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl8169_init_ring","rtl8169_rx_clear","rtl8169_rx_refill","rtl8169_alloc_rx_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"7e81e4ff-7faf-4d3e-b677-123c30301611","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-13 05:07:46 +0000 UTC FinishedAt: 2026-07-13 05:07:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowht8pr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl8169_init_ring","rtl8169_rx_clear","rtl8169_rx_refill","rtl8169_alloc_rx_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"7e81e4ff-7faf-4d3e-b677-123c30301611","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-13 05:07:46 +0000 UTC FinishedAt: 2026-07-13 05:30:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowht8pr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl8169_init_ring","rtl8169_rx_clear","rtl8169_rx_refill","rtl8169_alloc_rx_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"7e81e4ff-7faf-4d3e-b677-123c30301611","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-13 05:07:46 +0000 UTC FinishedAt: 2026-07-13 05:30:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*a80f04c8-900e-482b-96e7-1e6676eb9523,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowht8pr/series-workflowht8pr-convert-artifact-675903819/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "7af075da-32bd-463f-9213-e9b8e34c3470", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowht8pr/series-workflowht8pr-build-action-3553074671/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowht8pr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl8169_init_ring","rtl8169_rx_clear","rtl8169_rx_refill","rtl8169_alloc_rx_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"7e81e4ff-7faf-4d3e-b677-123c30301611","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-13 05:07:46 +0000 UTC FinishedAt: 2026-07-13 05:30:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*a80f04c8-900e-482b-96e7-1e6676eb9523,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowht8pr/series-workflowht8pr-convert-artifact-675903819/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "7af075da-32bd-463f-9213-e9b8e34c3470", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowht8pr/series-workflowht8pr-build-action-3553074671/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowht8pr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl8169_init_ring","rtl8169_rx_clear","rtl8169_rx_refill","rtl8169_alloc_rx_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"7e81e4ff-7faf-4d3e-b677-123c30301611","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-13 05:30:17 +0000 UTC FinishedAt: 2026-07-13 05:30:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowht8pr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl8169_init_ring","rtl8169_rx_clear","rtl8169_rx_refill","rtl8169_alloc_rx_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"7e81e4ff-7faf-4d3e-b677-123c30301611","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-13 05:30:17 +0000 UTC FinishedAt: 2026-07-13 05:30:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowht8pr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl8169_init_ring","rtl8169_rx_clear","rtl8169_rx_refill","rtl8169_alloc_rx_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"7e81e4ff-7faf-4d3e-b677-123c30301611","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-13 05:30:17 +0000 UTC FinishedAt: 2026-07-13 05:32:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowht8pr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl8169_init_ring","rtl8169_rx_clear","rtl8169_rx_refill","rtl8169_alloc_rx_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"7e81e4ff-7faf-4d3e-b677-123c30301611","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-13 05:30:17 +0000 UTC FinishedAt: 2026-07-13 05:32:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*7af075da-32bd-463f-9213-e9b8e34c3470,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowht8pr/series-workflowht8pr-build-action-3553074671/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },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-workflowht8pr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl8169_init_ring","rtl8169_rx_clear","rtl8169_rx_refill","rtl8169_alloc_rx_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"7e81e4ff-7faf-4d3e-b677-123c30301611","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-13 05:32:15 +0000 UTC FinishedAt: 2026-07-13 05:35:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowht8pr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl8169_init_ring","rtl8169_rx_clear","rtl8169_rx_refill","rtl8169_alloc_rx_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"7e81e4ff-7faf-4d3e-b677-123c30301611","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-13 05:32:15 +0000 UTC FinishedAt: 2026-07-13 05:35:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl8169_init_ring","rtl8169_rx_clear","rtl8169_rx_refill","rtl8169_alloc_rx_data"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*cebf518c-6cc7-40d9-bc1f-d3ed2ae38979,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*7af075da-32bd-463f-9213-e9b8e34c3470,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowht8pr/series-workflowht8pr-build-action-2919132218/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowht8pr/series-workflowht8pr-build-action-3553074671/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowht8pr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl8169_init_ring","rtl8169_rx_clear","rtl8169_rx_refill","rtl8169_alloc_rx_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"7e81e4ff-7faf-4d3e-b677-123c30301611","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-13 05:32:15 +0000 UTC FinishedAt: 2026-07-13 05:32:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowht8pr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl8169_init_ring","rtl8169_rx_clear","rtl8169_rx_refill","rtl8169_alloc_rx_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"7e81e4ff-7faf-4d3e-b677-123c30301611","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-13 05:32:15 +0000 UTC FinishedAt: 2026-07-13 05:32:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl8169_init_ring","rtl8169_rx_clear","rtl8169_rx_refill","rtl8169_alloc_rx_data"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowht8pr/series-workflowht8pr-convert-artifact-2578159076/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowht8pr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl8169_init_ring","rtl8169_rx_clear","rtl8169_rx_refill","rtl8169_alloc_rx_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"7e81e4ff-7faf-4d3e-b677-123c30301611","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-13 05:32:15 +0000 UTC FinishedAt: 2026-07-13 05:32:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowht8pr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl8169_init_ring","rtl8169_rx_clear","rtl8169_rx_refill","rtl8169_alloc_rx_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"7e81e4ff-7faf-4d3e-b677-123c30301611","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-13 05:32:15 +0000 UTC FinishedAt: 2026-07-13 05:32:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowht8pr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl8169_init_ring","rtl8169_rx_clear","rtl8169_rx_refill","rtl8169_alloc_rx_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"7e81e4ff-7faf-4d3e-b677-123c30301611","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-13 05:32:15 +0000 UTC FinishedAt: 2026-07-13 05:32:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowht8pr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl8169_init_ring","rtl8169_rx_clear","rtl8169_rx_refill","rtl8169_alloc_rx_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"7e81e4ff-7faf-4d3e-b677-123c30301611","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-13 05:32:25 +0000 UTC FinishedAt: 2026-07-13 05:35:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowht8pr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtl8169_init_ring","rtl8169_rx_clear","rtl8169_rx_refill","rtl8169_alloc_rx_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["R8169"],"series_id":"7e81e4ff-7faf-4d3e-b677-123c30301611","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-13 05:32:25 +0000 UTC FinishedAt: 2026-07-13 05:34:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*cebf518c-6cc7-40d9-bc1f-d3ed2ae38979,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*7af075da-32bd-463f-9213-e9b8e34c3470,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowht8pr/series-workflowht8pr-build-action-2919132218/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowht8pr/series-workflowht8pr-build-action-3553074671/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowht8pr/series-workflowht8pr-convert-artifact-2578159076/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}