Name: series-workflowdl76d Phase: Succeeded StartedAt: 2026-07-08 16:15:14 +0000 UTC FinishedAt: 2026-07-08 21:18:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdl76d[0] Phase: Succeeded StartedAt: 2026-07-08 16:15:14 +0000 UTC FinishedAt: 2026-07-08 16:53:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdl76d[0].run-triage Phase: Succeeded StartedAt: 2026-07-08 16:15:14 +0000 UTC FinishedAt: 2026-07-08 16:53:44 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "08030ddb87b4c6c6a2c03c82731b5e188f02f5b9", "config_name": "upstream-apparmor-kasan.config", "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "08030ddb87b4c6c6a2c03c82731b5e188f02f5b9", "config_name": "upstream-apparmor-kasan.config", "series_id": "c14f8ba2-c725-4cc4-bc0b-3f560ca72952" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ip_rt_send_redirect", "ip_rt_get_source", "rt_flush_dev" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE2OjUyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXBfcnRfc2VuZF9yZWRpcmVjdCYjMzQ7LAogICAgJiMzNDtpcF9ydF9nZXRfc291cmNlJiMzNDssCiAgICAmIzM0O3J0X2ZsdXNoX2RldiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb3JlIElQdjQgcm91dGluZyBmdW5jdGlvbnMgKGBpcF9ydF9zZW5kX3JlZGlyZWN0YCwgYGlwX3J0X2dldF9zb3VyY2VgLCBgcnRfZmx1c2hfZGV2YCkgdG8gdXNlIFJDVS1wcm90ZWN0ZWQgZGV2aWNlIHBvaW50ZXJzIChgZHN0X2Rldl9yY3VgIGFuZCBgZGV2X3JjdWApLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZml4aW5nIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciByYWNlIGNvbmRpdGlvbnMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZXNlIHJvdXRpbmcgZnVuY3Rpb25zIHRvIGVuc3VyZSB0aGUgUkNVIGRlcmVmZXJlbmNlcyBhcmUgc2FmZSBhbmQgZG9uJiMzOTt0IGludHJvZHVjZSByZWdyZXNzaW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxNjo1MjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDVlMzM2OGMyZGU5OTE1YjhiODBhY2E5MjIzOGNhNGE5NTM1MmMzY2VcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCA4IDE2OjUyOjQ2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3JvdXRlLmMgYi9uZXQvaXB2NC9yb3V0ZS5jXG5pbmRleCAzZjNkZTUxNjRkNmU1OC4uNGZlZDA3Y2FlN2RhMjAgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC9yb3V0ZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC9yb3V0ZS5jXG5AQCAtODc0LDIxICYjNDM7ODc0LDIzIEBAIHZvaWQgaXBfcnRfc2VuZF9yZWRpcmVjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIHtcbiBcdHN0cnVjdCBydGFibGUgKnJ0ID0gc2tiX3J0YWJsZShza2IpO1xuIFx0c3RydWN0IGluX2RldmljZSAqaW5fZGV2O1xuJiM0MztcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXY7XG4gXHRzdHJ1Y3QgaW5ldF9wZWVyICpwZWVyO1xuLVx0c3RydWN0IG5ldCAqbmV0O1xuIFx0aW50IGxvZ19tYXJ0aWFucztcbiYjNDM7XHRzdHJ1Y3QgbmV0ICpuZXQ7XG4gXHRpbnQgdmlmO1xuIFxuIFx0cmN1X3JlYWRfbG9jaygpO1xuLVx0aW5fZGV2ID0gX19pbl9kZXZfZ2V0X3JjdShydC1cdTAwM2Vkc3QuZGV2KTtcbiYjNDM7XHRkZXYgPSBkc3RfZGV2X3JjdShcdTAwMjZydC1cdTAwM2Vkc3QpO1xuJiM0MztcdGluX2RldiA9IF9faW5fZGV2X2dldF9yY3UoZGV2KTtcbiBcdGlmICghaW5fZGV2IHx8ICFJTl9ERVZfVFhfUkVESVJFQ1RTKGluX2RldikpIHtcbiBcdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4gXHRcdHJldHVybjtcbiBcdH1cbiBcdGxvZ19tYXJ0aWFucyA9IElOX0RFVl9MT0dfTUFSVElBTlMoaW5fZGV2KTtcbi1cdHZpZiA9IGwzbWRldl9tYXN0ZXJfaWZpbmRleF9yY3UocnQtXHUwMDNlZHN0LmRldik7XG4mIzQzO1x0dmlmID0gbDNtZGV2X21hc3Rlcl9pZmluZGV4X3JjdShkZXYpO1xuIFxuLVx0bmV0ID0gZGV2X25ldChydC1cdTAwM2Vkc3QuZGV2KTtcbiYjNDM7XHRuZXQgPSBkZXZfbmV0X3JjdShkZXYpO1xuIFx0cGVlciA9IGluZXRfZ2V0cGVlcl92NChuZXQtXHUwMDNlaXB2NC5wZWVycywgaXBfaGRyKHNrYiktXHUwMDNlc2FkZHIsIHZpZik7XG4gXHRpZiAoIXBlZXIpIHtcbiBcdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG5AQCAtMTI4NywyOSAmIzQzOzEyODksMzIgQEAgdm9pZCBpcF9ydF9nZXRfc291cmNlKHU4ICphZGRyLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgcnRhYmxlICpydClcbiB7XG4gXHRfX2JlMzIgc3JjO1xuIFxuLVx0aWYgKHJ0X2lzX291dHB1dF9yb3V0ZShydCkpXG4mIzQzO1x0cmN1X3JlYWRfbG9jaygpO1xuJiM0MztcdGlmIChydF9pc19vdXRwdXRfcm91dGUocnQpKSB7XG4gXHRcdHNyYyA9IGlwX2hkcihza2IpLVx1MDAzZXNhZGRyO1xuLVx0ZWxzZSB7XG4tXHRcdHN0cnVjdCBmaWJfcmVzdWx0IHJlcztcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IGRzdF9kZXZfcmN1KFx1MDAyNnJ0LVx1MDAzZWRzdCk7XG4mIzQzO1x0XHRzdHJ1Y3QgbmV0ICpuZXQgPSBkZXZfbmV0X3JjdShkZXYpO1xuIFx0XHRzdHJ1Y3QgaXBoZHIgKmlwaCA9IGlwX2hkcihza2IpO1xuJiM0MztcdFx0c3RydWN0IGZpYl9yZXN1bHQgcmVzO1xuIFx0XHRzdHJ1Y3QgZmxvd2k0IGZsNCA9IHtcbiBcdFx0XHQuZGFkZHIgPSBpcGgtXHUwMDNlZGFkZHIsXG4gXHRcdFx0LnNhZGRyID0gaXBoLVx1MDAzZXNhZGRyLFxuIFx0XHRcdC5mbG93aTRfZHNjcCA9IGlwNGhfZHNjcChpcGgpLFxuLVx0XHRcdC5mbG93aTRfb2lmID0gcnQtXHUwMDNlZHN0LmRldi1cdTAwM2VpZmluZGV4LFxuJiM0MztcdFx0XHQuZmxvd2k0X29pZiA9IGRldi1cdTAwM2VpZmluZGV4LFxuIFx0XHRcdC5mbG93aTRfaWlmID0gc2tiLVx1MDAzZWRldi1cdTAwM2VpZmluZGV4LFxuIFx0XHRcdC5mbG93aTRfbWFyayA9IHNrYi1cdTAwM2VtYXJrLFxuIFx0XHR9O1xuIFxuLVx0XHRyY3VfcmVhZF9sb2NrKCk7XG4tXHRcdGlmIChmaWJfbG9va3VwKGRldl9uZXQocnQtXHUwMDNlZHN0LmRldiksIFx1MDAyNmZsNCwgXHUwMDI2cmVzLCAwKSA9PSAwKVxuLVx0XHRcdHNyYyA9IGZpYl9yZXN1bHRfcHJlZnNyYyhkZXZfbmV0KHJ0LVx1MDAzZWRzdC5kZXYpLCBcdTAwMjZyZXMpO1xuJiM0MztcdFx0aWYgKGZpYl9sb29rdXAobmV0LCBcdTAwMjZmbDQsIFx1MDAyNnJlcywgMCkgPT0gMClcbiYjNDM7XHRcdFx0c3JjID0gZmliX3Jlc3VsdF9wcmVmc3JjKG5ldCwgXHUwMDI2cmVzKTtcbiBcdFx0ZWxzZVxuLVx0XHRcdHNyYyA9IGluZXRfc2VsZWN0X2FkZHIocnQtXHUwMDNlZHN0LmRldixcbiYjNDM7XHRcdFx0c3JjID0gaW5ldF9zZWxlY3RfYWRkcihkZXYsXG4gXHRcdFx0XHRcdCAgICAgICBydF9uZXh0aG9wKHJ0LCBpcGgtXHUwMDNlZGFkZHIpLFxuIFx0XHRcdFx0XHQgICAgICAgUlRfU0NPUEVfVU5JVkVSU0UpO1xuLVx0XHRyY3VfcmVhZF91bmxvY2soKTtcbiBcdH1cbiYjNDM7XHRyY3VfcmVhZF91bmxvY2soKTtcbiYjNDM7XG4gXHRtZW1jcHkoYWRkciwgXHUwMDI2c3JjLCA0KTtcbiB9XG4gXG5AQCAtMTU2NSw3ICYjNDM7MTU3MCw3IEBAIHZvaWQgcnRfZmx1c2hfZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShydCwgc2FmZSwgXHUwMDI2dWwtXHUwMDNlaGVhZCwgZHN0LnJ0X3VuY2FjaGVkKSB7XG4gXHRcdFx0aWYgKHJ0LVx1MDAzZWRzdC5kZXYgIT0gZGV2KVxuIFx0XHRcdFx0Y29udGludWU7XG4tXHRcdFx0cnQtXHUwMDNlZHN0LmRldiA9IGJsYWNraG9sZV9uZXRkZXY7XG4mIzQzO1x0XHRcdHJjdV9hc3NpZ25fcG9pbnRlcihydC1cdTAwM2Vkc3QuZGV2X3JjdSwgYmxhY2tob2xlX25ldGRldik7XG4gXHRcdFx0bmV0ZGV2X3JlZl9yZXBsYWNlKGRldiwgYmxhY2tob2xlX25ldGRldixcbiBcdFx0XHRcdFx0ICAgXHUwMDI2cnQtXHUwMDNlZHN0LmRldl90cmFja2VyLCBHRlBfQVRPTUlDKTtcbiBcdFx0XHRsaXN0X2RlbF9pbml0KFx1MDAyNnJ0LVx1MDAzZWRzdC5ydF91bmNhY2hlZCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTY6NTI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpcF9ydF9zZW5kX3JlZGlyZWN0JiMzNDssCiAgICAmIzM0O2lwX3J0X2dldF9zb3VyY2UmIzM0OywKICAgICYjMzQ7cnRfZmx1c2hfZGV2JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgSVB2NCByb3V0aW5nIGZ1bmN0aW9ucyAoYGlwX3J0X3NlbmRfcmVkaXJlY3RgLCBgaXBfcnRfZ2V0X3NvdXJjZWAsIGBydF9mbHVzaF9kZXZgKSB0byB1c2UgUkNVLXByb3RlY3RlZCBkZXZpY2UgcG9pbnRlcnMgKGBkc3RfZGV2X3JjdWAgYW5kIGBkZXZfcmN1YCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBmaXhpbmcgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIHJhY2UgY29uZGl0aW9ucy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlc2Ugcm91dGluZyBmdW5jdGlvbnMgdG8gZW5zdXJlIHRoZSBSQ1UgZGVyZWZlcmVuY2VzIGFyZSBzYWZlIGFuZCBkb24mIzM5O3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1ZTMzNjhjMmRlOTkxNWI4YjgwYWNhOTIyMzhjYTRhOTUzNTJjM2NlCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgOCAxNjo1Mjo0NiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9pcHY0L3JvdXRlLmMgYi9uZXQvaXB2NC9yb3V0ZS5jCmluZGV4IDNmM2RlNTE2NGQ2ZTU4Li40ZmVkMDdjYWU3ZGEyMCAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvcm91dGUuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC9yb3V0ZS5jCkBAIC04NzQsMjEgJiM0Mzs4NzQsMjMgQEAgdm9pZCBpcF9ydF9zZW5kX3JlZGlyZWN0KHN0cnVjdCBza19idWZmICpza2IpCiB7CiAJc3RydWN0IHJ0YWJsZSAqcnQgPSBza2JfcnRhYmxlKHNrYik7CiAJc3RydWN0IGluX2RldmljZSAqaW5fZGV2OwomIzQzOwlzdHJ1Y3QgbmV0X2RldmljZSAqZGV2OwogCXN0cnVjdCBpbmV0X3BlZXIgKnBlZXI7Ci0Jc3RydWN0IG5ldCAqbmV0OwogCWludCBsb2dfbWFydGlhbnM7CiYjNDM7CXN0cnVjdCBuZXQgKm5ldDsKIAlpbnQgdmlmOwogCiAJcmN1X3JlYWRfbG9jaygpOwotCWluX2RldiA9IF9faW5fZGV2X2dldF9yY3UocnQtJmd0O2RzdC5kZXYpOwomIzQzOwlkZXYgPSBkc3RfZGV2X3JjdSgmYW1wO3J0LSZndDtkc3QpOwomIzQzOwlpbl9kZXYgPSBfX2luX2Rldl9nZXRfcmN1KGRldik7CiAJaWYgKCFpbl9kZXYgfHwgIUlOX0RFVl9UWF9SRURJUkVDVFMoaW5fZGV2KSkgewogCQlyY3VfcmVhZF91bmxvY2soKTsKIAkJcmV0dXJuOwogCX0KIAlsb2dfbWFydGlhbnMgPSBJTl9ERVZfTE9HX01BUlRJQU5TKGluX2Rldik7Ci0JdmlmID0gbDNtZGV2X21hc3Rlcl9pZmluZGV4X3JjdShydC0mZ3Q7ZHN0LmRldik7CiYjNDM7CXZpZiA9IGwzbWRldl9tYXN0ZXJfaWZpbmRleF9yY3UoZGV2KTsKIAotCW5ldCA9IGRldl9uZXQocnQtJmd0O2RzdC5kZXYpOwomIzQzOwluZXQgPSBkZXZfbmV0X3JjdShkZXYpOwogCXBlZXIgPSBpbmV0X2dldHBlZXJfdjQobmV0LSZndDtpcHY0LnBlZXJzLCBpcF9oZHIoc2tiKS0mZ3Q7c2FkZHIsIHZpZik7CiAJaWYgKCFwZWVyKSB7CiAJCXJjdV9yZWFkX3VubG9jaygpOwpAQCAtMTI4NywyOSAmIzQzOzEyODksMzIgQEAgdm9pZCBpcF9ydF9nZXRfc291cmNlKHU4ICphZGRyLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgcnRhYmxlICpydCkKIHsKIAlfX2JlMzIgc3JjOwogCi0JaWYgKHJ0X2lzX291dHB1dF9yb3V0ZShydCkpCiYjNDM7CXJjdV9yZWFkX2xvY2soKTsKJiM0MzsJaWYgKHJ0X2lzX291dHB1dF9yb3V0ZShydCkpIHsKIAkJc3JjID0gaXBfaGRyKHNrYiktJmd0O3NhZGRyOwotCWVsc2UgewotCQlzdHJ1Y3QgZmliX3Jlc3VsdCByZXM7CiYjNDM7CX0gZWxzZSB7CiYjNDM7CQlzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gZHN0X2Rldl9yY3UoJmFtcDtydC0mZ3Q7ZHN0KTsKJiM0MzsJCXN0cnVjdCBuZXQgKm5ldCA9IGRldl9uZXRfcmN1KGRldik7CiAJCXN0cnVjdCBpcGhkciAqaXBoID0gaXBfaGRyKHNrYik7CiYjNDM7CQlzdHJ1Y3QgZmliX3Jlc3VsdCByZXM7CiAJCXN0cnVjdCBmbG93aTQgZmw0ID0gewogCQkJLmRhZGRyID0gaXBoLSZndDtkYWRkciwKIAkJCS5zYWRkciA9IGlwaC0mZ3Q7c2FkZHIsCiAJCQkuZmxvd2k0X2RzY3AgPSBpcDRoX2RzY3AoaXBoKSwKLQkJCS5mbG93aTRfb2lmID0gcnQtJmd0O2RzdC5kZXYtJmd0O2lmaW5kZXgsCiYjNDM7CQkJLmZsb3dpNF9vaWYgPSBkZXYtJmd0O2lmaW5kZXgsCiAJCQkuZmxvd2k0X2lpZiA9IHNrYi0mZ3Q7ZGV2LSZndDtpZmluZGV4LAogCQkJLmZsb3dpNF9tYXJrID0gc2tiLSZndDttYXJrLAogCQl9OwogCi0JCXJjdV9yZWFkX2xvY2soKTsKLQkJaWYgKGZpYl9sb29rdXAoZGV2X25ldChydC0mZ3Q7ZHN0LmRldiksICZhbXA7Zmw0LCAmYW1wO3JlcywgMCkgPT0gMCkKLQkJCXNyYyA9IGZpYl9yZXN1bHRfcHJlZnNyYyhkZXZfbmV0KHJ0LSZndDtkc3QuZGV2KSwgJmFtcDtyZXMpOwomIzQzOwkJaWYgKGZpYl9sb29rdXAobmV0LCAmYW1wO2ZsNCwgJmFtcDtyZXMsIDApID09IDApCiYjNDM7CQkJc3JjID0gZmliX3Jlc3VsdF9wcmVmc3JjKG5ldCwgJmFtcDtyZXMpOwogCQllbHNlCi0JCQlzcmMgPSBpbmV0X3NlbGVjdF9hZGRyKHJ0LSZndDtkc3QuZGV2LAomIzQzOwkJCXNyYyA9IGluZXRfc2VsZWN0X2FkZHIoZGV2LAogCQkJCQkgICAgICAgcnRfbmV4dGhvcChydCwgaXBoLSZndDtkYWRkciksCiAJCQkJCSAgICAgICBSVF9TQ09QRV9VTklWRVJTRSk7Ci0JCXJjdV9yZWFkX3VubG9jaygpOwogCX0KJiM0MzsJcmN1X3JlYWRfdW5sb2NrKCk7CiYjNDM7CiAJbWVtY3B5KGFkZHIsICZhbXA7c3JjLCA0KTsKIH0KIApAQCAtMTU2NSw3ICYjNDM7MTU3MCw3IEBAIHZvaWQgcnRfZmx1c2hfZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAJCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShydCwgc2FmZSwgJmFtcDt1bC0mZ3Q7aGVhZCwgZHN0LnJ0X3VuY2FjaGVkKSB7CiAJCQlpZiAocnQtJmd0O2RzdC5kZXYgIT0gZGV2KQogCQkJCWNvbnRpbnVlOwotCQkJcnQtJmd0O2RzdC5kZXYgPSBibGFja2hvbGVfbmV0ZGV2OwomIzQzOwkJCXJjdV9hc3NpZ25fcG9pbnRlcihydC0mZ3Q7ZHN0LmRldl9yY3UsIGJsYWNraG9sZV9uZXRkZXYpOwogCQkJbmV0ZGV2X3JlZl9yZXBsYWNlKGRldiwgYmxhY2tob2xlX25ldGRldiwKIAkJCQkJICAgJmFtcDtydC0mZ3Q7ZHN0LmRldl90cmFja2VyLCBHRlBfQVRPTUlDKTsKIAkJCWxpc3RfZGVsX2luaXQoJmFtcDtydC0mZ3Q7ZHN0LnJ0X3VuY2FjaGVkKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTY6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjgwMwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDM3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBSb3V0aW5nIFBhdGNoIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCB0aGF0JiMzOTtzIHRvdWNoaW5nIGBuZXQvaXB2NC9yb3V0ZS5jYC4gTG9va3MgbGlrZSB0aGV5JiMzOTtyZSByZXBsYWNpbmcgZGlyZWN0IGFjY2VzcyB0byBgcnQtJmd0O2RzdC5kZXZgIHdpdGggYGRzdF9kZXZfcmN1KCZhbXA7cnQtJmd0O2RzdClgIGFuZCB1c2luZyBgcmN1X2Fzc2lnbl9wb2ludGVyYCBpbiBhIGZldyBwbGFjZXMuIFJpZ2h0IG9mZiB0aGUgYmF0LCB0aGlzIHNjcmVhbXMgUkNVIHByb3RlY3Rpb24sIHNvIGl0JiMzOTtzIGEgc3RydWN0dXJhbCBjaGFuZ2UgcmVsYXRlZCB0byBob3cgdGhlIGRlc3RpbmF0aW9uIGRldmljZSBpcyBoYW5kbGVkLCBsaWtlbHkgdG8gcHJldmVudCByYWNlcy4KCkkgc2hvdWxkIGNoZWNrIHRoZSBkZWZpbml0aW9ucyBvZiBgZHN0X2Rldl9yY3VgIGFuZCBgZGV2X3JjdWAgaW4gYGluY2x1ZGUvbmV0L2RzdC5oYCB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBpbXBhY3QuIFRoaXMgaXMgY29yZSBJUHY0IHJvdXRpbmcgbG9naWMsIHNvIGl0JiMzOTtzIGNyaXRpY2FsLiBUaGUgZnVuY3Rpb25zIGJlaW5nIG1vZGlmaWVkIGFyZSBgaXBfcnRfc2VuZF9yZWRpcmVjdGAsIGBpcF9ydF9nZXRfc291cmNlYCwgYW5kIGBydF9mbHVzaF9kZXZgLiBUaG9zZSBhcmUgZnVuZGFtZW50YWwuIGBpcF9ydF9zZW5kX3JlZGlyZWN0YCBpcyBzZW5kaW5nIElDTVAgcmVkaXJlY3RzIOKAkyBwcmV0dHkgaW1wb3J0YW50IGZvciBuZXR3b3JrIGJlaGF2aW9yLiBgaXBfcnRfZ2V0X3NvdXJjZWAgaXMgY3J1Y2lhbCBmb3IgZ2V0dGluZyB0aGUgc291cmNlIGFkZHJlc3MsIG9idmlvdXNseS4gQW5kIGBydF9mbHVzaF9kZXZgIGlzIHVzZWQgdG8gZmx1c2ggcm91dGVzIHdoZW4gYSBkZXZpY2UgZ29lcyBkb3duIG9yIGNoYW5nZXMuCgpUaGlzIGlzIGRlZmluaXRlbHkgZnV6emluZyBtYXRlcmlhbC4gVGhlc2UgYXJlIGNvcmUgZnVuY3Rpb25zLCBhbnkgYnVncyBoZXJlIGNvdWxkIGJlIHNpZ25pZmljYW50LiBJJiMzOTttIGdvaW5nIHRvIHplcm8gaW4gb24gdGhvc2UgdGhyZWUgc3ltYm9sczogYGlwX3J0X3NlbmRfcmVkaXJlY3RgLCBgaXBfcnRfZ2V0X3NvdXJjZWAsIGFuZCBgcnRfZmx1c2hfZGV2YC4KCk5vdywgYmVmb3JlIEkgZmlyZSB1cCB0aGUgZnV6emVycywgSSBuZWVkIHRvIHRoaW5rIGFib3V0IHJlbGV2YW50IGtlcm5lbCBjb25maWd1cmF0aW9ucy4gYENPTkZJR19JUF9ST1VURV9DTEFTU0lEYD8gTmFoLCB0aGlzIGlzIGJhc2ljIElQdjQgcm91dGluZy4gYENPTkZJR19JTkVUYCBpcyBhIGdpdmVuIOKAkyBJUHY0IG5lZWRzIHRoYXQsIGJ1dCBpdCYjMzk7cyBlbmFibGVkIGJ5IGRlZmF1bHQuIEkmIzM5O2xsIHNjYW4gdGhyb3VnaCBgbmV0L2lwdjQvcm91dGUuY2AgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgdGhhdCBJIG5lZWQgdG8gYmUgYXdhcmUgb2YuIEdvdHRhIG1ha2Ugc3VyZSB0aGUgZnV6emluZyBlbnZpcm9ubWVudCBpcyBwcm9wZXJseSBzZXQgdXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTY6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXBfcnRfc2VuZF9yZWRpcmVjdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L3JvdXRlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvcm91dGUuYz04NDY9c3RhdGljIHZvaWQgaXB2NF9uZWdhdGl2ZV9hZHZpY2Uoc3RydWN0IHNvY2sgKnNrLFxuLS1cbm5ldC9pcHY0L3JvdXRlLmMtODcyLVxubmV0L2lwdjQvcm91dGUuYzo4NzM6dm9pZCBpcF9ydF9zZW5kX3JlZGlyZWN0KHN0cnVjdCBza19idWZmICpza2IpXG5uZXQvaXB2NC9yb3V0ZS5jLTg3NC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTY6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzczNgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipEaXZpbmcgaW50byBOZXR3b3JrIFJvdXRpbmcgTG9naWMqKgoKT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGlzIG5ldHdvcmsgaXNzdWUuIExldCYjMzk7cyBzZWUuLi4gdGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoZSBuZWVkIHRvIGludmVzdGlnYXRlIGBpcF9ydF9nZXRfc291cmNlYC4gVGhpcyBmdW5jdGlvbiBzZWVtcyBmdW5kYW1lbnRhbCB0byBob3cgdGhlIGtlcm5lbCBkZXRlcm1pbmVzIHRoZSBzb3VyY2UgSVAgYWRkcmVzcyBmb3Igb3V0Z29pbmcgcGFja2V0cy4gVW5kZXJzdGFuZGluZyBpdHMgYmVoYXZpb3IgaXMgY3JpdGljYWwgdG8gZGlhZ25vc2luZyBhbnkgcG90ZW50aWFsIHJvdXRpbmcgcHJvYmxlbXMsIGVzcGVjaWFsbHkgaWYgdGhlcmUgYXJlIHVudXN1YWwgc291cmNlIGFkZHJlc3NlcyBiZWluZyB1c2VkIG9yIHBhY2tldHMgYXJlIGJlaW5nIGRyb3BwZWQuIEkgbmVlZCB0byB0cmFjZSBpdHMgY2FsbCBwYXRoIGFuZCBzZWUgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSByb3V0aW5nIHRhYmxlLiBJIHdhbnQgdG8gcGF5IGF0dGVudGlvbiB0byBhbnkgcG90ZW50aWFsIGVkZ2UgY2FzZXMgb3IgZXJyb3IgaGFuZGxpbmcgdGhlcmUuCgpUaGVuLCByZWxhdGVkIHRvIHRoYXQsIEkgbmVlZCB0byBsb29rIGludG8gYHJ0X2ZsdXNoX2RldmAuIEZsdXNoaW5nIGEgZGV2aWNlJiMzOTtzIHJvdXRpbmcgY2FjaGUgY2FuIGhhdmUgYmlnIGltcGxpY2F0aW9ucyBpZiBub3QgZG9uZSBwcm9wZXJseS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0cmlnZ2VycyB0aGlzIGZ1bmN0aW9uLCB3aGF0IGV4YWN0bHkgaXQgZG9lcyAoZG9lcyBpdCBpbnZhbGlkYXRlIHRoZSBjYWNoZSwgb3IgZG9lcyBpdCBkbyBhIGZ1bGwgcmUtcG9wdWxhdGlvbj8pLCBhbmQgd2hhdCBzaWRlIGVmZmVjdHMgaXQgbWlnaHQgaGF2ZSBvbiBvbmdvaW5nIG5ldHdvcmsgY29tbXVuaWNhdGlvbi4gQ291bGQgYSByb2d1ZSBjYWxsIHRvIHRoaXMgZnVuY3Rpb24gYmUgY2F1c2luZyBpbnRlcm1pdHRlbnQgY29ubmVjdGl2aXR5IGlzc3Vlcz8gVGhhdCYjMzk7cyB3aGF0IEkgaGF2ZSB0byBmaWd1cmUgb3V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE2OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwX3J0X2dldF9zb3VyY2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC9yb3V0ZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L3JvdXRlLmM9MTI2OT1zdGF0aWMgaW50IGlwX3J0X2J1ZyhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvaXB2NC9yb3V0ZS5jLTEyODctXG5uZXQvaXB2NC9yb3V0ZS5jOjEyODg6dm9pZCBpcF9ydF9nZXRfc291cmNlKHU4ICphZGRyLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgcnRhYmxlICpydClcbm5ldC9pcHY0L3JvdXRlLmMtMTI4OS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTY6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDE2MgoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBkZWxpdmVyZWQgYXMgYSBmaXJzdC1wZXJzb24gc3VtbWFyeToKCioqRGlnZ2luZyBpbnRvIGBydF9mbHVzaF9kZXZgKioKCkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gYHJ0X2ZsdXNoX2RldmAuIEl0JiMzOTtzIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQsIHNvIHRvIHNwZWFrLCBpbiByZWFsLXRpbWUgZGV2aWNlIGZsdXNoaW5nLiBJJiMzOTttIG1lbnRhbGx5IHBhcnNpbmcgaXRzIHJvbGUgaW4gdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlLiBJIHdhbnQgdG8gcXVpY2tseSBldmFsdWF0ZSBpdHMgY29yZSBmdW5jdGlvbiDigJMgd2hhdCBzcGVjaWZpYyBhc3BlY3RzIG9mIGRldmljZSBpbnRlcmFjdGlvbiBhcmUgaGFuZGxlZCBoZXJlPyBJIG5lZWQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyBpdCBmaXRzIGludG8gdGhlIGJyb2FkZXIgSS9PIG9wZXJhdGlvbnMgYW5kIHNjaGVkdWxpbmcsIGFuZCBpdHMgcmVsYXRpb25zaGlwIHRvIGNhY2hlIGludmFsaWRhdGlvbiBhbmQgZGF0YSBpbnRlZ3JpdHksIG9mIGNvdXJzZS4gSXMgaXQgdGhlIHByaW1hcnkgcG9pbnQsIG9yIGRvZXMgaXQgY2FsbCBvdGhlciB0aGluZ3M/IEkgd2FudCB0byBkZXRlcm1pbmUgaWYgdGhlcmUmIzM5O3MgYW55IGFyZWEgdGhhdCBzdGFuZHMgb3V0IGFzIGxpa2VseSB0byBjYXVzZSBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxNjo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydF9mbHVzaF9kZXYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC9yb3V0ZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L3JvdXRlLmM9MTU1Mj1zdGF0aWMgdm9pZCBpcHY0X2RzdF9kZXN0cm95KHN0cnVjdCBkc3RfZW50cnkgKmRzdClcbi0tXG5uZXQvaXB2NC9yb3V0ZS5jLTE1NTctXG5uZXQvaXB2NC9yb3V0ZS5jOjE1NTg6dm9pZCBydF9mbHVzaF9kZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbm5ldC9pcHY0L3JvdXRlLmMtMTU1OS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTY6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQ5MgoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyB0aGUgSVB2NCBSb3V0aW5nIENvcmUqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgZnVuZGFtZW50YWwgSVB2NCByb3V0aW5nIGZ1bmN0aW9uYWxpdHkgaGVyZS4gTm90aGluZyBmYW5jeSBjb25maWctd2lzZSwganVzdCB0aGUgYmFzaWNzIC0gdGhlIHByZXNlbmNlIG9mIGBDT05GSUdfSU5FVGAgYW5kLCBpZiBpdCYjMzk7cyB0aGVyZSAod2hpY2ggaXQgdXN1YWxseSAqaXMqKSwgYENPTkZJR19JUF9ST1VURWAuIFRvIGdldCBhIGhhbmRsZSBvbiB3aGF0JiMzOTtzIGFjdHVhbGx5IGhhcHBlbmluZywgSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLCBhbmQgdGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQgaXMgYWx3YXlzIHRoZSBgbmV0L2lwdjQvTWFrZWZpbGVgLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgZ29vZCBvdmVydmlldyBvZiB0aGUgY29yZSBjb21wb25lbnRzIGFuZCBidWlsZCBkZXBlbmRlbmNpZXMgZm9yIHRoaXMgcGFydCBvZiB0aGUga2VybmVsLiBMZXQmIzM5O3Mgc2VlIHdoYXQgZ2VtcyB0aGF0IE1ha2VmaWxlIGhvbGRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxNjo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyb3V0ZS5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvTWFrZWZpbGUtNS1cbm5ldC9pcHY0L01ha2VmaWxlOjY6b2JqLXkgICAgIDo9IHJvdXRlLm8gaW5ldHBlZXIubyBwcm90b2NvbC5vIFxcXG5uZXQvaXB2NC9NYWtlZmlsZS03LVx0ICAgICBpcF9pbnB1dC5vIGlwX2ZyYWdtZW50Lm8gaXBfZm9yd2FyZC5vIGlwX29wdGlvbnMubyBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxNjo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0Nzk1CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTcxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBJUHY0IFJvdXRpbmcgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBzdHJhaWdodGZvcndhcmQgaW4gaXRzIGJ1aWxkIHJlcXVpcmVtZW50czsgaXQmIzM5O3MgdW5jb25kaXRpb25hbGx5IGJ1aWx0IGlmIElQdjQgc3VwcG9ydCAoYENPTkZJR19JTkVUYCkgaXMgZW5hYmxlZCwgd2hpY2ggaXMgdGhlIHN0YW5kYXJkIHNldHVwLCBhcyBpdCYjMzk7cyB0aGUgZGVmYXVsdCBpbiBgbmV0L01ha2VmaWxlYC4gTm8gc3BlY2lmaWMsIHVudXN1YWwgY29uZmlndXJhdGlvbnMgbmVlZGVkLCB3aGljaCBzaW1wbGlmaWVzIHRoZSB0ZXN0aW5nIG1hdHJpeCBhIGJpdC4KCk15IHByaW1hcnkgZm9jdXMgaGFzIHRvIGJlIG9uIHRoZSBjb3JlIGZ1bmN0aW9ucyB0b3VjaGVkOiBgaXBfcnRfc2VuZF9yZWRpcmVjdGAsIGBpcF9ydF9nZXRfc291cmNlYCwgYW5kIGBydF9mbHVzaF9kZXZgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIHJldm9sdmVzIGFyb3VuZCBSQ1UtcHJvdGVjdGVkIGRldmljZSBwb2ludGVycywgYGRzdF9kZXZfcmN1YC4gVGhlIGdvYWwgaGVyZSBpcyBwcmV0dHkgY2xlYXI7IHdlJiMzOTtyZSBwcmV2ZW50aW5nIHVzZS1hZnRlci1mcmVlIGFuZCBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIGluIElQdjQgcm91dGluZy4gTXkgZnV6emluZyBlZmZvcnRzICphYnNvbHV0ZWx5KiBuZWVkIHRvIHRhcmdldCB0aGVzZSByb3V0aW5nIGZ1bmN0aW9ucy4gSSBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoZSBSQ1UgZGVyZWZlcmVuY2VzIGFyZSBidWxsZXRwcm9vZi4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHdoYXRldmVyIHRoZXkgZml4ZWQgaGFzbiYjMzk7dCBjcmVhdGVkIGEgZGlmZmVyZW50IHZ1bG5lcmFiaWxpdHkuIE15IGdvYWwgd2lsbCBiZSB0byB0cnkgdG8gdW5jb3ZlciBuZXcgcmVncmVzc2lvbnMuCgpJIHNob3VsZCBhbHNvIHF1aWNrbHkgdmVyaWZ5IHRoZSByZWFjaGFiaWxpdHkgb2YgYGlwX3J0X3NlbmRfcmVkaXJlY3RgLiBJIGJlbGlldmUgaXQmIzM5O3MgY2FsbGVkIGZyb20gc29tZXRoaW5nIGxpa2UgYGlwX2ZvcndhcmRgLCB3aGljaCB3aWxsIGJlIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgY29uc3RydWN0aW5nIHRlc3QgY2FzZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE2OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwX3J0X3NlbmRfcmVkaXJlY3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvaXBfZm9yd2FyZC5jPTgzPWludCBpcF9mb3J3YXJkKHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2lwdjQvaXBfZm9yd2FyZC5jLTE1Ni1cdCAgICAhc2tiX3NlY19wYXRoKHNrYikpXG5uZXQvaXB2NC9pcF9mb3J3YXJkLmM6MTU3Olx0XHRpcF9ydF9zZW5kX3JlZGlyZWN0KHNrYik7XG5uZXQvaXB2NC9pcF9mb3J3YXJkLmMtMTU4LVxuLS1cbm5ldC9pcHY0L3JvdXRlLmM9ODQ2PXN0YXRpYyB2b2lkIGlwdjRfbmVnYXRpdmVfYWR2aWNlKHN0cnVjdCBzb2NrICpzayxcbi0tXG5uZXQvaXB2NC9yb3V0ZS5jLTg3Mi1cbm5ldC9pcHY0L3JvdXRlLmM6ODczOnZvaWQgaXBfcnRfc2VuZF9yZWRpcmVjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxubmV0L2lwdjQvcm91dGUuYy04NzQte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxNjo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDY1CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgdGhlIHN1bW1hcnksIGZyYW1lZCBhcyB5b3VyIG93biB0aG91Z2h0czoKCioqUm91dGluZyBGdW5jdGlvbiBJbnRlcmFjdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCBob3cgdGhlIElQIGZvcndhcmRpbmcgcHJvY2VzcyBpbnRlcmFjdHMgd2l0aCB0aGUgcm91dGluZyB0YWJsZXMgYW5kIHJlbGF0ZWQgZnVuY3Rpb25zLiBJJiMzOTt2ZSBjb25maXJtZWQsIGFuZCBpdCYjMzk7cyBjcnlzdGFsIGNsZWFyOiBgaXBfcnRfc2VuZF9yZWRpcmVjdGAgaXMgaW5kZWVkIGNhbGxlZCBkaXJlY3RseSBmcm9tIHdpdGhpbiBgaXBfZm9yd2FyZGAuIFRoYXQgbWFrZXMgcGVyZmVjdCBzZW5zZTsgd2hlbiB3ZSBuZWVkIHRvIHJlZGlyZWN0IHRyYWZmaWMgYmFzZWQgb24gdGhlIHJvdXRpbmcgZGVjaXNpb24sIHRoaXMgaXMgdGhlIGZ1bmN0aW9uIHJlc3BvbnNpYmxlLgoKTm93LCBzaGlmdGluZyBnZWFycyBzbGlnaHRseSwgSSYjMzk7bSByZWNhbGxpbmcgdGhlIHJlbGF0aW9uc2hpcCB3aXRoIElDTVAgZXJyb3IgZ2VuZXJhdGlvbi4gSSYjMzk7dmUgYWxzbyB2ZXJpZmllZCB0aGF0IGBpcF9ydF9nZXRfc291cmNlYCBpcyBpbnZva2VkIGR1cmluZyB0aGlzIHByb2Nlc3MuIFRoaXMgY29uZmlybXMgbXkgdW5kZXJzdGFuZGluZyB0aGF0IHRoZSBzeXN0ZW0gbmVlZHMgdG8gZGV0ZXJtaW5lIHRoZSBjb3JyZWN0IHNvdXJjZSBhZGRyZXNzIGZvciBjcmFmdGluZyBJQ01QIGVycm9yIG1lc3NhZ2VzLCBhbmQgdGhlIHJvdXRpbmcgdGFibGUgcHJvdmlkZXMgdGhhdCBuZWNlc3Nhcnkgc291cmNlIGFkZHJlc3MgaW5mb3JtYXRpb24uIFRoaXMgaXMgc3RhbmRhcmQgb3BlcmF0aW5nIHByb2NlZHVyZSwgYXMgSSB3b3VsZCBleHBlY3QgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE2OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwX3J0X2dldF9zb3VyY2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvaXBfb3B0aW9ucy5jPTQ0PXZvaWQgaXBfb3B0aW9uc19idWlsZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaXBfb3B0aW9ucyAqb3B0LFxuLS1cbm5ldC9pcHY0L2lwX29wdGlvbnMuYy01Ni1cdGlmIChvcHQtXHUwMDNlcnJfbmVlZGFkZHIpXG5uZXQvaXB2NC9pcF9vcHRpb25zLmM6NTc6XHRcdGlwX3J0X2dldF9zb3VyY2UoaXBoICYjNDM7IG9wdC1cdTAwM2VyciAmIzQzOyBpcGhbb3B0LVx1MDAzZXJyICYjNDM7IDJdIC0gNSwgc2tiLCBydCk7XG5uZXQvaXB2NC9pcF9vcHRpb25zLmMtNTgtXHRpZiAob3B0LVx1MDAzZXRzX25lZWRhZGRyKVxubmV0L2lwdjQvaXBfb3B0aW9ucy5jOjU5Olx0XHRpcF9ydF9nZXRfc291cmNlKGlwaCAmIzQzOyBvcHQtXHUwMDNldHMgJiM0MzsgaXBoW29wdC1cdTAwM2V0cyAmIzQzOyAyXSAtIDksIHNrYiwgcnQpO1xubmV0L2lwdjQvaXBfb3B0aW9ucy5jLTYwLVx0aWYgKG9wdC1cdTAwM2V0c19uZWVkdGltZSkge1xuLS1cbm5ldC9pcHY0L2lwX29wdGlvbnMuYz01NDI9dm9pZCBpcF9mb3J3YXJkX29wdGlvbnMoc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvaXB2NC9pcF9vcHRpb25zLmMtNTUwLVx0XHRvcHRwdHIgPSAodW5zaWduZWQgY2hhciAqKXJhdyAmIzQzOyBvcHQtXHUwMDNlcnI7XG5uZXQvaXB2NC9pcF9vcHRpb25zLmM6NTUxOlx0XHRpcF9ydF9nZXRfc291cmNlKFx1MDAyNm9wdHB0cltvcHRwdHJbMl0tNV0sIHNrYiwgcnQpO1xubmV0L2lwdjQvaXBfb3B0aW9ucy5jLTU1Mi1cdFx0b3B0LVx1MDAzZWlzX2NoYW5nZWQgPSAxO1xuLS1cbm5ldC9pcHY0L2lwX29wdGlvbnMuYy01NzAtXHRcdFx0aXBfaGRyKHNrYiktXHUwMDNlZGFkZHIgPSBvcHQtXHUwMDNlbmV4dGhvcDtcbm5ldC9pcHY0L2lwX29wdGlvbnMuYzo1NzE6XHRcdFx0aXBfcnRfZ2V0X3NvdXJjZShcdTAwMjZvcHRwdHJbc3JycHRyLTFdLCBza2IsIHJ0KTtcbm5ldC9pcHY0L2lwX29wdGlvbnMuYy01NzItXHRcdFx0b3B0cHRyWzJdID0gc3JycHRyJiM0Mzs0O1xuLS1cbm5ldC9pcHY0L2lwX29wdGlvbnMuYy01NzgtXHRcdFx0b3B0cHRyID0gcmF3ICYjNDM7IG9wdC1cdTAwM2V0cztcbm5ldC9pcHY0L2lwX29wdGlvbnMuYzo1Nzk6XHRcdFx0aXBfcnRfZ2V0X3NvdXJjZShcdTAwMjZvcHRwdHJbb3B0cHRyWzJdLTldLCBza2IsIHJ0KTtcbm5ldC9pcHY0L2lwX29wdGlvbnMuYy01ODAtXHRcdFx0b3B0LVx1MDAzZWlzX2NoYW5nZWQgPSAxO1xuLS1cbm5ldC9pcHY0L3JvdXRlLmM9MTI2OT1zdGF0aWMgaW50IGlwX3J0X2J1ZyhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvaXB2NC9yb3V0ZS5jLTEyODctXG5uZXQvaXB2NC9yb3V0ZS5jOjEyODg6dm9pZCBpcF9ydF9nZXRfc291cmNlKHU4ICphZGRyLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgcnRhYmxlICpydClcbm5ldC9pcHY0L3JvdXRlLmMtMTI4OS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE2OjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYzODYKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdW5kZXJzdGFuZGluZzoKCioqRGV2aWNlIERlcmVnaXN0cmF0aW9uIGFuZCBgcnRfZmx1c2hfZGV2YCoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGRldmljZSBkcml2ZXJzIGFuZCB0aGUgTGludXgga2VybmVsLiBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZSBwcm9jZXNzIG9mIHVucmVnaXN0ZXJpbmcgYSBkZXZpY2UuIEkgc2VlIHRoYXQgYHJ0X2ZsdXNoX2RldmAgaXMgZ2V0dGluZyBjYWxsZWQgYXQgc29tZSBwb2ludCBkdXJpbmcgdGhlIGRldmljZSB1bnJlZ2lzdHJhdGlvbiBzZXF1ZW5jZS4gVGhhdCYjMzk7cyBhIGtleSBkZXRhaWwuIEkgaW1tZWRpYXRlbHkgcmVjb2duaXplIHRoYXQgbWVhbnMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCByZWFsLXRpbWUgYXNwZWN0cyBoZXJlLiBgcnRfZmx1c2hfZGV2YCBzdWdnZXN0cyB3ZSBuZWVkIHRvIHBlcmZvcm0gc29tZSBmb3JtIG9mIGZsdXNoaW5nIG9yIGNsZWFuLXVwIHJlbGF0ZWQgdG8gcmVhbC10aW1lIG9wZXJhdGlvbnMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZGV2aWNlICpiZWZvcmUqIGl0JiMzOTtzIGZ1bGx5IHVucmVnaXN0ZXJlZCBmcm9tIHRoZSBzeXN0ZW0uIFRoaXMgaW1wbGllcyB0aGVyZSYjMzk7cyBsaWtlbHkgc29tZSByZWFsLXRpbWUgc3RhdGUgb3IgZGF0YSBzdHJ1Y3R1cmVzIGFzc29jaWF0ZWQgd2l0aCB0aGUgZGV2aWNlIHRoYXQgbmVlZHMgdG8gYmUgaGFuZGxlZCBwcm9wZXJseSB0byBwcmV2ZW50IHJlc291cmNlIGxlYWtzLCBkYXRhIGNvcnJ1cHRpb24sIG9yIHNjaGVkdWxpbmcgaXNzdWVzLiBJIG5lZWQgdG8gZGlnIGRlZXBlciB0byB1bmRlcnN0YW5kIHRoZSBzcGVjaWZpY3Mgb2Ygd2hhdCYjMzk7cyBiZWluZyBmbHVzaGVkIGFuZCB3aHksIGVzcGVjaWFsbHkgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGRldmljZSYjMzk7cyBkcml2ZXIgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgcmVhbC10aW1lIHNjaGVkdWxlci4gSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZSBiZXN0IHBsYWNlIGlzIHRvIGxvb2sgZm9yIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgcnRfZmx1c2hfZGV2YCB0byB1bmRlcnN0YW5kIHRoZSBmdWxsIGltcGxpY2F0aW9ucyBhbmQgbWFrZSBzdXJlIGl0JiMzOTtzIHdvcmtpbmcgYXMgZXhwZWN0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE2OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0X2ZsdXNoX2RldiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9maWJfZnJvbnRlbmQuYz0xNTA2PXN0YXRpYyBpbnQgZmliX25ldGRldl9ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnRoaXMsIHVuc2lnbmVkIGxvbmcgZXZlbnQsIHZvaWQgKnB0cilcbi0tXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xNTE3LVx0XHRmaWJfZGlzYWJsZV9pcChkZXYsIGV2ZW50LCB0cnVlKTtcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jOjE1MTg6XHRcdHJ0X2ZsdXNoX2RldihkZXYpO1xubmV0L2lwdjQvZmliX2Zyb250ZW5kLmMtMTUxOS1cdFx0cmV0dXJuIE5PVElGWV9ET05FO1xuLS1cbm5ldC9pcHY0L3JvdXRlLmM9MTU1Mj1zdGF0aWMgdm9pZCBpcHY0X2RzdF9kZXN0cm95KHN0cnVjdCBkc3RfZW50cnkgKmRzdClcbi0tXG5uZXQvaXB2NC9yb3V0ZS5jLTE1NTctXG5uZXQvaXB2NC9yb3V0ZS5jOjE1NTg6dm9pZCBydF9mbHVzaF9kZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbm5ldC9pcHY0L3JvdXRlLmMtMTU1OS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE2OjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY5MTcKCQkJCQkJCW91dHB1dDogMTU1CgkJCQkJCQl0aG91Z2h0czogMTczCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIElQdjQgUm91dGluZyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSByZXZpZXdlZCB0aGlzIHBhdGNoLCBhbmQgaXQgbG9va3MgbGlrZSBhbGwgdGhlIGNoYW5nZWQgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUgYW5kLCBjcnVjaWFsbHksIGZ1bmN0aW9uYWwuIEkmIzM5O20gZ29pbmcgdG8gc2V0IGBXb3J0aEZ1enppbmc9dHJ1ZWAgcmlnaHQgYXdheSDigJMgdGhpcyBpcyBkZWZpbml0ZWx5IGFuIGFyZWEgd2hlcmUgd2UgbmVlZCB0byBhcHBseSBzb21lIHJpZ29yb3VzIHRlc3RpbmcuCgpNeSBmb2N1cyBpcyBnb2luZyB0byBiZSBzcXVhcmVseSBvbiB0aG9zZSBrZXkgcm91dGluZyBmdW5jdGlvbnM6IGBpcF9ydF9zZW5kX3JlZGlyZWN0YCwgYGlwX3J0X2dldF9zb3VyY2VgLCBhbmQgYHJ0X2ZsdXNoX2RldmAuIFRoZXNlIGFyZSB0aGUgY29yZSBjb21wb25lbnRzIHRoYXQgYXJlIGJlaW5nIG1vZGlmaWVkIHRvIHVzZSBSQ1UtcHJvdGVjdGVkIGRldmljZSBwb2ludGVycywgc3BlY2lmaWNhbGx5IGBkc3RfZGV2X3JjdWAgYW5kIGBkZXZfcmN1YC4KClRoZXJlIGFyZW4mIzM5O3QgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBJIG5lZWQgdG8gZmxhZy4gYENPTkZJR19JTkVUYCBpcyBzdGFuZGFyZCwgc28gd2UmIzM5O3JlIGdvb2QgdGhlcmUuCgpNeSByZWFzb25pbmcgaXMgc3RyYWlnaHRmb3J3YXJkOiB0aGlzIHBhdGNoIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UuIEl0JiMzOTtzIGFkZHJlc3NpbmcgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcywgc3BlY2lmaWNhbGx5IHVzZS1hZnRlci1mcmVlIGFuZCByYWNlIGNvbmRpdGlvbnMsIHdpdGhpbiB0aGUgSVB2NCByb3V0aW5nIHN1YnN5c3RlbS4gQnkgaW50cm9kdWNpbmcgUkNVLCB0aGUgaW50ZW50aW9uIGlzIHRvIGltcHJvdmUgc2FmZXR5IGFyb3VuZCBkZXZpY2UgcG9pbnRlciBhY2Nlc3Nlcy4gVGhlcmVmb3JlLCB0aGUgZnV6emluZyBuZWVkcyB0byBjb25jZW50cmF0ZSBvbiB2ZXJpZnlpbmcgdGhlIGNvcnJlY3RuZXNzIGFuZCBzYWZldHkgb2YgdGhlc2UgUkNVIGRlcmVmZXJlbmNlcy4gV2UgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgY2hhbmdlcyBlZmZlY3RpdmVseSBwcmV2ZW50IHRoZXNlIGlzc3VlcyBhbmQgaGF2ZW4mIzM5O3QgaW50cm9kdWNlZCBhbnkgbmV3IHJlZ3Jlc3Npb25zLiBJJiMzOTttIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBjb25jdXJyZW5jeSBzY2VuYXJpb3MgYW5kIGVkZ2UgY2FzZXMgZHVyaW5nIHJvdXRpbmcgdGFibGUgdXBkYXRlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTY6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lwX3J0X3NlbmRfcmVkaXJlY3QmIzM0OywKICAgICYjMzQ7aXBfcnRfZ2V0X3NvdXJjZSYjMzQ7LAogICAgJiMzNDtydF9mbHVzaF9kZXYmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBJUHY0IHJvdXRpbmcgZnVuY3Rpb25zIChgaXBfcnRfc2VuZF9yZWRpcmVjdGAsIGBpcF9ydF9nZXRfc291cmNlYCwgYHJ0X2ZsdXNoX2RldmApIHRvIHVzZSBSQ1UtcHJvdGVjdGVkIGRldmljZSBwb2ludGVycyAoYGRzdF9kZXZfcmN1YCBhbmQgYGRldl9yY3VgKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGZpeGluZyBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgcmFjZSBjb25kaXRpb25zLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGVzZSByb3V0aW5nIGZ1bmN0aW9ucyB0byBlbnN1cmUgdGhlIFJDVSBkZXJlZmVyZW5jZXMgYXJlIHNhZmUgYW5kIGRvbiYjMzk7dCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXBfcnRfc2VuZF9yZWRpcmVjdCYjMzQ7LAogICAgJiMzNDtpcF9ydF9nZXRfc291cmNlJiMzNDssCiAgICAmIzM0O3J0X2ZsdXNoX2RldiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb3JlIElQdjQgcm91dGluZyBmdW5jdGlvbnMgKGBpcF9ydF9zZW5kX3JlZGlyZWN0YCwgYGlwX3J0X2dldF9zb3VyY2VgLCBgcnRfZmx1c2hfZGV2YCkgdG8gdXNlIFJDVS1wcm90ZWN0ZWQgZGV2aWNlIHBvaW50ZXJzIChgZHN0X2Rldl9yY3VgIGFuZCBgZGV2X3JjdWApLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZml4aW5nIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciByYWNlIGNvbmRpdGlvbnMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZXNlIHJvdXRpbmcgZnVuY3Rpb25zIHRvIGVuc3VyZSB0aGUgUkNVIGRlcmVmZXJlbmNlcyBhcmUgc2FmZSBhbmQgZG9uJiMzOTt0IGludHJvZHVjZSByZWdyZXNzaW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjUyOjQ4LjA5MDk4NzM1M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NzUyMjE2NTgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwX3J0X3NlbmRfcmVkaXJlY3RcIixcbiAgICBcImlwX3J0X2dldF9zb3VyY2VcIixcbiAgICBcInJ0X2ZsdXNoX2RldlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgSVB2NCByb3V0aW5nIGZ1bmN0aW9ucyAoYGlwX3J0X3NlbmRfcmVkaXJlY3RgLCBgaXBfcnRfZ2V0X3NvdXJjZWAsIGBydF9mbHVzaF9kZXZgKSB0byB1c2UgUkNVLXByb3RlY3RlZCBkZXZpY2UgcG9pbnRlcnMgKGBkc3RfZGV2X3JjdWAgYW5kIGBkZXZfcmN1YCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBmaXhpbmcgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIHJhY2UgY29uZGl0aW9ucy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlc2Ugcm91dGluZyBmdW5jdGlvbnMgdG8gZW5zdXJlIHRoZSBSQ1UgZGVyZWZlcmVuY2VzIGFyZSBzYWZlIGFuZCBkb24ndCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjUyOjQ4LjA5MDk5ODM4M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzk1NTg4NzAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNWUzMzY4YzJkZTk5MTViOGI4MGFjYTkyMjM4Y2E0YTk1MzUyYzNjZVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEp1bCA4IDE2OjUyOjQ2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3JvdXRlLmMgYi9uZXQvaXB2NC9yb3V0ZS5jXFxuaW5kZXggM2YzZGU1MTY0ZDZlNTguLjRmZWQwN2NhZTdkYTIwIDEwMDY0NFxcbi0tLSBhL25ldC9pcHY0L3JvdXRlLmNcXG4rKysgYi9uZXQvaXB2NC9yb3V0ZS5jXFxuQEAgLTg3NCwyMSArODc0LDIzIEBAIHZvaWQgaXBfcnRfc2VuZF9yZWRpcmVjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiB7XFxuIFxcdHN0cnVjdCBydGFibGUgKnJ0ID0gc2tiX3J0YWJsZShza2IpO1xcbiBcXHRzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXY7XFxuK1xcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXY7XFxuIFxcdHN0cnVjdCBpbmV0X3BlZXIgKnBlZXI7XFxuLVxcdHN0cnVjdCBuZXQgKm5ldDtcXG4gXFx0aW50IGxvZ19tYXJ0aWFucztcXG4rXFx0c3RydWN0IG5ldCAqbmV0O1xcbiBcXHRpbnQgdmlmO1xcbiBcXG4gXFx0cmN1X3JlYWRfbG9jaygpO1xcbi1cXHRpbl9kZXYgPSBfX2luX2Rldl9nZXRfcmN1KHJ0LVxcdTAwM2Vkc3QuZGV2KTtcXG4rXFx0ZGV2ID0gZHN0X2Rldl9yY3UoXFx1MDAyNnJ0LVxcdTAwM2Vkc3QpO1xcbitcXHRpbl9kZXYgPSBfX2luX2Rldl9nZXRfcmN1KGRldik7XFxuIFxcdGlmICghaW5fZGV2IHx8ICFJTl9ERVZfVFhfUkVESVJFQ1RTKGluX2RldikpIHtcXG4gXFx0XFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuIFxcdFxcdHJldHVybjtcXG4gXFx0fVxcbiBcXHRsb2dfbWFydGlhbnMgPSBJTl9ERVZfTE9HX01BUlRJQU5TKGluX2Rldik7XFxuLVxcdHZpZiA9IGwzbWRldl9tYXN0ZXJfaWZpbmRleF9yY3UocnQtXFx1MDAzZWRzdC5kZXYpO1xcbitcXHR2aWYgPSBsM21kZXZfbWFzdGVyX2lmaW5kZXhfcmN1KGRldik7XFxuIFxcbi1cXHRuZXQgPSBkZXZfbmV0KHJ0LVxcdTAwM2Vkc3QuZGV2KTtcXG4rXFx0bmV0ID0gZGV2X25ldF9yY3UoZGV2KTtcXG4gXFx0cGVlciA9IGluZXRfZ2V0cGVlcl92NChuZXQtXFx1MDAzZWlwdjQucGVlcnMsIGlwX2hkcihza2IpLVxcdTAwM2VzYWRkciwgdmlmKTtcXG4gXFx0aWYgKCFwZWVyKSB7XFxuIFxcdFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbkBAIC0xMjg3LDI5ICsxMjg5LDMyIEBAIHZvaWQgaXBfcnRfZ2V0X3NvdXJjZSh1OCAqYWRkciwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHJ0YWJsZSAqcnQpXFxuIHtcXG4gXFx0X19iZTMyIHNyYztcXG4gXFxuLVxcdGlmIChydF9pc19vdXRwdXRfcm91dGUocnQpKVxcbitcXHRyY3VfcmVhZF9sb2NrKCk7XFxuK1xcdGlmIChydF9pc19vdXRwdXRfcm91dGUocnQpKSB7XFxuIFxcdFxcdHNyYyA9IGlwX2hkcihza2IpLVxcdTAwM2VzYWRkcjtcXG4tXFx0ZWxzZSB7XFxuLVxcdFxcdHN0cnVjdCBmaWJfcmVzdWx0IHJlcztcXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IGRzdF9kZXZfcmN1KFxcdTAwMjZydC1cXHUwMDNlZHN0KTtcXG4rXFx0XFx0c3RydWN0IG5ldCAqbmV0ID0gZGV2X25ldF9yY3UoZGV2KTtcXG4gXFx0XFx0c3RydWN0IGlwaGRyICppcGggPSBpcF9oZHIoc2tiKTtcXG4rXFx0XFx0c3RydWN0IGZpYl9yZXN1bHQgcmVzO1xcbiBcXHRcXHRzdHJ1Y3QgZmxvd2k0IGZsNCA9IHtcXG4gXFx0XFx0XFx0LmRhZGRyID0gaXBoLVxcdTAwM2VkYWRkcixcXG4gXFx0XFx0XFx0LnNhZGRyID0gaXBoLVxcdTAwM2VzYWRkcixcXG4gXFx0XFx0XFx0LmZsb3dpNF9kc2NwID0gaXA0aF9kc2NwKGlwaCksXFxuLVxcdFxcdFxcdC5mbG93aTRfb2lmID0gcnQtXFx1MDAzZWRzdC5kZXYtXFx1MDAzZWlmaW5kZXgsXFxuK1xcdFxcdFxcdC5mbG93aTRfb2lmID0gZGV2LVxcdTAwM2VpZmluZGV4LFxcbiBcXHRcXHRcXHQuZmxvd2k0X2lpZiA9IHNrYi1cXHUwMDNlZGV2LVxcdTAwM2VpZmluZGV4LFxcbiBcXHRcXHRcXHQuZmxvd2k0X21hcmsgPSBza2ItXFx1MDAzZW1hcmssXFxuIFxcdFxcdH07XFxuIFxcbi1cXHRcXHRyY3VfcmVhZF9sb2NrKCk7XFxuLVxcdFxcdGlmIChmaWJfbG9va3VwKGRldl9uZXQocnQtXFx1MDAzZWRzdC5kZXYpLCBcXHUwMDI2Zmw0LCBcXHUwMDI2cmVzLCAwKSA9PSAwKVxcbi1cXHRcXHRcXHRzcmMgPSBmaWJfcmVzdWx0X3ByZWZzcmMoZGV2X25ldChydC1cXHUwMDNlZHN0LmRldiksIFxcdTAwMjZyZXMpO1xcbitcXHRcXHRpZiAoZmliX2xvb2t1cChuZXQsIFxcdTAwMjZmbDQsIFxcdTAwMjZyZXMsIDApID09IDApXFxuK1xcdFxcdFxcdHNyYyA9IGZpYl9yZXN1bHRfcHJlZnNyYyhuZXQsIFxcdTAwMjZyZXMpO1xcbiBcXHRcXHRlbHNlXFxuLVxcdFxcdFxcdHNyYyA9IGluZXRfc2VsZWN0X2FkZHIocnQtXFx1MDAzZWRzdC5kZXYsXFxuK1xcdFxcdFxcdHNyYyA9IGluZXRfc2VsZWN0X2FkZHIoZGV2LFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgICAgcnRfbmV4dGhvcChydCwgaXBoLVxcdTAwM2VkYWRkciksXFxuIFxcdFxcdFxcdFxcdFxcdCAgICAgICBSVF9TQ09QRV9VTklWRVJTRSk7XFxuLVxcdFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbiBcXHR9XFxuK1xcdHJjdV9yZWFkX3VubG9jaygpO1xcbitcXG4gXFx0bWVtY3B5KGFkZHIsIFxcdTAwMjZzcmMsIDQpO1xcbiB9XFxuIFxcbkBAIC0xNTY1LDcgKzE1NzAsNyBAQCB2b2lkIHJ0X2ZsdXNoX2RldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiBcXHRcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocnQsIHNhZmUsIFxcdTAwMjZ1bC1cXHUwMDNlaGVhZCwgZHN0LnJ0X3VuY2FjaGVkKSB7XFxuIFxcdFxcdFxcdGlmIChydC1cXHUwMDNlZHN0LmRldiAhPSBkZXYpXFxuIFxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbi1cXHRcXHRcXHRydC1cXHUwMDNlZHN0LmRldiA9IGJsYWNraG9sZV9uZXRkZXY7XFxuK1xcdFxcdFxcdHJjdV9hc3NpZ25fcG9pbnRlcihydC1cXHUwMDNlZHN0LmRldl9yY3UsIGJsYWNraG9sZV9uZXRkZXYpO1xcbiBcXHRcXHRcXHRuZXRkZXZfcmVmX3JlcGxhY2UoZGV2LCBibGFja2hvbGVfbmV0ZGV2LFxcbiBcXHRcXHRcXHRcXHRcXHQgICBcXHUwMDI2cnQtXFx1MDAzZWRzdC5kZXZfdHJhY2tlciwgR0ZQX0FUT01JQyk7XFxuIFxcdFxcdFxcdGxpc3RfZGVsX2luaXQoXFx1MDAyNnJ0LVxcdTAwM2Vkc3QucnRfdW5jYWNoZWQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxNjo1Mjo0OC44ODc4NTc5NzNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzOTU1MzQwMTcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwX3J0X3NlbmRfcmVkaXJlY3RcIixcbiAgICBcImlwX3J0X2dldF9zb3VyY2VcIixcbiAgICBcInJ0X2ZsdXNoX2RldlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgSVB2NCByb3V0aW5nIGZ1bmN0aW9ucyAoYGlwX3J0X3NlbmRfcmVkaXJlY3RgLCBgaXBfcnRfZ2V0X3NvdXJjZWAsIGBydF9mbHVzaF9kZXZgKSB0byB1c2UgUkNVLXByb3RlY3RlZCBkZXZpY2UgcG9pbnRlcnMgKGBkc3RfZGV2X3JjdWAgYW5kIGBkZXZfcmN1YCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBmaXhpbmcgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIHJhY2UgY29uZGl0aW9ucy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlc2Ugcm91dGluZyBmdW5jdGlvbnMgdG8gZW5zdXJlIHRoZSBSQ1UgZGVyZWZlcmVuY2VzIGFyZSBzYWZlIGFuZCBkb24ndCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNWUzMzY4YzJkZTk5MTViOGI4MGFjYTkyMjM4Y2E0YTk1MzUyYzNjZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDggMTY6NTI6NDYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9yb3V0ZS5jIGIvbmV0L2lwdjQvcm91dGUuY1xuaW5kZXggM2YzZGU1MTY0ZDZlNTguLjRmZWQwN2NhZTdkYTIwIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvcm91dGUuY1xuKysrIGIvbmV0L2lwdjQvcm91dGUuY1xuQEAgLTg3NCwyMSArODc0LDIzIEBAIHZvaWQgaXBfcnRfc2VuZF9yZWRpcmVjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIHtcbiBcdHN0cnVjdCBydGFibGUgKnJ0ID0gc2tiX3J0YWJsZShza2IpO1xuIFx0c3RydWN0IGluX2RldmljZSAqaW5fZGV2O1xuK1x0c3RydWN0IG5ldF9kZXZpY2UgKmRldjtcbiBcdHN0cnVjdCBpbmV0X3BlZXIgKnBlZXI7XG4tXHRzdHJ1Y3QgbmV0ICpuZXQ7XG4gXHRpbnQgbG9nX21hcnRpYW5zO1xuK1x0c3RydWN0IG5ldCAqbmV0O1xuIFx0aW50IHZpZjtcbiBcbiBcdHJjdV9yZWFkX2xvY2soKTtcbi1cdGluX2RldiA9IF9faW5fZGV2X2dldF9yY3UocnQtXHUwMDNlZHN0LmRldik7XG4rXHRkZXYgPSBkc3RfZGV2X3JjdShcdTAwMjZydC1cdTAwM2Vkc3QpO1xuK1x0aW5fZGV2ID0gX19pbl9kZXZfZ2V0X3JjdShkZXYpO1xuIFx0aWYgKCFpbl9kZXYgfHwgIUlOX0RFVl9UWF9SRURJUkVDVFMoaW5fZGV2KSkge1xuIFx0XHRyY3VfcmVhZF91bmxvY2soKTtcbiBcdFx0cmV0dXJuO1xuIFx0fVxuIFx0bG9nX21hcnRpYW5zID0gSU5fREVWX0xPR19NQVJUSUFOUyhpbl9kZXYpO1xuLVx0dmlmID0gbDNtZGV2X21hc3Rlcl9pZmluZGV4X3JjdShydC1cdTAwM2Vkc3QuZGV2KTtcbitcdHZpZiA9IGwzbWRldl9tYXN0ZXJfaWZpbmRleF9yY3UoZGV2KTtcbiBcbi1cdG5ldCA9IGRldl9uZXQocnQtXHUwMDNlZHN0LmRldik7XG4rXHRuZXQgPSBkZXZfbmV0X3JjdShkZXYpO1xuIFx0cGVlciA9IGluZXRfZ2V0cGVlcl92NChuZXQtXHUwMDNlaXB2NC5wZWVycywgaXBfaGRyKHNrYiktXHUwMDNlc2FkZHIsIHZpZik7XG4gXHRpZiAoIXBlZXIpIHtcbiBcdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG5AQCAtMTI4NywyOSArMTI4OSwzMiBAQCB2b2lkIGlwX3J0X2dldF9zb3VyY2UodTggKmFkZHIsIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBydGFibGUgKnJ0KVxuIHtcbiBcdF9fYmUzMiBzcmM7XG4gXG4tXHRpZiAocnRfaXNfb3V0cHV0X3JvdXRlKHJ0KSlcbitcdHJjdV9yZWFkX2xvY2soKTtcbitcdGlmIChydF9pc19vdXRwdXRfcm91dGUocnQpKSB7XG4gXHRcdHNyYyA9IGlwX2hkcihza2IpLVx1MDAzZXNhZGRyO1xuLVx0ZWxzZSB7XG4tXHRcdHN0cnVjdCBmaWJfcmVzdWx0IHJlcztcbitcdH0gZWxzZSB7XG4rXHRcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBkc3RfZGV2X3JjdShcdTAwMjZydC1cdTAwM2Vkc3QpO1xuK1x0XHRzdHJ1Y3QgbmV0ICpuZXQgPSBkZXZfbmV0X3JjdShkZXYpO1xuIFx0XHRzdHJ1Y3QgaXBoZHIgKmlwaCA9IGlwX2hkcihza2IpO1xuK1x0XHRzdHJ1Y3QgZmliX3Jlc3VsdCByZXM7XG4gXHRcdHN0cnVjdCBmbG93aTQgZmw0ID0ge1xuIFx0XHRcdC5kYWRkciA9IGlwaC1cdTAwM2VkYWRkcixcbiBcdFx0XHQuc2FkZHIgPSBpcGgtXHUwMDNlc2FkZHIsXG4gXHRcdFx0LmZsb3dpNF9kc2NwID0gaXA0aF9kc2NwKGlwaCksXG4tXHRcdFx0LmZsb3dpNF9vaWYgPSBydC1cdTAwM2Vkc3QuZGV2LVx1MDAzZWlmaW5kZXgsXG4rXHRcdFx0LmZsb3dpNF9vaWYgPSBkZXYtXHUwMDNlaWZpbmRleCxcbiBcdFx0XHQuZmxvd2k0X2lpZiA9IHNrYi1cdTAwM2VkZXYtXHUwMDNlaWZpbmRleCxcbiBcdFx0XHQuZmxvd2k0X21hcmsgPSBza2ItXHUwMDNlbWFyayxcbiBcdFx0fTtcbiBcbi1cdFx0cmN1X3JlYWRfbG9jaygpO1xuLVx0XHRpZiAoZmliX2xvb2t1cChkZXZfbmV0KHJ0LVx1MDAzZWRzdC5kZXYpLCBcdTAwMjZmbDQsIFx1MDAyNnJlcywgMCkgPT0gMClcbi1cdFx0XHRzcmMgPSBmaWJfcmVzdWx0X3ByZWZzcmMoZGV2X25ldChydC1cdTAwM2Vkc3QuZGV2KSwgXHUwMDI2cmVzKTtcbitcdFx0aWYgKGZpYl9sb29rdXAobmV0LCBcdTAwMjZmbDQsIFx1MDAyNnJlcywgMCkgPT0gMClcbitcdFx0XHRzcmMgPSBmaWJfcmVzdWx0X3ByZWZzcmMobmV0LCBcdTAwMjZyZXMpO1xuIFx0XHRlbHNlXG4tXHRcdFx0c3JjID0gaW5ldF9zZWxlY3RfYWRkcihydC1cdTAwM2Vkc3QuZGV2LFxuK1x0XHRcdHNyYyA9IGluZXRfc2VsZWN0X2FkZHIoZGV2LFxuIFx0XHRcdFx0XHQgICAgICAgcnRfbmV4dGhvcChydCwgaXBoLVx1MDAzZWRhZGRyKSxcbiBcdFx0XHRcdFx0ICAgICAgIFJUX1NDT1BFX1VOSVZFUlNFKTtcbi1cdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4gXHR9XG4rXHRyY3VfcmVhZF91bmxvY2soKTtcbitcbiBcdG1lbWNweShhZGRyLCBcdTAwMjZzcmMsIDQpO1xuIH1cbiBcbkBAIC0xNTY1LDcgKzE1NzAsNyBAQCB2b2lkIHJ0X2ZsdXNoX2RldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocnQsIHNhZmUsIFx1MDAyNnVsLVx1MDAzZWhlYWQsIGRzdC5ydF91bmNhY2hlZCkge1xuIFx0XHRcdGlmIChydC1cdTAwM2Vkc3QuZGV2ICE9IGRldilcbiBcdFx0XHRcdGNvbnRpbnVlO1xuLVx0XHRcdHJ0LVx1MDAzZWRzdC5kZXYgPSBibGFja2hvbGVfbmV0ZGV2O1xuK1x0XHRcdHJjdV9hc3NpZ25fcG9pbnRlcihydC1cdTAwM2Vkc3QuZGV2X3JjdSwgYmxhY2tob2xlX25ldGRldik7XG4gXHRcdFx0bmV0ZGV2X3JlZl9yZXBsYWNlKGRldiwgYmxhY2tob2xlX25ldGRldixcbiBcdFx0XHRcdFx0ICAgXHUwMDI2cnQtXHUwMDNlZHN0LmRldl90cmFja2VyLCBHRlBfQVRPTUlDKTtcbiBcdFx0XHRsaXN0X2RlbF9pbml0KFx1MDAyNnJ0LVx1MDAzZWRzdC5ydF91bmNhY2hlZCk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxNjo1Mjo0OC44ODc4NjA3NDNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NTI1NDIzODk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFJvdXRpbmcgUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCB0aGF0J3MgdG91Y2hpbmcgYG5ldC9pcHY0L3JvdXRlLmNgLiBMb29rcyBsaWtlIHRoZXkncmUgcmVwbGFjaW5nIGRpcmVjdCBhY2Nlc3MgdG8gYHJ0LVx1MDAzZWRzdC5kZXZgIHdpdGggYGRzdF9kZXZfcmN1KFx1MDAyNnJ0LVx1MDAzZWRzdClgIGFuZCB1c2luZyBgcmN1X2Fzc2lnbl9wb2ludGVyYCBpbiBhIGZldyBwbGFjZXMuIFJpZ2h0IG9mZiB0aGUgYmF0LCB0aGlzIHNjcmVhbXMgUkNVIHByb3RlY3Rpb24sIHNvIGl0J3MgYSBzdHJ1Y3R1cmFsIGNoYW5nZSByZWxhdGVkIHRvIGhvdyB0aGUgZGVzdGluYXRpb24gZGV2aWNlIGlzIGhhbmRsZWQsIGxpa2VseSB0byBwcmV2ZW50IHJhY2VzLlxuXG5JIHNob3VsZCBjaGVjayB0aGUgZGVmaW5pdGlvbnMgb2YgYGRzdF9kZXZfcmN1YCBhbmQgYGRldl9yY3VgIGluIGBpbmNsdWRlL25ldC9kc3QuaGAgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgaW1wYWN0LiBUaGlzIGlzIGNvcmUgSVB2NCByb3V0aW5nIGxvZ2ljLCBzbyBpdCdzIGNyaXRpY2FsLiBUaGUgZnVuY3Rpb25zIGJlaW5nIG1vZGlmaWVkIGFyZSBgaXBfcnRfc2VuZF9yZWRpcmVjdGAsIGBpcF9ydF9nZXRfc291cmNlYCwgYW5kIGBydF9mbHVzaF9kZXZgLiBUaG9zZSBhcmUgZnVuZGFtZW50YWwuIGBpcF9ydF9zZW5kX3JlZGlyZWN0YCBpcyBzZW5kaW5nIElDTVAgcmVkaXJlY3RzIOKAkyBwcmV0dHkgaW1wb3J0YW50IGZvciBuZXR3b3JrIGJlaGF2aW9yLiBgaXBfcnRfZ2V0X3NvdXJjZWAgaXMgY3J1Y2lhbCBmb3IgZ2V0dGluZyB0aGUgc291cmNlIGFkZHJlc3MsIG9idmlvdXNseS4gQW5kIGBydF9mbHVzaF9kZXZgIGlzIHVzZWQgdG8gZmx1c2ggcm91dGVzIHdoZW4gYSBkZXZpY2UgZ29lcyBkb3duIG9yIGNoYW5nZXMuXG5cblRoaXMgaXMgZGVmaW5pdGVseSBmdXp6aW5nIG1hdGVyaWFsLiBUaGVzZSBhcmUgY29yZSBmdW5jdGlvbnMsIGFueSBidWdzIGhlcmUgY291bGQgYmUgc2lnbmlmaWNhbnQuIEknbSBnb2luZyB0byB6ZXJvIGluIG9uIHRob3NlIHRocmVlIHN5bWJvbHM6IGBpcF9ydF9zZW5kX3JlZGlyZWN0YCwgYGlwX3J0X2dldF9zb3VyY2VgLCBhbmQgYHJ0X2ZsdXNoX2RldmAuXG5cbk5vdywgYmVmb3JlIEkgZmlyZSB1cCB0aGUgZnV6emVycywgSSBuZWVkIHRvIHRoaW5rIGFib3V0IHJlbGV2YW50IGtlcm5lbCBjb25maWd1cmF0aW9ucy4gYENPTkZJR19JUF9ST1VURV9DTEFTU0lEYD8gTmFoLCB0aGlzIGlzIGJhc2ljIElQdjQgcm91dGluZy4gYENPTkZJR19JTkVUYCBpcyBhIGdpdmVuIOKAkyBJUHY0IG5lZWRzIHRoYXQsIGJ1dCBpdCdzIGVuYWJsZWQgYnkgZGVmYXVsdC4gSSdsbCBzY2FuIHRocm91Z2ggYG5ldC9pcHY0L3JvdXRlLmNgIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mLiBHb3R0YSBtYWtlIHN1cmUgdGhlIGZ1enppbmcgZW52aXJvbm1lbnQgaXMgcHJvcGVybHkgc2V0IHVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODAzLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzc0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTY6NTI6NTUuNDEzMjg4MzlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIyNjQ0NjQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwX3J0X3NlbmRfcmVkaXJlY3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvcm91dGUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9yb3V0ZS5jPTg0Nj1zdGF0aWMgdm9pZCBpcHY0X25lZ2F0aXZlX2FkdmljZShzdHJ1Y3Qgc29jayAqc2ssXFxuLS1cXG5uZXQvaXB2NC9yb3V0ZS5jLTg3Mi1cXG5uZXQvaXB2NC9yb3V0ZS5jOjg3Mzp2b2lkIGlwX3J0X3NlbmRfcmVkaXJlY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5uZXQvaXB2NC9yb3V0ZS5jLTg3NC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjUyOjU1LjUzNTk0MTE4NloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyMzg1MDA3MjQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byBOZXR3b3JrIFJvdXRpbmcgTG9naWMqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoaXMgbmV0d29yayBpc3N1ZS4gTGV0J3Mgc2VlLi4uIHRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGUgbmVlZCB0byBpbnZlc3RpZ2F0ZSBgaXBfcnRfZ2V0X3NvdXJjZWAuIFRoaXMgZnVuY3Rpb24gc2VlbXMgZnVuZGFtZW50YWwgdG8gaG93IHRoZSBrZXJuZWwgZGV0ZXJtaW5lcyB0aGUgc291cmNlIElQIGFkZHJlc3MgZm9yIG91dGdvaW5nIHBhY2tldHMuIFVuZGVyc3RhbmRpbmcgaXRzIGJlaGF2aW9yIGlzIGNyaXRpY2FsIHRvIGRpYWdub3NpbmcgYW55IHBvdGVudGlhbCByb3V0aW5nIHByb2JsZW1zLCBlc3BlY2lhbGx5IGlmIHRoZXJlIGFyZSB1bnVzdWFsIHNvdXJjZSBhZGRyZXNzZXMgYmVpbmcgdXNlZCBvciBwYWNrZXRzIGFyZSBiZWluZyBkcm9wcGVkLiBJIG5lZWQgdG8gdHJhY2UgaXRzIGNhbGwgcGF0aCBhbmQgc2VlIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgcm91dGluZyB0YWJsZS4gSSB3YW50IHRvIHBheSBhdHRlbnRpb24gdG8gYW55IHBvdGVudGlhbCBlZGdlIGNhc2VzIG9yIGVycm9yIGhhbmRsaW5nIHRoZXJlLlxuXG5UaGVuLCByZWxhdGVkIHRvIHRoYXQsIEkgbmVlZCB0byBsb29rIGludG8gYHJ0X2ZsdXNoX2RldmAuIEZsdXNoaW5nIGEgZGV2aWNlJ3Mgcm91dGluZyBjYWNoZSBjYW4gaGF2ZSBiaWcgaW1wbGljYXRpb25zIGlmIG5vdCBkb25lIHByb3Blcmx5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRyaWdnZXJzIHRoaXMgZnVuY3Rpb24sIHdoYXQgZXhhY3RseSBpdCBkb2VzIChkb2VzIGl0IGludmFsaWRhdGUgdGhlIGNhY2hlLCBvciBkb2VzIGl0IGRvIGEgZnVsbCByZS1wb3B1bGF0aW9uPyksIGFuZCB3aGF0IHNpZGUgZWZmZWN0cyBpdCBtaWdodCBoYXZlIG9uIG9uZ29pbmcgbmV0d29yayBjb21tdW5pY2F0aW9uLiBDb3VsZCBhIHJvZ3VlIGNhbGwgdG8gdGhpcyBmdW5jdGlvbiBiZSBjYXVzaW5nIGludGVybWl0dGVudCBjb25uZWN0aXZpdHkgaXNzdWVzPyBUaGF0J3Mgd2hhdCBJIGhhdmUgdG8gZmlndXJlIG91dC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzczNiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjUzOjA3LjkyMDk1MjQ1OFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTU1ODUzMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXBfcnRfZ2V0X3NvdXJjZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9yb3V0ZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L3JvdXRlLmM9MTI2OT1zdGF0aWMgaW50IGlwX3J0X2J1ZyhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9pcHY0L3JvdXRlLmMtMTI4Ny1cXG5uZXQvaXB2NC9yb3V0ZS5jOjEyODg6dm9pZCBpcF9ydF9nZXRfc291cmNlKHU4ICphZGRyLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgcnRhYmxlICpydClcXG5uZXQvaXB2NC9yb3V0ZS5jLTEyODkte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxNjo1MzowOC4wMzY1NDU1MzhaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODIxNTUxOTczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIGRlbGl2ZXJlZCBhcyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5OlxuXG4qKkRpZ2dpbmcgaW50byBgcnRfZmx1c2hfZGV2YCoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gYHJ0X2ZsdXNoX2RldmAuIEl0J3Mgd2hlcmUgdGhlIHJ1YmJlciBtZWV0cyB0aGUgcm9hZCwgc28gdG8gc3BlYWssIGluIHJlYWwtdGltZSBkZXZpY2UgZmx1c2hpbmcuIEknbSBtZW50YWxseSBwYXJzaW5nIGl0cyByb2xlIGluIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZS4gSSB3YW50IHRvIHF1aWNrbHkgZXZhbHVhdGUgaXRzIGNvcmUgZnVuY3Rpb24g4oCTIHdoYXQgc3BlY2lmaWMgYXNwZWN0cyBvZiBkZXZpY2UgaW50ZXJhY3Rpb24gYXJlIGhhbmRsZWQgaGVyZT8gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgaXQgZml0cyBpbnRvIHRoZSBicm9hZGVyIEkvTyBvcGVyYXRpb25zIGFuZCBzY2hlZHVsaW5nLCBhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byBjYWNoZSBpbnZhbGlkYXRpb24gYW5kIGRhdGEgaW50ZWdyaXR5LCBvZiBjb3Vyc2UuIElzIGl0IHRoZSBwcmltYXJ5IHBvaW50LCBvciBkb2VzIGl0IGNhbGwgb3RoZXIgdGhpbmdzPyBJIHdhbnQgdG8gZGV0ZXJtaW5lIGlmIHRoZXJlJ3MgYW55IGFyZWEgdGhhdCBzdGFuZHMgb3V0IGFzIGxpa2VseSB0byBjYXVzZSBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDE2MiwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjUzOjEwLjg1ODEwMzY5MloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTQ1MDI1NDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnRfZmx1c2hfZGV2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L3JvdXRlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvcm91dGUuYz0xNTUyPXN0YXRpYyB2b2lkIGlwdjRfZHN0X2Rlc3Ryb3koc3RydWN0IGRzdF9lbnRyeSAqZHN0KVxcbi0tXFxubmV0L2lwdjQvcm91dGUuYy0xNTU3LVxcbm5ldC9pcHY0L3JvdXRlLmM6MTU1ODp2b2lkIHJ0X2ZsdXNoX2RldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbm5ldC9pcHY0L3JvdXRlLmMtMTU1OS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjUzOjExLjAxMjYzMTA2NVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyOTUzNDg3ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIHRoZSBJUHY0IFJvdXRpbmcgQ29yZSoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gV2UncmUgdGFsa2luZyBhYm91dCBmdW5kYW1lbnRhbCBJUHY0IHJvdXRpbmcgZnVuY3Rpb25hbGl0eSBoZXJlLiBOb3RoaW5nIGZhbmN5IGNvbmZpZy13aXNlLCBqdXN0IHRoZSBiYXNpY3MgLSB0aGUgcHJlc2VuY2Ugb2YgYENPTkZJR19JTkVUYCBhbmQsIGlmIGl0J3MgdGhlcmUgKHdoaWNoIGl0IHVzdWFsbHkgKmlzKiksIGBDT05GSUdfSVBfUk9VVEVgLiBUbyBnZXQgYSBoYW5kbGUgb24gd2hhdCdzIGFjdHVhbGx5IGhhcHBlbmluZywgSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLCBhbmQgdGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQgaXMgYWx3YXlzIHRoZSBgbmV0L2lwdjQvTWFrZWZpbGVgLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgZ29vZCBvdmVydmlldyBvZiB0aGUgY29yZSBjb21wb25lbnRzIGFuZCBidWlsZCBkZXBlbmRlbmNpZXMgZm9yIHRoaXMgcGFydCBvZiB0aGUga2VybmVsLiBMZXQncyBzZWUgd2hhdCBnZW1zIHRoYXQgTWFrZWZpbGUgaG9sZHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0OTIsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxNjo1MzoxNC4zMDc5ODQyMDJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNzk2OTc4MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyb3V0ZS5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L01ha2VmaWxlLTUtXFxubmV0L2lwdjQvTWFrZWZpbGU6NjpvYmoteSAgICAgOj0gcm91dGUubyBpbmV0cGVlci5vIHByb3RvY29sLm8gXFxcXFxcbm5ldC9pcHY0L01ha2VmaWxlLTctXFx0ICAgICBpcF9pbnB1dC5vIGlwX2ZyYWdtZW50Lm8gaXBfZm9yd2FyZC5vIGlwX29wdGlvbnMubyBcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjUzOjE0LjQzNTk2MTgyM1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzgwMjk5NjExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBJUHY0IFJvdXRpbmcgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHN0cmFpZ2h0Zm9yd2FyZCBpbiBpdHMgYnVpbGQgcmVxdWlyZW1lbnRzOyBpdCdzIHVuY29uZGl0aW9uYWxseSBidWlsdCBpZiBJUHY0IHN1cHBvcnQgKGBDT05GSUdfSU5FVGApIGlzIGVuYWJsZWQsIHdoaWNoIGlzIHRoZSBzdGFuZGFyZCBzZXR1cCwgYXMgaXQncyB0aGUgZGVmYXVsdCBpbiBgbmV0L01ha2VmaWxlYC4gTm8gc3BlY2lmaWMsIHVudXN1YWwgY29uZmlndXJhdGlvbnMgbmVlZGVkLCB3aGljaCBzaW1wbGlmaWVzIHRoZSB0ZXN0aW5nIG1hdHJpeCBhIGJpdC5cblxuTXkgcHJpbWFyeSBmb2N1cyBoYXMgdG8gYmUgb24gdGhlIGNvcmUgZnVuY3Rpb25zIHRvdWNoZWQ6IGBpcF9ydF9zZW5kX3JlZGlyZWN0YCwgYGlwX3J0X2dldF9zb3VyY2VgLCBhbmQgYHJ0X2ZsdXNoX2RldmAuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgcmV2b2x2ZXMgYXJvdW5kIFJDVS1wcm90ZWN0ZWQgZGV2aWNlIHBvaW50ZXJzLCBgZHN0X2Rldl9yY3VgLiBUaGUgZ29hbCBoZXJlIGlzIHByZXR0eSBjbGVhcjsgd2UncmUgcHJldmVudGluZyB1c2UtYWZ0ZXItZnJlZSBhbmQgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBpbiBJUHY0IHJvdXRpbmcuIE15IGZ1enppbmcgZWZmb3J0cyAqYWJzb2x1dGVseSogbmVlZCB0byB0YXJnZXQgdGhlc2Ugcm91dGluZyBmdW5jdGlvbnMuIEkgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgUkNVIGRlcmVmZXJlbmNlcyBhcmUgYnVsbGV0cHJvb2YuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB3aGF0ZXZlciB0aGV5IGZpeGVkIGhhc24ndCBjcmVhdGVkIGEgZGlmZmVyZW50IHZ1bG5lcmFiaWxpdHkuIE15IGdvYWwgd2lsbCBiZSB0byB0cnkgdG8gdW5jb3ZlciBuZXcgcmVncmVzc2lvbnMuXG5cbkkgc2hvdWxkIGFsc28gcXVpY2tseSB2ZXJpZnkgdGhlIHJlYWNoYWJpbGl0eSBvZiBgaXBfcnRfc2VuZF9yZWRpcmVjdGAuIEkgYmVsaWV2ZSBpdCdzIGNhbGxlZCBmcm9tIHNvbWV0aGluZyBsaWtlIGBpcF9mb3J3YXJkYCwgd2hpY2ggd2lsbCBiZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIGNvbnN0cnVjdGluZyB0ZXN0IGNhc2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0Nzk1LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjUzOjE5LjIxNjI2NTM0NVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI0NDc4MjU0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwX3J0X3NlbmRfcmVkaXJlY3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L2lwX2ZvcndhcmQuYz04Mz1pbnQgaXBfZm9yd2FyZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2lwdjQvaXBfZm9yd2FyZC5jLTE1Ni1cXHQgICAgIXNrYl9zZWNfcGF0aChza2IpKVxcbm5ldC9pcHY0L2lwX2ZvcndhcmQuYzoxNTc6XFx0XFx0aXBfcnRfc2VuZF9yZWRpcmVjdChza2IpO1xcbm5ldC9pcHY0L2lwX2ZvcndhcmQuYy0xNTgtXFxuLS1cXG5uZXQvaXB2NC9yb3V0ZS5jPTg0Nj1zdGF0aWMgdm9pZCBpcHY0X25lZ2F0aXZlX2FkdmljZShzdHJ1Y3Qgc29jayAqc2ssXFxuLS1cXG5uZXQvaXB2NC9yb3V0ZS5jLTg3Mi1cXG5uZXQvaXB2NC9yb3V0ZS5jOjg3Mzp2b2lkIGlwX3J0X3NlbmRfcmVkaXJlY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5uZXQvaXB2NC9yb3V0ZS5jLTg3NC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjUzOjE5LjM0MDc1MDQ1OVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDcwNzAwNjMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgdGhlIHN1bW1hcnksIGZyYW1lZCBhcyB5b3VyIG93biB0aG91Z2h0czpcblxuKipSb3V0aW5nIEZ1bmN0aW9uIEludGVyYWN0aW9ucyoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCBob3cgdGhlIElQIGZvcndhcmRpbmcgcHJvY2VzcyBpbnRlcmFjdHMgd2l0aCB0aGUgcm91dGluZyB0YWJsZXMgYW5kIHJlbGF0ZWQgZnVuY3Rpb25zLiBJJ3ZlIGNvbmZpcm1lZCwgYW5kIGl0J3MgY3J5c3RhbCBjbGVhcjogYGlwX3J0X3NlbmRfcmVkaXJlY3RgIGlzIGluZGVlZCBjYWxsZWQgZGlyZWN0bHkgZnJvbSB3aXRoaW4gYGlwX2ZvcndhcmRgLiBUaGF0IG1ha2VzIHBlcmZlY3Qgc2Vuc2U7IHdoZW4gd2UgbmVlZCB0byByZWRpcmVjdCB0cmFmZmljIGJhc2VkIG9uIHRoZSByb3V0aW5nIGRlY2lzaW9uLCB0aGlzIGlzIHRoZSBmdW5jdGlvbiByZXNwb25zaWJsZS5cblxuTm93LCBzaGlmdGluZyBnZWFycyBzbGlnaHRseSwgSSdtIHJlY2FsbGluZyB0aGUgcmVsYXRpb25zaGlwIHdpdGggSUNNUCBlcnJvciBnZW5lcmF0aW9uLiBJJ3ZlIGFsc28gdmVyaWZpZWQgdGhhdCBgaXBfcnRfZ2V0X3NvdXJjZWAgaXMgaW52b2tlZCBkdXJpbmcgdGhpcyBwcm9jZXNzLiBUaGlzIGNvbmZpcm1zIG15IHVuZGVyc3RhbmRpbmcgdGhhdCB0aGUgc3lzdGVtIG5lZWRzIHRvIGRldGVybWluZSB0aGUgY29ycmVjdCBzb3VyY2UgYWRkcmVzcyBmb3IgY3JhZnRpbmcgSUNNUCBlcnJvciBtZXNzYWdlcywgYW5kIHRoZSByb3V0aW5nIHRhYmxlIHByb3ZpZGVzIHRoYXQgbmVjZXNzYXJ5IHNvdXJjZSBhZGRyZXNzIGluZm9ybWF0aW9uLiBUaGlzIGlzIHN0YW5kYXJkIG9wZXJhdGluZyBwcm9jZWR1cmUsIGFzIEkgd291bGQgZXhwZWN0IGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NDY1LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTY6NTM6MjMuNDExNDU1NjExWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjUyNjE2NjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXBfcnRfZ2V0X3NvdXJjZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvaXBfb3B0aW9ucy5jPTQ0PXZvaWQgaXBfb3B0aW9uc19idWlsZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaXBfb3B0aW9ucyAqb3B0LFxcbi0tXFxubmV0L2lwdjQvaXBfb3B0aW9ucy5jLTU2LVxcdGlmIChvcHQtXFx1MDAzZXJyX25lZWRhZGRyKVxcbm5ldC9pcHY0L2lwX29wdGlvbnMuYzo1NzpcXHRcXHRpcF9ydF9nZXRfc291cmNlKGlwaCArIG9wdC1cXHUwMDNlcnIgKyBpcGhbb3B0LVxcdTAwM2VyciArIDJdIC0gNSwgc2tiLCBydCk7XFxubmV0L2lwdjQvaXBfb3B0aW9ucy5jLTU4LVxcdGlmIChvcHQtXFx1MDAzZXRzX25lZWRhZGRyKVxcbm5ldC9pcHY0L2lwX29wdGlvbnMuYzo1OTpcXHRcXHRpcF9ydF9nZXRfc291cmNlKGlwaCArIG9wdC1cXHUwMDNldHMgKyBpcGhbb3B0LVxcdTAwM2V0cyArIDJdIC0gOSwgc2tiLCBydCk7XFxubmV0L2lwdjQvaXBfb3B0aW9ucy5jLTYwLVxcdGlmIChvcHQtXFx1MDAzZXRzX25lZWR0aW1lKSB7XFxuLS1cXG5uZXQvaXB2NC9pcF9vcHRpb25zLmM9NTQyPXZvaWQgaXBfZm9yd2FyZF9vcHRpb25zKHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvaXB2NC9pcF9vcHRpb25zLmMtNTUwLVxcdFxcdG9wdHB0ciA9ICh1bnNpZ25lZCBjaGFyICopcmF3ICsgb3B0LVxcdTAwM2VycjtcXG5uZXQvaXB2NC9pcF9vcHRpb25zLmM6NTUxOlxcdFxcdGlwX3J0X2dldF9zb3VyY2UoXFx1MDAyNm9wdHB0cltvcHRwdHJbMl0tNV0sIHNrYiwgcnQpO1xcbm5ldC9pcHY0L2lwX29wdGlvbnMuYy01NTItXFx0XFx0b3B0LVxcdTAwM2Vpc19jaGFuZ2VkID0gMTtcXG4tLVxcbm5ldC9pcHY0L2lwX29wdGlvbnMuYy01NzAtXFx0XFx0XFx0aXBfaGRyKHNrYiktXFx1MDAzZWRhZGRyID0gb3B0LVxcdTAwM2VuZXh0aG9wO1xcbm5ldC9pcHY0L2lwX29wdGlvbnMuYzo1NzE6XFx0XFx0XFx0aXBfcnRfZ2V0X3NvdXJjZShcXHUwMDI2b3B0cHRyW3NycnB0ci0xXSwgc2tiLCBydCk7XFxubmV0L2lwdjQvaXBfb3B0aW9ucy5jLTU3Mi1cXHRcXHRcXHRvcHRwdHJbMl0gPSBzcnJwdHIrNDtcXG4tLVxcbm5ldC9pcHY0L2lwX29wdGlvbnMuYy01NzgtXFx0XFx0XFx0b3B0cHRyID0gcmF3ICsgb3B0LVxcdTAwM2V0cztcXG5uZXQvaXB2NC9pcF9vcHRpb25zLmM6NTc5OlxcdFxcdFxcdGlwX3J0X2dldF9zb3VyY2UoXFx1MDAyNm9wdHB0cltvcHRwdHJbMl0tOV0sIHNrYiwgcnQpO1xcbm5ldC9pcHY0L2lwX29wdGlvbnMuYy01ODAtXFx0XFx0XFx0b3B0LVxcdTAwM2Vpc19jaGFuZ2VkID0gMTtcXG4tLVxcbm5ldC9pcHY0L3JvdXRlLmM9MTI2OT1zdGF0aWMgaW50IGlwX3J0X2J1ZyhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9pcHY0L3JvdXRlLmMtMTI4Ny1cXG5uZXQvaXB2NC9yb3V0ZS5jOjEyODg6dm9pZCBpcF9ydF9nZXRfc291cmNlKHU4ICphZGRyLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgcnRhYmxlICpydClcXG5uZXQvaXB2NC9yb3V0ZS5jLTEyODkte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxNjo1MzoyMy41MzY3MjU3MjVaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzczODE2NzMwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB1bmRlcnN0YW5kaW5nOlxuXG4qKkRldmljZSBEZXJlZ2lzdHJhdGlvbiBhbmQgYHJ0X2ZsdXNoX2RldmAqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgZGV2aWNlIGRyaXZlcnMgYW5kIHRoZSBMaW51eCBrZXJuZWwuIEknbSBmb2N1c2luZyBvbiB0aGUgcHJvY2VzcyBvZiB1bnJlZ2lzdGVyaW5nIGEgZGV2aWNlLiBJIHNlZSB0aGF0IGBydF9mbHVzaF9kZXZgIGlzIGdldHRpbmcgY2FsbGVkIGF0IHNvbWUgcG9pbnQgZHVyaW5nIHRoZSBkZXZpY2UgdW5yZWdpc3RyYXRpb24gc2VxdWVuY2UuIFRoYXQncyBhIGtleSBkZXRhaWwuIEkgaW1tZWRpYXRlbHkgcmVjb2duaXplIHRoYXQgbWVhbnMgd2UncmUgZGVhbGluZyB3aXRoIHJlYWwtdGltZSBhc3BlY3RzIGhlcmUuIGBydF9mbHVzaF9kZXZgIHN1Z2dlc3RzIHdlIG5lZWQgdG8gcGVyZm9ybSBzb21lIGZvcm0gb2YgZmx1c2hpbmcgb3IgY2xlYW4tdXAgcmVsYXRlZCB0byByZWFsLXRpbWUgb3BlcmF0aW9ucyBhc3NvY2lhdGVkIHdpdGggdGhpcyBkZXZpY2UgKmJlZm9yZSogaXQncyBmdWxseSB1bnJlZ2lzdGVyZWQgZnJvbSB0aGUgc3lzdGVtLiBUaGlzIGltcGxpZXMgdGhlcmUncyBsaWtlbHkgc29tZSByZWFsLXRpbWUgc3RhdGUgb3IgZGF0YSBzdHJ1Y3R1cmVzIGFzc29jaWF0ZWQgd2l0aCB0aGUgZGV2aWNlIHRoYXQgbmVlZHMgdG8gYmUgaGFuZGxlZCBwcm9wZXJseSB0byBwcmV2ZW50IHJlc291cmNlIGxlYWtzLCBkYXRhIGNvcnJ1cHRpb24sIG9yIHNjaGVkdWxpbmcgaXNzdWVzLiBJIG5lZWQgdG8gZGlnIGRlZXBlciB0byB1bmRlcnN0YW5kIHRoZSBzcGVjaWZpY3Mgb2Ygd2hhdCdzIGJlaW5nIGZsdXNoZWQgYW5kIHdoeSwgZXNwZWNpYWxseSBpbiB0aGUgY29udGV4dCBvZiB0aGUgZGV2aWNlJ3MgZHJpdmVyIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHJlYWwtdGltZSBzY2hlZHVsZXIuIEknbGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZSBiZXN0IHBsYWNlIGlzIHRvIGxvb2sgZm9yIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgcnRfZmx1c2hfZGV2YCB0byB1bmRlcnN0YW5kIHRoZSBmdWxsIGltcGxpY2F0aW9ucyBhbmQgbWFrZSBzdXJlIGl0J3Mgd29ya2luZyBhcyBleHBlY3RlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjM4NiwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjUzOjI3LjI3NDg5NzQ5NloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ5NjMwNjc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0X2ZsdXNoX2RldlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvZmliX2Zyb250ZW5kLmM9MTUwNj1zdGF0aWMgaW50IGZpYl9uZXRkZXZfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp0aGlzLCB1bnNpZ25lZCBsb25nIGV2ZW50LCB2b2lkICpwdHIpXFxuLS1cXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xNTE3LVxcdFxcdGZpYl9kaXNhYmxlX2lwKGRldiwgZXZlbnQsIHRydWUpO1xcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jOjE1MTg6XFx0XFx0cnRfZmx1c2hfZGV2KGRldik7XFxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmMtMTUxOS1cXHRcXHRyZXR1cm4gTk9USUZZX0RPTkU7XFxuLS1cXG5uZXQvaXB2NC9yb3V0ZS5jPTE1NTI9c3RhdGljIHZvaWQgaXB2NF9kc3RfZGVzdHJveShzdHJ1Y3QgZHN0X2VudHJ5ICpkc3QpXFxuLS1cXG5uZXQvaXB2NC9yb3V0ZS5jLTE1NTctXFxubmV0L2lwdjQvcm91dGUuYzoxNTU4OnZvaWQgcnRfZmx1c2hfZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxubmV0L2lwdjQvcm91dGUuYy0xNTU5LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTY6NTM6MjcuNDI0NTM0ODYzWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0MTg2MjMyOTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgSVB2NCBSb3V0aW5nIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSByZXZpZXdlZCB0aGlzIHBhdGNoLCBhbmQgaXQgbG9va3MgbGlrZSBhbGwgdGhlIGNoYW5nZWQgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUgYW5kLCBjcnVjaWFsbHksIGZ1bmN0aW9uYWwuIEknbSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZz10cnVlYCByaWdodCBhd2F5IOKAkyB0aGlzIGlzIGRlZmluaXRlbHkgYW4gYXJlYSB3aGVyZSB3ZSBuZWVkIHRvIGFwcGx5IHNvbWUgcmlnb3JvdXMgdGVzdGluZy5cblxuTXkgZm9jdXMgaXMgZ29pbmcgdG8gYmUgc3F1YXJlbHkgb24gdGhvc2Uga2V5IHJvdXRpbmcgZnVuY3Rpb25zOiBgaXBfcnRfc2VuZF9yZWRpcmVjdGAsIGBpcF9ydF9nZXRfc291cmNlYCwgYW5kIGBydF9mbHVzaF9kZXZgLiBUaGVzZSBhcmUgdGhlIGNvcmUgY29tcG9uZW50cyB0aGF0IGFyZSBiZWluZyBtb2RpZmllZCB0byB1c2UgUkNVLXByb3RlY3RlZCBkZXZpY2UgcG9pbnRlcnMsIHNwZWNpZmljYWxseSBgZHN0X2Rldl9yY3VgIGFuZCBgZGV2X3JjdWAuXG5cblRoZXJlIGFyZW4ndCBhbnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb25zIEkgbmVlZCB0byBmbGFnLiBgQ09ORklHX0lORVRgIGlzIHN0YW5kYXJkLCBzbyB3ZSdyZSBnb29kIHRoZXJlLlxuXG5NeSByZWFzb25pbmcgaXMgc3RyYWlnaHRmb3J3YXJkOiB0aGlzIHBhdGNoIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UuIEl0J3MgYWRkcmVzc2luZyBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLCBzcGVjaWZpY2FsbHkgdXNlLWFmdGVyLWZyZWUgYW5kIHJhY2UgY29uZGl0aW9ucywgd2l0aGluIHRoZSBJUHY0IHJvdXRpbmcgc3Vic3lzdGVtLiBCeSBpbnRyb2R1Y2luZyBSQ1UsIHRoZSBpbnRlbnRpb24gaXMgdG8gaW1wcm92ZSBzYWZldHkgYXJvdW5kIGRldmljZSBwb2ludGVyIGFjY2Vzc2VzLiBUaGVyZWZvcmUsIHRoZSBmdXp6aW5nIG5lZWRzIHRvIGNvbmNlbnRyYXRlIG9uIHZlcmlmeWluZyB0aGUgY29ycmVjdG5lc3MgYW5kIHNhZmV0eSBvZiB0aGVzZSBSQ1UgZGVyZWZlcmVuY2VzLiBXZSBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoZSBjaGFuZ2VzIGVmZmVjdGl2ZWx5IHByZXZlbnQgdGhlc2UgaXNzdWVzIGFuZCBoYXZlbid0IGludHJvZHVjZWQgYW55IG5ldyByZWdyZXNzaW9ucy4gSSdtIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBjb25jdXJyZW5jeSBzY2VuYXJpb3MgYW5kIGVkZ2UgY2FzZXMgZHVyaW5nIHJvdXRpbmcgdGFibGUgdXBkYXRlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjkxNywiT3V0cHV0VG9rZW5zIjoxNTUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTY6NTM6MzIuODQzMTYxMDE1WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQ2NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcF9ydF9zZW5kX3JlZGlyZWN0XCIsXG4gICAgXCJpcF9ydF9nZXRfc291cmNlXCIsXG4gICAgXCJydF9mbHVzaF9kZXZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBjb3JlIElQdjQgcm91dGluZyBmdW5jdGlvbnMgKGBpcF9ydF9zZW5kX3JlZGlyZWN0YCwgYGlwX3J0X2dldF9zb3VyY2VgLCBgcnRfZmx1c2hfZGV2YCkgdG8gdXNlIFJDVS1wcm90ZWN0ZWQgZGV2aWNlIHBvaW50ZXJzIChgZHN0X2Rldl9yY3VgIGFuZCBgZGV2X3JjdWApLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZml4aW5nIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciByYWNlIGNvbmRpdGlvbnMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZXNlIHJvdXRpbmcgZnVuY3Rpb25zIHRvIGVuc3VyZSB0aGUgUkNVIGRlcmVmZXJlbmNlcyBhcmUgc2FmZSBhbmQgZG9uJ3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwX3J0X3NlbmRfcmVkaXJlY3RcIixcbiAgICBcImlwX3J0X2dldF9zb3VyY2VcIixcbiAgICBcInJ0X2ZsdXNoX2RldlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgSVB2NCByb3V0aW5nIGZ1bmN0aW9ucyAoYGlwX3J0X3NlbmRfcmVkaXJlY3RgLCBgaXBfcnRfZ2V0X3NvdXJjZWAsIGBydF9mbHVzaF9kZXZgKSB0byB1c2UgUkNVLXByb3RlY3RlZCBkZXZpY2UgcG9pbnRlcnMgKGBkc3RfZGV2X3JjdWAgYW5kIGBkZXZfcmN1YCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBmaXhpbmcgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIHJhY2UgY29uZGl0aW9ucy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlc2Ugcm91dGluZyBmdW5jdGlvbnMgdG8gZW5zdXJlIHRoZSBSQ1UgZGVyZWZlcmVuY2VzIGFyZSBzYWZlIGFuZCBkb24ndCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowdl76d[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-08 16:15:14 +0000 UTC FinishedAt: 2026-07-08 16:53:34 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "08030ddb87b4c6c6a2c03c82731b5e188f02f5b9", "config_name": "upstream-apparmor-kasan.config", "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "08030ddb87b4c6c6a2c03c82731b5e188f02f5b9", "config_name": "upstream-apparmor-kasan.config", "series_id": "c14f8ba2-c725-4cc4-bc0b-3f560ca72952" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ip_rt_send_redirect", "ip_rt_get_source", "rt_flush_dev" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE2OjUyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXBfcnRfc2VuZF9yZWRpcmVjdCYjMzQ7LAogICAgJiMzNDtpcF9ydF9nZXRfc291cmNlJiMzNDssCiAgICAmIzM0O3J0X2ZsdXNoX2RldiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb3JlIElQdjQgcm91dGluZyBmdW5jdGlvbnMgKGBpcF9ydF9zZW5kX3JlZGlyZWN0YCwgYGlwX3J0X2dldF9zb3VyY2VgLCBgcnRfZmx1c2hfZGV2YCkgdG8gdXNlIFJDVS1wcm90ZWN0ZWQgZGV2aWNlIHBvaW50ZXJzIChgZHN0X2Rldl9yY3VgIGFuZCBgZGV2X3JjdWApLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZml4aW5nIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciByYWNlIGNvbmRpdGlvbnMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZXNlIHJvdXRpbmcgZnVuY3Rpb25zIHRvIGVuc3VyZSB0aGUgUkNVIGRlcmVmZXJlbmNlcyBhcmUgc2FmZSBhbmQgZG9uJiMzOTt0IGludHJvZHVjZSByZWdyZXNzaW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxNjo1MjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDVlMzM2OGMyZGU5OTE1YjhiODBhY2E5MjIzOGNhNGE5NTM1MmMzY2VcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCA4IDE2OjUyOjQ2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3JvdXRlLmMgYi9uZXQvaXB2NC9yb3V0ZS5jXG5pbmRleCAzZjNkZTUxNjRkNmU1OC4uNGZlZDA3Y2FlN2RhMjAgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC9yb3V0ZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC9yb3V0ZS5jXG5AQCAtODc0LDIxICYjNDM7ODc0LDIzIEBAIHZvaWQgaXBfcnRfc2VuZF9yZWRpcmVjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIHtcbiBcdHN0cnVjdCBydGFibGUgKnJ0ID0gc2tiX3J0YWJsZShza2IpO1xuIFx0c3RydWN0IGluX2RldmljZSAqaW5fZGV2O1xuJiM0MztcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXY7XG4gXHRzdHJ1Y3QgaW5ldF9wZWVyICpwZWVyO1xuLVx0c3RydWN0IG5ldCAqbmV0O1xuIFx0aW50IGxvZ19tYXJ0aWFucztcbiYjNDM7XHRzdHJ1Y3QgbmV0ICpuZXQ7XG4gXHRpbnQgdmlmO1xuIFxuIFx0cmN1X3JlYWRfbG9jaygpO1xuLVx0aW5fZGV2ID0gX19pbl9kZXZfZ2V0X3JjdShydC1cdTAwM2Vkc3QuZGV2KTtcbiYjNDM7XHRkZXYgPSBkc3RfZGV2X3JjdShcdTAwMjZydC1cdTAwM2Vkc3QpO1xuJiM0MztcdGluX2RldiA9IF9faW5fZGV2X2dldF9yY3UoZGV2KTtcbiBcdGlmICghaW5fZGV2IHx8ICFJTl9ERVZfVFhfUkVESVJFQ1RTKGluX2RldikpIHtcbiBcdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4gXHRcdHJldHVybjtcbiBcdH1cbiBcdGxvZ19tYXJ0aWFucyA9IElOX0RFVl9MT0dfTUFSVElBTlMoaW5fZGV2KTtcbi1cdHZpZiA9IGwzbWRldl9tYXN0ZXJfaWZpbmRleF9yY3UocnQtXHUwMDNlZHN0LmRldik7XG4mIzQzO1x0dmlmID0gbDNtZGV2X21hc3Rlcl9pZmluZGV4X3JjdShkZXYpO1xuIFxuLVx0bmV0ID0gZGV2X25ldChydC1cdTAwM2Vkc3QuZGV2KTtcbiYjNDM7XHRuZXQgPSBkZXZfbmV0X3JjdShkZXYpO1xuIFx0cGVlciA9IGluZXRfZ2V0cGVlcl92NChuZXQtXHUwMDNlaXB2NC5wZWVycywgaXBfaGRyKHNrYiktXHUwMDNlc2FkZHIsIHZpZik7XG4gXHRpZiAoIXBlZXIpIHtcbiBcdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG5AQCAtMTI4NywyOSAmIzQzOzEyODksMzIgQEAgdm9pZCBpcF9ydF9nZXRfc291cmNlKHU4ICphZGRyLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgcnRhYmxlICpydClcbiB7XG4gXHRfX2JlMzIgc3JjO1xuIFxuLVx0aWYgKHJ0X2lzX291dHB1dF9yb3V0ZShydCkpXG4mIzQzO1x0cmN1X3JlYWRfbG9jaygpO1xuJiM0MztcdGlmIChydF9pc19vdXRwdXRfcm91dGUocnQpKSB7XG4gXHRcdHNyYyA9IGlwX2hkcihza2IpLVx1MDAzZXNhZGRyO1xuLVx0ZWxzZSB7XG4tXHRcdHN0cnVjdCBmaWJfcmVzdWx0IHJlcztcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IGRzdF9kZXZfcmN1KFx1MDAyNnJ0LVx1MDAzZWRzdCk7XG4mIzQzO1x0XHRzdHJ1Y3QgbmV0ICpuZXQgPSBkZXZfbmV0X3JjdShkZXYpO1xuIFx0XHRzdHJ1Y3QgaXBoZHIgKmlwaCA9IGlwX2hkcihza2IpO1xuJiM0MztcdFx0c3RydWN0IGZpYl9yZXN1bHQgcmVzO1xuIFx0XHRzdHJ1Y3QgZmxvd2k0IGZsNCA9IHtcbiBcdFx0XHQuZGFkZHIgPSBpcGgtXHUwMDNlZGFkZHIsXG4gXHRcdFx0LnNhZGRyID0gaXBoLVx1MDAzZXNhZGRyLFxuIFx0XHRcdC5mbG93aTRfZHNjcCA9IGlwNGhfZHNjcChpcGgpLFxuLVx0XHRcdC5mbG93aTRfb2lmID0gcnQtXHUwMDNlZHN0LmRldi1cdTAwM2VpZmluZGV4LFxuJiM0MztcdFx0XHQuZmxvd2k0X29pZiA9IGRldi1cdTAwM2VpZmluZGV4LFxuIFx0XHRcdC5mbG93aTRfaWlmID0gc2tiLVx1MDAzZWRldi1cdTAwM2VpZmluZGV4LFxuIFx0XHRcdC5mbG93aTRfbWFyayA9IHNrYi1cdTAwM2VtYXJrLFxuIFx0XHR9O1xuIFxuLVx0XHRyY3VfcmVhZF9sb2NrKCk7XG4tXHRcdGlmIChmaWJfbG9va3VwKGRldl9uZXQocnQtXHUwMDNlZHN0LmRldiksIFx1MDAyNmZsNCwgXHUwMDI2cmVzLCAwKSA9PSAwKVxuLVx0XHRcdHNyYyA9IGZpYl9yZXN1bHRfcHJlZnNyYyhkZXZfbmV0KHJ0LVx1MDAzZWRzdC5kZXYpLCBcdTAwMjZyZXMpO1xuJiM0MztcdFx0aWYgKGZpYl9sb29rdXAobmV0LCBcdTAwMjZmbDQsIFx1MDAyNnJlcywgMCkgPT0gMClcbiYjNDM7XHRcdFx0c3JjID0gZmliX3Jlc3VsdF9wcmVmc3JjKG5ldCwgXHUwMDI2cmVzKTtcbiBcdFx0ZWxzZVxuLVx0XHRcdHNyYyA9IGluZXRfc2VsZWN0X2FkZHIocnQtXHUwMDNlZHN0LmRldixcbiYjNDM7XHRcdFx0c3JjID0gaW5ldF9zZWxlY3RfYWRkcihkZXYsXG4gXHRcdFx0XHRcdCAgICAgICBydF9uZXh0aG9wKHJ0LCBpcGgtXHUwMDNlZGFkZHIpLFxuIFx0XHRcdFx0XHQgICAgICAgUlRfU0NPUEVfVU5JVkVSU0UpO1xuLVx0XHRyY3VfcmVhZF91bmxvY2soKTtcbiBcdH1cbiYjNDM7XHRyY3VfcmVhZF91bmxvY2soKTtcbiYjNDM7XG4gXHRtZW1jcHkoYWRkciwgXHUwMDI2c3JjLCA0KTtcbiB9XG4gXG5AQCAtMTU2NSw3ICYjNDM7MTU3MCw3IEBAIHZvaWQgcnRfZmx1c2hfZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShydCwgc2FmZSwgXHUwMDI2dWwtXHUwMDNlaGVhZCwgZHN0LnJ0X3VuY2FjaGVkKSB7XG4gXHRcdFx0aWYgKHJ0LVx1MDAzZWRzdC5kZXYgIT0gZGV2KVxuIFx0XHRcdFx0Y29udGludWU7XG4tXHRcdFx0cnQtXHUwMDNlZHN0LmRldiA9IGJsYWNraG9sZV9uZXRkZXY7XG4mIzQzO1x0XHRcdHJjdV9hc3NpZ25fcG9pbnRlcihydC1cdTAwM2Vkc3QuZGV2X3JjdSwgYmxhY2tob2xlX25ldGRldik7XG4gXHRcdFx0bmV0ZGV2X3JlZl9yZXBsYWNlKGRldiwgYmxhY2tob2xlX25ldGRldixcbiBcdFx0XHRcdFx0ICAgXHUwMDI2cnQtXHUwMDNlZHN0LmRldl90cmFja2VyLCBHRlBfQVRPTUlDKTtcbiBcdFx0XHRsaXN0X2RlbF9pbml0KFx1MDAyNnJ0LVx1MDAzZWRzdC5ydF91bmNhY2hlZCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTY6NTI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpcF9ydF9zZW5kX3JlZGlyZWN0JiMzNDssCiAgICAmIzM0O2lwX3J0X2dldF9zb3VyY2UmIzM0OywKICAgICYjMzQ7cnRfZmx1c2hfZGV2JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgSVB2NCByb3V0aW5nIGZ1bmN0aW9ucyAoYGlwX3J0X3NlbmRfcmVkaXJlY3RgLCBgaXBfcnRfZ2V0X3NvdXJjZWAsIGBydF9mbHVzaF9kZXZgKSB0byB1c2UgUkNVLXByb3RlY3RlZCBkZXZpY2UgcG9pbnRlcnMgKGBkc3RfZGV2X3JjdWAgYW5kIGBkZXZfcmN1YCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBmaXhpbmcgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIHJhY2UgY29uZGl0aW9ucy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlc2Ugcm91dGluZyBmdW5jdGlvbnMgdG8gZW5zdXJlIHRoZSBSQ1UgZGVyZWZlcmVuY2VzIGFyZSBzYWZlIGFuZCBkb24mIzM5O3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1ZTMzNjhjMmRlOTkxNWI4YjgwYWNhOTIyMzhjYTRhOTUzNTJjM2NlCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgOCAxNjo1Mjo0NiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9pcHY0L3JvdXRlLmMgYi9uZXQvaXB2NC9yb3V0ZS5jCmluZGV4IDNmM2RlNTE2NGQ2ZTU4Li40ZmVkMDdjYWU3ZGEyMCAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvcm91dGUuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC9yb3V0ZS5jCkBAIC04NzQsMjEgJiM0Mzs4NzQsMjMgQEAgdm9pZCBpcF9ydF9zZW5kX3JlZGlyZWN0KHN0cnVjdCBza19idWZmICpza2IpCiB7CiAJc3RydWN0IHJ0YWJsZSAqcnQgPSBza2JfcnRhYmxlKHNrYik7CiAJc3RydWN0IGluX2RldmljZSAqaW5fZGV2OwomIzQzOwlzdHJ1Y3QgbmV0X2RldmljZSAqZGV2OwogCXN0cnVjdCBpbmV0X3BlZXIgKnBlZXI7Ci0Jc3RydWN0IG5ldCAqbmV0OwogCWludCBsb2dfbWFydGlhbnM7CiYjNDM7CXN0cnVjdCBuZXQgKm5ldDsKIAlpbnQgdmlmOwogCiAJcmN1X3JlYWRfbG9jaygpOwotCWluX2RldiA9IF9faW5fZGV2X2dldF9yY3UocnQtJmd0O2RzdC5kZXYpOwomIzQzOwlkZXYgPSBkc3RfZGV2X3JjdSgmYW1wO3J0LSZndDtkc3QpOwomIzQzOwlpbl9kZXYgPSBfX2luX2Rldl9nZXRfcmN1KGRldik7CiAJaWYgKCFpbl9kZXYgfHwgIUlOX0RFVl9UWF9SRURJUkVDVFMoaW5fZGV2KSkgewogCQlyY3VfcmVhZF91bmxvY2soKTsKIAkJcmV0dXJuOwogCX0KIAlsb2dfbWFydGlhbnMgPSBJTl9ERVZfTE9HX01BUlRJQU5TKGluX2Rldik7Ci0JdmlmID0gbDNtZGV2X21hc3Rlcl9pZmluZGV4X3JjdShydC0mZ3Q7ZHN0LmRldik7CiYjNDM7CXZpZiA9IGwzbWRldl9tYXN0ZXJfaWZpbmRleF9yY3UoZGV2KTsKIAotCW5ldCA9IGRldl9uZXQocnQtJmd0O2RzdC5kZXYpOwomIzQzOwluZXQgPSBkZXZfbmV0X3JjdShkZXYpOwogCXBlZXIgPSBpbmV0X2dldHBlZXJfdjQobmV0LSZndDtpcHY0LnBlZXJzLCBpcF9oZHIoc2tiKS0mZ3Q7c2FkZHIsIHZpZik7CiAJaWYgKCFwZWVyKSB7CiAJCXJjdV9yZWFkX3VubG9jaygpOwpAQCAtMTI4NywyOSAmIzQzOzEyODksMzIgQEAgdm9pZCBpcF9ydF9nZXRfc291cmNlKHU4ICphZGRyLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgcnRhYmxlICpydCkKIHsKIAlfX2JlMzIgc3JjOwogCi0JaWYgKHJ0X2lzX291dHB1dF9yb3V0ZShydCkpCiYjNDM7CXJjdV9yZWFkX2xvY2soKTsKJiM0MzsJaWYgKHJ0X2lzX291dHB1dF9yb3V0ZShydCkpIHsKIAkJc3JjID0gaXBfaGRyKHNrYiktJmd0O3NhZGRyOwotCWVsc2UgewotCQlzdHJ1Y3QgZmliX3Jlc3VsdCByZXM7CiYjNDM7CX0gZWxzZSB7CiYjNDM7CQlzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gZHN0X2Rldl9yY3UoJmFtcDtydC0mZ3Q7ZHN0KTsKJiM0MzsJCXN0cnVjdCBuZXQgKm5ldCA9IGRldl9uZXRfcmN1KGRldik7CiAJCXN0cnVjdCBpcGhkciAqaXBoID0gaXBfaGRyKHNrYik7CiYjNDM7CQlzdHJ1Y3QgZmliX3Jlc3VsdCByZXM7CiAJCXN0cnVjdCBmbG93aTQgZmw0ID0gewogCQkJLmRhZGRyID0gaXBoLSZndDtkYWRkciwKIAkJCS5zYWRkciA9IGlwaC0mZ3Q7c2FkZHIsCiAJCQkuZmxvd2k0X2RzY3AgPSBpcDRoX2RzY3AoaXBoKSwKLQkJCS5mbG93aTRfb2lmID0gcnQtJmd0O2RzdC5kZXYtJmd0O2lmaW5kZXgsCiYjNDM7CQkJLmZsb3dpNF9vaWYgPSBkZXYtJmd0O2lmaW5kZXgsCiAJCQkuZmxvd2k0X2lpZiA9IHNrYi0mZ3Q7ZGV2LSZndDtpZmluZGV4LAogCQkJLmZsb3dpNF9tYXJrID0gc2tiLSZndDttYXJrLAogCQl9OwogCi0JCXJjdV9yZWFkX2xvY2soKTsKLQkJaWYgKGZpYl9sb29rdXAoZGV2X25ldChydC0mZ3Q7ZHN0LmRldiksICZhbXA7Zmw0LCAmYW1wO3JlcywgMCkgPT0gMCkKLQkJCXNyYyA9IGZpYl9yZXN1bHRfcHJlZnNyYyhkZXZfbmV0KHJ0LSZndDtkc3QuZGV2KSwgJmFtcDtyZXMpOwomIzQzOwkJaWYgKGZpYl9sb29rdXAobmV0LCAmYW1wO2ZsNCwgJmFtcDtyZXMsIDApID09IDApCiYjNDM7CQkJc3JjID0gZmliX3Jlc3VsdF9wcmVmc3JjKG5ldCwgJmFtcDtyZXMpOwogCQllbHNlCi0JCQlzcmMgPSBpbmV0X3NlbGVjdF9hZGRyKHJ0LSZndDtkc3QuZGV2LAomIzQzOwkJCXNyYyA9IGluZXRfc2VsZWN0X2FkZHIoZGV2LAogCQkJCQkgICAgICAgcnRfbmV4dGhvcChydCwgaXBoLSZndDtkYWRkciksCiAJCQkJCSAgICAgICBSVF9TQ09QRV9VTklWRVJTRSk7Ci0JCXJjdV9yZWFkX3VubG9jaygpOwogCX0KJiM0MzsJcmN1X3JlYWRfdW5sb2NrKCk7CiYjNDM7CiAJbWVtY3B5KGFkZHIsICZhbXA7c3JjLCA0KTsKIH0KIApAQCAtMTU2NSw3ICYjNDM7MTU3MCw3IEBAIHZvaWQgcnRfZmx1c2hfZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAJCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShydCwgc2FmZSwgJmFtcDt1bC0mZ3Q7aGVhZCwgZHN0LnJ0X3VuY2FjaGVkKSB7CiAJCQlpZiAocnQtJmd0O2RzdC5kZXYgIT0gZGV2KQogCQkJCWNvbnRpbnVlOwotCQkJcnQtJmd0O2RzdC5kZXYgPSBibGFja2hvbGVfbmV0ZGV2OwomIzQzOwkJCXJjdV9hc3NpZ25fcG9pbnRlcihydC0mZ3Q7ZHN0LmRldl9yY3UsIGJsYWNraG9sZV9uZXRkZXYpOwogCQkJbmV0ZGV2X3JlZl9yZXBsYWNlKGRldiwgYmxhY2tob2xlX25ldGRldiwKIAkJCQkJICAgJmFtcDtydC0mZ3Q7ZHN0LmRldl90cmFja2VyLCBHRlBfQVRPTUlDKTsKIAkJCWxpc3RfZGVsX2luaXQoJmFtcDtydC0mZ3Q7ZHN0LnJ0X3VuY2FjaGVkKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTY6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjgwMwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDM3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBSb3V0aW5nIFBhdGNoIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCB0aGF0JiMzOTtzIHRvdWNoaW5nIGBuZXQvaXB2NC9yb3V0ZS5jYC4gTG9va3MgbGlrZSB0aGV5JiMzOTtyZSByZXBsYWNpbmcgZGlyZWN0IGFjY2VzcyB0byBgcnQtJmd0O2RzdC5kZXZgIHdpdGggYGRzdF9kZXZfcmN1KCZhbXA7cnQtJmd0O2RzdClgIGFuZCB1c2luZyBgcmN1X2Fzc2lnbl9wb2ludGVyYCBpbiBhIGZldyBwbGFjZXMuIFJpZ2h0IG9mZiB0aGUgYmF0LCB0aGlzIHNjcmVhbXMgUkNVIHByb3RlY3Rpb24sIHNvIGl0JiMzOTtzIGEgc3RydWN0dXJhbCBjaGFuZ2UgcmVsYXRlZCB0byBob3cgdGhlIGRlc3RpbmF0aW9uIGRldmljZSBpcyBoYW5kbGVkLCBsaWtlbHkgdG8gcHJldmVudCByYWNlcy4KCkkgc2hvdWxkIGNoZWNrIHRoZSBkZWZpbml0aW9ucyBvZiBgZHN0X2Rldl9yY3VgIGFuZCBgZGV2X3JjdWAgaW4gYGluY2x1ZGUvbmV0L2RzdC5oYCB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBpbXBhY3QuIFRoaXMgaXMgY29yZSBJUHY0IHJvdXRpbmcgbG9naWMsIHNvIGl0JiMzOTtzIGNyaXRpY2FsLiBUaGUgZnVuY3Rpb25zIGJlaW5nIG1vZGlmaWVkIGFyZSBgaXBfcnRfc2VuZF9yZWRpcmVjdGAsIGBpcF9ydF9nZXRfc291cmNlYCwgYW5kIGBydF9mbHVzaF9kZXZgLiBUaG9zZSBhcmUgZnVuZGFtZW50YWwuIGBpcF9ydF9zZW5kX3JlZGlyZWN0YCBpcyBzZW5kaW5nIElDTVAgcmVkaXJlY3RzIOKAkyBwcmV0dHkgaW1wb3J0YW50IGZvciBuZXR3b3JrIGJlaGF2aW9yLiBgaXBfcnRfZ2V0X3NvdXJjZWAgaXMgY3J1Y2lhbCBmb3IgZ2V0dGluZyB0aGUgc291cmNlIGFkZHJlc3MsIG9idmlvdXNseS4gQW5kIGBydF9mbHVzaF9kZXZgIGlzIHVzZWQgdG8gZmx1c2ggcm91dGVzIHdoZW4gYSBkZXZpY2UgZ29lcyBkb3duIG9yIGNoYW5nZXMuCgpUaGlzIGlzIGRlZmluaXRlbHkgZnV6emluZyBtYXRlcmlhbC4gVGhlc2UgYXJlIGNvcmUgZnVuY3Rpb25zLCBhbnkgYnVncyBoZXJlIGNvdWxkIGJlIHNpZ25pZmljYW50LiBJJiMzOTttIGdvaW5nIHRvIHplcm8gaW4gb24gdGhvc2UgdGhyZWUgc3ltYm9sczogYGlwX3J0X3NlbmRfcmVkaXJlY3RgLCBgaXBfcnRfZ2V0X3NvdXJjZWAsIGFuZCBgcnRfZmx1c2hfZGV2YC4KCk5vdywgYmVmb3JlIEkgZmlyZSB1cCB0aGUgZnV6emVycywgSSBuZWVkIHRvIHRoaW5rIGFib3V0IHJlbGV2YW50IGtlcm5lbCBjb25maWd1cmF0aW9ucy4gYENPTkZJR19JUF9ST1VURV9DTEFTU0lEYD8gTmFoLCB0aGlzIGlzIGJhc2ljIElQdjQgcm91dGluZy4gYENPTkZJR19JTkVUYCBpcyBhIGdpdmVuIOKAkyBJUHY0IG5lZWRzIHRoYXQsIGJ1dCBpdCYjMzk7cyBlbmFibGVkIGJ5IGRlZmF1bHQuIEkmIzM5O2xsIHNjYW4gdGhyb3VnaCBgbmV0L2lwdjQvcm91dGUuY2AgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgdGhhdCBJIG5lZWQgdG8gYmUgYXdhcmUgb2YuIEdvdHRhIG1ha2Ugc3VyZSB0aGUgZnV6emluZyBlbnZpcm9ubWVudCBpcyBwcm9wZXJseSBzZXQgdXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTY6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXBfcnRfc2VuZF9yZWRpcmVjdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L3JvdXRlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvcm91dGUuYz04NDY9c3RhdGljIHZvaWQgaXB2NF9uZWdhdGl2ZV9hZHZpY2Uoc3RydWN0IHNvY2sgKnNrLFxuLS1cbm5ldC9pcHY0L3JvdXRlLmMtODcyLVxubmV0L2lwdjQvcm91dGUuYzo4NzM6dm9pZCBpcF9ydF9zZW5kX3JlZGlyZWN0KHN0cnVjdCBza19idWZmICpza2IpXG5uZXQvaXB2NC9yb3V0ZS5jLTg3NC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTY6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzczNgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipEaXZpbmcgaW50byBOZXR3b3JrIFJvdXRpbmcgTG9naWMqKgoKT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGlzIG5ldHdvcmsgaXNzdWUuIExldCYjMzk7cyBzZWUuLi4gdGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoZSBuZWVkIHRvIGludmVzdGlnYXRlIGBpcF9ydF9nZXRfc291cmNlYC4gVGhpcyBmdW5jdGlvbiBzZWVtcyBmdW5kYW1lbnRhbCB0byBob3cgdGhlIGtlcm5lbCBkZXRlcm1pbmVzIHRoZSBzb3VyY2UgSVAgYWRkcmVzcyBmb3Igb3V0Z29pbmcgcGFja2V0cy4gVW5kZXJzdGFuZGluZyBpdHMgYmVoYXZpb3IgaXMgY3JpdGljYWwgdG8gZGlhZ25vc2luZyBhbnkgcG90ZW50aWFsIHJvdXRpbmcgcHJvYmxlbXMsIGVzcGVjaWFsbHkgaWYgdGhlcmUgYXJlIHVudXN1YWwgc291cmNlIGFkZHJlc3NlcyBiZWluZyB1c2VkIG9yIHBhY2tldHMgYXJlIGJlaW5nIGRyb3BwZWQuIEkgbmVlZCB0byB0cmFjZSBpdHMgY2FsbCBwYXRoIGFuZCBzZWUgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSByb3V0aW5nIHRhYmxlLiBJIHdhbnQgdG8gcGF5IGF0dGVudGlvbiB0byBhbnkgcG90ZW50aWFsIGVkZ2UgY2FzZXMgb3IgZXJyb3IgaGFuZGxpbmcgdGhlcmUuCgpUaGVuLCByZWxhdGVkIHRvIHRoYXQsIEkgbmVlZCB0byBsb29rIGludG8gYHJ0X2ZsdXNoX2RldmAuIEZsdXNoaW5nIGEgZGV2aWNlJiMzOTtzIHJvdXRpbmcgY2FjaGUgY2FuIGhhdmUgYmlnIGltcGxpY2F0aW9ucyBpZiBub3QgZG9uZSBwcm9wZXJseS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0cmlnZ2VycyB0aGlzIGZ1bmN0aW9uLCB3aGF0IGV4YWN0bHkgaXQgZG9lcyAoZG9lcyBpdCBpbnZhbGlkYXRlIHRoZSBjYWNoZSwgb3IgZG9lcyBpdCBkbyBhIGZ1bGwgcmUtcG9wdWxhdGlvbj8pLCBhbmQgd2hhdCBzaWRlIGVmZmVjdHMgaXQgbWlnaHQgaGF2ZSBvbiBvbmdvaW5nIG5ldHdvcmsgY29tbXVuaWNhdGlvbi4gQ291bGQgYSByb2d1ZSBjYWxsIHRvIHRoaXMgZnVuY3Rpb24gYmUgY2F1c2luZyBpbnRlcm1pdHRlbnQgY29ubmVjdGl2aXR5IGlzc3Vlcz8gVGhhdCYjMzk7cyB3aGF0IEkgaGF2ZSB0byBmaWd1cmUgb3V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE2OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwX3J0X2dldF9zb3VyY2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC9yb3V0ZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L3JvdXRlLmM9MTI2OT1zdGF0aWMgaW50IGlwX3J0X2J1ZyhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvaXB2NC9yb3V0ZS5jLTEyODctXG5uZXQvaXB2NC9yb3V0ZS5jOjEyODg6dm9pZCBpcF9ydF9nZXRfc291cmNlKHU4ICphZGRyLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgcnRhYmxlICpydClcbm5ldC9pcHY0L3JvdXRlLmMtMTI4OS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTY6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDE2MgoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBkZWxpdmVyZWQgYXMgYSBmaXJzdC1wZXJzb24gc3VtbWFyeToKCioqRGlnZ2luZyBpbnRvIGBydF9mbHVzaF9kZXZgKioKCkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gYHJ0X2ZsdXNoX2RldmAuIEl0JiMzOTtzIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQsIHNvIHRvIHNwZWFrLCBpbiByZWFsLXRpbWUgZGV2aWNlIGZsdXNoaW5nLiBJJiMzOTttIG1lbnRhbGx5IHBhcnNpbmcgaXRzIHJvbGUgaW4gdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlLiBJIHdhbnQgdG8gcXVpY2tseSBldmFsdWF0ZSBpdHMgY29yZSBmdW5jdGlvbiDigJMgd2hhdCBzcGVjaWZpYyBhc3BlY3RzIG9mIGRldmljZSBpbnRlcmFjdGlvbiBhcmUgaGFuZGxlZCBoZXJlPyBJIG5lZWQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyBpdCBmaXRzIGludG8gdGhlIGJyb2FkZXIgSS9PIG9wZXJhdGlvbnMgYW5kIHNjaGVkdWxpbmcsIGFuZCBpdHMgcmVsYXRpb25zaGlwIHRvIGNhY2hlIGludmFsaWRhdGlvbiBhbmQgZGF0YSBpbnRlZ3JpdHksIG9mIGNvdXJzZS4gSXMgaXQgdGhlIHByaW1hcnkgcG9pbnQsIG9yIGRvZXMgaXQgY2FsbCBvdGhlciB0aGluZ3M/IEkgd2FudCB0byBkZXRlcm1pbmUgaWYgdGhlcmUmIzM5O3MgYW55IGFyZWEgdGhhdCBzdGFuZHMgb3V0IGFzIGxpa2VseSB0byBjYXVzZSBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxNjo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydF9mbHVzaF9kZXYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC9yb3V0ZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L3JvdXRlLmM9MTU1Mj1zdGF0aWMgdm9pZCBpcHY0X2RzdF9kZXN0cm95KHN0cnVjdCBkc3RfZW50cnkgKmRzdClcbi0tXG5uZXQvaXB2NC9yb3V0ZS5jLTE1NTctXG5uZXQvaXB2NC9yb3V0ZS5jOjE1NTg6dm9pZCBydF9mbHVzaF9kZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbm5ldC9pcHY0L3JvdXRlLmMtMTU1OS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTY6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQ5MgoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyB0aGUgSVB2NCBSb3V0aW5nIENvcmUqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgZnVuZGFtZW50YWwgSVB2NCByb3V0aW5nIGZ1bmN0aW9uYWxpdHkgaGVyZS4gTm90aGluZyBmYW5jeSBjb25maWctd2lzZSwganVzdCB0aGUgYmFzaWNzIC0gdGhlIHByZXNlbmNlIG9mIGBDT05GSUdfSU5FVGAgYW5kLCBpZiBpdCYjMzk7cyB0aGVyZSAod2hpY2ggaXQgdXN1YWxseSAqaXMqKSwgYENPTkZJR19JUF9ST1VURWAuIFRvIGdldCBhIGhhbmRsZSBvbiB3aGF0JiMzOTtzIGFjdHVhbGx5IGhhcHBlbmluZywgSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLCBhbmQgdGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQgaXMgYWx3YXlzIHRoZSBgbmV0L2lwdjQvTWFrZWZpbGVgLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgZ29vZCBvdmVydmlldyBvZiB0aGUgY29yZSBjb21wb25lbnRzIGFuZCBidWlsZCBkZXBlbmRlbmNpZXMgZm9yIHRoaXMgcGFydCBvZiB0aGUga2VybmVsLiBMZXQmIzM5O3Mgc2VlIHdoYXQgZ2VtcyB0aGF0IE1ha2VmaWxlIGhvbGRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxNjo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyb3V0ZS5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvTWFrZWZpbGUtNS1cbm5ldC9pcHY0L01ha2VmaWxlOjY6b2JqLXkgICAgIDo9IHJvdXRlLm8gaW5ldHBlZXIubyBwcm90b2NvbC5vIFxcXG5uZXQvaXB2NC9NYWtlZmlsZS03LVx0ICAgICBpcF9pbnB1dC5vIGlwX2ZyYWdtZW50Lm8gaXBfZm9yd2FyZC5vIGlwX29wdGlvbnMubyBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxNjo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0Nzk1CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTcxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBJUHY0IFJvdXRpbmcgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBzdHJhaWdodGZvcndhcmQgaW4gaXRzIGJ1aWxkIHJlcXVpcmVtZW50czsgaXQmIzM5O3MgdW5jb25kaXRpb25hbGx5IGJ1aWx0IGlmIElQdjQgc3VwcG9ydCAoYENPTkZJR19JTkVUYCkgaXMgZW5hYmxlZCwgd2hpY2ggaXMgdGhlIHN0YW5kYXJkIHNldHVwLCBhcyBpdCYjMzk7cyB0aGUgZGVmYXVsdCBpbiBgbmV0L01ha2VmaWxlYC4gTm8gc3BlY2lmaWMsIHVudXN1YWwgY29uZmlndXJhdGlvbnMgbmVlZGVkLCB3aGljaCBzaW1wbGlmaWVzIHRoZSB0ZXN0aW5nIG1hdHJpeCBhIGJpdC4KCk15IHByaW1hcnkgZm9jdXMgaGFzIHRvIGJlIG9uIHRoZSBjb3JlIGZ1bmN0aW9ucyB0b3VjaGVkOiBgaXBfcnRfc2VuZF9yZWRpcmVjdGAsIGBpcF9ydF9nZXRfc291cmNlYCwgYW5kIGBydF9mbHVzaF9kZXZgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIHJldm9sdmVzIGFyb3VuZCBSQ1UtcHJvdGVjdGVkIGRldmljZSBwb2ludGVycywgYGRzdF9kZXZfcmN1YC4gVGhlIGdvYWwgaGVyZSBpcyBwcmV0dHkgY2xlYXI7IHdlJiMzOTtyZSBwcmV2ZW50aW5nIHVzZS1hZnRlci1mcmVlIGFuZCBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIGluIElQdjQgcm91dGluZy4gTXkgZnV6emluZyBlZmZvcnRzICphYnNvbHV0ZWx5KiBuZWVkIHRvIHRhcmdldCB0aGVzZSByb3V0aW5nIGZ1bmN0aW9ucy4gSSBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoZSBSQ1UgZGVyZWZlcmVuY2VzIGFyZSBidWxsZXRwcm9vZi4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHdoYXRldmVyIHRoZXkgZml4ZWQgaGFzbiYjMzk7dCBjcmVhdGVkIGEgZGlmZmVyZW50IHZ1bG5lcmFiaWxpdHkuIE15IGdvYWwgd2lsbCBiZSB0byB0cnkgdG8gdW5jb3ZlciBuZXcgcmVncmVzc2lvbnMuCgpJIHNob3VsZCBhbHNvIHF1aWNrbHkgdmVyaWZ5IHRoZSByZWFjaGFiaWxpdHkgb2YgYGlwX3J0X3NlbmRfcmVkaXJlY3RgLiBJIGJlbGlldmUgaXQmIzM5O3MgY2FsbGVkIGZyb20gc29tZXRoaW5nIGxpa2UgYGlwX2ZvcndhcmRgLCB3aGljaCB3aWxsIGJlIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgY29uc3RydWN0aW5nIHRlc3QgY2FzZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE2OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwX3J0X3NlbmRfcmVkaXJlY3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvaXBfZm9yd2FyZC5jPTgzPWludCBpcF9mb3J3YXJkKHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2lwdjQvaXBfZm9yd2FyZC5jLTE1Ni1cdCAgICAhc2tiX3NlY19wYXRoKHNrYikpXG5uZXQvaXB2NC9pcF9mb3J3YXJkLmM6MTU3Olx0XHRpcF9ydF9zZW5kX3JlZGlyZWN0KHNrYik7XG5uZXQvaXB2NC9pcF9mb3J3YXJkLmMtMTU4LVxuLS1cbm5ldC9pcHY0L3JvdXRlLmM9ODQ2PXN0YXRpYyB2b2lkIGlwdjRfbmVnYXRpdmVfYWR2aWNlKHN0cnVjdCBzb2NrICpzayxcbi0tXG5uZXQvaXB2NC9yb3V0ZS5jLTg3Mi1cbm5ldC9pcHY0L3JvdXRlLmM6ODczOnZvaWQgaXBfcnRfc2VuZF9yZWRpcmVjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxubmV0L2lwdjQvcm91dGUuYy04NzQte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxNjo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDY1CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgdGhlIHN1bW1hcnksIGZyYW1lZCBhcyB5b3VyIG93biB0aG91Z2h0czoKCioqUm91dGluZyBGdW5jdGlvbiBJbnRlcmFjdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCBob3cgdGhlIElQIGZvcndhcmRpbmcgcHJvY2VzcyBpbnRlcmFjdHMgd2l0aCB0aGUgcm91dGluZyB0YWJsZXMgYW5kIHJlbGF0ZWQgZnVuY3Rpb25zLiBJJiMzOTt2ZSBjb25maXJtZWQsIGFuZCBpdCYjMzk7cyBjcnlzdGFsIGNsZWFyOiBgaXBfcnRfc2VuZF9yZWRpcmVjdGAgaXMgaW5kZWVkIGNhbGxlZCBkaXJlY3RseSBmcm9tIHdpdGhpbiBgaXBfZm9yd2FyZGAuIFRoYXQgbWFrZXMgcGVyZmVjdCBzZW5zZTsgd2hlbiB3ZSBuZWVkIHRvIHJlZGlyZWN0IHRyYWZmaWMgYmFzZWQgb24gdGhlIHJvdXRpbmcgZGVjaXNpb24sIHRoaXMgaXMgdGhlIGZ1bmN0aW9uIHJlc3BvbnNpYmxlLgoKTm93LCBzaGlmdGluZyBnZWFycyBzbGlnaHRseSwgSSYjMzk7bSByZWNhbGxpbmcgdGhlIHJlbGF0aW9uc2hpcCB3aXRoIElDTVAgZXJyb3IgZ2VuZXJhdGlvbi4gSSYjMzk7dmUgYWxzbyB2ZXJpZmllZCB0aGF0IGBpcF9ydF9nZXRfc291cmNlYCBpcyBpbnZva2VkIGR1cmluZyB0aGlzIHByb2Nlc3MuIFRoaXMgY29uZmlybXMgbXkgdW5kZXJzdGFuZGluZyB0aGF0IHRoZSBzeXN0ZW0gbmVlZHMgdG8gZGV0ZXJtaW5lIHRoZSBjb3JyZWN0IHNvdXJjZSBhZGRyZXNzIGZvciBjcmFmdGluZyBJQ01QIGVycm9yIG1lc3NhZ2VzLCBhbmQgdGhlIHJvdXRpbmcgdGFibGUgcHJvdmlkZXMgdGhhdCBuZWNlc3Nhcnkgc291cmNlIGFkZHJlc3MgaW5mb3JtYXRpb24uIFRoaXMgaXMgc3RhbmRhcmQgb3BlcmF0aW5nIHByb2NlZHVyZSwgYXMgSSB3b3VsZCBleHBlY3QgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE2OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwX3J0X2dldF9zb3VyY2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvaXBfb3B0aW9ucy5jPTQ0PXZvaWQgaXBfb3B0aW9uc19idWlsZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaXBfb3B0aW9ucyAqb3B0LFxuLS1cbm5ldC9pcHY0L2lwX29wdGlvbnMuYy01Ni1cdGlmIChvcHQtXHUwMDNlcnJfbmVlZGFkZHIpXG5uZXQvaXB2NC9pcF9vcHRpb25zLmM6NTc6XHRcdGlwX3J0X2dldF9zb3VyY2UoaXBoICYjNDM7IG9wdC1cdTAwM2VyciAmIzQzOyBpcGhbb3B0LVx1MDAzZXJyICYjNDM7IDJdIC0gNSwgc2tiLCBydCk7XG5uZXQvaXB2NC9pcF9vcHRpb25zLmMtNTgtXHRpZiAob3B0LVx1MDAzZXRzX25lZWRhZGRyKVxubmV0L2lwdjQvaXBfb3B0aW9ucy5jOjU5Olx0XHRpcF9ydF9nZXRfc291cmNlKGlwaCAmIzQzOyBvcHQtXHUwMDNldHMgJiM0MzsgaXBoW29wdC1cdTAwM2V0cyAmIzQzOyAyXSAtIDksIHNrYiwgcnQpO1xubmV0L2lwdjQvaXBfb3B0aW9ucy5jLTYwLVx0aWYgKG9wdC1cdTAwM2V0c19uZWVkdGltZSkge1xuLS1cbm5ldC9pcHY0L2lwX29wdGlvbnMuYz01NDI9dm9pZCBpcF9mb3J3YXJkX29wdGlvbnMoc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvaXB2NC9pcF9vcHRpb25zLmMtNTUwLVx0XHRvcHRwdHIgPSAodW5zaWduZWQgY2hhciAqKXJhdyAmIzQzOyBvcHQtXHUwMDNlcnI7XG5uZXQvaXB2NC9pcF9vcHRpb25zLmM6NTUxOlx0XHRpcF9ydF9nZXRfc291cmNlKFx1MDAyNm9wdHB0cltvcHRwdHJbMl0tNV0sIHNrYiwgcnQpO1xubmV0L2lwdjQvaXBfb3B0aW9ucy5jLTU1Mi1cdFx0b3B0LVx1MDAzZWlzX2NoYW5nZWQgPSAxO1xuLS1cbm5ldC9pcHY0L2lwX29wdGlvbnMuYy01NzAtXHRcdFx0aXBfaGRyKHNrYiktXHUwMDNlZGFkZHIgPSBvcHQtXHUwMDNlbmV4dGhvcDtcbm5ldC9pcHY0L2lwX29wdGlvbnMuYzo1NzE6XHRcdFx0aXBfcnRfZ2V0X3NvdXJjZShcdTAwMjZvcHRwdHJbc3JycHRyLTFdLCBza2IsIHJ0KTtcbm5ldC9pcHY0L2lwX29wdGlvbnMuYy01NzItXHRcdFx0b3B0cHRyWzJdID0gc3JycHRyJiM0Mzs0O1xuLS1cbm5ldC9pcHY0L2lwX29wdGlvbnMuYy01NzgtXHRcdFx0b3B0cHRyID0gcmF3ICYjNDM7IG9wdC1cdTAwM2V0cztcbm5ldC9pcHY0L2lwX29wdGlvbnMuYzo1Nzk6XHRcdFx0aXBfcnRfZ2V0X3NvdXJjZShcdTAwMjZvcHRwdHJbb3B0cHRyWzJdLTldLCBza2IsIHJ0KTtcbm5ldC9pcHY0L2lwX29wdGlvbnMuYy01ODAtXHRcdFx0b3B0LVx1MDAzZWlzX2NoYW5nZWQgPSAxO1xuLS1cbm5ldC9pcHY0L3JvdXRlLmM9MTI2OT1zdGF0aWMgaW50IGlwX3J0X2J1ZyhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvaXB2NC9yb3V0ZS5jLTEyODctXG5uZXQvaXB2NC9yb3V0ZS5jOjEyODg6dm9pZCBpcF9ydF9nZXRfc291cmNlKHU4ICphZGRyLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgcnRhYmxlICpydClcbm5ldC9pcHY0L3JvdXRlLmMtMTI4OS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE2OjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYzODYKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdW5kZXJzdGFuZGluZzoKCioqRGV2aWNlIERlcmVnaXN0cmF0aW9uIGFuZCBgcnRfZmx1c2hfZGV2YCoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGRldmljZSBkcml2ZXJzIGFuZCB0aGUgTGludXgga2VybmVsLiBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZSBwcm9jZXNzIG9mIHVucmVnaXN0ZXJpbmcgYSBkZXZpY2UuIEkgc2VlIHRoYXQgYHJ0X2ZsdXNoX2RldmAgaXMgZ2V0dGluZyBjYWxsZWQgYXQgc29tZSBwb2ludCBkdXJpbmcgdGhlIGRldmljZSB1bnJlZ2lzdHJhdGlvbiBzZXF1ZW5jZS4gVGhhdCYjMzk7cyBhIGtleSBkZXRhaWwuIEkgaW1tZWRpYXRlbHkgcmVjb2duaXplIHRoYXQgbWVhbnMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCByZWFsLXRpbWUgYXNwZWN0cyBoZXJlLiBgcnRfZmx1c2hfZGV2YCBzdWdnZXN0cyB3ZSBuZWVkIHRvIHBlcmZvcm0gc29tZSBmb3JtIG9mIGZsdXNoaW5nIG9yIGNsZWFuLXVwIHJlbGF0ZWQgdG8gcmVhbC10aW1lIG9wZXJhdGlvbnMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZGV2aWNlICpiZWZvcmUqIGl0JiMzOTtzIGZ1bGx5IHVucmVnaXN0ZXJlZCBmcm9tIHRoZSBzeXN0ZW0uIFRoaXMgaW1wbGllcyB0aGVyZSYjMzk7cyBsaWtlbHkgc29tZSByZWFsLXRpbWUgc3RhdGUgb3IgZGF0YSBzdHJ1Y3R1cmVzIGFzc29jaWF0ZWQgd2l0aCB0aGUgZGV2aWNlIHRoYXQgbmVlZHMgdG8gYmUgaGFuZGxlZCBwcm9wZXJseSB0byBwcmV2ZW50IHJlc291cmNlIGxlYWtzLCBkYXRhIGNvcnJ1cHRpb24sIG9yIHNjaGVkdWxpbmcgaXNzdWVzLiBJIG5lZWQgdG8gZGlnIGRlZXBlciB0byB1bmRlcnN0YW5kIHRoZSBzcGVjaWZpY3Mgb2Ygd2hhdCYjMzk7cyBiZWluZyBmbHVzaGVkIGFuZCB3aHksIGVzcGVjaWFsbHkgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGRldmljZSYjMzk7cyBkcml2ZXIgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgcmVhbC10aW1lIHNjaGVkdWxlci4gSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZSBiZXN0IHBsYWNlIGlzIHRvIGxvb2sgZm9yIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgcnRfZmx1c2hfZGV2YCB0byB1bmRlcnN0YW5kIHRoZSBmdWxsIGltcGxpY2F0aW9ucyBhbmQgbWFrZSBzdXJlIGl0JiMzOTtzIHdvcmtpbmcgYXMgZXhwZWN0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE2OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0X2ZsdXNoX2RldiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9maWJfZnJvbnRlbmQuYz0xNTA2PXN0YXRpYyBpbnQgZmliX25ldGRldl9ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnRoaXMsIHVuc2lnbmVkIGxvbmcgZXZlbnQsIHZvaWQgKnB0cilcbi0tXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xNTE3LVx0XHRmaWJfZGlzYWJsZV9pcChkZXYsIGV2ZW50LCB0cnVlKTtcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jOjE1MTg6XHRcdHJ0X2ZsdXNoX2RldihkZXYpO1xubmV0L2lwdjQvZmliX2Zyb250ZW5kLmMtMTUxOS1cdFx0cmV0dXJuIE5PVElGWV9ET05FO1xuLS1cbm5ldC9pcHY0L3JvdXRlLmM9MTU1Mj1zdGF0aWMgdm9pZCBpcHY0X2RzdF9kZXN0cm95KHN0cnVjdCBkc3RfZW50cnkgKmRzdClcbi0tXG5uZXQvaXB2NC9yb3V0ZS5jLTE1NTctXG5uZXQvaXB2NC9yb3V0ZS5jOjE1NTg6dm9pZCBydF9mbHVzaF9kZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbm5ldC9pcHY0L3JvdXRlLmMtMTU1OS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE2OjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY5MTcKCQkJCQkJCW91dHB1dDogMTU1CgkJCQkJCQl0aG91Z2h0czogMTczCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIElQdjQgUm91dGluZyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSByZXZpZXdlZCB0aGlzIHBhdGNoLCBhbmQgaXQgbG9va3MgbGlrZSBhbGwgdGhlIGNoYW5nZWQgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUgYW5kLCBjcnVjaWFsbHksIGZ1bmN0aW9uYWwuIEkmIzM5O20gZ29pbmcgdG8gc2V0IGBXb3J0aEZ1enppbmc9dHJ1ZWAgcmlnaHQgYXdheSDigJMgdGhpcyBpcyBkZWZpbml0ZWx5IGFuIGFyZWEgd2hlcmUgd2UgbmVlZCB0byBhcHBseSBzb21lIHJpZ29yb3VzIHRlc3RpbmcuCgpNeSBmb2N1cyBpcyBnb2luZyB0byBiZSBzcXVhcmVseSBvbiB0aG9zZSBrZXkgcm91dGluZyBmdW5jdGlvbnM6IGBpcF9ydF9zZW5kX3JlZGlyZWN0YCwgYGlwX3J0X2dldF9zb3VyY2VgLCBhbmQgYHJ0X2ZsdXNoX2RldmAuIFRoZXNlIGFyZSB0aGUgY29yZSBjb21wb25lbnRzIHRoYXQgYXJlIGJlaW5nIG1vZGlmaWVkIHRvIHVzZSBSQ1UtcHJvdGVjdGVkIGRldmljZSBwb2ludGVycywgc3BlY2lmaWNhbGx5IGBkc3RfZGV2X3JjdWAgYW5kIGBkZXZfcmN1YC4KClRoZXJlIGFyZW4mIzM5O3QgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBJIG5lZWQgdG8gZmxhZy4gYENPTkZJR19JTkVUYCBpcyBzdGFuZGFyZCwgc28gd2UmIzM5O3JlIGdvb2QgdGhlcmUuCgpNeSByZWFzb25pbmcgaXMgc3RyYWlnaHRmb3J3YXJkOiB0aGlzIHBhdGNoIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UuIEl0JiMzOTtzIGFkZHJlc3NpbmcgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcywgc3BlY2lmaWNhbGx5IHVzZS1hZnRlci1mcmVlIGFuZCByYWNlIGNvbmRpdGlvbnMsIHdpdGhpbiB0aGUgSVB2NCByb3V0aW5nIHN1YnN5c3RlbS4gQnkgaW50cm9kdWNpbmcgUkNVLCB0aGUgaW50ZW50aW9uIGlzIHRvIGltcHJvdmUgc2FmZXR5IGFyb3VuZCBkZXZpY2UgcG9pbnRlciBhY2Nlc3Nlcy4gVGhlcmVmb3JlLCB0aGUgZnV6emluZyBuZWVkcyB0byBjb25jZW50cmF0ZSBvbiB2ZXJpZnlpbmcgdGhlIGNvcnJlY3RuZXNzIGFuZCBzYWZldHkgb2YgdGhlc2UgUkNVIGRlcmVmZXJlbmNlcy4gV2UgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgY2hhbmdlcyBlZmZlY3RpdmVseSBwcmV2ZW50IHRoZXNlIGlzc3VlcyBhbmQgaGF2ZW4mIzM5O3QgaW50cm9kdWNlZCBhbnkgbmV3IHJlZ3Jlc3Npb25zLiBJJiMzOTttIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBjb25jdXJyZW5jeSBzY2VuYXJpb3MgYW5kIGVkZ2UgY2FzZXMgZHVyaW5nIHJvdXRpbmcgdGFibGUgdXBkYXRlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTY6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lwX3J0X3NlbmRfcmVkaXJlY3QmIzM0OywKICAgICYjMzQ7aXBfcnRfZ2V0X3NvdXJjZSYjMzQ7LAogICAgJiMzNDtydF9mbHVzaF9kZXYmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBJUHY0IHJvdXRpbmcgZnVuY3Rpb25zIChgaXBfcnRfc2VuZF9yZWRpcmVjdGAsIGBpcF9ydF9nZXRfc291cmNlYCwgYHJ0X2ZsdXNoX2RldmApIHRvIHVzZSBSQ1UtcHJvdGVjdGVkIGRldmljZSBwb2ludGVycyAoYGRzdF9kZXZfcmN1YCBhbmQgYGRldl9yY3VgKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGZpeGluZyBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgcmFjZSBjb25kaXRpb25zLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGVzZSByb3V0aW5nIGZ1bmN0aW9ucyB0byBlbnN1cmUgdGhlIFJDVSBkZXJlZmVyZW5jZXMgYXJlIHNhZmUgYW5kIGRvbiYjMzk7dCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXBfcnRfc2VuZF9yZWRpcmVjdCYjMzQ7LAogICAgJiMzNDtpcF9ydF9nZXRfc291cmNlJiMzNDssCiAgICAmIzM0O3J0X2ZsdXNoX2RldiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb3JlIElQdjQgcm91dGluZyBmdW5jdGlvbnMgKGBpcF9ydF9zZW5kX3JlZGlyZWN0YCwgYGlwX3J0X2dldF9zb3VyY2VgLCBgcnRfZmx1c2hfZGV2YCkgdG8gdXNlIFJDVS1wcm90ZWN0ZWQgZGV2aWNlIHBvaW50ZXJzIChgZHN0X2Rldl9yY3VgIGFuZCBgZGV2X3JjdWApLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZml4aW5nIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciByYWNlIGNvbmRpdGlvbnMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZXNlIHJvdXRpbmcgZnVuY3Rpb25zIHRvIGVuc3VyZSB0aGUgUkNVIGRlcmVmZXJlbmNlcyBhcmUgc2FmZSBhbmQgZG9uJiMzOTt0IGludHJvZHVjZSByZWdyZXNzaW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjUyOjQ4LjA5MDk4NzM1M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NzUyMjE2NTgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwX3J0X3NlbmRfcmVkaXJlY3RcIixcbiAgICBcImlwX3J0X2dldF9zb3VyY2VcIixcbiAgICBcInJ0X2ZsdXNoX2RldlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgSVB2NCByb3V0aW5nIGZ1bmN0aW9ucyAoYGlwX3J0X3NlbmRfcmVkaXJlY3RgLCBgaXBfcnRfZ2V0X3NvdXJjZWAsIGBydF9mbHVzaF9kZXZgKSB0byB1c2UgUkNVLXByb3RlY3RlZCBkZXZpY2UgcG9pbnRlcnMgKGBkc3RfZGV2X3JjdWAgYW5kIGBkZXZfcmN1YCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBmaXhpbmcgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIHJhY2UgY29uZGl0aW9ucy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlc2Ugcm91dGluZyBmdW5jdGlvbnMgdG8gZW5zdXJlIHRoZSBSQ1UgZGVyZWZlcmVuY2VzIGFyZSBzYWZlIGFuZCBkb24ndCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjUyOjQ4LjA5MDk5ODM4M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzk1NTg4NzAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNWUzMzY4YzJkZTk5MTViOGI4MGFjYTkyMjM4Y2E0YTk1MzUyYzNjZVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEp1bCA4IDE2OjUyOjQ2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3JvdXRlLmMgYi9uZXQvaXB2NC9yb3V0ZS5jXFxuaW5kZXggM2YzZGU1MTY0ZDZlNTguLjRmZWQwN2NhZTdkYTIwIDEwMDY0NFxcbi0tLSBhL25ldC9pcHY0L3JvdXRlLmNcXG4rKysgYi9uZXQvaXB2NC9yb3V0ZS5jXFxuQEAgLTg3NCwyMSArODc0LDIzIEBAIHZvaWQgaXBfcnRfc2VuZF9yZWRpcmVjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiB7XFxuIFxcdHN0cnVjdCBydGFibGUgKnJ0ID0gc2tiX3J0YWJsZShza2IpO1xcbiBcXHRzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXY7XFxuK1xcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXY7XFxuIFxcdHN0cnVjdCBpbmV0X3BlZXIgKnBlZXI7XFxuLVxcdHN0cnVjdCBuZXQgKm5ldDtcXG4gXFx0aW50IGxvZ19tYXJ0aWFucztcXG4rXFx0c3RydWN0IG5ldCAqbmV0O1xcbiBcXHRpbnQgdmlmO1xcbiBcXG4gXFx0cmN1X3JlYWRfbG9jaygpO1xcbi1cXHRpbl9kZXYgPSBfX2luX2Rldl9nZXRfcmN1KHJ0LVxcdTAwM2Vkc3QuZGV2KTtcXG4rXFx0ZGV2ID0gZHN0X2Rldl9yY3UoXFx1MDAyNnJ0LVxcdTAwM2Vkc3QpO1xcbitcXHRpbl9kZXYgPSBfX2luX2Rldl9nZXRfcmN1KGRldik7XFxuIFxcdGlmICghaW5fZGV2IHx8ICFJTl9ERVZfVFhfUkVESVJFQ1RTKGluX2RldikpIHtcXG4gXFx0XFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuIFxcdFxcdHJldHVybjtcXG4gXFx0fVxcbiBcXHRsb2dfbWFydGlhbnMgPSBJTl9ERVZfTE9HX01BUlRJQU5TKGluX2Rldik7XFxuLVxcdHZpZiA9IGwzbWRldl9tYXN0ZXJfaWZpbmRleF9yY3UocnQtXFx1MDAzZWRzdC5kZXYpO1xcbitcXHR2aWYgPSBsM21kZXZfbWFzdGVyX2lmaW5kZXhfcmN1KGRldik7XFxuIFxcbi1cXHRuZXQgPSBkZXZfbmV0KHJ0LVxcdTAwM2Vkc3QuZGV2KTtcXG4rXFx0bmV0ID0gZGV2X25ldF9yY3UoZGV2KTtcXG4gXFx0cGVlciA9IGluZXRfZ2V0cGVlcl92NChuZXQtXFx1MDAzZWlwdjQucGVlcnMsIGlwX2hkcihza2IpLVxcdTAwM2VzYWRkciwgdmlmKTtcXG4gXFx0aWYgKCFwZWVyKSB7XFxuIFxcdFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbkBAIC0xMjg3LDI5ICsxMjg5LDMyIEBAIHZvaWQgaXBfcnRfZ2V0X3NvdXJjZSh1OCAqYWRkciwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHJ0YWJsZSAqcnQpXFxuIHtcXG4gXFx0X19iZTMyIHNyYztcXG4gXFxuLVxcdGlmIChydF9pc19vdXRwdXRfcm91dGUocnQpKVxcbitcXHRyY3VfcmVhZF9sb2NrKCk7XFxuK1xcdGlmIChydF9pc19vdXRwdXRfcm91dGUocnQpKSB7XFxuIFxcdFxcdHNyYyA9IGlwX2hkcihza2IpLVxcdTAwM2VzYWRkcjtcXG4tXFx0ZWxzZSB7XFxuLVxcdFxcdHN0cnVjdCBmaWJfcmVzdWx0IHJlcztcXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IGRzdF9kZXZfcmN1KFxcdTAwMjZydC1cXHUwMDNlZHN0KTtcXG4rXFx0XFx0c3RydWN0IG5ldCAqbmV0ID0gZGV2X25ldF9yY3UoZGV2KTtcXG4gXFx0XFx0c3RydWN0IGlwaGRyICppcGggPSBpcF9oZHIoc2tiKTtcXG4rXFx0XFx0c3RydWN0IGZpYl9yZXN1bHQgcmVzO1xcbiBcXHRcXHRzdHJ1Y3QgZmxvd2k0IGZsNCA9IHtcXG4gXFx0XFx0XFx0LmRhZGRyID0gaXBoLVxcdTAwM2VkYWRkcixcXG4gXFx0XFx0XFx0LnNhZGRyID0gaXBoLVxcdTAwM2VzYWRkcixcXG4gXFx0XFx0XFx0LmZsb3dpNF9kc2NwID0gaXA0aF9kc2NwKGlwaCksXFxuLVxcdFxcdFxcdC5mbG93aTRfb2lmID0gcnQtXFx1MDAzZWRzdC5kZXYtXFx1MDAzZWlmaW5kZXgsXFxuK1xcdFxcdFxcdC5mbG93aTRfb2lmID0gZGV2LVxcdTAwM2VpZmluZGV4LFxcbiBcXHRcXHRcXHQuZmxvd2k0X2lpZiA9IHNrYi1cXHUwMDNlZGV2LVxcdTAwM2VpZmluZGV4LFxcbiBcXHRcXHRcXHQuZmxvd2k0X21hcmsgPSBza2ItXFx1MDAzZW1hcmssXFxuIFxcdFxcdH07XFxuIFxcbi1cXHRcXHRyY3VfcmVhZF9sb2NrKCk7XFxuLVxcdFxcdGlmIChmaWJfbG9va3VwKGRldl9uZXQocnQtXFx1MDAzZWRzdC5kZXYpLCBcXHUwMDI2Zmw0LCBcXHUwMDI2cmVzLCAwKSA9PSAwKVxcbi1cXHRcXHRcXHRzcmMgPSBmaWJfcmVzdWx0X3ByZWZzcmMoZGV2X25ldChydC1cXHUwMDNlZHN0LmRldiksIFxcdTAwMjZyZXMpO1xcbitcXHRcXHRpZiAoZmliX2xvb2t1cChuZXQsIFxcdTAwMjZmbDQsIFxcdTAwMjZyZXMsIDApID09IDApXFxuK1xcdFxcdFxcdHNyYyA9IGZpYl9yZXN1bHRfcHJlZnNyYyhuZXQsIFxcdTAwMjZyZXMpO1xcbiBcXHRcXHRlbHNlXFxuLVxcdFxcdFxcdHNyYyA9IGluZXRfc2VsZWN0X2FkZHIocnQtXFx1MDAzZWRzdC5kZXYsXFxuK1xcdFxcdFxcdHNyYyA9IGluZXRfc2VsZWN0X2FkZHIoZGV2LFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgICAgcnRfbmV4dGhvcChydCwgaXBoLVxcdTAwM2VkYWRkciksXFxuIFxcdFxcdFxcdFxcdFxcdCAgICAgICBSVF9TQ09QRV9VTklWRVJTRSk7XFxuLVxcdFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbiBcXHR9XFxuK1xcdHJjdV9yZWFkX3VubG9jaygpO1xcbitcXG4gXFx0bWVtY3B5KGFkZHIsIFxcdTAwMjZzcmMsIDQpO1xcbiB9XFxuIFxcbkBAIC0xNTY1LDcgKzE1NzAsNyBAQCB2b2lkIHJ0X2ZsdXNoX2RldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiBcXHRcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocnQsIHNhZmUsIFxcdTAwMjZ1bC1cXHUwMDNlaGVhZCwgZHN0LnJ0X3VuY2FjaGVkKSB7XFxuIFxcdFxcdFxcdGlmIChydC1cXHUwMDNlZHN0LmRldiAhPSBkZXYpXFxuIFxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbi1cXHRcXHRcXHRydC1cXHUwMDNlZHN0LmRldiA9IGJsYWNraG9sZV9uZXRkZXY7XFxuK1xcdFxcdFxcdHJjdV9hc3NpZ25fcG9pbnRlcihydC1cXHUwMDNlZHN0LmRldl9yY3UsIGJsYWNraG9sZV9uZXRkZXYpO1xcbiBcXHRcXHRcXHRuZXRkZXZfcmVmX3JlcGxhY2UoZGV2LCBibGFja2hvbGVfbmV0ZGV2LFxcbiBcXHRcXHRcXHRcXHRcXHQgICBcXHUwMDI2cnQtXFx1MDAzZWRzdC5kZXZfdHJhY2tlciwgR0ZQX0FUT01JQyk7XFxuIFxcdFxcdFxcdGxpc3RfZGVsX2luaXQoXFx1MDAyNnJ0LVxcdTAwM2Vkc3QucnRfdW5jYWNoZWQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxNjo1Mjo0OC44ODc4NTc5NzNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzOTU1MzQwMTcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwX3J0X3NlbmRfcmVkaXJlY3RcIixcbiAgICBcImlwX3J0X2dldF9zb3VyY2VcIixcbiAgICBcInJ0X2ZsdXNoX2RldlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgSVB2NCByb3V0aW5nIGZ1bmN0aW9ucyAoYGlwX3J0X3NlbmRfcmVkaXJlY3RgLCBgaXBfcnRfZ2V0X3NvdXJjZWAsIGBydF9mbHVzaF9kZXZgKSB0byB1c2UgUkNVLXByb3RlY3RlZCBkZXZpY2UgcG9pbnRlcnMgKGBkc3RfZGV2X3JjdWAgYW5kIGBkZXZfcmN1YCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBmaXhpbmcgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIHJhY2UgY29uZGl0aW9ucy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlc2Ugcm91dGluZyBmdW5jdGlvbnMgdG8gZW5zdXJlIHRoZSBSQ1UgZGVyZWZlcmVuY2VzIGFyZSBzYWZlIGFuZCBkb24ndCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNWUzMzY4YzJkZTk5MTViOGI4MGFjYTkyMjM4Y2E0YTk1MzUyYzNjZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDggMTY6NTI6NDYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9yb3V0ZS5jIGIvbmV0L2lwdjQvcm91dGUuY1xuaW5kZXggM2YzZGU1MTY0ZDZlNTguLjRmZWQwN2NhZTdkYTIwIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvcm91dGUuY1xuKysrIGIvbmV0L2lwdjQvcm91dGUuY1xuQEAgLTg3NCwyMSArODc0LDIzIEBAIHZvaWQgaXBfcnRfc2VuZF9yZWRpcmVjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIHtcbiBcdHN0cnVjdCBydGFibGUgKnJ0ID0gc2tiX3J0YWJsZShza2IpO1xuIFx0c3RydWN0IGluX2RldmljZSAqaW5fZGV2O1xuK1x0c3RydWN0IG5ldF9kZXZpY2UgKmRldjtcbiBcdHN0cnVjdCBpbmV0X3BlZXIgKnBlZXI7XG4tXHRzdHJ1Y3QgbmV0ICpuZXQ7XG4gXHRpbnQgbG9nX21hcnRpYW5zO1xuK1x0c3RydWN0IG5ldCAqbmV0O1xuIFx0aW50IHZpZjtcbiBcbiBcdHJjdV9yZWFkX2xvY2soKTtcbi1cdGluX2RldiA9IF9faW5fZGV2X2dldF9yY3UocnQtXHUwMDNlZHN0LmRldik7XG4rXHRkZXYgPSBkc3RfZGV2X3JjdShcdTAwMjZydC1cdTAwM2Vkc3QpO1xuK1x0aW5fZGV2ID0gX19pbl9kZXZfZ2V0X3JjdShkZXYpO1xuIFx0aWYgKCFpbl9kZXYgfHwgIUlOX0RFVl9UWF9SRURJUkVDVFMoaW5fZGV2KSkge1xuIFx0XHRyY3VfcmVhZF91bmxvY2soKTtcbiBcdFx0cmV0dXJuO1xuIFx0fVxuIFx0bG9nX21hcnRpYW5zID0gSU5fREVWX0xPR19NQVJUSUFOUyhpbl9kZXYpO1xuLVx0dmlmID0gbDNtZGV2X21hc3Rlcl9pZmluZGV4X3JjdShydC1cdTAwM2Vkc3QuZGV2KTtcbitcdHZpZiA9IGwzbWRldl9tYXN0ZXJfaWZpbmRleF9yY3UoZGV2KTtcbiBcbi1cdG5ldCA9IGRldl9uZXQocnQtXHUwMDNlZHN0LmRldik7XG4rXHRuZXQgPSBkZXZfbmV0X3JjdShkZXYpO1xuIFx0cGVlciA9IGluZXRfZ2V0cGVlcl92NChuZXQtXHUwMDNlaXB2NC5wZWVycywgaXBfaGRyKHNrYiktXHUwMDNlc2FkZHIsIHZpZik7XG4gXHRpZiAoIXBlZXIpIHtcbiBcdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG5AQCAtMTI4NywyOSArMTI4OSwzMiBAQCB2b2lkIGlwX3J0X2dldF9zb3VyY2UodTggKmFkZHIsIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBydGFibGUgKnJ0KVxuIHtcbiBcdF9fYmUzMiBzcmM7XG4gXG4tXHRpZiAocnRfaXNfb3V0cHV0X3JvdXRlKHJ0KSlcbitcdHJjdV9yZWFkX2xvY2soKTtcbitcdGlmIChydF9pc19vdXRwdXRfcm91dGUocnQpKSB7XG4gXHRcdHNyYyA9IGlwX2hkcihza2IpLVx1MDAzZXNhZGRyO1xuLVx0ZWxzZSB7XG4tXHRcdHN0cnVjdCBmaWJfcmVzdWx0IHJlcztcbitcdH0gZWxzZSB7XG4rXHRcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBkc3RfZGV2X3JjdShcdTAwMjZydC1cdTAwM2Vkc3QpO1xuK1x0XHRzdHJ1Y3QgbmV0ICpuZXQgPSBkZXZfbmV0X3JjdShkZXYpO1xuIFx0XHRzdHJ1Y3QgaXBoZHIgKmlwaCA9IGlwX2hkcihza2IpO1xuK1x0XHRzdHJ1Y3QgZmliX3Jlc3VsdCByZXM7XG4gXHRcdHN0cnVjdCBmbG93aTQgZmw0ID0ge1xuIFx0XHRcdC5kYWRkciA9IGlwaC1cdTAwM2VkYWRkcixcbiBcdFx0XHQuc2FkZHIgPSBpcGgtXHUwMDNlc2FkZHIsXG4gXHRcdFx0LmZsb3dpNF9kc2NwID0gaXA0aF9kc2NwKGlwaCksXG4tXHRcdFx0LmZsb3dpNF9vaWYgPSBydC1cdTAwM2Vkc3QuZGV2LVx1MDAzZWlmaW5kZXgsXG4rXHRcdFx0LmZsb3dpNF9vaWYgPSBkZXYtXHUwMDNlaWZpbmRleCxcbiBcdFx0XHQuZmxvd2k0X2lpZiA9IHNrYi1cdTAwM2VkZXYtXHUwMDNlaWZpbmRleCxcbiBcdFx0XHQuZmxvd2k0X21hcmsgPSBza2ItXHUwMDNlbWFyayxcbiBcdFx0fTtcbiBcbi1cdFx0cmN1X3JlYWRfbG9jaygpO1xuLVx0XHRpZiAoZmliX2xvb2t1cChkZXZfbmV0KHJ0LVx1MDAzZWRzdC5kZXYpLCBcdTAwMjZmbDQsIFx1MDAyNnJlcywgMCkgPT0gMClcbi1cdFx0XHRzcmMgPSBmaWJfcmVzdWx0X3ByZWZzcmMoZGV2X25ldChydC1cdTAwM2Vkc3QuZGV2KSwgXHUwMDI2cmVzKTtcbitcdFx0aWYgKGZpYl9sb29rdXAobmV0LCBcdTAwMjZmbDQsIFx1MDAyNnJlcywgMCkgPT0gMClcbitcdFx0XHRzcmMgPSBmaWJfcmVzdWx0X3ByZWZzcmMobmV0LCBcdTAwMjZyZXMpO1xuIFx0XHRlbHNlXG4tXHRcdFx0c3JjID0gaW5ldF9zZWxlY3RfYWRkcihydC1cdTAwM2Vkc3QuZGV2LFxuK1x0XHRcdHNyYyA9IGluZXRfc2VsZWN0X2FkZHIoZGV2LFxuIFx0XHRcdFx0XHQgICAgICAgcnRfbmV4dGhvcChydCwgaXBoLVx1MDAzZWRhZGRyKSxcbiBcdFx0XHRcdFx0ICAgICAgIFJUX1NDT1BFX1VOSVZFUlNFKTtcbi1cdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4gXHR9XG4rXHRyY3VfcmVhZF91bmxvY2soKTtcbitcbiBcdG1lbWNweShhZGRyLCBcdTAwMjZzcmMsIDQpO1xuIH1cbiBcbkBAIC0xNTY1LDcgKzE1NzAsNyBAQCB2b2lkIHJ0X2ZsdXNoX2RldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocnQsIHNhZmUsIFx1MDAyNnVsLVx1MDAzZWhlYWQsIGRzdC5ydF91bmNhY2hlZCkge1xuIFx0XHRcdGlmIChydC1cdTAwM2Vkc3QuZGV2ICE9IGRldilcbiBcdFx0XHRcdGNvbnRpbnVlO1xuLVx0XHRcdHJ0LVx1MDAzZWRzdC5kZXYgPSBibGFja2hvbGVfbmV0ZGV2O1xuK1x0XHRcdHJjdV9hc3NpZ25fcG9pbnRlcihydC1cdTAwM2Vkc3QuZGV2X3JjdSwgYmxhY2tob2xlX25ldGRldik7XG4gXHRcdFx0bmV0ZGV2X3JlZl9yZXBsYWNlKGRldiwgYmxhY2tob2xlX25ldGRldixcbiBcdFx0XHRcdFx0ICAgXHUwMDI2cnQtXHUwMDNlZHN0LmRldl90cmFja2VyLCBHRlBfQVRPTUlDKTtcbiBcdFx0XHRsaXN0X2RlbF9pbml0KFx1MDAyNnJ0LVx1MDAzZWRzdC5ydF91bmNhY2hlZCk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxNjo1Mjo0OC44ODc4NjA3NDNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NTI1NDIzODk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFJvdXRpbmcgUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCB0aGF0J3MgdG91Y2hpbmcgYG5ldC9pcHY0L3JvdXRlLmNgLiBMb29rcyBsaWtlIHRoZXkncmUgcmVwbGFjaW5nIGRpcmVjdCBhY2Nlc3MgdG8gYHJ0LVx1MDAzZWRzdC5kZXZgIHdpdGggYGRzdF9kZXZfcmN1KFx1MDAyNnJ0LVx1MDAzZWRzdClgIGFuZCB1c2luZyBgcmN1X2Fzc2lnbl9wb2ludGVyYCBpbiBhIGZldyBwbGFjZXMuIFJpZ2h0IG9mZiB0aGUgYmF0LCB0aGlzIHNjcmVhbXMgUkNVIHByb3RlY3Rpb24sIHNvIGl0J3MgYSBzdHJ1Y3R1cmFsIGNoYW5nZSByZWxhdGVkIHRvIGhvdyB0aGUgZGVzdGluYXRpb24gZGV2aWNlIGlzIGhhbmRsZWQsIGxpa2VseSB0byBwcmV2ZW50IHJhY2VzLlxuXG5JIHNob3VsZCBjaGVjayB0aGUgZGVmaW5pdGlvbnMgb2YgYGRzdF9kZXZfcmN1YCBhbmQgYGRldl9yY3VgIGluIGBpbmNsdWRlL25ldC9kc3QuaGAgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgaW1wYWN0LiBUaGlzIGlzIGNvcmUgSVB2NCByb3V0aW5nIGxvZ2ljLCBzbyBpdCdzIGNyaXRpY2FsLiBUaGUgZnVuY3Rpb25zIGJlaW5nIG1vZGlmaWVkIGFyZSBgaXBfcnRfc2VuZF9yZWRpcmVjdGAsIGBpcF9ydF9nZXRfc291cmNlYCwgYW5kIGBydF9mbHVzaF9kZXZgLiBUaG9zZSBhcmUgZnVuZGFtZW50YWwuIGBpcF9ydF9zZW5kX3JlZGlyZWN0YCBpcyBzZW5kaW5nIElDTVAgcmVkaXJlY3RzIOKAkyBwcmV0dHkgaW1wb3J0YW50IGZvciBuZXR3b3JrIGJlaGF2aW9yLiBgaXBfcnRfZ2V0X3NvdXJjZWAgaXMgY3J1Y2lhbCBmb3IgZ2V0dGluZyB0aGUgc291cmNlIGFkZHJlc3MsIG9idmlvdXNseS4gQW5kIGBydF9mbHVzaF9kZXZgIGlzIHVzZWQgdG8gZmx1c2ggcm91dGVzIHdoZW4gYSBkZXZpY2UgZ29lcyBkb3duIG9yIGNoYW5nZXMuXG5cblRoaXMgaXMgZGVmaW5pdGVseSBmdXp6aW5nIG1hdGVyaWFsLiBUaGVzZSBhcmUgY29yZSBmdW5jdGlvbnMsIGFueSBidWdzIGhlcmUgY291bGQgYmUgc2lnbmlmaWNhbnQuIEknbSBnb2luZyB0byB6ZXJvIGluIG9uIHRob3NlIHRocmVlIHN5bWJvbHM6IGBpcF9ydF9zZW5kX3JlZGlyZWN0YCwgYGlwX3J0X2dldF9zb3VyY2VgLCBhbmQgYHJ0X2ZsdXNoX2RldmAuXG5cbk5vdywgYmVmb3JlIEkgZmlyZSB1cCB0aGUgZnV6emVycywgSSBuZWVkIHRvIHRoaW5rIGFib3V0IHJlbGV2YW50IGtlcm5lbCBjb25maWd1cmF0aW9ucy4gYENPTkZJR19JUF9ST1VURV9DTEFTU0lEYD8gTmFoLCB0aGlzIGlzIGJhc2ljIElQdjQgcm91dGluZy4gYENPTkZJR19JTkVUYCBpcyBhIGdpdmVuIOKAkyBJUHY0IG5lZWRzIHRoYXQsIGJ1dCBpdCdzIGVuYWJsZWQgYnkgZGVmYXVsdC4gSSdsbCBzY2FuIHRocm91Z2ggYG5ldC9pcHY0L3JvdXRlLmNgIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mLiBHb3R0YSBtYWtlIHN1cmUgdGhlIGZ1enppbmcgZW52aXJvbm1lbnQgaXMgcHJvcGVybHkgc2V0IHVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODAzLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzc0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTY6NTI6NTUuNDEzMjg4MzlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIyNjQ0NjQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwX3J0X3NlbmRfcmVkaXJlY3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvcm91dGUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9yb3V0ZS5jPTg0Nj1zdGF0aWMgdm9pZCBpcHY0X25lZ2F0aXZlX2FkdmljZShzdHJ1Y3Qgc29jayAqc2ssXFxuLS1cXG5uZXQvaXB2NC9yb3V0ZS5jLTg3Mi1cXG5uZXQvaXB2NC9yb3V0ZS5jOjg3Mzp2b2lkIGlwX3J0X3NlbmRfcmVkaXJlY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5uZXQvaXB2NC9yb3V0ZS5jLTg3NC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjUyOjU1LjUzNTk0MTE4NloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyMzg1MDA3MjQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byBOZXR3b3JrIFJvdXRpbmcgTG9naWMqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoaXMgbmV0d29yayBpc3N1ZS4gTGV0J3Mgc2VlLi4uIHRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGUgbmVlZCB0byBpbnZlc3RpZ2F0ZSBgaXBfcnRfZ2V0X3NvdXJjZWAuIFRoaXMgZnVuY3Rpb24gc2VlbXMgZnVuZGFtZW50YWwgdG8gaG93IHRoZSBrZXJuZWwgZGV0ZXJtaW5lcyB0aGUgc291cmNlIElQIGFkZHJlc3MgZm9yIG91dGdvaW5nIHBhY2tldHMuIFVuZGVyc3RhbmRpbmcgaXRzIGJlaGF2aW9yIGlzIGNyaXRpY2FsIHRvIGRpYWdub3NpbmcgYW55IHBvdGVudGlhbCByb3V0aW5nIHByb2JsZW1zLCBlc3BlY2lhbGx5IGlmIHRoZXJlIGFyZSB1bnVzdWFsIHNvdXJjZSBhZGRyZXNzZXMgYmVpbmcgdXNlZCBvciBwYWNrZXRzIGFyZSBiZWluZyBkcm9wcGVkLiBJIG5lZWQgdG8gdHJhY2UgaXRzIGNhbGwgcGF0aCBhbmQgc2VlIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgcm91dGluZyB0YWJsZS4gSSB3YW50IHRvIHBheSBhdHRlbnRpb24gdG8gYW55IHBvdGVudGlhbCBlZGdlIGNhc2VzIG9yIGVycm9yIGhhbmRsaW5nIHRoZXJlLlxuXG5UaGVuLCByZWxhdGVkIHRvIHRoYXQsIEkgbmVlZCB0byBsb29rIGludG8gYHJ0X2ZsdXNoX2RldmAuIEZsdXNoaW5nIGEgZGV2aWNlJ3Mgcm91dGluZyBjYWNoZSBjYW4gaGF2ZSBiaWcgaW1wbGljYXRpb25zIGlmIG5vdCBkb25lIHByb3Blcmx5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRyaWdnZXJzIHRoaXMgZnVuY3Rpb24sIHdoYXQgZXhhY3RseSBpdCBkb2VzIChkb2VzIGl0IGludmFsaWRhdGUgdGhlIGNhY2hlLCBvciBkb2VzIGl0IGRvIGEgZnVsbCByZS1wb3B1bGF0aW9uPyksIGFuZCB3aGF0IHNpZGUgZWZmZWN0cyBpdCBtaWdodCBoYXZlIG9uIG9uZ29pbmcgbmV0d29yayBjb21tdW5pY2F0aW9uLiBDb3VsZCBhIHJvZ3VlIGNhbGwgdG8gdGhpcyBmdW5jdGlvbiBiZSBjYXVzaW5nIGludGVybWl0dGVudCBjb25uZWN0aXZpdHkgaXNzdWVzPyBUaGF0J3Mgd2hhdCBJIGhhdmUgdG8gZmlndXJlIG91dC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzczNiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjUzOjA3LjkyMDk1MjQ1OFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTU1ODUzMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXBfcnRfZ2V0X3NvdXJjZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9yb3V0ZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L3JvdXRlLmM9MTI2OT1zdGF0aWMgaW50IGlwX3J0X2J1ZyhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9pcHY0L3JvdXRlLmMtMTI4Ny1cXG5uZXQvaXB2NC9yb3V0ZS5jOjEyODg6dm9pZCBpcF9ydF9nZXRfc291cmNlKHU4ICphZGRyLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgcnRhYmxlICpydClcXG5uZXQvaXB2NC9yb3V0ZS5jLTEyODkte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxNjo1MzowOC4wMzY1NDU1MzhaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODIxNTUxOTczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIGRlbGl2ZXJlZCBhcyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5OlxuXG4qKkRpZ2dpbmcgaW50byBgcnRfZmx1c2hfZGV2YCoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gYHJ0X2ZsdXNoX2RldmAuIEl0J3Mgd2hlcmUgdGhlIHJ1YmJlciBtZWV0cyB0aGUgcm9hZCwgc28gdG8gc3BlYWssIGluIHJlYWwtdGltZSBkZXZpY2UgZmx1c2hpbmcuIEknbSBtZW50YWxseSBwYXJzaW5nIGl0cyByb2xlIGluIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZS4gSSB3YW50IHRvIHF1aWNrbHkgZXZhbHVhdGUgaXRzIGNvcmUgZnVuY3Rpb24g4oCTIHdoYXQgc3BlY2lmaWMgYXNwZWN0cyBvZiBkZXZpY2UgaW50ZXJhY3Rpb24gYXJlIGhhbmRsZWQgaGVyZT8gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgaXQgZml0cyBpbnRvIHRoZSBicm9hZGVyIEkvTyBvcGVyYXRpb25zIGFuZCBzY2hlZHVsaW5nLCBhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byBjYWNoZSBpbnZhbGlkYXRpb24gYW5kIGRhdGEgaW50ZWdyaXR5LCBvZiBjb3Vyc2UuIElzIGl0IHRoZSBwcmltYXJ5IHBvaW50LCBvciBkb2VzIGl0IGNhbGwgb3RoZXIgdGhpbmdzPyBJIHdhbnQgdG8gZGV0ZXJtaW5lIGlmIHRoZXJlJ3MgYW55IGFyZWEgdGhhdCBzdGFuZHMgb3V0IGFzIGxpa2VseSB0byBjYXVzZSBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDE2MiwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjUzOjEwLjg1ODEwMzY5MloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTQ1MDI1NDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnRfZmx1c2hfZGV2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L3JvdXRlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvcm91dGUuYz0xNTUyPXN0YXRpYyB2b2lkIGlwdjRfZHN0X2Rlc3Ryb3koc3RydWN0IGRzdF9lbnRyeSAqZHN0KVxcbi0tXFxubmV0L2lwdjQvcm91dGUuYy0xNTU3LVxcbm5ldC9pcHY0L3JvdXRlLmM6MTU1ODp2b2lkIHJ0X2ZsdXNoX2RldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbm5ldC9pcHY0L3JvdXRlLmMtMTU1OS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjUzOjExLjAxMjYzMTA2NVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyOTUzNDg3ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIHRoZSBJUHY0IFJvdXRpbmcgQ29yZSoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gV2UncmUgdGFsa2luZyBhYm91dCBmdW5kYW1lbnRhbCBJUHY0IHJvdXRpbmcgZnVuY3Rpb25hbGl0eSBoZXJlLiBOb3RoaW5nIGZhbmN5IGNvbmZpZy13aXNlLCBqdXN0IHRoZSBiYXNpY3MgLSB0aGUgcHJlc2VuY2Ugb2YgYENPTkZJR19JTkVUYCBhbmQsIGlmIGl0J3MgdGhlcmUgKHdoaWNoIGl0IHVzdWFsbHkgKmlzKiksIGBDT05GSUdfSVBfUk9VVEVgLiBUbyBnZXQgYSBoYW5kbGUgb24gd2hhdCdzIGFjdHVhbGx5IGhhcHBlbmluZywgSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLCBhbmQgdGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQgaXMgYWx3YXlzIHRoZSBgbmV0L2lwdjQvTWFrZWZpbGVgLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgZ29vZCBvdmVydmlldyBvZiB0aGUgY29yZSBjb21wb25lbnRzIGFuZCBidWlsZCBkZXBlbmRlbmNpZXMgZm9yIHRoaXMgcGFydCBvZiB0aGUga2VybmVsLiBMZXQncyBzZWUgd2hhdCBnZW1zIHRoYXQgTWFrZWZpbGUgaG9sZHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0OTIsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxNjo1MzoxNC4zMDc5ODQyMDJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNzk2OTc4MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyb3V0ZS5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L01ha2VmaWxlLTUtXFxubmV0L2lwdjQvTWFrZWZpbGU6NjpvYmoteSAgICAgOj0gcm91dGUubyBpbmV0cGVlci5vIHByb3RvY29sLm8gXFxcXFxcbm5ldC9pcHY0L01ha2VmaWxlLTctXFx0ICAgICBpcF9pbnB1dC5vIGlwX2ZyYWdtZW50Lm8gaXBfZm9yd2FyZC5vIGlwX29wdGlvbnMubyBcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjUzOjE0LjQzNTk2MTgyM1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzgwMjk5NjExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBJUHY0IFJvdXRpbmcgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHN0cmFpZ2h0Zm9yd2FyZCBpbiBpdHMgYnVpbGQgcmVxdWlyZW1lbnRzOyBpdCdzIHVuY29uZGl0aW9uYWxseSBidWlsdCBpZiBJUHY0IHN1cHBvcnQgKGBDT05GSUdfSU5FVGApIGlzIGVuYWJsZWQsIHdoaWNoIGlzIHRoZSBzdGFuZGFyZCBzZXR1cCwgYXMgaXQncyB0aGUgZGVmYXVsdCBpbiBgbmV0L01ha2VmaWxlYC4gTm8gc3BlY2lmaWMsIHVudXN1YWwgY29uZmlndXJhdGlvbnMgbmVlZGVkLCB3aGljaCBzaW1wbGlmaWVzIHRoZSB0ZXN0aW5nIG1hdHJpeCBhIGJpdC5cblxuTXkgcHJpbWFyeSBmb2N1cyBoYXMgdG8gYmUgb24gdGhlIGNvcmUgZnVuY3Rpb25zIHRvdWNoZWQ6IGBpcF9ydF9zZW5kX3JlZGlyZWN0YCwgYGlwX3J0X2dldF9zb3VyY2VgLCBhbmQgYHJ0X2ZsdXNoX2RldmAuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgcmV2b2x2ZXMgYXJvdW5kIFJDVS1wcm90ZWN0ZWQgZGV2aWNlIHBvaW50ZXJzLCBgZHN0X2Rldl9yY3VgLiBUaGUgZ29hbCBoZXJlIGlzIHByZXR0eSBjbGVhcjsgd2UncmUgcHJldmVudGluZyB1c2UtYWZ0ZXItZnJlZSBhbmQgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBpbiBJUHY0IHJvdXRpbmcuIE15IGZ1enppbmcgZWZmb3J0cyAqYWJzb2x1dGVseSogbmVlZCB0byB0YXJnZXQgdGhlc2Ugcm91dGluZyBmdW5jdGlvbnMuIEkgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgUkNVIGRlcmVmZXJlbmNlcyBhcmUgYnVsbGV0cHJvb2YuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB3aGF0ZXZlciB0aGV5IGZpeGVkIGhhc24ndCBjcmVhdGVkIGEgZGlmZmVyZW50IHZ1bG5lcmFiaWxpdHkuIE15IGdvYWwgd2lsbCBiZSB0byB0cnkgdG8gdW5jb3ZlciBuZXcgcmVncmVzc2lvbnMuXG5cbkkgc2hvdWxkIGFsc28gcXVpY2tseSB2ZXJpZnkgdGhlIHJlYWNoYWJpbGl0eSBvZiBgaXBfcnRfc2VuZF9yZWRpcmVjdGAuIEkgYmVsaWV2ZSBpdCdzIGNhbGxlZCBmcm9tIHNvbWV0aGluZyBsaWtlIGBpcF9mb3J3YXJkYCwgd2hpY2ggd2lsbCBiZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIGNvbnN0cnVjdGluZyB0ZXN0IGNhc2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0Nzk1LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjUzOjE5LjIxNjI2NTM0NVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI0NDc4MjU0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwX3J0X3NlbmRfcmVkaXJlY3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L2lwX2ZvcndhcmQuYz04Mz1pbnQgaXBfZm9yd2FyZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2lwdjQvaXBfZm9yd2FyZC5jLTE1Ni1cXHQgICAgIXNrYl9zZWNfcGF0aChza2IpKVxcbm5ldC9pcHY0L2lwX2ZvcndhcmQuYzoxNTc6XFx0XFx0aXBfcnRfc2VuZF9yZWRpcmVjdChza2IpO1xcbm5ldC9pcHY0L2lwX2ZvcndhcmQuYy0xNTgtXFxuLS1cXG5uZXQvaXB2NC9yb3V0ZS5jPTg0Nj1zdGF0aWMgdm9pZCBpcHY0X25lZ2F0aXZlX2FkdmljZShzdHJ1Y3Qgc29jayAqc2ssXFxuLS1cXG5uZXQvaXB2NC9yb3V0ZS5jLTg3Mi1cXG5uZXQvaXB2NC9yb3V0ZS5jOjg3Mzp2b2lkIGlwX3J0X3NlbmRfcmVkaXJlY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5uZXQvaXB2NC9yb3V0ZS5jLTg3NC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjUzOjE5LjM0MDc1MDQ1OVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDcwNzAwNjMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgdGhlIHN1bW1hcnksIGZyYW1lZCBhcyB5b3VyIG93biB0aG91Z2h0czpcblxuKipSb3V0aW5nIEZ1bmN0aW9uIEludGVyYWN0aW9ucyoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCBob3cgdGhlIElQIGZvcndhcmRpbmcgcHJvY2VzcyBpbnRlcmFjdHMgd2l0aCB0aGUgcm91dGluZyB0YWJsZXMgYW5kIHJlbGF0ZWQgZnVuY3Rpb25zLiBJJ3ZlIGNvbmZpcm1lZCwgYW5kIGl0J3MgY3J5c3RhbCBjbGVhcjogYGlwX3J0X3NlbmRfcmVkaXJlY3RgIGlzIGluZGVlZCBjYWxsZWQgZGlyZWN0bHkgZnJvbSB3aXRoaW4gYGlwX2ZvcndhcmRgLiBUaGF0IG1ha2VzIHBlcmZlY3Qgc2Vuc2U7IHdoZW4gd2UgbmVlZCB0byByZWRpcmVjdCB0cmFmZmljIGJhc2VkIG9uIHRoZSByb3V0aW5nIGRlY2lzaW9uLCB0aGlzIGlzIHRoZSBmdW5jdGlvbiByZXNwb25zaWJsZS5cblxuTm93LCBzaGlmdGluZyBnZWFycyBzbGlnaHRseSwgSSdtIHJlY2FsbGluZyB0aGUgcmVsYXRpb25zaGlwIHdpdGggSUNNUCBlcnJvciBnZW5lcmF0aW9uLiBJJ3ZlIGFsc28gdmVyaWZpZWQgdGhhdCBgaXBfcnRfZ2V0X3NvdXJjZWAgaXMgaW52b2tlZCBkdXJpbmcgdGhpcyBwcm9jZXNzLiBUaGlzIGNvbmZpcm1zIG15IHVuZGVyc3RhbmRpbmcgdGhhdCB0aGUgc3lzdGVtIG5lZWRzIHRvIGRldGVybWluZSB0aGUgY29ycmVjdCBzb3VyY2UgYWRkcmVzcyBmb3IgY3JhZnRpbmcgSUNNUCBlcnJvciBtZXNzYWdlcywgYW5kIHRoZSByb3V0aW5nIHRhYmxlIHByb3ZpZGVzIHRoYXQgbmVjZXNzYXJ5IHNvdXJjZSBhZGRyZXNzIGluZm9ybWF0aW9uLiBUaGlzIGlzIHN0YW5kYXJkIG9wZXJhdGluZyBwcm9jZWR1cmUsIGFzIEkgd291bGQgZXhwZWN0IGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NDY1LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTY6NTM6MjMuNDExNDU1NjExWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjUyNjE2NjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXBfcnRfZ2V0X3NvdXJjZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvaXBfb3B0aW9ucy5jPTQ0PXZvaWQgaXBfb3B0aW9uc19idWlsZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaXBfb3B0aW9ucyAqb3B0LFxcbi0tXFxubmV0L2lwdjQvaXBfb3B0aW9ucy5jLTU2LVxcdGlmIChvcHQtXFx1MDAzZXJyX25lZWRhZGRyKVxcbm5ldC9pcHY0L2lwX29wdGlvbnMuYzo1NzpcXHRcXHRpcF9ydF9nZXRfc291cmNlKGlwaCArIG9wdC1cXHUwMDNlcnIgKyBpcGhbb3B0LVxcdTAwM2VyciArIDJdIC0gNSwgc2tiLCBydCk7XFxubmV0L2lwdjQvaXBfb3B0aW9ucy5jLTU4LVxcdGlmIChvcHQtXFx1MDAzZXRzX25lZWRhZGRyKVxcbm5ldC9pcHY0L2lwX29wdGlvbnMuYzo1OTpcXHRcXHRpcF9ydF9nZXRfc291cmNlKGlwaCArIG9wdC1cXHUwMDNldHMgKyBpcGhbb3B0LVxcdTAwM2V0cyArIDJdIC0gOSwgc2tiLCBydCk7XFxubmV0L2lwdjQvaXBfb3B0aW9ucy5jLTYwLVxcdGlmIChvcHQtXFx1MDAzZXRzX25lZWR0aW1lKSB7XFxuLS1cXG5uZXQvaXB2NC9pcF9vcHRpb25zLmM9NTQyPXZvaWQgaXBfZm9yd2FyZF9vcHRpb25zKHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvaXB2NC9pcF9vcHRpb25zLmMtNTUwLVxcdFxcdG9wdHB0ciA9ICh1bnNpZ25lZCBjaGFyICopcmF3ICsgb3B0LVxcdTAwM2VycjtcXG5uZXQvaXB2NC9pcF9vcHRpb25zLmM6NTUxOlxcdFxcdGlwX3J0X2dldF9zb3VyY2UoXFx1MDAyNm9wdHB0cltvcHRwdHJbMl0tNV0sIHNrYiwgcnQpO1xcbm5ldC9pcHY0L2lwX29wdGlvbnMuYy01NTItXFx0XFx0b3B0LVxcdTAwM2Vpc19jaGFuZ2VkID0gMTtcXG4tLVxcbm5ldC9pcHY0L2lwX29wdGlvbnMuYy01NzAtXFx0XFx0XFx0aXBfaGRyKHNrYiktXFx1MDAzZWRhZGRyID0gb3B0LVxcdTAwM2VuZXh0aG9wO1xcbm5ldC9pcHY0L2lwX29wdGlvbnMuYzo1NzE6XFx0XFx0XFx0aXBfcnRfZ2V0X3NvdXJjZShcXHUwMDI2b3B0cHRyW3NycnB0ci0xXSwgc2tiLCBydCk7XFxubmV0L2lwdjQvaXBfb3B0aW9ucy5jLTU3Mi1cXHRcXHRcXHRvcHRwdHJbMl0gPSBzcnJwdHIrNDtcXG4tLVxcbm5ldC9pcHY0L2lwX29wdGlvbnMuYy01NzgtXFx0XFx0XFx0b3B0cHRyID0gcmF3ICsgb3B0LVxcdTAwM2V0cztcXG5uZXQvaXB2NC9pcF9vcHRpb25zLmM6NTc5OlxcdFxcdFxcdGlwX3J0X2dldF9zb3VyY2UoXFx1MDAyNm9wdHB0cltvcHRwdHJbMl0tOV0sIHNrYiwgcnQpO1xcbm5ldC9pcHY0L2lwX29wdGlvbnMuYy01ODAtXFx0XFx0XFx0b3B0LVxcdTAwM2Vpc19jaGFuZ2VkID0gMTtcXG4tLVxcbm5ldC9pcHY0L3JvdXRlLmM9MTI2OT1zdGF0aWMgaW50IGlwX3J0X2J1ZyhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9pcHY0L3JvdXRlLmMtMTI4Ny1cXG5uZXQvaXB2NC9yb3V0ZS5jOjEyODg6dm9pZCBpcF9ydF9nZXRfc291cmNlKHU4ICphZGRyLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgcnRhYmxlICpydClcXG5uZXQvaXB2NC9yb3V0ZS5jLTEyODkte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxNjo1MzoyMy41MzY3MjU3MjVaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzczODE2NzMwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB1bmRlcnN0YW5kaW5nOlxuXG4qKkRldmljZSBEZXJlZ2lzdHJhdGlvbiBhbmQgYHJ0X2ZsdXNoX2RldmAqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgZGV2aWNlIGRyaXZlcnMgYW5kIHRoZSBMaW51eCBrZXJuZWwuIEknbSBmb2N1c2luZyBvbiB0aGUgcHJvY2VzcyBvZiB1bnJlZ2lzdGVyaW5nIGEgZGV2aWNlLiBJIHNlZSB0aGF0IGBydF9mbHVzaF9kZXZgIGlzIGdldHRpbmcgY2FsbGVkIGF0IHNvbWUgcG9pbnQgZHVyaW5nIHRoZSBkZXZpY2UgdW5yZWdpc3RyYXRpb24gc2VxdWVuY2UuIFRoYXQncyBhIGtleSBkZXRhaWwuIEkgaW1tZWRpYXRlbHkgcmVjb2duaXplIHRoYXQgbWVhbnMgd2UncmUgZGVhbGluZyB3aXRoIHJlYWwtdGltZSBhc3BlY3RzIGhlcmUuIGBydF9mbHVzaF9kZXZgIHN1Z2dlc3RzIHdlIG5lZWQgdG8gcGVyZm9ybSBzb21lIGZvcm0gb2YgZmx1c2hpbmcgb3IgY2xlYW4tdXAgcmVsYXRlZCB0byByZWFsLXRpbWUgb3BlcmF0aW9ucyBhc3NvY2lhdGVkIHdpdGggdGhpcyBkZXZpY2UgKmJlZm9yZSogaXQncyBmdWxseSB1bnJlZ2lzdGVyZWQgZnJvbSB0aGUgc3lzdGVtLiBUaGlzIGltcGxpZXMgdGhlcmUncyBsaWtlbHkgc29tZSByZWFsLXRpbWUgc3RhdGUgb3IgZGF0YSBzdHJ1Y3R1cmVzIGFzc29jaWF0ZWQgd2l0aCB0aGUgZGV2aWNlIHRoYXQgbmVlZHMgdG8gYmUgaGFuZGxlZCBwcm9wZXJseSB0byBwcmV2ZW50IHJlc291cmNlIGxlYWtzLCBkYXRhIGNvcnJ1cHRpb24sIG9yIHNjaGVkdWxpbmcgaXNzdWVzLiBJIG5lZWQgdG8gZGlnIGRlZXBlciB0byB1bmRlcnN0YW5kIHRoZSBzcGVjaWZpY3Mgb2Ygd2hhdCdzIGJlaW5nIGZsdXNoZWQgYW5kIHdoeSwgZXNwZWNpYWxseSBpbiB0aGUgY29udGV4dCBvZiB0aGUgZGV2aWNlJ3MgZHJpdmVyIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHJlYWwtdGltZSBzY2hlZHVsZXIuIEknbGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZSBiZXN0IHBsYWNlIGlzIHRvIGxvb2sgZm9yIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgcnRfZmx1c2hfZGV2YCB0byB1bmRlcnN0YW5kIHRoZSBmdWxsIGltcGxpY2F0aW9ucyBhbmQgbWFrZSBzdXJlIGl0J3Mgd29ya2luZyBhcyBleHBlY3RlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjM4NiwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjUzOjI3LjI3NDg5NzQ5NloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ5NjMwNjc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0X2ZsdXNoX2RldlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvZmliX2Zyb250ZW5kLmM9MTUwNj1zdGF0aWMgaW50IGZpYl9uZXRkZXZfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp0aGlzLCB1bnNpZ25lZCBsb25nIGV2ZW50LCB2b2lkICpwdHIpXFxuLS1cXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xNTE3LVxcdFxcdGZpYl9kaXNhYmxlX2lwKGRldiwgZXZlbnQsIHRydWUpO1xcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jOjE1MTg6XFx0XFx0cnRfZmx1c2hfZGV2KGRldik7XFxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmMtMTUxOS1cXHRcXHRyZXR1cm4gTk9USUZZX0RPTkU7XFxuLS1cXG5uZXQvaXB2NC9yb3V0ZS5jPTE1NTI9c3RhdGljIHZvaWQgaXB2NF9kc3RfZGVzdHJveShzdHJ1Y3QgZHN0X2VudHJ5ICpkc3QpXFxuLS1cXG5uZXQvaXB2NC9yb3V0ZS5jLTE1NTctXFxubmV0L2lwdjQvcm91dGUuYzoxNTU4OnZvaWQgcnRfZmx1c2hfZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxubmV0L2lwdjQvcm91dGUuYy0xNTU5LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTY6NTM6MjcuNDI0NTM0ODYzWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0MTg2MjMyOTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgSVB2NCBSb3V0aW5nIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSByZXZpZXdlZCB0aGlzIHBhdGNoLCBhbmQgaXQgbG9va3MgbGlrZSBhbGwgdGhlIGNoYW5nZWQgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUgYW5kLCBjcnVjaWFsbHksIGZ1bmN0aW9uYWwuIEknbSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZz10cnVlYCByaWdodCBhd2F5IOKAkyB0aGlzIGlzIGRlZmluaXRlbHkgYW4gYXJlYSB3aGVyZSB3ZSBuZWVkIHRvIGFwcGx5IHNvbWUgcmlnb3JvdXMgdGVzdGluZy5cblxuTXkgZm9jdXMgaXMgZ29pbmcgdG8gYmUgc3F1YXJlbHkgb24gdGhvc2Uga2V5IHJvdXRpbmcgZnVuY3Rpb25zOiBgaXBfcnRfc2VuZF9yZWRpcmVjdGAsIGBpcF9ydF9nZXRfc291cmNlYCwgYW5kIGBydF9mbHVzaF9kZXZgLiBUaGVzZSBhcmUgdGhlIGNvcmUgY29tcG9uZW50cyB0aGF0IGFyZSBiZWluZyBtb2RpZmllZCB0byB1c2UgUkNVLXByb3RlY3RlZCBkZXZpY2UgcG9pbnRlcnMsIHNwZWNpZmljYWxseSBgZHN0X2Rldl9yY3VgIGFuZCBgZGV2X3JjdWAuXG5cblRoZXJlIGFyZW4ndCBhbnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb25zIEkgbmVlZCB0byBmbGFnLiBgQ09ORklHX0lORVRgIGlzIHN0YW5kYXJkLCBzbyB3ZSdyZSBnb29kIHRoZXJlLlxuXG5NeSByZWFzb25pbmcgaXMgc3RyYWlnaHRmb3J3YXJkOiB0aGlzIHBhdGNoIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UuIEl0J3MgYWRkcmVzc2luZyBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLCBzcGVjaWZpY2FsbHkgdXNlLWFmdGVyLWZyZWUgYW5kIHJhY2UgY29uZGl0aW9ucywgd2l0aGluIHRoZSBJUHY0IHJvdXRpbmcgc3Vic3lzdGVtLiBCeSBpbnRyb2R1Y2luZyBSQ1UsIHRoZSBpbnRlbnRpb24gaXMgdG8gaW1wcm92ZSBzYWZldHkgYXJvdW5kIGRldmljZSBwb2ludGVyIGFjY2Vzc2VzLiBUaGVyZWZvcmUsIHRoZSBmdXp6aW5nIG5lZWRzIHRvIGNvbmNlbnRyYXRlIG9uIHZlcmlmeWluZyB0aGUgY29ycmVjdG5lc3MgYW5kIHNhZmV0eSBvZiB0aGVzZSBSQ1UgZGVyZWZlcmVuY2VzLiBXZSBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoZSBjaGFuZ2VzIGVmZmVjdGl2ZWx5IHByZXZlbnQgdGhlc2UgaXNzdWVzIGFuZCBoYXZlbid0IGludHJvZHVjZWQgYW55IG5ldyByZWdyZXNzaW9ucy4gSSdtIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBjb25jdXJyZW5jeSBzY2VuYXJpb3MgYW5kIGVkZ2UgY2FzZXMgZHVyaW5nIHJvdXRpbmcgdGFibGUgdXBkYXRlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjkxNywiT3V0cHV0VG9rZW5zIjoxNTUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTY6NTM6MzIuODQzMTYxMDE1WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQ2NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcF9ydF9zZW5kX3JlZGlyZWN0XCIsXG4gICAgXCJpcF9ydF9nZXRfc291cmNlXCIsXG4gICAgXCJydF9mbHVzaF9kZXZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBjb3JlIElQdjQgcm91dGluZyBmdW5jdGlvbnMgKGBpcF9ydF9zZW5kX3JlZGlyZWN0YCwgYGlwX3J0X2dldF9zb3VyY2VgLCBgcnRfZmx1c2hfZGV2YCkgdG8gdXNlIFJDVS1wcm90ZWN0ZWQgZGV2aWNlIHBvaW50ZXJzIChgZHN0X2Rldl9yY3VgIGFuZCBgZGV2X3JjdWApLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZml4aW5nIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciByYWNlIGNvbmRpdGlvbnMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZXNlIHJvdXRpbmcgZnVuY3Rpb25zIHRvIGVuc3VyZSB0aGUgUkNVIGRlcmVmZXJlbmNlcyBhcmUgc2FmZSBhbmQgZG9uJ3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwX3J0X3NlbmRfcmVkaXJlY3RcIixcbiAgICBcImlwX3J0X2dldF9zb3VyY2VcIixcbiAgICBcInJ0X2ZsdXNoX2RldlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgSVB2NCByb3V0aW5nIGZ1bmN0aW9ucyAoYGlwX3J0X3NlbmRfcmVkaXJlY3RgLCBgaXBfcnRfZ2V0X3NvdXJjZWAsIGBydF9mbHVzaF9kZXZgKSB0byB1c2UgUkNVLXByb3RlY3RlZCBkZXZpY2UgcG9pbnRlcnMgKGBkc3RfZGV2X3JjdWAgYW5kIGBkZXZfcmN1YCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBmaXhpbmcgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIHJhY2UgY29uZGl0aW9ucy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlc2Ugcm91dGluZyBmdW5jdGlvbnMgdG8gZW5zdXJlIHRoZSBSQ1UgZGVyZWZlcmVuY2VzIGFyZSBzYWZlIGFuZCBkb24ndCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowdl76d[1] Phase: Succeeded StartedAt: 2026-07-08 16:53:44 +0000 UTC FinishedAt: 2026-07-08 16:53:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdl76d[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-08 16:53:44 +0000 UTC FinishedAt: 2026-07-08 16:53:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdl76d[2] Phase: Succeeded StartedAt: 2026-07-08 16:53:44 +0000 UTC FinishedAt: 2026-07-08 21:18:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdl76d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_rt_send_redirect","ip_rt_get_source","rt_flush_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","series_id":"c14f8ba2-c725-4cc4-bc0b-3f560ca72952","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-08 16:53:44 +0000 UTC FinishedAt: 2026-07-08 21:18:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_rt_send_redirect","ip_rt_get_source","rt_flush_dev"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","series_id":"c14f8ba2-c725-4cc4-bc0b-3f560ca72952","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowdl76d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_rt_send_redirect","ip_rt_get_source","rt_flush_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","series_id":"c14f8ba2-c725-4cc4-bc0b-3f560ca72952","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-08 16:53:44 +0000 UTC FinishedAt: 2026-07-08 16:54:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdl76d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_rt_send_redirect","ip_rt_get_source","rt_flush_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","series_id":"c14f8ba2-c725-4cc4-bc0b-3f560ca72952","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-08 16:53:44 +0000 UTC FinishedAt: 2026-07-08 16:53:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowdl76d/series-workflowdl76d-convert-artifact-100412916/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdl76d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_rt_send_redirect","ip_rt_get_source","rt_flush_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","series_id":"c14f8ba2-c725-4cc4-bc0b-3f560ca72952","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-08 16:54:05 +0000 UTC FinishedAt: 2026-07-08 17:43:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdl76d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_rt_send_redirect","ip_rt_get_source","rt_flush_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","series_id":"c14f8ba2-c725-4cc4-bc0b-3f560ca72952","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-08 16:54:05 +0000 UTC FinishedAt: 2026-07-08 17:43:33 +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:*30d12b1c-35d9-40f2-a079-38601242dbc4,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-workflowdl76d/series-workflowdl76d-convert-artifact-100412916/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": "32e6b560-dd11-4cb6-95d3-db23ae561dc3", "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-workflowdl76d/series-workflowdl76d-build-action-4289073906/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdl76d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_rt_send_redirect","ip_rt_get_source","rt_flush_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","series_id":"c14f8ba2-c725-4cc4-bc0b-3f560ca72952","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-08 16:54:05 +0000 UTC FinishedAt: 2026-07-08 17:43:09 +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:*30d12b1c-35d9-40f2-a079-38601242dbc4,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-workflowdl76d/series-workflowdl76d-convert-artifact-100412916/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": "32e6b560-dd11-4cb6-95d3-db23ae561dc3", "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-workflowdl76d/series-workflowdl76d-build-action-4289073906/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdl76d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_rt_send_redirect","ip_rt_get_source","rt_flush_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","series_id":"c14f8ba2-c725-4cc4-bc0b-3f560ca72952","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-08 17:43:33 +0000 UTC FinishedAt: 2026-07-08 17:43:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdl76d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_rt_send_redirect","ip_rt_get_source","rt_flush_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","series_id":"c14f8ba2-c725-4cc4-bc0b-3f560ca72952","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-08 17:43:33 +0000 UTC FinishedAt: 2026-07-08 17:43:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdl76d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_rt_send_redirect","ip_rt_get_source","rt_flush_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","series_id":"c14f8ba2-c725-4cc4-bc0b-3f560ca72952","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-08 17:43:33 +0000 UTC FinishedAt: 2026-07-08 17:43:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdl76d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_rt_send_redirect","ip_rt_get_source","rt_flush_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","series_id":"c14f8ba2-c725-4cc4-bc0b-3f560ca72952","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-08 17:43:33 +0000 UTC FinishedAt: 2026-07-08 17:43:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","series_id":"c14f8ba2-c725-4cc4-bc0b-3f560ca72952","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowdl76d/series-workflowdl76d-convert-artifact-469594547/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdl76d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_rt_send_redirect","ip_rt_get_source","rt_flush_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","series_id":"c14f8ba2-c725-4cc4-bc0b-3f560ca72952","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-08 17:43:54 +0000 UTC FinishedAt: 2026-07-08 17:46:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdl76d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_rt_send_redirect","ip_rt_get_source","rt_flush_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","series_id":"c14f8ba2-c725-4cc4-bc0b-3f560ca72952","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-08 17:43:54 +0000 UTC FinishedAt: 2026-07-08 17:45:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*32e6b560-dd11-4cb6-95d3-db23ae561dc3,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-workflowdl76d/series-workflowdl76d-build-action-4289073906/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-workflowdl76d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_rt_send_redirect","ip_rt_get_source","rt_flush_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","series_id":"c14f8ba2-c725-4cc4-bc0b-3f560ca72952","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-08 17:46:00 +0000 UTC FinishedAt: 2026-07-08 17:46:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdl76d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_rt_send_redirect","ip_rt_get_source","rt_flush_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","series_id":"c14f8ba2-c725-4cc4-bc0b-3f560ca72952","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-08 17:46:00 +0000 UTC FinishedAt: 2026-07-08 17:46:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdl76d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_rt_send_redirect","ip_rt_get_source","rt_flush_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","series_id":"c14f8ba2-c725-4cc4-bc0b-3f560ca72952","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-08 17:46:00 +0000 UTC FinishedAt: 2026-07-08 18:13:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdl76d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_rt_send_redirect","ip_rt_get_source","rt_flush_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","series_id":"c14f8ba2-c725-4cc4-bc0b-3f560ca72952","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-08 17:46:00 +0000 UTC FinishedAt: 2026-07-08 18:13:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*30d12b1c-35d9-40f2-a079-38601242dbc4,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-workflowdl76d/series-workflowdl76d-convert-artifact-469594547/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": "49970fa0-cd8c-4edf-9203-a2cc8a697e0c", "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-workflowdl76d/series-workflowdl76d-build-action-3420355175/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdl76d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_rt_send_redirect","ip_rt_get_source","rt_flush_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","series_id":"c14f8ba2-c725-4cc4-bc0b-3f560ca72952","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-08 17:46:00 +0000 UTC FinishedAt: 2026-07-08 18:12:59 +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:*30d12b1c-35d9-40f2-a079-38601242dbc4,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-workflowdl76d/series-workflowdl76d-convert-artifact-469594547/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": "49970fa0-cd8c-4edf-9203-a2cc8a697e0c", "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-workflowdl76d/series-workflowdl76d-build-action-3420355175/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdl76d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_rt_send_redirect","ip_rt_get_source","rt_flush_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","series_id":"c14f8ba2-c725-4cc4-bc0b-3f560ca72952","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-08 18:13:07 +0000 UTC FinishedAt: 2026-07-08 18:13:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdl76d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_rt_send_redirect","ip_rt_get_source","rt_flush_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","series_id":"c14f8ba2-c725-4cc4-bc0b-3f560ca72952","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-08 18:13:07 +0000 UTC FinishedAt: 2026-07-08 18:13:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdl76d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_rt_send_redirect","ip_rt_get_source","rt_flush_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","series_id":"c14f8ba2-c725-4cc4-bc0b-3f560ca72952","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-08 18:13:07 +0000 UTC FinishedAt: 2026-07-08 18:15:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdl76d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_rt_send_redirect","ip_rt_get_source","rt_flush_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","series_id":"c14f8ba2-c725-4cc4-bc0b-3f560ca72952","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-08 18:13:07 +0000 UTC FinishedAt: 2026-07-08 18:14:58 +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:*49970fa0-cd8c-4edf-9203-a2cc8a697e0c,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-workflowdl76d/series-workflowdl76d-build-action-3420355175/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-workflowdl76d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_rt_send_redirect","ip_rt_get_source","rt_flush_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","series_id":"c14f8ba2-c725-4cc4-bc0b-3f560ca72952","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-08 18:15:08 +0000 UTC FinishedAt: 2026-07-08 21:18:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdl76d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_rt_send_redirect","ip_rt_get_source","rt_flush_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","series_id":"c14f8ba2-c725-4cc4-bc0b-3f560ca72952","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-08 18:15:08 +0000 UTC FinishedAt: 2026-07-08 21:18:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_rt_send_redirect","ip_rt_get_source","rt_flush_dev"],"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:*32e6b560-dd11-4cb6-95d3-db23ae561dc3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*49970fa0-cd8c-4edf-9203-a2cc8a697e0c,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-workflowdl76d/series-workflowdl76d-build-action-4289073906/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-workflowdl76d/series-workflowdl76d-build-action-3420355175/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowdl76d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_rt_send_redirect","ip_rt_get_source","rt_flush_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","series_id":"c14f8ba2-c725-4cc4-bc0b-3f560ca72952","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-08 18:15:08 +0000 UTC FinishedAt: 2026-07-08 18:15:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdl76d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_rt_send_redirect","ip_rt_get_source","rt_flush_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","series_id":"c14f8ba2-c725-4cc4-bc0b-3f560ca72952","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-08 18:15:08 +0000 UTC FinishedAt: 2026-07-08 18:15:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_rt_send_redirect","ip_rt_get_source","rt_flush_dev"],"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-workflowdl76d/series-workflowdl76d-convert-artifact-3671620268/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdl76d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_rt_send_redirect","ip_rt_get_source","rt_flush_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","series_id":"c14f8ba2-c725-4cc4-bc0b-3f560ca72952","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-08 18:15:08 +0000 UTC FinishedAt: 2026-07-08 18:15:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdl76d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_rt_send_redirect","ip_rt_get_source","rt_flush_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","series_id":"c14f8ba2-c725-4cc4-bc0b-3f560ca72952","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-08 18:15:08 +0000 UTC FinishedAt: 2026-07-08 18:15:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdl76d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_rt_send_redirect","ip_rt_get_source","rt_flush_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","series_id":"c14f8ba2-c725-4cc4-bc0b-3f560ca72952","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-08 18:15:08 +0000 UTC FinishedAt: 2026-07-08 18:15:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdl76d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_rt_send_redirect","ip_rt_get_source","rt_flush_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","series_id":"c14f8ba2-c725-4cc4-bc0b-3f560ca72952","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-08 18:15:18 +0000 UTC FinishedAt: 2026-07-08 21:18:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdl76d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_rt_send_redirect","ip_rt_get_source","rt_flush_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","series_id":"c14f8ba2-c725-4cc4-bc0b-3f560ca72952","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-08 18:15:18 +0000 UTC FinishedAt: 2026-07-08 21:17:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*32e6b560-dd11-4cb6-95d3-db23ae561dc3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*49970fa0-cd8c-4edf-9203-a2cc8a697e0c,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-workflowdl76d/series-workflowdl76d-build-action-4289073906/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-workflowdl76d/series-workflowdl76d-build-action-3420355175/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-workflowdl76d/series-workflowdl76d-convert-artifact-3671620268/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,}