Name: series-workflowcj6jx Phase: Succeeded StartedAt: 2026-07-25 08:15:24 +0000 UTC FinishedAt: 2026-07-25 13:21:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcj6jx[0] Phase: Succeeded StartedAt: 2026-07-25 08:15:24 +0000 UTC FinishedAt: 2026-07-25 08:40:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcj6jx[0].run-triage Phase: Succeeded StartedAt: 2026-07-25 08:15:24 +0000 UTC FinishedAt: 2026-07-25 08:40:38 +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": "8cdeaa50eae8dad34885515f62559ee83e7e8dda", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "FUSE_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "8cdeaa50eae8dad34885515f62559ee83e7e8dda", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "FUSE_FS" ], "series_id": "75595d91-d3f1-4e79-98f5-b83eeb79ae98" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "fuse_get_dev", "fuse_dev_release", "fuse_dev_flush" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": { "findings": [ "0c2890de-1b7a-4718-a188-a597ff4d74a7" ] } } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjM5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0ZVU0VfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtmdXNlX2dldF9kZXYmIzM0OywKICAgICYjMzQ7ZnVzZV9kZXZfcmVsZWFzZSYjMzQ7LAogICAgJiMzNDtmdXNlX2Rldl9mbHVzaCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY2hhbm5lbCBkaXNjb25uZWN0aW9uIGxvZ2ljIGluIHRoZSBGVVNFIGRldmljZSBkcml2ZXIgKC9kZXYvZnVzZSkuIEl0IGludHJvZHVjZXMgYSBuZXcgZmx1c2ggb3BlcmF0aW9uIChmdXNlX2Rldl9mbHVzaCkgdG8gaGFuZGxlIGZpbmFsIGNsb3NlIGFuZCB0cmFuc2l0aW9uIHRoZSBjaGFubmVsIHN0YXRlIHRvIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVELiBJdCBhbHNvIG1vZGlmaWVzIGZ1c2VfZ2V0X2RldiBhbmQgZnVzZV9kZXZfcmVsZWFzZSB0byBoYW5kbGUgdGhpcyBuZXcgc3RhdGUgYW5kIGFib3J0IHRoZSBjaGFubmVsIGlmIGFsbCBkZXZpY2VzIGFyZSBjbG9zaW5nLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgRlVTRSBkcml2ZXIsIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgL2Rldi9mdXNlIG9wZXJhdGlvbnMsIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjM5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYjk4YWE5ZDljMjEyODUxZTdjNjk5ZjdlNTQwZWZlOTIyMzAwMzFiZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVsIDI1IDA4OjM5OjIyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2Z1c2UvZGV2LmMgYi9mcy9mdXNlL2Rldi5jXG5pbmRleCA1NzYzYTdjZDNiMzdmYS4uOGIxNGM3ZDU3YTAxMTkgMTAwNjQ0XG4tLS0gYS9mcy9mdXNlL2Rldi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9mdXNlL2Rldi5jXG5AQCAtMTY2MiwxOCAmIzQzOzE2NjIsMjMgQEAgc3RhdGljIGludCBmdXNlX2Rldl9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxuIHN0cnVjdCBmdXNlX2RldiAqZnVzZV9nZXRfZGV2KHN0cnVjdCBmaWxlICpmaWxlKVxuIHtcbiBcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9maWxlX3RvX2Z1ZChmaWxlKTtcbiYjNDM7XHRzdHJ1Y3QgZnVzZV9jaGFuICpmY2ggPSBmdXNlX2Rldl9jaGFuX2dldChmdWQpO1xuIFx0aW50IGVycjtcbiBcbi1cdGlmICh1bmxpa2VseSghZnVzZV9kZXZfY2hhbl9nZXQoZnVkKSkpIHtcbiYjNDM7XHRpZiAodW5saWtlbHkoIWZjaCkpIHtcbiBcdFx0Lyogb25seSBibG9jayB3YWl0aW5nIGZvciBtb3VudCBpZiBzeW5jIGluaXQgd2FzIHJlcXVlc3RlZCAqL1xuIFx0XHRpZiAoIWZ1ZC1cdTAwM2VzeW5jX2luaXQpXG4gXHRcdFx0cmV0dXJuIEVSUl9QVFIoLUVQRVJNKTtcbiBcbi1cdFx0ZXJyID0gd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlKGZ1c2VfZGV2X3dhaXRxLCBmdXNlX2Rldl9jaGFuX2dldChmdWQpICE9IE5VTEwpO1xuJiM0MztcdFx0ZXJyID0gd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlKGZ1c2VfZGV2X3dhaXRxLFxuJiM0MztcdFx0XHRcdFx0ICAgICAgIChmY2ggPSBmdXNlX2Rldl9jaGFuX2dldChmdWQpKSAhPSBOVUxMKTtcbiBcdFx0aWYgKGVycilcbiBcdFx0XHRyZXR1cm4gRVJSX1BUUihlcnIpO1xuIFx0fVxuIFxuJiM0MztcdGlmICh1bmxpa2VseShmY2ggPT0gRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQpKVxuJiM0MztcdFx0cmV0dXJuIEVSUl9QVFIoLUVQRVJNKTtcbiYjNDM7XG4gXHRyZXR1cm4gZnVkO1xuIH1cbiBcbkBAIC0yMjExLDE3ICYjNDM7MjIxNiwzMSBAQCB2b2lkIGZ1c2VfY2hhbl93YWl0X2Fib3J0ZWQoc3RydWN0IGZ1c2VfY2hhbiAqZmNoKVxuIFx0ZnVzZV91cmluZ193YWl0X3N0b3BwZWRfcXVldWVzKGZjaCk7XG4gfVxuIFxuJiM0MztzdGF0aWMgYm9vbCBmdXNlX2Rldl9hbGxfY2xvc2luZyhzdHJ1Y3QgZnVzZV9jaGFuICpmY2gpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgZnVzZV9kZXYgKnBvcztcbiYjNDM7XG4mIzQzO1x0bG9ja2RlcF9hc3NlcnRfaGVsZChcdTAwMjZmY2gtXHUwMDNlbG9jayk7XG4mIzQzO1xuJiM0MztcdGxpc3RfZm9yX2VhY2hfZW50cnkocG9zLCBcdTAwMjZmY2gtXHUwMDNlZGV2aWNlcywgZW50cnkpIHtcbiYjNDM7XHRcdGlmICghcG9zLVx1MDAzZWNsb3NpbmcpXG4mIzQzO1x0XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XHR9XG4mIzQzO1x0cmV0dXJuIHRydWU7XG4mIzQzO31cbiYjNDM7XG4gaW50IGZ1c2VfZGV2X3JlbGVhc2Uoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXG4ge1xuIFx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBmdXNlX2ZpbGVfdG9fZnVkKGZpbGUpO1xuIFx0LyogUGFpcnMgd2l0aCBjbXB4Y2hnKCkgaW4gZnVzZV9kZXZfaW5zdGFsbCgpICovXG4gXHRzdHJ1Y3QgZnVzZV9jaGFuICpmY2ggPSB4Y2hnKFx1MDAyNmZ1ZC1cdTAwM2VjaGFuLCBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCk7XG4gXG4tXHRpZiAoZmNoKSB7XG4mIzQzO1x0aWYgKGZjaCBcdTAwMjZcdTAwMjYgZmNoICE9IEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEKSB7XG4gXHRcdHN0cnVjdCBmdXNlX3BxdWV1ZSAqZnBxID0gXHUwMDI2ZnVkLVx1MDAzZXBxO1xuIFx0XHRMSVNUX0hFQUQodG9fZW5kKTtcbiBcdFx0dW5zaWduZWQgaW50IGk7XG4gXHRcdGJvb2wgbGFzdDtcbiYjNDM7XHRcdGJvb2wgYWJvcnQ7XG4gXG4gXHRcdC8qIE1ha2Ugc3VyZSBmdXNlX2Rldl9pbnN0YWxsX3dpdGhfcHEoKSBoYXMgZmluaXNoZWQgKi9cbiBcdFx0c3Bpbl9sb2NrKFx1MDAyNmZjaC1cdTAwM2Vsb2NrKTtcbkBAIC0yMjM0LDE0ICYjNDM7MjI1MywxNSBAQCBpbnQgZnVzZV9kZXZfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbiBcdFx0bGlzdF9kZWwoXHUwMDI2ZnVkLVx1MDAzZWVudHJ5KTtcbiBcdFx0LyogQXJlIHdlIHRoZSBsYXN0IG9wZW4gZGV2aWNlPyAqL1xuIFx0XHRsYXN0ID0gbGlzdF9lbXB0eShcdTAwMjZmY2gtXHUwMDNlZGV2aWNlcyk7XG4mIzQzO1x0XHRhYm9ydCA9IGZjaC1cdTAwM2Vjb25uZWN0ZWQgXHUwMDI2XHUwMDI2IGZ1c2VfZGV2X2FsbF9jbG9zaW5nKGZjaCk7XG4gXHRcdHNwaW5fdW5sb2NrKFx1MDAyNmZjaC1cdTAwM2Vsb2NrKTtcbiBcbiBcdFx0ZnVzZV9kZXZfZW5kX3JlcXVlc3RzKFx1MDAyNnRvX2VuZCk7XG4gXG4tXHRcdGlmIChsYXN0KSB7XG4mIzQzO1x0XHRpZiAobGFzdClcbiBcdFx0XHRXQVJOX09OKGZjaC1cdTAwM2VpcS5mYXN5bmMgIT0gTlVMTCk7XG4mIzQzO1x0XHRpZiAoYWJvcnQpXG4gXHRcdFx0ZnVzZV9jaGFuX2Fib3J0KGZjaCwgZmFsc2UpO1xuLVx0XHR9XG4gXHRcdGZ1c2VfY29ubl9wdXQoZmNoLVx1MDAzZWNvbm4pO1xuIFx0fVxuIFx0ZnVzZV9kZXZfcHV0KGZ1ZCk7XG5AQCAtMjM3NSw2ICYjNDM7MjM5NSwzNCBAQCBzdGF0aWMgdm9pZCBmdXNlX2Rldl9zaG93X2ZkaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgc3RydWN0IGZpbGUgKmZpbGUpXG4gfVxuICNlbmRpZlxuIFxuJiM0MztzdGF0aWMgaW50IGZ1c2VfZGV2X2ZsdXNoKHN0cnVjdCBmaWxlICpmaWxlLCBmbF9vd25lcl90IGlkKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBmdXNlX2ZpbGVfdG9fZnVkKGZpbGUpO1xuJiM0MztcdHN0cnVjdCBmdXNlX2NoYW4gKmZjaDtcbiYjNDM7XHRib29sIGFib3J0O1xuJiM0MztcbiYjNDM7XHRpZiAoZmlsZV9jb3VudChmaWxlKSAhPSAxKVxuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogQXRvbWljYWxseSB0cmFuc2l0aW9uIGZ1ZC1cdTAwM2VjaGFuIGZyb20gTlVMTCB0byBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRFxuJiM0MztcdCAqIG9uIGZpbmFsIGNsb3NlIHRvIHByZXZlbnQgYSBsYXRlciBmdXNlX2Rldl9pbnN0YWxsKCkgZnJvbSBzdWNjZWVkaW5nLlxuJiM0MztcdCAqL1xuJiM0MztcdGZjaCA9IGNtcHhjaGcoXHUwMDI2ZnVkLVx1MDAzZWNoYW4sIE5VTEwsIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEKTtcbiYjNDM7XHRpZiAoIWZjaCB8fCBmY2ggPT0gRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQpXG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XG4mIzQzO1x0c3Bpbl9sb2NrKFx1MDAyNmZjaC1cdTAwM2Vsb2NrKTtcbiYjNDM7XHRmdWQtXHUwMDNlY2xvc2luZyA9IHRydWU7XG4mIzQzO1x0YWJvcnQgPSBmY2gtXHUwMDNlY29ubmVjdGVkIFx1MDAyNlx1MDAyNiBmdXNlX2Rldl9hbGxfY2xvc2luZyhmY2gpO1xuJiM0MztcdHNwaW5fdW5sb2NrKFx1MDAyNmZjaC1cdTAwM2Vsb2NrKTtcbiYjNDM7XG4mIzQzO1x0aWYgKGFib3J0KVxuJiM0MztcdFx0ZnVzZV9jaGFuX2Fib3J0KGZjaCwgZmFsc2UpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZ1c2VfZGV2X29wZXJhdGlvbnMgPSB7XG4gXHQub3duZXJcdFx0PSBUSElTX01PRFVMRSxcbiBcdC5vcGVuXHRcdD0gZnVzZV9kZXZfb3BlbixcbkBAIC0yMzgzLDYgJiM0MzsyNDMxLDcgQEAgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmdXNlX2Rldl9vcGVyYXRpb25zID0ge1xuIFx0LndyaXRlX2l0ZXJcdD0gZnVzZV9kZXZfd3JpdGUsXG4gXHQuc3BsaWNlX3dyaXRlXHQ9IGZ1c2VfZGV2X3NwbGljZV93cml0ZSxcbiBcdC5wb2xsXHRcdD0gZnVzZV9kZXZfcG9sbCxcbiYjNDM7XHQuZmx1c2hcdFx0PSBmdXNlX2Rldl9mbHVzaCxcbiBcdC5yZWxlYXNlXHQ9IGZ1c2VfZGV2X3JlbGVhc2UsXG4gXHQuZmFzeW5jXHRcdD0gZnVzZV9kZXZfZmFzeW5jLFxuIFx0LnVubG9ja2VkX2lvY3RsID0gZnVzZV9kZXZfaW9jdGwsXG5kaWZmIC0tZ2l0IGEvZnMvZnVzZS9mdXNlX2Rldl9pLmggYi9mcy9mdXNlL2Z1c2VfZGV2X2kuaFxuaW5kZXggNjY4YzgzOTFkNjFjMDMuLjI4MzNhMDM1MGM0MzVhIDEwMDY0NFxuLS0tIGEvZnMvZnVzZS9mdXNlX2Rldl9pLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2Z1c2UvZnVzZV9kZXZfaS5oXG5AQCAtMzAyLDYgJiM0MzszMDIsOSBAQCBzdHJ1Y3QgZnVzZV9kZXYge1xuIFx0LyoqIEBzeW5jX2luaXQ6IElzc3VlIEZVU0VfSU5JVCBzeW5jaHJvbm91c2x5ICovXG4gXHRib29sIHN5bmNfaW5pdDtcbiBcbiYjNDM7XHQvKiogQGNsb3Npbmc6IEZpbmFsIGNsb3NlIGhhcyBzdGFydGVkLCBwcm90ZWN0ZWQgYnkgY2hhbi1cdTAwM2Vsb2NrICovXG4mIzQzO1x0Ym9vbCBjbG9zaW5nO1xuJiM0MztcbiBcdC8qKiBAY2hhbjogRnVzZSBjaGFubmVsIGZvciB0aGlzIGRldmljZSAqL1xuIFx0c3RydWN0IGZ1c2VfY2hhbiAqY2hhbjtcbiBcbkBAIC0zMzAsMTcgJiM0MzszMzMsMjUgQEAgc3RydWN0IGZ1c2VfY29weV9zdGF0ZSB7XG4gXHR9IHJpbmc7XG4gfTtcbiBcbi0vKiBmdWQtXHUwMDNlY2hhbiBnZXRzIGFzc2lnbmVkIHRvIHRoaXMgdmFsdWUgd2hlbiAvZGV2L2Z1c2UgaXMgY2xvc2VkICovXG4tI2RlZmluZSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCAoKHN0cnVjdCBmdXNlX2NoYW4gKikgMSlcbi1cbiAvKlxuLSAqIExvY2tsZXNzIGFjY2VzcyBpcyBPSywgYmVjYXVzZSBmdWQtXHUwMDNlY2hhbiBpcyBzZXQgb25jZSBkdXJpbmcgbW91bnQgYW5kIGlzIHZhbGlkXG4tICogdW50aWwgdGhlIGZpbGUgaXMgcmVsZWFzZWQuXG4mIzQzOyAqIGZ1ZC1cdTAwM2VjaGFuIGhhcyB0aGUgZm9sbG93aW5nIG1vbm90b25pYyBzdGF0ZSB0cmFuc2l0aW9uczpcbiYjNDM7ICpcbiYjNDM7ICogTlVMTCAtXHUwMDNlIHZhbGlkIGNoYW5uZWwgLVx1MDAzZSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRFxuJiM0MzsgKiBOVUxMIC0tLS0tLS0tLS0tLS0tLS0tXHUwMDNlIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEXG4gICpcbi0gKiBmdWQtXHUwMDNlY2hhbiBpcyBzZXQgdG8gRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQgb25seSBhZnRlciB0aGUgY29udGFpbmluZyBmaWxlIGlzXG4tICogcmVsZWFzZWQsIHNvIHJlc3VsdCBpcyBzYWZlIHRvIGRlcmVmZXJlbmNlIGluIG1vc3QgY2FzZXMuICBFeGNlcHRpb25zIGFyZTpcbi0gKiBmdXNlX2Rldl9wdXQoKSBhbmQgZnVzZV9maWxsX3N1cGVyX2NvbW1vbigpLlxuJiM0MzsgKiBBIHZhbGlkIGNoYW5uZWwgcG9pbnRlciByZW1haW5zIHZhbGlkIHVudGlsIHRoZSBmaWxlIGlzIHJlbGVhc2VkLiBGaW5hbFxuJiM0MzsgKiBmbHVzaCBjYW4gaW5zdGFsbCBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCBkaXJlY3RseSBmb3IgYW4gdW5pbnN0YWxsZWRcbiYjNDM7ICogZGV2aWNlLCBwcmV2ZW50aW5nIGFueSBsYXRlciBjaGFubmVsIGluc3RhbGxhdGlvbi4gVGhlIHNlbnRpbmVsIHRoZXJlZm9yZVxuJiM0MzsgKiBtZWFucyB0aGF0IHRoZSBjaGFubmVsIGNhbiBubyBsb25nZXIgYmUgaW5zdGFsbGVkIG9yIGFjY2Vzc2VkIHRocm91Z2ggdGhpc1xuJiM0MzsgKiBmaWxlOyBpdCBkb2VzIG5vdCBpbXBseSB0aGF0IHJlbGVhc2UgaGFzIGFscmVhZHkgcnVuIGFuZCBpdCBtdXN0IG5ldmVyIGJlXG4mIzQzOyAqIGRlcmVmZXJlbmNlZC5cbiYjNDM7ICpcbiYjNDM7ICogZnVzZV9kZXZfY2hhbl9nZXQoKSByZWFkcyB0aGlzIHN0YXRlIGxvY2tsZXNzbHkuIENhbGxlcnMgbXVzdCBkaXN0aW5ndWlzaFxuJiM0MzsgKiBOVUxMLCBhIHZhbGlkIGNoYW5uZWwgcG9pbnRlciwgYW5kIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEIGJlZm9yZVxuJiM0MzsgKiBkZXJlZmVyZW5jaW5nIHRoZSByZXN1bHQuXG4gICovXG4mIzQzOyNkZWZpbmUgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQgKChzdHJ1Y3QgZnVzZV9jaGFuICopIDEpXG4mIzQzO1xuIHN0YXRpYyBpbmxpbmUgc3RydWN0IGZ1c2VfY2hhbiAqZnVzZV9kZXZfY2hhbl9nZXQoc3RydWN0IGZ1c2VfZGV2ICpmdWQpXG4ge1xuIFx0LyogUGFpcnMgd2l0aCB4Y2hnKCkgaW4gZnVzZV9kZXZfaW5zdGFsbCgpICovXG5AQCAtMzU1LDggJiM0MzszNjYsOSBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBmdXNlX2RldiAqZnVzZV9maWxlX3RvX2Z1ZChzdHJ1Y3QgZmlsZSAqZmlsZSlcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCBmdXNlX2RldiAqX19mdXNlX2dldF9kZXYoc3RydWN0IGZpbGUgKmZpbGUpXG4ge1xuIFx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBmdXNlX2ZpbGVfdG9fZnVkKGZpbGUpO1xuJiM0MztcdHN0cnVjdCBmdXNlX2NoYW4gKmZjaCA9IGZ1c2VfZGV2X2NoYW5fZ2V0KGZ1ZCk7XG4gXG4tXHRpZiAoIWZ1c2VfZGV2X2NoYW5fZ2V0KGZ1ZCkpXG4mIzQzO1x0aWYgKCFmY2ggfHwgZmNoID09IEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEKVxuIFx0XHRyZXR1cm4gTlVMTDtcbiBcbiBcdHJldHVybiBmdWQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6Mzk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0ZVU0VfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtmdXNlX2dldF9kZXYmIzM0OywKICAgICYjMzQ7ZnVzZV9kZXZfcmVsZWFzZSYjMzQ7LAogICAgJiMzNDtmdXNlX2Rldl9mbHVzaCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY2hhbm5lbCBkaXNjb25uZWN0aW9uIGxvZ2ljIGluIHRoZSBGVVNFIGRldmljZSBkcml2ZXIgKC9kZXYvZnVzZSkuIEl0IGludHJvZHVjZXMgYSBuZXcgZmx1c2ggb3BlcmF0aW9uIChmdXNlX2Rldl9mbHVzaCkgdG8gaGFuZGxlIGZpbmFsIGNsb3NlIGFuZCB0cmFuc2l0aW9uIHRoZSBjaGFubmVsIHN0YXRlIHRvIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVELiBJdCBhbHNvIG1vZGlmaWVzIGZ1c2VfZ2V0X2RldiBhbmQgZnVzZV9kZXZfcmVsZWFzZSB0byBoYW5kbGUgdGhpcyBuZXcgc3RhdGUgYW5kIGFib3J0IHRoZSBjaGFubmVsIGlmIGFsbCBkZXZpY2VzIGFyZSBjbG9zaW5nLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgRlVTRSBkcml2ZXIsIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgL2Rldi9mdXNlIG9wZXJhdGlvbnMsIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYjk4YWE5ZDljMjEyODUxZTdjNjk5ZjdlNTQwZWZlOTIyMzAwMzFiZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgSnVsIDI1IDA4OjM5OjIyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZnMvZnVzZS9kZXYuYyBiL2ZzL2Z1c2UvZGV2LmMKaW5kZXggNTc2M2E3Y2QzYjM3ZmEuLjhiMTRjN2Q1N2EwMTE5IDEwMDY0NAotLS0gYS9mcy9mdXNlL2Rldi5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2Z1c2UvZGV2LmMKQEAgLTE2NjIsMTggJiM0MzsxNjYyLDIzIEBAIHN0YXRpYyBpbnQgZnVzZV9kZXZfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKIHN0cnVjdCBmdXNlX2RldiAqZnVzZV9nZXRfZGV2KHN0cnVjdCBmaWxlICpmaWxlKQogewogCXN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9maWxlX3RvX2Z1ZChmaWxlKTsKJiM0MzsJc3RydWN0IGZ1c2VfY2hhbiAqZmNoID0gZnVzZV9kZXZfY2hhbl9nZXQoZnVkKTsKIAlpbnQgZXJyOwogCi0JaWYgKHVubGlrZWx5KCFmdXNlX2Rldl9jaGFuX2dldChmdWQpKSkgewomIzQzOwlpZiAodW5saWtlbHkoIWZjaCkpIHsKIAkJLyogb25seSBibG9jayB3YWl0aW5nIGZvciBtb3VudCBpZiBzeW5jIGluaXQgd2FzIHJlcXVlc3RlZCAqLwogCQlpZiAoIWZ1ZC0mZ3Q7c3luY19pbml0KQogCQkJcmV0dXJuIEVSUl9QVFIoLUVQRVJNKTsKIAotCQllcnIgPSB3YWl0X2V2ZW50X2ludGVycnVwdGlibGUoZnVzZV9kZXZfd2FpdHEsIGZ1c2VfZGV2X2NoYW5fZ2V0KGZ1ZCkgIT0gTlVMTCk7CiYjNDM7CQllcnIgPSB3YWl0X2V2ZW50X2ludGVycnVwdGlibGUoZnVzZV9kZXZfd2FpdHEsCiYjNDM7CQkJCQkgICAgICAgKGZjaCA9IGZ1c2VfZGV2X2NoYW5fZ2V0KGZ1ZCkpICE9IE5VTEwpOwogCQlpZiAoZXJyKQogCQkJcmV0dXJuIEVSUl9QVFIoZXJyKTsKIAl9CiAKJiM0MzsJaWYgKHVubGlrZWx5KGZjaCA9PSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCkpCiYjNDM7CQlyZXR1cm4gRVJSX1BUUigtRVBFUk0pOwomIzQzOwogCXJldHVybiBmdWQ7CiB9CiAKQEAgLTIyMTEsMTcgJiM0MzsyMjE2LDMxIEBAIHZvaWQgZnVzZV9jaGFuX3dhaXRfYWJvcnRlZChzdHJ1Y3QgZnVzZV9jaGFuICpmY2gpCiAJZnVzZV91cmluZ193YWl0X3N0b3BwZWRfcXVldWVzKGZjaCk7CiB9CiAKJiM0MztzdGF0aWMgYm9vbCBmdXNlX2Rldl9hbGxfY2xvc2luZyhzdHJ1Y3QgZnVzZV9jaGFuICpmY2gpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgZnVzZV9kZXYgKnBvczsKJiM0MzsKJiM0MzsJbG9ja2RlcF9hc3NlcnRfaGVsZCgmYW1wO2ZjaC0mZ3Q7bG9jayk7CiYjNDM7CiYjNDM7CWxpc3RfZm9yX2VhY2hfZW50cnkocG9zLCAmYW1wO2ZjaC0mZ3Q7ZGV2aWNlcywgZW50cnkpIHsKJiM0MzsJCWlmICghcG9zLSZndDtjbG9zaW5nKQomIzQzOwkJCXJldHVybiBmYWxzZTsKJiM0MzsJfQomIzQzOwlyZXR1cm4gdHJ1ZTsKJiM0Mzt9CiYjNDM7CiBpbnQgZnVzZV9kZXZfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKIHsKIAlzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IGZ1c2VfZmlsZV90b19mdWQoZmlsZSk7CiAJLyogUGFpcnMgd2l0aCBjbXB4Y2hnKCkgaW4gZnVzZV9kZXZfaW5zdGFsbCgpICovCiAJc3RydWN0IGZ1c2VfY2hhbiAqZmNoID0geGNoZygmYW1wO2Z1ZC0mZ3Q7Y2hhbiwgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQpOwogCi0JaWYgKGZjaCkgewomIzQzOwlpZiAoZmNoICZhbXA7JmFtcDsgZmNoICE9IEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEKSB7CiAJCXN0cnVjdCBmdXNlX3BxdWV1ZSAqZnBxID0gJmFtcDtmdWQtJmd0O3BxOwogCQlMSVNUX0hFQUQodG9fZW5kKTsKIAkJdW5zaWduZWQgaW50IGk7CiAJCWJvb2wgbGFzdDsKJiM0MzsJCWJvb2wgYWJvcnQ7CiAKIAkJLyogTWFrZSBzdXJlIGZ1c2VfZGV2X2luc3RhbGxfd2l0aF9wcSgpIGhhcyBmaW5pc2hlZCAqLwogCQlzcGluX2xvY2soJmFtcDtmY2gtJmd0O2xvY2spOwpAQCAtMjIzNCwxNCAmIzQzOzIyNTMsMTUgQEAgaW50IGZ1c2VfZGV2X3JlbGVhc2Uoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpCiAJCWxpc3RfZGVsKCZhbXA7ZnVkLSZndDtlbnRyeSk7CiAJCS8qIEFyZSB3ZSB0aGUgbGFzdCBvcGVuIGRldmljZT8gKi8KIAkJbGFzdCA9IGxpc3RfZW1wdHkoJmFtcDtmY2gtJmd0O2RldmljZXMpOwomIzQzOwkJYWJvcnQgPSBmY2gtJmd0O2Nvbm5lY3RlZCAmYW1wOyZhbXA7IGZ1c2VfZGV2X2FsbF9jbG9zaW5nKGZjaCk7CiAJCXNwaW5fdW5sb2NrKCZhbXA7ZmNoLSZndDtsb2NrKTsKIAogCQlmdXNlX2Rldl9lbmRfcmVxdWVzdHMoJmFtcDt0b19lbmQpOwogCi0JCWlmIChsYXN0KSB7CiYjNDM7CQlpZiAobGFzdCkKIAkJCVdBUk5fT04oZmNoLSZndDtpcS5mYXN5bmMgIT0gTlVMTCk7CiYjNDM7CQlpZiAoYWJvcnQpCiAJCQlmdXNlX2NoYW5fYWJvcnQoZmNoLCBmYWxzZSk7Ci0JCX0KIAkJZnVzZV9jb25uX3B1dChmY2gtJmd0O2Nvbm4pOwogCX0KIAlmdXNlX2Rldl9wdXQoZnVkKTsKQEAgLTIzNzUsNiAmIzQzOzIzOTUsMzQgQEAgc3RhdGljIHZvaWQgZnVzZV9kZXZfc2hvd19mZGluZm8oc3RydWN0IHNlcV9maWxlICpzZXEsIHN0cnVjdCBmaWxlICpmaWxlKQogfQogI2VuZGlmCiAKJiM0MztzdGF0aWMgaW50IGZ1c2VfZGV2X2ZsdXNoKHN0cnVjdCBmaWxlICpmaWxlLCBmbF9vd25lcl90IGlkKQomIzQzO3sKJiM0MzsJc3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBmdXNlX2ZpbGVfdG9fZnVkKGZpbGUpOwomIzQzOwlzdHJ1Y3QgZnVzZV9jaGFuICpmY2g7CiYjNDM7CWJvb2wgYWJvcnQ7CiYjNDM7CiYjNDM7CWlmIChmaWxlX2NvdW50KGZpbGUpICE9IDEpCiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsKJiM0MzsJLyoKJiM0MzsJICogQXRvbWljYWxseSB0cmFuc2l0aW9uIGZ1ZC0mZ3Q7Y2hhbiBmcm9tIE5VTEwgdG8gRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQKJiM0MzsJICogb24gZmluYWwgY2xvc2UgdG8gcHJldmVudCBhIGxhdGVyIGZ1c2VfZGV2X2luc3RhbGwoKSBmcm9tIHN1Y2NlZWRpbmcuCiYjNDM7CSAqLwomIzQzOwlmY2ggPSBjbXB4Y2hnKCZhbXA7ZnVkLSZndDtjaGFuLCBOVUxMLCBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCk7CiYjNDM7CWlmICghZmNoIHx8IGZjaCA9PSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCkKJiM0MzsJCXJldHVybiAwOwomIzQzOwomIzQzOwlzcGluX2xvY2soJmFtcDtmY2gtJmd0O2xvY2spOwomIzQzOwlmdWQtJmd0O2Nsb3NpbmcgPSB0cnVlOwomIzQzOwlhYm9ydCA9IGZjaC0mZ3Q7Y29ubmVjdGVkICZhbXA7JmFtcDsgZnVzZV9kZXZfYWxsX2Nsb3NpbmcoZmNoKTsKJiM0MzsJc3Bpbl91bmxvY2soJmFtcDtmY2gtJmd0O2xvY2spOwomIzQzOwomIzQzOwlpZiAoYWJvcnQpCiYjNDM7CQlmdXNlX2NoYW5fYWJvcnQoZmNoLCBmYWxzZSk7CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZnVzZV9kZXZfb3BlcmF0aW9ucyA9IHsKIAkub3duZXIJCT0gVEhJU19NT0RVTEUsCiAJLm9wZW4JCT0gZnVzZV9kZXZfb3BlbiwKQEAgLTIzODMsNiAmIzQzOzI0MzEsNyBAQCBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZ1c2VfZGV2X29wZXJhdGlvbnMgPSB7CiAJLndyaXRlX2l0ZXIJPSBmdXNlX2Rldl93cml0ZSwKIAkuc3BsaWNlX3dyaXRlCT0gZnVzZV9kZXZfc3BsaWNlX3dyaXRlLAogCS5wb2xsCQk9IGZ1c2VfZGV2X3BvbGwsCiYjNDM7CS5mbHVzaAkJPSBmdXNlX2Rldl9mbHVzaCwKIAkucmVsZWFzZQk9IGZ1c2VfZGV2X3JlbGVhc2UsCiAJLmZhc3luYwkJPSBmdXNlX2Rldl9mYXN5bmMsCiAJLnVubG9ja2VkX2lvY3RsID0gZnVzZV9kZXZfaW9jdGwsCmRpZmYgLS1naXQgYS9mcy9mdXNlL2Z1c2VfZGV2X2kuaCBiL2ZzL2Z1c2UvZnVzZV9kZXZfaS5oCmluZGV4IDY2OGM4MzkxZDYxYzAzLi4yODMzYTAzNTBjNDM1YSAxMDA2NDQKLS0tIGEvZnMvZnVzZS9mdXNlX2Rldl9pLmgKJiM0MzsmIzQzOyYjNDM7IGIvZnMvZnVzZS9mdXNlX2Rldl9pLmgKQEAgLTMwMiw2ICYjNDM7MzAyLDkgQEAgc3RydWN0IGZ1c2VfZGV2IHsKIAkvKiogQHN5bmNfaW5pdDogSXNzdWUgRlVTRV9JTklUIHN5bmNocm9ub3VzbHkgKi8KIAlib29sIHN5bmNfaW5pdDsKIAomIzQzOwkvKiogQGNsb3Npbmc6IEZpbmFsIGNsb3NlIGhhcyBzdGFydGVkLCBwcm90ZWN0ZWQgYnkgY2hhbi0mZ3Q7bG9jayAqLwomIzQzOwlib29sIGNsb3Npbmc7CiYjNDM7CiAJLyoqIEBjaGFuOiBGdXNlIGNoYW5uZWwgZm9yIHRoaXMgZGV2aWNlICovCiAJc3RydWN0IGZ1c2VfY2hhbiAqY2hhbjsKIApAQCAtMzMwLDE3ICYjNDM7MzMzLDI1IEBAIHN0cnVjdCBmdXNlX2NvcHlfc3RhdGUgewogCX0gcmluZzsKIH07CiAKLS8qIGZ1ZC0mZ3Q7Y2hhbiBnZXRzIGFzc2lnbmVkIHRvIHRoaXMgdmFsdWUgd2hlbiAvZGV2L2Z1c2UgaXMgY2xvc2VkICovCi0jZGVmaW5lIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEICgoc3RydWN0IGZ1c2VfY2hhbiAqKSAxKQotCiAvKgotICogTG9ja2xlc3MgYWNjZXNzIGlzIE9LLCBiZWNhdXNlIGZ1ZC0mZ3Q7Y2hhbiBpcyBzZXQgb25jZSBkdXJpbmcgbW91bnQgYW5kIGlzIHZhbGlkCi0gKiB1bnRpbCB0aGUgZmlsZSBpcyByZWxlYXNlZC4KJiM0MzsgKiBmdWQtJmd0O2NoYW4gaGFzIHRoZSBmb2xsb3dpbmcgbW9ub3RvbmljIHN0YXRlIHRyYW5zaXRpb25zOgomIzQzOyAqCiYjNDM7ICogTlVMTCAtJmd0OyB2YWxpZCBjaGFubmVsIC0mZ3Q7IEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVECiYjNDM7ICogTlVMTCAtLS0tLS0tLS0tLS0tLS0tLSZndDsgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQKICAqCi0gKiBmdWQtJmd0O2NoYW4gaXMgc2V0IHRvIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEIG9ubHkgYWZ0ZXIgdGhlIGNvbnRhaW5pbmcgZmlsZSBpcwotICogcmVsZWFzZWQsIHNvIHJlc3VsdCBpcyBzYWZlIHRvIGRlcmVmZXJlbmNlIGluIG1vc3QgY2FzZXMuICBFeGNlcHRpb25zIGFyZToKLSAqIGZ1c2VfZGV2X3B1dCgpIGFuZCBmdXNlX2ZpbGxfc3VwZXJfY29tbW9uKCkuCiYjNDM7ICogQSB2YWxpZCBjaGFubmVsIHBvaW50ZXIgcmVtYWlucyB2YWxpZCB1bnRpbCB0aGUgZmlsZSBpcyByZWxlYXNlZC4gRmluYWwKJiM0MzsgKiBmbHVzaCBjYW4gaW5zdGFsbCBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCBkaXJlY3RseSBmb3IgYW4gdW5pbnN0YWxsZWQKJiM0MzsgKiBkZXZpY2UsIHByZXZlbnRpbmcgYW55IGxhdGVyIGNoYW5uZWwgaW5zdGFsbGF0aW9uLiBUaGUgc2VudGluZWwgdGhlcmVmb3JlCiYjNDM7ICogbWVhbnMgdGhhdCB0aGUgY2hhbm5lbCBjYW4gbm8gbG9uZ2VyIGJlIGluc3RhbGxlZCBvciBhY2Nlc3NlZCB0aHJvdWdoIHRoaXMKJiM0MzsgKiBmaWxlOyBpdCBkb2VzIG5vdCBpbXBseSB0aGF0IHJlbGVhc2UgaGFzIGFscmVhZHkgcnVuIGFuZCBpdCBtdXN0IG5ldmVyIGJlCiYjNDM7ICogZGVyZWZlcmVuY2VkLgomIzQzOyAqCiYjNDM7ICogZnVzZV9kZXZfY2hhbl9nZXQoKSByZWFkcyB0aGlzIHN0YXRlIGxvY2tsZXNzbHkuIENhbGxlcnMgbXVzdCBkaXN0aW5ndWlzaAomIzQzOyAqIE5VTEwsIGEgdmFsaWQgY2hhbm5lbCBwb2ludGVyLCBhbmQgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQgYmVmb3JlCiYjNDM7ICogZGVyZWZlcmVuY2luZyB0aGUgcmVzdWx0LgogICovCiYjNDM7I2RlZmluZSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCAoKHN0cnVjdCBmdXNlX2NoYW4gKikgMSkKJiM0MzsKIHN0YXRpYyBpbmxpbmUgc3RydWN0IGZ1c2VfY2hhbiAqZnVzZV9kZXZfY2hhbl9nZXQoc3RydWN0IGZ1c2VfZGV2ICpmdWQpCiB7CiAJLyogUGFpcnMgd2l0aCB4Y2hnKCkgaW4gZnVzZV9kZXZfaW5zdGFsbCgpICovCkBAIC0zNTUsOCAmIzQzOzM2Niw5IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGZ1c2VfZGV2ICpmdXNlX2ZpbGVfdG9fZnVkKHN0cnVjdCBmaWxlICpmaWxlKQogc3RhdGljIGlubGluZSBzdHJ1Y3QgZnVzZV9kZXYgKl9fZnVzZV9nZXRfZGV2KHN0cnVjdCBmaWxlICpmaWxlKQogewogCXN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9maWxlX3RvX2Z1ZChmaWxlKTsKJiM0MzsJc3RydWN0IGZ1c2VfY2hhbiAqZmNoID0gZnVzZV9kZXZfY2hhbl9nZXQoZnVkKTsKIAotCWlmICghZnVzZV9kZXZfY2hhbl9nZXQoZnVkKSkKJiM0MzsJaWYgKCFmY2ggfHwgZmNoID09IEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEKQogCQlyZXR1cm4gTlVMTDsKIAogCXJldHVybiBmdWQ7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxMTMKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAzNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRlVTRSBEZXZpY2UgRHJpdmVyIFBhdGNoIEFuYWx5c2lzIGFuZCBGdXp6aW5nIFN0cmF0ZWd5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgRlVTRSBkZXZpY2UgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIGAvZGV2L2Z1c2VgIGhhbmRsaW5nLiBJdCYjMzk7cyB0b3VjaGluZyBgZnMvZnVzZS9kZXYuY2AgYW5kIGBmcy9mdXNlL2Z1c2VfZGV2X2kuaGAsIHdoaWNoIGlzIGFsd2F5cyBpbnRlcmVzdGluZy4gVGhpcyBzZWVtcyBsaWtlIGEgZnVuY3Rpb25hbCBjaGFuZ2Ug4oCTIGFkZGluZyBhIGAuZmx1c2hgIG9wZXJhdGlvbiAoYGZ1c2VfZGV2X2ZsdXNoYCkgdG8gdGhlIGBmdXNlX2Rldl9vcGVyYXRpb25zYCBzdHJ1Y3QuICBJdCYjMzk7cyBhbHNvIG1vZGlmeWluZyBob3cgdGhlIGRyaXZlciBkZWFscyB3aXRoIGBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRGAgYW5kIGhvdyBpdCBoYW5kbGVzIGNoYW5uZWwgY2xvc3VyZSB1c2luZyBgZnVzZV9kZXZfYWxsX2Nsb3NpbmdgIGluIGBmdXNlX2Rldl9yZWxlYXNlYC4gR2l2ZW4gdGhlIHNjb3BlIG9mIHRoZXNlIGNoYW5nZXMsIHRoaXMgaXMgKmRlZmluaXRlbHkqIHdvcnRoIGZ1enppbmcuIFdlIG5lZWQgdG8gbG9jayBkb3duIGEgZ29vZCBmdXp6aW5nIHN0cmF0ZWd5LgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgd2Ugc2hvdWxkIGZvY3VzIG91ciBmdXp6aW5nIGVmZm9ydHMgb24gc3BlY2lmaWMgZnVuY3Rpb25zLiBMZXQmIzM5O3Mgc2VlLi4uIHRoZSBwYXRjaCBtb2RpZmllczogYGZ1c2VfZ2V0X2RldmAsIGBmdXNlX2Rldl9hbGxfY2xvc2luZ2AsIGBmdXNlX2Rldl9yZWxlYXNlYCwgYGZ1c2VfZGV2X2ZsdXNoYCwgYW5kIGBfX2Z1c2VfZ2V0X2RldmAuIFRoZSBmdW5jdGlvbnMgdGhhdCBhcmUgZW50cnkgcG9pbnRzIGZvciBmdXp6aW5nIGxvb2sgbGlrZTogYGZ1c2VfZGV2X2ZsdXNoYCAod2hpY2ggd2lsbCBiZSBjYWxsZWQgdmlhIHRoZSBgZmlscF9jbG9zZWAgcGF0aCksIGBmdXNlX2Rldl9yZWxlYXNlYCAodHJpZ2dlcmVkIGJ5IGBmcHV0YCBhbmQgdGhlcmVmb3JlIGBmX29wLSZndDtyZWxlYXNlYCksIGFuZCBgZnVzZV9nZXRfZGV2YCAoY2FsbGVkIGZyb20gYSB2YXJpZXR5IG9mIHBsYWNlcywgbmFtZWx5IGlvY3RscywgcmVhZHMsIGFuZCB3cml0ZXMgd2l0aGluIGBmdXNlX2Rldl9vcGVyYXRpb25zYCkuIFRoZXNlIGFyZSB0aGUga2V5IGludGVyZmFjZXMgdGhhdCBzZWVtIHRvIGJlIGltcGFjdGVkLgoKTmV4dCBzdGVwOiBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBjYWxsIHNpdGVzIG9mIGBmdXNlX2dldF9kZXZgLi4uIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyB1c2luZyBpdCBhbmQgaG93LiBXZSYjMzk7bGwgYmUgYWJsZSB0byByZWZpbmUgb3VyIGZ1enppbmcgYXBwcm9hY2ggZnJvbSB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwODozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmdXNlX2dldF9kZXYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9mdXNlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9mdXNlL2N1c2UuYz01NTU9c3RhdGljIGludCBjdXNlX2NoYW5uZWxfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbmZzL2Z1c2UvY3VzZS5jLTU1Ni17XG5mcy9mdXNlL2N1c2UuYzo1NTc6XHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IF9fZnVzZV9nZXRfZGV2KGZpbGUpO1xuZnMvZnVzZS9jdXNlLmMtNTU4LVx0c3RydWN0IGN1c2VfY29ubiAqY2MgPSBmY190b19jYyhmdWQtXHUwMDNlY2hhbi1cdTAwM2Vjb25uKTtcbi0tXG5mcy9mdXNlL2Rldi5jPTE2NTE9c3RhdGljIGludCBmdXNlX2Rldl9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxuLS1cbmZzL2Z1c2UvZGV2LmMtMTY2MS1cbmZzL2Z1c2UvZGV2LmM6MTY2MjpzdHJ1Y3QgZnVzZV9kZXYgKmZ1c2VfZ2V0X2RldihzdHJ1Y3QgZmlsZSAqZmlsZSlcbmZzL2Z1c2UvZGV2LmMtMTY2My17XG4tLVxuZnMvZnVzZS9kZXYuYz0xNjg1PXN0YXRpYyBzc2l6ZV90IGZ1c2VfZGV2X3JlYWQoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKnRvKVxuLS1cbmZzL2Z1c2UvZGV2LmMtMTY4OC1cdHN0cnVjdCBmaWxlICpmaWxlID0gaW9jYi1cdTAwM2VraV9maWxwO1xuZnMvZnVzZS9kZXYuYzoxNjg5Olx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBmdXNlX2dldF9kZXYoZmlsZSk7XG5mcy9mdXNlL2Rldi5jLTE2OTAtXG4tLVxuZnMvZnVzZS9kZXYuYz0xNzAyPXN0YXRpYyBzc2l6ZV90IGZ1c2VfZGV2X3NwbGljZV9yZWFkKHN0cnVjdCBmaWxlICppbiwgbG9mZl90ICpwcG9zLFxuLS1cbmZzL2Z1c2UvZGV2LmMtMTcwOS1cdHN0cnVjdCBmdXNlX2NvcHlfc3RhdGUgY3M7XG5mcy9mdXNlL2Rldi5jOjE3MTA6XHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IGZ1c2VfZ2V0X2Rldihpbik7XG5mcy9mdXNlL2Rldi5jLTE3MTEtXG4tLVxuZnMvZnVzZS9kZXYuYz0xOTczPXN0YXRpYyBzc2l6ZV90IGZ1c2VfZGV2X3dyaXRlKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tKVxuLS1cbmZzL2Z1c2UvZGV2LmMtMTk3NS1cdHN0cnVjdCBmdXNlX2NvcHlfc3RhdGUgY3M7XG5mcy9mdXNlL2Rldi5jOjE5NzY6XHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IF9fZnVzZV9nZXRfZGV2KGlvY2ItXHUwMDNla2lfZmlscCk7XG5mcy9mdXNlL2Rldi5jLTE5NzctXG4tLVxuZnMvZnVzZS9kZXYuYz0xOTg5PXN0YXRpYyBzc2l6ZV90IGZ1c2VfZGV2X3NwbGljZV93cml0ZShzdHJ1Y3QgcGlwZV9pbm9kZV9pbmZvICpwaXBlLFxuLS1cbmZzL2Z1c2UvZGV2LmMtMTk5Ny1cdHN0cnVjdCBmdXNlX2NvcHlfc3RhdGUgY3M7XG5mcy9mdXNlL2Rldi5jOjE5OTg6XHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IF9fZnVzZV9nZXRfZGV2KG91dCk7XG5mcy9mdXNlL2Rldi5jLTE5OTktXHRzaXplX3QgcmVtO1xuLS1cbmZzL2Z1c2UvZGV2LmM9MjA4MT1zdGF0aWMgX19wb2xsX3QgZnVzZV9kZXZfcG9sbChzdHJ1Y3QgZmlsZSAqZmlsZSwgcG9sbF90YWJsZSAqd2FpdClcbi0tXG5mcy9mdXNlL2Rldi5jLTIwODQtXHRzdHJ1Y3QgZnVzZV9pcXVldWUgKmZpcTtcbmZzL2Z1c2UvZGV2LmM6MjA4NTpcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9nZXRfZGV2KGZpbGUpO1xuZnMvZnVzZS9kZXYuYy0yMDg2LVxuLS1cbmZzL2Z1c2UvZGV2LmM9MjI3Mj1zdGF0aWMgaW50IGZ1c2VfZGV2X2Zhc3luYyhpbnQgZmQsIHN0cnVjdCBmaWxlICpmaWxlLCBpbnQgb24pXG5mcy9mdXNlL2Rldi5jLTIyNzMte1xuZnMvZnVzZS9kZXYuYzoyMjc0Olx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBmdXNlX2dldF9kZXYoZmlsZSk7XG5mcy9mdXNlL2Rldi5jLTIyNzUtXG4tLVxuZnMvZnVzZS9kZXYuYz0yMjgzPXN0YXRpYyBsb25nIGZ1c2VfZGV2X2lvY3RsX2Nsb25lKHN0cnVjdCBmaWxlICpmaWxlLCBfX3UzMiBfX3VzZXIgKmFyZ3ApXG4tLVxuZnMvZnVzZS9kZXYuYy0yMzAyLVxuZnMvZnVzZS9kZXYuYzoyMzAzOlx0ZnVkID0gZnVzZV9nZXRfZGV2KGZkX2ZpbGUoZikpO1xuZnMvZnVzZS9kZXYuYy0yMzA0LVx0aWYgKElTX0VSUihmdWQpKVxuLS1cbmZzL2Z1c2UvZGV2LmM9MjMxOD1zdGF0aWMgbG9uZyBmdXNlX2Rldl9pb2N0bF9iYWNraW5nX29wZW4oc3RydWN0IGZpbGUgKmZpbGUsXG4tLVxuZnMvZnVzZS9kZXYuYy0yMzIwLXtcbmZzL2Z1c2UvZGV2LmM6MjMyMTpcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9nZXRfZGV2KGZpbGUpO1xuZnMvZnVzZS9kZXYuYy0yMzIyLVx0c3RydWN0IGZ1c2VfYmFja2luZ19tYXAgbWFwO1xuLS1cbmZzL2Z1c2UvZGV2LmM9MjMzNj1zdGF0aWMgbG9uZyBmdXNlX2Rldl9pb2N0bF9iYWNraW5nX2Nsb3NlKHN0cnVjdCBmaWxlICpmaWxlLCBfX3UzMiBfX3VzZXIgKmFyZ3ApXG5mcy9mdXNlL2Rldi5jLTIzMzcte1xuZnMvZnVzZS9kZXYuYzoyMzM4Olx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBmdXNlX2dldF9kZXYoZmlsZSk7XG5mcy9mdXNlL2Rldi5jLTIzMzktXHRpbnQgYmFja2luZ19pZDtcbi0tXG5mcy9mdXNlL2Rldi5jPTIzODg9c3RhdGljIHZvaWQgZnVzZV9kZXZfc2hvd19mZGluZm8oc3RydWN0IHNlcV9maWxlICpzZXEsIHN0cnVjdCBmaWxlICpmaWxlKVxuZnMvZnVzZS9kZXYuYy0yMzg5LXtcbmZzL2Z1c2UvZGV2LmM6MjM5MDpcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gX19mdXNlX2dldF9kZXYoZmlsZSk7XG5mcy9mdXNlL2Rldi5jLTIzOTEtXHRpZiAoIWZ1ZClcbi0tXG5mcy9mdXNlL2Rldl91cmluZy5jPTEyMTc9aW50IGZ1c2VfdXJpbmdfY21kKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCwgdW5zaWduZWQgaW50IGlzc3VlX2ZsYWdzKVxuLS1cbmZzL2Z1c2UvZGV2X3VyaW5nLmMtMTIzMi1cbmZzL2Z1c2UvZGV2X3VyaW5nLmM6MTIzMzpcdGZ1ZCA9IGZ1c2VfZ2V0X2RldihjbWQtXHUwMDNlZmlsZSk7XG5mcy9mdXNlL2Rldl91cmluZy5jLTEyMzQtXHRpZiAoSVNfRVJSKGZ1ZCkpIHtcbi0tXG5mcy9mdXNlL2Z1c2VfZGV2X2kuaD0zNjE9c3RhdGljIGlubGluZSBzdHJ1Y3QgZnVzZV9kZXYgKmZ1c2VfZmlsZV90b19mdWQoc3RydWN0IGZpbGUgKmZpbGUpXG4tLVxuZnMvZnVzZS9mdXNlX2Rldl9pLmgtMzY1LVxuZnMvZnVzZS9mdXNlX2Rldl9pLmg6MzY2OnN0YXRpYyBpbmxpbmUgc3RydWN0IGZ1c2VfZGV2ICpfX2Z1c2VfZ2V0X2RldihzdHJ1Y3QgZmlsZSAqZmlsZSlcbmZzL2Z1c2UvZnVzZV9kZXZfaS5oLTM2Ny17XG4tLVxuZnMvZnVzZS9mdXNlX2Rldl9pLmg9Mzc3PXZvaWQgZnVzZV9pcXVldWVfaW5pdChzdHJ1Y3QgZnVzZV9pcXVldWUgKmZpcSwgY29uc3Qgc3RydWN0IGZ1c2VfaXF1ZXVlX29wcyAqb3BzLCB2b2lkICpwcml2KTtcbmZzL2Z1c2UvZnVzZV9kZXZfaS5oLTM3OC1cbmZzL2Z1c2UvZnVzZV9kZXZfaS5oOjM3OTpzdHJ1Y3QgZnVzZV9kZXYgKmZ1c2VfZ2V0X2RldihzdHJ1Y3QgZmlsZSAqZmlsZSk7XG5mcy9mdXNlL2Z1c2VfZGV2X2kuaC0zODAtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjU1MQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDI3MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZVU0UgRGV2aWNlIERyaXZlciBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgZG93biB0aGlzIHBhdGNoLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaWRlbnRpZnkgdGhlIGtleSBmdW5jdGlvbnMgYmVpbmcgbW9kaWZpZWQgYW5kIGhvdyB0aGV5IGludGVyYWN0LiBJdCBsb29rcyBsaWtlIHdlJiMzOTtyZSB0b3VjaGluZyBgZnVzZV9nZXRfZGV2YCwgYF9fZnVzZV9nZXRfZGV2YCwgYGZ1c2VfZGV2X3JlbGVhc2VgLCBhbmQgYWRkaW5nIGEgbmV3IGZ1bmN0aW9uLCBgZnVzZV9kZXZfZmx1c2hgLiBTaW5jZSBgZnVzZV9kZXZfZmx1c2hgIGlzIHN0YXRpYywgSSBjYW4mIzM5O3QgZGlyZWN0bHkgdGFyZ2V0IGl0LiBIb3dldmVyLCBpdCYjMzk7cyB0cmlnZ2VyZWQgdGhyb3VnaCB0aGUgYGZsdXNoYCBmaWxlIG9wZXJhdGlvbiBvbiBgL2Rldi9mdXNlYCwgc28gaXQmIzM5O3MgcmVsZXZhbnQgY29udGV4dC4KCmBmdXNlX2Rldl9yZWxlYXNlYCBpcyBhbHNvIGltcG9ydGFudCwgYXMgaXQmIzM5O3MgY29ubmVjdGVkIHRvIHRoZSBgcmVsZWFzZWAgZmlsZSBvcGVyYXRpb24gb24gYC9kZXYvZnVzZWAuIE5vdywgYGZ1c2VfZ2V0X2RldmAgaXMgdXNlZCBleHRlbnNpdmVseSBpbiBhIHZhcmlldHkgb2Ygb3BlcmF0aW9ucyBvbiBgL2Rldi9mdXNlYCwgbGlrZSBgZnVzZV9kZXZfcmVhZGAsIGBmdXNlX2Rldl93cml0ZWAsIGBmdXNlX2Rldl9wb2xsYCwgYGZ1c2VfZGV2X2Zhc3luY2AsIGFuZCBgZnVzZV9kZXZfaW9jdGxfY2xvbmVgIHRvIG5hbWUgYSBmZXcuIFRoYXQgZ2l2ZXMgdXMgYSBnb29kIHNldCBvZiBzdGFydGluZyBwb2ludHM6IGBmdXNlX2Rldl9yZWxlYXNlYCwgYWxvbmcgd2l0aCBgZnVzZV9kZXZfcmVhZGAsIGBmdXNlX2Rldl93cml0ZWAsIGBmdXNlX2Rldl9wb2xsYCwgYGZ1c2VfZGV2X2Zhc3luY2AsIGFuZCBgZnVzZV9kZXZfaW9jdGxfY2xvbmVgLgoKQnV0IHdhaXQsIGlzIGBmdXNlX2dldF9kZXZgIGV4cG9ydGVkPyBBaCwgeWVzLCBpdCYjMzk7cyBub3Qgc3RhdGljOyBpdCYjMzk7cyBhIG5vbi1zdGF0aWMgZnVuY3Rpb24hIFRoYXQgb3BlbnMgdXAgcG9zc2liaWxpdGllcy4gQW5kIGBmdXNlX2Rldl9yZWxlYXNlYCBpcyBhbHNvIG5vbi1zdGF0aWMuIEdvb2QuIEJlZm9yZSBkaXZpbmcgZnVydGhlciBpbnRvIHRoZSBjb2RlLCBJIHNob3VsZCBwcm9iYWJseSBjaGVjayBpZiBGVVNFIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB3ZSBuZWVkIHRvIGxvb2sgZm9yIGEgY29uZmlndXJhdGlvbiBvcHRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEZVU0VfRlMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9mdXNlL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZnVzZS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5mcy9mdXNlL0tjb25maWc6Mjpjb25maWcgRlVTRV9GU1xuZnMvZnVzZS9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtGVVNFIChGaWxlc3lzdGVtIGluIFVzZXJzcGFjZSkgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcyOTQKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA3OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBicmVha2Rvd24gb2Ygd2hhdCBJJiMzOTttIGxvb2tpbmcgYXQsIGZyb20gbXkgZXhwZXJ0IHBlcnNwZWN0aXZlOgoKKipJbnZlc3RpZ2F0aW5nIEZVU0UgQ29uZmlndXJhdGlvbiBhbmQgT3BlcmF0aW9ucyoqCgpSaWdodCwgc28gd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCB0aGUgRlVTRSBmaWxlIHN5c3RlbSBkcml2ZXIsIGFuZCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb24gaXMgY2xlYXJseSBgRlVTRV9GU2AuIExldCBtZSBmaXJzdCBjb25maXJtIGlmIHRoZXJlIGFyZSBhbnkgKm90aGVyKiByZWxhdGVkIGNvbmZpZ3MgdGhhdCBtaWdodCBiZSByZWxldmFudCBoZXJlIOKAkyBJIGRvbiYjMzk7dCB3YW50IHRvIG1pc3MgYW55dGhpbmcuCgpPa2F5LCBsZXQmIzM5O3Mgc2VlLiBUaGUgY2hhbmdlcyBhcmUgZm9jdXNlZCBvbiBgZnMvZnVzZS9kZXYuY2AgYW5kIGBmcy9mdXNlL2Z1c2VfZGV2X2kuaGAuIEludGVyZXN0aW5nLi4uIE5vIG5ldyBjb25maWcgb3B0aW9ucyBhcmUgYmVpbmcgaW50cm9kdWNlZCwgc28gdGhhdCYjMzk7cyBoZWxwZnVsIGluZm9ybWF0aW9uLgoKTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZyBhdCB0aGUgY29yZSBsZXZlbC4gTXkgZm9jdXMgc2hpZnRzIHRvIHRoZSBgZnVzZV9kZXZfb3BlcmF0aW9uc2Agc3RydWN0dXJlIGRlZmluZWQgd2l0aGluIGBmcy9mdXNlL2Rldi5jYC4gVGhpcyBpcyB3aGVyZSB0aGUgY3J1Y2lhbCBjYWxsYmFja3MgYW5kIGludGVyZmFjZSBkZWZpbml0aW9ucyBsaXZlIGZvciBkZXZpY2UtYmFzZWQgRlVTRSBtb3VudHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBvcGVyYXRpb25zIGFyZSBkZWZpbmVkIGFuZCBpZiB0aGVzZSBzdHJ1Y3R1cmVzIGhhdmUgY2hhbmdlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwODozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZ1c2VfZGV2X29wZXJhdGlvbnMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9mdXNlL2Rldi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2Z1c2UvZGV2LmM9MjM5OD1zdGF0aWMgaW50IGZ1c2VfZGV2X2ZsdXNoKHN0cnVjdCBmaWxlICpmaWxlLCBmbF9vd25lcl90IGlkKVxuLS1cbmZzL2Z1c2UvZGV2LmMtMjQyNS1cbmZzL2Z1c2UvZGV2LmM6MjQyNjpjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZ1c2VfZGV2X29wZXJhdGlvbnMgPSB7XG5mcy9mdXNlL2Rldi5jLTI0MjctXHQub3duZXJcdFx0PSBUSElTX01PRFVMRSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwODozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NzM2CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZvY3VzaW5nIG9uIHRoZSBGVVNFIERldmljZSBJbnRlcmFjdGlvbnMqKgoKT2theSwgc28gSSBuZWVkIHRvIHplcm8gaW4gb24gdGhlIGNvcmUgaW50ZXJhY3Rpb25zIHdpdGggdGhlIEZVU0UgZGV2aWNlLiBMZXQmIzM5O3Mgc2VlLi4uIEkmIzM5O20gdGhpbmtpbmcgSSBzaG91bGQgc3RhcnQgd2l0aCB0aGVzZSBmdW5jdGlvbnM6IGBmdXNlX2Rldl9yZWxlYXNlYCwgYGZ1c2VfZ2V0X2RldmAsIGBmdXNlX2Rldl9yZWFkYCwgYGZ1c2VfZGV2X3dyaXRlYCwgYGZ1c2VfZGV2X3BvbGxgLCBhbmQgYGZ1c2VfZGV2X2Zhc3luY2AuIEkgaGF2ZSBhIGZlZWxpbmcgdGhhdCBgZnVzZV9nZXRfZGV2YCBhbmQgYGZ1c2VfZGV2X3JlbGVhc2VgIGFyZSB3b3J0aCBhIHNlY29uZCBsb29rLCBiZWNhdXNlIHRoZXkmIzM5O3JlIG5vbi1zdGF0aWMgd2hpY2ggaXMgaW1wb3J0YW50LCBidXQgYSBxdWljayBnbGFuY2UgbWFrZXMgbWUgdGhpbmsgdGhhdCBgZnVzZV9kZXZfcmVhZGAgaXMgc3RhdGljLCB3aGljaCBsaW1pdHMgaXRzIHV0aWxpdHkuIEkgbmVlZCB0byBtYWtlIGEgbm90ZSB0byBkb3VibGUtY2hlY2sgdGhhdCBgZnVzZV9kZXZfcmVhZGAgaXMgZGVmaW5pdGVseSBzdGF0aWMsIGJlY2F1c2UgdGhhdCBtaWdodCBiZSBtaXNsZWFkaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwODozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmdXNlX2Rldl9yZWFkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvZnVzZS9kZXYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9mdXNlL2Rldi5jPTE2NjI9c3RydWN0IGZ1c2VfZGV2ICpmdXNlX2dldF9kZXYoc3RydWN0IGZpbGUgKmZpbGUpXG4tLVxuZnMvZnVzZS9kZXYuYy0xNjg0LVxuZnMvZnVzZS9kZXYuYzoxNjg1OnN0YXRpYyBzc2l6ZV90IGZ1c2VfZGV2X3JlYWQoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKnRvKVxuZnMvZnVzZS9kZXYuYy0xNjg2LXtcbi0tXG5mcy9mdXNlL2Rldi5jPTI0MjY9Y29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmdXNlX2Rldl9vcGVyYXRpb25zID0ge1xuLS1cbmZzL2Z1c2UvZGV2LmMtMjQyOC1cdC5vcGVuXHRcdD0gZnVzZV9kZXZfb3BlbixcbmZzL2Z1c2UvZGV2LmM6MjQyOTpcdC5yZWFkX2l0ZXJcdD0gZnVzZV9kZXZfcmVhZCxcbmZzL2Z1c2UvZGV2LmMtMjQzMC1cdC5zcGxpY2VfcmVhZFx0PSBmdXNlX2Rldl9zcGxpY2VfcmVhZCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODMwMAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDEwNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGb2N1c2luZyBvbiBEZXZpY2UgSW50ZXJhY3Rpb24qKgoKT2theSwgc28gYGZ1c2VfZGV2X3JlYWRgIGlzIGRlZmluaXRlbHkgc3RhdGljLCB3aGljaCBzaW1wbGlmaWVzIHRoaW5ncy4gVGhhdCBtZWFucyB3ZSBjYW4gc2FmZWx5IHNoaWZ0IG91ciBhdHRlbnRpb24gdG8gYGZ1c2VfZ2V0X2RldmAgYW5kIGBmdXNlX2Rldl9yZWxlYXNlYC4gVGhvc2Ugc2VlbSBsaWtlIHRoZSBrZXkgcGxheWVycyBoZXJlLgoKTGV0JiMzOTtzIHF1aWNrbHkgY29uZmlybSB0aGF0IGBmdXNlX2Rldl9mbHVzaGAgaXMgYWxzbyBzdGF0aWMuIFl1cCwgc3RhdGljIHRvby4gVGhhdCBmdXJ0aGVyIG5hcnJvd3MgdGhlIHNjb3BlLiBXZSYjMzk7cmUgbG9va2luZyBmb3IgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gZGV2aWNlIG1hbmFnZW1lbnQuCgpBbHJpZ2h0LCBzbyB0aGUgc3RhbmRvdXRzIGFyZSBzdGlsbCBgZnVzZV9nZXRfZGV2YCBhbmQgYGZ1c2VfZGV2X3JlbGVhc2VgLiBJJiMzOTttIGdvaW5nIHRvIGRvdWJsZS1jaGVjayB0aG9zZSB0d28gYWdhaW4sIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZyBjcnVjaWFsLiBHb3R0YSBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZnVzZV9kZXZfcmVsZWFzZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2Z1c2UvZGV2LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZnVzZS9kZXYuYz00NTg9c3RhdGljIGJvb2wgZnVzZV9kZXZfaW5zdGFsbF93aXRoX3BxKHN0cnVjdCBmdXNlX2RldiAqZnVkLCBzdHJ1Y3QgZnVzZV9jaGFuICpmY2gsXG4tLVxuZnMvZnVzZS9kZXYuYy00NjUtXHQgKiBQYWlycyB3aXRoOlxuZnMvZnVzZS9kZXYuYzo0NjY6XHQgKiAgLSB4Y2hnKCkgaW4gZnVzZV9kZXZfcmVsZWFzZSgpXG5mcy9mdXNlL2Rldi5jLTQ2Ny1cdCAqICAtIHNtcF9sb2FkX2FjcXVpcmUoKSBpbiBmdXNlX2Rldl9mY19nZXQoKVxuLS1cbmZzL2Z1c2UvZGV2LmM9NTE0PXZvaWQgZnVzZV9kZXZfcHV0KHN0cnVjdCBmdXNlX2RldiAqZnVkKVxuLS1cbmZzL2Z1c2UvZGV2LmMtNTIyLVx0aWYgKGZjaCBcdTAwMjZcdTAwMjYgZmNoICE9IEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEKSB7XG5mcy9mdXNlL2Rldi5jOjUyMzpcdFx0LyogVGhpcyBpcyB0aGUgdmlydGlvZnMgY2FzZSAoZnVzZV9kZXZfcmVsZWFzZSgpIG5vdCBjYWxsZWQpICovXG5mcy9mdXNlL2Rldi5jLTUyNC1cdFx0c3Bpbl9sb2NrKFx1MDAyNmZjaC1cdTAwM2Vsb2NrKTtcbi0tXG5mcy9mdXNlL2Rldi5jPTIyMTk9c3RhdGljIGJvb2wgZnVzZV9kZXZfYWxsX2Nsb3Npbmcoc3RydWN0IGZ1c2VfY2hhbiAqZmNoKVxuLS1cbmZzL2Z1c2UvZGV2LmMtMjIzMS1cbmZzL2Z1c2UvZGV2LmM6MjIzMjppbnQgZnVzZV9kZXZfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbmZzL2Z1c2UvZGV2LmMtMjIzMy17XG4tLVxuZnMvZnVzZS9kZXYuYy0yMjY5LX1cbmZzL2Z1c2UvZGV2LmM6MjI3MDpFWFBPUlRfU1lNQk9MX0dQTChmdXNlX2Rldl9yZWxlYXNlKTtcbmZzL2Z1c2UvZGV2LmMtMjI3MS1cbi0tXG5mcy9mdXNlL2Rldi5jPTI0MjY9Y29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmdXNlX2Rldl9vcGVyYXRpb25zID0ge1xuLS1cbmZzL2Z1c2UvZGV2LmMtMjQzNC1cdC5mbHVzaFx0XHQ9IGZ1c2VfZGV2X2ZsdXNoLFxuZnMvZnVzZS9kZXYuYzoyNDM1Olx0LnJlbGVhc2VcdD0gZnVzZV9kZXZfcmVsZWFzZSxcbmZzL2Z1c2UvZGV2LmMtMjQzNi1cdC5mYXN5bmNcdFx0PSBmdXNlX2Rldl9mYXN5bmMsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkxMDQKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIFRob3VnaHRzIG9uIHRoZSBBUEkgRXhwb3J0cyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpbW1lZGlhdGVseSBrZXlpbmcgaW4gb24gdGhlc2UgdHdvIGZ1bmN0aW9ucyBiZWluZyBleHBvcnRlZDogYGZ1c2VfZGV2X3JlbGVhc2VgIGFuZCBgZnVzZV9nZXRfZGV2YC4gVGhhdCB0ZWxscyBtZSB0aGVzZSBhcmUgZnVuZGFtZW50YWwgY29tcG9uZW50cyBvZiB0aGUgRlVTRSAoRmlsZXN5c3RlbSBpbiBVc2Vyc3BhY2UpIGludGVyZmFjZSB3ZSYjMzk7cmUgd29ya2luZyB3aXRoLiBgZnVzZV9kZXZfcmVsZWFzZWAuLi4gdGhhdCYjMzk7cyBnb3QgdG8gYmUgdGhlIGZ1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciByZWxlYXNpbmcgYSBGVVNFIGRldmljZSwgY2xlYW5pbmcgdXAgcmVzb3VyY2VzLCBhbmQgcHJvcGVybHkgdW5yZWdpc3RlcmluZyBpdCwgbGlrZWx5IHdoZW4gYSBmaWxlc3lzdGVtIGlzIHVubW91bnRlZCBvciBnb2VzIG91dCBvZiBzY29wZS4gVGhhdCYjMzk7cyBhIGNydWNpYWwsIHByb2JhYmx5IGNvbXBsZXgsIGZ1bmN0aW9uLiBUaGVuIHdlIGhhdmUgYGZ1c2VfZ2V0X2RldmAuIFRoYXQgc291bmRzIGxpa2UgdGhlIGNvdW50ZXJwYXJ0LCB0aGUgZW50cnkgcG9pbnQsIHRoZSBmdW5jdGlvbiB1c2VkIHRvIHJldHJpZXZlIG9yIG9idGFpbiBhIEZVU0UgZGV2aWNlIOKAkyB0aGUgY29yZSBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBpbnRlcmFjdGlvbiBwb2ludCB3aXRoIHRoZSBGVVNFIHN1YnN5c3RlbS4gVGhpcyBzaWduYWxzIHRoYXQgdGhlcmUmIzM5O3MgYSBtYW5hZ2VkIGxpZmVjeWNsZSBmb3IgZGV2aWNlczsgdGhleSYjMzk7cmUgcHJvYmFibHkgYWNxdWlyZWQsIHVzZWQsIGFuZCB0aGVuIGV4cGxpY2l0bHkgcmVsZWFzZWQuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIGZ1bmN0aW9uIHNpZ25hdHVyZXMgYW5kIHJlbGF0ZWQgZGF0YSBzdHJ1Y3R1cmVzIHRvIGZ1bGx5IGdyYXNwIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBpbXBsaWNhdGlvbnMgYW5kIG92ZXJhbGwgZGVzaWduIHBoaWxvc29waHkuIFRoaXMgaXMgdGhlIGZvdW5kYXRpb24gb2YgdGhlIGludGVyZmFjZSEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtFWFBPUlRfU1lNQk9MX0dQTFxcKGZ1c2VfZ2V0X2RldlxcKSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2Z1c2UvZGV2LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwODozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NDE2CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKkludmVzdGlnYXRpbmcgYSBQb3RlbnRpYWwgTGlicmFyeSBJc3N1ZSoqCgpPa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBJIHdhcyB1bmRlciB0aGUgaW1wcmVzc2lvbiB0aGF0IGBmdXNlX2dldF9kZXZgIHdhcyBhIHB1YmxpY2x5IGF2YWlsYWJsZSBmdW5jdGlvbi4gSSBuZWVkIHRvIHZlcmlmeSB0aGF0OyBpdCBkb2VzbiYjMzk7dCBzZWVtIHRvIGJlIGV4cG9ydGVkLiBUaGUgZmFjdCB0aGF0IGl0IGlzbiYjMzk7dCBleHBvcnRlZCBjb3VsZCBiZSBhIG1ham9yIHByb2JsZW0gZm9yIHRoaXMgcGFydGljdWxhciBsaW5lIG9mIGNvZGUsIG9yIGZvciB0aGlzIGxpYnJhcnkgdGhhdCBJJiMzOTttIHdvcmtpbmcgd2l0aCBhdCB0aGUgbW9tZW50LiBMZXQgbWUgZG91YmxlLWNoZWNrIHRoZSByZWxldmFudCBoZWFkZXIgZmlsZXMsIHRoZSBkb2N1bWVudGF0aW9uLCBhbmQgdGhlIGJ1aWxkIHByb2Nlc3MgdG8gY29uZmlybSBpdHMgdmlzaWJpbGl0eSBhbmQgYXZhaWxhYmlsaXR5LiBJIGhhdmUgYSBmZWVsaW5nIHRoYXQgdGhpcyB3aWxsIGJlIHRoZSBrZXkgcGllY2Ugb2YgaW5mb3JtYXRpb24gdGhhdCBhZmZlY3RzIHRoZSBuZXh0IGRpcmVjdGlvbiB0byBiZSB0YWtlbiBmb3IgdGhpcyBsaWJyYXJ5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwODozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmdXNlX2dldF9kZXYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9mdXNlL2Rldi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2Z1c2UvZGV2LmM9MTY1MT1zdGF0aWMgaW50IGZ1c2VfZGV2X29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXG4tLVxuZnMvZnVzZS9kZXYuYy0xNjYxLVxuZnMvZnVzZS9kZXYuYzoxNjYyOnN0cnVjdCBmdXNlX2RldiAqZnVzZV9nZXRfZGV2KHN0cnVjdCBmaWxlICpmaWxlKVxuZnMvZnVzZS9kZXYuYy0xNjYzLXtcbi0tXG5mcy9mdXNlL2Rldi5jPTE2ODU9c3RhdGljIHNzaXplX3QgZnVzZV9kZXZfcmVhZChzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqdG8pXG4tLVxuZnMvZnVzZS9kZXYuYy0xNjg4LVx0c3RydWN0IGZpbGUgKmZpbGUgPSBpb2NiLVx1MDAzZWtpX2ZpbHA7XG5mcy9mdXNlL2Rldi5jOjE2ODk6XHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IGZ1c2VfZ2V0X2RldihmaWxlKTtcbmZzL2Z1c2UvZGV2LmMtMTY5MC1cbi0tXG5mcy9mdXNlL2Rldi5jPTE3MDI9c3RhdGljIHNzaXplX3QgZnVzZV9kZXZfc3BsaWNlX3JlYWQoc3RydWN0IGZpbGUgKmluLCBsb2ZmX3QgKnBwb3MsXG4tLVxuZnMvZnVzZS9kZXYuYy0xNzA5LVx0c3RydWN0IGZ1c2VfY29weV9zdGF0ZSBjcztcbmZzL2Z1c2UvZGV2LmM6MTcxMDpcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9nZXRfZGV2KGluKTtcbmZzL2Z1c2UvZGV2LmMtMTcxMS1cbi0tXG5mcy9mdXNlL2Rldi5jPTE5NzM9c3RhdGljIHNzaXplX3QgZnVzZV9kZXZfd3JpdGUoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20pXG4tLVxuZnMvZnVzZS9kZXYuYy0xOTc1LVx0c3RydWN0IGZ1c2VfY29weV9zdGF0ZSBjcztcbmZzL2Z1c2UvZGV2LmM6MTk3NjpcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gX19mdXNlX2dldF9kZXYoaW9jYi1cdTAwM2VraV9maWxwKTtcbmZzL2Z1c2UvZGV2LmMtMTk3Ny1cbi0tXG5mcy9mdXNlL2Rldi5jPTE5ODk9c3RhdGljIHNzaXplX3QgZnVzZV9kZXZfc3BsaWNlX3dyaXRlKHN0cnVjdCBwaXBlX2lub2RlX2luZm8gKnBpcGUsXG4tLVxuZnMvZnVzZS9kZXYuYy0xOTk3LVx0c3RydWN0IGZ1c2VfY29weV9zdGF0ZSBjcztcbmZzL2Z1c2UvZGV2LmM6MTk5ODpcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gX19mdXNlX2dldF9kZXYob3V0KTtcbmZzL2Z1c2UvZGV2LmMtMTk5OS1cdHNpemVfdCByZW07XG4tLVxuZnMvZnVzZS9kZXYuYz0yMDgxPXN0YXRpYyBfX3BvbGxfdCBmdXNlX2Rldl9wb2xsKHN0cnVjdCBmaWxlICpmaWxlLCBwb2xsX3RhYmxlICp3YWl0KVxuLS1cbmZzL2Z1c2UvZGV2LmMtMjA4NC1cdHN0cnVjdCBmdXNlX2lxdWV1ZSAqZmlxO1xuZnMvZnVzZS9kZXYuYzoyMDg1Olx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBmdXNlX2dldF9kZXYoZmlsZSk7XG5mcy9mdXNlL2Rldi5jLTIwODYtXG4tLVxuZnMvZnVzZS9kZXYuYz0yMjcyPXN0YXRpYyBpbnQgZnVzZV9kZXZfZmFzeW5jKGludCBmZCwgc3RydWN0IGZpbGUgKmZpbGUsIGludCBvbilcbmZzL2Z1c2UvZGV2LmMtMjI3My17XG5mcy9mdXNlL2Rldi5jOjIyNzQ6XHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IGZ1c2VfZ2V0X2RldihmaWxlKTtcbmZzL2Z1c2UvZGV2LmMtMjI3NS1cbi0tXG5mcy9mdXNlL2Rldi5jPTIyODM9c3RhdGljIGxvbmcgZnVzZV9kZXZfaW9jdGxfY2xvbmUoc3RydWN0IGZpbGUgKmZpbGUsIF9fdTMyIF9fdXNlciAqYXJncClcbi0tXG5mcy9mdXNlL2Rldi5jLTIzMDItXG5mcy9mdXNlL2Rldi5jOjIzMDM6XHRmdWQgPSBmdXNlX2dldF9kZXYoZmRfZmlsZShmKSk7XG5mcy9mdXNlL2Rldi5jLTIzMDQtXHRpZiAoSVNfRVJSKGZ1ZCkpXG4tLVxuZnMvZnVzZS9kZXYuYz0yMzE4PXN0YXRpYyBsb25nIGZ1c2VfZGV2X2lvY3RsX2JhY2tpbmdfb3BlbihzdHJ1Y3QgZmlsZSAqZmlsZSxcbi0tXG5mcy9mdXNlL2Rldi5jLTIzMjAte1xuZnMvZnVzZS9kZXYuYzoyMzIxOlx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBmdXNlX2dldF9kZXYoZmlsZSk7XG5mcy9mdXNlL2Rldi5jLTIzMjItXHRzdHJ1Y3QgZnVzZV9iYWNraW5nX21hcCBtYXA7XG4tLVxuZnMvZnVzZS9kZXYuYz0yMzM2PXN0YXRpYyBsb25nIGZ1c2VfZGV2X2lvY3RsX2JhY2tpbmdfY2xvc2Uoc3RydWN0IGZpbGUgKmZpbGUsIF9fdTMyIF9fdXNlciAqYXJncClcbmZzL2Z1c2UvZGV2LmMtMjMzNy17XG5mcy9mdXNlL2Rldi5jOjIzMzg6XHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IGZ1c2VfZ2V0X2RldihmaWxlKTtcbmZzL2Z1c2UvZGV2LmMtMjMzOS1cdGludCBiYWNraW5nX2lkO1xuLS1cbmZzL2Z1c2UvZGV2LmM9MjM4OD1zdGF0aWMgdm9pZCBmdXNlX2Rldl9zaG93X2ZkaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgc3RydWN0IGZpbGUgKmZpbGUpXG5mcy9mdXNlL2Rldi5jLTIzODkte1xuZnMvZnVzZS9kZXYuYzoyMzkwOlx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBfX2Z1c2VfZ2V0X2RldihmaWxlKTtcbmZzL2Z1c2UvZGV2LmMtMjM5MS1cdGlmICghZnVkKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwODozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDgxMAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipOYXZpZ2F0aW5nIHRoZSBGdXNlIERldmljZSBTdHJ1Y3R1cmUqKgoKUmlnaHQsIHNvIGBmdXNlX2dldF9kZXZgLi4uIHRoYXQgcmluZ3MgYSBiZWxsLiBOb3csIHdoZXJlIHdhcyB0aGF0IGRlZmluZWQgYWdhaW4/IE9oLCBpdCBsb29rcyBsaWtlIGl0JiMzOTtzIGV4cG9ydGVkIGluIGBmcy9mdXNlL2Rldi5jYC4gT2theSwgZ29vZCwgdGhhdCYjMzk7cyB3aGF0IEkgd2FzIGV4cGVjdGluZy4gTGV0JiMzOTtzIGp1c3QgZG91YmxlLWNoZWNrIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgZnVzZV9nZXRfZGV2YC4gSSB3YW50IHRvIG1ha2Ugc3VyZSBJJiMzOTt2ZSBnb3QgYSBzb2xpZCBoYW5kbGUgb24gaG93IGl0JiMzOTtzIGhhbmRsaW5nIHRoZSBkZXZpY2Ugc3RydWN0dXJlLiBJJiMzOTtsbCBuZWVkIHRvIHJlLWZhbWlsaWFyaXplIG15c2VsZiB3aXRoIHRoZSBlbmQgb2YgdGhhdCBmdW5jdGlvbi4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gaG93IGl0IGhhbmRsZXMgZXJyb3IgY29uZGl0aW9ucyBhbmQgaG93IGl0IHJldHVybnMgdGhhdCBzdHJ1Y3R1cmUuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlIGFuZCByZWZyZXNoIG15IG1lbW9yeSBvZiB0aGF0IHNwZWNpZmljIGludGVyYWN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwODozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0xfR1BMXFwoZnVzZV9nZXRfZGV2XFwpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvZnVzZS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwODo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTA3NQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDE5MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZVU0UgRGV2aWNlIERyaXZlciBDaGFuZ2VzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIHRyeWluZyB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGNoYW5nZXMuIFRoZSB0aGluZyBpc24mIzM5O3QgYmVpbmcgZXhwb3J0ZWQsIGJ1dCBpdCYjMzk7cyBub3Qgc3RhdGljIGVpdGhlciwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIFRoZW4gSSBzZWUgYGZ1c2VfZ2V0X2RldmAgaXNuJiMzOTt0IHN0YXRpYywgc28gaXQgaGFzIGEgdW5pcXVlIGFkZHJlc3MuIEFuZCBgZnVzZV9kZXZfcmVsZWFzZWAgaXMgbm9uLXN0YXRpYyBhbmQgKmV4cG9ydGVkKiwgd2hpY2ggaXMgYSBrZXkgZGlzdGluY3Rpb24uIGBmdXNlX2Rldl9mbHVzaGAsIGhvd2V2ZXIsIGlzIHN0YXRpYywgd2hpY2ggbGltaXRzIGl0cyBleHRlcm5hbCBpbXBhY3QuCgpHaXZlbiB0aGUgbm9uLXN0YXRpYyBuYXR1cmUgb2YgYGZ1c2VfZ2V0X2RldmAgYW5kIGBmdXNlX2Rldl9yZWxlYXNlYCwgdGhvc2UgYXJlIHRoZSBmdW5jdGlvbnMgdG8gcmVhbGx5IGZvY3VzIG9uLiBUaGUgcGF0Y2ggc2VlbXMgdG8gYmUgbW9kaWZ5aW5nIHRoZW0sIHJpZ2h0PyBBbmQgaXQmIzM5O3MgKmFkZGluZyogYGZ1c2VfZGV2X2ZsdXNoYCwgd2hpY2ggaXMgbGlua2VkIHZpYSBhIGAuZmx1c2hgIG9wZXJhdGlvbi4KCk5vdywgSSBuZWVkIHRvIGNvbnNpZGVyIGFueSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gYEZVU0VfRlNgIGlzIHRoZSBvYnZpb3VzIG9uZSwgc28gSSYjMzk7bGwgY2hlY2sgaWYgYEZVU0VfRlNgIHJlbGllcyBvbiBhbnl0aGluZyBzcGVjaWZpYy4gR290dGEgbWFrZSBzdXJlIHdlIGNvdmVyIGFsbCBiYXNlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEZVU0VfRlMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9mdXNlL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZnVzZS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5mcy9mdXNlL0tjb25maWc6Mjpjb25maWcgRlVTRV9GU1xuZnMvZnVzZS9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtGVVNFIChGaWxlc3lzdGVtIGluIFVzZXJzcGFjZSkgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwODo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTYwMQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgYGNvbmZpZyBGVVNFX0ZTYCBDb250ZXh0KioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IHN1cnJvdW5kaW5nIHRoZSBgY29uZmlnIEZVU0VfRlNgIGRpcmVjdGl2ZS4gSSBuZWVkIHRvIHF1aWNrbHkgZ3Jhc3AgaXRzIGltcGxpY2F0aW9ucyB3aXRoaW4gdGhlIGxhcmdlciBzeXN0ZW0uIElzIHRoaXMgYSBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb24sIGEgYnVpbGQgc3lzdGVtIHNldHRpbmcsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBXaGF0IHByb2plY3Qgb3IgZnJhbWV3b3JrIGFyZSB3ZSBkZWFsaW5nIHdpdGggaGVyZT8gSSYjMzk7bSBhbHJlYWR5IG1lbnRhbGx5IHJ1bm5pbmcgdGhyb3VnaCBwb3RlbnRpYWwgc2NlbmFyaW9zOiBhIGZpbGUgc3lzdGVtIGltcGxlbWVudGF0aW9uLCBwZXJoYXBzIHJlbGF0ZWQgdG8gRlVTRSAoRmlsZXN5c3RlbSBpbiBVc2Vyc3BhY2UpLCBidXQgd2hhdCBzcGVjaWZpYyB1c2UgY2FzZSBpcyBpdCB0YXJnZXRpbmc/IFdoZXJlIGlzIHRoaXMgY29uZmlndXJhdGlvbiBzdHJpbmcgdXNlZCBhbmQgaG93PyBUaGUgZGV2aWwsIGFzIGFsd2F5cywgaXMgaW4gdGhlIGRldGFpbHMsIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgd2l0aCBvdGhlciBjb25maWd1cmF0aW9ucywgZGVwZW5kZW5jaWVzLCBhbmQgc3Vycm91bmRpbmcgY29kZS4gSSBuZWVkIHRoZSBmdWxsIHBpY3R1cmUgdG8gYmUgYWJsZSB0byBhc3Nlc3MgaXRzIGltcGFjdCBwcm9wZXJseS4gTXkgYW5hbHl0aWNhbCBnZWFycyBhcmUgdHVybmluZyBhbHJlYWR5LiBMZXQmIzM5O3MgZ2V0IHRvIHRoZSB0ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwODo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2ZzL2Z1c2UvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBGVVNFX0ZTXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtGVVNFIChGaWxlc3lzdGVtIGluIFVzZXJzcGFjZSkgc3VwcG9ydFwmIzM0O1xuICAgNDpcdFx0c2VsZWN0IEZTX1BPU0lYX0FDTFxuICAgNTpcdFx0c2VsZWN0IEZTX0lPTUFQXG4gICA2Olx0XHRoZWxwXG4gICA3Olx0XHQgIFdpdGggRlVTRSBpdCBpcyBwb3NzaWJsZSB0byBpbXBsZW1lbnQgYSBmdWxseSBmdW5jdGlvbmFsIGZpbGVzeXN0ZW1cbiAgIDg6XHRcdCAgaW4gYSB1c2Vyc3BhY2UgcHJvZ3JhbS5cbiAgIDk6XHRcbiAgMTA6XHRcdCAgVGhlcmUmIzM5O3MgYWxzbyBhIGNvbXBhbmlvbiBsaWJyYXJ5OiBsaWJmdXNlMi4gIFRoaXMgbGlicmFyeSBpcyBhdmFpbGFibGVcbiAgMTE6XHRcdCAgZnJvbSB0aGUgRlVTRSBob21lcGFnZTpcbiAgMTI6XHRcdCAgXHUwMDNjaHR0cHM6Ly9naXRodWIuY29tL2xpYmZ1c2UvXHUwMDNlXG4gIDEzOlx0XHQgIGFsdGhvdWdoIGNoYW5jZXMgYXJlIHlvdXIgZGlzdHJpYnV0aW9uIGFscmVhZHkgaGFzIHRoYXQgbGlicmFyeVxuICAxNDpcdFx0ICBpbnN0YWxsZWQgaWYgeW91JiMzOTt2ZSBpbnN0YWxsZWQgdGhlIFwmIzM0O2Z1c2VcJiMzNDsgcGFja2FnZSBpdHNlbGYuXG4gIDE1Olx0XG4gIDE2Olx0XHQgIFNlZSBcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZnVzZS9mdXNlLnJzdFx1MDAzZSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAgMTc6XHRcdCAgU2VlIFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9DaGFuZ2VzXHUwMDNlIGZvciBuZWVkZWQgbGlicmFyeS91dGlsaXR5IHZlcnNpb24uXG4gIDE4Olx0XG4gIDE5Olx0XHQgIElmIHlvdSB3YW50IHRvIGRldmVsb3AgYSB1c2Vyc3BhY2UgRlMsIG9yIGlmIHlvdSB3YW50IHRvIHVzZVxuICAyMDpcdFx0ICBhIGZpbGVzeXN0ZW0gYmFzZWQgb24gRlVTRSwgYW5zd2VyIFkgb3IgTS5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIxNjQKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA4MjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEZVU0UgRGV2aWNlIERyaXZlciBDaGFuZ2VzIGZvciBGdXp6aW5nKioKCk9rYXksIG5vIGRlcGVuZGVuY2llcywgdGhhdCYjMzk7cyBnb29kLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgcmVsZXZhbnQgc3ltYm9scyBmcm9tIHRoaXMgcGF0Y2ggdG8gZm9jdXMgbXkgZnV6emluZyBlZmZvcnRzLiBMZXQmIzM5O3Mgc3RhcnQgYnkgY2hlY2tpbmcgYGZ1c2VfZGV2X2FsbF9jbG9zaW5nYC4gUmlnaHQsIGl0JiMzOTtzIHN0YXRpYy4gU28sIGJhc2VkIG9uIHRoZSBwcm9tcHQmIzM5O3MgcHJlZmVyZW5jZSBmb3Igbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzLCBgRm9jdXNTeW1ib2xzYCBzaG91bGQgcHJvYmFibHkgaW5jbHVkZSBgZnVzZV9nZXRfZGV2YCBhbmQgYGZ1c2VfZGV2X3JlbGVhc2VgLiBXYWl0IGEgbWludXRlLCBgZnVzZV9kZXZfZmx1c2hgIGlzIGFsc28gaGVyZSwgYW5kIGl0JiMzOTtzIGEgKm5ldyogZnVuY3Rpb24uIFRoZSBwcm9tcHQmIzM5O3MgbGFuZ3VhZ2UgaW1wbGllcyB3ZSBzaG91bGQgYXZvaWQgc3RhdGljICpoZWxwZXIqIGZ1bmN0aW9ucyB0aGF0IGFyZSBpbmxpbmVkLiBCdXQgYGZ1c2VfZGV2X2ZsdXNoYCBpcyBhc3NpZ25lZCB0byBhIGZ1bmN0aW9uIHBvaW50ZXIsIGAuZmx1c2hgLCBpbiBgZnVzZV9kZXZfb3BlcmF0aW9uc2AuIEl04oCZcyBub3QgYW4gaW50ZXJuYWwgaGVscGVyLCBpdCBoYXMgYSBkaXN0aW5jdCBhZGRyZXNzLiBJdCBjYW4mIzM5O3QgYmUgaW5saW5lZC4gU28sIGNhbiB3ZSBhY3R1YWxseSAqaW5jbHVkZSogc3RhdGljIGZ1bmN0aW9ucyB1c2VkIGFzIGZ1bmN0aW9uIHBvaW50ZXJzLCBldmVuIHRob3VnaCB0aGV5ICphcmUqIHN0YXRpYz8gTGV04oCZcyBjaGVjay4gWXVwLCBpdOKAmXMgYmVpbmcgcGFzc2VkIGFzIGEgZnVuY3Rpb24gcG9pbnRlciwgZGVmaW5pdGVseSBub3QgaW5saW5lZC4gT2theSwgc28gdGhhdCBtZWFucyBgZnVzZV9kZXZfZmx1c2hgIGlzIGluIQoKTGV0IG1lIHJldmlldyB0aGUgcGF0Y2guIEl0IG1vZGlmaWVzIGBmdXNlX2dldF9kZXZgLCBgZnVzZV9kZXZfcmVsZWFzZWAsIGBmdXNlX2Rldl9mbHVzaGAsIGFuZCBpbnRyb2R1Y2VzIHRoZSBzdGF0aWMgaGVscGVyIGBmdXNlX2Rldl9hbGxfY2xvc2luZ2AuIFNvLCBgRm9jdXNTeW1ib2xzYDogYGZ1c2VfZ2V0X2RldmAsIGBmdXNlX2Rldl9yZWxlYXNlYCwgYW5kIGBmdXNlX2Rldl9mbHVzaGAuCgpBbHJpZ2h0LCBsZXQmIzM5O3MgdmVyaWZ5LiBgZnVzZV9nZXRfZGV2YCBpcyBkZWNsYXJlZCBpbiBgZnVzZV9kZXZfaS5oYCBhbmQgZGVmaW5lZCBpbiBgZGV2LmNgLCBzbyBpdCYjMzk7cyBub24tc3RhdGljLiBgZnVzZV9kZXZfcmVsZWFzZWAgaXMgZXhwb3J0ZWQgYXMgd2VsbC4gYGZ1c2VfZGV2X2ZsdXNoYCBpcyBzdGF0aWMsIGJ1dCB3ZSYjMzk7dmUgYWxyZWFkeSBjb25maXJtZWQgaXQmIzM5O3MgcmVhY2hhYmxlIGFzIGEgZnVuY3Rpb24gcG9pbnRlci4KCkFueSByZWxldmFudCBjb25maWd1cmF0aW9ucz8gYEZVU0VfRlNgIHNlZW1zIHRvIGJlIHRoZSBvbmx5IG9uZS4KCkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBsZXQmIzM5O3MgY29uZmlybSB0aGUgc3RhdGljIG5hdHVyZSBvZiBgZnVzZV9kZXZfZmx1c2hgOiBZZXAsIGBzdGF0aWMgaW50IGZ1c2VfZGV2X2ZsdXNoKC4uLilgLiBBbmQgYGZ1c2VfZGV2X2FsbF9jbG9zaW5nYDogYHN0YXRpYyBib29sIGZ1c2VfZGV2X2FsbF9jbG9zaW5nKC4uLilgLiBDb25maXJtZWQuCgpUaGVyZWZvcmUsIHRoZSBtYWluIGZ1bmN0aW9ucyB0byBmb2N1cyBvbiBhcmUgYGZ1c2VfZ2V0X2RldmAsIGBmdXNlX2Rldl9yZWxlYXNlYCwgYW5kIGBmdXNlX2Rldl9mbHVzaGAuCgpOb3csIHJlYWNoYWJpbGl0eS4gSXMgYGZ1c2VfZGV2X2ZsdXNoYCBjYWxsZWQ/IEFic29sdXRlbHksIHZpYSBgZmlscF9jbG9zZWAgd2hpY2ggY2FsbHMgdGhlIGBmX29wLSZndDtmbHVzaGAgZnVuY3Rpb24uIGBmdXNlX2Rldl9yZWxlYXNlYD8gWXVwLCB2aWEgYGZwdXRgLCB3aGljaCBjYWxscyBgZl9vcC0mZ3Q7cmVsZWFzZWAuIEFuZCBgZnVzZV9nZXRfZGV2YD8gSXQmIzM5O3MgY2FsbGVkIGZvciByZWFkLCB3cml0ZSwgcG9sbCwgYW5kIG90aGVyIG9wZXJhdGlvbnMgb24gYC9kZXYvZnVzZWAuCgpTbywgdGhlIG92ZXJhbGwgcmVhc29uaW5nIGlzIHRoYXQgdGhpcyBwYXRjaCBjaGFuZ2VzIHRoZSBGVVNFIGRldmljZSBkcml2ZXIgZGlzY29ubmVjdGlvbiBsb2dpYyBmb3IgYC9kZXYvZnVzZWAuIEl0IGFkZHMgYSBgZmx1c2hgIG9wZXJhdGlvbiAoYGZ1c2VfZGV2X2ZsdXNoYCkgZm9yIHRoZSBmaW5hbCBjbG9zZSBhbmQgY2hhbm5lbCBzdGF0ZSB0cmFuc2l0aW9uIHRvIGBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRGAuIEl0IGNoYW5nZXMgYGZ1c2VfZ2V0X2RldmAgYW5kIGBmdXNlX2Rldl9yZWxlYXNlYCB0byBoYW5kbGUgdGhpcyBuZXcgc3RhdGUgYW5kIGFib3J0IHRoZSBjaGFubmVsIGlmIGFsbCBkZXZpY2VzIGFyZSBjbG9zaW5nLiBUaGlzIGlzIGEgY3J1Y2lhbCBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBGVVNFIGRyaXZlciwgYWNjZXNzaWJsZSBmcm9tIHVzZXJzcGFjZSB0aHJvdWdoIGAvZGV2L2Z1c2VgLCBhbmQgdGhlcmVmb3JlIGEgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLgoKRmluYWxseSwgYEZVU0VfRlNgIGlzIHRoZSByZWxldmFudCBjb25maWcuIExldCBtZSBxdWlja2x5IGRvdWJsZS1jaGVjazogeWVwLCB0aGF0IGVuYWJsZXMgdGhlIGNvbXBpbGF0aW9uIG9mIGBkZXYuY2AsIHdoaWNoIGNvbnRhaW5zIHRoZXNlIGZ1bmN0aW9ucy4gVGhhdCYjMzk7cyBpdCEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZnVzZS15LipkZXYubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2Z1c2UvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZnVzZS9NYWtlZmlsZT0xMz1mdXNlLXkgOj0gdHJhY2Uub1x0IyBwdXQgdHJhY2UubyBmaXJzdCBzbyB3ZSBzZWUgZnRyYWNlIGVycm9ycyBzb29uZXJcbmZzL2Z1c2UvTWFrZWZpbGU6MTQ6ZnVzZS15ICYjNDM7PSBkZXYubyBkaXIubyBmaWxlLm8gaW5vZGUubyBjb250cm9sLm8geGF0dHIubyBhY2wubyByZWFkZGlyLm8gaW9jdGwubyByZXFfdGltZW91dC5vIHJlcS5vXG5mcy9mdXNlL01ha2VmaWxlLTE1LWZ1c2UteSAmIzQzOz0gcG9sbC5vIG5vdGlmeS5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzOTEzCgkJCQkJCQlvdXRwdXQ6IDE3MAoJCQkJCQkJdGhvdWdodHM6IDE5MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBGVVNFIERldmljZSBEcml2ZXIgQ2hhbmdlKioKCk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcywgaXQmIzM5O3MgcHJldHR5IGNsZWFyIHRoYXQgYGRldi5vYCBpcyBpbmRlZWQgY29tcGlsZWQgaW50byB0aGUga2VybmVsIHdoZW4gYENPTkZJR19GVVNFX0ZTYCBpcyBlbmFibGVkLiBUaGF0JiMzOTtzIHRoZSBiYXNlbGluZS4KCk15IGltbWVkaWF0ZSB0YWtlYXdheSBpcyB0aGF0IHRoaXMgcGF0Y2ggaXMgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLiBUaGUga2V5IHN5bWJvbHMgdGhhdCBqdW1wIG91dCBhdCBtZSBhcmUgYGZ1c2VfZ2V0X2RldmAsIGBmdXNlX2Rldl9yZWxlYXNlYCwgYW5kIHRoZSBuZXdseSBpbnRyb2R1Y2VkIGBmdXNlX2Rldl9mbHVzaGAuIFRoaXMgaXMgYmVjYXVzZSB0aGUgcGF0Y2ggZnVuZGFtZW50YWxseSBhbHRlcnMgaG93IHRoZSBGVVNFIGRldmljZSBkcml2ZXIsIHNwZWNpZmljYWxseSB0aGUgYC9kZXYvZnVzZWAgaW50ZXJmYWNlLCBoYW5kbGVzIGNoYW5uZWwgZGlzY29ubmVjdGlvbi4KClRoZSBhZGRpdGlvbiBvZiBgZnVzZV9kZXZfZmx1c2hgIGlzIHBhcnRpY3VsYXJseSBpbnRlcmVzdGluZy4gSXQgc3VnZ2VzdHMgYSBtb3JlIHJlZmluZWQgc3RhdGUgbWFuYWdlbWVudCBkdXJpbmcgdGhlIGZpbmFsIGNsb3NlIHNlcXVlbmNlLCBtb3ZpbmcgdGhlIGNoYW5uZWwgaW50byBhIGBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRGAgc3RhdGUuIFRoZSBtb2RpZmljYXRpb25zIHRvIGBmdXNlX2dldF9kZXZgIGFuZCBgZnVzZV9kZXZfcmVsZWFzZWAgdG8gYWNjb21tb2RhdGUgdGhpcyBuZXcgc3RhdGUgYW5kIHBvdGVudGlhbCBhYm9ydCBzY2VuYXJpb3MgaW5kaWNhdGUgc2lnbmlmaWNhbnQgY2hhbmdlcyB0byBjb3JlIGNoYW5uZWwgbWFuYWdlbWVudCBsb2dpYy4KCkVzc2VudGlhbGx5LCB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZGlyZWN0bHkgaW1wYWN0aW5nIHVzZXItc3BhY2UgaW50ZXJhY3Rpb25zIHZpYSBgL2Rldi9mdXNlYCwgbWFraW5nIGl0IGEgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBuZXcgY29kZSBwYXRocyByZWxhdGVkIHRvIGNvbm5lY3Rpb24gbGlmZWN5Y2xlIGFuZCBlcnJvciBoYW5kbGluZywgbWFraW5nIGl0IGEgY3JpdGljYWwgYXJlYSB0byBwcm9iZSBmb3IgdnVsbmVyYWJpbGl0aWVzLgoKSSYjMzk7bSBjb25maWRlbnQgaW4gdGhpcyBhbmFseXNpcy4gSSYjMzk7bSBnb2luZyB0byBjYWxsIGBzZXQtcmVzdWx0c2AgdG8gY29uZmlybSBhbmQgbW92ZSBmb3J3YXJkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwODo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RlVTRV9GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Z1c2VfZ2V0X2RldiYjMzQ7LAogICAgJiMzNDtmdXNlX2Rldl9yZWxlYXNlJiMzNDssCiAgICAmIzM0O2Z1c2VfZGV2X2ZsdXNoJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjaGFubmVsIGRpc2Nvbm5lY3Rpb24gbG9naWMgaW4gdGhlIEZVU0UgZGV2aWNlIGRyaXZlciAoL2Rldi9mdXNlKS4gSXQgaW50cm9kdWNlcyBhIG5ldyBmbHVzaCBvcGVyYXRpb24gKGZ1c2VfZGV2X2ZsdXNoKSB0byBoYW5kbGUgZmluYWwgY2xvc2UgYW5kIHRyYW5zaXRpb24gdGhlIGNoYW5uZWwgc3RhdGUgdG8gRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQuIEl0IGFsc28gbW9kaWZpZXMgZnVzZV9nZXRfZGV2IGFuZCBmdXNlX2Rldl9yZWxlYXNlIHRvIGhhbmRsZSB0aGlzIG5ldyBzdGF0ZSBhbmQgYWJvcnQgdGhlIGNoYW5uZWwgaWYgYWxsIGRldmljZXMgYXJlIGNsb3NpbmcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBGVVNFIGRyaXZlciwgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSAvZGV2L2Z1c2Ugb3BlcmF0aW9ucywgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0ZVU0VfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtmdXNlX2dldF9kZXYmIzM0OywKICAgICYjMzQ7ZnVzZV9kZXZfcmVsZWFzZSYjMzQ7LAogICAgJiMzNDtmdXNlX2Rldl9mbHVzaCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY2hhbm5lbCBkaXNjb25uZWN0aW9uIGxvZ2ljIGluIHRoZSBGVVNFIGRldmljZSBkcml2ZXIgKC9kZXYvZnVzZSkuIEl0IGludHJvZHVjZXMgYSBuZXcgZmx1c2ggb3BlcmF0aW9uIChmdXNlX2Rldl9mbHVzaCkgdG8gaGFuZGxlIGZpbmFsIGNsb3NlIGFuZCB0cmFuc2l0aW9uIHRoZSBjaGFubmVsIHN0YXRlIHRvIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVELiBJdCBhbHNvIG1vZGlmaWVzIGZ1c2VfZ2V0X2RldiBhbmQgZnVzZV9kZXZfcmVsZWFzZSB0byBoYW5kbGUgdGhpcyBuZXcgc3RhdGUgYW5kIGFib3J0IHRoZSBjaGFubmVsIGlmIGFsbCBkZXZpY2VzIGFyZSBjbG9zaW5nLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgRlVTRSBkcml2ZXIsIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgL2Rldi9mdXNlIG9wZXJhdGlvbnMsIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjVUMDg6Mzk6MjUuNTQ3OTA3MTIxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTk4NjExMDY4MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRlVTRV9GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImZ1c2VfZ2V0X2RldlwiLFxuICAgIFwiZnVzZV9kZXZfcmVsZWFzZVwiLFxuICAgIFwiZnVzZV9kZXZfZmx1c2hcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY2hhbm5lbCBkaXNjb25uZWN0aW9uIGxvZ2ljIGluIHRoZSBGVVNFIGRldmljZSBkcml2ZXIgKC9kZXYvZnVzZSkuIEl0IGludHJvZHVjZXMgYSBuZXcgZmx1c2ggb3BlcmF0aW9uIChmdXNlX2Rldl9mbHVzaCkgdG8gaGFuZGxlIGZpbmFsIGNsb3NlIGFuZCB0cmFuc2l0aW9uIHRoZSBjaGFubmVsIHN0YXRlIHRvIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVELiBJdCBhbHNvIG1vZGlmaWVzIGZ1c2VfZ2V0X2RldiBhbmQgZnVzZV9kZXZfcmVsZWFzZSB0byBoYW5kbGUgdGhpcyBuZXcgc3RhdGUgYW5kIGFib3J0IHRoZSBjaGFubmVsIGlmIGFsbCBkZXZpY2VzIGFyZSBjbG9zaW5nLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgRlVTRSBkcml2ZXIsIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgL2Rldi9mdXNlIG9wZXJhdGlvbnMsIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwODozOToyNS41NDc5MTc4NTFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg0MzczNTIyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGI5OGFhOWQ5YzIxMjg1MWU3YzY5OWY3ZTU0MGVmZTkyMjMwMDMxYmRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBKdWwgMjUgMDg6Mzk6MjIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZnMvZnVzZS9kZXYuYyBiL2ZzL2Z1c2UvZGV2LmNcXG5pbmRleCA1NzYzYTdjZDNiMzdmYS4uOGIxNGM3ZDU3YTAxMTkgMTAwNjQ0XFxuLS0tIGEvZnMvZnVzZS9kZXYuY1xcbisrKyBiL2ZzL2Z1c2UvZGV2LmNcXG5AQCAtMTY2MiwxOCArMTY2MiwyMyBAQCBzdGF0aWMgaW50IGZ1c2VfZGV2X29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXFxuIHN0cnVjdCBmdXNlX2RldiAqZnVzZV9nZXRfZGV2KHN0cnVjdCBmaWxlICpmaWxlKVxcbiB7XFxuIFxcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9maWxlX3RvX2Z1ZChmaWxlKTtcXG4rXFx0c3RydWN0IGZ1c2VfY2hhbiAqZmNoID0gZnVzZV9kZXZfY2hhbl9nZXQoZnVkKTtcXG4gXFx0aW50IGVycjtcXG4gXFxuLVxcdGlmICh1bmxpa2VseSghZnVzZV9kZXZfY2hhbl9nZXQoZnVkKSkpIHtcXG4rXFx0aWYgKHVubGlrZWx5KCFmY2gpKSB7XFxuIFxcdFxcdC8qIG9ubHkgYmxvY2sgd2FpdGluZyBmb3IgbW91bnQgaWYgc3luYyBpbml0IHdhcyByZXF1ZXN0ZWQgKi9cXG4gXFx0XFx0aWYgKCFmdWQtXFx1MDAzZXN5bmNfaW5pdClcXG4gXFx0XFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVQRVJNKTtcXG4gXFxuLVxcdFxcdGVyciA9IHdhaXRfZXZlbnRfaW50ZXJydXB0aWJsZShmdXNlX2Rldl93YWl0cSwgZnVzZV9kZXZfY2hhbl9nZXQoZnVkKSAhPSBOVUxMKTtcXG4rXFx0XFx0ZXJyID0gd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlKGZ1c2VfZGV2X3dhaXRxLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgICAgKGZjaCA9IGZ1c2VfZGV2X2NoYW5fZ2V0KGZ1ZCkpICE9IE5VTEwpO1xcbiBcXHRcXHRpZiAoZXJyKVxcbiBcXHRcXHRcXHRyZXR1cm4gRVJSX1BUUihlcnIpO1xcbiBcXHR9XFxuIFxcbitcXHRpZiAodW5saWtlbHkoZmNoID09IEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEKSlcXG4rXFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVQRVJNKTtcXG4rXFxuIFxcdHJldHVybiBmdWQ7XFxuIH1cXG4gXFxuQEAgLTIyMTEsMTcgKzIyMTYsMzEgQEAgdm9pZCBmdXNlX2NoYW5fd2FpdF9hYm9ydGVkKHN0cnVjdCBmdXNlX2NoYW4gKmZjaClcXG4gXFx0ZnVzZV91cmluZ193YWl0X3N0b3BwZWRfcXVldWVzKGZjaCk7XFxuIH1cXG4gXFxuK3N0YXRpYyBib29sIGZ1c2VfZGV2X2FsbF9jbG9zaW5nKHN0cnVjdCBmdXNlX2NoYW4gKmZjaClcXG4re1xcbitcXHRzdHJ1Y3QgZnVzZV9kZXYgKnBvcztcXG4rXFxuK1xcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXFx1MDAyNmZjaC1cXHUwMDNlbG9jayk7XFxuK1xcbitcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHBvcywgXFx1MDAyNmZjaC1cXHUwMDNlZGV2aWNlcywgZW50cnkpIHtcXG4rXFx0XFx0aWYgKCFwb3MtXFx1MDAzZWNsb3NpbmcpXFxuK1xcdFxcdFxcdHJldHVybiBmYWxzZTtcXG4rXFx0fVxcbitcXHRyZXR1cm4gdHJ1ZTtcXG4rfVxcbitcXG4gaW50IGZ1c2VfZGV2X3JlbGVhc2Uoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXFxuIHtcXG4gXFx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBmdXNlX2ZpbGVfdG9fZnVkKGZpbGUpO1xcbiBcXHQvKiBQYWlycyB3aXRoIGNtcHhjaGcoKSBpbiBmdXNlX2Rldl9pbnN0YWxsKCkgKi9cXG4gXFx0c3RydWN0IGZ1c2VfY2hhbiAqZmNoID0geGNoZyhcXHUwMDI2ZnVkLVxcdTAwM2VjaGFuLCBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCk7XFxuIFxcbi1cXHRpZiAoZmNoKSB7XFxuK1xcdGlmIChmY2ggXFx1MDAyNlxcdTAwMjYgZmNoICE9IEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEKSB7XFxuIFxcdFxcdHN0cnVjdCBmdXNlX3BxdWV1ZSAqZnBxID0gXFx1MDAyNmZ1ZC1cXHUwMDNlcHE7XFxuIFxcdFxcdExJU1RfSEVBRCh0b19lbmQpO1xcbiBcXHRcXHR1bnNpZ25lZCBpbnQgaTtcXG4gXFx0XFx0Ym9vbCBsYXN0O1xcbitcXHRcXHRib29sIGFib3J0O1xcbiBcXG4gXFx0XFx0LyogTWFrZSBzdXJlIGZ1c2VfZGV2X2luc3RhbGxfd2l0aF9wcSgpIGhhcyBmaW5pc2hlZCAqL1xcbiBcXHRcXHRzcGluX2xvY2soXFx1MDAyNmZjaC1cXHUwMDNlbG9jayk7XFxuQEAgLTIyMzQsMTQgKzIyNTMsMTUgQEAgaW50IGZ1c2VfZGV2X3JlbGVhc2Uoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXFxuIFxcdFxcdGxpc3RfZGVsKFxcdTAwMjZmdWQtXFx1MDAzZWVudHJ5KTtcXG4gXFx0XFx0LyogQXJlIHdlIHRoZSBsYXN0IG9wZW4gZGV2aWNlPyAqL1xcbiBcXHRcXHRsYXN0ID0gbGlzdF9lbXB0eShcXHUwMDI2ZmNoLVxcdTAwM2VkZXZpY2VzKTtcXG4rXFx0XFx0YWJvcnQgPSBmY2gtXFx1MDAzZWNvbm5lY3RlZCBcXHUwMDI2XFx1MDAyNiBmdXNlX2Rldl9hbGxfY2xvc2luZyhmY2gpO1xcbiBcXHRcXHRzcGluX3VubG9jayhcXHUwMDI2ZmNoLVxcdTAwM2Vsb2NrKTtcXG4gXFxuIFxcdFxcdGZ1c2VfZGV2X2VuZF9yZXF1ZXN0cyhcXHUwMDI2dG9fZW5kKTtcXG4gXFxuLVxcdFxcdGlmIChsYXN0KSB7XFxuK1xcdFxcdGlmIChsYXN0KVxcbiBcXHRcXHRcXHRXQVJOX09OKGZjaC1cXHUwMDNlaXEuZmFzeW5jICE9IE5VTEwpO1xcbitcXHRcXHRpZiAoYWJvcnQpXFxuIFxcdFxcdFxcdGZ1c2VfY2hhbl9hYm9ydChmY2gsIGZhbHNlKTtcXG4tXFx0XFx0fVxcbiBcXHRcXHRmdXNlX2Nvbm5fcHV0KGZjaC1cXHUwMDNlY29ubik7XFxuIFxcdH1cXG4gXFx0ZnVzZV9kZXZfcHV0KGZ1ZCk7XFxuQEAgLTIzNzUsNiArMjM5NSwzNCBAQCBzdGF0aWMgdm9pZCBmdXNlX2Rldl9zaG93X2ZkaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgc3RydWN0IGZpbGUgKmZpbGUpXFxuIH1cXG4gI2VuZGlmXFxuIFxcbitzdGF0aWMgaW50IGZ1c2VfZGV2X2ZsdXNoKHN0cnVjdCBmaWxlICpmaWxlLCBmbF9vd25lcl90IGlkKVxcbit7XFxuK1xcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9maWxlX3RvX2Z1ZChmaWxlKTtcXG4rXFx0c3RydWN0IGZ1c2VfY2hhbiAqZmNoO1xcbitcXHRib29sIGFib3J0O1xcbitcXG4rXFx0aWYgKGZpbGVfY291bnQoZmlsZSkgIT0gMSlcXG4rXFx0XFx0cmV0dXJuIDA7XFxuK1xcbitcXHQvKlxcbitcXHQgKiBBdG9taWNhbGx5IHRyYW5zaXRpb24gZnVkLVxcdTAwM2VjaGFuIGZyb20gTlVMTCB0byBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRFxcbitcXHQgKiBvbiBmaW5hbCBjbG9zZSB0byBwcmV2ZW50IGEgbGF0ZXIgZnVzZV9kZXZfaW5zdGFsbCgpIGZyb20gc3VjY2VlZGluZy5cXG4rXFx0ICovXFxuK1xcdGZjaCA9IGNtcHhjaGcoXFx1MDAyNmZ1ZC1cXHUwMDNlY2hhbiwgTlVMTCwgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQpO1xcbitcXHRpZiAoIWZjaCB8fCBmY2ggPT0gRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQpXFxuK1xcdFxcdHJldHVybiAwO1xcbitcXG4rXFx0c3Bpbl9sb2NrKFxcdTAwMjZmY2gtXFx1MDAzZWxvY2spO1xcbitcXHRmdWQtXFx1MDAzZWNsb3NpbmcgPSB0cnVlO1xcbitcXHRhYm9ydCA9IGZjaC1cXHUwMDNlY29ubmVjdGVkIFxcdTAwMjZcXHUwMDI2IGZ1c2VfZGV2X2FsbF9jbG9zaW5nKGZjaCk7XFxuK1xcdHNwaW5fdW5sb2NrKFxcdTAwMjZmY2gtXFx1MDAzZWxvY2spO1xcbitcXG4rXFx0aWYgKGFib3J0KVxcbitcXHRcXHRmdXNlX2NoYW5fYWJvcnQoZmNoLCBmYWxzZSk7XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4gY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmdXNlX2Rldl9vcGVyYXRpb25zID0ge1xcbiBcXHQub3duZXJcXHRcXHQ9IFRISVNfTU9EVUxFLFxcbiBcXHQub3BlblxcdFxcdD0gZnVzZV9kZXZfb3BlbixcXG5AQCAtMjM4Myw2ICsyNDMxLDcgQEAgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmdXNlX2Rldl9vcGVyYXRpb25zID0ge1xcbiBcXHQud3JpdGVfaXRlclxcdD0gZnVzZV9kZXZfd3JpdGUsXFxuIFxcdC5zcGxpY2Vfd3JpdGVcXHQ9IGZ1c2VfZGV2X3NwbGljZV93cml0ZSxcXG4gXFx0LnBvbGxcXHRcXHQ9IGZ1c2VfZGV2X3BvbGwsXFxuK1xcdC5mbHVzaFxcdFxcdD0gZnVzZV9kZXZfZmx1c2gsXFxuIFxcdC5yZWxlYXNlXFx0PSBmdXNlX2Rldl9yZWxlYXNlLFxcbiBcXHQuZmFzeW5jXFx0XFx0PSBmdXNlX2Rldl9mYXN5bmMsXFxuIFxcdC51bmxvY2tlZF9pb2N0bCA9IGZ1c2VfZGV2X2lvY3RsLFxcbmRpZmYgLS1naXQgYS9mcy9mdXNlL2Z1c2VfZGV2X2kuaCBiL2ZzL2Z1c2UvZnVzZV9kZXZfaS5oXFxuaW5kZXggNjY4YzgzOTFkNjFjMDMuLjI4MzNhMDM1MGM0MzVhIDEwMDY0NFxcbi0tLSBhL2ZzL2Z1c2UvZnVzZV9kZXZfaS5oXFxuKysrIGIvZnMvZnVzZS9mdXNlX2Rldl9pLmhcXG5AQCAtMzAyLDYgKzMwMiw5IEBAIHN0cnVjdCBmdXNlX2RldiB7XFxuIFxcdC8qKiBAc3luY19pbml0OiBJc3N1ZSBGVVNFX0lOSVQgc3luY2hyb25vdXNseSAqL1xcbiBcXHRib29sIHN5bmNfaW5pdDtcXG4gXFxuK1xcdC8qKiBAY2xvc2luZzogRmluYWwgY2xvc2UgaGFzIHN0YXJ0ZWQsIHByb3RlY3RlZCBieSBjaGFuLVxcdTAwM2Vsb2NrICovXFxuK1xcdGJvb2wgY2xvc2luZztcXG4rXFxuIFxcdC8qKiBAY2hhbjogRnVzZSBjaGFubmVsIGZvciB0aGlzIGRldmljZSAqL1xcbiBcXHRzdHJ1Y3QgZnVzZV9jaGFuICpjaGFuO1xcbiBcXG5AQCAtMzMwLDE3ICszMzMsMjUgQEAgc3RydWN0IGZ1c2VfY29weV9zdGF0ZSB7XFxuIFxcdH0gcmluZztcXG4gfTtcXG4gXFxuLS8qIGZ1ZC1cXHUwMDNlY2hhbiBnZXRzIGFzc2lnbmVkIHRvIHRoaXMgdmFsdWUgd2hlbiAvZGV2L2Z1c2UgaXMgY2xvc2VkICovXFxuLSNkZWZpbmUgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQgKChzdHJ1Y3QgZnVzZV9jaGFuICopIDEpXFxuLVxcbiAvKlxcbi0gKiBMb2NrbGVzcyBhY2Nlc3MgaXMgT0ssIGJlY2F1c2UgZnVkLVxcdTAwM2VjaGFuIGlzIHNldCBvbmNlIGR1cmluZyBtb3VudCBhbmQgaXMgdmFsaWRcXG4tICogdW50aWwgdGhlIGZpbGUgaXMgcmVsZWFzZWQuXFxuKyAqIGZ1ZC1cXHUwMDNlY2hhbiBoYXMgdGhlIGZvbGxvd2luZyBtb25vdG9uaWMgc3RhdGUgdHJhbnNpdGlvbnM6XFxuKyAqXFxuKyAqIE5VTEwgLVxcdTAwM2UgdmFsaWQgY2hhbm5lbCAtXFx1MDAzZSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRFxcbisgKiBOVUxMIC0tLS0tLS0tLS0tLS0tLS0tXFx1MDAzZSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRFxcbiAgKlxcbi0gKiBmdWQtXFx1MDAzZWNoYW4gaXMgc2V0IHRvIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEIG9ubHkgYWZ0ZXIgdGhlIGNvbnRhaW5pbmcgZmlsZSBpc1xcbi0gKiByZWxlYXNlZCwgc28gcmVzdWx0IGlzIHNhZmUgdG8gZGVyZWZlcmVuY2UgaW4gbW9zdCBjYXNlcy4gIEV4Y2VwdGlvbnMgYXJlOlxcbi0gKiBmdXNlX2Rldl9wdXQoKSBhbmQgZnVzZV9maWxsX3N1cGVyX2NvbW1vbigpLlxcbisgKiBBIHZhbGlkIGNoYW5uZWwgcG9pbnRlciByZW1haW5zIHZhbGlkIHVudGlsIHRoZSBmaWxlIGlzIHJlbGVhc2VkLiBGaW5hbFxcbisgKiBmbHVzaCBjYW4gaW5zdGFsbCBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCBkaXJlY3RseSBmb3IgYW4gdW5pbnN0YWxsZWRcXG4rICogZGV2aWNlLCBwcmV2ZW50aW5nIGFueSBsYXRlciBjaGFubmVsIGluc3RhbGxhdGlvbi4gVGhlIHNlbnRpbmVsIHRoZXJlZm9yZVxcbisgKiBtZWFucyB0aGF0IHRoZSBjaGFubmVsIGNhbiBubyBsb25nZXIgYmUgaW5zdGFsbGVkIG9yIGFjY2Vzc2VkIHRocm91Z2ggdGhpc1xcbisgKiBmaWxlOyBpdCBkb2VzIG5vdCBpbXBseSB0aGF0IHJlbGVhc2UgaGFzIGFscmVhZHkgcnVuIGFuZCBpdCBtdXN0IG5ldmVyIGJlXFxuKyAqIGRlcmVmZXJlbmNlZC5cXG4rICpcXG4rICogZnVzZV9kZXZfY2hhbl9nZXQoKSByZWFkcyB0aGlzIHN0YXRlIGxvY2tsZXNzbHkuIENhbGxlcnMgbXVzdCBkaXN0aW5ndWlzaFxcbisgKiBOVUxMLCBhIHZhbGlkIGNoYW5uZWwgcG9pbnRlciwgYW5kIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEIGJlZm9yZVxcbisgKiBkZXJlZmVyZW5jaW5nIHRoZSByZXN1bHQuXFxuICAqL1xcbisjZGVmaW5lIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEICgoc3RydWN0IGZ1c2VfY2hhbiAqKSAxKVxcbitcXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgZnVzZV9jaGFuICpmdXNlX2Rldl9jaGFuX2dldChzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZClcXG4ge1xcbiBcXHQvKiBQYWlycyB3aXRoIHhjaGcoKSBpbiBmdXNlX2Rldl9pbnN0YWxsKCkgKi9cXG5AQCAtMzU1LDggKzM2Niw5IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGZ1c2VfZGV2ICpmdXNlX2ZpbGVfdG9fZnVkKHN0cnVjdCBmaWxlICpmaWxlKVxcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCBmdXNlX2RldiAqX19mdXNlX2dldF9kZXYoc3RydWN0IGZpbGUgKmZpbGUpXFxuIHtcXG4gXFx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBmdXNlX2ZpbGVfdG9fZnVkKGZpbGUpO1xcbitcXHRzdHJ1Y3QgZnVzZV9jaGFuICpmY2ggPSBmdXNlX2Rldl9jaGFuX2dldChmdWQpO1xcbiBcXG4tXFx0aWYgKCFmdXNlX2Rldl9jaGFuX2dldChmdWQpKVxcbitcXHRpZiAoIWZjaCB8fCBmY2ggPT0gRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQpXFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbiBcXG4gXFx0cmV0dXJuIGZ1ZDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDg6Mzk6MjYuMzkyNTM4MjU3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NTkwMTY0NjEzMjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRlVTRV9GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImZ1c2VfZ2V0X2RldlwiLFxuICAgIFwiZnVzZV9kZXZfcmVsZWFzZVwiLFxuICAgIFwiZnVzZV9kZXZfZmx1c2hcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY2hhbm5lbCBkaXNjb25uZWN0aW9uIGxvZ2ljIGluIHRoZSBGVVNFIGRldmljZSBkcml2ZXIgKC9kZXYvZnVzZSkuIEl0IGludHJvZHVjZXMgYSBuZXcgZmx1c2ggb3BlcmF0aW9uIChmdXNlX2Rldl9mbHVzaCkgdG8gaGFuZGxlIGZpbmFsIGNsb3NlIGFuZCB0cmFuc2l0aW9uIHRoZSBjaGFubmVsIHN0YXRlIHRvIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVELiBJdCBhbHNvIG1vZGlmaWVzIGZ1c2VfZ2V0X2RldiBhbmQgZnVzZV9kZXZfcmVsZWFzZSB0byBoYW5kbGUgdGhpcyBuZXcgc3RhdGUgYW5kIGFib3J0IHRoZSBjaGFubmVsIGlmIGFsbCBkZXZpY2VzIGFyZSBjbG9zaW5nLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgRlVTRSBkcml2ZXIsIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgL2Rldi9mdXNlIG9wZXJhdGlvbnMsIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBiOThhYTlkOWMyMTI4NTFlN2M2OTlmN2U1NDBlZmU5MjIzMDAzMWJkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBKdWwgMjUgMDg6Mzk6MjIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9mdXNlL2Rldi5jIGIvZnMvZnVzZS9kZXYuY1xuaW5kZXggNTc2M2E3Y2QzYjM3ZmEuLjhiMTRjN2Q1N2EwMTE5IDEwMDY0NFxuLS0tIGEvZnMvZnVzZS9kZXYuY1xuKysrIGIvZnMvZnVzZS9kZXYuY1xuQEAgLTE2NjIsMTggKzE2NjIsMjMgQEAgc3RhdGljIGludCBmdXNlX2Rldl9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxuIHN0cnVjdCBmdXNlX2RldiAqZnVzZV9nZXRfZGV2KHN0cnVjdCBmaWxlICpmaWxlKVxuIHtcbiBcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9maWxlX3RvX2Z1ZChmaWxlKTtcbitcdHN0cnVjdCBmdXNlX2NoYW4gKmZjaCA9IGZ1c2VfZGV2X2NoYW5fZ2V0KGZ1ZCk7XG4gXHRpbnQgZXJyO1xuIFxuLVx0aWYgKHVubGlrZWx5KCFmdXNlX2Rldl9jaGFuX2dldChmdWQpKSkge1xuK1x0aWYgKHVubGlrZWx5KCFmY2gpKSB7XG4gXHRcdC8qIG9ubHkgYmxvY2sgd2FpdGluZyBmb3IgbW91bnQgaWYgc3luYyBpbml0IHdhcyByZXF1ZXN0ZWQgKi9cbiBcdFx0aWYgKCFmdWQtXHUwMDNlc3luY19pbml0KVxuIFx0XHRcdHJldHVybiBFUlJfUFRSKC1FUEVSTSk7XG4gXG4tXHRcdGVyciA9IHdhaXRfZXZlbnRfaW50ZXJydXB0aWJsZShmdXNlX2Rldl93YWl0cSwgZnVzZV9kZXZfY2hhbl9nZXQoZnVkKSAhPSBOVUxMKTtcbitcdFx0ZXJyID0gd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlKGZ1c2VfZGV2X3dhaXRxLFxuK1x0XHRcdFx0XHQgICAgICAgKGZjaCA9IGZ1c2VfZGV2X2NoYW5fZ2V0KGZ1ZCkpICE9IE5VTEwpO1xuIFx0XHRpZiAoZXJyKVxuIFx0XHRcdHJldHVybiBFUlJfUFRSKGVycik7XG4gXHR9XG4gXG4rXHRpZiAodW5saWtlbHkoZmNoID09IEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEKSlcbitcdFx0cmV0dXJuIEVSUl9QVFIoLUVQRVJNKTtcbitcbiBcdHJldHVybiBmdWQ7XG4gfVxuIFxuQEAgLTIyMTEsMTcgKzIyMTYsMzEgQEAgdm9pZCBmdXNlX2NoYW5fd2FpdF9hYm9ydGVkKHN0cnVjdCBmdXNlX2NoYW4gKmZjaClcbiBcdGZ1c2VfdXJpbmdfd2FpdF9zdG9wcGVkX3F1ZXVlcyhmY2gpO1xuIH1cbiBcbitzdGF0aWMgYm9vbCBmdXNlX2Rldl9hbGxfY2xvc2luZyhzdHJ1Y3QgZnVzZV9jaGFuICpmY2gpXG4re1xuK1x0c3RydWN0IGZ1c2VfZGV2ICpwb3M7XG4rXG4rXHRsb2NrZGVwX2Fzc2VydF9oZWxkKFx1MDAyNmZjaC1cdTAwM2Vsb2NrKTtcbitcbitcdGxpc3RfZm9yX2VhY2hfZW50cnkocG9zLCBcdTAwMjZmY2gtXHUwMDNlZGV2aWNlcywgZW50cnkpIHtcbitcdFx0aWYgKCFwb3MtXHUwMDNlY2xvc2luZylcbitcdFx0XHRyZXR1cm4gZmFsc2U7XG4rXHR9XG4rXHRyZXR1cm4gdHJ1ZTtcbit9XG4rXG4gaW50IGZ1c2VfZGV2X3JlbGVhc2Uoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXG4ge1xuIFx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBmdXNlX2ZpbGVfdG9fZnVkKGZpbGUpO1xuIFx0LyogUGFpcnMgd2l0aCBjbXB4Y2hnKCkgaW4gZnVzZV9kZXZfaW5zdGFsbCgpICovXG4gXHRzdHJ1Y3QgZnVzZV9jaGFuICpmY2ggPSB4Y2hnKFx1MDAyNmZ1ZC1cdTAwM2VjaGFuLCBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCk7XG4gXG4tXHRpZiAoZmNoKSB7XG4rXHRpZiAoZmNoIFx1MDAyNlx1MDAyNiBmY2ggIT0gRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQpIHtcbiBcdFx0c3RydWN0IGZ1c2VfcHF1ZXVlICpmcHEgPSBcdTAwMjZmdWQtXHUwMDNlcHE7XG4gXHRcdExJU1RfSEVBRCh0b19lbmQpO1xuIFx0XHR1bnNpZ25lZCBpbnQgaTtcbiBcdFx0Ym9vbCBsYXN0O1xuK1x0XHRib29sIGFib3J0O1xuIFxuIFx0XHQvKiBNYWtlIHN1cmUgZnVzZV9kZXZfaW5zdGFsbF93aXRoX3BxKCkgaGFzIGZpbmlzaGVkICovXG4gXHRcdHNwaW5fbG9jayhcdTAwMjZmY2gtXHUwMDNlbG9jayk7XG5AQCAtMjIzNCwxNCArMjI1MywxNSBAQCBpbnQgZnVzZV9kZXZfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbiBcdFx0bGlzdF9kZWwoXHUwMDI2ZnVkLVx1MDAzZWVudHJ5KTtcbiBcdFx0LyogQXJlIHdlIHRoZSBsYXN0IG9wZW4gZGV2aWNlPyAqL1xuIFx0XHRsYXN0ID0gbGlzdF9lbXB0eShcdTAwMjZmY2gtXHUwMDNlZGV2aWNlcyk7XG4rXHRcdGFib3J0ID0gZmNoLVx1MDAzZWNvbm5lY3RlZCBcdTAwMjZcdTAwMjYgZnVzZV9kZXZfYWxsX2Nsb3NpbmcoZmNoKTtcbiBcdFx0c3Bpbl91bmxvY2soXHUwMDI2ZmNoLVx1MDAzZWxvY2spO1xuIFxuIFx0XHRmdXNlX2Rldl9lbmRfcmVxdWVzdHMoXHUwMDI2dG9fZW5kKTtcbiBcbi1cdFx0aWYgKGxhc3QpIHtcbitcdFx0aWYgKGxhc3QpXG4gXHRcdFx0V0FSTl9PTihmY2gtXHUwMDNlaXEuZmFzeW5jICE9IE5VTEwpO1xuK1x0XHRpZiAoYWJvcnQpXG4gXHRcdFx0ZnVzZV9jaGFuX2Fib3J0KGZjaCwgZmFsc2UpO1xuLVx0XHR9XG4gXHRcdGZ1c2VfY29ubl9wdXQoZmNoLVx1MDAzZWNvbm4pO1xuIFx0fVxuIFx0ZnVzZV9kZXZfcHV0KGZ1ZCk7XG5AQCAtMjM3NSw2ICsyMzk1LDM0IEBAIHN0YXRpYyB2b2lkIGZ1c2VfZGV2X3Nob3dfZmRpbmZvKHN0cnVjdCBzZXFfZmlsZSAqc2VxLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbiB9XG4gI2VuZGlmXG4gXG4rc3RhdGljIGludCBmdXNlX2Rldl9mbHVzaChzdHJ1Y3QgZmlsZSAqZmlsZSwgZmxfb3duZXJfdCBpZClcbit7XG4rXHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IGZ1c2VfZmlsZV90b19mdWQoZmlsZSk7XG4rXHRzdHJ1Y3QgZnVzZV9jaGFuICpmY2g7XG4rXHRib29sIGFib3J0O1xuK1xuK1x0aWYgKGZpbGVfY291bnQoZmlsZSkgIT0gMSlcbitcdFx0cmV0dXJuIDA7XG4rXG4rXHQvKlxuK1x0ICogQXRvbWljYWxseSB0cmFuc2l0aW9uIGZ1ZC1cdTAwM2VjaGFuIGZyb20gTlVMTCB0byBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRFxuK1x0ICogb24gZmluYWwgY2xvc2UgdG8gcHJldmVudCBhIGxhdGVyIGZ1c2VfZGV2X2luc3RhbGwoKSBmcm9tIHN1Y2NlZWRpbmcuXG4rXHQgKi9cbitcdGZjaCA9IGNtcHhjaGcoXHUwMDI2ZnVkLVx1MDAzZWNoYW4sIE5VTEwsIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEKTtcbitcdGlmICghZmNoIHx8IGZjaCA9PSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRClcbitcdFx0cmV0dXJuIDA7XG4rXG4rXHRzcGluX2xvY2soXHUwMDI2ZmNoLVx1MDAzZWxvY2spO1xuK1x0ZnVkLVx1MDAzZWNsb3NpbmcgPSB0cnVlO1xuK1x0YWJvcnQgPSBmY2gtXHUwMDNlY29ubmVjdGVkIFx1MDAyNlx1MDAyNiBmdXNlX2Rldl9hbGxfY2xvc2luZyhmY2gpO1xuK1x0c3Bpbl91bmxvY2soXHUwMDI2ZmNoLVx1MDAzZWxvY2spO1xuK1xuK1x0aWYgKGFib3J0KVxuK1x0XHRmdXNlX2NoYW5fYWJvcnQoZmNoLCBmYWxzZSk7XG4rXG4rXHRyZXR1cm4gMDtcbit9XG4rXG4gY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmdXNlX2Rldl9vcGVyYXRpb25zID0ge1xuIFx0Lm93bmVyXHRcdD0gVEhJU19NT0RVTEUsXG4gXHQub3Blblx0XHQ9IGZ1c2VfZGV2X29wZW4sXG5AQCAtMjM4Myw2ICsyNDMxLDcgQEAgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmdXNlX2Rldl9vcGVyYXRpb25zID0ge1xuIFx0LndyaXRlX2l0ZXJcdD0gZnVzZV9kZXZfd3JpdGUsXG4gXHQuc3BsaWNlX3dyaXRlXHQ9IGZ1c2VfZGV2X3NwbGljZV93cml0ZSxcbiBcdC5wb2xsXHRcdD0gZnVzZV9kZXZfcG9sbCxcbitcdC5mbHVzaFx0XHQ9IGZ1c2VfZGV2X2ZsdXNoLFxuIFx0LnJlbGVhc2VcdD0gZnVzZV9kZXZfcmVsZWFzZSxcbiBcdC5mYXN5bmNcdFx0PSBmdXNlX2Rldl9mYXN5bmMsXG4gXHQudW5sb2NrZWRfaW9jdGwgPSBmdXNlX2Rldl9pb2N0bCxcbmRpZmYgLS1naXQgYS9mcy9mdXNlL2Z1c2VfZGV2X2kuaCBiL2ZzL2Z1c2UvZnVzZV9kZXZfaS5oXG5pbmRleCA2NjhjODM5MWQ2MWMwMy4uMjgzM2EwMzUwYzQzNWEgMTAwNjQ0XG4tLS0gYS9mcy9mdXNlL2Z1c2VfZGV2X2kuaFxuKysrIGIvZnMvZnVzZS9mdXNlX2Rldl9pLmhcbkBAIC0zMDIsNiArMzAyLDkgQEAgc3RydWN0IGZ1c2VfZGV2IHtcbiBcdC8qKiBAc3luY19pbml0OiBJc3N1ZSBGVVNFX0lOSVQgc3luY2hyb25vdXNseSAqL1xuIFx0Ym9vbCBzeW5jX2luaXQ7XG4gXG4rXHQvKiogQGNsb3Npbmc6IEZpbmFsIGNsb3NlIGhhcyBzdGFydGVkLCBwcm90ZWN0ZWQgYnkgY2hhbi1cdTAwM2Vsb2NrICovXG4rXHRib29sIGNsb3Npbmc7XG4rXG4gXHQvKiogQGNoYW46IEZ1c2UgY2hhbm5lbCBmb3IgdGhpcyBkZXZpY2UgKi9cbiBcdHN0cnVjdCBmdXNlX2NoYW4gKmNoYW47XG4gXG5AQCAtMzMwLDE3ICszMzMsMjUgQEAgc3RydWN0IGZ1c2VfY29weV9zdGF0ZSB7XG4gXHR9IHJpbmc7XG4gfTtcbiBcbi0vKiBmdWQtXHUwMDNlY2hhbiBnZXRzIGFzc2lnbmVkIHRvIHRoaXMgdmFsdWUgd2hlbiAvZGV2L2Z1c2UgaXMgY2xvc2VkICovXG4tI2RlZmluZSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCAoKHN0cnVjdCBmdXNlX2NoYW4gKikgMSlcbi1cbiAvKlxuLSAqIExvY2tsZXNzIGFjY2VzcyBpcyBPSywgYmVjYXVzZSBmdWQtXHUwMDNlY2hhbiBpcyBzZXQgb25jZSBkdXJpbmcgbW91bnQgYW5kIGlzIHZhbGlkXG4tICogdW50aWwgdGhlIGZpbGUgaXMgcmVsZWFzZWQuXG4rICogZnVkLVx1MDAzZWNoYW4gaGFzIHRoZSBmb2xsb3dpbmcgbW9ub3RvbmljIHN0YXRlIHRyYW5zaXRpb25zOlxuKyAqXG4rICogTlVMTCAtXHUwMDNlIHZhbGlkIGNoYW5uZWwgLVx1MDAzZSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRFxuKyAqIE5VTEwgLS0tLS0tLS0tLS0tLS0tLS1cdTAwM2UgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURURcbiAgKlxuLSAqIGZ1ZC1cdTAwM2VjaGFuIGlzIHNldCB0byBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCBvbmx5IGFmdGVyIHRoZSBjb250YWluaW5nIGZpbGUgaXNcbi0gKiByZWxlYXNlZCwgc28gcmVzdWx0IGlzIHNhZmUgdG8gZGVyZWZlcmVuY2UgaW4gbW9zdCBjYXNlcy4gIEV4Y2VwdGlvbnMgYXJlOlxuLSAqIGZ1c2VfZGV2X3B1dCgpIGFuZCBmdXNlX2ZpbGxfc3VwZXJfY29tbW9uKCkuXG4rICogQSB2YWxpZCBjaGFubmVsIHBvaW50ZXIgcmVtYWlucyB2YWxpZCB1bnRpbCB0aGUgZmlsZSBpcyByZWxlYXNlZC4gRmluYWxcbisgKiBmbHVzaCBjYW4gaW5zdGFsbCBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCBkaXJlY3RseSBmb3IgYW4gdW5pbnN0YWxsZWRcbisgKiBkZXZpY2UsIHByZXZlbnRpbmcgYW55IGxhdGVyIGNoYW5uZWwgaW5zdGFsbGF0aW9uLiBUaGUgc2VudGluZWwgdGhlcmVmb3JlXG4rICogbWVhbnMgdGhhdCB0aGUgY2hhbm5lbCBjYW4gbm8gbG9uZ2VyIGJlIGluc3RhbGxlZCBvciBhY2Nlc3NlZCB0aHJvdWdoIHRoaXNcbisgKiBmaWxlOyBpdCBkb2VzIG5vdCBpbXBseSB0aGF0IHJlbGVhc2UgaGFzIGFscmVhZHkgcnVuIGFuZCBpdCBtdXN0IG5ldmVyIGJlXG4rICogZGVyZWZlcmVuY2VkLlxuKyAqXG4rICogZnVzZV9kZXZfY2hhbl9nZXQoKSByZWFkcyB0aGlzIHN0YXRlIGxvY2tsZXNzbHkuIENhbGxlcnMgbXVzdCBkaXN0aW5ndWlzaFxuKyAqIE5VTEwsIGEgdmFsaWQgY2hhbm5lbCBwb2ludGVyLCBhbmQgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQgYmVmb3JlXG4rICogZGVyZWZlcmVuY2luZyB0aGUgcmVzdWx0LlxuICAqL1xuKyNkZWZpbmUgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQgKChzdHJ1Y3QgZnVzZV9jaGFuICopIDEpXG4rXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgZnVzZV9jaGFuICpmdXNlX2Rldl9jaGFuX2dldChzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZClcbiB7XG4gXHQvKiBQYWlycyB3aXRoIHhjaGcoKSBpbiBmdXNlX2Rldl9pbnN0YWxsKCkgKi9cbkBAIC0zNTUsOCArMzY2LDkgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgZnVzZV9kZXYgKmZ1c2VfZmlsZV90b19mdWQoc3RydWN0IGZpbGUgKmZpbGUpXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgZnVzZV9kZXYgKl9fZnVzZV9nZXRfZGV2KHN0cnVjdCBmaWxlICpmaWxlKVxuIHtcbiBcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9maWxlX3RvX2Z1ZChmaWxlKTtcbitcdHN0cnVjdCBmdXNlX2NoYW4gKmZjaCA9IGZ1c2VfZGV2X2NoYW5fZ2V0KGZ1ZCk7XG4gXG4tXHRpZiAoIWZ1c2VfZGV2X2NoYW5fZ2V0KGZ1ZCkpXG4rXHRpZiAoIWZjaCB8fCBmY2ggPT0gRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQpXG4gXHRcdHJldHVybiBOVUxMO1xuIFxuIFx0cmV0dXJuIGZ1ZDtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjM5OjI2LjM5MjU0MDg2OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0MzY0MjQxMzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRlVTRSBEZXZpY2UgRHJpdmVyIFBhdGNoIEFuYWx5c2lzIGFuZCBGdXp6aW5nIFN0cmF0ZWd5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgdGhlIEZVU0UgZGV2aWNlIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBgL2Rldi9mdXNlYCBoYW5kbGluZy4gSXQncyB0b3VjaGluZyBgZnMvZnVzZS9kZXYuY2AgYW5kIGBmcy9mdXNlL2Z1c2VfZGV2X2kuaGAsIHdoaWNoIGlzIGFsd2F5cyBpbnRlcmVzdGluZy4gVGhpcyBzZWVtcyBsaWtlIGEgZnVuY3Rpb25hbCBjaGFuZ2Ug4oCTIGFkZGluZyBhIGAuZmx1c2hgIG9wZXJhdGlvbiAoYGZ1c2VfZGV2X2ZsdXNoYCkgdG8gdGhlIGBmdXNlX2Rldl9vcGVyYXRpb25zYCBzdHJ1Y3QuICBJdCdzIGFsc28gbW9kaWZ5aW5nIGhvdyB0aGUgZHJpdmVyIGRlYWxzIHdpdGggYEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEYCBhbmQgaG93IGl0IGhhbmRsZXMgY2hhbm5lbCBjbG9zdXJlIHVzaW5nIGBmdXNlX2Rldl9hbGxfY2xvc2luZ2AgaW4gYGZ1c2VfZGV2X3JlbGVhc2VgLiBHaXZlbiB0aGUgc2NvcGUgb2YgdGhlc2UgY2hhbmdlcywgdGhpcyBpcyAqZGVmaW5pdGVseSogd29ydGggZnV6emluZy4gV2UgbmVlZCB0byBsb2NrIGRvd24gYSBnb29kIGZ1enppbmcgc3RyYXRlZ3kuXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHdlIHNob3VsZCBmb2N1cyBvdXIgZnV6emluZyBlZmZvcnRzIG9uIHNwZWNpZmljIGZ1bmN0aW9ucy4gTGV0J3Mgc2VlLi4uIHRoZSBwYXRjaCBtb2RpZmllczogYGZ1c2VfZ2V0X2RldmAsIGBmdXNlX2Rldl9hbGxfY2xvc2luZ2AsIGBmdXNlX2Rldl9yZWxlYXNlYCwgYGZ1c2VfZGV2X2ZsdXNoYCwgYW5kIGBfX2Z1c2VfZ2V0X2RldmAuIFRoZSBmdW5jdGlvbnMgdGhhdCBhcmUgZW50cnkgcG9pbnRzIGZvciBmdXp6aW5nIGxvb2sgbGlrZTogYGZ1c2VfZGV2X2ZsdXNoYCAod2hpY2ggd2lsbCBiZSBjYWxsZWQgdmlhIHRoZSBgZmlscF9jbG9zZWAgcGF0aCksIGBmdXNlX2Rldl9yZWxlYXNlYCAodHJpZ2dlcmVkIGJ5IGBmcHV0YCBhbmQgdGhlcmVmb3JlIGBmX29wLVx1MDAzZXJlbGVhc2VgKSwgYW5kIGBmdXNlX2dldF9kZXZgIChjYWxsZWQgZnJvbSBhIHZhcmlldHkgb2YgcGxhY2VzLCBuYW1lbHkgaW9jdGxzLCByZWFkcywgYW5kIHdyaXRlcyB3aXRoaW4gYGZ1c2VfZGV2X29wZXJhdGlvbnNgKS4gVGhlc2UgYXJlIHRoZSBrZXkgaW50ZXJmYWNlcyB0aGF0IHNlZW0gdG8gYmUgaW1wYWN0ZWQuXG5cbk5leHQgc3RlcDogbGV0J3MgZGl2ZSBpbnRvIHRoZSBjYWxsIHNpdGVzIG9mIGBmdXNlX2dldF9kZXZgLi4uIExldCdzIHNlZSB3aGF0J3MgdXNpbmcgaXQgYW5kIGhvdy4gV2UnbGwgYmUgYWJsZSB0byByZWZpbmUgb3VyIGZ1enppbmcgYXBwcm9hY2ggZnJvbSB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDExMywiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1OSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjM5OjMyLjgyODk2NzgyN1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjEzODkzNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZnVzZV9nZXRfZGV2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2Z1c2UvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2Z1c2UvY3VzZS5jPTU1NT1zdGF0aWMgaW50IGN1c2VfY2hhbm5lbF9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxcbmZzL2Z1c2UvY3VzZS5jLTU1Ni17XFxuZnMvZnVzZS9jdXNlLmM6NTU3OlxcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gX19mdXNlX2dldF9kZXYoZmlsZSk7XFxuZnMvZnVzZS9jdXNlLmMtNTU4LVxcdHN0cnVjdCBjdXNlX2Nvbm4gKmNjID0gZmNfdG9fY2MoZnVkLVxcdTAwM2VjaGFuLVxcdTAwM2Vjb25uKTtcXG4tLVxcbmZzL2Z1c2UvZGV2LmM9MTY1MT1zdGF0aWMgaW50IGZ1c2VfZGV2X29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXFxuLS1cXG5mcy9mdXNlL2Rldi5jLTE2NjEtXFxuZnMvZnVzZS9kZXYuYzoxNjYyOnN0cnVjdCBmdXNlX2RldiAqZnVzZV9nZXRfZGV2KHN0cnVjdCBmaWxlICpmaWxlKVxcbmZzL2Z1c2UvZGV2LmMtMTY2My17XFxuLS1cXG5mcy9mdXNlL2Rldi5jPTE2ODU9c3RhdGljIHNzaXplX3QgZnVzZV9kZXZfcmVhZChzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqdG8pXFxuLS1cXG5mcy9mdXNlL2Rldi5jLTE2ODgtXFx0c3RydWN0IGZpbGUgKmZpbGUgPSBpb2NiLVxcdTAwM2VraV9maWxwO1xcbmZzL2Z1c2UvZGV2LmM6MTY4OTpcXHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IGZ1c2VfZ2V0X2RldihmaWxlKTtcXG5mcy9mdXNlL2Rldi5jLTE2OTAtXFxuLS1cXG5mcy9mdXNlL2Rldi5jPTE3MDI9c3RhdGljIHNzaXplX3QgZnVzZV9kZXZfc3BsaWNlX3JlYWQoc3RydWN0IGZpbGUgKmluLCBsb2ZmX3QgKnBwb3MsXFxuLS1cXG5mcy9mdXNlL2Rldi5jLTE3MDktXFx0c3RydWN0IGZ1c2VfY29weV9zdGF0ZSBjcztcXG5mcy9mdXNlL2Rldi5jOjE3MTA6XFx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBmdXNlX2dldF9kZXYoaW4pO1xcbmZzL2Z1c2UvZGV2LmMtMTcxMS1cXG4tLVxcbmZzL2Z1c2UvZGV2LmM9MTk3Mz1zdGF0aWMgc3NpemVfdCBmdXNlX2Rldl93cml0ZShzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqZnJvbSlcXG4tLVxcbmZzL2Z1c2UvZGV2LmMtMTk3NS1cXHRzdHJ1Y3QgZnVzZV9jb3B5X3N0YXRlIGNzO1xcbmZzL2Z1c2UvZGV2LmM6MTk3NjpcXHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IF9fZnVzZV9nZXRfZGV2KGlvY2ItXFx1MDAzZWtpX2ZpbHApO1xcbmZzL2Z1c2UvZGV2LmMtMTk3Ny1cXG4tLVxcbmZzL2Z1c2UvZGV2LmM9MTk4OT1zdGF0aWMgc3NpemVfdCBmdXNlX2Rldl9zcGxpY2Vfd3JpdGUoc3RydWN0IHBpcGVfaW5vZGVfaW5mbyAqcGlwZSxcXG4tLVxcbmZzL2Z1c2UvZGV2LmMtMTk5Ny1cXHRzdHJ1Y3QgZnVzZV9jb3B5X3N0YXRlIGNzO1xcbmZzL2Z1c2UvZGV2LmM6MTk5ODpcXHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IF9fZnVzZV9nZXRfZGV2KG91dCk7XFxuZnMvZnVzZS9kZXYuYy0xOTk5LVxcdHNpemVfdCByZW07XFxuLS1cXG5mcy9mdXNlL2Rldi5jPTIwODE9c3RhdGljIF9fcG9sbF90IGZ1c2VfZGV2X3BvbGwoc3RydWN0IGZpbGUgKmZpbGUsIHBvbGxfdGFibGUgKndhaXQpXFxuLS1cXG5mcy9mdXNlL2Rldi5jLTIwODQtXFx0c3RydWN0IGZ1c2VfaXF1ZXVlICpmaXE7XFxuZnMvZnVzZS9kZXYuYzoyMDg1OlxcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9nZXRfZGV2KGZpbGUpO1xcbmZzL2Z1c2UvZGV2LmMtMjA4Ni1cXG4tLVxcbmZzL2Z1c2UvZGV2LmM9MjI3Mj1zdGF0aWMgaW50IGZ1c2VfZGV2X2Zhc3luYyhpbnQgZmQsIHN0cnVjdCBmaWxlICpmaWxlLCBpbnQgb24pXFxuZnMvZnVzZS9kZXYuYy0yMjczLXtcXG5mcy9mdXNlL2Rldi5jOjIyNzQ6XFx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBmdXNlX2dldF9kZXYoZmlsZSk7XFxuZnMvZnVzZS9kZXYuYy0yMjc1LVxcbi0tXFxuZnMvZnVzZS9kZXYuYz0yMjgzPXN0YXRpYyBsb25nIGZ1c2VfZGV2X2lvY3RsX2Nsb25lKHN0cnVjdCBmaWxlICpmaWxlLCBfX3UzMiBfX3VzZXIgKmFyZ3ApXFxuLS1cXG5mcy9mdXNlL2Rldi5jLTIzMDItXFxuZnMvZnVzZS9kZXYuYzoyMzAzOlxcdGZ1ZCA9IGZ1c2VfZ2V0X2RldihmZF9maWxlKGYpKTtcXG5mcy9mdXNlL2Rldi5jLTIzMDQtXFx0aWYgKElTX0VSUihmdWQpKVxcbi0tXFxuZnMvZnVzZS9kZXYuYz0yMzE4PXN0YXRpYyBsb25nIGZ1c2VfZGV2X2lvY3RsX2JhY2tpbmdfb3BlbihzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4tLVxcbmZzL2Z1c2UvZGV2LmMtMjMyMC17XFxuZnMvZnVzZS9kZXYuYzoyMzIxOlxcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9nZXRfZGV2KGZpbGUpO1xcbmZzL2Z1c2UvZGV2LmMtMjMyMi1cXHRzdHJ1Y3QgZnVzZV9iYWNraW5nX21hcCBtYXA7XFxuLS1cXG5mcy9mdXNlL2Rldi5jPTIzMzY9c3RhdGljIGxvbmcgZnVzZV9kZXZfaW9jdGxfYmFja2luZ19jbG9zZShzdHJ1Y3QgZmlsZSAqZmlsZSwgX191MzIgX191c2VyICphcmdwKVxcbmZzL2Z1c2UvZGV2LmMtMjMzNy17XFxuZnMvZnVzZS9kZXYuYzoyMzM4OlxcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9nZXRfZGV2KGZpbGUpO1xcbmZzL2Z1c2UvZGV2LmMtMjMzOS1cXHRpbnQgYmFja2luZ19pZDtcXG4tLVxcbmZzL2Z1c2UvZGV2LmM9MjM4OD1zdGF0aWMgdm9pZCBmdXNlX2Rldl9zaG93X2ZkaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgc3RydWN0IGZpbGUgKmZpbGUpXFxuZnMvZnVzZS9kZXYuYy0yMzg5LXtcXG5mcy9mdXNlL2Rldi5jOjIzOTA6XFx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBfX2Z1c2VfZ2V0X2RldihmaWxlKTtcXG5mcy9mdXNlL2Rldi5jLTIzOTEtXFx0aWYgKCFmdWQpXFxuLS1cXG5mcy9mdXNlL2Rldl91cmluZy5jPTEyMTc9aW50IGZ1c2VfdXJpbmdfY21kKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCwgdW5zaWduZWQgaW50IGlzc3VlX2ZsYWdzKVxcbi0tXFxuZnMvZnVzZS9kZXZfdXJpbmcuYy0xMjMyLVxcbmZzL2Z1c2UvZGV2X3VyaW5nLmM6MTIzMzpcXHRmdWQgPSBmdXNlX2dldF9kZXYoY21kLVxcdTAwM2VmaWxlKTtcXG5mcy9mdXNlL2Rldl91cmluZy5jLTEyMzQtXFx0aWYgKElTX0VSUihmdWQpKSB7XFxuLS1cXG5mcy9mdXNlL2Z1c2VfZGV2X2kuaD0zNjE9c3RhdGljIGlubGluZSBzdHJ1Y3QgZnVzZV9kZXYgKmZ1c2VfZmlsZV90b19mdWQoc3RydWN0IGZpbGUgKmZpbGUpXFxuLS1cXG5mcy9mdXNlL2Z1c2VfZGV2X2kuaC0zNjUtXFxuZnMvZnVzZS9mdXNlX2Rldl9pLmg6MzY2OnN0YXRpYyBpbmxpbmUgc3RydWN0IGZ1c2VfZGV2ICpfX2Z1c2VfZ2V0X2RldihzdHJ1Y3QgZmlsZSAqZmlsZSlcXG5mcy9mdXNlL2Z1c2VfZGV2X2kuaC0zNjcte1xcbi0tXFxuZnMvZnVzZS9mdXNlX2Rldl9pLmg9Mzc3PXZvaWQgZnVzZV9pcXVldWVfaW5pdChzdHJ1Y3QgZnVzZV9pcXVldWUgKmZpcSwgY29uc3Qgc3RydWN0IGZ1c2VfaXF1ZXVlX29wcyAqb3BzLCB2b2lkICpwcml2KTtcXG5mcy9mdXNlL2Z1c2VfZGV2X2kuaC0zNzgtXFxuZnMvZnVzZS9mdXNlX2Rldl9pLmg6Mzc5OnN0cnVjdCBmdXNlX2RldiAqZnVzZV9nZXRfZGV2KHN0cnVjdCBmaWxlICpmaWxlKTtcXG5mcy9mdXNlL2Z1c2VfZGV2X2kuaC0zODAtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjM5OjMzLjA1MDM2NTUyOFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyMzIyNTkzNTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBGVVNFIERldmljZSBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayBkb3duIHRoaXMgcGF0Y2guIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpZGVudGlmeSB0aGUga2V5IGZ1bmN0aW9ucyBiZWluZyBtb2RpZmllZCBhbmQgaG93IHRoZXkgaW50ZXJhY3QuIEl0IGxvb2tzIGxpa2Ugd2UncmUgdG91Y2hpbmcgYGZ1c2VfZ2V0X2RldmAsIGBfX2Z1c2VfZ2V0X2RldmAsIGBmdXNlX2Rldl9yZWxlYXNlYCwgYW5kIGFkZGluZyBhIG5ldyBmdW5jdGlvbiwgYGZ1c2VfZGV2X2ZsdXNoYC4gU2luY2UgYGZ1c2VfZGV2X2ZsdXNoYCBpcyBzdGF0aWMsIEkgY2FuJ3QgZGlyZWN0bHkgdGFyZ2V0IGl0LiBIb3dldmVyLCBpdCdzIHRyaWdnZXJlZCB0aHJvdWdoIHRoZSBgZmx1c2hgIGZpbGUgb3BlcmF0aW9uIG9uIGAvZGV2L2Z1c2VgLCBzbyBpdCdzIHJlbGV2YW50IGNvbnRleHQuXG5cbmBmdXNlX2Rldl9yZWxlYXNlYCBpcyBhbHNvIGltcG9ydGFudCwgYXMgaXQncyBjb25uZWN0ZWQgdG8gdGhlIGByZWxlYXNlYCBmaWxlIG9wZXJhdGlvbiBvbiBgL2Rldi9mdXNlYC4gTm93LCBgZnVzZV9nZXRfZGV2YCBpcyB1c2VkIGV4dGVuc2l2ZWx5IGluIGEgdmFyaWV0eSBvZiBvcGVyYXRpb25zIG9uIGAvZGV2L2Z1c2VgLCBsaWtlIGBmdXNlX2Rldl9yZWFkYCwgYGZ1c2VfZGV2X3dyaXRlYCwgYGZ1c2VfZGV2X3BvbGxgLCBgZnVzZV9kZXZfZmFzeW5jYCwgYW5kIGBmdXNlX2Rldl9pb2N0bF9jbG9uZWAgdG8gbmFtZSBhIGZldy4gVGhhdCBnaXZlcyB1cyBhIGdvb2Qgc2V0IG9mIHN0YXJ0aW5nIHBvaW50czogYGZ1c2VfZGV2X3JlbGVhc2VgLCBhbG9uZyB3aXRoIGBmdXNlX2Rldl9yZWFkYCwgYGZ1c2VfZGV2X3dyaXRlYCwgYGZ1c2VfZGV2X3BvbGxgLCBgZnVzZV9kZXZfZmFzeW5jYCwgYW5kIGBmdXNlX2Rldl9pb2N0bF9jbG9uZWAuXG5cbkJ1dCB3YWl0LCBpcyBgZnVzZV9nZXRfZGV2YCBleHBvcnRlZD8gQWgsIHllcywgaXQncyBub3Qgc3RhdGljOyBpdCdzIGEgbm9uLXN0YXRpYyBmdW5jdGlvbiEgVGhhdCBvcGVucyB1cCBwb3NzaWJpbGl0aWVzLiBBbmQgYGZ1c2VfZGV2X3JlbGVhc2VgIGlzIGFsc28gbm9uLXN0YXRpYy4gR29vZC4gQmVmb3JlIGRpdmluZyBmdXJ0aGVyIGludG8gdGhlIGNvZGUsIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIGlmIEZVU0UgaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHdlIG5lZWQgdG8gbG9vayBmb3IgYSBjb25maWd1cmF0aW9uIG9wdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NjU1MSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwODozOTozOC4yODI2MjgyNzNaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc2NDc4MDE2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBGVVNFX0ZTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2Z1c2UvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9mdXNlL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5mcy9mdXNlL0tjb25maWc6Mjpjb25maWcgRlVTRV9GU1xcbmZzL2Z1c2UvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJGVVNFIChGaWxlc3lzdGVtIGluIFVzZXJzcGFjZSkgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDg6Mzk6MzguNTU5MTE3NTU4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUyOTM0MDIyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGJyZWFrZG93biBvZiB3aGF0IEknbSBsb29raW5nIGF0LCBmcm9tIG15IGV4cGVydCBwZXJzcGVjdGl2ZTpcblxuKipJbnZlc3RpZ2F0aW5nIEZVU0UgQ29uZmlndXJhdGlvbiBhbmQgT3BlcmF0aW9ucyoqXG5cblJpZ2h0LCBzbyB3ZSdyZSBkZWFsaW5nIHdpdGggdGhlIEZVU0UgZmlsZSBzeXN0ZW0gZHJpdmVyLCBhbmQgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGNsZWFybHkgYEZVU0VfRlNgLiBMZXQgbWUgZmlyc3QgY29uZmlybSBpZiB0aGVyZSBhcmUgYW55ICpvdGhlciogcmVsYXRlZCBjb25maWdzIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQgaGVyZSDigJMgSSBkb24ndCB3YW50IHRvIG1pc3MgYW55dGhpbmcuXG5cbk9rYXksIGxldCdzIHNlZS4gVGhlIGNoYW5nZXMgYXJlIGZvY3VzZWQgb24gYGZzL2Z1c2UvZGV2LmNgIGFuZCBgZnMvZnVzZS9mdXNlX2Rldl9pLmhgLiBJbnRlcmVzdGluZy4uLiBObyBuZXcgY29uZmlnIG9wdGlvbnMgYXJlIGJlaW5nIGludHJvZHVjZWQsIHNvIHRoYXQncyBoZWxwZnVsIGluZm9ybWF0aW9uLlxuXG5Ob3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBoYXBwZW5pbmcgYXQgdGhlIGNvcmUgbGV2ZWwuIE15IGZvY3VzIHNoaWZ0cyB0byB0aGUgYGZ1c2VfZGV2X29wZXJhdGlvbnNgIHN0cnVjdHVyZSBkZWZpbmVkIHdpdGhpbiBgZnMvZnVzZS9kZXYuY2AuIFRoaXMgaXMgd2hlcmUgdGhlIGNydWNpYWwgY2FsbGJhY2tzIGFuZCBpbnRlcmZhY2UgZGVmaW5pdGlvbnMgbGl2ZSBmb3IgZGV2aWNlLWJhc2VkIEZVU0UgbW91bnRzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2Ugb3BlcmF0aW9ucyBhcmUgZGVmaW5lZCBhbmQgaWYgdGhlc2Ugc3RydWN0dXJlcyBoYXZlIGNoYW5nZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcyOTQsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwODozOTo0Mi4wODg0NjAzNVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzkxNzQxNDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmdXNlX2Rldl9vcGVyYXRpb25zXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2Z1c2UvZGV2LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZnVzZS9kZXYuYz0yMzk4PXN0YXRpYyBpbnQgZnVzZV9kZXZfZmx1c2goc3RydWN0IGZpbGUgKmZpbGUsIGZsX293bmVyX3QgaWQpXFxuLS1cXG5mcy9mdXNlL2Rldi5jLTI0MjUtXFxuZnMvZnVzZS9kZXYuYzoyNDI2OmNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZnVzZV9kZXZfb3BlcmF0aW9ucyA9IHtcXG5mcy9mdXNlL2Rldi5jLTI0MjctXFx0Lm93bmVyXFx0XFx0PSBUSElTX01PRFVMRSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDg6Mzk6NDIuMjY3NjQxMzk1WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY4ODcyMzYyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGb2N1c2luZyBvbiB0aGUgRlVTRSBEZXZpY2UgSW50ZXJhY3Rpb25zKipcblxuT2theSwgc28gSSBuZWVkIHRvIHplcm8gaW4gb24gdGhlIGNvcmUgaW50ZXJhY3Rpb25zIHdpdGggdGhlIEZVU0UgZGV2aWNlLiBMZXQncyBzZWUuLi4gSSdtIHRoaW5raW5nIEkgc2hvdWxkIHN0YXJ0IHdpdGggdGhlc2UgZnVuY3Rpb25zOiBgZnVzZV9kZXZfcmVsZWFzZWAsIGBmdXNlX2dldF9kZXZgLCBgZnVzZV9kZXZfcmVhZGAsIGBmdXNlX2Rldl93cml0ZWAsIGBmdXNlX2Rldl9wb2xsYCwgYW5kIGBmdXNlX2Rldl9mYXN5bmNgLiBJIGhhdmUgYSBmZWVsaW5nIHRoYXQgYGZ1c2VfZ2V0X2RldmAgYW5kIGBmdXNlX2Rldl9yZWxlYXNlYCBhcmUgd29ydGggYSBzZWNvbmQgbG9vaywgYmVjYXVzZSB0aGV5J3JlIG5vbi1zdGF0aWMgd2hpY2ggaXMgaW1wb3J0YW50LCBidXQgYSBxdWljayBnbGFuY2UgbWFrZXMgbWUgdGhpbmsgdGhhdCBgZnVzZV9kZXZfcmVhZGAgaXMgc3RhdGljLCB3aGljaCBsaW1pdHMgaXRzIHV0aWxpdHkuIEkgbmVlZCB0byBtYWtlIGEgbm90ZSB0byBkb3VibGUtY2hlY2sgdGhhdCBgZnVzZV9kZXZfcmVhZGAgaXMgZGVmaW5pdGVseSBzdGF0aWMsIGJlY2F1c2UgdGhhdCBtaWdodCBiZSBtaXNsZWFkaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NzM2LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjM5OjQ1Ljk1NjM3MDQ2NVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTM2MjA0NjI0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZ1c2VfZGV2X3JlYWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZnVzZS9kZXYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9mdXNlL2Rldi5jPTE2NjI9c3RydWN0IGZ1c2VfZGV2ICpmdXNlX2dldF9kZXYoc3RydWN0IGZpbGUgKmZpbGUpXFxuLS1cXG5mcy9mdXNlL2Rldi5jLTE2ODQtXFxuZnMvZnVzZS9kZXYuYzoxNjg1OnN0YXRpYyBzc2l6ZV90IGZ1c2VfZGV2X3JlYWQoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKnRvKVxcbmZzL2Z1c2UvZGV2LmMtMTY4Ni17XFxuLS1cXG5mcy9mdXNlL2Rldi5jPTI0MjY9Y29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmdXNlX2Rldl9vcGVyYXRpb25zID0ge1xcbi0tXFxuZnMvZnVzZS9kZXYuYy0yNDI4LVxcdC5vcGVuXFx0XFx0PSBmdXNlX2Rldl9vcGVuLFxcbmZzL2Z1c2UvZGV2LmM6MjQyOTpcXHQucmVhZF9pdGVyXFx0PSBmdXNlX2Rldl9yZWFkLFxcbmZzL2Z1c2UvZGV2LmMtMjQzMC1cXHQuc3BsaWNlX3JlYWRcXHQ9IGZ1c2VfZGV2X3NwbGljZV9yZWFkLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwODozOTo0Ni40OTI1ODEzMjhaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE5NjEyMDM5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGb2N1c2luZyBvbiBEZXZpY2UgSW50ZXJhY3Rpb24qKlxuXG5Pa2F5LCBzbyBgZnVzZV9kZXZfcmVhZGAgaXMgZGVmaW5pdGVseSBzdGF0aWMsIHdoaWNoIHNpbXBsaWZpZXMgdGhpbmdzLiBUaGF0IG1lYW5zIHdlIGNhbiBzYWZlbHkgc2hpZnQgb3VyIGF0dGVudGlvbiB0byBgZnVzZV9nZXRfZGV2YCBhbmQgYGZ1c2VfZGV2X3JlbGVhc2VgLiBUaG9zZSBzZWVtIGxpa2UgdGhlIGtleSBwbGF5ZXJzIGhlcmUuXG5cbkxldCdzIHF1aWNrbHkgY29uZmlybSB0aGF0IGBmdXNlX2Rldl9mbHVzaGAgaXMgYWxzbyBzdGF0aWMuIFl1cCwgc3RhdGljIHRvby4gVGhhdCBmdXJ0aGVyIG5hcnJvd3MgdGhlIHNjb3BlLiBXZSdyZSBsb29raW5nIGZvciBhbnkgbm9uLXN0YXRpYyBmdW5jdGlvbnMgcmVsYXRlZCB0byBkZXZpY2UgbWFuYWdlbWVudC5cblxuQWxyaWdodCwgc28gdGhlIHN0YW5kb3V0cyBhcmUgc3RpbGwgYGZ1c2VfZ2V0X2RldmAgYW5kIGBmdXNlX2Rldl9yZWxlYXNlYC4gSSdtIGdvaW5nIHRvIGRvdWJsZS1jaGVjayB0aG9zZSB0d28gYWdhaW4sIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nIGNydWNpYWwuIEdvdHRhIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MzAwLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjM5OjQ5LjY4ODcwNTU3OVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjExNjkyNTEyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZ1c2VfZGV2X3JlbGVhc2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZnVzZS9kZXYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9mdXNlL2Rldi5jPTQ1OD1zdGF0aWMgYm9vbCBmdXNlX2Rldl9pbnN0YWxsX3dpdGhfcHEoc3RydWN0IGZ1c2VfZGV2ICpmdWQsIHN0cnVjdCBmdXNlX2NoYW4gKmZjaCxcXG4tLVxcbmZzL2Z1c2UvZGV2LmMtNDY1LVxcdCAqIFBhaXJzIHdpdGg6XFxuZnMvZnVzZS9kZXYuYzo0NjY6XFx0ICogIC0geGNoZygpIGluIGZ1c2VfZGV2X3JlbGVhc2UoKVxcbmZzL2Z1c2UvZGV2LmMtNDY3LVxcdCAqICAtIHNtcF9sb2FkX2FjcXVpcmUoKSBpbiBmdXNlX2Rldl9mY19nZXQoKVxcbi0tXFxuZnMvZnVzZS9kZXYuYz01MTQ9dm9pZCBmdXNlX2Rldl9wdXQoc3RydWN0IGZ1c2VfZGV2ICpmdWQpXFxuLS1cXG5mcy9mdXNlL2Rldi5jLTUyMi1cXHRpZiAoZmNoIFxcdTAwMjZcXHUwMDI2IGZjaCAhPSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCkge1xcbmZzL2Z1c2UvZGV2LmM6NTIzOlxcdFxcdC8qIFRoaXMgaXMgdGhlIHZpcnRpb2ZzIGNhc2UgKGZ1c2VfZGV2X3JlbGVhc2UoKSBub3QgY2FsbGVkKSAqL1xcbmZzL2Z1c2UvZGV2LmMtNTI0LVxcdFxcdHNwaW5fbG9jayhcXHUwMDI2ZmNoLVxcdTAwM2Vsb2NrKTtcXG4tLVxcbmZzL2Z1c2UvZGV2LmM9MjIxOT1zdGF0aWMgYm9vbCBmdXNlX2Rldl9hbGxfY2xvc2luZyhzdHJ1Y3QgZnVzZV9jaGFuICpmY2gpXFxuLS1cXG5mcy9mdXNlL2Rldi5jLTIyMzEtXFxuZnMvZnVzZS9kZXYuYzoyMjMyOmludCBmdXNlX2Rldl9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxcbmZzL2Z1c2UvZGV2LmMtMjIzMy17XFxuLS1cXG5mcy9mdXNlL2Rldi5jLTIyNjktfVxcbmZzL2Z1c2UvZGV2LmM6MjI3MDpFWFBPUlRfU1lNQk9MX0dQTChmdXNlX2Rldl9yZWxlYXNlKTtcXG5mcy9mdXNlL2Rldi5jLTIyNzEtXFxuLS1cXG5mcy9mdXNlL2Rldi5jPTI0MjY9Y29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmdXNlX2Rldl9vcGVyYXRpb25zID0ge1xcbi0tXFxuZnMvZnVzZS9kZXYuYy0yNDM0LVxcdC5mbHVzaFxcdFxcdD0gZnVzZV9kZXZfZmx1c2gsXFxuZnMvZnVzZS9kZXYuYzoyNDM1OlxcdC5yZWxlYXNlXFx0PSBmdXNlX2Rldl9yZWxlYXNlLFxcbmZzL2Z1c2UvZGV2LmMtMjQzNi1cXHQuZmFzeW5jXFx0XFx0PSBmdXNlX2Rldl9mYXN5bmMsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjM5OjQ5LjkwMDQwNDQwMVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDYzNzc4MjM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgVGhvdWdodHMgb24gdGhlIEFQSSBFeHBvcnRzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpbW1lZGlhdGVseSBrZXlpbmcgaW4gb24gdGhlc2UgdHdvIGZ1bmN0aW9ucyBiZWluZyBleHBvcnRlZDogYGZ1c2VfZGV2X3JlbGVhc2VgIGFuZCBgZnVzZV9nZXRfZGV2YC4gVGhhdCB0ZWxscyBtZSB0aGVzZSBhcmUgZnVuZGFtZW50YWwgY29tcG9uZW50cyBvZiB0aGUgRlVTRSAoRmlsZXN5c3RlbSBpbiBVc2Vyc3BhY2UpIGludGVyZmFjZSB3ZSdyZSB3b3JraW5nIHdpdGguIGBmdXNlX2Rldl9yZWxlYXNlYC4uLiB0aGF0J3MgZ290IHRvIGJlIHRoZSBmdW5jdGlvbiByZXNwb25zaWJsZSBmb3IgcmVsZWFzaW5nIGEgRlVTRSBkZXZpY2UsIGNsZWFuaW5nIHVwIHJlc291cmNlcywgYW5kIHByb3Blcmx5IHVucmVnaXN0ZXJpbmcgaXQsIGxpa2VseSB3aGVuIGEgZmlsZXN5c3RlbSBpcyB1bm1vdW50ZWQgb3IgZ29lcyBvdXQgb2Ygc2NvcGUuIFRoYXQncyBhIGNydWNpYWwsIHByb2JhYmx5IGNvbXBsZXgsIGZ1bmN0aW9uLiBUaGVuIHdlIGhhdmUgYGZ1c2VfZ2V0X2RldmAuIFRoYXQgc291bmRzIGxpa2UgdGhlIGNvdW50ZXJwYXJ0LCB0aGUgZW50cnkgcG9pbnQsIHRoZSBmdW5jdGlvbiB1c2VkIHRvIHJldHJpZXZlIG9yIG9idGFpbiBhIEZVU0UgZGV2aWNlIOKAkyB0aGUgY29yZSBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBpbnRlcmFjdGlvbiBwb2ludCB3aXRoIHRoZSBGVVNFIHN1YnN5c3RlbS4gVGhpcyBzaWduYWxzIHRoYXQgdGhlcmUncyBhIG1hbmFnZWQgbGlmZWN5Y2xlIGZvciBkZXZpY2VzOyB0aGV5J3JlIHByb2JhYmx5IGFjcXVpcmVkLCB1c2VkLCBhbmQgdGhlbiBleHBsaWNpdGx5IHJlbGVhc2VkLiBJJ2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIGZ1bmN0aW9uIHNpZ25hdHVyZXMgYW5kIHJlbGF0ZWQgZGF0YSBzdHJ1Y3R1cmVzIHRvIGZ1bGx5IGdyYXNwIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBpbXBsaWNhdGlvbnMgYW5kIG92ZXJhbGwgZGVzaWduIHBoaWxvc29waHkuIFRoaXMgaXMgdGhlIGZvdW5kYXRpb24gb2YgdGhlIGludGVyZmFjZSFcblxuXG4iLCJJbnB1dFRva2VucyI6OTEwNCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjM5OjUzLjM2NDE4NjgwOFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE3NzU3ODAxLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJFWFBPUlRfU1lNQk9MX0dQTFxcXFwoZnVzZV9nZXRfZGV2XFxcXClcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZnVzZS9kZXYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDg6Mzk6NTMuNTgxOTUyNzM5WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MTUyMzU3OTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipJbnZlc3RpZ2F0aW5nIGEgUG90ZW50aWFsIExpYnJhcnkgSXNzdWUqKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBJIHdhcyB1bmRlciB0aGUgaW1wcmVzc2lvbiB0aGF0IGBmdXNlX2dldF9kZXZgIHdhcyBhIHB1YmxpY2x5IGF2YWlsYWJsZSBmdW5jdGlvbi4gSSBuZWVkIHRvIHZlcmlmeSB0aGF0OyBpdCBkb2Vzbid0IHNlZW0gdG8gYmUgZXhwb3J0ZWQuIFRoZSBmYWN0IHRoYXQgaXQgaXNuJ3QgZXhwb3J0ZWQgY291bGQgYmUgYSBtYWpvciBwcm9ibGVtIGZvciB0aGlzIHBhcnRpY3VsYXIgbGluZSBvZiBjb2RlLCBvciBmb3IgdGhpcyBsaWJyYXJ5IHRoYXQgSSdtIHdvcmtpbmcgd2l0aCBhdCB0aGUgbW9tZW50LiBMZXQgbWUgZG91YmxlLWNoZWNrIHRoZSByZWxldmFudCBoZWFkZXIgZmlsZXMsIHRoZSBkb2N1bWVudGF0aW9uLCBhbmQgdGhlIGJ1aWxkIHByb2Nlc3MgdG8gY29uZmlybSBpdHMgdmlzaWJpbGl0eSBhbmQgYXZhaWxhYmlsaXR5LiBJIGhhdmUgYSBmZWVsaW5nIHRoYXQgdGhpcyB3aWxsIGJlIHRoZSBrZXkgcGllY2Ugb2YgaW5mb3JtYXRpb24gdGhhdCBhZmZlY3RzIHRoZSBuZXh0IGRpcmVjdGlvbiB0byBiZSB0YWtlbiBmb3IgdGhpcyBsaWJyYXJ5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NDE2LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDg6Mzk6NTYuNDk3MTkxNzI2WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDE4Nzg2NjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZnVzZV9nZXRfZGV2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2Z1c2UvZGV2LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZnVzZS9kZXYuYz0xNjUxPXN0YXRpYyBpbnQgZnVzZV9kZXZfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcXG4tLVxcbmZzL2Z1c2UvZGV2LmMtMTY2MS1cXG5mcy9mdXNlL2Rldi5jOjE2NjI6c3RydWN0IGZ1c2VfZGV2ICpmdXNlX2dldF9kZXYoc3RydWN0IGZpbGUgKmZpbGUpXFxuZnMvZnVzZS9kZXYuYy0xNjYzLXtcXG4tLVxcbmZzL2Z1c2UvZGV2LmM9MTY4NT1zdGF0aWMgc3NpemVfdCBmdXNlX2Rldl9yZWFkKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICp0bylcXG4tLVxcbmZzL2Z1c2UvZGV2LmMtMTY4OC1cXHRzdHJ1Y3QgZmlsZSAqZmlsZSA9IGlvY2ItXFx1MDAzZWtpX2ZpbHA7XFxuZnMvZnVzZS9kZXYuYzoxNjg5OlxcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9nZXRfZGV2KGZpbGUpO1xcbmZzL2Z1c2UvZGV2LmMtMTY5MC1cXG4tLVxcbmZzL2Z1c2UvZGV2LmM9MTcwMj1zdGF0aWMgc3NpemVfdCBmdXNlX2Rldl9zcGxpY2VfcmVhZChzdHJ1Y3QgZmlsZSAqaW4sIGxvZmZfdCAqcHBvcyxcXG4tLVxcbmZzL2Z1c2UvZGV2LmMtMTcwOS1cXHRzdHJ1Y3QgZnVzZV9jb3B5X3N0YXRlIGNzO1xcbmZzL2Z1c2UvZGV2LmM6MTcxMDpcXHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IGZ1c2VfZ2V0X2Rldihpbik7XFxuZnMvZnVzZS9kZXYuYy0xNzExLVxcbi0tXFxuZnMvZnVzZS9kZXYuYz0xOTczPXN0YXRpYyBzc2l6ZV90IGZ1c2VfZGV2X3dyaXRlKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tKVxcbi0tXFxuZnMvZnVzZS9kZXYuYy0xOTc1LVxcdHN0cnVjdCBmdXNlX2NvcHlfc3RhdGUgY3M7XFxuZnMvZnVzZS9kZXYuYzoxOTc2OlxcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gX19mdXNlX2dldF9kZXYoaW9jYi1cXHUwMDNla2lfZmlscCk7XFxuZnMvZnVzZS9kZXYuYy0xOTc3LVxcbi0tXFxuZnMvZnVzZS9kZXYuYz0xOTg5PXN0YXRpYyBzc2l6ZV90IGZ1c2VfZGV2X3NwbGljZV93cml0ZShzdHJ1Y3QgcGlwZV9pbm9kZV9pbmZvICpwaXBlLFxcbi0tXFxuZnMvZnVzZS9kZXYuYy0xOTk3LVxcdHN0cnVjdCBmdXNlX2NvcHlfc3RhdGUgY3M7XFxuZnMvZnVzZS9kZXYuYzoxOTk4OlxcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gX19mdXNlX2dldF9kZXYob3V0KTtcXG5mcy9mdXNlL2Rldi5jLTE5OTktXFx0c2l6ZV90IHJlbTtcXG4tLVxcbmZzL2Z1c2UvZGV2LmM9MjA4MT1zdGF0aWMgX19wb2xsX3QgZnVzZV9kZXZfcG9sbChzdHJ1Y3QgZmlsZSAqZmlsZSwgcG9sbF90YWJsZSAqd2FpdClcXG4tLVxcbmZzL2Z1c2UvZGV2LmMtMjA4NC1cXHRzdHJ1Y3QgZnVzZV9pcXVldWUgKmZpcTtcXG5mcy9mdXNlL2Rldi5jOjIwODU6XFx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBmdXNlX2dldF9kZXYoZmlsZSk7XFxuZnMvZnVzZS9kZXYuYy0yMDg2LVxcbi0tXFxuZnMvZnVzZS9kZXYuYz0yMjcyPXN0YXRpYyBpbnQgZnVzZV9kZXZfZmFzeW5jKGludCBmZCwgc3RydWN0IGZpbGUgKmZpbGUsIGludCBvbilcXG5mcy9mdXNlL2Rldi5jLTIyNzMte1xcbmZzL2Z1c2UvZGV2LmM6MjI3NDpcXHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IGZ1c2VfZ2V0X2RldihmaWxlKTtcXG5mcy9mdXNlL2Rldi5jLTIyNzUtXFxuLS1cXG5mcy9mdXNlL2Rldi5jPTIyODM9c3RhdGljIGxvbmcgZnVzZV9kZXZfaW9jdGxfY2xvbmUoc3RydWN0IGZpbGUgKmZpbGUsIF9fdTMyIF9fdXNlciAqYXJncClcXG4tLVxcbmZzL2Z1c2UvZGV2LmMtMjMwMi1cXG5mcy9mdXNlL2Rldi5jOjIzMDM6XFx0ZnVkID0gZnVzZV9nZXRfZGV2KGZkX2ZpbGUoZikpO1xcbmZzL2Z1c2UvZGV2LmMtMjMwNC1cXHRpZiAoSVNfRVJSKGZ1ZCkpXFxuLS1cXG5mcy9mdXNlL2Rldi5jPTIzMTg9c3RhdGljIGxvbmcgZnVzZV9kZXZfaW9jdGxfYmFja2luZ19vcGVuKHN0cnVjdCBmaWxlICpmaWxlLFxcbi0tXFxuZnMvZnVzZS9kZXYuYy0yMzIwLXtcXG5mcy9mdXNlL2Rldi5jOjIzMjE6XFx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBmdXNlX2dldF9kZXYoZmlsZSk7XFxuZnMvZnVzZS9kZXYuYy0yMzIyLVxcdHN0cnVjdCBmdXNlX2JhY2tpbmdfbWFwIG1hcDtcXG4tLVxcbmZzL2Z1c2UvZGV2LmM9MjMzNj1zdGF0aWMgbG9uZyBmdXNlX2Rldl9pb2N0bF9iYWNraW5nX2Nsb3NlKHN0cnVjdCBmaWxlICpmaWxlLCBfX3UzMiBfX3VzZXIgKmFyZ3ApXFxuZnMvZnVzZS9kZXYuYy0yMzM3LXtcXG5mcy9mdXNlL2Rldi5jOjIzMzg6XFx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBmdXNlX2dldF9kZXYoZmlsZSk7XFxuZnMvZnVzZS9kZXYuYy0yMzM5LVxcdGludCBiYWNraW5nX2lkO1xcbi0tXFxuZnMvZnVzZS9kZXYuYz0yMzg4PXN0YXRpYyB2b2lkIGZ1c2VfZGV2X3Nob3dfZmRpbmZvKHN0cnVjdCBzZXFfZmlsZSAqc2VxLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcXG5mcy9mdXNlL2Rldi5jLTIzODkte1xcbmZzL2Z1c2UvZGV2LmM6MjM5MDpcXHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IF9fZnVzZV9nZXRfZGV2KGZpbGUpO1xcbmZzL2Z1c2UvZGV2LmMtMjM5MS1cXHRpZiAoIWZ1ZClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDg6Mzk6NTYuNjM5MDc2MDgzWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNDQ4ODA2OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipOYXZpZ2F0aW5nIHRoZSBGdXNlIERldmljZSBTdHJ1Y3R1cmUqKlxuXG5SaWdodCwgc28gYGZ1c2VfZ2V0X2RldmAuLi4gdGhhdCByaW5ncyBhIGJlbGwuIE5vdywgd2hlcmUgd2FzIHRoYXQgZGVmaW5lZCBhZ2Fpbj8gT2gsIGl0IGxvb2tzIGxpa2UgaXQncyBleHBvcnRlZCBpbiBgZnMvZnVzZS9kZXYuY2AuIE9rYXksIGdvb2QsIHRoYXQncyB3aGF0IEkgd2FzIGV4cGVjdGluZy4gTGV0J3MganVzdCBkb3VibGUtY2hlY2sgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBmdXNlX2dldF9kZXZgLiBJIHdhbnQgdG8gbWFrZSBzdXJlIEkndmUgZ290IGEgc29saWQgaGFuZGxlIG9uIGhvdyBpdCdzIGhhbmRsaW5nIHRoZSBkZXZpY2Ugc3RydWN0dXJlLiBJJ2xsIG5lZWQgdG8gcmUtZmFtaWxpYXJpemUgbXlzZWxmIHdpdGggdGhlIGVuZCBvZiB0aGF0IGZ1bmN0aW9uLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGhvdyBpdCBoYW5kbGVzIGVycm9yIGNvbmRpdGlvbnMgYW5kIGhvdyBpdCByZXR1cm5zIHRoYXQgc3RydWN0dXJlLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgY29kZSBhbmQgcmVmcmVzaCBteSBtZW1vcnkgb2YgdGhhdCBzcGVjaWZpYyBpbnRlcmFjdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA4MTAsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwODozOTo1OS44ODM5NTk2OFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgwOTU5Mzg1LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJFWFBPUlRfU1lNQk9MX0dQTFxcXFwoZnVzZV9nZXRfZGV2XFxcXClcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZnVzZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjQwOjAwLjA2NDkyODYyNFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzU1NDg2Njk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRlVTRSBEZXZpY2UgRHJpdmVyIENoYW5nZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIHRyeWluZyB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGNoYW5nZXMuIFRoZSB0aGluZyBpc24ndCBiZWluZyBleHBvcnRlZCwgYnV0IGl0J3Mgbm90IHN0YXRpYyBlaXRoZXIsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBUaGVuIEkgc2VlIGBmdXNlX2dldF9kZXZgIGlzbid0IHN0YXRpYywgc28gaXQgaGFzIGEgdW5pcXVlIGFkZHJlc3MuIEFuZCBgZnVzZV9kZXZfcmVsZWFzZWAgaXMgbm9uLXN0YXRpYyBhbmQgKmV4cG9ydGVkKiwgd2hpY2ggaXMgYSBrZXkgZGlzdGluY3Rpb24uIGBmdXNlX2Rldl9mbHVzaGAsIGhvd2V2ZXIsIGlzIHN0YXRpYywgd2hpY2ggbGltaXRzIGl0cyBleHRlcm5hbCBpbXBhY3QuXG5cbkdpdmVuIHRoZSBub24tc3RhdGljIG5hdHVyZSBvZiBgZnVzZV9nZXRfZGV2YCBhbmQgYGZ1c2VfZGV2X3JlbGVhc2VgLCB0aG9zZSBhcmUgdGhlIGZ1bmN0aW9ucyB0byByZWFsbHkgZm9jdXMgb24uIFRoZSBwYXRjaCBzZWVtcyB0byBiZSBtb2RpZnlpbmcgdGhlbSwgcmlnaHQ/IEFuZCBpdCdzICphZGRpbmcqIGBmdXNlX2Rldl9mbHVzaGAsIHdoaWNoIGlzIGxpbmtlZCB2aWEgYSBgLmZsdXNoYCBvcGVyYXRpb24uXG5cbk5vdywgSSBuZWVkIHRvIGNvbnNpZGVyIGFueSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gYEZVU0VfRlNgIGlzIHRoZSBvYnZpb3VzIG9uZSwgc28gSSdsbCBjaGVjayBpZiBgRlVTRV9GU2AgcmVsaWVzIG9uIGFueXRoaW5nIHNwZWNpZmljLiBHb3R0YSBtYWtlIHN1cmUgd2UgY292ZXIgYWxsIGJhc2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTA3NSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwODo0MDowNC40MjA0MTk1MDJaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMzc4MzQxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgRlVTRV9GU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9mdXNlL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZnVzZS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZnMvZnVzZS9LY29uZmlnOjI6Y29uZmlnIEZVU0VfRlNcXG5mcy9mdXNlL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiRlVTRSAoRmlsZXN5c3RlbSBpbiBVc2Vyc3BhY2UpIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjQwOjA0LjY1NDIxMTk5MloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDQxOTEwMjI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIGBjb25maWcgRlVTRV9GU2AgQ29udGV4dCoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW4uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgc3Vycm91bmRpbmcgdGhlIGBjb25maWcgRlVTRV9GU2AgZGlyZWN0aXZlLiBJIG5lZWQgdG8gcXVpY2tseSBncmFzcCBpdHMgaW1wbGljYXRpb25zIHdpdGhpbiB0aGUgbGFyZ2VyIHN5c3RlbS4gSXMgdGhpcyBhIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbiwgYSBidWlsZCBzeXN0ZW0gc2V0dGluZywgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IFdoYXQgcHJvamVjdCBvciBmcmFtZXdvcmsgYXJlIHdlIGRlYWxpbmcgd2l0aCBoZXJlPyBJJ20gYWxyZWFkeSBtZW50YWxseSBydW5uaW5nIHRocm91Z2ggcG90ZW50aWFsIHNjZW5hcmlvczogYSBmaWxlIHN5c3RlbSBpbXBsZW1lbnRhdGlvbiwgcGVyaGFwcyByZWxhdGVkIHRvIEZVU0UgKEZpbGVzeXN0ZW0gaW4gVXNlcnNwYWNlKSwgYnV0IHdoYXQgc3BlY2lmaWMgdXNlIGNhc2UgaXMgaXQgdGFyZ2V0aW5nPyBXaGVyZSBpcyB0aGlzIGNvbmZpZ3VyYXRpb24gc3RyaW5nIHVzZWQgYW5kIGhvdz8gVGhlIGRldmlsLCBhcyBhbHdheXMsIGlzIGluIHRoZSBkZXRhaWxzLCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcmVsYXRpb25zaGlwIHdpdGggb3RoZXIgY29uZmlndXJhdGlvbnMsIGRlcGVuZGVuY2llcywgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEkgbmVlZCB0aGUgZnVsbCBwaWN0dXJlIHRvIGJlIGFibGUgdG8gYXNzZXNzIGl0cyBpbXBhY3QgcHJvcGVybHkuIE15IGFuYWx5dGljYWwgZ2VhcnMgYXJlIHR1cm5pbmcgYWxyZWFkeS4gTGV0J3MgZ2V0IHRvIHRoZSB0ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTYwMSwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjQwOjA4LjA5NjEyNzg1N1oiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjc2NzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZnMvZnVzZS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRjb25maWcgRlVTRV9GU1xcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIkZVU0UgKEZpbGVzeXN0ZW0gaW4gVXNlcnNwYWNlKSBzdXBwb3J0XFxcIlxcbiAgIDQ6XFx0XFx0c2VsZWN0IEZTX1BPU0lYX0FDTFxcbiAgIDU6XFx0XFx0c2VsZWN0IEZTX0lPTUFQXFxuICAgNjpcXHRcXHRoZWxwXFxuICAgNzpcXHRcXHQgIFdpdGggRlVTRSBpdCBpcyBwb3NzaWJsZSB0byBpbXBsZW1lbnQgYSBmdWxseSBmdW5jdGlvbmFsIGZpbGVzeXN0ZW1cXG4gICA4OlxcdFxcdCAgaW4gYSB1c2Vyc3BhY2UgcHJvZ3JhbS5cXG4gICA5OlxcdFxcbiAgMTA6XFx0XFx0ICBUaGVyZSdzIGFsc28gYSBjb21wYW5pb24gbGlicmFyeTogbGliZnVzZTIuICBUaGlzIGxpYnJhcnkgaXMgYXZhaWxhYmxlXFxuICAxMTpcXHRcXHQgIGZyb20gdGhlIEZVU0UgaG9tZXBhZ2U6XFxuICAxMjpcXHRcXHQgIFxcdTAwM2NodHRwczovL2dpdGh1Yi5jb20vbGliZnVzZS9cXHUwMDNlXFxuICAxMzpcXHRcXHQgIGFsdGhvdWdoIGNoYW5jZXMgYXJlIHlvdXIgZGlzdHJpYnV0aW9uIGFscmVhZHkgaGFzIHRoYXQgbGlicmFyeVxcbiAgMTQ6XFx0XFx0ICBpbnN0YWxsZWQgaWYgeW91J3ZlIGluc3RhbGxlZCB0aGUgXFxcImZ1c2VcXFwiIHBhY2thZ2UgaXRzZWxmLlxcbiAgMTU6XFx0XFxuICAxNjpcXHRcXHQgIFNlZSBcXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2Z1c2UvZnVzZS5yc3RcXHUwMDNlIGZvciBtb3JlIGluZm9ybWF0aW9uLlxcbiAgMTc6XFx0XFx0ICBTZWUgXFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9DaGFuZ2VzXFx1MDAzZSBmb3IgbmVlZGVkIGxpYnJhcnkvdXRpbGl0eSB2ZXJzaW9uLlxcbiAgMTg6XFx0XFxuICAxOTpcXHRcXHQgIElmIHlvdSB3YW50IHRvIGRldmVsb3AgYSB1c2Vyc3BhY2UgRlMsIG9yIGlmIHlvdSB3YW50IHRvIHVzZVxcbiAgMjA6XFx0XFx0ICBhIGZpbGVzeXN0ZW0gYmFzZWQgb24gRlVTRSwgYW5zd2VyIFkgb3IgTS5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDg6NDA6MDguMDk2MjU4NDg4WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExNDI0NDg1MTk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBGVVNFIERldmljZSBEcml2ZXIgQ2hhbmdlcyBmb3IgRnV6emluZyoqXG5cbk9rYXksIG5vIGRlcGVuZGVuY2llcywgdGhhdCdzIGdvb2QuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSByZWxldmFudCBzeW1ib2xzIGZyb20gdGhpcyBwYXRjaCB0byBmb2N1cyBteSBmdXp6aW5nIGVmZm9ydHMuIExldCdzIHN0YXJ0IGJ5IGNoZWNraW5nIGBmdXNlX2Rldl9hbGxfY2xvc2luZ2AuIFJpZ2h0LCBpdCdzIHN0YXRpYy4gU28sIGJhc2VkIG9uIHRoZSBwcm9tcHQncyBwcmVmZXJlbmNlIGZvciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMsIGBGb2N1c1N5bWJvbHNgIHNob3VsZCBwcm9iYWJseSBpbmNsdWRlIGBmdXNlX2dldF9kZXZgIGFuZCBgZnVzZV9kZXZfcmVsZWFzZWAuIFdhaXQgYSBtaW51dGUsIGBmdXNlX2Rldl9mbHVzaGAgaXMgYWxzbyBoZXJlLCBhbmQgaXQncyBhICpuZXcqIGZ1bmN0aW9uLiBUaGUgcHJvbXB0J3MgbGFuZ3VhZ2UgaW1wbGllcyB3ZSBzaG91bGQgYXZvaWQgc3RhdGljICpoZWxwZXIqIGZ1bmN0aW9ucyB0aGF0IGFyZSBpbmxpbmVkLiBCdXQgYGZ1c2VfZGV2X2ZsdXNoYCBpcyBhc3NpZ25lZCB0byBhIGZ1bmN0aW9uIHBvaW50ZXIsIGAuZmx1c2hgLCBpbiBgZnVzZV9kZXZfb3BlcmF0aW9uc2AuIEl04oCZcyBub3QgYW4gaW50ZXJuYWwgaGVscGVyLCBpdCBoYXMgYSBkaXN0aW5jdCBhZGRyZXNzLiBJdCBjYW4ndCBiZSBpbmxpbmVkLiBTbywgY2FuIHdlIGFjdHVhbGx5ICppbmNsdWRlKiBzdGF0aWMgZnVuY3Rpb25zIHVzZWQgYXMgZnVuY3Rpb24gcG9pbnRlcnMsIGV2ZW4gdGhvdWdoIHRoZXkgKmFyZSogc3RhdGljPyBMZXTigJlzIGNoZWNrLiBZdXAsIGl04oCZcyBiZWluZyBwYXNzZWQgYXMgYSBmdW5jdGlvbiBwb2ludGVyLCBkZWZpbml0ZWx5IG5vdCBpbmxpbmVkLiBPa2F5LCBzbyB0aGF0IG1lYW5zIGBmdXNlX2Rldl9mbHVzaGAgaXMgaW4hXG5cbkxldCBtZSByZXZpZXcgdGhlIHBhdGNoLiBJdCBtb2RpZmllcyBgZnVzZV9nZXRfZGV2YCwgYGZ1c2VfZGV2X3JlbGVhc2VgLCBgZnVzZV9kZXZfZmx1c2hgLCBhbmQgaW50cm9kdWNlcyB0aGUgc3RhdGljIGhlbHBlciBgZnVzZV9kZXZfYWxsX2Nsb3NpbmdgLiBTbywgYEZvY3VzU3ltYm9sc2A6IGBmdXNlX2dldF9kZXZgLCBgZnVzZV9kZXZfcmVsZWFzZWAsIGFuZCBgZnVzZV9kZXZfZmx1c2hgLlxuXG5BbHJpZ2h0LCBsZXQncyB2ZXJpZnkuIGBmdXNlX2dldF9kZXZgIGlzIGRlY2xhcmVkIGluIGBmdXNlX2Rldl9pLmhgIGFuZCBkZWZpbmVkIGluIGBkZXYuY2AsIHNvIGl0J3Mgbm9uLXN0YXRpYy4gYGZ1c2VfZGV2X3JlbGVhc2VgIGlzIGV4cG9ydGVkIGFzIHdlbGwuIGBmdXNlX2Rldl9mbHVzaGAgaXMgc3RhdGljLCBidXQgd2UndmUgYWxyZWFkeSBjb25maXJtZWQgaXQncyByZWFjaGFibGUgYXMgYSBmdW5jdGlvbiBwb2ludGVyLlxuXG5BbnkgcmVsZXZhbnQgY29uZmlndXJhdGlvbnM/IGBGVVNFX0ZTYCBzZWVtcyB0byBiZSB0aGUgb25seSBvbmUuXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBsZXQncyBjb25maXJtIHRoZSBzdGF0aWMgbmF0dXJlIG9mIGBmdXNlX2Rldl9mbHVzaGA6IFllcCwgYHN0YXRpYyBpbnQgZnVzZV9kZXZfZmx1c2goLi4uKWAuIEFuZCBgZnVzZV9kZXZfYWxsX2Nsb3NpbmdgOiBgc3RhdGljIGJvb2wgZnVzZV9kZXZfYWxsX2Nsb3NpbmcoLi4uKWAuIENvbmZpcm1lZC5cblxuVGhlcmVmb3JlLCB0aGUgbWFpbiBmdW5jdGlvbnMgdG8gZm9jdXMgb24gYXJlIGBmdXNlX2dldF9kZXZgLCBgZnVzZV9kZXZfcmVsZWFzZWAsIGFuZCBgZnVzZV9kZXZfZmx1c2hgLlxuXG5Ob3csIHJlYWNoYWJpbGl0eS4gSXMgYGZ1c2VfZGV2X2ZsdXNoYCBjYWxsZWQ/IEFic29sdXRlbHksIHZpYSBgZmlscF9jbG9zZWAgd2hpY2ggY2FsbHMgdGhlIGBmX29wLVx1MDAzZWZsdXNoYCBmdW5jdGlvbi4gYGZ1c2VfZGV2X3JlbGVhc2VgPyBZdXAsIHZpYSBgZnB1dGAsIHdoaWNoIGNhbGxzIGBmX29wLVx1MDAzZXJlbGVhc2VgLiBBbmQgYGZ1c2VfZ2V0X2RldmA/IEl0J3MgY2FsbGVkIGZvciByZWFkLCB3cml0ZSwgcG9sbCwgYW5kIG90aGVyIG9wZXJhdGlvbnMgb24gYC9kZXYvZnVzZWAuXG5cblNvLCB0aGUgb3ZlcmFsbCByZWFzb25pbmcgaXMgdGhhdCB0aGlzIHBhdGNoIGNoYW5nZXMgdGhlIEZVU0UgZGV2aWNlIGRyaXZlciBkaXNjb25uZWN0aW9uIGxvZ2ljIGZvciBgL2Rldi9mdXNlYC4gSXQgYWRkcyBhIGBmbHVzaGAgb3BlcmF0aW9uIChgZnVzZV9kZXZfZmx1c2hgKSBmb3IgdGhlIGZpbmFsIGNsb3NlIGFuZCBjaGFubmVsIHN0YXRlIHRyYW5zaXRpb24gdG8gYEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEYC4gSXQgY2hhbmdlcyBgZnVzZV9nZXRfZGV2YCBhbmQgYGZ1c2VfZGV2X3JlbGVhc2VgIHRvIGhhbmRsZSB0aGlzIG5ldyBzdGF0ZSBhbmQgYWJvcnQgdGhlIGNoYW5uZWwgaWYgYWxsIGRldmljZXMgYXJlIGNsb3NpbmcuIFRoaXMgaXMgYSBjcnVjaWFsIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEZVU0UgZHJpdmVyLCBhY2Nlc3NpYmxlIGZyb20gdXNlcnNwYWNlIHRocm91Z2ggYC9kZXYvZnVzZWAsIGFuZCB0aGVyZWZvcmUgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcuXG5cbkZpbmFsbHksIGBGVVNFX0ZTYCBpcyB0aGUgcmVsZXZhbnQgY29uZmlnLiBMZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2s6IHllcCwgdGhhdCBlbmFibGVzIHRoZSBjb21waWxhdGlvbiBvZiBgZGV2LmNgLCB3aGljaCBjb250YWlucyB0aGVzZSBmdW5jdGlvbnMuIFRoYXQncyBpdCFcblxuXG4iLCJJbnB1dFRva2VucyI6MTIxNjQsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MjYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwODo0MDoxOS41MjA3NDg2OTRaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxNjEzMzc1MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmdXNlLXkuKmRldi5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2Z1c2UvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZnVzZS9NYWtlZmlsZT0xMz1mdXNlLXkgOj0gdHJhY2Uub1xcdCMgcHV0IHRyYWNlLm8gZmlyc3Qgc28gd2Ugc2VlIGZ0cmFjZSBlcnJvcnMgc29vbmVyXFxuZnMvZnVzZS9NYWtlZmlsZToxNDpmdXNlLXkgKz0gZGV2Lm8gZGlyLm8gZmlsZS5vIGlub2RlLm8gY29udHJvbC5vIHhhdHRyLm8gYWNsLm8gcmVhZGRpci5vIGlvY3RsLm8gcmVxX3RpbWVvdXQubyByZXEub1xcbmZzL2Z1c2UvTWFrZWZpbGUtMTUtZnVzZS15ICs9IHBvbGwubyBub3RpZnkub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwODo0MDoxOS44MzY4OTAwMDZaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTI1OTAzMjI5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBGVVNFIERldmljZSBEcml2ZXIgQ2hhbmdlKipcblxuT2theSwgc28gbG9va2luZyBhdCB0aGlzLCBpdCdzIHByZXR0eSBjbGVhciB0aGF0IGBkZXYub2AgaXMgaW5kZWVkIGNvbXBpbGVkIGludG8gdGhlIGtlcm5lbCB3aGVuIGBDT05GSUdfRlVTRV9GU2AgaXMgZW5hYmxlZC4gVGhhdCdzIHRoZSBiYXNlbGluZS5cblxuTXkgaW1tZWRpYXRlIHRha2Vhd2F5IGlzIHRoYXQgdGhpcyBwYXRjaCBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuIFRoZSBrZXkgc3ltYm9scyB0aGF0IGp1bXAgb3V0IGF0IG1lIGFyZSBgZnVzZV9nZXRfZGV2YCwgYGZ1c2VfZGV2X3JlbGVhc2VgLCBhbmQgdGhlIG5ld2x5IGludHJvZHVjZWQgYGZ1c2VfZGV2X2ZsdXNoYC4gVGhpcyBpcyBiZWNhdXNlIHRoZSBwYXRjaCBmdW5kYW1lbnRhbGx5IGFsdGVycyBob3cgdGhlIEZVU0UgZGV2aWNlIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBgL2Rldi9mdXNlYCBpbnRlcmZhY2UsIGhhbmRsZXMgY2hhbm5lbCBkaXNjb25uZWN0aW9uLlxuXG5UaGUgYWRkaXRpb24gb2YgYGZ1c2VfZGV2X2ZsdXNoYCBpcyBwYXJ0aWN1bGFybHkgaW50ZXJlc3RpbmcuIEl0IHN1Z2dlc3RzIGEgbW9yZSByZWZpbmVkIHN0YXRlIG1hbmFnZW1lbnQgZHVyaW5nIHRoZSBmaW5hbCBjbG9zZSBzZXF1ZW5jZSwgbW92aW5nIHRoZSBjaGFubmVsIGludG8gYSBgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURURgIHN0YXRlLiBUaGUgbW9kaWZpY2F0aW9ucyB0byBgZnVzZV9nZXRfZGV2YCBhbmQgYGZ1c2VfZGV2X3JlbGVhc2VgIHRvIGFjY29tbW9kYXRlIHRoaXMgbmV3IHN0YXRlIGFuZCBwb3RlbnRpYWwgYWJvcnQgc2NlbmFyaW9zIGluZGljYXRlIHNpZ25pZmljYW50IGNoYW5nZXMgdG8gY29yZSBjaGFubmVsIG1hbmFnZW1lbnQgbG9naWMuXG5cbkVzc2VudGlhbGx5LCB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZGlyZWN0bHkgaW1wYWN0aW5nIHVzZXItc3BhY2UgaW50ZXJhY3Rpb25zIHZpYSBgL2Rldi9mdXNlYCwgbWFraW5nIGl0IGEgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBuZXcgY29kZSBwYXRocyByZWxhdGVkIHRvIGNvbm5lY3Rpb24gbGlmZWN5Y2xlIGFuZCBlcnJvciBoYW5kbGluZywgbWFraW5nIGl0IGEgY3JpdGljYWwgYXJlYSB0byBwcm9iZSBmb3IgdnVsbmVyYWJpbGl0aWVzLlxuXG5JJ20gY29uZmlkZW50IGluIHRoaXMgYW5hbHlzaXMuIEknbSBnb2luZyB0byBjYWxsIGBzZXQtcmVzdWx0c2AgdG8gY29uZmlybSBhbmQgbW92ZSBmb3J3YXJkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzkxMywiT3V0cHV0VG9rZW5zIjoxNzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDg6NDA6MjUuMDk1OTI3NzM5WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzEzMDY2NDUyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJGVVNFX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZnVzZV9nZXRfZGV2XCIsXG4gICAgXCJmdXNlX2Rldl9yZWxlYXNlXCIsXG4gICAgXCJmdXNlX2Rldl9mbHVzaFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjaGFubmVsIGRpc2Nvbm5lY3Rpb24gbG9naWMgaW4gdGhlIEZVU0UgZGV2aWNlIGRyaXZlciAoL2Rldi9mdXNlKS4gSXQgaW50cm9kdWNlcyBhIG5ldyBmbHVzaCBvcGVyYXRpb24gKGZ1c2VfZGV2X2ZsdXNoKSB0byBoYW5kbGUgZmluYWwgY2xvc2UgYW5kIHRyYW5zaXRpb24gdGhlIGNoYW5uZWwgc3RhdGUgdG8gRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQuIEl0IGFsc28gbW9kaWZpZXMgZnVzZV9nZXRfZGV2IGFuZCBmdXNlX2Rldl9yZWxlYXNlIHRvIGhhbmRsZSB0aGlzIG5ldyBzdGF0ZSBhbmQgYWJvcnQgdGhlIGNoYW5uZWwgaWYgYWxsIGRldmljZXMgYXJlIGNsb3NpbmcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBGVVNFIGRyaXZlciwgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSAvZGV2L2Z1c2Ugb3BlcmF0aW9ucywgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRlVTRV9GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImZ1c2VfZ2V0X2RldlwiLFxuICAgIFwiZnVzZV9kZXZfcmVsZWFzZVwiLFxuICAgIFwiZnVzZV9kZXZfZmx1c2hcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY2hhbm5lbCBkaXNjb25uZWN0aW9uIGxvZ2ljIGluIHRoZSBGVVNFIGRldmljZSBkcml2ZXIgKC9kZXYvZnVzZSkuIEl0IGludHJvZHVjZXMgYSBuZXcgZmx1c2ggb3BlcmF0aW9uIChmdXNlX2Rldl9mbHVzaCkgdG8gaGFuZGxlIGZpbmFsIGNsb3NlIGFuZCB0cmFuc2l0aW9uIHRoZSBjaGFubmVsIHN0YXRlIHRvIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVELiBJdCBhbHNvIG1vZGlmaWVzIGZ1c2VfZ2V0X2RldiBhbmQgZnVzZV9kZXZfcmVsZWFzZSB0byBoYW5kbGUgdGhpcyBuZXcgc3RhdGUgYW5kIGFib3J0IHRoZSBjaGFubmVsIGlmIGFsbCBkZXZpY2VzIGFyZSBjbG9zaW5nLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgRlVTRSBkcml2ZXIsIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgL2Rldi9mdXNlIG9wZXJhdGlvbnMsIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowcj6jx[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-25 08:15:24 +0000 UTC FinishedAt: 2026-07-25 08:40:27 +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": "8cdeaa50eae8dad34885515f62559ee83e7e8dda", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "FUSE_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "8cdeaa50eae8dad34885515f62559ee83e7e8dda", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "FUSE_FS" ], "series_id": "75595d91-d3f1-4e79-98f5-b83eeb79ae98" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "fuse_get_dev", "fuse_dev_release", "fuse_dev_flush" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": { "findings": [ "0c2890de-1b7a-4718-a188-a597ff4d74a7" ] } } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjM5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0ZVU0VfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtmdXNlX2dldF9kZXYmIzM0OywKICAgICYjMzQ7ZnVzZV9kZXZfcmVsZWFzZSYjMzQ7LAogICAgJiMzNDtmdXNlX2Rldl9mbHVzaCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY2hhbm5lbCBkaXNjb25uZWN0aW9uIGxvZ2ljIGluIHRoZSBGVVNFIGRldmljZSBkcml2ZXIgKC9kZXYvZnVzZSkuIEl0IGludHJvZHVjZXMgYSBuZXcgZmx1c2ggb3BlcmF0aW9uIChmdXNlX2Rldl9mbHVzaCkgdG8gaGFuZGxlIGZpbmFsIGNsb3NlIGFuZCB0cmFuc2l0aW9uIHRoZSBjaGFubmVsIHN0YXRlIHRvIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVELiBJdCBhbHNvIG1vZGlmaWVzIGZ1c2VfZ2V0X2RldiBhbmQgZnVzZV9kZXZfcmVsZWFzZSB0byBoYW5kbGUgdGhpcyBuZXcgc3RhdGUgYW5kIGFib3J0IHRoZSBjaGFubmVsIGlmIGFsbCBkZXZpY2VzIGFyZSBjbG9zaW5nLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgRlVTRSBkcml2ZXIsIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgL2Rldi9mdXNlIG9wZXJhdGlvbnMsIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjM5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYjk4YWE5ZDljMjEyODUxZTdjNjk5ZjdlNTQwZWZlOTIyMzAwMzFiZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVsIDI1IDA4OjM5OjIyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2Z1c2UvZGV2LmMgYi9mcy9mdXNlL2Rldi5jXG5pbmRleCA1NzYzYTdjZDNiMzdmYS4uOGIxNGM3ZDU3YTAxMTkgMTAwNjQ0XG4tLS0gYS9mcy9mdXNlL2Rldi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9mdXNlL2Rldi5jXG5AQCAtMTY2MiwxOCAmIzQzOzE2NjIsMjMgQEAgc3RhdGljIGludCBmdXNlX2Rldl9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxuIHN0cnVjdCBmdXNlX2RldiAqZnVzZV9nZXRfZGV2KHN0cnVjdCBmaWxlICpmaWxlKVxuIHtcbiBcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9maWxlX3RvX2Z1ZChmaWxlKTtcbiYjNDM7XHRzdHJ1Y3QgZnVzZV9jaGFuICpmY2ggPSBmdXNlX2Rldl9jaGFuX2dldChmdWQpO1xuIFx0aW50IGVycjtcbiBcbi1cdGlmICh1bmxpa2VseSghZnVzZV9kZXZfY2hhbl9nZXQoZnVkKSkpIHtcbiYjNDM7XHRpZiAodW5saWtlbHkoIWZjaCkpIHtcbiBcdFx0Lyogb25seSBibG9jayB3YWl0aW5nIGZvciBtb3VudCBpZiBzeW5jIGluaXQgd2FzIHJlcXVlc3RlZCAqL1xuIFx0XHRpZiAoIWZ1ZC1cdTAwM2VzeW5jX2luaXQpXG4gXHRcdFx0cmV0dXJuIEVSUl9QVFIoLUVQRVJNKTtcbiBcbi1cdFx0ZXJyID0gd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlKGZ1c2VfZGV2X3dhaXRxLCBmdXNlX2Rldl9jaGFuX2dldChmdWQpICE9IE5VTEwpO1xuJiM0MztcdFx0ZXJyID0gd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlKGZ1c2VfZGV2X3dhaXRxLFxuJiM0MztcdFx0XHRcdFx0ICAgICAgIChmY2ggPSBmdXNlX2Rldl9jaGFuX2dldChmdWQpKSAhPSBOVUxMKTtcbiBcdFx0aWYgKGVycilcbiBcdFx0XHRyZXR1cm4gRVJSX1BUUihlcnIpO1xuIFx0fVxuIFxuJiM0MztcdGlmICh1bmxpa2VseShmY2ggPT0gRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQpKVxuJiM0MztcdFx0cmV0dXJuIEVSUl9QVFIoLUVQRVJNKTtcbiYjNDM7XG4gXHRyZXR1cm4gZnVkO1xuIH1cbiBcbkBAIC0yMjExLDE3ICYjNDM7MjIxNiwzMSBAQCB2b2lkIGZ1c2VfY2hhbl93YWl0X2Fib3J0ZWQoc3RydWN0IGZ1c2VfY2hhbiAqZmNoKVxuIFx0ZnVzZV91cmluZ193YWl0X3N0b3BwZWRfcXVldWVzKGZjaCk7XG4gfVxuIFxuJiM0MztzdGF0aWMgYm9vbCBmdXNlX2Rldl9hbGxfY2xvc2luZyhzdHJ1Y3QgZnVzZV9jaGFuICpmY2gpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgZnVzZV9kZXYgKnBvcztcbiYjNDM7XG4mIzQzO1x0bG9ja2RlcF9hc3NlcnRfaGVsZChcdTAwMjZmY2gtXHUwMDNlbG9jayk7XG4mIzQzO1xuJiM0MztcdGxpc3RfZm9yX2VhY2hfZW50cnkocG9zLCBcdTAwMjZmY2gtXHUwMDNlZGV2aWNlcywgZW50cnkpIHtcbiYjNDM7XHRcdGlmICghcG9zLVx1MDAzZWNsb3NpbmcpXG4mIzQzO1x0XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XHR9XG4mIzQzO1x0cmV0dXJuIHRydWU7XG4mIzQzO31cbiYjNDM7XG4gaW50IGZ1c2VfZGV2X3JlbGVhc2Uoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXG4ge1xuIFx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBmdXNlX2ZpbGVfdG9fZnVkKGZpbGUpO1xuIFx0LyogUGFpcnMgd2l0aCBjbXB4Y2hnKCkgaW4gZnVzZV9kZXZfaW5zdGFsbCgpICovXG4gXHRzdHJ1Y3QgZnVzZV9jaGFuICpmY2ggPSB4Y2hnKFx1MDAyNmZ1ZC1cdTAwM2VjaGFuLCBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCk7XG4gXG4tXHRpZiAoZmNoKSB7XG4mIzQzO1x0aWYgKGZjaCBcdTAwMjZcdTAwMjYgZmNoICE9IEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEKSB7XG4gXHRcdHN0cnVjdCBmdXNlX3BxdWV1ZSAqZnBxID0gXHUwMDI2ZnVkLVx1MDAzZXBxO1xuIFx0XHRMSVNUX0hFQUQodG9fZW5kKTtcbiBcdFx0dW5zaWduZWQgaW50IGk7XG4gXHRcdGJvb2wgbGFzdDtcbiYjNDM7XHRcdGJvb2wgYWJvcnQ7XG4gXG4gXHRcdC8qIE1ha2Ugc3VyZSBmdXNlX2Rldl9pbnN0YWxsX3dpdGhfcHEoKSBoYXMgZmluaXNoZWQgKi9cbiBcdFx0c3Bpbl9sb2NrKFx1MDAyNmZjaC1cdTAwM2Vsb2NrKTtcbkBAIC0yMjM0LDE0ICYjNDM7MjI1MywxNSBAQCBpbnQgZnVzZV9kZXZfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbiBcdFx0bGlzdF9kZWwoXHUwMDI2ZnVkLVx1MDAzZWVudHJ5KTtcbiBcdFx0LyogQXJlIHdlIHRoZSBsYXN0IG9wZW4gZGV2aWNlPyAqL1xuIFx0XHRsYXN0ID0gbGlzdF9lbXB0eShcdTAwMjZmY2gtXHUwMDNlZGV2aWNlcyk7XG4mIzQzO1x0XHRhYm9ydCA9IGZjaC1cdTAwM2Vjb25uZWN0ZWQgXHUwMDI2XHUwMDI2IGZ1c2VfZGV2X2FsbF9jbG9zaW5nKGZjaCk7XG4gXHRcdHNwaW5fdW5sb2NrKFx1MDAyNmZjaC1cdTAwM2Vsb2NrKTtcbiBcbiBcdFx0ZnVzZV9kZXZfZW5kX3JlcXVlc3RzKFx1MDAyNnRvX2VuZCk7XG4gXG4tXHRcdGlmIChsYXN0KSB7XG4mIzQzO1x0XHRpZiAobGFzdClcbiBcdFx0XHRXQVJOX09OKGZjaC1cdTAwM2VpcS5mYXN5bmMgIT0gTlVMTCk7XG4mIzQzO1x0XHRpZiAoYWJvcnQpXG4gXHRcdFx0ZnVzZV9jaGFuX2Fib3J0KGZjaCwgZmFsc2UpO1xuLVx0XHR9XG4gXHRcdGZ1c2VfY29ubl9wdXQoZmNoLVx1MDAzZWNvbm4pO1xuIFx0fVxuIFx0ZnVzZV9kZXZfcHV0KGZ1ZCk7XG5AQCAtMjM3NSw2ICYjNDM7MjM5NSwzNCBAQCBzdGF0aWMgdm9pZCBmdXNlX2Rldl9zaG93X2ZkaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgc3RydWN0IGZpbGUgKmZpbGUpXG4gfVxuICNlbmRpZlxuIFxuJiM0MztzdGF0aWMgaW50IGZ1c2VfZGV2X2ZsdXNoKHN0cnVjdCBmaWxlICpmaWxlLCBmbF9vd25lcl90IGlkKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBmdXNlX2ZpbGVfdG9fZnVkKGZpbGUpO1xuJiM0MztcdHN0cnVjdCBmdXNlX2NoYW4gKmZjaDtcbiYjNDM7XHRib29sIGFib3J0O1xuJiM0MztcbiYjNDM7XHRpZiAoZmlsZV9jb3VudChmaWxlKSAhPSAxKVxuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogQXRvbWljYWxseSB0cmFuc2l0aW9uIGZ1ZC1cdTAwM2VjaGFuIGZyb20gTlVMTCB0byBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRFxuJiM0MztcdCAqIG9uIGZpbmFsIGNsb3NlIHRvIHByZXZlbnQgYSBsYXRlciBmdXNlX2Rldl9pbnN0YWxsKCkgZnJvbSBzdWNjZWVkaW5nLlxuJiM0MztcdCAqL1xuJiM0MztcdGZjaCA9IGNtcHhjaGcoXHUwMDI2ZnVkLVx1MDAzZWNoYW4sIE5VTEwsIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEKTtcbiYjNDM7XHRpZiAoIWZjaCB8fCBmY2ggPT0gRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQpXG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XG4mIzQzO1x0c3Bpbl9sb2NrKFx1MDAyNmZjaC1cdTAwM2Vsb2NrKTtcbiYjNDM7XHRmdWQtXHUwMDNlY2xvc2luZyA9IHRydWU7XG4mIzQzO1x0YWJvcnQgPSBmY2gtXHUwMDNlY29ubmVjdGVkIFx1MDAyNlx1MDAyNiBmdXNlX2Rldl9hbGxfY2xvc2luZyhmY2gpO1xuJiM0MztcdHNwaW5fdW5sb2NrKFx1MDAyNmZjaC1cdTAwM2Vsb2NrKTtcbiYjNDM7XG4mIzQzO1x0aWYgKGFib3J0KVxuJiM0MztcdFx0ZnVzZV9jaGFuX2Fib3J0KGZjaCwgZmFsc2UpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZ1c2VfZGV2X29wZXJhdGlvbnMgPSB7XG4gXHQub3duZXJcdFx0PSBUSElTX01PRFVMRSxcbiBcdC5vcGVuXHRcdD0gZnVzZV9kZXZfb3BlbixcbkBAIC0yMzgzLDYgJiM0MzsyNDMxLDcgQEAgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmdXNlX2Rldl9vcGVyYXRpb25zID0ge1xuIFx0LndyaXRlX2l0ZXJcdD0gZnVzZV9kZXZfd3JpdGUsXG4gXHQuc3BsaWNlX3dyaXRlXHQ9IGZ1c2VfZGV2X3NwbGljZV93cml0ZSxcbiBcdC5wb2xsXHRcdD0gZnVzZV9kZXZfcG9sbCxcbiYjNDM7XHQuZmx1c2hcdFx0PSBmdXNlX2Rldl9mbHVzaCxcbiBcdC5yZWxlYXNlXHQ9IGZ1c2VfZGV2X3JlbGVhc2UsXG4gXHQuZmFzeW5jXHRcdD0gZnVzZV9kZXZfZmFzeW5jLFxuIFx0LnVubG9ja2VkX2lvY3RsID0gZnVzZV9kZXZfaW9jdGwsXG5kaWZmIC0tZ2l0IGEvZnMvZnVzZS9mdXNlX2Rldl9pLmggYi9mcy9mdXNlL2Z1c2VfZGV2X2kuaFxuaW5kZXggNjY4YzgzOTFkNjFjMDMuLjI4MzNhMDM1MGM0MzVhIDEwMDY0NFxuLS0tIGEvZnMvZnVzZS9mdXNlX2Rldl9pLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2Z1c2UvZnVzZV9kZXZfaS5oXG5AQCAtMzAyLDYgJiM0MzszMDIsOSBAQCBzdHJ1Y3QgZnVzZV9kZXYge1xuIFx0LyoqIEBzeW5jX2luaXQ6IElzc3VlIEZVU0VfSU5JVCBzeW5jaHJvbm91c2x5ICovXG4gXHRib29sIHN5bmNfaW5pdDtcbiBcbiYjNDM7XHQvKiogQGNsb3Npbmc6IEZpbmFsIGNsb3NlIGhhcyBzdGFydGVkLCBwcm90ZWN0ZWQgYnkgY2hhbi1cdTAwM2Vsb2NrICovXG4mIzQzO1x0Ym9vbCBjbG9zaW5nO1xuJiM0MztcbiBcdC8qKiBAY2hhbjogRnVzZSBjaGFubmVsIGZvciB0aGlzIGRldmljZSAqL1xuIFx0c3RydWN0IGZ1c2VfY2hhbiAqY2hhbjtcbiBcbkBAIC0zMzAsMTcgJiM0MzszMzMsMjUgQEAgc3RydWN0IGZ1c2VfY29weV9zdGF0ZSB7XG4gXHR9IHJpbmc7XG4gfTtcbiBcbi0vKiBmdWQtXHUwMDNlY2hhbiBnZXRzIGFzc2lnbmVkIHRvIHRoaXMgdmFsdWUgd2hlbiAvZGV2L2Z1c2UgaXMgY2xvc2VkICovXG4tI2RlZmluZSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCAoKHN0cnVjdCBmdXNlX2NoYW4gKikgMSlcbi1cbiAvKlxuLSAqIExvY2tsZXNzIGFjY2VzcyBpcyBPSywgYmVjYXVzZSBmdWQtXHUwMDNlY2hhbiBpcyBzZXQgb25jZSBkdXJpbmcgbW91bnQgYW5kIGlzIHZhbGlkXG4tICogdW50aWwgdGhlIGZpbGUgaXMgcmVsZWFzZWQuXG4mIzQzOyAqIGZ1ZC1cdTAwM2VjaGFuIGhhcyB0aGUgZm9sbG93aW5nIG1vbm90b25pYyBzdGF0ZSB0cmFuc2l0aW9uczpcbiYjNDM7ICpcbiYjNDM7ICogTlVMTCAtXHUwMDNlIHZhbGlkIGNoYW5uZWwgLVx1MDAzZSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRFxuJiM0MzsgKiBOVUxMIC0tLS0tLS0tLS0tLS0tLS0tXHUwMDNlIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEXG4gICpcbi0gKiBmdWQtXHUwMDNlY2hhbiBpcyBzZXQgdG8gRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQgb25seSBhZnRlciB0aGUgY29udGFpbmluZyBmaWxlIGlzXG4tICogcmVsZWFzZWQsIHNvIHJlc3VsdCBpcyBzYWZlIHRvIGRlcmVmZXJlbmNlIGluIG1vc3QgY2FzZXMuICBFeGNlcHRpb25zIGFyZTpcbi0gKiBmdXNlX2Rldl9wdXQoKSBhbmQgZnVzZV9maWxsX3N1cGVyX2NvbW1vbigpLlxuJiM0MzsgKiBBIHZhbGlkIGNoYW5uZWwgcG9pbnRlciByZW1haW5zIHZhbGlkIHVudGlsIHRoZSBmaWxlIGlzIHJlbGVhc2VkLiBGaW5hbFxuJiM0MzsgKiBmbHVzaCBjYW4gaW5zdGFsbCBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCBkaXJlY3RseSBmb3IgYW4gdW5pbnN0YWxsZWRcbiYjNDM7ICogZGV2aWNlLCBwcmV2ZW50aW5nIGFueSBsYXRlciBjaGFubmVsIGluc3RhbGxhdGlvbi4gVGhlIHNlbnRpbmVsIHRoZXJlZm9yZVxuJiM0MzsgKiBtZWFucyB0aGF0IHRoZSBjaGFubmVsIGNhbiBubyBsb25nZXIgYmUgaW5zdGFsbGVkIG9yIGFjY2Vzc2VkIHRocm91Z2ggdGhpc1xuJiM0MzsgKiBmaWxlOyBpdCBkb2VzIG5vdCBpbXBseSB0aGF0IHJlbGVhc2UgaGFzIGFscmVhZHkgcnVuIGFuZCBpdCBtdXN0IG5ldmVyIGJlXG4mIzQzOyAqIGRlcmVmZXJlbmNlZC5cbiYjNDM7ICpcbiYjNDM7ICogZnVzZV9kZXZfY2hhbl9nZXQoKSByZWFkcyB0aGlzIHN0YXRlIGxvY2tsZXNzbHkuIENhbGxlcnMgbXVzdCBkaXN0aW5ndWlzaFxuJiM0MzsgKiBOVUxMLCBhIHZhbGlkIGNoYW5uZWwgcG9pbnRlciwgYW5kIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEIGJlZm9yZVxuJiM0MzsgKiBkZXJlZmVyZW5jaW5nIHRoZSByZXN1bHQuXG4gICovXG4mIzQzOyNkZWZpbmUgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQgKChzdHJ1Y3QgZnVzZV9jaGFuICopIDEpXG4mIzQzO1xuIHN0YXRpYyBpbmxpbmUgc3RydWN0IGZ1c2VfY2hhbiAqZnVzZV9kZXZfY2hhbl9nZXQoc3RydWN0IGZ1c2VfZGV2ICpmdWQpXG4ge1xuIFx0LyogUGFpcnMgd2l0aCB4Y2hnKCkgaW4gZnVzZV9kZXZfaW5zdGFsbCgpICovXG5AQCAtMzU1LDggJiM0MzszNjYsOSBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBmdXNlX2RldiAqZnVzZV9maWxlX3RvX2Z1ZChzdHJ1Y3QgZmlsZSAqZmlsZSlcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCBmdXNlX2RldiAqX19mdXNlX2dldF9kZXYoc3RydWN0IGZpbGUgKmZpbGUpXG4ge1xuIFx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBmdXNlX2ZpbGVfdG9fZnVkKGZpbGUpO1xuJiM0MztcdHN0cnVjdCBmdXNlX2NoYW4gKmZjaCA9IGZ1c2VfZGV2X2NoYW5fZ2V0KGZ1ZCk7XG4gXG4tXHRpZiAoIWZ1c2VfZGV2X2NoYW5fZ2V0KGZ1ZCkpXG4mIzQzO1x0aWYgKCFmY2ggfHwgZmNoID09IEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEKVxuIFx0XHRyZXR1cm4gTlVMTDtcbiBcbiBcdHJldHVybiBmdWQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6Mzk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0ZVU0VfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtmdXNlX2dldF9kZXYmIzM0OywKICAgICYjMzQ7ZnVzZV9kZXZfcmVsZWFzZSYjMzQ7LAogICAgJiMzNDtmdXNlX2Rldl9mbHVzaCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY2hhbm5lbCBkaXNjb25uZWN0aW9uIGxvZ2ljIGluIHRoZSBGVVNFIGRldmljZSBkcml2ZXIgKC9kZXYvZnVzZSkuIEl0IGludHJvZHVjZXMgYSBuZXcgZmx1c2ggb3BlcmF0aW9uIChmdXNlX2Rldl9mbHVzaCkgdG8gaGFuZGxlIGZpbmFsIGNsb3NlIGFuZCB0cmFuc2l0aW9uIHRoZSBjaGFubmVsIHN0YXRlIHRvIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVELiBJdCBhbHNvIG1vZGlmaWVzIGZ1c2VfZ2V0X2RldiBhbmQgZnVzZV9kZXZfcmVsZWFzZSB0byBoYW5kbGUgdGhpcyBuZXcgc3RhdGUgYW5kIGFib3J0IHRoZSBjaGFubmVsIGlmIGFsbCBkZXZpY2VzIGFyZSBjbG9zaW5nLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgRlVTRSBkcml2ZXIsIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgL2Rldi9mdXNlIG9wZXJhdGlvbnMsIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYjk4YWE5ZDljMjEyODUxZTdjNjk5ZjdlNTQwZWZlOTIyMzAwMzFiZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgSnVsIDI1IDA4OjM5OjIyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZnMvZnVzZS9kZXYuYyBiL2ZzL2Z1c2UvZGV2LmMKaW5kZXggNTc2M2E3Y2QzYjM3ZmEuLjhiMTRjN2Q1N2EwMTE5IDEwMDY0NAotLS0gYS9mcy9mdXNlL2Rldi5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2Z1c2UvZGV2LmMKQEAgLTE2NjIsMTggJiM0MzsxNjYyLDIzIEBAIHN0YXRpYyBpbnQgZnVzZV9kZXZfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKIHN0cnVjdCBmdXNlX2RldiAqZnVzZV9nZXRfZGV2KHN0cnVjdCBmaWxlICpmaWxlKQogewogCXN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9maWxlX3RvX2Z1ZChmaWxlKTsKJiM0MzsJc3RydWN0IGZ1c2VfY2hhbiAqZmNoID0gZnVzZV9kZXZfY2hhbl9nZXQoZnVkKTsKIAlpbnQgZXJyOwogCi0JaWYgKHVubGlrZWx5KCFmdXNlX2Rldl9jaGFuX2dldChmdWQpKSkgewomIzQzOwlpZiAodW5saWtlbHkoIWZjaCkpIHsKIAkJLyogb25seSBibG9jayB3YWl0aW5nIGZvciBtb3VudCBpZiBzeW5jIGluaXQgd2FzIHJlcXVlc3RlZCAqLwogCQlpZiAoIWZ1ZC0mZ3Q7c3luY19pbml0KQogCQkJcmV0dXJuIEVSUl9QVFIoLUVQRVJNKTsKIAotCQllcnIgPSB3YWl0X2V2ZW50X2ludGVycnVwdGlibGUoZnVzZV9kZXZfd2FpdHEsIGZ1c2VfZGV2X2NoYW5fZ2V0KGZ1ZCkgIT0gTlVMTCk7CiYjNDM7CQllcnIgPSB3YWl0X2V2ZW50X2ludGVycnVwdGlibGUoZnVzZV9kZXZfd2FpdHEsCiYjNDM7CQkJCQkgICAgICAgKGZjaCA9IGZ1c2VfZGV2X2NoYW5fZ2V0KGZ1ZCkpICE9IE5VTEwpOwogCQlpZiAoZXJyKQogCQkJcmV0dXJuIEVSUl9QVFIoZXJyKTsKIAl9CiAKJiM0MzsJaWYgKHVubGlrZWx5KGZjaCA9PSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCkpCiYjNDM7CQlyZXR1cm4gRVJSX1BUUigtRVBFUk0pOwomIzQzOwogCXJldHVybiBmdWQ7CiB9CiAKQEAgLTIyMTEsMTcgJiM0MzsyMjE2LDMxIEBAIHZvaWQgZnVzZV9jaGFuX3dhaXRfYWJvcnRlZChzdHJ1Y3QgZnVzZV9jaGFuICpmY2gpCiAJZnVzZV91cmluZ193YWl0X3N0b3BwZWRfcXVldWVzKGZjaCk7CiB9CiAKJiM0MztzdGF0aWMgYm9vbCBmdXNlX2Rldl9hbGxfY2xvc2luZyhzdHJ1Y3QgZnVzZV9jaGFuICpmY2gpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgZnVzZV9kZXYgKnBvczsKJiM0MzsKJiM0MzsJbG9ja2RlcF9hc3NlcnRfaGVsZCgmYW1wO2ZjaC0mZ3Q7bG9jayk7CiYjNDM7CiYjNDM7CWxpc3RfZm9yX2VhY2hfZW50cnkocG9zLCAmYW1wO2ZjaC0mZ3Q7ZGV2aWNlcywgZW50cnkpIHsKJiM0MzsJCWlmICghcG9zLSZndDtjbG9zaW5nKQomIzQzOwkJCXJldHVybiBmYWxzZTsKJiM0MzsJfQomIzQzOwlyZXR1cm4gdHJ1ZTsKJiM0Mzt9CiYjNDM7CiBpbnQgZnVzZV9kZXZfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKIHsKIAlzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IGZ1c2VfZmlsZV90b19mdWQoZmlsZSk7CiAJLyogUGFpcnMgd2l0aCBjbXB4Y2hnKCkgaW4gZnVzZV9kZXZfaW5zdGFsbCgpICovCiAJc3RydWN0IGZ1c2VfY2hhbiAqZmNoID0geGNoZygmYW1wO2Z1ZC0mZ3Q7Y2hhbiwgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQpOwogCi0JaWYgKGZjaCkgewomIzQzOwlpZiAoZmNoICZhbXA7JmFtcDsgZmNoICE9IEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEKSB7CiAJCXN0cnVjdCBmdXNlX3BxdWV1ZSAqZnBxID0gJmFtcDtmdWQtJmd0O3BxOwogCQlMSVNUX0hFQUQodG9fZW5kKTsKIAkJdW5zaWduZWQgaW50IGk7CiAJCWJvb2wgbGFzdDsKJiM0MzsJCWJvb2wgYWJvcnQ7CiAKIAkJLyogTWFrZSBzdXJlIGZ1c2VfZGV2X2luc3RhbGxfd2l0aF9wcSgpIGhhcyBmaW5pc2hlZCAqLwogCQlzcGluX2xvY2soJmFtcDtmY2gtJmd0O2xvY2spOwpAQCAtMjIzNCwxNCAmIzQzOzIyNTMsMTUgQEAgaW50IGZ1c2VfZGV2X3JlbGVhc2Uoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpCiAJCWxpc3RfZGVsKCZhbXA7ZnVkLSZndDtlbnRyeSk7CiAJCS8qIEFyZSB3ZSB0aGUgbGFzdCBvcGVuIGRldmljZT8gKi8KIAkJbGFzdCA9IGxpc3RfZW1wdHkoJmFtcDtmY2gtJmd0O2RldmljZXMpOwomIzQzOwkJYWJvcnQgPSBmY2gtJmd0O2Nvbm5lY3RlZCAmYW1wOyZhbXA7IGZ1c2VfZGV2X2FsbF9jbG9zaW5nKGZjaCk7CiAJCXNwaW5fdW5sb2NrKCZhbXA7ZmNoLSZndDtsb2NrKTsKIAogCQlmdXNlX2Rldl9lbmRfcmVxdWVzdHMoJmFtcDt0b19lbmQpOwogCi0JCWlmIChsYXN0KSB7CiYjNDM7CQlpZiAobGFzdCkKIAkJCVdBUk5fT04oZmNoLSZndDtpcS5mYXN5bmMgIT0gTlVMTCk7CiYjNDM7CQlpZiAoYWJvcnQpCiAJCQlmdXNlX2NoYW5fYWJvcnQoZmNoLCBmYWxzZSk7Ci0JCX0KIAkJZnVzZV9jb25uX3B1dChmY2gtJmd0O2Nvbm4pOwogCX0KIAlmdXNlX2Rldl9wdXQoZnVkKTsKQEAgLTIzNzUsNiAmIzQzOzIzOTUsMzQgQEAgc3RhdGljIHZvaWQgZnVzZV9kZXZfc2hvd19mZGluZm8oc3RydWN0IHNlcV9maWxlICpzZXEsIHN0cnVjdCBmaWxlICpmaWxlKQogfQogI2VuZGlmCiAKJiM0MztzdGF0aWMgaW50IGZ1c2VfZGV2X2ZsdXNoKHN0cnVjdCBmaWxlICpmaWxlLCBmbF9vd25lcl90IGlkKQomIzQzO3sKJiM0MzsJc3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBmdXNlX2ZpbGVfdG9fZnVkKGZpbGUpOwomIzQzOwlzdHJ1Y3QgZnVzZV9jaGFuICpmY2g7CiYjNDM7CWJvb2wgYWJvcnQ7CiYjNDM7CiYjNDM7CWlmIChmaWxlX2NvdW50KGZpbGUpICE9IDEpCiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsKJiM0MzsJLyoKJiM0MzsJICogQXRvbWljYWxseSB0cmFuc2l0aW9uIGZ1ZC0mZ3Q7Y2hhbiBmcm9tIE5VTEwgdG8gRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQKJiM0MzsJICogb24gZmluYWwgY2xvc2UgdG8gcHJldmVudCBhIGxhdGVyIGZ1c2VfZGV2X2luc3RhbGwoKSBmcm9tIHN1Y2NlZWRpbmcuCiYjNDM7CSAqLwomIzQzOwlmY2ggPSBjbXB4Y2hnKCZhbXA7ZnVkLSZndDtjaGFuLCBOVUxMLCBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCk7CiYjNDM7CWlmICghZmNoIHx8IGZjaCA9PSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCkKJiM0MzsJCXJldHVybiAwOwomIzQzOwomIzQzOwlzcGluX2xvY2soJmFtcDtmY2gtJmd0O2xvY2spOwomIzQzOwlmdWQtJmd0O2Nsb3NpbmcgPSB0cnVlOwomIzQzOwlhYm9ydCA9IGZjaC0mZ3Q7Y29ubmVjdGVkICZhbXA7JmFtcDsgZnVzZV9kZXZfYWxsX2Nsb3NpbmcoZmNoKTsKJiM0MzsJc3Bpbl91bmxvY2soJmFtcDtmY2gtJmd0O2xvY2spOwomIzQzOwomIzQzOwlpZiAoYWJvcnQpCiYjNDM7CQlmdXNlX2NoYW5fYWJvcnQoZmNoLCBmYWxzZSk7CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZnVzZV9kZXZfb3BlcmF0aW9ucyA9IHsKIAkub3duZXIJCT0gVEhJU19NT0RVTEUsCiAJLm9wZW4JCT0gZnVzZV9kZXZfb3BlbiwKQEAgLTIzODMsNiAmIzQzOzI0MzEsNyBAQCBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZ1c2VfZGV2X29wZXJhdGlvbnMgPSB7CiAJLndyaXRlX2l0ZXIJPSBmdXNlX2Rldl93cml0ZSwKIAkuc3BsaWNlX3dyaXRlCT0gZnVzZV9kZXZfc3BsaWNlX3dyaXRlLAogCS5wb2xsCQk9IGZ1c2VfZGV2X3BvbGwsCiYjNDM7CS5mbHVzaAkJPSBmdXNlX2Rldl9mbHVzaCwKIAkucmVsZWFzZQk9IGZ1c2VfZGV2X3JlbGVhc2UsCiAJLmZhc3luYwkJPSBmdXNlX2Rldl9mYXN5bmMsCiAJLnVubG9ja2VkX2lvY3RsID0gZnVzZV9kZXZfaW9jdGwsCmRpZmYgLS1naXQgYS9mcy9mdXNlL2Z1c2VfZGV2X2kuaCBiL2ZzL2Z1c2UvZnVzZV9kZXZfaS5oCmluZGV4IDY2OGM4MzkxZDYxYzAzLi4yODMzYTAzNTBjNDM1YSAxMDA2NDQKLS0tIGEvZnMvZnVzZS9mdXNlX2Rldl9pLmgKJiM0MzsmIzQzOyYjNDM7IGIvZnMvZnVzZS9mdXNlX2Rldl9pLmgKQEAgLTMwMiw2ICYjNDM7MzAyLDkgQEAgc3RydWN0IGZ1c2VfZGV2IHsKIAkvKiogQHN5bmNfaW5pdDogSXNzdWUgRlVTRV9JTklUIHN5bmNocm9ub3VzbHkgKi8KIAlib29sIHN5bmNfaW5pdDsKIAomIzQzOwkvKiogQGNsb3Npbmc6IEZpbmFsIGNsb3NlIGhhcyBzdGFydGVkLCBwcm90ZWN0ZWQgYnkgY2hhbi0mZ3Q7bG9jayAqLwomIzQzOwlib29sIGNsb3Npbmc7CiYjNDM7CiAJLyoqIEBjaGFuOiBGdXNlIGNoYW5uZWwgZm9yIHRoaXMgZGV2aWNlICovCiAJc3RydWN0IGZ1c2VfY2hhbiAqY2hhbjsKIApAQCAtMzMwLDE3ICYjNDM7MzMzLDI1IEBAIHN0cnVjdCBmdXNlX2NvcHlfc3RhdGUgewogCX0gcmluZzsKIH07CiAKLS8qIGZ1ZC0mZ3Q7Y2hhbiBnZXRzIGFzc2lnbmVkIHRvIHRoaXMgdmFsdWUgd2hlbiAvZGV2L2Z1c2UgaXMgY2xvc2VkICovCi0jZGVmaW5lIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEICgoc3RydWN0IGZ1c2VfY2hhbiAqKSAxKQotCiAvKgotICogTG9ja2xlc3MgYWNjZXNzIGlzIE9LLCBiZWNhdXNlIGZ1ZC0mZ3Q7Y2hhbiBpcyBzZXQgb25jZSBkdXJpbmcgbW91bnQgYW5kIGlzIHZhbGlkCi0gKiB1bnRpbCB0aGUgZmlsZSBpcyByZWxlYXNlZC4KJiM0MzsgKiBmdWQtJmd0O2NoYW4gaGFzIHRoZSBmb2xsb3dpbmcgbW9ub3RvbmljIHN0YXRlIHRyYW5zaXRpb25zOgomIzQzOyAqCiYjNDM7ICogTlVMTCAtJmd0OyB2YWxpZCBjaGFubmVsIC0mZ3Q7IEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVECiYjNDM7ICogTlVMTCAtLS0tLS0tLS0tLS0tLS0tLSZndDsgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQKICAqCi0gKiBmdWQtJmd0O2NoYW4gaXMgc2V0IHRvIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEIG9ubHkgYWZ0ZXIgdGhlIGNvbnRhaW5pbmcgZmlsZSBpcwotICogcmVsZWFzZWQsIHNvIHJlc3VsdCBpcyBzYWZlIHRvIGRlcmVmZXJlbmNlIGluIG1vc3QgY2FzZXMuICBFeGNlcHRpb25zIGFyZToKLSAqIGZ1c2VfZGV2X3B1dCgpIGFuZCBmdXNlX2ZpbGxfc3VwZXJfY29tbW9uKCkuCiYjNDM7ICogQSB2YWxpZCBjaGFubmVsIHBvaW50ZXIgcmVtYWlucyB2YWxpZCB1bnRpbCB0aGUgZmlsZSBpcyByZWxlYXNlZC4gRmluYWwKJiM0MzsgKiBmbHVzaCBjYW4gaW5zdGFsbCBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCBkaXJlY3RseSBmb3IgYW4gdW5pbnN0YWxsZWQKJiM0MzsgKiBkZXZpY2UsIHByZXZlbnRpbmcgYW55IGxhdGVyIGNoYW5uZWwgaW5zdGFsbGF0aW9uLiBUaGUgc2VudGluZWwgdGhlcmVmb3JlCiYjNDM7ICogbWVhbnMgdGhhdCB0aGUgY2hhbm5lbCBjYW4gbm8gbG9uZ2VyIGJlIGluc3RhbGxlZCBvciBhY2Nlc3NlZCB0aHJvdWdoIHRoaXMKJiM0MzsgKiBmaWxlOyBpdCBkb2VzIG5vdCBpbXBseSB0aGF0IHJlbGVhc2UgaGFzIGFscmVhZHkgcnVuIGFuZCBpdCBtdXN0IG5ldmVyIGJlCiYjNDM7ICogZGVyZWZlcmVuY2VkLgomIzQzOyAqCiYjNDM7ICogZnVzZV9kZXZfY2hhbl9nZXQoKSByZWFkcyB0aGlzIHN0YXRlIGxvY2tsZXNzbHkuIENhbGxlcnMgbXVzdCBkaXN0aW5ndWlzaAomIzQzOyAqIE5VTEwsIGEgdmFsaWQgY2hhbm5lbCBwb2ludGVyLCBhbmQgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQgYmVmb3JlCiYjNDM7ICogZGVyZWZlcmVuY2luZyB0aGUgcmVzdWx0LgogICovCiYjNDM7I2RlZmluZSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCAoKHN0cnVjdCBmdXNlX2NoYW4gKikgMSkKJiM0MzsKIHN0YXRpYyBpbmxpbmUgc3RydWN0IGZ1c2VfY2hhbiAqZnVzZV9kZXZfY2hhbl9nZXQoc3RydWN0IGZ1c2VfZGV2ICpmdWQpCiB7CiAJLyogUGFpcnMgd2l0aCB4Y2hnKCkgaW4gZnVzZV9kZXZfaW5zdGFsbCgpICovCkBAIC0zNTUsOCAmIzQzOzM2Niw5IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGZ1c2VfZGV2ICpmdXNlX2ZpbGVfdG9fZnVkKHN0cnVjdCBmaWxlICpmaWxlKQogc3RhdGljIGlubGluZSBzdHJ1Y3QgZnVzZV9kZXYgKl9fZnVzZV9nZXRfZGV2KHN0cnVjdCBmaWxlICpmaWxlKQogewogCXN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9maWxlX3RvX2Z1ZChmaWxlKTsKJiM0MzsJc3RydWN0IGZ1c2VfY2hhbiAqZmNoID0gZnVzZV9kZXZfY2hhbl9nZXQoZnVkKTsKIAotCWlmICghZnVzZV9kZXZfY2hhbl9nZXQoZnVkKSkKJiM0MzsJaWYgKCFmY2ggfHwgZmNoID09IEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEKQogCQlyZXR1cm4gTlVMTDsKIAogCXJldHVybiBmdWQ7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxMTMKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAzNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRlVTRSBEZXZpY2UgRHJpdmVyIFBhdGNoIEFuYWx5c2lzIGFuZCBGdXp6aW5nIFN0cmF0ZWd5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgRlVTRSBkZXZpY2UgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIGAvZGV2L2Z1c2VgIGhhbmRsaW5nLiBJdCYjMzk7cyB0b3VjaGluZyBgZnMvZnVzZS9kZXYuY2AgYW5kIGBmcy9mdXNlL2Z1c2VfZGV2X2kuaGAsIHdoaWNoIGlzIGFsd2F5cyBpbnRlcmVzdGluZy4gVGhpcyBzZWVtcyBsaWtlIGEgZnVuY3Rpb25hbCBjaGFuZ2Ug4oCTIGFkZGluZyBhIGAuZmx1c2hgIG9wZXJhdGlvbiAoYGZ1c2VfZGV2X2ZsdXNoYCkgdG8gdGhlIGBmdXNlX2Rldl9vcGVyYXRpb25zYCBzdHJ1Y3QuICBJdCYjMzk7cyBhbHNvIG1vZGlmeWluZyBob3cgdGhlIGRyaXZlciBkZWFscyB3aXRoIGBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRGAgYW5kIGhvdyBpdCBoYW5kbGVzIGNoYW5uZWwgY2xvc3VyZSB1c2luZyBgZnVzZV9kZXZfYWxsX2Nsb3NpbmdgIGluIGBmdXNlX2Rldl9yZWxlYXNlYC4gR2l2ZW4gdGhlIHNjb3BlIG9mIHRoZXNlIGNoYW5nZXMsIHRoaXMgaXMgKmRlZmluaXRlbHkqIHdvcnRoIGZ1enppbmcuIFdlIG5lZWQgdG8gbG9jayBkb3duIGEgZ29vZCBmdXp6aW5nIHN0cmF0ZWd5LgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgd2Ugc2hvdWxkIGZvY3VzIG91ciBmdXp6aW5nIGVmZm9ydHMgb24gc3BlY2lmaWMgZnVuY3Rpb25zLiBMZXQmIzM5O3Mgc2VlLi4uIHRoZSBwYXRjaCBtb2RpZmllczogYGZ1c2VfZ2V0X2RldmAsIGBmdXNlX2Rldl9hbGxfY2xvc2luZ2AsIGBmdXNlX2Rldl9yZWxlYXNlYCwgYGZ1c2VfZGV2X2ZsdXNoYCwgYW5kIGBfX2Z1c2VfZ2V0X2RldmAuIFRoZSBmdW5jdGlvbnMgdGhhdCBhcmUgZW50cnkgcG9pbnRzIGZvciBmdXp6aW5nIGxvb2sgbGlrZTogYGZ1c2VfZGV2X2ZsdXNoYCAod2hpY2ggd2lsbCBiZSBjYWxsZWQgdmlhIHRoZSBgZmlscF9jbG9zZWAgcGF0aCksIGBmdXNlX2Rldl9yZWxlYXNlYCAodHJpZ2dlcmVkIGJ5IGBmcHV0YCBhbmQgdGhlcmVmb3JlIGBmX29wLSZndDtyZWxlYXNlYCksIGFuZCBgZnVzZV9nZXRfZGV2YCAoY2FsbGVkIGZyb20gYSB2YXJpZXR5IG9mIHBsYWNlcywgbmFtZWx5IGlvY3RscywgcmVhZHMsIGFuZCB3cml0ZXMgd2l0aGluIGBmdXNlX2Rldl9vcGVyYXRpb25zYCkuIFRoZXNlIGFyZSB0aGUga2V5IGludGVyZmFjZXMgdGhhdCBzZWVtIHRvIGJlIGltcGFjdGVkLgoKTmV4dCBzdGVwOiBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBjYWxsIHNpdGVzIG9mIGBmdXNlX2dldF9kZXZgLi4uIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyB1c2luZyBpdCBhbmQgaG93LiBXZSYjMzk7bGwgYmUgYWJsZSB0byByZWZpbmUgb3VyIGZ1enppbmcgYXBwcm9hY2ggZnJvbSB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwODozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmdXNlX2dldF9kZXYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9mdXNlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9mdXNlL2N1c2UuYz01NTU9c3RhdGljIGludCBjdXNlX2NoYW5uZWxfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbmZzL2Z1c2UvY3VzZS5jLTU1Ni17XG5mcy9mdXNlL2N1c2UuYzo1NTc6XHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IF9fZnVzZV9nZXRfZGV2KGZpbGUpO1xuZnMvZnVzZS9jdXNlLmMtNTU4LVx0c3RydWN0IGN1c2VfY29ubiAqY2MgPSBmY190b19jYyhmdWQtXHUwMDNlY2hhbi1cdTAwM2Vjb25uKTtcbi0tXG5mcy9mdXNlL2Rldi5jPTE2NTE9c3RhdGljIGludCBmdXNlX2Rldl9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxuLS1cbmZzL2Z1c2UvZGV2LmMtMTY2MS1cbmZzL2Z1c2UvZGV2LmM6MTY2MjpzdHJ1Y3QgZnVzZV9kZXYgKmZ1c2VfZ2V0X2RldihzdHJ1Y3QgZmlsZSAqZmlsZSlcbmZzL2Z1c2UvZGV2LmMtMTY2My17XG4tLVxuZnMvZnVzZS9kZXYuYz0xNjg1PXN0YXRpYyBzc2l6ZV90IGZ1c2VfZGV2X3JlYWQoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKnRvKVxuLS1cbmZzL2Z1c2UvZGV2LmMtMTY4OC1cdHN0cnVjdCBmaWxlICpmaWxlID0gaW9jYi1cdTAwM2VraV9maWxwO1xuZnMvZnVzZS9kZXYuYzoxNjg5Olx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBmdXNlX2dldF9kZXYoZmlsZSk7XG5mcy9mdXNlL2Rldi5jLTE2OTAtXG4tLVxuZnMvZnVzZS9kZXYuYz0xNzAyPXN0YXRpYyBzc2l6ZV90IGZ1c2VfZGV2X3NwbGljZV9yZWFkKHN0cnVjdCBmaWxlICppbiwgbG9mZl90ICpwcG9zLFxuLS1cbmZzL2Z1c2UvZGV2LmMtMTcwOS1cdHN0cnVjdCBmdXNlX2NvcHlfc3RhdGUgY3M7XG5mcy9mdXNlL2Rldi5jOjE3MTA6XHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IGZ1c2VfZ2V0X2Rldihpbik7XG5mcy9mdXNlL2Rldi5jLTE3MTEtXG4tLVxuZnMvZnVzZS9kZXYuYz0xOTczPXN0YXRpYyBzc2l6ZV90IGZ1c2VfZGV2X3dyaXRlKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tKVxuLS1cbmZzL2Z1c2UvZGV2LmMtMTk3NS1cdHN0cnVjdCBmdXNlX2NvcHlfc3RhdGUgY3M7XG5mcy9mdXNlL2Rldi5jOjE5NzY6XHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IF9fZnVzZV9nZXRfZGV2KGlvY2ItXHUwMDNla2lfZmlscCk7XG5mcy9mdXNlL2Rldi5jLTE5NzctXG4tLVxuZnMvZnVzZS9kZXYuYz0xOTg5PXN0YXRpYyBzc2l6ZV90IGZ1c2VfZGV2X3NwbGljZV93cml0ZShzdHJ1Y3QgcGlwZV9pbm9kZV9pbmZvICpwaXBlLFxuLS1cbmZzL2Z1c2UvZGV2LmMtMTk5Ny1cdHN0cnVjdCBmdXNlX2NvcHlfc3RhdGUgY3M7XG5mcy9mdXNlL2Rldi5jOjE5OTg6XHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IF9fZnVzZV9nZXRfZGV2KG91dCk7XG5mcy9mdXNlL2Rldi5jLTE5OTktXHRzaXplX3QgcmVtO1xuLS1cbmZzL2Z1c2UvZGV2LmM9MjA4MT1zdGF0aWMgX19wb2xsX3QgZnVzZV9kZXZfcG9sbChzdHJ1Y3QgZmlsZSAqZmlsZSwgcG9sbF90YWJsZSAqd2FpdClcbi0tXG5mcy9mdXNlL2Rldi5jLTIwODQtXHRzdHJ1Y3QgZnVzZV9pcXVldWUgKmZpcTtcbmZzL2Z1c2UvZGV2LmM6MjA4NTpcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9nZXRfZGV2KGZpbGUpO1xuZnMvZnVzZS9kZXYuYy0yMDg2LVxuLS1cbmZzL2Z1c2UvZGV2LmM9MjI3Mj1zdGF0aWMgaW50IGZ1c2VfZGV2X2Zhc3luYyhpbnQgZmQsIHN0cnVjdCBmaWxlICpmaWxlLCBpbnQgb24pXG5mcy9mdXNlL2Rldi5jLTIyNzMte1xuZnMvZnVzZS9kZXYuYzoyMjc0Olx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBmdXNlX2dldF9kZXYoZmlsZSk7XG5mcy9mdXNlL2Rldi5jLTIyNzUtXG4tLVxuZnMvZnVzZS9kZXYuYz0yMjgzPXN0YXRpYyBsb25nIGZ1c2VfZGV2X2lvY3RsX2Nsb25lKHN0cnVjdCBmaWxlICpmaWxlLCBfX3UzMiBfX3VzZXIgKmFyZ3ApXG4tLVxuZnMvZnVzZS9kZXYuYy0yMzAyLVxuZnMvZnVzZS9kZXYuYzoyMzAzOlx0ZnVkID0gZnVzZV9nZXRfZGV2KGZkX2ZpbGUoZikpO1xuZnMvZnVzZS9kZXYuYy0yMzA0LVx0aWYgKElTX0VSUihmdWQpKVxuLS1cbmZzL2Z1c2UvZGV2LmM9MjMxOD1zdGF0aWMgbG9uZyBmdXNlX2Rldl9pb2N0bF9iYWNraW5nX29wZW4oc3RydWN0IGZpbGUgKmZpbGUsXG4tLVxuZnMvZnVzZS9kZXYuYy0yMzIwLXtcbmZzL2Z1c2UvZGV2LmM6MjMyMTpcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9nZXRfZGV2KGZpbGUpO1xuZnMvZnVzZS9kZXYuYy0yMzIyLVx0c3RydWN0IGZ1c2VfYmFja2luZ19tYXAgbWFwO1xuLS1cbmZzL2Z1c2UvZGV2LmM9MjMzNj1zdGF0aWMgbG9uZyBmdXNlX2Rldl9pb2N0bF9iYWNraW5nX2Nsb3NlKHN0cnVjdCBmaWxlICpmaWxlLCBfX3UzMiBfX3VzZXIgKmFyZ3ApXG5mcy9mdXNlL2Rldi5jLTIzMzcte1xuZnMvZnVzZS9kZXYuYzoyMzM4Olx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBmdXNlX2dldF9kZXYoZmlsZSk7XG5mcy9mdXNlL2Rldi5jLTIzMzktXHRpbnQgYmFja2luZ19pZDtcbi0tXG5mcy9mdXNlL2Rldi5jPTIzODg9c3RhdGljIHZvaWQgZnVzZV9kZXZfc2hvd19mZGluZm8oc3RydWN0IHNlcV9maWxlICpzZXEsIHN0cnVjdCBmaWxlICpmaWxlKVxuZnMvZnVzZS9kZXYuYy0yMzg5LXtcbmZzL2Z1c2UvZGV2LmM6MjM5MDpcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gX19mdXNlX2dldF9kZXYoZmlsZSk7XG5mcy9mdXNlL2Rldi5jLTIzOTEtXHRpZiAoIWZ1ZClcbi0tXG5mcy9mdXNlL2Rldl91cmluZy5jPTEyMTc9aW50IGZ1c2VfdXJpbmdfY21kKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCwgdW5zaWduZWQgaW50IGlzc3VlX2ZsYWdzKVxuLS1cbmZzL2Z1c2UvZGV2X3VyaW5nLmMtMTIzMi1cbmZzL2Z1c2UvZGV2X3VyaW5nLmM6MTIzMzpcdGZ1ZCA9IGZ1c2VfZ2V0X2RldihjbWQtXHUwMDNlZmlsZSk7XG5mcy9mdXNlL2Rldl91cmluZy5jLTEyMzQtXHRpZiAoSVNfRVJSKGZ1ZCkpIHtcbi0tXG5mcy9mdXNlL2Z1c2VfZGV2X2kuaD0zNjE9c3RhdGljIGlubGluZSBzdHJ1Y3QgZnVzZV9kZXYgKmZ1c2VfZmlsZV90b19mdWQoc3RydWN0IGZpbGUgKmZpbGUpXG4tLVxuZnMvZnVzZS9mdXNlX2Rldl9pLmgtMzY1LVxuZnMvZnVzZS9mdXNlX2Rldl9pLmg6MzY2OnN0YXRpYyBpbmxpbmUgc3RydWN0IGZ1c2VfZGV2ICpfX2Z1c2VfZ2V0X2RldihzdHJ1Y3QgZmlsZSAqZmlsZSlcbmZzL2Z1c2UvZnVzZV9kZXZfaS5oLTM2Ny17XG4tLVxuZnMvZnVzZS9mdXNlX2Rldl9pLmg9Mzc3PXZvaWQgZnVzZV9pcXVldWVfaW5pdChzdHJ1Y3QgZnVzZV9pcXVldWUgKmZpcSwgY29uc3Qgc3RydWN0IGZ1c2VfaXF1ZXVlX29wcyAqb3BzLCB2b2lkICpwcml2KTtcbmZzL2Z1c2UvZnVzZV9kZXZfaS5oLTM3OC1cbmZzL2Z1c2UvZnVzZV9kZXZfaS5oOjM3OTpzdHJ1Y3QgZnVzZV9kZXYgKmZ1c2VfZ2V0X2RldihzdHJ1Y3QgZmlsZSAqZmlsZSk7XG5mcy9mdXNlL2Z1c2VfZGV2X2kuaC0zODAtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjU1MQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDI3MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZVU0UgRGV2aWNlIERyaXZlciBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgZG93biB0aGlzIHBhdGNoLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaWRlbnRpZnkgdGhlIGtleSBmdW5jdGlvbnMgYmVpbmcgbW9kaWZpZWQgYW5kIGhvdyB0aGV5IGludGVyYWN0LiBJdCBsb29rcyBsaWtlIHdlJiMzOTtyZSB0b3VjaGluZyBgZnVzZV9nZXRfZGV2YCwgYF9fZnVzZV9nZXRfZGV2YCwgYGZ1c2VfZGV2X3JlbGVhc2VgLCBhbmQgYWRkaW5nIGEgbmV3IGZ1bmN0aW9uLCBgZnVzZV9kZXZfZmx1c2hgLiBTaW5jZSBgZnVzZV9kZXZfZmx1c2hgIGlzIHN0YXRpYywgSSBjYW4mIzM5O3QgZGlyZWN0bHkgdGFyZ2V0IGl0LiBIb3dldmVyLCBpdCYjMzk7cyB0cmlnZ2VyZWQgdGhyb3VnaCB0aGUgYGZsdXNoYCBmaWxlIG9wZXJhdGlvbiBvbiBgL2Rldi9mdXNlYCwgc28gaXQmIzM5O3MgcmVsZXZhbnQgY29udGV4dC4KCmBmdXNlX2Rldl9yZWxlYXNlYCBpcyBhbHNvIGltcG9ydGFudCwgYXMgaXQmIzM5O3MgY29ubmVjdGVkIHRvIHRoZSBgcmVsZWFzZWAgZmlsZSBvcGVyYXRpb24gb24gYC9kZXYvZnVzZWAuIE5vdywgYGZ1c2VfZ2V0X2RldmAgaXMgdXNlZCBleHRlbnNpdmVseSBpbiBhIHZhcmlldHkgb2Ygb3BlcmF0aW9ucyBvbiBgL2Rldi9mdXNlYCwgbGlrZSBgZnVzZV9kZXZfcmVhZGAsIGBmdXNlX2Rldl93cml0ZWAsIGBmdXNlX2Rldl9wb2xsYCwgYGZ1c2VfZGV2X2Zhc3luY2AsIGFuZCBgZnVzZV9kZXZfaW9jdGxfY2xvbmVgIHRvIG5hbWUgYSBmZXcuIFRoYXQgZ2l2ZXMgdXMgYSBnb29kIHNldCBvZiBzdGFydGluZyBwb2ludHM6IGBmdXNlX2Rldl9yZWxlYXNlYCwgYWxvbmcgd2l0aCBgZnVzZV9kZXZfcmVhZGAsIGBmdXNlX2Rldl93cml0ZWAsIGBmdXNlX2Rldl9wb2xsYCwgYGZ1c2VfZGV2X2Zhc3luY2AsIGFuZCBgZnVzZV9kZXZfaW9jdGxfY2xvbmVgLgoKQnV0IHdhaXQsIGlzIGBmdXNlX2dldF9kZXZgIGV4cG9ydGVkPyBBaCwgeWVzLCBpdCYjMzk7cyBub3Qgc3RhdGljOyBpdCYjMzk7cyBhIG5vbi1zdGF0aWMgZnVuY3Rpb24hIFRoYXQgb3BlbnMgdXAgcG9zc2liaWxpdGllcy4gQW5kIGBmdXNlX2Rldl9yZWxlYXNlYCBpcyBhbHNvIG5vbi1zdGF0aWMuIEdvb2QuIEJlZm9yZSBkaXZpbmcgZnVydGhlciBpbnRvIHRoZSBjb2RlLCBJIHNob3VsZCBwcm9iYWJseSBjaGVjayBpZiBGVVNFIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB3ZSBuZWVkIHRvIGxvb2sgZm9yIGEgY29uZmlndXJhdGlvbiBvcHRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEZVU0VfRlMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9mdXNlL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZnVzZS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5mcy9mdXNlL0tjb25maWc6Mjpjb25maWcgRlVTRV9GU1xuZnMvZnVzZS9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtGVVNFIChGaWxlc3lzdGVtIGluIFVzZXJzcGFjZSkgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcyOTQKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA3OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBicmVha2Rvd24gb2Ygd2hhdCBJJiMzOTttIGxvb2tpbmcgYXQsIGZyb20gbXkgZXhwZXJ0IHBlcnNwZWN0aXZlOgoKKipJbnZlc3RpZ2F0aW5nIEZVU0UgQ29uZmlndXJhdGlvbiBhbmQgT3BlcmF0aW9ucyoqCgpSaWdodCwgc28gd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCB0aGUgRlVTRSBmaWxlIHN5c3RlbSBkcml2ZXIsIGFuZCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb24gaXMgY2xlYXJseSBgRlVTRV9GU2AuIExldCBtZSBmaXJzdCBjb25maXJtIGlmIHRoZXJlIGFyZSBhbnkgKm90aGVyKiByZWxhdGVkIGNvbmZpZ3MgdGhhdCBtaWdodCBiZSByZWxldmFudCBoZXJlIOKAkyBJIGRvbiYjMzk7dCB3YW50IHRvIG1pc3MgYW55dGhpbmcuCgpPa2F5LCBsZXQmIzM5O3Mgc2VlLiBUaGUgY2hhbmdlcyBhcmUgZm9jdXNlZCBvbiBgZnMvZnVzZS9kZXYuY2AgYW5kIGBmcy9mdXNlL2Z1c2VfZGV2X2kuaGAuIEludGVyZXN0aW5nLi4uIE5vIG5ldyBjb25maWcgb3B0aW9ucyBhcmUgYmVpbmcgaW50cm9kdWNlZCwgc28gdGhhdCYjMzk7cyBoZWxwZnVsIGluZm9ybWF0aW9uLgoKTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZyBhdCB0aGUgY29yZSBsZXZlbC4gTXkgZm9jdXMgc2hpZnRzIHRvIHRoZSBgZnVzZV9kZXZfb3BlcmF0aW9uc2Agc3RydWN0dXJlIGRlZmluZWQgd2l0aGluIGBmcy9mdXNlL2Rldi5jYC4gVGhpcyBpcyB3aGVyZSB0aGUgY3J1Y2lhbCBjYWxsYmFja3MgYW5kIGludGVyZmFjZSBkZWZpbml0aW9ucyBsaXZlIGZvciBkZXZpY2UtYmFzZWQgRlVTRSBtb3VudHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBvcGVyYXRpb25zIGFyZSBkZWZpbmVkIGFuZCBpZiB0aGVzZSBzdHJ1Y3R1cmVzIGhhdmUgY2hhbmdlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwODozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZ1c2VfZGV2X29wZXJhdGlvbnMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9mdXNlL2Rldi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2Z1c2UvZGV2LmM9MjM5OD1zdGF0aWMgaW50IGZ1c2VfZGV2X2ZsdXNoKHN0cnVjdCBmaWxlICpmaWxlLCBmbF9vd25lcl90IGlkKVxuLS1cbmZzL2Z1c2UvZGV2LmMtMjQyNS1cbmZzL2Z1c2UvZGV2LmM6MjQyNjpjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZ1c2VfZGV2X29wZXJhdGlvbnMgPSB7XG5mcy9mdXNlL2Rldi5jLTI0MjctXHQub3duZXJcdFx0PSBUSElTX01PRFVMRSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwODozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NzM2CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZvY3VzaW5nIG9uIHRoZSBGVVNFIERldmljZSBJbnRlcmFjdGlvbnMqKgoKT2theSwgc28gSSBuZWVkIHRvIHplcm8gaW4gb24gdGhlIGNvcmUgaW50ZXJhY3Rpb25zIHdpdGggdGhlIEZVU0UgZGV2aWNlLiBMZXQmIzM5O3Mgc2VlLi4uIEkmIzM5O20gdGhpbmtpbmcgSSBzaG91bGQgc3RhcnQgd2l0aCB0aGVzZSBmdW5jdGlvbnM6IGBmdXNlX2Rldl9yZWxlYXNlYCwgYGZ1c2VfZ2V0X2RldmAsIGBmdXNlX2Rldl9yZWFkYCwgYGZ1c2VfZGV2X3dyaXRlYCwgYGZ1c2VfZGV2X3BvbGxgLCBhbmQgYGZ1c2VfZGV2X2Zhc3luY2AuIEkgaGF2ZSBhIGZlZWxpbmcgdGhhdCBgZnVzZV9nZXRfZGV2YCBhbmQgYGZ1c2VfZGV2X3JlbGVhc2VgIGFyZSB3b3J0aCBhIHNlY29uZCBsb29rLCBiZWNhdXNlIHRoZXkmIzM5O3JlIG5vbi1zdGF0aWMgd2hpY2ggaXMgaW1wb3J0YW50LCBidXQgYSBxdWljayBnbGFuY2UgbWFrZXMgbWUgdGhpbmsgdGhhdCBgZnVzZV9kZXZfcmVhZGAgaXMgc3RhdGljLCB3aGljaCBsaW1pdHMgaXRzIHV0aWxpdHkuIEkgbmVlZCB0byBtYWtlIGEgbm90ZSB0byBkb3VibGUtY2hlY2sgdGhhdCBgZnVzZV9kZXZfcmVhZGAgaXMgZGVmaW5pdGVseSBzdGF0aWMsIGJlY2F1c2UgdGhhdCBtaWdodCBiZSBtaXNsZWFkaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwODozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmdXNlX2Rldl9yZWFkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvZnVzZS9kZXYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9mdXNlL2Rldi5jPTE2NjI9c3RydWN0IGZ1c2VfZGV2ICpmdXNlX2dldF9kZXYoc3RydWN0IGZpbGUgKmZpbGUpXG4tLVxuZnMvZnVzZS9kZXYuYy0xNjg0LVxuZnMvZnVzZS9kZXYuYzoxNjg1OnN0YXRpYyBzc2l6ZV90IGZ1c2VfZGV2X3JlYWQoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKnRvKVxuZnMvZnVzZS9kZXYuYy0xNjg2LXtcbi0tXG5mcy9mdXNlL2Rldi5jPTI0MjY9Y29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmdXNlX2Rldl9vcGVyYXRpb25zID0ge1xuLS1cbmZzL2Z1c2UvZGV2LmMtMjQyOC1cdC5vcGVuXHRcdD0gZnVzZV9kZXZfb3BlbixcbmZzL2Z1c2UvZGV2LmM6MjQyOTpcdC5yZWFkX2l0ZXJcdD0gZnVzZV9kZXZfcmVhZCxcbmZzL2Z1c2UvZGV2LmMtMjQzMC1cdC5zcGxpY2VfcmVhZFx0PSBmdXNlX2Rldl9zcGxpY2VfcmVhZCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODMwMAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDEwNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGb2N1c2luZyBvbiBEZXZpY2UgSW50ZXJhY3Rpb24qKgoKT2theSwgc28gYGZ1c2VfZGV2X3JlYWRgIGlzIGRlZmluaXRlbHkgc3RhdGljLCB3aGljaCBzaW1wbGlmaWVzIHRoaW5ncy4gVGhhdCBtZWFucyB3ZSBjYW4gc2FmZWx5IHNoaWZ0IG91ciBhdHRlbnRpb24gdG8gYGZ1c2VfZ2V0X2RldmAgYW5kIGBmdXNlX2Rldl9yZWxlYXNlYC4gVGhvc2Ugc2VlbSBsaWtlIHRoZSBrZXkgcGxheWVycyBoZXJlLgoKTGV0JiMzOTtzIHF1aWNrbHkgY29uZmlybSB0aGF0IGBmdXNlX2Rldl9mbHVzaGAgaXMgYWxzbyBzdGF0aWMuIFl1cCwgc3RhdGljIHRvby4gVGhhdCBmdXJ0aGVyIG5hcnJvd3MgdGhlIHNjb3BlLiBXZSYjMzk7cmUgbG9va2luZyBmb3IgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gZGV2aWNlIG1hbmFnZW1lbnQuCgpBbHJpZ2h0LCBzbyB0aGUgc3RhbmRvdXRzIGFyZSBzdGlsbCBgZnVzZV9nZXRfZGV2YCBhbmQgYGZ1c2VfZGV2X3JlbGVhc2VgLiBJJiMzOTttIGdvaW5nIHRvIGRvdWJsZS1jaGVjayB0aG9zZSB0d28gYWdhaW4sIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZyBjcnVjaWFsLiBHb3R0YSBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZnVzZV9kZXZfcmVsZWFzZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2Z1c2UvZGV2LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZnVzZS9kZXYuYz00NTg9c3RhdGljIGJvb2wgZnVzZV9kZXZfaW5zdGFsbF93aXRoX3BxKHN0cnVjdCBmdXNlX2RldiAqZnVkLCBzdHJ1Y3QgZnVzZV9jaGFuICpmY2gsXG4tLVxuZnMvZnVzZS9kZXYuYy00NjUtXHQgKiBQYWlycyB3aXRoOlxuZnMvZnVzZS9kZXYuYzo0NjY6XHQgKiAgLSB4Y2hnKCkgaW4gZnVzZV9kZXZfcmVsZWFzZSgpXG5mcy9mdXNlL2Rldi5jLTQ2Ny1cdCAqICAtIHNtcF9sb2FkX2FjcXVpcmUoKSBpbiBmdXNlX2Rldl9mY19nZXQoKVxuLS1cbmZzL2Z1c2UvZGV2LmM9NTE0PXZvaWQgZnVzZV9kZXZfcHV0KHN0cnVjdCBmdXNlX2RldiAqZnVkKVxuLS1cbmZzL2Z1c2UvZGV2LmMtNTIyLVx0aWYgKGZjaCBcdTAwMjZcdTAwMjYgZmNoICE9IEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEKSB7XG5mcy9mdXNlL2Rldi5jOjUyMzpcdFx0LyogVGhpcyBpcyB0aGUgdmlydGlvZnMgY2FzZSAoZnVzZV9kZXZfcmVsZWFzZSgpIG5vdCBjYWxsZWQpICovXG5mcy9mdXNlL2Rldi5jLTUyNC1cdFx0c3Bpbl9sb2NrKFx1MDAyNmZjaC1cdTAwM2Vsb2NrKTtcbi0tXG5mcy9mdXNlL2Rldi5jPTIyMTk9c3RhdGljIGJvb2wgZnVzZV9kZXZfYWxsX2Nsb3Npbmcoc3RydWN0IGZ1c2VfY2hhbiAqZmNoKVxuLS1cbmZzL2Z1c2UvZGV2LmMtMjIzMS1cbmZzL2Z1c2UvZGV2LmM6MjIzMjppbnQgZnVzZV9kZXZfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbmZzL2Z1c2UvZGV2LmMtMjIzMy17XG4tLVxuZnMvZnVzZS9kZXYuYy0yMjY5LX1cbmZzL2Z1c2UvZGV2LmM6MjI3MDpFWFBPUlRfU1lNQk9MX0dQTChmdXNlX2Rldl9yZWxlYXNlKTtcbmZzL2Z1c2UvZGV2LmMtMjI3MS1cbi0tXG5mcy9mdXNlL2Rldi5jPTI0MjY9Y29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmdXNlX2Rldl9vcGVyYXRpb25zID0ge1xuLS1cbmZzL2Z1c2UvZGV2LmMtMjQzNC1cdC5mbHVzaFx0XHQ9IGZ1c2VfZGV2X2ZsdXNoLFxuZnMvZnVzZS9kZXYuYzoyNDM1Olx0LnJlbGVhc2VcdD0gZnVzZV9kZXZfcmVsZWFzZSxcbmZzL2Z1c2UvZGV2LmMtMjQzNi1cdC5mYXN5bmNcdFx0PSBmdXNlX2Rldl9mYXN5bmMsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkxMDQKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIFRob3VnaHRzIG9uIHRoZSBBUEkgRXhwb3J0cyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpbW1lZGlhdGVseSBrZXlpbmcgaW4gb24gdGhlc2UgdHdvIGZ1bmN0aW9ucyBiZWluZyBleHBvcnRlZDogYGZ1c2VfZGV2X3JlbGVhc2VgIGFuZCBgZnVzZV9nZXRfZGV2YC4gVGhhdCB0ZWxscyBtZSB0aGVzZSBhcmUgZnVuZGFtZW50YWwgY29tcG9uZW50cyBvZiB0aGUgRlVTRSAoRmlsZXN5c3RlbSBpbiBVc2Vyc3BhY2UpIGludGVyZmFjZSB3ZSYjMzk7cmUgd29ya2luZyB3aXRoLiBgZnVzZV9kZXZfcmVsZWFzZWAuLi4gdGhhdCYjMzk7cyBnb3QgdG8gYmUgdGhlIGZ1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciByZWxlYXNpbmcgYSBGVVNFIGRldmljZSwgY2xlYW5pbmcgdXAgcmVzb3VyY2VzLCBhbmQgcHJvcGVybHkgdW5yZWdpc3RlcmluZyBpdCwgbGlrZWx5IHdoZW4gYSBmaWxlc3lzdGVtIGlzIHVubW91bnRlZCBvciBnb2VzIG91dCBvZiBzY29wZS4gVGhhdCYjMzk7cyBhIGNydWNpYWwsIHByb2JhYmx5IGNvbXBsZXgsIGZ1bmN0aW9uLiBUaGVuIHdlIGhhdmUgYGZ1c2VfZ2V0X2RldmAuIFRoYXQgc291bmRzIGxpa2UgdGhlIGNvdW50ZXJwYXJ0LCB0aGUgZW50cnkgcG9pbnQsIHRoZSBmdW5jdGlvbiB1c2VkIHRvIHJldHJpZXZlIG9yIG9idGFpbiBhIEZVU0UgZGV2aWNlIOKAkyB0aGUgY29yZSBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBpbnRlcmFjdGlvbiBwb2ludCB3aXRoIHRoZSBGVVNFIHN1YnN5c3RlbS4gVGhpcyBzaWduYWxzIHRoYXQgdGhlcmUmIzM5O3MgYSBtYW5hZ2VkIGxpZmVjeWNsZSBmb3IgZGV2aWNlczsgdGhleSYjMzk7cmUgcHJvYmFibHkgYWNxdWlyZWQsIHVzZWQsIGFuZCB0aGVuIGV4cGxpY2l0bHkgcmVsZWFzZWQuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIGZ1bmN0aW9uIHNpZ25hdHVyZXMgYW5kIHJlbGF0ZWQgZGF0YSBzdHJ1Y3R1cmVzIHRvIGZ1bGx5IGdyYXNwIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBpbXBsaWNhdGlvbnMgYW5kIG92ZXJhbGwgZGVzaWduIHBoaWxvc29waHkuIFRoaXMgaXMgdGhlIGZvdW5kYXRpb24gb2YgdGhlIGludGVyZmFjZSEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtFWFBPUlRfU1lNQk9MX0dQTFxcKGZ1c2VfZ2V0X2RldlxcKSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2Z1c2UvZGV2LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwODozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NDE2CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKkludmVzdGlnYXRpbmcgYSBQb3RlbnRpYWwgTGlicmFyeSBJc3N1ZSoqCgpPa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBJIHdhcyB1bmRlciB0aGUgaW1wcmVzc2lvbiB0aGF0IGBmdXNlX2dldF9kZXZgIHdhcyBhIHB1YmxpY2x5IGF2YWlsYWJsZSBmdW5jdGlvbi4gSSBuZWVkIHRvIHZlcmlmeSB0aGF0OyBpdCBkb2VzbiYjMzk7dCBzZWVtIHRvIGJlIGV4cG9ydGVkLiBUaGUgZmFjdCB0aGF0IGl0IGlzbiYjMzk7dCBleHBvcnRlZCBjb3VsZCBiZSBhIG1ham9yIHByb2JsZW0gZm9yIHRoaXMgcGFydGljdWxhciBsaW5lIG9mIGNvZGUsIG9yIGZvciB0aGlzIGxpYnJhcnkgdGhhdCBJJiMzOTttIHdvcmtpbmcgd2l0aCBhdCB0aGUgbW9tZW50LiBMZXQgbWUgZG91YmxlLWNoZWNrIHRoZSByZWxldmFudCBoZWFkZXIgZmlsZXMsIHRoZSBkb2N1bWVudGF0aW9uLCBhbmQgdGhlIGJ1aWxkIHByb2Nlc3MgdG8gY29uZmlybSBpdHMgdmlzaWJpbGl0eSBhbmQgYXZhaWxhYmlsaXR5LiBJIGhhdmUgYSBmZWVsaW5nIHRoYXQgdGhpcyB3aWxsIGJlIHRoZSBrZXkgcGllY2Ugb2YgaW5mb3JtYXRpb24gdGhhdCBhZmZlY3RzIHRoZSBuZXh0IGRpcmVjdGlvbiB0byBiZSB0YWtlbiBmb3IgdGhpcyBsaWJyYXJ5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwODozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmdXNlX2dldF9kZXYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9mdXNlL2Rldi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2Z1c2UvZGV2LmM9MTY1MT1zdGF0aWMgaW50IGZ1c2VfZGV2X29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXG4tLVxuZnMvZnVzZS9kZXYuYy0xNjYxLVxuZnMvZnVzZS9kZXYuYzoxNjYyOnN0cnVjdCBmdXNlX2RldiAqZnVzZV9nZXRfZGV2KHN0cnVjdCBmaWxlICpmaWxlKVxuZnMvZnVzZS9kZXYuYy0xNjYzLXtcbi0tXG5mcy9mdXNlL2Rldi5jPTE2ODU9c3RhdGljIHNzaXplX3QgZnVzZV9kZXZfcmVhZChzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqdG8pXG4tLVxuZnMvZnVzZS9kZXYuYy0xNjg4LVx0c3RydWN0IGZpbGUgKmZpbGUgPSBpb2NiLVx1MDAzZWtpX2ZpbHA7XG5mcy9mdXNlL2Rldi5jOjE2ODk6XHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IGZ1c2VfZ2V0X2RldihmaWxlKTtcbmZzL2Z1c2UvZGV2LmMtMTY5MC1cbi0tXG5mcy9mdXNlL2Rldi5jPTE3MDI9c3RhdGljIHNzaXplX3QgZnVzZV9kZXZfc3BsaWNlX3JlYWQoc3RydWN0IGZpbGUgKmluLCBsb2ZmX3QgKnBwb3MsXG4tLVxuZnMvZnVzZS9kZXYuYy0xNzA5LVx0c3RydWN0IGZ1c2VfY29weV9zdGF0ZSBjcztcbmZzL2Z1c2UvZGV2LmM6MTcxMDpcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9nZXRfZGV2KGluKTtcbmZzL2Z1c2UvZGV2LmMtMTcxMS1cbi0tXG5mcy9mdXNlL2Rldi5jPTE5NzM9c3RhdGljIHNzaXplX3QgZnVzZV9kZXZfd3JpdGUoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20pXG4tLVxuZnMvZnVzZS9kZXYuYy0xOTc1LVx0c3RydWN0IGZ1c2VfY29weV9zdGF0ZSBjcztcbmZzL2Z1c2UvZGV2LmM6MTk3NjpcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gX19mdXNlX2dldF9kZXYoaW9jYi1cdTAwM2VraV9maWxwKTtcbmZzL2Z1c2UvZGV2LmMtMTk3Ny1cbi0tXG5mcy9mdXNlL2Rldi5jPTE5ODk9c3RhdGljIHNzaXplX3QgZnVzZV9kZXZfc3BsaWNlX3dyaXRlKHN0cnVjdCBwaXBlX2lub2RlX2luZm8gKnBpcGUsXG4tLVxuZnMvZnVzZS9kZXYuYy0xOTk3LVx0c3RydWN0IGZ1c2VfY29weV9zdGF0ZSBjcztcbmZzL2Z1c2UvZGV2LmM6MTk5ODpcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gX19mdXNlX2dldF9kZXYob3V0KTtcbmZzL2Z1c2UvZGV2LmMtMTk5OS1cdHNpemVfdCByZW07XG4tLVxuZnMvZnVzZS9kZXYuYz0yMDgxPXN0YXRpYyBfX3BvbGxfdCBmdXNlX2Rldl9wb2xsKHN0cnVjdCBmaWxlICpmaWxlLCBwb2xsX3RhYmxlICp3YWl0KVxuLS1cbmZzL2Z1c2UvZGV2LmMtMjA4NC1cdHN0cnVjdCBmdXNlX2lxdWV1ZSAqZmlxO1xuZnMvZnVzZS9kZXYuYzoyMDg1Olx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBmdXNlX2dldF9kZXYoZmlsZSk7XG5mcy9mdXNlL2Rldi5jLTIwODYtXG4tLVxuZnMvZnVzZS9kZXYuYz0yMjcyPXN0YXRpYyBpbnQgZnVzZV9kZXZfZmFzeW5jKGludCBmZCwgc3RydWN0IGZpbGUgKmZpbGUsIGludCBvbilcbmZzL2Z1c2UvZGV2LmMtMjI3My17XG5mcy9mdXNlL2Rldi5jOjIyNzQ6XHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IGZ1c2VfZ2V0X2RldihmaWxlKTtcbmZzL2Z1c2UvZGV2LmMtMjI3NS1cbi0tXG5mcy9mdXNlL2Rldi5jPTIyODM9c3RhdGljIGxvbmcgZnVzZV9kZXZfaW9jdGxfY2xvbmUoc3RydWN0IGZpbGUgKmZpbGUsIF9fdTMyIF9fdXNlciAqYXJncClcbi0tXG5mcy9mdXNlL2Rldi5jLTIzMDItXG5mcy9mdXNlL2Rldi5jOjIzMDM6XHRmdWQgPSBmdXNlX2dldF9kZXYoZmRfZmlsZShmKSk7XG5mcy9mdXNlL2Rldi5jLTIzMDQtXHRpZiAoSVNfRVJSKGZ1ZCkpXG4tLVxuZnMvZnVzZS9kZXYuYz0yMzE4PXN0YXRpYyBsb25nIGZ1c2VfZGV2X2lvY3RsX2JhY2tpbmdfb3BlbihzdHJ1Y3QgZmlsZSAqZmlsZSxcbi0tXG5mcy9mdXNlL2Rldi5jLTIzMjAte1xuZnMvZnVzZS9kZXYuYzoyMzIxOlx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBmdXNlX2dldF9kZXYoZmlsZSk7XG5mcy9mdXNlL2Rldi5jLTIzMjItXHRzdHJ1Y3QgZnVzZV9iYWNraW5nX21hcCBtYXA7XG4tLVxuZnMvZnVzZS9kZXYuYz0yMzM2PXN0YXRpYyBsb25nIGZ1c2VfZGV2X2lvY3RsX2JhY2tpbmdfY2xvc2Uoc3RydWN0IGZpbGUgKmZpbGUsIF9fdTMyIF9fdXNlciAqYXJncClcbmZzL2Z1c2UvZGV2LmMtMjMzNy17XG5mcy9mdXNlL2Rldi5jOjIzMzg6XHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IGZ1c2VfZ2V0X2RldihmaWxlKTtcbmZzL2Z1c2UvZGV2LmMtMjMzOS1cdGludCBiYWNraW5nX2lkO1xuLS1cbmZzL2Z1c2UvZGV2LmM9MjM4OD1zdGF0aWMgdm9pZCBmdXNlX2Rldl9zaG93X2ZkaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgc3RydWN0IGZpbGUgKmZpbGUpXG5mcy9mdXNlL2Rldi5jLTIzODkte1xuZnMvZnVzZS9kZXYuYzoyMzkwOlx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBfX2Z1c2VfZ2V0X2RldihmaWxlKTtcbmZzL2Z1c2UvZGV2LmMtMjM5MS1cdGlmICghZnVkKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwODozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDgxMAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipOYXZpZ2F0aW5nIHRoZSBGdXNlIERldmljZSBTdHJ1Y3R1cmUqKgoKUmlnaHQsIHNvIGBmdXNlX2dldF9kZXZgLi4uIHRoYXQgcmluZ3MgYSBiZWxsLiBOb3csIHdoZXJlIHdhcyB0aGF0IGRlZmluZWQgYWdhaW4/IE9oLCBpdCBsb29rcyBsaWtlIGl0JiMzOTtzIGV4cG9ydGVkIGluIGBmcy9mdXNlL2Rldi5jYC4gT2theSwgZ29vZCwgdGhhdCYjMzk7cyB3aGF0IEkgd2FzIGV4cGVjdGluZy4gTGV0JiMzOTtzIGp1c3QgZG91YmxlLWNoZWNrIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgZnVzZV9nZXRfZGV2YC4gSSB3YW50IHRvIG1ha2Ugc3VyZSBJJiMzOTt2ZSBnb3QgYSBzb2xpZCBoYW5kbGUgb24gaG93IGl0JiMzOTtzIGhhbmRsaW5nIHRoZSBkZXZpY2Ugc3RydWN0dXJlLiBJJiMzOTtsbCBuZWVkIHRvIHJlLWZhbWlsaWFyaXplIG15c2VsZiB3aXRoIHRoZSBlbmQgb2YgdGhhdCBmdW5jdGlvbi4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gaG93IGl0IGhhbmRsZXMgZXJyb3IgY29uZGl0aW9ucyBhbmQgaG93IGl0IHJldHVybnMgdGhhdCBzdHJ1Y3R1cmUuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlIGFuZCByZWZyZXNoIG15IG1lbW9yeSBvZiB0aGF0IHNwZWNpZmljIGludGVyYWN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwODozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0xfR1BMXFwoZnVzZV9nZXRfZGV2XFwpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvZnVzZS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwODo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTA3NQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDE5MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZVU0UgRGV2aWNlIERyaXZlciBDaGFuZ2VzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIHRyeWluZyB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGNoYW5nZXMuIFRoZSB0aGluZyBpc24mIzM5O3QgYmVpbmcgZXhwb3J0ZWQsIGJ1dCBpdCYjMzk7cyBub3Qgc3RhdGljIGVpdGhlciwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIFRoZW4gSSBzZWUgYGZ1c2VfZ2V0X2RldmAgaXNuJiMzOTt0IHN0YXRpYywgc28gaXQgaGFzIGEgdW5pcXVlIGFkZHJlc3MuIEFuZCBgZnVzZV9kZXZfcmVsZWFzZWAgaXMgbm9uLXN0YXRpYyBhbmQgKmV4cG9ydGVkKiwgd2hpY2ggaXMgYSBrZXkgZGlzdGluY3Rpb24uIGBmdXNlX2Rldl9mbHVzaGAsIGhvd2V2ZXIsIGlzIHN0YXRpYywgd2hpY2ggbGltaXRzIGl0cyBleHRlcm5hbCBpbXBhY3QuCgpHaXZlbiB0aGUgbm9uLXN0YXRpYyBuYXR1cmUgb2YgYGZ1c2VfZ2V0X2RldmAgYW5kIGBmdXNlX2Rldl9yZWxlYXNlYCwgdGhvc2UgYXJlIHRoZSBmdW5jdGlvbnMgdG8gcmVhbGx5IGZvY3VzIG9uLiBUaGUgcGF0Y2ggc2VlbXMgdG8gYmUgbW9kaWZ5aW5nIHRoZW0sIHJpZ2h0PyBBbmQgaXQmIzM5O3MgKmFkZGluZyogYGZ1c2VfZGV2X2ZsdXNoYCwgd2hpY2ggaXMgbGlua2VkIHZpYSBhIGAuZmx1c2hgIG9wZXJhdGlvbi4KCk5vdywgSSBuZWVkIHRvIGNvbnNpZGVyIGFueSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gYEZVU0VfRlNgIGlzIHRoZSBvYnZpb3VzIG9uZSwgc28gSSYjMzk7bGwgY2hlY2sgaWYgYEZVU0VfRlNgIHJlbGllcyBvbiBhbnl0aGluZyBzcGVjaWZpYy4gR290dGEgbWFrZSBzdXJlIHdlIGNvdmVyIGFsbCBiYXNlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEZVU0VfRlMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9mdXNlL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZnVzZS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5mcy9mdXNlL0tjb25maWc6Mjpjb25maWcgRlVTRV9GU1xuZnMvZnVzZS9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtGVVNFIChGaWxlc3lzdGVtIGluIFVzZXJzcGFjZSkgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwODo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTYwMQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgYGNvbmZpZyBGVVNFX0ZTYCBDb250ZXh0KioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IHN1cnJvdW5kaW5nIHRoZSBgY29uZmlnIEZVU0VfRlNgIGRpcmVjdGl2ZS4gSSBuZWVkIHRvIHF1aWNrbHkgZ3Jhc3AgaXRzIGltcGxpY2F0aW9ucyB3aXRoaW4gdGhlIGxhcmdlciBzeXN0ZW0uIElzIHRoaXMgYSBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb24sIGEgYnVpbGQgc3lzdGVtIHNldHRpbmcsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBXaGF0IHByb2plY3Qgb3IgZnJhbWV3b3JrIGFyZSB3ZSBkZWFsaW5nIHdpdGggaGVyZT8gSSYjMzk7bSBhbHJlYWR5IG1lbnRhbGx5IHJ1bm5pbmcgdGhyb3VnaCBwb3RlbnRpYWwgc2NlbmFyaW9zOiBhIGZpbGUgc3lzdGVtIGltcGxlbWVudGF0aW9uLCBwZXJoYXBzIHJlbGF0ZWQgdG8gRlVTRSAoRmlsZXN5c3RlbSBpbiBVc2Vyc3BhY2UpLCBidXQgd2hhdCBzcGVjaWZpYyB1c2UgY2FzZSBpcyBpdCB0YXJnZXRpbmc/IFdoZXJlIGlzIHRoaXMgY29uZmlndXJhdGlvbiBzdHJpbmcgdXNlZCBhbmQgaG93PyBUaGUgZGV2aWwsIGFzIGFsd2F5cywgaXMgaW4gdGhlIGRldGFpbHMsIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgd2l0aCBvdGhlciBjb25maWd1cmF0aW9ucywgZGVwZW5kZW5jaWVzLCBhbmQgc3Vycm91bmRpbmcgY29kZS4gSSBuZWVkIHRoZSBmdWxsIHBpY3R1cmUgdG8gYmUgYWJsZSB0byBhc3Nlc3MgaXRzIGltcGFjdCBwcm9wZXJseS4gTXkgYW5hbHl0aWNhbCBnZWFycyBhcmUgdHVybmluZyBhbHJlYWR5LiBMZXQmIzM5O3MgZ2V0IHRvIHRoZSB0ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwODo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2ZzL2Z1c2UvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBGVVNFX0ZTXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtGVVNFIChGaWxlc3lzdGVtIGluIFVzZXJzcGFjZSkgc3VwcG9ydFwmIzM0O1xuICAgNDpcdFx0c2VsZWN0IEZTX1BPU0lYX0FDTFxuICAgNTpcdFx0c2VsZWN0IEZTX0lPTUFQXG4gICA2Olx0XHRoZWxwXG4gICA3Olx0XHQgIFdpdGggRlVTRSBpdCBpcyBwb3NzaWJsZSB0byBpbXBsZW1lbnQgYSBmdWxseSBmdW5jdGlvbmFsIGZpbGVzeXN0ZW1cbiAgIDg6XHRcdCAgaW4gYSB1c2Vyc3BhY2UgcHJvZ3JhbS5cbiAgIDk6XHRcbiAgMTA6XHRcdCAgVGhlcmUmIzM5O3MgYWxzbyBhIGNvbXBhbmlvbiBsaWJyYXJ5OiBsaWJmdXNlMi4gIFRoaXMgbGlicmFyeSBpcyBhdmFpbGFibGVcbiAgMTE6XHRcdCAgZnJvbSB0aGUgRlVTRSBob21lcGFnZTpcbiAgMTI6XHRcdCAgXHUwMDNjaHR0cHM6Ly9naXRodWIuY29tL2xpYmZ1c2UvXHUwMDNlXG4gIDEzOlx0XHQgIGFsdGhvdWdoIGNoYW5jZXMgYXJlIHlvdXIgZGlzdHJpYnV0aW9uIGFscmVhZHkgaGFzIHRoYXQgbGlicmFyeVxuICAxNDpcdFx0ICBpbnN0YWxsZWQgaWYgeW91JiMzOTt2ZSBpbnN0YWxsZWQgdGhlIFwmIzM0O2Z1c2VcJiMzNDsgcGFja2FnZSBpdHNlbGYuXG4gIDE1Olx0XG4gIDE2Olx0XHQgIFNlZSBcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZnVzZS9mdXNlLnJzdFx1MDAzZSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAgMTc6XHRcdCAgU2VlIFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9DaGFuZ2VzXHUwMDNlIGZvciBuZWVkZWQgbGlicmFyeS91dGlsaXR5IHZlcnNpb24uXG4gIDE4Olx0XG4gIDE5Olx0XHQgIElmIHlvdSB3YW50IHRvIGRldmVsb3AgYSB1c2Vyc3BhY2UgRlMsIG9yIGlmIHlvdSB3YW50IHRvIHVzZVxuICAyMDpcdFx0ICBhIGZpbGVzeXN0ZW0gYmFzZWQgb24gRlVTRSwgYW5zd2VyIFkgb3IgTS5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIxNjQKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA4MjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEZVU0UgRGV2aWNlIERyaXZlciBDaGFuZ2VzIGZvciBGdXp6aW5nKioKCk9rYXksIG5vIGRlcGVuZGVuY2llcywgdGhhdCYjMzk7cyBnb29kLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgcmVsZXZhbnQgc3ltYm9scyBmcm9tIHRoaXMgcGF0Y2ggdG8gZm9jdXMgbXkgZnV6emluZyBlZmZvcnRzLiBMZXQmIzM5O3Mgc3RhcnQgYnkgY2hlY2tpbmcgYGZ1c2VfZGV2X2FsbF9jbG9zaW5nYC4gUmlnaHQsIGl0JiMzOTtzIHN0YXRpYy4gU28sIGJhc2VkIG9uIHRoZSBwcm9tcHQmIzM5O3MgcHJlZmVyZW5jZSBmb3Igbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzLCBgRm9jdXNTeW1ib2xzYCBzaG91bGQgcHJvYmFibHkgaW5jbHVkZSBgZnVzZV9nZXRfZGV2YCBhbmQgYGZ1c2VfZGV2X3JlbGVhc2VgLiBXYWl0IGEgbWludXRlLCBgZnVzZV9kZXZfZmx1c2hgIGlzIGFsc28gaGVyZSwgYW5kIGl0JiMzOTtzIGEgKm5ldyogZnVuY3Rpb24uIFRoZSBwcm9tcHQmIzM5O3MgbGFuZ3VhZ2UgaW1wbGllcyB3ZSBzaG91bGQgYXZvaWQgc3RhdGljICpoZWxwZXIqIGZ1bmN0aW9ucyB0aGF0IGFyZSBpbmxpbmVkLiBCdXQgYGZ1c2VfZGV2X2ZsdXNoYCBpcyBhc3NpZ25lZCB0byBhIGZ1bmN0aW9uIHBvaW50ZXIsIGAuZmx1c2hgLCBpbiBgZnVzZV9kZXZfb3BlcmF0aW9uc2AuIEl04oCZcyBub3QgYW4gaW50ZXJuYWwgaGVscGVyLCBpdCBoYXMgYSBkaXN0aW5jdCBhZGRyZXNzLiBJdCBjYW4mIzM5O3QgYmUgaW5saW5lZC4gU28sIGNhbiB3ZSBhY3R1YWxseSAqaW5jbHVkZSogc3RhdGljIGZ1bmN0aW9ucyB1c2VkIGFzIGZ1bmN0aW9uIHBvaW50ZXJzLCBldmVuIHRob3VnaCB0aGV5ICphcmUqIHN0YXRpYz8gTGV04oCZcyBjaGVjay4gWXVwLCBpdOKAmXMgYmVpbmcgcGFzc2VkIGFzIGEgZnVuY3Rpb24gcG9pbnRlciwgZGVmaW5pdGVseSBub3QgaW5saW5lZC4gT2theSwgc28gdGhhdCBtZWFucyBgZnVzZV9kZXZfZmx1c2hgIGlzIGluIQoKTGV0IG1lIHJldmlldyB0aGUgcGF0Y2guIEl0IG1vZGlmaWVzIGBmdXNlX2dldF9kZXZgLCBgZnVzZV9kZXZfcmVsZWFzZWAsIGBmdXNlX2Rldl9mbHVzaGAsIGFuZCBpbnRyb2R1Y2VzIHRoZSBzdGF0aWMgaGVscGVyIGBmdXNlX2Rldl9hbGxfY2xvc2luZ2AuIFNvLCBgRm9jdXNTeW1ib2xzYDogYGZ1c2VfZ2V0X2RldmAsIGBmdXNlX2Rldl9yZWxlYXNlYCwgYW5kIGBmdXNlX2Rldl9mbHVzaGAuCgpBbHJpZ2h0LCBsZXQmIzM5O3MgdmVyaWZ5LiBgZnVzZV9nZXRfZGV2YCBpcyBkZWNsYXJlZCBpbiBgZnVzZV9kZXZfaS5oYCBhbmQgZGVmaW5lZCBpbiBgZGV2LmNgLCBzbyBpdCYjMzk7cyBub24tc3RhdGljLiBgZnVzZV9kZXZfcmVsZWFzZWAgaXMgZXhwb3J0ZWQgYXMgd2VsbC4gYGZ1c2VfZGV2X2ZsdXNoYCBpcyBzdGF0aWMsIGJ1dCB3ZSYjMzk7dmUgYWxyZWFkeSBjb25maXJtZWQgaXQmIzM5O3MgcmVhY2hhYmxlIGFzIGEgZnVuY3Rpb24gcG9pbnRlci4KCkFueSByZWxldmFudCBjb25maWd1cmF0aW9ucz8gYEZVU0VfRlNgIHNlZW1zIHRvIGJlIHRoZSBvbmx5IG9uZS4KCkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBsZXQmIzM5O3MgY29uZmlybSB0aGUgc3RhdGljIG5hdHVyZSBvZiBgZnVzZV9kZXZfZmx1c2hgOiBZZXAsIGBzdGF0aWMgaW50IGZ1c2VfZGV2X2ZsdXNoKC4uLilgLiBBbmQgYGZ1c2VfZGV2X2FsbF9jbG9zaW5nYDogYHN0YXRpYyBib29sIGZ1c2VfZGV2X2FsbF9jbG9zaW5nKC4uLilgLiBDb25maXJtZWQuCgpUaGVyZWZvcmUsIHRoZSBtYWluIGZ1bmN0aW9ucyB0byBmb2N1cyBvbiBhcmUgYGZ1c2VfZ2V0X2RldmAsIGBmdXNlX2Rldl9yZWxlYXNlYCwgYW5kIGBmdXNlX2Rldl9mbHVzaGAuCgpOb3csIHJlYWNoYWJpbGl0eS4gSXMgYGZ1c2VfZGV2X2ZsdXNoYCBjYWxsZWQ/IEFic29sdXRlbHksIHZpYSBgZmlscF9jbG9zZWAgd2hpY2ggY2FsbHMgdGhlIGBmX29wLSZndDtmbHVzaGAgZnVuY3Rpb24uIGBmdXNlX2Rldl9yZWxlYXNlYD8gWXVwLCB2aWEgYGZwdXRgLCB3aGljaCBjYWxscyBgZl9vcC0mZ3Q7cmVsZWFzZWAuIEFuZCBgZnVzZV9nZXRfZGV2YD8gSXQmIzM5O3MgY2FsbGVkIGZvciByZWFkLCB3cml0ZSwgcG9sbCwgYW5kIG90aGVyIG9wZXJhdGlvbnMgb24gYC9kZXYvZnVzZWAuCgpTbywgdGhlIG92ZXJhbGwgcmVhc29uaW5nIGlzIHRoYXQgdGhpcyBwYXRjaCBjaGFuZ2VzIHRoZSBGVVNFIGRldmljZSBkcml2ZXIgZGlzY29ubmVjdGlvbiBsb2dpYyBmb3IgYC9kZXYvZnVzZWAuIEl0IGFkZHMgYSBgZmx1c2hgIG9wZXJhdGlvbiAoYGZ1c2VfZGV2X2ZsdXNoYCkgZm9yIHRoZSBmaW5hbCBjbG9zZSBhbmQgY2hhbm5lbCBzdGF0ZSB0cmFuc2l0aW9uIHRvIGBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRGAuIEl0IGNoYW5nZXMgYGZ1c2VfZ2V0X2RldmAgYW5kIGBmdXNlX2Rldl9yZWxlYXNlYCB0byBoYW5kbGUgdGhpcyBuZXcgc3RhdGUgYW5kIGFib3J0IHRoZSBjaGFubmVsIGlmIGFsbCBkZXZpY2VzIGFyZSBjbG9zaW5nLiBUaGlzIGlzIGEgY3J1Y2lhbCBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBGVVNFIGRyaXZlciwgYWNjZXNzaWJsZSBmcm9tIHVzZXJzcGFjZSB0aHJvdWdoIGAvZGV2L2Z1c2VgLCBhbmQgdGhlcmVmb3JlIGEgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLgoKRmluYWxseSwgYEZVU0VfRlNgIGlzIHRoZSByZWxldmFudCBjb25maWcuIExldCBtZSBxdWlja2x5IGRvdWJsZS1jaGVjazogeWVwLCB0aGF0IGVuYWJsZXMgdGhlIGNvbXBpbGF0aW9uIG9mIGBkZXYuY2AsIHdoaWNoIGNvbnRhaW5zIHRoZXNlIGZ1bmN0aW9ucy4gVGhhdCYjMzk7cyBpdCEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZnVzZS15LipkZXYubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2Z1c2UvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZnVzZS9NYWtlZmlsZT0xMz1mdXNlLXkgOj0gdHJhY2Uub1x0IyBwdXQgdHJhY2UubyBmaXJzdCBzbyB3ZSBzZWUgZnRyYWNlIGVycm9ycyBzb29uZXJcbmZzL2Z1c2UvTWFrZWZpbGU6MTQ6ZnVzZS15ICYjNDM7PSBkZXYubyBkaXIubyBmaWxlLm8gaW5vZGUubyBjb250cm9sLm8geGF0dHIubyBhY2wubyByZWFkZGlyLm8gaW9jdGwubyByZXFfdGltZW91dC5vIHJlcS5vXG5mcy9mdXNlL01ha2VmaWxlLTE1LWZ1c2UteSAmIzQzOz0gcG9sbC5vIG5vdGlmeS5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzOTEzCgkJCQkJCQlvdXRwdXQ6IDE3MAoJCQkJCQkJdGhvdWdodHM6IDE5MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBGVVNFIERldmljZSBEcml2ZXIgQ2hhbmdlKioKCk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcywgaXQmIzM5O3MgcHJldHR5IGNsZWFyIHRoYXQgYGRldi5vYCBpcyBpbmRlZWQgY29tcGlsZWQgaW50byB0aGUga2VybmVsIHdoZW4gYENPTkZJR19GVVNFX0ZTYCBpcyBlbmFibGVkLiBUaGF0JiMzOTtzIHRoZSBiYXNlbGluZS4KCk15IGltbWVkaWF0ZSB0YWtlYXdheSBpcyB0aGF0IHRoaXMgcGF0Y2ggaXMgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLiBUaGUga2V5IHN5bWJvbHMgdGhhdCBqdW1wIG91dCBhdCBtZSBhcmUgYGZ1c2VfZ2V0X2RldmAsIGBmdXNlX2Rldl9yZWxlYXNlYCwgYW5kIHRoZSBuZXdseSBpbnRyb2R1Y2VkIGBmdXNlX2Rldl9mbHVzaGAuIFRoaXMgaXMgYmVjYXVzZSB0aGUgcGF0Y2ggZnVuZGFtZW50YWxseSBhbHRlcnMgaG93IHRoZSBGVVNFIGRldmljZSBkcml2ZXIsIHNwZWNpZmljYWxseSB0aGUgYC9kZXYvZnVzZWAgaW50ZXJmYWNlLCBoYW5kbGVzIGNoYW5uZWwgZGlzY29ubmVjdGlvbi4KClRoZSBhZGRpdGlvbiBvZiBgZnVzZV9kZXZfZmx1c2hgIGlzIHBhcnRpY3VsYXJseSBpbnRlcmVzdGluZy4gSXQgc3VnZ2VzdHMgYSBtb3JlIHJlZmluZWQgc3RhdGUgbWFuYWdlbWVudCBkdXJpbmcgdGhlIGZpbmFsIGNsb3NlIHNlcXVlbmNlLCBtb3ZpbmcgdGhlIGNoYW5uZWwgaW50byBhIGBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRGAgc3RhdGUuIFRoZSBtb2RpZmljYXRpb25zIHRvIGBmdXNlX2dldF9kZXZgIGFuZCBgZnVzZV9kZXZfcmVsZWFzZWAgdG8gYWNjb21tb2RhdGUgdGhpcyBuZXcgc3RhdGUgYW5kIHBvdGVudGlhbCBhYm9ydCBzY2VuYXJpb3MgaW5kaWNhdGUgc2lnbmlmaWNhbnQgY2hhbmdlcyB0byBjb3JlIGNoYW5uZWwgbWFuYWdlbWVudCBsb2dpYy4KCkVzc2VudGlhbGx5LCB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZGlyZWN0bHkgaW1wYWN0aW5nIHVzZXItc3BhY2UgaW50ZXJhY3Rpb25zIHZpYSBgL2Rldi9mdXNlYCwgbWFraW5nIGl0IGEgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBuZXcgY29kZSBwYXRocyByZWxhdGVkIHRvIGNvbm5lY3Rpb24gbGlmZWN5Y2xlIGFuZCBlcnJvciBoYW5kbGluZywgbWFraW5nIGl0IGEgY3JpdGljYWwgYXJlYSB0byBwcm9iZSBmb3IgdnVsbmVyYWJpbGl0aWVzLgoKSSYjMzk7bSBjb25maWRlbnQgaW4gdGhpcyBhbmFseXNpcy4gSSYjMzk7bSBnb2luZyB0byBjYWxsIGBzZXQtcmVzdWx0c2AgdG8gY29uZmlybSBhbmQgbW92ZSBmb3J3YXJkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwODo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RlVTRV9GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Z1c2VfZ2V0X2RldiYjMzQ7LAogICAgJiMzNDtmdXNlX2Rldl9yZWxlYXNlJiMzNDssCiAgICAmIzM0O2Z1c2VfZGV2X2ZsdXNoJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjaGFubmVsIGRpc2Nvbm5lY3Rpb24gbG9naWMgaW4gdGhlIEZVU0UgZGV2aWNlIGRyaXZlciAoL2Rldi9mdXNlKS4gSXQgaW50cm9kdWNlcyBhIG5ldyBmbHVzaCBvcGVyYXRpb24gKGZ1c2VfZGV2X2ZsdXNoKSB0byBoYW5kbGUgZmluYWwgY2xvc2UgYW5kIHRyYW5zaXRpb24gdGhlIGNoYW5uZWwgc3RhdGUgdG8gRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQuIEl0IGFsc28gbW9kaWZpZXMgZnVzZV9nZXRfZGV2IGFuZCBmdXNlX2Rldl9yZWxlYXNlIHRvIGhhbmRsZSB0aGlzIG5ldyBzdGF0ZSBhbmQgYWJvcnQgdGhlIGNoYW5uZWwgaWYgYWxsIGRldmljZXMgYXJlIGNsb3NpbmcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBGVVNFIGRyaXZlciwgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSAvZGV2L2Z1c2Ugb3BlcmF0aW9ucywgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0ZVU0VfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtmdXNlX2dldF9kZXYmIzM0OywKICAgICYjMzQ7ZnVzZV9kZXZfcmVsZWFzZSYjMzQ7LAogICAgJiMzNDtmdXNlX2Rldl9mbHVzaCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY2hhbm5lbCBkaXNjb25uZWN0aW9uIGxvZ2ljIGluIHRoZSBGVVNFIGRldmljZSBkcml2ZXIgKC9kZXYvZnVzZSkuIEl0IGludHJvZHVjZXMgYSBuZXcgZmx1c2ggb3BlcmF0aW9uIChmdXNlX2Rldl9mbHVzaCkgdG8gaGFuZGxlIGZpbmFsIGNsb3NlIGFuZCB0cmFuc2l0aW9uIHRoZSBjaGFubmVsIHN0YXRlIHRvIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVELiBJdCBhbHNvIG1vZGlmaWVzIGZ1c2VfZ2V0X2RldiBhbmQgZnVzZV9kZXZfcmVsZWFzZSB0byBoYW5kbGUgdGhpcyBuZXcgc3RhdGUgYW5kIGFib3J0IHRoZSBjaGFubmVsIGlmIGFsbCBkZXZpY2VzIGFyZSBjbG9zaW5nLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgRlVTRSBkcml2ZXIsIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgL2Rldi9mdXNlIG9wZXJhdGlvbnMsIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjVUMDg6Mzk6MjUuNTQ3OTA3MTIxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTk4NjExMDY4MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRlVTRV9GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImZ1c2VfZ2V0X2RldlwiLFxuICAgIFwiZnVzZV9kZXZfcmVsZWFzZVwiLFxuICAgIFwiZnVzZV9kZXZfZmx1c2hcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY2hhbm5lbCBkaXNjb25uZWN0aW9uIGxvZ2ljIGluIHRoZSBGVVNFIGRldmljZSBkcml2ZXIgKC9kZXYvZnVzZSkuIEl0IGludHJvZHVjZXMgYSBuZXcgZmx1c2ggb3BlcmF0aW9uIChmdXNlX2Rldl9mbHVzaCkgdG8gaGFuZGxlIGZpbmFsIGNsb3NlIGFuZCB0cmFuc2l0aW9uIHRoZSBjaGFubmVsIHN0YXRlIHRvIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVELiBJdCBhbHNvIG1vZGlmaWVzIGZ1c2VfZ2V0X2RldiBhbmQgZnVzZV9kZXZfcmVsZWFzZSB0byBoYW5kbGUgdGhpcyBuZXcgc3RhdGUgYW5kIGFib3J0IHRoZSBjaGFubmVsIGlmIGFsbCBkZXZpY2VzIGFyZSBjbG9zaW5nLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgRlVTRSBkcml2ZXIsIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgL2Rldi9mdXNlIG9wZXJhdGlvbnMsIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwODozOToyNS41NDc5MTc4NTFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg0MzczNTIyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGI5OGFhOWQ5YzIxMjg1MWU3YzY5OWY3ZTU0MGVmZTkyMjMwMDMxYmRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBKdWwgMjUgMDg6Mzk6MjIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZnMvZnVzZS9kZXYuYyBiL2ZzL2Z1c2UvZGV2LmNcXG5pbmRleCA1NzYzYTdjZDNiMzdmYS4uOGIxNGM3ZDU3YTAxMTkgMTAwNjQ0XFxuLS0tIGEvZnMvZnVzZS9kZXYuY1xcbisrKyBiL2ZzL2Z1c2UvZGV2LmNcXG5AQCAtMTY2MiwxOCArMTY2MiwyMyBAQCBzdGF0aWMgaW50IGZ1c2VfZGV2X29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXFxuIHN0cnVjdCBmdXNlX2RldiAqZnVzZV9nZXRfZGV2KHN0cnVjdCBmaWxlICpmaWxlKVxcbiB7XFxuIFxcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9maWxlX3RvX2Z1ZChmaWxlKTtcXG4rXFx0c3RydWN0IGZ1c2VfY2hhbiAqZmNoID0gZnVzZV9kZXZfY2hhbl9nZXQoZnVkKTtcXG4gXFx0aW50IGVycjtcXG4gXFxuLVxcdGlmICh1bmxpa2VseSghZnVzZV9kZXZfY2hhbl9nZXQoZnVkKSkpIHtcXG4rXFx0aWYgKHVubGlrZWx5KCFmY2gpKSB7XFxuIFxcdFxcdC8qIG9ubHkgYmxvY2sgd2FpdGluZyBmb3IgbW91bnQgaWYgc3luYyBpbml0IHdhcyByZXF1ZXN0ZWQgKi9cXG4gXFx0XFx0aWYgKCFmdWQtXFx1MDAzZXN5bmNfaW5pdClcXG4gXFx0XFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVQRVJNKTtcXG4gXFxuLVxcdFxcdGVyciA9IHdhaXRfZXZlbnRfaW50ZXJydXB0aWJsZShmdXNlX2Rldl93YWl0cSwgZnVzZV9kZXZfY2hhbl9nZXQoZnVkKSAhPSBOVUxMKTtcXG4rXFx0XFx0ZXJyID0gd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlKGZ1c2VfZGV2X3dhaXRxLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgICAgKGZjaCA9IGZ1c2VfZGV2X2NoYW5fZ2V0KGZ1ZCkpICE9IE5VTEwpO1xcbiBcXHRcXHRpZiAoZXJyKVxcbiBcXHRcXHRcXHRyZXR1cm4gRVJSX1BUUihlcnIpO1xcbiBcXHR9XFxuIFxcbitcXHRpZiAodW5saWtlbHkoZmNoID09IEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEKSlcXG4rXFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVQRVJNKTtcXG4rXFxuIFxcdHJldHVybiBmdWQ7XFxuIH1cXG4gXFxuQEAgLTIyMTEsMTcgKzIyMTYsMzEgQEAgdm9pZCBmdXNlX2NoYW5fd2FpdF9hYm9ydGVkKHN0cnVjdCBmdXNlX2NoYW4gKmZjaClcXG4gXFx0ZnVzZV91cmluZ193YWl0X3N0b3BwZWRfcXVldWVzKGZjaCk7XFxuIH1cXG4gXFxuK3N0YXRpYyBib29sIGZ1c2VfZGV2X2FsbF9jbG9zaW5nKHN0cnVjdCBmdXNlX2NoYW4gKmZjaClcXG4re1xcbitcXHRzdHJ1Y3QgZnVzZV9kZXYgKnBvcztcXG4rXFxuK1xcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXFx1MDAyNmZjaC1cXHUwMDNlbG9jayk7XFxuK1xcbitcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHBvcywgXFx1MDAyNmZjaC1cXHUwMDNlZGV2aWNlcywgZW50cnkpIHtcXG4rXFx0XFx0aWYgKCFwb3MtXFx1MDAzZWNsb3NpbmcpXFxuK1xcdFxcdFxcdHJldHVybiBmYWxzZTtcXG4rXFx0fVxcbitcXHRyZXR1cm4gdHJ1ZTtcXG4rfVxcbitcXG4gaW50IGZ1c2VfZGV2X3JlbGVhc2Uoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXFxuIHtcXG4gXFx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBmdXNlX2ZpbGVfdG9fZnVkKGZpbGUpO1xcbiBcXHQvKiBQYWlycyB3aXRoIGNtcHhjaGcoKSBpbiBmdXNlX2Rldl9pbnN0YWxsKCkgKi9cXG4gXFx0c3RydWN0IGZ1c2VfY2hhbiAqZmNoID0geGNoZyhcXHUwMDI2ZnVkLVxcdTAwM2VjaGFuLCBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCk7XFxuIFxcbi1cXHRpZiAoZmNoKSB7XFxuK1xcdGlmIChmY2ggXFx1MDAyNlxcdTAwMjYgZmNoICE9IEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEKSB7XFxuIFxcdFxcdHN0cnVjdCBmdXNlX3BxdWV1ZSAqZnBxID0gXFx1MDAyNmZ1ZC1cXHUwMDNlcHE7XFxuIFxcdFxcdExJU1RfSEVBRCh0b19lbmQpO1xcbiBcXHRcXHR1bnNpZ25lZCBpbnQgaTtcXG4gXFx0XFx0Ym9vbCBsYXN0O1xcbitcXHRcXHRib29sIGFib3J0O1xcbiBcXG4gXFx0XFx0LyogTWFrZSBzdXJlIGZ1c2VfZGV2X2luc3RhbGxfd2l0aF9wcSgpIGhhcyBmaW5pc2hlZCAqL1xcbiBcXHRcXHRzcGluX2xvY2soXFx1MDAyNmZjaC1cXHUwMDNlbG9jayk7XFxuQEAgLTIyMzQsMTQgKzIyNTMsMTUgQEAgaW50IGZ1c2VfZGV2X3JlbGVhc2Uoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXFxuIFxcdFxcdGxpc3RfZGVsKFxcdTAwMjZmdWQtXFx1MDAzZWVudHJ5KTtcXG4gXFx0XFx0LyogQXJlIHdlIHRoZSBsYXN0IG9wZW4gZGV2aWNlPyAqL1xcbiBcXHRcXHRsYXN0ID0gbGlzdF9lbXB0eShcXHUwMDI2ZmNoLVxcdTAwM2VkZXZpY2VzKTtcXG4rXFx0XFx0YWJvcnQgPSBmY2gtXFx1MDAzZWNvbm5lY3RlZCBcXHUwMDI2XFx1MDAyNiBmdXNlX2Rldl9hbGxfY2xvc2luZyhmY2gpO1xcbiBcXHRcXHRzcGluX3VubG9jayhcXHUwMDI2ZmNoLVxcdTAwM2Vsb2NrKTtcXG4gXFxuIFxcdFxcdGZ1c2VfZGV2X2VuZF9yZXF1ZXN0cyhcXHUwMDI2dG9fZW5kKTtcXG4gXFxuLVxcdFxcdGlmIChsYXN0KSB7XFxuK1xcdFxcdGlmIChsYXN0KVxcbiBcXHRcXHRcXHRXQVJOX09OKGZjaC1cXHUwMDNlaXEuZmFzeW5jICE9IE5VTEwpO1xcbitcXHRcXHRpZiAoYWJvcnQpXFxuIFxcdFxcdFxcdGZ1c2VfY2hhbl9hYm9ydChmY2gsIGZhbHNlKTtcXG4tXFx0XFx0fVxcbiBcXHRcXHRmdXNlX2Nvbm5fcHV0KGZjaC1cXHUwMDNlY29ubik7XFxuIFxcdH1cXG4gXFx0ZnVzZV9kZXZfcHV0KGZ1ZCk7XFxuQEAgLTIzNzUsNiArMjM5NSwzNCBAQCBzdGF0aWMgdm9pZCBmdXNlX2Rldl9zaG93X2ZkaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgc3RydWN0IGZpbGUgKmZpbGUpXFxuIH1cXG4gI2VuZGlmXFxuIFxcbitzdGF0aWMgaW50IGZ1c2VfZGV2X2ZsdXNoKHN0cnVjdCBmaWxlICpmaWxlLCBmbF9vd25lcl90IGlkKVxcbit7XFxuK1xcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9maWxlX3RvX2Z1ZChmaWxlKTtcXG4rXFx0c3RydWN0IGZ1c2VfY2hhbiAqZmNoO1xcbitcXHRib29sIGFib3J0O1xcbitcXG4rXFx0aWYgKGZpbGVfY291bnQoZmlsZSkgIT0gMSlcXG4rXFx0XFx0cmV0dXJuIDA7XFxuK1xcbitcXHQvKlxcbitcXHQgKiBBdG9taWNhbGx5IHRyYW5zaXRpb24gZnVkLVxcdTAwM2VjaGFuIGZyb20gTlVMTCB0byBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRFxcbitcXHQgKiBvbiBmaW5hbCBjbG9zZSB0byBwcmV2ZW50IGEgbGF0ZXIgZnVzZV9kZXZfaW5zdGFsbCgpIGZyb20gc3VjY2VlZGluZy5cXG4rXFx0ICovXFxuK1xcdGZjaCA9IGNtcHhjaGcoXFx1MDAyNmZ1ZC1cXHUwMDNlY2hhbiwgTlVMTCwgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQpO1xcbitcXHRpZiAoIWZjaCB8fCBmY2ggPT0gRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQpXFxuK1xcdFxcdHJldHVybiAwO1xcbitcXG4rXFx0c3Bpbl9sb2NrKFxcdTAwMjZmY2gtXFx1MDAzZWxvY2spO1xcbitcXHRmdWQtXFx1MDAzZWNsb3NpbmcgPSB0cnVlO1xcbitcXHRhYm9ydCA9IGZjaC1cXHUwMDNlY29ubmVjdGVkIFxcdTAwMjZcXHUwMDI2IGZ1c2VfZGV2X2FsbF9jbG9zaW5nKGZjaCk7XFxuK1xcdHNwaW5fdW5sb2NrKFxcdTAwMjZmY2gtXFx1MDAzZWxvY2spO1xcbitcXG4rXFx0aWYgKGFib3J0KVxcbitcXHRcXHRmdXNlX2NoYW5fYWJvcnQoZmNoLCBmYWxzZSk7XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4gY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmdXNlX2Rldl9vcGVyYXRpb25zID0ge1xcbiBcXHQub3duZXJcXHRcXHQ9IFRISVNfTU9EVUxFLFxcbiBcXHQub3BlblxcdFxcdD0gZnVzZV9kZXZfb3BlbixcXG5AQCAtMjM4Myw2ICsyNDMxLDcgQEAgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmdXNlX2Rldl9vcGVyYXRpb25zID0ge1xcbiBcXHQud3JpdGVfaXRlclxcdD0gZnVzZV9kZXZfd3JpdGUsXFxuIFxcdC5zcGxpY2Vfd3JpdGVcXHQ9IGZ1c2VfZGV2X3NwbGljZV93cml0ZSxcXG4gXFx0LnBvbGxcXHRcXHQ9IGZ1c2VfZGV2X3BvbGwsXFxuK1xcdC5mbHVzaFxcdFxcdD0gZnVzZV9kZXZfZmx1c2gsXFxuIFxcdC5yZWxlYXNlXFx0PSBmdXNlX2Rldl9yZWxlYXNlLFxcbiBcXHQuZmFzeW5jXFx0XFx0PSBmdXNlX2Rldl9mYXN5bmMsXFxuIFxcdC51bmxvY2tlZF9pb2N0bCA9IGZ1c2VfZGV2X2lvY3RsLFxcbmRpZmYgLS1naXQgYS9mcy9mdXNlL2Z1c2VfZGV2X2kuaCBiL2ZzL2Z1c2UvZnVzZV9kZXZfaS5oXFxuaW5kZXggNjY4YzgzOTFkNjFjMDMuLjI4MzNhMDM1MGM0MzVhIDEwMDY0NFxcbi0tLSBhL2ZzL2Z1c2UvZnVzZV9kZXZfaS5oXFxuKysrIGIvZnMvZnVzZS9mdXNlX2Rldl9pLmhcXG5AQCAtMzAyLDYgKzMwMiw5IEBAIHN0cnVjdCBmdXNlX2RldiB7XFxuIFxcdC8qKiBAc3luY19pbml0OiBJc3N1ZSBGVVNFX0lOSVQgc3luY2hyb25vdXNseSAqL1xcbiBcXHRib29sIHN5bmNfaW5pdDtcXG4gXFxuK1xcdC8qKiBAY2xvc2luZzogRmluYWwgY2xvc2UgaGFzIHN0YXJ0ZWQsIHByb3RlY3RlZCBieSBjaGFuLVxcdTAwM2Vsb2NrICovXFxuK1xcdGJvb2wgY2xvc2luZztcXG4rXFxuIFxcdC8qKiBAY2hhbjogRnVzZSBjaGFubmVsIGZvciB0aGlzIGRldmljZSAqL1xcbiBcXHRzdHJ1Y3QgZnVzZV9jaGFuICpjaGFuO1xcbiBcXG5AQCAtMzMwLDE3ICszMzMsMjUgQEAgc3RydWN0IGZ1c2VfY29weV9zdGF0ZSB7XFxuIFxcdH0gcmluZztcXG4gfTtcXG4gXFxuLS8qIGZ1ZC1cXHUwMDNlY2hhbiBnZXRzIGFzc2lnbmVkIHRvIHRoaXMgdmFsdWUgd2hlbiAvZGV2L2Z1c2UgaXMgY2xvc2VkICovXFxuLSNkZWZpbmUgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQgKChzdHJ1Y3QgZnVzZV9jaGFuICopIDEpXFxuLVxcbiAvKlxcbi0gKiBMb2NrbGVzcyBhY2Nlc3MgaXMgT0ssIGJlY2F1c2UgZnVkLVxcdTAwM2VjaGFuIGlzIHNldCBvbmNlIGR1cmluZyBtb3VudCBhbmQgaXMgdmFsaWRcXG4tICogdW50aWwgdGhlIGZpbGUgaXMgcmVsZWFzZWQuXFxuKyAqIGZ1ZC1cXHUwMDNlY2hhbiBoYXMgdGhlIGZvbGxvd2luZyBtb25vdG9uaWMgc3RhdGUgdHJhbnNpdGlvbnM6XFxuKyAqXFxuKyAqIE5VTEwgLVxcdTAwM2UgdmFsaWQgY2hhbm5lbCAtXFx1MDAzZSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRFxcbisgKiBOVUxMIC0tLS0tLS0tLS0tLS0tLS0tXFx1MDAzZSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRFxcbiAgKlxcbi0gKiBmdWQtXFx1MDAzZWNoYW4gaXMgc2V0IHRvIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEIG9ubHkgYWZ0ZXIgdGhlIGNvbnRhaW5pbmcgZmlsZSBpc1xcbi0gKiByZWxlYXNlZCwgc28gcmVzdWx0IGlzIHNhZmUgdG8gZGVyZWZlcmVuY2UgaW4gbW9zdCBjYXNlcy4gIEV4Y2VwdGlvbnMgYXJlOlxcbi0gKiBmdXNlX2Rldl9wdXQoKSBhbmQgZnVzZV9maWxsX3N1cGVyX2NvbW1vbigpLlxcbisgKiBBIHZhbGlkIGNoYW5uZWwgcG9pbnRlciByZW1haW5zIHZhbGlkIHVudGlsIHRoZSBmaWxlIGlzIHJlbGVhc2VkLiBGaW5hbFxcbisgKiBmbHVzaCBjYW4gaW5zdGFsbCBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCBkaXJlY3RseSBmb3IgYW4gdW5pbnN0YWxsZWRcXG4rICogZGV2aWNlLCBwcmV2ZW50aW5nIGFueSBsYXRlciBjaGFubmVsIGluc3RhbGxhdGlvbi4gVGhlIHNlbnRpbmVsIHRoZXJlZm9yZVxcbisgKiBtZWFucyB0aGF0IHRoZSBjaGFubmVsIGNhbiBubyBsb25nZXIgYmUgaW5zdGFsbGVkIG9yIGFjY2Vzc2VkIHRocm91Z2ggdGhpc1xcbisgKiBmaWxlOyBpdCBkb2VzIG5vdCBpbXBseSB0aGF0IHJlbGVhc2UgaGFzIGFscmVhZHkgcnVuIGFuZCBpdCBtdXN0IG5ldmVyIGJlXFxuKyAqIGRlcmVmZXJlbmNlZC5cXG4rICpcXG4rICogZnVzZV9kZXZfY2hhbl9nZXQoKSByZWFkcyB0aGlzIHN0YXRlIGxvY2tsZXNzbHkuIENhbGxlcnMgbXVzdCBkaXN0aW5ndWlzaFxcbisgKiBOVUxMLCBhIHZhbGlkIGNoYW5uZWwgcG9pbnRlciwgYW5kIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEIGJlZm9yZVxcbisgKiBkZXJlZmVyZW5jaW5nIHRoZSByZXN1bHQuXFxuICAqL1xcbisjZGVmaW5lIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEICgoc3RydWN0IGZ1c2VfY2hhbiAqKSAxKVxcbitcXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgZnVzZV9jaGFuICpmdXNlX2Rldl9jaGFuX2dldChzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZClcXG4ge1xcbiBcXHQvKiBQYWlycyB3aXRoIHhjaGcoKSBpbiBmdXNlX2Rldl9pbnN0YWxsKCkgKi9cXG5AQCAtMzU1LDggKzM2Niw5IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGZ1c2VfZGV2ICpmdXNlX2ZpbGVfdG9fZnVkKHN0cnVjdCBmaWxlICpmaWxlKVxcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCBmdXNlX2RldiAqX19mdXNlX2dldF9kZXYoc3RydWN0IGZpbGUgKmZpbGUpXFxuIHtcXG4gXFx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBmdXNlX2ZpbGVfdG9fZnVkKGZpbGUpO1xcbitcXHRzdHJ1Y3QgZnVzZV9jaGFuICpmY2ggPSBmdXNlX2Rldl9jaGFuX2dldChmdWQpO1xcbiBcXG4tXFx0aWYgKCFmdXNlX2Rldl9jaGFuX2dldChmdWQpKVxcbitcXHRpZiAoIWZjaCB8fCBmY2ggPT0gRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQpXFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbiBcXG4gXFx0cmV0dXJuIGZ1ZDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDg6Mzk6MjYuMzkyNTM4MjU3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NTkwMTY0NjEzMjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRlVTRV9GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImZ1c2VfZ2V0X2RldlwiLFxuICAgIFwiZnVzZV9kZXZfcmVsZWFzZVwiLFxuICAgIFwiZnVzZV9kZXZfZmx1c2hcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY2hhbm5lbCBkaXNjb25uZWN0aW9uIGxvZ2ljIGluIHRoZSBGVVNFIGRldmljZSBkcml2ZXIgKC9kZXYvZnVzZSkuIEl0IGludHJvZHVjZXMgYSBuZXcgZmx1c2ggb3BlcmF0aW9uIChmdXNlX2Rldl9mbHVzaCkgdG8gaGFuZGxlIGZpbmFsIGNsb3NlIGFuZCB0cmFuc2l0aW9uIHRoZSBjaGFubmVsIHN0YXRlIHRvIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVELiBJdCBhbHNvIG1vZGlmaWVzIGZ1c2VfZ2V0X2RldiBhbmQgZnVzZV9kZXZfcmVsZWFzZSB0byBoYW5kbGUgdGhpcyBuZXcgc3RhdGUgYW5kIGFib3J0IHRoZSBjaGFubmVsIGlmIGFsbCBkZXZpY2VzIGFyZSBjbG9zaW5nLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgRlVTRSBkcml2ZXIsIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgL2Rldi9mdXNlIG9wZXJhdGlvbnMsIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBiOThhYTlkOWMyMTI4NTFlN2M2OTlmN2U1NDBlZmU5MjIzMDAzMWJkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBKdWwgMjUgMDg6Mzk6MjIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9mdXNlL2Rldi5jIGIvZnMvZnVzZS9kZXYuY1xuaW5kZXggNTc2M2E3Y2QzYjM3ZmEuLjhiMTRjN2Q1N2EwMTE5IDEwMDY0NFxuLS0tIGEvZnMvZnVzZS9kZXYuY1xuKysrIGIvZnMvZnVzZS9kZXYuY1xuQEAgLTE2NjIsMTggKzE2NjIsMjMgQEAgc3RhdGljIGludCBmdXNlX2Rldl9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxuIHN0cnVjdCBmdXNlX2RldiAqZnVzZV9nZXRfZGV2KHN0cnVjdCBmaWxlICpmaWxlKVxuIHtcbiBcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9maWxlX3RvX2Z1ZChmaWxlKTtcbitcdHN0cnVjdCBmdXNlX2NoYW4gKmZjaCA9IGZ1c2VfZGV2X2NoYW5fZ2V0KGZ1ZCk7XG4gXHRpbnQgZXJyO1xuIFxuLVx0aWYgKHVubGlrZWx5KCFmdXNlX2Rldl9jaGFuX2dldChmdWQpKSkge1xuK1x0aWYgKHVubGlrZWx5KCFmY2gpKSB7XG4gXHRcdC8qIG9ubHkgYmxvY2sgd2FpdGluZyBmb3IgbW91bnQgaWYgc3luYyBpbml0IHdhcyByZXF1ZXN0ZWQgKi9cbiBcdFx0aWYgKCFmdWQtXHUwMDNlc3luY19pbml0KVxuIFx0XHRcdHJldHVybiBFUlJfUFRSKC1FUEVSTSk7XG4gXG4tXHRcdGVyciA9IHdhaXRfZXZlbnRfaW50ZXJydXB0aWJsZShmdXNlX2Rldl93YWl0cSwgZnVzZV9kZXZfY2hhbl9nZXQoZnVkKSAhPSBOVUxMKTtcbitcdFx0ZXJyID0gd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlKGZ1c2VfZGV2X3dhaXRxLFxuK1x0XHRcdFx0XHQgICAgICAgKGZjaCA9IGZ1c2VfZGV2X2NoYW5fZ2V0KGZ1ZCkpICE9IE5VTEwpO1xuIFx0XHRpZiAoZXJyKVxuIFx0XHRcdHJldHVybiBFUlJfUFRSKGVycik7XG4gXHR9XG4gXG4rXHRpZiAodW5saWtlbHkoZmNoID09IEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEKSlcbitcdFx0cmV0dXJuIEVSUl9QVFIoLUVQRVJNKTtcbitcbiBcdHJldHVybiBmdWQ7XG4gfVxuIFxuQEAgLTIyMTEsMTcgKzIyMTYsMzEgQEAgdm9pZCBmdXNlX2NoYW5fd2FpdF9hYm9ydGVkKHN0cnVjdCBmdXNlX2NoYW4gKmZjaClcbiBcdGZ1c2VfdXJpbmdfd2FpdF9zdG9wcGVkX3F1ZXVlcyhmY2gpO1xuIH1cbiBcbitzdGF0aWMgYm9vbCBmdXNlX2Rldl9hbGxfY2xvc2luZyhzdHJ1Y3QgZnVzZV9jaGFuICpmY2gpXG4re1xuK1x0c3RydWN0IGZ1c2VfZGV2ICpwb3M7XG4rXG4rXHRsb2NrZGVwX2Fzc2VydF9oZWxkKFx1MDAyNmZjaC1cdTAwM2Vsb2NrKTtcbitcbitcdGxpc3RfZm9yX2VhY2hfZW50cnkocG9zLCBcdTAwMjZmY2gtXHUwMDNlZGV2aWNlcywgZW50cnkpIHtcbitcdFx0aWYgKCFwb3MtXHUwMDNlY2xvc2luZylcbitcdFx0XHRyZXR1cm4gZmFsc2U7XG4rXHR9XG4rXHRyZXR1cm4gdHJ1ZTtcbit9XG4rXG4gaW50IGZ1c2VfZGV2X3JlbGVhc2Uoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXG4ge1xuIFx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBmdXNlX2ZpbGVfdG9fZnVkKGZpbGUpO1xuIFx0LyogUGFpcnMgd2l0aCBjbXB4Y2hnKCkgaW4gZnVzZV9kZXZfaW5zdGFsbCgpICovXG4gXHRzdHJ1Y3QgZnVzZV9jaGFuICpmY2ggPSB4Y2hnKFx1MDAyNmZ1ZC1cdTAwM2VjaGFuLCBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCk7XG4gXG4tXHRpZiAoZmNoKSB7XG4rXHRpZiAoZmNoIFx1MDAyNlx1MDAyNiBmY2ggIT0gRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQpIHtcbiBcdFx0c3RydWN0IGZ1c2VfcHF1ZXVlICpmcHEgPSBcdTAwMjZmdWQtXHUwMDNlcHE7XG4gXHRcdExJU1RfSEVBRCh0b19lbmQpO1xuIFx0XHR1bnNpZ25lZCBpbnQgaTtcbiBcdFx0Ym9vbCBsYXN0O1xuK1x0XHRib29sIGFib3J0O1xuIFxuIFx0XHQvKiBNYWtlIHN1cmUgZnVzZV9kZXZfaW5zdGFsbF93aXRoX3BxKCkgaGFzIGZpbmlzaGVkICovXG4gXHRcdHNwaW5fbG9jayhcdTAwMjZmY2gtXHUwMDNlbG9jayk7XG5AQCAtMjIzNCwxNCArMjI1MywxNSBAQCBpbnQgZnVzZV9kZXZfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbiBcdFx0bGlzdF9kZWwoXHUwMDI2ZnVkLVx1MDAzZWVudHJ5KTtcbiBcdFx0LyogQXJlIHdlIHRoZSBsYXN0IG9wZW4gZGV2aWNlPyAqL1xuIFx0XHRsYXN0ID0gbGlzdF9lbXB0eShcdTAwMjZmY2gtXHUwMDNlZGV2aWNlcyk7XG4rXHRcdGFib3J0ID0gZmNoLVx1MDAzZWNvbm5lY3RlZCBcdTAwMjZcdTAwMjYgZnVzZV9kZXZfYWxsX2Nsb3NpbmcoZmNoKTtcbiBcdFx0c3Bpbl91bmxvY2soXHUwMDI2ZmNoLVx1MDAzZWxvY2spO1xuIFxuIFx0XHRmdXNlX2Rldl9lbmRfcmVxdWVzdHMoXHUwMDI2dG9fZW5kKTtcbiBcbi1cdFx0aWYgKGxhc3QpIHtcbitcdFx0aWYgKGxhc3QpXG4gXHRcdFx0V0FSTl9PTihmY2gtXHUwMDNlaXEuZmFzeW5jICE9IE5VTEwpO1xuK1x0XHRpZiAoYWJvcnQpXG4gXHRcdFx0ZnVzZV9jaGFuX2Fib3J0KGZjaCwgZmFsc2UpO1xuLVx0XHR9XG4gXHRcdGZ1c2VfY29ubl9wdXQoZmNoLVx1MDAzZWNvbm4pO1xuIFx0fVxuIFx0ZnVzZV9kZXZfcHV0KGZ1ZCk7XG5AQCAtMjM3NSw2ICsyMzk1LDM0IEBAIHN0YXRpYyB2b2lkIGZ1c2VfZGV2X3Nob3dfZmRpbmZvKHN0cnVjdCBzZXFfZmlsZSAqc2VxLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbiB9XG4gI2VuZGlmXG4gXG4rc3RhdGljIGludCBmdXNlX2Rldl9mbHVzaChzdHJ1Y3QgZmlsZSAqZmlsZSwgZmxfb3duZXJfdCBpZClcbit7XG4rXHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IGZ1c2VfZmlsZV90b19mdWQoZmlsZSk7XG4rXHRzdHJ1Y3QgZnVzZV9jaGFuICpmY2g7XG4rXHRib29sIGFib3J0O1xuK1xuK1x0aWYgKGZpbGVfY291bnQoZmlsZSkgIT0gMSlcbitcdFx0cmV0dXJuIDA7XG4rXG4rXHQvKlxuK1x0ICogQXRvbWljYWxseSB0cmFuc2l0aW9uIGZ1ZC1cdTAwM2VjaGFuIGZyb20gTlVMTCB0byBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRFxuK1x0ICogb24gZmluYWwgY2xvc2UgdG8gcHJldmVudCBhIGxhdGVyIGZ1c2VfZGV2X2luc3RhbGwoKSBmcm9tIHN1Y2NlZWRpbmcuXG4rXHQgKi9cbitcdGZjaCA9IGNtcHhjaGcoXHUwMDI2ZnVkLVx1MDAzZWNoYW4sIE5VTEwsIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEKTtcbitcdGlmICghZmNoIHx8IGZjaCA9PSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRClcbitcdFx0cmV0dXJuIDA7XG4rXG4rXHRzcGluX2xvY2soXHUwMDI2ZmNoLVx1MDAzZWxvY2spO1xuK1x0ZnVkLVx1MDAzZWNsb3NpbmcgPSB0cnVlO1xuK1x0YWJvcnQgPSBmY2gtXHUwMDNlY29ubmVjdGVkIFx1MDAyNlx1MDAyNiBmdXNlX2Rldl9hbGxfY2xvc2luZyhmY2gpO1xuK1x0c3Bpbl91bmxvY2soXHUwMDI2ZmNoLVx1MDAzZWxvY2spO1xuK1xuK1x0aWYgKGFib3J0KVxuK1x0XHRmdXNlX2NoYW5fYWJvcnQoZmNoLCBmYWxzZSk7XG4rXG4rXHRyZXR1cm4gMDtcbit9XG4rXG4gY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmdXNlX2Rldl9vcGVyYXRpb25zID0ge1xuIFx0Lm93bmVyXHRcdD0gVEhJU19NT0RVTEUsXG4gXHQub3Blblx0XHQ9IGZ1c2VfZGV2X29wZW4sXG5AQCAtMjM4Myw2ICsyNDMxLDcgQEAgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmdXNlX2Rldl9vcGVyYXRpb25zID0ge1xuIFx0LndyaXRlX2l0ZXJcdD0gZnVzZV9kZXZfd3JpdGUsXG4gXHQuc3BsaWNlX3dyaXRlXHQ9IGZ1c2VfZGV2X3NwbGljZV93cml0ZSxcbiBcdC5wb2xsXHRcdD0gZnVzZV9kZXZfcG9sbCxcbitcdC5mbHVzaFx0XHQ9IGZ1c2VfZGV2X2ZsdXNoLFxuIFx0LnJlbGVhc2VcdD0gZnVzZV9kZXZfcmVsZWFzZSxcbiBcdC5mYXN5bmNcdFx0PSBmdXNlX2Rldl9mYXN5bmMsXG4gXHQudW5sb2NrZWRfaW9jdGwgPSBmdXNlX2Rldl9pb2N0bCxcbmRpZmYgLS1naXQgYS9mcy9mdXNlL2Z1c2VfZGV2X2kuaCBiL2ZzL2Z1c2UvZnVzZV9kZXZfaS5oXG5pbmRleCA2NjhjODM5MWQ2MWMwMy4uMjgzM2EwMzUwYzQzNWEgMTAwNjQ0XG4tLS0gYS9mcy9mdXNlL2Z1c2VfZGV2X2kuaFxuKysrIGIvZnMvZnVzZS9mdXNlX2Rldl9pLmhcbkBAIC0zMDIsNiArMzAyLDkgQEAgc3RydWN0IGZ1c2VfZGV2IHtcbiBcdC8qKiBAc3luY19pbml0OiBJc3N1ZSBGVVNFX0lOSVQgc3luY2hyb25vdXNseSAqL1xuIFx0Ym9vbCBzeW5jX2luaXQ7XG4gXG4rXHQvKiogQGNsb3Npbmc6IEZpbmFsIGNsb3NlIGhhcyBzdGFydGVkLCBwcm90ZWN0ZWQgYnkgY2hhbi1cdTAwM2Vsb2NrICovXG4rXHRib29sIGNsb3Npbmc7XG4rXG4gXHQvKiogQGNoYW46IEZ1c2UgY2hhbm5lbCBmb3IgdGhpcyBkZXZpY2UgKi9cbiBcdHN0cnVjdCBmdXNlX2NoYW4gKmNoYW47XG4gXG5AQCAtMzMwLDE3ICszMzMsMjUgQEAgc3RydWN0IGZ1c2VfY29weV9zdGF0ZSB7XG4gXHR9IHJpbmc7XG4gfTtcbiBcbi0vKiBmdWQtXHUwMDNlY2hhbiBnZXRzIGFzc2lnbmVkIHRvIHRoaXMgdmFsdWUgd2hlbiAvZGV2L2Z1c2UgaXMgY2xvc2VkICovXG4tI2RlZmluZSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCAoKHN0cnVjdCBmdXNlX2NoYW4gKikgMSlcbi1cbiAvKlxuLSAqIExvY2tsZXNzIGFjY2VzcyBpcyBPSywgYmVjYXVzZSBmdWQtXHUwMDNlY2hhbiBpcyBzZXQgb25jZSBkdXJpbmcgbW91bnQgYW5kIGlzIHZhbGlkXG4tICogdW50aWwgdGhlIGZpbGUgaXMgcmVsZWFzZWQuXG4rICogZnVkLVx1MDAzZWNoYW4gaGFzIHRoZSBmb2xsb3dpbmcgbW9ub3RvbmljIHN0YXRlIHRyYW5zaXRpb25zOlxuKyAqXG4rICogTlVMTCAtXHUwMDNlIHZhbGlkIGNoYW5uZWwgLVx1MDAzZSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRFxuKyAqIE5VTEwgLS0tLS0tLS0tLS0tLS0tLS1cdTAwM2UgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURURcbiAgKlxuLSAqIGZ1ZC1cdTAwM2VjaGFuIGlzIHNldCB0byBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCBvbmx5IGFmdGVyIHRoZSBjb250YWluaW5nIGZpbGUgaXNcbi0gKiByZWxlYXNlZCwgc28gcmVzdWx0IGlzIHNhZmUgdG8gZGVyZWZlcmVuY2UgaW4gbW9zdCBjYXNlcy4gIEV4Y2VwdGlvbnMgYXJlOlxuLSAqIGZ1c2VfZGV2X3B1dCgpIGFuZCBmdXNlX2ZpbGxfc3VwZXJfY29tbW9uKCkuXG4rICogQSB2YWxpZCBjaGFubmVsIHBvaW50ZXIgcmVtYWlucyB2YWxpZCB1bnRpbCB0aGUgZmlsZSBpcyByZWxlYXNlZC4gRmluYWxcbisgKiBmbHVzaCBjYW4gaW5zdGFsbCBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCBkaXJlY3RseSBmb3IgYW4gdW5pbnN0YWxsZWRcbisgKiBkZXZpY2UsIHByZXZlbnRpbmcgYW55IGxhdGVyIGNoYW5uZWwgaW5zdGFsbGF0aW9uLiBUaGUgc2VudGluZWwgdGhlcmVmb3JlXG4rICogbWVhbnMgdGhhdCB0aGUgY2hhbm5lbCBjYW4gbm8gbG9uZ2VyIGJlIGluc3RhbGxlZCBvciBhY2Nlc3NlZCB0aHJvdWdoIHRoaXNcbisgKiBmaWxlOyBpdCBkb2VzIG5vdCBpbXBseSB0aGF0IHJlbGVhc2UgaGFzIGFscmVhZHkgcnVuIGFuZCBpdCBtdXN0IG5ldmVyIGJlXG4rICogZGVyZWZlcmVuY2VkLlxuKyAqXG4rICogZnVzZV9kZXZfY2hhbl9nZXQoKSByZWFkcyB0aGlzIHN0YXRlIGxvY2tsZXNzbHkuIENhbGxlcnMgbXVzdCBkaXN0aW5ndWlzaFxuKyAqIE5VTEwsIGEgdmFsaWQgY2hhbm5lbCBwb2ludGVyLCBhbmQgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQgYmVmb3JlXG4rICogZGVyZWZlcmVuY2luZyB0aGUgcmVzdWx0LlxuICAqL1xuKyNkZWZpbmUgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQgKChzdHJ1Y3QgZnVzZV9jaGFuICopIDEpXG4rXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgZnVzZV9jaGFuICpmdXNlX2Rldl9jaGFuX2dldChzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZClcbiB7XG4gXHQvKiBQYWlycyB3aXRoIHhjaGcoKSBpbiBmdXNlX2Rldl9pbnN0YWxsKCkgKi9cbkBAIC0zNTUsOCArMzY2LDkgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgZnVzZV9kZXYgKmZ1c2VfZmlsZV90b19mdWQoc3RydWN0IGZpbGUgKmZpbGUpXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgZnVzZV9kZXYgKl9fZnVzZV9nZXRfZGV2KHN0cnVjdCBmaWxlICpmaWxlKVxuIHtcbiBcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9maWxlX3RvX2Z1ZChmaWxlKTtcbitcdHN0cnVjdCBmdXNlX2NoYW4gKmZjaCA9IGZ1c2VfZGV2X2NoYW5fZ2V0KGZ1ZCk7XG4gXG4tXHRpZiAoIWZ1c2VfZGV2X2NoYW5fZ2V0KGZ1ZCkpXG4rXHRpZiAoIWZjaCB8fCBmY2ggPT0gRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQpXG4gXHRcdHJldHVybiBOVUxMO1xuIFxuIFx0cmV0dXJuIGZ1ZDtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjM5OjI2LjM5MjU0MDg2OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0MzY0MjQxMzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRlVTRSBEZXZpY2UgRHJpdmVyIFBhdGNoIEFuYWx5c2lzIGFuZCBGdXp6aW5nIFN0cmF0ZWd5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgdGhlIEZVU0UgZGV2aWNlIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBgL2Rldi9mdXNlYCBoYW5kbGluZy4gSXQncyB0b3VjaGluZyBgZnMvZnVzZS9kZXYuY2AgYW5kIGBmcy9mdXNlL2Z1c2VfZGV2X2kuaGAsIHdoaWNoIGlzIGFsd2F5cyBpbnRlcmVzdGluZy4gVGhpcyBzZWVtcyBsaWtlIGEgZnVuY3Rpb25hbCBjaGFuZ2Ug4oCTIGFkZGluZyBhIGAuZmx1c2hgIG9wZXJhdGlvbiAoYGZ1c2VfZGV2X2ZsdXNoYCkgdG8gdGhlIGBmdXNlX2Rldl9vcGVyYXRpb25zYCBzdHJ1Y3QuICBJdCdzIGFsc28gbW9kaWZ5aW5nIGhvdyB0aGUgZHJpdmVyIGRlYWxzIHdpdGggYEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEYCBhbmQgaG93IGl0IGhhbmRsZXMgY2hhbm5lbCBjbG9zdXJlIHVzaW5nIGBmdXNlX2Rldl9hbGxfY2xvc2luZ2AgaW4gYGZ1c2VfZGV2X3JlbGVhc2VgLiBHaXZlbiB0aGUgc2NvcGUgb2YgdGhlc2UgY2hhbmdlcywgdGhpcyBpcyAqZGVmaW5pdGVseSogd29ydGggZnV6emluZy4gV2UgbmVlZCB0byBsb2NrIGRvd24gYSBnb29kIGZ1enppbmcgc3RyYXRlZ3kuXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHdlIHNob3VsZCBmb2N1cyBvdXIgZnV6emluZyBlZmZvcnRzIG9uIHNwZWNpZmljIGZ1bmN0aW9ucy4gTGV0J3Mgc2VlLi4uIHRoZSBwYXRjaCBtb2RpZmllczogYGZ1c2VfZ2V0X2RldmAsIGBmdXNlX2Rldl9hbGxfY2xvc2luZ2AsIGBmdXNlX2Rldl9yZWxlYXNlYCwgYGZ1c2VfZGV2X2ZsdXNoYCwgYW5kIGBfX2Z1c2VfZ2V0X2RldmAuIFRoZSBmdW5jdGlvbnMgdGhhdCBhcmUgZW50cnkgcG9pbnRzIGZvciBmdXp6aW5nIGxvb2sgbGlrZTogYGZ1c2VfZGV2X2ZsdXNoYCAod2hpY2ggd2lsbCBiZSBjYWxsZWQgdmlhIHRoZSBgZmlscF9jbG9zZWAgcGF0aCksIGBmdXNlX2Rldl9yZWxlYXNlYCAodHJpZ2dlcmVkIGJ5IGBmcHV0YCBhbmQgdGhlcmVmb3JlIGBmX29wLVx1MDAzZXJlbGVhc2VgKSwgYW5kIGBmdXNlX2dldF9kZXZgIChjYWxsZWQgZnJvbSBhIHZhcmlldHkgb2YgcGxhY2VzLCBuYW1lbHkgaW9jdGxzLCByZWFkcywgYW5kIHdyaXRlcyB3aXRoaW4gYGZ1c2VfZGV2X29wZXJhdGlvbnNgKS4gVGhlc2UgYXJlIHRoZSBrZXkgaW50ZXJmYWNlcyB0aGF0IHNlZW0gdG8gYmUgaW1wYWN0ZWQuXG5cbk5leHQgc3RlcDogbGV0J3MgZGl2ZSBpbnRvIHRoZSBjYWxsIHNpdGVzIG9mIGBmdXNlX2dldF9kZXZgLi4uIExldCdzIHNlZSB3aGF0J3MgdXNpbmcgaXQgYW5kIGhvdy4gV2UnbGwgYmUgYWJsZSB0byByZWZpbmUgb3VyIGZ1enppbmcgYXBwcm9hY2ggZnJvbSB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDExMywiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1OSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjM5OjMyLjgyODk2NzgyN1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjEzODkzNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZnVzZV9nZXRfZGV2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2Z1c2UvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2Z1c2UvY3VzZS5jPTU1NT1zdGF0aWMgaW50IGN1c2VfY2hhbm5lbF9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxcbmZzL2Z1c2UvY3VzZS5jLTU1Ni17XFxuZnMvZnVzZS9jdXNlLmM6NTU3OlxcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gX19mdXNlX2dldF9kZXYoZmlsZSk7XFxuZnMvZnVzZS9jdXNlLmMtNTU4LVxcdHN0cnVjdCBjdXNlX2Nvbm4gKmNjID0gZmNfdG9fY2MoZnVkLVxcdTAwM2VjaGFuLVxcdTAwM2Vjb25uKTtcXG4tLVxcbmZzL2Z1c2UvZGV2LmM9MTY1MT1zdGF0aWMgaW50IGZ1c2VfZGV2X29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXFxuLS1cXG5mcy9mdXNlL2Rldi5jLTE2NjEtXFxuZnMvZnVzZS9kZXYuYzoxNjYyOnN0cnVjdCBmdXNlX2RldiAqZnVzZV9nZXRfZGV2KHN0cnVjdCBmaWxlICpmaWxlKVxcbmZzL2Z1c2UvZGV2LmMtMTY2My17XFxuLS1cXG5mcy9mdXNlL2Rldi5jPTE2ODU9c3RhdGljIHNzaXplX3QgZnVzZV9kZXZfcmVhZChzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqdG8pXFxuLS1cXG5mcy9mdXNlL2Rldi5jLTE2ODgtXFx0c3RydWN0IGZpbGUgKmZpbGUgPSBpb2NiLVxcdTAwM2VraV9maWxwO1xcbmZzL2Z1c2UvZGV2LmM6MTY4OTpcXHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IGZ1c2VfZ2V0X2RldihmaWxlKTtcXG5mcy9mdXNlL2Rldi5jLTE2OTAtXFxuLS1cXG5mcy9mdXNlL2Rldi5jPTE3MDI9c3RhdGljIHNzaXplX3QgZnVzZV9kZXZfc3BsaWNlX3JlYWQoc3RydWN0IGZpbGUgKmluLCBsb2ZmX3QgKnBwb3MsXFxuLS1cXG5mcy9mdXNlL2Rldi5jLTE3MDktXFx0c3RydWN0IGZ1c2VfY29weV9zdGF0ZSBjcztcXG5mcy9mdXNlL2Rldi5jOjE3MTA6XFx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBmdXNlX2dldF9kZXYoaW4pO1xcbmZzL2Z1c2UvZGV2LmMtMTcxMS1cXG4tLVxcbmZzL2Z1c2UvZGV2LmM9MTk3Mz1zdGF0aWMgc3NpemVfdCBmdXNlX2Rldl93cml0ZShzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqZnJvbSlcXG4tLVxcbmZzL2Z1c2UvZGV2LmMtMTk3NS1cXHRzdHJ1Y3QgZnVzZV9jb3B5X3N0YXRlIGNzO1xcbmZzL2Z1c2UvZGV2LmM6MTk3NjpcXHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IF9fZnVzZV9nZXRfZGV2KGlvY2ItXFx1MDAzZWtpX2ZpbHApO1xcbmZzL2Z1c2UvZGV2LmMtMTk3Ny1cXG4tLVxcbmZzL2Z1c2UvZGV2LmM9MTk4OT1zdGF0aWMgc3NpemVfdCBmdXNlX2Rldl9zcGxpY2Vfd3JpdGUoc3RydWN0IHBpcGVfaW5vZGVfaW5mbyAqcGlwZSxcXG4tLVxcbmZzL2Z1c2UvZGV2LmMtMTk5Ny1cXHRzdHJ1Y3QgZnVzZV9jb3B5X3N0YXRlIGNzO1xcbmZzL2Z1c2UvZGV2LmM6MTk5ODpcXHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IF9fZnVzZV9nZXRfZGV2KG91dCk7XFxuZnMvZnVzZS9kZXYuYy0xOTk5LVxcdHNpemVfdCByZW07XFxuLS1cXG5mcy9mdXNlL2Rldi5jPTIwODE9c3RhdGljIF9fcG9sbF90IGZ1c2VfZGV2X3BvbGwoc3RydWN0IGZpbGUgKmZpbGUsIHBvbGxfdGFibGUgKndhaXQpXFxuLS1cXG5mcy9mdXNlL2Rldi5jLTIwODQtXFx0c3RydWN0IGZ1c2VfaXF1ZXVlICpmaXE7XFxuZnMvZnVzZS9kZXYuYzoyMDg1OlxcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9nZXRfZGV2KGZpbGUpO1xcbmZzL2Z1c2UvZGV2LmMtMjA4Ni1cXG4tLVxcbmZzL2Z1c2UvZGV2LmM9MjI3Mj1zdGF0aWMgaW50IGZ1c2VfZGV2X2Zhc3luYyhpbnQgZmQsIHN0cnVjdCBmaWxlICpmaWxlLCBpbnQgb24pXFxuZnMvZnVzZS9kZXYuYy0yMjczLXtcXG5mcy9mdXNlL2Rldi5jOjIyNzQ6XFx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBmdXNlX2dldF9kZXYoZmlsZSk7XFxuZnMvZnVzZS9kZXYuYy0yMjc1LVxcbi0tXFxuZnMvZnVzZS9kZXYuYz0yMjgzPXN0YXRpYyBsb25nIGZ1c2VfZGV2X2lvY3RsX2Nsb25lKHN0cnVjdCBmaWxlICpmaWxlLCBfX3UzMiBfX3VzZXIgKmFyZ3ApXFxuLS1cXG5mcy9mdXNlL2Rldi5jLTIzMDItXFxuZnMvZnVzZS9kZXYuYzoyMzAzOlxcdGZ1ZCA9IGZ1c2VfZ2V0X2RldihmZF9maWxlKGYpKTtcXG5mcy9mdXNlL2Rldi5jLTIzMDQtXFx0aWYgKElTX0VSUihmdWQpKVxcbi0tXFxuZnMvZnVzZS9kZXYuYz0yMzE4PXN0YXRpYyBsb25nIGZ1c2VfZGV2X2lvY3RsX2JhY2tpbmdfb3BlbihzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4tLVxcbmZzL2Z1c2UvZGV2LmMtMjMyMC17XFxuZnMvZnVzZS9kZXYuYzoyMzIxOlxcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9nZXRfZGV2KGZpbGUpO1xcbmZzL2Z1c2UvZGV2LmMtMjMyMi1cXHRzdHJ1Y3QgZnVzZV9iYWNraW5nX21hcCBtYXA7XFxuLS1cXG5mcy9mdXNlL2Rldi5jPTIzMzY9c3RhdGljIGxvbmcgZnVzZV9kZXZfaW9jdGxfYmFja2luZ19jbG9zZShzdHJ1Y3QgZmlsZSAqZmlsZSwgX191MzIgX191c2VyICphcmdwKVxcbmZzL2Z1c2UvZGV2LmMtMjMzNy17XFxuZnMvZnVzZS9kZXYuYzoyMzM4OlxcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9nZXRfZGV2KGZpbGUpO1xcbmZzL2Z1c2UvZGV2LmMtMjMzOS1cXHRpbnQgYmFja2luZ19pZDtcXG4tLVxcbmZzL2Z1c2UvZGV2LmM9MjM4OD1zdGF0aWMgdm9pZCBmdXNlX2Rldl9zaG93X2ZkaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgc3RydWN0IGZpbGUgKmZpbGUpXFxuZnMvZnVzZS9kZXYuYy0yMzg5LXtcXG5mcy9mdXNlL2Rldi5jOjIzOTA6XFx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBfX2Z1c2VfZ2V0X2RldihmaWxlKTtcXG5mcy9mdXNlL2Rldi5jLTIzOTEtXFx0aWYgKCFmdWQpXFxuLS1cXG5mcy9mdXNlL2Rldl91cmluZy5jPTEyMTc9aW50IGZ1c2VfdXJpbmdfY21kKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCwgdW5zaWduZWQgaW50IGlzc3VlX2ZsYWdzKVxcbi0tXFxuZnMvZnVzZS9kZXZfdXJpbmcuYy0xMjMyLVxcbmZzL2Z1c2UvZGV2X3VyaW5nLmM6MTIzMzpcXHRmdWQgPSBmdXNlX2dldF9kZXYoY21kLVxcdTAwM2VmaWxlKTtcXG5mcy9mdXNlL2Rldl91cmluZy5jLTEyMzQtXFx0aWYgKElTX0VSUihmdWQpKSB7XFxuLS1cXG5mcy9mdXNlL2Z1c2VfZGV2X2kuaD0zNjE9c3RhdGljIGlubGluZSBzdHJ1Y3QgZnVzZV9kZXYgKmZ1c2VfZmlsZV90b19mdWQoc3RydWN0IGZpbGUgKmZpbGUpXFxuLS1cXG5mcy9mdXNlL2Z1c2VfZGV2X2kuaC0zNjUtXFxuZnMvZnVzZS9mdXNlX2Rldl9pLmg6MzY2OnN0YXRpYyBpbmxpbmUgc3RydWN0IGZ1c2VfZGV2ICpfX2Z1c2VfZ2V0X2RldihzdHJ1Y3QgZmlsZSAqZmlsZSlcXG5mcy9mdXNlL2Z1c2VfZGV2X2kuaC0zNjcte1xcbi0tXFxuZnMvZnVzZS9mdXNlX2Rldl9pLmg9Mzc3PXZvaWQgZnVzZV9pcXVldWVfaW5pdChzdHJ1Y3QgZnVzZV9pcXVldWUgKmZpcSwgY29uc3Qgc3RydWN0IGZ1c2VfaXF1ZXVlX29wcyAqb3BzLCB2b2lkICpwcml2KTtcXG5mcy9mdXNlL2Z1c2VfZGV2X2kuaC0zNzgtXFxuZnMvZnVzZS9mdXNlX2Rldl9pLmg6Mzc5OnN0cnVjdCBmdXNlX2RldiAqZnVzZV9nZXRfZGV2KHN0cnVjdCBmaWxlICpmaWxlKTtcXG5mcy9mdXNlL2Z1c2VfZGV2X2kuaC0zODAtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjM5OjMzLjA1MDM2NTUyOFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyMzIyNTkzNTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBGVVNFIERldmljZSBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayBkb3duIHRoaXMgcGF0Y2guIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpZGVudGlmeSB0aGUga2V5IGZ1bmN0aW9ucyBiZWluZyBtb2RpZmllZCBhbmQgaG93IHRoZXkgaW50ZXJhY3QuIEl0IGxvb2tzIGxpa2Ugd2UncmUgdG91Y2hpbmcgYGZ1c2VfZ2V0X2RldmAsIGBfX2Z1c2VfZ2V0X2RldmAsIGBmdXNlX2Rldl9yZWxlYXNlYCwgYW5kIGFkZGluZyBhIG5ldyBmdW5jdGlvbiwgYGZ1c2VfZGV2X2ZsdXNoYC4gU2luY2UgYGZ1c2VfZGV2X2ZsdXNoYCBpcyBzdGF0aWMsIEkgY2FuJ3QgZGlyZWN0bHkgdGFyZ2V0IGl0LiBIb3dldmVyLCBpdCdzIHRyaWdnZXJlZCB0aHJvdWdoIHRoZSBgZmx1c2hgIGZpbGUgb3BlcmF0aW9uIG9uIGAvZGV2L2Z1c2VgLCBzbyBpdCdzIHJlbGV2YW50IGNvbnRleHQuXG5cbmBmdXNlX2Rldl9yZWxlYXNlYCBpcyBhbHNvIGltcG9ydGFudCwgYXMgaXQncyBjb25uZWN0ZWQgdG8gdGhlIGByZWxlYXNlYCBmaWxlIG9wZXJhdGlvbiBvbiBgL2Rldi9mdXNlYC4gTm93LCBgZnVzZV9nZXRfZGV2YCBpcyB1c2VkIGV4dGVuc2l2ZWx5IGluIGEgdmFyaWV0eSBvZiBvcGVyYXRpb25zIG9uIGAvZGV2L2Z1c2VgLCBsaWtlIGBmdXNlX2Rldl9yZWFkYCwgYGZ1c2VfZGV2X3dyaXRlYCwgYGZ1c2VfZGV2X3BvbGxgLCBgZnVzZV9kZXZfZmFzeW5jYCwgYW5kIGBmdXNlX2Rldl9pb2N0bF9jbG9uZWAgdG8gbmFtZSBhIGZldy4gVGhhdCBnaXZlcyB1cyBhIGdvb2Qgc2V0IG9mIHN0YXJ0aW5nIHBvaW50czogYGZ1c2VfZGV2X3JlbGVhc2VgLCBhbG9uZyB3aXRoIGBmdXNlX2Rldl9yZWFkYCwgYGZ1c2VfZGV2X3dyaXRlYCwgYGZ1c2VfZGV2X3BvbGxgLCBgZnVzZV9kZXZfZmFzeW5jYCwgYW5kIGBmdXNlX2Rldl9pb2N0bF9jbG9uZWAuXG5cbkJ1dCB3YWl0LCBpcyBgZnVzZV9nZXRfZGV2YCBleHBvcnRlZD8gQWgsIHllcywgaXQncyBub3Qgc3RhdGljOyBpdCdzIGEgbm9uLXN0YXRpYyBmdW5jdGlvbiEgVGhhdCBvcGVucyB1cCBwb3NzaWJpbGl0aWVzLiBBbmQgYGZ1c2VfZGV2X3JlbGVhc2VgIGlzIGFsc28gbm9uLXN0YXRpYy4gR29vZC4gQmVmb3JlIGRpdmluZyBmdXJ0aGVyIGludG8gdGhlIGNvZGUsIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIGlmIEZVU0UgaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHdlIG5lZWQgdG8gbG9vayBmb3IgYSBjb25maWd1cmF0aW9uIG9wdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NjU1MSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwODozOTozOC4yODI2MjgyNzNaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc2NDc4MDE2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBGVVNFX0ZTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2Z1c2UvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9mdXNlL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5mcy9mdXNlL0tjb25maWc6Mjpjb25maWcgRlVTRV9GU1xcbmZzL2Z1c2UvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJGVVNFIChGaWxlc3lzdGVtIGluIFVzZXJzcGFjZSkgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDg6Mzk6MzguNTU5MTE3NTU4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUyOTM0MDIyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGJyZWFrZG93biBvZiB3aGF0IEknbSBsb29raW5nIGF0LCBmcm9tIG15IGV4cGVydCBwZXJzcGVjdGl2ZTpcblxuKipJbnZlc3RpZ2F0aW5nIEZVU0UgQ29uZmlndXJhdGlvbiBhbmQgT3BlcmF0aW9ucyoqXG5cblJpZ2h0LCBzbyB3ZSdyZSBkZWFsaW5nIHdpdGggdGhlIEZVU0UgZmlsZSBzeXN0ZW0gZHJpdmVyLCBhbmQgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGNsZWFybHkgYEZVU0VfRlNgLiBMZXQgbWUgZmlyc3QgY29uZmlybSBpZiB0aGVyZSBhcmUgYW55ICpvdGhlciogcmVsYXRlZCBjb25maWdzIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQgaGVyZSDigJMgSSBkb24ndCB3YW50IHRvIG1pc3MgYW55dGhpbmcuXG5cbk9rYXksIGxldCdzIHNlZS4gVGhlIGNoYW5nZXMgYXJlIGZvY3VzZWQgb24gYGZzL2Z1c2UvZGV2LmNgIGFuZCBgZnMvZnVzZS9mdXNlX2Rldl9pLmhgLiBJbnRlcmVzdGluZy4uLiBObyBuZXcgY29uZmlnIG9wdGlvbnMgYXJlIGJlaW5nIGludHJvZHVjZWQsIHNvIHRoYXQncyBoZWxwZnVsIGluZm9ybWF0aW9uLlxuXG5Ob3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBoYXBwZW5pbmcgYXQgdGhlIGNvcmUgbGV2ZWwuIE15IGZvY3VzIHNoaWZ0cyB0byB0aGUgYGZ1c2VfZGV2X29wZXJhdGlvbnNgIHN0cnVjdHVyZSBkZWZpbmVkIHdpdGhpbiBgZnMvZnVzZS9kZXYuY2AuIFRoaXMgaXMgd2hlcmUgdGhlIGNydWNpYWwgY2FsbGJhY2tzIGFuZCBpbnRlcmZhY2UgZGVmaW5pdGlvbnMgbGl2ZSBmb3IgZGV2aWNlLWJhc2VkIEZVU0UgbW91bnRzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2Ugb3BlcmF0aW9ucyBhcmUgZGVmaW5lZCBhbmQgaWYgdGhlc2Ugc3RydWN0dXJlcyBoYXZlIGNoYW5nZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcyOTQsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwODozOTo0Mi4wODg0NjAzNVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzkxNzQxNDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmdXNlX2Rldl9vcGVyYXRpb25zXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2Z1c2UvZGV2LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZnVzZS9kZXYuYz0yMzk4PXN0YXRpYyBpbnQgZnVzZV9kZXZfZmx1c2goc3RydWN0IGZpbGUgKmZpbGUsIGZsX293bmVyX3QgaWQpXFxuLS1cXG5mcy9mdXNlL2Rldi5jLTI0MjUtXFxuZnMvZnVzZS9kZXYuYzoyNDI2OmNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZnVzZV9kZXZfb3BlcmF0aW9ucyA9IHtcXG5mcy9mdXNlL2Rldi5jLTI0MjctXFx0Lm93bmVyXFx0XFx0PSBUSElTX01PRFVMRSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDg6Mzk6NDIuMjY3NjQxMzk1WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY4ODcyMzYyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGb2N1c2luZyBvbiB0aGUgRlVTRSBEZXZpY2UgSW50ZXJhY3Rpb25zKipcblxuT2theSwgc28gSSBuZWVkIHRvIHplcm8gaW4gb24gdGhlIGNvcmUgaW50ZXJhY3Rpb25zIHdpdGggdGhlIEZVU0UgZGV2aWNlLiBMZXQncyBzZWUuLi4gSSdtIHRoaW5raW5nIEkgc2hvdWxkIHN0YXJ0IHdpdGggdGhlc2UgZnVuY3Rpb25zOiBgZnVzZV9kZXZfcmVsZWFzZWAsIGBmdXNlX2dldF9kZXZgLCBgZnVzZV9kZXZfcmVhZGAsIGBmdXNlX2Rldl93cml0ZWAsIGBmdXNlX2Rldl9wb2xsYCwgYW5kIGBmdXNlX2Rldl9mYXN5bmNgLiBJIGhhdmUgYSBmZWVsaW5nIHRoYXQgYGZ1c2VfZ2V0X2RldmAgYW5kIGBmdXNlX2Rldl9yZWxlYXNlYCBhcmUgd29ydGggYSBzZWNvbmQgbG9vaywgYmVjYXVzZSB0aGV5J3JlIG5vbi1zdGF0aWMgd2hpY2ggaXMgaW1wb3J0YW50LCBidXQgYSBxdWljayBnbGFuY2UgbWFrZXMgbWUgdGhpbmsgdGhhdCBgZnVzZV9kZXZfcmVhZGAgaXMgc3RhdGljLCB3aGljaCBsaW1pdHMgaXRzIHV0aWxpdHkuIEkgbmVlZCB0byBtYWtlIGEgbm90ZSB0byBkb3VibGUtY2hlY2sgdGhhdCBgZnVzZV9kZXZfcmVhZGAgaXMgZGVmaW5pdGVseSBzdGF0aWMsIGJlY2F1c2UgdGhhdCBtaWdodCBiZSBtaXNsZWFkaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NzM2LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjM5OjQ1Ljk1NjM3MDQ2NVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTM2MjA0NjI0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZ1c2VfZGV2X3JlYWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZnVzZS9kZXYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9mdXNlL2Rldi5jPTE2NjI9c3RydWN0IGZ1c2VfZGV2ICpmdXNlX2dldF9kZXYoc3RydWN0IGZpbGUgKmZpbGUpXFxuLS1cXG5mcy9mdXNlL2Rldi5jLTE2ODQtXFxuZnMvZnVzZS9kZXYuYzoxNjg1OnN0YXRpYyBzc2l6ZV90IGZ1c2VfZGV2X3JlYWQoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKnRvKVxcbmZzL2Z1c2UvZGV2LmMtMTY4Ni17XFxuLS1cXG5mcy9mdXNlL2Rldi5jPTI0MjY9Y29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmdXNlX2Rldl9vcGVyYXRpb25zID0ge1xcbi0tXFxuZnMvZnVzZS9kZXYuYy0yNDI4LVxcdC5vcGVuXFx0XFx0PSBmdXNlX2Rldl9vcGVuLFxcbmZzL2Z1c2UvZGV2LmM6MjQyOTpcXHQucmVhZF9pdGVyXFx0PSBmdXNlX2Rldl9yZWFkLFxcbmZzL2Z1c2UvZGV2LmMtMjQzMC1cXHQuc3BsaWNlX3JlYWRcXHQ9IGZ1c2VfZGV2X3NwbGljZV9yZWFkLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwODozOTo0Ni40OTI1ODEzMjhaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE5NjEyMDM5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGb2N1c2luZyBvbiBEZXZpY2UgSW50ZXJhY3Rpb24qKlxuXG5Pa2F5LCBzbyBgZnVzZV9kZXZfcmVhZGAgaXMgZGVmaW5pdGVseSBzdGF0aWMsIHdoaWNoIHNpbXBsaWZpZXMgdGhpbmdzLiBUaGF0IG1lYW5zIHdlIGNhbiBzYWZlbHkgc2hpZnQgb3VyIGF0dGVudGlvbiB0byBgZnVzZV9nZXRfZGV2YCBhbmQgYGZ1c2VfZGV2X3JlbGVhc2VgLiBUaG9zZSBzZWVtIGxpa2UgdGhlIGtleSBwbGF5ZXJzIGhlcmUuXG5cbkxldCdzIHF1aWNrbHkgY29uZmlybSB0aGF0IGBmdXNlX2Rldl9mbHVzaGAgaXMgYWxzbyBzdGF0aWMuIFl1cCwgc3RhdGljIHRvby4gVGhhdCBmdXJ0aGVyIG5hcnJvd3MgdGhlIHNjb3BlLiBXZSdyZSBsb29raW5nIGZvciBhbnkgbm9uLXN0YXRpYyBmdW5jdGlvbnMgcmVsYXRlZCB0byBkZXZpY2UgbWFuYWdlbWVudC5cblxuQWxyaWdodCwgc28gdGhlIHN0YW5kb3V0cyBhcmUgc3RpbGwgYGZ1c2VfZ2V0X2RldmAgYW5kIGBmdXNlX2Rldl9yZWxlYXNlYC4gSSdtIGdvaW5nIHRvIGRvdWJsZS1jaGVjayB0aG9zZSB0d28gYWdhaW4sIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nIGNydWNpYWwuIEdvdHRhIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MzAwLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjM5OjQ5LjY4ODcwNTU3OVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjExNjkyNTEyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZ1c2VfZGV2X3JlbGVhc2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZnVzZS9kZXYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9mdXNlL2Rldi5jPTQ1OD1zdGF0aWMgYm9vbCBmdXNlX2Rldl9pbnN0YWxsX3dpdGhfcHEoc3RydWN0IGZ1c2VfZGV2ICpmdWQsIHN0cnVjdCBmdXNlX2NoYW4gKmZjaCxcXG4tLVxcbmZzL2Z1c2UvZGV2LmMtNDY1LVxcdCAqIFBhaXJzIHdpdGg6XFxuZnMvZnVzZS9kZXYuYzo0NjY6XFx0ICogIC0geGNoZygpIGluIGZ1c2VfZGV2X3JlbGVhc2UoKVxcbmZzL2Z1c2UvZGV2LmMtNDY3LVxcdCAqICAtIHNtcF9sb2FkX2FjcXVpcmUoKSBpbiBmdXNlX2Rldl9mY19nZXQoKVxcbi0tXFxuZnMvZnVzZS9kZXYuYz01MTQ9dm9pZCBmdXNlX2Rldl9wdXQoc3RydWN0IGZ1c2VfZGV2ICpmdWQpXFxuLS1cXG5mcy9mdXNlL2Rldi5jLTUyMi1cXHRpZiAoZmNoIFxcdTAwMjZcXHUwMDI2IGZjaCAhPSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCkge1xcbmZzL2Z1c2UvZGV2LmM6NTIzOlxcdFxcdC8qIFRoaXMgaXMgdGhlIHZpcnRpb2ZzIGNhc2UgKGZ1c2VfZGV2X3JlbGVhc2UoKSBub3QgY2FsbGVkKSAqL1xcbmZzL2Z1c2UvZGV2LmMtNTI0LVxcdFxcdHNwaW5fbG9jayhcXHUwMDI2ZmNoLVxcdTAwM2Vsb2NrKTtcXG4tLVxcbmZzL2Z1c2UvZGV2LmM9MjIxOT1zdGF0aWMgYm9vbCBmdXNlX2Rldl9hbGxfY2xvc2luZyhzdHJ1Y3QgZnVzZV9jaGFuICpmY2gpXFxuLS1cXG5mcy9mdXNlL2Rldi5jLTIyMzEtXFxuZnMvZnVzZS9kZXYuYzoyMjMyOmludCBmdXNlX2Rldl9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxcbmZzL2Z1c2UvZGV2LmMtMjIzMy17XFxuLS1cXG5mcy9mdXNlL2Rldi5jLTIyNjktfVxcbmZzL2Z1c2UvZGV2LmM6MjI3MDpFWFBPUlRfU1lNQk9MX0dQTChmdXNlX2Rldl9yZWxlYXNlKTtcXG5mcy9mdXNlL2Rldi5jLTIyNzEtXFxuLS1cXG5mcy9mdXNlL2Rldi5jPTI0MjY9Y29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmdXNlX2Rldl9vcGVyYXRpb25zID0ge1xcbi0tXFxuZnMvZnVzZS9kZXYuYy0yNDM0LVxcdC5mbHVzaFxcdFxcdD0gZnVzZV9kZXZfZmx1c2gsXFxuZnMvZnVzZS9kZXYuYzoyNDM1OlxcdC5yZWxlYXNlXFx0PSBmdXNlX2Rldl9yZWxlYXNlLFxcbmZzL2Z1c2UvZGV2LmMtMjQzNi1cXHQuZmFzeW5jXFx0XFx0PSBmdXNlX2Rldl9mYXN5bmMsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjM5OjQ5LjkwMDQwNDQwMVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDYzNzc4MjM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgVGhvdWdodHMgb24gdGhlIEFQSSBFeHBvcnRzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpbW1lZGlhdGVseSBrZXlpbmcgaW4gb24gdGhlc2UgdHdvIGZ1bmN0aW9ucyBiZWluZyBleHBvcnRlZDogYGZ1c2VfZGV2X3JlbGVhc2VgIGFuZCBgZnVzZV9nZXRfZGV2YC4gVGhhdCB0ZWxscyBtZSB0aGVzZSBhcmUgZnVuZGFtZW50YWwgY29tcG9uZW50cyBvZiB0aGUgRlVTRSAoRmlsZXN5c3RlbSBpbiBVc2Vyc3BhY2UpIGludGVyZmFjZSB3ZSdyZSB3b3JraW5nIHdpdGguIGBmdXNlX2Rldl9yZWxlYXNlYC4uLiB0aGF0J3MgZ290IHRvIGJlIHRoZSBmdW5jdGlvbiByZXNwb25zaWJsZSBmb3IgcmVsZWFzaW5nIGEgRlVTRSBkZXZpY2UsIGNsZWFuaW5nIHVwIHJlc291cmNlcywgYW5kIHByb3Blcmx5IHVucmVnaXN0ZXJpbmcgaXQsIGxpa2VseSB3aGVuIGEgZmlsZXN5c3RlbSBpcyB1bm1vdW50ZWQgb3IgZ29lcyBvdXQgb2Ygc2NvcGUuIFRoYXQncyBhIGNydWNpYWwsIHByb2JhYmx5IGNvbXBsZXgsIGZ1bmN0aW9uLiBUaGVuIHdlIGhhdmUgYGZ1c2VfZ2V0X2RldmAuIFRoYXQgc291bmRzIGxpa2UgdGhlIGNvdW50ZXJwYXJ0LCB0aGUgZW50cnkgcG9pbnQsIHRoZSBmdW5jdGlvbiB1c2VkIHRvIHJldHJpZXZlIG9yIG9idGFpbiBhIEZVU0UgZGV2aWNlIOKAkyB0aGUgY29yZSBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBpbnRlcmFjdGlvbiBwb2ludCB3aXRoIHRoZSBGVVNFIHN1YnN5c3RlbS4gVGhpcyBzaWduYWxzIHRoYXQgdGhlcmUncyBhIG1hbmFnZWQgbGlmZWN5Y2xlIGZvciBkZXZpY2VzOyB0aGV5J3JlIHByb2JhYmx5IGFjcXVpcmVkLCB1c2VkLCBhbmQgdGhlbiBleHBsaWNpdGx5IHJlbGVhc2VkLiBJJ2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIGZ1bmN0aW9uIHNpZ25hdHVyZXMgYW5kIHJlbGF0ZWQgZGF0YSBzdHJ1Y3R1cmVzIHRvIGZ1bGx5IGdyYXNwIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBpbXBsaWNhdGlvbnMgYW5kIG92ZXJhbGwgZGVzaWduIHBoaWxvc29waHkuIFRoaXMgaXMgdGhlIGZvdW5kYXRpb24gb2YgdGhlIGludGVyZmFjZSFcblxuXG4iLCJJbnB1dFRva2VucyI6OTEwNCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjM5OjUzLjM2NDE4NjgwOFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE3NzU3ODAxLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJFWFBPUlRfU1lNQk9MX0dQTFxcXFwoZnVzZV9nZXRfZGV2XFxcXClcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZnVzZS9kZXYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDg6Mzk6NTMuNTgxOTUyNzM5WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MTUyMzU3OTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipJbnZlc3RpZ2F0aW5nIGEgUG90ZW50aWFsIExpYnJhcnkgSXNzdWUqKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBJIHdhcyB1bmRlciB0aGUgaW1wcmVzc2lvbiB0aGF0IGBmdXNlX2dldF9kZXZgIHdhcyBhIHB1YmxpY2x5IGF2YWlsYWJsZSBmdW5jdGlvbi4gSSBuZWVkIHRvIHZlcmlmeSB0aGF0OyBpdCBkb2Vzbid0IHNlZW0gdG8gYmUgZXhwb3J0ZWQuIFRoZSBmYWN0IHRoYXQgaXQgaXNuJ3QgZXhwb3J0ZWQgY291bGQgYmUgYSBtYWpvciBwcm9ibGVtIGZvciB0aGlzIHBhcnRpY3VsYXIgbGluZSBvZiBjb2RlLCBvciBmb3IgdGhpcyBsaWJyYXJ5IHRoYXQgSSdtIHdvcmtpbmcgd2l0aCBhdCB0aGUgbW9tZW50LiBMZXQgbWUgZG91YmxlLWNoZWNrIHRoZSByZWxldmFudCBoZWFkZXIgZmlsZXMsIHRoZSBkb2N1bWVudGF0aW9uLCBhbmQgdGhlIGJ1aWxkIHByb2Nlc3MgdG8gY29uZmlybSBpdHMgdmlzaWJpbGl0eSBhbmQgYXZhaWxhYmlsaXR5LiBJIGhhdmUgYSBmZWVsaW5nIHRoYXQgdGhpcyB3aWxsIGJlIHRoZSBrZXkgcGllY2Ugb2YgaW5mb3JtYXRpb24gdGhhdCBhZmZlY3RzIHRoZSBuZXh0IGRpcmVjdGlvbiB0byBiZSB0YWtlbiBmb3IgdGhpcyBsaWJyYXJ5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NDE2LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDg6Mzk6NTYuNDk3MTkxNzI2WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDE4Nzg2NjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZnVzZV9nZXRfZGV2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2Z1c2UvZGV2LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZnVzZS9kZXYuYz0xNjUxPXN0YXRpYyBpbnQgZnVzZV9kZXZfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcXG4tLVxcbmZzL2Z1c2UvZGV2LmMtMTY2MS1cXG5mcy9mdXNlL2Rldi5jOjE2NjI6c3RydWN0IGZ1c2VfZGV2ICpmdXNlX2dldF9kZXYoc3RydWN0IGZpbGUgKmZpbGUpXFxuZnMvZnVzZS9kZXYuYy0xNjYzLXtcXG4tLVxcbmZzL2Z1c2UvZGV2LmM9MTY4NT1zdGF0aWMgc3NpemVfdCBmdXNlX2Rldl9yZWFkKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICp0bylcXG4tLVxcbmZzL2Z1c2UvZGV2LmMtMTY4OC1cXHRzdHJ1Y3QgZmlsZSAqZmlsZSA9IGlvY2ItXFx1MDAzZWtpX2ZpbHA7XFxuZnMvZnVzZS9kZXYuYzoxNjg5OlxcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9nZXRfZGV2KGZpbGUpO1xcbmZzL2Z1c2UvZGV2LmMtMTY5MC1cXG4tLVxcbmZzL2Z1c2UvZGV2LmM9MTcwMj1zdGF0aWMgc3NpemVfdCBmdXNlX2Rldl9zcGxpY2VfcmVhZChzdHJ1Y3QgZmlsZSAqaW4sIGxvZmZfdCAqcHBvcyxcXG4tLVxcbmZzL2Z1c2UvZGV2LmMtMTcwOS1cXHRzdHJ1Y3QgZnVzZV9jb3B5X3N0YXRlIGNzO1xcbmZzL2Z1c2UvZGV2LmM6MTcxMDpcXHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IGZ1c2VfZ2V0X2Rldihpbik7XFxuZnMvZnVzZS9kZXYuYy0xNzExLVxcbi0tXFxuZnMvZnVzZS9kZXYuYz0xOTczPXN0YXRpYyBzc2l6ZV90IGZ1c2VfZGV2X3dyaXRlKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tKVxcbi0tXFxuZnMvZnVzZS9kZXYuYy0xOTc1LVxcdHN0cnVjdCBmdXNlX2NvcHlfc3RhdGUgY3M7XFxuZnMvZnVzZS9kZXYuYzoxOTc2OlxcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gX19mdXNlX2dldF9kZXYoaW9jYi1cXHUwMDNla2lfZmlscCk7XFxuZnMvZnVzZS9kZXYuYy0xOTc3LVxcbi0tXFxuZnMvZnVzZS9kZXYuYz0xOTg5PXN0YXRpYyBzc2l6ZV90IGZ1c2VfZGV2X3NwbGljZV93cml0ZShzdHJ1Y3QgcGlwZV9pbm9kZV9pbmZvICpwaXBlLFxcbi0tXFxuZnMvZnVzZS9kZXYuYy0xOTk3LVxcdHN0cnVjdCBmdXNlX2NvcHlfc3RhdGUgY3M7XFxuZnMvZnVzZS9kZXYuYzoxOTk4OlxcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gX19mdXNlX2dldF9kZXYob3V0KTtcXG5mcy9mdXNlL2Rldi5jLTE5OTktXFx0c2l6ZV90IHJlbTtcXG4tLVxcbmZzL2Z1c2UvZGV2LmM9MjA4MT1zdGF0aWMgX19wb2xsX3QgZnVzZV9kZXZfcG9sbChzdHJ1Y3QgZmlsZSAqZmlsZSwgcG9sbF90YWJsZSAqd2FpdClcXG4tLVxcbmZzL2Z1c2UvZGV2LmMtMjA4NC1cXHRzdHJ1Y3QgZnVzZV9pcXVldWUgKmZpcTtcXG5mcy9mdXNlL2Rldi5jOjIwODU6XFx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBmdXNlX2dldF9kZXYoZmlsZSk7XFxuZnMvZnVzZS9kZXYuYy0yMDg2LVxcbi0tXFxuZnMvZnVzZS9kZXYuYz0yMjcyPXN0YXRpYyBpbnQgZnVzZV9kZXZfZmFzeW5jKGludCBmZCwgc3RydWN0IGZpbGUgKmZpbGUsIGludCBvbilcXG5mcy9mdXNlL2Rldi5jLTIyNzMte1xcbmZzL2Z1c2UvZGV2LmM6MjI3NDpcXHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IGZ1c2VfZ2V0X2RldihmaWxlKTtcXG5mcy9mdXNlL2Rldi5jLTIyNzUtXFxuLS1cXG5mcy9mdXNlL2Rldi5jPTIyODM9c3RhdGljIGxvbmcgZnVzZV9kZXZfaW9jdGxfY2xvbmUoc3RydWN0IGZpbGUgKmZpbGUsIF9fdTMyIF9fdXNlciAqYXJncClcXG4tLVxcbmZzL2Z1c2UvZGV2LmMtMjMwMi1cXG5mcy9mdXNlL2Rldi5jOjIzMDM6XFx0ZnVkID0gZnVzZV9nZXRfZGV2KGZkX2ZpbGUoZikpO1xcbmZzL2Z1c2UvZGV2LmMtMjMwNC1cXHRpZiAoSVNfRVJSKGZ1ZCkpXFxuLS1cXG5mcy9mdXNlL2Rldi5jPTIzMTg9c3RhdGljIGxvbmcgZnVzZV9kZXZfaW9jdGxfYmFja2luZ19vcGVuKHN0cnVjdCBmaWxlICpmaWxlLFxcbi0tXFxuZnMvZnVzZS9kZXYuYy0yMzIwLXtcXG5mcy9mdXNlL2Rldi5jOjIzMjE6XFx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBmdXNlX2dldF9kZXYoZmlsZSk7XFxuZnMvZnVzZS9kZXYuYy0yMzIyLVxcdHN0cnVjdCBmdXNlX2JhY2tpbmdfbWFwIG1hcDtcXG4tLVxcbmZzL2Z1c2UvZGV2LmM9MjMzNj1zdGF0aWMgbG9uZyBmdXNlX2Rldl9pb2N0bF9iYWNraW5nX2Nsb3NlKHN0cnVjdCBmaWxlICpmaWxlLCBfX3UzMiBfX3VzZXIgKmFyZ3ApXFxuZnMvZnVzZS9kZXYuYy0yMzM3LXtcXG5mcy9mdXNlL2Rldi5jOjIzMzg6XFx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBmdXNlX2dldF9kZXYoZmlsZSk7XFxuZnMvZnVzZS9kZXYuYy0yMzM5LVxcdGludCBiYWNraW5nX2lkO1xcbi0tXFxuZnMvZnVzZS9kZXYuYz0yMzg4PXN0YXRpYyB2b2lkIGZ1c2VfZGV2X3Nob3dfZmRpbmZvKHN0cnVjdCBzZXFfZmlsZSAqc2VxLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcXG5mcy9mdXNlL2Rldi5jLTIzODkte1xcbmZzL2Z1c2UvZGV2LmM6MjM5MDpcXHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IF9fZnVzZV9nZXRfZGV2KGZpbGUpO1xcbmZzL2Z1c2UvZGV2LmMtMjM5MS1cXHRpZiAoIWZ1ZClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDg6Mzk6NTYuNjM5MDc2MDgzWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNDQ4ODA2OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipOYXZpZ2F0aW5nIHRoZSBGdXNlIERldmljZSBTdHJ1Y3R1cmUqKlxuXG5SaWdodCwgc28gYGZ1c2VfZ2V0X2RldmAuLi4gdGhhdCByaW5ncyBhIGJlbGwuIE5vdywgd2hlcmUgd2FzIHRoYXQgZGVmaW5lZCBhZ2Fpbj8gT2gsIGl0IGxvb2tzIGxpa2UgaXQncyBleHBvcnRlZCBpbiBgZnMvZnVzZS9kZXYuY2AuIE9rYXksIGdvb2QsIHRoYXQncyB3aGF0IEkgd2FzIGV4cGVjdGluZy4gTGV0J3MganVzdCBkb3VibGUtY2hlY2sgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBmdXNlX2dldF9kZXZgLiBJIHdhbnQgdG8gbWFrZSBzdXJlIEkndmUgZ290IGEgc29saWQgaGFuZGxlIG9uIGhvdyBpdCdzIGhhbmRsaW5nIHRoZSBkZXZpY2Ugc3RydWN0dXJlLiBJJ2xsIG5lZWQgdG8gcmUtZmFtaWxpYXJpemUgbXlzZWxmIHdpdGggdGhlIGVuZCBvZiB0aGF0IGZ1bmN0aW9uLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGhvdyBpdCBoYW5kbGVzIGVycm9yIGNvbmRpdGlvbnMgYW5kIGhvdyBpdCByZXR1cm5zIHRoYXQgc3RydWN0dXJlLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgY29kZSBhbmQgcmVmcmVzaCBteSBtZW1vcnkgb2YgdGhhdCBzcGVjaWZpYyBpbnRlcmFjdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA4MTAsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwODozOTo1OS44ODM5NTk2OFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgwOTU5Mzg1LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJFWFBPUlRfU1lNQk9MX0dQTFxcXFwoZnVzZV9nZXRfZGV2XFxcXClcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZnVzZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjQwOjAwLjA2NDkyODYyNFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzU1NDg2Njk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRlVTRSBEZXZpY2UgRHJpdmVyIENoYW5nZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIHRyeWluZyB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGNoYW5nZXMuIFRoZSB0aGluZyBpc24ndCBiZWluZyBleHBvcnRlZCwgYnV0IGl0J3Mgbm90IHN0YXRpYyBlaXRoZXIsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBUaGVuIEkgc2VlIGBmdXNlX2dldF9kZXZgIGlzbid0IHN0YXRpYywgc28gaXQgaGFzIGEgdW5pcXVlIGFkZHJlc3MuIEFuZCBgZnVzZV9kZXZfcmVsZWFzZWAgaXMgbm9uLXN0YXRpYyBhbmQgKmV4cG9ydGVkKiwgd2hpY2ggaXMgYSBrZXkgZGlzdGluY3Rpb24uIGBmdXNlX2Rldl9mbHVzaGAsIGhvd2V2ZXIsIGlzIHN0YXRpYywgd2hpY2ggbGltaXRzIGl0cyBleHRlcm5hbCBpbXBhY3QuXG5cbkdpdmVuIHRoZSBub24tc3RhdGljIG5hdHVyZSBvZiBgZnVzZV9nZXRfZGV2YCBhbmQgYGZ1c2VfZGV2X3JlbGVhc2VgLCB0aG9zZSBhcmUgdGhlIGZ1bmN0aW9ucyB0byByZWFsbHkgZm9jdXMgb24uIFRoZSBwYXRjaCBzZWVtcyB0byBiZSBtb2RpZnlpbmcgdGhlbSwgcmlnaHQ/IEFuZCBpdCdzICphZGRpbmcqIGBmdXNlX2Rldl9mbHVzaGAsIHdoaWNoIGlzIGxpbmtlZCB2aWEgYSBgLmZsdXNoYCBvcGVyYXRpb24uXG5cbk5vdywgSSBuZWVkIHRvIGNvbnNpZGVyIGFueSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gYEZVU0VfRlNgIGlzIHRoZSBvYnZpb3VzIG9uZSwgc28gSSdsbCBjaGVjayBpZiBgRlVTRV9GU2AgcmVsaWVzIG9uIGFueXRoaW5nIHNwZWNpZmljLiBHb3R0YSBtYWtlIHN1cmUgd2UgY292ZXIgYWxsIGJhc2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTA3NSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwODo0MDowNC40MjA0MTk1MDJaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMzc4MzQxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgRlVTRV9GU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9mdXNlL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZnVzZS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZnMvZnVzZS9LY29uZmlnOjI6Y29uZmlnIEZVU0VfRlNcXG5mcy9mdXNlL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiRlVTRSAoRmlsZXN5c3RlbSBpbiBVc2Vyc3BhY2UpIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjQwOjA0LjY1NDIxMTk5MloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDQxOTEwMjI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIGBjb25maWcgRlVTRV9GU2AgQ29udGV4dCoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW4uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgc3Vycm91bmRpbmcgdGhlIGBjb25maWcgRlVTRV9GU2AgZGlyZWN0aXZlLiBJIG5lZWQgdG8gcXVpY2tseSBncmFzcCBpdHMgaW1wbGljYXRpb25zIHdpdGhpbiB0aGUgbGFyZ2VyIHN5c3RlbS4gSXMgdGhpcyBhIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbiwgYSBidWlsZCBzeXN0ZW0gc2V0dGluZywgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IFdoYXQgcHJvamVjdCBvciBmcmFtZXdvcmsgYXJlIHdlIGRlYWxpbmcgd2l0aCBoZXJlPyBJJ20gYWxyZWFkeSBtZW50YWxseSBydW5uaW5nIHRocm91Z2ggcG90ZW50aWFsIHNjZW5hcmlvczogYSBmaWxlIHN5c3RlbSBpbXBsZW1lbnRhdGlvbiwgcGVyaGFwcyByZWxhdGVkIHRvIEZVU0UgKEZpbGVzeXN0ZW0gaW4gVXNlcnNwYWNlKSwgYnV0IHdoYXQgc3BlY2lmaWMgdXNlIGNhc2UgaXMgaXQgdGFyZ2V0aW5nPyBXaGVyZSBpcyB0aGlzIGNvbmZpZ3VyYXRpb24gc3RyaW5nIHVzZWQgYW5kIGhvdz8gVGhlIGRldmlsLCBhcyBhbHdheXMsIGlzIGluIHRoZSBkZXRhaWxzLCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcmVsYXRpb25zaGlwIHdpdGggb3RoZXIgY29uZmlndXJhdGlvbnMsIGRlcGVuZGVuY2llcywgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEkgbmVlZCB0aGUgZnVsbCBwaWN0dXJlIHRvIGJlIGFibGUgdG8gYXNzZXNzIGl0cyBpbXBhY3QgcHJvcGVybHkuIE15IGFuYWx5dGljYWwgZ2VhcnMgYXJlIHR1cm5pbmcgYWxyZWFkeS4gTGV0J3MgZ2V0IHRvIHRoZSB0ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTYwMSwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjQwOjA4LjA5NjEyNzg1N1oiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjc2NzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZnMvZnVzZS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRjb25maWcgRlVTRV9GU1xcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIkZVU0UgKEZpbGVzeXN0ZW0gaW4gVXNlcnNwYWNlKSBzdXBwb3J0XFxcIlxcbiAgIDQ6XFx0XFx0c2VsZWN0IEZTX1BPU0lYX0FDTFxcbiAgIDU6XFx0XFx0c2VsZWN0IEZTX0lPTUFQXFxuICAgNjpcXHRcXHRoZWxwXFxuICAgNzpcXHRcXHQgIFdpdGggRlVTRSBpdCBpcyBwb3NzaWJsZSB0byBpbXBsZW1lbnQgYSBmdWxseSBmdW5jdGlvbmFsIGZpbGVzeXN0ZW1cXG4gICA4OlxcdFxcdCAgaW4gYSB1c2Vyc3BhY2UgcHJvZ3JhbS5cXG4gICA5OlxcdFxcbiAgMTA6XFx0XFx0ICBUaGVyZSdzIGFsc28gYSBjb21wYW5pb24gbGlicmFyeTogbGliZnVzZTIuICBUaGlzIGxpYnJhcnkgaXMgYXZhaWxhYmxlXFxuICAxMTpcXHRcXHQgIGZyb20gdGhlIEZVU0UgaG9tZXBhZ2U6XFxuICAxMjpcXHRcXHQgIFxcdTAwM2NodHRwczovL2dpdGh1Yi5jb20vbGliZnVzZS9cXHUwMDNlXFxuICAxMzpcXHRcXHQgIGFsdGhvdWdoIGNoYW5jZXMgYXJlIHlvdXIgZGlzdHJpYnV0aW9uIGFscmVhZHkgaGFzIHRoYXQgbGlicmFyeVxcbiAgMTQ6XFx0XFx0ICBpbnN0YWxsZWQgaWYgeW91J3ZlIGluc3RhbGxlZCB0aGUgXFxcImZ1c2VcXFwiIHBhY2thZ2UgaXRzZWxmLlxcbiAgMTU6XFx0XFxuICAxNjpcXHRcXHQgIFNlZSBcXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2Z1c2UvZnVzZS5yc3RcXHUwMDNlIGZvciBtb3JlIGluZm9ybWF0aW9uLlxcbiAgMTc6XFx0XFx0ICBTZWUgXFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9DaGFuZ2VzXFx1MDAzZSBmb3IgbmVlZGVkIGxpYnJhcnkvdXRpbGl0eSB2ZXJzaW9uLlxcbiAgMTg6XFx0XFxuICAxOTpcXHRcXHQgIElmIHlvdSB3YW50IHRvIGRldmVsb3AgYSB1c2Vyc3BhY2UgRlMsIG9yIGlmIHlvdSB3YW50IHRvIHVzZVxcbiAgMjA6XFx0XFx0ICBhIGZpbGVzeXN0ZW0gYmFzZWQgb24gRlVTRSwgYW5zd2VyIFkgb3IgTS5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDg6NDA6MDguMDk2MjU4NDg4WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExNDI0NDg1MTk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBGVVNFIERldmljZSBEcml2ZXIgQ2hhbmdlcyBmb3IgRnV6emluZyoqXG5cbk9rYXksIG5vIGRlcGVuZGVuY2llcywgdGhhdCdzIGdvb2QuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSByZWxldmFudCBzeW1ib2xzIGZyb20gdGhpcyBwYXRjaCB0byBmb2N1cyBteSBmdXp6aW5nIGVmZm9ydHMuIExldCdzIHN0YXJ0IGJ5IGNoZWNraW5nIGBmdXNlX2Rldl9hbGxfY2xvc2luZ2AuIFJpZ2h0LCBpdCdzIHN0YXRpYy4gU28sIGJhc2VkIG9uIHRoZSBwcm9tcHQncyBwcmVmZXJlbmNlIGZvciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMsIGBGb2N1c1N5bWJvbHNgIHNob3VsZCBwcm9iYWJseSBpbmNsdWRlIGBmdXNlX2dldF9kZXZgIGFuZCBgZnVzZV9kZXZfcmVsZWFzZWAuIFdhaXQgYSBtaW51dGUsIGBmdXNlX2Rldl9mbHVzaGAgaXMgYWxzbyBoZXJlLCBhbmQgaXQncyBhICpuZXcqIGZ1bmN0aW9uLiBUaGUgcHJvbXB0J3MgbGFuZ3VhZ2UgaW1wbGllcyB3ZSBzaG91bGQgYXZvaWQgc3RhdGljICpoZWxwZXIqIGZ1bmN0aW9ucyB0aGF0IGFyZSBpbmxpbmVkLiBCdXQgYGZ1c2VfZGV2X2ZsdXNoYCBpcyBhc3NpZ25lZCB0byBhIGZ1bmN0aW9uIHBvaW50ZXIsIGAuZmx1c2hgLCBpbiBgZnVzZV9kZXZfb3BlcmF0aW9uc2AuIEl04oCZcyBub3QgYW4gaW50ZXJuYWwgaGVscGVyLCBpdCBoYXMgYSBkaXN0aW5jdCBhZGRyZXNzLiBJdCBjYW4ndCBiZSBpbmxpbmVkLiBTbywgY2FuIHdlIGFjdHVhbGx5ICppbmNsdWRlKiBzdGF0aWMgZnVuY3Rpb25zIHVzZWQgYXMgZnVuY3Rpb24gcG9pbnRlcnMsIGV2ZW4gdGhvdWdoIHRoZXkgKmFyZSogc3RhdGljPyBMZXTigJlzIGNoZWNrLiBZdXAsIGl04oCZcyBiZWluZyBwYXNzZWQgYXMgYSBmdW5jdGlvbiBwb2ludGVyLCBkZWZpbml0ZWx5IG5vdCBpbmxpbmVkLiBPa2F5LCBzbyB0aGF0IG1lYW5zIGBmdXNlX2Rldl9mbHVzaGAgaXMgaW4hXG5cbkxldCBtZSByZXZpZXcgdGhlIHBhdGNoLiBJdCBtb2RpZmllcyBgZnVzZV9nZXRfZGV2YCwgYGZ1c2VfZGV2X3JlbGVhc2VgLCBgZnVzZV9kZXZfZmx1c2hgLCBhbmQgaW50cm9kdWNlcyB0aGUgc3RhdGljIGhlbHBlciBgZnVzZV9kZXZfYWxsX2Nsb3NpbmdgLiBTbywgYEZvY3VzU3ltYm9sc2A6IGBmdXNlX2dldF9kZXZgLCBgZnVzZV9kZXZfcmVsZWFzZWAsIGFuZCBgZnVzZV9kZXZfZmx1c2hgLlxuXG5BbHJpZ2h0LCBsZXQncyB2ZXJpZnkuIGBmdXNlX2dldF9kZXZgIGlzIGRlY2xhcmVkIGluIGBmdXNlX2Rldl9pLmhgIGFuZCBkZWZpbmVkIGluIGBkZXYuY2AsIHNvIGl0J3Mgbm9uLXN0YXRpYy4gYGZ1c2VfZGV2X3JlbGVhc2VgIGlzIGV4cG9ydGVkIGFzIHdlbGwuIGBmdXNlX2Rldl9mbHVzaGAgaXMgc3RhdGljLCBidXQgd2UndmUgYWxyZWFkeSBjb25maXJtZWQgaXQncyByZWFjaGFibGUgYXMgYSBmdW5jdGlvbiBwb2ludGVyLlxuXG5BbnkgcmVsZXZhbnQgY29uZmlndXJhdGlvbnM/IGBGVVNFX0ZTYCBzZWVtcyB0byBiZSB0aGUgb25seSBvbmUuXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBsZXQncyBjb25maXJtIHRoZSBzdGF0aWMgbmF0dXJlIG9mIGBmdXNlX2Rldl9mbHVzaGA6IFllcCwgYHN0YXRpYyBpbnQgZnVzZV9kZXZfZmx1c2goLi4uKWAuIEFuZCBgZnVzZV9kZXZfYWxsX2Nsb3NpbmdgOiBgc3RhdGljIGJvb2wgZnVzZV9kZXZfYWxsX2Nsb3NpbmcoLi4uKWAuIENvbmZpcm1lZC5cblxuVGhlcmVmb3JlLCB0aGUgbWFpbiBmdW5jdGlvbnMgdG8gZm9jdXMgb24gYXJlIGBmdXNlX2dldF9kZXZgLCBgZnVzZV9kZXZfcmVsZWFzZWAsIGFuZCBgZnVzZV9kZXZfZmx1c2hgLlxuXG5Ob3csIHJlYWNoYWJpbGl0eS4gSXMgYGZ1c2VfZGV2X2ZsdXNoYCBjYWxsZWQ/IEFic29sdXRlbHksIHZpYSBgZmlscF9jbG9zZWAgd2hpY2ggY2FsbHMgdGhlIGBmX29wLVx1MDAzZWZsdXNoYCBmdW5jdGlvbi4gYGZ1c2VfZGV2X3JlbGVhc2VgPyBZdXAsIHZpYSBgZnB1dGAsIHdoaWNoIGNhbGxzIGBmX29wLVx1MDAzZXJlbGVhc2VgLiBBbmQgYGZ1c2VfZ2V0X2RldmA/IEl0J3MgY2FsbGVkIGZvciByZWFkLCB3cml0ZSwgcG9sbCwgYW5kIG90aGVyIG9wZXJhdGlvbnMgb24gYC9kZXYvZnVzZWAuXG5cblNvLCB0aGUgb3ZlcmFsbCByZWFzb25pbmcgaXMgdGhhdCB0aGlzIHBhdGNoIGNoYW5nZXMgdGhlIEZVU0UgZGV2aWNlIGRyaXZlciBkaXNjb25uZWN0aW9uIGxvZ2ljIGZvciBgL2Rldi9mdXNlYC4gSXQgYWRkcyBhIGBmbHVzaGAgb3BlcmF0aW9uIChgZnVzZV9kZXZfZmx1c2hgKSBmb3IgdGhlIGZpbmFsIGNsb3NlIGFuZCBjaGFubmVsIHN0YXRlIHRyYW5zaXRpb24gdG8gYEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEYC4gSXQgY2hhbmdlcyBgZnVzZV9nZXRfZGV2YCBhbmQgYGZ1c2VfZGV2X3JlbGVhc2VgIHRvIGhhbmRsZSB0aGlzIG5ldyBzdGF0ZSBhbmQgYWJvcnQgdGhlIGNoYW5uZWwgaWYgYWxsIGRldmljZXMgYXJlIGNsb3NpbmcuIFRoaXMgaXMgYSBjcnVjaWFsIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEZVU0UgZHJpdmVyLCBhY2Nlc3NpYmxlIGZyb20gdXNlcnNwYWNlIHRocm91Z2ggYC9kZXYvZnVzZWAsIGFuZCB0aGVyZWZvcmUgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcuXG5cbkZpbmFsbHksIGBGVVNFX0ZTYCBpcyB0aGUgcmVsZXZhbnQgY29uZmlnLiBMZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2s6IHllcCwgdGhhdCBlbmFibGVzIHRoZSBjb21waWxhdGlvbiBvZiBgZGV2LmNgLCB3aGljaCBjb250YWlucyB0aGVzZSBmdW5jdGlvbnMuIFRoYXQncyBpdCFcblxuXG4iLCJJbnB1dFRva2VucyI6MTIxNjQsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MjYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwODo0MDoxOS41MjA3NDg2OTRaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxNjEzMzc1MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmdXNlLXkuKmRldi5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2Z1c2UvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZnVzZS9NYWtlZmlsZT0xMz1mdXNlLXkgOj0gdHJhY2Uub1xcdCMgcHV0IHRyYWNlLm8gZmlyc3Qgc28gd2Ugc2VlIGZ0cmFjZSBlcnJvcnMgc29vbmVyXFxuZnMvZnVzZS9NYWtlZmlsZToxNDpmdXNlLXkgKz0gZGV2Lm8gZGlyLm8gZmlsZS5vIGlub2RlLm8gY29udHJvbC5vIHhhdHRyLm8gYWNsLm8gcmVhZGRpci5vIGlvY3RsLm8gcmVxX3RpbWVvdXQubyByZXEub1xcbmZzL2Z1c2UvTWFrZWZpbGUtMTUtZnVzZS15ICs9IHBvbGwubyBub3RpZnkub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwODo0MDoxOS44MzY4OTAwMDZaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTI1OTAzMjI5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBGVVNFIERldmljZSBEcml2ZXIgQ2hhbmdlKipcblxuT2theSwgc28gbG9va2luZyBhdCB0aGlzLCBpdCdzIHByZXR0eSBjbGVhciB0aGF0IGBkZXYub2AgaXMgaW5kZWVkIGNvbXBpbGVkIGludG8gdGhlIGtlcm5lbCB3aGVuIGBDT05GSUdfRlVTRV9GU2AgaXMgZW5hYmxlZC4gVGhhdCdzIHRoZSBiYXNlbGluZS5cblxuTXkgaW1tZWRpYXRlIHRha2Vhd2F5IGlzIHRoYXQgdGhpcyBwYXRjaCBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuIFRoZSBrZXkgc3ltYm9scyB0aGF0IGp1bXAgb3V0IGF0IG1lIGFyZSBgZnVzZV9nZXRfZGV2YCwgYGZ1c2VfZGV2X3JlbGVhc2VgLCBhbmQgdGhlIG5ld2x5IGludHJvZHVjZWQgYGZ1c2VfZGV2X2ZsdXNoYC4gVGhpcyBpcyBiZWNhdXNlIHRoZSBwYXRjaCBmdW5kYW1lbnRhbGx5IGFsdGVycyBob3cgdGhlIEZVU0UgZGV2aWNlIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBgL2Rldi9mdXNlYCBpbnRlcmZhY2UsIGhhbmRsZXMgY2hhbm5lbCBkaXNjb25uZWN0aW9uLlxuXG5UaGUgYWRkaXRpb24gb2YgYGZ1c2VfZGV2X2ZsdXNoYCBpcyBwYXJ0aWN1bGFybHkgaW50ZXJlc3RpbmcuIEl0IHN1Z2dlc3RzIGEgbW9yZSByZWZpbmVkIHN0YXRlIG1hbmFnZW1lbnQgZHVyaW5nIHRoZSBmaW5hbCBjbG9zZSBzZXF1ZW5jZSwgbW92aW5nIHRoZSBjaGFubmVsIGludG8gYSBgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURURgIHN0YXRlLiBUaGUgbW9kaWZpY2F0aW9ucyB0byBgZnVzZV9nZXRfZGV2YCBhbmQgYGZ1c2VfZGV2X3JlbGVhc2VgIHRvIGFjY29tbW9kYXRlIHRoaXMgbmV3IHN0YXRlIGFuZCBwb3RlbnRpYWwgYWJvcnQgc2NlbmFyaW9zIGluZGljYXRlIHNpZ25pZmljYW50IGNoYW5nZXMgdG8gY29yZSBjaGFubmVsIG1hbmFnZW1lbnQgbG9naWMuXG5cbkVzc2VudGlhbGx5LCB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZGlyZWN0bHkgaW1wYWN0aW5nIHVzZXItc3BhY2UgaW50ZXJhY3Rpb25zIHZpYSBgL2Rldi9mdXNlYCwgbWFraW5nIGl0IGEgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBuZXcgY29kZSBwYXRocyByZWxhdGVkIHRvIGNvbm5lY3Rpb24gbGlmZWN5Y2xlIGFuZCBlcnJvciBoYW5kbGluZywgbWFraW5nIGl0IGEgY3JpdGljYWwgYXJlYSB0byBwcm9iZSBmb3IgdnVsbmVyYWJpbGl0aWVzLlxuXG5JJ20gY29uZmlkZW50IGluIHRoaXMgYW5hbHlzaXMuIEknbSBnb2luZyB0byBjYWxsIGBzZXQtcmVzdWx0c2AgdG8gY29uZmlybSBhbmQgbW92ZSBmb3J3YXJkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzkxMywiT3V0cHV0VG9rZW5zIjoxNzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDg6NDA6MjUuMDk1OTI3NzM5WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzEzMDY2NDUyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJGVVNFX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZnVzZV9nZXRfZGV2XCIsXG4gICAgXCJmdXNlX2Rldl9yZWxlYXNlXCIsXG4gICAgXCJmdXNlX2Rldl9mbHVzaFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjaGFubmVsIGRpc2Nvbm5lY3Rpb24gbG9naWMgaW4gdGhlIEZVU0UgZGV2aWNlIGRyaXZlciAoL2Rldi9mdXNlKS4gSXQgaW50cm9kdWNlcyBhIG5ldyBmbHVzaCBvcGVyYXRpb24gKGZ1c2VfZGV2X2ZsdXNoKSB0byBoYW5kbGUgZmluYWwgY2xvc2UgYW5kIHRyYW5zaXRpb24gdGhlIGNoYW5uZWwgc3RhdGUgdG8gRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQuIEl0IGFsc28gbW9kaWZpZXMgZnVzZV9nZXRfZGV2IGFuZCBmdXNlX2Rldl9yZWxlYXNlIHRvIGhhbmRsZSB0aGlzIG5ldyBzdGF0ZSBhbmQgYWJvcnQgdGhlIGNoYW5uZWwgaWYgYWxsIGRldmljZXMgYXJlIGNsb3NpbmcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBGVVNFIGRyaXZlciwgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSAvZGV2L2Z1c2Ugb3BlcmF0aW9ucywgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRlVTRV9GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImZ1c2VfZ2V0X2RldlwiLFxuICAgIFwiZnVzZV9kZXZfcmVsZWFzZVwiLFxuICAgIFwiZnVzZV9kZXZfZmx1c2hcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY2hhbm5lbCBkaXNjb25uZWN0aW9uIGxvZ2ljIGluIHRoZSBGVVNFIGRldmljZSBkcml2ZXIgKC9kZXYvZnVzZSkuIEl0IGludHJvZHVjZXMgYSBuZXcgZmx1c2ggb3BlcmF0aW9uIChmdXNlX2Rldl9mbHVzaCkgdG8gaGFuZGxlIGZpbmFsIGNsb3NlIGFuZCB0cmFuc2l0aW9uIHRoZSBjaGFubmVsIHN0YXRlIHRvIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVELiBJdCBhbHNvIG1vZGlmaWVzIGZ1c2VfZ2V0X2RldiBhbmQgZnVzZV9kZXZfcmVsZWFzZSB0byBoYW5kbGUgdGhpcyBuZXcgc3RhdGUgYW5kIGFib3J0IHRoZSBjaGFubmVsIGlmIGFsbCBkZXZpY2VzIGFyZSBjbG9zaW5nLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgRlVTRSBkcml2ZXIsIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgL2Rldi9mdXNlIG9wZXJhdGlvbnMsIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowcj6jx[1] Phase: Succeeded StartedAt: 2026-07-25 08:40:38 +0000 UTC FinishedAt: 2026-07-25 08:40:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcj6jx[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-25 08:40:38 +0000 UTC FinishedAt: 2026-07-25 08:40:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcj6jx[2] Phase: Succeeded StartedAt: 2026-07-25 08:40:38 +0000 UTC FinishedAt: 2026-07-25 13:21:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcj6jx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_get_dev","fuse_dev_release","fuse_dev_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"75595d91-d3f1-4e79-98f5-b83eeb79ae98","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN) Phase: Succeeded StartedAt: 2026-07-25 08:40:39 +0000 UTC FinishedAt: 2026-07-25 13:21:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_get_dev","fuse_dev_release","fuse_dev_flush"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"75595d91-d3f1-4e79-98f5-b83eeb79ae98","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"retest":{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowcj6jx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_get_dev","fuse_dev_release","fuse_dev_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"75595d91-d3f1-4e79-98f5-b83eeb79ae98","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-25 08:40:39 +0000 UTC FinishedAt: 2026-07-25 08:41:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcj6jx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_get_dev","fuse_dev_release","fuse_dev_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"75595d91-d3f1-4e79-98f5-b83eeb79ae98","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-25 08:40:39 +0000 UTC FinishedAt: 2026-07-25 08:41:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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-workflowcj6jx/series-workflowcj6jx-convert-artifact-1348805966/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcj6jx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_get_dev","fuse_dev_release","fuse_dev_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"75595d91-d3f1-4e79-98f5-b83eeb79ae98","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-25 08:41:50 +0000 UTC FinishedAt: 2026-07-25 09:21:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcj6jx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_get_dev","fuse_dev_release","fuse_dev_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"75595d91-d3f1-4e79-98f5-b83eeb79ae98","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-25 08:41:50 +0000 UTC FinishedAt: 2026-07-25 09:21:27 +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:*54aee79a-71bd-4fe5-9b3c-b5efee2a68e2,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-workflowcj6jx/series-workflowcj6jx-convert-artifact-1348805966/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": "8a703fa0-bbee-4423-bcf9-3da237e1a804", "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-workflowcj6jx/series-workflowcj6jx-build-action-3110833588/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcj6jx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_get_dev","fuse_dev_release","fuse_dev_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"75595d91-d3f1-4e79-98f5-b83eeb79ae98","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-25 08:41:50 +0000 UTC FinishedAt: 2026-07-25 09:21:17 +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:*54aee79a-71bd-4fe5-9b3c-b5efee2a68e2,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-workflowcj6jx/series-workflowcj6jx-convert-artifact-1348805966/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": "8a703fa0-bbee-4423-bcf9-3da237e1a804", "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-workflowcj6jx/series-workflowcj6jx-build-action-3110833588/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcj6jx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_get_dev","fuse_dev_release","fuse_dev_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"75595d91-d3f1-4e79-98f5-b83eeb79ae98","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-25 09:21:27 +0000 UTC FinishedAt: 2026-07-25 09:21:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcj6jx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_get_dev","fuse_dev_release","fuse_dev_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"75595d91-d3f1-4e79-98f5-b83eeb79ae98","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-25 09:21:27 +0000 UTC FinishedAt: 2026-07-25 09:21:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcj6jx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_get_dev","fuse_dev_release","fuse_dev_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"75595d91-d3f1-4e79-98f5-b83eeb79ae98","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-25 09:21:27 +0000 UTC FinishedAt: 2026-07-25 09:21:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcj6jx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_get_dev","fuse_dev_release","fuse_dev_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"75595d91-d3f1-4e79-98f5-b83eeb79ae98","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-25 09:21:27 +0000 UTC FinishedAt: 2026-07-25 09:21:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"75595d91-d3f1-4e79-98f5-b83eeb79ae98","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-workflowcj6jx/series-workflowcj6jx-convert-artifact-172542273/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcj6jx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_get_dev","fuse_dev_release","fuse_dev_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"75595d91-d3f1-4e79-98f5-b83eeb79ae98","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-25 09:21:48 +0000 UTC FinishedAt: 2026-07-25 09:24:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcj6jx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_get_dev","fuse_dev_release","fuse_dev_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"75595d91-d3f1-4e79-98f5-b83eeb79ae98","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-25 09:21:48 +0000 UTC FinishedAt: 2026-07-25 09:23:53 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*8a703fa0-bbee-4423-bcf9-3da237e1a804,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-workflowcj6jx/series-workflowcj6jx-build-action-3110833588/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-workflowcj6jx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_get_dev","fuse_dev_release","fuse_dev_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"75595d91-d3f1-4e79-98f5-b83eeb79ae98","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-25 09:24:03 +0000 UTC FinishedAt: 2026-07-25 09:24:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcj6jx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_get_dev","fuse_dev_release","fuse_dev_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"75595d91-d3f1-4e79-98f5-b83eeb79ae98","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-25 09:24:03 +0000 UTC FinishedAt: 2026-07-25 09:24:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcj6jx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_get_dev","fuse_dev_release","fuse_dev_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"75595d91-d3f1-4e79-98f5-b83eeb79ae98","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-25 09:24:03 +0000 UTC FinishedAt: 2026-07-25 10:16:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcj6jx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_get_dev","fuse_dev_release","fuse_dev_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"75595d91-d3f1-4e79-98f5-b83eeb79ae98","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-25 09:24:03 +0000 UTC FinishedAt: 2026-07-25 10:16:38 +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:*54aee79a-71bd-4fe5-9b3c-b5efee2a68e2,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-workflowcj6jx/series-workflowcj6jx-convert-artifact-172542273/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": "3c05fe14-c93f-4a77-a481-fdf54f92c183", "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-workflowcj6jx/series-workflowcj6jx-build-action-2955600589/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcj6jx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_get_dev","fuse_dev_release","fuse_dev_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"75595d91-d3f1-4e79-98f5-b83eeb79ae98","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-25 09:24:03 +0000 UTC FinishedAt: 2026-07-25 10:16:06 +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:*54aee79a-71bd-4fe5-9b3c-b5efee2a68e2,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-workflowcj6jx/series-workflowcj6jx-convert-artifact-172542273/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": "3c05fe14-c93f-4a77-a481-fdf54f92c183", "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-workflowcj6jx/series-workflowcj6jx-build-action-2955600589/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcj6jx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_get_dev","fuse_dev_release","fuse_dev_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"75595d91-d3f1-4e79-98f5-b83eeb79ae98","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-25 10:16:38 +0000 UTC FinishedAt: 2026-07-25 10:16:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcj6jx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_get_dev","fuse_dev_release","fuse_dev_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"75595d91-d3f1-4e79-98f5-b83eeb79ae98","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-25 10:16:38 +0000 UTC FinishedAt: 2026-07-25 10:16:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcj6jx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_get_dev","fuse_dev_release","fuse_dev_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"75595d91-d3f1-4e79-98f5-b83eeb79ae98","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-25 10:16:38 +0000 UTC FinishedAt: 2026-07-25 10:18:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcj6jx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_get_dev","fuse_dev_release","fuse_dev_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"75595d91-d3f1-4e79-98f5-b83eeb79ae98","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-25 10:16:38 +0000 UTC FinishedAt: 2026-07-25 10:18:08 +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:*3c05fe14-c93f-4a77-a481-fdf54f92c183,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-workflowcj6jx/series-workflowcj6jx-build-action-2955600589/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-workflowcj6jx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_get_dev","fuse_dev_release","fuse_dev_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"75595d91-d3f1-4e79-98f5-b83eeb79ae98","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-25 10:18:19 +0000 UTC FinishedAt: 2026-07-25 13:21:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcj6jx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_get_dev","fuse_dev_release","fuse_dev_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"75595d91-d3f1-4e79-98f5-b83eeb79ae98","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-25 10:18:19 +0000 UTC FinishedAt: 2026-07-25 13:21:51 +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":["fuse_get_dev","fuse_dev_release","fuse_dev_flush"],"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:*8a703fa0-bbee-4423-bcf9-3da237e1a804,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3c05fe14-c93f-4a77-a481-fdf54f92c183,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-workflowcj6jx/series-workflowcj6jx-build-action-3110833588/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-workflowcj6jx/series-workflowcj6jx-build-action-2955600589/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowcj6jx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_get_dev","fuse_dev_release","fuse_dev_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"75595d91-d3f1-4e79-98f5-b83eeb79ae98","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-25 10:18:19 +0000 UTC FinishedAt: 2026-07-25 10:19:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcj6jx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_get_dev","fuse_dev_release","fuse_dev_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"75595d91-d3f1-4e79-98f5-b83eeb79ae98","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-25 10:18:19 +0000 UTC FinishedAt: 2026-07-25 10:19:07 +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":["fuse_get_dev","fuse_dev_release","fuse_dev_flush"],"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-workflowcj6jx/series-workflowcj6jx-convert-artifact-1349588694/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcj6jx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_get_dev","fuse_dev_release","fuse_dev_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"75595d91-d3f1-4e79-98f5-b83eeb79ae98","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-25 10:18:19 +0000 UTC FinishedAt: 2026-07-25 10:18:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcj6jx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_get_dev","fuse_dev_release","fuse_dev_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"75595d91-d3f1-4e79-98f5-b83eeb79ae98","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-25 10:18:19 +0000 UTC FinishedAt: 2026-07-25 10:18:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcj6jx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_get_dev","fuse_dev_release","fuse_dev_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"75595d91-d3f1-4e79-98f5-b83eeb79ae98","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[10].run-retest Phase: Succeeded StartedAt: 2026-07-25 10:18:20 +0000 UTC FinishedAt: 2026-07-25 10:35:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:retest-data,Default:nil,Value:*{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*8a703fa0-bbee-4423-bcf9-3da237e1a804,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3c05fe14-c93f-4a77-a481-fdf54f92c183,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,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-workflowcj6jx/series-workflowcj6jx-build-action-3110833588/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-workflowcj6jx/series-workflowcj6jx-build-action-2955600589/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowcj6jx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_get_dev","fuse_dev_release","fuse_dev_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"75595d91-d3f1-4e79-98f5-b83eeb79ae98","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[10].run-retest[0] Phase: Succeeded StartedAt: 2026-07-25 10:18:20 +0000 UTC FinishedAt: 2026-07-25 10:19:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcj6jx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_get_dev","fuse_dev_release","fuse_dev_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"75595d91-d3f1-4e79-98f5-b83eeb79ae98","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[10].run-retest[0].save-retest-task Phase: Succeeded StartedAt: 2026-07-25 10:18:20 +0000 UTC FinishedAt: 2026-07-25 10:19:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},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-workflowcj6jx/series-workflowcj6jx-convert-artifact-3771659421/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcj6jx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_get_dev","fuse_dev_release","fuse_dev_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"75595d91-d3f1-4e79-98f5-b83eeb79ae98","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-25 10:19:18 +0000 UTC FinishedAt: 2026-07-25 13:21:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcj6jx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_get_dev","fuse_dev_release","fuse_dev_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"75595d91-d3f1-4e79-98f5-b83eeb79ae98","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-25 10:19:18 +0000 UTC FinishedAt: 2026-07-25 13:21:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*8a703fa0-bbee-4423-bcf9-3da237e1a804,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3c05fe14-c93f-4a77-a481-fdf54f92c183,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-workflowcj6jx/series-workflowcj6jx-build-action-3110833588/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-workflowcj6jx/series-workflowcj6jx-build-action-2955600589/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-workflowcj6jx/series-workflowcj6jx-convert-artifact-1349588694/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,} --------- Name: series-workflowcj6jx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_get_dev","fuse_dev_release","fuse_dev_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"75595d91-d3f1-4e79-98f5-b83eeb79ae98","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[10].run-retest[1] Phase: Succeeded StartedAt: 2026-07-25 10:19:19 +0000 UTC FinishedAt: 2026-07-25 10:35:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcj6jx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"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":["fuse_get_dev","fuse_dev_release","fuse_dev_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"75595d91-d3f1-4e79-98f5-b83eeb79ae98","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[10].run-retest[1].retest Phase: Succeeded StartedAt: 2026-07-25 10:19:19 +0000 UTC FinishedAt: 2026-07-25 10:34:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*8a703fa0-bbee-4423-bcf9-3da237e1a804,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3c05fe14-c93f-4a77-a481-fdf54f92c183,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Previous reproducers,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-workflowcj6jx/series-workflowcj6jx-build-action-3110833588/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-workflowcj6jx/series-workflowcj6jx-build-action-2955600589/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:retest-task,Path:/data/retest.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-workflowcj6jx/series-workflowcj6jx-convert-artifact-3771659421/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,}