Name: series-workflowrdxz6 Phase: Succeeded StartedAt: 2026-07-29 10:12:53 +0000 UTC FinishedAt: 2026-07-29 11:13:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdxz6[0] Phase: Succeeded StartedAt: 2026-07-29 10:12:53 +0000 UTC FinishedAt: 2026-07-29 10:19:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdxz6[0].run-triage Phase: Succeeded StartedAt: 2026-07-29 10:12:54 +0000 UTC FinishedAt: 2026-07-29 10:19:45 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PCI" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PCI" ], "series_id": "3ebb2f94-cac6-4bca-b6b3-8a2b4a0c18ed" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "its_msi_prepare", "its_msi_teardown" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEwOjE4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BDSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2l0c19tc2lfcHJlcGFyZSYjMzQ7LAogICAgJiMzNDtpdHNfbXNpX3RlYXJkb3duJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBHSUN2MyBJVFMgZHJpdmVyIHRvIGNhY2hlIGFuIExQSSByYW5nZSBvYmplY3QgdG8gYXZvaWQgbWVtb3J5IGFsbG9jYXRpb24gaW4gdGhlIGZyZWUgcGF0aCwgYW5kIGZpeGVzIGEgbWVtb3J5IGxlYWsgaW4gdGhlIGRldmljZSBjcmVhdGlvbiBlcnJvciBwYXRoLiBUaGVzZSBjaGFuZ2VzIGFmZmVjdCB0aGUgTVNJIGFsbG9jYXRpb24gYW5kIHRlYXJkb3duIHBhdGhzLCB3aGljaCBhcmUgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoZS5nLiwgUUVNVSB3aXRoIEdJQ3YzIElUUyBlbXVsYXRpb24pLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEwOjE4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMDFhMTZmMTczNjlmMWZhYjMxMWMxMmFhNTUwMjlhM2EwYzMyNzMxOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDI5IDEwOjE4OjE1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jIGIvZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmNcbmluZGV4IDZmNTgxMWFhZTU5YzEuLjYzNGIwZTE1NDkzY2QgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmNcbkBAIC0yMDk3LDYgJiM0MzsyMDk3LDcgQEAgc3RhdGljIHN0cnVjdCBpcnFfY2hpcCBpdHNfaXJxX2NoaXAgPSB7XG4gXG4gc3RhdGljIERFRklORV9NVVRFWChscGlfcmFuZ2VfbG9jayk7XG4gc3RhdGljIExJU1RfSEVBRChscGlfcmFuZ2VfbGlzdCk7XG4mIzQzO3N0YXRpYyBMSVNUX0hFQUQobHBpX2ZyZWVfY2FjaGUpO1xuIFxuIHN0cnVjdCBscGlfcmFuZ2Uge1xuIFx0c3RydWN0IGxpc3RfaGVhZFx0ZW50cnk7XG5AQCAtMjEyMCw4ICYjNDM7MjEyMSwxMyBAQCBzdGF0aWMgc3RydWN0IGxwaV9yYW5nZSAqbWtfbHBpX3JhbmdlKHUzMiBiYXNlLCB1MzIgc3BhbilcbiBzdGF0aWMgaW50IGFsbG9jX2xwaV9yYW5nZSh1MzIgbnJfbHBpcywgdTMyICpiYXNlKVxuIHtcbiBcdHN0cnVjdCBscGlfcmFuZ2UgKnJhbmdlLCAqdG1wO1xuJiM0MztcdHN0cnVjdCBscGlfcmFuZ2UgKm5ld19ub2RlO1xuIFx0aW50IGVyciA9IC1FTk9TUEM7XG4gXG4mIzQzO1x0bmV3X25vZGUgPSBta19scGlfcmFuZ2UoMCwgMCk7XG4mIzQzO1x0aWYgKCFuZXdfbm9kZSlcbiYjNDM7XHRcdHJldHVybiAtRU5PTUVNO1xuJiM0MztcbiBcdG11dGV4X2xvY2soXHUwMDI2bHBpX3JhbmdlX2xvY2spO1xuIFxuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHJhbmdlLCB0bXAsIFx1MDAyNmxwaV9yYW5nZV9saXN0LCBlbnRyeSkge1xuQEAgLTIxNDAsNiAmIzQzOzIxNDYsMTEgQEAgc3RhdGljIGludCBhbGxvY19scGlfcmFuZ2UodTMyIG5yX2xwaXMsIHUzMiAqYmFzZSlcbiBcdFx0fVxuIFx0fVxuIFxuJiM0MztcdGlmICghZXJyKVxuJiM0MztcdFx0bGlzdF9hZGQoXHUwMDI2bmV3X25vZGUtXHUwMDNlZW50cnksIFx1MDAyNmxwaV9mcmVlX2NhY2hlKTtcbiYjNDM7XHRlbHNlXG4mIzQzO1x0XHRrZnJlZShuZXdfbm9kZSk7XG4mIzQzO1xuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmxwaV9yYW5nZV9sb2NrKTtcbiBcbiBcdHByX2RlYnVnKFwmIzM0O0lUUzogYWxsb2MgJXU6JXVcXG5cJiMzNDssICpiYXNlLCBucl9scGlzKTtcbkBAIC0yMTYyLDExICYjNDM7MjE3MywxOCBAQCBzdGF0aWMgaW50IGZyZWVfbHBpX3JhbmdlKHUzMiBiYXNlLCB1MzIgbnJfbHBpcylcbiB7XG4gXHRzdHJ1Y3QgbHBpX3JhbmdlICpuZXcsICpvbGQ7XG4gXG4tXHRuZXcgPSBta19scGlfcmFuZ2UoYmFzZSwgbnJfbHBpcyk7XG4tXHRpZiAoIW5ldylcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNmxwaV9yYW5nZV9sb2NrKTtcbiYjNDM7XG4mIzQzO1x0aWYgKFdBUk5fT04obGlzdF9lbXB0eShcdTAwMjZscGlfZnJlZV9jYWNoZSkpKSB7XG4mIzQzO1x0XHRtdXRleF91bmxvY2soXHUwMDI2bHBpX3JhbmdlX2xvY2spO1xuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiYjNDM7XHR9XG4gXG4tXHRtdXRleF9sb2NrKFx1MDAyNmxwaV9yYW5nZV9sb2NrKTtcbiYjNDM7XHRuZXcgPSBsaXN0X2ZpcnN0X2VudHJ5KFx1MDAyNmxwaV9mcmVlX2NhY2hlLCBzdHJ1Y3QgbHBpX3JhbmdlLCBlbnRyeSk7XG4mIzQzO1x0bGlzdF9kZWwoXHUwMDI2bmV3LVx1MDAzZWVudHJ5KTtcbiYjNDM7XG4mIzQzO1x0bmV3LVx1MDAzZWJhc2VfaWQgPSBiYXNlO1xuJiM0MztcdG5ldy1cdTAwM2VzcGFuID0gbnJfbHBpcztcbiBcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfcmV2ZXJzZShvbGQsIFx1MDAyNmxwaV9yYW5nZV9saXN0LCBlbnRyeSkge1xuIFx0XHRpZiAob2xkLVx1MDAzZWJhc2VfaWQgXHUwMDNjIGJhc2UpXG5AQCAtMjE5NSw2ICYjNDM7MjIxMyw3IEBAIHN0YXRpYyBpbnQgX19pbml0IGl0c19scGlfaW5pdCh1MzIgaWRfYml0cylcbiB7XG4gXHR1MzIgbHBpcyA9ICgxVUwgXHUwMDNjXHUwMDNjIGlkX2JpdHMpIC0gODE5MjtcbiBcdHUzMiBudW1scGlzO1xuJiM0MztcdHN0cnVjdCBscGlfcmFuZ2UgKnJhbmdlO1xuIFx0aW50IGVycjtcbiBcbiBcdG51bWxwaXMgPSAxVUwgXHUwMDNjXHUwMDNjIEdJQ0RfVFlQRVJfTlVNX0xQSVMoZ2ljX3JkaXN0cy1cdTAwM2VnaWNkX3R5cGVyKTtcbkBAIC0yMjA1LDYgJiM0MzsyMjI0LDEyIEBAIHN0YXRpYyBpbnQgX19pbml0IGl0c19scGlfaW5pdCh1MzIgaWRfYml0cylcbiBcdFx0XHRscGlzKTtcbiBcdH1cbiBcbiYjNDM7XHRyYW5nZSA9IG1rX2xwaV9yYW5nZSgwLCAwKTtcbiYjNDM7XHRpZiAoIXJhbmdlKVxuJiM0MztcdFx0cmV0dXJuIC1FTk9NRU07XG4mIzQzO1xuJiM0MztcdGxpc3RfYWRkKFx1MDAyNnJhbmdlLVx1MDAzZWVudHJ5LCBcdTAwMjZscGlfZnJlZV9jYWNoZSk7XG4mIzQzO1xuIFx0LypcbiBcdCAqIEluaXRpYWxpemluZyB0aGUgYWxsb2NhdG9yIGlzIGp1c3QgdGhlIHNhbWUgYXMgZnJlZWluZyB0aGVcbiBcdCAqIGZ1bGwgcmFuZ2Ugb2YgTFBJcy5cbkBAIC0yMjM0LDggJiM0MzsyMjU5LDEwIEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nICppdHNfbHBpX2FsbG9jKGludCBucl9pcnFzLCB1MzIgKmJhc2UsIGludCAqbnJfaWRzKVxuIFx0XHRnb3RvIG91dDtcbiBcbiBcdGJpdG1hcCA9IGJpdG1hcF96YWxsb2MobnJfaXJxcywgR0ZQX0FUT01JQyk7XG4tXHRpZiAoIWJpdG1hcClcbiYjNDM7XHRpZiAoIWJpdG1hcCkge1xuJiM0MztcdFx0ZnJlZV9scGlfcmFuZ2UoKmJhc2UsIG5yX2lycXMpO1xuIFx0XHRnb3RvIG91dDtcbiYjNDM7XHR9XG4gXG4gXHQqbnJfaWRzID0gbnJfaXJxcztcbiBcbkBAIC0yMjQ4LDcgJiM0MzsyMjc1LDcgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgKml0c19scGlfYWxsb2MoaW50IG5yX2lycXMsIHUzMiAqYmFzZSwgaW50ICpucl9pZHMpXG4gXG4gc3RhdGljIHZvaWQgaXRzX2xwaV9mcmVlKHVuc2lnbmVkIGxvbmcgKmJpdG1hcCwgdTMyIGJhc2UsIHUzMiBucl9pZHMpXG4ge1xuLVx0V0FSTl9PTihmcmVlX2xwaV9yYW5nZShiYXNlLCBucl9pZHMpKTtcbiYjNDM7XHRmcmVlX2xwaV9yYW5nZShiYXNlLCBucl9pZHMpO1xuIFx0Yml0bWFwX2ZyZWUoYml0bWFwKTtcbiB9XG4gXG5AQCAtMzUxMCw3ICYjNDM7MzUzNyw4IEBAIHN0YXRpYyBzdHJ1Y3QgaXRzX2RldmljZSAqaXRzX2NyZWF0ZV9kZXZpY2Uoc3RydWN0IGl0c19ub2RlICppdHMsIHUzMiBkZXZfaWQsXG4gXHRpZiAoIWRldiB8fCAhaXR0IHx8ICFjb2xfbWFwIHx8ICghbHBpX21hcCBcdTAwMjZcdTAwMjYgYWxsb2NfbHBpcykpIHtcbiBcdFx0a2ZyZWUoZGV2KTtcbiBcdFx0aXR0X2ZyZWVfcG9vbChpdHQsIHN6KTtcbi1cdFx0Yml0bWFwX2ZyZWUobHBpX21hcCk7XG4mIzQzO1x0XHRpZiAobHBpX21hcClcbiYjNDM7XHRcdFx0aXRzX2xwaV9mcmVlKGxwaV9tYXAsIGxwaV9iYXNlLCBucl9scGlzKTtcbiBcdFx0a2ZyZWUoY29sX21hcCk7XG4gXHRcdHJldHVybiBOVUxMO1xuIFx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEwOjE4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtQQ0kmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpdHNfbXNpX3ByZXBhcmUmIzM0OywKICAgICYjMzQ7aXRzX21zaV90ZWFyZG93biYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgR0lDdjMgSVRTIGRyaXZlciB0byBjYWNoZSBhbiBMUEkgcmFuZ2Ugb2JqZWN0IHRvIGF2b2lkIG1lbW9yeSBhbGxvY2F0aW9uIGluIHRoZSBmcmVlIHBhdGgsIGFuZCBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIHRoZSBkZXZpY2UgY3JlYXRpb24gZXJyb3IgcGF0aC4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgdGhlIE1TSSBhbGxvY2F0aW9uIGFuZCB0ZWFyZG93biBwYXRocywgd2hpY2ggYXJlIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGUuZy4sIFFFTVUgd2l0aCBHSUN2MyBJVFMgZW11bGF0aW9uKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDAxYTE2ZjE3MzY5ZjFmYWIzMTFjMTJhYTU1MDI5YTNhMGMzMjczMTkKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCAyOSAxMDoxODoxNSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jIGIvZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMKaW5kZXggNmY1ODExYWFlNTljMS4uNjM0YjBlMTU0OTNjZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMKQEAgLTIwOTcsNiAmIzQzOzIwOTcsNyBAQCBzdGF0aWMgc3RydWN0IGlycV9jaGlwIGl0c19pcnFfY2hpcCA9IHsKIAogc3RhdGljIERFRklORV9NVVRFWChscGlfcmFuZ2VfbG9jayk7CiBzdGF0aWMgTElTVF9IRUFEKGxwaV9yYW5nZV9saXN0KTsKJiM0MztzdGF0aWMgTElTVF9IRUFEKGxwaV9mcmVlX2NhY2hlKTsKIAogc3RydWN0IGxwaV9yYW5nZSB7CiAJc3RydWN0IGxpc3RfaGVhZAllbnRyeTsKQEAgLTIxMjAsOCAmIzQzOzIxMjEsMTMgQEAgc3RhdGljIHN0cnVjdCBscGlfcmFuZ2UgKm1rX2xwaV9yYW5nZSh1MzIgYmFzZSwgdTMyIHNwYW4pCiBzdGF0aWMgaW50IGFsbG9jX2xwaV9yYW5nZSh1MzIgbnJfbHBpcywgdTMyICpiYXNlKQogewogCXN0cnVjdCBscGlfcmFuZ2UgKnJhbmdlLCAqdG1wOwomIzQzOwlzdHJ1Y3QgbHBpX3JhbmdlICpuZXdfbm9kZTsKIAlpbnQgZXJyID0gLUVOT1NQQzsKIAomIzQzOwluZXdfbm9kZSA9IG1rX2xwaV9yYW5nZSgwLCAwKTsKJiM0MzsJaWYgKCFuZXdfbm9kZSkKJiM0MzsJCXJldHVybiAtRU5PTUVNOwomIzQzOwogCW11dGV4X2xvY2soJmFtcDtscGlfcmFuZ2VfbG9jayk7CiAKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocmFuZ2UsIHRtcCwgJmFtcDtscGlfcmFuZ2VfbGlzdCwgZW50cnkpIHsKQEAgLTIxNDAsNiAmIzQzOzIxNDYsMTEgQEAgc3RhdGljIGludCBhbGxvY19scGlfcmFuZ2UodTMyIG5yX2xwaXMsIHUzMiAqYmFzZSkKIAkJfQogCX0KIAomIzQzOwlpZiAoIWVycikKJiM0MzsJCWxpc3RfYWRkKCZhbXA7bmV3X25vZGUtJmd0O2VudHJ5LCAmYW1wO2xwaV9mcmVlX2NhY2hlKTsKJiM0MzsJZWxzZQomIzQzOwkJa2ZyZWUobmV3X25vZGUpOwomIzQzOwogCW11dGV4X3VubG9jaygmYW1wO2xwaV9yYW5nZV9sb2NrKTsKIAogCXByX2RlYnVnKCYjMzQ7SVRTOiBhbGxvYyAldToldVxuJiMzNDssICpiYXNlLCBucl9scGlzKTsKQEAgLTIxNjIsMTEgJiM0MzsyMTczLDE4IEBAIHN0YXRpYyBpbnQgZnJlZV9scGlfcmFuZ2UodTMyIGJhc2UsIHUzMiBucl9scGlzKQogewogCXN0cnVjdCBscGlfcmFuZ2UgKm5ldywgKm9sZDsKIAotCW5ldyA9IG1rX2xwaV9yYW5nZShiYXNlLCBucl9scGlzKTsKLQlpZiAoIW5ldykKJiM0MzsJbXV0ZXhfbG9jaygmYW1wO2xwaV9yYW5nZV9sb2NrKTsKJiM0MzsKJiM0MzsJaWYgKFdBUk5fT04obGlzdF9lbXB0eSgmYW1wO2xwaV9mcmVlX2NhY2hlKSkpIHsKJiM0MzsJCW11dGV4X3VubG9jaygmYW1wO2xwaV9yYW5nZV9sb2NrKTsKIAkJcmV0dXJuIC1FTk9NRU07CiYjNDM7CX0KIAotCW11dGV4X2xvY2soJmFtcDtscGlfcmFuZ2VfbG9jayk7CiYjNDM7CW5ldyA9IGxpc3RfZmlyc3RfZW50cnkoJmFtcDtscGlfZnJlZV9jYWNoZSwgc3RydWN0IGxwaV9yYW5nZSwgZW50cnkpOwomIzQzOwlsaXN0X2RlbCgmYW1wO25ldy0mZ3Q7ZW50cnkpOwomIzQzOwomIzQzOwluZXctJmd0O2Jhc2VfaWQgPSBiYXNlOwomIzQzOwluZXctJmd0O3NwYW4gPSBucl9scGlzOwogCiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9yZXZlcnNlKG9sZCwgJmFtcDtscGlfcmFuZ2VfbGlzdCwgZW50cnkpIHsKIAkJaWYgKG9sZC0mZ3Q7YmFzZV9pZCAmbHQ7IGJhc2UpCkBAIC0yMTk1LDYgJiM0MzsyMjEzLDcgQEAgc3RhdGljIGludCBfX2luaXQgaXRzX2xwaV9pbml0KHUzMiBpZF9iaXRzKQogewogCXUzMiBscGlzID0gKDFVTCAmbHQ7Jmx0OyBpZF9iaXRzKSAtIDgxOTI7CiAJdTMyIG51bWxwaXM7CiYjNDM7CXN0cnVjdCBscGlfcmFuZ2UgKnJhbmdlOwogCWludCBlcnI7CiAKIAludW1scGlzID0gMVVMICZsdDsmbHQ7IEdJQ0RfVFlQRVJfTlVNX0xQSVMoZ2ljX3JkaXN0cy0mZ3Q7Z2ljZF90eXBlcik7CkBAIC0yMjA1LDYgJiM0MzsyMjI0LDEyIEBAIHN0YXRpYyBpbnQgX19pbml0IGl0c19scGlfaW5pdCh1MzIgaWRfYml0cykKIAkJCWxwaXMpOwogCX0KIAomIzQzOwlyYW5nZSA9IG1rX2xwaV9yYW5nZSgwLCAwKTsKJiM0MzsJaWYgKCFyYW5nZSkKJiM0MzsJCXJldHVybiAtRU5PTUVNOwomIzQzOwomIzQzOwlsaXN0X2FkZCgmYW1wO3JhbmdlLSZndDtlbnRyeSwgJmFtcDtscGlfZnJlZV9jYWNoZSk7CiYjNDM7CiAJLyoKIAkgKiBJbml0aWFsaXppbmcgdGhlIGFsbG9jYXRvciBpcyBqdXN0IHRoZSBzYW1lIGFzIGZyZWVpbmcgdGhlCiAJICogZnVsbCByYW5nZSBvZiBMUElzLgpAQCAtMjIzNCw4ICYjNDM7MjI1OSwxMCBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyAqaXRzX2xwaV9hbGxvYyhpbnQgbnJfaXJxcywgdTMyICpiYXNlLCBpbnQgKm5yX2lkcykKIAkJZ290byBvdXQ7CiAKIAliaXRtYXAgPSBiaXRtYXBfemFsbG9jKG5yX2lycXMsIEdGUF9BVE9NSUMpOwotCWlmICghYml0bWFwKQomIzQzOwlpZiAoIWJpdG1hcCkgewomIzQzOwkJZnJlZV9scGlfcmFuZ2UoKmJhc2UsIG5yX2lycXMpOwogCQlnb3RvIG91dDsKJiM0MzsJfQogCiAJKm5yX2lkcyA9IG5yX2lycXM7CiAKQEAgLTIyNDgsNyAmIzQzOzIyNzUsNyBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyAqaXRzX2xwaV9hbGxvYyhpbnQgbnJfaXJxcywgdTMyICpiYXNlLCBpbnQgKm5yX2lkcykKIAogc3RhdGljIHZvaWQgaXRzX2xwaV9mcmVlKHVuc2lnbmVkIGxvbmcgKmJpdG1hcCwgdTMyIGJhc2UsIHUzMiBucl9pZHMpCiB7Ci0JV0FSTl9PTihmcmVlX2xwaV9yYW5nZShiYXNlLCBucl9pZHMpKTsKJiM0MzsJZnJlZV9scGlfcmFuZ2UoYmFzZSwgbnJfaWRzKTsKIAliaXRtYXBfZnJlZShiaXRtYXApOwogfQogCkBAIC0zNTEwLDcgJiM0MzszNTM3LDggQEAgc3RhdGljIHN0cnVjdCBpdHNfZGV2aWNlICppdHNfY3JlYXRlX2RldmljZShzdHJ1Y3QgaXRzX25vZGUgKml0cywgdTMyIGRldl9pZCwKIAlpZiAoIWRldiB8fCAhaXR0IHx8ICFjb2xfbWFwIHx8ICghbHBpX21hcCAmYW1wOyZhbXA7IGFsbG9jX2xwaXMpKSB7CiAJCWtmcmVlKGRldik7CiAJCWl0dF9mcmVlX3Bvb2woaXR0LCBzeik7Ci0JCWJpdG1hcF9mcmVlKGxwaV9tYXApOwomIzQzOwkJaWYgKGxwaV9tYXApCiYjNDM7CQkJaXRzX2xwaV9mcmVlKGxwaV9tYXAsIGxwaV9iYXNlLCBucl9scGlzKTsKIAkJa2ZyZWUoY29sX21hcCk7CiAJCXJldHVybiBOVUxMOwogCX0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTA6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzMyNQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDI2MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBHSUN2MyBJVFMgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmNgLiBTZWVtcyBsaWtlIHRoZXkmIzM5O3JlIG1ha2luZyBzb21lIGNoYW5nZXMgdG8gaG93IExQSSByYW5nZXMgYXJlIGhhbmRsZWQgaW4gdGhlIEdJQ3YzIElUUyBkcml2ZXIuIFNwZWNpZmljYWxseSwgdGhleSYjMzk7cmUgaW50cm9kdWNpbmcgYSBgbHBpX2ZyZWVfY2FjaGVgIGxpc3QgdG8gdHJ5IGFuZCBvcHRpbWl6ZSBtZW1vcnkgbWFuYWdlbWVudCwgY2FjaGluZyBgbHBpX3JhbmdlYCBvYmplY3RzIGFuZCBhdm9pZGluZyBhbGxvY2F0aW9uIGR1cmluZyBgZnJlZV9scGlfcmFuZ2VgLiBUaGF0JiMzOTtzIGEgY2xhc3NpYyBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb247IGNhY2hpbmcgaXMgYSBnb29kIG1vdmUgdG8gcmVkdWNlIG92ZXJoZWFkLiBUaGVyZSYjMzk7cyBhbHNvIGEgZml4IGZvciBhIG1lbW9yeSBsZWFrIGluIGBpdHNfY3JlYXRlX2RldmljZWAgd2hlcmUgdGhleSB3ZXJlIHVzaW5nIHRoZSB3cm9uZyBmcmVlIGZ1bmN0aW9uIGZvciBgbHBpX21hcGAuIEdvb2QgY2F0Y2g7IG1lbW9yeSBsZWFrcyBhcmUgdGhlIGJhbmUgb2YgbXkgZXhpc3RlbmNlLgoKTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uIGlzOiBjYW4gSSBhY3R1YWxseSB0ZXN0IHRoaXMgaW4gYSByZWFzb25hYmxlIGVudmlyb25tZW50PyBHSUN2MyBJVFMgaXMgcHJpbWFyaWx5IGFuIEFSTTY0IHRoaW5nLCBhbmQgdGhlIHBhdGNoIGlzIGluIHRoZSBkcml2ZXIuIE9mIGNvdXJzZSwgUUVNVSBoYXMgR0lDdjMgSVRTIGVtdWxhdGlvbi4gSSBjYW4gZWFzaWx5IGJvb3QgYSB2aXJ0dWFsaXplZCBBUk02NCBzeXN0ZW0gd2l0aCBzb21ldGhpbmcgbGlrZSBgcWVtdS1zeXN0ZW0tYWFyY2g2NCAtbWFjaGluZSB2aXJ0LGdpYy12ZXJzaW9uPTMsaXRzPW9uYC4gU28sIHllcywgaXQmIzM5O3MgZGVmaW5pdGVseSB0ZXN0YWJsZSBpbiBhIHN0YW5kYXJkIFFFTVUgc2V0dXAuIFRoYXQmIzM5O3MgYSByZWxpZWYuCgpOZXh0IHVwLCBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgY29uZmlnIG9wdGlvbnMuIFRoaXMgY29kZSBpcyBwcm9iYWJseSBjb21waWxlZCBpZiBgQ09ORklHX0FSTV9HSUNfVjNfSVRTYCBpcyBlbmFibGVkLiBUaW1lIHRvIGdvIGRpZyB0aHJvdWdoIHRoZSBLY29uZmlnIGZpbGVzIGFuZCB2ZXJpZnkgdGhhdCBoeXBvdGhlc2lzLiBObyBwb2ludCBpbiBzcGVuZGluZyB0aW1lIG9uIGl0IGlmIHRoZSBjb25maWcgaXNuJiMzOTt0IHNldCwgYWx0aG91Z2ggaWYgaXQmIzM5O3MgdGhlcmUsIEkmIzM5O2xsIGJlIHN1cmUgdG8gdmVyaWZ5IHRoZSBpbXBsaWNhdGlvbnMgb24gYSBzdGFuZGFyZCBidWlsZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxMDoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcnEtZ2ljLXYzLWl0cy5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9pcnFjaGlwL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaXJxY2hpcC9NYWtlZmlsZT0zNj1vYmotJChDT05GSUdfQVJNX0dJQ19JVFNfUEFSRU5UKVx0JiM0Mzs9IGlycS1naWMtaXRzLW1zaS1wYXJlbnQub1xuZHJpdmVycy9pcnFjaGlwL01ha2VmaWxlOjM3Om9iai0kKENPTkZJR19BUk1fR0lDX1YzX0lUUylcdFx0JiM0Mzs9IGlycS1naWMtdjMtaXRzLm8gaXJxLWdpYy12NC5vXG5kcml2ZXJzL2lycWNoaXAvTWFrZWZpbGUtMzgtb2JqLSQoQ09ORklHX0FSTV9HSUNfVjUpXHRcdCYjNDM7PSBpcnEtZ2ljLXY1Lm8gaXJxLWdpYy12NS1pcnMubyBpcnEtZ2ljLXY1LWl0cy5vIFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTA6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDE1OAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkludmVzdGlnYXRpbmcgSW50ZXJydXB0IENvbnRyb2xsZXIgQ29uZmlndXJhdGlvbioqCgpSaWdodCwgc28gYENPTkZJR19BUk1fR0lDX1YzX0lUU2AgaXMgdGhlIGtleSBjb25maWd1cmF0aW9uIG9wdGlvbiB3ZSYjMzk7cmUgbG9va2luZyBhdCBoZXJlLiBUaGF0JiMzOTtzIHRoZSBzdGFydGluZyBwb2ludC4gQnV0LCBhcyB3ZSBhbGwga25vdywgbm90aGluZyBpcyBldmVyIHF1aXRlIHRoYXQgc2ltcGxlIGluIHRoZXNlIHN5c3RlbXMsIGlzIGl0PyBXZSBjYW4mIzM5O3QganVzdCBhc3N1bWUgaXQmIzM5O3MgdGhlIG9ubHkgcmVsZXZhbnQgY29uZmlndXJhdGlvbi4gU28sIG15IG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGRpdmUgZGVlcGVyLiBJIG5lZWQgdG8gcXVpY2tseSBzY2FuIGFuZCB2ZXJpZnkuIEkgbmVlZCB0byBjaGVjayB0aGUgZW50aXJlIHN5c3RlbSB0byBzZWUgaWYgdGhlcmUgYXJlICphbnkqIG90aGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIGludGVycnVwdCBjb250cm9sbGVycyB0aGF0IG1pZ2h0IGludGVyYWN0IHdpdGgsIG9yIGluZmx1ZW5jZSwgdGhlIGJlaGF2aW9yIG9mIEdJQ3YzIElUUy4gV2UgY2FuJiMzOTt0IG1pc3MgYW55dGhpbmcgdGhhdCYjMzk7cyBnb2luZyB0byBhZmZlY3QgdGhlIG91dGNvbWUuIEdvdHRhIG1ha2Ugc3VyZSB3ZSBoYXZlIHRoZSBmdWxsIHBpY3R1cmUgYmVmb3JlIG1vdmluZyBmb3J3YXJkLiBMZXQmIzM5O3MgbWFrZSBzdXJlIG5vdGhpbmcgaXMgb3Zlcmxvb2tlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxMDoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQVJNX0dJQ19WM19JVFMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2lycWNoaXAvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2lycWNoaXAvS2NvbmZpZz00Mz1jb25maWcgQVJNX0dJQ19JVFNfUEFSRU5UXG4tLVxuZHJpdmVycy9pcnFjaGlwL0tjb25maWctNDUtXG5kcml2ZXJzL2lycWNoaXAvS2NvbmZpZzo0Njpjb25maWcgQVJNX0dJQ19WM19JVFNcbmRyaXZlcnMvaXJxY2hpcC9LY29uZmlnLTQ3LVx0Ym9vbFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEwOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1MDIKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcyBhcyBJIGFwcHJvYWNoIHRoZSBjb2RlOgoKKipBbmFseXppbmcgdGhlIFNlbGVjdGlvbiBvZiBgQVJNX0dJQ19WM19JVFNgKioKCkFscmlnaHQsIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoeSB0aGlzIGNvZGUgcGF0aCwgc3BlY2lmaWNhbGx5IHRoZSBvbmUgcmVsYXRlZCB0byBgQVJNX0dJQ19WM19JVFNgLCBpcyBiZWluZyBjaG9zZW4uICBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIHRoZSBjb25kaXRpb25hbHMgdGhhdCBsZWFkIHRvIHRoaXMgc3BlY2lmaWMgc2VsZWN0aW9uLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgZm9yIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGhhcmR3YXJlIGNhcGFiaWxpdGllcyB0aGF0IHdvdWxkIHRyaWdnZXIgdGhpcy4gSSYjMzk7bGwgbWVudGFsbHkgbWFwIG91dCB0aGUgZGVwZW5kZW5jaWVzLiBJcyBpdCBhIHByb2Nlc3NvciBmZWF0dXJlLCBhIHBsYXRmb3JtIGNvbmZpZ3VyYXRpb24sIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIGFuZCB0aGUgcG90ZW50aWFsIGRyaXZlcnMgaW4gcGxheSBoZXJlLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgc2NhbiBmb3IgcmVsYXRlZCBkZWZpbmVzLCB2YXJpYWJsZXMsIGFuZCBwb3RlbnRpYWwgaW50ZXJhY3Rpb25zIHdpdGggb3RoZXIgaW50ZXJydXB0IGNvbnRyb2xsZXIgaW1wbGVtZW50YXRpb25zLiAgSSBleHBlY3QgdG8gYmUgbG9va2luZyBmb3IgQVJNdjggYXJjaGl0ZWN0dXJlIGZlYXR1cmVzIGFuZCBob3cgdGhleSBhcmUgbGV2ZXJhZ2VkIGluIHRoaXMgY29udGV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxMDoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZWxlY3QgQVJNX0dJQ19WM19JVFMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm0vS2NvbmZpZy5wbGF0Zm9ybXM9NTU9Y29uZmlnIEFSQ0hfVklSVFxuLS1cbmFyY2gvYXJtL0tjb25maWcucGxhdGZvcm1zLTYxLVx0c2VsZWN0IEFSTV9HSUNfVjNcbmFyY2gvYXJtL0tjb25maWcucGxhdGZvcm1zOjYyOlx0c2VsZWN0IEFSTV9HSUNfVjNfSVRTIGlmIFBDSVxuYXJjaC9hcm0vS2NvbmZpZy5wbGF0Zm9ybXMtNjMtXHRzZWxlY3QgQVJNX1BTQ0lcbi0tXG5hcmNoL2FybTY0L0tjb25maWc9Mj1jb25maWcgQVJNNjRcbi0tXG5hcmNoL2FybTY0L0tjb25maWctMTA1LVx0c2VsZWN0IEFSTV9HSUNfVjNcbmFyY2gvYXJtNjQvS2NvbmZpZzoxMDY6XHRzZWxlY3QgQVJNX0dJQ19WM19JVFMgaWYgUENJXG5hcmNoL2FybTY0L0tjb25maWctMTA3LVx0c2VsZWN0IEFSTV9HSUNfVjVcbi0tXG5kcml2ZXJzL2lycWNoaXAvS2NvbmZpZz0yMTA9Y29uZmlnIEhJU0lMSUNPTl9JUlFfTUJJR0VOXG4tLVxuZHJpdmVycy9pcnFjaGlwL0tjb25maWctMjEyLVx0c2VsZWN0IEFSTV9HSUNfVjNcbmRyaXZlcnMvaXJxY2hpcC9LY29uZmlnOjIxMzpcdHNlbGVjdCBBUk1fR0lDX1YzX0lUU1xuZHJpdmVycy9pcnFjaGlwL0tjb25maWctMjE0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEwOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwMjAKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAxNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBHSUN2MyBJVFMgSW1wbGVtZW50YXRpb24qKgoKT2theSwgc28gSSBzZWUgdGhhdCBgQVJNX0dJQ19WM19JVFNgIGlzIGJlaW5nIHNlbGVjdGVkIHdoZW4gdGhlIGBBUk02NGAgYXJjaGl0ZWN0dXJlIGlzIGVuYWJsZWQgYW5kIGBQQ0lgIHN1cHBvcnQgaXMgcHJlc2VudC4gVGhhdCBtYWtlcyBzZW5zZSwgYW5kIEkmIzM5O20gY29uZmlkZW50IGl0JiMzOTtzIGEgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsIGNvbXBvbmVudC4gTm93LCBteSBpbW1lZGlhdGUgZ29hbCBpcyB0byB1bmRlcnN0YW5kIHRoZSBjaGFuZ2VzIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaCwgc28gSSBuZWVkIHRvIGZpbmQgdGhlIGNvcmUgZm9jdXMgc3ltYm9scy4KCkkgc2VlIGl0JiMzOTtzIHRvdWNoaW5nIHF1aXRlIGEgZmV3IGZ1bmN0aW9ucyB3aXRoaW4gdGhlIElUUyBzdWJzeXN0ZW06IGBhbGxvY19scGlfcmFuZ2VgLCBgZnJlZV9scGlfcmFuZ2VgLCBgaXRzX2xwaV9pbml0YCAod2hpY2ggaXMgbWFya2VkIGFzIGBfX2luaXRgKSwgYGl0c19scGlfYWxsb2NgLCBgaXRzX2xwaV9mcmVlYCwgYW5kIGFsc28gYGl0c19jcmVhdGVfZGV2aWNlYC4gSSB3YW50IHRvIHN0YXJ0IGJ5IHRyYWNpbmcgdGhlIGZ1bmN0aW9uIGNhbGxzLiBUaGUgcGxhY2UgdG8gc3RhcnQgd2l0aCB0aGlzIHNlZW1zIHRvIGJlLCB3aGVyZSBpcyBgaXRzX2NyZWF0ZV9kZXZpY2VgIGJlaW5nIGNhbGxlZD8gVGhhdCBmdW5jdGlvbiBzZWVtcyBsaWtlIGEgZ29vZCBlbnRyeSBwb2ludCB0byB0cmFjZSB0aGUgb3RoZXIgZnVuY3Rpb25zIGJlaW5nIG1vZGlmaWVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxMDoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpdHNfY3JlYXRlX2RldmljZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jPTM0NDk9c3RhdGljIGJvb2wgaXRzX2FsbG9jX3ZwZV90YWJsZSh1MzIgdnBlX2lkKVxuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jLTM0OTAtXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYzozNDkxOnN0YXRpYyBzdHJ1Y3QgaXRzX2RldmljZSAqaXRzX2NyZWF0ZV9kZXZpY2Uoc3RydWN0IGl0c19ub2RlICppdHMsIHUzMiBkZXZfaWQsXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYy0zNDkyLVx0XHRcdFx0XHQgICAgaW50IG52ZWNzLCBib29sIGFsbG9jX2xwaXMpXG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmM9MzU5OD1zdGF0aWMgaW50IGl0c19tc2lfcHJlcGFyZShzdHJ1Y3QgaXJxX2RvbWFpbiAqZG9tYWluLCBzdHJ1Y3QgZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtMzY0MC1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jOjM2NDE6XHRpdHNfZGV2ID0gaXRzX2NyZWF0ZV9kZXZpY2UoaXRzLCBkZXZfaWQsIG52ZWMsIHRydWUpO1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtMzY0Mi1cdGlmICghaXRzX2Rldikge1xuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jPTUxODI9c3RhdGljIGludCBpdHNfaW5pdF92cGVfZG9tYWluKHZvaWQpXG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtNTIwMi1cdGRldmlkID0gR0VOTUFTSyhkZXZpY2VfaWRzKGl0cykgLSAxLCAwKTtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jOjUyMDM6XHR2cGVfcHJveHkuZGV2ID0gaXRzX2NyZWF0ZV9kZXZpY2UoaXRzLCBkZXZpZCwgZW50cmllcywgZmFsc2UpO1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtNTIwNC1cdGlmICghdnBlX3Byb3h5LmRldikge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxMDoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTEwCgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIGluZm9ybWF0aW9uLCBhcyBpZiB0aGVzZSB3ZXJlIG15IGludGVybmFsIHRob3VnaHRzOgoKKipEaXNzZWN0aW5nIGBpdHNfbXNpX3ByZXBhcmVgKioKCk9rYXksIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IGBpdHNfbXNpX3ByZXBhcmVgLiBUaGUgbm90ZXMgY2xlYXJseSBzdGF0ZSB0aGlzIGlzIGFuIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9uLCBhbmQgdGhhdCBpdCYjMzk7cyBwYXJ0IG9mIGBtc2lfZG9tYWluX29wc2AuIFRoYXQgaW1tZWRpYXRlbHkgcHV0cyBpdCBpbnRvIGEgcGFydGljdWxhciBjb250ZXh0IOKAkyBpdCYjMzk7cyBhIGNyaXRpY2FsIGNvbXBvbmVudCwgYSBwdWJsaWMgaW50ZXJmYWNlLCB3aXRoaW4gdGhlIE1TSSBkb21haW4gb3BlcmF0aW9ucy4gVGhpcyBsaWtlbHkgbWVhbnMgaXTigJlzIHJlc3BvbnNpYmxlIGZvciBwcmVwYXJpbmcgc29tZXRoaW5nIHJlbGF0ZWQgdG8gTWVzc2FnZSBTaWduYWxlZCBJbnRlcnJ1cHRzIChNU0lzKS4gTGV0JiMzOTtzIGRpZyBpbiBhbmQgZmlndXJlIG91dCBleGFjdGx5IHdoYXQgcHJlcGFyYXRpb24gaXMgZG9uZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBgaXRzX21zaV9wcmVwYXJlYCBmdW5jdGlvbiYjMzk7cyBwdXJwb3NlLiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGNoZWNraW5nIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uIGl0c2VsZi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTA6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXRzX21zaV9wcmVwYXJlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmM9MzU4Mj1zdGF0aWMgaW50IGl0c19hbGxvY19kZXZpY2VfaXJxKHN0cnVjdCBpdHNfZGV2aWNlICpkZXYsIGludCBudmVjcywgaXJxX2h3X251bWJlcl90ICpod2lycSlcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYy0zNTk3LVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmM6MzU5ODpzdGF0aWMgaW50IGl0c19tc2lfcHJlcGFyZShzdHJ1Y3QgaXJxX2RvbWFpbiAqZG9tYWluLCBzdHJ1Y3QgZGV2aWNlICpkZXYsXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYy0zNTk5LVx0XHRcdCAgIGludCBudmVjLCBtc2lfYWxsb2NfaW5mb190ICppbmZvKVxuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jPTM2ODE9c3RhdGljIHN0cnVjdCBtc2lfZG9tYWluX29wcyBpdHNfbXNpX2RvbWFpbl9vcHMgPSB7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYzozNjgyOlx0Lm1zaV9wcmVwYXJlXHQ9IGl0c19tc2lfcHJlcGFyZSxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jLTM2ODMtXHQubXNpX3RlYXJkb3duXHQ9IGl0c19tc2lfdGVhcmRvd24sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEwOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY0NzAKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiA0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6CgoqKkZvY3VzaW5nIG9uIE1TSSBhbmQgTWVtb3J5IE1hbmFnZW1lbnQqKgoKT2theSwgYGl0c19tc2lfcHJlcGFyZWAgZmVlbHMgbGlrZSB0aGUgcmlnaHQgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZyBpbnRvIHRoaXMuIEl0JiMzOTtzIGEgY2xlYXIgc2lnbmFsLiBCdXQgbm93IEkmIzM5O20gdGhpbmtpbmcsIHdoYXQgYWJvdXQgdGhlIGNvbXBsZW1lbnRhcnkgZnVuY3Rpb24sIGBpdHNfbXNpX3RlYXJkb3duYD8gRG9lcyAqdGhhdCogZnVuY3Rpb24gcHJvcGVybHkgY2xlYW4gdXAgYWZ0ZXIgaXRzIHdvcms/IFNwZWNpZmljYWxseSwgZG9lcyBpdCBjYWxsIGBpdHNfbHBpX2ZyZWVgPyBUaGF0JiMzOTtzIHRoZSBjcml0aWNhbCBxdWVzdGlvbiBJIG5lZWQgdG8gYW5zd2VyLiBJIG5lZWQgdG8ga25vdyBpZiB3ZSYjMzk7cmUgcHJvcGVybHkgcmVsZWFzaW5nIGFsbG9jYXRlZCByZXNvdXJjZXMgYWZ0ZXIgdGhlIE1TSSBzZXR1cCBpcyBjb21wbGV0ZS4gVGhpcyBpcyBsaWtlbHkgd2hlcmUgYSBwb3RlbnRpYWwgbWVtb3J5IGxlYWsgY291bGQgb2NjdXIuIEkmIzM5O20gZ29pbmcgdG8gdHJhY2sgZG93biB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhhdCB0ZWFyZG93biBmdW5jdGlvbiB0byBiZSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxMDoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpdHNfbXNpX3RlYXJkb3duJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmM9MzU5OD1zdGF0aWMgaW50IGl0c19tc2lfcHJlcGFyZShzdHJ1Y3QgaXJxX2RvbWFpbiAqZG9tYWluLCBzdHJ1Y3QgZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtMzY1Ni1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jOjM2NTc6c3RhdGljIHZvaWQgaXRzX21zaV90ZWFyZG93bihzdHJ1Y3QgaXJxX2RvbWFpbiAqZG9tYWluLCBtc2lfYWxsb2NfaW5mb190ICppbmZvKVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtMzY1OC17XG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmM9MzY4MT1zdGF0aWMgc3RydWN0IG1zaV9kb21haW5fb3BzIGl0c19tc2lfZG9tYWluX29wcyA9IHtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jLTM2ODItXHQubXNpX3ByZXBhcmVcdD0gaXRzX21zaV9wcmVwYXJlLFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmM6MzY4MzpcdC5tc2lfdGVhcmRvd25cdD0gaXRzX21zaV90ZWFyZG93bixcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jLTM2ODQtfTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTA6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzAyNwoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdW5kZXJzdGFuZGluZywgcHJlc2VudGVkIGFzIGEgcGVyc29uYWwgdGhvdWdodCBwcm9jZXNzLCBnaXZlbiBteSBleHBlcnRpc2U6CgoqKkRpc3NlY3RpbmcgYGl0c19tc2lfdGVhcmRvd25gKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoaXMgYGl0c19tc2lfdGVhcmRvd25gIGZ1bmN0aW9uIG9yIHByb2Nlc3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBmdW5jdGlvbiBhbmQgcHVycG9zZSwgZ2l2ZW4gdGhlIGNvbnRleHQgdGhhdCBpdCYjMzk7cyBkZXNpZ25lZCB0byBiZSB0b3JuIGRvd24uIEkmIzM5O2xsIG5lZWQgdG8ga25vdyB3aGF0IGl04oCZcyBpbnRlbmRlZCB0byBkbzsgcHJlc3VtYWJseSwgaXQmIzM5O3Mgc29tZXRoaW5nIGludm9sdmVkIHdpdGggTVNJIChNZXNzYWdlIFNpZ25hbGVkIEludGVycnVwdHMpLCBhbmQgaXRzIHRlYXJkb3duIGltcGxpZXMgYSBjb250cm9sbGVkIGFuZCBwb3RlbnRpYWxseSByZXZlcnNpYmxlIHNodXRkb3duIG9yIGNsZWFudXAgcHJvY2VkdXJlLiBHaXZlbiBteSBleHBlcmllbmNlLCBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBjbHVlcyBhYm91dCByZXNvdXJjZXMgaXQgbWFuYWdlcywgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBoYXJkd2FyZSBvciBvcGVyYXRpbmcgc3lzdGVtLCBhbmQgdGhlIHBvc3NpYmxlIGltcGFjdCBvZiBpbXByb3BlciB0ZWFyZG93bi4gSXMgaXQgaGFuZGxpbmcgaW50ZXJydXB0IHZlY3RvcnMsIG1lbW9yeSByZWdpb25zLCBvciBkZXZpY2Ugc3RhdGU/IFRoaXMgd2lsbCBiZSBpbnRlcmVzdGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTA6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDM2NTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MzY1MDpcdFx0cHJfZGVidWcoXCYjMzQ7SVRUICVkIGVudHJpZXMsICVkIGJpdHNcXG5cJiMzNDssIG52ZWMsIGlsb2cyKG52ZWMpKTtcbjM2NTE6XHRvdXQ6XG4zNjUyOlx0XHRtdXRleF91bmxvY2soXHUwMDI2aXRzLVx1MDAzZWRldl9hbGxvY19sb2NrKTtcbjM2NTM6XHRcdGluZm8tXHUwMDNlc2NyYXRjaHBhZFswXS5wdHIgPSBpdHNfZGV2O1xuMzY1NDpcdFx0cmV0dXJuIGVycjtcbjM2NTU6XHR9XG4zNjU2Olx0XG4zNjU3Olx0c3RhdGljIHZvaWQgaXRzX21zaV90ZWFyZG93bihzdHJ1Y3QgaXJxX2RvbWFpbiAqZG9tYWluLCBtc2lfYWxsb2NfaW5mb190ICppbmZvKVxuMzY1ODpcdHtcbjM2NTk6XHRcdHN0cnVjdCBpdHNfZGV2aWNlICppdHNfZGV2ID0gaW5mby1cdTAwM2VzY3JhdGNocGFkWzBdLnB0cjtcbjM2NjA6XHRcbjM2NjE6XHRcdGd1YXJkKG11dGV4KShcdTAwMjZpdHNfZGV2LVx1MDAzZWl0cy1cdTAwM2VkZXZfYWxsb2NfbG9jayk7XG4zNjYyOlx0XG4zNjYzOlx0XHQvKiBJZiB0aGUgZGV2aWNlIGlzIHNoYXJlZCwga2VlcCBldmVyeXRoaW5nIGFyb3VuZCAqL1xuMzY2NDpcdFx0aWYgKGl0c19kZXYtXHUwMDNlc2hhcmVkKVxuMzY2NTpcdFx0XHRyZXR1cm47XG4zNjY2Olx0XG4zNjY3Olx0XHQvKiBMUElzIHNob3VsZCBoYXZlIGJlZW4gYWxyZWFkeSB1bm1hcHBlZCBhdCB0aGlzIHN0YWdlICovXG4zNjY4Olx0XHRpZiAoV0FSTl9PTl9PTkNFKCFiaXRtYXBfZW1wdHkoaXRzX2Rldi1cdTAwM2VldmVudF9tYXAubHBpX21hcCxcbjM2Njk6XHRcdFx0XHRcdCAgICAgICBpdHNfZGV2LVx1MDAzZWV2ZW50X21hcC5ucl9scGlzKSkpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEwOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc2MjYKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHByZXNlbnRlZCBhcyBpZiBpdCB3ZXJlIG15IG93biBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkRpdmluZyBEZWVwZXIgaW50byB0aGUgTVNJIFRlYXJkb3duKioKCkFscmlnaHQsIHRpbWUgdG8gZGlnIGJhY2sgaW50byBgaXRzX21zaV90ZWFyZG93bmAuIEkmIzM5O20gZ29pbmcgdG8gcmV2aXNpdCB0aGF0IGRhdGEgc2V0LCBleHBlY3RpbmcgdG8gZmluZCBzb21lIGNydWNpYWwgaW5zaWdodHMgSSBtYXkgaGF2ZSBtaXNzZWQgZHVyaW5nIHRoZSBpbml0aWFsIHJldmlldy4gSeKAmW0gdGhpbmtpbmcgdGhlcmUgbWlnaHQgYmUgbnVhbmNlcyBidXJpZWQgaW4gdGhlIGNvbXBvbmVudC1sZXZlbCBhbmFseXNpcyB0aGF0IHdhcnJhbnQgYSBzZWNvbmQsIG1vcmUgZm9jdXNlZCBsb29rLiBQZXJoYXBzIGEgZGVlcGVyIGRpdmUgd2lsbCByZXZlYWwgc29tZXRoaW5nIG5vdmVsIGFib3V0IHRoZWlyIHRoZXJtYWwgbWFuYWdlbWVudCBzdHJhdGVneSwgb3IgbWF5YmUgZXZlbiBpZGVudGlmeSBzdWJ0bGUgY29zdC1jdXR0aW5nIG1lYXN1cmVzIHRoYXQgd2VyZSBpbml0aWFsbHkgb2JzY3VyZWQgYnkgdGhlIGJyb2FkZXIgYXJjaGl0ZWN0dXJlLiBJJiMzOTttIGVzcGVjaWFsbHkga2VlbiB0byBzZWUgaWYgYW55IG9mIHRoZSBhc3N1bXB0aW9ucyBJIG1hZGUgZWFybGllciBob2xkIHVwIHVuZGVyIG1vcmUgc2NydXRpbnkg4oCTIHNvbWV0aW1lcyBpbml0aWFsIGludGVycHJldGF0aW9ucyBjYW4gYmUgdG9vIHNpbXBsaXN0aWMuIEhvcGVmdWxseSwgdGhpcyBkZWVwZXIgZXhwbG9yYXRpb24gd2lsbCBoZWxwIGNlbWVudCBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzeXN0ZW0mIzM5O3MgZGVzaWduIGNob2ljZXMgYW5kIHVsdGltYXRlbHkgaW5mb3JtIG15IG93biB3b3JrLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEwOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzNjcwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzM2NzA6XHRcdFx0cmV0dXJuO1xuMzY3MTpcdFxuMzY3MjpcdFx0aXRzX2xwaV9mcmVlKGl0c19kZXYtXHUwMDNlZXZlbnRfbWFwLmxwaV9tYXAsXG4zNjczOlx0XHRcdCAgICAgaXRzX2Rldi1cdTAwM2VldmVudF9tYXAubHBpX2Jhc2UsXG4zNjc0Olx0XHRcdCAgICAgaXRzX2Rldi1cdTAwM2VldmVudF9tYXAubnJfbHBpcyk7XG4zNjc1Olx0XG4zNjc2Olx0XHQvKiBVbm1hcCBkZXZpY2UvaXR0LCBhbmQgZ2V0IHJpZCBvZiB0aGUgdHJhY2tpbmcgKi9cbjM2Nzc6XHRcdGl0c19zZW5kX21hcGQoaXRzX2RldiwgMCk7XG4zNjc4Olx0XHRpdHNfZnJlZV9kZXZpY2UoaXRzX2Rldik7XG4zNjc5Olx0fVxuMzY4MDpcdFxuMzY4MTpcdHN0YXRpYyBzdHJ1Y3QgbXNpX2RvbWFpbl9vcHMgaXRzX21zaV9kb21haW5fb3BzID0ge1xuMzY4MjpcdFx0Lm1zaV9wcmVwYXJlXHQ9IGl0c19tc2lfcHJlcGFyZSxcbjM2ODM6XHRcdC5tc2lfdGVhcmRvd25cdD0gaXRzX21zaV90ZWFyZG93bixcbjM2ODQ6XHR9O1xuMzY4NTpcdFxuMzY4NjpcdHN0YXRpYyBpbnQgaXRzX2lycV9naWNfZG9tYWluX2FsbG9jKHN0cnVjdCBpcnFfZG9tYWluICpkb21haW4sXG4zNjg3Olx0XHRcdFx0XHQgICAgdW5zaWduZWQgaW50IHZpcnEsXG4zNjg4Olx0XHRcdFx0XHQgICAgaXJxX2h3X251bWJlcl90IGh3aXJxKVxuMzY4OTpcdHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTA6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODIyNgoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDQzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEdJQ3YzIElUUyBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBgaXRzX21zaV90ZWFyZG93bmAgZG9lcyBpbmRlZWQgY2FsbCBgaXRzX2xwaV9mcmVlYCwgY29uZmlybWluZyBteSBpbml0aWFsIHRob3VnaHQuIFRoYXQgbWVhbnMgYGl0c19tc2lfcHJlcGFyZWAgYW5kIGBpdHNfbXNpX3RlYXJkb3duYCBhcmUgdGhlIGtleSBmdW5jdGlvbnMgdG8gZm9jdXMgb24gZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGNoYW5nZXMuCgpMZXQmIzM5O3Mgc2VlIGlmIHRoZXJlIGFyZSBvdGhlciBlbnRyeSBwb2ludHMgb2YgaW50ZXJlc3QuIFRoZSBwYXRjaCBtb2RpZmllcyBgaXRzX2xwaV9pbml0YCwgd2hpY2ggaXMsIG9mIGNvdXJzZSwgY2FsbGVkIGR1cmluZyBpbml0aWFsaXphdGlvbi4gSSBzZWUgYGl0c19jcmVhdGVfZGV2aWNlYCwgd2hpY2ggaXMgY2FsbGVkIGJ5IGJvdGggYGl0c19tc2lfcHJlcGFyZWAgYW5kIGBpdHNfaW5pdF92cGVfZG9tYWluYC4gQW5kLCBuYXR1cmFsbHksIGBpdHNfaW5pdF92cGVfZG9tYWluYCBpcyBhbHNvIGNhbGxlZCBkdXJpbmcgaW5pdGlhbGl6YXRpb24uCgpUaGVyZWZvcmUsIHRoZSBjb3JlIGZ1bmN0aW9uYWwgY2hhbmdlcyBhcmUgY2VudGVyZWQgYXJvdW5kIExQSSBhbGxvY2F0aW9uIGFuZCBmcmVlaW5nLCB0cmlnZ2VyZWQgc3BlY2lmaWNhbGx5IGJ5IHRoZSBNU0kgcHJlcGFyZSBhbmQgdGVhcmRvd24gY2FsbHMuIFRvIHJlaXRlcmF0ZSwgYGl0c19tc2lfcHJlcGFyZWAgYW5kIGBpdHNfbXNpX3RlYXJkb3duYCBhcmUgZGVmaW5pdGVseSB0aGUgYmVzdCBzeW1ib2xzIHRvIGNvbmNlbnRyYXRlIG9uLgoKTm93LCBJIG5lZWQgdG8gY2hlY2sgaWYgc2ltcGx5IGVuYWJsaW5nIGBBUk1fR0lDX1YzX0lUU2AgaXMgc3VmZmljaWVudC4gWWVzLCBgQVJNX0dJQ19WM19JVFNgIGlzIHRoZSBjb25maWcgb3B0aW9uIGZvciB0aGlzIGZpbGUuIEhvd2V2ZXIsIHdhaXQgYSBtaW51dGUsIGBBUk1fR0lDX1YzX0lUU2AgaXMgYSBib29sZWFuIHZhbHVlIHdpdGhvdXQgYSB1c2VyLXZpc2libGUgcHJvbXB0IGluIHRoZSBgZHJpdmVycy9pcnFjaGlwL0tjb25maWdgIGZpbGUuIEl0JiMzOTtzIHNlbGVjdGVkIGlmIGJvdGggYEFSTTY0YCBhbmQgYFBDSWAgYXJlIGVuYWJsZWQuIFNvLCByZWFsaXN0aWNhbGx5LCBJIHNob3VsZCBwcm9iYWJseSBlbmFibGUgYm90aCBgUENJYCBhbmQgYEFSTTY0YCwgYWx0aG91Z2ggYXJjaGl0ZWN0dXJlIGNvbmZpZ3MgYXJlIHVzdWFsbHkgaW1wbGllZCBieSB0aGUgdGFyZ2V0LiBIYW5nIG9uLCBwZXJoYXBzIHRoZSBmdXp6ZXIgd2lsbCBiZSBzbWFydCBlbm91Z2ggdG8gZmlndXJlIG91dCBob3cgdG8gZW5hYmxlIGl0IGJ5IGVuYWJsaW5nIFBDSSBldmVuIGlmIEkganVzdCBzcGVjaWZ5IGBBUk1fR0lDX1YzX0lUU2AuIEFoLCBubywgYEFSTV9HSUNfVjNfSVRTYCBpc24mIzM5O3QgZGlyZWN0bHkgdXNlci1zZWxlY3RhYmxlLiBJIHNob3VsZCBjaGVjayBpZiBJIGNhbiBlbmFibGUgaXQgZGlyZWN0bHkgYW55d2F5LCBhbmQgaWYgbm90LCBsaXN0IGBQQ0lgIGFzIHdlbGwuIFdhaXQgYSBzZWNvbmQsIHRoZSBjb25maWcmIzM5O3Mgc2VsZWN0aW9uIGNyaXRlcmlhIGFyZSBjbGVhciBub3cuIGBBUk1fR0lDX1YzX0lUU2AgaXMgc2VsZWN0ZWQgYnkgYEFSTTY0YCBvbmx5IGlmIGBQQ0lgIGlzIHNlbGVjdGVkLiBUaGVyZWZvcmUsIGl0JiMzOTtzIGBQQ0lgIHRoYXQmIzM5O3MgdGhlIHVzZXItdmlzaWJsZSBjb25maWcgb3B0aW9uIHRoYXQgKmVuYWJsZXMqIGl0LiBUaW1lIHRvIGNoZWNrIGBQQ0lgIGluIGBhcmNoL2FybTY0L0tjb25maWdgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxMDoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUENJJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA4MjEgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmFyY2gvbWlwcy9LY29uZmlnPTEyNTE9Y29uZmlnIElSUV9HVDY0MVhYXG4tLVxuYXJjaC9taXBzL0tjb25maWctMTI1My1cbmFyY2gvbWlwcy9LY29uZmlnOjEyNTQ6Y29uZmlnIFBDSV9HVDY0WFhYX1BDSTBcbmFyY2gvbWlwcy9LY29uZmlnLTEyNTUtXHRib29sXG5hcmNoL21pcHMvS2NvbmZpZy0xMjU2LVxuYXJjaC9taXBzL0tjb25maWc6MTI1Nzpjb25maWcgUENJX1hUQUxLX0JSSURHRVxuYXJjaC9taXBzL0tjb25maWctMTI1OC1cdGJvb2xcbi0tXG5hcmNoL21pcHMvS2NvbmZpZz0zMDE4PW1lbnUgXCYjMzQ7QnVzIG9wdGlvbnMgKFBDSSwgUENNQ0lBLCBFSVNBLCBJU0EsIFRDKVwmIzM0O1xuYXJjaC9taXBzL0tjb25maWctMzAxOS1cbmFyY2gvbWlwcy9LY29uZmlnOjMwMjA6Y29uZmlnIFBDSV9EUklWRVJTX0dFTkVSSUNcbmFyY2gvbWlwcy9LY29uZmlnLTMwMjEtXHRzZWxlY3QgUENJX0RPTUFJTlNfR0VORVJJQyBpZiBQQ0lcbi0tXG5hcmNoL21pcHMvS2NvbmZpZy0zMDIzLVxuYXJjaC9taXBzL0tjb25maWc6MzAyNDpjb25maWcgUENJX0RSSVZFUlNfTEVHQUNZXG5hcmNoL21pcHMvS2NvbmZpZy0zMDI1LVx0ZGVmX2Jvb2wgIVBDSV9EUklWRVJTX0dFTkVSSUNcbi0tXG5hcmNoL21pcHMvYXRoMjUvS2NvbmZpZz03PWNvbmZpZyBTT0NfQVIyMzE1XG4tLVxuYXJjaC9taXBzL2F0aDI1L0tjb25maWctMTEtXG5hcmNoL21pcHMvYXRoMjUvS2NvbmZpZzoxMjpjb25maWcgUENJX0FSMjMxNVxuYXJjaC9taXBzL2F0aDI1L0tjb25maWctMTMtXHRib29sIFwmIzM0O0F0aGVyb3MgQVIyMzE1IFBDSSBjb250cm9sbGVyIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL21pcHMvYXRoNzkvS2NvbmZpZz0yND1jb25maWcgU09DX1FDQTk1NVhcbi0tXG5hcmNoL21pcHMvYXRoNzkvS2NvbmZpZy0yOC1cbmFyY2gvbWlwcy9hdGg3OS9LY29uZmlnOjI5OmNvbmZpZyBQQ0lfQVI3MjRYXG5hcmNoL21pcHMvYXRoNzkvS2NvbmZpZy0zMC1cdGRlZl9ib29sIG5cbi0tXG5hcmNoL21pcHMvbGFudGlxL0tjb25maWc9NDk9ZW5kY2hvaWNlXG5hcmNoL21pcHMvbGFudGlxL0tjb25maWctNTAtXG5hcmNoL21pcHMvbGFudGlxL0tjb25maWc6NTE6Y29uZmlnIFBDSV9MQU5USVFcbmFyY2gvbWlwcy9sYW50aXEvS2NvbmZpZy01Mi1cdGJvb2wgXCYjMzQ7UENJIFN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL21pcHMvdHh4OS9LY29uZmlnPTU2PWNvbmZpZyBQSUNNR19QQ0lfQkFDS1BMQU5FX0RFRkFVTFRcbi0tXG5hcmNoL21pcHMvdHh4OS9LY29uZmlnLTYwLVxuYXJjaC9taXBzL3R4eDkvS2NvbmZpZzo2MTpjb25maWcgUENJX1RYNDkyN1xuYXJjaC9taXBzL3R4eDkvS2NvbmZpZy02Mi1cdGJvb2xcbi0tXG5hcmNoL3MzOTAvS2NvbmZpZz03NDc9aWYgUENJXG5hcmNoL3MzOTAvS2NvbmZpZy03NDgtXG5hcmNoL3MzOTAvS2NvbmZpZzo3NDk6Y29uZmlnIFBDSV9OUl9GVU5DVElPTlNcbmFyY2gvczM5MC9LY29uZmlnLTc1MC1cdGludCBcJiMzNDtNYXhpbXVtIG51bWJlciBvZiBQQ0kgZnVuY3Rpb25zICgxLTQwOTYpXCYjMzQ7XG4tLVxuYXJjaC9zcGFyYy9LY29uZmlnPTM4OD1jb25maWcgU1VOX0xET01TXG4tLVxuYXJjaC9zcGFyYy9LY29uZmlnLTM5NC1cbmFyY2gvc3BhcmMvS2NvbmZpZzozOTU6Y29uZmlnIFBDSUNfUENJXG5hcmNoL3NwYXJjL0tjb25maWctMzk2LVx0Ym9vbFxuLS1cbmFyY2gveDg2L0tjb25maWc9MjgyNj1jaG9pY2Vcbi0tXG5hcmNoL3g4Ni9LY29uZmlnLTI4NDQtXG5hcmNoL3g4Ni9LY29uZmlnOjI4NDU6Y29uZmlnIFBDSV9HT0JJT1NcbmFyY2gveDg2L0tjb25maWctMjg0Ni1cdGJvb2wgXCYjMzQ7QklPU1wmIzM0O1xuYXJjaC94ODYvS2NvbmZpZy0yODQ3LVxuYXJjaC94ODYvS2NvbmZpZzoyODQ4OmNvbmZpZyBQQ0lfR09NTUNPTkZJR1xuYXJjaC94ODYvS2NvbmZpZy0yODQ5LVx0Ym9vbCBcJiMzNDtNTUNvbmZpZ1wmIzM0O1xuYXJjaC94ODYvS2NvbmZpZy0yODUwLVxuYXJjaC94ODYvS2NvbmZpZzoyODUxOmNvbmZpZyBQQ0lfR09ESVJFQ1RcbmFyY2gveDg2L0tjb25maWctMjg1Mi1cdGJvb2wgXCYjMzQ7RGlyZWN0XCYjMzQ7XG5hcmNoL3g4Ni9LY29uZmlnLTI4NTMtXG5hcmNoL3g4Ni9LY29uZmlnOjI4NTQ6Y29uZmlnIFBDSV9HT09MUENcbmFyY2gveDg2L0tjb25maWctMjg1NS1cdGJvb2wgXCYjMzQ7T0xQQyBYTy0xXCYjMzQ7XG4tLVxuYXJjaC94ODYvS2NvbmZpZy0yODU3LVxuYXJjaC94ODYvS2NvbmZpZzoyODU4OmNvbmZpZyBQQ0lfR09BTllcbmFyY2gveDg2L0tjb25maWctMjg1OS1cdGJvb2wgXCYjMzQ7QW55XCYjMzQ7XG4tLVxuYXJjaC94ODYvS2NvbmZpZz0yODYxPWVuZGNob2ljZVxuYXJjaC94ODYvS2NvbmZpZy0yODYyLVxuYXJjaC94ODYvS2NvbmZpZzoyODYzOmNvbmZpZyBQQ0lfQklPU1xuYXJjaC94ODYvS2NvbmZpZy0yODY0LVx0ZGVmX2Jvb2wgeVxuLS1cbmFyY2gveDg2L0tjb25maWctMjg2Ny0jIHg4Ni02NCBkb2VzbiYjMzk7dCBzdXBwb3J0IFBDSSBCSU9TIGFjY2VzcyBmcm9tIGxvbmcgbW9kZSBzbyBhbHdheXMgZ28gZGlyZWN0LlxuYXJjaC94ODYvS2NvbmZpZzoyODY4OmNvbmZpZyBQQ0lfRElSRUNUXG5hcmNoL3g4Ni9LY29uZmlnLTI4NjktXHRkZWZfYm9vbCB5XG4tLVxuYXJjaC94ODYvS2NvbmZpZy0yODcxLVxuYXJjaC94ODYvS2NvbmZpZzoyODcyOmNvbmZpZyBQQ0lfTU1DT05GSUdcbmFyY2gveDg2L0tjb25maWc6Mjg3MzpcdGJvb2wgXCYjMzQ7U3VwcG9ydCBtbWNvbmZpZyBQQ0kgY29uZmlnIHNwYWNlIGFjY2Vzc1wmIzM0OyBpZiBYODZfNjRcbmFyY2gveDg2L0tjb25maWctMjg3NC1cdGRlZmF1bHQgeVxuLS1cbmFyY2gveDg2L0tjb25maWctMjg5MC1cbmFyY2gveDg2L0tjb25maWc6Mjg5MTpjb25maWcgUENJX09MUENcbmFyY2gveDg2L0tjb25maWctMjg5Mi1cdGRlZl9ib29sIHlcbi0tXG5hcmNoL3g4Ni9LY29uZmlnLTI4OTQtXG5hcmNoL3g4Ni9LY29uZmlnOjI4OTU6Y29uZmlnIFBDSV9YRU5cbmFyY2gveDg2L0tjb25maWctMjg5Ni1cdGRlZl9ib29sIHlcbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTI4OTk9Y29uZmlnIE1NQ09ORl9GQU0xMEhcbi0tXG5hcmNoL3g4Ni9LY29uZmlnLTI5MDItXG5hcmNoL3g4Ni9LY29uZmlnOjI5MDM6Y29uZmlnIFBDSV9DTkIyMExFX1FVSVJLXG5hcmNoL3g4Ni9LY29uZmlnLTI5MDQtXHRib29sIFwmIzM0O1JlYWQgUENJIGhvc3QgYnJpZGdlIHdpbmRvd3MgZnJvbSB0aGUgQ05CMjBMRSBjaGlwc2V0XCYjMzQ7IGlmIEVYUEVSVFxuLS1cbmRyaXZlcnMvbWlzYy9LY29uZmlnPTQ2Mj1jb25maWcgRFdfWERBVEFfUENJRVxuLS1cbmRyaXZlcnMvbWlzYy9LY29uZmlnLTQ3MS1cbmRyaXZlcnMvbWlzYy9LY29uZmlnOjQ3Mjpjb25maWcgUENJX0VORFBPSU5UX1RFU1RcbmRyaXZlcnMvbWlzYy9LY29uZmlnLTQ3My1cdGRlcGVuZHMgb24gUENJXG4tLVxuZHJpdmVycy9uZXQvY2FuL3NqYTEwMDAvcGVha19wY2kuYz0zNj1zdHJ1Y3QgcGVha19wY2lfY2hhbiB7XG4tLVxuZHJpdmVycy9uZXQvY2FuL3NqYTEwMDAvcGVha19wY2kuYy01Mi1cbmRyaXZlcnMvbmV0L2Nhbi9zamExMDAwL3BlYWtfcGNpLmM6NTM6I2RlZmluZSBQRUFLX1BDSV9DRkdfU0laRVx0MHgxMDAwXHQvKiBTaXplIG9mIHRoZSBjb25maWcgUENJIGJhciAqL1xuZHJpdmVycy9uZXQvY2FuL3NqYTEwMDAvcGVha19wY2kuYy01NC0jZGVmaW5lIFBFQUtfUENJX0NIQU5fU0laRVx0MHgwNDAwXHQvKiBTaXplIHVzZWQgYnkgdGhlIGNoYW5uZWwgKi9cbi0tXG5kcml2ZXJzL25ldC93YW4vS2NvbmZpZz05OD1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2FuL2ZyYW1lci9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC93YW4vS2NvbmZpZy05OS1cbmRyaXZlcnMvbmV0L3dhbi9LY29uZmlnOjEwMDpjb25maWcgUENJMjAwU1lOXG5kcml2ZXJzL25ldC93YW4vS2NvbmZpZy0xMDEtXHR0cmlzdGF0ZSBcJiMzNDtHb3JhbW8gUENJMjAwU1lOIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL3BhcmlzYy9LY29uZmlnPTU5PWNvbmZpZyBHU0NfRElOT1xuLS1cbmRyaXZlcnMvcGFyaXNjL0tjb25maWctNjktXG5kcml2ZXJzL3BhcmlzYy9LY29uZmlnOjcwOmNvbmZpZyBQQ0lfTEJBXG5kcml2ZXJzL3BhcmlzYy9LY29uZmlnLTcxLVx0Ym9vbCBcJiMzNDtMQkEvRWxyb3kgUENJIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL3BjaS9LY29uZmlnPTE4PWNvbmZpZyBHRU5FUklDX1BDSV9JT01BUFxuLS1cbmRyaXZlcnMvcGNpL0tjb25maWctMjAtXG5kcml2ZXJzL3BjaS9LY29uZmlnOjIxOm1lbnVjb25maWcgUENJXG5kcml2ZXJzL3BjaS9LY29uZmlnLTIyLVx0Ym9vbCBcJiMzNDtQQ0kgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvcGNpL0tjb25maWc9MzA9aWYgUENJXG5kcml2ZXJzL3BjaS9LY29uZmlnLTMxLVxuZHJpdmVycy9wY2kvS2NvbmZpZzozMjpjb25maWcgUENJX0RPTUFJTlNcbmRyaXZlcnMvcGNpL0tjb25maWctMzMtXHRib29sXG5kcml2ZXJzL3BjaS9LY29uZmlnLTM0LVxuZHJpdmVycy9wY2kvS2NvbmZpZzozNTpjb25maWcgUENJX0RPTUFJTlNfR0VORVJJQ1xuZHJpdmVycy9wY2kvS2NvbmZpZy0zNi1cdGJvb2xcbi0tXG5kcml2ZXJzL3BjaS9LY29uZmlnLTM4LVxuZHJpdmVycy9wY2kvS2NvbmZpZzozOTpjb25maWcgUENJX1NZU0NBTExcbmRyaXZlcnMvcGNpL0tjb25maWctNDAtXHRib29sXG4tLVxuZHJpdmVycy9wY2kvS2NvbmZpZz00Mj1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9wY2kvcGNpZS9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL3BjaS9LY29uZmlnLTQzLVxuZHJpdmVycy9wY2kvS2NvbmZpZzo0NDpjb25maWcgUENJX01TSVxuZHJpdmVycy9wY2kvS2NvbmZpZy00NS1cdGJvb2wgXCYjMzQ7TWVzc2FnZSBTaWduYWxlZCBJbnRlcnJ1cHRzIChNU0kgYW5kIE1TSS1YKVwmIzM0O1xuLS1cbmRyaXZlcnMvcGNpL0tjb25maWctNTgtXG5kcml2ZXJzL3BjaS9LY29uZmlnOjU5OmNvbmZpZyBQQ0lfTVNJX0FSQ0hfRkFMTEJBQ0tTXG5kcml2ZXJzL3BjaS9LY29uZmlnLTYwLVx0Ym9vbFxuZHJpdmVycy9wY2kvS2NvbmZpZy02MS1cbmRyaXZlcnMvcGNpL0tjb25maWc6NjI6Y29uZmlnIFBDSV9RVUlSS1NcbmRyaXZlcnMvcGNpL0tjb25maWctNjMtXHRkZWZhdWx0IHlcbi0tXG5kcml2ZXJzL3BjaS9LY29uZmlnLTY5LVxuZHJpdmVycy9wY2kvS2NvbmZpZzo3MDpjb25maWcgUENJX0RFQlVHXG5kcml2ZXJzL3BjaS9LY29uZmlnLTcxLVx0Ym9vbCBcJiMzNDtQQ0kgRGVidWdnaW5nXCYjMzQ7XG4tLVxuZHJpdmVycy9wY2kvS2NvbmZpZy03OS1cbmRyaXZlcnMvcGNpL0tjb25maWc6ODA6Y29uZmlnIFBDSV9SRUFMTE9DX0VOQUJMRV9BVVRPXG5kcml2ZXJzL3BjaS9LY29uZmlnLTgxLVx0Ym9vbCBcJiMzNDtFbmFibGUgUENJIHJlc291cmNlIHJlLWFsbG9jYXRpb24gZGV0ZWN0aW9uXCYjMzQ7XG4tLVxuZHJpdmVycy9wY2kvS2NvbmZpZy05MS1cbmRyaXZlcnMvcGNpL0tjb25maWc6OTI6Y29uZmlnIFBDSV9TVFVCXG5kcml2ZXJzL3BjaS9LY29uZmlnLTkzLVx0dHJpc3RhdGUgXCYjMzQ7UENJIFN0dWIgZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9wY2kvS2NvbmZpZy05OS1cbmRyaXZlcnMvcGNpL0tjb25maWc6MTAwOmNvbmZpZyBQQ0lfUEZfU1RVQlxuZHJpdmVycy9wY2kvS2NvbmZpZy0xMDEtXHR0cmlzdGF0ZSBcJiMzNDtQQ0kgUEYgU3R1YiBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL3BjaS9LY29uZmlnPTExMT1jb25maWcgWEVOX1BDSURFVl9GUk9OVEVORFxuLS1cbmRyaXZlcnMvcGNpL0tjb25maWctMTIwLVxuZHJpdmVycy9wY2kvS2NvbmZpZzoxMjE6Y29uZmlnIFBDSV9BVFNcbmRyaXZlcnMvcGNpL0tjb25maWctMTIyLVx0Ym9vbFxuZHJpdmVycy9wY2kvS2NvbmZpZy0xMjMtXG5kcml2ZXJzL3BjaS9LY29uZmlnOjEyNDpjb25maWcgUENJX0lERVxuZHJpdmVycy9wY2kvS2NvbmZpZy0xMjUtXHRib29sXG5kcml2ZXJzL3BjaS9LY29uZmlnLTEyNi1cbmRyaXZlcnMvcGNpL0tjb25maWc6MTI3OmNvbmZpZyBQQ0lfVFNNXG5kcml2ZXJzL3BjaS9LY29uZmlnLTEyOC1cdGJvb2wgXCYjMzQ7UENJIFRTTTogRGV2aWNlIHNlY3VyaXR5IHByb3RvY29sIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL3BjaS9LY29uZmlnLTE0MS1cbmRyaXZlcnMvcGNpL0tjb25maWc6MTQyOmNvbmZpZyBQQ0lfRE9FXG5kcml2ZXJzL3BjaS9LY29uZmlnLTE0My1cdGJvb2wgXCYjMzQ7RW5hYmxlIFBDSSBEYXRhIE9iamVjdCBFeGNoYW5nZSAoRE9FKSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9wY2kvS2NvbmZpZy0xNDctXG5kcml2ZXJzL3BjaS9LY29uZmlnOjE0ODpjb25maWcgUENJX0VDQU1cbmRyaXZlcnMvcGNpL0tjb25maWctMTQ5LVx0Ym9vbFxuZHJpdmVycy9wY2kvS2NvbmZpZy0xNTAtXG5kcml2ZXJzL3BjaS9LY29uZmlnOjE1MTpjb25maWcgUENJX0xPQ0tMRVNTX0NPTkZJR1xuZHJpdmVycy9wY2kvS2NvbmZpZy0xNTItXHRib29sXG5kcml2ZXJzL3BjaS9LY29uZmlnLTE1My1cbmRyaXZlcnMvcGNpL0tjb25maWc6MTU0OmNvbmZpZyBQQ0lfQlJJREdFX0VNVUxcbmRyaXZlcnMvcGNpL0tjb25maWctMTU1LVx0Ym9vbFxuZHJpdmVycy9wY2kvS2NvbmZpZy0xNTYtXG5kcml2ZXJzL3BjaS9LY29uZmlnOjE1Nzpjb25maWcgUENJX0lPVlxuZHJpdmVycy9wY2kvS2NvbmZpZy0xNTgtXHRib29sIFwmIzM0O1BDSSBJT1Ygc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvcGNpL0tjb25maWctMTY2LVxuZHJpdmVycy9wY2kvS2NvbmZpZzoxNjc6Y29uZmlnIFBDSV9OUEVNXG5kcml2ZXJzL3BjaS9LY29uZmlnLTE2OC1cdGJvb2wgXCYjMzQ7TmF0aXZlIFBDSWUgRW5jbG9zdXJlIE1hbmFnZW1lbnRcJiMzNDtcbi0tXG5kcml2ZXJzL3BjaS9LY29uZmlnLTE3NS1cbmRyaXZlcnMvcGNpL0tjb25maWc6MTc2OmNvbmZpZyBQQ0lfUFJJXG5kcml2ZXJzL3BjaS9LY29uZmlnLTE3Ny1cdGJvb2wgXCYjMzQ7UENJIFBSSSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9wY2kvS2NvbmZpZy0xODQtXG5kcml2ZXJzL3BjaS9LY29uZmlnOjE4NTpjb25maWcgUENJX1BBU0lEXG5kcml2ZXJzL3BjaS9LY29uZmlnLTE4Ni1cdGJvb2wgXCYjMzQ7UENJIFBBU0lEIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL3BjaS9LY29uZmlnLTE5Ni1cbmRyaXZlcnMvcGNpL0tjb25maWc6MTk3OmNvbmZpZyBQQ0lFX1RQSFxuZHJpdmVycy9wY2kvS2NvbmZpZy0xOTgtXHRib29sIFwmIzM0O1RMUCBQcm9jZXNzaW5nIEhpbnRzXCYjMzQ7XG4tLVxuZHJpdmVycy9wY2kvS2NvbmZpZy0yMDUtXG5kcml2ZXJzL3BjaS9LY29uZmlnOjIwNjpjb25maWcgUENJX1AyUERNQVxuZHJpdmVycy9wY2kvS2NvbmZpZy0yMDctXHRib29sIFwmIzM0O1BDSSBwZWVyLXRvLXBlZXIgdHJhbnNmZXIgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvcGNpL0tjb25maWctMjI4LVxuZHJpdmVycy9wY2kvS2NvbmZpZzoyMjk6Y29uZmlnIFBDSV9MQUJFTFxuZHJpdmVycy9wY2kvS2NvbmZpZy0yMzAtXHRkZWZfYm9vbCB5IGlmIChETUkgfHwgQUNQSSlcbi0tXG5kcml2ZXJzL3BjaS9LY29uZmlnLTIzMi1cbmRyaXZlcnMvcGNpL0tjb25maWc6MjMzOmNvbmZpZyBQQ0lfSFlQRVJWXG5kcml2ZXJzL3BjaS9LY29uZmlnLTIzNC1cdHRyaXN0YXRlIFwmIzM0O0h5cGVyLVYgUENJIEZyb250ZW5kXCYjMzQ7XG4tLVxuZHJpdmVycy9wY2kvS2NvbmZpZy0yNDEtXG5kcml2ZXJzL3BjaS9LY29uZmlnOjI0Mjpjb25maWcgUENJX0RZTkFNSUNfT0ZfTk9ERVNcbmRyaXZlcnMvcGNpL0tjb25maWctMjQzLVx0Ym9vbCBcJiMzNDtDcmVhdGUgRGV2aWNlIHRyZWUgbm9kZXMgZm9yIFBDSSBkZXZpY2VzXCYjMzQ7XG4tLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnPTM9bWVudSBcJiMzNDtQQ0kgY29udHJvbGxlciBkcml2ZXJzXCYjMzQ7XG4tLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTUtXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWc6Njpjb25maWcgUENJX0hPU1RfQ09NTU9OXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctNy1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTktXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWc6MTA6Y29uZmlnIFBDSV9BQVJEVkFSS1xuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTExLVx0dHJpc3RhdGUgXCYjMzQ7QWFyZHZhcmsgUENJZSBjb250cm9sbGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTIxLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnOjIyOmNvbmZpZyBQQ0lFX0FMVEVSQVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTIzLVx0dHJpc3RhdGUgXCYjMzQ7QWx0ZXJhIFBDSWUgY29udHJvbGxlclwmIzM0O1xuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0yOC1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZzoyOTpjb25maWcgUENJRV9BTFRFUkFfTVNJXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMzAtXHR0cmlzdGF0ZSBcJiMzNDtBbHRlcmEgUENJZSBNU0kgZmVhdHVyZVwmIzM0O1xuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0zNy1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZzozODpjb25maWcgUENJRV9BUFBMRV9NU0lfRE9PUkJFTExfQUREUlxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTM5LVx0aGV4XG4tLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTQyLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnOjQzOmNvbmZpZyBQQ0lFX0FQUExFXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctNDQtXHR0cmlzdGF0ZSBcJiMzNDtBcHBsZSBQQ0llIGNvbnRyb2xsZXJcJiMzNDtcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctNTYtXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWc6NTc6Y29uZmlnIFBDSV9WRVJTQVRJTEVcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy01OC1cdGJvb2wgXCYjMzQ7QVJNIFZlcnNhdGlsZSBQQiBQQ0kgY29udHJvbGxlclwmIzM0O1xuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy02MC1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZzo2MTpjb25maWcgUENJRV9BU1BFRURcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy02Mi1cdGJvb2wgXCYjMzQ7QVNQRUVEIFBDSWUgY29udHJvbGxlclwmIzM0O1xuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy03Ni1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZzo3Nzpjb25maWcgUENJRV9CUkNNU1RCXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctNzgtXHR0cmlzdGF0ZSBcJiMzNDtCcm9hZGNvbSBCcmNtc3RiIFBDSWUgY29udHJvbGxlclwmIzM0O1xuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy04OC1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZzo4OTpjb25maWcgUENJRV9JUFJPQ1xuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTkwLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctOTUtXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWc6OTY6Y29uZmlnIFBDSUVfSVBST0NfUExBVEZPUk1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy05Ny1cdHRyaXN0YXRlIFwmIzM0O0Jyb2FkY29tIGlQcm9jIFBDSWUgcGxhdGZvcm0gYnVzIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0xMDUtXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWc6MTA2OmNvbmZpZyBQQ0lFX0lQUk9DX0JDTUFcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0xMDctXHR0cmlzdGF0ZSBcJiMzNDtCcm9hZGNvbSBpUHJvYyBCQ01BIFBDSWUgY29udHJvbGxlclwmIzM0O1xuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0xMTUtXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWc6MTE2OmNvbmZpZyBQQ0lFX0lQUk9DX01TSVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTExNy1cdGJvb2wgXCYjMzQ7QnJvYWRjb20gaVByb2MgUENJZSBNU0kgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0xMjUtXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWc6MTI2OmNvbmZpZyBQQ0lfSE9TVF9USFVOREVSX1BFTVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTEyNy1cdGJvb2wgXCYjMzQ7Q2F2aXVtIFRodW5kZXIgUENJZSBjb250cm9sbGVyIHRvIG9mZi1jaGlwIGRldmljZXNcJiMzNDtcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMTMzLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnOjEzNDpjb25maWcgUENJX0hPU1RfVEhVTkRFUl9FQ0FNXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMTM1LVx0Ym9vbCBcJiMzNDtDYXZpdW0gVGh1bmRlciBFQ0FNIGNvbnRyb2xsZXIgdG8gb24tY2hpcCBkZXZpY2VzIG9uIHBhc3MtMS54IHNpbGljb25cJiMzNDtcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMTQxLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnOjE0Mjpjb25maWcgUENJX0ZUUENJMTAwXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMTQzLVx0Ym9vbCBcJiMzNDtGYXJhZGF5IFRlY2hub2xvZ3kgRlRQQ0kxMDAgUENJIGNvbnRyb2xsZXJcJiMzNDtcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMTQ2LVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnOjE0Nzpjb25maWcgUENJX0hPU1RfR0VORVJJQ1xuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTE0OC1cdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgUENJIGhvc3QgY29udHJvbGxlclwmIzM0O1xuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0xNTUtXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWc6MTU2OmNvbmZpZyBQQ0lFX0hJU0lfRVJSXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMTU3LVx0ZGVwZW5kcyBvbiBBQ1BJX0FQRUlfR0hFUyBcdTAwMjZcdTAwMjYgKEFSTTY0IHx8IENPTVBJTEVfVEVTVClcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMTYyLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnOjE2Mzpjb25maWcgUENJX0lYUDRYWFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTE2NC1cdGJvb2wgXCYjMzQ7SW50ZWwgSVhQNHh4IFBDSSBjb250cm9sbGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnPTE3Mj1jb25maWcgVk1EXG4tLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTE4Ny1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZzoxODg6Y29uZmlnIFBDSV9MT09OR1NPTlxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTE4OS1cdGJvb2wgXCYjMzQ7TE9PTkdTT04gUENJZSBjb250cm9sbGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTE5Ny1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZzoxOTg6Y29uZmlnIFBDSV9NVkVCVVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTE5OS1cdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgRUJVIFBDSWUgY29udHJvbGxlclwmIzM0O1xuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0yMDktXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWc6MjEwOmNvbmZpZyBQQ0lFX01FRElBVEVLXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMjExLVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgUENJZSBjb250cm9sbGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTIxOS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZzoyMjA6Y29uZmlnIFBDSUVfTUVESUFURUtfR0VOM1xuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTIyMS1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIEdlbjMgUENJZSBjb250cm9sbGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTIzNC1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZzoyMzU6Y29uZmlnIFBDSUVfTVQ3NjIxXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMjM2LVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3NjIxIFBDSWUgY29udHJvbGxlclwmIzM0O1xuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0yNDItXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWc6MjQzOmNvbmZpZyBQQ0lfSFlQRVJWX0lOVEVSRkFDRVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTI0NC1cdHRyaXN0YXRlIFwmIzM0O01pY3Jvc29mdCBIeXBlci1WIFBDSSBJbnRlcmZhY2VcJiMzNDtcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMjUwLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnOjI1MTpjb25maWcgUENJX1RFR1JBXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMjUyLVx0dHJpc3RhdGUgXCYjMzQ7TlZJRElBIFRlZ3JhIFBDSWUgY29udHJvbGxlclwmIzM0O1xuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0yNTktXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWc6MjYwOmNvbmZpZyBQQ0lFX1JDQVJfSE9TVFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTI2MS1cdGJvb2wgXCYjMzQ7UmVuZXNhcyBSLUNhciBQQ0llIGNvbnRyb2xsZXIgKGhvc3QgbW9kZSlcJiMzNDtcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMjY5LVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnOjI3MDpjb25maWcgUENJRV9SQ0FSX0VQXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMjcxLVx0Ym9vbCBcJiMzNDtSZW5lc2FzIFItQ2FyIFBDSWUgY29udHJvbGxlciAoZW5kcG9pbnQgbW9kZSlcJiMzNDtcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMjc3LVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnOjI3ODpjb25maWcgUENJX1JDQVJfR0VOMlxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTI3OS1cdGJvb2wgXCYjMzQ7UmVuZXNhcyBSLUNhciBHZW4yIEludGVybmFsIFBDSSBjb250cm9sbGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTI4NS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZzoyODY6Y29uZmlnIFBDSUVfUkVORVNBU19SWkczU19IT1NUXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMjg3LVx0Ym9vbCBcJiMzNDtSZW5lc2FzIFJaL0czUyBQQ0llIGhvc3QgY29udHJvbGxlclwmIzM0O1xuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0yOTQtXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWc6Mjk1OmNvbmZpZyBQQ0lFX1JPQ0tDSElQXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMjk2LVx0Ym9vbFxuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0yOTgtXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWc6Mjk5OmNvbmZpZyBQQ0lFX1JPQ0tDSElQX0hPU1RcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0zMDAtXHR0cmlzdGF0ZSBcJiMzNDtSb2NrY2hpcCBQQ0llIGNvbnRyb2xsZXIgKGhvc3QgbW9kZSlcJiMzNDtcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMzEwLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnOjMxMTpjb25maWcgUENJRV9ST0NLQ0hJUF9FUFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTMxMi1cdGJvb2wgXCYjMzQ7Um9ja2NoaXAgUENJZSBjb250cm9sbGVyIChlbmRwb2ludCBtb2RlKVwmIzM0O1xuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0zMjItXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWc6MzIzOmNvbmZpZyBQQ0lfVjNfU0VNSVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTMyNC1cdGJvb2wgXCYjMzQ7VjMgU2VtaWNvbmR1Y3RvciBQQ0kgY29udHJvbGxlclwmIzM0O1xuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0zMjgtXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWc6MzI5OmNvbmZpZyBQQ0lfWEdFTkVcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0zMzAtXHRib29sIFwmIzM0O1gtR2VuZSBQQ0llIGNvbnRyb2xsZXJcJiMzNDtcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMzM3LVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnOjMzODpjb25maWcgUENJX1hHRU5FX01TSVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTMzOS1cdGJvb2wgXCYjMzQ7WC1HZW5lIHYxIFBDSWUgTVNJIGZlYXR1cmVcJiMzNDtcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMzQ3LVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnOjM0ODpjb25maWcgUENJRV9YSUxJTlhcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0zNDktXHRib29sIFwmIzM0O1hpbGlueCBBWEkgUENJZSBjb250cm9sbGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTM1Ni1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZzozNTc6Y29uZmlnIFBDSUVfWElMSU5YX0RNQV9QTFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTM1OC1cdGJvb2wgXCYjMzQ7WGlsaW54IERNQSBQTCBQQ0llIGhvc3QgYnJpZGdlIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMzY4LVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnOjM2OTpjb25maWcgUENJRV9YSUxJTlhfTldMXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMzcwLVx0Ym9vbCBcJiMzNDtYaWxpbnggTldMIFBDSWUgY29udHJvbGxlclwmIzM0O1xuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0zNzktXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWc6MzgwOmNvbmZpZyBQQ0lFX1hJTElOWF9DUE1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0zODEtXHRib29sIFwmIzM0O1hpbGlueCBWZXJzYWwgQ1BNIFBDSSBjb250cm9sbGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9jYWRlbmNlL0tjb25maWc9Mz1tZW51IFwmIzM0O0NhZGVuY2UtYmFzZWQgUENJZSBjb250cm9sbGVyc1wmIzM0O1xuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvY2FkZW5jZS9LY29uZmlnLTUtXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2NhZGVuY2UvS2NvbmZpZzo2OmNvbmZpZyBQQ0lFX0NBREVOQ0VcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvY2FkZW5jZS9LY29uZmlnLTctXHR0cmlzdGF0ZVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9jYWRlbmNlL0tjb25maWctOC1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvY2FkZW5jZS9LY29uZmlnOjk6Y29uZmlnIFBDSUVfQ0FERU5DRV9IT1NUXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2NhZGVuY2UvS2NvbmZpZy0xMC1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9jYWRlbmNlL0tjb25maWctMTQtXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2NhZGVuY2UvS2NvbmZpZzoxNTpjb25maWcgUENJRV9DQURFTkNFX0VQXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2NhZGVuY2UvS2NvbmZpZy0xNi1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9jYWRlbmNlL0tjb25maWctMjAtXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2NhZGVuY2UvS2NvbmZpZzoyMTpjb25maWcgUENJRV9DQURFTkNFX1BMQVRcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvY2FkZW5jZS9LY29uZmlnLTIyLVx0dHJpc3RhdGVcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvY2FkZW5jZS9LY29uZmlnLTIzLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9jYWRlbmNlL0tjb25maWc6MjQ6Y29uZmlnIFBDSUVfQ0FERU5DRV9QTEFUX0hPU1RcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvY2FkZW5jZS9LY29uZmlnLTI1LVx0dHJpc3RhdGUgXCYjMzQ7Q2FkZW5jZSBwbGF0Zm9ybSBQQ0llIGNvbnRyb2xsZXIgKGhvc3QgbW9kZSlcJiMzNDtcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2NhZGVuY2UvS2NvbmZpZy0zMy1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvY2FkZW5jZS9LY29uZmlnOjM0OmNvbmZpZyBQQ0lFX0NBREVOQ0VfUExBVF9FUFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9jYWRlbmNlL0tjb25maWctMzUtXHR0cmlzdGF0ZSBcJiMzNDtDYWRlbmNlIHBsYXRmb3JtIFBDSWUgY29udHJvbGxlciAoZW5kcG9pbnQgbW9kZSlcJiMzNDtcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2NhZGVuY2UvS2NvbmZpZy00NC1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvY2FkZW5jZS9LY29uZmlnOjQ1OmNvbmZpZyBQQ0lfU0tZMV9IT1NUXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2NhZGVuY2UvS2NvbmZpZy00Ni1cdHRyaXN0YXRlIFwmIzM0O0NJWCBTS1kxIFBDSWUgY29udHJvbGxlciAoaG9zdCBtb2RlKVwmIzM0O1xuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvY2FkZW5jZS9LY29uZmlnLTU5LVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9jYWRlbmNlL0tjb25maWc6NjA6Y29uZmlnIFBDSUVfU0cyMDQyX0hPU1RcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvY2FkZW5jZS9LY29uZmlnLTYxLVx0dHJpc3RhdGUgXCYjMzQ7U29waGdvIFNHMjA0MiBQQ0llIGNvbnRyb2xsZXIgKGhvc3QgbW9kZSlcJiMzNDtcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2NhZGVuY2UvS2NvbmZpZy02OC1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvY2FkZW5jZS9LY29uZmlnOjY5OmNvbmZpZyBQQ0lfSjcyMUVcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvY2FkZW5jZS9LY29uZmlnLTcwLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2NhZGVuY2UvS2NvbmZpZy03My1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvY2FkZW5jZS9LY29uZmlnOjc0OmNvbmZpZyBQQ0lfSjcyMUVfSE9TVFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9jYWRlbmNlL0tjb25maWctNzUtXHR0cmlzdGF0ZSBcJiMzNDtUSSBKNzIxRSBQQ0llIGNvbnRyb2xsZXIgKGhvc3QgbW9kZSlcJiMzNDtcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2NhZGVuY2UvS2NvbmZpZy04My1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvY2FkZW5jZS9LY29uZmlnOjg0OmNvbmZpZyBQQ0lfSjcyMUVfRVBcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvY2FkZW5jZS9LY29uZmlnLTg1LVx0dHJpc3RhdGUgXCYjMzQ7VEkgSjcyMUUgUENJZSBjb250cm9sbGVyIChlbmRwb2ludCBtb2RlKVwmIzM0O1xuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWc9Mz1tZW51IFwmIzM0O0Rlc2lnbldhcmUtYmFzZWQgUENJZSBjb250cm9sbGVyc1wmIzM0O1xuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWctNS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWc6Njpjb25maWcgUENJRV9EV1xuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZy03LVx0Ym9vbFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZy04LVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZzo5OmNvbmZpZyBQQ0lFX0RXX0RFQlVHRlNcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWctMTAtXHRib29sIFwmIzM0O0Rlc2lnbldhcmUgUENJZSBkZWJ1Z2ZzIGVudHJpZXNcJiMzNDtcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnLTE4LVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZzoxOTpjb25maWcgUENJRV9EV19IT1NUXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnLTIwLVx0Ym9vbFxuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWctMjQtXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnOjI1OmNvbmZpZyBQQ0lFX0RXX0VQXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnLTI2LVx0Ym9vbFxuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWctMjgtXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnOjI5OmNvbmZpZyBQQ0lFX0FMXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnLTMwLVx0Ym9vbCBcJiMzNDtBbWF6b24gQW5uYXB1cm5hIExhYnMgUENJZSBjb250cm9sbGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZy00MS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWc6NDI6Y29uZmlnIFBDSUVfQU1EX01EQlxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZy00My1cdGJvb2wgXCYjMzQ7QU1EIE1EQiBWZXJzYWwyIFBDSWUgY29udHJvbGxlclwmIzM0O1xuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWctNTItXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnOjUzOmNvbmZpZyBQQ0lfTUVTT05cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWctNTQtXHR0cmlzdGF0ZSBcJiMzNDtBbWxvZ2ljIE1lc29uIFBDSWUgY29udHJvbGxlclwmIzM0O1xuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWctNjMtXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnOjY0OmNvbmZpZyBQQ0lFX0FOREVTX1FJTEFJXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnLTY1LVx0dHJpc3RhdGUgXCYjMzQ7QW5kZXMgUWlMYWkgUENJZSBjb250cm9sbGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZy03NC1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWc6NzU6Y29uZmlnIFBDSUVfQVJUUEVDNlxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZy03Ni1cdGJvb2xcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWctNzctXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnOjc4OmNvbmZpZyBQQ0lFX0FSVFBFQzZfSE9TVFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZy03OS1cdGJvb2wgXCYjMzQ7QXhpcyBBUlRQRUMtNiBQQ0llIGNvbnRyb2xsZXIgKGhvc3QgbW9kZSlcJiMzNDtcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnLTg3LVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZzo4ODpjb25maWcgUENJRV9BUlRQRUM2X0VQXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnLTg5LVx0Ym9vbCBcJiMzNDtBeGlzIEFSVFBFQy02IFBDSWUgY29udHJvbGxlciAoZW5kcG9pbnQgbW9kZSlcJiMzNDtcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnLTk3LVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZzo5ODpjb25maWcgUENJRV9FU1dJTlxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZy05OS1cdHRyaXN0YXRlIFwmIzM0O0VTV0lOIFBDSWUgY29udHJvbGxlclwmIzM0O1xuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWctMTA3LVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZzoxMDg6Y29uZmlnIFBDSV9JTVg2XG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnLTEwOS1cdGJvb2xcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWctMTEwLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZzoxMTE6Y29uZmlnIFBDSV9JTVg2X0hPU1RcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWctMTEyLVx0Ym9vbCBcJiMzNDtGcmVlc2NhbGUgaS5NWDYvNy84IFBDSWUgY29udHJvbGxlciAoaG9zdCBtb2RlKVwmIzM0O1xuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWctMTIzLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZzoxMjQ6Y29uZmlnIFBDSV9JTVg2X0VQXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnLTEyNS1cdGJvb2wgXCYjMzQ7RnJlZXNjYWxlIGkuTVg2LzcvOCBQQ0llIGNvbnRyb2xsZXIgKGVuZHBvaW50IG1vZGUpXCYjMzQ7XG4tLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZy0xMzUtXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnOjEzNjpjb25maWcgUENJX0xBWUVSU0NBUEVcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWctMTM3LVx0dHJpc3RhdGUgXCYjMzQ7RnJlZXNjYWxlIExheWVyc2NhcGUgUENJZSBjb250cm9sbGVyIChob3N0IG1vZGUpXCYjMzQ7XG4tLVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEwOjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3MzM5CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMjM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IENvbmZpZ3VyYXRpb24gUXVhbmRhcnkqKgoKT2theSwgaGVyZSYjMzk7cyB0aGUgc2l0dWF0aW9uLiBJJiMzOTttIHRyeWluZyB0byBmaWd1cmUgb3V0IHRoZSBvcHRpbWFsIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MsIGFuZCBpdCBsb29rcyBsaWtlIGBBUk1fR0lDX1YzX0lUU2AgaXMgYXV0b21hdGljYWxseSBzZWxlY3RlZCBmb3IgQVJNNjQgaWYgYFBDSWAgaXMgc2V0LiBSaWdodCwgc28gaWYgSSBpbmNsdWRlIGBQQ0lgLCB0aGVuIGBBUk1fR0lDX1YzX0lUU2Agc2hvdWxkIGJlIGVuYWJsZWQsIHRoYXQgbWFrZXMgc2Vuc2UuCgpMZXQgbWUganVzdCBjb25maXJtIHRoYXQgYFBDSWAgaXMgc3VmZmljaWVudCBvbiBpdHMgb3duLiBZZXAsIGl0JiMzOTtzIGEgc3RhbmRhcmQgY29uZmlnLCBubyBzdXJwcmlzZXMgdGhlcmUuIE9rYXksIHNvIGNpcmNsaW5nIGJhY2sgdG8gYEFSTV9HSUNfVjNfSVRTYCwgd2hhdCBlbHNlIG1pZ2h0IGJlIGF0IHBsYXk/IEp1c3QgdG8gYmUgc3VyZSwgaXMgdGhlcmUgKmFueXRoaW5nKiBlbHNlIHRoYXQgbmVlZHMgdG8gYmUgY29uc2lkZXJlZD8gSG1tLCBgQ09ORklHX1BDSWAgbG9va3MgZ29vZC4KCkhvbGQgb24uLi4gdGFraW5nIGFub3RoZXIgcGFzcywgYmVjYXVzZSBJJiMzOTttIG5vdCBhIGZhbiBvZiBhc3N1bWluZywgYENPTkZJR19BUk1fR0lDX1YzX0lUU2AgKmlzKiBzZWxlY3RlZCBieSBgQVJNNjRgIHdoZW4gYFBDSWAgaXMgYWxyZWFkeSBlbmFibGVkLiBUaGVyZWZvcmUsIGBQQ0lgIGlzIHRoZSB0aGluZyB0byB1c2UuIEkgZG9uJiMzOTt0IG5lZWQgdG8gc3BlY2lmeSBhbnl0aGluZyBlbHNlLiBJIHNob3VsZCBqdXN0IHJldHVybiBgUENJYC4KClJpZ2h0LCBub3cgdGhlIGZ1enplci4gSXQgKm1pZ2h0KiBub3QgcnVuIG9uIEFSTTY0IGlmIEkgZG9uJiMzOTt0ICpleHBsaWNpdGx5KiBpbmNsdWRlIGl0LCBidXQgdGhlIGZ1enplciBydW5zIG9uIGFsbCBhcmNoaXRlY3R1cmVzLiBBaGEhIElmIEkgc3BlY2lmeSBgUENJYCwgaXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGVuYWJsZWQgb24gQVJNNjQsIGFueXdheS4gSSBjYW4ganVzdCBzcGVjaWZ5IGBQQ0lgLiBJdCB3aWxsIGJlIGVuYWJsZWQgb24gQVJNNjQgaWYgaXQgaXMgYXZhaWxhYmxlLgoKTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrLCBpcyB0aGVyZSAqYW55dGhpbmcqIGVsc2UgdGhhdCBuZWVkcyB0byBiZSBjb25maWd1cmVkPyBKdXN0IHRvIGJlIGNlcnRhaW4sIEkgc2hvdWxkIGNoZWNrIHRoZSBkcml2ZXJzLCBgZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxMDoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmM9MjMzNz1zdGF0aWMgaW50IGdpY19yZXNlcnZlX3JhbmdlKHBoeXNfYWRkcl90IGFkZHIsIHVuc2lnbmVkIGxvbmcgc2l6ZSlcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jLTIzMzgte1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmM6MjMzOTpcdGlmIChlZmlfZW5hYmxlZChFRklfQ09ORklHX1RBQkxFUykpXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYy0yMzQwLVx0XHRyZXR1cm4gZWZpX21lbV9yZXNlcnZlX3BlcnNpc3RlbnQoYWRkciwgc2l6ZSk7XG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmM9MjQwOD1zdGF0aWMgaW50IGl0c19zZXR1cF9iYXNlcihzdHJ1Y3QgaXRzX25vZGUgKml0cywgc3RydWN0IGl0c19iYXNlciAqYmFzZXIsXG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtMjQzNi1cdC8qIENoZWNrIGlmIHRoZSBwaHlzaWNhbCBhZGRyZXNzIG9mIHRoZSBtZW1vcnkgaXMgYWJvdmUgNDhiaXRzICovXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYzoyNDM3Olx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0FSTTY0XzY0S19QQUdFUykgXHUwMDI2XHUwMDI2IChiYXNlcl9waHlzIFx1MDAzZVx1MDAzZSA0OCkpIHtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jLTI0MzgtXG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmM9NDkzMD1zdGF0aWMgY29uc3Qgc3RydWN0IGdpY19xdWlyayBpdHNfcXVpcmtzW10gPSB7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYzo0OTMxOiNpZmRlZiBDT05GSUdfQ0FWSVVNX0VSUkFUVU1fMjIzNzVcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jLTQ5MzItXHR7XG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtNDkzOC0jZW5kaWZcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jOjQ5Mzk6I2lmZGVmIENPTkZJR19DQVZJVU1fRVJSQVRVTV8yMzE0NFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtNDk0MC1cdHtcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYy00OTQ2LSNlbmRpZlxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmM6NDk0NzojaWZkZWYgQ09ORklHX1FDT01fUURGMjQwMF9FUlJBVFVNXzAwNjVcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jLTQ5NDgtXHR7XG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtNDk1NC0jZW5kaWZcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jOjQ5NTU6I2lmZGVmIENPTkZJR19TT0NJT05FWFRfU1lOUVVBQ0VSX1BSRUlUU1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtNDk1Ni1cdHtcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYy00OTY3LSNlbmRpZlxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmM6NDk2ODojaWZkZWYgQ09ORklHX0hJU0lMSUNPTl9FUlJBVFVNXzE2MTYwMDgwMlxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtNDk2OS1cdHtcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYy00OTc1LSNlbmRpZlxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmM6NDk3NjojaWZkZWYgQ09ORklHX0hJU0lMSUNPTl9FUlJBVFVNXzE2MjEwMDgwMVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtNDk3Ny1cdHtcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYy00OTgzLSNlbmRpZlxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmM6NDk4NDojaWZkZWYgQ09ORklHX1JPQ0tDSElQX0VSUkFUVU1fMzU4ODAwMVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtNDk4NS1cdHtcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYy00OTk2LVx0fSxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jOjQ5OTc6I2lmZGVmIENPTkZJR19ST0NLQ0hJUF9FUlJBVFVNXzM1NjgwMDJcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jLTQ5OTgtXHR7XG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmM9NTQ2OT1zdGF0aWMgaW50IGl0c19jcHVfbWVtcmVzZXJ2ZV9scGkodW5zaWduZWQgaW50IGNwdSlcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYy01NDk3LVx0LyogTGFzdCBDUFUgYmVpbmcgYnJvdWdodCB1cCBnZXRzIHRvIGlzc3VlIHRoZSBjbGVhbnVwICovXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYzo1NDk4Olx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19TTVApIHx8XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYy01NDk5LVx0ICAgIGNwdW1hc2tfZXF1YWwoXHUwMDI2Y3B1c19ib290ZWRfb25jZV9tYXNrLCBjcHVfcG9zc2libGVfbWFzaykpXG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmM9NTU3Mj1zdGF0aWMgaW50IF9faW5pdCBpdHNfb2ZfcHJvYmUoc3RydWN0IGRldmljZV9ub2RlICpub2RlKVxuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jLTU2MjYtXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYzo1NjI3OiNpZmRlZiBDT05GSUdfQUNQSVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtNTYyOC1cbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYy01NjMwLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmM6NTYzMTojaWZkZWYgQ09ORklHX0FDUElfTlVNQVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtNTYzMi1zdHJ1Y3QgaXRzX3NyYXRfbWFwIHtcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYz01ODE1PWludCBfX2luaXQgaXRzX2xwaV9tZW1yZXNlcnZlX2luaXQodm9pZClcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYy01ODE4LVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmM6NTgxOTpcdGlmICghZWZpX2VuYWJsZWQoRUZJX0NPTkZJR19UQUJMRVMpKVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtNTgyMC1cdFx0cmV0dXJuIDA7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEwOjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5NTk1CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogNTA4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSW1wYWN0IG9mIHRoZSBQYXRjaCBvbiBHSUN2MyBJVFMgRnVuY3Rpb25hbGl0eSoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGhpdHMgYSBudW1iZXIgb2YgZnVuY3Rpb25zOiBgYWxsb2NfbHBpX3JhbmdlYCwgYGZyZWVfbHBpX3JhbmdlYCwgYGl0c19scGlfaW5pdGAsIGBpdHNfbHBpX2FsbG9jYCwgYGl0c19scGlfZnJlZWAsIGFuZCBgaXRzX2NyZWF0ZV9kZXZpY2VgLiBUaGV5JiMzOTtyZSBhbGwgY29tcGlsZWQgdW5jb25kaXRpb25hbGx5IHdoZW4gYGlycS1naWMtdjMtaXRzLm9gIGlzIGJ1aWx0LiBUaGF0IG1lYW5zIHRoYXQgZW5hYmxpbmcgYFBDSWAgaXMgc3VmZmljaWVudCB0byBlbmFibGUgYEFSTV9HSUNfVjNfSVRTYCBvbiBBUk02NCwgYXQgbGVhc3QgaW4gdGhpcyByZWdhcmQuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgbGV0JiMzOTtzIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGRlcGVuZGVuY2llcy4gQWxyaWdodCwgYEhJU0lMSUNPTl9JUlFfTUJJR0VOYCBhbHNvIGJyaW5ncyBpdCBpbiwgYnV0IGBQQ0lgIGlzIHRoZSBzdGFuZGFyZCByb3V0ZSwgc28gdGhhdOKAmXMgdGhlIHR5cGljYWwgZW5hYmxlbWVudCBwYXRoLgoKTm93LCBJIHdhbnQgdG8gc2VlIGhvdyB0aGVzZSBmdW5jdGlvbnMgaW50ZXJhY3QuIEkmIzM5O2xsIGZvY3VzIG9uIHN5bWJvbHMgdGhhdCB3aWxsIG5vdCBiZSBpbmxpbmVkLiBJIHdhcyBvcmlnaW5hbGx5IHRoaW5raW5nIG9mIGBpdHNfbXNpX3ByZXBhcmVgIGFuZCBgaXRzX21zaV90ZWFyZG93bmAuIFllcCwgdGhleSYjMzk7cmUgc3RhdGljLCBidXQgdGhhdCBtaWdodCBtZWFuIHRoZXkgY2FuIGJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyLiBCdXQgd2FpdCAtIHRoZXkmIzM5O3JlIHBhc3NlZCBhcyBmdW5jdGlvbiBwb2ludGVycyBpbiBgaXRzX21zaV9kb21haW5fb3BzYC4KCmBgYGMKc3RhdGljIHN0cnVjdCBtc2lfZG9tYWluX29wcyBpdHNfbXNpX2RvbWFpbl9vcHMgPSB7CgkubXNpX3ByZXBhcmUJPSBpdHNfbXNpX3ByZXBhcmUsCgkubXNpX3RlYXJkb3duCT0gaXRzX21zaV90ZWFyZG93biwKfTsKYGBgCgpTaW5jZSB3ZSYjMzk7cmUgdGFraW5nIHRoZWlyIGFkZHJlc3NlcywgdGhlIGNvbXBpbGVyIHdvbiYjMzk7dCBmdWxseSBpbmxpbmUgdGhlbTsgYXQgbGVhc3QgYSBzdGFuZGFsb25lIHZlcnNpb24gd2lsbCBiZSBnZW5lcmF0ZWQuIFRoYXQgbWFrZXMgdGhlbSBnb29kIGNhbmRpZGF0ZXMgZm9yIGRlZXBlciBhbmFseXNpcyBhcyB0aGV5JiMzOTtsbCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMuCgpOZXh0LCBJIG5lZWQgdG8gbG9vayBhdCBgaXRzX2NyZWF0ZV9kZXZpY2VgLiBJdCYjMzk7cyBjYWxsZWQgYnkgYGl0c19tc2lfcHJlcGFyZWAgYW5kIGBpdHNfaW5pdF92cGVfZG9tYWluYC4gSXQgaXMgc3RhdGljIGJ1dCBpdHMgYWRkcmVzcyBpc24mIzM5O3QgdGFrZW4uIFNvIGl0IG1pZ2h0IGJlIGlubGluZWQuIGBpdHNfbXNpX3ByZXBhcmVgIGlzIHRoZSBiZXR0ZXIgZnVuY3Rpb24gdG8gZm9jdXMgb24uCgpGaW5hbGx5LCBJIG5lZWQgdG8gY2hlY2sgYGl0c19scGlfYWxsb2NgIGFuZCBgaXRzX2xwaV9mcmVlYC4gVGhleSBhcmUgY2FsbGVkIGJ5IGBpdHNfYWxsb2NfZGV2aWNlX2lycWAgYW5kIGBpdHNfbXNpX3RlYXJkb3duYC4gT2theSwgc28gYGl0c19hbGxvY19kZXZpY2VfaXJxYCBpcyBjYWxsZWQgYnkgYGl0c19pcnFfZG9tYWluX2FsbG9jYC4gTGV0JiMzOTtzIGNoZWNrIGBpdHNfaXJxX2RvbWFpbl9hbGxvY2AgbmV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTA6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXRzX2lycV9kb21haW5fYWxsb2MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYz0zNjg2PXN0YXRpYyBpbnQgaXRzX2lycV9naWNfZG9tYWluX2FsbG9jKHN0cnVjdCBpcnFfZG9tYWluICpkb21haW4sXG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtMzcwOS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jOjM3MTA6c3RhdGljIGludCBpdHNfaXJxX2RvbWFpbl9hbGxvYyhzdHJ1Y3QgaXJxX2RvbWFpbiAqZG9tYWluLCB1bnNpZ25lZCBpbnQgdmlycSxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jLTM3MTEtXHRcdFx0XHR1bnNpZ25lZCBpbnQgbnJfaXJxcywgdm9pZCAqYXJncylcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYz0zODAwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgaXJxX2RvbWFpbl9vcHMgaXRzX2RvbWFpbl9vcHMgPSB7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYy0zODAxLVx0LnNlbGVjdFx0XHRcdD0gbXNpX2xpYl9pcnFfZG9tYWluX3NlbGVjdCxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jOjM4MDI6XHQuYWxsb2NcdFx0XHQ9IGl0c19pcnFfZG9tYWluX2FsbG9jLFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtMzgwMy1cdC5mcmVlXHRcdFx0PSBpdHNfaXJxX2RvbWFpbl9mcmVlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxMDoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTAyMQoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDE0NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDdXJyZW50IFRoaW5raW5nOiBJZGVudGlmeWluZyBLZXkgTVNJL0xQSSBJbnRlcmFjdGlvbiBQb2ludHMqKgoKT2theSwgbGV0JiMzOTtzIG5haWwgZG93biB0aGVzZSBjb3JlIGZ1bmN0aW9ucy4gSSYjMzk7bSBmb2N1c2luZyBvbiB0aGUgaW50ZXJhY3Rpb24gcG9pbnRzIGJldHdlZW4gTVNJIGFuZCBMUEkgYWxsb2NhdGlvbiBhbmQgZnJlZWluZy4gSSBzZWUgdGhhdCBgaXRzX2lycV9kb21haW5fYWxsb2NgIGFuZCBgaXRzX2lycV9kb21haW5fZnJlZWAgYXJlIGRlZmluaXRlbHkgcmVsZXZhbnQgaGVyZS4gVGhleSYjMzk7cmUgYm90aCBwYXJ0IG9mIHRoZSBgaXJxX2RvbWFpbl9vcHNgIHN0cnVjdHVyZSwgd2hpY2ggbWFrZXMgdGhlbSBjZW50cmFsIHRvIHRoZSBpbnRlcnJ1cHQgZG9tYWluIG1hbmFnZW1lbnQuIEkmIzM5O3ZlIG5vdGVkIGRvd24gdGhlc2UgZm9jdXMgc3ltYm9scyBmb3IgYSBjbGVhciBvdmVydmlldzoKCiogICBgaXRzX21zaV9wcmVwYXJlYAoqICAgYGl0c19tc2lfdGVhcmRvd25gCiogICBgaXRzX2lycV9kb21haW5fYWxsb2NgCiogICBgaXRzX2lycV9kb21haW5fZnJlZWAKClRoZSByb2xlIG9mIHRoZXNlIGZ1bmN0aW9ucyBiZWNvbWVzIGNsZWFyOiB0aGV5IGFjdCBhcyBlbnRyeSBwb2ludHMgZm9yIE1TSSBhbGxvY2F0aW9uIGFuZCBmcmVlaW5nLCB3aGljaCBpcyBwcmVjaXNlbHkgd2hlcmUgdGhlIG1vZGlmaWVkIExQSSBhbGxvY2F0aW9uIGFuZCBmcmVlaW5nIGxvZ2ljIGlzIHRyaWdnZXJlZC4gTm93LCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgb2YgdGhlIGZsb3csIEkgd2FudCB0byB2ZXJpZnkgdGhhdCBgaXRzX2lycV9kb21haW5fZnJlZWAgZGlyZWN0bHkgY2FsbHMgYGl0c19scGlfZnJlZWAuIFRoYXQgY29ubmVjdGlvbiBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBjb21wbGV0ZSBwcm9jZXNzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxMDoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzc3MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszNzcwOlx0e1xuMzc3MTpcdFx0c3RydWN0IGl0c19kZXZpY2UgKml0c19kZXYgPSBpcnFfZGF0YV9nZXRfaXJxX2NoaXBfZGF0YShkKTtcbjM3NzI6XHRcdHUzMiBldmVudCA9IGl0c19nZXRfZXZlbnRfaWQoZCk7XG4zNzczOlx0XG4zNzc0Olx0XHRpdHNfZGVjX2xwaV9jb3VudChkLCBpdHNfZGV2LVx1MDAzZWV2ZW50X21hcC5jb2xfbWFwW2V2ZW50XSk7XG4zNzc1Olx0XHQvKiBTdG9wIHRoZSBkZWxpdmVyeSBvZiBpbnRlcnJ1cHRzICovXG4zNzc2Olx0XHRpdHNfc2VuZF9kaXNjYXJkKGl0c19kZXYsIGV2ZW50KTtcbjM3Nzc6XHR9XG4zNzc4Olx0XG4zNzc5Olx0c3RhdGljIHZvaWQgaXRzX2lycV9kb21haW5fZnJlZShzdHJ1Y3QgaXJxX2RvbWFpbiAqZG9tYWluLCB1bnNpZ25lZCBpbnQgdmlycSxcbjM3ODA6XHRcdFx0XHRcdHVuc2lnbmVkIGludCBucl9pcnFzKVxuMzc4MTpcdHtcbjM3ODI6XHRcdHN0cnVjdCBpcnFfZGF0YSAqZCA9IGlycV9kb21haW5fZ2V0X2lycV9kYXRhKGRvbWFpbiwgdmlycSk7XG4zNzgzOlx0XHRzdHJ1Y3QgaXRzX2RldmljZSAqaXRzX2RldiA9IGlycV9kYXRhX2dldF9pcnFfY2hpcF9kYXRhKGQpO1xuMzc4NDpcdFx0aW50IGk7XG4zNzg1Olx0XG4zNzg2Olx0XHRiaXRtYXBfcmVsZWFzZV9yZWdpb24oaXRzX2Rldi1cdTAwM2VldmVudF9tYXAubHBpX21hcCxcbjM3ODc6XHRcdFx0XHQgICAgICBpdHNfZ2V0X2V2ZW50X2lkKGlycV9kb21haW5fZ2V0X2lycV9kYXRhKGRvbWFpbiwgdmlycSkpLFxuMzc4ODpcdFx0XHRcdCAgICAgIGdldF9jb3VudF9vcmRlcihucl9pcnFzKSk7XG4zNzg5Olx0XG4zNzkwOlx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBucl9pcnFzOyBpJiM0MzsmIzQzOykge1xuMzc5MTpcdFx0XHRzdHJ1Y3QgaXJxX2RhdGEgKmRhdGEgPSBpcnFfZG9tYWluX2dldF9pcnFfZGF0YShkb21haW4sXG4zNzkyOlx0XHRcdFx0XHRcdFx0XHRcdHZpcnEgJiM0MzsgaSk7XG4zNzkzOlx0XHRcdC8qIE51a2UgdGhlIGVudHJ5IGluIHRoZSBkb21haW4gKi9cbjM3OTQ6XHRcdFx0aXJxX2RvbWFpbl9yZXNldF9pcnFfZGF0YShkYXRhKTtcbjM3OTU6XHRcdH1cbjM3OTY6XHRcbjM3OTc6XHRcdGlycV9kb21haW5fZnJlZV9pcnFzX3BhcmVudChkb21haW4sIHZpcnEsIG5yX2lycXMpO1xuMzc5ODpcdH1cbjM3OTk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTA6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE5OTcKCQkJCQkJCW91dHB1dDogMTI1CgkJCQkJCQl0aG91Z2h0czogNjc2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgR0lDdjMgSVRTIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFpbWVkIGF0IG9wdGltaXppbmcgdGhlIEdJQ3YzIElUUyBkcml2ZXIsIHNwZWNpZmljYWxseSBkZWFsaW5nIHdpdGggTFBJIHJhbmdlIGFsbG9jYXRpb24gYW5kIGZyZWVpbmcuIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGlzIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIGFuZCBwb3RlbnRpYWwgaW1wYWN0LgoKRmlyc3QsIEkgc2VlIHRoYXQgYGl0c19pcnFfZG9tYWluX2ZyZWVgIG9ubHkgcmVsZWFzZXMgdGhlIGJpdG1hcCByZWdpb24sIG5vdCB0aGUgYWN0dWFsIExQSSByYW5nZXMuIFRoZSBhY3R1YWwgZnJlZWluZyBpcyBoYW5kbGVkIGluIGBpdHNfbXNpX3RlYXJkb3duYCBhbmQgdGhlIGVycm9yIHBhdGggb2YgYGl0c19jcmVhdGVfZGV2aWNlYCwgc3BlY2lmaWNhbGx5IGNhbGxpbmcgYGl0c19scGlfZnJlZWAuIFRoaXMgaW1tZWRpYXRlbHkgcG9pbnRzIG1lIHRvd2FyZHMgZm9jdXNpbmcgb24gYGl0c19tc2lfcHJlcGFyZWAgYW5kIGBpdHNfbXNpX3RlYXJkb3duYCBhcyB0aGUga2V5IHN5bWJvbHMgdG8gZXhhbWluZSwgYXMgdGhhdCYjMzk7cyB3aGVyZSB0aGUgYWxsb2NhdGlvbiBhbmQgZGVhbGxvY2F0aW9uIHBhdGhzIGFyZSBkaXJlY3RseSB0b3VjaGVkLgoKTm93LCBsZXQmIzM5O3MgYnJpZWZseSBsb29rIGF0IGBpdHNfbHBpX2luaXRgLiBJdCBzZWVtcyBsaWtlIGEgZ29vZCBwbGFjZSB0byBiZWdpbiBhcyB0aGF0IHdpbGwgaGFuZGxlIHRoZSBpbml0aWFsIExQSSByYW5nZSwgYnV0IHNpbmNlIGl0JiMzOTtzIG9ubHkgY2FsbGVkIG9uY2UgZHVyaW5nIGJvb3QsIGl0IGlzIG5vdCBhcyBpbXBvcnRhbnQgZm9yIHRoaXMgcGF0Y2guCgpTbywgZm9jdXNpbmcgb24gdGhlIGNoYW5nZXMsIGl0JiMzOTtzIGFib3V0IGNhY2hpbmcgdGhlIExQSSByYW5nZSBvYmplY3QgdG8gYXZvaWQgbWVtb3J5IGFsbG9jYXRpb24gd2hlbiBmcmVlaW5nIGFuZCBmaXhpbmcgYSBtZW1vcnkgbGVhayBpbiB0aGUgZGV2aWNlIGNyZWF0aW9uIGVycm9yIHBhdGguIFRoZXNlIGNoYW5nZXMgZGlyZWN0bHkgaW1wYWN0IHRoZSBNU0kgYWxsb2NhdGlvbiBhbmQgdGVhcmRvd24gcGF0aHMuIEFuZCBnaXZlbiB0aGUgY29udGV4dCwgdGhlc2UgcGF0aHMgYXJlIGNlcnRhaW5seSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSB3aXRoIEdJQ3YzIElUUyBlbXVsYXRpb24sIHdoaWNoIGltbWVkaWF0ZWx5IHJhaXNlcyBhIGZsYWcuCgpUaGUgY29uZmlnIHJlcXVpcmVkIGlzIGBQQ0lgLCB3aGljaCB3aWxsIGVuYWJsZSBgQVJNX0dJQ19WM19JVFNgIG9uIEFSTTY0LCBhbmQgaXMgdGhlIG9ubHkgY29uZmlnIHRoYXQgbmVlZHMgdG8gYmUgbGlzdGVkLiBTaW5jZSBgQVJNX0dJQ19WM19JVFNgIGlzIHNlbGVjdGVkIGJ5IGBBUk02NGAgaWYgYFBDSWAsIGl0IGxvb2tzIGxpa2UgYSBjbGVhbiBkZXBlbmRlbmN5LgoKTGV0JiMzOTtzIGRvIGEgcXVpY2sgZmluYWwgcmV2aWV3IG9mIHRoZSBjb2RlIGNoYW5nZXMuIEkmIzM5O20gc2VlaW5nIGBhbGxvY19scGlfcmFuZ2VgIGJlaW5nIGNhbGxlZCBmcm9tIGBpdHNfbHBpX2FsbG9jYCwgYW5kIHRoZW4gYGl0c19jcmVhdGVfZGV2aWNlYCB3aGljaCBpcyB0aGVuIGNhbGxlZCBmcm9tIGBpdHNfbXNpX3ByZXBhcmVgLiBPbiB0aGUgb3RoZXIgc2lkZSwgYGZyZWVfbHBpX3JhbmdlYCBpcyBiZWluZyBjYWxsZWQgZnJvbSBgaXRzX2xwaV9mcmVlYCwgd2hpY2ggaXMgY2FsbGVkIGZyb20gYGl0c19tc2lfdGVhcmRvd25gIGFuZCB0aGUgZXJyb3IgcGF0aCBpbiBgaXRzX2NyZWF0ZV9kZXZpY2VgLiBUaGlzIGNvbmZpcm1zIHRoZSBhbGxvY2F0aW9uL2RlYWxsb2NhdGlvbiBwYXRocyBJIGlkZW50aWZpZWQgYXJlIHRoZSBjb3JyZWN0IGZvY3VzLgoKQmFzZWQgb24gdGhpcyBhbmFseXNpcywgdGhlIGNoYW5nZXMgYXBwZWFyIGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZS4gVGhpcyBpcyBhIGNsZWFyIGNhc2UgZm9yICYjMzQ7V29ydGhGdXp6aW5nJiMzNDsuIFRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxMDoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UENJJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXRzX21zaV9wcmVwYXJlJiMzNDssCiAgICAmIzM0O2l0c19tc2lfdGVhcmRvd24mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEdJQ3YzIElUUyBkcml2ZXIgdG8gY2FjaGUgYW4gTFBJIHJhbmdlIG9iamVjdCB0byBhdm9pZCBtZW1vcnkgYWxsb2NhdGlvbiBpbiB0aGUgZnJlZSBwYXRoLCBhbmQgZml4ZXMgYSBtZW1vcnkgbGVhayBpbiB0aGUgZGV2aWNlIGNyZWF0aW9uIGVycm9yIHBhdGguIFRoZXNlIGNoYW5nZXMgYWZmZWN0IHRoZSBNU0kgYWxsb2NhdGlvbiBhbmQgdGVhcmRvd24gcGF0aHMsIHdoaWNoIGFyZSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChlLmcuLCBRRU1VIHdpdGggR0lDdjMgSVRTIGVtdWxhdGlvbikuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BDSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2l0c19tc2lfcHJlcGFyZSYjMzQ7LAogICAgJiMzNDtpdHNfbXNpX3RlYXJkb3duJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBHSUN2MyBJVFMgZHJpdmVyIHRvIGNhY2hlIGFuIExQSSByYW5nZSBvYmplY3QgdG8gYXZvaWQgbWVtb3J5IGFsbG9jYXRpb24gaW4gdGhlIGZyZWUgcGF0aCwgYW5kIGZpeGVzIGEgbWVtb3J5IGxlYWsgaW4gdGhlIGRldmljZSBjcmVhdGlvbiBlcnJvciBwYXRoLiBUaGVzZSBjaGFuZ2VzIGFmZmVjdCB0aGUgTVNJIGFsbG9jYXRpb24gYW5kIHRlYXJkb3duIHBhdGhzLCB3aGljaCBhcmUgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoZS5nLiwgUUVNVSB3aXRoIEdJQ3YzIElUUyBlbXVsYXRpb24pLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjlUMTA6MTg6MTYuNDc2MzQ2NTU5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzc2NTczOTE4NzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUENJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaXRzX21zaV9wcmVwYXJlXCIsXG4gICAgXCJpdHNfbXNpX3RlYXJkb3duXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEdJQ3YzIElUUyBkcml2ZXIgdG8gY2FjaGUgYW4gTFBJIHJhbmdlIG9iamVjdCB0byBhdm9pZCBtZW1vcnkgYWxsb2NhdGlvbiBpbiB0aGUgZnJlZSBwYXRoLCBhbmQgZml4ZXMgYSBtZW1vcnkgbGVhayBpbiB0aGUgZGV2aWNlIGNyZWF0aW9uIGVycm9yIHBhdGguIFRoZXNlIGNoYW5nZXMgYWZmZWN0IHRoZSBNU0kgYWxsb2NhdGlvbiBhbmQgdGVhcmRvd24gcGF0aHMsIHdoaWNoIGFyZSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChlLmcuLCBRRU1VIHdpdGggR0lDdjMgSVRTIGVtdWxhdGlvbikuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDEwOjE4OjE2LjQ3NjM2OTc5OVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDkzNzg2MTM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMDFhMTZmMTczNjlmMWZhYjMxMWMxMmFhNTUwMjlhM2EwYzMyNzMxOVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEp1bCAyOSAxMDoxODoxNSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYyBiL2RyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jXFxuaW5kZXggNmY1ODExYWFlNTljMS4uNjM0YjBlMTU0OTNjZCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuY1xcbisrKyBiL2RyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jXFxuQEAgLTIwOTcsNiArMjA5Nyw3IEBAIHN0YXRpYyBzdHJ1Y3QgaXJxX2NoaXAgaXRzX2lycV9jaGlwID0ge1xcbiBcXG4gc3RhdGljIERFRklORV9NVVRFWChscGlfcmFuZ2VfbG9jayk7XFxuIHN0YXRpYyBMSVNUX0hFQUQobHBpX3JhbmdlX2xpc3QpO1xcbitzdGF0aWMgTElTVF9IRUFEKGxwaV9mcmVlX2NhY2hlKTtcXG4gXFxuIHN0cnVjdCBscGlfcmFuZ2Uge1xcbiBcXHRzdHJ1Y3QgbGlzdF9oZWFkXFx0ZW50cnk7XFxuQEAgLTIxMjAsOCArMjEyMSwxMyBAQCBzdGF0aWMgc3RydWN0IGxwaV9yYW5nZSAqbWtfbHBpX3JhbmdlKHUzMiBiYXNlLCB1MzIgc3BhbilcXG4gc3RhdGljIGludCBhbGxvY19scGlfcmFuZ2UodTMyIG5yX2xwaXMsIHUzMiAqYmFzZSlcXG4ge1xcbiBcXHRzdHJ1Y3QgbHBpX3JhbmdlICpyYW5nZSwgKnRtcDtcXG4rXFx0c3RydWN0IGxwaV9yYW5nZSAqbmV3X25vZGU7XFxuIFxcdGludCBlcnIgPSAtRU5PU1BDO1xcbiBcXG4rXFx0bmV3X25vZGUgPSBta19scGlfcmFuZ2UoMCwgMCk7XFxuK1xcdGlmICghbmV3X25vZGUpXFxuK1xcdFxcdHJldHVybiAtRU5PTUVNO1xcbitcXG4gXFx0bXV0ZXhfbG9jayhcXHUwMDI2bHBpX3JhbmdlX2xvY2spO1xcbiBcXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHJhbmdlLCB0bXAsIFxcdTAwMjZscGlfcmFuZ2VfbGlzdCwgZW50cnkpIHtcXG5AQCAtMjE0MCw2ICsyMTQ2LDExIEBAIHN0YXRpYyBpbnQgYWxsb2NfbHBpX3JhbmdlKHUzMiBucl9scGlzLCB1MzIgKmJhc2UpXFxuIFxcdFxcdH1cXG4gXFx0fVxcbiBcXG4rXFx0aWYgKCFlcnIpXFxuK1xcdFxcdGxpc3RfYWRkKFxcdTAwMjZuZXdfbm9kZS1cXHUwMDNlZW50cnksIFxcdTAwMjZscGlfZnJlZV9jYWNoZSk7XFxuK1xcdGVsc2VcXG4rXFx0XFx0a2ZyZWUobmV3X25vZGUpO1xcbitcXG4gXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZscGlfcmFuZ2VfbG9jayk7XFxuIFxcbiBcXHRwcl9kZWJ1ZyhcXFwiSVRTOiBhbGxvYyAldToldVxcXFxuXFxcIiwgKmJhc2UsIG5yX2xwaXMpO1xcbkBAIC0yMTYyLDExICsyMTczLDE4IEBAIHN0YXRpYyBpbnQgZnJlZV9scGlfcmFuZ2UodTMyIGJhc2UsIHUzMiBucl9scGlzKVxcbiB7XFxuIFxcdHN0cnVjdCBscGlfcmFuZ2UgKm5ldywgKm9sZDtcXG4gXFxuLVxcdG5ldyA9IG1rX2xwaV9yYW5nZShiYXNlLCBucl9scGlzKTtcXG4tXFx0aWYgKCFuZXcpXFxuK1xcdG11dGV4X2xvY2soXFx1MDAyNmxwaV9yYW5nZV9sb2NrKTtcXG4rXFxuK1xcdGlmIChXQVJOX09OKGxpc3RfZW1wdHkoXFx1MDAyNmxwaV9mcmVlX2NhY2hlKSkpIHtcXG4rXFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZscGlfcmFuZ2VfbG9jayk7XFxuIFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbitcXHR9XFxuIFxcbi1cXHRtdXRleF9sb2NrKFxcdTAwMjZscGlfcmFuZ2VfbG9jayk7XFxuK1xcdG5ldyA9IGxpc3RfZmlyc3RfZW50cnkoXFx1MDAyNmxwaV9mcmVlX2NhY2hlLCBzdHJ1Y3QgbHBpX3JhbmdlLCBlbnRyeSk7XFxuK1xcdGxpc3RfZGVsKFxcdTAwMjZuZXctXFx1MDAzZWVudHJ5KTtcXG4rXFxuK1xcdG5ldy1cXHUwMDNlYmFzZV9pZCA9IGJhc2U7XFxuK1xcdG5ldy1cXHUwMDNlc3BhbiA9IG5yX2xwaXM7XFxuIFxcbiBcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JldmVyc2Uob2xkLCBcXHUwMDI2bHBpX3JhbmdlX2xpc3QsIGVudHJ5KSB7XFxuIFxcdFxcdGlmIChvbGQtXFx1MDAzZWJhc2VfaWQgXFx1MDAzYyBiYXNlKVxcbkBAIC0yMTk1LDYgKzIyMTMsNyBAQCBzdGF0aWMgaW50IF9faW5pdCBpdHNfbHBpX2luaXQodTMyIGlkX2JpdHMpXFxuIHtcXG4gXFx0dTMyIGxwaXMgPSAoMVVMIFxcdTAwM2NcXHUwMDNjIGlkX2JpdHMpIC0gODE5MjtcXG4gXFx0dTMyIG51bWxwaXM7XFxuK1xcdHN0cnVjdCBscGlfcmFuZ2UgKnJhbmdlO1xcbiBcXHRpbnQgZXJyO1xcbiBcXG4gXFx0bnVtbHBpcyA9IDFVTCBcXHUwMDNjXFx1MDAzYyBHSUNEX1RZUEVSX05VTV9MUElTKGdpY19yZGlzdHMtXFx1MDAzZWdpY2RfdHlwZXIpO1xcbkBAIC0yMjA1LDYgKzIyMjQsMTIgQEAgc3RhdGljIGludCBfX2luaXQgaXRzX2xwaV9pbml0KHUzMiBpZF9iaXRzKVxcbiBcXHRcXHRcXHRscGlzKTtcXG4gXFx0fVxcbiBcXG4rXFx0cmFuZ2UgPSBta19scGlfcmFuZ2UoMCwgMCk7XFxuK1xcdGlmICghcmFuZ2UpXFxuK1xcdFxcdHJldHVybiAtRU5PTUVNO1xcbitcXG4rXFx0bGlzdF9hZGQoXFx1MDAyNnJhbmdlLVxcdTAwM2VlbnRyeSwgXFx1MDAyNmxwaV9mcmVlX2NhY2hlKTtcXG4rXFxuIFxcdC8qXFxuIFxcdCAqIEluaXRpYWxpemluZyB0aGUgYWxsb2NhdG9yIGlzIGp1c3QgdGhlIHNhbWUgYXMgZnJlZWluZyB0aGVcXG4gXFx0ICogZnVsbCByYW5nZSBvZiBMUElzLlxcbkBAIC0yMjM0LDggKzIyNTksMTAgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgKml0c19scGlfYWxsb2MoaW50IG5yX2lycXMsIHUzMiAqYmFzZSwgaW50ICpucl9pZHMpXFxuIFxcdFxcdGdvdG8gb3V0O1xcbiBcXG4gXFx0Yml0bWFwID0gYml0bWFwX3phbGxvYyhucl9pcnFzLCBHRlBfQVRPTUlDKTtcXG4tXFx0aWYgKCFiaXRtYXApXFxuK1xcdGlmICghYml0bWFwKSB7XFxuK1xcdFxcdGZyZWVfbHBpX3JhbmdlKCpiYXNlLCBucl9pcnFzKTtcXG4gXFx0XFx0Z290byBvdXQ7XFxuK1xcdH1cXG4gXFxuIFxcdCpucl9pZHMgPSBucl9pcnFzO1xcbiBcXG5AQCAtMjI0OCw3ICsyMjc1LDcgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgKml0c19scGlfYWxsb2MoaW50IG5yX2lycXMsIHUzMiAqYmFzZSwgaW50ICpucl9pZHMpXFxuIFxcbiBzdGF0aWMgdm9pZCBpdHNfbHBpX2ZyZWUodW5zaWduZWQgbG9uZyAqYml0bWFwLCB1MzIgYmFzZSwgdTMyIG5yX2lkcylcXG4ge1xcbi1cXHRXQVJOX09OKGZyZWVfbHBpX3JhbmdlKGJhc2UsIG5yX2lkcykpO1xcbitcXHRmcmVlX2xwaV9yYW5nZShiYXNlLCBucl9pZHMpO1xcbiBcXHRiaXRtYXBfZnJlZShiaXRtYXApO1xcbiB9XFxuIFxcbkBAIC0zNTEwLDcgKzM1MzcsOCBAQCBzdGF0aWMgc3RydWN0IGl0c19kZXZpY2UgKml0c19jcmVhdGVfZGV2aWNlKHN0cnVjdCBpdHNfbm9kZSAqaXRzLCB1MzIgZGV2X2lkLFxcbiBcXHRpZiAoIWRldiB8fCAhaXR0IHx8ICFjb2xfbWFwIHx8ICghbHBpX21hcCBcXHUwMDI2XFx1MDAyNiBhbGxvY19scGlzKSkge1xcbiBcXHRcXHRrZnJlZShkZXYpO1xcbiBcXHRcXHRpdHRfZnJlZV9wb29sKGl0dCwgc3opO1xcbi1cXHRcXHRiaXRtYXBfZnJlZShscGlfbWFwKTtcXG4rXFx0XFx0aWYgKGxwaV9tYXApXFxuK1xcdFxcdFxcdGl0c19scGlfZnJlZShscGlfbWFwLCBscGlfYmFzZSwgbnJfbHBpcyk7XFxuIFxcdFxcdGtmcmVlKGNvbF9tYXApO1xcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4gXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxMDoxODoxNi45NzA5NzQ4NDhaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo3NzE2Mjc1NDM3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQQ0lcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpdHNfbXNpX3ByZXBhcmVcIixcbiAgICBcIml0c19tc2lfdGVhcmRvd25cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgR0lDdjMgSVRTIGRyaXZlciB0byBjYWNoZSBhbiBMUEkgcmFuZ2Ugb2JqZWN0IHRvIGF2b2lkIG1lbW9yeSBhbGxvY2F0aW9uIGluIHRoZSBmcmVlIHBhdGgsIGFuZCBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIHRoZSBkZXZpY2UgY3JlYXRpb24gZXJyb3IgcGF0aC4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgdGhlIE1TSSBhbGxvY2F0aW9uIGFuZCB0ZWFyZG93biBwYXRocywgd2hpY2ggYXJlIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGUuZy4sIFFFTVUgd2l0aCBHSUN2MyBJVFMgZW11bGF0aW9uKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMDFhMTZmMTczNjlmMWZhYjMxMWMxMmFhNTUwMjlhM2EwYzMyNzMxOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDI5IDEwOjE4OjE1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMgYi9kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuY1xuaW5kZXggNmY1ODExYWFlNTljMS4uNjM0YjBlMTU0OTNjZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jXG4rKysgYi9kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuY1xuQEAgLTIwOTcsNiArMjA5Nyw3IEBAIHN0YXRpYyBzdHJ1Y3QgaXJxX2NoaXAgaXRzX2lycV9jaGlwID0ge1xuIFxuIHN0YXRpYyBERUZJTkVfTVVURVgobHBpX3JhbmdlX2xvY2spO1xuIHN0YXRpYyBMSVNUX0hFQUQobHBpX3JhbmdlX2xpc3QpO1xuK3N0YXRpYyBMSVNUX0hFQUQobHBpX2ZyZWVfY2FjaGUpO1xuIFxuIHN0cnVjdCBscGlfcmFuZ2Uge1xuIFx0c3RydWN0IGxpc3RfaGVhZFx0ZW50cnk7XG5AQCAtMjEyMCw4ICsyMTIxLDEzIEBAIHN0YXRpYyBzdHJ1Y3QgbHBpX3JhbmdlICpta19scGlfcmFuZ2UodTMyIGJhc2UsIHUzMiBzcGFuKVxuIHN0YXRpYyBpbnQgYWxsb2NfbHBpX3JhbmdlKHUzMiBucl9scGlzLCB1MzIgKmJhc2UpXG4ge1xuIFx0c3RydWN0IGxwaV9yYW5nZSAqcmFuZ2UsICp0bXA7XG4rXHRzdHJ1Y3QgbHBpX3JhbmdlICpuZXdfbm9kZTtcbiBcdGludCBlcnIgPSAtRU5PU1BDO1xuIFxuK1x0bmV3X25vZGUgPSBta19scGlfcmFuZ2UoMCwgMCk7XG4rXHRpZiAoIW5ld19ub2RlKVxuK1x0XHRyZXR1cm4gLUVOT01FTTtcbitcbiBcdG11dGV4X2xvY2soXHUwMDI2bHBpX3JhbmdlX2xvY2spO1xuIFxuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHJhbmdlLCB0bXAsIFx1MDAyNmxwaV9yYW5nZV9saXN0LCBlbnRyeSkge1xuQEAgLTIxNDAsNiArMjE0NiwxMSBAQCBzdGF0aWMgaW50IGFsbG9jX2xwaV9yYW5nZSh1MzIgbnJfbHBpcywgdTMyICpiYXNlKVxuIFx0XHR9XG4gXHR9XG4gXG4rXHRpZiAoIWVycilcbitcdFx0bGlzdF9hZGQoXHUwMDI2bmV3X25vZGUtXHUwMDNlZW50cnksIFx1MDAyNmxwaV9mcmVlX2NhY2hlKTtcbitcdGVsc2VcbitcdFx0a2ZyZWUobmV3X25vZGUpO1xuK1xuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmxwaV9yYW5nZV9sb2NrKTtcbiBcbiBcdHByX2RlYnVnKFwiSVRTOiBhbGxvYyAldToldVxcblwiLCAqYmFzZSwgbnJfbHBpcyk7XG5AQCAtMjE2MiwxMSArMjE3MywxOCBAQCBzdGF0aWMgaW50IGZyZWVfbHBpX3JhbmdlKHUzMiBiYXNlLCB1MzIgbnJfbHBpcylcbiB7XG4gXHRzdHJ1Y3QgbHBpX3JhbmdlICpuZXcsICpvbGQ7XG4gXG4tXHRuZXcgPSBta19scGlfcmFuZ2UoYmFzZSwgbnJfbHBpcyk7XG4tXHRpZiAoIW5ldylcbitcdG11dGV4X2xvY2soXHUwMDI2bHBpX3JhbmdlX2xvY2spO1xuK1xuK1x0aWYgKFdBUk5fT04obGlzdF9lbXB0eShcdTAwMjZscGlfZnJlZV9jYWNoZSkpKSB7XG4rXHRcdG11dGV4X3VubG9jayhcdTAwMjZscGlfcmFuZ2VfbG9jayk7XG4gXHRcdHJldHVybiAtRU5PTUVNO1xuK1x0fVxuIFxuLVx0bXV0ZXhfbG9jayhcdTAwMjZscGlfcmFuZ2VfbG9jayk7XG4rXHRuZXcgPSBsaXN0X2ZpcnN0X2VudHJ5KFx1MDAyNmxwaV9mcmVlX2NhY2hlLCBzdHJ1Y3QgbHBpX3JhbmdlLCBlbnRyeSk7XG4rXHRsaXN0X2RlbChcdTAwMjZuZXctXHUwMDNlZW50cnkpO1xuK1xuK1x0bmV3LVx1MDAzZWJhc2VfaWQgPSBiYXNlO1xuK1x0bmV3LVx1MDAzZXNwYW4gPSBucl9scGlzO1xuIFxuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yZXZlcnNlKG9sZCwgXHUwMDI2bHBpX3JhbmdlX2xpc3QsIGVudHJ5KSB7XG4gXHRcdGlmIChvbGQtXHUwMDNlYmFzZV9pZCBcdTAwM2MgYmFzZSlcbkBAIC0yMTk1LDYgKzIyMTMsNyBAQCBzdGF0aWMgaW50IF9faW5pdCBpdHNfbHBpX2luaXQodTMyIGlkX2JpdHMpXG4ge1xuIFx0dTMyIGxwaXMgPSAoMVVMIFx1MDAzY1x1MDAzYyBpZF9iaXRzKSAtIDgxOTI7XG4gXHR1MzIgbnVtbHBpcztcbitcdHN0cnVjdCBscGlfcmFuZ2UgKnJhbmdlO1xuIFx0aW50IGVycjtcbiBcbiBcdG51bWxwaXMgPSAxVUwgXHUwMDNjXHUwMDNjIEdJQ0RfVFlQRVJfTlVNX0xQSVMoZ2ljX3JkaXN0cy1cdTAwM2VnaWNkX3R5cGVyKTtcbkBAIC0yMjA1LDYgKzIyMjQsMTIgQEAgc3RhdGljIGludCBfX2luaXQgaXRzX2xwaV9pbml0KHUzMiBpZF9iaXRzKVxuIFx0XHRcdGxwaXMpO1xuIFx0fVxuIFxuK1x0cmFuZ2UgPSBta19scGlfcmFuZ2UoMCwgMCk7XG4rXHRpZiAoIXJhbmdlKVxuK1x0XHRyZXR1cm4gLUVOT01FTTtcbitcbitcdGxpc3RfYWRkKFx1MDAyNnJhbmdlLVx1MDAzZWVudHJ5LCBcdTAwMjZscGlfZnJlZV9jYWNoZSk7XG4rXG4gXHQvKlxuIFx0ICogSW5pdGlhbGl6aW5nIHRoZSBhbGxvY2F0b3IgaXMganVzdCB0aGUgc2FtZSBhcyBmcmVlaW5nIHRoZVxuIFx0ICogZnVsbCByYW5nZSBvZiBMUElzLlxuQEAgLTIyMzQsOCArMjI1OSwxMCBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyAqaXRzX2xwaV9hbGxvYyhpbnQgbnJfaXJxcywgdTMyICpiYXNlLCBpbnQgKm5yX2lkcylcbiBcdFx0Z290byBvdXQ7XG4gXG4gXHRiaXRtYXAgPSBiaXRtYXBfemFsbG9jKG5yX2lycXMsIEdGUF9BVE9NSUMpO1xuLVx0aWYgKCFiaXRtYXApXG4rXHRpZiAoIWJpdG1hcCkge1xuK1x0XHRmcmVlX2xwaV9yYW5nZSgqYmFzZSwgbnJfaXJxcyk7XG4gXHRcdGdvdG8gb3V0O1xuK1x0fVxuIFxuIFx0Km5yX2lkcyA9IG5yX2lycXM7XG4gXG5AQCAtMjI0OCw3ICsyMjc1LDcgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgKml0c19scGlfYWxsb2MoaW50IG5yX2lycXMsIHUzMiAqYmFzZSwgaW50ICpucl9pZHMpXG4gXG4gc3RhdGljIHZvaWQgaXRzX2xwaV9mcmVlKHVuc2lnbmVkIGxvbmcgKmJpdG1hcCwgdTMyIGJhc2UsIHUzMiBucl9pZHMpXG4ge1xuLVx0V0FSTl9PTihmcmVlX2xwaV9yYW5nZShiYXNlLCBucl9pZHMpKTtcbitcdGZyZWVfbHBpX3JhbmdlKGJhc2UsIG5yX2lkcyk7XG4gXHRiaXRtYXBfZnJlZShiaXRtYXApO1xuIH1cbiBcbkBAIC0zNTEwLDcgKzM1MzcsOCBAQCBzdGF0aWMgc3RydWN0IGl0c19kZXZpY2UgKml0c19jcmVhdGVfZGV2aWNlKHN0cnVjdCBpdHNfbm9kZSAqaXRzLCB1MzIgZGV2X2lkLFxuIFx0aWYgKCFkZXYgfHwgIWl0dCB8fCAhY29sX21hcCB8fCAoIWxwaV9tYXAgXHUwMDI2XHUwMDI2IGFsbG9jX2xwaXMpKSB7XG4gXHRcdGtmcmVlKGRldik7XG4gXHRcdGl0dF9mcmVlX3Bvb2woaXR0LCBzeik7XG4tXHRcdGJpdG1hcF9mcmVlKGxwaV9tYXApO1xuK1x0XHRpZiAobHBpX21hcClcbitcdFx0XHRpdHNfbHBpX2ZyZWUobHBpX21hcCwgbHBpX2Jhc2UsIG5yX2xwaXMpO1xuIFx0XHRrZnJlZShjb2xfbWFwKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXHR9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxMDoxODoxNi45NzA5NzU4NjhaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MTYyODgzODgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEdJQ3YzIElUUyBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmNgLiBTZWVtcyBsaWtlIHRoZXkncmUgbWFraW5nIHNvbWUgY2hhbmdlcyB0byBob3cgTFBJIHJhbmdlcyBhcmUgaGFuZGxlZCBpbiB0aGUgR0lDdjMgSVRTIGRyaXZlci4gU3BlY2lmaWNhbGx5LCB0aGV5J3JlIGludHJvZHVjaW5nIGEgYGxwaV9mcmVlX2NhY2hlYCBsaXN0IHRvIHRyeSBhbmQgb3B0aW1pemUgbWVtb3J5IG1hbmFnZW1lbnQsIGNhY2hpbmcgYGxwaV9yYW5nZWAgb2JqZWN0cyBhbmQgYXZvaWRpbmcgYWxsb2NhdGlvbiBkdXJpbmcgYGZyZWVfbHBpX3JhbmdlYC4gVGhhdCdzIGEgY2xhc3NpYyBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb247IGNhY2hpbmcgaXMgYSBnb29kIG1vdmUgdG8gcmVkdWNlIG92ZXJoZWFkLiBUaGVyZSdzIGFsc28gYSBmaXggZm9yIGEgbWVtb3J5IGxlYWsgaW4gYGl0c19jcmVhdGVfZGV2aWNlYCB3aGVyZSB0aGV5IHdlcmUgdXNpbmcgdGhlIHdyb25nIGZyZWUgZnVuY3Rpb24gZm9yIGBscGlfbWFwYC4gR29vZCBjYXRjaDsgbWVtb3J5IGxlYWtzIGFyZSB0aGUgYmFuZSBvZiBteSBleGlzdGVuY2UuXG5cbk5vdywgdGhlIGltcG9ydGFudCBxdWVzdGlvbiBpczogY2FuIEkgYWN0dWFsbHkgdGVzdCB0aGlzIGluIGEgcmVhc29uYWJsZSBlbnZpcm9ubWVudD8gR0lDdjMgSVRTIGlzIHByaW1hcmlseSBhbiBBUk02NCB0aGluZywgYW5kIHRoZSBwYXRjaCBpcyBpbiB0aGUgZHJpdmVyLiBPZiBjb3Vyc2UsIFFFTVUgaGFzIEdJQ3YzIElUUyBlbXVsYXRpb24uIEkgY2FuIGVhc2lseSBib290IGEgdmlydHVhbGl6ZWQgQVJNNjQgc3lzdGVtIHdpdGggc29tZXRoaW5nIGxpa2UgYHFlbXUtc3lzdGVtLWFhcmNoNjQgLW1hY2hpbmUgdmlydCxnaWMtdmVyc2lvbj0zLGl0cz1vbmAuIFNvLCB5ZXMsIGl0J3MgZGVmaW5pdGVseSB0ZXN0YWJsZSBpbiBhIHN0YW5kYXJkIFFFTVUgc2V0dXAuIFRoYXQncyBhIHJlbGllZi5cblxuTmV4dCB1cCwgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbmZpZyBvcHRpb25zLiBUaGlzIGNvZGUgaXMgcHJvYmFibHkgY29tcGlsZWQgaWYgYENPTkZJR19BUk1fR0lDX1YzX0lUU2AgaXMgZW5hYmxlZC4gVGltZSB0byBnbyBkaWcgdGhyb3VnaCB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgdmVyaWZ5IHRoYXQgaHlwb3RoZXNpcy4gTm8gcG9pbnQgaW4gc3BlbmRpbmcgdGltZSBvbiBpdCBpZiB0aGUgY29uZmlnIGlzbid0IHNldCwgYWx0aG91Z2ggaWYgaXQncyB0aGVyZSwgSSdsbCBiZSBzdXJlIHRvIHZlcmlmeSB0aGUgaW1wbGljYXRpb25zIG9uIGEgc3RhbmRhcmQgYnVpbGQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzMjUsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxMDoxODoyMy4xMzM4NjI1NTFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODQyMjA5MzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXJxLWdpYy12My1pdHMub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2lycWNoaXAvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pcnFjaGlwL01ha2VmaWxlPTM2PW9iai0kKENPTkZJR19BUk1fR0lDX0lUU19QQVJFTlQpXFx0Kz0gaXJxLWdpYy1pdHMtbXNpLXBhcmVudC5vXFxuZHJpdmVycy9pcnFjaGlwL01ha2VmaWxlOjM3Om9iai0kKENPTkZJR19BUk1fR0lDX1YzX0lUUylcXHRcXHQrPSBpcnEtZ2ljLXYzLWl0cy5vIGlycS1naWMtdjQub1xcbmRyaXZlcnMvaXJxY2hpcC9NYWtlZmlsZS0zOC1vYmotJChDT05GSUdfQVJNX0dJQ19WNSlcXHRcXHQrPSBpcnEtZ2ljLXY1Lm8gaXJxLWdpYy12NS1pcnMubyBpcnEtZ2ljLXY1LWl0cy5vIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTA6MTg6MjMuMjE4MDg4NzM5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzYzMDI0MjE5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyBJbnRlcnJ1cHQgQ29udHJvbGxlciBDb25maWd1cmF0aW9uKipcblxuUmlnaHQsIHNvIGBDT05GSUdfQVJNX0dJQ19WM19JVFNgIGlzIHRoZSBrZXkgY29uZmlndXJhdGlvbiBvcHRpb24gd2UncmUgbG9va2luZyBhdCBoZXJlLiBUaGF0J3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBCdXQsIGFzIHdlIGFsbCBrbm93LCBub3RoaW5nIGlzIGV2ZXIgcXVpdGUgdGhhdCBzaW1wbGUgaW4gdGhlc2Ugc3lzdGVtcywgaXMgaXQ/IFdlIGNhbid0IGp1c3QgYXNzdW1lIGl0J3MgdGhlIG9ubHkgcmVsZXZhbnQgY29uZmlndXJhdGlvbi4gU28sIG15IG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGRpdmUgZGVlcGVyLiBJIG5lZWQgdG8gcXVpY2tseSBzY2FuIGFuZCB2ZXJpZnkuIEkgbmVlZCB0byBjaGVjayB0aGUgZW50aXJlIHN5c3RlbSB0byBzZWUgaWYgdGhlcmUgYXJlICphbnkqIG90aGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIGludGVycnVwdCBjb250cm9sbGVycyB0aGF0IG1pZ2h0IGludGVyYWN0IHdpdGgsIG9yIGluZmx1ZW5jZSwgdGhlIGJlaGF2aW9yIG9mIEdJQ3YzIElUUy4gV2UgY2FuJ3QgbWlzcyBhbnl0aGluZyB0aGF0J3MgZ29pbmcgdG8gYWZmZWN0IHRoZSBvdXRjb21lLiBHb3R0YSBtYWtlIHN1cmUgd2UgaGF2ZSB0aGUgZnVsbCBwaWN0dXJlIGJlZm9yZSBtb3ZpbmcgZm9yd2FyZC4gTGV0J3MgbWFrZSBzdXJlIG5vdGhpbmcgaXMgb3Zlcmxvb2tlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDE1OCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDEwOjE4OjI2Ljg0ODMzMzEzM1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTE5NjczOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQVJNX0dJQ19WM19JVFNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9pcnFjaGlwL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pcnFjaGlwL0tjb25maWc9NDM9Y29uZmlnIEFSTV9HSUNfSVRTX1BBUkVOVFxcbi0tXFxuZHJpdmVycy9pcnFjaGlwL0tjb25maWctNDUtXFxuZHJpdmVycy9pcnFjaGlwL0tjb25maWc6NDY6Y29uZmlnIEFSTV9HSUNfVjNfSVRTXFxuZHJpdmVycy9pcnFjaGlwL0tjb25maWctNDctXFx0Ym9vbFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxMDoxODoyNi45MDM1MzUxNjFaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjE1OTI0MjI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcyBhcyBJIGFwcHJvYWNoIHRoZSBjb2RlOlxuXG4qKkFuYWx5emluZyB0aGUgU2VsZWN0aW9uIG9mIGBBUk1fR0lDX1YzX0lUU2AqKlxuXG5BbHJpZ2h0LCBJIG5lZWQgdG8gZmlndXJlIG91dCB3aHkgdGhpcyBjb2RlIHBhdGgsIHNwZWNpZmljYWxseSB0aGUgb25lIHJlbGF0ZWQgdG8gYEFSTV9HSUNfVjNfSVRTYCwgaXMgYmVpbmcgY2hvc2VuLiAgTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB0aGUgY29uZGl0aW9uYWxzIHRoYXQgbGVhZCB0byB0aGlzIHNwZWNpZmljIHNlbGVjdGlvbi4gSSdtIGdvaW5nIHRvIGxvb2sgZm9yIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGhhcmR3YXJlIGNhcGFiaWxpdGllcyB0aGF0IHdvdWxkIHRyaWdnZXIgdGhpcy4gSSdsbCBtZW50YWxseSBtYXAgb3V0IHRoZSBkZXBlbmRlbmNpZXMuIElzIGl0IGEgcHJvY2Vzc29yIGZlYXR1cmUsIGEgcGxhdGZvcm0gY29uZmlndXJhdGlvbiwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IEknbSB0aGlua2luZyBhYm91dCB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSBhbmQgdGhlIHBvdGVudGlhbCBkcml2ZXJzIGluIHBsYXkgaGVyZS4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgc2NhbiBmb3IgcmVsYXRlZCBkZWZpbmVzLCB2YXJpYWJsZXMsIGFuZCBwb3RlbnRpYWwgaW50ZXJhY3Rpb25zIHdpdGggb3RoZXIgaW50ZXJydXB0IGNvbnRyb2xsZXIgaW1wbGVtZW50YXRpb25zLiAgSSBleHBlY3QgdG8gYmUgbG9va2luZyBmb3IgQVJNdjggYXJjaGl0ZWN0dXJlIGZlYXR1cmVzIGFuZCBob3cgdGhleSBhcmUgbGV2ZXJhZ2VkIGluIHRoaXMgY29udGV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDUwMiwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDEwOjE4OjMwLjExOTQ2MTQ1NVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzE1ODg4NDAyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNlbGVjdCBBUk1fR0lDX1YzX0lUU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm0vS2NvbmZpZy5wbGF0Zm9ybXM9NTU9Y29uZmlnIEFSQ0hfVklSVFxcbi0tXFxuYXJjaC9hcm0vS2NvbmZpZy5wbGF0Zm9ybXMtNjEtXFx0c2VsZWN0IEFSTV9HSUNfVjNcXG5hcmNoL2FybS9LY29uZmlnLnBsYXRmb3Jtczo2MjpcXHRzZWxlY3QgQVJNX0dJQ19WM19JVFMgaWYgUENJXFxuYXJjaC9hcm0vS2NvbmZpZy5wbGF0Zm9ybXMtNjMtXFx0c2VsZWN0IEFSTV9QU0NJXFxuLS1cXG5hcmNoL2FybTY0L0tjb25maWc9Mj1jb25maWcgQVJNNjRcXG4tLVxcbmFyY2gvYXJtNjQvS2NvbmZpZy0xMDUtXFx0c2VsZWN0IEFSTV9HSUNfVjNcXG5hcmNoL2FybTY0L0tjb25maWc6MTA2OlxcdHNlbGVjdCBBUk1fR0lDX1YzX0lUUyBpZiBQQ0lcXG5hcmNoL2FybTY0L0tjb25maWctMTA3LVxcdHNlbGVjdCBBUk1fR0lDX1Y1XFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvS2NvbmZpZz0yMTA9Y29uZmlnIEhJU0lMSUNPTl9JUlFfTUJJR0VOXFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvS2NvbmZpZy0yMTItXFx0c2VsZWN0IEFSTV9HSUNfVjNcXG5kcml2ZXJzL2lycWNoaXAvS2NvbmZpZzoyMTM6XFx0c2VsZWN0IEFSTV9HSUNfVjNfSVRTXFxuZHJpdmVycy9pcnFjaGlwL0tjb25maWctMjE0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxMDoxODozMy44MzUzNTY3NTZaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Mzg0ODQ2MzY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgR0lDdjMgSVRTIEltcGxlbWVudGF0aW9uKipcblxuT2theSwgc28gSSBzZWUgdGhhdCBgQVJNX0dJQ19WM19JVFNgIGlzIGJlaW5nIHNlbGVjdGVkIHdoZW4gdGhlIGBBUk02NGAgYXJjaGl0ZWN0dXJlIGlzIGVuYWJsZWQgYW5kIGBQQ0lgIHN1cHBvcnQgaXMgcHJlc2VudC4gVGhhdCBtYWtlcyBzZW5zZSwgYW5kIEknbSBjb25maWRlbnQgaXQncyBhIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbCBjb21wb25lbnQuIE5vdywgbXkgaW1tZWRpYXRlIGdvYWwgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY2hhbmdlcyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2gsIHNvIEkgbmVlZCB0byBmaW5kIHRoZSBjb3JlIGZvY3VzIHN5bWJvbHMuXG5cbkkgc2VlIGl0J3MgdG91Y2hpbmcgcXVpdGUgYSBmZXcgZnVuY3Rpb25zIHdpdGhpbiB0aGUgSVRTIHN1YnN5c3RlbTogYGFsbG9jX2xwaV9yYW5nZWAsIGBmcmVlX2xwaV9yYW5nZWAsIGBpdHNfbHBpX2luaXRgICh3aGljaCBpcyBtYXJrZWQgYXMgYF9faW5pdGApLCBgaXRzX2xwaV9hbGxvY2AsIGBpdHNfbHBpX2ZyZWVgLCBhbmQgYWxzbyBgaXRzX2NyZWF0ZV9kZXZpY2VgLiBJIHdhbnQgdG8gc3RhcnQgYnkgdHJhY2luZyB0aGUgZnVuY3Rpb24gY2FsbHMuIFRoZSBwbGFjZSB0byBzdGFydCB3aXRoIHRoaXMgc2VlbXMgdG8gYmUsIHdoZXJlIGlzIGBpdHNfY3JlYXRlX2RldmljZWAgYmVpbmcgY2FsbGVkPyBUaGF0IGZ1bmN0aW9uIHNlZW1zIGxpa2UgYSBnb29kIGVudHJ5IHBvaW50IHRvIHRyYWNlIHRoZSBvdGhlciBmdW5jdGlvbnMgYmVpbmcgbW9kaWZpZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwMjAsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTA6MTg6MzguMjIwMjA1ODcyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjQ2MTQ2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpdHNfY3JlYXRlX2RldmljZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYz0zNDQ5PXN0YXRpYyBib29sIGl0c19hbGxvY192cGVfdGFibGUodTMyIHZwZV9pZClcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jLTM0OTAtXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmM6MzQ5MTpzdGF0aWMgc3RydWN0IGl0c19kZXZpY2UgKml0c19jcmVhdGVfZGV2aWNlKHN0cnVjdCBpdHNfbm9kZSAqaXRzLCB1MzIgZGV2X2lkLFxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jLTM0OTItXFx0XFx0XFx0XFx0XFx0ICAgIGludCBudmVjcywgYm9vbCBhbGxvY19scGlzKVxcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmM9MzU5OD1zdGF0aWMgaW50IGl0c19tc2lfcHJlcGFyZShzdHJ1Y3QgaXJxX2RvbWFpbiAqZG9tYWluLCBzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYy0zNjQwLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jOjM2NDE6XFx0aXRzX2RldiA9IGl0c19jcmVhdGVfZGV2aWNlKGl0cywgZGV2X2lkLCBudmVjLCB0cnVlKTtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYy0zNjQyLVxcdGlmICghaXRzX2Rldikge1xcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmM9NTE4Mj1zdGF0aWMgaW50IGl0c19pbml0X3ZwZV9kb21haW4odm9pZClcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jLTUyMDItXFx0ZGV2aWQgPSBHRU5NQVNLKGRldmljZV9pZHMoaXRzKSAtIDEsIDApO1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jOjUyMDM6XFx0dnBlX3Byb3h5LmRldiA9IGl0c19jcmVhdGVfZGV2aWNlKGl0cywgZGV2aWQsIGVudHJpZXMsIGZhbHNlKTtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYy01MjA0LVxcdGlmICghdnBlX3Byb3h5LmRldikge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxMDoxODozOC4yNjY2NzcwNTFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM4NzIzMjU0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoZSBwcm92aWRlZCBpbmZvcm1hdGlvbiwgYXMgaWYgdGhlc2Ugd2VyZSBteSBpbnRlcm5hbCB0aG91Z2h0czpcblxuKipEaXNzZWN0aW5nIGBpdHNfbXNpX3ByZXBhcmVgKipcblxuT2theSwgc28gd2UncmUgbG9va2luZyBhdCBgaXRzX21zaV9wcmVwYXJlYC4gVGhlIG5vdGVzIGNsZWFybHkgc3RhdGUgdGhpcyBpcyBhbiBBUEkgZW50cnlwb2ludCBmdW5jdGlvbiwgYW5kIHRoYXQgaXQncyBwYXJ0IG9mIGBtc2lfZG9tYWluX29wc2AuIFRoYXQgaW1tZWRpYXRlbHkgcHV0cyBpdCBpbnRvIGEgcGFydGljdWxhciBjb250ZXh0IOKAkyBpdCdzIGEgY3JpdGljYWwgY29tcG9uZW50LCBhIHB1YmxpYyBpbnRlcmZhY2UsIHdpdGhpbiB0aGUgTVNJIGRvbWFpbiBvcGVyYXRpb25zLiBUaGlzIGxpa2VseSBtZWFucyBpdOKAmXMgcmVzcG9uc2libGUgZm9yIHByZXBhcmluZyBzb21ldGhpbmcgcmVsYXRlZCB0byBNZXNzYWdlIFNpZ25hbGVkIEludGVycnVwdHMgKE1TSXMpLiBMZXQncyBkaWcgaW4gYW5kIGZpZ3VyZSBvdXQgZXhhY3RseSB3aGF0IHByZXBhcmF0aW9uIGlzIGRvbmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgYGl0c19tc2lfcHJlcGFyZWAgZnVuY3Rpb24ncyBwdXJwb3NlLiBJJ20gZ29pbmcgdG8gc3RhcnQgY2hlY2tpbmcgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gaXRzZWxmLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1OTEwLCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTA6MTg6NDEuNjUzOTEyNTcxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDM1MTI5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpdHNfbXNpX3ByZXBhcmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmM9MzU4Mj1zdGF0aWMgaW50IGl0c19hbGxvY19kZXZpY2VfaXJxKHN0cnVjdCBpdHNfZGV2aWNlICpkZXYsIGludCBudmVjcywgaXJxX2h3X251bWJlcl90ICpod2lycSlcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jLTM1OTctXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmM6MzU5ODpzdGF0aWMgaW50IGl0c19tc2lfcHJlcGFyZShzdHJ1Y3QgaXJxX2RvbWFpbiAqZG9tYWluLCBzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtMzU5OS1cXHRcXHRcXHQgICBpbnQgbnZlYywgbXNpX2FsbG9jX2luZm9fdCAqaW5mbylcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jPTM2ODE9c3RhdGljIHN0cnVjdCBtc2lfZG9tYWluX29wcyBpdHNfbXNpX2RvbWFpbl9vcHMgPSB7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmM6MzY4MjpcXHQubXNpX3ByZXBhcmVcXHQ9IGl0c19tc2lfcHJlcGFyZSxcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYy0zNjgzLVxcdC5tc2lfdGVhcmRvd25cXHQ9IGl0c19tc2lfdGVhcmRvd24sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDEwOjE4OjQxLjcwNDI2ODU2OVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjUyNjAzMjg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkZvY3VzaW5nIG9uIE1TSSBhbmQgTWVtb3J5IE1hbmFnZW1lbnQqKlxuXG5Pa2F5LCBgaXRzX21zaV9wcmVwYXJlYCBmZWVscyBsaWtlIHRoZSByaWdodCBwbGFjZSB0byBzdGFydCBkaWdnaW5nIGludG8gdGhpcy4gSXQncyBhIGNsZWFyIHNpZ25hbC4gQnV0IG5vdyBJJ20gdGhpbmtpbmcsIHdoYXQgYWJvdXQgdGhlIGNvbXBsZW1lbnRhcnkgZnVuY3Rpb24sIGBpdHNfbXNpX3RlYXJkb3duYD8gRG9lcyAqdGhhdCogZnVuY3Rpb24gcHJvcGVybHkgY2xlYW4gdXAgYWZ0ZXIgaXRzIHdvcms/IFNwZWNpZmljYWxseSwgZG9lcyBpdCBjYWxsIGBpdHNfbHBpX2ZyZWVgPyBUaGF0J3MgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uIEkgbmVlZCB0byBhbnN3ZXIuIEkgbmVlZCB0byBrbm93IGlmIHdlJ3JlIHByb3Blcmx5IHJlbGVhc2luZyBhbGxvY2F0ZWQgcmVzb3VyY2VzIGFmdGVyIHRoZSBNU0kgc2V0dXAgaXMgY29tcGxldGUuIFRoaXMgaXMgbGlrZWx5IHdoZXJlIGEgcG90ZW50aWFsIG1lbW9yeSBsZWFrIGNvdWxkIG9jY3VyLiBJJ20gZ29pbmcgdG8gdHJhY2sgZG93biB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhhdCB0ZWFyZG93biBmdW5jdGlvbiB0byBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NDcwLCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTA6MTg6NDUuMzU2ODc0NTYzWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTgyNDUwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpdHNfbXNpX3RlYXJkb3duXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jPTM1OTg9c3RhdGljIGludCBpdHNfbXNpX3ByZXBhcmUoc3RydWN0IGlycV9kb21haW4gKmRvbWFpbiwgc3RydWN0IGRldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtMzY1Ni1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYzozNjU3OnN0YXRpYyB2b2lkIGl0c19tc2lfdGVhcmRvd24oc3RydWN0IGlycV9kb21haW4gKmRvbWFpbiwgbXNpX2FsbG9jX2luZm9fdCAqaW5mbylcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYy0zNjU4LXtcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jPTM2ODE9c3RhdGljIHN0cnVjdCBtc2lfZG9tYWluX29wcyBpdHNfbXNpX2RvbWFpbl9vcHMgPSB7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtMzY4Mi1cXHQubXNpX3ByZXBhcmVcXHQ9IGl0c19tc2lfcHJlcGFyZSxcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYzozNjgzOlxcdC5tc2lfdGVhcmRvd25cXHQ9IGl0c19tc2lfdGVhcmRvd24sXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtMzY4NC19O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxMDoxODo0NS40MDI3MDM2NDFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ0OTM3MDQ4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB1bmRlcnN0YW5kaW5nLCBwcmVzZW50ZWQgYXMgYSBwZXJzb25hbCB0aG91Z2h0IHByb2Nlc3MsIGdpdmVuIG15IGV4cGVydGlzZTpcblxuKipEaXNzZWN0aW5nIGBpdHNfbXNpX3RlYXJkb3duYCoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoaXMgYGl0c19tc2lfdGVhcmRvd25gIGZ1bmN0aW9uIG9yIHByb2Nlc3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBmdW5jdGlvbiBhbmQgcHVycG9zZSwgZ2l2ZW4gdGhlIGNvbnRleHQgdGhhdCBpdCdzIGRlc2lnbmVkIHRvIGJlIHRvcm4gZG93bi4gSSdsbCBuZWVkIHRvIGtub3cgd2hhdCBpdOKAmXMgaW50ZW5kZWQgdG8gZG87IHByZXN1bWFibHksIGl0J3Mgc29tZXRoaW5nIGludm9sdmVkIHdpdGggTVNJIChNZXNzYWdlIFNpZ25hbGVkIEludGVycnVwdHMpLCBhbmQgaXRzIHRlYXJkb3duIGltcGxpZXMgYSBjb250cm9sbGVkIGFuZCBwb3RlbnRpYWxseSByZXZlcnNpYmxlIHNodXRkb3duIG9yIGNsZWFudXAgcHJvY2VkdXJlLiBHaXZlbiBteSBleHBlcmllbmNlLCBJJ2xsIGJlIGxvb2tpbmcgZm9yIGNsdWVzIGFib3V0IHJlc291cmNlcyBpdCBtYW5hZ2VzLCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIGhhcmR3YXJlIG9yIG9wZXJhdGluZyBzeXN0ZW0sIGFuZCB0aGUgcG9zc2libGUgaW1wYWN0IG9mIGltcHJvcGVyIHRlYXJkb3duLiBJcyBpdCBoYW5kbGluZyBpbnRlcnJ1cHQgdmVjdG9ycywgbWVtb3J5IHJlZ2lvbnMsIG9yIGRldmljZSBzdGF0ZT8gVGhpcyB3aWxsIGJlIGludGVyZXN0aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MDI3LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTA6MTg6NDguODUyMDc3NDc5WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3OTM4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzNjUwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIzNjUwOlxcdFxcdHByX2RlYnVnKFxcXCJJVFQgJWQgZW50cmllcywgJWQgYml0c1xcXFxuXFxcIiwgbnZlYywgaWxvZzIobnZlYykpO1xcbjM2NTE6XFx0b3V0OlxcbjM2NTI6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZpdHMtXFx1MDAzZWRldl9hbGxvY19sb2NrKTtcXG4zNjUzOlxcdFxcdGluZm8tXFx1MDAzZXNjcmF0Y2hwYWRbMF0ucHRyID0gaXRzX2RldjtcXG4zNjU0OlxcdFxcdHJldHVybiBlcnI7XFxuMzY1NTpcXHR9XFxuMzY1NjpcXHRcXG4zNjU3OlxcdHN0YXRpYyB2b2lkIGl0c19tc2lfdGVhcmRvd24oc3RydWN0IGlycV9kb21haW4gKmRvbWFpbiwgbXNpX2FsbG9jX2luZm9fdCAqaW5mbylcXG4zNjU4OlxcdHtcXG4zNjU5OlxcdFxcdHN0cnVjdCBpdHNfZGV2aWNlICppdHNfZGV2ID0gaW5mby1cXHUwMDNlc2NyYXRjaHBhZFswXS5wdHI7XFxuMzY2MDpcXHRcXG4zNjYxOlxcdFxcdGd1YXJkKG11dGV4KShcXHUwMDI2aXRzX2Rldi1cXHUwMDNlaXRzLVxcdTAwM2VkZXZfYWxsb2NfbG9jayk7XFxuMzY2MjpcXHRcXG4zNjYzOlxcdFxcdC8qIElmIHRoZSBkZXZpY2UgaXMgc2hhcmVkLCBrZWVwIGV2ZXJ5dGhpbmcgYXJvdW5kICovXFxuMzY2NDpcXHRcXHRpZiAoaXRzX2Rldi1cXHUwMDNlc2hhcmVkKVxcbjM2NjU6XFx0XFx0XFx0cmV0dXJuO1xcbjM2NjY6XFx0XFxuMzY2NzpcXHRcXHQvKiBMUElzIHNob3VsZCBoYXZlIGJlZW4gYWxyZWFkeSB1bm1hcHBlZCBhdCB0aGlzIHN0YWdlICovXFxuMzY2ODpcXHRcXHRpZiAoV0FSTl9PTl9PTkNFKCFiaXRtYXBfZW1wdHkoaXRzX2Rldi1cXHUwMDNlZXZlbnRfbWFwLmxwaV9tYXAsXFxuMzY2OTpcXHRcXHRcXHRcXHRcXHQgICAgICAgaXRzX2Rldi1cXHUwMDNlZXZlbnRfbWFwLm5yX2xwaXMpKSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTA6MTg6NDguODUyMzU4Nzc5WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2NjQzNDgxMTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHByZXNlbnRlZCBhcyBpZiBpdCB3ZXJlIG15IG93biBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqRGl2aW5nIERlZXBlciBpbnRvIHRoZSBNU0kgVGVhcmRvd24qKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGRpZyBiYWNrIGludG8gYGl0c19tc2lfdGVhcmRvd25gLiBJJ20gZ29pbmcgdG8gcmV2aXNpdCB0aGF0IGRhdGEgc2V0LCBleHBlY3RpbmcgdG8gZmluZCBzb21lIGNydWNpYWwgaW5zaWdodHMgSSBtYXkgaGF2ZSBtaXNzZWQgZHVyaW5nIHRoZSBpbml0aWFsIHJldmlldy4gSeKAmW0gdGhpbmtpbmcgdGhlcmUgbWlnaHQgYmUgbnVhbmNlcyBidXJpZWQgaW4gdGhlIGNvbXBvbmVudC1sZXZlbCBhbmFseXNpcyB0aGF0IHdhcnJhbnQgYSBzZWNvbmQsIG1vcmUgZm9jdXNlZCBsb29rLiBQZXJoYXBzIGEgZGVlcGVyIGRpdmUgd2lsbCByZXZlYWwgc29tZXRoaW5nIG5vdmVsIGFib3V0IHRoZWlyIHRoZXJtYWwgbWFuYWdlbWVudCBzdHJhdGVneSwgb3IgbWF5YmUgZXZlbiBpZGVudGlmeSBzdWJ0bGUgY29zdC1jdXR0aW5nIG1lYXN1cmVzIHRoYXQgd2VyZSBpbml0aWFsbHkgb2JzY3VyZWQgYnkgdGhlIGJyb2FkZXIgYXJjaGl0ZWN0dXJlLiBJJ20gZXNwZWNpYWxseSBrZWVuIHRvIHNlZSBpZiBhbnkgb2YgdGhlIGFzc3VtcHRpb25zIEkgbWFkZSBlYXJsaWVyIGhvbGQgdXAgdW5kZXIgbW9yZSBzY3J1dGlueSDigJMgc29tZXRpbWVzIGluaXRpYWwgaW50ZXJwcmV0YXRpb25zIGNhbiBiZSB0b28gc2ltcGxpc3RpYy4gSG9wZWZ1bGx5LCB0aGlzIGRlZXBlciBleHBsb3JhdGlvbiB3aWxsIGhlbHAgY2VtZW50IG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHN5c3RlbSdzIGRlc2lnbiBjaG9pY2VzIGFuZCB1bHRpbWF0ZWx5IGluZm9ybSBteSBvd24gd29yay4gTGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc2MjYsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDEwOjE4OjUyLjUxNjcxMTI2M1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNTcyMjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzY3MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzY3MDpcXHRcXHRcXHRyZXR1cm47XFxuMzY3MTpcXHRcXG4zNjcyOlxcdFxcdGl0c19scGlfZnJlZShpdHNfZGV2LVxcdTAwM2VldmVudF9tYXAubHBpX21hcCxcXG4zNjczOlxcdFxcdFxcdCAgICAgaXRzX2Rldi1cXHUwMDNlZXZlbnRfbWFwLmxwaV9iYXNlLFxcbjM2NzQ6XFx0XFx0XFx0ICAgICBpdHNfZGV2LVxcdTAwM2VldmVudF9tYXAubnJfbHBpcyk7XFxuMzY3NTpcXHRcXG4zNjc2OlxcdFxcdC8qIFVubWFwIGRldmljZS9pdHQsIGFuZCBnZXQgcmlkIG9mIHRoZSB0cmFja2luZyAqL1xcbjM2Nzc6XFx0XFx0aXRzX3NlbmRfbWFwZChpdHNfZGV2LCAwKTtcXG4zNjc4OlxcdFxcdGl0c19mcmVlX2RldmljZShpdHNfZGV2KTtcXG4zNjc5OlxcdH1cXG4zNjgwOlxcdFxcbjM2ODE6XFx0c3RhdGljIHN0cnVjdCBtc2lfZG9tYWluX29wcyBpdHNfbXNpX2RvbWFpbl9vcHMgPSB7XFxuMzY4MjpcXHRcXHQubXNpX3ByZXBhcmVcXHQ9IGl0c19tc2lfcHJlcGFyZSxcXG4zNjgzOlxcdFxcdC5tc2lfdGVhcmRvd25cXHQ9IGl0c19tc2lfdGVhcmRvd24sXFxuMzY4NDpcXHR9O1xcbjM2ODU6XFx0XFxuMzY4NjpcXHRzdGF0aWMgaW50IGl0c19pcnFfZ2ljX2RvbWFpbl9hbGxvYyhzdHJ1Y3QgaXJxX2RvbWFpbiAqZG9tYWluLFxcbjM2ODc6XFx0XFx0XFx0XFx0XFx0ICAgIHVuc2lnbmVkIGludCB2aXJxLFxcbjM2ODg6XFx0XFx0XFx0XFx0XFx0ICAgIGlycV9od19udW1iZXJfdCBod2lycSlcXG4zNjg5OlxcdHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTA6MTg6NTIuNTE3MDcyNjgyWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY2MzUxMjU2MDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBHSUN2MyBJVFMgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBgaXRzX21zaV90ZWFyZG93bmAgZG9lcyBpbmRlZWQgY2FsbCBgaXRzX2xwaV9mcmVlYCwgY29uZmlybWluZyBteSBpbml0aWFsIHRob3VnaHQuIFRoYXQgbWVhbnMgYGl0c19tc2lfcHJlcGFyZWAgYW5kIGBpdHNfbXNpX3RlYXJkb3duYCBhcmUgdGhlIGtleSBmdW5jdGlvbnMgdG8gZm9jdXMgb24gZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGNoYW5nZXMuXG5cbkxldCdzIHNlZSBpZiB0aGVyZSBhcmUgb3RoZXIgZW50cnkgcG9pbnRzIG9mIGludGVyZXN0LiBUaGUgcGF0Y2ggbW9kaWZpZXMgYGl0c19scGlfaW5pdGAsIHdoaWNoIGlzLCBvZiBjb3Vyc2UsIGNhbGxlZCBkdXJpbmcgaW5pdGlhbGl6YXRpb24uIEkgc2VlIGBpdHNfY3JlYXRlX2RldmljZWAsIHdoaWNoIGlzIGNhbGxlZCBieSBib3RoIGBpdHNfbXNpX3ByZXBhcmVgIGFuZCBgaXRzX2luaXRfdnBlX2RvbWFpbmAuIEFuZCwgbmF0dXJhbGx5LCBgaXRzX2luaXRfdnBlX2RvbWFpbmAgaXMgYWxzbyBjYWxsZWQgZHVyaW5nIGluaXRpYWxpemF0aW9uLlxuXG5UaGVyZWZvcmUsIHRoZSBjb3JlIGZ1bmN0aW9uYWwgY2hhbmdlcyBhcmUgY2VudGVyZWQgYXJvdW5kIExQSSBhbGxvY2F0aW9uIGFuZCBmcmVlaW5nLCB0cmlnZ2VyZWQgc3BlY2lmaWNhbGx5IGJ5IHRoZSBNU0kgcHJlcGFyZSBhbmQgdGVhcmRvd24gY2FsbHMuIFRvIHJlaXRlcmF0ZSwgYGl0c19tc2lfcHJlcGFyZWAgYW5kIGBpdHNfbXNpX3RlYXJkb3duYCBhcmUgZGVmaW5pdGVseSB0aGUgYmVzdCBzeW1ib2xzIHRvIGNvbmNlbnRyYXRlIG9uLlxuXG5Ob3csIEkgbmVlZCB0byBjaGVjayBpZiBzaW1wbHkgZW5hYmxpbmcgYEFSTV9HSUNfVjNfSVRTYCBpcyBzdWZmaWNpZW50LiBZZXMsIGBBUk1fR0lDX1YzX0lUU2AgaXMgdGhlIGNvbmZpZyBvcHRpb24gZm9yIHRoaXMgZmlsZS4gSG93ZXZlciwgd2FpdCBhIG1pbnV0ZSwgYEFSTV9HSUNfVjNfSVRTYCBpcyBhIGJvb2xlYW4gdmFsdWUgd2l0aG91dCBhIHVzZXItdmlzaWJsZSBwcm9tcHQgaW4gdGhlIGBkcml2ZXJzL2lycWNoaXAvS2NvbmZpZ2AgZmlsZS4gSXQncyBzZWxlY3RlZCBpZiBib3RoIGBBUk02NGAgYW5kIGBQQ0lgIGFyZSBlbmFibGVkLiBTbywgcmVhbGlzdGljYWxseSwgSSBzaG91bGQgcHJvYmFibHkgZW5hYmxlIGJvdGggYFBDSWAgYW5kIGBBUk02NGAsIGFsdGhvdWdoIGFyY2hpdGVjdHVyZSBjb25maWdzIGFyZSB1c3VhbGx5IGltcGxpZWQgYnkgdGhlIHRhcmdldC4gSGFuZyBvbiwgcGVyaGFwcyB0aGUgZnV6emVyIHdpbGwgYmUgc21hcnQgZW5vdWdoIHRvIGZpZ3VyZSBvdXQgaG93IHRvIGVuYWJsZSBpdCBieSBlbmFibGluZyBQQ0kgZXZlbiBpZiBJIGp1c3Qgc3BlY2lmeSBgQVJNX0dJQ19WM19JVFNgLiBBaCwgbm8sIGBBUk1fR0lDX1YzX0lUU2AgaXNuJ3QgZGlyZWN0bHkgdXNlci1zZWxlY3RhYmxlLiBJIHNob3VsZCBjaGVjayBpZiBJIGNhbiBlbmFibGUgaXQgZGlyZWN0bHkgYW55d2F5LCBhbmQgaWYgbm90LCBsaXN0IGBQQ0lgIGFzIHdlbGwuIFdhaXQgYSBzZWNvbmQsIHRoZSBjb25maWcncyBzZWxlY3Rpb24gY3JpdGVyaWEgYXJlIGNsZWFyIG5vdy4gYEFSTV9HSUNfVjNfSVRTYCBpcyBzZWxlY3RlZCBieSBgQVJNNjRgIG9ubHkgaWYgYFBDSWAgaXMgc2VsZWN0ZWQuIFRoZXJlZm9yZSwgaXQncyBgUENJYCB0aGF0J3MgdGhlIHVzZXItdmlzaWJsZSBjb25maWcgb3B0aW9uIHRoYXQgKmVuYWJsZXMqIGl0LiBUaW1lIHRvIGNoZWNrIGBQQ0lgIGluIGBhcmNoL2FybTY0L0tjb25maWdgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MjI2LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDM4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTA6MTg6NTkuMTUyMjAwOTk1WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODE4MzgyNjE2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBQQ0lcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgODIxIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5hcmNoL21pcHMvS2NvbmZpZz0xMjUxPWNvbmZpZyBJUlFfR1Q2NDFYWFxcbi0tXFxuYXJjaC9taXBzL0tjb25maWctMTI1My1cXG5hcmNoL21pcHMvS2NvbmZpZzoxMjU0OmNvbmZpZyBQQ0lfR1Q2NFhYWF9QQ0kwXFxuYXJjaC9taXBzL0tjb25maWctMTI1NS1cXHRib29sXFxuYXJjaC9taXBzL0tjb25maWctMTI1Ni1cXG5hcmNoL21pcHMvS2NvbmZpZzoxMjU3OmNvbmZpZyBQQ0lfWFRBTEtfQlJJREdFXFxuYXJjaC9taXBzL0tjb25maWctMTI1OC1cXHRib29sXFxuLS1cXG5hcmNoL21pcHMvS2NvbmZpZz0zMDE4PW1lbnUgXFxcIkJ1cyBvcHRpb25zIChQQ0ksIFBDTUNJQSwgRUlTQSwgSVNBLCBUQylcXFwiXFxuYXJjaC9taXBzL0tjb25maWctMzAxOS1cXG5hcmNoL21pcHMvS2NvbmZpZzozMDIwOmNvbmZpZyBQQ0lfRFJJVkVSU19HRU5FUklDXFxuYXJjaC9taXBzL0tjb25maWctMzAyMS1cXHRzZWxlY3QgUENJX0RPTUFJTlNfR0VORVJJQyBpZiBQQ0lcXG4tLVxcbmFyY2gvbWlwcy9LY29uZmlnLTMwMjMtXFxuYXJjaC9taXBzL0tjb25maWc6MzAyNDpjb25maWcgUENJX0RSSVZFUlNfTEVHQUNZXFxuYXJjaC9taXBzL0tjb25maWctMzAyNS1cXHRkZWZfYm9vbCAhUENJX0RSSVZFUlNfR0VORVJJQ1xcbi0tXFxuYXJjaC9taXBzL2F0aDI1L0tjb25maWc9Nz1jb25maWcgU09DX0FSMjMxNVxcbi0tXFxuYXJjaC9taXBzL2F0aDI1L0tjb25maWctMTEtXFxuYXJjaC9taXBzL2F0aDI1L0tjb25maWc6MTI6Y29uZmlnIFBDSV9BUjIzMTVcXG5hcmNoL21pcHMvYXRoMjUvS2NvbmZpZy0xMy1cXHRib29sIFxcXCJBdGhlcm9zIEFSMjMxNSBQQ0kgY29udHJvbGxlciBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC9taXBzL2F0aDc5L0tjb25maWc9MjQ9Y29uZmlnIFNPQ19RQ0E5NTVYXFxuLS1cXG5hcmNoL21pcHMvYXRoNzkvS2NvbmZpZy0yOC1cXG5hcmNoL21pcHMvYXRoNzkvS2NvbmZpZzoyOTpjb25maWcgUENJX0FSNzI0WFxcbmFyY2gvbWlwcy9hdGg3OS9LY29uZmlnLTMwLVxcdGRlZl9ib29sIG5cXG4tLVxcbmFyY2gvbWlwcy9sYW50aXEvS2NvbmZpZz00OT1lbmRjaG9pY2VcXG5hcmNoL21pcHMvbGFudGlxL0tjb25maWctNTAtXFxuYXJjaC9taXBzL2xhbnRpcS9LY29uZmlnOjUxOmNvbmZpZyBQQ0lfTEFOVElRXFxuYXJjaC9taXBzL2xhbnRpcS9LY29uZmlnLTUyLVxcdGJvb2wgXFxcIlBDSSBTdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC9taXBzL3R4eDkvS2NvbmZpZz01Nj1jb25maWcgUElDTUdfUENJX0JBQ0tQTEFORV9ERUZBVUxUXFxuLS1cXG5hcmNoL21pcHMvdHh4OS9LY29uZmlnLTYwLVxcbmFyY2gvbWlwcy90eHg5L0tjb25maWc6NjE6Y29uZmlnIFBDSV9UWDQ5MjdcXG5hcmNoL21pcHMvdHh4OS9LY29uZmlnLTYyLVxcdGJvb2xcXG4tLVxcbmFyY2gvczM5MC9LY29uZmlnPTc0Nz1pZiBQQ0lcXG5hcmNoL3MzOTAvS2NvbmZpZy03NDgtXFxuYXJjaC9zMzkwL0tjb25maWc6NzQ5OmNvbmZpZyBQQ0lfTlJfRlVOQ1RJT05TXFxuYXJjaC9zMzkwL0tjb25maWctNzUwLVxcdGludCBcXFwiTWF4aW11bSBudW1iZXIgb2YgUENJIGZ1bmN0aW9ucyAoMS00MDk2KVxcXCJcXG4tLVxcbmFyY2gvc3BhcmMvS2NvbmZpZz0zODg9Y29uZmlnIFNVTl9MRE9NU1xcbi0tXFxuYXJjaC9zcGFyYy9LY29uZmlnLTM5NC1cXG5hcmNoL3NwYXJjL0tjb25maWc6Mzk1OmNvbmZpZyBQQ0lDX1BDSVxcbmFyY2gvc3BhcmMvS2NvbmZpZy0zOTYtXFx0Ym9vbFxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZz0yODI2PWNob2ljZVxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZy0yODQ0LVxcbmFyY2gveDg2L0tjb25maWc6Mjg0NTpjb25maWcgUENJX0dPQklPU1xcbmFyY2gveDg2L0tjb25maWctMjg0Ni1cXHRib29sIFxcXCJCSU9TXFxcIlxcbmFyY2gveDg2L0tjb25maWctMjg0Ny1cXG5hcmNoL3g4Ni9LY29uZmlnOjI4NDg6Y29uZmlnIFBDSV9HT01NQ09ORklHXFxuYXJjaC94ODYvS2NvbmZpZy0yODQ5LVxcdGJvb2wgXFxcIk1NQ29uZmlnXFxcIlxcbmFyY2gveDg2L0tjb25maWctMjg1MC1cXG5hcmNoL3g4Ni9LY29uZmlnOjI4NTE6Y29uZmlnIFBDSV9HT0RJUkVDVFxcbmFyY2gveDg2L0tjb25maWctMjg1Mi1cXHRib29sIFxcXCJEaXJlY3RcXFwiXFxuYXJjaC94ODYvS2NvbmZpZy0yODUzLVxcbmFyY2gveDg2L0tjb25maWc6Mjg1NDpjb25maWcgUENJX0dPT0xQQ1xcbmFyY2gveDg2L0tjb25maWctMjg1NS1cXHRib29sIFxcXCJPTFBDIFhPLTFcXFwiXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnLTI4NTctXFxuYXJjaC94ODYvS2NvbmZpZzoyODU4OmNvbmZpZyBQQ0lfR09BTllcXG5hcmNoL3g4Ni9LY29uZmlnLTI4NTktXFx0Ym9vbCBcXFwiQW55XFxcIlxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZz0yODYxPWVuZGNob2ljZVxcbmFyY2gveDg2L0tjb25maWctMjg2Mi1cXG5hcmNoL3g4Ni9LY29uZmlnOjI4NjM6Y29uZmlnIFBDSV9CSU9TXFxuYXJjaC94ODYvS2NvbmZpZy0yODY0LVxcdGRlZl9ib29sIHlcXG4tLVxcbmFyY2gveDg2L0tjb25maWctMjg2Ny0jIHg4Ni02NCBkb2Vzbid0IHN1cHBvcnQgUENJIEJJT1MgYWNjZXNzIGZyb20gbG9uZyBtb2RlIHNvIGFsd2F5cyBnbyBkaXJlY3QuXFxuYXJjaC94ODYvS2NvbmZpZzoyODY4OmNvbmZpZyBQQ0lfRElSRUNUXFxuYXJjaC94ODYvS2NvbmZpZy0yODY5LVxcdGRlZl9ib29sIHlcXG4tLVxcbmFyY2gveDg2L0tjb25maWctMjg3MS1cXG5hcmNoL3g4Ni9LY29uZmlnOjI4NzI6Y29uZmlnIFBDSV9NTUNPTkZJR1xcbmFyY2gveDg2L0tjb25maWc6Mjg3MzpcXHRib29sIFxcXCJTdXBwb3J0IG1tY29uZmlnIFBDSSBjb25maWcgc3BhY2UgYWNjZXNzXFxcIiBpZiBYODZfNjRcXG5hcmNoL3g4Ni9LY29uZmlnLTI4NzQtXFx0ZGVmYXVsdCB5XFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnLTI4OTAtXFxuYXJjaC94ODYvS2NvbmZpZzoyODkxOmNvbmZpZyBQQ0lfT0xQQ1xcbmFyY2gveDg2L0tjb25maWctMjg5Mi1cXHRkZWZfYm9vbCB5XFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnLTI4OTQtXFxuYXJjaC94ODYvS2NvbmZpZzoyODk1OmNvbmZpZyBQQ0lfWEVOXFxuYXJjaC94ODYvS2NvbmZpZy0yODk2LVxcdGRlZl9ib29sIHlcXG4tLVxcbmFyY2gveDg2L0tjb25maWc9Mjg5OT1jb25maWcgTU1DT05GX0ZBTTEwSFxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZy0yOTAyLVxcbmFyY2gveDg2L0tjb25maWc6MjkwMzpjb25maWcgUENJX0NOQjIwTEVfUVVJUktcXG5hcmNoL3g4Ni9LY29uZmlnLTI5MDQtXFx0Ym9vbCBcXFwiUmVhZCBQQ0kgaG9zdCBicmlkZ2Ugd2luZG93cyBmcm9tIHRoZSBDTkIyMExFIGNoaXBzZXRcXFwiIGlmIEVYUEVSVFxcbi0tXFxuZHJpdmVycy9taXNjL0tjb25maWc9NDYyPWNvbmZpZyBEV19YREFUQV9QQ0lFXFxuLS1cXG5kcml2ZXJzL21pc2MvS2NvbmZpZy00NzEtXFxuZHJpdmVycy9taXNjL0tjb25maWc6NDcyOmNvbmZpZyBQQ0lfRU5EUE9JTlRfVEVTVFxcbmRyaXZlcnMvbWlzYy9LY29uZmlnLTQ3My1cXHRkZXBlbmRzIG9uIFBDSVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3NqYTEwMDAvcGVha19wY2kuYz0zNj1zdHJ1Y3QgcGVha19wY2lfY2hhbiB7XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vc2phMTAwMC9wZWFrX3BjaS5jLTUyLVxcbmRyaXZlcnMvbmV0L2Nhbi9zamExMDAwL3BlYWtfcGNpLmM6NTM6I2RlZmluZSBQRUFLX1BDSV9DRkdfU0laRVxcdDB4MTAwMFxcdC8qIFNpemUgb2YgdGhlIGNvbmZpZyBQQ0kgYmFyICovXFxuZHJpdmVycy9uZXQvY2FuL3NqYTEwMDAvcGVha19wY2kuYy01NC0jZGVmaW5lIFBFQUtfUENJX0NIQU5fU0laRVxcdDB4MDQwMFxcdC8qIFNpemUgdXNlZCBieSB0aGUgY2hhbm5lbCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2FuL0tjb25maWc9OTg9c291cmNlIFxcXCJkcml2ZXJzL25ldC93YW4vZnJhbWVyL0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvd2FuL0tjb25maWctOTktXFxuZHJpdmVycy9uZXQvd2FuL0tjb25maWc6MTAwOmNvbmZpZyBQQ0kyMDBTWU5cXG5kcml2ZXJzL25ldC93YW4vS2NvbmZpZy0xMDEtXFx0dHJpc3RhdGUgXFxcIkdvcmFtbyBQQ0kyMDBTWU4gc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvcGFyaXNjL0tjb25maWc9NTk9Y29uZmlnIEdTQ19ESU5PXFxuLS1cXG5kcml2ZXJzL3BhcmlzYy9LY29uZmlnLTY5LVxcbmRyaXZlcnMvcGFyaXNjL0tjb25maWc6NzA6Y29uZmlnIFBDSV9MQkFcXG5kcml2ZXJzL3BhcmlzYy9LY29uZmlnLTcxLVxcdGJvb2wgXFxcIkxCQS9FbHJveSBQQ0kgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvcGNpL0tjb25maWc9MTg9Y29uZmlnIEdFTkVSSUNfUENJX0lPTUFQXFxuLS1cXG5kcml2ZXJzL3BjaS9LY29uZmlnLTIwLVxcbmRyaXZlcnMvcGNpL0tjb25maWc6MjE6bWVudWNvbmZpZyBQQ0lcXG5kcml2ZXJzL3BjaS9LY29uZmlnLTIyLVxcdGJvb2wgXFxcIlBDSSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9wY2kvS2NvbmZpZz0zMD1pZiBQQ0lcXG5kcml2ZXJzL3BjaS9LY29uZmlnLTMxLVxcbmRyaXZlcnMvcGNpL0tjb25maWc6MzI6Y29uZmlnIFBDSV9ET01BSU5TXFxuZHJpdmVycy9wY2kvS2NvbmZpZy0zMy1cXHRib29sXFxuZHJpdmVycy9wY2kvS2NvbmZpZy0zNC1cXG5kcml2ZXJzL3BjaS9LY29uZmlnOjM1OmNvbmZpZyBQQ0lfRE9NQUlOU19HRU5FUklDXFxuZHJpdmVycy9wY2kvS2NvbmZpZy0zNi1cXHRib29sXFxuLS1cXG5kcml2ZXJzL3BjaS9LY29uZmlnLTM4LVxcbmRyaXZlcnMvcGNpL0tjb25maWc6Mzk6Y29uZmlnIFBDSV9TWVNDQUxMXFxuZHJpdmVycy9wY2kvS2NvbmZpZy00MC1cXHRib29sXFxuLS1cXG5kcml2ZXJzL3BjaS9LY29uZmlnPTQyPXNvdXJjZSBcXFwiZHJpdmVycy9wY2kvcGNpZS9LY29uZmlnXFxcIlxcbmRyaXZlcnMvcGNpL0tjb25maWctNDMtXFxuZHJpdmVycy9wY2kvS2NvbmZpZzo0NDpjb25maWcgUENJX01TSVxcbmRyaXZlcnMvcGNpL0tjb25maWctNDUtXFx0Ym9vbCBcXFwiTWVzc2FnZSBTaWduYWxlZCBJbnRlcnJ1cHRzIChNU0kgYW5kIE1TSS1YKVxcXCJcXG4tLVxcbmRyaXZlcnMvcGNpL0tjb25maWctNTgtXFxuZHJpdmVycy9wY2kvS2NvbmZpZzo1OTpjb25maWcgUENJX01TSV9BUkNIX0ZBTExCQUNLU1xcbmRyaXZlcnMvcGNpL0tjb25maWctNjAtXFx0Ym9vbFxcbmRyaXZlcnMvcGNpL0tjb25maWctNjEtXFxuZHJpdmVycy9wY2kvS2NvbmZpZzo2Mjpjb25maWcgUENJX1FVSVJLU1xcbmRyaXZlcnMvcGNpL0tjb25maWctNjMtXFx0ZGVmYXVsdCB5XFxuLS1cXG5kcml2ZXJzL3BjaS9LY29uZmlnLTY5LVxcbmRyaXZlcnMvcGNpL0tjb25maWc6NzA6Y29uZmlnIFBDSV9ERUJVR1xcbmRyaXZlcnMvcGNpL0tjb25maWctNzEtXFx0Ym9vbCBcXFwiUENJIERlYnVnZ2luZ1xcXCJcXG4tLVxcbmRyaXZlcnMvcGNpL0tjb25maWctNzktXFxuZHJpdmVycy9wY2kvS2NvbmZpZzo4MDpjb25maWcgUENJX1JFQUxMT0NfRU5BQkxFX0FVVE9cXG5kcml2ZXJzL3BjaS9LY29uZmlnLTgxLVxcdGJvb2wgXFxcIkVuYWJsZSBQQ0kgcmVzb3VyY2UgcmUtYWxsb2NhdGlvbiBkZXRlY3Rpb25cXFwiXFxuLS1cXG5kcml2ZXJzL3BjaS9LY29uZmlnLTkxLVxcbmRyaXZlcnMvcGNpL0tjb25maWc6OTI6Y29uZmlnIFBDSV9TVFVCXFxuZHJpdmVycy9wY2kvS2NvbmZpZy05My1cXHR0cmlzdGF0ZSBcXFwiUENJIFN0dWIgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9wY2kvS2NvbmZpZy05OS1cXG5kcml2ZXJzL3BjaS9LY29uZmlnOjEwMDpjb25maWcgUENJX1BGX1NUVUJcXG5kcml2ZXJzL3BjaS9LY29uZmlnLTEwMS1cXHR0cmlzdGF0ZSBcXFwiUENJIFBGIFN0dWIgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9wY2kvS2NvbmZpZz0xMTE9Y29uZmlnIFhFTl9QQ0lERVZfRlJPTlRFTkRcXG4tLVxcbmRyaXZlcnMvcGNpL0tjb25maWctMTIwLVxcbmRyaXZlcnMvcGNpL0tjb25maWc6MTIxOmNvbmZpZyBQQ0lfQVRTXFxuZHJpdmVycy9wY2kvS2NvbmZpZy0xMjItXFx0Ym9vbFxcbmRyaXZlcnMvcGNpL0tjb25maWctMTIzLVxcbmRyaXZlcnMvcGNpL0tjb25maWc6MTI0OmNvbmZpZyBQQ0lfSURFXFxuZHJpdmVycy9wY2kvS2NvbmZpZy0xMjUtXFx0Ym9vbFxcbmRyaXZlcnMvcGNpL0tjb25maWctMTI2LVxcbmRyaXZlcnMvcGNpL0tjb25maWc6MTI3OmNvbmZpZyBQQ0lfVFNNXFxuZHJpdmVycy9wY2kvS2NvbmZpZy0xMjgtXFx0Ym9vbCBcXFwiUENJIFRTTTogRGV2aWNlIHNlY3VyaXR5IHByb3RvY29sIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL3BjaS9LY29uZmlnLTE0MS1cXG5kcml2ZXJzL3BjaS9LY29uZmlnOjE0Mjpjb25maWcgUENJX0RPRVxcbmRyaXZlcnMvcGNpL0tjb25maWctMTQzLVxcdGJvb2wgXFxcIkVuYWJsZSBQQ0kgRGF0YSBPYmplY3QgRXhjaGFuZ2UgKERPRSkgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvcGNpL0tjb25maWctMTQ3LVxcbmRyaXZlcnMvcGNpL0tjb25maWc6MTQ4OmNvbmZpZyBQQ0lfRUNBTVxcbmRyaXZlcnMvcGNpL0tjb25maWctMTQ5LVxcdGJvb2xcXG5kcml2ZXJzL3BjaS9LY29uZmlnLTE1MC1cXG5kcml2ZXJzL3BjaS9LY29uZmlnOjE1MTpjb25maWcgUENJX0xPQ0tMRVNTX0NPTkZJR1xcbmRyaXZlcnMvcGNpL0tjb25maWctMTUyLVxcdGJvb2xcXG5kcml2ZXJzL3BjaS9LY29uZmlnLTE1My1cXG5kcml2ZXJzL3BjaS9LY29uZmlnOjE1NDpjb25maWcgUENJX0JSSURHRV9FTVVMXFxuZHJpdmVycy9wY2kvS2NvbmZpZy0xNTUtXFx0Ym9vbFxcbmRyaXZlcnMvcGNpL0tjb25maWctMTU2LVxcbmRyaXZlcnMvcGNpL0tjb25maWc6MTU3OmNvbmZpZyBQQ0lfSU9WXFxuZHJpdmVycy9wY2kvS2NvbmZpZy0xNTgtXFx0Ym9vbCBcXFwiUENJIElPViBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9wY2kvS2NvbmZpZy0xNjYtXFxuZHJpdmVycy9wY2kvS2NvbmZpZzoxNjc6Y29uZmlnIFBDSV9OUEVNXFxuZHJpdmVycy9wY2kvS2NvbmZpZy0xNjgtXFx0Ym9vbCBcXFwiTmF0aXZlIFBDSWUgRW5jbG9zdXJlIE1hbmFnZW1lbnRcXFwiXFxuLS1cXG5kcml2ZXJzL3BjaS9LY29uZmlnLTE3NS1cXG5kcml2ZXJzL3BjaS9LY29uZmlnOjE3Njpjb25maWcgUENJX1BSSVxcbmRyaXZlcnMvcGNpL0tjb25maWctMTc3LVxcdGJvb2wgXFxcIlBDSSBQUkkgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvcGNpL0tjb25maWctMTg0LVxcbmRyaXZlcnMvcGNpL0tjb25maWc6MTg1OmNvbmZpZyBQQ0lfUEFTSURcXG5kcml2ZXJzL3BjaS9LY29uZmlnLTE4Ni1cXHRib29sIFxcXCJQQ0kgUEFTSUQgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvcGNpL0tjb25maWctMTk2LVxcbmRyaXZlcnMvcGNpL0tjb25maWc6MTk3OmNvbmZpZyBQQ0lFX1RQSFxcbmRyaXZlcnMvcGNpL0tjb25maWctMTk4LVxcdGJvb2wgXFxcIlRMUCBQcm9jZXNzaW5nIEhpbnRzXFxcIlxcbi0tXFxuZHJpdmVycy9wY2kvS2NvbmZpZy0yMDUtXFxuZHJpdmVycy9wY2kvS2NvbmZpZzoyMDY6Y29uZmlnIFBDSV9QMlBETUFcXG5kcml2ZXJzL3BjaS9LY29uZmlnLTIwNy1cXHRib29sIFxcXCJQQ0kgcGVlci10by1wZWVyIHRyYW5zZmVyIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL3BjaS9LY29uZmlnLTIyOC1cXG5kcml2ZXJzL3BjaS9LY29uZmlnOjIyOTpjb25maWcgUENJX0xBQkVMXFxuZHJpdmVycy9wY2kvS2NvbmZpZy0yMzAtXFx0ZGVmX2Jvb2wgeSBpZiAoRE1JIHx8IEFDUEkpXFxuLS1cXG5kcml2ZXJzL3BjaS9LY29uZmlnLTIzMi1cXG5kcml2ZXJzL3BjaS9LY29uZmlnOjIzMzpjb25maWcgUENJX0hZUEVSVlxcbmRyaXZlcnMvcGNpL0tjb25maWctMjM0LVxcdHRyaXN0YXRlIFxcXCJIeXBlci1WIFBDSSBGcm9udGVuZFxcXCJcXG4tLVxcbmRyaXZlcnMvcGNpL0tjb25maWctMjQxLVxcbmRyaXZlcnMvcGNpL0tjb25maWc6MjQyOmNvbmZpZyBQQ0lfRFlOQU1JQ19PRl9OT0RFU1xcbmRyaXZlcnMvcGNpL0tjb25maWctMjQzLVxcdGJvb2wgXFxcIkNyZWF0ZSBEZXZpY2UgdHJlZSBub2RlcyBmb3IgUENJIGRldmljZXNcXFwiXFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWc9Mz1tZW51IFxcXCJQQ0kgY29udHJvbGxlciBkcml2ZXJzXFxcIlxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTUtXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnOjY6Y29uZmlnIFBDSV9IT1NUX0NPTU1PTlxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy03LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctOS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWc6MTA6Y29uZmlnIFBDSV9BQVJEVkFSS1xcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0xMS1cXHR0cmlzdGF0ZSBcXFwiQWFyZHZhcmsgUENJZSBjb250cm9sbGVyXFxcIlxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTIxLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZzoyMjpjb25maWcgUENJRV9BTFRFUkFcXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMjMtXFx0dHJpc3RhdGUgXFxcIkFsdGVyYSBQQ0llIGNvbnRyb2xsZXJcXFwiXFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMjgtXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnOjI5OmNvbmZpZyBQQ0lFX0FMVEVSQV9NU0lcXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMzAtXFx0dHJpc3RhdGUgXFxcIkFsdGVyYSBQQ0llIE1TSSBmZWF0dXJlXFxcIlxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTM3LVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZzozODpjb25maWcgUENJRV9BUFBMRV9NU0lfRE9PUkJFTExfQUREUlxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0zOS1cXHRoZXhcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy00Mi1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWc6NDM6Y29uZmlnIFBDSUVfQVBQTEVcXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctNDQtXFx0dHJpc3RhdGUgXFxcIkFwcGxlIFBDSWUgY29udHJvbGxlclxcXCJcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy01Ni1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWc6NTc6Y29uZmlnIFBDSV9WRVJTQVRJTEVcXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctNTgtXFx0Ym9vbCBcXFwiQVJNIFZlcnNhdGlsZSBQQiBQQ0kgY29udHJvbGxlclxcXCJcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy02MC1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWc6NjE6Y29uZmlnIFBDSUVfQVNQRUVEXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTYyLVxcdGJvb2wgXFxcIkFTUEVFRCBQQ0llIGNvbnRyb2xsZXJcXFwiXFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctNzYtXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnOjc3OmNvbmZpZyBQQ0lFX0JSQ01TVEJcXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctNzgtXFx0dHJpc3RhdGUgXFxcIkJyb2FkY29tIEJyY21zdGIgUENJZSBjb250cm9sbGVyXFxcIlxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTg4LVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZzo4OTpjb25maWcgUENJRV9JUFJPQ1xcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy05MC1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTk1LVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZzo5Njpjb25maWcgUENJRV9JUFJPQ19QTEFURk9STVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy05Ny1cXHR0cmlzdGF0ZSBcXFwiQnJvYWRjb20gaVByb2MgUENJZSBwbGF0Zm9ybSBidXMgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTEwNS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWc6MTA2OmNvbmZpZyBQQ0lFX0lQUk9DX0JDTUFcXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMTA3LVxcdHRyaXN0YXRlIFxcXCJCcm9hZGNvbSBpUHJvYyBCQ01BIFBDSWUgY29udHJvbGxlclxcXCJcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0xMTUtXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnOjExNjpjb25maWcgUENJRV9JUFJPQ19NU0lcXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMTE3LVxcdGJvb2wgXFxcIkJyb2FkY29tIGlQcm9jIFBDSWUgTVNJIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMTI1LVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZzoxMjY6Y29uZmlnIFBDSV9IT1NUX1RIVU5ERVJfUEVNXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTEyNy1cXHRib29sIFxcXCJDYXZpdW0gVGh1bmRlciBQQ0llIGNvbnRyb2xsZXIgdG8gb2ZmLWNoaXAgZGV2aWNlc1xcXCJcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0xMzMtXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnOjEzNDpjb25maWcgUENJX0hPU1RfVEhVTkRFUl9FQ0FNXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTEzNS1cXHRib29sIFxcXCJDYXZpdW0gVGh1bmRlciBFQ0FNIGNvbnRyb2xsZXIgdG8gb24tY2hpcCBkZXZpY2VzIG9uIHBhc3MtMS54IHNpbGljb25cXFwiXFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMTQxLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZzoxNDI6Y29uZmlnIFBDSV9GVFBDSTEwMFxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0xNDMtXFx0Ym9vbCBcXFwiRmFyYWRheSBUZWNobm9sb2d5IEZUUENJMTAwIFBDSSBjb250cm9sbGVyXFxcIlxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTE0Ni1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWc6MTQ3OmNvbmZpZyBQQ0lfSE9TVF9HRU5FUklDXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTE0OC1cXHR0cmlzdGF0ZSBcXFwiR2VuZXJpYyBQQ0kgaG9zdCBjb250cm9sbGVyXFxcIlxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTE1NS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWc6MTU2OmNvbmZpZyBQQ0lFX0hJU0lfRVJSXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTE1Ny1cXHRkZXBlbmRzIG9uIEFDUElfQVBFSV9HSEVTIFxcdTAwMjZcXHUwMDI2IChBUk02NCB8fCBDT01QSUxFX1RFU1QpXFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMTYyLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZzoxNjM6Y29uZmlnIFBDSV9JWFA0WFhcXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMTY0LVxcdGJvb2wgXFxcIkludGVsIElYUDR4eCBQQ0kgY29udHJvbGxlclxcXCJcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZz0xNzI9Y29uZmlnIFZNRFxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTE4Ny1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWc6MTg4OmNvbmZpZyBQQ0lfTE9PTkdTT05cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMTg5LVxcdGJvb2wgXFxcIkxPT05HU09OIFBDSWUgY29udHJvbGxlclxcXCJcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0xOTctXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnOjE5ODpjb25maWcgUENJX01WRUJVXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTE5OS1cXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBFQlUgUENJZSBjb250cm9sbGVyXFxcIlxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTIwOS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWc6MjEwOmNvbmZpZyBQQ0lFX01FRElBVEVLXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTIxMS1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgUENJZSBjb250cm9sbGVyXFxcIlxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTIxOS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWc6MjIwOmNvbmZpZyBQQ0lFX01FRElBVEVLX0dFTjNcXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMjIxLVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBHZW4zIFBDSWUgY29udHJvbGxlclxcXCJcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0yMzQtXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnOjIzNTpjb25maWcgUENJRV9NVDc2MjFcXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMjM2LVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc2MjEgUENJZSBjb250cm9sbGVyXFxcIlxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTI0Mi1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWc6MjQzOmNvbmZpZyBQQ0lfSFlQRVJWX0lOVEVSRkFDRVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0yNDQtXFx0dHJpc3RhdGUgXFxcIk1pY3Jvc29mdCBIeXBlci1WIFBDSSBJbnRlcmZhY2VcXFwiXFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMjUwLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZzoyNTE6Y29uZmlnIFBDSV9URUdSQVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0yNTItXFx0dHJpc3RhdGUgXFxcIk5WSURJQSBUZWdyYSBQQ0llIGNvbnRyb2xsZXJcXFwiXFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMjU5LVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZzoyNjA6Y29uZmlnIFBDSUVfUkNBUl9IT1NUXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTI2MS1cXHRib29sIFxcXCJSZW5lc2FzIFItQ2FyIFBDSWUgY29udHJvbGxlciAoaG9zdCBtb2RlKVxcXCJcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0yNjktXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnOjI3MDpjb25maWcgUENJRV9SQ0FSX0VQXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTI3MS1cXHRib29sIFxcXCJSZW5lc2FzIFItQ2FyIFBDSWUgY29udHJvbGxlciAoZW5kcG9pbnQgbW9kZSlcXFwiXFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMjc3LVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZzoyNzg6Y29uZmlnIFBDSV9SQ0FSX0dFTjJcXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMjc5LVxcdGJvb2wgXFxcIlJlbmVzYXMgUi1DYXIgR2VuMiBJbnRlcm5hbCBQQ0kgY29udHJvbGxlclxcXCJcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0yODUtXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnOjI4Njpjb25maWcgUENJRV9SRU5FU0FTX1JaRzNTX0hPU1RcXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMjg3LVxcdGJvb2wgXFxcIlJlbmVzYXMgUlovRzNTIFBDSWUgaG9zdCBjb250cm9sbGVyXFxcIlxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTI5NC1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWc6Mjk1OmNvbmZpZyBQQ0lFX1JPQ0tDSElQXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTI5Ni1cXHRib29sXFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMjk4LVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZzoyOTk6Y29uZmlnIFBDSUVfUk9DS0NISVBfSE9TVFxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0zMDAtXFx0dHJpc3RhdGUgXFxcIlJvY2tjaGlwIFBDSWUgY29udHJvbGxlciAoaG9zdCBtb2RlKVxcXCJcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0zMTAtXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnOjMxMTpjb25maWcgUENJRV9ST0NLQ0hJUF9FUFxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0zMTItXFx0Ym9vbCBcXFwiUm9ja2NoaXAgUENJZSBjb250cm9sbGVyIChlbmRwb2ludCBtb2RlKVxcXCJcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0zMjItXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnOjMyMzpjb25maWcgUENJX1YzX1NFTUlcXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMzI0LVxcdGJvb2wgXFxcIlYzIFNlbWljb25kdWN0b3IgUENJIGNvbnRyb2xsZXJcXFwiXFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMzI4LVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZzozMjk6Y29uZmlnIFBDSV9YR0VORVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0zMzAtXFx0Ym9vbCBcXFwiWC1HZW5lIFBDSWUgY29udHJvbGxlclxcXCJcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0zMzctXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnOjMzODpjb25maWcgUENJX1hHRU5FX01TSVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0zMzktXFx0Ym9vbCBcXFwiWC1HZW5lIHYxIFBDSWUgTVNJIGZlYXR1cmVcXFwiXFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMzQ3LVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZzozNDg6Y29uZmlnIFBDSUVfWElMSU5YXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTM0OS1cXHRib29sIFxcXCJYaWxpbnggQVhJIFBDSWUgY29udHJvbGxlclxcXCJcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0zNTYtXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnOjM1Nzpjb25maWcgUENJRV9YSUxJTlhfRE1BX1BMXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTM1OC1cXHRib29sIFxcXCJYaWxpbnggRE1BIFBMIFBDSWUgaG9zdCBicmlkZ2Ugc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0zNjgtXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnOjM2OTpjb25maWcgUENJRV9YSUxJTlhfTldMXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTM3MC1cXHRib29sIFxcXCJYaWxpbnggTldMIFBDSWUgY29udHJvbGxlclxcXCJcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0zNzktXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnOjM4MDpjb25maWcgUENJRV9YSUxJTlhfQ1BNXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTM4MS1cXHRib29sIFxcXCJYaWxpbnggVmVyc2FsIENQTSBQQ0kgY29udHJvbGxlclxcXCJcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvY2FkZW5jZS9LY29uZmlnPTM9bWVudSBcXFwiQ2FkZW5jZS1iYXNlZCBQQ0llIGNvbnRyb2xsZXJzXFxcIlxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9jYWRlbmNlL0tjb25maWctNS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2NhZGVuY2UvS2NvbmZpZzo2OmNvbmZpZyBQQ0lFX0NBREVOQ0VcXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2NhZGVuY2UvS2NvbmZpZy03LVxcdHRyaXN0YXRlXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9jYWRlbmNlL0tjb25maWctOC1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2NhZGVuY2UvS2NvbmZpZzo5OmNvbmZpZyBQQ0lFX0NBREVOQ0VfSE9TVFxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvY2FkZW5jZS9LY29uZmlnLTEwLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2NhZGVuY2UvS2NvbmZpZy0xNC1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2NhZGVuY2UvS2NvbmZpZzoxNTpjb25maWcgUENJRV9DQURFTkNFX0VQXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9jYWRlbmNlL0tjb25maWctMTYtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvY2FkZW5jZS9LY29uZmlnLTIwLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvY2FkZW5jZS9LY29uZmlnOjIxOmNvbmZpZyBQQ0lFX0NBREVOQ0VfUExBVFxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvY2FkZW5jZS9LY29uZmlnLTIyLVxcdHRyaXN0YXRlXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9jYWRlbmNlL0tjb25maWctMjMtXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9jYWRlbmNlL0tjb25maWc6MjQ6Y29uZmlnIFBDSUVfQ0FERU5DRV9QTEFUX0hPU1RcXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2NhZGVuY2UvS2NvbmZpZy0yNS1cXHR0cmlzdGF0ZSBcXFwiQ2FkZW5jZSBwbGF0Zm9ybSBQQ0llIGNvbnRyb2xsZXIgKGhvc3QgbW9kZSlcXFwiXFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2NhZGVuY2UvS2NvbmZpZy0zMy1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2NhZGVuY2UvS2NvbmZpZzozNDpjb25maWcgUENJRV9DQURFTkNFX1BMQVRfRVBcXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2NhZGVuY2UvS2NvbmZpZy0zNS1cXHR0cmlzdGF0ZSBcXFwiQ2FkZW5jZSBwbGF0Zm9ybSBQQ0llIGNvbnRyb2xsZXIgKGVuZHBvaW50IG1vZGUpXFxcIlxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9jYWRlbmNlL0tjb25maWctNDQtXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9jYWRlbmNlL0tjb25maWc6NDU6Y29uZmlnIFBDSV9TS1kxX0hPU1RcXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2NhZGVuY2UvS2NvbmZpZy00Ni1cXHR0cmlzdGF0ZSBcXFwiQ0lYIFNLWTEgUENJZSBjb250cm9sbGVyIChob3N0IG1vZGUpXFxcIlxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9jYWRlbmNlL0tjb25maWctNTktXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9jYWRlbmNlL0tjb25maWc6NjA6Y29uZmlnIFBDSUVfU0cyMDQyX0hPU1RcXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2NhZGVuY2UvS2NvbmZpZy02MS1cXHR0cmlzdGF0ZSBcXFwiU29waGdvIFNHMjA0MiBQQ0llIGNvbnRyb2xsZXIgKGhvc3QgbW9kZSlcXFwiXFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2NhZGVuY2UvS2NvbmZpZy02OC1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2NhZGVuY2UvS2NvbmZpZzo2OTpjb25maWcgUENJX0o3MjFFXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9jYWRlbmNlL0tjb25maWctNzAtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvY2FkZW5jZS9LY29uZmlnLTczLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvY2FkZW5jZS9LY29uZmlnOjc0OmNvbmZpZyBQQ0lfSjcyMUVfSE9TVFxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvY2FkZW5jZS9LY29uZmlnLTc1LVxcdHRyaXN0YXRlIFxcXCJUSSBKNzIxRSBQQ0llIGNvbnRyb2xsZXIgKGhvc3QgbW9kZSlcXFwiXFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2NhZGVuY2UvS2NvbmZpZy04My1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2NhZGVuY2UvS2NvbmZpZzo4NDpjb25maWcgUENJX0o3MjFFX0VQXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9jYWRlbmNlL0tjb25maWctODUtXFx0dHJpc3RhdGUgXFxcIlRJIEo3MjFFIFBDSWUgY29udHJvbGxlciAoZW5kcG9pbnQgbW9kZSlcXFwiXFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnPTM9bWVudSBcXFwiRGVzaWduV2FyZS1iYXNlZCBQQ0llIGNvbnRyb2xsZXJzXFxcIlxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZy01LVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWc6Njpjb25maWcgUENJRV9EV1xcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWctNy1cXHRib29sXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZy04LVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWc6OTpjb25maWcgUENJRV9EV19ERUJVR0ZTXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZy0xMC1cXHRib29sIFxcXCJEZXNpZ25XYXJlIFBDSWUgZGVidWdmcyBlbnRyaWVzXFxcIlxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZy0xOC1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnOjE5OmNvbmZpZyBQQ0lFX0RXX0hPU1RcXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnLTIwLVxcdGJvb2xcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWctMjQtXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZzoyNTpjb25maWcgUENJRV9EV19FUFxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWctMjYtXFx0Ym9vbFxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZy0yOC1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnOjI5OmNvbmZpZyBQQ0lFX0FMXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZy0zMC1cXHRib29sIFxcXCJBbWF6b24gQW5uYXB1cm5hIExhYnMgUENJZSBjb250cm9sbGVyXFxcIlxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZy00MS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnOjQyOmNvbmZpZyBQQ0lFX0FNRF9NREJcXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnLTQzLVxcdGJvb2wgXFxcIkFNRCBNREIgVmVyc2FsMiBQQ0llIGNvbnRyb2xsZXJcXFwiXFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnLTUyLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWc6NTM6Y29uZmlnIFBDSV9NRVNPTlxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWctNTQtXFx0dHJpc3RhdGUgXFxcIkFtbG9naWMgTWVzb24gUENJZSBjb250cm9sbGVyXFxcIlxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZy02My1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnOjY0OmNvbmZpZyBQQ0lFX0FOREVTX1FJTEFJXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZy02NS1cXHR0cmlzdGF0ZSBcXFwiQW5kZXMgUWlMYWkgUENJZSBjb250cm9sbGVyXFxcIlxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZy03NC1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnOjc1OmNvbmZpZyBQQ0lFX0FSVFBFQzZcXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnLTc2LVxcdGJvb2xcXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnLTc3LVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWc6Nzg6Y29uZmlnIFBDSUVfQVJUUEVDNl9IT1NUXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZy03OS1cXHRib29sIFxcXCJBeGlzIEFSVFBFQy02IFBDSWUgY29udHJvbGxlciAoaG9zdCBtb2RlKVxcXCJcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWctODctXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZzo4ODpjb25maWcgUENJRV9BUlRQRUM2X0VQXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZy04OS1cXHRib29sIFxcXCJBeGlzIEFSVFBFQy02IFBDSWUgY29udHJvbGxlciAoZW5kcG9pbnQgbW9kZSlcXFwiXFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnLTk3LVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWc6OTg6Y29uZmlnIFBDSUVfRVNXSU5cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnLTk5LVxcdHRyaXN0YXRlIFxcXCJFU1dJTiBQQ0llIGNvbnRyb2xsZXJcXFwiXFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnLTEwNy1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnOjEwODpjb25maWcgUENJX0lNWDZcXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnLTEwOS1cXHRib29sXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZy0xMTAtXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZzoxMTE6Y29uZmlnIFBDSV9JTVg2X0hPU1RcXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnLTExMi1cXHRib29sIFxcXCJGcmVlc2NhbGUgaS5NWDYvNy84IFBDSWUgY29udHJvbGxlciAoaG9zdCBtb2RlKVxcXCJcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWctMTIzLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWc6MTI0OmNvbmZpZyBQQ0lfSU1YNl9FUFxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWctMTI1LVxcdGJvb2wgXFxcIkZyZWVzY2FsZSBpLk1YNi83LzggUENJZSBjb250cm9sbGVyIChlbmRwb2ludCBtb2RlKVxcXCJcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWctMTM1LVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWc6MTM2OmNvbmZpZyBQQ0lfTEFZRVJTQ0FQRVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWctMTM3LVxcdHRyaXN0YXRlIFxcXCJGcmVlc2NhbGUgTGF5ZXJzY2FwZSBQQ0llIGNvbnRyb2xsZXIgKGhvc3QgbW9kZSlcXFwiXFxuLS1cXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTA6MTk6MDAuOTcwNTg4MDQxWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5OTIwOTA1NzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ29uZmlndXJhdGlvbiBRdWFuZGFyeSoqXG5cbk9rYXksIGhlcmUncyB0aGUgc2l0dWF0aW9uLiBJJ20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgdGhlIG9wdGltYWwgY29uZmlndXJhdGlvbiBzZXR0aW5ncywgYW5kIGl0IGxvb2tzIGxpa2UgYEFSTV9HSUNfVjNfSVRTYCBpcyBhdXRvbWF0aWNhbGx5IHNlbGVjdGVkIGZvciBBUk02NCBpZiBgUENJYCBpcyBzZXQuIFJpZ2h0LCBzbyBpZiBJIGluY2x1ZGUgYFBDSWAsIHRoZW4gYEFSTV9HSUNfVjNfSVRTYCBzaG91bGQgYmUgZW5hYmxlZCwgdGhhdCBtYWtlcyBzZW5zZS5cblxuTGV0IG1lIGp1c3QgY29uZmlybSB0aGF0IGBQQ0lgIGlzIHN1ZmZpY2llbnQgb24gaXRzIG93bi4gWWVwLCBpdCdzIGEgc3RhbmRhcmQgY29uZmlnLCBubyBzdXJwcmlzZXMgdGhlcmUuIE9rYXksIHNvIGNpcmNsaW5nIGJhY2sgdG8gYEFSTV9HSUNfVjNfSVRTYCwgd2hhdCBlbHNlIG1pZ2h0IGJlIGF0IHBsYXk/IEp1c3QgdG8gYmUgc3VyZSwgaXMgdGhlcmUgKmFueXRoaW5nKiBlbHNlIHRoYXQgbmVlZHMgdG8gYmUgY29uc2lkZXJlZD8gSG1tLCBgQ09ORklHX1BDSWAgbG9va3MgZ29vZC5cblxuSG9sZCBvbi4uLiB0YWtpbmcgYW5vdGhlciBwYXNzLCBiZWNhdXNlIEknbSBub3QgYSBmYW4gb2YgYXNzdW1pbmcsIGBDT05GSUdfQVJNX0dJQ19WM19JVFNgICppcyogc2VsZWN0ZWQgYnkgYEFSTTY0YCB3aGVuIGBQQ0lgIGlzIGFscmVhZHkgZW5hYmxlZC4gVGhlcmVmb3JlLCBgUENJYCBpcyB0aGUgdGhpbmcgdG8gdXNlLiBJIGRvbid0IG5lZWQgdG8gc3BlY2lmeSBhbnl0aGluZyBlbHNlLiBJIHNob3VsZCBqdXN0IHJldHVybiBgUENJYC5cblxuUmlnaHQsIG5vdyB0aGUgZnV6emVyLiBJdCAqbWlnaHQqIG5vdCBydW4gb24gQVJNNjQgaWYgSSBkb24ndCAqZXhwbGljaXRseSogaW5jbHVkZSBpdCwgYnV0IHRoZSBmdXp6ZXIgcnVucyBvbiBhbGwgYXJjaGl0ZWN0dXJlcy4gQWhhISBJZiBJIHNwZWNpZnkgYFBDSWAsIGl0IHdpbGwgYXV0b21hdGljYWxseSBiZSBlbmFibGVkIG9uIEFSTTY0LCBhbnl3YXkuIEkgY2FuIGp1c3Qgc3BlY2lmeSBgUENJYC4gSXQgd2lsbCBiZSBlbmFibGVkIG9uIEFSTTY0IGlmIGl0IGlzIGF2YWlsYWJsZS5cblxuTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrLCBpcyB0aGVyZSAqYW55dGhpbmcqIGVsc2UgdGhhdCBuZWVkcyB0byBiZSBjb25maWd1cmVkPyBKdXN0IHRvIGJlIGNlcnRhaW4sIEkgc2hvdWxkIGNoZWNrIHRoZSBkcml2ZXJzLCBgZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzMzOSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxMDoxOTowNi45NjI2ODEwMDlaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0ODg1MDU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmM9MjMzNz1zdGF0aWMgaW50IGdpY19yZXNlcnZlX3JhbmdlKHBoeXNfYWRkcl90IGFkZHIsIHVuc2lnbmVkIGxvbmcgc2l6ZSlcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYy0yMzM4LXtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYzoyMzM5OlxcdGlmIChlZmlfZW5hYmxlZChFRklfQ09ORklHX1RBQkxFUykpXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtMjM0MC1cXHRcXHRyZXR1cm4gZWZpX21lbV9yZXNlcnZlX3BlcnNpc3RlbnQoYWRkciwgc2l6ZSk7XFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYz0yNDA4PXN0YXRpYyBpbnQgaXRzX3NldHVwX2Jhc2VyKHN0cnVjdCBpdHNfbm9kZSAqaXRzLCBzdHJ1Y3QgaXRzX2Jhc2VyICpiYXNlcixcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jLTI0MzYtXFx0LyogQ2hlY2sgaWYgdGhlIHBoeXNpY2FsIGFkZHJlc3Mgb2YgdGhlIG1lbW9yeSBpcyBhYm92ZSA0OGJpdHMgKi9cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYzoyNDM3OlxcdGlmIChJU19FTkFCTEVEKENPTkZJR19BUk02NF82NEtfUEFHRVMpIFxcdTAwMjZcXHUwMDI2IChiYXNlcl9waHlzIFxcdTAwM2VcXHUwMDNlIDQ4KSkge1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jLTI0MzgtXFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYz00OTMwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2ljX3F1aXJrIGl0c19xdWlya3NbXSA9IHtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYzo0OTMxOiNpZmRlZiBDT05GSUdfQ0FWSVVNX0VSUkFUVU1fMjIzNzVcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYy00OTMyLVxcdHtcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jLTQ5MzgtI2VuZGlmXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmM6NDkzOTojaWZkZWYgQ09ORklHX0NBVklVTV9FUlJBVFVNXzIzMTQ0XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtNDk0MC1cXHR7XFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYy00OTQ2LSNlbmRpZlxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jOjQ5NDc6I2lmZGVmIENPTkZJR19RQ09NX1FERjI0MDBfRVJSQVRVTV8wMDY1XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtNDk0OC1cXHR7XFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYy00OTU0LSNlbmRpZlxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jOjQ5NTU6I2lmZGVmIENPTkZJR19TT0NJT05FWFRfU1lOUVVBQ0VSX1BSRUlUU1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jLTQ5NTYtXFx0e1xcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtNDk2Ny0jZW5kaWZcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYzo0OTY4OiNpZmRlZiBDT05GSUdfSElTSUxJQ09OX0VSUkFUVU1fMTYxNjAwODAyXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtNDk2OS1cXHR7XFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYy00OTc1LSNlbmRpZlxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jOjQ5NzY6I2lmZGVmIENPTkZJR19ISVNJTElDT05fRVJSQVRVTV8xNjIxMDA4MDFcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYy00OTc3LVxcdHtcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jLTQ5ODMtI2VuZGlmXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmM6NDk4NDojaWZkZWYgQ09ORklHX1JPQ0tDSElQX0VSUkFUVU1fMzU4ODAwMVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jLTQ5ODUtXFx0e1xcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtNDk5Ni1cXHR9LFxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jOjQ5OTc6I2lmZGVmIENPTkZJR19ST0NLQ0hJUF9FUlJBVFVNXzM1NjgwMDJcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYy00OTk4LVxcdHtcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jPTU0Njk9c3RhdGljIGludCBpdHNfY3B1X21lbXJlc2VydmVfbHBpKHVuc2lnbmVkIGludCBjcHUpXFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYy01NDk3LVxcdC8qIExhc3QgQ1BVIGJlaW5nIGJyb3VnaHQgdXAgZ2V0cyB0byBpc3N1ZSB0aGUgY2xlYW51cCAqL1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jOjU0OTg6XFx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19TTVApIHx8XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtNTQ5OS1cXHQgICAgY3B1bWFza19lcXVhbChcXHUwMDI2Y3B1c19ib290ZWRfb25jZV9tYXNrLCBjcHVfcG9zc2libGVfbWFzaykpXFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYz01NTcyPXN0YXRpYyBpbnQgX19pbml0IGl0c19vZl9wcm9iZShzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUpXFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYy01NjI2LVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jOjU2Mjc6I2lmZGVmIENPTkZJR19BQ1BJXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtNTYyOC1cXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jLTU2MzAtXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmM6NTYzMTojaWZkZWYgQ09ORklHX0FDUElfTlVNQVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jLTU2MzItc3RydWN0IGl0c19zcmF0X21hcCB7XFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYz01ODE1PWludCBfX2luaXQgaXRzX2xwaV9tZW1yZXNlcnZlX2luaXQodm9pZClcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jLTU4MTgtXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmM6NTgxOTpcXHRpZiAoIWVmaV9lbmFibGVkKEVGSV9DT05GSUdfVEFCTEVTKSlcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYy01ODIwLVxcdFxcdHJldHVybiAwO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxMDoxOTowNy4wMDc1NzM3MThaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODIyMjc5NjI5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEltcGFjdCBvZiB0aGUgUGF0Y2ggb24gR0lDdjMgSVRTIEZ1bmN0aW9uYWxpdHkqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGhpdHMgYSBudW1iZXIgb2YgZnVuY3Rpb25zOiBgYWxsb2NfbHBpX3JhbmdlYCwgYGZyZWVfbHBpX3JhbmdlYCwgYGl0c19scGlfaW5pdGAsIGBpdHNfbHBpX2FsbG9jYCwgYGl0c19scGlfZnJlZWAsIGFuZCBgaXRzX2NyZWF0ZV9kZXZpY2VgLiBUaGV5J3JlIGFsbCBjb21waWxlZCB1bmNvbmRpdGlvbmFsbHkgd2hlbiBgaXJxLWdpYy12My1pdHMub2AgaXMgYnVpbHQuIFRoYXQgbWVhbnMgdGhhdCBlbmFibGluZyBgUENJYCBpcyBzdWZmaWNpZW50IHRvIGVuYWJsZSBgQVJNX0dJQ19WM19JVFNgIG9uIEFSTTY0LCBhdCBsZWFzdCBpbiB0aGlzIHJlZ2FyZC5cblxuSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIGxldCdzIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGRlcGVuZGVuY2llcy4gQWxyaWdodCwgYEhJU0lMSUNPTl9JUlFfTUJJR0VOYCBhbHNvIGJyaW5ncyBpdCBpbiwgYnV0IGBQQ0lgIGlzIHRoZSBzdGFuZGFyZCByb3V0ZSwgc28gdGhhdOKAmXMgdGhlIHR5cGljYWwgZW5hYmxlbWVudCBwYXRoLlxuXG5Ob3csIEkgd2FudCB0byBzZWUgaG93IHRoZXNlIGZ1bmN0aW9ucyBpbnRlcmFjdC4gSSdsbCBmb2N1cyBvbiBzeW1ib2xzIHRoYXQgd2lsbCBub3QgYmUgaW5saW5lZC4gSSB3YXMgb3JpZ2luYWxseSB0aGlua2luZyBvZiBgaXRzX21zaV9wcmVwYXJlYCBhbmQgYGl0c19tc2lfdGVhcmRvd25gLiBZZXAsIHRoZXkncmUgc3RhdGljLCBidXQgdGhhdCBtaWdodCBtZWFuIHRoZXkgY2FuIGJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyLiBCdXQgd2FpdCAtIHRoZXkncmUgcGFzc2VkIGFzIGZ1bmN0aW9uIHBvaW50ZXJzIGluIGBpdHNfbXNpX2RvbWFpbl9vcHNgLlxuXG5gYGBjXG5zdGF0aWMgc3RydWN0IG1zaV9kb21haW5fb3BzIGl0c19tc2lfZG9tYWluX29wcyA9IHtcblx0Lm1zaV9wcmVwYXJlXHQ9IGl0c19tc2lfcHJlcGFyZSxcblx0Lm1zaV90ZWFyZG93blx0PSBpdHNfbXNpX3RlYXJkb3duLFxufTtcbmBgYFxuXG5TaW5jZSB3ZSdyZSB0YWtpbmcgdGhlaXIgYWRkcmVzc2VzLCB0aGUgY29tcGlsZXIgd29uJ3QgZnVsbHkgaW5saW5lIHRoZW07IGF0IGxlYXN0IGEgc3RhbmRhbG9uZSB2ZXJzaW9uIHdpbGwgYmUgZ2VuZXJhdGVkLiBUaGF0IG1ha2VzIHRoZW0gZ29vZCBjYW5kaWRhdGVzIGZvciBkZWVwZXIgYW5hbHlzaXMgYXMgdGhleSdsbCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMuXG5cbk5leHQsIEkgbmVlZCB0byBsb29rIGF0IGBpdHNfY3JlYXRlX2RldmljZWAuIEl0J3MgY2FsbGVkIGJ5IGBpdHNfbXNpX3ByZXBhcmVgIGFuZCBgaXRzX2luaXRfdnBlX2RvbWFpbmAuIEl0IGlzIHN0YXRpYyBidXQgaXRzIGFkZHJlc3MgaXNuJ3QgdGFrZW4uIFNvIGl0IG1pZ2h0IGJlIGlubGluZWQuIGBpdHNfbXNpX3ByZXBhcmVgIGlzIHRoZSBiZXR0ZXIgZnVuY3Rpb24gdG8gZm9jdXMgb24uXG5cbkZpbmFsbHksIEkgbmVlZCB0byBjaGVjayBgaXRzX2xwaV9hbGxvY2AgYW5kIGBpdHNfbHBpX2ZyZWVgLiBUaGV5IGFyZSBjYWxsZWQgYnkgYGl0c19hbGxvY19kZXZpY2VfaXJxYCBhbmQgYGl0c19tc2lfdGVhcmRvd25gLiBPa2F5LCBzbyBgaXRzX2FsbG9jX2RldmljZV9pcnFgIGlzIGNhbGxlZCBieSBgaXRzX2lycV9kb21haW5fYWxsb2NgLiBMZXQncyBjaGVjayBgaXRzX2lycV9kb21haW5fYWxsb2NgIG5leHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5NTk1LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTA4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDEwOjE5OjE1LjIzMDM3MzM2MloiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDcyNzcwNjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXRzX2lycV9kb21haW5fYWxsb2NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmM9MzY4Nj1zdGF0aWMgaW50IGl0c19pcnFfZ2ljX2RvbWFpbl9hbGxvYyhzdHJ1Y3QgaXJxX2RvbWFpbiAqZG9tYWluLFxcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtMzcwOS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYzozNzEwOnN0YXRpYyBpbnQgaXRzX2lycV9kb21haW5fYWxsb2Moc3RydWN0IGlycV9kb21haW4gKmRvbWFpbiwgdW5zaWduZWQgaW50IHZpcnEsXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtMzcxMS1cXHRcXHRcXHRcXHR1bnNpZ25lZCBpbnQgbnJfaXJxcywgdm9pZCAqYXJncylcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jPTM4MDA9c3RhdGljIGNvbnN0IHN0cnVjdCBpcnFfZG9tYWluX29wcyBpdHNfZG9tYWluX29wcyA9IHtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYy0zODAxLVxcdC5zZWxlY3RcXHRcXHRcXHQ9IG1zaV9saWJfaXJxX2RvbWFpbl9zZWxlY3QsXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmM6MzgwMjpcXHQuYWxsb2NcXHRcXHRcXHQ9IGl0c19pcnFfZG9tYWluX2FsbG9jLFxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jLTM4MDMtXFx0LmZyZWVcXHRcXHRcXHQ9IGl0c19pcnFfZG9tYWluX2ZyZWUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDEwOjE5OjE1LjI3NzY1NDk2MVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4OTA0NTkwNjk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEN1cnJlbnQgVGhpbmtpbmc6IElkZW50aWZ5aW5nIEtleSBNU0kvTFBJIEludGVyYWN0aW9uIFBvaW50cyoqXG5cbk9rYXksIGxldCdzIG5haWwgZG93biB0aGVzZSBjb3JlIGZ1bmN0aW9ucy4gSSdtIGZvY3VzaW5nIG9uIHRoZSBpbnRlcmFjdGlvbiBwb2ludHMgYmV0d2VlbiBNU0kgYW5kIExQSSBhbGxvY2F0aW9uIGFuZCBmcmVlaW5nLiBJIHNlZSB0aGF0IGBpdHNfaXJxX2RvbWFpbl9hbGxvY2AgYW5kIGBpdHNfaXJxX2RvbWFpbl9mcmVlYCBhcmUgZGVmaW5pdGVseSByZWxldmFudCBoZXJlLiBUaGV5J3JlIGJvdGggcGFydCBvZiB0aGUgYGlycV9kb21haW5fb3BzYCBzdHJ1Y3R1cmUsIHdoaWNoIG1ha2VzIHRoZW0gY2VudHJhbCB0byB0aGUgaW50ZXJydXB0IGRvbWFpbiBtYW5hZ2VtZW50LiBJJ3ZlIG5vdGVkIGRvd24gdGhlc2UgZm9jdXMgc3ltYm9scyBmb3IgYSBjbGVhciBvdmVydmlldzpcblxuKiAgIGBpdHNfbXNpX3ByZXBhcmVgXG4qICAgYGl0c19tc2lfdGVhcmRvd25gXG4qICAgYGl0c19pcnFfZG9tYWluX2FsbG9jYFxuKiAgIGBpdHNfaXJxX2RvbWFpbl9mcmVlYFxuXG5UaGUgcm9sZSBvZiB0aGVzZSBmdW5jdGlvbnMgYmVjb21lcyBjbGVhcjogdGhleSBhY3QgYXMgZW50cnkgcG9pbnRzIGZvciBNU0kgYWxsb2NhdGlvbiBhbmQgZnJlZWluZywgd2hpY2ggaXMgcHJlY2lzZWx5IHdoZXJlIHRoZSBtb2RpZmllZCBMUEkgYWxsb2NhdGlvbiBhbmQgZnJlZWluZyBsb2dpYyBpcyB0cmlnZ2VyZWQuIE5vdywgdG8gYmUgYWJzb2x1dGVseSBzdXJlIG9mIHRoZSBmbG93LCBJIHdhbnQgdG8gdmVyaWZ5IHRoYXQgYGl0c19pcnFfZG9tYWluX2ZyZWVgIGRpcmVjdGx5IGNhbGxzIGBpdHNfbHBpX2ZyZWVgLiBUaGF0IGNvbm5lY3Rpb24gaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgY29tcGxldGUgcHJvY2Vzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjEwMjEsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTA6MTk6MjQuMTgyMjQ4NjFaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ0MTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM3NzAsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjM3NzA6XFx0e1xcbjM3NzE6XFx0XFx0c3RydWN0IGl0c19kZXZpY2UgKml0c19kZXYgPSBpcnFfZGF0YV9nZXRfaXJxX2NoaXBfZGF0YShkKTtcXG4zNzcyOlxcdFxcdHUzMiBldmVudCA9IGl0c19nZXRfZXZlbnRfaWQoZCk7XFxuMzc3MzpcXHRcXG4zNzc0OlxcdFxcdGl0c19kZWNfbHBpX2NvdW50KGQsIGl0c19kZXYtXFx1MDAzZWV2ZW50X21hcC5jb2xfbWFwW2V2ZW50XSk7XFxuMzc3NTpcXHRcXHQvKiBTdG9wIHRoZSBkZWxpdmVyeSBvZiBpbnRlcnJ1cHRzICovXFxuMzc3NjpcXHRcXHRpdHNfc2VuZF9kaXNjYXJkKGl0c19kZXYsIGV2ZW50KTtcXG4zNzc3OlxcdH1cXG4zNzc4OlxcdFxcbjM3Nzk6XFx0c3RhdGljIHZvaWQgaXRzX2lycV9kb21haW5fZnJlZShzdHJ1Y3QgaXJxX2RvbWFpbiAqZG9tYWluLCB1bnNpZ25lZCBpbnQgdmlycSxcXG4zNzgwOlxcdFxcdFxcdFxcdFxcdHVuc2lnbmVkIGludCBucl9pcnFzKVxcbjM3ODE6XFx0e1xcbjM3ODI6XFx0XFx0c3RydWN0IGlycV9kYXRhICpkID0gaXJxX2RvbWFpbl9nZXRfaXJxX2RhdGEoZG9tYWluLCB2aXJxKTtcXG4zNzgzOlxcdFxcdHN0cnVjdCBpdHNfZGV2aWNlICppdHNfZGV2ID0gaXJxX2RhdGFfZ2V0X2lycV9jaGlwX2RhdGEoZCk7XFxuMzc4NDpcXHRcXHRpbnQgaTtcXG4zNzg1OlxcdFxcbjM3ODY6XFx0XFx0Yml0bWFwX3JlbGVhc2VfcmVnaW9uKGl0c19kZXYtXFx1MDAzZWV2ZW50X21hcC5scGlfbWFwLFxcbjM3ODc6XFx0XFx0XFx0XFx0ICAgICAgaXRzX2dldF9ldmVudF9pZChpcnFfZG9tYWluX2dldF9pcnFfZGF0YShkb21haW4sIHZpcnEpKSxcXG4zNzg4OlxcdFxcdFxcdFxcdCAgICAgIGdldF9jb3VudF9vcmRlcihucl9pcnFzKSk7XFxuMzc4OTpcXHRcXG4zNzkwOlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBucl9pcnFzOyBpKyspIHtcXG4zNzkxOlxcdFxcdFxcdHN0cnVjdCBpcnFfZGF0YSAqZGF0YSA9IGlycV9kb21haW5fZ2V0X2lycV9kYXRhKGRvbWFpbixcXG4zNzkyOlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdHZpcnEgKyBpKTtcXG4zNzkzOlxcdFxcdFxcdC8qIE51a2UgdGhlIGVudHJ5IGluIHRoZSBkb21haW4gKi9cXG4zNzk0OlxcdFxcdFxcdGlycV9kb21haW5fcmVzZXRfaXJxX2RhdGEoZGF0YSk7XFxuMzc5NTpcXHRcXHR9XFxuMzc5NjpcXHRcXG4zNzk3OlxcdFxcdGlycV9kb21haW5fZnJlZV9pcnFzX3BhcmVudChkb21haW4sIHZpcnEsIG5yX2lycXMpO1xcbjM3OTg6XFx0fVxcbjM3OTk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDEwOjE5OjI0LjE4MjQ5NDM1WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk4NjY5NTMzMjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBHSUN2MyBJVFMgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBhaW1lZCBhdCBvcHRpbWl6aW5nIHRoZSBHSUN2MyBJVFMgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZGVhbGluZyB3aXRoIExQSSByYW5nZSBhbGxvY2F0aW9uIGFuZCBmcmVlaW5nLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpcyB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBhbmQgcG90ZW50aWFsIGltcGFjdC5cblxuRmlyc3QsIEkgc2VlIHRoYXQgYGl0c19pcnFfZG9tYWluX2ZyZWVgIG9ubHkgcmVsZWFzZXMgdGhlIGJpdG1hcCByZWdpb24sIG5vdCB0aGUgYWN0dWFsIExQSSByYW5nZXMuIFRoZSBhY3R1YWwgZnJlZWluZyBpcyBoYW5kbGVkIGluIGBpdHNfbXNpX3RlYXJkb3duYCBhbmQgdGhlIGVycm9yIHBhdGggb2YgYGl0c19jcmVhdGVfZGV2aWNlYCwgc3BlY2lmaWNhbGx5IGNhbGxpbmcgYGl0c19scGlfZnJlZWAuIFRoaXMgaW1tZWRpYXRlbHkgcG9pbnRzIG1lIHRvd2FyZHMgZm9jdXNpbmcgb24gYGl0c19tc2lfcHJlcGFyZWAgYW5kIGBpdHNfbXNpX3RlYXJkb3duYCBhcyB0aGUga2V5IHN5bWJvbHMgdG8gZXhhbWluZSwgYXMgdGhhdCdzIHdoZXJlIHRoZSBhbGxvY2F0aW9uIGFuZCBkZWFsbG9jYXRpb24gcGF0aHMgYXJlIGRpcmVjdGx5IHRvdWNoZWQuXG5cbk5vdywgbGV0J3MgYnJpZWZseSBsb29rIGF0IGBpdHNfbHBpX2luaXRgLiBJdCBzZWVtcyBsaWtlIGEgZ29vZCBwbGFjZSB0byBiZWdpbiBhcyB0aGF0IHdpbGwgaGFuZGxlIHRoZSBpbml0aWFsIExQSSByYW5nZSwgYnV0IHNpbmNlIGl0J3Mgb25seSBjYWxsZWQgb25jZSBkdXJpbmcgYm9vdCwgaXQgaXMgbm90IGFzIGltcG9ydGFudCBmb3IgdGhpcyBwYXRjaC5cblxuU28sIGZvY3VzaW5nIG9uIHRoZSBjaGFuZ2VzLCBpdCdzIGFib3V0IGNhY2hpbmcgdGhlIExQSSByYW5nZSBvYmplY3QgdG8gYXZvaWQgbWVtb3J5IGFsbG9jYXRpb24gd2hlbiBmcmVlaW5nIGFuZCBmaXhpbmcgYSBtZW1vcnkgbGVhayBpbiB0aGUgZGV2aWNlIGNyZWF0aW9uIGVycm9yIHBhdGguIFRoZXNlIGNoYW5nZXMgZGlyZWN0bHkgaW1wYWN0IHRoZSBNU0kgYWxsb2NhdGlvbiBhbmQgdGVhcmRvd24gcGF0aHMuIEFuZCBnaXZlbiB0aGUgY29udGV4dCwgdGhlc2UgcGF0aHMgYXJlIGNlcnRhaW5seSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSB3aXRoIEdJQ3YzIElUUyBlbXVsYXRpb24sIHdoaWNoIGltbWVkaWF0ZWx5IHJhaXNlcyBhIGZsYWcuXG5cblRoZSBjb25maWcgcmVxdWlyZWQgaXMgYFBDSWAsIHdoaWNoIHdpbGwgZW5hYmxlIGBBUk1fR0lDX1YzX0lUU2Agb24gQVJNNjQsIGFuZCBpcyB0aGUgb25seSBjb25maWcgdGhhdCBuZWVkcyB0byBiZSBsaXN0ZWQuIFNpbmNlIGBBUk1fR0lDX1YzX0lUU2AgaXMgc2VsZWN0ZWQgYnkgYEFSTTY0YCBpZiBgUENJYCwgaXQgbG9va3MgbGlrZSBhIGNsZWFuIGRlcGVuZGVuY3kuXG5cbkxldCdzIGRvIGEgcXVpY2sgZmluYWwgcmV2aWV3IG9mIHRoZSBjb2RlIGNoYW5nZXMuIEknbSBzZWVpbmcgYGFsbG9jX2xwaV9yYW5nZWAgYmVpbmcgY2FsbGVkIGZyb20gYGl0c19scGlfYWxsb2NgLCBhbmQgdGhlbiBgaXRzX2NyZWF0ZV9kZXZpY2VgIHdoaWNoIGlzIHRoZW4gY2FsbGVkIGZyb20gYGl0c19tc2lfcHJlcGFyZWAuIE9uIHRoZSBvdGhlciBzaWRlLCBgZnJlZV9scGlfcmFuZ2VgIGlzIGJlaW5nIGNhbGxlZCBmcm9tIGBpdHNfbHBpX2ZyZWVgLCB3aGljaCBpcyBjYWxsZWQgZnJvbSBgaXRzX21zaV90ZWFyZG93bmAgYW5kIHRoZSBlcnJvciBwYXRoIGluIGBpdHNfY3JlYXRlX2RldmljZWAuIFRoaXMgY29uZmlybXMgdGhlIGFsbG9jYXRpb24vZGVhbGxvY2F0aW9uIHBhdGhzIEkgaWRlbnRpZmllZCBhcmUgdGhlIGNvcnJlY3QgZm9jdXMuXG5cbkJhc2VkIG9uIHRoaXMgYW5hbHlzaXMsIHRoZSBjaGFuZ2VzIGFwcGVhciBmdW5jdGlvbmFsIGFuZCByZWFjaGFibGUuIFRoaXMgaXMgYSBjbGVhciBjYXNlIGZvciBcIldvcnRoRnV6emluZ1wiLiBUaW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE5OTcsIk91dHB1dFRva2VucyI6MTI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Njc2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTA6MTk6MzQuMDQ5NDUwMjM1WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODQyNzQ0NDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlBDSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIml0c19tc2lfcHJlcGFyZVwiLFxuICAgIFwiaXRzX21zaV90ZWFyZG93blwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBHSUN2MyBJVFMgZHJpdmVyIHRvIGNhY2hlIGFuIExQSSByYW5nZSBvYmplY3QgdG8gYXZvaWQgbWVtb3J5IGFsbG9jYXRpb24gaW4gdGhlIGZyZWUgcGF0aCwgYW5kIGZpeGVzIGEgbWVtb3J5IGxlYWsgaW4gdGhlIGRldmljZSBjcmVhdGlvbiBlcnJvciBwYXRoLiBUaGVzZSBjaGFuZ2VzIGFmZmVjdCB0aGUgTVNJIGFsbG9jYXRpb24gYW5kIHRlYXJkb3duIHBhdGhzLCB3aGljaCBhcmUgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoZS5nLiwgUUVNVSB3aXRoIEdJQ3YzIElUUyBlbXVsYXRpb24pLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlBDSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIml0c19tc2lfcHJlcGFyZVwiLFxuICAgIFwiaXRzX21zaV90ZWFyZG93blwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBHSUN2MyBJVFMgZHJpdmVyIHRvIGNhY2hlIGFuIExQSSByYW5nZSBvYmplY3QgdG8gYXZvaWQgbWVtb3J5IGFsbG9jYXRpb24gaW4gdGhlIGZyZWUgcGF0aCwgYW5kIGZpeGVzIGEgbWVtb3J5IGxlYWsgaW4gdGhlIGRldmljZSBjcmVhdGlvbiBlcnJvciBwYXRoLiBUaGVzZSBjaGFuZ2VzIGFmZmVjdCB0aGUgTVNJIGFsbG9jYXRpb24gYW5kIHRlYXJkb3duIHBhdGhzLCB3aGljaCBhcmUgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoZS5nLiwgUUVNVSB3aXRoIEdJQ3YzIElUUyBlbXVsYXRpb24pLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowrdxz6[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-29 10:12:54 +0000 UTC FinishedAt: 2026-07-29 10:19:35 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PCI" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PCI" ], "series_id": "3ebb2f94-cac6-4bca-b6b3-8a2b4a0c18ed" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "its_msi_prepare", "its_msi_teardown" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEwOjE4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BDSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2l0c19tc2lfcHJlcGFyZSYjMzQ7LAogICAgJiMzNDtpdHNfbXNpX3RlYXJkb3duJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBHSUN2MyBJVFMgZHJpdmVyIHRvIGNhY2hlIGFuIExQSSByYW5nZSBvYmplY3QgdG8gYXZvaWQgbWVtb3J5IGFsbG9jYXRpb24gaW4gdGhlIGZyZWUgcGF0aCwgYW5kIGZpeGVzIGEgbWVtb3J5IGxlYWsgaW4gdGhlIGRldmljZSBjcmVhdGlvbiBlcnJvciBwYXRoLiBUaGVzZSBjaGFuZ2VzIGFmZmVjdCB0aGUgTVNJIGFsbG9jYXRpb24gYW5kIHRlYXJkb3duIHBhdGhzLCB3aGljaCBhcmUgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoZS5nLiwgUUVNVSB3aXRoIEdJQ3YzIElUUyBlbXVsYXRpb24pLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEwOjE4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMDFhMTZmMTczNjlmMWZhYjMxMWMxMmFhNTUwMjlhM2EwYzMyNzMxOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDI5IDEwOjE4OjE1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jIGIvZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmNcbmluZGV4IDZmNTgxMWFhZTU5YzEuLjYzNGIwZTE1NDkzY2QgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmNcbkBAIC0yMDk3LDYgJiM0MzsyMDk3LDcgQEAgc3RhdGljIHN0cnVjdCBpcnFfY2hpcCBpdHNfaXJxX2NoaXAgPSB7XG4gXG4gc3RhdGljIERFRklORV9NVVRFWChscGlfcmFuZ2VfbG9jayk7XG4gc3RhdGljIExJU1RfSEVBRChscGlfcmFuZ2VfbGlzdCk7XG4mIzQzO3N0YXRpYyBMSVNUX0hFQUQobHBpX2ZyZWVfY2FjaGUpO1xuIFxuIHN0cnVjdCBscGlfcmFuZ2Uge1xuIFx0c3RydWN0IGxpc3RfaGVhZFx0ZW50cnk7XG5AQCAtMjEyMCw4ICYjNDM7MjEyMSwxMyBAQCBzdGF0aWMgc3RydWN0IGxwaV9yYW5nZSAqbWtfbHBpX3JhbmdlKHUzMiBiYXNlLCB1MzIgc3BhbilcbiBzdGF0aWMgaW50IGFsbG9jX2xwaV9yYW5nZSh1MzIgbnJfbHBpcywgdTMyICpiYXNlKVxuIHtcbiBcdHN0cnVjdCBscGlfcmFuZ2UgKnJhbmdlLCAqdG1wO1xuJiM0MztcdHN0cnVjdCBscGlfcmFuZ2UgKm5ld19ub2RlO1xuIFx0aW50IGVyciA9IC1FTk9TUEM7XG4gXG4mIzQzO1x0bmV3X25vZGUgPSBta19scGlfcmFuZ2UoMCwgMCk7XG4mIzQzO1x0aWYgKCFuZXdfbm9kZSlcbiYjNDM7XHRcdHJldHVybiAtRU5PTUVNO1xuJiM0MztcbiBcdG11dGV4X2xvY2soXHUwMDI2bHBpX3JhbmdlX2xvY2spO1xuIFxuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHJhbmdlLCB0bXAsIFx1MDAyNmxwaV9yYW5nZV9saXN0LCBlbnRyeSkge1xuQEAgLTIxNDAsNiAmIzQzOzIxNDYsMTEgQEAgc3RhdGljIGludCBhbGxvY19scGlfcmFuZ2UodTMyIG5yX2xwaXMsIHUzMiAqYmFzZSlcbiBcdFx0fVxuIFx0fVxuIFxuJiM0MztcdGlmICghZXJyKVxuJiM0MztcdFx0bGlzdF9hZGQoXHUwMDI2bmV3X25vZGUtXHUwMDNlZW50cnksIFx1MDAyNmxwaV9mcmVlX2NhY2hlKTtcbiYjNDM7XHRlbHNlXG4mIzQzO1x0XHRrZnJlZShuZXdfbm9kZSk7XG4mIzQzO1xuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmxwaV9yYW5nZV9sb2NrKTtcbiBcbiBcdHByX2RlYnVnKFwmIzM0O0lUUzogYWxsb2MgJXU6JXVcXG5cJiMzNDssICpiYXNlLCBucl9scGlzKTtcbkBAIC0yMTYyLDExICYjNDM7MjE3MywxOCBAQCBzdGF0aWMgaW50IGZyZWVfbHBpX3JhbmdlKHUzMiBiYXNlLCB1MzIgbnJfbHBpcylcbiB7XG4gXHRzdHJ1Y3QgbHBpX3JhbmdlICpuZXcsICpvbGQ7XG4gXG4tXHRuZXcgPSBta19scGlfcmFuZ2UoYmFzZSwgbnJfbHBpcyk7XG4tXHRpZiAoIW5ldylcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNmxwaV9yYW5nZV9sb2NrKTtcbiYjNDM7XG4mIzQzO1x0aWYgKFdBUk5fT04obGlzdF9lbXB0eShcdTAwMjZscGlfZnJlZV9jYWNoZSkpKSB7XG4mIzQzO1x0XHRtdXRleF91bmxvY2soXHUwMDI2bHBpX3JhbmdlX2xvY2spO1xuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiYjNDM7XHR9XG4gXG4tXHRtdXRleF9sb2NrKFx1MDAyNmxwaV9yYW5nZV9sb2NrKTtcbiYjNDM7XHRuZXcgPSBsaXN0X2ZpcnN0X2VudHJ5KFx1MDAyNmxwaV9mcmVlX2NhY2hlLCBzdHJ1Y3QgbHBpX3JhbmdlLCBlbnRyeSk7XG4mIzQzO1x0bGlzdF9kZWwoXHUwMDI2bmV3LVx1MDAzZWVudHJ5KTtcbiYjNDM7XG4mIzQzO1x0bmV3LVx1MDAzZWJhc2VfaWQgPSBiYXNlO1xuJiM0MztcdG5ldy1cdTAwM2VzcGFuID0gbnJfbHBpcztcbiBcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfcmV2ZXJzZShvbGQsIFx1MDAyNmxwaV9yYW5nZV9saXN0LCBlbnRyeSkge1xuIFx0XHRpZiAob2xkLVx1MDAzZWJhc2VfaWQgXHUwMDNjIGJhc2UpXG5AQCAtMjE5NSw2ICYjNDM7MjIxMyw3IEBAIHN0YXRpYyBpbnQgX19pbml0IGl0c19scGlfaW5pdCh1MzIgaWRfYml0cylcbiB7XG4gXHR1MzIgbHBpcyA9ICgxVUwgXHUwMDNjXHUwMDNjIGlkX2JpdHMpIC0gODE5MjtcbiBcdHUzMiBudW1scGlzO1xuJiM0MztcdHN0cnVjdCBscGlfcmFuZ2UgKnJhbmdlO1xuIFx0aW50IGVycjtcbiBcbiBcdG51bWxwaXMgPSAxVUwgXHUwMDNjXHUwMDNjIEdJQ0RfVFlQRVJfTlVNX0xQSVMoZ2ljX3JkaXN0cy1cdTAwM2VnaWNkX3R5cGVyKTtcbkBAIC0yMjA1LDYgJiM0MzsyMjI0LDEyIEBAIHN0YXRpYyBpbnQgX19pbml0IGl0c19scGlfaW5pdCh1MzIgaWRfYml0cylcbiBcdFx0XHRscGlzKTtcbiBcdH1cbiBcbiYjNDM7XHRyYW5nZSA9IG1rX2xwaV9yYW5nZSgwLCAwKTtcbiYjNDM7XHRpZiAoIXJhbmdlKVxuJiM0MztcdFx0cmV0dXJuIC1FTk9NRU07XG4mIzQzO1xuJiM0MztcdGxpc3RfYWRkKFx1MDAyNnJhbmdlLVx1MDAzZWVudHJ5LCBcdTAwMjZscGlfZnJlZV9jYWNoZSk7XG4mIzQzO1xuIFx0LypcbiBcdCAqIEluaXRpYWxpemluZyB0aGUgYWxsb2NhdG9yIGlzIGp1c3QgdGhlIHNhbWUgYXMgZnJlZWluZyB0aGVcbiBcdCAqIGZ1bGwgcmFuZ2Ugb2YgTFBJcy5cbkBAIC0yMjM0LDggJiM0MzsyMjU5LDEwIEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nICppdHNfbHBpX2FsbG9jKGludCBucl9pcnFzLCB1MzIgKmJhc2UsIGludCAqbnJfaWRzKVxuIFx0XHRnb3RvIG91dDtcbiBcbiBcdGJpdG1hcCA9IGJpdG1hcF96YWxsb2MobnJfaXJxcywgR0ZQX0FUT01JQyk7XG4tXHRpZiAoIWJpdG1hcClcbiYjNDM7XHRpZiAoIWJpdG1hcCkge1xuJiM0MztcdFx0ZnJlZV9scGlfcmFuZ2UoKmJhc2UsIG5yX2lycXMpO1xuIFx0XHRnb3RvIG91dDtcbiYjNDM7XHR9XG4gXG4gXHQqbnJfaWRzID0gbnJfaXJxcztcbiBcbkBAIC0yMjQ4LDcgJiM0MzsyMjc1LDcgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgKml0c19scGlfYWxsb2MoaW50IG5yX2lycXMsIHUzMiAqYmFzZSwgaW50ICpucl9pZHMpXG4gXG4gc3RhdGljIHZvaWQgaXRzX2xwaV9mcmVlKHVuc2lnbmVkIGxvbmcgKmJpdG1hcCwgdTMyIGJhc2UsIHUzMiBucl9pZHMpXG4ge1xuLVx0V0FSTl9PTihmcmVlX2xwaV9yYW5nZShiYXNlLCBucl9pZHMpKTtcbiYjNDM7XHRmcmVlX2xwaV9yYW5nZShiYXNlLCBucl9pZHMpO1xuIFx0Yml0bWFwX2ZyZWUoYml0bWFwKTtcbiB9XG4gXG5AQCAtMzUxMCw3ICYjNDM7MzUzNyw4IEBAIHN0YXRpYyBzdHJ1Y3QgaXRzX2RldmljZSAqaXRzX2NyZWF0ZV9kZXZpY2Uoc3RydWN0IGl0c19ub2RlICppdHMsIHUzMiBkZXZfaWQsXG4gXHRpZiAoIWRldiB8fCAhaXR0IHx8ICFjb2xfbWFwIHx8ICghbHBpX21hcCBcdTAwMjZcdTAwMjYgYWxsb2NfbHBpcykpIHtcbiBcdFx0a2ZyZWUoZGV2KTtcbiBcdFx0aXR0X2ZyZWVfcG9vbChpdHQsIHN6KTtcbi1cdFx0Yml0bWFwX2ZyZWUobHBpX21hcCk7XG4mIzQzO1x0XHRpZiAobHBpX21hcClcbiYjNDM7XHRcdFx0aXRzX2xwaV9mcmVlKGxwaV9tYXAsIGxwaV9iYXNlLCBucl9scGlzKTtcbiBcdFx0a2ZyZWUoY29sX21hcCk7XG4gXHRcdHJldHVybiBOVUxMO1xuIFx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEwOjE4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtQQ0kmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpdHNfbXNpX3ByZXBhcmUmIzM0OywKICAgICYjMzQ7aXRzX21zaV90ZWFyZG93biYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgR0lDdjMgSVRTIGRyaXZlciB0byBjYWNoZSBhbiBMUEkgcmFuZ2Ugb2JqZWN0IHRvIGF2b2lkIG1lbW9yeSBhbGxvY2F0aW9uIGluIHRoZSBmcmVlIHBhdGgsIGFuZCBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIHRoZSBkZXZpY2UgY3JlYXRpb24gZXJyb3IgcGF0aC4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgdGhlIE1TSSBhbGxvY2F0aW9uIGFuZCB0ZWFyZG93biBwYXRocywgd2hpY2ggYXJlIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGUuZy4sIFFFTVUgd2l0aCBHSUN2MyBJVFMgZW11bGF0aW9uKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDAxYTE2ZjE3MzY5ZjFmYWIzMTFjMTJhYTU1MDI5YTNhMGMzMjczMTkKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCAyOSAxMDoxODoxNSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jIGIvZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMKaW5kZXggNmY1ODExYWFlNTljMS4uNjM0YjBlMTU0OTNjZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMKQEAgLTIwOTcsNiAmIzQzOzIwOTcsNyBAQCBzdGF0aWMgc3RydWN0IGlycV9jaGlwIGl0c19pcnFfY2hpcCA9IHsKIAogc3RhdGljIERFRklORV9NVVRFWChscGlfcmFuZ2VfbG9jayk7CiBzdGF0aWMgTElTVF9IRUFEKGxwaV9yYW5nZV9saXN0KTsKJiM0MztzdGF0aWMgTElTVF9IRUFEKGxwaV9mcmVlX2NhY2hlKTsKIAogc3RydWN0IGxwaV9yYW5nZSB7CiAJc3RydWN0IGxpc3RfaGVhZAllbnRyeTsKQEAgLTIxMjAsOCAmIzQzOzIxMjEsMTMgQEAgc3RhdGljIHN0cnVjdCBscGlfcmFuZ2UgKm1rX2xwaV9yYW5nZSh1MzIgYmFzZSwgdTMyIHNwYW4pCiBzdGF0aWMgaW50IGFsbG9jX2xwaV9yYW5nZSh1MzIgbnJfbHBpcywgdTMyICpiYXNlKQogewogCXN0cnVjdCBscGlfcmFuZ2UgKnJhbmdlLCAqdG1wOwomIzQzOwlzdHJ1Y3QgbHBpX3JhbmdlICpuZXdfbm9kZTsKIAlpbnQgZXJyID0gLUVOT1NQQzsKIAomIzQzOwluZXdfbm9kZSA9IG1rX2xwaV9yYW5nZSgwLCAwKTsKJiM0MzsJaWYgKCFuZXdfbm9kZSkKJiM0MzsJCXJldHVybiAtRU5PTUVNOwomIzQzOwogCW11dGV4X2xvY2soJmFtcDtscGlfcmFuZ2VfbG9jayk7CiAKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocmFuZ2UsIHRtcCwgJmFtcDtscGlfcmFuZ2VfbGlzdCwgZW50cnkpIHsKQEAgLTIxNDAsNiAmIzQzOzIxNDYsMTEgQEAgc3RhdGljIGludCBhbGxvY19scGlfcmFuZ2UodTMyIG5yX2xwaXMsIHUzMiAqYmFzZSkKIAkJfQogCX0KIAomIzQzOwlpZiAoIWVycikKJiM0MzsJCWxpc3RfYWRkKCZhbXA7bmV3X25vZGUtJmd0O2VudHJ5LCAmYW1wO2xwaV9mcmVlX2NhY2hlKTsKJiM0MzsJZWxzZQomIzQzOwkJa2ZyZWUobmV3X25vZGUpOwomIzQzOwogCW11dGV4X3VubG9jaygmYW1wO2xwaV9yYW5nZV9sb2NrKTsKIAogCXByX2RlYnVnKCYjMzQ7SVRTOiBhbGxvYyAldToldVxuJiMzNDssICpiYXNlLCBucl9scGlzKTsKQEAgLTIxNjIsMTEgJiM0MzsyMTczLDE4IEBAIHN0YXRpYyBpbnQgZnJlZV9scGlfcmFuZ2UodTMyIGJhc2UsIHUzMiBucl9scGlzKQogewogCXN0cnVjdCBscGlfcmFuZ2UgKm5ldywgKm9sZDsKIAotCW5ldyA9IG1rX2xwaV9yYW5nZShiYXNlLCBucl9scGlzKTsKLQlpZiAoIW5ldykKJiM0MzsJbXV0ZXhfbG9jaygmYW1wO2xwaV9yYW5nZV9sb2NrKTsKJiM0MzsKJiM0MzsJaWYgKFdBUk5fT04obGlzdF9lbXB0eSgmYW1wO2xwaV9mcmVlX2NhY2hlKSkpIHsKJiM0MzsJCW11dGV4X3VubG9jaygmYW1wO2xwaV9yYW5nZV9sb2NrKTsKIAkJcmV0dXJuIC1FTk9NRU07CiYjNDM7CX0KIAotCW11dGV4X2xvY2soJmFtcDtscGlfcmFuZ2VfbG9jayk7CiYjNDM7CW5ldyA9IGxpc3RfZmlyc3RfZW50cnkoJmFtcDtscGlfZnJlZV9jYWNoZSwgc3RydWN0IGxwaV9yYW5nZSwgZW50cnkpOwomIzQzOwlsaXN0X2RlbCgmYW1wO25ldy0mZ3Q7ZW50cnkpOwomIzQzOwomIzQzOwluZXctJmd0O2Jhc2VfaWQgPSBiYXNlOwomIzQzOwluZXctJmd0O3NwYW4gPSBucl9scGlzOwogCiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9yZXZlcnNlKG9sZCwgJmFtcDtscGlfcmFuZ2VfbGlzdCwgZW50cnkpIHsKIAkJaWYgKG9sZC0mZ3Q7YmFzZV9pZCAmbHQ7IGJhc2UpCkBAIC0yMTk1LDYgJiM0MzsyMjEzLDcgQEAgc3RhdGljIGludCBfX2luaXQgaXRzX2xwaV9pbml0KHUzMiBpZF9iaXRzKQogewogCXUzMiBscGlzID0gKDFVTCAmbHQ7Jmx0OyBpZF9iaXRzKSAtIDgxOTI7CiAJdTMyIG51bWxwaXM7CiYjNDM7CXN0cnVjdCBscGlfcmFuZ2UgKnJhbmdlOwogCWludCBlcnI7CiAKIAludW1scGlzID0gMVVMICZsdDsmbHQ7IEdJQ0RfVFlQRVJfTlVNX0xQSVMoZ2ljX3JkaXN0cy0mZ3Q7Z2ljZF90eXBlcik7CkBAIC0yMjA1LDYgJiM0MzsyMjI0LDEyIEBAIHN0YXRpYyBpbnQgX19pbml0IGl0c19scGlfaW5pdCh1MzIgaWRfYml0cykKIAkJCWxwaXMpOwogCX0KIAomIzQzOwlyYW5nZSA9IG1rX2xwaV9yYW5nZSgwLCAwKTsKJiM0MzsJaWYgKCFyYW5nZSkKJiM0MzsJCXJldHVybiAtRU5PTUVNOwomIzQzOwomIzQzOwlsaXN0X2FkZCgmYW1wO3JhbmdlLSZndDtlbnRyeSwgJmFtcDtscGlfZnJlZV9jYWNoZSk7CiYjNDM7CiAJLyoKIAkgKiBJbml0aWFsaXppbmcgdGhlIGFsbG9jYXRvciBpcyBqdXN0IHRoZSBzYW1lIGFzIGZyZWVpbmcgdGhlCiAJICogZnVsbCByYW5nZSBvZiBMUElzLgpAQCAtMjIzNCw4ICYjNDM7MjI1OSwxMCBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyAqaXRzX2xwaV9hbGxvYyhpbnQgbnJfaXJxcywgdTMyICpiYXNlLCBpbnQgKm5yX2lkcykKIAkJZ290byBvdXQ7CiAKIAliaXRtYXAgPSBiaXRtYXBfemFsbG9jKG5yX2lycXMsIEdGUF9BVE9NSUMpOwotCWlmICghYml0bWFwKQomIzQzOwlpZiAoIWJpdG1hcCkgewomIzQzOwkJZnJlZV9scGlfcmFuZ2UoKmJhc2UsIG5yX2lycXMpOwogCQlnb3RvIG91dDsKJiM0MzsJfQogCiAJKm5yX2lkcyA9IG5yX2lycXM7CiAKQEAgLTIyNDgsNyAmIzQzOzIyNzUsNyBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyAqaXRzX2xwaV9hbGxvYyhpbnQgbnJfaXJxcywgdTMyICpiYXNlLCBpbnQgKm5yX2lkcykKIAogc3RhdGljIHZvaWQgaXRzX2xwaV9mcmVlKHVuc2lnbmVkIGxvbmcgKmJpdG1hcCwgdTMyIGJhc2UsIHUzMiBucl9pZHMpCiB7Ci0JV0FSTl9PTihmcmVlX2xwaV9yYW5nZShiYXNlLCBucl9pZHMpKTsKJiM0MzsJZnJlZV9scGlfcmFuZ2UoYmFzZSwgbnJfaWRzKTsKIAliaXRtYXBfZnJlZShiaXRtYXApOwogfQogCkBAIC0zNTEwLDcgJiM0MzszNTM3LDggQEAgc3RhdGljIHN0cnVjdCBpdHNfZGV2aWNlICppdHNfY3JlYXRlX2RldmljZShzdHJ1Y3QgaXRzX25vZGUgKml0cywgdTMyIGRldl9pZCwKIAlpZiAoIWRldiB8fCAhaXR0IHx8ICFjb2xfbWFwIHx8ICghbHBpX21hcCAmYW1wOyZhbXA7IGFsbG9jX2xwaXMpKSB7CiAJCWtmcmVlKGRldik7CiAJCWl0dF9mcmVlX3Bvb2woaXR0LCBzeik7Ci0JCWJpdG1hcF9mcmVlKGxwaV9tYXApOwomIzQzOwkJaWYgKGxwaV9tYXApCiYjNDM7CQkJaXRzX2xwaV9mcmVlKGxwaV9tYXAsIGxwaV9iYXNlLCBucl9scGlzKTsKIAkJa2ZyZWUoY29sX21hcCk7CiAJCXJldHVybiBOVUxMOwogCX0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTA6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzMyNQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDI2MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBHSUN2MyBJVFMgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmNgLiBTZWVtcyBsaWtlIHRoZXkmIzM5O3JlIG1ha2luZyBzb21lIGNoYW5nZXMgdG8gaG93IExQSSByYW5nZXMgYXJlIGhhbmRsZWQgaW4gdGhlIEdJQ3YzIElUUyBkcml2ZXIuIFNwZWNpZmljYWxseSwgdGhleSYjMzk7cmUgaW50cm9kdWNpbmcgYSBgbHBpX2ZyZWVfY2FjaGVgIGxpc3QgdG8gdHJ5IGFuZCBvcHRpbWl6ZSBtZW1vcnkgbWFuYWdlbWVudCwgY2FjaGluZyBgbHBpX3JhbmdlYCBvYmplY3RzIGFuZCBhdm9pZGluZyBhbGxvY2F0aW9uIGR1cmluZyBgZnJlZV9scGlfcmFuZ2VgLiBUaGF0JiMzOTtzIGEgY2xhc3NpYyBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb247IGNhY2hpbmcgaXMgYSBnb29kIG1vdmUgdG8gcmVkdWNlIG92ZXJoZWFkLiBUaGVyZSYjMzk7cyBhbHNvIGEgZml4IGZvciBhIG1lbW9yeSBsZWFrIGluIGBpdHNfY3JlYXRlX2RldmljZWAgd2hlcmUgdGhleSB3ZXJlIHVzaW5nIHRoZSB3cm9uZyBmcmVlIGZ1bmN0aW9uIGZvciBgbHBpX21hcGAuIEdvb2QgY2F0Y2g7IG1lbW9yeSBsZWFrcyBhcmUgdGhlIGJhbmUgb2YgbXkgZXhpc3RlbmNlLgoKTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uIGlzOiBjYW4gSSBhY3R1YWxseSB0ZXN0IHRoaXMgaW4gYSByZWFzb25hYmxlIGVudmlyb25tZW50PyBHSUN2MyBJVFMgaXMgcHJpbWFyaWx5IGFuIEFSTTY0IHRoaW5nLCBhbmQgdGhlIHBhdGNoIGlzIGluIHRoZSBkcml2ZXIuIE9mIGNvdXJzZSwgUUVNVSBoYXMgR0lDdjMgSVRTIGVtdWxhdGlvbi4gSSBjYW4gZWFzaWx5IGJvb3QgYSB2aXJ0dWFsaXplZCBBUk02NCBzeXN0ZW0gd2l0aCBzb21ldGhpbmcgbGlrZSBgcWVtdS1zeXN0ZW0tYWFyY2g2NCAtbWFjaGluZSB2aXJ0LGdpYy12ZXJzaW9uPTMsaXRzPW9uYC4gU28sIHllcywgaXQmIzM5O3MgZGVmaW5pdGVseSB0ZXN0YWJsZSBpbiBhIHN0YW5kYXJkIFFFTVUgc2V0dXAuIFRoYXQmIzM5O3MgYSByZWxpZWYuCgpOZXh0IHVwLCBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgY29uZmlnIG9wdGlvbnMuIFRoaXMgY29kZSBpcyBwcm9iYWJseSBjb21waWxlZCBpZiBgQ09ORklHX0FSTV9HSUNfVjNfSVRTYCBpcyBlbmFibGVkLiBUaW1lIHRvIGdvIGRpZyB0aHJvdWdoIHRoZSBLY29uZmlnIGZpbGVzIGFuZCB2ZXJpZnkgdGhhdCBoeXBvdGhlc2lzLiBObyBwb2ludCBpbiBzcGVuZGluZyB0aW1lIG9uIGl0IGlmIHRoZSBjb25maWcgaXNuJiMzOTt0IHNldCwgYWx0aG91Z2ggaWYgaXQmIzM5O3MgdGhlcmUsIEkmIzM5O2xsIGJlIHN1cmUgdG8gdmVyaWZ5IHRoZSBpbXBsaWNhdGlvbnMgb24gYSBzdGFuZGFyZCBidWlsZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxMDoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcnEtZ2ljLXYzLWl0cy5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9pcnFjaGlwL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaXJxY2hpcC9NYWtlZmlsZT0zNj1vYmotJChDT05GSUdfQVJNX0dJQ19JVFNfUEFSRU5UKVx0JiM0Mzs9IGlycS1naWMtaXRzLW1zaS1wYXJlbnQub1xuZHJpdmVycy9pcnFjaGlwL01ha2VmaWxlOjM3Om9iai0kKENPTkZJR19BUk1fR0lDX1YzX0lUUylcdFx0JiM0Mzs9IGlycS1naWMtdjMtaXRzLm8gaXJxLWdpYy12NC5vXG5kcml2ZXJzL2lycWNoaXAvTWFrZWZpbGUtMzgtb2JqLSQoQ09ORklHX0FSTV9HSUNfVjUpXHRcdCYjNDM7PSBpcnEtZ2ljLXY1Lm8gaXJxLWdpYy12NS1pcnMubyBpcnEtZ2ljLXY1LWl0cy5vIFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTA6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDE1OAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkludmVzdGlnYXRpbmcgSW50ZXJydXB0IENvbnRyb2xsZXIgQ29uZmlndXJhdGlvbioqCgpSaWdodCwgc28gYENPTkZJR19BUk1fR0lDX1YzX0lUU2AgaXMgdGhlIGtleSBjb25maWd1cmF0aW9uIG9wdGlvbiB3ZSYjMzk7cmUgbG9va2luZyBhdCBoZXJlLiBUaGF0JiMzOTtzIHRoZSBzdGFydGluZyBwb2ludC4gQnV0LCBhcyB3ZSBhbGwga25vdywgbm90aGluZyBpcyBldmVyIHF1aXRlIHRoYXQgc2ltcGxlIGluIHRoZXNlIHN5c3RlbXMsIGlzIGl0PyBXZSBjYW4mIzM5O3QganVzdCBhc3N1bWUgaXQmIzM5O3MgdGhlIG9ubHkgcmVsZXZhbnQgY29uZmlndXJhdGlvbi4gU28sIG15IG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGRpdmUgZGVlcGVyLiBJIG5lZWQgdG8gcXVpY2tseSBzY2FuIGFuZCB2ZXJpZnkuIEkgbmVlZCB0byBjaGVjayB0aGUgZW50aXJlIHN5c3RlbSB0byBzZWUgaWYgdGhlcmUgYXJlICphbnkqIG90aGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIGludGVycnVwdCBjb250cm9sbGVycyB0aGF0IG1pZ2h0IGludGVyYWN0IHdpdGgsIG9yIGluZmx1ZW5jZSwgdGhlIGJlaGF2aW9yIG9mIEdJQ3YzIElUUy4gV2UgY2FuJiMzOTt0IG1pc3MgYW55dGhpbmcgdGhhdCYjMzk7cyBnb2luZyB0byBhZmZlY3QgdGhlIG91dGNvbWUuIEdvdHRhIG1ha2Ugc3VyZSB3ZSBoYXZlIHRoZSBmdWxsIHBpY3R1cmUgYmVmb3JlIG1vdmluZyBmb3J3YXJkLiBMZXQmIzM5O3MgbWFrZSBzdXJlIG5vdGhpbmcgaXMgb3Zlcmxvb2tlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxMDoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQVJNX0dJQ19WM19JVFMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2lycWNoaXAvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2lycWNoaXAvS2NvbmZpZz00Mz1jb25maWcgQVJNX0dJQ19JVFNfUEFSRU5UXG4tLVxuZHJpdmVycy9pcnFjaGlwL0tjb25maWctNDUtXG5kcml2ZXJzL2lycWNoaXAvS2NvbmZpZzo0Njpjb25maWcgQVJNX0dJQ19WM19JVFNcbmRyaXZlcnMvaXJxY2hpcC9LY29uZmlnLTQ3LVx0Ym9vbFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEwOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1MDIKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcyBhcyBJIGFwcHJvYWNoIHRoZSBjb2RlOgoKKipBbmFseXppbmcgdGhlIFNlbGVjdGlvbiBvZiBgQVJNX0dJQ19WM19JVFNgKioKCkFscmlnaHQsIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoeSB0aGlzIGNvZGUgcGF0aCwgc3BlY2lmaWNhbGx5IHRoZSBvbmUgcmVsYXRlZCB0byBgQVJNX0dJQ19WM19JVFNgLCBpcyBiZWluZyBjaG9zZW4uICBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIHRoZSBjb25kaXRpb25hbHMgdGhhdCBsZWFkIHRvIHRoaXMgc3BlY2lmaWMgc2VsZWN0aW9uLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgZm9yIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGhhcmR3YXJlIGNhcGFiaWxpdGllcyB0aGF0IHdvdWxkIHRyaWdnZXIgdGhpcy4gSSYjMzk7bGwgbWVudGFsbHkgbWFwIG91dCB0aGUgZGVwZW5kZW5jaWVzLiBJcyBpdCBhIHByb2Nlc3NvciBmZWF0dXJlLCBhIHBsYXRmb3JtIGNvbmZpZ3VyYXRpb24sIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIGFuZCB0aGUgcG90ZW50aWFsIGRyaXZlcnMgaW4gcGxheSBoZXJlLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgc2NhbiBmb3IgcmVsYXRlZCBkZWZpbmVzLCB2YXJpYWJsZXMsIGFuZCBwb3RlbnRpYWwgaW50ZXJhY3Rpb25zIHdpdGggb3RoZXIgaW50ZXJydXB0IGNvbnRyb2xsZXIgaW1wbGVtZW50YXRpb25zLiAgSSBleHBlY3QgdG8gYmUgbG9va2luZyBmb3IgQVJNdjggYXJjaGl0ZWN0dXJlIGZlYXR1cmVzIGFuZCBob3cgdGhleSBhcmUgbGV2ZXJhZ2VkIGluIHRoaXMgY29udGV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxMDoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZWxlY3QgQVJNX0dJQ19WM19JVFMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm0vS2NvbmZpZy5wbGF0Zm9ybXM9NTU9Y29uZmlnIEFSQ0hfVklSVFxuLS1cbmFyY2gvYXJtL0tjb25maWcucGxhdGZvcm1zLTYxLVx0c2VsZWN0IEFSTV9HSUNfVjNcbmFyY2gvYXJtL0tjb25maWcucGxhdGZvcm1zOjYyOlx0c2VsZWN0IEFSTV9HSUNfVjNfSVRTIGlmIFBDSVxuYXJjaC9hcm0vS2NvbmZpZy5wbGF0Zm9ybXMtNjMtXHRzZWxlY3QgQVJNX1BTQ0lcbi0tXG5hcmNoL2FybTY0L0tjb25maWc9Mj1jb25maWcgQVJNNjRcbi0tXG5hcmNoL2FybTY0L0tjb25maWctMTA1LVx0c2VsZWN0IEFSTV9HSUNfVjNcbmFyY2gvYXJtNjQvS2NvbmZpZzoxMDY6XHRzZWxlY3QgQVJNX0dJQ19WM19JVFMgaWYgUENJXG5hcmNoL2FybTY0L0tjb25maWctMTA3LVx0c2VsZWN0IEFSTV9HSUNfVjVcbi0tXG5kcml2ZXJzL2lycWNoaXAvS2NvbmZpZz0yMTA9Y29uZmlnIEhJU0lMSUNPTl9JUlFfTUJJR0VOXG4tLVxuZHJpdmVycy9pcnFjaGlwL0tjb25maWctMjEyLVx0c2VsZWN0IEFSTV9HSUNfVjNcbmRyaXZlcnMvaXJxY2hpcC9LY29uZmlnOjIxMzpcdHNlbGVjdCBBUk1fR0lDX1YzX0lUU1xuZHJpdmVycy9pcnFjaGlwL0tjb25maWctMjE0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEwOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwMjAKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAxNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBHSUN2MyBJVFMgSW1wbGVtZW50YXRpb24qKgoKT2theSwgc28gSSBzZWUgdGhhdCBgQVJNX0dJQ19WM19JVFNgIGlzIGJlaW5nIHNlbGVjdGVkIHdoZW4gdGhlIGBBUk02NGAgYXJjaGl0ZWN0dXJlIGlzIGVuYWJsZWQgYW5kIGBQQ0lgIHN1cHBvcnQgaXMgcHJlc2VudC4gVGhhdCBtYWtlcyBzZW5zZSwgYW5kIEkmIzM5O20gY29uZmlkZW50IGl0JiMzOTtzIGEgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsIGNvbXBvbmVudC4gTm93LCBteSBpbW1lZGlhdGUgZ29hbCBpcyB0byB1bmRlcnN0YW5kIHRoZSBjaGFuZ2VzIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaCwgc28gSSBuZWVkIHRvIGZpbmQgdGhlIGNvcmUgZm9jdXMgc3ltYm9scy4KCkkgc2VlIGl0JiMzOTtzIHRvdWNoaW5nIHF1aXRlIGEgZmV3IGZ1bmN0aW9ucyB3aXRoaW4gdGhlIElUUyBzdWJzeXN0ZW06IGBhbGxvY19scGlfcmFuZ2VgLCBgZnJlZV9scGlfcmFuZ2VgLCBgaXRzX2xwaV9pbml0YCAod2hpY2ggaXMgbWFya2VkIGFzIGBfX2luaXRgKSwgYGl0c19scGlfYWxsb2NgLCBgaXRzX2xwaV9mcmVlYCwgYW5kIGFsc28gYGl0c19jcmVhdGVfZGV2aWNlYC4gSSB3YW50IHRvIHN0YXJ0IGJ5IHRyYWNpbmcgdGhlIGZ1bmN0aW9uIGNhbGxzLiBUaGUgcGxhY2UgdG8gc3RhcnQgd2l0aCB0aGlzIHNlZW1zIHRvIGJlLCB3aGVyZSBpcyBgaXRzX2NyZWF0ZV9kZXZpY2VgIGJlaW5nIGNhbGxlZD8gVGhhdCBmdW5jdGlvbiBzZWVtcyBsaWtlIGEgZ29vZCBlbnRyeSBwb2ludCB0byB0cmFjZSB0aGUgb3RoZXIgZnVuY3Rpb25zIGJlaW5nIG1vZGlmaWVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxMDoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpdHNfY3JlYXRlX2RldmljZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jPTM0NDk9c3RhdGljIGJvb2wgaXRzX2FsbG9jX3ZwZV90YWJsZSh1MzIgdnBlX2lkKVxuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jLTM0OTAtXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYzozNDkxOnN0YXRpYyBzdHJ1Y3QgaXRzX2RldmljZSAqaXRzX2NyZWF0ZV9kZXZpY2Uoc3RydWN0IGl0c19ub2RlICppdHMsIHUzMiBkZXZfaWQsXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYy0zNDkyLVx0XHRcdFx0XHQgICAgaW50IG52ZWNzLCBib29sIGFsbG9jX2xwaXMpXG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmM9MzU5OD1zdGF0aWMgaW50IGl0c19tc2lfcHJlcGFyZShzdHJ1Y3QgaXJxX2RvbWFpbiAqZG9tYWluLCBzdHJ1Y3QgZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtMzY0MC1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jOjM2NDE6XHRpdHNfZGV2ID0gaXRzX2NyZWF0ZV9kZXZpY2UoaXRzLCBkZXZfaWQsIG52ZWMsIHRydWUpO1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtMzY0Mi1cdGlmICghaXRzX2Rldikge1xuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jPTUxODI9c3RhdGljIGludCBpdHNfaW5pdF92cGVfZG9tYWluKHZvaWQpXG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtNTIwMi1cdGRldmlkID0gR0VOTUFTSyhkZXZpY2VfaWRzKGl0cykgLSAxLCAwKTtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jOjUyMDM6XHR2cGVfcHJveHkuZGV2ID0gaXRzX2NyZWF0ZV9kZXZpY2UoaXRzLCBkZXZpZCwgZW50cmllcywgZmFsc2UpO1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtNTIwNC1cdGlmICghdnBlX3Byb3h5LmRldikge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxMDoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTEwCgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIGluZm9ybWF0aW9uLCBhcyBpZiB0aGVzZSB3ZXJlIG15IGludGVybmFsIHRob3VnaHRzOgoKKipEaXNzZWN0aW5nIGBpdHNfbXNpX3ByZXBhcmVgKioKCk9rYXksIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IGBpdHNfbXNpX3ByZXBhcmVgLiBUaGUgbm90ZXMgY2xlYXJseSBzdGF0ZSB0aGlzIGlzIGFuIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9uLCBhbmQgdGhhdCBpdCYjMzk7cyBwYXJ0IG9mIGBtc2lfZG9tYWluX29wc2AuIFRoYXQgaW1tZWRpYXRlbHkgcHV0cyBpdCBpbnRvIGEgcGFydGljdWxhciBjb250ZXh0IOKAkyBpdCYjMzk7cyBhIGNyaXRpY2FsIGNvbXBvbmVudCwgYSBwdWJsaWMgaW50ZXJmYWNlLCB3aXRoaW4gdGhlIE1TSSBkb21haW4gb3BlcmF0aW9ucy4gVGhpcyBsaWtlbHkgbWVhbnMgaXTigJlzIHJlc3BvbnNpYmxlIGZvciBwcmVwYXJpbmcgc29tZXRoaW5nIHJlbGF0ZWQgdG8gTWVzc2FnZSBTaWduYWxlZCBJbnRlcnJ1cHRzIChNU0lzKS4gTGV0JiMzOTtzIGRpZyBpbiBhbmQgZmlndXJlIG91dCBleGFjdGx5IHdoYXQgcHJlcGFyYXRpb24gaXMgZG9uZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBgaXRzX21zaV9wcmVwYXJlYCBmdW5jdGlvbiYjMzk7cyBwdXJwb3NlLiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGNoZWNraW5nIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uIGl0c2VsZi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTA6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXRzX21zaV9wcmVwYXJlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmM9MzU4Mj1zdGF0aWMgaW50IGl0c19hbGxvY19kZXZpY2VfaXJxKHN0cnVjdCBpdHNfZGV2aWNlICpkZXYsIGludCBudmVjcywgaXJxX2h3X251bWJlcl90ICpod2lycSlcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYy0zNTk3LVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmM6MzU5ODpzdGF0aWMgaW50IGl0c19tc2lfcHJlcGFyZShzdHJ1Y3QgaXJxX2RvbWFpbiAqZG9tYWluLCBzdHJ1Y3QgZGV2aWNlICpkZXYsXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYy0zNTk5LVx0XHRcdCAgIGludCBudmVjLCBtc2lfYWxsb2NfaW5mb190ICppbmZvKVxuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jPTM2ODE9c3RhdGljIHN0cnVjdCBtc2lfZG9tYWluX29wcyBpdHNfbXNpX2RvbWFpbl9vcHMgPSB7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYzozNjgyOlx0Lm1zaV9wcmVwYXJlXHQ9IGl0c19tc2lfcHJlcGFyZSxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jLTM2ODMtXHQubXNpX3RlYXJkb3duXHQ9IGl0c19tc2lfdGVhcmRvd24sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEwOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY0NzAKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiA0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6CgoqKkZvY3VzaW5nIG9uIE1TSSBhbmQgTWVtb3J5IE1hbmFnZW1lbnQqKgoKT2theSwgYGl0c19tc2lfcHJlcGFyZWAgZmVlbHMgbGlrZSB0aGUgcmlnaHQgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZyBpbnRvIHRoaXMuIEl0JiMzOTtzIGEgY2xlYXIgc2lnbmFsLiBCdXQgbm93IEkmIzM5O20gdGhpbmtpbmcsIHdoYXQgYWJvdXQgdGhlIGNvbXBsZW1lbnRhcnkgZnVuY3Rpb24sIGBpdHNfbXNpX3RlYXJkb3duYD8gRG9lcyAqdGhhdCogZnVuY3Rpb24gcHJvcGVybHkgY2xlYW4gdXAgYWZ0ZXIgaXRzIHdvcms/IFNwZWNpZmljYWxseSwgZG9lcyBpdCBjYWxsIGBpdHNfbHBpX2ZyZWVgPyBUaGF0JiMzOTtzIHRoZSBjcml0aWNhbCBxdWVzdGlvbiBJIG5lZWQgdG8gYW5zd2VyLiBJIG5lZWQgdG8ga25vdyBpZiB3ZSYjMzk7cmUgcHJvcGVybHkgcmVsZWFzaW5nIGFsbG9jYXRlZCByZXNvdXJjZXMgYWZ0ZXIgdGhlIE1TSSBzZXR1cCBpcyBjb21wbGV0ZS4gVGhpcyBpcyBsaWtlbHkgd2hlcmUgYSBwb3RlbnRpYWwgbWVtb3J5IGxlYWsgY291bGQgb2NjdXIuIEkmIzM5O20gZ29pbmcgdG8gdHJhY2sgZG93biB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhhdCB0ZWFyZG93biBmdW5jdGlvbiB0byBiZSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxMDoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpdHNfbXNpX3RlYXJkb3duJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmM9MzU5OD1zdGF0aWMgaW50IGl0c19tc2lfcHJlcGFyZShzdHJ1Y3QgaXJxX2RvbWFpbiAqZG9tYWluLCBzdHJ1Y3QgZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtMzY1Ni1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jOjM2NTc6c3RhdGljIHZvaWQgaXRzX21zaV90ZWFyZG93bihzdHJ1Y3QgaXJxX2RvbWFpbiAqZG9tYWluLCBtc2lfYWxsb2NfaW5mb190ICppbmZvKVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtMzY1OC17XG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmM9MzY4MT1zdGF0aWMgc3RydWN0IG1zaV9kb21haW5fb3BzIGl0c19tc2lfZG9tYWluX29wcyA9IHtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jLTM2ODItXHQubXNpX3ByZXBhcmVcdD0gaXRzX21zaV9wcmVwYXJlLFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmM6MzY4MzpcdC5tc2lfdGVhcmRvd25cdD0gaXRzX21zaV90ZWFyZG93bixcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jLTM2ODQtfTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTA6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzAyNwoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdW5kZXJzdGFuZGluZywgcHJlc2VudGVkIGFzIGEgcGVyc29uYWwgdGhvdWdodCBwcm9jZXNzLCBnaXZlbiBteSBleHBlcnRpc2U6CgoqKkRpc3NlY3RpbmcgYGl0c19tc2lfdGVhcmRvd25gKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoaXMgYGl0c19tc2lfdGVhcmRvd25gIGZ1bmN0aW9uIG9yIHByb2Nlc3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBmdW5jdGlvbiBhbmQgcHVycG9zZSwgZ2l2ZW4gdGhlIGNvbnRleHQgdGhhdCBpdCYjMzk7cyBkZXNpZ25lZCB0byBiZSB0b3JuIGRvd24uIEkmIzM5O2xsIG5lZWQgdG8ga25vdyB3aGF0IGl04oCZcyBpbnRlbmRlZCB0byBkbzsgcHJlc3VtYWJseSwgaXQmIzM5O3Mgc29tZXRoaW5nIGludm9sdmVkIHdpdGggTVNJIChNZXNzYWdlIFNpZ25hbGVkIEludGVycnVwdHMpLCBhbmQgaXRzIHRlYXJkb3duIGltcGxpZXMgYSBjb250cm9sbGVkIGFuZCBwb3RlbnRpYWxseSByZXZlcnNpYmxlIHNodXRkb3duIG9yIGNsZWFudXAgcHJvY2VkdXJlLiBHaXZlbiBteSBleHBlcmllbmNlLCBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBjbHVlcyBhYm91dCByZXNvdXJjZXMgaXQgbWFuYWdlcywgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBoYXJkd2FyZSBvciBvcGVyYXRpbmcgc3lzdGVtLCBhbmQgdGhlIHBvc3NpYmxlIGltcGFjdCBvZiBpbXByb3BlciB0ZWFyZG93bi4gSXMgaXQgaGFuZGxpbmcgaW50ZXJydXB0IHZlY3RvcnMsIG1lbW9yeSByZWdpb25zLCBvciBkZXZpY2Ugc3RhdGU/IFRoaXMgd2lsbCBiZSBpbnRlcmVzdGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTA6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDM2NTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MzY1MDpcdFx0cHJfZGVidWcoXCYjMzQ7SVRUICVkIGVudHJpZXMsICVkIGJpdHNcXG5cJiMzNDssIG52ZWMsIGlsb2cyKG52ZWMpKTtcbjM2NTE6XHRvdXQ6XG4zNjUyOlx0XHRtdXRleF91bmxvY2soXHUwMDI2aXRzLVx1MDAzZWRldl9hbGxvY19sb2NrKTtcbjM2NTM6XHRcdGluZm8tXHUwMDNlc2NyYXRjaHBhZFswXS5wdHIgPSBpdHNfZGV2O1xuMzY1NDpcdFx0cmV0dXJuIGVycjtcbjM2NTU6XHR9XG4zNjU2Olx0XG4zNjU3Olx0c3RhdGljIHZvaWQgaXRzX21zaV90ZWFyZG93bihzdHJ1Y3QgaXJxX2RvbWFpbiAqZG9tYWluLCBtc2lfYWxsb2NfaW5mb190ICppbmZvKVxuMzY1ODpcdHtcbjM2NTk6XHRcdHN0cnVjdCBpdHNfZGV2aWNlICppdHNfZGV2ID0gaW5mby1cdTAwM2VzY3JhdGNocGFkWzBdLnB0cjtcbjM2NjA6XHRcbjM2NjE6XHRcdGd1YXJkKG11dGV4KShcdTAwMjZpdHNfZGV2LVx1MDAzZWl0cy1cdTAwM2VkZXZfYWxsb2NfbG9jayk7XG4zNjYyOlx0XG4zNjYzOlx0XHQvKiBJZiB0aGUgZGV2aWNlIGlzIHNoYXJlZCwga2VlcCBldmVyeXRoaW5nIGFyb3VuZCAqL1xuMzY2NDpcdFx0aWYgKGl0c19kZXYtXHUwMDNlc2hhcmVkKVxuMzY2NTpcdFx0XHRyZXR1cm47XG4zNjY2Olx0XG4zNjY3Olx0XHQvKiBMUElzIHNob3VsZCBoYXZlIGJlZW4gYWxyZWFkeSB1bm1hcHBlZCBhdCB0aGlzIHN0YWdlICovXG4zNjY4Olx0XHRpZiAoV0FSTl9PTl9PTkNFKCFiaXRtYXBfZW1wdHkoaXRzX2Rldi1cdTAwM2VldmVudF9tYXAubHBpX21hcCxcbjM2Njk6XHRcdFx0XHRcdCAgICAgICBpdHNfZGV2LVx1MDAzZWV2ZW50X21hcC5ucl9scGlzKSkpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEwOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc2MjYKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHByZXNlbnRlZCBhcyBpZiBpdCB3ZXJlIG15IG93biBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkRpdmluZyBEZWVwZXIgaW50byB0aGUgTVNJIFRlYXJkb3duKioKCkFscmlnaHQsIHRpbWUgdG8gZGlnIGJhY2sgaW50byBgaXRzX21zaV90ZWFyZG93bmAuIEkmIzM5O20gZ29pbmcgdG8gcmV2aXNpdCB0aGF0IGRhdGEgc2V0LCBleHBlY3RpbmcgdG8gZmluZCBzb21lIGNydWNpYWwgaW5zaWdodHMgSSBtYXkgaGF2ZSBtaXNzZWQgZHVyaW5nIHRoZSBpbml0aWFsIHJldmlldy4gSeKAmW0gdGhpbmtpbmcgdGhlcmUgbWlnaHQgYmUgbnVhbmNlcyBidXJpZWQgaW4gdGhlIGNvbXBvbmVudC1sZXZlbCBhbmFseXNpcyB0aGF0IHdhcnJhbnQgYSBzZWNvbmQsIG1vcmUgZm9jdXNlZCBsb29rLiBQZXJoYXBzIGEgZGVlcGVyIGRpdmUgd2lsbCByZXZlYWwgc29tZXRoaW5nIG5vdmVsIGFib3V0IHRoZWlyIHRoZXJtYWwgbWFuYWdlbWVudCBzdHJhdGVneSwgb3IgbWF5YmUgZXZlbiBpZGVudGlmeSBzdWJ0bGUgY29zdC1jdXR0aW5nIG1lYXN1cmVzIHRoYXQgd2VyZSBpbml0aWFsbHkgb2JzY3VyZWQgYnkgdGhlIGJyb2FkZXIgYXJjaGl0ZWN0dXJlLiBJJiMzOTttIGVzcGVjaWFsbHkga2VlbiB0byBzZWUgaWYgYW55IG9mIHRoZSBhc3N1bXB0aW9ucyBJIG1hZGUgZWFybGllciBob2xkIHVwIHVuZGVyIG1vcmUgc2NydXRpbnkg4oCTIHNvbWV0aW1lcyBpbml0aWFsIGludGVycHJldGF0aW9ucyBjYW4gYmUgdG9vIHNpbXBsaXN0aWMuIEhvcGVmdWxseSwgdGhpcyBkZWVwZXIgZXhwbG9yYXRpb24gd2lsbCBoZWxwIGNlbWVudCBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzeXN0ZW0mIzM5O3MgZGVzaWduIGNob2ljZXMgYW5kIHVsdGltYXRlbHkgaW5mb3JtIG15IG93biB3b3JrLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEwOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzNjcwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzM2NzA6XHRcdFx0cmV0dXJuO1xuMzY3MTpcdFxuMzY3MjpcdFx0aXRzX2xwaV9mcmVlKGl0c19kZXYtXHUwMDNlZXZlbnRfbWFwLmxwaV9tYXAsXG4zNjczOlx0XHRcdCAgICAgaXRzX2Rldi1cdTAwM2VldmVudF9tYXAubHBpX2Jhc2UsXG4zNjc0Olx0XHRcdCAgICAgaXRzX2Rldi1cdTAwM2VldmVudF9tYXAubnJfbHBpcyk7XG4zNjc1Olx0XG4zNjc2Olx0XHQvKiBVbm1hcCBkZXZpY2UvaXR0LCBhbmQgZ2V0IHJpZCBvZiB0aGUgdHJhY2tpbmcgKi9cbjM2Nzc6XHRcdGl0c19zZW5kX21hcGQoaXRzX2RldiwgMCk7XG4zNjc4Olx0XHRpdHNfZnJlZV9kZXZpY2UoaXRzX2Rldik7XG4zNjc5Olx0fVxuMzY4MDpcdFxuMzY4MTpcdHN0YXRpYyBzdHJ1Y3QgbXNpX2RvbWFpbl9vcHMgaXRzX21zaV9kb21haW5fb3BzID0ge1xuMzY4MjpcdFx0Lm1zaV9wcmVwYXJlXHQ9IGl0c19tc2lfcHJlcGFyZSxcbjM2ODM6XHRcdC5tc2lfdGVhcmRvd25cdD0gaXRzX21zaV90ZWFyZG93bixcbjM2ODQ6XHR9O1xuMzY4NTpcdFxuMzY4NjpcdHN0YXRpYyBpbnQgaXRzX2lycV9naWNfZG9tYWluX2FsbG9jKHN0cnVjdCBpcnFfZG9tYWluICpkb21haW4sXG4zNjg3Olx0XHRcdFx0XHQgICAgdW5zaWduZWQgaW50IHZpcnEsXG4zNjg4Olx0XHRcdFx0XHQgICAgaXJxX2h3X251bWJlcl90IGh3aXJxKVxuMzY4OTpcdHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTA6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODIyNgoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDQzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEdJQ3YzIElUUyBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBgaXRzX21zaV90ZWFyZG93bmAgZG9lcyBpbmRlZWQgY2FsbCBgaXRzX2xwaV9mcmVlYCwgY29uZmlybWluZyBteSBpbml0aWFsIHRob3VnaHQuIFRoYXQgbWVhbnMgYGl0c19tc2lfcHJlcGFyZWAgYW5kIGBpdHNfbXNpX3RlYXJkb3duYCBhcmUgdGhlIGtleSBmdW5jdGlvbnMgdG8gZm9jdXMgb24gZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGNoYW5nZXMuCgpMZXQmIzM5O3Mgc2VlIGlmIHRoZXJlIGFyZSBvdGhlciBlbnRyeSBwb2ludHMgb2YgaW50ZXJlc3QuIFRoZSBwYXRjaCBtb2RpZmllcyBgaXRzX2xwaV9pbml0YCwgd2hpY2ggaXMsIG9mIGNvdXJzZSwgY2FsbGVkIGR1cmluZyBpbml0aWFsaXphdGlvbi4gSSBzZWUgYGl0c19jcmVhdGVfZGV2aWNlYCwgd2hpY2ggaXMgY2FsbGVkIGJ5IGJvdGggYGl0c19tc2lfcHJlcGFyZWAgYW5kIGBpdHNfaW5pdF92cGVfZG9tYWluYC4gQW5kLCBuYXR1cmFsbHksIGBpdHNfaW5pdF92cGVfZG9tYWluYCBpcyBhbHNvIGNhbGxlZCBkdXJpbmcgaW5pdGlhbGl6YXRpb24uCgpUaGVyZWZvcmUsIHRoZSBjb3JlIGZ1bmN0aW9uYWwgY2hhbmdlcyBhcmUgY2VudGVyZWQgYXJvdW5kIExQSSBhbGxvY2F0aW9uIGFuZCBmcmVlaW5nLCB0cmlnZ2VyZWQgc3BlY2lmaWNhbGx5IGJ5IHRoZSBNU0kgcHJlcGFyZSBhbmQgdGVhcmRvd24gY2FsbHMuIFRvIHJlaXRlcmF0ZSwgYGl0c19tc2lfcHJlcGFyZWAgYW5kIGBpdHNfbXNpX3RlYXJkb3duYCBhcmUgZGVmaW5pdGVseSB0aGUgYmVzdCBzeW1ib2xzIHRvIGNvbmNlbnRyYXRlIG9uLgoKTm93LCBJIG5lZWQgdG8gY2hlY2sgaWYgc2ltcGx5IGVuYWJsaW5nIGBBUk1fR0lDX1YzX0lUU2AgaXMgc3VmZmljaWVudC4gWWVzLCBgQVJNX0dJQ19WM19JVFNgIGlzIHRoZSBjb25maWcgb3B0aW9uIGZvciB0aGlzIGZpbGUuIEhvd2V2ZXIsIHdhaXQgYSBtaW51dGUsIGBBUk1fR0lDX1YzX0lUU2AgaXMgYSBib29sZWFuIHZhbHVlIHdpdGhvdXQgYSB1c2VyLXZpc2libGUgcHJvbXB0IGluIHRoZSBgZHJpdmVycy9pcnFjaGlwL0tjb25maWdgIGZpbGUuIEl0JiMzOTtzIHNlbGVjdGVkIGlmIGJvdGggYEFSTTY0YCBhbmQgYFBDSWAgYXJlIGVuYWJsZWQuIFNvLCByZWFsaXN0aWNhbGx5LCBJIHNob3VsZCBwcm9iYWJseSBlbmFibGUgYm90aCBgUENJYCBhbmQgYEFSTTY0YCwgYWx0aG91Z2ggYXJjaGl0ZWN0dXJlIGNvbmZpZ3MgYXJlIHVzdWFsbHkgaW1wbGllZCBieSB0aGUgdGFyZ2V0LiBIYW5nIG9uLCBwZXJoYXBzIHRoZSBmdXp6ZXIgd2lsbCBiZSBzbWFydCBlbm91Z2ggdG8gZmlndXJlIG91dCBob3cgdG8gZW5hYmxlIGl0IGJ5IGVuYWJsaW5nIFBDSSBldmVuIGlmIEkganVzdCBzcGVjaWZ5IGBBUk1fR0lDX1YzX0lUU2AuIEFoLCBubywgYEFSTV9HSUNfVjNfSVRTYCBpc24mIzM5O3QgZGlyZWN0bHkgdXNlci1zZWxlY3RhYmxlLiBJIHNob3VsZCBjaGVjayBpZiBJIGNhbiBlbmFibGUgaXQgZGlyZWN0bHkgYW55d2F5LCBhbmQgaWYgbm90LCBsaXN0IGBQQ0lgIGFzIHdlbGwuIFdhaXQgYSBzZWNvbmQsIHRoZSBjb25maWcmIzM5O3Mgc2VsZWN0aW9uIGNyaXRlcmlhIGFyZSBjbGVhciBub3cuIGBBUk1fR0lDX1YzX0lUU2AgaXMgc2VsZWN0ZWQgYnkgYEFSTTY0YCBvbmx5IGlmIGBQQ0lgIGlzIHNlbGVjdGVkLiBUaGVyZWZvcmUsIGl0JiMzOTtzIGBQQ0lgIHRoYXQmIzM5O3MgdGhlIHVzZXItdmlzaWJsZSBjb25maWcgb3B0aW9uIHRoYXQgKmVuYWJsZXMqIGl0LiBUaW1lIHRvIGNoZWNrIGBQQ0lgIGluIGBhcmNoL2FybTY0L0tjb25maWdgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxMDoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUENJJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA4MjEgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmFyY2gvbWlwcy9LY29uZmlnPTEyNTE9Y29uZmlnIElSUV9HVDY0MVhYXG4tLVxuYXJjaC9taXBzL0tjb25maWctMTI1My1cbmFyY2gvbWlwcy9LY29uZmlnOjEyNTQ6Y29uZmlnIFBDSV9HVDY0WFhYX1BDSTBcbmFyY2gvbWlwcy9LY29uZmlnLTEyNTUtXHRib29sXG5hcmNoL21pcHMvS2NvbmZpZy0xMjU2LVxuYXJjaC9taXBzL0tjb25maWc6MTI1Nzpjb25maWcgUENJX1hUQUxLX0JSSURHRVxuYXJjaC9taXBzL0tjb25maWctMTI1OC1cdGJvb2xcbi0tXG5hcmNoL21pcHMvS2NvbmZpZz0zMDE4PW1lbnUgXCYjMzQ7QnVzIG9wdGlvbnMgKFBDSSwgUENNQ0lBLCBFSVNBLCBJU0EsIFRDKVwmIzM0O1xuYXJjaC9taXBzL0tjb25maWctMzAxOS1cbmFyY2gvbWlwcy9LY29uZmlnOjMwMjA6Y29uZmlnIFBDSV9EUklWRVJTX0dFTkVSSUNcbmFyY2gvbWlwcy9LY29uZmlnLTMwMjEtXHRzZWxlY3QgUENJX0RPTUFJTlNfR0VORVJJQyBpZiBQQ0lcbi0tXG5hcmNoL21pcHMvS2NvbmZpZy0zMDIzLVxuYXJjaC9taXBzL0tjb25maWc6MzAyNDpjb25maWcgUENJX0RSSVZFUlNfTEVHQUNZXG5hcmNoL21pcHMvS2NvbmZpZy0zMDI1LVx0ZGVmX2Jvb2wgIVBDSV9EUklWRVJTX0dFTkVSSUNcbi0tXG5hcmNoL21pcHMvYXRoMjUvS2NvbmZpZz03PWNvbmZpZyBTT0NfQVIyMzE1XG4tLVxuYXJjaC9taXBzL2F0aDI1L0tjb25maWctMTEtXG5hcmNoL21pcHMvYXRoMjUvS2NvbmZpZzoxMjpjb25maWcgUENJX0FSMjMxNVxuYXJjaC9taXBzL2F0aDI1L0tjb25maWctMTMtXHRib29sIFwmIzM0O0F0aGVyb3MgQVIyMzE1IFBDSSBjb250cm9sbGVyIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL21pcHMvYXRoNzkvS2NvbmZpZz0yND1jb25maWcgU09DX1FDQTk1NVhcbi0tXG5hcmNoL21pcHMvYXRoNzkvS2NvbmZpZy0yOC1cbmFyY2gvbWlwcy9hdGg3OS9LY29uZmlnOjI5OmNvbmZpZyBQQ0lfQVI3MjRYXG5hcmNoL21pcHMvYXRoNzkvS2NvbmZpZy0zMC1cdGRlZl9ib29sIG5cbi0tXG5hcmNoL21pcHMvbGFudGlxL0tjb25maWc9NDk9ZW5kY2hvaWNlXG5hcmNoL21pcHMvbGFudGlxL0tjb25maWctNTAtXG5hcmNoL21pcHMvbGFudGlxL0tjb25maWc6NTE6Y29uZmlnIFBDSV9MQU5USVFcbmFyY2gvbWlwcy9sYW50aXEvS2NvbmZpZy01Mi1cdGJvb2wgXCYjMzQ7UENJIFN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL21pcHMvdHh4OS9LY29uZmlnPTU2PWNvbmZpZyBQSUNNR19QQ0lfQkFDS1BMQU5FX0RFRkFVTFRcbi0tXG5hcmNoL21pcHMvdHh4OS9LY29uZmlnLTYwLVxuYXJjaC9taXBzL3R4eDkvS2NvbmZpZzo2MTpjb25maWcgUENJX1RYNDkyN1xuYXJjaC9taXBzL3R4eDkvS2NvbmZpZy02Mi1cdGJvb2xcbi0tXG5hcmNoL3MzOTAvS2NvbmZpZz03NDc9aWYgUENJXG5hcmNoL3MzOTAvS2NvbmZpZy03NDgtXG5hcmNoL3MzOTAvS2NvbmZpZzo3NDk6Y29uZmlnIFBDSV9OUl9GVU5DVElPTlNcbmFyY2gvczM5MC9LY29uZmlnLTc1MC1cdGludCBcJiMzNDtNYXhpbXVtIG51bWJlciBvZiBQQ0kgZnVuY3Rpb25zICgxLTQwOTYpXCYjMzQ7XG4tLVxuYXJjaC9zcGFyYy9LY29uZmlnPTM4OD1jb25maWcgU1VOX0xET01TXG4tLVxuYXJjaC9zcGFyYy9LY29uZmlnLTM5NC1cbmFyY2gvc3BhcmMvS2NvbmZpZzozOTU6Y29uZmlnIFBDSUNfUENJXG5hcmNoL3NwYXJjL0tjb25maWctMzk2LVx0Ym9vbFxuLS1cbmFyY2gveDg2L0tjb25maWc9MjgyNj1jaG9pY2Vcbi0tXG5hcmNoL3g4Ni9LY29uZmlnLTI4NDQtXG5hcmNoL3g4Ni9LY29uZmlnOjI4NDU6Y29uZmlnIFBDSV9HT0JJT1NcbmFyY2gveDg2L0tjb25maWctMjg0Ni1cdGJvb2wgXCYjMzQ7QklPU1wmIzM0O1xuYXJjaC94ODYvS2NvbmZpZy0yODQ3LVxuYXJjaC94ODYvS2NvbmZpZzoyODQ4OmNvbmZpZyBQQ0lfR09NTUNPTkZJR1xuYXJjaC94ODYvS2NvbmZpZy0yODQ5LVx0Ym9vbCBcJiMzNDtNTUNvbmZpZ1wmIzM0O1xuYXJjaC94ODYvS2NvbmZpZy0yODUwLVxuYXJjaC94ODYvS2NvbmZpZzoyODUxOmNvbmZpZyBQQ0lfR09ESVJFQ1RcbmFyY2gveDg2L0tjb25maWctMjg1Mi1cdGJvb2wgXCYjMzQ7RGlyZWN0XCYjMzQ7XG5hcmNoL3g4Ni9LY29uZmlnLTI4NTMtXG5hcmNoL3g4Ni9LY29uZmlnOjI4NTQ6Y29uZmlnIFBDSV9HT09MUENcbmFyY2gveDg2L0tjb25maWctMjg1NS1cdGJvb2wgXCYjMzQ7T0xQQyBYTy0xXCYjMzQ7XG4tLVxuYXJjaC94ODYvS2NvbmZpZy0yODU3LVxuYXJjaC94ODYvS2NvbmZpZzoyODU4OmNvbmZpZyBQQ0lfR09BTllcbmFyY2gveDg2L0tjb25maWctMjg1OS1cdGJvb2wgXCYjMzQ7QW55XCYjMzQ7XG4tLVxuYXJjaC94ODYvS2NvbmZpZz0yODYxPWVuZGNob2ljZVxuYXJjaC94ODYvS2NvbmZpZy0yODYyLVxuYXJjaC94ODYvS2NvbmZpZzoyODYzOmNvbmZpZyBQQ0lfQklPU1xuYXJjaC94ODYvS2NvbmZpZy0yODY0LVx0ZGVmX2Jvb2wgeVxuLS1cbmFyY2gveDg2L0tjb25maWctMjg2Ny0jIHg4Ni02NCBkb2VzbiYjMzk7dCBzdXBwb3J0IFBDSSBCSU9TIGFjY2VzcyBmcm9tIGxvbmcgbW9kZSBzbyBhbHdheXMgZ28gZGlyZWN0LlxuYXJjaC94ODYvS2NvbmZpZzoyODY4OmNvbmZpZyBQQ0lfRElSRUNUXG5hcmNoL3g4Ni9LY29uZmlnLTI4NjktXHRkZWZfYm9vbCB5XG4tLVxuYXJjaC94ODYvS2NvbmZpZy0yODcxLVxuYXJjaC94ODYvS2NvbmZpZzoyODcyOmNvbmZpZyBQQ0lfTU1DT05GSUdcbmFyY2gveDg2L0tjb25maWc6Mjg3MzpcdGJvb2wgXCYjMzQ7U3VwcG9ydCBtbWNvbmZpZyBQQ0kgY29uZmlnIHNwYWNlIGFjY2Vzc1wmIzM0OyBpZiBYODZfNjRcbmFyY2gveDg2L0tjb25maWctMjg3NC1cdGRlZmF1bHQgeVxuLS1cbmFyY2gveDg2L0tjb25maWctMjg5MC1cbmFyY2gveDg2L0tjb25maWc6Mjg5MTpjb25maWcgUENJX09MUENcbmFyY2gveDg2L0tjb25maWctMjg5Mi1cdGRlZl9ib29sIHlcbi0tXG5hcmNoL3g4Ni9LY29uZmlnLTI4OTQtXG5hcmNoL3g4Ni9LY29uZmlnOjI4OTU6Y29uZmlnIFBDSV9YRU5cbmFyY2gveDg2L0tjb25maWctMjg5Ni1cdGRlZl9ib29sIHlcbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTI4OTk9Y29uZmlnIE1NQ09ORl9GQU0xMEhcbi0tXG5hcmNoL3g4Ni9LY29uZmlnLTI5MDItXG5hcmNoL3g4Ni9LY29uZmlnOjI5MDM6Y29uZmlnIFBDSV9DTkIyMExFX1FVSVJLXG5hcmNoL3g4Ni9LY29uZmlnLTI5MDQtXHRib29sIFwmIzM0O1JlYWQgUENJIGhvc3QgYnJpZGdlIHdpbmRvd3MgZnJvbSB0aGUgQ05CMjBMRSBjaGlwc2V0XCYjMzQ7IGlmIEVYUEVSVFxuLS1cbmRyaXZlcnMvbWlzYy9LY29uZmlnPTQ2Mj1jb25maWcgRFdfWERBVEFfUENJRVxuLS1cbmRyaXZlcnMvbWlzYy9LY29uZmlnLTQ3MS1cbmRyaXZlcnMvbWlzYy9LY29uZmlnOjQ3Mjpjb25maWcgUENJX0VORFBPSU5UX1RFU1RcbmRyaXZlcnMvbWlzYy9LY29uZmlnLTQ3My1cdGRlcGVuZHMgb24gUENJXG4tLVxuZHJpdmVycy9uZXQvY2FuL3NqYTEwMDAvcGVha19wY2kuYz0zNj1zdHJ1Y3QgcGVha19wY2lfY2hhbiB7XG4tLVxuZHJpdmVycy9uZXQvY2FuL3NqYTEwMDAvcGVha19wY2kuYy01Mi1cbmRyaXZlcnMvbmV0L2Nhbi9zamExMDAwL3BlYWtfcGNpLmM6NTM6I2RlZmluZSBQRUFLX1BDSV9DRkdfU0laRVx0MHgxMDAwXHQvKiBTaXplIG9mIHRoZSBjb25maWcgUENJIGJhciAqL1xuZHJpdmVycy9uZXQvY2FuL3NqYTEwMDAvcGVha19wY2kuYy01NC0jZGVmaW5lIFBFQUtfUENJX0NIQU5fU0laRVx0MHgwNDAwXHQvKiBTaXplIHVzZWQgYnkgdGhlIGNoYW5uZWwgKi9cbi0tXG5kcml2ZXJzL25ldC93YW4vS2NvbmZpZz05OD1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2FuL2ZyYW1lci9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC93YW4vS2NvbmZpZy05OS1cbmRyaXZlcnMvbmV0L3dhbi9LY29uZmlnOjEwMDpjb25maWcgUENJMjAwU1lOXG5kcml2ZXJzL25ldC93YW4vS2NvbmZpZy0xMDEtXHR0cmlzdGF0ZSBcJiMzNDtHb3JhbW8gUENJMjAwU1lOIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL3BhcmlzYy9LY29uZmlnPTU5PWNvbmZpZyBHU0NfRElOT1xuLS1cbmRyaXZlcnMvcGFyaXNjL0tjb25maWctNjktXG5kcml2ZXJzL3BhcmlzYy9LY29uZmlnOjcwOmNvbmZpZyBQQ0lfTEJBXG5kcml2ZXJzL3BhcmlzYy9LY29uZmlnLTcxLVx0Ym9vbCBcJiMzNDtMQkEvRWxyb3kgUENJIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL3BjaS9LY29uZmlnPTE4PWNvbmZpZyBHRU5FUklDX1BDSV9JT01BUFxuLS1cbmRyaXZlcnMvcGNpL0tjb25maWctMjAtXG5kcml2ZXJzL3BjaS9LY29uZmlnOjIxOm1lbnVjb25maWcgUENJXG5kcml2ZXJzL3BjaS9LY29uZmlnLTIyLVx0Ym9vbCBcJiMzNDtQQ0kgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvcGNpL0tjb25maWc9MzA9aWYgUENJXG5kcml2ZXJzL3BjaS9LY29uZmlnLTMxLVxuZHJpdmVycy9wY2kvS2NvbmZpZzozMjpjb25maWcgUENJX0RPTUFJTlNcbmRyaXZlcnMvcGNpL0tjb25maWctMzMtXHRib29sXG5kcml2ZXJzL3BjaS9LY29uZmlnLTM0LVxuZHJpdmVycy9wY2kvS2NvbmZpZzozNTpjb25maWcgUENJX0RPTUFJTlNfR0VORVJJQ1xuZHJpdmVycy9wY2kvS2NvbmZpZy0zNi1cdGJvb2xcbi0tXG5kcml2ZXJzL3BjaS9LY29uZmlnLTM4LVxuZHJpdmVycy9wY2kvS2NvbmZpZzozOTpjb25maWcgUENJX1NZU0NBTExcbmRyaXZlcnMvcGNpL0tjb25maWctNDAtXHRib29sXG4tLVxuZHJpdmVycy9wY2kvS2NvbmZpZz00Mj1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9wY2kvcGNpZS9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL3BjaS9LY29uZmlnLTQzLVxuZHJpdmVycy9wY2kvS2NvbmZpZzo0NDpjb25maWcgUENJX01TSVxuZHJpdmVycy9wY2kvS2NvbmZpZy00NS1cdGJvb2wgXCYjMzQ7TWVzc2FnZSBTaWduYWxlZCBJbnRlcnJ1cHRzIChNU0kgYW5kIE1TSS1YKVwmIzM0O1xuLS1cbmRyaXZlcnMvcGNpL0tjb25maWctNTgtXG5kcml2ZXJzL3BjaS9LY29uZmlnOjU5OmNvbmZpZyBQQ0lfTVNJX0FSQ0hfRkFMTEJBQ0tTXG5kcml2ZXJzL3BjaS9LY29uZmlnLTYwLVx0Ym9vbFxuZHJpdmVycy9wY2kvS2NvbmZpZy02MS1cbmRyaXZlcnMvcGNpL0tjb25maWc6NjI6Y29uZmlnIFBDSV9RVUlSS1NcbmRyaXZlcnMvcGNpL0tjb25maWctNjMtXHRkZWZhdWx0IHlcbi0tXG5kcml2ZXJzL3BjaS9LY29uZmlnLTY5LVxuZHJpdmVycy9wY2kvS2NvbmZpZzo3MDpjb25maWcgUENJX0RFQlVHXG5kcml2ZXJzL3BjaS9LY29uZmlnLTcxLVx0Ym9vbCBcJiMzNDtQQ0kgRGVidWdnaW5nXCYjMzQ7XG4tLVxuZHJpdmVycy9wY2kvS2NvbmZpZy03OS1cbmRyaXZlcnMvcGNpL0tjb25maWc6ODA6Y29uZmlnIFBDSV9SRUFMTE9DX0VOQUJMRV9BVVRPXG5kcml2ZXJzL3BjaS9LY29uZmlnLTgxLVx0Ym9vbCBcJiMzNDtFbmFibGUgUENJIHJlc291cmNlIHJlLWFsbG9jYXRpb24gZGV0ZWN0aW9uXCYjMzQ7XG4tLVxuZHJpdmVycy9wY2kvS2NvbmZpZy05MS1cbmRyaXZlcnMvcGNpL0tjb25maWc6OTI6Y29uZmlnIFBDSV9TVFVCXG5kcml2ZXJzL3BjaS9LY29uZmlnLTkzLVx0dHJpc3RhdGUgXCYjMzQ7UENJIFN0dWIgZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9wY2kvS2NvbmZpZy05OS1cbmRyaXZlcnMvcGNpL0tjb25maWc6MTAwOmNvbmZpZyBQQ0lfUEZfU1RVQlxuZHJpdmVycy9wY2kvS2NvbmZpZy0xMDEtXHR0cmlzdGF0ZSBcJiMzNDtQQ0kgUEYgU3R1YiBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL3BjaS9LY29uZmlnPTExMT1jb25maWcgWEVOX1BDSURFVl9GUk9OVEVORFxuLS1cbmRyaXZlcnMvcGNpL0tjb25maWctMTIwLVxuZHJpdmVycy9wY2kvS2NvbmZpZzoxMjE6Y29uZmlnIFBDSV9BVFNcbmRyaXZlcnMvcGNpL0tjb25maWctMTIyLVx0Ym9vbFxuZHJpdmVycy9wY2kvS2NvbmZpZy0xMjMtXG5kcml2ZXJzL3BjaS9LY29uZmlnOjEyNDpjb25maWcgUENJX0lERVxuZHJpdmVycy9wY2kvS2NvbmZpZy0xMjUtXHRib29sXG5kcml2ZXJzL3BjaS9LY29uZmlnLTEyNi1cbmRyaXZlcnMvcGNpL0tjb25maWc6MTI3OmNvbmZpZyBQQ0lfVFNNXG5kcml2ZXJzL3BjaS9LY29uZmlnLTEyOC1cdGJvb2wgXCYjMzQ7UENJIFRTTTogRGV2aWNlIHNlY3VyaXR5IHByb3RvY29sIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL3BjaS9LY29uZmlnLTE0MS1cbmRyaXZlcnMvcGNpL0tjb25maWc6MTQyOmNvbmZpZyBQQ0lfRE9FXG5kcml2ZXJzL3BjaS9LY29uZmlnLTE0My1cdGJvb2wgXCYjMzQ7RW5hYmxlIFBDSSBEYXRhIE9iamVjdCBFeGNoYW5nZSAoRE9FKSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9wY2kvS2NvbmZpZy0xNDctXG5kcml2ZXJzL3BjaS9LY29uZmlnOjE0ODpjb25maWcgUENJX0VDQU1cbmRyaXZlcnMvcGNpL0tjb25maWctMTQ5LVx0Ym9vbFxuZHJpdmVycy9wY2kvS2NvbmZpZy0xNTAtXG5kcml2ZXJzL3BjaS9LY29uZmlnOjE1MTpjb25maWcgUENJX0xPQ0tMRVNTX0NPTkZJR1xuZHJpdmVycy9wY2kvS2NvbmZpZy0xNTItXHRib29sXG5kcml2ZXJzL3BjaS9LY29uZmlnLTE1My1cbmRyaXZlcnMvcGNpL0tjb25maWc6MTU0OmNvbmZpZyBQQ0lfQlJJREdFX0VNVUxcbmRyaXZlcnMvcGNpL0tjb25maWctMTU1LVx0Ym9vbFxuZHJpdmVycy9wY2kvS2NvbmZpZy0xNTYtXG5kcml2ZXJzL3BjaS9LY29uZmlnOjE1Nzpjb25maWcgUENJX0lPVlxuZHJpdmVycy9wY2kvS2NvbmZpZy0xNTgtXHRib29sIFwmIzM0O1BDSSBJT1Ygc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvcGNpL0tjb25maWctMTY2LVxuZHJpdmVycy9wY2kvS2NvbmZpZzoxNjc6Y29uZmlnIFBDSV9OUEVNXG5kcml2ZXJzL3BjaS9LY29uZmlnLTE2OC1cdGJvb2wgXCYjMzQ7TmF0aXZlIFBDSWUgRW5jbG9zdXJlIE1hbmFnZW1lbnRcJiMzNDtcbi0tXG5kcml2ZXJzL3BjaS9LY29uZmlnLTE3NS1cbmRyaXZlcnMvcGNpL0tjb25maWc6MTc2OmNvbmZpZyBQQ0lfUFJJXG5kcml2ZXJzL3BjaS9LY29uZmlnLTE3Ny1cdGJvb2wgXCYjMzQ7UENJIFBSSSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9wY2kvS2NvbmZpZy0xODQtXG5kcml2ZXJzL3BjaS9LY29uZmlnOjE4NTpjb25maWcgUENJX1BBU0lEXG5kcml2ZXJzL3BjaS9LY29uZmlnLTE4Ni1cdGJvb2wgXCYjMzQ7UENJIFBBU0lEIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL3BjaS9LY29uZmlnLTE5Ni1cbmRyaXZlcnMvcGNpL0tjb25maWc6MTk3OmNvbmZpZyBQQ0lFX1RQSFxuZHJpdmVycy9wY2kvS2NvbmZpZy0xOTgtXHRib29sIFwmIzM0O1RMUCBQcm9jZXNzaW5nIEhpbnRzXCYjMzQ7XG4tLVxuZHJpdmVycy9wY2kvS2NvbmZpZy0yMDUtXG5kcml2ZXJzL3BjaS9LY29uZmlnOjIwNjpjb25maWcgUENJX1AyUERNQVxuZHJpdmVycy9wY2kvS2NvbmZpZy0yMDctXHRib29sIFwmIzM0O1BDSSBwZWVyLXRvLXBlZXIgdHJhbnNmZXIgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvcGNpL0tjb25maWctMjI4LVxuZHJpdmVycy9wY2kvS2NvbmZpZzoyMjk6Y29uZmlnIFBDSV9MQUJFTFxuZHJpdmVycy9wY2kvS2NvbmZpZy0yMzAtXHRkZWZfYm9vbCB5IGlmIChETUkgfHwgQUNQSSlcbi0tXG5kcml2ZXJzL3BjaS9LY29uZmlnLTIzMi1cbmRyaXZlcnMvcGNpL0tjb25maWc6MjMzOmNvbmZpZyBQQ0lfSFlQRVJWXG5kcml2ZXJzL3BjaS9LY29uZmlnLTIzNC1cdHRyaXN0YXRlIFwmIzM0O0h5cGVyLVYgUENJIEZyb250ZW5kXCYjMzQ7XG4tLVxuZHJpdmVycy9wY2kvS2NvbmZpZy0yNDEtXG5kcml2ZXJzL3BjaS9LY29uZmlnOjI0Mjpjb25maWcgUENJX0RZTkFNSUNfT0ZfTk9ERVNcbmRyaXZlcnMvcGNpL0tjb25maWctMjQzLVx0Ym9vbCBcJiMzNDtDcmVhdGUgRGV2aWNlIHRyZWUgbm9kZXMgZm9yIFBDSSBkZXZpY2VzXCYjMzQ7XG4tLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnPTM9bWVudSBcJiMzNDtQQ0kgY29udHJvbGxlciBkcml2ZXJzXCYjMzQ7XG4tLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTUtXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWc6Njpjb25maWcgUENJX0hPU1RfQ09NTU9OXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctNy1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTktXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWc6MTA6Y29uZmlnIFBDSV9BQVJEVkFSS1xuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTExLVx0dHJpc3RhdGUgXCYjMzQ7QWFyZHZhcmsgUENJZSBjb250cm9sbGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTIxLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnOjIyOmNvbmZpZyBQQ0lFX0FMVEVSQVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTIzLVx0dHJpc3RhdGUgXCYjMzQ7QWx0ZXJhIFBDSWUgY29udHJvbGxlclwmIzM0O1xuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0yOC1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZzoyOTpjb25maWcgUENJRV9BTFRFUkFfTVNJXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMzAtXHR0cmlzdGF0ZSBcJiMzNDtBbHRlcmEgUENJZSBNU0kgZmVhdHVyZVwmIzM0O1xuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0zNy1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZzozODpjb25maWcgUENJRV9BUFBMRV9NU0lfRE9PUkJFTExfQUREUlxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTM5LVx0aGV4XG4tLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTQyLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnOjQzOmNvbmZpZyBQQ0lFX0FQUExFXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctNDQtXHR0cmlzdGF0ZSBcJiMzNDtBcHBsZSBQQ0llIGNvbnRyb2xsZXJcJiMzNDtcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctNTYtXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWc6NTc6Y29uZmlnIFBDSV9WRVJTQVRJTEVcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy01OC1cdGJvb2wgXCYjMzQ7QVJNIFZlcnNhdGlsZSBQQiBQQ0kgY29udHJvbGxlclwmIzM0O1xuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy02MC1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZzo2MTpjb25maWcgUENJRV9BU1BFRURcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy02Mi1cdGJvb2wgXCYjMzQ7QVNQRUVEIFBDSWUgY29udHJvbGxlclwmIzM0O1xuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy03Ni1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZzo3Nzpjb25maWcgUENJRV9CUkNNU1RCXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctNzgtXHR0cmlzdGF0ZSBcJiMzNDtCcm9hZGNvbSBCcmNtc3RiIFBDSWUgY29udHJvbGxlclwmIzM0O1xuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy04OC1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZzo4OTpjb25maWcgUENJRV9JUFJPQ1xuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTkwLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctOTUtXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWc6OTY6Y29uZmlnIFBDSUVfSVBST0NfUExBVEZPUk1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy05Ny1cdHRyaXN0YXRlIFwmIzM0O0Jyb2FkY29tIGlQcm9jIFBDSWUgcGxhdGZvcm0gYnVzIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0xMDUtXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWc6MTA2OmNvbmZpZyBQQ0lFX0lQUk9DX0JDTUFcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0xMDctXHR0cmlzdGF0ZSBcJiMzNDtCcm9hZGNvbSBpUHJvYyBCQ01BIFBDSWUgY29udHJvbGxlclwmIzM0O1xuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0xMTUtXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWc6MTE2OmNvbmZpZyBQQ0lFX0lQUk9DX01TSVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTExNy1cdGJvb2wgXCYjMzQ7QnJvYWRjb20gaVByb2MgUENJZSBNU0kgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0xMjUtXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWc6MTI2OmNvbmZpZyBQQ0lfSE9TVF9USFVOREVSX1BFTVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTEyNy1cdGJvb2wgXCYjMzQ7Q2F2aXVtIFRodW5kZXIgUENJZSBjb250cm9sbGVyIHRvIG9mZi1jaGlwIGRldmljZXNcJiMzNDtcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMTMzLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnOjEzNDpjb25maWcgUENJX0hPU1RfVEhVTkRFUl9FQ0FNXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMTM1LVx0Ym9vbCBcJiMzNDtDYXZpdW0gVGh1bmRlciBFQ0FNIGNvbnRyb2xsZXIgdG8gb24tY2hpcCBkZXZpY2VzIG9uIHBhc3MtMS54IHNpbGljb25cJiMzNDtcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMTQxLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnOjE0Mjpjb25maWcgUENJX0ZUUENJMTAwXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMTQzLVx0Ym9vbCBcJiMzNDtGYXJhZGF5IFRlY2hub2xvZ3kgRlRQQ0kxMDAgUENJIGNvbnRyb2xsZXJcJiMzNDtcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMTQ2LVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnOjE0Nzpjb25maWcgUENJX0hPU1RfR0VORVJJQ1xuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTE0OC1cdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgUENJIGhvc3QgY29udHJvbGxlclwmIzM0O1xuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0xNTUtXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWc6MTU2OmNvbmZpZyBQQ0lFX0hJU0lfRVJSXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMTU3LVx0ZGVwZW5kcyBvbiBBQ1BJX0FQRUlfR0hFUyBcdTAwMjZcdTAwMjYgKEFSTTY0IHx8IENPTVBJTEVfVEVTVClcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMTYyLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnOjE2Mzpjb25maWcgUENJX0lYUDRYWFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTE2NC1cdGJvb2wgXCYjMzQ7SW50ZWwgSVhQNHh4IFBDSSBjb250cm9sbGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnPTE3Mj1jb25maWcgVk1EXG4tLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTE4Ny1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZzoxODg6Y29uZmlnIFBDSV9MT09OR1NPTlxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTE4OS1cdGJvb2wgXCYjMzQ7TE9PTkdTT04gUENJZSBjb250cm9sbGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTE5Ny1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZzoxOTg6Y29uZmlnIFBDSV9NVkVCVVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTE5OS1cdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgRUJVIFBDSWUgY29udHJvbGxlclwmIzM0O1xuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0yMDktXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWc6MjEwOmNvbmZpZyBQQ0lFX01FRElBVEVLXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMjExLVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgUENJZSBjb250cm9sbGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTIxOS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZzoyMjA6Y29uZmlnIFBDSUVfTUVESUFURUtfR0VOM1xuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTIyMS1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIEdlbjMgUENJZSBjb250cm9sbGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTIzNC1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZzoyMzU6Y29uZmlnIFBDSUVfTVQ3NjIxXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMjM2LVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3NjIxIFBDSWUgY29udHJvbGxlclwmIzM0O1xuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0yNDItXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWc6MjQzOmNvbmZpZyBQQ0lfSFlQRVJWX0lOVEVSRkFDRVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTI0NC1cdHRyaXN0YXRlIFwmIzM0O01pY3Jvc29mdCBIeXBlci1WIFBDSSBJbnRlcmZhY2VcJiMzNDtcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMjUwLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnOjI1MTpjb25maWcgUENJX1RFR1JBXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMjUyLVx0dHJpc3RhdGUgXCYjMzQ7TlZJRElBIFRlZ3JhIFBDSWUgY29udHJvbGxlclwmIzM0O1xuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0yNTktXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWc6MjYwOmNvbmZpZyBQQ0lFX1JDQVJfSE9TVFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTI2MS1cdGJvb2wgXCYjMzQ7UmVuZXNhcyBSLUNhciBQQ0llIGNvbnRyb2xsZXIgKGhvc3QgbW9kZSlcJiMzNDtcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMjY5LVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnOjI3MDpjb25maWcgUENJRV9SQ0FSX0VQXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMjcxLVx0Ym9vbCBcJiMzNDtSZW5lc2FzIFItQ2FyIFBDSWUgY29udHJvbGxlciAoZW5kcG9pbnQgbW9kZSlcJiMzNDtcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMjc3LVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnOjI3ODpjb25maWcgUENJX1JDQVJfR0VOMlxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTI3OS1cdGJvb2wgXCYjMzQ7UmVuZXNhcyBSLUNhciBHZW4yIEludGVybmFsIFBDSSBjb250cm9sbGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTI4NS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZzoyODY6Y29uZmlnIFBDSUVfUkVORVNBU19SWkczU19IT1NUXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMjg3LVx0Ym9vbCBcJiMzNDtSZW5lc2FzIFJaL0czUyBQQ0llIGhvc3QgY29udHJvbGxlclwmIzM0O1xuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0yOTQtXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWc6Mjk1OmNvbmZpZyBQQ0lFX1JPQ0tDSElQXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMjk2LVx0Ym9vbFxuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0yOTgtXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWc6Mjk5OmNvbmZpZyBQQ0lFX1JPQ0tDSElQX0hPU1RcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0zMDAtXHR0cmlzdGF0ZSBcJiMzNDtSb2NrY2hpcCBQQ0llIGNvbnRyb2xsZXIgKGhvc3QgbW9kZSlcJiMzNDtcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMzEwLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnOjMxMTpjb25maWcgUENJRV9ST0NLQ0hJUF9FUFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTMxMi1cdGJvb2wgXCYjMzQ7Um9ja2NoaXAgUENJZSBjb250cm9sbGVyIChlbmRwb2ludCBtb2RlKVwmIzM0O1xuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0zMjItXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWc6MzIzOmNvbmZpZyBQQ0lfVjNfU0VNSVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTMyNC1cdGJvb2wgXCYjMzQ7VjMgU2VtaWNvbmR1Y3RvciBQQ0kgY29udHJvbGxlclwmIzM0O1xuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0zMjgtXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWc6MzI5OmNvbmZpZyBQQ0lfWEdFTkVcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0zMzAtXHRib29sIFwmIzM0O1gtR2VuZSBQQ0llIGNvbnRyb2xsZXJcJiMzNDtcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMzM3LVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnOjMzODpjb25maWcgUENJX1hHRU5FX01TSVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTMzOS1cdGJvb2wgXCYjMzQ7WC1HZW5lIHYxIFBDSWUgTVNJIGZlYXR1cmVcJiMzNDtcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMzQ3LVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnOjM0ODpjb25maWcgUENJRV9YSUxJTlhcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0zNDktXHRib29sIFwmIzM0O1hpbGlueCBBWEkgUENJZSBjb250cm9sbGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTM1Ni1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZzozNTc6Y29uZmlnIFBDSUVfWElMSU5YX0RNQV9QTFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTM1OC1cdGJvb2wgXCYjMzQ7WGlsaW54IERNQSBQTCBQQ0llIGhvc3QgYnJpZGdlIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMzY4LVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnOjM2OTpjb25maWcgUENJRV9YSUxJTlhfTldMXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMzcwLVx0Ym9vbCBcJiMzNDtYaWxpbnggTldMIFBDSWUgY29udHJvbGxlclwmIzM0O1xuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0zNzktXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWc6MzgwOmNvbmZpZyBQQ0lFX1hJTElOWF9DUE1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0zODEtXHRib29sIFwmIzM0O1hpbGlueCBWZXJzYWwgQ1BNIFBDSSBjb250cm9sbGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9jYWRlbmNlL0tjb25maWc9Mz1tZW51IFwmIzM0O0NhZGVuY2UtYmFzZWQgUENJZSBjb250cm9sbGVyc1wmIzM0O1xuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvY2FkZW5jZS9LY29uZmlnLTUtXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2NhZGVuY2UvS2NvbmZpZzo2OmNvbmZpZyBQQ0lFX0NBREVOQ0VcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvY2FkZW5jZS9LY29uZmlnLTctXHR0cmlzdGF0ZVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9jYWRlbmNlL0tjb25maWctOC1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvY2FkZW5jZS9LY29uZmlnOjk6Y29uZmlnIFBDSUVfQ0FERU5DRV9IT1NUXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2NhZGVuY2UvS2NvbmZpZy0xMC1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9jYWRlbmNlL0tjb25maWctMTQtXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2NhZGVuY2UvS2NvbmZpZzoxNTpjb25maWcgUENJRV9DQURFTkNFX0VQXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2NhZGVuY2UvS2NvbmZpZy0xNi1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9jYWRlbmNlL0tjb25maWctMjAtXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2NhZGVuY2UvS2NvbmZpZzoyMTpjb25maWcgUENJRV9DQURFTkNFX1BMQVRcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvY2FkZW5jZS9LY29uZmlnLTIyLVx0dHJpc3RhdGVcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvY2FkZW5jZS9LY29uZmlnLTIzLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9jYWRlbmNlL0tjb25maWc6MjQ6Y29uZmlnIFBDSUVfQ0FERU5DRV9QTEFUX0hPU1RcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvY2FkZW5jZS9LY29uZmlnLTI1LVx0dHJpc3RhdGUgXCYjMzQ7Q2FkZW5jZSBwbGF0Zm9ybSBQQ0llIGNvbnRyb2xsZXIgKGhvc3QgbW9kZSlcJiMzNDtcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2NhZGVuY2UvS2NvbmZpZy0zMy1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvY2FkZW5jZS9LY29uZmlnOjM0OmNvbmZpZyBQQ0lFX0NBREVOQ0VfUExBVF9FUFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9jYWRlbmNlL0tjb25maWctMzUtXHR0cmlzdGF0ZSBcJiMzNDtDYWRlbmNlIHBsYXRmb3JtIFBDSWUgY29udHJvbGxlciAoZW5kcG9pbnQgbW9kZSlcJiMzNDtcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2NhZGVuY2UvS2NvbmZpZy00NC1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvY2FkZW5jZS9LY29uZmlnOjQ1OmNvbmZpZyBQQ0lfU0tZMV9IT1NUXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2NhZGVuY2UvS2NvbmZpZy00Ni1cdHRyaXN0YXRlIFwmIzM0O0NJWCBTS1kxIFBDSWUgY29udHJvbGxlciAoaG9zdCBtb2RlKVwmIzM0O1xuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvY2FkZW5jZS9LY29uZmlnLTU5LVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9jYWRlbmNlL0tjb25maWc6NjA6Y29uZmlnIFBDSUVfU0cyMDQyX0hPU1RcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvY2FkZW5jZS9LY29uZmlnLTYxLVx0dHJpc3RhdGUgXCYjMzQ7U29waGdvIFNHMjA0MiBQQ0llIGNvbnRyb2xsZXIgKGhvc3QgbW9kZSlcJiMzNDtcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2NhZGVuY2UvS2NvbmZpZy02OC1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvY2FkZW5jZS9LY29uZmlnOjY5OmNvbmZpZyBQQ0lfSjcyMUVcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvY2FkZW5jZS9LY29uZmlnLTcwLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2NhZGVuY2UvS2NvbmZpZy03My1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvY2FkZW5jZS9LY29uZmlnOjc0OmNvbmZpZyBQQ0lfSjcyMUVfSE9TVFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9jYWRlbmNlL0tjb25maWctNzUtXHR0cmlzdGF0ZSBcJiMzNDtUSSBKNzIxRSBQQ0llIGNvbnRyb2xsZXIgKGhvc3QgbW9kZSlcJiMzNDtcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2NhZGVuY2UvS2NvbmZpZy04My1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvY2FkZW5jZS9LY29uZmlnOjg0OmNvbmZpZyBQQ0lfSjcyMUVfRVBcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvY2FkZW5jZS9LY29uZmlnLTg1LVx0dHJpc3RhdGUgXCYjMzQ7VEkgSjcyMUUgUENJZSBjb250cm9sbGVyIChlbmRwb2ludCBtb2RlKVwmIzM0O1xuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWc9Mz1tZW51IFwmIzM0O0Rlc2lnbldhcmUtYmFzZWQgUENJZSBjb250cm9sbGVyc1wmIzM0O1xuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWctNS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWc6Njpjb25maWcgUENJRV9EV1xuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZy03LVx0Ym9vbFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZy04LVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZzo5OmNvbmZpZyBQQ0lFX0RXX0RFQlVHRlNcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWctMTAtXHRib29sIFwmIzM0O0Rlc2lnbldhcmUgUENJZSBkZWJ1Z2ZzIGVudHJpZXNcJiMzNDtcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnLTE4LVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZzoxOTpjb25maWcgUENJRV9EV19IT1NUXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnLTIwLVx0Ym9vbFxuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWctMjQtXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnOjI1OmNvbmZpZyBQQ0lFX0RXX0VQXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnLTI2LVx0Ym9vbFxuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWctMjgtXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnOjI5OmNvbmZpZyBQQ0lFX0FMXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnLTMwLVx0Ym9vbCBcJiMzNDtBbWF6b24gQW5uYXB1cm5hIExhYnMgUENJZSBjb250cm9sbGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZy00MS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWc6NDI6Y29uZmlnIFBDSUVfQU1EX01EQlxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZy00My1cdGJvb2wgXCYjMzQ7QU1EIE1EQiBWZXJzYWwyIFBDSWUgY29udHJvbGxlclwmIzM0O1xuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWctNTItXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnOjUzOmNvbmZpZyBQQ0lfTUVTT05cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWctNTQtXHR0cmlzdGF0ZSBcJiMzNDtBbWxvZ2ljIE1lc29uIFBDSWUgY29udHJvbGxlclwmIzM0O1xuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWctNjMtXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnOjY0OmNvbmZpZyBQQ0lFX0FOREVTX1FJTEFJXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnLTY1LVx0dHJpc3RhdGUgXCYjMzQ7QW5kZXMgUWlMYWkgUENJZSBjb250cm9sbGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZy03NC1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWc6NzU6Y29uZmlnIFBDSUVfQVJUUEVDNlxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZy03Ni1cdGJvb2xcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWctNzctXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnOjc4OmNvbmZpZyBQQ0lFX0FSVFBFQzZfSE9TVFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZy03OS1cdGJvb2wgXCYjMzQ7QXhpcyBBUlRQRUMtNiBQQ0llIGNvbnRyb2xsZXIgKGhvc3QgbW9kZSlcJiMzNDtcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnLTg3LVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZzo4ODpjb25maWcgUENJRV9BUlRQRUM2X0VQXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnLTg5LVx0Ym9vbCBcJiMzNDtBeGlzIEFSVFBFQy02IFBDSWUgY29udHJvbGxlciAoZW5kcG9pbnQgbW9kZSlcJiMzNDtcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnLTk3LVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZzo5ODpjb25maWcgUENJRV9FU1dJTlxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZy05OS1cdHRyaXN0YXRlIFwmIzM0O0VTV0lOIFBDSWUgY29udHJvbGxlclwmIzM0O1xuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWctMTA3LVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZzoxMDg6Y29uZmlnIFBDSV9JTVg2XG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnLTEwOS1cdGJvb2xcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWctMTEwLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZzoxMTE6Y29uZmlnIFBDSV9JTVg2X0hPU1RcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWctMTEyLVx0Ym9vbCBcJiMzNDtGcmVlc2NhbGUgaS5NWDYvNy84IFBDSWUgY29udHJvbGxlciAoaG9zdCBtb2RlKVwmIzM0O1xuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWctMTIzLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZzoxMjQ6Y29uZmlnIFBDSV9JTVg2X0VQXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnLTEyNS1cdGJvb2wgXCYjMzQ7RnJlZXNjYWxlIGkuTVg2LzcvOCBQQ0llIGNvbnRyb2xsZXIgKGVuZHBvaW50IG1vZGUpXCYjMzQ7XG4tLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZy0xMzUtXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnOjEzNjpjb25maWcgUENJX0xBWUVSU0NBUEVcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWctMTM3LVx0dHJpc3RhdGUgXCYjMzQ7RnJlZXNjYWxlIExheWVyc2NhcGUgUENJZSBjb250cm9sbGVyIChob3N0IG1vZGUpXCYjMzQ7XG4tLVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEwOjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3MzM5CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMjM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IENvbmZpZ3VyYXRpb24gUXVhbmRhcnkqKgoKT2theSwgaGVyZSYjMzk7cyB0aGUgc2l0dWF0aW9uLiBJJiMzOTttIHRyeWluZyB0byBmaWd1cmUgb3V0IHRoZSBvcHRpbWFsIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MsIGFuZCBpdCBsb29rcyBsaWtlIGBBUk1fR0lDX1YzX0lUU2AgaXMgYXV0b21hdGljYWxseSBzZWxlY3RlZCBmb3IgQVJNNjQgaWYgYFBDSWAgaXMgc2V0LiBSaWdodCwgc28gaWYgSSBpbmNsdWRlIGBQQ0lgLCB0aGVuIGBBUk1fR0lDX1YzX0lUU2Agc2hvdWxkIGJlIGVuYWJsZWQsIHRoYXQgbWFrZXMgc2Vuc2UuCgpMZXQgbWUganVzdCBjb25maXJtIHRoYXQgYFBDSWAgaXMgc3VmZmljaWVudCBvbiBpdHMgb3duLiBZZXAsIGl0JiMzOTtzIGEgc3RhbmRhcmQgY29uZmlnLCBubyBzdXJwcmlzZXMgdGhlcmUuIE9rYXksIHNvIGNpcmNsaW5nIGJhY2sgdG8gYEFSTV9HSUNfVjNfSVRTYCwgd2hhdCBlbHNlIG1pZ2h0IGJlIGF0IHBsYXk/IEp1c3QgdG8gYmUgc3VyZSwgaXMgdGhlcmUgKmFueXRoaW5nKiBlbHNlIHRoYXQgbmVlZHMgdG8gYmUgY29uc2lkZXJlZD8gSG1tLCBgQ09ORklHX1BDSWAgbG9va3MgZ29vZC4KCkhvbGQgb24uLi4gdGFraW5nIGFub3RoZXIgcGFzcywgYmVjYXVzZSBJJiMzOTttIG5vdCBhIGZhbiBvZiBhc3N1bWluZywgYENPTkZJR19BUk1fR0lDX1YzX0lUU2AgKmlzKiBzZWxlY3RlZCBieSBgQVJNNjRgIHdoZW4gYFBDSWAgaXMgYWxyZWFkeSBlbmFibGVkLiBUaGVyZWZvcmUsIGBQQ0lgIGlzIHRoZSB0aGluZyB0byB1c2UuIEkgZG9uJiMzOTt0IG5lZWQgdG8gc3BlY2lmeSBhbnl0aGluZyBlbHNlLiBJIHNob3VsZCBqdXN0IHJldHVybiBgUENJYC4KClJpZ2h0LCBub3cgdGhlIGZ1enplci4gSXQgKm1pZ2h0KiBub3QgcnVuIG9uIEFSTTY0IGlmIEkgZG9uJiMzOTt0ICpleHBsaWNpdGx5KiBpbmNsdWRlIGl0LCBidXQgdGhlIGZ1enplciBydW5zIG9uIGFsbCBhcmNoaXRlY3R1cmVzLiBBaGEhIElmIEkgc3BlY2lmeSBgUENJYCwgaXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGVuYWJsZWQgb24gQVJNNjQsIGFueXdheS4gSSBjYW4ganVzdCBzcGVjaWZ5IGBQQ0lgLiBJdCB3aWxsIGJlIGVuYWJsZWQgb24gQVJNNjQgaWYgaXQgaXMgYXZhaWxhYmxlLgoKTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrLCBpcyB0aGVyZSAqYW55dGhpbmcqIGVsc2UgdGhhdCBuZWVkcyB0byBiZSBjb25maWd1cmVkPyBKdXN0IHRvIGJlIGNlcnRhaW4sIEkgc2hvdWxkIGNoZWNrIHRoZSBkcml2ZXJzLCBgZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxMDoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmM9MjMzNz1zdGF0aWMgaW50IGdpY19yZXNlcnZlX3JhbmdlKHBoeXNfYWRkcl90IGFkZHIsIHVuc2lnbmVkIGxvbmcgc2l6ZSlcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jLTIzMzgte1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmM6MjMzOTpcdGlmIChlZmlfZW5hYmxlZChFRklfQ09ORklHX1RBQkxFUykpXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYy0yMzQwLVx0XHRyZXR1cm4gZWZpX21lbV9yZXNlcnZlX3BlcnNpc3RlbnQoYWRkciwgc2l6ZSk7XG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmM9MjQwOD1zdGF0aWMgaW50IGl0c19zZXR1cF9iYXNlcihzdHJ1Y3QgaXRzX25vZGUgKml0cywgc3RydWN0IGl0c19iYXNlciAqYmFzZXIsXG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtMjQzNi1cdC8qIENoZWNrIGlmIHRoZSBwaHlzaWNhbCBhZGRyZXNzIG9mIHRoZSBtZW1vcnkgaXMgYWJvdmUgNDhiaXRzICovXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYzoyNDM3Olx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0FSTTY0XzY0S19QQUdFUykgXHUwMDI2XHUwMDI2IChiYXNlcl9waHlzIFx1MDAzZVx1MDAzZSA0OCkpIHtcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jLTI0MzgtXG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmM9NDkzMD1zdGF0aWMgY29uc3Qgc3RydWN0IGdpY19xdWlyayBpdHNfcXVpcmtzW10gPSB7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYzo0OTMxOiNpZmRlZiBDT05GSUdfQ0FWSVVNX0VSUkFUVU1fMjIzNzVcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jLTQ5MzItXHR7XG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtNDkzOC0jZW5kaWZcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jOjQ5Mzk6I2lmZGVmIENPTkZJR19DQVZJVU1fRVJSQVRVTV8yMzE0NFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtNDk0MC1cdHtcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYy00OTQ2LSNlbmRpZlxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmM6NDk0NzojaWZkZWYgQ09ORklHX1FDT01fUURGMjQwMF9FUlJBVFVNXzAwNjVcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jLTQ5NDgtXHR7XG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtNDk1NC0jZW5kaWZcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jOjQ5NTU6I2lmZGVmIENPTkZJR19TT0NJT05FWFRfU1lOUVVBQ0VSX1BSRUlUU1xuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtNDk1Ni1cdHtcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYy00OTY3LSNlbmRpZlxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmM6NDk2ODojaWZkZWYgQ09ORklHX0hJU0lMSUNPTl9FUlJBVFVNXzE2MTYwMDgwMlxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtNDk2OS1cdHtcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYy00OTc1LSNlbmRpZlxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmM6NDk3NjojaWZkZWYgQ09ORklHX0hJU0lMSUNPTl9FUlJBVFVNXzE2MjEwMDgwMVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtNDk3Ny1cdHtcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYy00OTgzLSNlbmRpZlxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmM6NDk4NDojaWZkZWYgQ09ORklHX1JPQ0tDSElQX0VSUkFUVU1fMzU4ODAwMVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtNDk4NS1cdHtcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYy00OTk2LVx0fSxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jOjQ5OTc6I2lmZGVmIENPTkZJR19ST0NLQ0hJUF9FUlJBVFVNXzM1NjgwMDJcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jLTQ5OTgtXHR7XG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmM9NTQ2OT1zdGF0aWMgaW50IGl0c19jcHVfbWVtcmVzZXJ2ZV9scGkodW5zaWduZWQgaW50IGNwdSlcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYy01NDk3LVx0LyogTGFzdCBDUFUgYmVpbmcgYnJvdWdodCB1cCBnZXRzIHRvIGlzc3VlIHRoZSBjbGVhbnVwICovXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYzo1NDk4Olx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19TTVApIHx8XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYy01NDk5LVx0ICAgIGNwdW1hc2tfZXF1YWwoXHUwMDI2Y3B1c19ib290ZWRfb25jZV9tYXNrLCBjcHVfcG9zc2libGVfbWFzaykpXG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmM9NTU3Mj1zdGF0aWMgaW50IF9faW5pdCBpdHNfb2ZfcHJvYmUoc3RydWN0IGRldmljZV9ub2RlICpub2RlKVxuLS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jLTU2MjYtXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYzo1NjI3OiNpZmRlZiBDT05GSUdfQUNQSVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtNTYyOC1cbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYy01NjMwLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmM6NTYzMTojaWZkZWYgQ09ORklHX0FDUElfTlVNQVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtNTYzMi1zdHJ1Y3QgaXRzX3NyYXRfbWFwIHtcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYz01ODE1PWludCBfX2luaXQgaXRzX2xwaV9tZW1yZXNlcnZlX2luaXQodm9pZClcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYy01ODE4LVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmM6NTgxOTpcdGlmICghZWZpX2VuYWJsZWQoRUZJX0NPTkZJR19UQUJMRVMpKVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtNTgyMC1cdFx0cmV0dXJuIDA7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEwOjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5NTk1CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogNTA4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSW1wYWN0IG9mIHRoZSBQYXRjaCBvbiBHSUN2MyBJVFMgRnVuY3Rpb25hbGl0eSoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGhpdHMgYSBudW1iZXIgb2YgZnVuY3Rpb25zOiBgYWxsb2NfbHBpX3JhbmdlYCwgYGZyZWVfbHBpX3JhbmdlYCwgYGl0c19scGlfaW5pdGAsIGBpdHNfbHBpX2FsbG9jYCwgYGl0c19scGlfZnJlZWAsIGFuZCBgaXRzX2NyZWF0ZV9kZXZpY2VgLiBUaGV5JiMzOTtyZSBhbGwgY29tcGlsZWQgdW5jb25kaXRpb25hbGx5IHdoZW4gYGlycS1naWMtdjMtaXRzLm9gIGlzIGJ1aWx0LiBUaGF0IG1lYW5zIHRoYXQgZW5hYmxpbmcgYFBDSWAgaXMgc3VmZmljaWVudCB0byBlbmFibGUgYEFSTV9HSUNfVjNfSVRTYCBvbiBBUk02NCwgYXQgbGVhc3QgaW4gdGhpcyByZWdhcmQuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgbGV0JiMzOTtzIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGRlcGVuZGVuY2llcy4gQWxyaWdodCwgYEhJU0lMSUNPTl9JUlFfTUJJR0VOYCBhbHNvIGJyaW5ncyBpdCBpbiwgYnV0IGBQQ0lgIGlzIHRoZSBzdGFuZGFyZCByb3V0ZSwgc28gdGhhdOKAmXMgdGhlIHR5cGljYWwgZW5hYmxlbWVudCBwYXRoLgoKTm93LCBJIHdhbnQgdG8gc2VlIGhvdyB0aGVzZSBmdW5jdGlvbnMgaW50ZXJhY3QuIEkmIzM5O2xsIGZvY3VzIG9uIHN5bWJvbHMgdGhhdCB3aWxsIG5vdCBiZSBpbmxpbmVkLiBJIHdhcyBvcmlnaW5hbGx5IHRoaW5raW5nIG9mIGBpdHNfbXNpX3ByZXBhcmVgIGFuZCBgaXRzX21zaV90ZWFyZG93bmAuIFllcCwgdGhleSYjMzk7cmUgc3RhdGljLCBidXQgdGhhdCBtaWdodCBtZWFuIHRoZXkgY2FuIGJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyLiBCdXQgd2FpdCAtIHRoZXkmIzM5O3JlIHBhc3NlZCBhcyBmdW5jdGlvbiBwb2ludGVycyBpbiBgaXRzX21zaV9kb21haW5fb3BzYC4KCmBgYGMKc3RhdGljIHN0cnVjdCBtc2lfZG9tYWluX29wcyBpdHNfbXNpX2RvbWFpbl9vcHMgPSB7CgkubXNpX3ByZXBhcmUJPSBpdHNfbXNpX3ByZXBhcmUsCgkubXNpX3RlYXJkb3duCT0gaXRzX21zaV90ZWFyZG93biwKfTsKYGBgCgpTaW5jZSB3ZSYjMzk7cmUgdGFraW5nIHRoZWlyIGFkZHJlc3NlcywgdGhlIGNvbXBpbGVyIHdvbiYjMzk7dCBmdWxseSBpbmxpbmUgdGhlbTsgYXQgbGVhc3QgYSBzdGFuZGFsb25lIHZlcnNpb24gd2lsbCBiZSBnZW5lcmF0ZWQuIFRoYXQgbWFrZXMgdGhlbSBnb29kIGNhbmRpZGF0ZXMgZm9yIGRlZXBlciBhbmFseXNpcyBhcyB0aGV5JiMzOTtsbCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMuCgpOZXh0LCBJIG5lZWQgdG8gbG9vayBhdCBgaXRzX2NyZWF0ZV9kZXZpY2VgLiBJdCYjMzk7cyBjYWxsZWQgYnkgYGl0c19tc2lfcHJlcGFyZWAgYW5kIGBpdHNfaW5pdF92cGVfZG9tYWluYC4gSXQgaXMgc3RhdGljIGJ1dCBpdHMgYWRkcmVzcyBpc24mIzM5O3QgdGFrZW4uIFNvIGl0IG1pZ2h0IGJlIGlubGluZWQuIGBpdHNfbXNpX3ByZXBhcmVgIGlzIHRoZSBiZXR0ZXIgZnVuY3Rpb24gdG8gZm9jdXMgb24uCgpGaW5hbGx5LCBJIG5lZWQgdG8gY2hlY2sgYGl0c19scGlfYWxsb2NgIGFuZCBgaXRzX2xwaV9mcmVlYC4gVGhleSBhcmUgY2FsbGVkIGJ5IGBpdHNfYWxsb2NfZGV2aWNlX2lycWAgYW5kIGBpdHNfbXNpX3RlYXJkb3duYC4gT2theSwgc28gYGl0c19hbGxvY19kZXZpY2VfaXJxYCBpcyBjYWxsZWQgYnkgYGl0c19pcnFfZG9tYWluX2FsbG9jYC4gTGV0JiMzOTtzIGNoZWNrIGBpdHNfaXJxX2RvbWFpbl9hbGxvY2AgbmV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTA6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXRzX2lycV9kb21haW5fYWxsb2MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYz0zNjg2PXN0YXRpYyBpbnQgaXRzX2lycV9naWNfZG9tYWluX2FsbG9jKHN0cnVjdCBpcnFfZG9tYWluICpkb21haW4sXG4tLVxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtMzcwOS1cbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jOjM3MTA6c3RhdGljIGludCBpdHNfaXJxX2RvbWFpbl9hbGxvYyhzdHJ1Y3QgaXJxX2RvbWFpbiAqZG9tYWluLCB1bnNpZ25lZCBpbnQgdmlycSxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jLTM3MTEtXHRcdFx0XHR1bnNpZ25lZCBpbnQgbnJfaXJxcywgdm9pZCAqYXJncylcbi0tXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYz0zODAwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgaXJxX2RvbWFpbl9vcHMgaXRzX2RvbWFpbl9vcHMgPSB7XG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYy0zODAxLVx0LnNlbGVjdFx0XHRcdD0gbXNpX2xpYl9pcnFfZG9tYWluX3NlbGVjdCxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jOjM4MDI6XHQuYWxsb2NcdFx0XHQ9IGl0c19pcnFfZG9tYWluX2FsbG9jLFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtMzgwMy1cdC5mcmVlXHRcdFx0PSBpdHNfaXJxX2RvbWFpbl9mcmVlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxMDoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTAyMQoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDE0NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDdXJyZW50IFRoaW5raW5nOiBJZGVudGlmeWluZyBLZXkgTVNJL0xQSSBJbnRlcmFjdGlvbiBQb2ludHMqKgoKT2theSwgbGV0JiMzOTtzIG5haWwgZG93biB0aGVzZSBjb3JlIGZ1bmN0aW9ucy4gSSYjMzk7bSBmb2N1c2luZyBvbiB0aGUgaW50ZXJhY3Rpb24gcG9pbnRzIGJldHdlZW4gTVNJIGFuZCBMUEkgYWxsb2NhdGlvbiBhbmQgZnJlZWluZy4gSSBzZWUgdGhhdCBgaXRzX2lycV9kb21haW5fYWxsb2NgIGFuZCBgaXRzX2lycV9kb21haW5fZnJlZWAgYXJlIGRlZmluaXRlbHkgcmVsZXZhbnQgaGVyZS4gVGhleSYjMzk7cmUgYm90aCBwYXJ0IG9mIHRoZSBgaXJxX2RvbWFpbl9vcHNgIHN0cnVjdHVyZSwgd2hpY2ggbWFrZXMgdGhlbSBjZW50cmFsIHRvIHRoZSBpbnRlcnJ1cHQgZG9tYWluIG1hbmFnZW1lbnQuIEkmIzM5O3ZlIG5vdGVkIGRvd24gdGhlc2UgZm9jdXMgc3ltYm9scyBmb3IgYSBjbGVhciBvdmVydmlldzoKCiogICBgaXRzX21zaV9wcmVwYXJlYAoqICAgYGl0c19tc2lfdGVhcmRvd25gCiogICBgaXRzX2lycV9kb21haW5fYWxsb2NgCiogICBgaXRzX2lycV9kb21haW5fZnJlZWAKClRoZSByb2xlIG9mIHRoZXNlIGZ1bmN0aW9ucyBiZWNvbWVzIGNsZWFyOiB0aGV5IGFjdCBhcyBlbnRyeSBwb2ludHMgZm9yIE1TSSBhbGxvY2F0aW9uIGFuZCBmcmVlaW5nLCB3aGljaCBpcyBwcmVjaXNlbHkgd2hlcmUgdGhlIG1vZGlmaWVkIExQSSBhbGxvY2F0aW9uIGFuZCBmcmVlaW5nIGxvZ2ljIGlzIHRyaWdnZXJlZC4gTm93LCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgb2YgdGhlIGZsb3csIEkgd2FudCB0byB2ZXJpZnkgdGhhdCBgaXRzX2lycV9kb21haW5fZnJlZWAgZGlyZWN0bHkgY2FsbHMgYGl0c19scGlfZnJlZWAuIFRoYXQgY29ubmVjdGlvbiBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBjb21wbGV0ZSBwcm9jZXNzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxMDoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzc3MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszNzcwOlx0e1xuMzc3MTpcdFx0c3RydWN0IGl0c19kZXZpY2UgKml0c19kZXYgPSBpcnFfZGF0YV9nZXRfaXJxX2NoaXBfZGF0YShkKTtcbjM3NzI6XHRcdHUzMiBldmVudCA9IGl0c19nZXRfZXZlbnRfaWQoZCk7XG4zNzczOlx0XG4zNzc0Olx0XHRpdHNfZGVjX2xwaV9jb3VudChkLCBpdHNfZGV2LVx1MDAzZWV2ZW50X21hcC5jb2xfbWFwW2V2ZW50XSk7XG4zNzc1Olx0XHQvKiBTdG9wIHRoZSBkZWxpdmVyeSBvZiBpbnRlcnJ1cHRzICovXG4zNzc2Olx0XHRpdHNfc2VuZF9kaXNjYXJkKGl0c19kZXYsIGV2ZW50KTtcbjM3Nzc6XHR9XG4zNzc4Olx0XG4zNzc5Olx0c3RhdGljIHZvaWQgaXRzX2lycV9kb21haW5fZnJlZShzdHJ1Y3QgaXJxX2RvbWFpbiAqZG9tYWluLCB1bnNpZ25lZCBpbnQgdmlycSxcbjM3ODA6XHRcdFx0XHRcdHVuc2lnbmVkIGludCBucl9pcnFzKVxuMzc4MTpcdHtcbjM3ODI6XHRcdHN0cnVjdCBpcnFfZGF0YSAqZCA9IGlycV9kb21haW5fZ2V0X2lycV9kYXRhKGRvbWFpbiwgdmlycSk7XG4zNzgzOlx0XHRzdHJ1Y3QgaXRzX2RldmljZSAqaXRzX2RldiA9IGlycV9kYXRhX2dldF9pcnFfY2hpcF9kYXRhKGQpO1xuMzc4NDpcdFx0aW50IGk7XG4zNzg1Olx0XG4zNzg2Olx0XHRiaXRtYXBfcmVsZWFzZV9yZWdpb24oaXRzX2Rldi1cdTAwM2VldmVudF9tYXAubHBpX21hcCxcbjM3ODc6XHRcdFx0XHQgICAgICBpdHNfZ2V0X2V2ZW50X2lkKGlycV9kb21haW5fZ2V0X2lycV9kYXRhKGRvbWFpbiwgdmlycSkpLFxuMzc4ODpcdFx0XHRcdCAgICAgIGdldF9jb3VudF9vcmRlcihucl9pcnFzKSk7XG4zNzg5Olx0XG4zNzkwOlx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBucl9pcnFzOyBpJiM0MzsmIzQzOykge1xuMzc5MTpcdFx0XHRzdHJ1Y3QgaXJxX2RhdGEgKmRhdGEgPSBpcnFfZG9tYWluX2dldF9pcnFfZGF0YShkb21haW4sXG4zNzkyOlx0XHRcdFx0XHRcdFx0XHRcdHZpcnEgJiM0MzsgaSk7XG4zNzkzOlx0XHRcdC8qIE51a2UgdGhlIGVudHJ5IGluIHRoZSBkb21haW4gKi9cbjM3OTQ6XHRcdFx0aXJxX2RvbWFpbl9yZXNldF9pcnFfZGF0YShkYXRhKTtcbjM3OTU6XHRcdH1cbjM3OTY6XHRcbjM3OTc6XHRcdGlycV9kb21haW5fZnJlZV9pcnFzX3BhcmVudChkb21haW4sIHZpcnEsIG5yX2lycXMpO1xuMzc5ODpcdH1cbjM3OTk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTA6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE5OTcKCQkJCQkJCW91dHB1dDogMTI1CgkJCQkJCQl0aG91Z2h0czogNjc2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgR0lDdjMgSVRTIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFpbWVkIGF0IG9wdGltaXppbmcgdGhlIEdJQ3YzIElUUyBkcml2ZXIsIHNwZWNpZmljYWxseSBkZWFsaW5nIHdpdGggTFBJIHJhbmdlIGFsbG9jYXRpb24gYW5kIGZyZWVpbmcuIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGlzIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIGFuZCBwb3RlbnRpYWwgaW1wYWN0LgoKRmlyc3QsIEkgc2VlIHRoYXQgYGl0c19pcnFfZG9tYWluX2ZyZWVgIG9ubHkgcmVsZWFzZXMgdGhlIGJpdG1hcCByZWdpb24sIG5vdCB0aGUgYWN0dWFsIExQSSByYW5nZXMuIFRoZSBhY3R1YWwgZnJlZWluZyBpcyBoYW5kbGVkIGluIGBpdHNfbXNpX3RlYXJkb3duYCBhbmQgdGhlIGVycm9yIHBhdGggb2YgYGl0c19jcmVhdGVfZGV2aWNlYCwgc3BlY2lmaWNhbGx5IGNhbGxpbmcgYGl0c19scGlfZnJlZWAuIFRoaXMgaW1tZWRpYXRlbHkgcG9pbnRzIG1lIHRvd2FyZHMgZm9jdXNpbmcgb24gYGl0c19tc2lfcHJlcGFyZWAgYW5kIGBpdHNfbXNpX3RlYXJkb3duYCBhcyB0aGUga2V5IHN5bWJvbHMgdG8gZXhhbWluZSwgYXMgdGhhdCYjMzk7cyB3aGVyZSB0aGUgYWxsb2NhdGlvbiBhbmQgZGVhbGxvY2F0aW9uIHBhdGhzIGFyZSBkaXJlY3RseSB0b3VjaGVkLgoKTm93LCBsZXQmIzM5O3MgYnJpZWZseSBsb29rIGF0IGBpdHNfbHBpX2luaXRgLiBJdCBzZWVtcyBsaWtlIGEgZ29vZCBwbGFjZSB0byBiZWdpbiBhcyB0aGF0IHdpbGwgaGFuZGxlIHRoZSBpbml0aWFsIExQSSByYW5nZSwgYnV0IHNpbmNlIGl0JiMzOTtzIG9ubHkgY2FsbGVkIG9uY2UgZHVyaW5nIGJvb3QsIGl0IGlzIG5vdCBhcyBpbXBvcnRhbnQgZm9yIHRoaXMgcGF0Y2guCgpTbywgZm9jdXNpbmcgb24gdGhlIGNoYW5nZXMsIGl0JiMzOTtzIGFib3V0IGNhY2hpbmcgdGhlIExQSSByYW5nZSBvYmplY3QgdG8gYXZvaWQgbWVtb3J5IGFsbG9jYXRpb24gd2hlbiBmcmVlaW5nIGFuZCBmaXhpbmcgYSBtZW1vcnkgbGVhayBpbiB0aGUgZGV2aWNlIGNyZWF0aW9uIGVycm9yIHBhdGguIFRoZXNlIGNoYW5nZXMgZGlyZWN0bHkgaW1wYWN0IHRoZSBNU0kgYWxsb2NhdGlvbiBhbmQgdGVhcmRvd24gcGF0aHMuIEFuZCBnaXZlbiB0aGUgY29udGV4dCwgdGhlc2UgcGF0aHMgYXJlIGNlcnRhaW5seSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSB3aXRoIEdJQ3YzIElUUyBlbXVsYXRpb24sIHdoaWNoIGltbWVkaWF0ZWx5IHJhaXNlcyBhIGZsYWcuCgpUaGUgY29uZmlnIHJlcXVpcmVkIGlzIGBQQ0lgLCB3aGljaCB3aWxsIGVuYWJsZSBgQVJNX0dJQ19WM19JVFNgIG9uIEFSTTY0LCBhbmQgaXMgdGhlIG9ubHkgY29uZmlnIHRoYXQgbmVlZHMgdG8gYmUgbGlzdGVkLiBTaW5jZSBgQVJNX0dJQ19WM19JVFNgIGlzIHNlbGVjdGVkIGJ5IGBBUk02NGAgaWYgYFBDSWAsIGl0IGxvb2tzIGxpa2UgYSBjbGVhbiBkZXBlbmRlbmN5LgoKTGV0JiMzOTtzIGRvIGEgcXVpY2sgZmluYWwgcmV2aWV3IG9mIHRoZSBjb2RlIGNoYW5nZXMuIEkmIzM5O20gc2VlaW5nIGBhbGxvY19scGlfcmFuZ2VgIGJlaW5nIGNhbGxlZCBmcm9tIGBpdHNfbHBpX2FsbG9jYCwgYW5kIHRoZW4gYGl0c19jcmVhdGVfZGV2aWNlYCB3aGljaCBpcyB0aGVuIGNhbGxlZCBmcm9tIGBpdHNfbXNpX3ByZXBhcmVgLiBPbiB0aGUgb3RoZXIgc2lkZSwgYGZyZWVfbHBpX3JhbmdlYCBpcyBiZWluZyBjYWxsZWQgZnJvbSBgaXRzX2xwaV9mcmVlYCwgd2hpY2ggaXMgY2FsbGVkIGZyb20gYGl0c19tc2lfdGVhcmRvd25gIGFuZCB0aGUgZXJyb3IgcGF0aCBpbiBgaXRzX2NyZWF0ZV9kZXZpY2VgLiBUaGlzIGNvbmZpcm1zIHRoZSBhbGxvY2F0aW9uL2RlYWxsb2NhdGlvbiBwYXRocyBJIGlkZW50aWZpZWQgYXJlIHRoZSBjb3JyZWN0IGZvY3VzLgoKQmFzZWQgb24gdGhpcyBhbmFseXNpcywgdGhlIGNoYW5nZXMgYXBwZWFyIGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZS4gVGhpcyBpcyBhIGNsZWFyIGNhc2UgZm9yICYjMzQ7V29ydGhGdXp6aW5nJiMzNDsuIFRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxMDoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UENJJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXRzX21zaV9wcmVwYXJlJiMzNDssCiAgICAmIzM0O2l0c19tc2lfdGVhcmRvd24mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEdJQ3YzIElUUyBkcml2ZXIgdG8gY2FjaGUgYW4gTFBJIHJhbmdlIG9iamVjdCB0byBhdm9pZCBtZW1vcnkgYWxsb2NhdGlvbiBpbiB0aGUgZnJlZSBwYXRoLCBhbmQgZml4ZXMgYSBtZW1vcnkgbGVhayBpbiB0aGUgZGV2aWNlIGNyZWF0aW9uIGVycm9yIHBhdGguIFRoZXNlIGNoYW5nZXMgYWZmZWN0IHRoZSBNU0kgYWxsb2NhdGlvbiBhbmQgdGVhcmRvd24gcGF0aHMsIHdoaWNoIGFyZSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChlLmcuLCBRRU1VIHdpdGggR0lDdjMgSVRTIGVtdWxhdGlvbikuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BDSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2l0c19tc2lfcHJlcGFyZSYjMzQ7LAogICAgJiMzNDtpdHNfbXNpX3RlYXJkb3duJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBHSUN2MyBJVFMgZHJpdmVyIHRvIGNhY2hlIGFuIExQSSByYW5nZSBvYmplY3QgdG8gYXZvaWQgbWVtb3J5IGFsbG9jYXRpb24gaW4gdGhlIGZyZWUgcGF0aCwgYW5kIGZpeGVzIGEgbWVtb3J5IGxlYWsgaW4gdGhlIGRldmljZSBjcmVhdGlvbiBlcnJvciBwYXRoLiBUaGVzZSBjaGFuZ2VzIGFmZmVjdCB0aGUgTVNJIGFsbG9jYXRpb24gYW5kIHRlYXJkb3duIHBhdGhzLCB3aGljaCBhcmUgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoZS5nLiwgUUVNVSB3aXRoIEdJQ3YzIElUUyBlbXVsYXRpb24pLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjlUMTA6MTg6MTYuNDc2MzQ2NTU5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzc2NTczOTE4NzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUENJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaXRzX21zaV9wcmVwYXJlXCIsXG4gICAgXCJpdHNfbXNpX3RlYXJkb3duXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEdJQ3YzIElUUyBkcml2ZXIgdG8gY2FjaGUgYW4gTFBJIHJhbmdlIG9iamVjdCB0byBhdm9pZCBtZW1vcnkgYWxsb2NhdGlvbiBpbiB0aGUgZnJlZSBwYXRoLCBhbmQgZml4ZXMgYSBtZW1vcnkgbGVhayBpbiB0aGUgZGV2aWNlIGNyZWF0aW9uIGVycm9yIHBhdGguIFRoZXNlIGNoYW5nZXMgYWZmZWN0IHRoZSBNU0kgYWxsb2NhdGlvbiBhbmQgdGVhcmRvd24gcGF0aHMsIHdoaWNoIGFyZSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChlLmcuLCBRRU1VIHdpdGggR0lDdjMgSVRTIGVtdWxhdGlvbikuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDEwOjE4OjE2LjQ3NjM2OTc5OVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDkzNzg2MTM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMDFhMTZmMTczNjlmMWZhYjMxMWMxMmFhNTUwMjlhM2EwYzMyNzMxOVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEp1bCAyOSAxMDoxODoxNSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYyBiL2RyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jXFxuaW5kZXggNmY1ODExYWFlNTljMS4uNjM0YjBlMTU0OTNjZCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuY1xcbisrKyBiL2RyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jXFxuQEAgLTIwOTcsNiArMjA5Nyw3IEBAIHN0YXRpYyBzdHJ1Y3QgaXJxX2NoaXAgaXRzX2lycV9jaGlwID0ge1xcbiBcXG4gc3RhdGljIERFRklORV9NVVRFWChscGlfcmFuZ2VfbG9jayk7XFxuIHN0YXRpYyBMSVNUX0hFQUQobHBpX3JhbmdlX2xpc3QpO1xcbitzdGF0aWMgTElTVF9IRUFEKGxwaV9mcmVlX2NhY2hlKTtcXG4gXFxuIHN0cnVjdCBscGlfcmFuZ2Uge1xcbiBcXHRzdHJ1Y3QgbGlzdF9oZWFkXFx0ZW50cnk7XFxuQEAgLTIxMjAsOCArMjEyMSwxMyBAQCBzdGF0aWMgc3RydWN0IGxwaV9yYW5nZSAqbWtfbHBpX3JhbmdlKHUzMiBiYXNlLCB1MzIgc3BhbilcXG4gc3RhdGljIGludCBhbGxvY19scGlfcmFuZ2UodTMyIG5yX2xwaXMsIHUzMiAqYmFzZSlcXG4ge1xcbiBcXHRzdHJ1Y3QgbHBpX3JhbmdlICpyYW5nZSwgKnRtcDtcXG4rXFx0c3RydWN0IGxwaV9yYW5nZSAqbmV3X25vZGU7XFxuIFxcdGludCBlcnIgPSAtRU5PU1BDO1xcbiBcXG4rXFx0bmV3X25vZGUgPSBta19scGlfcmFuZ2UoMCwgMCk7XFxuK1xcdGlmICghbmV3X25vZGUpXFxuK1xcdFxcdHJldHVybiAtRU5PTUVNO1xcbitcXG4gXFx0bXV0ZXhfbG9jayhcXHUwMDI2bHBpX3JhbmdlX2xvY2spO1xcbiBcXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHJhbmdlLCB0bXAsIFxcdTAwMjZscGlfcmFuZ2VfbGlzdCwgZW50cnkpIHtcXG5AQCAtMjE0MCw2ICsyMTQ2LDExIEBAIHN0YXRpYyBpbnQgYWxsb2NfbHBpX3JhbmdlKHUzMiBucl9scGlzLCB1MzIgKmJhc2UpXFxuIFxcdFxcdH1cXG4gXFx0fVxcbiBcXG4rXFx0aWYgKCFlcnIpXFxuK1xcdFxcdGxpc3RfYWRkKFxcdTAwMjZuZXdfbm9kZS1cXHUwMDNlZW50cnksIFxcdTAwMjZscGlfZnJlZV9jYWNoZSk7XFxuK1xcdGVsc2VcXG4rXFx0XFx0a2ZyZWUobmV3X25vZGUpO1xcbitcXG4gXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZscGlfcmFuZ2VfbG9jayk7XFxuIFxcbiBcXHRwcl9kZWJ1ZyhcXFwiSVRTOiBhbGxvYyAldToldVxcXFxuXFxcIiwgKmJhc2UsIG5yX2xwaXMpO1xcbkBAIC0yMTYyLDExICsyMTczLDE4IEBAIHN0YXRpYyBpbnQgZnJlZV9scGlfcmFuZ2UodTMyIGJhc2UsIHUzMiBucl9scGlzKVxcbiB7XFxuIFxcdHN0cnVjdCBscGlfcmFuZ2UgKm5ldywgKm9sZDtcXG4gXFxuLVxcdG5ldyA9IG1rX2xwaV9yYW5nZShiYXNlLCBucl9scGlzKTtcXG4tXFx0aWYgKCFuZXcpXFxuK1xcdG11dGV4X2xvY2soXFx1MDAyNmxwaV9yYW5nZV9sb2NrKTtcXG4rXFxuK1xcdGlmIChXQVJOX09OKGxpc3RfZW1wdHkoXFx1MDAyNmxwaV9mcmVlX2NhY2hlKSkpIHtcXG4rXFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZscGlfcmFuZ2VfbG9jayk7XFxuIFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbitcXHR9XFxuIFxcbi1cXHRtdXRleF9sb2NrKFxcdTAwMjZscGlfcmFuZ2VfbG9jayk7XFxuK1xcdG5ldyA9IGxpc3RfZmlyc3RfZW50cnkoXFx1MDAyNmxwaV9mcmVlX2NhY2hlLCBzdHJ1Y3QgbHBpX3JhbmdlLCBlbnRyeSk7XFxuK1xcdGxpc3RfZGVsKFxcdTAwMjZuZXctXFx1MDAzZWVudHJ5KTtcXG4rXFxuK1xcdG5ldy1cXHUwMDNlYmFzZV9pZCA9IGJhc2U7XFxuK1xcdG5ldy1cXHUwMDNlc3BhbiA9IG5yX2xwaXM7XFxuIFxcbiBcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JldmVyc2Uob2xkLCBcXHUwMDI2bHBpX3JhbmdlX2xpc3QsIGVudHJ5KSB7XFxuIFxcdFxcdGlmIChvbGQtXFx1MDAzZWJhc2VfaWQgXFx1MDAzYyBiYXNlKVxcbkBAIC0yMTk1LDYgKzIyMTMsNyBAQCBzdGF0aWMgaW50IF9faW5pdCBpdHNfbHBpX2luaXQodTMyIGlkX2JpdHMpXFxuIHtcXG4gXFx0dTMyIGxwaXMgPSAoMVVMIFxcdTAwM2NcXHUwMDNjIGlkX2JpdHMpIC0gODE5MjtcXG4gXFx0dTMyIG51bWxwaXM7XFxuK1xcdHN0cnVjdCBscGlfcmFuZ2UgKnJhbmdlO1xcbiBcXHRpbnQgZXJyO1xcbiBcXG4gXFx0bnVtbHBpcyA9IDFVTCBcXHUwMDNjXFx1MDAzYyBHSUNEX1RZUEVSX05VTV9MUElTKGdpY19yZGlzdHMtXFx1MDAzZWdpY2RfdHlwZXIpO1xcbkBAIC0yMjA1LDYgKzIyMjQsMTIgQEAgc3RhdGljIGludCBfX2luaXQgaXRzX2xwaV9pbml0KHUzMiBpZF9iaXRzKVxcbiBcXHRcXHRcXHRscGlzKTtcXG4gXFx0fVxcbiBcXG4rXFx0cmFuZ2UgPSBta19scGlfcmFuZ2UoMCwgMCk7XFxuK1xcdGlmICghcmFuZ2UpXFxuK1xcdFxcdHJldHVybiAtRU5PTUVNO1xcbitcXG4rXFx0bGlzdF9hZGQoXFx1MDAyNnJhbmdlLVxcdTAwM2VlbnRyeSwgXFx1MDAyNmxwaV9mcmVlX2NhY2hlKTtcXG4rXFxuIFxcdC8qXFxuIFxcdCAqIEluaXRpYWxpemluZyB0aGUgYWxsb2NhdG9yIGlzIGp1c3QgdGhlIHNhbWUgYXMgZnJlZWluZyB0aGVcXG4gXFx0ICogZnVsbCByYW5nZSBvZiBMUElzLlxcbkBAIC0yMjM0LDggKzIyNTksMTAgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgKml0c19scGlfYWxsb2MoaW50IG5yX2lycXMsIHUzMiAqYmFzZSwgaW50ICpucl9pZHMpXFxuIFxcdFxcdGdvdG8gb3V0O1xcbiBcXG4gXFx0Yml0bWFwID0gYml0bWFwX3phbGxvYyhucl9pcnFzLCBHRlBfQVRPTUlDKTtcXG4tXFx0aWYgKCFiaXRtYXApXFxuK1xcdGlmICghYml0bWFwKSB7XFxuK1xcdFxcdGZyZWVfbHBpX3JhbmdlKCpiYXNlLCBucl9pcnFzKTtcXG4gXFx0XFx0Z290byBvdXQ7XFxuK1xcdH1cXG4gXFxuIFxcdCpucl9pZHMgPSBucl9pcnFzO1xcbiBcXG5AQCAtMjI0OCw3ICsyMjc1LDcgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgKml0c19scGlfYWxsb2MoaW50IG5yX2lycXMsIHUzMiAqYmFzZSwgaW50ICpucl9pZHMpXFxuIFxcbiBzdGF0aWMgdm9pZCBpdHNfbHBpX2ZyZWUodW5zaWduZWQgbG9uZyAqYml0bWFwLCB1MzIgYmFzZSwgdTMyIG5yX2lkcylcXG4ge1xcbi1cXHRXQVJOX09OKGZyZWVfbHBpX3JhbmdlKGJhc2UsIG5yX2lkcykpO1xcbitcXHRmcmVlX2xwaV9yYW5nZShiYXNlLCBucl9pZHMpO1xcbiBcXHRiaXRtYXBfZnJlZShiaXRtYXApO1xcbiB9XFxuIFxcbkBAIC0zNTEwLDcgKzM1MzcsOCBAQCBzdGF0aWMgc3RydWN0IGl0c19kZXZpY2UgKml0c19jcmVhdGVfZGV2aWNlKHN0cnVjdCBpdHNfbm9kZSAqaXRzLCB1MzIgZGV2X2lkLFxcbiBcXHRpZiAoIWRldiB8fCAhaXR0IHx8ICFjb2xfbWFwIHx8ICghbHBpX21hcCBcXHUwMDI2XFx1MDAyNiBhbGxvY19scGlzKSkge1xcbiBcXHRcXHRrZnJlZShkZXYpO1xcbiBcXHRcXHRpdHRfZnJlZV9wb29sKGl0dCwgc3opO1xcbi1cXHRcXHRiaXRtYXBfZnJlZShscGlfbWFwKTtcXG4rXFx0XFx0aWYgKGxwaV9tYXApXFxuK1xcdFxcdFxcdGl0c19scGlfZnJlZShscGlfbWFwLCBscGlfYmFzZSwgbnJfbHBpcyk7XFxuIFxcdFxcdGtmcmVlKGNvbF9tYXApO1xcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4gXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxMDoxODoxNi45NzA5NzQ4NDhaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo3NzE2Mjc1NDM3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQQ0lcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpdHNfbXNpX3ByZXBhcmVcIixcbiAgICBcIml0c19tc2lfdGVhcmRvd25cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgR0lDdjMgSVRTIGRyaXZlciB0byBjYWNoZSBhbiBMUEkgcmFuZ2Ugb2JqZWN0IHRvIGF2b2lkIG1lbW9yeSBhbGxvY2F0aW9uIGluIHRoZSBmcmVlIHBhdGgsIGFuZCBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIHRoZSBkZXZpY2UgY3JlYXRpb24gZXJyb3IgcGF0aC4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgdGhlIE1TSSBhbGxvY2F0aW9uIGFuZCB0ZWFyZG93biBwYXRocywgd2hpY2ggYXJlIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGUuZy4sIFFFTVUgd2l0aCBHSUN2MyBJVFMgZW11bGF0aW9uKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMDFhMTZmMTczNjlmMWZhYjMxMWMxMmFhNTUwMjlhM2EwYzMyNzMxOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDI5IDEwOjE4OjE1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMgYi9kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuY1xuaW5kZXggNmY1ODExYWFlNTljMS4uNjM0YjBlMTU0OTNjZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jXG4rKysgYi9kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuY1xuQEAgLTIwOTcsNiArMjA5Nyw3IEBAIHN0YXRpYyBzdHJ1Y3QgaXJxX2NoaXAgaXRzX2lycV9jaGlwID0ge1xuIFxuIHN0YXRpYyBERUZJTkVfTVVURVgobHBpX3JhbmdlX2xvY2spO1xuIHN0YXRpYyBMSVNUX0hFQUQobHBpX3JhbmdlX2xpc3QpO1xuK3N0YXRpYyBMSVNUX0hFQUQobHBpX2ZyZWVfY2FjaGUpO1xuIFxuIHN0cnVjdCBscGlfcmFuZ2Uge1xuIFx0c3RydWN0IGxpc3RfaGVhZFx0ZW50cnk7XG5AQCAtMjEyMCw4ICsyMTIxLDEzIEBAIHN0YXRpYyBzdHJ1Y3QgbHBpX3JhbmdlICpta19scGlfcmFuZ2UodTMyIGJhc2UsIHUzMiBzcGFuKVxuIHN0YXRpYyBpbnQgYWxsb2NfbHBpX3JhbmdlKHUzMiBucl9scGlzLCB1MzIgKmJhc2UpXG4ge1xuIFx0c3RydWN0IGxwaV9yYW5nZSAqcmFuZ2UsICp0bXA7XG4rXHRzdHJ1Y3QgbHBpX3JhbmdlICpuZXdfbm9kZTtcbiBcdGludCBlcnIgPSAtRU5PU1BDO1xuIFxuK1x0bmV3X25vZGUgPSBta19scGlfcmFuZ2UoMCwgMCk7XG4rXHRpZiAoIW5ld19ub2RlKVxuK1x0XHRyZXR1cm4gLUVOT01FTTtcbitcbiBcdG11dGV4X2xvY2soXHUwMDI2bHBpX3JhbmdlX2xvY2spO1xuIFxuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHJhbmdlLCB0bXAsIFx1MDAyNmxwaV9yYW5nZV9saXN0LCBlbnRyeSkge1xuQEAgLTIxNDAsNiArMjE0NiwxMSBAQCBzdGF0aWMgaW50IGFsbG9jX2xwaV9yYW5nZSh1MzIgbnJfbHBpcywgdTMyICpiYXNlKVxuIFx0XHR9XG4gXHR9XG4gXG4rXHRpZiAoIWVycilcbitcdFx0bGlzdF9hZGQoXHUwMDI2bmV3X25vZGUtXHUwMDNlZW50cnksIFx1MDAyNmxwaV9mcmVlX2NhY2hlKTtcbitcdGVsc2VcbitcdFx0a2ZyZWUobmV3X25vZGUpO1xuK1xuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmxwaV9yYW5nZV9sb2NrKTtcbiBcbiBcdHByX2RlYnVnKFwiSVRTOiBhbGxvYyAldToldVxcblwiLCAqYmFzZSwgbnJfbHBpcyk7XG5AQCAtMjE2MiwxMSArMjE3MywxOCBAQCBzdGF0aWMgaW50IGZyZWVfbHBpX3JhbmdlKHUzMiBiYXNlLCB1MzIgbnJfbHBpcylcbiB7XG4gXHRzdHJ1Y3QgbHBpX3JhbmdlICpuZXcsICpvbGQ7XG4gXG4tXHRuZXcgPSBta19scGlfcmFuZ2UoYmFzZSwgbnJfbHBpcyk7XG4tXHRpZiAoIW5ldylcbitcdG11dGV4X2xvY2soXHUwMDI2bHBpX3JhbmdlX2xvY2spO1xuK1xuK1x0aWYgKFdBUk5fT04obGlzdF9lbXB0eShcdTAwMjZscGlfZnJlZV9jYWNoZSkpKSB7XG4rXHRcdG11dGV4X3VubG9jayhcdTAwMjZscGlfcmFuZ2VfbG9jayk7XG4gXHRcdHJldHVybiAtRU5PTUVNO1xuK1x0fVxuIFxuLVx0bXV0ZXhfbG9jayhcdTAwMjZscGlfcmFuZ2VfbG9jayk7XG4rXHRuZXcgPSBsaXN0X2ZpcnN0X2VudHJ5KFx1MDAyNmxwaV9mcmVlX2NhY2hlLCBzdHJ1Y3QgbHBpX3JhbmdlLCBlbnRyeSk7XG4rXHRsaXN0X2RlbChcdTAwMjZuZXctXHUwMDNlZW50cnkpO1xuK1xuK1x0bmV3LVx1MDAzZWJhc2VfaWQgPSBiYXNlO1xuK1x0bmV3LVx1MDAzZXNwYW4gPSBucl9scGlzO1xuIFxuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yZXZlcnNlKG9sZCwgXHUwMDI2bHBpX3JhbmdlX2xpc3QsIGVudHJ5KSB7XG4gXHRcdGlmIChvbGQtXHUwMDNlYmFzZV9pZCBcdTAwM2MgYmFzZSlcbkBAIC0yMTk1LDYgKzIyMTMsNyBAQCBzdGF0aWMgaW50IF9faW5pdCBpdHNfbHBpX2luaXQodTMyIGlkX2JpdHMpXG4ge1xuIFx0dTMyIGxwaXMgPSAoMVVMIFx1MDAzY1x1MDAzYyBpZF9iaXRzKSAtIDgxOTI7XG4gXHR1MzIgbnVtbHBpcztcbitcdHN0cnVjdCBscGlfcmFuZ2UgKnJhbmdlO1xuIFx0aW50IGVycjtcbiBcbiBcdG51bWxwaXMgPSAxVUwgXHUwMDNjXHUwMDNjIEdJQ0RfVFlQRVJfTlVNX0xQSVMoZ2ljX3JkaXN0cy1cdTAwM2VnaWNkX3R5cGVyKTtcbkBAIC0yMjA1LDYgKzIyMjQsMTIgQEAgc3RhdGljIGludCBfX2luaXQgaXRzX2xwaV9pbml0KHUzMiBpZF9iaXRzKVxuIFx0XHRcdGxwaXMpO1xuIFx0fVxuIFxuK1x0cmFuZ2UgPSBta19scGlfcmFuZ2UoMCwgMCk7XG4rXHRpZiAoIXJhbmdlKVxuK1x0XHRyZXR1cm4gLUVOT01FTTtcbitcbitcdGxpc3RfYWRkKFx1MDAyNnJhbmdlLVx1MDAzZWVudHJ5LCBcdTAwMjZscGlfZnJlZV9jYWNoZSk7XG4rXG4gXHQvKlxuIFx0ICogSW5pdGlhbGl6aW5nIHRoZSBhbGxvY2F0b3IgaXMganVzdCB0aGUgc2FtZSBhcyBmcmVlaW5nIHRoZVxuIFx0ICogZnVsbCByYW5nZSBvZiBMUElzLlxuQEAgLTIyMzQsOCArMjI1OSwxMCBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyAqaXRzX2xwaV9hbGxvYyhpbnQgbnJfaXJxcywgdTMyICpiYXNlLCBpbnQgKm5yX2lkcylcbiBcdFx0Z290byBvdXQ7XG4gXG4gXHRiaXRtYXAgPSBiaXRtYXBfemFsbG9jKG5yX2lycXMsIEdGUF9BVE9NSUMpO1xuLVx0aWYgKCFiaXRtYXApXG4rXHRpZiAoIWJpdG1hcCkge1xuK1x0XHRmcmVlX2xwaV9yYW5nZSgqYmFzZSwgbnJfaXJxcyk7XG4gXHRcdGdvdG8gb3V0O1xuK1x0fVxuIFxuIFx0Km5yX2lkcyA9IG5yX2lycXM7XG4gXG5AQCAtMjI0OCw3ICsyMjc1LDcgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgKml0c19scGlfYWxsb2MoaW50IG5yX2lycXMsIHUzMiAqYmFzZSwgaW50ICpucl9pZHMpXG4gXG4gc3RhdGljIHZvaWQgaXRzX2xwaV9mcmVlKHVuc2lnbmVkIGxvbmcgKmJpdG1hcCwgdTMyIGJhc2UsIHUzMiBucl9pZHMpXG4ge1xuLVx0V0FSTl9PTihmcmVlX2xwaV9yYW5nZShiYXNlLCBucl9pZHMpKTtcbitcdGZyZWVfbHBpX3JhbmdlKGJhc2UsIG5yX2lkcyk7XG4gXHRiaXRtYXBfZnJlZShiaXRtYXApO1xuIH1cbiBcbkBAIC0zNTEwLDcgKzM1MzcsOCBAQCBzdGF0aWMgc3RydWN0IGl0c19kZXZpY2UgKml0c19jcmVhdGVfZGV2aWNlKHN0cnVjdCBpdHNfbm9kZSAqaXRzLCB1MzIgZGV2X2lkLFxuIFx0aWYgKCFkZXYgfHwgIWl0dCB8fCAhY29sX21hcCB8fCAoIWxwaV9tYXAgXHUwMDI2XHUwMDI2IGFsbG9jX2xwaXMpKSB7XG4gXHRcdGtmcmVlKGRldik7XG4gXHRcdGl0dF9mcmVlX3Bvb2woaXR0LCBzeik7XG4tXHRcdGJpdG1hcF9mcmVlKGxwaV9tYXApO1xuK1x0XHRpZiAobHBpX21hcClcbitcdFx0XHRpdHNfbHBpX2ZyZWUobHBpX21hcCwgbHBpX2Jhc2UsIG5yX2xwaXMpO1xuIFx0XHRrZnJlZShjb2xfbWFwKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXHR9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxMDoxODoxNi45NzA5NzU4NjhaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MTYyODgzODgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEdJQ3YzIElUUyBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmNgLiBTZWVtcyBsaWtlIHRoZXkncmUgbWFraW5nIHNvbWUgY2hhbmdlcyB0byBob3cgTFBJIHJhbmdlcyBhcmUgaGFuZGxlZCBpbiB0aGUgR0lDdjMgSVRTIGRyaXZlci4gU3BlY2lmaWNhbGx5LCB0aGV5J3JlIGludHJvZHVjaW5nIGEgYGxwaV9mcmVlX2NhY2hlYCBsaXN0IHRvIHRyeSBhbmQgb3B0aW1pemUgbWVtb3J5IG1hbmFnZW1lbnQsIGNhY2hpbmcgYGxwaV9yYW5nZWAgb2JqZWN0cyBhbmQgYXZvaWRpbmcgYWxsb2NhdGlvbiBkdXJpbmcgYGZyZWVfbHBpX3JhbmdlYC4gVGhhdCdzIGEgY2xhc3NpYyBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb247IGNhY2hpbmcgaXMgYSBnb29kIG1vdmUgdG8gcmVkdWNlIG92ZXJoZWFkLiBUaGVyZSdzIGFsc28gYSBmaXggZm9yIGEgbWVtb3J5IGxlYWsgaW4gYGl0c19jcmVhdGVfZGV2aWNlYCB3aGVyZSB0aGV5IHdlcmUgdXNpbmcgdGhlIHdyb25nIGZyZWUgZnVuY3Rpb24gZm9yIGBscGlfbWFwYC4gR29vZCBjYXRjaDsgbWVtb3J5IGxlYWtzIGFyZSB0aGUgYmFuZSBvZiBteSBleGlzdGVuY2UuXG5cbk5vdywgdGhlIGltcG9ydGFudCBxdWVzdGlvbiBpczogY2FuIEkgYWN0dWFsbHkgdGVzdCB0aGlzIGluIGEgcmVhc29uYWJsZSBlbnZpcm9ubWVudD8gR0lDdjMgSVRTIGlzIHByaW1hcmlseSBhbiBBUk02NCB0aGluZywgYW5kIHRoZSBwYXRjaCBpcyBpbiB0aGUgZHJpdmVyLiBPZiBjb3Vyc2UsIFFFTVUgaGFzIEdJQ3YzIElUUyBlbXVsYXRpb24uIEkgY2FuIGVhc2lseSBib290IGEgdmlydHVhbGl6ZWQgQVJNNjQgc3lzdGVtIHdpdGggc29tZXRoaW5nIGxpa2UgYHFlbXUtc3lzdGVtLWFhcmNoNjQgLW1hY2hpbmUgdmlydCxnaWMtdmVyc2lvbj0zLGl0cz1vbmAuIFNvLCB5ZXMsIGl0J3MgZGVmaW5pdGVseSB0ZXN0YWJsZSBpbiBhIHN0YW5kYXJkIFFFTVUgc2V0dXAuIFRoYXQncyBhIHJlbGllZi5cblxuTmV4dCB1cCwgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbmZpZyBvcHRpb25zLiBUaGlzIGNvZGUgaXMgcHJvYmFibHkgY29tcGlsZWQgaWYgYENPTkZJR19BUk1fR0lDX1YzX0lUU2AgaXMgZW5hYmxlZC4gVGltZSB0byBnbyBkaWcgdGhyb3VnaCB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgdmVyaWZ5IHRoYXQgaHlwb3RoZXNpcy4gTm8gcG9pbnQgaW4gc3BlbmRpbmcgdGltZSBvbiBpdCBpZiB0aGUgY29uZmlnIGlzbid0IHNldCwgYWx0aG91Z2ggaWYgaXQncyB0aGVyZSwgSSdsbCBiZSBzdXJlIHRvIHZlcmlmeSB0aGUgaW1wbGljYXRpb25zIG9uIGEgc3RhbmRhcmQgYnVpbGQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzMjUsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxMDoxODoyMy4xMzM4NjI1NTFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODQyMjA5MzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXJxLWdpYy12My1pdHMub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2lycWNoaXAvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pcnFjaGlwL01ha2VmaWxlPTM2PW9iai0kKENPTkZJR19BUk1fR0lDX0lUU19QQVJFTlQpXFx0Kz0gaXJxLWdpYy1pdHMtbXNpLXBhcmVudC5vXFxuZHJpdmVycy9pcnFjaGlwL01ha2VmaWxlOjM3Om9iai0kKENPTkZJR19BUk1fR0lDX1YzX0lUUylcXHRcXHQrPSBpcnEtZ2ljLXYzLWl0cy5vIGlycS1naWMtdjQub1xcbmRyaXZlcnMvaXJxY2hpcC9NYWtlZmlsZS0zOC1vYmotJChDT05GSUdfQVJNX0dJQ19WNSlcXHRcXHQrPSBpcnEtZ2ljLXY1Lm8gaXJxLWdpYy12NS1pcnMubyBpcnEtZ2ljLXY1LWl0cy5vIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTA6MTg6MjMuMjE4MDg4NzM5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzYzMDI0MjE5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyBJbnRlcnJ1cHQgQ29udHJvbGxlciBDb25maWd1cmF0aW9uKipcblxuUmlnaHQsIHNvIGBDT05GSUdfQVJNX0dJQ19WM19JVFNgIGlzIHRoZSBrZXkgY29uZmlndXJhdGlvbiBvcHRpb24gd2UncmUgbG9va2luZyBhdCBoZXJlLiBUaGF0J3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBCdXQsIGFzIHdlIGFsbCBrbm93LCBub3RoaW5nIGlzIGV2ZXIgcXVpdGUgdGhhdCBzaW1wbGUgaW4gdGhlc2Ugc3lzdGVtcywgaXMgaXQ/IFdlIGNhbid0IGp1c3QgYXNzdW1lIGl0J3MgdGhlIG9ubHkgcmVsZXZhbnQgY29uZmlndXJhdGlvbi4gU28sIG15IG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGRpdmUgZGVlcGVyLiBJIG5lZWQgdG8gcXVpY2tseSBzY2FuIGFuZCB2ZXJpZnkuIEkgbmVlZCB0byBjaGVjayB0aGUgZW50aXJlIHN5c3RlbSB0byBzZWUgaWYgdGhlcmUgYXJlICphbnkqIG90aGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIGludGVycnVwdCBjb250cm9sbGVycyB0aGF0IG1pZ2h0IGludGVyYWN0IHdpdGgsIG9yIGluZmx1ZW5jZSwgdGhlIGJlaGF2aW9yIG9mIEdJQ3YzIElUUy4gV2UgY2FuJ3QgbWlzcyBhbnl0aGluZyB0aGF0J3MgZ29pbmcgdG8gYWZmZWN0IHRoZSBvdXRjb21lLiBHb3R0YSBtYWtlIHN1cmUgd2UgaGF2ZSB0aGUgZnVsbCBwaWN0dXJlIGJlZm9yZSBtb3ZpbmcgZm9yd2FyZC4gTGV0J3MgbWFrZSBzdXJlIG5vdGhpbmcgaXMgb3Zlcmxvb2tlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDE1OCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDEwOjE4OjI2Ljg0ODMzMzEzM1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTE5NjczOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQVJNX0dJQ19WM19JVFNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9pcnFjaGlwL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pcnFjaGlwL0tjb25maWc9NDM9Y29uZmlnIEFSTV9HSUNfSVRTX1BBUkVOVFxcbi0tXFxuZHJpdmVycy9pcnFjaGlwL0tjb25maWctNDUtXFxuZHJpdmVycy9pcnFjaGlwL0tjb25maWc6NDY6Y29uZmlnIEFSTV9HSUNfVjNfSVRTXFxuZHJpdmVycy9pcnFjaGlwL0tjb25maWctNDctXFx0Ym9vbFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxMDoxODoyNi45MDM1MzUxNjFaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjE1OTI0MjI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcyBhcyBJIGFwcHJvYWNoIHRoZSBjb2RlOlxuXG4qKkFuYWx5emluZyB0aGUgU2VsZWN0aW9uIG9mIGBBUk1fR0lDX1YzX0lUU2AqKlxuXG5BbHJpZ2h0LCBJIG5lZWQgdG8gZmlndXJlIG91dCB3aHkgdGhpcyBjb2RlIHBhdGgsIHNwZWNpZmljYWxseSB0aGUgb25lIHJlbGF0ZWQgdG8gYEFSTV9HSUNfVjNfSVRTYCwgaXMgYmVpbmcgY2hvc2VuLiAgTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB0aGUgY29uZGl0aW9uYWxzIHRoYXQgbGVhZCB0byB0aGlzIHNwZWNpZmljIHNlbGVjdGlvbi4gSSdtIGdvaW5nIHRvIGxvb2sgZm9yIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGhhcmR3YXJlIGNhcGFiaWxpdGllcyB0aGF0IHdvdWxkIHRyaWdnZXIgdGhpcy4gSSdsbCBtZW50YWxseSBtYXAgb3V0IHRoZSBkZXBlbmRlbmNpZXMuIElzIGl0IGEgcHJvY2Vzc29yIGZlYXR1cmUsIGEgcGxhdGZvcm0gY29uZmlndXJhdGlvbiwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IEknbSB0aGlua2luZyBhYm91dCB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSBhbmQgdGhlIHBvdGVudGlhbCBkcml2ZXJzIGluIHBsYXkgaGVyZS4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgc2NhbiBmb3IgcmVsYXRlZCBkZWZpbmVzLCB2YXJpYWJsZXMsIGFuZCBwb3RlbnRpYWwgaW50ZXJhY3Rpb25zIHdpdGggb3RoZXIgaW50ZXJydXB0IGNvbnRyb2xsZXIgaW1wbGVtZW50YXRpb25zLiAgSSBleHBlY3QgdG8gYmUgbG9va2luZyBmb3IgQVJNdjggYXJjaGl0ZWN0dXJlIGZlYXR1cmVzIGFuZCBob3cgdGhleSBhcmUgbGV2ZXJhZ2VkIGluIHRoaXMgY29udGV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDUwMiwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDEwOjE4OjMwLjExOTQ2MTQ1NVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzE1ODg4NDAyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNlbGVjdCBBUk1fR0lDX1YzX0lUU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm0vS2NvbmZpZy5wbGF0Zm9ybXM9NTU9Y29uZmlnIEFSQ0hfVklSVFxcbi0tXFxuYXJjaC9hcm0vS2NvbmZpZy5wbGF0Zm9ybXMtNjEtXFx0c2VsZWN0IEFSTV9HSUNfVjNcXG5hcmNoL2FybS9LY29uZmlnLnBsYXRmb3Jtczo2MjpcXHRzZWxlY3QgQVJNX0dJQ19WM19JVFMgaWYgUENJXFxuYXJjaC9hcm0vS2NvbmZpZy5wbGF0Zm9ybXMtNjMtXFx0c2VsZWN0IEFSTV9QU0NJXFxuLS1cXG5hcmNoL2FybTY0L0tjb25maWc9Mj1jb25maWcgQVJNNjRcXG4tLVxcbmFyY2gvYXJtNjQvS2NvbmZpZy0xMDUtXFx0c2VsZWN0IEFSTV9HSUNfVjNcXG5hcmNoL2FybTY0L0tjb25maWc6MTA2OlxcdHNlbGVjdCBBUk1fR0lDX1YzX0lUUyBpZiBQQ0lcXG5hcmNoL2FybTY0L0tjb25maWctMTA3LVxcdHNlbGVjdCBBUk1fR0lDX1Y1XFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvS2NvbmZpZz0yMTA9Y29uZmlnIEhJU0lMSUNPTl9JUlFfTUJJR0VOXFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvS2NvbmZpZy0yMTItXFx0c2VsZWN0IEFSTV9HSUNfVjNcXG5kcml2ZXJzL2lycWNoaXAvS2NvbmZpZzoyMTM6XFx0c2VsZWN0IEFSTV9HSUNfVjNfSVRTXFxuZHJpdmVycy9pcnFjaGlwL0tjb25maWctMjE0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxMDoxODozMy44MzUzNTY3NTZaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Mzg0ODQ2MzY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgR0lDdjMgSVRTIEltcGxlbWVudGF0aW9uKipcblxuT2theSwgc28gSSBzZWUgdGhhdCBgQVJNX0dJQ19WM19JVFNgIGlzIGJlaW5nIHNlbGVjdGVkIHdoZW4gdGhlIGBBUk02NGAgYXJjaGl0ZWN0dXJlIGlzIGVuYWJsZWQgYW5kIGBQQ0lgIHN1cHBvcnQgaXMgcHJlc2VudC4gVGhhdCBtYWtlcyBzZW5zZSwgYW5kIEknbSBjb25maWRlbnQgaXQncyBhIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbCBjb21wb25lbnQuIE5vdywgbXkgaW1tZWRpYXRlIGdvYWwgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY2hhbmdlcyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2gsIHNvIEkgbmVlZCB0byBmaW5kIHRoZSBjb3JlIGZvY3VzIHN5bWJvbHMuXG5cbkkgc2VlIGl0J3MgdG91Y2hpbmcgcXVpdGUgYSBmZXcgZnVuY3Rpb25zIHdpdGhpbiB0aGUgSVRTIHN1YnN5c3RlbTogYGFsbG9jX2xwaV9yYW5nZWAsIGBmcmVlX2xwaV9yYW5nZWAsIGBpdHNfbHBpX2luaXRgICh3aGljaCBpcyBtYXJrZWQgYXMgYF9faW5pdGApLCBgaXRzX2xwaV9hbGxvY2AsIGBpdHNfbHBpX2ZyZWVgLCBhbmQgYWxzbyBgaXRzX2NyZWF0ZV9kZXZpY2VgLiBJIHdhbnQgdG8gc3RhcnQgYnkgdHJhY2luZyB0aGUgZnVuY3Rpb24gY2FsbHMuIFRoZSBwbGFjZSB0byBzdGFydCB3aXRoIHRoaXMgc2VlbXMgdG8gYmUsIHdoZXJlIGlzIGBpdHNfY3JlYXRlX2RldmljZWAgYmVpbmcgY2FsbGVkPyBUaGF0IGZ1bmN0aW9uIHNlZW1zIGxpa2UgYSBnb29kIGVudHJ5IHBvaW50IHRvIHRyYWNlIHRoZSBvdGhlciBmdW5jdGlvbnMgYmVpbmcgbW9kaWZpZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwMjAsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTA6MTg6MzguMjIwMjA1ODcyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjQ2MTQ2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpdHNfY3JlYXRlX2RldmljZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYz0zNDQ5PXN0YXRpYyBib29sIGl0c19hbGxvY192cGVfdGFibGUodTMyIHZwZV9pZClcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jLTM0OTAtXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmM6MzQ5MTpzdGF0aWMgc3RydWN0IGl0c19kZXZpY2UgKml0c19jcmVhdGVfZGV2aWNlKHN0cnVjdCBpdHNfbm9kZSAqaXRzLCB1MzIgZGV2X2lkLFxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jLTM0OTItXFx0XFx0XFx0XFx0XFx0ICAgIGludCBudmVjcywgYm9vbCBhbGxvY19scGlzKVxcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmM9MzU5OD1zdGF0aWMgaW50IGl0c19tc2lfcHJlcGFyZShzdHJ1Y3QgaXJxX2RvbWFpbiAqZG9tYWluLCBzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYy0zNjQwLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jOjM2NDE6XFx0aXRzX2RldiA9IGl0c19jcmVhdGVfZGV2aWNlKGl0cywgZGV2X2lkLCBudmVjLCB0cnVlKTtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYy0zNjQyLVxcdGlmICghaXRzX2Rldikge1xcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmM9NTE4Mj1zdGF0aWMgaW50IGl0c19pbml0X3ZwZV9kb21haW4odm9pZClcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jLTUyMDItXFx0ZGV2aWQgPSBHRU5NQVNLKGRldmljZV9pZHMoaXRzKSAtIDEsIDApO1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jOjUyMDM6XFx0dnBlX3Byb3h5LmRldiA9IGl0c19jcmVhdGVfZGV2aWNlKGl0cywgZGV2aWQsIGVudHJpZXMsIGZhbHNlKTtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYy01MjA0LVxcdGlmICghdnBlX3Byb3h5LmRldikge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxMDoxODozOC4yNjY2NzcwNTFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM4NzIzMjU0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoZSBwcm92aWRlZCBpbmZvcm1hdGlvbiwgYXMgaWYgdGhlc2Ugd2VyZSBteSBpbnRlcm5hbCB0aG91Z2h0czpcblxuKipEaXNzZWN0aW5nIGBpdHNfbXNpX3ByZXBhcmVgKipcblxuT2theSwgc28gd2UncmUgbG9va2luZyBhdCBgaXRzX21zaV9wcmVwYXJlYC4gVGhlIG5vdGVzIGNsZWFybHkgc3RhdGUgdGhpcyBpcyBhbiBBUEkgZW50cnlwb2ludCBmdW5jdGlvbiwgYW5kIHRoYXQgaXQncyBwYXJ0IG9mIGBtc2lfZG9tYWluX29wc2AuIFRoYXQgaW1tZWRpYXRlbHkgcHV0cyBpdCBpbnRvIGEgcGFydGljdWxhciBjb250ZXh0IOKAkyBpdCdzIGEgY3JpdGljYWwgY29tcG9uZW50LCBhIHB1YmxpYyBpbnRlcmZhY2UsIHdpdGhpbiB0aGUgTVNJIGRvbWFpbiBvcGVyYXRpb25zLiBUaGlzIGxpa2VseSBtZWFucyBpdOKAmXMgcmVzcG9uc2libGUgZm9yIHByZXBhcmluZyBzb21ldGhpbmcgcmVsYXRlZCB0byBNZXNzYWdlIFNpZ25hbGVkIEludGVycnVwdHMgKE1TSXMpLiBMZXQncyBkaWcgaW4gYW5kIGZpZ3VyZSBvdXQgZXhhY3RseSB3aGF0IHByZXBhcmF0aW9uIGlzIGRvbmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgYGl0c19tc2lfcHJlcGFyZWAgZnVuY3Rpb24ncyBwdXJwb3NlLiBJJ20gZ29pbmcgdG8gc3RhcnQgY2hlY2tpbmcgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gaXRzZWxmLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1OTEwLCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTA6MTg6NDEuNjUzOTEyNTcxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDM1MTI5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpdHNfbXNpX3ByZXBhcmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmM9MzU4Mj1zdGF0aWMgaW50IGl0c19hbGxvY19kZXZpY2VfaXJxKHN0cnVjdCBpdHNfZGV2aWNlICpkZXYsIGludCBudmVjcywgaXJxX2h3X251bWJlcl90ICpod2lycSlcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jLTM1OTctXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmM6MzU5ODpzdGF0aWMgaW50IGl0c19tc2lfcHJlcGFyZShzdHJ1Y3QgaXJxX2RvbWFpbiAqZG9tYWluLCBzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtMzU5OS1cXHRcXHRcXHQgICBpbnQgbnZlYywgbXNpX2FsbG9jX2luZm9fdCAqaW5mbylcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jPTM2ODE9c3RhdGljIHN0cnVjdCBtc2lfZG9tYWluX29wcyBpdHNfbXNpX2RvbWFpbl9vcHMgPSB7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmM6MzY4MjpcXHQubXNpX3ByZXBhcmVcXHQ9IGl0c19tc2lfcHJlcGFyZSxcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYy0zNjgzLVxcdC5tc2lfdGVhcmRvd25cXHQ9IGl0c19tc2lfdGVhcmRvd24sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDEwOjE4OjQxLjcwNDI2ODU2OVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjUyNjAzMjg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkZvY3VzaW5nIG9uIE1TSSBhbmQgTWVtb3J5IE1hbmFnZW1lbnQqKlxuXG5Pa2F5LCBgaXRzX21zaV9wcmVwYXJlYCBmZWVscyBsaWtlIHRoZSByaWdodCBwbGFjZSB0byBzdGFydCBkaWdnaW5nIGludG8gdGhpcy4gSXQncyBhIGNsZWFyIHNpZ25hbC4gQnV0IG5vdyBJJ20gdGhpbmtpbmcsIHdoYXQgYWJvdXQgdGhlIGNvbXBsZW1lbnRhcnkgZnVuY3Rpb24sIGBpdHNfbXNpX3RlYXJkb3duYD8gRG9lcyAqdGhhdCogZnVuY3Rpb24gcHJvcGVybHkgY2xlYW4gdXAgYWZ0ZXIgaXRzIHdvcms/IFNwZWNpZmljYWxseSwgZG9lcyBpdCBjYWxsIGBpdHNfbHBpX2ZyZWVgPyBUaGF0J3MgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uIEkgbmVlZCB0byBhbnN3ZXIuIEkgbmVlZCB0byBrbm93IGlmIHdlJ3JlIHByb3Blcmx5IHJlbGVhc2luZyBhbGxvY2F0ZWQgcmVzb3VyY2VzIGFmdGVyIHRoZSBNU0kgc2V0dXAgaXMgY29tcGxldGUuIFRoaXMgaXMgbGlrZWx5IHdoZXJlIGEgcG90ZW50aWFsIG1lbW9yeSBsZWFrIGNvdWxkIG9jY3VyLiBJJ20gZ29pbmcgdG8gdHJhY2sgZG93biB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhhdCB0ZWFyZG93biBmdW5jdGlvbiB0byBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NDcwLCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTA6MTg6NDUuMzU2ODc0NTYzWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTgyNDUwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpdHNfbXNpX3RlYXJkb3duXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jPTM1OTg9c3RhdGljIGludCBpdHNfbXNpX3ByZXBhcmUoc3RydWN0IGlycV9kb21haW4gKmRvbWFpbiwgc3RydWN0IGRldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtMzY1Ni1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYzozNjU3OnN0YXRpYyB2b2lkIGl0c19tc2lfdGVhcmRvd24oc3RydWN0IGlycV9kb21haW4gKmRvbWFpbiwgbXNpX2FsbG9jX2luZm9fdCAqaW5mbylcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYy0zNjU4LXtcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jPTM2ODE9c3RhdGljIHN0cnVjdCBtc2lfZG9tYWluX29wcyBpdHNfbXNpX2RvbWFpbl9vcHMgPSB7XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtMzY4Mi1cXHQubXNpX3ByZXBhcmVcXHQ9IGl0c19tc2lfcHJlcGFyZSxcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYzozNjgzOlxcdC5tc2lfdGVhcmRvd25cXHQ9IGl0c19tc2lfdGVhcmRvd24sXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtMzY4NC19O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxMDoxODo0NS40MDI3MDM2NDFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ0OTM3MDQ4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB1bmRlcnN0YW5kaW5nLCBwcmVzZW50ZWQgYXMgYSBwZXJzb25hbCB0aG91Z2h0IHByb2Nlc3MsIGdpdmVuIG15IGV4cGVydGlzZTpcblxuKipEaXNzZWN0aW5nIGBpdHNfbXNpX3RlYXJkb3duYCoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoaXMgYGl0c19tc2lfdGVhcmRvd25gIGZ1bmN0aW9uIG9yIHByb2Nlc3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBmdW5jdGlvbiBhbmQgcHVycG9zZSwgZ2l2ZW4gdGhlIGNvbnRleHQgdGhhdCBpdCdzIGRlc2lnbmVkIHRvIGJlIHRvcm4gZG93bi4gSSdsbCBuZWVkIHRvIGtub3cgd2hhdCBpdOKAmXMgaW50ZW5kZWQgdG8gZG87IHByZXN1bWFibHksIGl0J3Mgc29tZXRoaW5nIGludm9sdmVkIHdpdGggTVNJIChNZXNzYWdlIFNpZ25hbGVkIEludGVycnVwdHMpLCBhbmQgaXRzIHRlYXJkb3duIGltcGxpZXMgYSBjb250cm9sbGVkIGFuZCBwb3RlbnRpYWxseSByZXZlcnNpYmxlIHNodXRkb3duIG9yIGNsZWFudXAgcHJvY2VkdXJlLiBHaXZlbiBteSBleHBlcmllbmNlLCBJJ2xsIGJlIGxvb2tpbmcgZm9yIGNsdWVzIGFib3V0IHJlc291cmNlcyBpdCBtYW5hZ2VzLCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIGhhcmR3YXJlIG9yIG9wZXJhdGluZyBzeXN0ZW0sIGFuZCB0aGUgcG9zc2libGUgaW1wYWN0IG9mIGltcHJvcGVyIHRlYXJkb3duLiBJcyBpdCBoYW5kbGluZyBpbnRlcnJ1cHQgdmVjdG9ycywgbWVtb3J5IHJlZ2lvbnMsIG9yIGRldmljZSBzdGF0ZT8gVGhpcyB3aWxsIGJlIGludGVyZXN0aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MDI3LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTA6MTg6NDguODUyMDc3NDc5WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3OTM4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzNjUwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIzNjUwOlxcdFxcdHByX2RlYnVnKFxcXCJJVFQgJWQgZW50cmllcywgJWQgYml0c1xcXFxuXFxcIiwgbnZlYywgaWxvZzIobnZlYykpO1xcbjM2NTE6XFx0b3V0OlxcbjM2NTI6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZpdHMtXFx1MDAzZWRldl9hbGxvY19sb2NrKTtcXG4zNjUzOlxcdFxcdGluZm8tXFx1MDAzZXNjcmF0Y2hwYWRbMF0ucHRyID0gaXRzX2RldjtcXG4zNjU0OlxcdFxcdHJldHVybiBlcnI7XFxuMzY1NTpcXHR9XFxuMzY1NjpcXHRcXG4zNjU3OlxcdHN0YXRpYyB2b2lkIGl0c19tc2lfdGVhcmRvd24oc3RydWN0IGlycV9kb21haW4gKmRvbWFpbiwgbXNpX2FsbG9jX2luZm9fdCAqaW5mbylcXG4zNjU4OlxcdHtcXG4zNjU5OlxcdFxcdHN0cnVjdCBpdHNfZGV2aWNlICppdHNfZGV2ID0gaW5mby1cXHUwMDNlc2NyYXRjaHBhZFswXS5wdHI7XFxuMzY2MDpcXHRcXG4zNjYxOlxcdFxcdGd1YXJkKG11dGV4KShcXHUwMDI2aXRzX2Rldi1cXHUwMDNlaXRzLVxcdTAwM2VkZXZfYWxsb2NfbG9jayk7XFxuMzY2MjpcXHRcXG4zNjYzOlxcdFxcdC8qIElmIHRoZSBkZXZpY2UgaXMgc2hhcmVkLCBrZWVwIGV2ZXJ5dGhpbmcgYXJvdW5kICovXFxuMzY2NDpcXHRcXHRpZiAoaXRzX2Rldi1cXHUwMDNlc2hhcmVkKVxcbjM2NjU6XFx0XFx0XFx0cmV0dXJuO1xcbjM2NjY6XFx0XFxuMzY2NzpcXHRcXHQvKiBMUElzIHNob3VsZCBoYXZlIGJlZW4gYWxyZWFkeSB1bm1hcHBlZCBhdCB0aGlzIHN0YWdlICovXFxuMzY2ODpcXHRcXHRpZiAoV0FSTl9PTl9PTkNFKCFiaXRtYXBfZW1wdHkoaXRzX2Rldi1cXHUwMDNlZXZlbnRfbWFwLmxwaV9tYXAsXFxuMzY2OTpcXHRcXHRcXHRcXHRcXHQgICAgICAgaXRzX2Rldi1cXHUwMDNlZXZlbnRfbWFwLm5yX2xwaXMpKSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTA6MTg6NDguODUyMzU4Nzc5WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2NjQzNDgxMTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHByZXNlbnRlZCBhcyBpZiBpdCB3ZXJlIG15IG93biBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqRGl2aW5nIERlZXBlciBpbnRvIHRoZSBNU0kgVGVhcmRvd24qKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGRpZyBiYWNrIGludG8gYGl0c19tc2lfdGVhcmRvd25gLiBJJ20gZ29pbmcgdG8gcmV2aXNpdCB0aGF0IGRhdGEgc2V0LCBleHBlY3RpbmcgdG8gZmluZCBzb21lIGNydWNpYWwgaW5zaWdodHMgSSBtYXkgaGF2ZSBtaXNzZWQgZHVyaW5nIHRoZSBpbml0aWFsIHJldmlldy4gSeKAmW0gdGhpbmtpbmcgdGhlcmUgbWlnaHQgYmUgbnVhbmNlcyBidXJpZWQgaW4gdGhlIGNvbXBvbmVudC1sZXZlbCBhbmFseXNpcyB0aGF0IHdhcnJhbnQgYSBzZWNvbmQsIG1vcmUgZm9jdXNlZCBsb29rLiBQZXJoYXBzIGEgZGVlcGVyIGRpdmUgd2lsbCByZXZlYWwgc29tZXRoaW5nIG5vdmVsIGFib3V0IHRoZWlyIHRoZXJtYWwgbWFuYWdlbWVudCBzdHJhdGVneSwgb3IgbWF5YmUgZXZlbiBpZGVudGlmeSBzdWJ0bGUgY29zdC1jdXR0aW5nIG1lYXN1cmVzIHRoYXQgd2VyZSBpbml0aWFsbHkgb2JzY3VyZWQgYnkgdGhlIGJyb2FkZXIgYXJjaGl0ZWN0dXJlLiBJJ20gZXNwZWNpYWxseSBrZWVuIHRvIHNlZSBpZiBhbnkgb2YgdGhlIGFzc3VtcHRpb25zIEkgbWFkZSBlYXJsaWVyIGhvbGQgdXAgdW5kZXIgbW9yZSBzY3J1dGlueSDigJMgc29tZXRpbWVzIGluaXRpYWwgaW50ZXJwcmV0YXRpb25zIGNhbiBiZSB0b28gc2ltcGxpc3RpYy4gSG9wZWZ1bGx5LCB0aGlzIGRlZXBlciBleHBsb3JhdGlvbiB3aWxsIGhlbHAgY2VtZW50IG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHN5c3RlbSdzIGRlc2lnbiBjaG9pY2VzIGFuZCB1bHRpbWF0ZWx5IGluZm9ybSBteSBvd24gd29yay4gTGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc2MjYsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDEwOjE4OjUyLjUxNjcxMTI2M1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNTcyMjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzY3MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzY3MDpcXHRcXHRcXHRyZXR1cm47XFxuMzY3MTpcXHRcXG4zNjcyOlxcdFxcdGl0c19scGlfZnJlZShpdHNfZGV2LVxcdTAwM2VldmVudF9tYXAubHBpX21hcCxcXG4zNjczOlxcdFxcdFxcdCAgICAgaXRzX2Rldi1cXHUwMDNlZXZlbnRfbWFwLmxwaV9iYXNlLFxcbjM2NzQ6XFx0XFx0XFx0ICAgICBpdHNfZGV2LVxcdTAwM2VldmVudF9tYXAubnJfbHBpcyk7XFxuMzY3NTpcXHRcXG4zNjc2OlxcdFxcdC8qIFVubWFwIGRldmljZS9pdHQsIGFuZCBnZXQgcmlkIG9mIHRoZSB0cmFja2luZyAqL1xcbjM2Nzc6XFx0XFx0aXRzX3NlbmRfbWFwZChpdHNfZGV2LCAwKTtcXG4zNjc4OlxcdFxcdGl0c19mcmVlX2RldmljZShpdHNfZGV2KTtcXG4zNjc5OlxcdH1cXG4zNjgwOlxcdFxcbjM2ODE6XFx0c3RhdGljIHN0cnVjdCBtc2lfZG9tYWluX29wcyBpdHNfbXNpX2RvbWFpbl9vcHMgPSB7XFxuMzY4MjpcXHRcXHQubXNpX3ByZXBhcmVcXHQ9IGl0c19tc2lfcHJlcGFyZSxcXG4zNjgzOlxcdFxcdC5tc2lfdGVhcmRvd25cXHQ9IGl0c19tc2lfdGVhcmRvd24sXFxuMzY4NDpcXHR9O1xcbjM2ODU6XFx0XFxuMzY4NjpcXHRzdGF0aWMgaW50IGl0c19pcnFfZ2ljX2RvbWFpbl9hbGxvYyhzdHJ1Y3QgaXJxX2RvbWFpbiAqZG9tYWluLFxcbjM2ODc6XFx0XFx0XFx0XFx0XFx0ICAgIHVuc2lnbmVkIGludCB2aXJxLFxcbjM2ODg6XFx0XFx0XFx0XFx0XFx0ICAgIGlycV9od19udW1iZXJfdCBod2lycSlcXG4zNjg5OlxcdHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTA6MTg6NTIuNTE3MDcyNjgyWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY2MzUxMjU2MDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBHSUN2MyBJVFMgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBgaXRzX21zaV90ZWFyZG93bmAgZG9lcyBpbmRlZWQgY2FsbCBgaXRzX2xwaV9mcmVlYCwgY29uZmlybWluZyBteSBpbml0aWFsIHRob3VnaHQuIFRoYXQgbWVhbnMgYGl0c19tc2lfcHJlcGFyZWAgYW5kIGBpdHNfbXNpX3RlYXJkb3duYCBhcmUgdGhlIGtleSBmdW5jdGlvbnMgdG8gZm9jdXMgb24gZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGNoYW5nZXMuXG5cbkxldCdzIHNlZSBpZiB0aGVyZSBhcmUgb3RoZXIgZW50cnkgcG9pbnRzIG9mIGludGVyZXN0LiBUaGUgcGF0Y2ggbW9kaWZpZXMgYGl0c19scGlfaW5pdGAsIHdoaWNoIGlzLCBvZiBjb3Vyc2UsIGNhbGxlZCBkdXJpbmcgaW5pdGlhbGl6YXRpb24uIEkgc2VlIGBpdHNfY3JlYXRlX2RldmljZWAsIHdoaWNoIGlzIGNhbGxlZCBieSBib3RoIGBpdHNfbXNpX3ByZXBhcmVgIGFuZCBgaXRzX2luaXRfdnBlX2RvbWFpbmAuIEFuZCwgbmF0dXJhbGx5LCBgaXRzX2luaXRfdnBlX2RvbWFpbmAgaXMgYWxzbyBjYWxsZWQgZHVyaW5nIGluaXRpYWxpemF0aW9uLlxuXG5UaGVyZWZvcmUsIHRoZSBjb3JlIGZ1bmN0aW9uYWwgY2hhbmdlcyBhcmUgY2VudGVyZWQgYXJvdW5kIExQSSBhbGxvY2F0aW9uIGFuZCBmcmVlaW5nLCB0cmlnZ2VyZWQgc3BlY2lmaWNhbGx5IGJ5IHRoZSBNU0kgcHJlcGFyZSBhbmQgdGVhcmRvd24gY2FsbHMuIFRvIHJlaXRlcmF0ZSwgYGl0c19tc2lfcHJlcGFyZWAgYW5kIGBpdHNfbXNpX3RlYXJkb3duYCBhcmUgZGVmaW5pdGVseSB0aGUgYmVzdCBzeW1ib2xzIHRvIGNvbmNlbnRyYXRlIG9uLlxuXG5Ob3csIEkgbmVlZCB0byBjaGVjayBpZiBzaW1wbHkgZW5hYmxpbmcgYEFSTV9HSUNfVjNfSVRTYCBpcyBzdWZmaWNpZW50LiBZZXMsIGBBUk1fR0lDX1YzX0lUU2AgaXMgdGhlIGNvbmZpZyBvcHRpb24gZm9yIHRoaXMgZmlsZS4gSG93ZXZlciwgd2FpdCBhIG1pbnV0ZSwgYEFSTV9HSUNfVjNfSVRTYCBpcyBhIGJvb2xlYW4gdmFsdWUgd2l0aG91dCBhIHVzZXItdmlzaWJsZSBwcm9tcHQgaW4gdGhlIGBkcml2ZXJzL2lycWNoaXAvS2NvbmZpZ2AgZmlsZS4gSXQncyBzZWxlY3RlZCBpZiBib3RoIGBBUk02NGAgYW5kIGBQQ0lgIGFyZSBlbmFibGVkLiBTbywgcmVhbGlzdGljYWxseSwgSSBzaG91bGQgcHJvYmFibHkgZW5hYmxlIGJvdGggYFBDSWAgYW5kIGBBUk02NGAsIGFsdGhvdWdoIGFyY2hpdGVjdHVyZSBjb25maWdzIGFyZSB1c3VhbGx5IGltcGxpZWQgYnkgdGhlIHRhcmdldC4gSGFuZyBvbiwgcGVyaGFwcyB0aGUgZnV6emVyIHdpbGwgYmUgc21hcnQgZW5vdWdoIHRvIGZpZ3VyZSBvdXQgaG93IHRvIGVuYWJsZSBpdCBieSBlbmFibGluZyBQQ0kgZXZlbiBpZiBJIGp1c3Qgc3BlY2lmeSBgQVJNX0dJQ19WM19JVFNgLiBBaCwgbm8sIGBBUk1fR0lDX1YzX0lUU2AgaXNuJ3QgZGlyZWN0bHkgdXNlci1zZWxlY3RhYmxlLiBJIHNob3VsZCBjaGVjayBpZiBJIGNhbiBlbmFibGUgaXQgZGlyZWN0bHkgYW55d2F5LCBhbmQgaWYgbm90LCBsaXN0IGBQQ0lgIGFzIHdlbGwuIFdhaXQgYSBzZWNvbmQsIHRoZSBjb25maWcncyBzZWxlY3Rpb24gY3JpdGVyaWEgYXJlIGNsZWFyIG5vdy4gYEFSTV9HSUNfVjNfSVRTYCBpcyBzZWxlY3RlZCBieSBgQVJNNjRgIG9ubHkgaWYgYFBDSWAgaXMgc2VsZWN0ZWQuIFRoZXJlZm9yZSwgaXQncyBgUENJYCB0aGF0J3MgdGhlIHVzZXItdmlzaWJsZSBjb25maWcgb3B0aW9uIHRoYXQgKmVuYWJsZXMqIGl0LiBUaW1lIHRvIGNoZWNrIGBQQ0lgIGluIGBhcmNoL2FybTY0L0tjb25maWdgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MjI2LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDM4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTA6MTg6NTkuMTUyMjAwOTk1WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODE4MzgyNjE2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBQQ0lcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgODIxIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5hcmNoL21pcHMvS2NvbmZpZz0xMjUxPWNvbmZpZyBJUlFfR1Q2NDFYWFxcbi0tXFxuYXJjaC9taXBzL0tjb25maWctMTI1My1cXG5hcmNoL21pcHMvS2NvbmZpZzoxMjU0OmNvbmZpZyBQQ0lfR1Q2NFhYWF9QQ0kwXFxuYXJjaC9taXBzL0tjb25maWctMTI1NS1cXHRib29sXFxuYXJjaC9taXBzL0tjb25maWctMTI1Ni1cXG5hcmNoL21pcHMvS2NvbmZpZzoxMjU3OmNvbmZpZyBQQ0lfWFRBTEtfQlJJREdFXFxuYXJjaC9taXBzL0tjb25maWctMTI1OC1cXHRib29sXFxuLS1cXG5hcmNoL21pcHMvS2NvbmZpZz0zMDE4PW1lbnUgXFxcIkJ1cyBvcHRpb25zIChQQ0ksIFBDTUNJQSwgRUlTQSwgSVNBLCBUQylcXFwiXFxuYXJjaC9taXBzL0tjb25maWctMzAxOS1cXG5hcmNoL21pcHMvS2NvbmZpZzozMDIwOmNvbmZpZyBQQ0lfRFJJVkVSU19HRU5FUklDXFxuYXJjaC9taXBzL0tjb25maWctMzAyMS1cXHRzZWxlY3QgUENJX0RPTUFJTlNfR0VORVJJQyBpZiBQQ0lcXG4tLVxcbmFyY2gvbWlwcy9LY29uZmlnLTMwMjMtXFxuYXJjaC9taXBzL0tjb25maWc6MzAyNDpjb25maWcgUENJX0RSSVZFUlNfTEVHQUNZXFxuYXJjaC9taXBzL0tjb25maWctMzAyNS1cXHRkZWZfYm9vbCAhUENJX0RSSVZFUlNfR0VORVJJQ1xcbi0tXFxuYXJjaC9taXBzL2F0aDI1L0tjb25maWc9Nz1jb25maWcgU09DX0FSMjMxNVxcbi0tXFxuYXJjaC9taXBzL2F0aDI1L0tjb25maWctMTEtXFxuYXJjaC9taXBzL2F0aDI1L0tjb25maWc6MTI6Y29uZmlnIFBDSV9BUjIzMTVcXG5hcmNoL21pcHMvYXRoMjUvS2NvbmZpZy0xMy1cXHRib29sIFxcXCJBdGhlcm9zIEFSMjMxNSBQQ0kgY29udHJvbGxlciBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC9taXBzL2F0aDc5L0tjb25maWc9MjQ9Y29uZmlnIFNPQ19RQ0E5NTVYXFxuLS1cXG5hcmNoL21pcHMvYXRoNzkvS2NvbmZpZy0yOC1cXG5hcmNoL21pcHMvYXRoNzkvS2NvbmZpZzoyOTpjb25maWcgUENJX0FSNzI0WFxcbmFyY2gvbWlwcy9hdGg3OS9LY29uZmlnLTMwLVxcdGRlZl9ib29sIG5cXG4tLVxcbmFyY2gvbWlwcy9sYW50aXEvS2NvbmZpZz00OT1lbmRjaG9pY2VcXG5hcmNoL21pcHMvbGFudGlxL0tjb25maWctNTAtXFxuYXJjaC9taXBzL2xhbnRpcS9LY29uZmlnOjUxOmNvbmZpZyBQQ0lfTEFOVElRXFxuYXJjaC9taXBzL2xhbnRpcS9LY29uZmlnLTUyLVxcdGJvb2wgXFxcIlBDSSBTdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC9taXBzL3R4eDkvS2NvbmZpZz01Nj1jb25maWcgUElDTUdfUENJX0JBQ0tQTEFORV9ERUZBVUxUXFxuLS1cXG5hcmNoL21pcHMvdHh4OS9LY29uZmlnLTYwLVxcbmFyY2gvbWlwcy90eHg5L0tjb25maWc6NjE6Y29uZmlnIFBDSV9UWDQ5MjdcXG5hcmNoL21pcHMvdHh4OS9LY29uZmlnLTYyLVxcdGJvb2xcXG4tLVxcbmFyY2gvczM5MC9LY29uZmlnPTc0Nz1pZiBQQ0lcXG5hcmNoL3MzOTAvS2NvbmZpZy03NDgtXFxuYXJjaC9zMzkwL0tjb25maWc6NzQ5OmNvbmZpZyBQQ0lfTlJfRlVOQ1RJT05TXFxuYXJjaC9zMzkwL0tjb25maWctNzUwLVxcdGludCBcXFwiTWF4aW11bSBudW1iZXIgb2YgUENJIGZ1bmN0aW9ucyAoMS00MDk2KVxcXCJcXG4tLVxcbmFyY2gvc3BhcmMvS2NvbmZpZz0zODg9Y29uZmlnIFNVTl9MRE9NU1xcbi0tXFxuYXJjaC9zcGFyYy9LY29uZmlnLTM5NC1cXG5hcmNoL3NwYXJjL0tjb25maWc6Mzk1OmNvbmZpZyBQQ0lDX1BDSVxcbmFyY2gvc3BhcmMvS2NvbmZpZy0zOTYtXFx0Ym9vbFxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZz0yODI2PWNob2ljZVxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZy0yODQ0LVxcbmFyY2gveDg2L0tjb25maWc6Mjg0NTpjb25maWcgUENJX0dPQklPU1xcbmFyY2gveDg2L0tjb25maWctMjg0Ni1cXHRib29sIFxcXCJCSU9TXFxcIlxcbmFyY2gveDg2L0tjb25maWctMjg0Ny1cXG5hcmNoL3g4Ni9LY29uZmlnOjI4NDg6Y29uZmlnIFBDSV9HT01NQ09ORklHXFxuYXJjaC94ODYvS2NvbmZpZy0yODQ5LVxcdGJvb2wgXFxcIk1NQ29uZmlnXFxcIlxcbmFyY2gveDg2L0tjb25maWctMjg1MC1cXG5hcmNoL3g4Ni9LY29uZmlnOjI4NTE6Y29uZmlnIFBDSV9HT0RJUkVDVFxcbmFyY2gveDg2L0tjb25maWctMjg1Mi1cXHRib29sIFxcXCJEaXJlY3RcXFwiXFxuYXJjaC94ODYvS2NvbmZpZy0yODUzLVxcbmFyY2gveDg2L0tjb25maWc6Mjg1NDpjb25maWcgUENJX0dPT0xQQ1xcbmFyY2gveDg2L0tjb25maWctMjg1NS1cXHRib29sIFxcXCJPTFBDIFhPLTFcXFwiXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnLTI4NTctXFxuYXJjaC94ODYvS2NvbmZpZzoyODU4OmNvbmZpZyBQQ0lfR09BTllcXG5hcmNoL3g4Ni9LY29uZmlnLTI4NTktXFx0Ym9vbCBcXFwiQW55XFxcIlxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZz0yODYxPWVuZGNob2ljZVxcbmFyY2gveDg2L0tjb25maWctMjg2Mi1cXG5hcmNoL3g4Ni9LY29uZmlnOjI4NjM6Y29uZmlnIFBDSV9CSU9TXFxuYXJjaC94ODYvS2NvbmZpZy0yODY0LVxcdGRlZl9ib29sIHlcXG4tLVxcbmFyY2gveDg2L0tjb25maWctMjg2Ny0jIHg4Ni02NCBkb2Vzbid0IHN1cHBvcnQgUENJIEJJT1MgYWNjZXNzIGZyb20gbG9uZyBtb2RlIHNvIGFsd2F5cyBnbyBkaXJlY3QuXFxuYXJjaC94ODYvS2NvbmZpZzoyODY4OmNvbmZpZyBQQ0lfRElSRUNUXFxuYXJjaC94ODYvS2NvbmZpZy0yODY5LVxcdGRlZl9ib29sIHlcXG4tLVxcbmFyY2gveDg2L0tjb25maWctMjg3MS1cXG5hcmNoL3g4Ni9LY29uZmlnOjI4NzI6Y29uZmlnIFBDSV9NTUNPTkZJR1xcbmFyY2gveDg2L0tjb25maWc6Mjg3MzpcXHRib29sIFxcXCJTdXBwb3J0IG1tY29uZmlnIFBDSSBjb25maWcgc3BhY2UgYWNjZXNzXFxcIiBpZiBYODZfNjRcXG5hcmNoL3g4Ni9LY29uZmlnLTI4NzQtXFx0ZGVmYXVsdCB5XFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnLTI4OTAtXFxuYXJjaC94ODYvS2NvbmZpZzoyODkxOmNvbmZpZyBQQ0lfT0xQQ1xcbmFyY2gveDg2L0tjb25maWctMjg5Mi1cXHRkZWZfYm9vbCB5XFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnLTI4OTQtXFxuYXJjaC94ODYvS2NvbmZpZzoyODk1OmNvbmZpZyBQQ0lfWEVOXFxuYXJjaC94ODYvS2NvbmZpZy0yODk2LVxcdGRlZl9ib29sIHlcXG4tLVxcbmFyY2gveDg2L0tjb25maWc9Mjg5OT1jb25maWcgTU1DT05GX0ZBTTEwSFxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZy0yOTAyLVxcbmFyY2gveDg2L0tjb25maWc6MjkwMzpjb25maWcgUENJX0NOQjIwTEVfUVVJUktcXG5hcmNoL3g4Ni9LY29uZmlnLTI5MDQtXFx0Ym9vbCBcXFwiUmVhZCBQQ0kgaG9zdCBicmlkZ2Ugd2luZG93cyBmcm9tIHRoZSBDTkIyMExFIGNoaXBzZXRcXFwiIGlmIEVYUEVSVFxcbi0tXFxuZHJpdmVycy9taXNjL0tjb25maWc9NDYyPWNvbmZpZyBEV19YREFUQV9QQ0lFXFxuLS1cXG5kcml2ZXJzL21pc2MvS2NvbmZpZy00NzEtXFxuZHJpdmVycy9taXNjL0tjb25maWc6NDcyOmNvbmZpZyBQQ0lfRU5EUE9JTlRfVEVTVFxcbmRyaXZlcnMvbWlzYy9LY29uZmlnLTQ3My1cXHRkZXBlbmRzIG9uIFBDSVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3NqYTEwMDAvcGVha19wY2kuYz0zNj1zdHJ1Y3QgcGVha19wY2lfY2hhbiB7XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vc2phMTAwMC9wZWFrX3BjaS5jLTUyLVxcbmRyaXZlcnMvbmV0L2Nhbi9zamExMDAwL3BlYWtfcGNpLmM6NTM6I2RlZmluZSBQRUFLX1BDSV9DRkdfU0laRVxcdDB4MTAwMFxcdC8qIFNpemUgb2YgdGhlIGNvbmZpZyBQQ0kgYmFyICovXFxuZHJpdmVycy9uZXQvY2FuL3NqYTEwMDAvcGVha19wY2kuYy01NC0jZGVmaW5lIFBFQUtfUENJX0NIQU5fU0laRVxcdDB4MDQwMFxcdC8qIFNpemUgdXNlZCBieSB0aGUgY2hhbm5lbCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2FuL0tjb25maWc9OTg9c291cmNlIFxcXCJkcml2ZXJzL25ldC93YW4vZnJhbWVyL0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvd2FuL0tjb25maWctOTktXFxuZHJpdmVycy9uZXQvd2FuL0tjb25maWc6MTAwOmNvbmZpZyBQQ0kyMDBTWU5cXG5kcml2ZXJzL25ldC93YW4vS2NvbmZpZy0xMDEtXFx0dHJpc3RhdGUgXFxcIkdvcmFtbyBQQ0kyMDBTWU4gc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvcGFyaXNjL0tjb25maWc9NTk9Y29uZmlnIEdTQ19ESU5PXFxuLS1cXG5kcml2ZXJzL3BhcmlzYy9LY29uZmlnLTY5LVxcbmRyaXZlcnMvcGFyaXNjL0tjb25maWc6NzA6Y29uZmlnIFBDSV9MQkFcXG5kcml2ZXJzL3BhcmlzYy9LY29uZmlnLTcxLVxcdGJvb2wgXFxcIkxCQS9FbHJveSBQQ0kgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvcGNpL0tjb25maWc9MTg9Y29uZmlnIEdFTkVSSUNfUENJX0lPTUFQXFxuLS1cXG5kcml2ZXJzL3BjaS9LY29uZmlnLTIwLVxcbmRyaXZlcnMvcGNpL0tjb25maWc6MjE6bWVudWNvbmZpZyBQQ0lcXG5kcml2ZXJzL3BjaS9LY29uZmlnLTIyLVxcdGJvb2wgXFxcIlBDSSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9wY2kvS2NvbmZpZz0zMD1pZiBQQ0lcXG5kcml2ZXJzL3BjaS9LY29uZmlnLTMxLVxcbmRyaXZlcnMvcGNpL0tjb25maWc6MzI6Y29uZmlnIFBDSV9ET01BSU5TXFxuZHJpdmVycy9wY2kvS2NvbmZpZy0zMy1cXHRib29sXFxuZHJpdmVycy9wY2kvS2NvbmZpZy0zNC1cXG5kcml2ZXJzL3BjaS9LY29uZmlnOjM1OmNvbmZpZyBQQ0lfRE9NQUlOU19HRU5FUklDXFxuZHJpdmVycy9wY2kvS2NvbmZpZy0zNi1cXHRib29sXFxuLS1cXG5kcml2ZXJzL3BjaS9LY29uZmlnLTM4LVxcbmRyaXZlcnMvcGNpL0tjb25maWc6Mzk6Y29uZmlnIFBDSV9TWVNDQUxMXFxuZHJpdmVycy9wY2kvS2NvbmZpZy00MC1cXHRib29sXFxuLS1cXG5kcml2ZXJzL3BjaS9LY29uZmlnPTQyPXNvdXJjZSBcXFwiZHJpdmVycy9wY2kvcGNpZS9LY29uZmlnXFxcIlxcbmRyaXZlcnMvcGNpL0tjb25maWctNDMtXFxuZHJpdmVycy9wY2kvS2NvbmZpZzo0NDpjb25maWcgUENJX01TSVxcbmRyaXZlcnMvcGNpL0tjb25maWctNDUtXFx0Ym9vbCBcXFwiTWVzc2FnZSBTaWduYWxlZCBJbnRlcnJ1cHRzIChNU0kgYW5kIE1TSS1YKVxcXCJcXG4tLVxcbmRyaXZlcnMvcGNpL0tjb25maWctNTgtXFxuZHJpdmVycy9wY2kvS2NvbmZpZzo1OTpjb25maWcgUENJX01TSV9BUkNIX0ZBTExCQUNLU1xcbmRyaXZlcnMvcGNpL0tjb25maWctNjAtXFx0Ym9vbFxcbmRyaXZlcnMvcGNpL0tjb25maWctNjEtXFxuZHJpdmVycy9wY2kvS2NvbmZpZzo2Mjpjb25maWcgUENJX1FVSVJLU1xcbmRyaXZlcnMvcGNpL0tjb25maWctNjMtXFx0ZGVmYXVsdCB5XFxuLS1cXG5kcml2ZXJzL3BjaS9LY29uZmlnLTY5LVxcbmRyaXZlcnMvcGNpL0tjb25maWc6NzA6Y29uZmlnIFBDSV9ERUJVR1xcbmRyaXZlcnMvcGNpL0tjb25maWctNzEtXFx0Ym9vbCBcXFwiUENJIERlYnVnZ2luZ1xcXCJcXG4tLVxcbmRyaXZlcnMvcGNpL0tjb25maWctNzktXFxuZHJpdmVycy9wY2kvS2NvbmZpZzo4MDpjb25maWcgUENJX1JFQUxMT0NfRU5BQkxFX0FVVE9cXG5kcml2ZXJzL3BjaS9LY29uZmlnLTgxLVxcdGJvb2wgXFxcIkVuYWJsZSBQQ0kgcmVzb3VyY2UgcmUtYWxsb2NhdGlvbiBkZXRlY3Rpb25cXFwiXFxuLS1cXG5kcml2ZXJzL3BjaS9LY29uZmlnLTkxLVxcbmRyaXZlcnMvcGNpL0tjb25maWc6OTI6Y29uZmlnIFBDSV9TVFVCXFxuZHJpdmVycy9wY2kvS2NvbmZpZy05My1cXHR0cmlzdGF0ZSBcXFwiUENJIFN0dWIgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9wY2kvS2NvbmZpZy05OS1cXG5kcml2ZXJzL3BjaS9LY29uZmlnOjEwMDpjb25maWcgUENJX1BGX1NUVUJcXG5kcml2ZXJzL3BjaS9LY29uZmlnLTEwMS1cXHR0cmlzdGF0ZSBcXFwiUENJIFBGIFN0dWIgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9wY2kvS2NvbmZpZz0xMTE9Y29uZmlnIFhFTl9QQ0lERVZfRlJPTlRFTkRcXG4tLVxcbmRyaXZlcnMvcGNpL0tjb25maWctMTIwLVxcbmRyaXZlcnMvcGNpL0tjb25maWc6MTIxOmNvbmZpZyBQQ0lfQVRTXFxuZHJpdmVycy9wY2kvS2NvbmZpZy0xMjItXFx0Ym9vbFxcbmRyaXZlcnMvcGNpL0tjb25maWctMTIzLVxcbmRyaXZlcnMvcGNpL0tjb25maWc6MTI0OmNvbmZpZyBQQ0lfSURFXFxuZHJpdmVycy9wY2kvS2NvbmZpZy0xMjUtXFx0Ym9vbFxcbmRyaXZlcnMvcGNpL0tjb25maWctMTI2LVxcbmRyaXZlcnMvcGNpL0tjb25maWc6MTI3OmNvbmZpZyBQQ0lfVFNNXFxuZHJpdmVycy9wY2kvS2NvbmZpZy0xMjgtXFx0Ym9vbCBcXFwiUENJIFRTTTogRGV2aWNlIHNlY3VyaXR5IHByb3RvY29sIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL3BjaS9LY29uZmlnLTE0MS1cXG5kcml2ZXJzL3BjaS9LY29uZmlnOjE0Mjpjb25maWcgUENJX0RPRVxcbmRyaXZlcnMvcGNpL0tjb25maWctMTQzLVxcdGJvb2wgXFxcIkVuYWJsZSBQQ0kgRGF0YSBPYmplY3QgRXhjaGFuZ2UgKERPRSkgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvcGNpL0tjb25maWctMTQ3LVxcbmRyaXZlcnMvcGNpL0tjb25maWc6MTQ4OmNvbmZpZyBQQ0lfRUNBTVxcbmRyaXZlcnMvcGNpL0tjb25maWctMTQ5LVxcdGJvb2xcXG5kcml2ZXJzL3BjaS9LY29uZmlnLTE1MC1cXG5kcml2ZXJzL3BjaS9LY29uZmlnOjE1MTpjb25maWcgUENJX0xPQ0tMRVNTX0NPTkZJR1xcbmRyaXZlcnMvcGNpL0tjb25maWctMTUyLVxcdGJvb2xcXG5kcml2ZXJzL3BjaS9LY29uZmlnLTE1My1cXG5kcml2ZXJzL3BjaS9LY29uZmlnOjE1NDpjb25maWcgUENJX0JSSURHRV9FTVVMXFxuZHJpdmVycy9wY2kvS2NvbmZpZy0xNTUtXFx0Ym9vbFxcbmRyaXZlcnMvcGNpL0tjb25maWctMTU2LVxcbmRyaXZlcnMvcGNpL0tjb25maWc6MTU3OmNvbmZpZyBQQ0lfSU9WXFxuZHJpdmVycy9wY2kvS2NvbmZpZy0xNTgtXFx0Ym9vbCBcXFwiUENJIElPViBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9wY2kvS2NvbmZpZy0xNjYtXFxuZHJpdmVycy9wY2kvS2NvbmZpZzoxNjc6Y29uZmlnIFBDSV9OUEVNXFxuZHJpdmVycy9wY2kvS2NvbmZpZy0xNjgtXFx0Ym9vbCBcXFwiTmF0aXZlIFBDSWUgRW5jbG9zdXJlIE1hbmFnZW1lbnRcXFwiXFxuLS1cXG5kcml2ZXJzL3BjaS9LY29uZmlnLTE3NS1cXG5kcml2ZXJzL3BjaS9LY29uZmlnOjE3Njpjb25maWcgUENJX1BSSVxcbmRyaXZlcnMvcGNpL0tjb25maWctMTc3LVxcdGJvb2wgXFxcIlBDSSBQUkkgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvcGNpL0tjb25maWctMTg0LVxcbmRyaXZlcnMvcGNpL0tjb25maWc6MTg1OmNvbmZpZyBQQ0lfUEFTSURcXG5kcml2ZXJzL3BjaS9LY29uZmlnLTE4Ni1cXHRib29sIFxcXCJQQ0kgUEFTSUQgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvcGNpL0tjb25maWctMTk2LVxcbmRyaXZlcnMvcGNpL0tjb25maWc6MTk3OmNvbmZpZyBQQ0lFX1RQSFxcbmRyaXZlcnMvcGNpL0tjb25maWctMTk4LVxcdGJvb2wgXFxcIlRMUCBQcm9jZXNzaW5nIEhpbnRzXFxcIlxcbi0tXFxuZHJpdmVycy9wY2kvS2NvbmZpZy0yMDUtXFxuZHJpdmVycy9wY2kvS2NvbmZpZzoyMDY6Y29uZmlnIFBDSV9QMlBETUFcXG5kcml2ZXJzL3BjaS9LY29uZmlnLTIwNy1cXHRib29sIFxcXCJQQ0kgcGVlci10by1wZWVyIHRyYW5zZmVyIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL3BjaS9LY29uZmlnLTIyOC1cXG5kcml2ZXJzL3BjaS9LY29uZmlnOjIyOTpjb25maWcgUENJX0xBQkVMXFxuZHJpdmVycy9wY2kvS2NvbmZpZy0yMzAtXFx0ZGVmX2Jvb2wgeSBpZiAoRE1JIHx8IEFDUEkpXFxuLS1cXG5kcml2ZXJzL3BjaS9LY29uZmlnLTIzMi1cXG5kcml2ZXJzL3BjaS9LY29uZmlnOjIzMzpjb25maWcgUENJX0hZUEVSVlxcbmRyaXZlcnMvcGNpL0tjb25maWctMjM0LVxcdHRyaXN0YXRlIFxcXCJIeXBlci1WIFBDSSBGcm9udGVuZFxcXCJcXG4tLVxcbmRyaXZlcnMvcGNpL0tjb25maWctMjQxLVxcbmRyaXZlcnMvcGNpL0tjb25maWc6MjQyOmNvbmZpZyBQQ0lfRFlOQU1JQ19PRl9OT0RFU1xcbmRyaXZlcnMvcGNpL0tjb25maWctMjQzLVxcdGJvb2wgXFxcIkNyZWF0ZSBEZXZpY2UgdHJlZSBub2RlcyBmb3IgUENJIGRldmljZXNcXFwiXFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWc9Mz1tZW51IFxcXCJQQ0kgY29udHJvbGxlciBkcml2ZXJzXFxcIlxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTUtXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnOjY6Y29uZmlnIFBDSV9IT1NUX0NPTU1PTlxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy03LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctOS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWc6MTA6Y29uZmlnIFBDSV9BQVJEVkFSS1xcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0xMS1cXHR0cmlzdGF0ZSBcXFwiQWFyZHZhcmsgUENJZSBjb250cm9sbGVyXFxcIlxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTIxLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZzoyMjpjb25maWcgUENJRV9BTFRFUkFcXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMjMtXFx0dHJpc3RhdGUgXFxcIkFsdGVyYSBQQ0llIGNvbnRyb2xsZXJcXFwiXFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMjgtXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnOjI5OmNvbmZpZyBQQ0lFX0FMVEVSQV9NU0lcXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMzAtXFx0dHJpc3RhdGUgXFxcIkFsdGVyYSBQQ0llIE1TSSBmZWF0dXJlXFxcIlxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTM3LVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZzozODpjb25maWcgUENJRV9BUFBMRV9NU0lfRE9PUkJFTExfQUREUlxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0zOS1cXHRoZXhcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy00Mi1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWc6NDM6Y29uZmlnIFBDSUVfQVBQTEVcXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctNDQtXFx0dHJpc3RhdGUgXFxcIkFwcGxlIFBDSWUgY29udHJvbGxlclxcXCJcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy01Ni1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWc6NTc6Y29uZmlnIFBDSV9WRVJTQVRJTEVcXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctNTgtXFx0Ym9vbCBcXFwiQVJNIFZlcnNhdGlsZSBQQiBQQ0kgY29udHJvbGxlclxcXCJcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy02MC1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWc6NjE6Y29uZmlnIFBDSUVfQVNQRUVEXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTYyLVxcdGJvb2wgXFxcIkFTUEVFRCBQQ0llIGNvbnRyb2xsZXJcXFwiXFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctNzYtXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnOjc3OmNvbmZpZyBQQ0lFX0JSQ01TVEJcXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctNzgtXFx0dHJpc3RhdGUgXFxcIkJyb2FkY29tIEJyY21zdGIgUENJZSBjb250cm9sbGVyXFxcIlxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTg4LVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZzo4OTpjb25maWcgUENJRV9JUFJPQ1xcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy05MC1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTk1LVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZzo5Njpjb25maWcgUENJRV9JUFJPQ19QTEFURk9STVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy05Ny1cXHR0cmlzdGF0ZSBcXFwiQnJvYWRjb20gaVByb2MgUENJZSBwbGF0Zm9ybSBidXMgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTEwNS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWc6MTA2OmNvbmZpZyBQQ0lFX0lQUk9DX0JDTUFcXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMTA3LVxcdHRyaXN0YXRlIFxcXCJCcm9hZGNvbSBpUHJvYyBCQ01BIFBDSWUgY29udHJvbGxlclxcXCJcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0xMTUtXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnOjExNjpjb25maWcgUENJRV9JUFJPQ19NU0lcXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMTE3LVxcdGJvb2wgXFxcIkJyb2FkY29tIGlQcm9jIFBDSWUgTVNJIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMTI1LVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZzoxMjY6Y29uZmlnIFBDSV9IT1NUX1RIVU5ERVJfUEVNXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTEyNy1cXHRib29sIFxcXCJDYXZpdW0gVGh1bmRlciBQQ0llIGNvbnRyb2xsZXIgdG8gb2ZmLWNoaXAgZGV2aWNlc1xcXCJcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0xMzMtXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnOjEzNDpjb25maWcgUENJX0hPU1RfVEhVTkRFUl9FQ0FNXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTEzNS1cXHRib29sIFxcXCJDYXZpdW0gVGh1bmRlciBFQ0FNIGNvbnRyb2xsZXIgdG8gb24tY2hpcCBkZXZpY2VzIG9uIHBhc3MtMS54IHNpbGljb25cXFwiXFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMTQxLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZzoxNDI6Y29uZmlnIFBDSV9GVFBDSTEwMFxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0xNDMtXFx0Ym9vbCBcXFwiRmFyYWRheSBUZWNobm9sb2d5IEZUUENJMTAwIFBDSSBjb250cm9sbGVyXFxcIlxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTE0Ni1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWc6MTQ3OmNvbmZpZyBQQ0lfSE9TVF9HRU5FUklDXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTE0OC1cXHR0cmlzdGF0ZSBcXFwiR2VuZXJpYyBQQ0kgaG9zdCBjb250cm9sbGVyXFxcIlxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTE1NS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWc6MTU2OmNvbmZpZyBQQ0lFX0hJU0lfRVJSXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTE1Ny1cXHRkZXBlbmRzIG9uIEFDUElfQVBFSV9HSEVTIFxcdTAwMjZcXHUwMDI2IChBUk02NCB8fCBDT01QSUxFX1RFU1QpXFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMTYyLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZzoxNjM6Y29uZmlnIFBDSV9JWFA0WFhcXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMTY0LVxcdGJvb2wgXFxcIkludGVsIElYUDR4eCBQQ0kgY29udHJvbGxlclxcXCJcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZz0xNzI9Y29uZmlnIFZNRFxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTE4Ny1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWc6MTg4OmNvbmZpZyBQQ0lfTE9PTkdTT05cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMTg5LVxcdGJvb2wgXFxcIkxPT05HU09OIFBDSWUgY29udHJvbGxlclxcXCJcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0xOTctXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnOjE5ODpjb25maWcgUENJX01WRUJVXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTE5OS1cXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBFQlUgUENJZSBjb250cm9sbGVyXFxcIlxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTIwOS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWc6MjEwOmNvbmZpZyBQQ0lFX01FRElBVEVLXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTIxMS1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgUENJZSBjb250cm9sbGVyXFxcIlxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTIxOS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWc6MjIwOmNvbmZpZyBQQ0lFX01FRElBVEVLX0dFTjNcXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMjIxLVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBHZW4zIFBDSWUgY29udHJvbGxlclxcXCJcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0yMzQtXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnOjIzNTpjb25maWcgUENJRV9NVDc2MjFcXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMjM2LVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc2MjEgUENJZSBjb250cm9sbGVyXFxcIlxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTI0Mi1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWc6MjQzOmNvbmZpZyBQQ0lfSFlQRVJWX0lOVEVSRkFDRVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0yNDQtXFx0dHJpc3RhdGUgXFxcIk1pY3Jvc29mdCBIeXBlci1WIFBDSSBJbnRlcmZhY2VcXFwiXFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMjUwLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZzoyNTE6Y29uZmlnIFBDSV9URUdSQVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0yNTItXFx0dHJpc3RhdGUgXFxcIk5WSURJQSBUZWdyYSBQQ0llIGNvbnRyb2xsZXJcXFwiXFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMjU5LVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZzoyNjA6Y29uZmlnIFBDSUVfUkNBUl9IT1NUXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTI2MS1cXHRib29sIFxcXCJSZW5lc2FzIFItQ2FyIFBDSWUgY29udHJvbGxlciAoaG9zdCBtb2RlKVxcXCJcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0yNjktXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnOjI3MDpjb25maWcgUENJRV9SQ0FSX0VQXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTI3MS1cXHRib29sIFxcXCJSZW5lc2FzIFItQ2FyIFBDSWUgY29udHJvbGxlciAoZW5kcG9pbnQgbW9kZSlcXFwiXFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMjc3LVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZzoyNzg6Y29uZmlnIFBDSV9SQ0FSX0dFTjJcXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMjc5LVxcdGJvb2wgXFxcIlJlbmVzYXMgUi1DYXIgR2VuMiBJbnRlcm5hbCBQQ0kgY29udHJvbGxlclxcXCJcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0yODUtXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnOjI4Njpjb25maWcgUENJRV9SRU5FU0FTX1JaRzNTX0hPU1RcXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMjg3LVxcdGJvb2wgXFxcIlJlbmVzYXMgUlovRzNTIFBDSWUgaG9zdCBjb250cm9sbGVyXFxcIlxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTI5NC1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWc6Mjk1OmNvbmZpZyBQQ0lFX1JPQ0tDSElQXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTI5Ni1cXHRib29sXFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMjk4LVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZzoyOTk6Y29uZmlnIFBDSUVfUk9DS0NISVBfSE9TVFxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0zMDAtXFx0dHJpc3RhdGUgXFxcIlJvY2tjaGlwIFBDSWUgY29udHJvbGxlciAoaG9zdCBtb2RlKVxcXCJcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0zMTAtXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnOjMxMTpjb25maWcgUENJRV9ST0NLQ0hJUF9FUFxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0zMTItXFx0Ym9vbCBcXFwiUm9ja2NoaXAgUENJZSBjb250cm9sbGVyIChlbmRwb2ludCBtb2RlKVxcXCJcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0zMjItXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnOjMyMzpjb25maWcgUENJX1YzX1NFTUlcXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMzI0LVxcdGJvb2wgXFxcIlYzIFNlbWljb25kdWN0b3IgUENJIGNvbnRyb2xsZXJcXFwiXFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMzI4LVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZzozMjk6Y29uZmlnIFBDSV9YR0VORVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0zMzAtXFx0Ym9vbCBcXFwiWC1HZW5lIFBDSWUgY29udHJvbGxlclxcXCJcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0zMzctXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnOjMzODpjb25maWcgUENJX1hHRU5FX01TSVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0zMzktXFx0Ym9vbCBcXFwiWC1HZW5lIHYxIFBDSWUgTVNJIGZlYXR1cmVcXFwiXFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMzQ3LVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZzozNDg6Y29uZmlnIFBDSUVfWElMSU5YXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTM0OS1cXHRib29sIFxcXCJYaWxpbnggQVhJIFBDSWUgY29udHJvbGxlclxcXCJcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0zNTYtXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnOjM1Nzpjb25maWcgUENJRV9YSUxJTlhfRE1BX1BMXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTM1OC1cXHRib29sIFxcXCJYaWxpbnggRE1BIFBMIFBDSWUgaG9zdCBicmlkZ2Ugc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0zNjgtXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnOjM2OTpjb25maWcgUENJRV9YSUxJTlhfTldMXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTM3MC1cXHRib29sIFxcXCJYaWxpbnggTldMIFBDSWUgY29udHJvbGxlclxcXCJcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0zNzktXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnOjM4MDpjb25maWcgUENJRV9YSUxJTlhfQ1BNXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTM4MS1cXHRib29sIFxcXCJYaWxpbnggVmVyc2FsIENQTSBQQ0kgY29udHJvbGxlclxcXCJcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvY2FkZW5jZS9LY29uZmlnPTM9bWVudSBcXFwiQ2FkZW5jZS1iYXNlZCBQQ0llIGNvbnRyb2xsZXJzXFxcIlxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9jYWRlbmNlL0tjb25maWctNS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2NhZGVuY2UvS2NvbmZpZzo2OmNvbmZpZyBQQ0lFX0NBREVOQ0VcXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2NhZGVuY2UvS2NvbmZpZy03LVxcdHRyaXN0YXRlXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9jYWRlbmNlL0tjb25maWctOC1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2NhZGVuY2UvS2NvbmZpZzo5OmNvbmZpZyBQQ0lFX0NBREVOQ0VfSE9TVFxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvY2FkZW5jZS9LY29uZmlnLTEwLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2NhZGVuY2UvS2NvbmZpZy0xNC1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2NhZGVuY2UvS2NvbmZpZzoxNTpjb25maWcgUENJRV9DQURFTkNFX0VQXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9jYWRlbmNlL0tjb25maWctMTYtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvY2FkZW5jZS9LY29uZmlnLTIwLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvY2FkZW5jZS9LY29uZmlnOjIxOmNvbmZpZyBQQ0lFX0NBREVOQ0VfUExBVFxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvY2FkZW5jZS9LY29uZmlnLTIyLVxcdHRyaXN0YXRlXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9jYWRlbmNlL0tjb25maWctMjMtXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9jYWRlbmNlL0tjb25maWc6MjQ6Y29uZmlnIFBDSUVfQ0FERU5DRV9QTEFUX0hPU1RcXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2NhZGVuY2UvS2NvbmZpZy0yNS1cXHR0cmlzdGF0ZSBcXFwiQ2FkZW5jZSBwbGF0Zm9ybSBQQ0llIGNvbnRyb2xsZXIgKGhvc3QgbW9kZSlcXFwiXFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2NhZGVuY2UvS2NvbmZpZy0zMy1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2NhZGVuY2UvS2NvbmZpZzozNDpjb25maWcgUENJRV9DQURFTkNFX1BMQVRfRVBcXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2NhZGVuY2UvS2NvbmZpZy0zNS1cXHR0cmlzdGF0ZSBcXFwiQ2FkZW5jZSBwbGF0Zm9ybSBQQ0llIGNvbnRyb2xsZXIgKGVuZHBvaW50IG1vZGUpXFxcIlxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9jYWRlbmNlL0tjb25maWctNDQtXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9jYWRlbmNlL0tjb25maWc6NDU6Y29uZmlnIFBDSV9TS1kxX0hPU1RcXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2NhZGVuY2UvS2NvbmZpZy00Ni1cXHR0cmlzdGF0ZSBcXFwiQ0lYIFNLWTEgUENJZSBjb250cm9sbGVyIChob3N0IG1vZGUpXFxcIlxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9jYWRlbmNlL0tjb25maWctNTktXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9jYWRlbmNlL0tjb25maWc6NjA6Y29uZmlnIFBDSUVfU0cyMDQyX0hPU1RcXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2NhZGVuY2UvS2NvbmZpZy02MS1cXHR0cmlzdGF0ZSBcXFwiU29waGdvIFNHMjA0MiBQQ0llIGNvbnRyb2xsZXIgKGhvc3QgbW9kZSlcXFwiXFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2NhZGVuY2UvS2NvbmZpZy02OC1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2NhZGVuY2UvS2NvbmZpZzo2OTpjb25maWcgUENJX0o3MjFFXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9jYWRlbmNlL0tjb25maWctNzAtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvY2FkZW5jZS9LY29uZmlnLTczLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvY2FkZW5jZS9LY29uZmlnOjc0OmNvbmZpZyBQQ0lfSjcyMUVfSE9TVFxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvY2FkZW5jZS9LY29uZmlnLTc1LVxcdHRyaXN0YXRlIFxcXCJUSSBKNzIxRSBQQ0llIGNvbnRyb2xsZXIgKGhvc3QgbW9kZSlcXFwiXFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2NhZGVuY2UvS2NvbmZpZy04My1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2NhZGVuY2UvS2NvbmZpZzo4NDpjb25maWcgUENJX0o3MjFFX0VQXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9jYWRlbmNlL0tjb25maWctODUtXFx0dHJpc3RhdGUgXFxcIlRJIEo3MjFFIFBDSWUgY29udHJvbGxlciAoZW5kcG9pbnQgbW9kZSlcXFwiXFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnPTM9bWVudSBcXFwiRGVzaWduV2FyZS1iYXNlZCBQQ0llIGNvbnRyb2xsZXJzXFxcIlxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZy01LVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWc6Njpjb25maWcgUENJRV9EV1xcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWctNy1cXHRib29sXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZy04LVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWc6OTpjb25maWcgUENJRV9EV19ERUJVR0ZTXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZy0xMC1cXHRib29sIFxcXCJEZXNpZ25XYXJlIFBDSWUgZGVidWdmcyBlbnRyaWVzXFxcIlxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZy0xOC1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnOjE5OmNvbmZpZyBQQ0lFX0RXX0hPU1RcXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnLTIwLVxcdGJvb2xcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWctMjQtXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZzoyNTpjb25maWcgUENJRV9EV19FUFxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWctMjYtXFx0Ym9vbFxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZy0yOC1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnOjI5OmNvbmZpZyBQQ0lFX0FMXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZy0zMC1cXHRib29sIFxcXCJBbWF6b24gQW5uYXB1cm5hIExhYnMgUENJZSBjb250cm9sbGVyXFxcIlxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZy00MS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnOjQyOmNvbmZpZyBQQ0lFX0FNRF9NREJcXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnLTQzLVxcdGJvb2wgXFxcIkFNRCBNREIgVmVyc2FsMiBQQ0llIGNvbnRyb2xsZXJcXFwiXFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnLTUyLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWc6NTM6Y29uZmlnIFBDSV9NRVNPTlxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWctNTQtXFx0dHJpc3RhdGUgXFxcIkFtbG9naWMgTWVzb24gUENJZSBjb250cm9sbGVyXFxcIlxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZy02My1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnOjY0OmNvbmZpZyBQQ0lFX0FOREVTX1FJTEFJXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZy02NS1cXHR0cmlzdGF0ZSBcXFwiQW5kZXMgUWlMYWkgUENJZSBjb250cm9sbGVyXFxcIlxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZy03NC1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnOjc1OmNvbmZpZyBQQ0lFX0FSVFBFQzZcXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnLTc2LVxcdGJvb2xcXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnLTc3LVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWc6Nzg6Y29uZmlnIFBDSUVfQVJUUEVDNl9IT1NUXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZy03OS1cXHRib29sIFxcXCJBeGlzIEFSVFBFQy02IFBDSWUgY29udHJvbGxlciAoaG9zdCBtb2RlKVxcXCJcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWctODctXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZzo4ODpjb25maWcgUENJRV9BUlRQRUM2X0VQXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZy04OS1cXHRib29sIFxcXCJBeGlzIEFSVFBFQy02IFBDSWUgY29udHJvbGxlciAoZW5kcG9pbnQgbW9kZSlcXFwiXFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnLTk3LVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWc6OTg6Y29uZmlnIFBDSUVfRVNXSU5cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnLTk5LVxcdHRyaXN0YXRlIFxcXCJFU1dJTiBQQ0llIGNvbnRyb2xsZXJcXFwiXFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnLTEwNy1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnOjEwODpjb25maWcgUENJX0lNWDZcXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnLTEwOS1cXHRib29sXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZy0xMTAtXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZzoxMTE6Y29uZmlnIFBDSV9JTVg2X0hPU1RcXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnLTExMi1cXHRib29sIFxcXCJGcmVlc2NhbGUgaS5NWDYvNy84IFBDSWUgY29udHJvbGxlciAoaG9zdCBtb2RlKVxcXCJcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWctMTIzLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWc6MTI0OmNvbmZpZyBQQ0lfSU1YNl9FUFxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWctMTI1LVxcdGJvb2wgXFxcIkZyZWVzY2FsZSBpLk1YNi83LzggUENJZSBjb250cm9sbGVyIChlbmRwb2ludCBtb2RlKVxcXCJcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWctMTM1LVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWc6MTM2OmNvbmZpZyBQQ0lfTEFZRVJTQ0FQRVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWctMTM3LVxcdHRyaXN0YXRlIFxcXCJGcmVlc2NhbGUgTGF5ZXJzY2FwZSBQQ0llIGNvbnRyb2xsZXIgKGhvc3QgbW9kZSlcXFwiXFxuLS1cXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTA6MTk6MDAuOTcwNTg4MDQxWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5OTIwOTA1NzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ29uZmlndXJhdGlvbiBRdWFuZGFyeSoqXG5cbk9rYXksIGhlcmUncyB0aGUgc2l0dWF0aW9uLiBJJ20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgdGhlIG9wdGltYWwgY29uZmlndXJhdGlvbiBzZXR0aW5ncywgYW5kIGl0IGxvb2tzIGxpa2UgYEFSTV9HSUNfVjNfSVRTYCBpcyBhdXRvbWF0aWNhbGx5IHNlbGVjdGVkIGZvciBBUk02NCBpZiBgUENJYCBpcyBzZXQuIFJpZ2h0LCBzbyBpZiBJIGluY2x1ZGUgYFBDSWAsIHRoZW4gYEFSTV9HSUNfVjNfSVRTYCBzaG91bGQgYmUgZW5hYmxlZCwgdGhhdCBtYWtlcyBzZW5zZS5cblxuTGV0IG1lIGp1c3QgY29uZmlybSB0aGF0IGBQQ0lgIGlzIHN1ZmZpY2llbnQgb24gaXRzIG93bi4gWWVwLCBpdCdzIGEgc3RhbmRhcmQgY29uZmlnLCBubyBzdXJwcmlzZXMgdGhlcmUuIE9rYXksIHNvIGNpcmNsaW5nIGJhY2sgdG8gYEFSTV9HSUNfVjNfSVRTYCwgd2hhdCBlbHNlIG1pZ2h0IGJlIGF0IHBsYXk/IEp1c3QgdG8gYmUgc3VyZSwgaXMgdGhlcmUgKmFueXRoaW5nKiBlbHNlIHRoYXQgbmVlZHMgdG8gYmUgY29uc2lkZXJlZD8gSG1tLCBgQ09ORklHX1BDSWAgbG9va3MgZ29vZC5cblxuSG9sZCBvbi4uLiB0YWtpbmcgYW5vdGhlciBwYXNzLCBiZWNhdXNlIEknbSBub3QgYSBmYW4gb2YgYXNzdW1pbmcsIGBDT05GSUdfQVJNX0dJQ19WM19JVFNgICppcyogc2VsZWN0ZWQgYnkgYEFSTTY0YCB3aGVuIGBQQ0lgIGlzIGFscmVhZHkgZW5hYmxlZC4gVGhlcmVmb3JlLCBgUENJYCBpcyB0aGUgdGhpbmcgdG8gdXNlLiBJIGRvbid0IG5lZWQgdG8gc3BlY2lmeSBhbnl0aGluZyBlbHNlLiBJIHNob3VsZCBqdXN0IHJldHVybiBgUENJYC5cblxuUmlnaHQsIG5vdyB0aGUgZnV6emVyLiBJdCAqbWlnaHQqIG5vdCBydW4gb24gQVJNNjQgaWYgSSBkb24ndCAqZXhwbGljaXRseSogaW5jbHVkZSBpdCwgYnV0IHRoZSBmdXp6ZXIgcnVucyBvbiBhbGwgYXJjaGl0ZWN0dXJlcy4gQWhhISBJZiBJIHNwZWNpZnkgYFBDSWAsIGl0IHdpbGwgYXV0b21hdGljYWxseSBiZSBlbmFibGVkIG9uIEFSTTY0LCBhbnl3YXkuIEkgY2FuIGp1c3Qgc3BlY2lmeSBgUENJYC4gSXQgd2lsbCBiZSBlbmFibGVkIG9uIEFSTTY0IGlmIGl0IGlzIGF2YWlsYWJsZS5cblxuTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrLCBpcyB0aGVyZSAqYW55dGhpbmcqIGVsc2UgdGhhdCBuZWVkcyB0byBiZSBjb25maWd1cmVkPyBKdXN0IHRvIGJlIGNlcnRhaW4sIEkgc2hvdWxkIGNoZWNrIHRoZSBkcml2ZXJzLCBgZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzMzOSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxMDoxOTowNi45NjI2ODEwMDlaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0ODg1MDU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmM9MjMzNz1zdGF0aWMgaW50IGdpY19yZXNlcnZlX3JhbmdlKHBoeXNfYWRkcl90IGFkZHIsIHVuc2lnbmVkIGxvbmcgc2l6ZSlcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYy0yMzM4LXtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYzoyMzM5OlxcdGlmIChlZmlfZW5hYmxlZChFRklfQ09ORklHX1RBQkxFUykpXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtMjM0MC1cXHRcXHRyZXR1cm4gZWZpX21lbV9yZXNlcnZlX3BlcnNpc3RlbnQoYWRkciwgc2l6ZSk7XFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYz0yNDA4PXN0YXRpYyBpbnQgaXRzX3NldHVwX2Jhc2VyKHN0cnVjdCBpdHNfbm9kZSAqaXRzLCBzdHJ1Y3QgaXRzX2Jhc2VyICpiYXNlcixcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jLTI0MzYtXFx0LyogQ2hlY2sgaWYgdGhlIHBoeXNpY2FsIGFkZHJlc3Mgb2YgdGhlIG1lbW9yeSBpcyBhYm92ZSA0OGJpdHMgKi9cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYzoyNDM3OlxcdGlmIChJU19FTkFCTEVEKENPTkZJR19BUk02NF82NEtfUEFHRVMpIFxcdTAwMjZcXHUwMDI2IChiYXNlcl9waHlzIFxcdTAwM2VcXHUwMDNlIDQ4KSkge1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jLTI0MzgtXFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYz00OTMwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2ljX3F1aXJrIGl0c19xdWlya3NbXSA9IHtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYzo0OTMxOiNpZmRlZiBDT05GSUdfQ0FWSVVNX0VSUkFUVU1fMjIzNzVcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYy00OTMyLVxcdHtcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jLTQ5MzgtI2VuZGlmXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmM6NDkzOTojaWZkZWYgQ09ORklHX0NBVklVTV9FUlJBVFVNXzIzMTQ0XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtNDk0MC1cXHR7XFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYy00OTQ2LSNlbmRpZlxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jOjQ5NDc6I2lmZGVmIENPTkZJR19RQ09NX1FERjI0MDBfRVJSQVRVTV8wMDY1XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtNDk0OC1cXHR7XFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYy00OTU0LSNlbmRpZlxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jOjQ5NTU6I2lmZGVmIENPTkZJR19TT0NJT05FWFRfU1lOUVVBQ0VSX1BSRUlUU1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jLTQ5NTYtXFx0e1xcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtNDk2Ny0jZW5kaWZcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYzo0OTY4OiNpZmRlZiBDT05GSUdfSElTSUxJQ09OX0VSUkFUVU1fMTYxNjAwODAyXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtNDk2OS1cXHR7XFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYy00OTc1LSNlbmRpZlxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jOjQ5NzY6I2lmZGVmIENPTkZJR19ISVNJTElDT05fRVJSQVRVTV8xNjIxMDA4MDFcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYy00OTc3LVxcdHtcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jLTQ5ODMtI2VuZGlmXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmM6NDk4NDojaWZkZWYgQ09ORklHX1JPQ0tDSElQX0VSUkFUVU1fMzU4ODAwMVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jLTQ5ODUtXFx0e1xcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtNDk5Ni1cXHR9LFxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jOjQ5OTc6I2lmZGVmIENPTkZJR19ST0NLQ0hJUF9FUlJBVFVNXzM1NjgwMDJcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYy00OTk4LVxcdHtcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jPTU0Njk9c3RhdGljIGludCBpdHNfY3B1X21lbXJlc2VydmVfbHBpKHVuc2lnbmVkIGludCBjcHUpXFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYy01NDk3LVxcdC8qIExhc3QgQ1BVIGJlaW5nIGJyb3VnaHQgdXAgZ2V0cyB0byBpc3N1ZSB0aGUgY2xlYW51cCAqL1xcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jOjU0OTg6XFx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19TTVApIHx8XFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtNTQ5OS1cXHQgICAgY3B1bWFza19lcXVhbChcXHUwMDI2Y3B1c19ib290ZWRfb25jZV9tYXNrLCBjcHVfcG9zc2libGVfbWFzaykpXFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYz01NTcyPXN0YXRpYyBpbnQgX19pbml0IGl0c19vZl9wcm9iZShzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUpXFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYy01NjI2LVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jOjU2Mjc6I2lmZGVmIENPTkZJR19BQ1BJXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtNTYyOC1cXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jLTU2MzAtXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmM6NTYzMTojaWZkZWYgQ09ORklHX0FDUElfTlVNQVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jLTU2MzItc3RydWN0IGl0c19zcmF0X21hcCB7XFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYz01ODE1PWludCBfX2luaXQgaXRzX2xwaV9tZW1yZXNlcnZlX2luaXQodm9pZClcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jLTU4MTgtXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmM6NTgxOTpcXHRpZiAoIWVmaV9lbmFibGVkKEVGSV9DT05GSUdfVEFCTEVTKSlcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYy01ODIwLVxcdFxcdHJldHVybiAwO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxMDoxOTowNy4wMDc1NzM3MThaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODIyMjc5NjI5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEltcGFjdCBvZiB0aGUgUGF0Y2ggb24gR0lDdjMgSVRTIEZ1bmN0aW9uYWxpdHkqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGhpdHMgYSBudW1iZXIgb2YgZnVuY3Rpb25zOiBgYWxsb2NfbHBpX3JhbmdlYCwgYGZyZWVfbHBpX3JhbmdlYCwgYGl0c19scGlfaW5pdGAsIGBpdHNfbHBpX2FsbG9jYCwgYGl0c19scGlfZnJlZWAsIGFuZCBgaXRzX2NyZWF0ZV9kZXZpY2VgLiBUaGV5J3JlIGFsbCBjb21waWxlZCB1bmNvbmRpdGlvbmFsbHkgd2hlbiBgaXJxLWdpYy12My1pdHMub2AgaXMgYnVpbHQuIFRoYXQgbWVhbnMgdGhhdCBlbmFibGluZyBgUENJYCBpcyBzdWZmaWNpZW50IHRvIGVuYWJsZSBgQVJNX0dJQ19WM19JVFNgIG9uIEFSTTY0LCBhdCBsZWFzdCBpbiB0aGlzIHJlZ2FyZC5cblxuSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIGxldCdzIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGRlcGVuZGVuY2llcy4gQWxyaWdodCwgYEhJU0lMSUNPTl9JUlFfTUJJR0VOYCBhbHNvIGJyaW5ncyBpdCBpbiwgYnV0IGBQQ0lgIGlzIHRoZSBzdGFuZGFyZCByb3V0ZSwgc28gdGhhdOKAmXMgdGhlIHR5cGljYWwgZW5hYmxlbWVudCBwYXRoLlxuXG5Ob3csIEkgd2FudCB0byBzZWUgaG93IHRoZXNlIGZ1bmN0aW9ucyBpbnRlcmFjdC4gSSdsbCBmb2N1cyBvbiBzeW1ib2xzIHRoYXQgd2lsbCBub3QgYmUgaW5saW5lZC4gSSB3YXMgb3JpZ2luYWxseSB0aGlua2luZyBvZiBgaXRzX21zaV9wcmVwYXJlYCBhbmQgYGl0c19tc2lfdGVhcmRvd25gLiBZZXAsIHRoZXkncmUgc3RhdGljLCBidXQgdGhhdCBtaWdodCBtZWFuIHRoZXkgY2FuIGJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyLiBCdXQgd2FpdCAtIHRoZXkncmUgcGFzc2VkIGFzIGZ1bmN0aW9uIHBvaW50ZXJzIGluIGBpdHNfbXNpX2RvbWFpbl9vcHNgLlxuXG5gYGBjXG5zdGF0aWMgc3RydWN0IG1zaV9kb21haW5fb3BzIGl0c19tc2lfZG9tYWluX29wcyA9IHtcblx0Lm1zaV9wcmVwYXJlXHQ9IGl0c19tc2lfcHJlcGFyZSxcblx0Lm1zaV90ZWFyZG93blx0PSBpdHNfbXNpX3RlYXJkb3duLFxufTtcbmBgYFxuXG5TaW5jZSB3ZSdyZSB0YWtpbmcgdGhlaXIgYWRkcmVzc2VzLCB0aGUgY29tcGlsZXIgd29uJ3QgZnVsbHkgaW5saW5lIHRoZW07IGF0IGxlYXN0IGEgc3RhbmRhbG9uZSB2ZXJzaW9uIHdpbGwgYmUgZ2VuZXJhdGVkLiBUaGF0IG1ha2VzIHRoZW0gZ29vZCBjYW5kaWRhdGVzIGZvciBkZWVwZXIgYW5hbHlzaXMgYXMgdGhleSdsbCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMuXG5cbk5leHQsIEkgbmVlZCB0byBsb29rIGF0IGBpdHNfY3JlYXRlX2RldmljZWAuIEl0J3MgY2FsbGVkIGJ5IGBpdHNfbXNpX3ByZXBhcmVgIGFuZCBgaXRzX2luaXRfdnBlX2RvbWFpbmAuIEl0IGlzIHN0YXRpYyBidXQgaXRzIGFkZHJlc3MgaXNuJ3QgdGFrZW4uIFNvIGl0IG1pZ2h0IGJlIGlubGluZWQuIGBpdHNfbXNpX3ByZXBhcmVgIGlzIHRoZSBiZXR0ZXIgZnVuY3Rpb24gdG8gZm9jdXMgb24uXG5cbkZpbmFsbHksIEkgbmVlZCB0byBjaGVjayBgaXRzX2xwaV9hbGxvY2AgYW5kIGBpdHNfbHBpX2ZyZWVgLiBUaGV5IGFyZSBjYWxsZWQgYnkgYGl0c19hbGxvY19kZXZpY2VfaXJxYCBhbmQgYGl0c19tc2lfdGVhcmRvd25gLiBPa2F5LCBzbyBgaXRzX2FsbG9jX2RldmljZV9pcnFgIGlzIGNhbGxlZCBieSBgaXRzX2lycV9kb21haW5fYWxsb2NgLiBMZXQncyBjaGVjayBgaXRzX2lycV9kb21haW5fYWxsb2NgIG5leHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5NTk1LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTA4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDEwOjE5OjE1LjIzMDM3MzM2MloiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDcyNzcwNjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXRzX2lycV9kb21haW5fYWxsb2NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmM9MzY4Nj1zdGF0aWMgaW50IGl0c19pcnFfZ2ljX2RvbWFpbl9hbGxvYyhzdHJ1Y3QgaXJxX2RvbWFpbiAqZG9tYWluLFxcbi0tXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtMzcwOS1cXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYzozNzEwOnN0YXRpYyBpbnQgaXRzX2lycV9kb21haW5fYWxsb2Moc3RydWN0IGlycV9kb21haW4gKmRvbWFpbiwgdW5zaWduZWQgaW50IHZpcnEsXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmMtMzcxMS1cXHRcXHRcXHRcXHR1bnNpZ25lZCBpbnQgbnJfaXJxcywgdm9pZCAqYXJncylcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jPTM4MDA9c3RhdGljIGNvbnN0IHN0cnVjdCBpcnFfZG9tYWluX29wcyBpdHNfZG9tYWluX29wcyA9IHtcXG5kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYy0zODAxLVxcdC5zZWxlY3RcXHRcXHRcXHQ9IG1zaV9saWJfaXJxX2RvbWFpbl9zZWxlY3QsXFxuZHJpdmVycy9pcnFjaGlwL2lycS1naWMtdjMtaXRzLmM6MzgwMjpcXHQuYWxsb2NcXHRcXHRcXHQ9IGl0c19pcnFfZG9tYWluX2FsbG9jLFxcbmRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jLTM4MDMtXFx0LmZyZWVcXHRcXHRcXHQ9IGl0c19pcnFfZG9tYWluX2ZyZWUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDEwOjE5OjE1LjI3NzY1NDk2MVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4OTA0NTkwNjk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEN1cnJlbnQgVGhpbmtpbmc6IElkZW50aWZ5aW5nIEtleSBNU0kvTFBJIEludGVyYWN0aW9uIFBvaW50cyoqXG5cbk9rYXksIGxldCdzIG5haWwgZG93biB0aGVzZSBjb3JlIGZ1bmN0aW9ucy4gSSdtIGZvY3VzaW5nIG9uIHRoZSBpbnRlcmFjdGlvbiBwb2ludHMgYmV0d2VlbiBNU0kgYW5kIExQSSBhbGxvY2F0aW9uIGFuZCBmcmVlaW5nLiBJIHNlZSB0aGF0IGBpdHNfaXJxX2RvbWFpbl9hbGxvY2AgYW5kIGBpdHNfaXJxX2RvbWFpbl9mcmVlYCBhcmUgZGVmaW5pdGVseSByZWxldmFudCBoZXJlLiBUaGV5J3JlIGJvdGggcGFydCBvZiB0aGUgYGlycV9kb21haW5fb3BzYCBzdHJ1Y3R1cmUsIHdoaWNoIG1ha2VzIHRoZW0gY2VudHJhbCB0byB0aGUgaW50ZXJydXB0IGRvbWFpbiBtYW5hZ2VtZW50LiBJJ3ZlIG5vdGVkIGRvd24gdGhlc2UgZm9jdXMgc3ltYm9scyBmb3IgYSBjbGVhciBvdmVydmlldzpcblxuKiAgIGBpdHNfbXNpX3ByZXBhcmVgXG4qICAgYGl0c19tc2lfdGVhcmRvd25gXG4qICAgYGl0c19pcnFfZG9tYWluX2FsbG9jYFxuKiAgIGBpdHNfaXJxX2RvbWFpbl9mcmVlYFxuXG5UaGUgcm9sZSBvZiB0aGVzZSBmdW5jdGlvbnMgYmVjb21lcyBjbGVhcjogdGhleSBhY3QgYXMgZW50cnkgcG9pbnRzIGZvciBNU0kgYWxsb2NhdGlvbiBhbmQgZnJlZWluZywgd2hpY2ggaXMgcHJlY2lzZWx5IHdoZXJlIHRoZSBtb2RpZmllZCBMUEkgYWxsb2NhdGlvbiBhbmQgZnJlZWluZyBsb2dpYyBpcyB0cmlnZ2VyZWQuIE5vdywgdG8gYmUgYWJzb2x1dGVseSBzdXJlIG9mIHRoZSBmbG93LCBJIHdhbnQgdG8gdmVyaWZ5IHRoYXQgYGl0c19pcnFfZG9tYWluX2ZyZWVgIGRpcmVjdGx5IGNhbGxzIGBpdHNfbHBpX2ZyZWVgLiBUaGF0IGNvbm5lY3Rpb24gaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgY29tcGxldGUgcHJvY2Vzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjEwMjEsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTA6MTk6MjQuMTgyMjQ4NjFaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ0MTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM3NzAsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjM3NzA6XFx0e1xcbjM3NzE6XFx0XFx0c3RydWN0IGl0c19kZXZpY2UgKml0c19kZXYgPSBpcnFfZGF0YV9nZXRfaXJxX2NoaXBfZGF0YShkKTtcXG4zNzcyOlxcdFxcdHUzMiBldmVudCA9IGl0c19nZXRfZXZlbnRfaWQoZCk7XFxuMzc3MzpcXHRcXG4zNzc0OlxcdFxcdGl0c19kZWNfbHBpX2NvdW50KGQsIGl0c19kZXYtXFx1MDAzZWV2ZW50X21hcC5jb2xfbWFwW2V2ZW50XSk7XFxuMzc3NTpcXHRcXHQvKiBTdG9wIHRoZSBkZWxpdmVyeSBvZiBpbnRlcnJ1cHRzICovXFxuMzc3NjpcXHRcXHRpdHNfc2VuZF9kaXNjYXJkKGl0c19kZXYsIGV2ZW50KTtcXG4zNzc3OlxcdH1cXG4zNzc4OlxcdFxcbjM3Nzk6XFx0c3RhdGljIHZvaWQgaXRzX2lycV9kb21haW5fZnJlZShzdHJ1Y3QgaXJxX2RvbWFpbiAqZG9tYWluLCB1bnNpZ25lZCBpbnQgdmlycSxcXG4zNzgwOlxcdFxcdFxcdFxcdFxcdHVuc2lnbmVkIGludCBucl9pcnFzKVxcbjM3ODE6XFx0e1xcbjM3ODI6XFx0XFx0c3RydWN0IGlycV9kYXRhICpkID0gaXJxX2RvbWFpbl9nZXRfaXJxX2RhdGEoZG9tYWluLCB2aXJxKTtcXG4zNzgzOlxcdFxcdHN0cnVjdCBpdHNfZGV2aWNlICppdHNfZGV2ID0gaXJxX2RhdGFfZ2V0X2lycV9jaGlwX2RhdGEoZCk7XFxuMzc4NDpcXHRcXHRpbnQgaTtcXG4zNzg1OlxcdFxcbjM3ODY6XFx0XFx0Yml0bWFwX3JlbGVhc2VfcmVnaW9uKGl0c19kZXYtXFx1MDAzZWV2ZW50X21hcC5scGlfbWFwLFxcbjM3ODc6XFx0XFx0XFx0XFx0ICAgICAgaXRzX2dldF9ldmVudF9pZChpcnFfZG9tYWluX2dldF9pcnFfZGF0YShkb21haW4sIHZpcnEpKSxcXG4zNzg4OlxcdFxcdFxcdFxcdCAgICAgIGdldF9jb3VudF9vcmRlcihucl9pcnFzKSk7XFxuMzc4OTpcXHRcXG4zNzkwOlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBucl9pcnFzOyBpKyspIHtcXG4zNzkxOlxcdFxcdFxcdHN0cnVjdCBpcnFfZGF0YSAqZGF0YSA9IGlycV9kb21haW5fZ2V0X2lycV9kYXRhKGRvbWFpbixcXG4zNzkyOlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdHZpcnEgKyBpKTtcXG4zNzkzOlxcdFxcdFxcdC8qIE51a2UgdGhlIGVudHJ5IGluIHRoZSBkb21haW4gKi9cXG4zNzk0OlxcdFxcdFxcdGlycV9kb21haW5fcmVzZXRfaXJxX2RhdGEoZGF0YSk7XFxuMzc5NTpcXHRcXHR9XFxuMzc5NjpcXHRcXG4zNzk3OlxcdFxcdGlycV9kb21haW5fZnJlZV9pcnFzX3BhcmVudChkb21haW4sIHZpcnEsIG5yX2lycXMpO1xcbjM3OTg6XFx0fVxcbjM3OTk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDEwOjE5OjI0LjE4MjQ5NDM1WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk4NjY5NTMzMjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBHSUN2MyBJVFMgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBhaW1lZCBhdCBvcHRpbWl6aW5nIHRoZSBHSUN2MyBJVFMgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZGVhbGluZyB3aXRoIExQSSByYW5nZSBhbGxvY2F0aW9uIGFuZCBmcmVlaW5nLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpcyB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBhbmQgcG90ZW50aWFsIGltcGFjdC5cblxuRmlyc3QsIEkgc2VlIHRoYXQgYGl0c19pcnFfZG9tYWluX2ZyZWVgIG9ubHkgcmVsZWFzZXMgdGhlIGJpdG1hcCByZWdpb24sIG5vdCB0aGUgYWN0dWFsIExQSSByYW5nZXMuIFRoZSBhY3R1YWwgZnJlZWluZyBpcyBoYW5kbGVkIGluIGBpdHNfbXNpX3RlYXJkb3duYCBhbmQgdGhlIGVycm9yIHBhdGggb2YgYGl0c19jcmVhdGVfZGV2aWNlYCwgc3BlY2lmaWNhbGx5IGNhbGxpbmcgYGl0c19scGlfZnJlZWAuIFRoaXMgaW1tZWRpYXRlbHkgcG9pbnRzIG1lIHRvd2FyZHMgZm9jdXNpbmcgb24gYGl0c19tc2lfcHJlcGFyZWAgYW5kIGBpdHNfbXNpX3RlYXJkb3duYCBhcyB0aGUga2V5IHN5bWJvbHMgdG8gZXhhbWluZSwgYXMgdGhhdCdzIHdoZXJlIHRoZSBhbGxvY2F0aW9uIGFuZCBkZWFsbG9jYXRpb24gcGF0aHMgYXJlIGRpcmVjdGx5IHRvdWNoZWQuXG5cbk5vdywgbGV0J3MgYnJpZWZseSBsb29rIGF0IGBpdHNfbHBpX2luaXRgLiBJdCBzZWVtcyBsaWtlIGEgZ29vZCBwbGFjZSB0byBiZWdpbiBhcyB0aGF0IHdpbGwgaGFuZGxlIHRoZSBpbml0aWFsIExQSSByYW5nZSwgYnV0IHNpbmNlIGl0J3Mgb25seSBjYWxsZWQgb25jZSBkdXJpbmcgYm9vdCwgaXQgaXMgbm90IGFzIGltcG9ydGFudCBmb3IgdGhpcyBwYXRjaC5cblxuU28sIGZvY3VzaW5nIG9uIHRoZSBjaGFuZ2VzLCBpdCdzIGFib3V0IGNhY2hpbmcgdGhlIExQSSByYW5nZSBvYmplY3QgdG8gYXZvaWQgbWVtb3J5IGFsbG9jYXRpb24gd2hlbiBmcmVlaW5nIGFuZCBmaXhpbmcgYSBtZW1vcnkgbGVhayBpbiB0aGUgZGV2aWNlIGNyZWF0aW9uIGVycm9yIHBhdGguIFRoZXNlIGNoYW5nZXMgZGlyZWN0bHkgaW1wYWN0IHRoZSBNU0kgYWxsb2NhdGlvbiBhbmQgdGVhcmRvd24gcGF0aHMuIEFuZCBnaXZlbiB0aGUgY29udGV4dCwgdGhlc2UgcGF0aHMgYXJlIGNlcnRhaW5seSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSB3aXRoIEdJQ3YzIElUUyBlbXVsYXRpb24sIHdoaWNoIGltbWVkaWF0ZWx5IHJhaXNlcyBhIGZsYWcuXG5cblRoZSBjb25maWcgcmVxdWlyZWQgaXMgYFBDSWAsIHdoaWNoIHdpbGwgZW5hYmxlIGBBUk1fR0lDX1YzX0lUU2Agb24gQVJNNjQsIGFuZCBpcyB0aGUgb25seSBjb25maWcgdGhhdCBuZWVkcyB0byBiZSBsaXN0ZWQuIFNpbmNlIGBBUk1fR0lDX1YzX0lUU2AgaXMgc2VsZWN0ZWQgYnkgYEFSTTY0YCBpZiBgUENJYCwgaXQgbG9va3MgbGlrZSBhIGNsZWFuIGRlcGVuZGVuY3kuXG5cbkxldCdzIGRvIGEgcXVpY2sgZmluYWwgcmV2aWV3IG9mIHRoZSBjb2RlIGNoYW5nZXMuIEknbSBzZWVpbmcgYGFsbG9jX2xwaV9yYW5nZWAgYmVpbmcgY2FsbGVkIGZyb20gYGl0c19scGlfYWxsb2NgLCBhbmQgdGhlbiBgaXRzX2NyZWF0ZV9kZXZpY2VgIHdoaWNoIGlzIHRoZW4gY2FsbGVkIGZyb20gYGl0c19tc2lfcHJlcGFyZWAuIE9uIHRoZSBvdGhlciBzaWRlLCBgZnJlZV9scGlfcmFuZ2VgIGlzIGJlaW5nIGNhbGxlZCBmcm9tIGBpdHNfbHBpX2ZyZWVgLCB3aGljaCBpcyBjYWxsZWQgZnJvbSBgaXRzX21zaV90ZWFyZG93bmAgYW5kIHRoZSBlcnJvciBwYXRoIGluIGBpdHNfY3JlYXRlX2RldmljZWAuIFRoaXMgY29uZmlybXMgdGhlIGFsbG9jYXRpb24vZGVhbGxvY2F0aW9uIHBhdGhzIEkgaWRlbnRpZmllZCBhcmUgdGhlIGNvcnJlY3QgZm9jdXMuXG5cbkJhc2VkIG9uIHRoaXMgYW5hbHlzaXMsIHRoZSBjaGFuZ2VzIGFwcGVhciBmdW5jdGlvbmFsIGFuZCByZWFjaGFibGUuIFRoaXMgaXMgYSBjbGVhciBjYXNlIGZvciBcIldvcnRoRnV6emluZ1wiLiBUaW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE5OTcsIk91dHB1dFRva2VucyI6MTI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Njc2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTA6MTk6MzQuMDQ5NDUwMjM1WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODQyNzQ0NDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlBDSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIml0c19tc2lfcHJlcGFyZVwiLFxuICAgIFwiaXRzX21zaV90ZWFyZG93blwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBHSUN2MyBJVFMgZHJpdmVyIHRvIGNhY2hlIGFuIExQSSByYW5nZSBvYmplY3QgdG8gYXZvaWQgbWVtb3J5IGFsbG9jYXRpb24gaW4gdGhlIGZyZWUgcGF0aCwgYW5kIGZpeGVzIGEgbWVtb3J5IGxlYWsgaW4gdGhlIGRldmljZSBjcmVhdGlvbiBlcnJvciBwYXRoLiBUaGVzZSBjaGFuZ2VzIGFmZmVjdCB0aGUgTVNJIGFsbG9jYXRpb24gYW5kIHRlYXJkb3duIHBhdGhzLCB3aGljaCBhcmUgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoZS5nLiwgUUVNVSB3aXRoIEdJQ3YzIElUUyBlbXVsYXRpb24pLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlBDSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIml0c19tc2lfcHJlcGFyZVwiLFxuICAgIFwiaXRzX21zaV90ZWFyZG93blwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBHSUN2MyBJVFMgZHJpdmVyIHRvIGNhY2hlIGFuIExQSSByYW5nZSBvYmplY3QgdG8gYXZvaWQgbWVtb3J5IGFsbG9jYXRpb24gaW4gdGhlIGZyZWUgcGF0aCwgYW5kIGZpeGVzIGEgbWVtb3J5IGxlYWsgaW4gdGhlIGRldmljZSBjcmVhdGlvbiBlcnJvciBwYXRoLiBUaGVzZSBjaGFuZ2VzIGFmZmVjdCB0aGUgTVNJIGFsbG9jYXRpb24gYW5kIHRlYXJkb3duIHBhdGhzLCB3aGljaCBhcmUgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoZS5nLiwgUUVNVSB3aXRoIEdJQ3YzIElUUyBlbXVsYXRpb24pLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowrdxz6[1] Phase: Succeeded StartedAt: 2026-07-29 10:19:45 +0000 UTC FinishedAt: 2026-07-29 10:19:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdxz6[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-29 10:19:45 +0000 UTC FinishedAt: 2026-07-29 10:19:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdxz6[2] Phase: Succeeded StartedAt: 2026-07-29 10:19:45 +0000 UTC FinishedAt: 2026-07-29 11:13:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdxz6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["its_msi_prepare","its_msi_teardown"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI"],"series_id":"3ebb2f94-cac6-4bca-b6b3-8a2b4a0c18ed","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-29 10:19:45 +0000 UTC FinishedAt: 2026-07-29 11:13:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["its_msi_prepare","its_msi_teardown"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI"],"series_id":"3ebb2f94-cac6-4bca-b6b3-8a2b4a0c18ed","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowrdxz6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["its_msi_prepare","its_msi_teardown"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI"],"series_id":"3ebb2f94-cac6-4bca-b6b3-8a2b4a0c18ed","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-29 10:19:45 +0000 UTC FinishedAt: 2026-07-29 10:19:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdxz6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["its_msi_prepare","its_msi_teardown"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI"],"series_id":"3ebb2f94-cac6-4bca-b6b3-8a2b4a0c18ed","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-29 10:19:45 +0000 UTC FinishedAt: 2026-07-29 10:19:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.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-workflowrdxz6/series-workflowrdxz6-convert-artifact-1107499157/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrdxz6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["its_msi_prepare","its_msi_teardown"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI"],"series_id":"3ebb2f94-cac6-4bca-b6b3-8a2b4a0c18ed","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-29 10:19:56 +0000 UTC FinishedAt: 2026-07-29 10:45:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdxz6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["its_msi_prepare","its_msi_teardown"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI"],"series_id":"3ebb2f94-cac6-4bca-b6b3-8a2b4a0c18ed","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-29 10:19:56 +0000 UTC FinishedAt: 2026-07-29 10:45: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:*0ee49100-d498-4329-891f-c61c71ddf7c6,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-workflowrdxz6/series-workflowrdxz6-convert-artifact-1107499157/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": "063ba473-de9a-4ed9-9bb6-65e3b4be861b", "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-workflowrdxz6/series-workflowrdxz6-build-action-2059628795/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrdxz6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["its_msi_prepare","its_msi_teardown"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI"],"series_id":"3ebb2f94-cac6-4bca-b6b3-8a2b4a0c18ed","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-29 10:19:56 +0000 UTC FinishedAt: 2026-07-29 10:45:07 +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:*0ee49100-d498-4329-891f-c61c71ddf7c6,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-workflowrdxz6/series-workflowrdxz6-convert-artifact-1107499157/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": "063ba473-de9a-4ed9-9bb6-65e3b4be861b", "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-workflowrdxz6/series-workflowrdxz6-build-action-2059628795/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrdxz6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["its_msi_prepare","its_msi_teardown"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI"],"series_id":"3ebb2f94-cac6-4bca-b6b3-8a2b4a0c18ed","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-29 10:45:36 +0000 UTC FinishedAt: 2026-07-29 10:45:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdxz6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["its_msi_prepare","its_msi_teardown"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI"],"series_id":"3ebb2f94-cac6-4bca-b6b3-8a2b4a0c18ed","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-29 10:45:36 +0000 UTC FinishedAt: 2026-07-29 10:45:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdxz6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["its_msi_prepare","its_msi_teardown"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI"],"series_id":"3ebb2f94-cac6-4bca-b6b3-8a2b4a0c18ed","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-29 10:45:36 +0000 UTC FinishedAt: 2026-07-29 10:46:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdxz6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["its_msi_prepare","its_msi_teardown"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI"],"series_id":"3ebb2f94-cac6-4bca-b6b3-8a2b4a0c18ed","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-29 10:45:36 +0000 UTC FinishedAt: 2026-07-29 10:45:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI"],"series_id":"3ebb2f94-cac6-4bca-b6b3-8a2b4a0c18ed","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.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-workflowrdxz6/series-workflowrdxz6-convert-artifact-3365600880/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrdxz6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["its_msi_prepare","its_msi_teardown"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI"],"series_id":"3ebb2f94-cac6-4bca-b6b3-8a2b4a0c18ed","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-29 10:46:00 +0000 UTC FinishedAt: 2026-07-29 10:48:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdxz6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["its_msi_prepare","its_msi_teardown"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI"],"series_id":"3ebb2f94-cac6-4bca-b6b3-8a2b4a0c18ed","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-29 10:46:00 +0000 UTC FinishedAt: 2026-07-29 10:47:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*063ba473-de9a-4ed9-9bb6-65e3b4be861b,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-workflowrdxz6/series-workflowrdxz6-build-action-2059628795/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-workflowrdxz6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["its_msi_prepare","its_msi_teardown"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI"],"series_id":"3ebb2f94-cac6-4bca-b6b3-8a2b4a0c18ed","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-29 10:48:04 +0000 UTC FinishedAt: 2026-07-29 10:48:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdxz6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["its_msi_prepare","its_msi_teardown"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI"],"series_id":"3ebb2f94-cac6-4bca-b6b3-8a2b4a0c18ed","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-29 10:48:04 +0000 UTC FinishedAt: 2026-07-29 10:48:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdxz6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["its_msi_prepare","its_msi_teardown"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI"],"series_id":"3ebb2f94-cac6-4bca-b6b3-8a2b4a0c18ed","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-29 10:48:04 +0000 UTC FinishedAt: 2026-07-29 11:08:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdxz6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["its_msi_prepare","its_msi_teardown"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI"],"series_id":"3ebb2f94-cac6-4bca-b6b3-8a2b4a0c18ed","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-29 10:48:04 +0000 UTC FinishedAt: 2026-07-29 11:08:36 +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:*0ee49100-d498-4329-891f-c61c71ddf7c6,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-workflowrdxz6/series-workflowrdxz6-convert-artifact-3365600880/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": "d834c754-927b-49b1-8086-de49792034b1", "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-workflowrdxz6/series-workflowrdxz6-build-action-1495621484/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrdxz6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["its_msi_prepare","its_msi_teardown"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI"],"series_id":"3ebb2f94-cac6-4bca-b6b3-8a2b4a0c18ed","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-29 10:48:04 +0000 UTC FinishedAt: 2026-07-29 11:08:26 +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:*0ee49100-d498-4329-891f-c61c71ddf7c6,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-workflowrdxz6/series-workflowrdxz6-convert-artifact-3365600880/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": "d834c754-927b-49b1-8086-de49792034b1", "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-workflowrdxz6/series-workflowrdxz6-build-action-1495621484/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrdxz6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["its_msi_prepare","its_msi_teardown"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI"],"series_id":"3ebb2f94-cac6-4bca-b6b3-8a2b4a0c18ed","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-29 11:08:36 +0000 UTC FinishedAt: 2026-07-29 11:08:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdxz6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["its_msi_prepare","its_msi_teardown"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI"],"series_id":"3ebb2f94-cac6-4bca-b6b3-8a2b4a0c18ed","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-29 11:08:36 +0000 UTC FinishedAt: 2026-07-29 11:08:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdxz6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["its_msi_prepare","its_msi_teardown"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI"],"series_id":"3ebb2f94-cac6-4bca-b6b3-8a2b4a0c18ed","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-29 11:08:36 +0000 UTC FinishedAt: 2026-07-29 11:10:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdxz6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["its_msi_prepare","its_msi_teardown"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI"],"series_id":"3ebb2f94-cac6-4bca-b6b3-8a2b4a0c18ed","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-29 11:08:36 +0000 UTC FinishedAt: 2026-07-29 11:10:29 +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:*d834c754-927b-49b1-8086-de49792034b1,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-workflowrdxz6/series-workflowrdxz6-build-action-1495621484/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-workflowrdxz6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["its_msi_prepare","its_msi_teardown"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI"],"series_id":"3ebb2f94-cac6-4bca-b6b3-8a2b4a0c18ed","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-29 11:10:39 +0000 UTC FinishedAt: 2026-07-29 11:13:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdxz6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["its_msi_prepare","its_msi_teardown"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI"],"series_id":"3ebb2f94-cac6-4bca-b6b3-8a2b4a0c18ed","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-29 11:10:39 +0000 UTC FinishedAt: 2026-07-29 11:13:45 +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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["its_msi_prepare","its_msi_teardown"],"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:*063ba473-de9a-4ed9-9bb6-65e3b4be861b,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*d834c754-927b-49b1-8086-de49792034b1,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-workflowrdxz6/series-workflowrdxz6-build-action-2059628795/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-workflowrdxz6/series-workflowrdxz6-build-action-1495621484/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowrdxz6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["its_msi_prepare","its_msi_teardown"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI"],"series_id":"3ebb2f94-cac6-4bca-b6b3-8a2b4a0c18ed","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-29 11:10:39 +0000 UTC FinishedAt: 2026-07-29 11:10:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdxz6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["its_msi_prepare","its_msi_teardown"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI"],"series_id":"3ebb2f94-cac6-4bca-b6b3-8a2b4a0c18ed","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-29 11:10:39 +0000 UTC FinishedAt: 2026-07-29 11:10:44 +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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["its_msi_prepare","its_msi_teardown"],"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-workflowrdxz6/series-workflowrdxz6-convert-artifact-822076905/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrdxz6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["its_msi_prepare","its_msi_teardown"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI"],"series_id":"3ebb2f94-cac6-4bca-b6b3-8a2b4a0c18ed","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-29 11:10:39 +0000 UTC FinishedAt: 2026-07-29 11:10:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdxz6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["its_msi_prepare","its_msi_teardown"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI"],"series_id":"3ebb2f94-cac6-4bca-b6b3-8a2b4a0c18ed","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-29 11:10:39 +0000 UTC FinishedAt: 2026-07-29 11:10:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdxz6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["its_msi_prepare","its_msi_teardown"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI"],"series_id":"3ebb2f94-cac6-4bca-b6b3-8a2b4a0c18ed","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-29 11:10:39 +0000 UTC FinishedAt: 2026-07-29 11:10:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdxz6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["its_msi_prepare","its_msi_teardown"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI"],"series_id":"3ebb2f94-cac6-4bca-b6b3-8a2b4a0c18ed","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-29 11:10:49 +0000 UTC FinishedAt: 2026-07-29 11:13:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdxz6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["its_msi_prepare","its_msi_teardown"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI"],"series_id":"3ebb2f94-cac6-4bca-b6b3-8a2b4a0c18ed","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-29 11:10:49 +0000 UTC FinishedAt: 2026-07-29 11:13:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*063ba473-de9a-4ed9-9bb6-65e3b4be861b,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*d834c754-927b-49b1-8086-de49792034b1,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-workflowrdxz6/series-workflowrdxz6-build-action-2059628795/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-workflowrdxz6/series-workflowrdxz6-build-action-1495621484/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-workflowrdxz6/series-workflowrdxz6-convert-artifact-822076905/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,}