Name: series-workflowrxhhh Phase: Succeeded StartedAt: 2026-08-01 04:49:54 +0000 UTC FinishedAt: 2026-08-01 06:00:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrxhhh[0] Phase: Succeeded StartedAt: 2026-08-01 04:49:54 +0000 UTC FinishedAt: 2026-08-01 04:53:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrxhhh[0].run-triage Phase: Succeeded StartedAt: 2026-08-01 04:49:55 +0000 UTC FinishedAt: 2026-08-01 04:53:02 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "dc59e4fea9d83f03bad6bddf3fa2e52491777482", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "STMMAC_ETH", "STMMAC_PCI" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "dc59e4fea9d83f03bad6bddf3fa2e52491777482", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "STMMAC_ETH", "STMMAC_PCI" ], "series_id": "9fdaf8ca-0bcc-4c5e-ad78-4609a90c7ba2" }, "track": "KASAN", "fuzz": { "focus": [ "bpf", "net" ], "focus_symbols": [ "stmmac_xdp_open", "stmmac_xdp_release", "stmmac_xdp_set_prog", "stmmac_bpf" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db", "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+CgkJCTx0ZD4yMDI2LzA4LzAxIDA0OjUxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BDSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3N0bW1hY194ZHBfb3BlbiYjMzQ7LAogICAgJiMzNDtzdG1tYWNfeGRwX3JlbGVhc2UmIzM0OywKICAgICYjMzQ7c3RtbWFjX3hkcF9zZXRfcHJvZyYjMzQ7LAogICAgJiMzNDtzdG1tYWNfYnBmJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBYRFAgb3BlbiBhbmQgcmVsZWFzZSBwYXRocyBpbiB0aGUgc3RtbWFjIEV0aGVybmV0IGRyaXZlci4gSXQgcmVwbGFjZXMgZnJlZWluZyBhbmQgcmUtcmVxdWVzdGluZyBJUlFzIHdpdGggZGlzYWJsaW5nIGFuZCBzeW5jaHJvbml6aW5nIERNQSBpbnRlcnJ1cHRzIGR1cmluZyBYRFAgcHJvZ3JhbSB1cGRhdGVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBjb3JlIGRyaXZlciB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSB0aGUgUENJIGludGVyZmFjZSwgd2hpY2ggc3l6a2FsbGVyIGNhbiBlbXVsYXRlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA0OjUxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMDRmNTdlMWRlOGJkZGM4MzliMWY4MmQ0YTQwY2NhYjcxMGIwOGE5NFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDEgMDQ6NTE6NTIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbmluZGV4IDJhMGQ3ZWZmODhkM2YuLjNjZjQzNjAxNDY4NmEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5AQCAtMjUzMSw2ICYjNDM7MjUzMSwyMyBAQCBzdGF0aWMgdm9pZCBzdG1tYWNfZW5hYmxlX2FsbF9kbWFfaXJxKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbiBcdH1cbiB9XG4gXG4mIzQzO3N0YXRpYyB2b2lkIHN0bW1hY19kaXNhYmxlX2FsbF9kbWFfaXJxKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbiYjNDM7e1xuJiM0MztcdHU4IHJ4X2NoYW5uZWxzX2NvdW50ID0gcHJpdi1cdTAwM2VwbGF0LVx1MDAzZXJ4X3F1ZXVlc190b191c2U7XG4mIzQzO1x0dTggdHhfY2hhbm5lbHNfY291bnQgPSBwcml2LVx1MDAzZXBsYXQtXHUwMDNldHhfcXVldWVzX3RvX3VzZTtcbiYjNDM7XHR1OCBkbWFfY3NyX2NoID0gbWF4KHJ4X2NoYW5uZWxzX2NvdW50LCB0eF9jaGFubmVsc19jb3VudCk7XG4mIzQzO1x0dTggY2hhbjtcbiYjNDM7XG4mIzQzO1x0Zm9yIChjaGFuID0gMDsgY2hhbiBcdTAwM2MgZG1hX2Nzcl9jaDsgY2hhbiYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdHN0cnVjdCBzdG1tYWNfY2hhbm5lbCAqY2ggPSBcdTAwMjZwcml2LVx1MDAzZWNoYW5uZWxbY2hhbl07XG4mIzQzO1x0XHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuJiM0MztcbiYjNDM7XHRcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmNoLVx1MDAzZWxvY2ssIGZsYWdzKTtcbiYjNDM7XHRcdHN0bW1hY19kaXNhYmxlX2RtYV9pcnEocHJpdiwgcHJpdi1cdTAwM2Vpb2FkZHIsIGNoYW4sIDEsIDEpO1xuJiM0MztcdFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZjaC1cdTAwM2Vsb2NrLCBmbGFncyk7XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO1xuIC8qKlxuICAqIHN0bW1hY19zdGFydF9hbGxfZG1hIC0gc3RhcnQgYWxsIFJYIGFuZCBUWCBETUEgY2hhbm5lbHNcbiAgKiBAcHJpdjogZHJpdmVyIHByaXZhdGUgc3RydWN0dXJlXG5AQCAtMzgxNCw2ICYjNDM7MzgzMSwzMyBAQCBzdGF0aWMgdm9pZCBzdG1tYWNfZnJlZV9pcnEoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdH1cbiB9XG4gXG4mIzQzO3N0YXRpYyB2b2lkIHN0bW1hY19zeW5jaHJvbml6ZV9pcnEoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KGRldik7XG4mIzQzO1x0c3RydWN0IHN0bW1hY19tc2kgKm1zaSA9IHByaXYtXHUwMDNlbXNpO1xuJiM0MztcdGludCBqO1xuJiM0MztcbiYjNDM7XHRmb3IgKGogPSBwcml2LVx1MDAzZXBsYXQtXHUwMDNldHhfcXVldWVzX3RvX3VzZSAtIDE7IG1zaSBcdTAwMjZcdTAwMjYgaiBcdTAwM2U9IDA7IGotLSkge1xuJiM0MztcdFx0aWYgKG1zaS1cdTAwM2V0eF9pcnFbal0gXHUwMDNlIDApXG4mIzQzO1x0XHRcdHN5bmNocm9uaXplX2lycShtc2ktXHUwMDNldHhfaXJxW2pdKTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGZvciAoaiA9IHByaXYtXHUwMDNlcGxhdC1cdTAwM2VyeF9xdWV1ZXNfdG9fdXNlIC0gMTsgbXNpIFx1MDAyNlx1MDAyNiBqIFx1MDAzZT0gMDsgai0tKSB7XG4mIzQzO1x0XHRpZiAobXNpLVx1MDAzZXJ4X2lycVtqXSBcdTAwM2UgMClcbiYjNDM7XHRcdFx0c3luY2hyb25pemVfaXJxKG1zaS1cdTAwM2VyeF9pcnFbal0pO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0aWYgKG1zaSBcdTAwMjZcdTAwMjYgbXNpLVx1MDAzZXNmdHlfdWVfaXJxIFx1MDAzZSAwIFx1MDAyNlx1MDAyNiBtc2ktXHUwMDNlc2Z0eV91ZV9pcnEgIT0gZGV2LVx1MDAzZWlycSlcbiYjNDM7XHRcdHN5bmNocm9uaXplX2lycShtc2ktXHUwMDNlc2Z0eV91ZV9pcnEpO1xuJiM0MztcdGlmIChtc2kgXHUwMDI2XHUwMDI2IG1zaS1cdTAwM2VzZnR5X2NlX2lycSBcdTAwM2UgMCBcdTAwMjZcdTAwMjYgbXNpLVx1MDAzZXNmdHlfY2VfaXJxICE9IGRldi1cdTAwM2VpcnEpXG4mIzQzO1x0XHRzeW5jaHJvbml6ZV9pcnEobXNpLVx1MDAzZXNmdHlfY2VfaXJxKTtcbiYjNDM7XHRpZiAocHJpdi1cdTAwM2V3b2xfaXJxIFx1MDAzZSAwIFx1MDAyNlx1MDAyNiBwcml2LVx1MDAzZXdvbF9pcnEgIT0gZGV2LVx1MDAzZWlycSlcbiYjNDM7XHRcdHN5bmNocm9uaXplX2lycShwcml2LVx1MDAzZXdvbF9pcnEpO1xuJiM0MztcdGlmIChwcml2LVx1MDAzZXNmdHlfaXJxIFx1MDAzZSAwIFx1MDAyNlx1MDAyNiBwcml2LVx1MDAzZXNmdHlfaXJxICE9IGRldi1cdTAwM2VpcnEpXG4mIzQzO1x0XHRzeW5jaHJvbml6ZV9pcnEocHJpdi1cdTAwM2VzZnR5X2lycSk7XG4mIzQzO1x0c3luY2hyb25pemVfaXJxKGRldi1cdTAwM2VpcnEpO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBpbnQgc3RtbWFjX21zaV9pbml0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiBcdFx0XHQgICBzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyAqcmVzKVxuIHtcbkBAIC03MTA4LDggJiM0Mzs3MTUyLDkgQEAgdm9pZCBzdG1tYWNfeGRwX3JlbGVhc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdGZvciAoY2hhbiA9IDA7IGNoYW4gXHUwMDNjIHByaXYtXHUwMDNlcGxhdC1cdTAwM2V0eF9xdWV1ZXNfdG9fdXNlOyBjaGFuJiM0MzsmIzQzOylcbiBcdFx0aHJ0aW1lcl9jYW5jZWwoXHUwMDI2cHJpdi1cdTAwM2VkbWFfY29uZi50eF9xdWV1ZVtjaGFuXS50eHRpbWVyKTtcbiBcbi1cdC8qIEZyZWUgdGhlIElSUSBsaW5lcyAqL1xuLVx0c3RtbWFjX2ZyZWVfaXJxKGRldiwgUkVRX0lSUV9FUlJfQUxMLCAwKTtcbiYjNDM7XHQvKiBTaWxlbmNlIERNQSBpbnRlcnJ1cHRzICovXG4mIzQzO1x0c3RtbWFjX2Rpc2FibGVfYWxsX2RtYV9pcnEocHJpdik7XG4mIzQzO1x0c3RtbWFjX3N5bmNocm9uaXplX2lycShkZXYpO1xuIFxuIFx0LyogU3RvcCBUWC9SWCBETUEgY2hhbm5lbHMgKi9cbiBcdHN0bW1hY19zdG9wX2FsbF9kbWEocHJpdik7XG5AQCAtNzEzMiw3ICYjNDM7NzE3Nyw2IEBAIGludCBzdG1tYWNfeGRwX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KGRldik7XG4gXHR1OCByeF9jbnQgPSBwcml2LVx1MDAzZXBsYXQtXHUwMDNlcnhfcXVldWVzX3RvX3VzZTtcbiBcdHU4IHR4X2NudCA9IHByaXYtXHUwMDNlcGxhdC1cdTAwM2V0eF9xdWV1ZXNfdG9fdXNlO1xuLVx0dTggZG1hX2Nzcl9jaCA9IG1heChyeF9jbnQsIHR4X2NudCk7XG4gXHRzdHJ1Y3Qgc3RtbWFjX3J4X3F1ZXVlICpyeF9xO1xuIFx0c3RydWN0IHN0bW1hY190eF9xdWV1ZSAqdHhfcTtcbiBcdGJvb2wgc3BoX2VuO1xuQEAgLTcxNTUsMTIgJiM0Mzs3MTk5LDYgQEAgaW50IHN0bW1hY194ZHBfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFxuIFx0c3RtbWFjX3Jlc2V0X3F1ZXVlc19wYXJhbShwcml2KTtcbiBcbi1cdC8qIERNQSBDU1IgQ2hhbm5lbCBjb25maWd1cmF0aW9uICovXG4tXHRmb3IgKGNoYW4gPSAwOyBjaGFuIFx1MDAzYyBkbWFfY3NyX2NoOyBjaGFuJiM0MzsmIzQzOykge1xuLVx0XHRzdG1tYWNfaW5pdF9jaGFuKHByaXYsIHByaXYtXHUwMDNlaW9hZGRyLCBwcml2LVx1MDAzZXBsYXQtXHUwMDNlZG1hX2NmZywgY2hhbik7XG4tXHRcdHN0bW1hY19kaXNhYmxlX2RtYV9pcnEocHJpdiwgcHJpdi1cdTAwM2Vpb2FkZHIsIGNoYW4sIDEsIDEpO1xuLVx0fVxuLVxuIFx0LyogQWRqdXN0IFNwbGl0IGhlYWRlciAqL1xuIFx0c3BoX2VuID0gKHByaXYtXHUwMDNlaHctXHUwMDNlcnhfY3N1bSBcdTAwM2UgMCkgXHUwMDI2XHUwMDI2IHByaXYtXHUwMDNlc3BoX2FjdGl2ZTtcbiBcbkBAIC03MTk3LDEwICYjNDM7NzIzNSw2IEBAIGludCBzdG1tYWNfeGRwX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdC8qIFN0YXJ0IFJ4IFx1MDAyNiBUeCBETUEgQ2hhbm5lbHMgKi9cbiBcdHN0bW1hY19zdGFydF9hbGxfZG1hKHByaXYpO1xuIFxuLVx0cmV0ID0gc3RtbWFjX3JlcXVlc3RfaXJxKGRldik7XG4tXHRpZiAocmV0KVxuLVx0XHRnb3RvIGlycV9lcnJvcjtcbi1cbiBcdC8qIEVuYWJsZSBOQVBJIHByb2Nlc3MqL1xuIFx0c3RtbWFjX2VuYWJsZV9hbGxfcXVldWVzKHByaXYpO1xuIFx0bmV0aWZfY2Fycmllcl9vbihkZXYpO1xuQEAgLTcyMDksMTAgJiM0Mzs3MjQzLDYgQEAgaW50IHN0bW1hY194ZHBfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFxuIFx0cmV0dXJuIDA7XG4gXG4taXJxX2Vycm9yOlxuLVx0Zm9yIChjaGFuID0gMDsgY2hhbiBcdTAwM2MgcHJpdi1cdTAwM2VwbGF0LVx1MDAzZXR4X3F1ZXVlc190b191c2U7IGNoYW4mIzQzOyYjNDM7KVxuLVx0XHRocnRpbWVyX2NhbmNlbChcdTAwMjZwcml2LVx1MDAzZWRtYV9jb25mLnR4X3F1ZXVlW2NoYW5dLnR4dGltZXIpO1xuLVxuIGluaXRfZXJyb3I6XG4gXHRmcmVlX2RtYV9kZXNjX3Jlc291cmNlcyhwcml2LCBcdTAwMjZwcml2LVx1MDAzZWRtYV9jb25mKTtcbiBkbWFfZGVzY19lcnJvcjpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNDo1MTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7U1RNTUFDX0VUSCYjMzQ7LAogICAgJiMzNDtTVE1NQUNfUENJJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c3RtbWFjX3hkcF9vcGVuJiMzNDssCiAgICAmIzM0O3N0bW1hY194ZHBfcmVsZWFzZSYjMzQ7LAogICAgJiMzNDtzdG1tYWNfeGRwX3NldF9wcm9nJiMzNDssCiAgICAmIzM0O3N0bW1hY19icGYmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFhEUCBvcGVuIGFuZCByZWxlYXNlIHBhdGhzIGluIHRoZSBzdG1tYWMgRXRoZXJuZXQgZHJpdmVyLiBJdCByZXBsYWNlcyBmcmVlaW5nIGFuZCByZS1yZXF1ZXN0aW5nIElSUXMgd2l0aCBkaXNhYmxpbmcgYW5kIHN5bmNocm9uaXppbmcgRE1BIGludGVycnVwdHMgZHVyaW5nIFhEUCBwcm9ncmFtIHVwZGF0ZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGNvcmUgZHJpdmVyIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIHRoZSBQQ0kgaW50ZXJmYWNlLCB3aGljaCBzeXprYWxsZXIgY2FuIGVtdWxhdGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAwNGY1N2UxZGU4YmRkYzgzOWIxZjgyZDRhNDBjY2FiNzEwYjA4YTk0CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBBdWcgMSAwNDo1MTo1MiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jCmluZGV4IDJhMGQ3ZWZmODhkM2YuLjNjZjQzNjAxNDY4NmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYwpAQCAtMjUzMSw2ICYjNDM7MjUzMSwyMyBAQCBzdGF0aWMgdm9pZCBzdG1tYWNfZW5hYmxlX2FsbF9kbWFfaXJxKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdikKIAl9CiB9CiAKJiM0MztzdGF0aWMgdm9pZCBzdG1tYWNfZGlzYWJsZV9hbGxfZG1hX2lycShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpCiYjNDM7ewomIzQzOwl1OCByeF9jaGFubmVsc19jb3VudCA9IHByaXYtJmd0O3BsYXQtJmd0O3J4X3F1ZXVlc190b191c2U7CiYjNDM7CXU4IHR4X2NoYW5uZWxzX2NvdW50ID0gcHJpdi0mZ3Q7cGxhdC0mZ3Q7dHhfcXVldWVzX3RvX3VzZTsKJiM0MzsJdTggZG1hX2Nzcl9jaCA9IG1heChyeF9jaGFubmVsc19jb3VudCwgdHhfY2hhbm5lbHNfY291bnQpOwomIzQzOwl1OCBjaGFuOwomIzQzOwomIzQzOwlmb3IgKGNoYW4gPSAwOyBjaGFuICZsdDsgZG1hX2Nzcl9jaDsgY2hhbiYjNDM7JiM0MzspIHsKJiM0MzsJCXN0cnVjdCBzdG1tYWNfY2hhbm5lbCAqY2ggPSAmYW1wO3ByaXYtJmd0O2NoYW5uZWxbY2hhbl07CiYjNDM7CQl1bnNpZ25lZCBsb25nIGZsYWdzOwomIzQzOwomIzQzOwkJc3Bpbl9sb2NrX2lycXNhdmUoJmFtcDtjaC0mZ3Q7bG9jaywgZmxhZ3MpOwomIzQzOwkJc3RtbWFjX2Rpc2FibGVfZG1hX2lycShwcml2LCBwcml2LSZndDtpb2FkZHIsIGNoYW4sIDEsIDEpOwomIzQzOwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYW1wO2NoLSZndDtsb2NrLCBmbGFncyk7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiAvKioKICAqIHN0bW1hY19zdGFydF9hbGxfZG1hIC0gc3RhcnQgYWxsIFJYIGFuZCBUWCBETUEgY2hhbm5lbHMKICAqIEBwcml2OiBkcml2ZXIgcHJpdmF0ZSBzdHJ1Y3R1cmUKQEAgLTM4MTQsNiAmIzQzOzM4MzEsMzMgQEAgc3RhdGljIHZvaWQgc3RtbWFjX2ZyZWVfaXJxKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJfQogfQogCiYjNDM7c3RhdGljIHZvaWQgc3RtbWFjX3N5bmNocm9uaXplX2lycShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQomIzQzO3sKJiM0MzsJc3RydWN0IHN0bW1hY19wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTsKJiM0MzsJc3RydWN0IHN0bW1hY19tc2kgKm1zaSA9IHByaXYtJmd0O21zaTsKJiM0MzsJaW50IGo7CiYjNDM7CiYjNDM7CWZvciAoaiA9IHByaXYtJmd0O3BsYXQtJmd0O3R4X3F1ZXVlc190b191c2UgLSAxOyBtc2kgJmFtcDsmYW1wOyBqICZndDs9IDA7IGotLSkgewomIzQzOwkJaWYgKG1zaS0mZ3Q7dHhfaXJxW2pdICZndDsgMCkKJiM0MzsJCQlzeW5jaHJvbml6ZV9pcnEobXNpLSZndDt0eF9pcnFbal0pOwomIzQzOwl9CiYjNDM7CiYjNDM7CWZvciAoaiA9IHByaXYtJmd0O3BsYXQtJmd0O3J4X3F1ZXVlc190b191c2UgLSAxOyBtc2kgJmFtcDsmYW1wOyBqICZndDs9IDA7IGotLSkgewomIzQzOwkJaWYgKG1zaS0mZ3Q7cnhfaXJxW2pdICZndDsgMCkKJiM0MzsJCQlzeW5jaHJvbml6ZV9pcnEobXNpLSZndDtyeF9pcnFbal0pOwomIzQzOwl9CiYjNDM7CiYjNDM7CWlmIChtc2kgJmFtcDsmYW1wOyBtc2ktJmd0O3NmdHlfdWVfaXJxICZndDsgMCAmYW1wOyZhbXA7IG1zaS0mZ3Q7c2Z0eV91ZV9pcnEgIT0gZGV2LSZndDtpcnEpCiYjNDM7CQlzeW5jaHJvbml6ZV9pcnEobXNpLSZndDtzZnR5X3VlX2lycSk7CiYjNDM7CWlmIChtc2kgJmFtcDsmYW1wOyBtc2ktJmd0O3NmdHlfY2VfaXJxICZndDsgMCAmYW1wOyZhbXA7IG1zaS0mZ3Q7c2Z0eV9jZV9pcnEgIT0gZGV2LSZndDtpcnEpCiYjNDM7CQlzeW5jaHJvbml6ZV9pcnEobXNpLSZndDtzZnR5X2NlX2lycSk7CiYjNDM7CWlmIChwcml2LSZndDt3b2xfaXJxICZndDsgMCAmYW1wOyZhbXA7IHByaXYtJmd0O3dvbF9pcnEgIT0gZGV2LSZndDtpcnEpCiYjNDM7CQlzeW5jaHJvbml6ZV9pcnEocHJpdi0mZ3Q7d29sX2lycSk7CiYjNDM7CWlmIChwcml2LSZndDtzZnR5X2lycSAmZ3Q7IDAgJmFtcDsmYW1wOyBwcml2LSZndDtzZnR5X2lycSAhPSBkZXYtJmd0O2lycSkKJiM0MzsJCXN5bmNocm9uaXplX2lycShwcml2LSZndDtzZnR5X2lycSk7CiYjNDM7CXN5bmNocm9uaXplX2lycShkZXYtJmd0O2lycSk7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBzdG1tYWNfbXNpX2luaXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LAogCQkJICAgc3RydWN0IHN0bW1hY19yZXNvdXJjZXMgKnJlcykKIHsKQEAgLTcxMDgsOCAmIzQzOzcxNTIsOSBAQCB2b2lkIHN0bW1hY194ZHBfcmVsZWFzZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCWZvciAoY2hhbiA9IDA7IGNoYW4gJmx0OyBwcml2LSZndDtwbGF0LSZndDt0eF9xdWV1ZXNfdG9fdXNlOyBjaGFuJiM0MzsmIzQzOykKIAkJaHJ0aW1lcl9jYW5jZWwoJmFtcDtwcml2LSZndDtkbWFfY29uZi50eF9xdWV1ZVtjaGFuXS50eHRpbWVyKTsKIAotCS8qIEZyZWUgdGhlIElSUSBsaW5lcyAqLwotCXN0bW1hY19mcmVlX2lycShkZXYsIFJFUV9JUlFfRVJSX0FMTCwgMCk7CiYjNDM7CS8qIFNpbGVuY2UgRE1BIGludGVycnVwdHMgKi8KJiM0MzsJc3RtbWFjX2Rpc2FibGVfYWxsX2RtYV9pcnEocHJpdik7CiYjNDM7CXN0bW1hY19zeW5jaHJvbml6ZV9pcnEoZGV2KTsKIAogCS8qIFN0b3AgVFgvUlggRE1BIGNoYW5uZWxzICovCiAJc3RtbWFjX3N0b3BfYWxsX2RtYShwcml2KTsKQEAgLTcxMzIsNyAmIzQzOzcxNzcsNiBAQCBpbnQgc3RtbWFjX3hkcF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAJc3RydWN0IHN0bW1hY19wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTsKIAl1OCByeF9jbnQgPSBwcml2LSZndDtwbGF0LSZndDtyeF9xdWV1ZXNfdG9fdXNlOwogCXU4IHR4X2NudCA9IHByaXYtJmd0O3BsYXQtJmd0O3R4X3F1ZXVlc190b191c2U7Ci0JdTggZG1hX2Nzcl9jaCA9IG1heChyeF9jbnQsIHR4X2NudCk7CiAJc3RydWN0IHN0bW1hY19yeF9xdWV1ZSAqcnhfcTsKIAlzdHJ1Y3Qgc3RtbWFjX3R4X3F1ZXVlICp0eF9xOwogCWJvb2wgc3BoX2VuOwpAQCAtNzE1NSwxMiAmIzQzOzcxOTksNiBAQCBpbnQgc3RtbWFjX3hkcF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAKIAlzdG1tYWNfcmVzZXRfcXVldWVzX3BhcmFtKHByaXYpOwogCi0JLyogRE1BIENTUiBDaGFubmVsIGNvbmZpZ3VyYXRpb24gKi8KLQlmb3IgKGNoYW4gPSAwOyBjaGFuICZsdDsgZG1hX2Nzcl9jaDsgY2hhbiYjNDM7JiM0MzspIHsKLQkJc3RtbWFjX2luaXRfY2hhbihwcml2LCBwcml2LSZndDtpb2FkZHIsIHByaXYtJmd0O3BsYXQtJmd0O2RtYV9jZmcsIGNoYW4pOwotCQlzdG1tYWNfZGlzYWJsZV9kbWFfaXJxKHByaXYsIHByaXYtJmd0O2lvYWRkciwgY2hhbiwgMSwgMSk7Ci0JfQotCiAJLyogQWRqdXN0IFNwbGl0IGhlYWRlciAqLwogCXNwaF9lbiA9IChwcml2LSZndDtody0mZ3Q7cnhfY3N1bSAmZ3Q7IDApICZhbXA7JmFtcDsgcHJpdi0mZ3Q7c3BoX2FjdGl2ZTsKIApAQCAtNzE5NywxMCAmIzQzOzcyMzUsNiBAQCBpbnQgc3RtbWFjX3hkcF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAJLyogU3RhcnQgUnggJmFtcDsgVHggRE1BIENoYW5uZWxzICovCiAJc3RtbWFjX3N0YXJ0X2FsbF9kbWEocHJpdik7CiAKLQlyZXQgPSBzdG1tYWNfcmVxdWVzdF9pcnEoZGV2KTsKLQlpZiAocmV0KQotCQlnb3RvIGlycV9lcnJvcjsKLQogCS8qIEVuYWJsZSBOQVBJIHByb2Nlc3MqLwogCXN0bW1hY19lbmFibGVfYWxsX3F1ZXVlcyhwcml2KTsKIAluZXRpZl9jYXJyaWVyX29uKGRldik7CkBAIC03MjA5LDEwICYjNDM7NzI0Myw2IEBAIGludCBzdG1tYWNfeGRwX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAogCXJldHVybiAwOwogCi1pcnFfZXJyb3I6Ci0JZm9yIChjaGFuID0gMDsgY2hhbiAmbHQ7IHByaXYtJmd0O3BsYXQtJmd0O3R4X3F1ZXVlc190b191c2U7IGNoYW4mIzQzOyYjNDM7KQotCQlocnRpbWVyX2NhbmNlbCgmYW1wO3ByaXYtJmd0O2RtYV9jb25mLnR4X3F1ZXVlW2NoYW5dLnR4dGltZXIpOwotCiBpbml0X2Vycm9yOgogCWZyZWVfZG1hX2Rlc2NfcmVzb3VyY2VzKHByaXYsICZhbXA7cHJpdi0mZ3Q7ZG1hX2NvbmYpOwogZG1hX2Rlc2NfZXJyb3I6CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA0OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2NDAKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAzOTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUGF0Y2ggdG8gdGhlIFNUTU1BQyBFdGhlcm5ldCBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0b3VjaGVzIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jYC4gSXQmIzM5O3MgYWRkaW5nIGBzdG1tYWNfZGlzYWJsZV9hbGxfZG1hX2lycWAgYW5kIGBzdG1tYWNfc3luY2hyb25pemVfaXJxYCwgYW5kIG1vZGlmeWluZyBgc3RtbWFjX3hkcF9yZWxlYXNlYCBhbmQgYHN0bW1hY194ZHBfb3BlbmAuIEludGVyZXN0aW5nLiBTcGVjaWZpY2FsbHksIGluIGBzdG1tYWNfeGRwX3JlbGVhc2VgLCB0aGV5JiMzOTtyZSByZXBsYWNpbmcgdGhlIHN0YW5kYXJkIGBzdG1tYWNfZnJlZV9pcnFgIHdpdGggdGhvc2UgbmV3IGZ1bmN0aW9ucywgYW5kIGluIGBzdG1tYWNfeGRwX29wZW5gLCB0aGV5JiMzOTtyZSB0YWtpbmcgb3V0IGBzdG1tYWNfcmVxdWVzdF9pcnFgIGFuZCBzb21lIERNQSBDU1IgY2hhbm5lbCBjb25maWcuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgZ2V0dGluZyBhIGhhbmRsZSBvbiB0aGUgYmlnZ2VyIHBpY3R1cmUgaGVyZS4KClRoaXMgaXMgdGhlIGRyaXZlciBmb3IgU1RNaWNyb2VsZWN0cm9uaWNzJiMzOTsgMTAvMTAwLzEwMDAvRVFPUyBFdGhlcm5ldCBNQUMuIE5vdywgYSBrZXkgcXVlc3Rpb24gcG9wcyB1cDogaXMgdGhpcyBzb21ldGhpbmcgdGhhdCBjb3VsZCBiZSByZWFjaGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cz8gV2UgaGF2ZSB0byBjb25zaWRlciB3aGV0aGVyIGl0JiMzOTtzIGEgUENJIGRldmljZSBvciBhIHBsYXRmb3JtIGRldmljZSwgYW5kIHdoZXRoZXIgdGhlIGRldmljZSBpcyBlbXVsYXRlZCBvciByZXF1aXJlcyBzcGVjaWZpYyBoYXJkd2FyZS4gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGF0IGBzdG1tYWNgIGlzIG9mdGVuIGEgcGxhdGZvcm0gZHJpdmVyIHVzZWQgaW4gU29DcywgYnV0IHRoZXJlIGlzIGFsc28gYSBQQ0kgd3JhcHBlciwgYHN0bW1hY19wY2lgLgoKT2theSwgSSBuZWVkIHRvIGludmVzdGlnYXRlIGlmIHRoaXMgaXMgc29tZXRoaW5nIHRoYXQgSSBjYW4gdGFyZ2V0IGluIFFFTVUgb3IgaWYgaXQmIzM5O3MgZnV6emFibGUuIFRvIHRoYXQgZW5kLCBJIHNob3VsZCBzZWFyY2ggZm9yIGBzdG1tYWNfcGNpYCBvciBgc3RtbWFjYCBnZW5lcmFsbHkgaW4gUUVNVS4gQWN0dWFsbHksIGBzdG1tYWNgIGlzIGEgdmVyeSBjb21tb24gZHJpdmVyLCBvZnRlbiBmb3VuZCBpbiBBUk0gU29DcywgYnV0LCBpdCBhbHNvIGhhcyBhIFBDSSBkcml2ZXIgYHN0bW1hY19wY2kuY2AuIFRoZSBxdWVzdGlvbiBiZWNvbWVzLCBjYW4gSSBmdXp6IHRoZSBgc3RtbWFjX3BjaWAgY2FzZT8gSXQmIzM5O3MgYSBQQ0kgZGV2aWNlLCBzbyBJIHNob3VsZCBiZSBhYmxlIHRvLiBJIHNob3VsZCBzdGFydCBieSBydW5uaW5nIGEgZ3JlcCBmb3IgYHN0bW1hY19wY2lgIG9yIGBzdG1tYWNgIFBDSSBJRHMgdG8gbmFycm93IHRoaXMgZG93bi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNDo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdG1tYWNfcGNpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlPTUzPW9iai0kKENPTkZJR19EV01BQ19NT1RPUkNPTU0pXHQmIzQzOz0gZHdtYWMtbW90b3Jjb21tLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjU0OnN0bW1hYy1wY2ktb2Jqczo9IHN0bW1hY19wY2kub1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9MjU9c3RydWN0IGludGVsX3ByaXZfZGF0YSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0zOS0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6NDA6c3RydWN0IHN0bW1hY19wY2lfZnVuY19kYXRhIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNDEtXHR1bnNpZ25lZCBpbnQgZnVuYztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTQ0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo0NTpzdHJ1Y3Qgc3RtbWFjX3BjaV9kbWlfZGF0YSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjQ2Olx0Y29uc3Qgc3RydWN0IHN0bW1hY19wY2lfZnVuY19kYXRhICpmdW5jO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy00Ny1cdHNpemVfdCBuZnVuY3M7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy00OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6NTA6c3RydWN0IHN0bW1hY19wY2lfaW5mbyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTUxLVx0aW50ICgqc2V0dXApKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9OTE9c3RhdGljIGNvbnN0IGludCBhZGxuX3Rzbl9sYW5lX3JlZ3NbXSA9IHs2fTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjkzOnN0YXRpYyBpbnQgc3RtbWFjX3BjaV9maW5kX3BoeV9hZGRyKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05NC1cdFx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgZG1pX3N5c3RlbV9pZCAqZG1pX2xpc3QpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTk1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6OTY6XHRjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9mdW5jX2RhdGEgKmZ1bmNfZGF0YTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6OTc6XHRjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9kbWlfZGF0YSAqZG1pX2RhdGE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTk4LVx0Y29uc3Qgc3RydWN0IGRtaV9zeXN0ZW1faWQgKmRtaV9pZDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTc1NT1zdGF0aWMgaW50IGVobF9zZ21paV9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNzc0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo3NzU6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gZWhsX3NnbWlpMWdfaW5mbyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNzc2LVx0LnNldHVwID0gZWhsX3NnbWlpX2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz03Nzk9c3RhdGljIGludCBlaGxfcmdtaWlfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTc4OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6NzkwOnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGVobF9yZ21paTFnX2luZm8gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTc5MS1cdC5zZXR1cCA9IGVobF9yZ21paV9kYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9ODEwPXN0YXRpYyBpbnQgZWhsX3BzZTBfcmdtaWkxZ19kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODE2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo4MTc6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gZWhsX3BzZTBfcmdtaWkxZ19pbmZvID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04MTgtXHQuc2V0dXAgPSBlaGxfcHNlMF9yZ21paTFnX2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz04MjE9c3RhdGljIGludCBlaGxfcHNlMF9zZ21paTFnX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04MzgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjgzOTpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBlaGxfcHNlMF9zZ21paTFnX2luZm8gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTg0MC1cdC5zZXR1cCA9IGVobF9wc2UwX3NnbWlpMWdfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTg1OT1zdGF0aWMgaW50IGVobF9wc2UxX3JnbWlpMWdfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTg2NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6ODY2OnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGVobF9wc2UxX3JnbWlpMWdfaW5mbyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODY3LVx0LnNldHVwID0gZWhsX3BzZTFfcmdtaWkxZ19kYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9ODcwPXN0YXRpYyBpbnQgZWhsX3BzZTFfc2dtaWkxZ19kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODg3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo4ODg6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gZWhsX3BzZTFfc2dtaWkxZ19pbmZvID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04ODktXHQuc2V0dXAgPSBlaGxfcHNlMV9zZ21paTFnX2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz05MTM9c3RhdGljIGludCB0Z2xfc2dtaWlfcGh5MF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTIxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo5MjI6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gdGdsX3NnbWlpMWdfcGh5MF9pbmZvID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05MjMtXHQuc2V0dXAgPSB0Z2xfc2dtaWlfcGh5MF9kYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9OTI2PXN0YXRpYyBpbnQgdGdsX3NnbWlpX3BoeTFfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTkzNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6OTM1OnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHRnbF9zZ21paTFnX3BoeTFfaW5mbyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTM2LVx0LnNldHVwID0gdGdsX3NnbWlpX3BoeTFfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTkzOT1zdGF0aWMgaW50IGFkbHNfc2dtaWlfcGh5MF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTQ4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo5NDk6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gYWRsc19zZ21paTFnX3BoeTBfaW5mbyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTUwLVx0LnNldHVwID0gYWRsc19zZ21paV9waHkwX2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz05NTM9c3RhdGljIGludCBhZGxzX3NnbWlpX3BoeTFfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTk2Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6OTYzOnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGFkbHNfc2dtaWkxZ19waHkxX2luZm8gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTk2NC1cdC5zZXR1cCA9IGFkbHNfc2dtaWlfcGh5MV9kYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9OTkyPXN0YXRpYyBpbnQgYWRsbl9zZ21paV9waHkwX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDEwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMDExOnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGFkbG5fc2dtaWkxZ19waHkwX2luZm8gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwMTItXHQuc2V0dXAgPSBhZGxuX3NnbWlpX3BoeTBfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwMTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEwMTU6c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2Z1bmNfZGF0YSBnYWxpbGVvX3N0bW1hY19mdW5jX2RhdGFbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTAxNi1cdHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwMjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEwMjI6c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2RtaV9kYXRhIGdhbGlsZW9fc3RtbWFjX2RtaV9kYXRhID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDIzLVx0LmZ1bmMgPSBnYWxpbGVvX3N0bW1hY19mdW5jX2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDI2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMDI3OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9mdW5jX2RhdGEgaW90MjA0MF9zdG1tYWNfZnVuY19kYXRhW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwMjgtXHR7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDM3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMDM4OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9kbWlfZGF0YSBpb3QyMDQwX3N0bW1hY19kbWlfZGF0YSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTAzOS1cdC5mdW5jID0gaW90MjA0MF9zdG1tYWNfZnVuY19kYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9MTA3OD1zdGF0aWMgaW50IHF1YXJrX2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwODgtXHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTA4OTpcdHJldCA9IHN0bW1hY19wY2lfZmluZF9waHlfYWRkcihwZGV2LCBxdWFya19wY2lfZG1pKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTA5MC1cdGlmIChyZXQgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTExMTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjExMTQ6c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gcXVhcmtfaW5mbyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTExNS1cdC5zZXR1cCA9IHF1YXJrX2RlZmF1bHRfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTEyMzI9c3RhdGljIGludCBpbnRlbF9ldGhfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTIzNC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEyMzU6XHRzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvICppbmZvID0gKHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gKilpZC1cdTAwM2Vkcml2ZXJfZGF0YTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTIzNi1cdHN0cnVjdCBpbnRlbF9wcml2X2RhdGEgKmludGVsX3ByaXY7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz03Nj1zdHJ1Y3QgbG9vbmdzb25fZGF0YSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy04MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6ODI6c3RydWN0IHN0bW1hY19wY2lfaW5mbyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTgzLVx0aW50ICgqc2V0dXApKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM9MTMyPXN0YXRpYyBpbnQgbG9vbmdzb25fZ21hY19kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtMTQxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzoxNDI6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gbG9vbmdzb25fZ21hY19wY2lfaW5mbyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtMTQzLVx0LnNldHVwID0gbG9vbmdzb25fZ21hY19kYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM9MTY1PXN0YXRpYyBpbnQgbG9vbmdzb25fZ25ldF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtMTc2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzoxNzc6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gbG9vbmdzb25fZ25ldF9wY2lfaW5mbyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtMTc4LVx0LnNldHVwID0gbG9vbmdzb25fZ25ldF9kYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM9NDk4PXN0YXRpYyBpbnQgbG9vbmdzb25fZHdtYWNfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTUwMS1cdHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzIHJlcyA9IHt9O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo1MDI6XHRzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvICppbmZvO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01MDMtXHRzdHJ1Y3QgbG9vbmdzb25fZGF0YSAqbGQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01MzctXHRwbGF0LVx1MDAzZWZpeF9zb2NfcmVzZXQgPSBsb29uZ3Nvbl9kd21hY19maXhfcmVzZXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjUzODpcdHBsYXQtXHUwMDNlc3VzcGVuZCA9IHN0bW1hY19wY2lfcGxhdF9zdXNwZW5kO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo1Mzk6XHRwbGF0LVx1MDAzZXJlc3VtZSA9IHN0bW1hY19wY2lfcGxhdF9yZXN1bWU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTU0MC1cdGxkLVx1MDAzZWRldiA9IFx1MDAyNnBkZXYtXHUwMDNlZGV2O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTQyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo1NDM6XHRpbmZvID0gKHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gKilpZC1cdTAwM2Vkcml2ZXJfZGF0YTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTQ0LVx0cmV0ID0gaW5mby1cdTAwM2VzZXR1cChwZGV2LCBwbGF0KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYz0xODg9c3RhdGljIGludCBtb3RvcmNvbW1fcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqYnNwX3ByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMTkyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MTkzOlx0cmV0ID0gc3RtbWFjX3BjaV9wbGF0X3Jlc3VtZShkZXYsIGJzcF9wcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTE5NC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM9MjA4PW1vdG9yY29tbV9kZWZhdWx0X3BsYXRfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0yNDgtXHRwbGF0LVx1MDAzZWNvcmVfdHlwZVx0XHQ9IERXTUFDX0NPUkVfR01BQzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzoyNDk6XHRwbGF0LVx1MDAzZXN1c3BlbmRcdFx0PSBzdG1tYWNfcGNpX3BsYXRfc3VzcGVuZDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTI1MC1cdHBsYXQtXHUwMDNlcmVzdW1lXHRcdD0gbW90b3Jjb21tX3Jlc3VtZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmMtMTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmM6MTI6aW50IHN0bW1hY19wY2lfcGxhdF9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqYnNwX3ByaXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmMtMTMte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuYy0yNS19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmM6MjY6RVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX3BjaV9wbGF0X3N1c3BlbmQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5jLTI3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5jOjI4OmludCBzdG1tYWNfcGNpX3BsYXRfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqYnNwX3ByaXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmMtMjkte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuYy00My19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmM6NDQ6RVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX3BjaV9wbGF0X3Jlc3VtZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmMtNDUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5oLTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmg6OTppbnQgc3RtbWFjX3BjaV9wbGF0X3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpic3BfcHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmg6MTA6aW50IHN0bW1hY19wY2lfcGxhdF9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpic3BfcHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmgtMTEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjE5OnN0cnVjdCBzdG1tYWNfcGNpX2luZm8ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIwLVx0aW50ICgqc2V0dXApKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0zMz1zdGF0aWMgaW50IHN0bW1hY19kZWZhdWx0X2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTQ5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjUwOnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHN0bW1hY19wY2lfaW5mbyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy01MS1cdC5zZXR1cCA9IHN0bW1hY19kZWZhdWx0X2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTU0PXN0YXRpYyBpbnQgc25wc19nbWFjNV9kZWZhdWx0X2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEwMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxMDI6c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gc25wc19nbWFjNV9wY2lfaW5mbyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xMDMtXHQuc2V0dXAgPSBzbnBzX2dtYWM1X2RlZmF1bHRfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTA2LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjEwNzogKiBzdG1tYWNfcGNpX3Byb2JlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTA4LSAqXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTExNy0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxMTg6c3RhdGljIGludCBzdG1tYWNfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTExOS1cdFx0XHQgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEyMC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTIxOlx0c3RydWN0IHN0bW1hY19wY2lfaW5mbyAqaW5mbyA9IChzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvICopaWQtXHUwMDNlZHJpdmVyX2RhdGE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTIyLVx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xNzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTgwOlx0cGxhdC1cdTAwM2VzdXNwZW5kID0gc3RtbWFjX3BjaV9wbGF0X3N1c3BlbmQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTgxOlx0cGxhdC1cdTAwM2VyZXN1bWUgPSBzdG1tYWNfcGNpX3BsYXRfcmVzdW1lO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE4Mi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTg2LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjE4NzogKiBzdG1tYWNfcGNpX3JlbW92ZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE4OC0gKlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xOTEtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTkyOnN0YXRpYyB2b2lkIHN0bW1hY19wY2lfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE5My17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTIwMz1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgc3RtbWFjX2lkX3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjA0Olx0eyBQQ0lfREVWSUNFX0RBVEEoU1RNTUFDLCBTVE1NQUMsIFx1MDAyNnN0bW1hY19wY2lfaW5mbykgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMDU6XHR7IFBDSV9ERVZJQ0VfREFUQShTVE1JQ1JPLCBNQUMsIFx1MDAyNnN0bW1hY19wY2lfaW5mbykgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMDYtXHR7IFBDSV9ERVZJQ0VfREFUQShTWU5PUFNZUywgR01BQzVfSUQsIFx1MDAyNnNucHNfZ21hYzVfcGNpX2luZm8pIH0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTIxMD1NT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgc3RtbWFjX2lkX3RhYmxlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjEyOnN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBzdG1tYWNfcGNpX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMTMtXHQubmFtZSA9IFNUTU1BQ19SRVNPVVJDRV9OQU1FLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIxNC1cdC5pZF90YWJsZSA9IHN0bW1hY19pZF90YWJsZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMTU6XHQucHJvYmUgPSBzdG1tYWNfcGNpX3Byb2JlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIxNjpcdC5yZW1vdmUgPSBzdG1tYWNfcGNpX3JlbW92ZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMTctXHQuZHJpdmVyICAgICAgICAgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIyMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMjI6bW9kdWxlX3BjaV9kcml2ZXIoc3RtbWFjX3BjaV9kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIyMy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNDo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTc0OQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDM3OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIFNUTU1BQyBEcml2ZXIgYW5kIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGUgYHN0bW1hY2AgZHJpdmVyIGFuZCB0aGUgYHN0bW1hY19wY2kuY2AgUENJIHdyYXBwZXIsIHdoaWNoIHJlZ2lzdGVycyB0aGUgUENJIGRyaXZlci4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7Q2FuIHdlIGZ1enogdGhpcyBpbiBRRU1VPyYjMzQ7LiBTeXprYWxsZXIgaXMgdGhlIG9idmlvdXMgdG9vbCwgYW5kIGl0IG9mdGVuIGhhbmRsZXMgUENJIGRldmljZXMgYnkgZWl0aGVyIGVtdWxhdGluZyB0aGVtIHdpdGggYHN5el9wY2lfc2V0dXBgIG9yIHVzaW5nIHZpcnR1YWwgZGV2aWNlcyBpZiB0aGV5JiMzOTtyZSBub3Qgc3RhbmRhcmQgUUVNVSBjb21wb25lbnRzLiBUaGUga2V5IGhlcmUgaXMsIGlzIGBzdG1tYWNgIHN0YW5kYXJkPyBObywgaXQmIzM5O3Mgbm90IGEgc3RhbmRhcmQgUUVNVSBkZXZpY2UuIEJ1dCwgU3l6a2FsbGVyICpkb2VzKiBoYXZlIHRoaXMgdmlydHVhbCBQQ0kgZGV2aWNlIGZ1enplci4uLiBzbyBtYXliZT8KClRoZW4gSSB0aGluaywgJiMzNDtIYXMgU3l6a2FsbGVyIGFscmVhZHkgdGFja2xlZCBgc3RtbWFjYD8mIzM0Oy4gSSBzZWUgYSBjb21taXQgbWVzc2FnZSBtZW50aW9uaW5nIGBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdgLCB3aGljaCBzdHJvbmdseSBzdWdnZXN0cyBzb21lb25lJiMzOTtzIHN1Ym1pdHRlZCBhIHBhdGNoIHRvIFN5emthbGxlciBzcGVjaWZpY2FsbHkgZm9yIHRoaXMgZHJpdmVyLCBvciBhdCBsZWFzdCB0aGV5JiMzOTtyZSB0ZXN0aW5nIGl0LgoKV2FpdCwgbm93IEkmIzM5O20gcmVhZGluZyB0aGUgb3JpZ2luYWwgcHJvbXB0LCBhbmQgaXQgbWVudGlvbnMgYXZvaWRpbmcgZnV6emluZyBvZiBzcGVjaWZpYyB2ZW5kb3Itc3BlY2lmaWMgUENJZSBkZXZpY2VzIGxpa2UgU21hcnROSUNzLCBHUFVzLCBhbmQgUENJZSBzd2l0Y2hlcy4uLiBpcyBgc3RtbWFjYCBvbmUgb2YgdGhvc2U/IE5vLCB0aGF0JiMzOTtzIG5vdCByaWdodC4gSXQmIzM5O3MgYSBzdGFuZGFyZCBFdGhlcm5ldCBNQUMgZHJpdmVyLCBEZXNpZ25XYXJlIE1BQywgd2hpY2ggaXMgcXVpdGUgY29tbW9uLCBzbyB0aGF0JiMzOTtzIGEgbm8gb24gdGhlIGV4Y2x1c2lvbiBjbGF1c2UuCgpBaCwgdGhlIHBhdGNoIGl0c2VsZiBpcyBmb2N1c2VkIG9uIGBzdG1tYWNfeGRwX3JlbGVhc2VgIGFuZCBgc3RtbWFjX3hkcF9vcGVuYC4gVGhlc2UgYXJlIFhEUCAoZUJQRikgcmVsYXRlZCBmdW5jdGlvbnMuIE5vdyBJJiMzOTttIHRoaW5raW5nLCAmIzM0O0lzIGBzdG1tYWNfeGRwX29wZW5gIHJlYWNoYWJsZT8mIzM0Oy4gSXQgbG9va3MgbGlrZSBpdCBnZXRzIGNhbGxlZCB3aGVuIHdlIGF0dGFjaCBvciBkZXRhY2ggYW4gWERQIHByb2dyYW0sIG9yIHdoZW4gdGhlIGludGVyZmFjZSBpcyBicm91Z2h0IHVwIHdpdGggWERQLiBTbywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGwgcGF0aHMgdG8gYHN0bW1hY194ZHBfb3BlbmAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDQ6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RtbWFjX3hkcF9vcGVuJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oPTQwNz12b2lkIHN0bW1hY19wdHBfdW5yZWdpc3RlcihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmg6NDA4OmludCBzdG1tYWNfeGRwX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaC00MDktdm9pZCBzdG1tYWNfeGRwX3JlbGVhc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03MTQxPXZvaWQgc3RtbWFjX3hkcF9yZWxlYXNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MTc0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3MTc1OmludCBzdG1tYWNfeGRwX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzE3Ni17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jPTEwMj1pbnQgc3RtbWFjX3hkcF9zZXRfcHJvZyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmMtMTM0LVx0aWYgKGlmX3J1bm5pbmcgXHUwMDI2XHUwMDI2IG5lZWRfdXBkYXRlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jOjEzNTpcdFx0c3RtbWFjX3hkcF9vcGVuKGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmMtMTM2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA0OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzMDQxCgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogNTA4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBzdG1tYWNgIERyaXZlciYjMzk7cyBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyBgc3RtbWFjX3hkcF9vcGVuYCBpcyBjYWxsZWQgYnkgYHN0bW1hY194ZHBfc2V0X3Byb2dgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgY2FuIEkgZXZlbiByZWFjaCB0aGlzIHRoaW5nIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IFFFTVUsIGJ5IGRlZmF1bHQsIGRvZXNuJiMzOTt0IGVtdWxhdGUgYHN0bW1hY2AuIEhvd2V2ZXIsIEkgcmVjYWxsIFFFTVUgKmRvZXMqIGhhdmUgZW11bGF0ZWQgbmV0d29yayBoYXJkd2FyZSBpbiBwbGFjZXMgbGlrZSBgaHcvbmV0L2lteF9mZWMuY2AsIGBody9uZXQvY2FkZW5jZV9nZW0uY2AsIGFuZCBzZXZlcmFsIG90aGVycy4gRG9lcyBpdCAqYWxzbyogZW11bGF0ZSBEZXNpZ25XYXJlIE1BQ3MsIHdoaWNoIGlzIHdoYXQgYHN0bW1hY2AgZHJpdmVzPyBZZXMhIFFFTVUgKmRvZXMqIGVtdWxhdGUgdGhlIGBkZXNpZ253YXJlYCBNQUMsIHNwZWNpZmljYWxseSBpbiBgaHcvbmV0L2Rlc2lnbndhcmUuY2AuIFRoYXQmIzM5O3MgdGhlIGtleS4KCkxldCBtZSBjb25maXJtIHF1aWNrbHk6IFFFTVUmIzM5O3MgYGh3L25ldC9kZXNpZ253YXJlLmNgIGVtdWxhdGVzIHRoZSBTeW5vcHN5cyBEZXNpZ25XYXJlIDEwLzEwMC8xMDAwIEV0aGVybmV0IE1BQywgd2hpY2ggaXMgKmV4YWN0bHkqIHdoYXQgYHN0bW1hY2AgaW50ZXJhY3RzIHdpdGguIFRoaXMgaXMgcHJvbWlzaW5nLgoKTm93LCBjb25zaWRlcmluZyBmdXp6aW5nLCBzeXprYWxsZXIgaGFzIGBzeXpfdXNiX2Nvbm5lY3RgIGZvciBVU0IgYW5kIGBzeXpfcGNpX3NldHVwYCBmb3IgUENJLiBgc3RtbWFjYCBpcyBvZnRlbiBhIHBsYXRmb3JtIGRldmljZSwgYnV0IHN5emthbGxlciAqY2FuKiBmdXp6IHBsYXRmb3JtIGRldmljZXMgaWYgdGhleSYjMzk7cmUgaW5zdGFudGlhdGVkIHRocm91Z2ggdGhlIGRldmljZSB0cmVlIG9yLCBpbXBvcnRhbnRseSwgaWYgdGhleSYjMzk7cmUgUENJIGRldmljZXMuIEFuZCB3YWl0Li4uIGBzdG1tYWNfcGNpYCAqaXMqIGEgUENJIGRyaXZlciEgU3l6a2FsbGVyJiMzOTtzIFBDSSBmdXp6ZXIgY2FuIHBvdGVudGlhbGx5IGluc3RhbnRpYXRlIGl0ISBUaGlzIGlzIGV4Y2VsbGVudCBuZXdzLgoKVGhlIHBhdGNoIGl0c2VsZiBpcyBtb2RpZnlpbmcgYHN0bW1hY19kaXNhYmxlX2FsbF9kbWFfaXJxYCwgYHN0bW1hY19zeW5jaHJvbml6ZV9pcnFgLCBgc3RtbWFjX3hkcF9yZWxlYXNlYCwgYW5kIGBzdG1tYWNfeGRwX29wZW5gLiBUaGVzZSBhcmUga2VybmVsIGZ1bmN0aW9uYWwgY2hhbmdlcywgYW5kIHRoaXMgaXMgcHJpbWUgZnV6emluZyB0ZXJyaXRvcnkuCgpJcyB0aGlzIHdvcnRoIHRoZSBlZmZvcnQ/IEFic29sdXRlbHkuIFRoZSBmb2N1cyBzeW1ib2xzIGFyZSBjbGVhcmx5OiBgc3RtbWFjX3hkcF9vcGVuYCwgYHN0bW1hY194ZHBfcmVsZWFzZWAsIGBzdG1tYWNfZGlzYWJsZV9hbGxfZG1hX2lycWAsIGFuZCBgc3RtbWFjX3N5bmNocm9uaXplX2lycWAuIFdhaXQgYSBzZWNvbmQgdGhvdWdoLCBgc3RtbWFjX2Rpc2FibGVfYWxsX2RtYV9pcnFgIGFuZCBgc3RtbWFjX3N5bmNocm9uaXplX2lycWAgYXJlIHN0YXRpYyBmdW5jdGlvbnMuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgaWYgdGhleSYjMzk7cmUgaW5saW5lZCBvciBhY2Nlc3NpYmxlIGluIGEgd2F5IHRoYXQgYWxsb3dzIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDQ6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RtbWFjX2Rpc2FibGVfYWxsX2RtYV9pcnEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0yNTE3PXN0YXRpYyB2b2lkIHN0bW1hY19lbmFibGVfYWxsX2RtYV9pcnEoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjUzMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjUzNDpzdGF0aWMgdm9pZCBzdG1tYWNfZGlzYWJsZV9hbGxfZG1hX2lycShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI1MzUte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzE0MT12b2lkIHN0bW1hY194ZHBfcmVsZWFzZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzE1NS1cdC8qIFNpbGVuY2UgRE1BIGludGVycnVwdHMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzE1NjpcdHN0bW1hY19kaXNhYmxlX2FsbF9kbWFfaXJxKHByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MTU3LVx0c3RtbWFjX3N5bmNocm9uaXplX2lycShkZXYpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA0OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0NDg1CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkFuYWx5emluZyBTdGF0aWMgRnVuY3Rpb25zIGFuZCBQb3RlbnRpYWwgWERQIEludGVyYWN0aW9ucyBpbiB0aGUgU1RNTUFDIERyaXZlcioqCgpBbHJpZ2h0LCBzbyB0aGUgY29yZSBvZiB3aGF0IEkmIzM5O20gbG9va2luZyBhdCBoZXJlIGlzIHRoZSBpbnRlcmFjdGlvbiBvZiBYRFAgKGVYcHJlc3MgRGF0YSBQYXRoKSB3aXRoIHRoZSBTVE1NQUMgZHJpdmVyLiBUaGUgbm90ZXMgbWFrZSBpdCBjbGVhciB0aGF0IHRoZSBmdW5jdGlvbnMgdGhhdCBhcmUgZGVjbGFyZWQgc3RhdGljIGFyZSBpbmxpbmVkLCBzbyBJIHdvbiYjMzk7dCBuZWVkIHRvIGRpZyBpbnRvIHRob3NlLiBNeSBmb2N1cyB0aGVuIHNoaWZ0cyB0byB0aGUgbm9uLXN0YXRpYyBmdW5jdGlvbnMgcmVsYXRlZCB0byBYRFAuCgpUaGUga2V5IHBsYXllcnMgaGVyZSBhcmUgYHN0bW1hY194ZHBfcmVsZWFzZWAsIGBzdG1tYWNfeGRwX29wZW5gLCBhbmQsIGp1c3QgdG8gYmUgdGhvcm91Z2gsIEkgc2hvdWxkIHJlYWxseSBzY3J1dGluaXplIGBzdG1tYWNfeGRwX3NldF9wcm9nYCBhcyB3ZWxsLiBVbmRlcnN0YW5kaW5nIGhvdyB0aGVzZSB0aHJlZSBmdW5jdGlvbnMgaGFuZGxlIFhEUCBwcm9ncmFtIG1hbmFnZW1lbnQgYW5kIGRyaXZlciBpbnRlcmFjdGlvbiBpcyBjcml0aWNhbC4gTXkgZ3V0IHRlbGxzIG1lIHRoZXNlIGZ1bmN0aW9ucyBhcmUgbGlrZWx5IHRvIGJlIHJlc3BvbnNpYmxlIGZvciBsb2FkaW5nLCB1bmxvYWRpbmcsIGFuZCBzZXR0aW5nIHRoZSBYRFAgcHJvZ3JhbS4gSSBuZWVkIHRvIGRpdmUgaW50byB0aGVpciBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIHRvIGZ1bGx5IGdyYXNwIHRoZSBYRFAgaW50ZWdyYXRpb24uIFBlcmhhcHMgdGhlcmUmIzM5O3MgYW4gaXNzdWUgdGhlcmU/CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA0OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY194ZHBfc2V0X3Byb2cmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz02OTgzPXN0YXRpYyBpbnQgc3RtbWFjX2JwZihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmV0ZGV2X2JwZiAqYnBmKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjk4OC1cdGNhc2UgWERQX1NFVFVQX1BST0c6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjY5ODk6XHRcdHJldHVybiBzdG1tYWNfeGRwX3NldF9wcm9nKHByaXYsIGJwZi1cdTAwM2Vwcm9nLCBicGYtXHUwMDNlZXh0YWNrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjk5MC1cdGNhc2UgWERQX1NFVFVQX1hTS19QT09MOlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYz05NT1pbnQgc3RtbWFjX3hkcF9zZXR1cF9wb29sKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jLTEwMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYzoxMDI6aW50IHN0bW1hY194ZHBfc2V0X3Byb2coc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmMtMTAzLVx0XHRcdHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmg9OT1pbnQgc3RtbWFjX3hkcF9zZXR1cF9wb29sKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmgtMTAtXHRcdFx0ICB1MTYgcXVldWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5oOjExOmludCBzdG1tYWNfeGRwX3NldF9wcm9nKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgc3RydWN0IGJwZl9wcm9nICpwcm9nLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5oLTEyLVx0XHRcdHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA0OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1MzgyCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMTM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU1RNTUFDIFhEUCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCAmIzM0O0FoYSEgYHN0bW1hY194ZHBfc2V0X3Byb2dgIGlzIGV4cG9zZWQgYW5kIHJlYWNoYWJsZSB0aHJvdWdoIGBzdG1tYWNfYnBmYC4mIzM0OyBUaGF0JiMzOTtzIHRoZSBlbnRyeSBwb2ludCwgdGhlIGNyaXRpY2FsIHBpZWNlIGhlcmUuIEJ1dCBob2xkIG9uLCB0aGUgcGF0Y2ggdG91Y2hlcyBgc3RtbWFjX3hkcF9yZWxlYXNlYCBhbmQgYHN0bW1hY194ZHBfb3BlbmAgYXMgd2VsbC4gUmlnaHQsIG9mIGNvdXJzZSwgdGhlc2UgYXJlIHJlbGF0ZWQgbGlmZWN5Y2xlIGZ1bmN0aW9ucy4gVGhlcmVmb3JlLCB0byBlbnN1cmUgSSBoYXZlIGZ1bGwgY29udGV4dCwgSSBuZWVkIHRvIGluY2x1ZGUgYHN0bW1hY194ZHBfcmVsZWFzZWAsIGBzdG1tYWNfeGRwX29wZW5gLCBgc3RtbWFjX3hkcF9zZXRfcHJvZ2AsIGFuZCBgc3RtbWFjX2JwZmAgaW4gbXkgRm9jdXNTeW1ib2xzIGxpc3QuIFRoYXQgd2F5LCBJIGNhbiB0cmFjZSBldmVyeXRoaW5nLiBOb3csIGxldCYjMzk7cyBjb25zaWRlciB0aGUgYnVpbGQgZW52aXJvbm1lbnQuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGBzdG1tYWNgIGRyaXZlciBpcyBjb25maWd1cmVkIGNvcnJlY3RseSBmb3IgdGhpcyBmdW5jdGlvbmFsaXR5IHRvIGV2ZW4gYmUgcmVsZXZhbnQuIFRpbWUgdG8gY2hlY2sgdGhlIEtjb25maWcgZmlsZXMgZm9yIHRoZSBgc3RtbWFjYCBkcml2ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA0OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTVE1NQUNfRVRIJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Mjpjb25maWcgU1RNTUFDX0VUSFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7U1RNaWNyb2VsZWN0cm9uaWNzIE11bHRpLUdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA0OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1ODkxCgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjoKCioqSW52ZXN0aWdhdGluZyBTVE1NQUMgRHJpdmVyIERlcGVuZGVuY2llcyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBmb3IgdGhlIFNUTU1BQyBFdGhlcm5ldCBkcml2ZXIuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGNoZWNrIHRoZSBgS2NvbmZpZ2AgZmlsZSB3aXRoaW4gdGhlIGRyaXZlciYjMzk7cyBkaXJlY3RvcnkuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBoZWFkaW5nIHN0cmFpZ2h0IGZvciBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ2AuIFRoaXMgZmlsZSBpcyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgd2hpY2ggb3RoZXIgbW9kdWxlcywgZmVhdHVyZXMsIG9yIGNvbmZpZ3VyYXRpb25zIGFyZSByZXF1aXJlZCBvciBvcHRpb25hbCB3aGVuIGJ1aWxkaW5nIGFuZCBpbmNsdWRpbmcgdGhlIFNUTU1BQyBkcml2ZXIgaW4gYSBrZXJuZWwgY29uZmlndXJhdGlvbi4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCBjb25kaXRpb25hbCBkZXBlbmRlbmNpZXMgb24gb3RoZXIgZHJpdmVycywgaGFyZHdhcmUgcGxhdGZvcm1zLCBvciBzcGVjaWZpYyBmZWF0dXJlcyByZWxhdGVkIHRvIHRoZSBTVE1pY3JvIEV0aGVybmV0IE1BQyBjb250cm9sbGVycy4gVGhpcyB3aWxsIGdpdmUgbWUgYSBwcm9wZXIgY29udGV4dCBiZWZvcmUgSSBwcm9jZWVkIHdpdGggYW55IGZ1cnRoZXIgaW52ZXN0aWdhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDQ6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBTVE1NQUNfRVRIXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gSEFTX0lPTUVNIFx1MDAyNlx1MDAyNiBIQVNfRE1BXG4gICA1Olx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG4gICA2Olx0XHRkZXBlbmRzIG9uIEVUSFRPT0xfTkVUTElOS1xuICAgNzpcdFx0c2VsZWN0IE1JSVxuICAgODpcdFx0c2VsZWN0IFBDU19YUENTXG4gICA5Olx0XHRzZWxlY3QgUEFHRV9QT09MXG4gIDEwOlx0XHRzZWxlY3QgUEhZTElOS1xuICAxMTpcdFx0c2VsZWN0IENSQzMyXG4gIDEyOlx0XHRzZWxlY3QgUkVTRVRfQ09OVFJPTExFUlxuICAxMzpcdFx0c2VsZWN0IE5FVF9ERVZMSU5LXG4gIDE0Olx0XHRoZWxwXG4gIDE1Olx0XHQgIFRoaXMgaXMgdGhlIGRyaXZlciBmb3IgdGhlIEV0aGVybmV0IElQcyBidWlsdCBhcm91bmQgYVxuICAxNjpcdFx0ICBTeW5vcHN5cyBJUCBDb3JlLlxuICAxNzpcdFxuICAxODpcdGlmIFNUTU1BQ19FVEhcbiAgMTk6XHRcbiAgMjA6XHRjb25maWcgU1RNTUFDX1NFTEZURVNUU1xuICAyMTpcdFx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciBTVE1NQUMgU2VsZnRlc3RzXCYjMzQ7XG4gIDIyOlx0XHRkZXBlbmRzIG9uIElORVRcbiAgMjM6XHRcdGRlZmF1bHQgblxuICAyNDpcdFx0aGVscFxuICAyNTpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgU1RNTUFDIFNlbGZ0ZXN0cyB1c2luZyBldGh0b29sLiBFbmFibGUgdGhpc1xuICAyNjpcdFx0ICBmZWF0dXJlIGlmIHlvdSBhcmUgZmFjaW5nIHByb2JsZW1zIHdpdGggeW91ciBIVyBhbmQgc3VibWl0IHRoZSB0ZXN0XG4gIDI3Olx0XHQgIHJlc3VsdHMgdG8gdGhlIG5ldGRldiBNYWlsaW5nIExpc3QuXG4gIDI4Olx0XG4gIDI5Olx0Y29uZmlnIFNUTU1BQ19QTEFURk9STVxuICAzMDpcdFx0dHJpc3RhdGUgXCYjMzQ7U1RNTUFDIFBsYXRmb3JtIGJ1cyBzdXBwb3J0XCYjMzQ7XG4gIDMxOlx0XHRzZWxlY3QgTUZEX1NZU0NPTlxuICAzMjpcdFx0ZGVmYXVsdCB5XG4gIDMzOlx0XHRoZWxwXG4gIDM0Olx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgYnVzIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLlxuICAzNTpcdFx0ICBUaGlzIGlzIHRoZSBkcml2ZXIgdXNlZCBvbiBzZXZlcmFsIFNvQ3M6XG4gIDM2Olx0XHQgIFNUaSwgQWxsd2lubmVyLCBBbWxvZ2ljIE1lc29uLCBBbHRlcmEgU09DRlBHQS5cbiAgMzc6XHRcbiAgMzg6XHRcdCAgSWYgeW91IGhhdmUgYSBjb250cm9sbGVyIHdpdGggdGhpcyBpbnRlcmZhY2UsIHNheSBZIG9yIE0gaGVyZS5cbiAgMzk6XHRcbiAgNDA6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgNDE6XHRcbiAgNDI6XHRpZiBTVE1NQUNfUExBVEZPUk1cbiAgNDM6XHRcbiAgNDQ6XHRjb25maWcgRFdNQUNfRFdDX1FPU19FVEhcbiAgNDU6XHRcdHRyaXN0YXRlIFwmIzM0O1N1cHBvcnQgZm9yIHNucHMsZHdjLXFvcy1ldGhlcm5ldC50eHQgRFQgYmluZGluZy5cJiMzNDtcbiAgNDY6XHRcdHNlbGVjdCBDUkMzMlxuICA0NzpcdFx0c2VsZWN0IE1JSVxuICA0ODpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgSEFTX0RNQVxuICA0OTpcdFx0aGVscFxuICA1MDpcdFx0ICBTdXBwb3J0IGZvciBjaGlwcyB1c2luZyB0aGUgc25wcyxkd2MtcW9zLWV0aGVybmV0LnR4dCBEVCBiaW5kaW5nLlxuICA1MTpcdFxuICA1MjpcdGNvbmZpZyBEV01BQ19HRU5FUklDXG4gIDUzOlx0XHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIGRyaXZlciBmb3IgRFdNQUNcJiMzNDtcbiAgNTQ6XHRcdGRlZmF1bHQgU1RNTUFDX1BMQVRGT1JNXG4gIDU1Olx0XHRoZWxwXG4gIDU2Olx0XHQgIEdlbmVyaWMgRFdNQUMgZHJpdmVyIGZvciBwbGF0Zm9ybXMgdGhhdCBkb24mIzM5O3QgcmVxdWlyZSBhbnlcbiAgNTc6XHRcdCAgcGxhdGZvcm0gc3BlY2lmaWMgY29kZSB0byBmdW5jdGlvbiBvciBpcyB1c2luZyBwbGF0Zm9ybVxuICA1ODpcdFx0ICBkYXRhIGZvciBzZXR1cC5cbiAgNTk6XHRcbiAgNjA6XHRjb25maWcgRFdNQUNfQU5BUklPTlxuICA2MTpcdFx0dHJpc3RhdGUgXCYjMzQ7QWRhcHRydW0gQW5hcmlvbiBHTUFDIHN1cHBvcnRcJiMzNDtcbiAgNjI6XHRcdGRlZmF1bHQgQVJDXG4gIDYzOlx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDIHx8IENPTVBJTEVfVEVTVClcbiAgNjQ6XHRcdGhlbHBcbiAgNjU6XHRcdCAgU3VwcG9ydCBmb3IgQWRhcHRydW0gQW5hcmlvbiBHTUFDIEV0aGVybmV0IGNvbnRyb2xsZXIuXG4gIDY2Olx0XG4gIDY3Olx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgQW5hcmlvbiBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cbiAgNjg6XHRcbiAgNjk6XHRjb25maWcgRFdNQUNfRUlDNzcwMFxuICA3MDpcdFx0dHJpc3RhdGUgXCYjMzQ7U3VwcG9ydCBmb3IgRXN3aW4gZWljNzcwMCBldGhlcm5ldCBkcml2ZXJcJiMzNDtcbiAgNzE6XHRcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IEhBU19ETUEgXHUwMDI2XHUwMDI2IEFSQ0hfRVNXSU4gfHwgQ09NUElMRV9URVNUXG4gIDcyOlx0XHRoZWxwXG4gIDczOlx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSBFc3dpbiBFSUM3NzAwIEV0aGVybmV0IGNvbnRyb2xsZXIsXG4gIDc0Olx0XHQgIHdoaWNoIGludGVncmF0ZXMgU3lub3BzeXMgRGVzaWduV2FyZSBRb1MgZmVhdHVyZXMuIEl0IGVuYWJsZXNcbiAgNzU6XHRcdCAgaGlnaC1zcGVlZCBuZXR3b3JraW5nIHdpdGggRE1BIGFjY2VsZXJhdGlvbiBhbmQgaXMgb3B0aW1pemVkXG4gIDc2Olx0XHQgIGZvciBlbWJlZGRlZCBzeXN0ZW1zLlxuICA3NzpcdFxuICA3ODpcdGNvbmZpZyBEV01BQ19JTkdFTklDXG4gIDc5Olx0XHR0cmlzdGF0ZSBcJiMzNDtJbmdlbmljIE1BQyBzdXBwb3J0XCYjMzQ7XG4gIDgwOlx0XHRkZWZhdWx0IE1BQ0hfSU5HRU5JQ1xuICA4MTpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgSEFTX0lPTUVNIFx1MDAyNlx1MDAyNiAoTUFDSF9JTkdFTklDIHx8IENPTVBJTEVfVEVTVClcbiAgODI6XHRcdHNlbGVjdCBNRkRfU1lTQ09OXG4gIDgzOlx0XHRoZWxwXG4gIDg0Olx0XHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXIgb24gSW5nZW5pYyBTb0NzLlxuICA4NTpcdFxuICA4NjpcdFx0ICBUaGlzIHNlbGVjdHMgSW5nZW5pYyBTb0NzIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hY1xuICA4NzpcdFx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIG9uIGZvciB0aGUgSW5nZW5pYyBTb0NzXG4gIDg4Olx0XHQgIE1BQyBldGhlcm5ldCBjb250cm9sbGVyLlxuICA4OTpcdFxuICA5MDpcdGNvbmZpZyBEV01BQ19JUFE4MDZYXG4gIDkxOlx0XHR0cmlzdGF0ZSBcJiMzNDtRQ0EgSVBRODA2eCBEV01BQyBzdXBwb3J0XCYjMzQ7XG4gIDkyOlx0XHRkZWZhdWx0IEFSQ0hfUUNPTVxuICA5MzpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfUUNPTSB8fCBDT01QSUxFX1RFU1QpXG4gIDk0Olx0XHRzZWxlY3QgTUZEX1NZU0NPTlxuICA5NTpcdFx0aGVscFxuICA5NjpcdFx0ICBTdXBwb3J0IGZvciBRQ0EgSVBRODA2WCBEV01BQyBFdGhlcm5ldC5cbiAgOTc6XHRcbiAgOTg6XHRcdCAgVGhpcyBzZWxlY3RzIHRoZSBJUFE4MDZ4IFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWNcbiAgOTk6XHRcdCAgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgZG9lcyBub3QgdXNlIGFueSBvZiB0aGUgaGFyZHdhcmVcbiAxMDA6XHRcdCAgYWNjZWxlcmF0aW9uIGZlYXR1cmVzIGF2YWlsYWJsZSBvbiB0aGlzIFNvQy4gTmV0d29yayBkZXZpY2VzXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA0OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3NTI1CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgcGVyc3BlY3RpdmU6CgoqKkRlYnVnZ2luZyBEcml2ZXIgQ29uZmlndXJhdGlvbiBmb3IgU3l6a2FsbGVyIEludGVncmF0aW9uKioKCkFscmlnaHQsIHNvIHdlIG5lZWQgdG8gZ2V0IHRoaXMgYFNUTU1BQ19QQ0lgIG9wdGlvbiBlbmFibGVkLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgbWFraW5nIHN1cmUgdGhlIFBDSSBkcml2ZXIgZm9yIHRoZSBTVE1NQUMgZXRoZXJuZXQgY29udHJvbGxlciBpcyBhdmFpbGFibGUuIFRoaXMgaXMgY3J1Y2lhbCBiZWNhdXNlIHN5emthbGxlciwgd2hpY2ggd2UmIzM5O3JlIHVzaW5nIGZvciBmdXp6aW5nLCB3aWxsIGxpa2VseSBpbnRlcmFjdCB3aXRoIHRoZSBkcml2ZXIgdGhyb3VnaCB0aGUgUENJIGludGVyZmFjZS4gVGhlcmVmb3JlLCBgU1RNTUFDX1BDSWAgaGFzIHRvIGJlIGNvcnJlY3RseSBjb25maWd1cmVkLiBUaGUgbmV4dCBvYnZpb3VzIHN0ZXAgaXMgdG8gcXVpY2tseSBmaW5kIG91dCB3aGVyZSB0aGlzIHRoaW5nIGlzIGFjdHVhbGx5IGRlZmluZWQgd2l0aGluIHRoZSBrZXJuZWwgc291cmNlLiBObyBwb2ludCBpbiBndWVzc2luZzsgSSBuZWVkIHRoZSBhdXRob3JpdGF0aXZlIGxvY2F0aW9uIHRvIHVuZGVyc3RhbmQgaXRzIGRlcGVuZGVuY2llcyBhbmQgZW5zdXJlIGl0JiMzOTtzIGVuYWJsZWQgYXBwcm9wcmlhdGVseS4gTGV0JiMzOTtzIGRpZyBpbiBhbmQgdHJhY2sgZG93biB0aGUgZGVmaW5pdGlvbiBvZiBgU1RNTUFDX1BDSWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA0OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTVE1NQUNfUENJJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mzk4PWNvbmZpZyBEV01BQ19NT1RPUkNPTU1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NDA3OmNvbmZpZyBTVE1NQUNfUENJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwOC1cdHRyaXN0YXRlIFwmIzM0O1NUTU1BQyBQQ0kgYnVzIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDQ6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc5MDUKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHRoZSBgU1RNTUFDX1BDSWAgRGVmaW5pdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIHByZXNlbnRlZCB3aXRoIGEgcmVmZXJlbmNlIHRvIGBTVE1NQUNfUENJYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7UmlnaHQsIGxldCYjMzk7cyBnZXQgaW50byB0aGUgc3BlY2lmaWNzIG9mIHRoaXMuJiMzNDsgU2luY2UgSSYjMzk7bSB3b3JraW5nIGF0IHRoaXMgbGV2ZWwsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBhcmNoaXRlY3R1cmFsIGRldGFpbHMuIFNvLCB0aGUgZmlyc3Qgc3RlcCBpcyB0byBkaXZlIGludG8gdGhlIGRlZmluaXRpb24gaXRzZWxmLiBJIG5lZWQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGlzIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gdGllcyBpbnRvIHRoZSBicm9hZGVyIFNUTU1BQyAoU1RNaWNyb2VsZWN0cm9uaWNzIE1lZGlhIEFjY2VzcyBDb250cm9sbGVyKSBlY29zeXN0ZW0uIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGNsdWVzIGFib3V0IHRoZSBQQ0kgKFBlcmlwaGVyYWwgQ29tcG9uZW50IEludGVyY29ubmVjdCkgaW50ZXJmYWNlIGltcGxlbWVudGF0aW9uOiBIb3cgZG9lcyBpdCBtYW5hZ2UgbWVtb3J5IG1hcHBpbmc/IFdoYXQgYWJvdXQgaW50ZXJydXB0IGhhbmRsaW5nPyBBcmUgdGhlcmUgYW55IHNwZWNpZmljIGhhcmR3YXJlIHF1aXJrcyBvciBlcnJhdGEgSSBuZWVkIHRvIGJlIGF3YXJlIG9mIHdpdGhpbiB0aGlzIGNvbmZpZ3VyYXRpb24/IFRoaXMgaW5mb3JtYXRpb24gaXMgY3JpdGljYWwgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGJlaGF2aW9yIG9mIHRoZSBOSUMsIGl0cyBwZXJmb3JtYW5jZSBsaW1pdHMsIGFuZCBkZWJ1Z2dpbmcgYW55IHBvdGVudGlhbCBpc3N1ZXMgdGhhdCBtYXkgYXJpc2UgaW4gdGhpcyBzcGVjaWZpYyBzZXR1cC4gRXNzZW50aWFsbHksIEkgbmVlZCB0byBlc3RhYmxpc2ggYSBzb2xpZCwgY29uY3JldGUgdW5kZXJzdGFuZGluZyBvZiAqdGhpcyogcGFydGljdWxhciBpbnN0YW5jZSBvZiBhbiBTVE1NQUMgZHJpdmVyIGludGVyYWN0aW5nIHdpdGggdGhlIFBDSSBidXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA0OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDAwOlx0XHRkZXBlbmRzIG9uIFBDSVxuIDQwMTpcdFx0c2VsZWN0IE1PVE9SQ09NTV9QSFlcbiA0MDI6XHRcdHNlbGVjdCBTVE1NQUNfTElCUENJXG4gNDAzOlx0XHRoZWxwXG4gNDA0Olx0XHQgIFRoaXMgZW5hYmxlcyBnbHVlIGRyaXZlciBmb3IgTW90b3Jjb21tIERXTUFDLWJhc2VkIFBDSSBFdGhlcm5ldFxuIDQwNTpcdFx0ICBjb250cm9sbGVycy4gQ3VycmVudGx5IG9ubHkgWVQ2ODAxIGlzIHN1cHBvcnRlZC5cbiA0MDY6XHRcbiA0MDc6XHRjb25maWcgU1RNTUFDX1BDSVxuIDQwODpcdFx0dHJpc3RhdGUgXCYjMzQ7U1RNTUFDIFBDSSBidXMgc3VwcG9ydFwmIzM0O1xuIDQwOTpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiA0MTA6XHRcdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xuIDQxMTpcdFx0c2VsZWN0IFNUTU1BQ19MSUJQQ0lcbiA0MTI6XHRcdGhlbHBcbiA0MTM6XHRcdCAgVGhpcyBzZWxlY3RzIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBidXMgc3VwcG9ydCBmb3IgdGhlIHN0bW1hYyBkcml2ZXIuXG4gNDE0Olx0XHQgIFRoaXMgZHJpdmVyIHdhcyB0ZXN0ZWQgb24gWExJTlggWEMyVjMwMDAgRkYxMTUyQU1UMDIyMVxuIDQxNTpcdFx0ICBEMTIxNTk5NEEgVklSVEVYIEZQR0EgYm9hcmQgYW5kIFNOUFMgUW9TIElQSyBQcm90b3R5cGluZyBLaXQuXG4gNDE2Olx0XG4gNDE3Olx0XHQgIElmIHlvdSBoYXZlIGEgY29udHJvbGxlciB3aXRoIHRoaXMgaW50ZXJmYWNlLCBzYXkgWSBvciBNIGhlcmUuXG4gNDE4Olx0XG4gNDE5Olx0XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA0OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4NTE4CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMzM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBTdG1tYWMgQ29uZmlndXJhdGlvbiBhbmQgUGF0Y2gqKgoKT2theSwgc28gbG9va2luZyBhdCB0aGlzLCBpdCBzZWVtcyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGBTVE1NQUNfRVRIYCBhbmQgYFNUTU1BQ19QQ0lgIGNvbmZpZ3VyYXRpb25zLiBUaG9zZSBhcmUgdGhlIGtleSBvbmVzLCBubyBxdWVzdGlvbi4gSGFuZyBvbiwgdGhvdWdoLiBgU1RNTUFDX0VUSGAgaXMgZGVwZW5kZW50IG9uIGBIQVNfSU9NRU1gLCBgSEFTX0RNQWAsIGBQVFBfMTU4OF9DTE9DS19PUFRJT05BTGAsIGFuZCBgRVRIVE9PTF9ORVRMSU5LYC4gVGhvc2UgYXJlIGFsbCBwcmV0dHkgc3RhbmRhcmQgZGVwZW5kZW5jaWVzLCBub3RoaW5nIG91dCBvZiB0aGUgb3JkaW5hcnkuIEFscmlnaHQsIEkmIzM5O2xsIGFkZCBgU1RNTUFDX0VUSGAgYW5kIGBTVE1NQUNfUENJYCB0byBgRW5hYmxlQ29uZmlnc2AgdG8gbWFrZSBzdXJlIHRob3NlIGdldCBzZXQgcHJvcGVybHkuCgpOb3csIEkgbmVlZCB0byB0YWtlIGFub3RoZXIgbG9vayBhdCB0aGlzIHBhdGNoIGFuZCByZWFsbHkgemVybyBpbiBvbiB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zLiBJdCBsb29rcyBsaWtlIGl0IHRvdWNoZXMgYHN0bW1hY19kaXNhYmxlX2FsbF9kbWFfaXJxYCB3aGljaCBpcyBzdGF0aWMsIGFuZCB0aGVuIGBzdG1tYWNfc3luY2hyb25pemVfaXJxYCB3aGljaCBpcyBhbHNvIHN0YXRpYy4gVGhlc2UgYXJlIGludGVybmFsIGZ1bmN0aW9ucy4gSG93ZXZlciwgYHN0bW1hY194ZHBfcmVsZWFzZWAgYW5kIGBzdG1tYWNfeGRwX29wZW5gIGFyZSBub24tc3RhdGljIGFuZCB0aG9zZSBhcmUgdGhlIGVudHJ5IHBvaW50cyBmb3IgdGhlIG1vZGlmaWVkIGxvZ2ljLiBUaG9zZSBhcmUgdGhlIG9uZXMgSSByZWFsbHkgbmVlZCB0byBmb2N1cyBvbi4gU28sIEkgd2lsbCBhZGQgYHN0bW1hY194ZHBfcmVsZWFzZWAgYW5kIGBzdG1tYWNfeGRwX29wZW5gIHRvIGBGb2N1c1N5bWJvbHNgLiBBbmQgSSBzaG91bGQgcHJvYmFibHkgaW5jbHVkZSBgc3RtbWFjX3hkcF9zZXRfcHJvZ2AgYW5kIGBzdG1tYWNfYnBmYCBzaW5jZSB0aGV5JiMzOTtyZSBjYWxsaW5nIGBzdG1tYWNfeGRwX29wZW5gLiBCdXQgd2FpdCwgZG9lcyBgc3RtbWFjX3hkcF9yZWxlYXNlYCBhbHNvIGdldCBjYWxsZWQgZnJvbSBgc3RtbWFjX3hkcF9zZXRfcHJvZ2A/IEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZSBjaGVjayB0aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNDo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdG1tYWNfeGRwX3JlbGVhc2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmg9NDA4PWludCBzdG1tYWNfeGRwX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaDo0MDk6dm9pZCBzdG1tYWNfeGRwX3JlbGVhc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaC00MTAtaW50IHN0bW1hY19nZXRfcGh5X2ludGZfc2VsKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzEwMz12b2lkIHN0bW1hY19lbmFibGVfdHhfcXVldWUoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1MzIgcXVldWUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MTQwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3MTQxOnZvaWQgc3RtbWFjX3hkcF9yZWxlYXNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTcxNDIte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYz0xMDI9aW50IHN0bW1hY194ZHBfc2V0X3Byb2coc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jLTEyNC1cdGlmIChpZl9ydW5uaW5nIFx1MDAyNlx1MDAyNiBuZWVkX3VwZGF0ZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYzoxMjU6XHRcdHN0bW1hY194ZHBfcmVsZWFzZShkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jLTEyNi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDQ6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk3NDUKCQkJCQkJCW91dHB1dDogMTU1CgkJCQkJCQl0aG91Z2h0czogNjcwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgVGFyZ2V0cyBpbiB0aGUgU1RNTUFDIEV0aGVybmV0IERyaXZlcjogWERQIEhhbmRsaW5nKioKCk9rYXksIHNvIGhlcmUmIzM5O3MgdGhlIHRob3VnaHQgcHJvY2VzczogSSYjMzk7dmUgdHJhY2VkIHRoZSBjb2RlIGFuZCBjb25maXJtZWQgdGhhdCBgc3RtbWFjX3hkcF9yZWxlYXNlYCBpcyBpbmRlZWQgY2FsbGVkIGZyb20gYHN0bW1hY194ZHBfc2V0X3Byb2dgLiBUaGUgY2FsbCBjaGFpbiBpcyBjbGVhcjogYHN0bW1hY19icGZgIC0mZ3Q7IGBzdG1tYWNfeGRwX3NldF9wcm9nYCAtJmd0OyBgc3RtbWFjX3hkcF9yZWxlYXNlYCAvIGBzdG1tYWNfeGRwX29wZW5gLiBUaGF0IGltbWVkaWF0ZWx5IHNjcmVhbXMgJiMzNDtmdXp6aW5nIHRhcmdldHMsJiMzNDsgZXNwZWNpYWxseSBnaXZlbiB0aGUgWERQIGNvbnRleHQuCgpJIGRvdWJsZS1jaGVja2VkOyBgc3RtbWFjX3hkcF9yZWxlYXNlYCBhbmQgYHN0bW1hY194ZHBfb3BlbmAgYXJlbiYjMzk7dCBzdGF0aWM7IHRoZXkmIzM5O3JlIGRlZmluZWQgaW4gYHN0bW1hY19tYWluLmNgIGFuZCBkZWNsYXJlZCBpbiBgc3RtbWFjLmhgLiBQZXJmZWN0LCB0aGF0IG1lYW5zIHRoZXkgaGF2ZSBkaXN0aW5jdCBzeW1ib2xzIGFuZCBhcmUgYWNjZXNzaWJsZSB0byBzeXprYWxsZXIuCgpDb25maWd1cmF0aW9uLXdpc2UsIEkmIzM5O20gdGhpbmtpbmcgYFNUTU1BQ19FVEhgIGFuZCBgU1RNTUFDX1BDSWAgYXJlIGdvaW5nIHRvIGJlIG5lY2Vzc2FyeS4gYEJQRl9TWVNDQUxMYCBpcyB1c3VhbGx5IGVuYWJsZWQgYnkgZGVmYXVsdCBpbiBmdXp6aW5nIGVudmlyb25tZW50cyBidXQgc2luY2UgWERQIGlzIHN0YW5kYXJkIG5ldHdvcmtpbmcsIGxldCYjMzk7cyBrZWVwIGl0IGNsZWFuLgoKU28sIGhlcmUmIzM5O3MgdGhlIHN1bW1hcnk6CgpXb3J0aEZ1enppbmc6IGB0cnVlYApSZWFzb25pbmc6IFRoaXMgcGF0Y2ggcmVwcmVzZW50cyBhIHNpZ25pZmljYW50IGNoYW5nZSBpbiBob3cgdGhlIHN0bW1hYyBFdGhlcm5ldCBkcml2ZXIgaGFuZGxlcyBYRFAuIFNwZWNpZmljYWxseSwgaXQgYWx0ZXJzIHRoZSBYRFAgb3BlbiBhbmQgcmVsZWFzZSBwYXRocywgZGlzYWJsaW5nIGFuZCBzeW5jaHJvbml6aW5nIERNQSBpbnRlcnJ1cHRzIHJhdGhlciB0aGFuIGZyZWVpbmcgdGhlbS4gVGhpcyBmaXhlcyBwb3RlbnRpYWwgSVJRIGhhbmRsaW5nIGlzc3Vlcy4gVGhlIGRyaXZlciBpcyByZWFjaGFibGUgdmlhIHRoZSBzdG1tYWMgUENJIHdyYXBwZXIgd2hpY2ggY2FuIGJlIGVtdWxhdGVkIGJ5IHN5emthbGxlci4KRm9jdXNTeW1ib2xzOiBgc3RtbWFjX3hkcF9vcGVuYCwgYHN0bW1hY194ZHBfcmVsZWFzZWAsIGBzdG1tYWNfeGRwX3NldF9wcm9nYCwgYHN0bW1hY19icGZgCkVuYWJsZUNvbmZpZ3M6IGBTVE1NQUNfRVRIYCwgYFNUTU1BQ19QQ0lgCgpOb3csIGxldCYjMzk7cyBnZXQgaW50byB0aGUgc3BlY2lmaWNzIG9mIHdoYXQmIzM5O3MgYmVlbiBjaGFuZ2VkLiBIb2xkIG9uLi4uIHdhaXQsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSByZW1lbWJlcmluZyB0aGlzIHJpZ2h0LiBSaWdodCwgYHN0bW1hY19kaXNhYmxlX2FsbF9kbWFfaXJxYCBpcyBjYWxsZWQgZnJvbSBgc3RtbWFjX3hkcF9yZWxlYXNlYCwgbm90IGBzdG1tYWNfeGRwX29wZW5gLiAgQW5kIHllcywgYHN0bW1hY194ZHBfcmVsZWFzZWAgY2FsbHMgYHN0bW1hY19kaXNhYmxlX2FsbF9kbWFfaXJxYCBhbmQgYHN0bW1hY19zeW5jaHJvbml6ZV9pcnFgLiBgc3RtbWFjX3hkcF9vcGVuYCBpcyByZW1vdmluZyBjYWxscyBmb3IgYHN0bW1hY19yZXF1ZXN0X2lycWAgYW5kIERNQSBDU1IgY2hhbm5lbCBjb25maWd1cmF0aW9uLgoKT2theSwgSSYjMzk7dmUgZ290IGl0LiBUaGUgcGF0Y2ggKnJlbW92ZXMqIGBzdG1tYWNfcmVxdWVzdF9pcnEoZGV2KWAgZnJvbSBgc3RtbWFjX3hkcF9vcGVuYCBhbmQgKnJlbW92ZXMqIGBzdG1tYWNfZnJlZV9pcnEoZGV2LCBSRVFfSVJRX0VSUl9BTEwsIDApYCBmcm9tIGBzdG1tYWNfeGRwX3JlbGVhc2VgLiBTbyBpbnN0ZWFkIG9mIElSUXMgYmVpbmcgZnJlZWQgYW5kIHJlLXJlcXVlc3RlZCwgdGhleSBhcmUgKmRpc2FibGVkKiBhbmQgc3luY2hyb25pemVkIGR1cmluZyBYRFAgcHJvZ3JhbSB1cGRhdGVzLiBUaGF0JiMzOTtzIGEgaHVnZSBmdW5jdGlvbmFsIGNoYW5nZSBmb3IgdGhlIGRyaXZlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDQ6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BDSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3N0bW1hY194ZHBfb3BlbiYjMzQ7LAogICAgJiMzNDtzdG1tYWNfeGRwX3JlbGVhc2UmIzM0OywKICAgICYjMzQ7c3RtbWFjX3hkcF9zZXRfcHJvZyYjMzQ7LAogICAgJiMzNDtzdG1tYWNfYnBmJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBYRFAgb3BlbiBhbmQgcmVsZWFzZSBwYXRocyBpbiB0aGUgc3RtbWFjIEV0aGVybmV0IGRyaXZlci4gSXQgcmVwbGFjZXMgZnJlZWluZyBhbmQgcmUtcmVxdWVzdGluZyBJUlFzIHdpdGggZGlzYWJsaW5nIGFuZCBzeW5jaHJvbml6aW5nIERNQSBpbnRlcnJ1cHRzIGR1cmluZyBYRFAgcHJvZ3JhbSB1cGRhdGVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBjb3JlIGRyaXZlciB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSB0aGUgUENJIGludGVyZmFjZSwgd2hpY2ggc3l6a2FsbGVyIGNhbiBlbXVsYXRlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtTVE1NQUNfRVRIJiMzNDssCiAgICAmIzM0O1NUTU1BQ19QQ0kmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzdG1tYWNfeGRwX29wZW4mIzM0OywKICAgICYjMzQ7c3RtbWFjX3hkcF9yZWxlYXNlJiMzNDssCiAgICAmIzM0O3N0bW1hY194ZHBfc2V0X3Byb2cmIzM0OywKICAgICYjMzQ7c3RtbWFjX2JwZiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgWERQIG9wZW4gYW5kIHJlbGVhc2UgcGF0aHMgaW4gdGhlIHN0bW1hYyBFdGhlcm5ldCBkcml2ZXIuIEl0IHJlcGxhY2VzIGZyZWVpbmcgYW5kIHJlLXJlcXVlc3RpbmcgSVJRcyB3aXRoIGRpc2FibGluZyBhbmQgc3luY2hyb25pemluZyBETUEgaW50ZXJydXB0cyBkdXJpbmcgWERQIHByb2dyYW0gdXBkYXRlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgY29yZSBkcml2ZXIgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgdGhlIFBDSSBpbnRlcmZhY2UsIHdoaWNoIHN5emthbGxlciBjYW4gZW11bGF0ZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA0OjUxOjUzLjQzNzI2NjA0MloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3NDk2ODY4MDQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNUTU1BQ19FVEhcIixcbiAgICBcIlNUTU1BQ19QQ0lcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzdG1tYWNfeGRwX29wZW5cIixcbiAgICBcInN0bW1hY194ZHBfcmVsZWFzZVwiLFxuICAgIFwic3RtbWFjX3hkcF9zZXRfcHJvZ1wiLFxuICAgIFwic3RtbWFjX2JwZlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBYRFAgb3BlbiBhbmQgcmVsZWFzZSBwYXRocyBpbiB0aGUgc3RtbWFjIEV0aGVybmV0IGRyaXZlci4gSXQgcmVwbGFjZXMgZnJlZWluZyBhbmQgcmUtcmVxdWVzdGluZyBJUlFzIHdpdGggZGlzYWJsaW5nIGFuZCBzeW5jaHJvbml6aW5nIERNQSBpbnRlcnJ1cHRzIGR1cmluZyBYRFAgcHJvZ3JhbSB1cGRhdGVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBjb3JlIGRyaXZlciB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSB0aGUgUENJIGludGVyZmFjZSwgd2hpY2ggc3l6a2FsbGVyIGNhbiBlbXVsYXRlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwNDo1MTo1My40MzcyNzQ4NTJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzOTU2Mjg5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDA0ZjU3ZTFkZThiZGRjODM5YjFmODJkNGE0MGNjYWI3MTBiMDhhOTRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBBdWcgMSAwNDo1MTo1MiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xcbmluZGV4IDJhMGQ3ZWZmODhkM2YuLjNjZjQzNjAxNDY4NmEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcXG5AQCAtMjUzMSw2ICsyNTMxLDIzIEBAIHN0YXRpYyB2b2lkIHN0bW1hY19lbmFibGVfYWxsX2RtYV9pcnEoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbiBcXHR9XFxuIH1cXG4gXFxuK3N0YXRpYyB2b2lkIHN0bW1hY19kaXNhYmxlX2FsbF9kbWFfaXJxKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4re1xcbitcXHR1OCByeF9jaGFubmVsc19jb3VudCA9IHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZXJ4X3F1ZXVlc190b191c2U7XFxuK1xcdHU4IHR4X2NoYW5uZWxzX2NvdW50ID0gcHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNldHhfcXVldWVzX3RvX3VzZTtcXG4rXFx0dTggZG1hX2Nzcl9jaCA9IG1heChyeF9jaGFubmVsc19jb3VudCwgdHhfY2hhbm5lbHNfY291bnQpO1xcbitcXHR1OCBjaGFuO1xcbitcXG4rXFx0Zm9yIChjaGFuID0gMDsgY2hhbiBcXHUwMDNjIGRtYV9jc3JfY2g7IGNoYW4rKykge1xcbitcXHRcXHRzdHJ1Y3Qgc3RtbWFjX2NoYW5uZWwgKmNoID0gXFx1MDAyNnByaXYtXFx1MDAzZWNoYW5uZWxbY2hhbl07XFxuK1xcdFxcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFxuK1xcbitcXHRcXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2Y2gtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG4rXFx0XFx0c3RtbWFjX2Rpc2FibGVfZG1hX2lycShwcml2LCBwcml2LVxcdTAwM2Vpb2FkZHIsIGNoYW4sIDEsIDEpO1xcbitcXHRcXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZjaC1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbitcXHR9XFxuK31cXG4rXFxuIC8qKlxcbiAgKiBzdG1tYWNfc3RhcnRfYWxsX2RtYSAtIHN0YXJ0IGFsbCBSWCBhbmQgVFggRE1BIGNoYW5uZWxzXFxuICAqIEBwcml2OiBkcml2ZXIgcHJpdmF0ZSBzdHJ1Y3R1cmVcXG5AQCAtMzgxNCw2ICszODMxLDMzIEBAIHN0YXRpYyB2b2lkIHN0bW1hY19mcmVlX2lycShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXHR9XFxuIH1cXG4gXFxuK3N0YXRpYyB2b2lkIHN0bW1hY19zeW5jaHJvbml6ZV9pcnEoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4re1xcbitcXHRzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihkZXYpO1xcbitcXHRzdHJ1Y3Qgc3RtbWFjX21zaSAqbXNpID0gcHJpdi1cXHUwMDNlbXNpO1xcbitcXHRpbnQgajtcXG4rXFxuK1xcdGZvciAoaiA9IHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZXR4X3F1ZXVlc190b191c2UgLSAxOyBtc2kgXFx1MDAyNlxcdTAwMjYgaiBcXHUwMDNlPSAwOyBqLS0pIHtcXG4rXFx0XFx0aWYgKG1zaS1cXHUwMDNldHhfaXJxW2pdIFxcdTAwM2UgMClcXG4rXFx0XFx0XFx0c3luY2hyb25pemVfaXJxKG1zaS1cXHUwMDNldHhfaXJxW2pdKTtcXG4rXFx0fVxcbitcXG4rXFx0Zm9yIChqID0gcHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlcnhfcXVldWVzX3RvX3VzZSAtIDE7IG1zaSBcXHUwMDI2XFx1MDAyNiBqIFxcdTAwM2U9IDA7IGotLSkge1xcbitcXHRcXHRpZiAobXNpLVxcdTAwM2VyeF9pcnFbal0gXFx1MDAzZSAwKVxcbitcXHRcXHRcXHRzeW5jaHJvbml6ZV9pcnEobXNpLVxcdTAwM2VyeF9pcnFbal0pO1xcbitcXHR9XFxuK1xcbitcXHRpZiAobXNpIFxcdTAwMjZcXHUwMDI2IG1zaS1cXHUwMDNlc2Z0eV91ZV9pcnEgXFx1MDAzZSAwIFxcdTAwMjZcXHUwMDI2IG1zaS1cXHUwMDNlc2Z0eV91ZV9pcnEgIT0gZGV2LVxcdTAwM2VpcnEpXFxuK1xcdFxcdHN5bmNocm9uaXplX2lycShtc2ktXFx1MDAzZXNmdHlfdWVfaXJxKTtcXG4rXFx0aWYgKG1zaSBcXHUwMDI2XFx1MDAyNiBtc2ktXFx1MDAzZXNmdHlfY2VfaXJxIFxcdTAwM2UgMCBcXHUwMDI2XFx1MDAyNiBtc2ktXFx1MDAzZXNmdHlfY2VfaXJxICE9IGRldi1cXHUwMDNlaXJxKVxcbitcXHRcXHRzeW5jaHJvbml6ZV9pcnEobXNpLVxcdTAwM2VzZnR5X2NlX2lycSk7XFxuK1xcdGlmIChwcml2LVxcdTAwM2V3b2xfaXJxIFxcdTAwM2UgMCBcXHUwMDI2XFx1MDAyNiBwcml2LVxcdTAwM2V3b2xfaXJxICE9IGRldi1cXHUwMDNlaXJxKVxcbitcXHRcXHRzeW5jaHJvbml6ZV9pcnEocHJpdi1cXHUwMDNld29sX2lycSk7XFxuK1xcdGlmIChwcml2LVxcdTAwM2VzZnR5X2lycSBcXHUwMDNlIDAgXFx1MDAyNlxcdTAwMjYgcHJpdi1cXHUwMDNlc2Z0eV9pcnEgIT0gZGV2LVxcdTAwM2VpcnEpXFxuK1xcdFxcdHN5bmNocm9uaXplX2lycShwcml2LVxcdTAwM2VzZnR5X2lycSk7XFxuK1xcdHN5bmNocm9uaXplX2lycShkZXYtXFx1MDAzZWlycSk7XFxuK31cXG4rXFxuIHN0YXRpYyBpbnQgc3RtbWFjX21zaV9pbml0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4gXFx0XFx0XFx0ICAgc3RydWN0IHN0bW1hY19yZXNvdXJjZXMgKnJlcylcXG4ge1xcbkBAIC03MTA4LDggKzcxNTIsOSBAQCB2b2lkIHN0bW1hY194ZHBfcmVsZWFzZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiBcXHRmb3IgKGNoYW4gPSAwOyBjaGFuIFxcdTAwM2MgcHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNldHhfcXVldWVzX3RvX3VzZTsgY2hhbisrKVxcbiBcXHRcXHRocnRpbWVyX2NhbmNlbChcXHUwMDI2cHJpdi1cXHUwMDNlZG1hX2NvbmYudHhfcXVldWVbY2hhbl0udHh0aW1lcik7XFxuIFxcbi1cXHQvKiBGcmVlIHRoZSBJUlEgbGluZXMgKi9cXG4tXFx0c3RtbWFjX2ZyZWVfaXJxKGRldiwgUkVRX0lSUV9FUlJfQUxMLCAwKTtcXG4rXFx0LyogU2lsZW5jZSBETUEgaW50ZXJydXB0cyAqL1xcbitcXHRzdG1tYWNfZGlzYWJsZV9hbGxfZG1hX2lycShwcml2KTtcXG4rXFx0c3RtbWFjX3N5bmNocm9uaXplX2lycShkZXYpO1xcbiBcXG4gXFx0LyogU3RvcCBUWC9SWCBETUEgY2hhbm5lbHMgKi9cXG4gXFx0c3RtbWFjX3N0b3BfYWxsX2RtYShwcml2KTtcXG5AQCAtNzEzMiw3ICs3MTc3LDYgQEAgaW50IHN0bW1hY194ZHBfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiBcXHRzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihkZXYpO1xcbiBcXHR1OCByeF9jbnQgPSBwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2VyeF9xdWV1ZXNfdG9fdXNlO1xcbiBcXHR1OCB0eF9jbnQgPSBwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2V0eF9xdWV1ZXNfdG9fdXNlO1xcbi1cXHR1OCBkbWFfY3NyX2NoID0gbWF4KHJ4X2NudCwgdHhfY250KTtcXG4gXFx0c3RydWN0IHN0bW1hY19yeF9xdWV1ZSAqcnhfcTtcXG4gXFx0c3RydWN0IHN0bW1hY190eF9xdWV1ZSAqdHhfcTtcXG4gXFx0Ym9vbCBzcGhfZW47XFxuQEAgLTcxNTUsMTIgKzcxOTksNiBAQCBpbnQgc3RtbWFjX3hkcF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIFxcbiBcXHRzdG1tYWNfcmVzZXRfcXVldWVzX3BhcmFtKHByaXYpO1xcbiBcXG4tXFx0LyogRE1BIENTUiBDaGFubmVsIGNvbmZpZ3VyYXRpb24gKi9cXG4tXFx0Zm9yIChjaGFuID0gMDsgY2hhbiBcXHUwMDNjIGRtYV9jc3JfY2g7IGNoYW4rKykge1xcbi1cXHRcXHRzdG1tYWNfaW5pdF9jaGFuKHByaXYsIHByaXYtXFx1MDAzZWlvYWRkciwgcHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlZG1hX2NmZywgY2hhbik7XFxuLVxcdFxcdHN0bW1hY19kaXNhYmxlX2RtYV9pcnEocHJpdiwgcHJpdi1cXHUwMDNlaW9hZGRyLCBjaGFuLCAxLCAxKTtcXG4tXFx0fVxcbi1cXG4gXFx0LyogQWRqdXN0IFNwbGl0IGhlYWRlciAqL1xcbiBcXHRzcGhfZW4gPSAocHJpdi1cXHUwMDNlaHctXFx1MDAzZXJ4X2NzdW0gXFx1MDAzZSAwKSBcXHUwMDI2XFx1MDAyNiBwcml2LVxcdTAwM2VzcGhfYWN0aXZlO1xcbiBcXG5AQCAtNzE5NywxMCArNzIzNSw2IEBAIGludCBzdG1tYWNfeGRwX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFx0LyogU3RhcnQgUnggXFx1MDAyNiBUeCBETUEgQ2hhbm5lbHMgKi9cXG4gXFx0c3RtbWFjX3N0YXJ0X2FsbF9kbWEocHJpdik7XFxuIFxcbi1cXHRyZXQgPSBzdG1tYWNfcmVxdWVzdF9pcnEoZGV2KTtcXG4tXFx0aWYgKHJldClcXG4tXFx0XFx0Z290byBpcnFfZXJyb3I7XFxuLVxcbiBcXHQvKiBFbmFibGUgTkFQSSBwcm9jZXNzKi9cXG4gXFx0c3RtbWFjX2VuYWJsZV9hbGxfcXVldWVzKHByaXYpO1xcbiBcXHRuZXRpZl9jYXJyaWVyX29uKGRldik7XFxuQEAgLTcyMDksMTAgKzcyNDMsNiBAQCBpbnQgc3RtbWFjX3hkcF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIFxcbiBcXHRyZXR1cm4gMDtcXG4gXFxuLWlycV9lcnJvcjpcXG4tXFx0Zm9yIChjaGFuID0gMDsgY2hhbiBcXHUwMDNjIHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZXR4X3F1ZXVlc190b191c2U7IGNoYW4rKylcXG4tXFx0XFx0aHJ0aW1lcl9jYW5jZWwoXFx1MDAyNnByaXYtXFx1MDAzZWRtYV9jb25mLnR4X3F1ZXVlW2NoYW5dLnR4dGltZXIpO1xcbi1cXG4gaW5pdF9lcnJvcjpcXG4gXFx0ZnJlZV9kbWFfZGVzY19yZXNvdXJjZXMocHJpdiwgXFx1MDAyNnByaXYtXFx1MDAzZWRtYV9jb25mKTtcXG4gZG1hX2Rlc2NfZXJyb3I6XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA0OjUxOjUzLjk3NzUxODEwOFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjU2OTU2NjAxODcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNUTU1BQ19FVEhcIixcbiAgICBcIlNUTU1BQ19QQ0lcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzdG1tYWNfeGRwX29wZW5cIixcbiAgICBcInN0bW1hY194ZHBfcmVsZWFzZVwiLFxuICAgIFwic3RtbWFjX3hkcF9zZXRfcHJvZ1wiLFxuICAgIFwic3RtbWFjX2JwZlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBYRFAgb3BlbiBhbmQgcmVsZWFzZSBwYXRocyBpbiB0aGUgc3RtbWFjIEV0aGVybmV0IGRyaXZlci4gSXQgcmVwbGFjZXMgZnJlZWluZyBhbmQgcmUtcmVxdWVzdGluZyBJUlFzIHdpdGggZGlzYWJsaW5nIGFuZCBzeW5jaHJvbml6aW5nIERNQSBpbnRlcnJ1cHRzIGR1cmluZyBYRFAgcHJvZ3JhbSB1cGRhdGVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBjb3JlIGRyaXZlciB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSB0aGUgUENJIGludGVyZmFjZSwgd2hpY2ggc3l6a2FsbGVyIGNhbiBlbXVsYXRlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAwNGY1N2UxZGU4YmRkYzgzOWIxZjgyZDRhNDBjY2FiNzEwYjA4YTk0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgMSAwNDo1MTo1MiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5pbmRleCAyYTBkN2VmZjg4ZDNmLi4zY2Y0MzYwMTQ2ODZhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuQEAgLTI1MzEsNiArMjUzMSwyMyBAQCBzdGF0aWMgdm9pZCBzdG1tYWNfZW5hYmxlX2FsbF9kbWFfaXJxKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbiBcdH1cbiB9XG4gXG4rc3RhdGljIHZvaWQgc3RtbWFjX2Rpc2FibGVfYWxsX2RtYV9pcnEoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuK3tcbitcdHU4IHJ4X2NoYW5uZWxzX2NvdW50ID0gcHJpdi1cdTAwM2VwbGF0LVx1MDAzZXJ4X3F1ZXVlc190b191c2U7XG4rXHR1OCB0eF9jaGFubmVsc19jb3VudCA9IHByaXYtXHUwMDNlcGxhdC1cdTAwM2V0eF9xdWV1ZXNfdG9fdXNlO1xuK1x0dTggZG1hX2Nzcl9jaCA9IG1heChyeF9jaGFubmVsc19jb3VudCwgdHhfY2hhbm5lbHNfY291bnQpO1xuK1x0dTggY2hhbjtcbitcbitcdGZvciAoY2hhbiA9IDA7IGNoYW4gXHUwMDNjIGRtYV9jc3JfY2g7IGNoYW4rKykge1xuK1x0XHRzdHJ1Y3Qgc3RtbWFjX2NoYW5uZWwgKmNoID0gXHUwMDI2cHJpdi1cdTAwM2VjaGFubmVsW2NoYW5dO1xuK1x0XHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuK1xuK1x0XHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZjaC1cdTAwM2Vsb2NrLCBmbGFncyk7XG4rXHRcdHN0bW1hY19kaXNhYmxlX2RtYV9pcnEocHJpdiwgcHJpdi1cdTAwM2Vpb2FkZHIsIGNoYW4sIDEsIDEpO1xuK1x0XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmNoLVx1MDAzZWxvY2ssIGZsYWdzKTtcbitcdH1cbit9XG4rXG4gLyoqXG4gICogc3RtbWFjX3N0YXJ0X2FsbF9kbWEgLSBzdGFydCBhbGwgUlggYW5kIFRYIERNQSBjaGFubmVsc1xuICAqIEBwcml2OiBkcml2ZXIgcHJpdmF0ZSBzdHJ1Y3R1cmVcbkBAIC0zODE0LDYgKzM4MzEsMzMgQEAgc3RhdGljIHZvaWQgc3RtbWFjX2ZyZWVfaXJxKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHR9XG4gfVxuIFxuK3N0YXRpYyB2b2lkIHN0bW1hY19zeW5jaHJvbml6ZV9pcnEoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbit7XG4rXHRzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihkZXYpO1xuK1x0c3RydWN0IHN0bW1hY19tc2kgKm1zaSA9IHByaXYtXHUwMDNlbXNpO1xuK1x0aW50IGo7XG4rXG4rXHRmb3IgKGogPSBwcml2LVx1MDAzZXBsYXQtXHUwMDNldHhfcXVldWVzX3RvX3VzZSAtIDE7IG1zaSBcdTAwMjZcdTAwMjYgaiBcdTAwM2U9IDA7IGotLSkge1xuK1x0XHRpZiAobXNpLVx1MDAzZXR4X2lycVtqXSBcdTAwM2UgMClcbitcdFx0XHRzeW5jaHJvbml6ZV9pcnEobXNpLVx1MDAzZXR4X2lycVtqXSk7XG4rXHR9XG4rXG4rXHRmb3IgKGogPSBwcml2LVx1MDAzZXBsYXQtXHUwMDNlcnhfcXVldWVzX3RvX3VzZSAtIDE7IG1zaSBcdTAwMjZcdTAwMjYgaiBcdTAwM2U9IDA7IGotLSkge1xuK1x0XHRpZiAobXNpLVx1MDAzZXJ4X2lycVtqXSBcdTAwM2UgMClcbitcdFx0XHRzeW5jaHJvbml6ZV9pcnEobXNpLVx1MDAzZXJ4X2lycVtqXSk7XG4rXHR9XG4rXG4rXHRpZiAobXNpIFx1MDAyNlx1MDAyNiBtc2ktXHUwMDNlc2Z0eV91ZV9pcnEgXHUwMDNlIDAgXHUwMDI2XHUwMDI2IG1zaS1cdTAwM2VzZnR5X3VlX2lycSAhPSBkZXYtXHUwMDNlaXJxKVxuK1x0XHRzeW5jaHJvbml6ZV9pcnEobXNpLVx1MDAzZXNmdHlfdWVfaXJxKTtcbitcdGlmIChtc2kgXHUwMDI2XHUwMDI2IG1zaS1cdTAwM2VzZnR5X2NlX2lycSBcdTAwM2UgMCBcdTAwMjZcdTAwMjYgbXNpLVx1MDAzZXNmdHlfY2VfaXJxICE9IGRldi1cdTAwM2VpcnEpXG4rXHRcdHN5bmNocm9uaXplX2lycShtc2ktXHUwMDNlc2Z0eV9jZV9pcnEpO1xuK1x0aWYgKHByaXYtXHUwMDNld29sX2lycSBcdTAwM2UgMCBcdTAwMjZcdTAwMjYgcHJpdi1cdTAwM2V3b2xfaXJxICE9IGRldi1cdTAwM2VpcnEpXG4rXHRcdHN5bmNocm9uaXplX2lycShwcml2LVx1MDAzZXdvbF9pcnEpO1xuK1x0aWYgKHByaXYtXHUwMDNlc2Z0eV9pcnEgXHUwMDNlIDAgXHUwMDI2XHUwMDI2IHByaXYtXHUwMDNlc2Z0eV9pcnEgIT0gZGV2LVx1MDAzZWlycSlcbitcdFx0c3luY2hyb25pemVfaXJxKHByaXYtXHUwMDNlc2Z0eV9pcnEpO1xuK1x0c3luY2hyb25pemVfaXJxKGRldi1cdTAwM2VpcnEpO1xuK31cbitcbiBzdGF0aWMgaW50IHN0bW1hY19tc2lfaW5pdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4gXHRcdFx0ICAgc3RydWN0IHN0bW1hY19yZXNvdXJjZXMgKnJlcylcbiB7XG5AQCAtNzEwOCw4ICs3MTUyLDkgQEAgdm9pZCBzdG1tYWNfeGRwX3JlbGVhc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdGZvciAoY2hhbiA9IDA7IGNoYW4gXHUwMDNjIHByaXYtXHUwMDNlcGxhdC1cdTAwM2V0eF9xdWV1ZXNfdG9fdXNlOyBjaGFuKyspXG4gXHRcdGhydGltZXJfY2FuY2VsKFx1MDAyNnByaXYtXHUwMDNlZG1hX2NvbmYudHhfcXVldWVbY2hhbl0udHh0aW1lcik7XG4gXG4tXHQvKiBGcmVlIHRoZSBJUlEgbGluZXMgKi9cbi1cdHN0bW1hY19mcmVlX2lycShkZXYsIFJFUV9JUlFfRVJSX0FMTCwgMCk7XG4rXHQvKiBTaWxlbmNlIERNQSBpbnRlcnJ1cHRzICovXG4rXHRzdG1tYWNfZGlzYWJsZV9hbGxfZG1hX2lycShwcml2KTtcbitcdHN0bW1hY19zeW5jaHJvbml6ZV9pcnEoZGV2KTtcbiBcbiBcdC8qIFN0b3AgVFgvUlggRE1BIGNoYW5uZWxzICovXG4gXHRzdG1tYWNfc3RvcF9hbGxfZG1hKHByaXYpO1xuQEAgLTcxMzIsNyArNzE3Nyw2IEBAIGludCBzdG1tYWNfeGRwX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KGRldik7XG4gXHR1OCByeF9jbnQgPSBwcml2LVx1MDAzZXBsYXQtXHUwMDNlcnhfcXVldWVzX3RvX3VzZTtcbiBcdHU4IHR4X2NudCA9IHByaXYtXHUwMDNlcGxhdC1cdTAwM2V0eF9xdWV1ZXNfdG9fdXNlO1xuLVx0dTggZG1hX2Nzcl9jaCA9IG1heChyeF9jbnQsIHR4X2NudCk7XG4gXHRzdHJ1Y3Qgc3RtbWFjX3J4X3F1ZXVlICpyeF9xO1xuIFx0c3RydWN0IHN0bW1hY190eF9xdWV1ZSAqdHhfcTtcbiBcdGJvb2wgc3BoX2VuO1xuQEAgLTcxNTUsMTIgKzcxOTksNiBAQCBpbnQgc3RtbWFjX3hkcF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXG4gXHRzdG1tYWNfcmVzZXRfcXVldWVzX3BhcmFtKHByaXYpO1xuIFxuLVx0LyogRE1BIENTUiBDaGFubmVsIGNvbmZpZ3VyYXRpb24gKi9cbi1cdGZvciAoY2hhbiA9IDA7IGNoYW4gXHUwMDNjIGRtYV9jc3JfY2g7IGNoYW4rKykge1xuLVx0XHRzdG1tYWNfaW5pdF9jaGFuKHByaXYsIHByaXYtXHUwMDNlaW9hZGRyLCBwcml2LVx1MDAzZXBsYXQtXHUwMDNlZG1hX2NmZywgY2hhbik7XG4tXHRcdHN0bW1hY19kaXNhYmxlX2RtYV9pcnEocHJpdiwgcHJpdi1cdTAwM2Vpb2FkZHIsIGNoYW4sIDEsIDEpO1xuLVx0fVxuLVxuIFx0LyogQWRqdXN0IFNwbGl0IGhlYWRlciAqL1xuIFx0c3BoX2VuID0gKHByaXYtXHUwMDNlaHctXHUwMDNlcnhfY3N1bSBcdTAwM2UgMCkgXHUwMDI2XHUwMDI2IHByaXYtXHUwMDNlc3BoX2FjdGl2ZTtcbiBcbkBAIC03MTk3LDEwICs3MjM1LDYgQEAgaW50IHN0bW1hY194ZHBfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0LyogU3RhcnQgUnggXHUwMDI2IFR4IERNQSBDaGFubmVscyAqL1xuIFx0c3RtbWFjX3N0YXJ0X2FsbF9kbWEocHJpdik7XG4gXG4tXHRyZXQgPSBzdG1tYWNfcmVxdWVzdF9pcnEoZGV2KTtcbi1cdGlmIChyZXQpXG4tXHRcdGdvdG8gaXJxX2Vycm9yO1xuLVxuIFx0LyogRW5hYmxlIE5BUEkgcHJvY2VzcyovXG4gXHRzdG1tYWNfZW5hYmxlX2FsbF9xdWV1ZXMocHJpdik7XG4gXHRuZXRpZl9jYXJyaWVyX29uKGRldik7XG5AQCAtNzIwOSwxMCArNzI0Myw2IEBAIGludCBzdG1tYWNfeGRwX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcbiBcdHJldHVybiAwO1xuIFxuLWlycV9lcnJvcjpcbi1cdGZvciAoY2hhbiA9IDA7IGNoYW4gXHUwMDNjIHByaXYtXHUwMDNlcGxhdC1cdTAwM2V0eF9xdWV1ZXNfdG9fdXNlOyBjaGFuKyspXG4tXHRcdGhydGltZXJfY2FuY2VsKFx1MDAyNnByaXYtXHUwMDNlZG1hX2NvbmYudHhfcXVldWVbY2hhbl0udHh0aW1lcik7XG4tXG4gaW5pdF9lcnJvcjpcbiBcdGZyZWVfZG1hX2Rlc2NfcmVzb3VyY2VzKHByaXYsIFx1MDAyNnByaXYtXHUwMDNlZG1hX2NvbmYpO1xuIGRtYV9kZXNjX2Vycm9yOlxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDQ6NTE6NTMuOTc3NTE5MzY4WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njg0MTUzNjA0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQYXRjaCB0byB0aGUgU1RNTUFDIEV0aGVybmV0IERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0b3VjaGVzIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jYC4gSXQncyBhZGRpbmcgYHN0bW1hY19kaXNhYmxlX2FsbF9kbWFfaXJxYCBhbmQgYHN0bW1hY19zeW5jaHJvbml6ZV9pcnFgLCBhbmQgbW9kaWZ5aW5nIGBzdG1tYWNfeGRwX3JlbGVhc2VgIGFuZCBgc3RtbWFjX3hkcF9vcGVuYC4gSW50ZXJlc3RpbmcuIFNwZWNpZmljYWxseSwgaW4gYHN0bW1hY194ZHBfcmVsZWFzZWAsIHRoZXkncmUgcmVwbGFjaW5nIHRoZSBzdGFuZGFyZCBgc3RtbWFjX2ZyZWVfaXJxYCB3aXRoIHRob3NlIG5ldyBmdW5jdGlvbnMsIGFuZCBpbiBgc3RtbWFjX3hkcF9vcGVuYCwgdGhleSdyZSB0YWtpbmcgb3V0IGBzdG1tYWNfcmVxdWVzdF9pcnFgIGFuZCBzb21lIERNQSBDU1IgY2hhbm5lbCBjb25maWcuIEknbSBnb2luZyB0byBzdGFydCBieSBnZXR0aW5nIGEgaGFuZGxlIG9uIHRoZSBiaWdnZXIgcGljdHVyZSBoZXJlLlxuXG5UaGlzIGlzIHRoZSBkcml2ZXIgZm9yIFNUTWljcm9lbGVjdHJvbmljcycgMTAvMTAwLzEwMDAvRVFPUyBFdGhlcm5ldCBNQUMuIE5vdywgYSBrZXkgcXVlc3Rpb24gcG9wcyB1cDogaXMgdGhpcyBzb21ldGhpbmcgdGhhdCBjb3VsZCBiZSByZWFjaGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cz8gV2UgaGF2ZSB0byBjb25zaWRlciB3aGV0aGVyIGl0J3MgYSBQQ0kgZGV2aWNlIG9yIGEgcGxhdGZvcm0gZGV2aWNlLCBhbmQgd2hldGhlciB0aGUgZGV2aWNlIGlzIGVtdWxhdGVkIG9yIHJlcXVpcmVzIHNwZWNpZmljIGhhcmR3YXJlLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgYHN0bW1hY2AgaXMgb2Z0ZW4gYSBwbGF0Zm9ybSBkcml2ZXIgdXNlZCBpbiBTb0NzLCBidXQgdGhlcmUgaXMgYWxzbyBhIFBDSSB3cmFwcGVyLCBgc3RtbWFjX3BjaWAuXG5cbk9rYXksIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSBpZiB0aGlzIGlzIHNvbWV0aGluZyB0aGF0IEkgY2FuIHRhcmdldCBpbiBRRU1VIG9yIGlmIGl0J3MgZnV6emFibGUuIFRvIHRoYXQgZW5kLCBJIHNob3VsZCBzZWFyY2ggZm9yIGBzdG1tYWNfcGNpYCBvciBgc3RtbWFjYCBnZW5lcmFsbHkgaW4gUUVNVS4gQWN0dWFsbHksIGBzdG1tYWNgIGlzIGEgdmVyeSBjb21tb24gZHJpdmVyLCBvZnRlbiBmb3VuZCBpbiBBUk0gU29DcywgYnV0LCBpdCBhbHNvIGhhcyBhIFBDSSBkcml2ZXIgYHN0bW1hY19wY2kuY2AuIFRoZSBxdWVzdGlvbiBiZWNvbWVzLCBjYW4gSSBmdXp6IHRoZSBgc3RtbWFjX3BjaWAgY2FzZT8gSXQncyBhIFBDSSBkZXZpY2UsIHNvIEkgc2hvdWxkIGJlIGFibGUgdG8uIEkgc2hvdWxkIHN0YXJ0IGJ5IHJ1bm5pbmcgYSBncmVwIGZvciBgc3RtbWFjX3BjaWAgb3IgYHN0bW1hY2AgUENJIElEcyB0byBuYXJyb3cgdGhpcyBkb3duLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjQwLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzkzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDQ6NTI6MDAuODE5MDU4NjlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjEwNjUxMzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RtbWFjX3BjaVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU9NTM9b2JqLSQoQ09ORklHX0RXTUFDX01PVE9SQ09NTSlcXHQrPSBkd21hYy1tb3RvcmNvbW0ub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjU0OnN0bW1hYy1wY2ktb2Jqczo9IHN0bW1hY19wY2kub1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0yNT1zdHJ1Y3QgaW50ZWxfcHJpdl9kYXRhIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMzktICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo0MDpzdHJ1Y3Qgc3RtbWFjX3BjaV9mdW5jX2RhdGEge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNDEtXFx0dW5zaWduZWQgaW50IGZ1bmM7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTQ0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6NDU6c3RydWN0IHN0bW1hY19wY2lfZG1pX2RhdGEge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6NDY6XFx0Y29uc3Qgc3RydWN0IHN0bW1hY19wY2lfZnVuY19kYXRhICpmdW5jO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNDctXFx0c2l6ZV90IG5mdW5jcztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo1MDpzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTUxLVxcdGludCAoKnNldHVwKShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9OTE9c3RhdGljIGNvbnN0IGludCBhZGxuX3Rzbl9sYW5lX3JlZ3NbXSA9IHs2fTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTkyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6OTM6c3RhdGljIGludCBzdG1tYWNfcGNpX2ZpbmRfcGh5X2FkZHIoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05NC1cXHRcXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IGRtaV9zeXN0ZW1faWQgKmRtaV9saXN0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6OTY6XFx0Y29uc3Qgc3RydWN0IHN0bW1hY19wY2lfZnVuY19kYXRhICpmdW5jX2RhdGE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo5NzpcXHRjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9kbWlfZGF0YSAqZG1pX2RhdGE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05OC1cXHRjb25zdCBzdHJ1Y3QgZG1pX3N5c3RlbV9pZCAqZG1pX2lkO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz03NTU9c3RhdGljIGludCBlaGxfc2dtaWlfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNzc0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6Nzc1OnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGVobF9zZ21paTFnX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy03NzYtXFx0LnNldHVwID0gZWhsX3NnbWlpX2RhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTc3OT1zdGF0aWMgaW50IGVobF9yZ21paV9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy03ODktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo3OTA6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gZWhsX3JnbWlpMWdfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTc5MS1cXHQuc2V0dXAgPSBlaGxfcmdtaWlfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9ODEwPXN0YXRpYyBpbnQgZWhsX3BzZTBfcmdtaWkxZ19kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04MTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo4MTc6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gZWhsX3BzZTBfcmdtaWkxZ19pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODE4LVxcdC5zZXR1cCA9IGVobF9wc2UwX3JnbWlpMWdfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9ODIxPXN0YXRpYyBpbnQgZWhsX3BzZTBfc2dtaWkxZ19kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04MzgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo4Mzk6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gZWhsX3BzZTBfc2dtaWkxZ19pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODQwLVxcdC5zZXR1cCA9IGVobF9wc2UwX3NnbWlpMWdfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9ODU5PXN0YXRpYyBpbnQgZWhsX3BzZTFfcmdtaWkxZ19kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04NjUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo4NjY6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gZWhsX3BzZTFfcmdtaWkxZ19pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODY3LVxcdC5zZXR1cCA9IGVobF9wc2UxX3JnbWlpMWdfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9ODcwPXN0YXRpYyBpbnQgZWhsX3BzZTFfc2dtaWkxZ19kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04ODctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo4ODg6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gZWhsX3BzZTFfc2dtaWkxZ19pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODg5LVxcdC5zZXR1cCA9IGVobF9wc2UxX3NnbWlpMWdfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9OTEzPXN0YXRpYyBpbnQgdGdsX3NnbWlpX3BoeTBfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTIxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6OTIyOnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHRnbF9zZ21paTFnX3BoeTBfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTkyMy1cXHQuc2V0dXAgPSB0Z2xfc2dtaWlfcGh5MF9kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz05MjY9c3RhdGljIGludCB0Z2xfc2dtaWlfcGh5MV9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05MzQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo5MzU6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gdGdsX3NnbWlpMWdfcGh5MV9pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTM2LVxcdC5zZXR1cCA9IHRnbF9zZ21paV9waHkxX2RhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTkzOT1zdGF0aWMgaW50IGFkbHNfc2dtaWlfcGh5MF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05NDgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo5NDk6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gYWRsc19zZ21paTFnX3BoeTBfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTk1MC1cXHQuc2V0dXAgPSBhZGxzX3NnbWlpX3BoeTBfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9OTUzPXN0YXRpYyBpbnQgYWRsc19zZ21paV9waHkxX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTk2Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjk2MzpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBhZGxzX3NnbWlpMWdfcGh5MV9pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTY0LVxcdC5zZXR1cCA9IGFkbHNfc2dtaWlfcGh5MV9kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz05OTI9c3RhdGljIGludCBhZGxuX3NnbWlpX3BoeTBfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTAxMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEwMTE6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gYWRsbl9zZ21paTFnX3BoeTBfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwMTItXFx0LnNldHVwID0gYWRsbl9zZ21paV9waHkwX2RhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwMTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMDE1OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9mdW5jX2RhdGEgZ2FsaWxlb19zdG1tYWNfZnVuY19kYXRhW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDE2LVxcdHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTAyMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEwMjI6c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2RtaV9kYXRhIGdhbGlsZW9fc3RtbWFjX2RtaV9kYXRhID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTAyMy1cXHQuZnVuYyA9IGdhbGlsZW9fc3RtbWFjX2Z1bmNfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTAyNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEwMjc6c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2Z1bmNfZGF0YSBpb3QyMDQwX3N0bW1hY19mdW5jX2RhdGFbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwMjgtXFx0e1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDM3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTAzODpzdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19wY2lfZG1pX2RhdGEgaW90MjA0MF9zdG1tYWNfZG1pX2RhdGEgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDM5LVxcdC5mdW5jID0gaW90MjA0MF9zdG1tYWNfZnVuY19kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMDc4PXN0YXRpYyBpbnQgcXVhcmtfZGVmYXVsdF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDg4LVxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTA4OTpcXHRyZXQgPSBzdG1tYWNfcGNpX2ZpbmRfcGh5X2FkZHIocGRldiwgcXVhcmtfcGNpX2RtaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDkwLVxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTExMTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMTE0OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHF1YXJrX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMTE1LVxcdC5zZXR1cCA9IHF1YXJrX2RlZmF1bHRfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9MTIzMj1zdGF0aWMgaW50IGludGVsX2V0aF9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEyMzQte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTIzNTpcXHRzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvICppbmZvID0gKHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gKilpZC1cXHUwMDNlZHJpdmVyX2RhdGE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMjM2LVxcdHN0cnVjdCBpbnRlbF9wcml2X2RhdGEgKmludGVsX3ByaXY7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTc2PXN0cnVjdCBsb29uZ3Nvbl9kYXRhIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtODEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo4MjpzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTgzLVxcdGludCAoKnNldHVwKShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM9MTMyPXN0YXRpYyBpbnQgbG9vbmdzb25fZ21hY19kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy0xNDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzoxNDI6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gbG9vbmdzb25fZ21hY19wY2lfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTE0My1cXHQuc2V0dXAgPSBsb29uZ3Nvbl9nbWFjX2RhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTE2NT1zdGF0aWMgaW50IGxvb25nc29uX2duZXRfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtMTc2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6MTc3OnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGxvb25nc29uX2duZXRfcGNpX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy0xNzgtXFx0LnNldHVwID0gbG9vbmdzb25fZ25ldF9kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz00OTg9c3RhdGljIGludCBsb29uZ3Nvbl9kd21hY19wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01MDEtXFx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgcmVzID0ge307XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo1MDI6XFx0c3RydWN0IHN0bW1hY19wY2lfaW5mbyAqaW5mbztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTUwMy1cXHRzdHJ1Y3QgbG9vbmdzb25fZGF0YSAqbGQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTUzNy1cXHRwbGF0LVxcdTAwM2VmaXhfc29jX3Jlc2V0ID0gbG9vbmdzb25fZHdtYWNfZml4X3Jlc2V0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6NTM4OlxcdHBsYXQtXFx1MDAzZXN1c3BlbmQgPSBzdG1tYWNfcGNpX3BsYXRfc3VzcGVuZDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjUzOTpcXHRwbGF0LVxcdTAwM2VyZXN1bWUgPSBzdG1tYWNfcGNpX3BsYXRfcmVzdW1lO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTQwLVxcdGxkLVxcdTAwM2VkZXYgPSBcXHUwMDI2cGRldi1cXHUwMDNlZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01NDItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo1NDM6XFx0aW5mbyA9IChzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvICopaWQtXFx1MDAzZWRyaXZlcl9kYXRhO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTQ0LVxcdHJldCA9IGluZm8tXFx1MDAzZXNldHVwKHBkZXYsIHBsYXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM9MTg4PXN0YXRpYyBpbnQgbW90b3Jjb21tX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmJzcF9wcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMTkyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjE5MzpcXHRyZXQgPSBzdG1tYWNfcGNpX3BsYXRfcmVzdW1lKGRldiwgYnNwX3ByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTE5NC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM9MjA4PW1vdG9yY29tbV9kZWZhdWx0X3BsYXRfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTI0OC1cXHRwbGF0LVxcdTAwM2Vjb3JlX3R5cGVcXHRcXHQ9IERXTUFDX0NPUkVfR01BQzQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MjQ5OlxcdHBsYXQtXFx1MDAzZXN1c3BlbmRcXHRcXHQ9IHN0bW1hY19wY2lfcGxhdF9zdXNwZW5kO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTI1MC1cXHRwbGF0LVxcdTAwM2VyZXN1bWVcXHRcXHQ9IG1vdG9yY29tbV9yZXN1bWU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmMtMTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5jOjEyOmludCBzdG1tYWNfcGNpX3BsYXRfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmJzcF9wcml2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuYy0xMy17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmMtMjUtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuYzoyNjpFWFBPUlRfU1lNQk9MX0dQTChzdG1tYWNfcGNpX3BsYXRfc3VzcGVuZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5jLTI3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuYzoyODppbnQgc3RtbWFjX3BjaV9wbGF0X3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmJzcF9wcml2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuYy0yOS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmMtNDMtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuYzo0NDpFWFBPUlRfU1lNQk9MX0dQTChzdG1tYWNfcGNpX3BsYXRfcmVzdW1lKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmMtNDUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmgtOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmg6OTppbnQgc3RtbWFjX3BjaV9wbGF0X3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpic3BfcHJpdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5oOjEwOmludCBzdG1tYWNfcGNpX3BsYXRfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqYnNwX3ByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuaC0xMS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTk6c3RydWN0IHN0bW1hY19wY2lfaW5mbyB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIwLVxcdGludCAoKnNldHVwKShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0zMz1zdGF0aWMgaW50IHN0bW1hY19kZWZhdWx0X2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtNDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjUwOnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHN0bW1hY19wY2lfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtNTEtXFx0LnNldHVwID0gc3RtbWFjX2RlZmF1bHRfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz01ND1zdGF0aWMgaW50IHNucHNfZ21hYzVfZGVmYXVsdF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEwMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTAyOnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHNucHNfZ21hYzVfcGNpX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEwMy1cXHQuc2V0dXAgPSBzbnBzX2dtYWM1X2RlZmF1bHRfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xMDYtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjEwNzogKiBzdG1tYWNfcGNpX3Byb2JlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEwOC0gKlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTExNy0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTE4OnN0YXRpYyBpbnQgc3RtbWFjX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTE5LVxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEyMC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjEyMTpcXHRzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvICppbmZvID0gKHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gKilpZC1cXHUwMDNlZHJpdmVyX2RhdGE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEyMi1cXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTc5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxODA6XFx0cGxhdC1cXHUwMDNlc3VzcGVuZCA9IHN0bW1hY19wY2lfcGxhdF9zdXNwZW5kO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxODE6XFx0cGxhdC1cXHUwMDNlcmVzdW1lID0gc3RtbWFjX3BjaV9wbGF0X3Jlc3VtZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTgyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE4Ni0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTg3OiAqIHN0bW1hY19wY2lfcmVtb3ZlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE4OC0gKlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE5MS0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTkyOnN0YXRpYyB2b2lkIHN0bW1hY19wY2lfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xOTMte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTIwMz1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgc3RtbWFjX2lkX3RhYmxlW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIwNDpcXHR7IFBDSV9ERVZJQ0VfREFUQShTVE1NQUMsIFNUTU1BQywgXFx1MDAyNnN0bW1hY19wY2lfaW5mbykgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjA1OlxcdHsgUENJX0RFVklDRV9EQVRBKFNUTUlDUk8sIE1BQywgXFx1MDAyNnN0bW1hY19wY2lfaW5mbykgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjA2LVxcdHsgUENJX0RFVklDRV9EQVRBKFNZTk9QU1lTLCBHTUFDNV9JRCwgXFx1MDAyNnNucHNfZ21hYzVfcGNpX2luZm8pIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MjEwPU1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBzdG1tYWNfaWRfdGFibGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIxMjpzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgc3RtbWFjX3BjaV9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIxMy1cXHQubmFtZSA9IFNUTU1BQ19SRVNPVVJDRV9OQU1FLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMTQtXFx0LmlkX3RhYmxlID0gc3RtbWFjX2lkX3RhYmxlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMTU6XFx0LnByb2JlID0gc3RtbWFjX3BjaV9wcm9iZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjE2OlxcdC5yZW1vdmUgPSBzdG1tYWNfcGNpX3JlbW92ZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjE3LVxcdC5kcml2ZXIgICAgICAgICA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIyMjptb2R1bGVfcGNpX2RyaXZlcihzdG1tYWNfcGNpX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIyMy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDQ6NTI6MDAuODgwMTMwNzQ2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjgzOTU4MDg1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIFNUTU1BQyBEcml2ZXIgYW5kIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlIGBzdG1tYWNgIGRyaXZlciBhbmQgdGhlIGBzdG1tYWNfcGNpLmNgIFBDSSB3cmFwcGVyLCB3aGljaCByZWdpc3RlcnMgdGhlIFBDSSBkcml2ZXIuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIkNhbiB3ZSBmdXp6IHRoaXMgaW4gUUVNVT9cIi4gU3l6a2FsbGVyIGlzIHRoZSBvYnZpb3VzIHRvb2wsIGFuZCBpdCBvZnRlbiBoYW5kbGVzIFBDSSBkZXZpY2VzIGJ5IGVpdGhlciBlbXVsYXRpbmcgdGhlbSB3aXRoIGBzeXpfcGNpX3NldHVwYCBvciB1c2luZyB2aXJ0dWFsIGRldmljZXMgaWYgdGhleSdyZSBub3Qgc3RhbmRhcmQgUUVNVSBjb21wb25lbnRzLiBUaGUga2V5IGhlcmUgaXMsIGlzIGBzdG1tYWNgIHN0YW5kYXJkPyBObywgaXQncyBub3QgYSBzdGFuZGFyZCBRRU1VIGRldmljZS4gQnV0LCBTeXprYWxsZXIgKmRvZXMqIGhhdmUgdGhpcyB2aXJ0dWFsIFBDSSBkZXZpY2UgZnV6emVyLi4uIHNvIG1heWJlP1xuXG5UaGVuIEkgdGhpbmssIFwiSGFzIFN5emthbGxlciBhbHJlYWR5IHRhY2tsZWQgYHN0bW1hY2A/XCIuIEkgc2VlIGEgY29tbWl0IG1lc3NhZ2UgbWVudGlvbmluZyBgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3YCwgd2hpY2ggc3Ryb25nbHkgc3VnZ2VzdHMgc29tZW9uZSdzIHN1Ym1pdHRlZCBhIHBhdGNoIHRvIFN5emthbGxlciBzcGVjaWZpY2FsbHkgZm9yIHRoaXMgZHJpdmVyLCBvciBhdCBsZWFzdCB0aGV5J3JlIHRlc3RpbmcgaXQuXG5cbldhaXQsIG5vdyBJJ20gcmVhZGluZyB0aGUgb3JpZ2luYWwgcHJvbXB0LCBhbmQgaXQgbWVudGlvbnMgYXZvaWRpbmcgZnV6emluZyBvZiBzcGVjaWZpYyB2ZW5kb3Itc3BlY2lmaWMgUENJZSBkZXZpY2VzIGxpa2UgU21hcnROSUNzLCBHUFVzLCBhbmQgUENJZSBzd2l0Y2hlcy4uLiBpcyBgc3RtbWFjYCBvbmUgb2YgdGhvc2U/IE5vLCB0aGF0J3Mgbm90IHJpZ2h0LiBJdCdzIGEgc3RhbmRhcmQgRXRoZXJuZXQgTUFDIGRyaXZlciwgRGVzaWduV2FyZSBNQUMsIHdoaWNoIGlzIHF1aXRlIGNvbW1vbiwgc28gdGhhdCdzIGEgbm8gb24gdGhlIGV4Y2x1c2lvbiBjbGF1c2UuXG5cbkFoLCB0aGUgcGF0Y2ggaXRzZWxmIGlzIGZvY3VzZWQgb24gYHN0bW1hY194ZHBfcmVsZWFzZWAgYW5kIGBzdG1tYWNfeGRwX29wZW5gLiBUaGVzZSBhcmUgWERQIChlQlBGKSByZWxhdGVkIGZ1bmN0aW9ucy4gTm93IEknbSB0aGlua2luZywgXCJJcyBgc3RtbWFjX3hkcF9vcGVuYCByZWFjaGFibGU/XCIuIEl0IGxvb2tzIGxpa2UgaXQgZ2V0cyBjYWxsZWQgd2hlbiB3ZSBhdHRhY2ggb3IgZGV0YWNoIGFuIFhEUCBwcm9ncmFtLCBvciB3aGVuIHRoZSBpbnRlcmZhY2UgaXMgYnJvdWdodCB1cCB3aXRoIFhEUC4gU28sIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjYWxsIHBhdGhzIHRvIGBzdG1tYWNfeGRwX29wZW5gLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTc0OSwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwNDo1MjowNy43MTk3MTQxOTlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjMxODQzMjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RtbWFjX3hkcF9vcGVuXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaD00MDc9dm9pZCBzdG1tYWNfcHRwX3VucmVnaXN0ZXIoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaDo0MDg6aW50IHN0bW1hY194ZHBfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaC00MDktdm9pZCBzdG1tYWNfeGRwX3JlbGVhc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTcxNDE9dm9pZCBzdG1tYWNfeGRwX3JlbGVhc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzE3NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjcxNzU6aW50IHN0bW1hY194ZHBfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzE3Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmM9MTAyPWludCBzdG1tYWNfeGRwX3NldF9wcm9nKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgc3RydWN0IGJwZl9wcm9nICpwcm9nLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jLTEzNC1cXHRpZiAoaWZfcnVubmluZyBcXHUwMDI2XFx1MDAyNiBuZWVkX3VwZGF0ZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmM6MTM1OlxcdFxcdHN0bW1hY194ZHBfb3BlbihkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYy0xMzYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA0OjUyOjA3Ljc4MjkwMzg0NVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg2NDg5MTg0MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYHN0bW1hY2AgRHJpdmVyJ3MgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBzbyBgc3RtbWFjX3hkcF9vcGVuYCBpcyBjYWxsZWQgYnkgYHN0bW1hY194ZHBfc2V0X3Byb2dgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgY2FuIEkgZXZlbiByZWFjaCB0aGlzIHRoaW5nIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IFFFTVUsIGJ5IGRlZmF1bHQsIGRvZXNuJ3QgZW11bGF0ZSBgc3RtbWFjYC4gSG93ZXZlciwgSSByZWNhbGwgUUVNVSAqZG9lcyogaGF2ZSBlbXVsYXRlZCBuZXR3b3JrIGhhcmR3YXJlIGluIHBsYWNlcyBsaWtlIGBody9uZXQvaW14X2ZlYy5jYCwgYGh3L25ldC9jYWRlbmNlX2dlbS5jYCwgYW5kIHNldmVyYWwgb3RoZXJzLiBEb2VzIGl0ICphbHNvKiBlbXVsYXRlIERlc2lnbldhcmUgTUFDcywgd2hpY2ggaXMgd2hhdCBgc3RtbWFjYCBkcml2ZXM/IFllcyEgUUVNVSAqZG9lcyogZW11bGF0ZSB0aGUgYGRlc2lnbndhcmVgIE1BQywgc3BlY2lmaWNhbGx5IGluIGBody9uZXQvZGVzaWdud2FyZS5jYC4gVGhhdCdzIHRoZSBrZXkuXG5cbkxldCBtZSBjb25maXJtIHF1aWNrbHk6IFFFTVUncyBgaHcvbmV0L2Rlc2lnbndhcmUuY2AgZW11bGF0ZXMgdGhlIFN5bm9wc3lzIERlc2lnbldhcmUgMTAvMTAwLzEwMDAgRXRoZXJuZXQgTUFDLCB3aGljaCBpcyAqZXhhY3RseSogd2hhdCBgc3RtbWFjYCBpbnRlcmFjdHMgd2l0aC4gVGhpcyBpcyBwcm9taXNpbmcuXG5cbk5vdywgY29uc2lkZXJpbmcgZnV6emluZywgc3l6a2FsbGVyIGhhcyBgc3l6X3VzYl9jb25uZWN0YCBmb3IgVVNCIGFuZCBgc3l6X3BjaV9zZXR1cGAgZm9yIFBDSS4gYHN0bW1hY2AgaXMgb2Z0ZW4gYSBwbGF0Zm9ybSBkZXZpY2UsIGJ1dCBzeXprYWxsZXIgKmNhbiogZnV6eiBwbGF0Zm9ybSBkZXZpY2VzIGlmIHRoZXkncmUgaW5zdGFudGlhdGVkIHRocm91Z2ggdGhlIGRldmljZSB0cmVlIG9yLCBpbXBvcnRhbnRseSwgaWYgdGhleSdyZSBQQ0kgZGV2aWNlcy4gQW5kIHdhaXQuLi4gYHN0bW1hY19wY2lgICppcyogYSBQQ0kgZHJpdmVyISBTeXprYWxsZXIncyBQQ0kgZnV6emVyIGNhbiBwb3RlbnRpYWxseSBpbnN0YW50aWF0ZSBpdCEgVGhpcyBpcyBleGNlbGxlbnQgbmV3cy5cblxuVGhlIHBhdGNoIGl0c2VsZiBpcyBtb2RpZnlpbmcgYHN0bW1hY19kaXNhYmxlX2FsbF9kbWFfaXJxYCwgYHN0bW1hY19zeW5jaHJvbml6ZV9pcnFgLCBgc3RtbWFjX3hkcF9yZWxlYXNlYCwgYW5kIGBzdG1tYWNfeGRwX29wZW5gLiBUaGVzZSBhcmUga2VybmVsIGZ1bmN0aW9uYWwgY2hhbmdlcywgYW5kIHRoaXMgaXMgcHJpbWUgZnV6emluZyB0ZXJyaXRvcnkuXG5cbklzIHRoaXMgd29ydGggdGhlIGVmZm9ydD8gQWJzb2x1dGVseS4gVGhlIGZvY3VzIHN5bWJvbHMgYXJlIGNsZWFybHk6IGBzdG1tYWNfeGRwX29wZW5gLCBgc3RtbWFjX3hkcF9yZWxlYXNlYCwgYHN0bW1hY19kaXNhYmxlX2FsbF9kbWFfaXJxYCwgYW5kIGBzdG1tYWNfc3luY2hyb25pemVfaXJxYC4gV2FpdCBhIHNlY29uZCB0aG91Z2gsIGBzdG1tYWNfZGlzYWJsZV9hbGxfZG1hX2lycWAgYW5kIGBzdG1tYWNfc3luY2hyb25pemVfaXJxYCBhcmUgc3RhdGljIGZ1bmN0aW9ucy4gSSdsbCBuZWVkIHRvIGNoZWNrIGlmIHRoZXkncmUgaW5saW5lZCBvciBhY2Nlc3NpYmxlIGluIGEgd2F5IHRoYXQgYWxsb3dzIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzMDQxLCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTA4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA0OjUyOjE2LjQzMTg1NzIwNVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDg4OTk5NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfZGlzYWJsZV9hbGxfZG1hX2lycVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0yNTE3PXN0YXRpYyB2b2lkIHN0bW1hY19lbmFibGVfYWxsX2RtYV9pcnEoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yNTMzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjUzNDpzdGF0aWMgdm9pZCBzdG1tYWNfZGlzYWJsZV9hbGxfZG1hX2lycShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yNTM1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzE0MT12b2lkIHN0bW1hY194ZHBfcmVsZWFzZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MTU1LVxcdC8qIFNpbGVuY2UgRE1BIGludGVycnVwdHMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjcxNTY6XFx0c3RtbWFjX2Rpc2FibGVfYWxsX2RtYV9pcnEocHJpdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MTU3LVxcdHN0bW1hY19zeW5jaHJvbml6ZV9pcnEoZGV2KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDQ6NTI6MTYuNDkyNzUyMjgxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQyNDkzOTA1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkFuYWx5emluZyBTdGF0aWMgRnVuY3Rpb25zIGFuZCBQb3RlbnRpYWwgWERQIEludGVyYWN0aW9ucyBpbiB0aGUgU1RNTUFDIERyaXZlcioqXG5cbkFscmlnaHQsIHNvIHRoZSBjb3JlIG9mIHdoYXQgSSdtIGxvb2tpbmcgYXQgaGVyZSBpcyB0aGUgaW50ZXJhY3Rpb24gb2YgWERQIChlWHByZXNzIERhdGEgUGF0aCkgd2l0aCB0aGUgU1RNTUFDIGRyaXZlci4gVGhlIG5vdGVzIG1ha2UgaXQgY2xlYXIgdGhhdCB0aGUgZnVuY3Rpb25zIHRoYXQgYXJlIGRlY2xhcmVkIHN0YXRpYyBhcmUgaW5saW5lZCwgc28gSSB3b24ndCBuZWVkIHRvIGRpZyBpbnRvIHRob3NlLiBNeSBmb2N1cyB0aGVuIHNoaWZ0cyB0byB0aGUgbm9uLXN0YXRpYyBmdW5jdGlvbnMgcmVsYXRlZCB0byBYRFAuXG5cblRoZSBrZXkgcGxheWVycyBoZXJlIGFyZSBgc3RtbWFjX3hkcF9yZWxlYXNlYCwgYHN0bW1hY194ZHBfb3BlbmAsIGFuZCwganVzdCB0byBiZSB0aG9yb3VnaCwgSSBzaG91bGQgcmVhbGx5IHNjcnV0aW5pemUgYHN0bW1hY194ZHBfc2V0X3Byb2dgIGFzIHdlbGwuIFVuZGVyc3RhbmRpbmcgaG93IHRoZXNlIHRocmVlIGZ1bmN0aW9ucyBoYW5kbGUgWERQIHByb2dyYW0gbWFuYWdlbWVudCBhbmQgZHJpdmVyIGludGVyYWN0aW9uIGlzIGNyaXRpY2FsLiBNeSBndXQgdGVsbHMgbWUgdGhlc2UgZnVuY3Rpb25zIGFyZSBsaWtlbHkgdG8gYmUgcmVzcG9uc2libGUgZm9yIGxvYWRpbmcsIHVubG9hZGluZywgYW5kIHNldHRpbmcgdGhlIFhEUCBwcm9ncmFtLiBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZWlyIGltcGxlbWVudGF0aW9uIGRldGFpbHMgdG8gZnVsbHkgZ3Jhc3AgdGhlIFhEUCBpbnRlZ3JhdGlvbi4gUGVyaGFwcyB0aGVyZSdzIGFuIGlzc3VlIHRoZXJlP1xuXG5cbiIsIklucHV0VG9rZW5zIjoxNDQ4NSwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA0OjUyOjE5LjkxNzY5Mzk4N1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjY2NTk5MzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RtbWFjX3hkcF9zZXRfcHJvZ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz02OTgzPXN0YXRpYyBpbnQgc3RtbWFjX2JwZihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmV0ZGV2X2JwZiAqYnBmKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02OTg4LVxcdGNhc2UgWERQX1NFVFVQX1BST0c6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo2OTg5OlxcdFxcdHJldHVybiBzdG1tYWNfeGRwX3NldF9wcm9nKHByaXYsIGJwZi1cXHUwMDNlcHJvZywgYnBmLVxcdTAwM2VleHRhY2spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjk5MC1cXHRjYXNlIFhEUF9TRVRVUF9YU0tfUE9PTDpcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYz05NT1pbnQgc3RtbWFjX3hkcF9zZXR1cF9wb29sKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmMtMTAxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYzoxMDI6aW50IHN0bW1hY194ZHBfc2V0X3Byb2coc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jLTEwMy1cXHRcXHRcXHRzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmg9OT1pbnQgc3RtbWFjX3hkcF9zZXR1cF9wb29sKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5oLTEwLVxcdFxcdFxcdCAgdTE2IHF1ZXVlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmg6MTE6aW50IHN0bW1hY194ZHBfc2V0X3Byb2coc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5oLTEyLVxcdFxcdFxcdHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA0OjUyOjE5Ljk4NDM2MDY3M1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzcyNzA5NzUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU1RNTUFDIFhEUCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgXCJBaGEhIGBzdG1tYWNfeGRwX3NldF9wcm9nYCBpcyBleHBvc2VkIGFuZCByZWFjaGFibGUgdGhyb3VnaCBgc3RtbWFjX2JwZmAuXCIgVGhhdCdzIHRoZSBlbnRyeSBwb2ludCwgdGhlIGNyaXRpY2FsIHBpZWNlIGhlcmUuIEJ1dCBob2xkIG9uLCB0aGUgcGF0Y2ggdG91Y2hlcyBgc3RtbWFjX3hkcF9yZWxlYXNlYCBhbmQgYHN0bW1hY194ZHBfb3BlbmAgYXMgd2VsbC4gUmlnaHQsIG9mIGNvdXJzZSwgdGhlc2UgYXJlIHJlbGF0ZWQgbGlmZWN5Y2xlIGZ1bmN0aW9ucy4gVGhlcmVmb3JlLCB0byBlbnN1cmUgSSBoYXZlIGZ1bGwgY29udGV4dCwgSSBuZWVkIHRvIGluY2x1ZGUgYHN0bW1hY194ZHBfcmVsZWFzZWAsIGBzdG1tYWNfeGRwX29wZW5gLCBgc3RtbWFjX3hkcF9zZXRfcHJvZ2AsIGFuZCBgc3RtbWFjX2JwZmAgaW4gbXkgRm9jdXNTeW1ib2xzIGxpc3QuIFRoYXQgd2F5LCBJIGNhbiB0cmFjZSBldmVyeXRoaW5nLiBOb3csIGxldCdzIGNvbnNpZGVyIHRoZSBidWlsZCBlbnZpcm9ubWVudC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgYHN0bW1hY2AgZHJpdmVyIGlzIGNvbmZpZ3VyZWQgY29ycmVjdGx5IGZvciB0aGlzIGZ1bmN0aW9uYWxpdHkgdG8gZXZlbiBiZSByZWxldmFudC4gVGltZSB0byBjaGVjayB0aGUgS2NvbmZpZyBmaWxlcyBmb3IgdGhlIGBzdG1tYWNgIGRyaXZlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTUzODIsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDQ6NTI6MjQuNzU3MDczMDY1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDg0NDUzNDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNUTU1BQ19FVEhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI6Y29uZmlnIFNUTU1BQ19FVEhcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlNUTWljcm9lbGVjdHJvbmljcyBNdWx0aS1HaWdhYml0IEV0aGVybmV0IGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDQ6NTI6MjQuODY1NTIyNzE4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzOTg0MzMzNDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOlxuXG4qKkludmVzdGlnYXRpbmcgU1RNTUFDIERyaXZlciBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGluLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGZvciB0aGUgU1RNTUFDIEV0aGVybmV0IGRyaXZlci4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gY2hlY2sgdGhlIGBLY29uZmlnYCBmaWxlIHdpdGhpbiB0aGUgZHJpdmVyJ3MgZGlyZWN0b3J5LiBTcGVjaWZpY2FsbHksIEknbSBoZWFkaW5nIHN0cmFpZ2h0IGZvciBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ2AuIFRoaXMgZmlsZSBpcyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgd2hpY2ggb3RoZXIgbW9kdWxlcywgZmVhdHVyZXMsIG9yIGNvbmZpZ3VyYXRpb25zIGFyZSByZXF1aXJlZCBvciBvcHRpb25hbCB3aGVuIGJ1aWxkaW5nIGFuZCBpbmNsdWRpbmcgdGhlIFNUTU1BQyBkcml2ZXIgaW4gYSBrZXJuZWwgY29uZmlndXJhdGlvbi4gSSdtIGV4cGVjdGluZyB0byBmaW5kIGNvbmRpdGlvbmFsIGRlcGVuZGVuY2llcyBvbiBvdGhlciBkcml2ZXJzLCBoYXJkd2FyZSBwbGF0Zm9ybXMsIG9yIHNwZWNpZmljIGZlYXR1cmVzIHJlbGF0ZWQgdG8gdGhlIFNUTWljcm8gRXRoZXJuZXQgTUFDIGNvbnRyb2xsZXJzLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIHByb3BlciBjb250ZXh0IGJlZm9yZSBJIHByb2NlZWQgd2l0aCBhbnkgZnVydGhlciBpbnZlc3RpZ2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTg5MSwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA0OjUyOjI4LjI2Mzk1ODMyNloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MjQ2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIFNUTU1BQ19FVEhcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIEhBU19JT01FTSBcXHUwMDI2XFx1MDAyNiBIQVNfRE1BXFxuICAgNTpcXHRcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuICAgNjpcXHRcXHRkZXBlbmRzIG9uIEVUSFRPT0xfTkVUTElOS1xcbiAgIDc6XFx0XFx0c2VsZWN0IE1JSVxcbiAgIDg6XFx0XFx0c2VsZWN0IFBDU19YUENTXFxuICAgOTpcXHRcXHRzZWxlY3QgUEFHRV9QT09MXFxuICAxMDpcXHRcXHRzZWxlY3QgUEhZTElOS1xcbiAgMTE6XFx0XFx0c2VsZWN0IENSQzMyXFxuICAxMjpcXHRcXHRzZWxlY3QgUkVTRVRfQ09OVFJPTExFUlxcbiAgMTM6XFx0XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuICAxNDpcXHRcXHRoZWxwXFxuICAxNTpcXHRcXHQgIFRoaXMgaXMgdGhlIGRyaXZlciBmb3IgdGhlIEV0aGVybmV0IElQcyBidWlsdCBhcm91bmQgYVxcbiAgMTY6XFx0XFx0ICBTeW5vcHN5cyBJUCBDb3JlLlxcbiAgMTc6XFx0XFxuICAxODpcXHRpZiBTVE1NQUNfRVRIXFxuICAxOTpcXHRcXG4gIDIwOlxcdGNvbmZpZyBTVE1NQUNfU0VMRlRFU1RTXFxuICAyMTpcXHRcXHRib29sIFxcXCJTdXBwb3J0IGZvciBTVE1NQUMgU2VsZnRlc3RzXFxcIlxcbiAgMjI6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUXFxuICAyMzpcXHRcXHRkZWZhdWx0IG5cXG4gIDI0OlxcdFxcdGhlbHBcXG4gIDI1OlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIFNUTU1BQyBTZWxmdGVzdHMgdXNpbmcgZXRodG9vbC4gRW5hYmxlIHRoaXNcXG4gIDI2OlxcdFxcdCAgZmVhdHVyZSBpZiB5b3UgYXJlIGZhY2luZyBwcm9ibGVtcyB3aXRoIHlvdXIgSFcgYW5kIHN1Ym1pdCB0aGUgdGVzdFxcbiAgMjc6XFx0XFx0ICByZXN1bHRzIHRvIHRoZSBuZXRkZXYgTWFpbGluZyBMaXN0LlxcbiAgMjg6XFx0XFxuICAyOTpcXHRjb25maWcgU1RNTUFDX1BMQVRGT1JNXFxuICAzMDpcXHRcXHR0cmlzdGF0ZSBcXFwiU1RNTUFDIFBsYXRmb3JtIGJ1cyBzdXBwb3J0XFxcIlxcbiAgMzE6XFx0XFx0c2VsZWN0IE1GRF9TWVNDT05cXG4gIDMyOlxcdFxcdGRlZmF1bHQgeVxcbiAgMzM6XFx0XFx0aGVscFxcbiAgMzQ6XFx0XFx0ICBUaGlzIHNlbGVjdHMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGJ1cyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cXG4gIDM1OlxcdFxcdCAgVGhpcyBpcyB0aGUgZHJpdmVyIHVzZWQgb24gc2V2ZXJhbCBTb0NzOlxcbiAgMzY6XFx0XFx0ICBTVGksIEFsbHdpbm5lciwgQW1sb2dpYyBNZXNvbiwgQWx0ZXJhIFNPQ0ZQR0EuXFxuICAzNzpcXHRcXG4gIDM4OlxcdFxcdCAgSWYgeW91IGhhdmUgYSBjb250cm9sbGVyIHdpdGggdGhpcyBpbnRlcmZhY2UsIHNheSBZIG9yIE0gaGVyZS5cXG4gIDM5OlxcdFxcbiAgNDA6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbiAgNDE6XFx0XFxuICA0MjpcXHRpZiBTVE1NQUNfUExBVEZPUk1cXG4gIDQzOlxcdFxcbiAgNDQ6XFx0Y29uZmlnIERXTUFDX0RXQ19RT1NfRVRIXFxuICA0NTpcXHRcXHR0cmlzdGF0ZSBcXFwiU3VwcG9ydCBmb3Igc25wcyxkd2MtcW9zLWV0aGVybmV0LnR4dCBEVCBiaW5kaW5nLlxcXCJcXG4gIDQ2OlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAgNDc6XFx0XFx0c2VsZWN0IE1JSVxcbiAgNDg6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiBIQVNfRE1BXFxuICA0OTpcXHRcXHRoZWxwXFxuICA1MDpcXHRcXHQgIFN1cHBvcnQgZm9yIGNoaXBzIHVzaW5nIHRoZSBzbnBzLGR3Yy1xb3MtZXRoZXJuZXQudHh0IERUIGJpbmRpbmcuXFxuICA1MTpcXHRcXG4gIDUyOlxcdGNvbmZpZyBEV01BQ19HRU5FUklDXFxuICA1MzpcXHRcXHR0cmlzdGF0ZSBcXFwiR2VuZXJpYyBkcml2ZXIgZm9yIERXTUFDXFxcIlxcbiAgNTQ6XFx0XFx0ZGVmYXVsdCBTVE1NQUNfUExBVEZPUk1cXG4gIDU1OlxcdFxcdGhlbHBcXG4gIDU2OlxcdFxcdCAgR2VuZXJpYyBEV01BQyBkcml2ZXIgZm9yIHBsYXRmb3JtcyB0aGF0IGRvbid0IHJlcXVpcmUgYW55XFxuICA1NzpcXHRcXHQgIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUgdG8gZnVuY3Rpb24gb3IgaXMgdXNpbmcgcGxhdGZvcm1cXG4gIDU4OlxcdFxcdCAgZGF0YSBmb3Igc2V0dXAuXFxuICA1OTpcXHRcXG4gIDYwOlxcdGNvbmZpZyBEV01BQ19BTkFSSU9OXFxuICA2MTpcXHRcXHR0cmlzdGF0ZSBcXFwiQWRhcHRydW0gQW5hcmlvbiBHTUFDIHN1cHBvcnRcXFwiXFxuICA2MjpcXHRcXHRkZWZhdWx0IEFSQ1xcbiAgNjM6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDIHx8IENPTVBJTEVfVEVTVClcXG4gIDY0OlxcdFxcdGhlbHBcXG4gIDY1OlxcdFxcdCAgU3VwcG9ydCBmb3IgQWRhcHRydW0gQW5hcmlvbiBHTUFDIEV0aGVybmV0IGNvbnRyb2xsZXIuXFxuICA2NjpcXHRcXG4gIDY3OlxcdFxcdCAgVGhpcyBzZWxlY3RzIHRoZSBBbmFyaW9uIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLlxcbiAgNjg6XFx0XFxuICA2OTpcXHRjb25maWcgRFdNQUNfRUlDNzcwMFxcbiAgNzA6XFx0XFx0dHJpc3RhdGUgXFxcIlN1cHBvcnQgZm9yIEVzd2luIGVpYzc3MDAgZXRoZXJuZXQgZHJpdmVyXFxcIlxcbiAgNzE6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiBIQVNfRE1BIFxcdTAwMjZcXHUwMDI2IEFSQ0hfRVNXSU4gfHwgQ09NUElMRV9URVNUXFxuICA3MjpcXHRcXHRoZWxwXFxuICA3MzpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSBFc3dpbiBFSUM3NzAwIEV0aGVybmV0IGNvbnRyb2xsZXIsXFxuICA3NDpcXHRcXHQgIHdoaWNoIGludGVncmF0ZXMgU3lub3BzeXMgRGVzaWduV2FyZSBRb1MgZmVhdHVyZXMuIEl0IGVuYWJsZXNcXG4gIDc1OlxcdFxcdCAgaGlnaC1zcGVlZCBuZXR3b3JraW5nIHdpdGggRE1BIGFjY2VsZXJhdGlvbiBhbmQgaXMgb3B0aW1pemVkXFxuICA3NjpcXHRcXHQgIGZvciBlbWJlZGRlZCBzeXN0ZW1zLlxcbiAgNzc6XFx0XFxuICA3ODpcXHRjb25maWcgRFdNQUNfSU5HRU5JQ1xcbiAgNzk6XFx0XFx0dHJpc3RhdGUgXFxcIkluZ2VuaWMgTUFDIHN1cHBvcnRcXFwiXFxuICA4MDpcXHRcXHRkZWZhdWx0IE1BQ0hfSU5HRU5JQ1xcbiAgODE6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiBIQVNfSU9NRU0gXFx1MDAyNlxcdTAwMjYgKE1BQ0hfSU5HRU5JQyB8fCBDT01QSUxFX1RFU1QpXFxuICA4MjpcXHRcXHRzZWxlY3QgTUZEX1NZU0NPTlxcbiAgODM6XFx0XFx0aGVscFxcbiAgODQ6XFx0XFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIEluZ2VuaWMgU29Dcy5cXG4gIDg1OlxcdFxcbiAgODY6XFx0XFx0ICBUaGlzIHNlbGVjdHMgSW5nZW5pYyBTb0NzIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hY1xcbiAgODc6XFx0XFx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIG9uIGZvciB0aGUgSW5nZW5pYyBTb0NzXFxuICA4ODpcXHRcXHQgIE1BQyBldGhlcm5ldCBjb250cm9sbGVyLlxcbiAgODk6XFx0XFxuICA5MDpcXHRjb25maWcgRFdNQUNfSVBRODA2WFxcbiAgOTE6XFx0XFx0dHJpc3RhdGUgXFxcIlFDQSBJUFE4MDZ4IERXTUFDIHN1cHBvcnRcXFwiXFxuICA5MjpcXHRcXHRkZWZhdWx0IEFSQ0hfUUNPTVxcbiAgOTM6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9RQ09NIHx8IENPTVBJTEVfVEVTVClcXG4gIDk0OlxcdFxcdHNlbGVjdCBNRkRfU1lTQ09OXFxuICA5NTpcXHRcXHRoZWxwXFxuICA5NjpcXHRcXHQgIFN1cHBvcnQgZm9yIFFDQSBJUFE4MDZYIERXTUFDIEV0aGVybmV0LlxcbiAgOTc6XFx0XFxuICA5ODpcXHRcXHQgIFRoaXMgc2VsZWN0cyB0aGUgSVBRODA2eCBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjXFxuICA5OTpcXHRcXHQgIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGRvZXMgbm90IHVzZSBhbnkgb2YgdGhlIGhhcmR3YXJlXFxuIDEwMDpcXHRcXHQgIGFjY2VsZXJhdGlvbiBmZWF0dXJlcyBhdmFpbGFibGUgb24gdGhpcyBTb0MuIE5ldHdvcmsgZGV2aWNlc1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwNDo1MjoyOC4yNjQwNTI3NzVaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE2NjQzODg2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmcm9tIG15IHBlcnNwZWN0aXZlOlxuXG4qKkRlYnVnZ2luZyBEcml2ZXIgQ29uZmlndXJhdGlvbiBmb3IgU3l6a2FsbGVyIEludGVncmF0aW9uKipcblxuQWxyaWdodCwgc28gd2UgbmVlZCB0byBnZXQgdGhpcyBgU1RNTUFDX1BDSWAgb3B0aW9uIGVuYWJsZWQuIFNwZWNpZmljYWxseSwgSSdtIHRoaW5raW5nIGFib3V0IG1ha2luZyBzdXJlIHRoZSBQQ0kgZHJpdmVyIGZvciB0aGUgU1RNTUFDIGV0aGVybmV0IGNvbnRyb2xsZXIgaXMgYXZhaWxhYmxlLiBUaGlzIGlzIGNydWNpYWwgYmVjYXVzZSBzeXprYWxsZXIsIHdoaWNoIHdlJ3JlIHVzaW5nIGZvciBmdXp6aW5nLCB3aWxsIGxpa2VseSBpbnRlcmFjdCB3aXRoIHRoZSBkcml2ZXIgdGhyb3VnaCB0aGUgUENJIGludGVyZmFjZS4gVGhlcmVmb3JlLCBgU1RNTUFDX1BDSWAgaGFzIHRvIGJlIGNvcnJlY3RseSBjb25maWd1cmVkLiBUaGUgbmV4dCBvYnZpb3VzIHN0ZXAgaXMgdG8gcXVpY2tseSBmaW5kIG91dCB3aGVyZSB0aGlzIHRoaW5nIGlzIGFjdHVhbGx5IGRlZmluZWQgd2l0aGluIHRoZSBrZXJuZWwgc291cmNlLiBObyBwb2ludCBpbiBndWVzc2luZzsgSSBuZWVkIHRoZSBhdXRob3JpdGF0aXZlIGxvY2F0aW9uIHRvIHVuZGVyc3RhbmQgaXRzIGRlcGVuZGVuY2llcyBhbmQgZW5zdXJlIGl0J3MgZW5hYmxlZCBhcHByb3ByaWF0ZWx5LiBMZXQncyBkaWcgaW4gYW5kIHRyYWNrIGRvd24gdGhlIGRlZmluaXRpb24gb2YgYFNUTU1BQ19QQ0lgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzUyNSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDQ6NTI6MzEuNDMwNDk2MDc3WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MjI1MjI5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgU1RNTUFDX1BDSVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zOTg9Y29uZmlnIERXTUFDX01PVE9SQ09NTVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo0MDc6Y29uZmlnIFNUTU1BQ19QQ0lcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwOC1cXHR0cmlzdGF0ZSBcXFwiU1RNTUFDIFBDSSBidXMgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDQ6NTI6MzEuNTEyNzU1MDYzWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMjc1NDc4MzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIGBTVE1NQUNfUENJYCBEZWZpbml0aW9uKipcblxuT2theSwgc28gSSdtIHByZXNlbnRlZCB3aXRoIGEgcmVmZXJlbmNlIHRvIGBTVE1NQUNfUENJYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiUmlnaHQsIGxldCdzIGdldCBpbnRvIHRoZSBzcGVjaWZpY3Mgb2YgdGhpcy5cIiBTaW5jZSBJJ20gd29ya2luZyBhdCB0aGlzIGxldmVsLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYXJjaGl0ZWN0dXJhbCBkZXRhaWxzLiBTbywgdGhlIGZpcnN0IHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIHRoZSBkZWZpbml0aW9uIGl0c2VsZi4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhpcyBzcGVjaWZpYyBjb25maWd1cmF0aW9uIHRpZXMgaW50byB0aGUgYnJvYWRlciBTVE1NQUMgKFNUTWljcm9lbGVjdHJvbmljcyBNZWRpYSBBY2Nlc3MgQ29udHJvbGxlcikgZWNvc3lzdGVtLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIGNsdWVzIGFib3V0IHRoZSBQQ0kgKFBlcmlwaGVyYWwgQ29tcG9uZW50IEludGVyY29ubmVjdCkgaW50ZXJmYWNlIGltcGxlbWVudGF0aW9uOiBIb3cgZG9lcyBpdCBtYW5hZ2UgbWVtb3J5IG1hcHBpbmc/IFdoYXQgYWJvdXQgaW50ZXJydXB0IGhhbmRsaW5nPyBBcmUgdGhlcmUgYW55IHNwZWNpZmljIGhhcmR3YXJlIHF1aXJrcyBvciBlcnJhdGEgSSBuZWVkIHRvIGJlIGF3YXJlIG9mIHdpdGhpbiB0aGlzIGNvbmZpZ3VyYXRpb24/IFRoaXMgaW5mb3JtYXRpb24gaXMgY3JpdGljYWwgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGJlaGF2aW9yIG9mIHRoZSBOSUMsIGl0cyBwZXJmb3JtYW5jZSBsaW1pdHMsIGFuZCBkZWJ1Z2dpbmcgYW55IHBvdGVudGlhbCBpc3N1ZXMgdGhhdCBtYXkgYXJpc2UgaW4gdGhpcyBzcGVjaWZpYyBzZXR1cC4gRXNzZW50aWFsbHksIEkgbmVlZCB0byBlc3RhYmxpc2ggYSBzb2xpZCwgY29uY3JldGUgdW5kZXJzdGFuZGluZyBvZiAqdGhpcyogcGFydGljdWxhciBpbnN0YW5jZSBvZiBhbiBTVE1NQUMgZHJpdmVyIGludGVyYWN0aW5nIHdpdGggdGhlIFBDSSBidXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3OTA1LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDQ6NTI6MzQuNzQwMzA1OTkxWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNjA1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQwMCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDQwMDpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiA0MDE6XFx0XFx0c2VsZWN0IE1PVE9SQ09NTV9QSFlcXG4gNDAyOlxcdFxcdHNlbGVjdCBTVE1NQUNfTElCUENJXFxuIDQwMzpcXHRcXHRoZWxwXFxuIDQwNDpcXHRcXHQgIFRoaXMgZW5hYmxlcyBnbHVlIGRyaXZlciBmb3IgTW90b3Jjb21tIERXTUFDLWJhc2VkIFBDSSBFdGhlcm5ldFxcbiA0MDU6XFx0XFx0ICBjb250cm9sbGVycy4gQ3VycmVudGx5IG9ubHkgWVQ2ODAxIGlzIHN1cHBvcnRlZC5cXG4gNDA2OlxcdFxcbiA0MDc6XFx0Y29uZmlnIFNUTU1BQ19QQ0lcXG4gNDA4OlxcdFxcdHRyaXN0YXRlIFxcXCJTVE1NQUMgUENJIGJ1cyBzdXBwb3J0XFxcIlxcbiA0MDk6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gNDEwOlxcdFxcdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xcbiA0MTE6XFx0XFx0c2VsZWN0IFNUTU1BQ19MSUJQQ0lcXG4gNDEyOlxcdFxcdGhlbHBcXG4gNDEzOlxcdFxcdCAgVGhpcyBzZWxlY3RzIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBidXMgc3VwcG9ydCBmb3IgdGhlIHN0bW1hYyBkcml2ZXIuXFxuIDQxNDpcXHRcXHQgIFRoaXMgZHJpdmVyIHdhcyB0ZXN0ZWQgb24gWExJTlggWEMyVjMwMDAgRkYxMTUyQU1UMDIyMVxcbiA0MTU6XFx0XFx0ICBEMTIxNTk5NEEgVklSVEVYIEZQR0EgYm9hcmQgYW5kIFNOUFMgUW9TIElQSyBQcm90b3R5cGluZyBLaXQuXFxuIDQxNjpcXHRcXG4gNDE3OlxcdFxcdCAgSWYgeW91IGhhdmUgYSBjb250cm9sbGVyIHdpdGggdGhpcyBpbnRlcmZhY2UsIHNheSBZIG9yIE0gaGVyZS5cXG4gNDE4OlxcdFxcbiA0MTk6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwNDo1MjozNC43NDA0MjUwNjFaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTY2NDc0MTM2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgU3RtbWFjIENvbmZpZ3VyYXRpb24gYW5kIFBhdGNoKipcblxuT2theSwgc28gbG9va2luZyBhdCB0aGlzLCBpdCBzZWVtcyB3ZSdyZSBkZWFsaW5nIHdpdGggYFNUTU1BQ19FVEhgIGFuZCBgU1RNTUFDX1BDSWAgY29uZmlndXJhdGlvbnMuIFRob3NlIGFyZSB0aGUga2V5IG9uZXMsIG5vIHF1ZXN0aW9uLiBIYW5nIG9uLCB0aG91Z2guIGBTVE1NQUNfRVRIYCBpcyBkZXBlbmRlbnQgb24gYEhBU19JT01FTWAsIGBIQVNfRE1BYCwgYFBUUF8xNTg4X0NMT0NLX09QVElPTkFMYCwgYW5kIGBFVEhUT09MX05FVExJTktgLiBUaG9zZSBhcmUgYWxsIHByZXR0eSBzdGFuZGFyZCBkZXBlbmRlbmNpZXMsIG5vdGhpbmcgb3V0IG9mIHRoZSBvcmRpbmFyeS4gQWxyaWdodCwgSSdsbCBhZGQgYFNUTU1BQ19FVEhgIGFuZCBgU1RNTUFDX1BDSWAgdG8gYEVuYWJsZUNvbmZpZ3NgIHRvIG1ha2Ugc3VyZSB0aG9zZSBnZXQgc2V0IHByb3Blcmx5LlxuXG5Ob3csIEkgbmVlZCB0byB0YWtlIGFub3RoZXIgbG9vayBhdCB0aGlzIHBhdGNoIGFuZCByZWFsbHkgemVybyBpbiBvbiB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zLiBJdCBsb29rcyBsaWtlIGl0IHRvdWNoZXMgYHN0bW1hY19kaXNhYmxlX2FsbF9kbWFfaXJxYCB3aGljaCBpcyBzdGF0aWMsIGFuZCB0aGVuIGBzdG1tYWNfc3luY2hyb25pemVfaXJxYCB3aGljaCBpcyBhbHNvIHN0YXRpYy4gVGhlc2UgYXJlIGludGVybmFsIGZ1bmN0aW9ucy4gSG93ZXZlciwgYHN0bW1hY194ZHBfcmVsZWFzZWAgYW5kIGBzdG1tYWNfeGRwX29wZW5gIGFyZSBub24tc3RhdGljIGFuZCB0aG9zZSBhcmUgdGhlIGVudHJ5IHBvaW50cyBmb3IgdGhlIG1vZGlmaWVkIGxvZ2ljLiBUaG9zZSBhcmUgdGhlIG9uZXMgSSByZWFsbHkgbmVlZCB0byBmb2N1cyBvbi4gU28sIEkgd2lsbCBhZGQgYHN0bW1hY194ZHBfcmVsZWFzZWAgYW5kIGBzdG1tYWNfeGRwX29wZW5gIHRvIGBGb2N1c1N5bWJvbHNgLiBBbmQgSSBzaG91bGQgcHJvYmFibHkgaW5jbHVkZSBgc3RtbWFjX3hkcF9zZXRfcHJvZ2AgYW5kIGBzdG1tYWNfYnBmYCBzaW5jZSB0aGV5J3JlIGNhbGxpbmcgYHN0bW1hY194ZHBfb3BlbmAuIEJ1dCB3YWl0LCBkb2VzIGBzdG1tYWNfeGRwX3JlbGVhc2VgIGFsc28gZ2V0IGNhbGxlZCBmcm9tIGBzdG1tYWNfeGRwX3NldF9wcm9nYD8gSSBzaG91bGQgcHJvYmFibHkgZG91YmxlIGNoZWNrIHRoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4NTE4LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzM5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDQ6NTI6NDAuNDA1MTcxMjU3WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2OTAyNTU3NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfeGRwX3JlbGVhc2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oPTQwOD1pbnQgc3RtbWFjX3hkcF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oOjQwOTp2b2lkIHN0bW1hY194ZHBfcmVsZWFzZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaC00MTAtaW50IHN0bW1hY19nZXRfcGh5X2ludGZfc2VsKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03MTAzPXZvaWQgc3RtbWFjX2VuYWJsZV90eF9xdWV1ZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHUzMiBxdWV1ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzE0MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjcxNDE6dm9pZCBzdG1tYWNfeGRwX3JlbGVhc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTcxNDIte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jPTEwMj1pbnQgc3RtbWFjX3hkcF9zZXRfcHJvZyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYy0xMjQtXFx0aWYgKGlmX3J1bm5pbmcgXFx1MDAyNlxcdTAwMjYgbmVlZF91cGRhdGUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jOjEyNTpcXHRcXHRzdG1tYWNfeGRwX3JlbGVhc2UoZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmMtMTI2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwNDo1Mjo0MC40NzQyMDE3NDNaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAyNzUxMjc0NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBUYXJnZXRzIGluIHRoZSBTVE1NQUMgRXRoZXJuZXQgRHJpdmVyOiBYRFAgSGFuZGxpbmcqKlxuXG5Pa2F5LCBzbyBoZXJlJ3MgdGhlIHRob3VnaHQgcHJvY2VzczogSSd2ZSB0cmFjZWQgdGhlIGNvZGUgYW5kIGNvbmZpcm1lZCB0aGF0IGBzdG1tYWNfeGRwX3JlbGVhc2VgIGlzIGluZGVlZCBjYWxsZWQgZnJvbSBgc3RtbWFjX3hkcF9zZXRfcHJvZ2AuIFRoZSBjYWxsIGNoYWluIGlzIGNsZWFyOiBgc3RtbWFjX2JwZmAgLVx1MDAzZSBgc3RtbWFjX3hkcF9zZXRfcHJvZ2AgLVx1MDAzZSBgc3RtbWFjX3hkcF9yZWxlYXNlYCAvIGBzdG1tYWNfeGRwX29wZW5gLiBUaGF0IGltbWVkaWF0ZWx5IHNjcmVhbXMgXCJmdXp6aW5nIHRhcmdldHMsXCIgZXNwZWNpYWxseSBnaXZlbiB0aGUgWERQIGNvbnRleHQuXG5cbkkgZG91YmxlLWNoZWNrZWQ7IGBzdG1tYWNfeGRwX3JlbGVhc2VgIGFuZCBgc3RtbWFjX3hkcF9vcGVuYCBhcmVuJ3Qgc3RhdGljOyB0aGV5J3JlIGRlZmluZWQgaW4gYHN0bW1hY19tYWluLmNgIGFuZCBkZWNsYXJlZCBpbiBgc3RtbWFjLmhgLiBQZXJmZWN0LCB0aGF0IG1lYW5zIHRoZXkgaGF2ZSBkaXN0aW5jdCBzeW1ib2xzIGFuZCBhcmUgYWNjZXNzaWJsZSB0byBzeXprYWxsZXIuXG5cbkNvbmZpZ3VyYXRpb24td2lzZSwgSSdtIHRoaW5raW5nIGBTVE1NQUNfRVRIYCBhbmQgYFNUTU1BQ19QQ0lgIGFyZSBnb2luZyB0byBiZSBuZWNlc3NhcnkuIGBCUEZfU1lTQ0FMTGAgaXMgdXN1YWxseSBlbmFibGVkIGJ5IGRlZmF1bHQgaW4gZnV6emluZyBlbnZpcm9ubWVudHMgYnV0IHNpbmNlIFhEUCBpcyBzdGFuZGFyZCBuZXR3b3JraW5nLCBsZXQncyBrZWVwIGl0IGNsZWFuLlxuXG5TbywgaGVyZSdzIHRoZSBzdW1tYXJ5OlxuXG5Xb3J0aEZ1enppbmc6IGB0cnVlYFxuUmVhc29uaW5nOiBUaGlzIHBhdGNoIHJlcHJlc2VudHMgYSBzaWduaWZpY2FudCBjaGFuZ2UgaW4gaG93IHRoZSBzdG1tYWMgRXRoZXJuZXQgZHJpdmVyIGhhbmRsZXMgWERQLiBTcGVjaWZpY2FsbHksIGl0IGFsdGVycyB0aGUgWERQIG9wZW4gYW5kIHJlbGVhc2UgcGF0aHMsIGRpc2FibGluZyBhbmQgc3luY2hyb25pemluZyBETUEgaW50ZXJydXB0cyByYXRoZXIgdGhhbiBmcmVlaW5nIHRoZW0uIFRoaXMgZml4ZXMgcG90ZW50aWFsIElSUSBoYW5kbGluZyBpc3N1ZXMuIFRoZSBkcml2ZXIgaXMgcmVhY2hhYmxlIHZpYSB0aGUgc3RtbWFjIFBDSSB3cmFwcGVyIHdoaWNoIGNhbiBiZSBlbXVsYXRlZCBieSBzeXprYWxsZXIuXG5Gb2N1c1N5bWJvbHM6IGBzdG1tYWNfeGRwX29wZW5gLCBgc3RtbWFjX3hkcF9yZWxlYXNlYCwgYHN0bW1hY194ZHBfc2V0X3Byb2dgLCBgc3RtbWFjX2JwZmBcbkVuYWJsZUNvbmZpZ3M6IGBTVE1NQUNfRVRIYCwgYFNUTU1BQ19QQ0lgXG5cbk5vdywgbGV0J3MgZ2V0IGludG8gdGhlIHNwZWNpZmljcyBvZiB3aGF0J3MgYmVlbiBjaGFuZ2VkLiBIb2xkIG9uLi4uIHdhaXQsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSdtIHJlbWVtYmVyaW5nIHRoaXMgcmlnaHQuIFJpZ2h0LCBgc3RtbWFjX2Rpc2FibGVfYWxsX2RtYV9pcnFgIGlzIGNhbGxlZCBmcm9tIGBzdG1tYWNfeGRwX3JlbGVhc2VgLCBub3QgYHN0bW1hY194ZHBfb3BlbmAuICBBbmQgeWVzLCBgc3RtbWFjX3hkcF9yZWxlYXNlYCBjYWxscyBgc3RtbWFjX2Rpc2FibGVfYWxsX2RtYV9pcnFgIGFuZCBgc3RtbWFjX3N5bmNocm9uaXplX2lycWAuIGBzdG1tYWNfeGRwX29wZW5gIGlzIHJlbW92aW5nIGNhbGxzIGZvciBgc3RtbWFjX3JlcXVlc3RfaXJxYCBhbmQgRE1BIENTUiBjaGFubmVsIGNvbmZpZ3VyYXRpb24uXG5cbk9rYXksIEkndmUgZ290IGl0LiBUaGUgcGF0Y2ggKnJlbW92ZXMqIGBzdG1tYWNfcmVxdWVzdF9pcnEoZGV2KWAgZnJvbSBgc3RtbWFjX3hkcF9vcGVuYCBhbmQgKnJlbW92ZXMqIGBzdG1tYWNfZnJlZV9pcnEoZGV2LCBSRVFfSVJRX0VSUl9BTEwsIDApYCBmcm9tIGBzdG1tYWNfeGRwX3JlbGVhc2VgLiBTbyBpbnN0ZWFkIG9mIElSUXMgYmVpbmcgZnJlZWQgYW5kIHJlLXJlcXVlc3RlZCwgdGhleSBhcmUgKmRpc2FibGVkKiBhbmQgc3luY2hyb25pemVkIGR1cmluZyBYRFAgcHJvZ3JhbSB1cGRhdGVzLiBUaGF0J3MgYSBodWdlIGZ1bmN0aW9uYWwgY2hhbmdlIGZvciB0aGUgZHJpdmVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTc0NSwiT3V0cHV0VG9rZW5zIjoxNTUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDQ6NTI6NTAuNzQ5MzMyMDVaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODQ3ODI2NDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNUTU1BQ19FVEhcIixcbiAgICBcIlNUTU1BQ19QQ0lcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzdG1tYWNfeGRwX29wZW5cIixcbiAgICBcInN0bW1hY194ZHBfcmVsZWFzZVwiLFxuICAgIFwic3RtbWFjX3hkcF9zZXRfcHJvZ1wiLFxuICAgIFwic3RtbWFjX2JwZlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBYRFAgb3BlbiBhbmQgcmVsZWFzZSBwYXRocyBpbiB0aGUgc3RtbWFjIEV0aGVybmV0IGRyaXZlci4gSXQgcmVwbGFjZXMgZnJlZWluZyBhbmQgcmUtcmVxdWVzdGluZyBJUlFzIHdpdGggZGlzYWJsaW5nIGFuZCBzeW5jaHJvbml6aW5nIERNQSBpbnRlcnJ1cHRzIGR1cmluZyBYRFAgcHJvZ3JhbSB1cGRhdGVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBjb3JlIGRyaXZlciB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSB0aGUgUENJIGludGVyZmFjZSwgd2hpY2ggc3l6a2FsbGVyIGNhbiBlbXVsYXRlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNUTU1BQ19FVEhcIixcbiAgICBcIlNUTU1BQ19QQ0lcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzdG1tYWNfeGRwX29wZW5cIixcbiAgICBcInN0bW1hY194ZHBfcmVsZWFzZVwiLFxuICAgIFwic3RtbWFjX3hkcF9zZXRfcHJvZ1wiLFxuICAgIFwic3RtbWFjX2JwZlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBYRFAgb3BlbiBhbmQgcmVsZWFzZSBwYXRocyBpbiB0aGUgc3RtbWFjIEV0aGVybmV0IGRyaXZlci4gSXQgcmVwbGFjZXMgZnJlZWluZyBhbmQgcmUtcmVxdWVzdGluZyBJUlFzIHdpdGggZGlzYWJsaW5nIGFuZCBzeW5jaHJvbml6aW5nIERNQSBpbnRlcnJ1cHRzIGR1cmluZyBYRFAgcHJvZ3JhbSB1cGRhdGVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBjb3JlIGRyaXZlciB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSB0aGUgUENJIGludGVyZmFjZSwgd2hpY2ggc3l6a2FsbGVyIGNhbiBlbXVsYXRlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowrxhhh[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-01 04:49:55 +0000 UTC FinishedAt: 2026-08-01 04:52:52 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "dc59e4fea9d83f03bad6bddf3fa2e52491777482", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "STMMAC_ETH", "STMMAC_PCI" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "dc59e4fea9d83f03bad6bddf3fa2e52491777482", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "STMMAC_ETH", "STMMAC_PCI" ], "series_id": "9fdaf8ca-0bcc-4c5e-ad78-4609a90c7ba2" }, "track": "KASAN", "fuzz": { "focus": [ "bpf", "net" ], "focus_symbols": [ "stmmac_xdp_open", "stmmac_xdp_release", "stmmac_xdp_set_prog", "stmmac_bpf" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db", "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+CgkJCTx0ZD4yMDI2LzA4LzAxIDA0OjUxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BDSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3N0bW1hY194ZHBfb3BlbiYjMzQ7LAogICAgJiMzNDtzdG1tYWNfeGRwX3JlbGVhc2UmIzM0OywKICAgICYjMzQ7c3RtbWFjX3hkcF9zZXRfcHJvZyYjMzQ7LAogICAgJiMzNDtzdG1tYWNfYnBmJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBYRFAgb3BlbiBhbmQgcmVsZWFzZSBwYXRocyBpbiB0aGUgc3RtbWFjIEV0aGVybmV0IGRyaXZlci4gSXQgcmVwbGFjZXMgZnJlZWluZyBhbmQgcmUtcmVxdWVzdGluZyBJUlFzIHdpdGggZGlzYWJsaW5nIGFuZCBzeW5jaHJvbml6aW5nIERNQSBpbnRlcnJ1cHRzIGR1cmluZyBYRFAgcHJvZ3JhbSB1cGRhdGVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBjb3JlIGRyaXZlciB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSB0aGUgUENJIGludGVyZmFjZSwgd2hpY2ggc3l6a2FsbGVyIGNhbiBlbXVsYXRlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA0OjUxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMDRmNTdlMWRlOGJkZGM4MzliMWY4MmQ0YTQwY2NhYjcxMGIwOGE5NFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDEgMDQ6NTE6NTIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbmluZGV4IDJhMGQ3ZWZmODhkM2YuLjNjZjQzNjAxNDY4NmEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5AQCAtMjUzMSw2ICYjNDM7MjUzMSwyMyBAQCBzdGF0aWMgdm9pZCBzdG1tYWNfZW5hYmxlX2FsbF9kbWFfaXJxKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbiBcdH1cbiB9XG4gXG4mIzQzO3N0YXRpYyB2b2lkIHN0bW1hY19kaXNhYmxlX2FsbF9kbWFfaXJxKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbiYjNDM7e1xuJiM0MztcdHU4IHJ4X2NoYW5uZWxzX2NvdW50ID0gcHJpdi1cdTAwM2VwbGF0LVx1MDAzZXJ4X3F1ZXVlc190b191c2U7XG4mIzQzO1x0dTggdHhfY2hhbm5lbHNfY291bnQgPSBwcml2LVx1MDAzZXBsYXQtXHUwMDNldHhfcXVldWVzX3RvX3VzZTtcbiYjNDM7XHR1OCBkbWFfY3NyX2NoID0gbWF4KHJ4X2NoYW5uZWxzX2NvdW50LCB0eF9jaGFubmVsc19jb3VudCk7XG4mIzQzO1x0dTggY2hhbjtcbiYjNDM7XG4mIzQzO1x0Zm9yIChjaGFuID0gMDsgY2hhbiBcdTAwM2MgZG1hX2Nzcl9jaDsgY2hhbiYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdHN0cnVjdCBzdG1tYWNfY2hhbm5lbCAqY2ggPSBcdTAwMjZwcml2LVx1MDAzZWNoYW5uZWxbY2hhbl07XG4mIzQzO1x0XHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuJiM0MztcbiYjNDM7XHRcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmNoLVx1MDAzZWxvY2ssIGZsYWdzKTtcbiYjNDM7XHRcdHN0bW1hY19kaXNhYmxlX2RtYV9pcnEocHJpdiwgcHJpdi1cdTAwM2Vpb2FkZHIsIGNoYW4sIDEsIDEpO1xuJiM0MztcdFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZjaC1cdTAwM2Vsb2NrLCBmbGFncyk7XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO1xuIC8qKlxuICAqIHN0bW1hY19zdGFydF9hbGxfZG1hIC0gc3RhcnQgYWxsIFJYIGFuZCBUWCBETUEgY2hhbm5lbHNcbiAgKiBAcHJpdjogZHJpdmVyIHByaXZhdGUgc3RydWN0dXJlXG5AQCAtMzgxNCw2ICYjNDM7MzgzMSwzMyBAQCBzdGF0aWMgdm9pZCBzdG1tYWNfZnJlZV9pcnEoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdH1cbiB9XG4gXG4mIzQzO3N0YXRpYyB2b2lkIHN0bW1hY19zeW5jaHJvbml6ZV9pcnEoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KGRldik7XG4mIzQzO1x0c3RydWN0IHN0bW1hY19tc2kgKm1zaSA9IHByaXYtXHUwMDNlbXNpO1xuJiM0MztcdGludCBqO1xuJiM0MztcbiYjNDM7XHRmb3IgKGogPSBwcml2LVx1MDAzZXBsYXQtXHUwMDNldHhfcXVldWVzX3RvX3VzZSAtIDE7IG1zaSBcdTAwMjZcdTAwMjYgaiBcdTAwM2U9IDA7IGotLSkge1xuJiM0MztcdFx0aWYgKG1zaS1cdTAwM2V0eF9pcnFbal0gXHUwMDNlIDApXG4mIzQzO1x0XHRcdHN5bmNocm9uaXplX2lycShtc2ktXHUwMDNldHhfaXJxW2pdKTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGZvciAoaiA9IHByaXYtXHUwMDNlcGxhdC1cdTAwM2VyeF9xdWV1ZXNfdG9fdXNlIC0gMTsgbXNpIFx1MDAyNlx1MDAyNiBqIFx1MDAzZT0gMDsgai0tKSB7XG4mIzQzO1x0XHRpZiAobXNpLVx1MDAzZXJ4X2lycVtqXSBcdTAwM2UgMClcbiYjNDM7XHRcdFx0c3luY2hyb25pemVfaXJxKG1zaS1cdTAwM2VyeF9pcnFbal0pO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0aWYgKG1zaSBcdTAwMjZcdTAwMjYgbXNpLVx1MDAzZXNmdHlfdWVfaXJxIFx1MDAzZSAwIFx1MDAyNlx1MDAyNiBtc2ktXHUwMDNlc2Z0eV91ZV9pcnEgIT0gZGV2LVx1MDAzZWlycSlcbiYjNDM7XHRcdHN5bmNocm9uaXplX2lycShtc2ktXHUwMDNlc2Z0eV91ZV9pcnEpO1xuJiM0MztcdGlmIChtc2kgXHUwMDI2XHUwMDI2IG1zaS1cdTAwM2VzZnR5X2NlX2lycSBcdTAwM2UgMCBcdTAwMjZcdTAwMjYgbXNpLVx1MDAzZXNmdHlfY2VfaXJxICE9IGRldi1cdTAwM2VpcnEpXG4mIzQzO1x0XHRzeW5jaHJvbml6ZV9pcnEobXNpLVx1MDAzZXNmdHlfY2VfaXJxKTtcbiYjNDM7XHRpZiAocHJpdi1cdTAwM2V3b2xfaXJxIFx1MDAzZSAwIFx1MDAyNlx1MDAyNiBwcml2LVx1MDAzZXdvbF9pcnEgIT0gZGV2LVx1MDAzZWlycSlcbiYjNDM7XHRcdHN5bmNocm9uaXplX2lycShwcml2LVx1MDAzZXdvbF9pcnEpO1xuJiM0MztcdGlmIChwcml2LVx1MDAzZXNmdHlfaXJxIFx1MDAzZSAwIFx1MDAyNlx1MDAyNiBwcml2LVx1MDAzZXNmdHlfaXJxICE9IGRldi1cdTAwM2VpcnEpXG4mIzQzO1x0XHRzeW5jaHJvbml6ZV9pcnEocHJpdi1cdTAwM2VzZnR5X2lycSk7XG4mIzQzO1x0c3luY2hyb25pemVfaXJxKGRldi1cdTAwM2VpcnEpO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBpbnQgc3RtbWFjX21zaV9pbml0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiBcdFx0XHQgICBzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyAqcmVzKVxuIHtcbkBAIC03MTA4LDggJiM0Mzs3MTUyLDkgQEAgdm9pZCBzdG1tYWNfeGRwX3JlbGVhc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdGZvciAoY2hhbiA9IDA7IGNoYW4gXHUwMDNjIHByaXYtXHUwMDNlcGxhdC1cdTAwM2V0eF9xdWV1ZXNfdG9fdXNlOyBjaGFuJiM0MzsmIzQzOylcbiBcdFx0aHJ0aW1lcl9jYW5jZWwoXHUwMDI2cHJpdi1cdTAwM2VkbWFfY29uZi50eF9xdWV1ZVtjaGFuXS50eHRpbWVyKTtcbiBcbi1cdC8qIEZyZWUgdGhlIElSUSBsaW5lcyAqL1xuLVx0c3RtbWFjX2ZyZWVfaXJxKGRldiwgUkVRX0lSUV9FUlJfQUxMLCAwKTtcbiYjNDM7XHQvKiBTaWxlbmNlIERNQSBpbnRlcnJ1cHRzICovXG4mIzQzO1x0c3RtbWFjX2Rpc2FibGVfYWxsX2RtYV9pcnEocHJpdik7XG4mIzQzO1x0c3RtbWFjX3N5bmNocm9uaXplX2lycShkZXYpO1xuIFxuIFx0LyogU3RvcCBUWC9SWCBETUEgY2hhbm5lbHMgKi9cbiBcdHN0bW1hY19zdG9wX2FsbF9kbWEocHJpdik7XG5AQCAtNzEzMiw3ICYjNDM7NzE3Nyw2IEBAIGludCBzdG1tYWNfeGRwX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KGRldik7XG4gXHR1OCByeF9jbnQgPSBwcml2LVx1MDAzZXBsYXQtXHUwMDNlcnhfcXVldWVzX3RvX3VzZTtcbiBcdHU4IHR4X2NudCA9IHByaXYtXHUwMDNlcGxhdC1cdTAwM2V0eF9xdWV1ZXNfdG9fdXNlO1xuLVx0dTggZG1hX2Nzcl9jaCA9IG1heChyeF9jbnQsIHR4X2NudCk7XG4gXHRzdHJ1Y3Qgc3RtbWFjX3J4X3F1ZXVlICpyeF9xO1xuIFx0c3RydWN0IHN0bW1hY190eF9xdWV1ZSAqdHhfcTtcbiBcdGJvb2wgc3BoX2VuO1xuQEAgLTcxNTUsMTIgJiM0Mzs3MTk5LDYgQEAgaW50IHN0bW1hY194ZHBfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFxuIFx0c3RtbWFjX3Jlc2V0X3F1ZXVlc19wYXJhbShwcml2KTtcbiBcbi1cdC8qIERNQSBDU1IgQ2hhbm5lbCBjb25maWd1cmF0aW9uICovXG4tXHRmb3IgKGNoYW4gPSAwOyBjaGFuIFx1MDAzYyBkbWFfY3NyX2NoOyBjaGFuJiM0MzsmIzQzOykge1xuLVx0XHRzdG1tYWNfaW5pdF9jaGFuKHByaXYsIHByaXYtXHUwMDNlaW9hZGRyLCBwcml2LVx1MDAzZXBsYXQtXHUwMDNlZG1hX2NmZywgY2hhbik7XG4tXHRcdHN0bW1hY19kaXNhYmxlX2RtYV9pcnEocHJpdiwgcHJpdi1cdTAwM2Vpb2FkZHIsIGNoYW4sIDEsIDEpO1xuLVx0fVxuLVxuIFx0LyogQWRqdXN0IFNwbGl0IGhlYWRlciAqL1xuIFx0c3BoX2VuID0gKHByaXYtXHUwMDNlaHctXHUwMDNlcnhfY3N1bSBcdTAwM2UgMCkgXHUwMDI2XHUwMDI2IHByaXYtXHUwMDNlc3BoX2FjdGl2ZTtcbiBcbkBAIC03MTk3LDEwICYjNDM7NzIzNSw2IEBAIGludCBzdG1tYWNfeGRwX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdC8qIFN0YXJ0IFJ4IFx1MDAyNiBUeCBETUEgQ2hhbm5lbHMgKi9cbiBcdHN0bW1hY19zdGFydF9hbGxfZG1hKHByaXYpO1xuIFxuLVx0cmV0ID0gc3RtbWFjX3JlcXVlc3RfaXJxKGRldik7XG4tXHRpZiAocmV0KVxuLVx0XHRnb3RvIGlycV9lcnJvcjtcbi1cbiBcdC8qIEVuYWJsZSBOQVBJIHByb2Nlc3MqL1xuIFx0c3RtbWFjX2VuYWJsZV9hbGxfcXVldWVzKHByaXYpO1xuIFx0bmV0aWZfY2Fycmllcl9vbihkZXYpO1xuQEAgLTcyMDksMTAgJiM0Mzs3MjQzLDYgQEAgaW50IHN0bW1hY194ZHBfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFxuIFx0cmV0dXJuIDA7XG4gXG4taXJxX2Vycm9yOlxuLVx0Zm9yIChjaGFuID0gMDsgY2hhbiBcdTAwM2MgcHJpdi1cdTAwM2VwbGF0LVx1MDAzZXR4X3F1ZXVlc190b191c2U7IGNoYW4mIzQzOyYjNDM7KVxuLVx0XHRocnRpbWVyX2NhbmNlbChcdTAwMjZwcml2LVx1MDAzZWRtYV9jb25mLnR4X3F1ZXVlW2NoYW5dLnR4dGltZXIpO1xuLVxuIGluaXRfZXJyb3I6XG4gXHRmcmVlX2RtYV9kZXNjX3Jlc291cmNlcyhwcml2LCBcdTAwMjZwcml2LVx1MDAzZWRtYV9jb25mKTtcbiBkbWFfZGVzY19lcnJvcjpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNDo1MTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7U1RNTUFDX0VUSCYjMzQ7LAogICAgJiMzNDtTVE1NQUNfUENJJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c3RtbWFjX3hkcF9vcGVuJiMzNDssCiAgICAmIzM0O3N0bW1hY194ZHBfcmVsZWFzZSYjMzQ7LAogICAgJiMzNDtzdG1tYWNfeGRwX3NldF9wcm9nJiMzNDssCiAgICAmIzM0O3N0bW1hY19icGYmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFhEUCBvcGVuIGFuZCByZWxlYXNlIHBhdGhzIGluIHRoZSBzdG1tYWMgRXRoZXJuZXQgZHJpdmVyLiBJdCByZXBsYWNlcyBmcmVlaW5nIGFuZCByZS1yZXF1ZXN0aW5nIElSUXMgd2l0aCBkaXNhYmxpbmcgYW5kIHN5bmNocm9uaXppbmcgRE1BIGludGVycnVwdHMgZHVyaW5nIFhEUCBwcm9ncmFtIHVwZGF0ZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGNvcmUgZHJpdmVyIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIHRoZSBQQ0kgaW50ZXJmYWNlLCB3aGljaCBzeXprYWxsZXIgY2FuIGVtdWxhdGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAwNGY1N2UxZGU4YmRkYzgzOWIxZjgyZDRhNDBjY2FiNzEwYjA4YTk0CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBBdWcgMSAwNDo1MTo1MiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jCmluZGV4IDJhMGQ3ZWZmODhkM2YuLjNjZjQzNjAxNDY4NmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYwpAQCAtMjUzMSw2ICYjNDM7MjUzMSwyMyBAQCBzdGF0aWMgdm9pZCBzdG1tYWNfZW5hYmxlX2FsbF9kbWFfaXJxKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdikKIAl9CiB9CiAKJiM0MztzdGF0aWMgdm9pZCBzdG1tYWNfZGlzYWJsZV9hbGxfZG1hX2lycShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpCiYjNDM7ewomIzQzOwl1OCByeF9jaGFubmVsc19jb3VudCA9IHByaXYtJmd0O3BsYXQtJmd0O3J4X3F1ZXVlc190b191c2U7CiYjNDM7CXU4IHR4X2NoYW5uZWxzX2NvdW50ID0gcHJpdi0mZ3Q7cGxhdC0mZ3Q7dHhfcXVldWVzX3RvX3VzZTsKJiM0MzsJdTggZG1hX2Nzcl9jaCA9IG1heChyeF9jaGFubmVsc19jb3VudCwgdHhfY2hhbm5lbHNfY291bnQpOwomIzQzOwl1OCBjaGFuOwomIzQzOwomIzQzOwlmb3IgKGNoYW4gPSAwOyBjaGFuICZsdDsgZG1hX2Nzcl9jaDsgY2hhbiYjNDM7JiM0MzspIHsKJiM0MzsJCXN0cnVjdCBzdG1tYWNfY2hhbm5lbCAqY2ggPSAmYW1wO3ByaXYtJmd0O2NoYW5uZWxbY2hhbl07CiYjNDM7CQl1bnNpZ25lZCBsb25nIGZsYWdzOwomIzQzOwomIzQzOwkJc3Bpbl9sb2NrX2lycXNhdmUoJmFtcDtjaC0mZ3Q7bG9jaywgZmxhZ3MpOwomIzQzOwkJc3RtbWFjX2Rpc2FibGVfZG1hX2lycShwcml2LCBwcml2LSZndDtpb2FkZHIsIGNoYW4sIDEsIDEpOwomIzQzOwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYW1wO2NoLSZndDtsb2NrLCBmbGFncyk7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiAvKioKICAqIHN0bW1hY19zdGFydF9hbGxfZG1hIC0gc3RhcnQgYWxsIFJYIGFuZCBUWCBETUEgY2hhbm5lbHMKICAqIEBwcml2OiBkcml2ZXIgcHJpdmF0ZSBzdHJ1Y3R1cmUKQEAgLTM4MTQsNiAmIzQzOzM4MzEsMzMgQEAgc3RhdGljIHZvaWQgc3RtbWFjX2ZyZWVfaXJxKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJfQogfQogCiYjNDM7c3RhdGljIHZvaWQgc3RtbWFjX3N5bmNocm9uaXplX2lycShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQomIzQzO3sKJiM0MzsJc3RydWN0IHN0bW1hY19wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTsKJiM0MzsJc3RydWN0IHN0bW1hY19tc2kgKm1zaSA9IHByaXYtJmd0O21zaTsKJiM0MzsJaW50IGo7CiYjNDM7CiYjNDM7CWZvciAoaiA9IHByaXYtJmd0O3BsYXQtJmd0O3R4X3F1ZXVlc190b191c2UgLSAxOyBtc2kgJmFtcDsmYW1wOyBqICZndDs9IDA7IGotLSkgewomIzQzOwkJaWYgKG1zaS0mZ3Q7dHhfaXJxW2pdICZndDsgMCkKJiM0MzsJCQlzeW5jaHJvbml6ZV9pcnEobXNpLSZndDt0eF9pcnFbal0pOwomIzQzOwl9CiYjNDM7CiYjNDM7CWZvciAoaiA9IHByaXYtJmd0O3BsYXQtJmd0O3J4X3F1ZXVlc190b191c2UgLSAxOyBtc2kgJmFtcDsmYW1wOyBqICZndDs9IDA7IGotLSkgewomIzQzOwkJaWYgKG1zaS0mZ3Q7cnhfaXJxW2pdICZndDsgMCkKJiM0MzsJCQlzeW5jaHJvbml6ZV9pcnEobXNpLSZndDtyeF9pcnFbal0pOwomIzQzOwl9CiYjNDM7CiYjNDM7CWlmIChtc2kgJmFtcDsmYW1wOyBtc2ktJmd0O3NmdHlfdWVfaXJxICZndDsgMCAmYW1wOyZhbXA7IG1zaS0mZ3Q7c2Z0eV91ZV9pcnEgIT0gZGV2LSZndDtpcnEpCiYjNDM7CQlzeW5jaHJvbml6ZV9pcnEobXNpLSZndDtzZnR5X3VlX2lycSk7CiYjNDM7CWlmIChtc2kgJmFtcDsmYW1wOyBtc2ktJmd0O3NmdHlfY2VfaXJxICZndDsgMCAmYW1wOyZhbXA7IG1zaS0mZ3Q7c2Z0eV9jZV9pcnEgIT0gZGV2LSZndDtpcnEpCiYjNDM7CQlzeW5jaHJvbml6ZV9pcnEobXNpLSZndDtzZnR5X2NlX2lycSk7CiYjNDM7CWlmIChwcml2LSZndDt3b2xfaXJxICZndDsgMCAmYW1wOyZhbXA7IHByaXYtJmd0O3dvbF9pcnEgIT0gZGV2LSZndDtpcnEpCiYjNDM7CQlzeW5jaHJvbml6ZV9pcnEocHJpdi0mZ3Q7d29sX2lycSk7CiYjNDM7CWlmIChwcml2LSZndDtzZnR5X2lycSAmZ3Q7IDAgJmFtcDsmYW1wOyBwcml2LSZndDtzZnR5X2lycSAhPSBkZXYtJmd0O2lycSkKJiM0MzsJCXN5bmNocm9uaXplX2lycShwcml2LSZndDtzZnR5X2lycSk7CiYjNDM7CXN5bmNocm9uaXplX2lycShkZXYtJmd0O2lycSk7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBzdG1tYWNfbXNpX2luaXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LAogCQkJICAgc3RydWN0IHN0bW1hY19yZXNvdXJjZXMgKnJlcykKIHsKQEAgLTcxMDgsOCAmIzQzOzcxNTIsOSBAQCB2b2lkIHN0bW1hY194ZHBfcmVsZWFzZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCWZvciAoY2hhbiA9IDA7IGNoYW4gJmx0OyBwcml2LSZndDtwbGF0LSZndDt0eF9xdWV1ZXNfdG9fdXNlOyBjaGFuJiM0MzsmIzQzOykKIAkJaHJ0aW1lcl9jYW5jZWwoJmFtcDtwcml2LSZndDtkbWFfY29uZi50eF9xdWV1ZVtjaGFuXS50eHRpbWVyKTsKIAotCS8qIEZyZWUgdGhlIElSUSBsaW5lcyAqLwotCXN0bW1hY19mcmVlX2lycShkZXYsIFJFUV9JUlFfRVJSX0FMTCwgMCk7CiYjNDM7CS8qIFNpbGVuY2UgRE1BIGludGVycnVwdHMgKi8KJiM0MzsJc3RtbWFjX2Rpc2FibGVfYWxsX2RtYV9pcnEocHJpdik7CiYjNDM7CXN0bW1hY19zeW5jaHJvbml6ZV9pcnEoZGV2KTsKIAogCS8qIFN0b3AgVFgvUlggRE1BIGNoYW5uZWxzICovCiAJc3RtbWFjX3N0b3BfYWxsX2RtYShwcml2KTsKQEAgLTcxMzIsNyAmIzQzOzcxNzcsNiBAQCBpbnQgc3RtbWFjX3hkcF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAJc3RydWN0IHN0bW1hY19wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTsKIAl1OCByeF9jbnQgPSBwcml2LSZndDtwbGF0LSZndDtyeF9xdWV1ZXNfdG9fdXNlOwogCXU4IHR4X2NudCA9IHByaXYtJmd0O3BsYXQtJmd0O3R4X3F1ZXVlc190b191c2U7Ci0JdTggZG1hX2Nzcl9jaCA9IG1heChyeF9jbnQsIHR4X2NudCk7CiAJc3RydWN0IHN0bW1hY19yeF9xdWV1ZSAqcnhfcTsKIAlzdHJ1Y3Qgc3RtbWFjX3R4X3F1ZXVlICp0eF9xOwogCWJvb2wgc3BoX2VuOwpAQCAtNzE1NSwxMiAmIzQzOzcxOTksNiBAQCBpbnQgc3RtbWFjX3hkcF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAKIAlzdG1tYWNfcmVzZXRfcXVldWVzX3BhcmFtKHByaXYpOwogCi0JLyogRE1BIENTUiBDaGFubmVsIGNvbmZpZ3VyYXRpb24gKi8KLQlmb3IgKGNoYW4gPSAwOyBjaGFuICZsdDsgZG1hX2Nzcl9jaDsgY2hhbiYjNDM7JiM0MzspIHsKLQkJc3RtbWFjX2luaXRfY2hhbihwcml2LCBwcml2LSZndDtpb2FkZHIsIHByaXYtJmd0O3BsYXQtJmd0O2RtYV9jZmcsIGNoYW4pOwotCQlzdG1tYWNfZGlzYWJsZV9kbWFfaXJxKHByaXYsIHByaXYtJmd0O2lvYWRkciwgY2hhbiwgMSwgMSk7Ci0JfQotCiAJLyogQWRqdXN0IFNwbGl0IGhlYWRlciAqLwogCXNwaF9lbiA9IChwcml2LSZndDtody0mZ3Q7cnhfY3N1bSAmZ3Q7IDApICZhbXA7JmFtcDsgcHJpdi0mZ3Q7c3BoX2FjdGl2ZTsKIApAQCAtNzE5NywxMCAmIzQzOzcyMzUsNiBAQCBpbnQgc3RtbWFjX3hkcF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAJLyogU3RhcnQgUnggJmFtcDsgVHggRE1BIENoYW5uZWxzICovCiAJc3RtbWFjX3N0YXJ0X2FsbF9kbWEocHJpdik7CiAKLQlyZXQgPSBzdG1tYWNfcmVxdWVzdF9pcnEoZGV2KTsKLQlpZiAocmV0KQotCQlnb3RvIGlycV9lcnJvcjsKLQogCS8qIEVuYWJsZSBOQVBJIHByb2Nlc3MqLwogCXN0bW1hY19lbmFibGVfYWxsX3F1ZXVlcyhwcml2KTsKIAluZXRpZl9jYXJyaWVyX29uKGRldik7CkBAIC03MjA5LDEwICYjNDM7NzI0Myw2IEBAIGludCBzdG1tYWNfeGRwX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAogCXJldHVybiAwOwogCi1pcnFfZXJyb3I6Ci0JZm9yIChjaGFuID0gMDsgY2hhbiAmbHQ7IHByaXYtJmd0O3BsYXQtJmd0O3R4X3F1ZXVlc190b191c2U7IGNoYW4mIzQzOyYjNDM7KQotCQlocnRpbWVyX2NhbmNlbCgmYW1wO3ByaXYtJmd0O2RtYV9jb25mLnR4X3F1ZXVlW2NoYW5dLnR4dGltZXIpOwotCiBpbml0X2Vycm9yOgogCWZyZWVfZG1hX2Rlc2NfcmVzb3VyY2VzKHByaXYsICZhbXA7cHJpdi0mZ3Q7ZG1hX2NvbmYpOwogZG1hX2Rlc2NfZXJyb3I6CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA0OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2NDAKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAzOTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUGF0Y2ggdG8gdGhlIFNUTU1BQyBFdGhlcm5ldCBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0b3VjaGVzIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jYC4gSXQmIzM5O3MgYWRkaW5nIGBzdG1tYWNfZGlzYWJsZV9hbGxfZG1hX2lycWAgYW5kIGBzdG1tYWNfc3luY2hyb25pemVfaXJxYCwgYW5kIG1vZGlmeWluZyBgc3RtbWFjX3hkcF9yZWxlYXNlYCBhbmQgYHN0bW1hY194ZHBfb3BlbmAuIEludGVyZXN0aW5nLiBTcGVjaWZpY2FsbHksIGluIGBzdG1tYWNfeGRwX3JlbGVhc2VgLCB0aGV5JiMzOTtyZSByZXBsYWNpbmcgdGhlIHN0YW5kYXJkIGBzdG1tYWNfZnJlZV9pcnFgIHdpdGggdGhvc2UgbmV3IGZ1bmN0aW9ucywgYW5kIGluIGBzdG1tYWNfeGRwX29wZW5gLCB0aGV5JiMzOTtyZSB0YWtpbmcgb3V0IGBzdG1tYWNfcmVxdWVzdF9pcnFgIGFuZCBzb21lIERNQSBDU1IgY2hhbm5lbCBjb25maWcuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgZ2V0dGluZyBhIGhhbmRsZSBvbiB0aGUgYmlnZ2VyIHBpY3R1cmUgaGVyZS4KClRoaXMgaXMgdGhlIGRyaXZlciBmb3IgU1RNaWNyb2VsZWN0cm9uaWNzJiMzOTsgMTAvMTAwLzEwMDAvRVFPUyBFdGhlcm5ldCBNQUMuIE5vdywgYSBrZXkgcXVlc3Rpb24gcG9wcyB1cDogaXMgdGhpcyBzb21ldGhpbmcgdGhhdCBjb3VsZCBiZSByZWFjaGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cz8gV2UgaGF2ZSB0byBjb25zaWRlciB3aGV0aGVyIGl0JiMzOTtzIGEgUENJIGRldmljZSBvciBhIHBsYXRmb3JtIGRldmljZSwgYW5kIHdoZXRoZXIgdGhlIGRldmljZSBpcyBlbXVsYXRlZCBvciByZXF1aXJlcyBzcGVjaWZpYyBoYXJkd2FyZS4gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGF0IGBzdG1tYWNgIGlzIG9mdGVuIGEgcGxhdGZvcm0gZHJpdmVyIHVzZWQgaW4gU29DcywgYnV0IHRoZXJlIGlzIGFsc28gYSBQQ0kgd3JhcHBlciwgYHN0bW1hY19wY2lgLgoKT2theSwgSSBuZWVkIHRvIGludmVzdGlnYXRlIGlmIHRoaXMgaXMgc29tZXRoaW5nIHRoYXQgSSBjYW4gdGFyZ2V0IGluIFFFTVUgb3IgaWYgaXQmIzM5O3MgZnV6emFibGUuIFRvIHRoYXQgZW5kLCBJIHNob3VsZCBzZWFyY2ggZm9yIGBzdG1tYWNfcGNpYCBvciBgc3RtbWFjYCBnZW5lcmFsbHkgaW4gUUVNVS4gQWN0dWFsbHksIGBzdG1tYWNgIGlzIGEgdmVyeSBjb21tb24gZHJpdmVyLCBvZnRlbiBmb3VuZCBpbiBBUk0gU29DcywgYnV0LCBpdCBhbHNvIGhhcyBhIFBDSSBkcml2ZXIgYHN0bW1hY19wY2kuY2AuIFRoZSBxdWVzdGlvbiBiZWNvbWVzLCBjYW4gSSBmdXp6IHRoZSBgc3RtbWFjX3BjaWAgY2FzZT8gSXQmIzM5O3MgYSBQQ0kgZGV2aWNlLCBzbyBJIHNob3VsZCBiZSBhYmxlIHRvLiBJIHNob3VsZCBzdGFydCBieSBydW5uaW5nIGEgZ3JlcCBmb3IgYHN0bW1hY19wY2lgIG9yIGBzdG1tYWNgIFBDSSBJRHMgdG8gbmFycm93IHRoaXMgZG93bi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNDo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdG1tYWNfcGNpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlPTUzPW9iai0kKENPTkZJR19EV01BQ19NT1RPUkNPTU0pXHQmIzQzOz0gZHdtYWMtbW90b3Jjb21tLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjU0OnN0bW1hYy1wY2ktb2Jqczo9IHN0bW1hY19wY2kub1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9MjU9c3RydWN0IGludGVsX3ByaXZfZGF0YSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0zOS0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6NDA6c3RydWN0IHN0bW1hY19wY2lfZnVuY19kYXRhIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNDEtXHR1bnNpZ25lZCBpbnQgZnVuYztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTQ0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo0NTpzdHJ1Y3Qgc3RtbWFjX3BjaV9kbWlfZGF0YSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjQ2Olx0Y29uc3Qgc3RydWN0IHN0bW1hY19wY2lfZnVuY19kYXRhICpmdW5jO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy00Ny1cdHNpemVfdCBuZnVuY3M7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy00OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6NTA6c3RydWN0IHN0bW1hY19wY2lfaW5mbyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTUxLVx0aW50ICgqc2V0dXApKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9OTE9c3RhdGljIGNvbnN0IGludCBhZGxuX3Rzbl9sYW5lX3JlZ3NbXSA9IHs2fTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjkzOnN0YXRpYyBpbnQgc3RtbWFjX3BjaV9maW5kX3BoeV9hZGRyKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05NC1cdFx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgZG1pX3N5c3RlbV9pZCAqZG1pX2xpc3QpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTk1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6OTY6XHRjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9mdW5jX2RhdGEgKmZ1bmNfZGF0YTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6OTc6XHRjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9kbWlfZGF0YSAqZG1pX2RhdGE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTk4LVx0Y29uc3Qgc3RydWN0IGRtaV9zeXN0ZW1faWQgKmRtaV9pZDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTc1NT1zdGF0aWMgaW50IGVobF9zZ21paV9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNzc0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo3NzU6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gZWhsX3NnbWlpMWdfaW5mbyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNzc2LVx0LnNldHVwID0gZWhsX3NnbWlpX2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz03Nzk9c3RhdGljIGludCBlaGxfcmdtaWlfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTc4OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6NzkwOnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGVobF9yZ21paTFnX2luZm8gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTc5MS1cdC5zZXR1cCA9IGVobF9yZ21paV9kYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9ODEwPXN0YXRpYyBpbnQgZWhsX3BzZTBfcmdtaWkxZ19kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODE2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo4MTc6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gZWhsX3BzZTBfcmdtaWkxZ19pbmZvID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04MTgtXHQuc2V0dXAgPSBlaGxfcHNlMF9yZ21paTFnX2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz04MjE9c3RhdGljIGludCBlaGxfcHNlMF9zZ21paTFnX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04MzgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjgzOTpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBlaGxfcHNlMF9zZ21paTFnX2luZm8gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTg0MC1cdC5zZXR1cCA9IGVobF9wc2UwX3NnbWlpMWdfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTg1OT1zdGF0aWMgaW50IGVobF9wc2UxX3JnbWlpMWdfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTg2NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6ODY2OnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGVobF9wc2UxX3JnbWlpMWdfaW5mbyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODY3LVx0LnNldHVwID0gZWhsX3BzZTFfcmdtaWkxZ19kYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9ODcwPXN0YXRpYyBpbnQgZWhsX3BzZTFfc2dtaWkxZ19kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODg3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo4ODg6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gZWhsX3BzZTFfc2dtaWkxZ19pbmZvID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04ODktXHQuc2V0dXAgPSBlaGxfcHNlMV9zZ21paTFnX2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz05MTM9c3RhdGljIGludCB0Z2xfc2dtaWlfcGh5MF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTIxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo5MjI6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gdGdsX3NnbWlpMWdfcGh5MF9pbmZvID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05MjMtXHQuc2V0dXAgPSB0Z2xfc2dtaWlfcGh5MF9kYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9OTI2PXN0YXRpYyBpbnQgdGdsX3NnbWlpX3BoeTFfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTkzNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6OTM1OnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHRnbF9zZ21paTFnX3BoeTFfaW5mbyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTM2LVx0LnNldHVwID0gdGdsX3NnbWlpX3BoeTFfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTkzOT1zdGF0aWMgaW50IGFkbHNfc2dtaWlfcGh5MF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTQ4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo5NDk6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gYWRsc19zZ21paTFnX3BoeTBfaW5mbyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTUwLVx0LnNldHVwID0gYWRsc19zZ21paV9waHkwX2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz05NTM9c3RhdGljIGludCBhZGxzX3NnbWlpX3BoeTFfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTk2Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6OTYzOnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGFkbHNfc2dtaWkxZ19waHkxX2luZm8gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTk2NC1cdC5zZXR1cCA9IGFkbHNfc2dtaWlfcGh5MV9kYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9OTkyPXN0YXRpYyBpbnQgYWRsbl9zZ21paV9waHkwX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDEwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMDExOnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGFkbG5fc2dtaWkxZ19waHkwX2luZm8gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwMTItXHQuc2V0dXAgPSBhZGxuX3NnbWlpX3BoeTBfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwMTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEwMTU6c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2Z1bmNfZGF0YSBnYWxpbGVvX3N0bW1hY19mdW5jX2RhdGFbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTAxNi1cdHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwMjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEwMjI6c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2RtaV9kYXRhIGdhbGlsZW9fc3RtbWFjX2RtaV9kYXRhID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDIzLVx0LmZ1bmMgPSBnYWxpbGVvX3N0bW1hY19mdW5jX2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDI2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMDI3OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9mdW5jX2RhdGEgaW90MjA0MF9zdG1tYWNfZnVuY19kYXRhW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwMjgtXHR7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDM3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMDM4OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9kbWlfZGF0YSBpb3QyMDQwX3N0bW1hY19kbWlfZGF0YSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTAzOS1cdC5mdW5jID0gaW90MjA0MF9zdG1tYWNfZnVuY19kYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9MTA3OD1zdGF0aWMgaW50IHF1YXJrX2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwODgtXHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTA4OTpcdHJldCA9IHN0bW1hY19wY2lfZmluZF9waHlfYWRkcihwZGV2LCBxdWFya19wY2lfZG1pKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTA5MC1cdGlmIChyZXQgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTExMTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjExMTQ6c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gcXVhcmtfaW5mbyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTExNS1cdC5zZXR1cCA9IHF1YXJrX2RlZmF1bHRfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTEyMzI9c3RhdGljIGludCBpbnRlbF9ldGhfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTIzNC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEyMzU6XHRzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvICppbmZvID0gKHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gKilpZC1cdTAwM2Vkcml2ZXJfZGF0YTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTIzNi1cdHN0cnVjdCBpbnRlbF9wcml2X2RhdGEgKmludGVsX3ByaXY7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz03Nj1zdHJ1Y3QgbG9vbmdzb25fZGF0YSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy04MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6ODI6c3RydWN0IHN0bW1hY19wY2lfaW5mbyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTgzLVx0aW50ICgqc2V0dXApKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM9MTMyPXN0YXRpYyBpbnQgbG9vbmdzb25fZ21hY19kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtMTQxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzoxNDI6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gbG9vbmdzb25fZ21hY19wY2lfaW5mbyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtMTQzLVx0LnNldHVwID0gbG9vbmdzb25fZ21hY19kYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM9MTY1PXN0YXRpYyBpbnQgbG9vbmdzb25fZ25ldF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtMTc2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzoxNzc6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gbG9vbmdzb25fZ25ldF9wY2lfaW5mbyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtMTc4LVx0LnNldHVwID0gbG9vbmdzb25fZ25ldF9kYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM9NDk4PXN0YXRpYyBpbnQgbG9vbmdzb25fZHdtYWNfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTUwMS1cdHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzIHJlcyA9IHt9O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo1MDI6XHRzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvICppbmZvO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01MDMtXHRzdHJ1Y3QgbG9vbmdzb25fZGF0YSAqbGQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01MzctXHRwbGF0LVx1MDAzZWZpeF9zb2NfcmVzZXQgPSBsb29uZ3Nvbl9kd21hY19maXhfcmVzZXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjUzODpcdHBsYXQtXHUwMDNlc3VzcGVuZCA9IHN0bW1hY19wY2lfcGxhdF9zdXNwZW5kO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo1Mzk6XHRwbGF0LVx1MDAzZXJlc3VtZSA9IHN0bW1hY19wY2lfcGxhdF9yZXN1bWU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTU0MC1cdGxkLVx1MDAzZWRldiA9IFx1MDAyNnBkZXYtXHUwMDNlZGV2O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTQyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo1NDM6XHRpbmZvID0gKHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gKilpZC1cdTAwM2Vkcml2ZXJfZGF0YTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTQ0LVx0cmV0ID0gaW5mby1cdTAwM2VzZXR1cChwZGV2LCBwbGF0KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYz0xODg9c3RhdGljIGludCBtb3RvcmNvbW1fcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqYnNwX3ByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMTkyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MTkzOlx0cmV0ID0gc3RtbWFjX3BjaV9wbGF0X3Jlc3VtZShkZXYsIGJzcF9wcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTE5NC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM9MjA4PW1vdG9yY29tbV9kZWZhdWx0X3BsYXRfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0yNDgtXHRwbGF0LVx1MDAzZWNvcmVfdHlwZVx0XHQ9IERXTUFDX0NPUkVfR01BQzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzoyNDk6XHRwbGF0LVx1MDAzZXN1c3BlbmRcdFx0PSBzdG1tYWNfcGNpX3BsYXRfc3VzcGVuZDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTI1MC1cdHBsYXQtXHUwMDNlcmVzdW1lXHRcdD0gbW90b3Jjb21tX3Jlc3VtZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmMtMTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmM6MTI6aW50IHN0bW1hY19wY2lfcGxhdF9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqYnNwX3ByaXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmMtMTMte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuYy0yNS19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmM6MjY6RVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX3BjaV9wbGF0X3N1c3BlbmQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5jLTI3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5jOjI4OmludCBzdG1tYWNfcGNpX3BsYXRfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqYnNwX3ByaXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmMtMjkte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuYy00My19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmM6NDQ6RVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX3BjaV9wbGF0X3Jlc3VtZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmMtNDUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5oLTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmg6OTppbnQgc3RtbWFjX3BjaV9wbGF0X3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpic3BfcHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmg6MTA6aW50IHN0bW1hY19wY2lfcGxhdF9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpic3BfcHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmgtMTEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjE5OnN0cnVjdCBzdG1tYWNfcGNpX2luZm8ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIwLVx0aW50ICgqc2V0dXApKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0zMz1zdGF0aWMgaW50IHN0bW1hY19kZWZhdWx0X2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTQ5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjUwOnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHN0bW1hY19wY2lfaW5mbyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy01MS1cdC5zZXR1cCA9IHN0bW1hY19kZWZhdWx0X2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTU0PXN0YXRpYyBpbnQgc25wc19nbWFjNV9kZWZhdWx0X2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEwMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxMDI6c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gc25wc19nbWFjNV9wY2lfaW5mbyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xMDMtXHQuc2V0dXAgPSBzbnBzX2dtYWM1X2RlZmF1bHRfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTA2LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjEwNzogKiBzdG1tYWNfcGNpX3Byb2JlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTA4LSAqXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTExNy0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxMTg6c3RhdGljIGludCBzdG1tYWNfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTExOS1cdFx0XHQgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEyMC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTIxOlx0c3RydWN0IHN0bW1hY19wY2lfaW5mbyAqaW5mbyA9IChzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvICopaWQtXHUwMDNlZHJpdmVyX2RhdGE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTIyLVx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xNzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTgwOlx0cGxhdC1cdTAwM2VzdXNwZW5kID0gc3RtbWFjX3BjaV9wbGF0X3N1c3BlbmQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTgxOlx0cGxhdC1cdTAwM2VyZXN1bWUgPSBzdG1tYWNfcGNpX3BsYXRfcmVzdW1lO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE4Mi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTg2LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjE4NzogKiBzdG1tYWNfcGNpX3JlbW92ZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE4OC0gKlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xOTEtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTkyOnN0YXRpYyB2b2lkIHN0bW1hY19wY2lfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE5My17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTIwMz1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgc3RtbWFjX2lkX3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjA0Olx0eyBQQ0lfREVWSUNFX0RBVEEoU1RNTUFDLCBTVE1NQUMsIFx1MDAyNnN0bW1hY19wY2lfaW5mbykgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMDU6XHR7IFBDSV9ERVZJQ0VfREFUQShTVE1JQ1JPLCBNQUMsIFx1MDAyNnN0bW1hY19wY2lfaW5mbykgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMDYtXHR7IFBDSV9ERVZJQ0VfREFUQShTWU5PUFNZUywgR01BQzVfSUQsIFx1MDAyNnNucHNfZ21hYzVfcGNpX2luZm8pIH0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTIxMD1NT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgc3RtbWFjX2lkX3RhYmxlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjEyOnN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBzdG1tYWNfcGNpX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMTMtXHQubmFtZSA9IFNUTU1BQ19SRVNPVVJDRV9OQU1FLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIxNC1cdC5pZF90YWJsZSA9IHN0bW1hY19pZF90YWJsZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMTU6XHQucHJvYmUgPSBzdG1tYWNfcGNpX3Byb2JlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIxNjpcdC5yZW1vdmUgPSBzdG1tYWNfcGNpX3JlbW92ZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMTctXHQuZHJpdmVyICAgICAgICAgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIyMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMjI6bW9kdWxlX3BjaV9kcml2ZXIoc3RtbWFjX3BjaV9kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIyMy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNDo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTc0OQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDM3OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIFNUTU1BQyBEcml2ZXIgYW5kIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGUgYHN0bW1hY2AgZHJpdmVyIGFuZCB0aGUgYHN0bW1hY19wY2kuY2AgUENJIHdyYXBwZXIsIHdoaWNoIHJlZ2lzdGVycyB0aGUgUENJIGRyaXZlci4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7Q2FuIHdlIGZ1enogdGhpcyBpbiBRRU1VPyYjMzQ7LiBTeXprYWxsZXIgaXMgdGhlIG9idmlvdXMgdG9vbCwgYW5kIGl0IG9mdGVuIGhhbmRsZXMgUENJIGRldmljZXMgYnkgZWl0aGVyIGVtdWxhdGluZyB0aGVtIHdpdGggYHN5el9wY2lfc2V0dXBgIG9yIHVzaW5nIHZpcnR1YWwgZGV2aWNlcyBpZiB0aGV5JiMzOTtyZSBub3Qgc3RhbmRhcmQgUUVNVSBjb21wb25lbnRzLiBUaGUga2V5IGhlcmUgaXMsIGlzIGBzdG1tYWNgIHN0YW5kYXJkPyBObywgaXQmIzM5O3Mgbm90IGEgc3RhbmRhcmQgUUVNVSBkZXZpY2UuIEJ1dCwgU3l6a2FsbGVyICpkb2VzKiBoYXZlIHRoaXMgdmlydHVhbCBQQ0kgZGV2aWNlIGZ1enplci4uLiBzbyBtYXliZT8KClRoZW4gSSB0aGluaywgJiMzNDtIYXMgU3l6a2FsbGVyIGFscmVhZHkgdGFja2xlZCBgc3RtbWFjYD8mIzM0Oy4gSSBzZWUgYSBjb21taXQgbWVzc2FnZSBtZW50aW9uaW5nIGBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdgLCB3aGljaCBzdHJvbmdseSBzdWdnZXN0cyBzb21lb25lJiMzOTtzIHN1Ym1pdHRlZCBhIHBhdGNoIHRvIFN5emthbGxlciBzcGVjaWZpY2FsbHkgZm9yIHRoaXMgZHJpdmVyLCBvciBhdCBsZWFzdCB0aGV5JiMzOTtyZSB0ZXN0aW5nIGl0LgoKV2FpdCwgbm93IEkmIzM5O20gcmVhZGluZyB0aGUgb3JpZ2luYWwgcHJvbXB0LCBhbmQgaXQgbWVudGlvbnMgYXZvaWRpbmcgZnV6emluZyBvZiBzcGVjaWZpYyB2ZW5kb3Itc3BlY2lmaWMgUENJZSBkZXZpY2VzIGxpa2UgU21hcnROSUNzLCBHUFVzLCBhbmQgUENJZSBzd2l0Y2hlcy4uLiBpcyBgc3RtbWFjYCBvbmUgb2YgdGhvc2U/IE5vLCB0aGF0JiMzOTtzIG5vdCByaWdodC4gSXQmIzM5O3MgYSBzdGFuZGFyZCBFdGhlcm5ldCBNQUMgZHJpdmVyLCBEZXNpZ25XYXJlIE1BQywgd2hpY2ggaXMgcXVpdGUgY29tbW9uLCBzbyB0aGF0JiMzOTtzIGEgbm8gb24gdGhlIGV4Y2x1c2lvbiBjbGF1c2UuCgpBaCwgdGhlIHBhdGNoIGl0c2VsZiBpcyBmb2N1c2VkIG9uIGBzdG1tYWNfeGRwX3JlbGVhc2VgIGFuZCBgc3RtbWFjX3hkcF9vcGVuYC4gVGhlc2UgYXJlIFhEUCAoZUJQRikgcmVsYXRlZCBmdW5jdGlvbnMuIE5vdyBJJiMzOTttIHRoaW5raW5nLCAmIzM0O0lzIGBzdG1tYWNfeGRwX29wZW5gIHJlYWNoYWJsZT8mIzM0Oy4gSXQgbG9va3MgbGlrZSBpdCBnZXRzIGNhbGxlZCB3aGVuIHdlIGF0dGFjaCBvciBkZXRhY2ggYW4gWERQIHByb2dyYW0sIG9yIHdoZW4gdGhlIGludGVyZmFjZSBpcyBicm91Z2h0IHVwIHdpdGggWERQLiBTbywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGwgcGF0aHMgdG8gYHN0bW1hY194ZHBfb3BlbmAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDQ6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RtbWFjX3hkcF9vcGVuJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oPTQwNz12b2lkIHN0bW1hY19wdHBfdW5yZWdpc3RlcihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmg6NDA4OmludCBzdG1tYWNfeGRwX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaC00MDktdm9pZCBzdG1tYWNfeGRwX3JlbGVhc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03MTQxPXZvaWQgc3RtbWFjX3hkcF9yZWxlYXNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MTc0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3MTc1OmludCBzdG1tYWNfeGRwX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzE3Ni17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jPTEwMj1pbnQgc3RtbWFjX3hkcF9zZXRfcHJvZyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmMtMTM0LVx0aWYgKGlmX3J1bm5pbmcgXHUwMDI2XHUwMDI2IG5lZWRfdXBkYXRlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jOjEzNTpcdFx0c3RtbWFjX3hkcF9vcGVuKGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmMtMTM2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA0OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzMDQxCgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogNTA4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBzdG1tYWNgIERyaXZlciYjMzk7cyBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyBgc3RtbWFjX3hkcF9vcGVuYCBpcyBjYWxsZWQgYnkgYHN0bW1hY194ZHBfc2V0X3Byb2dgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgY2FuIEkgZXZlbiByZWFjaCB0aGlzIHRoaW5nIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IFFFTVUsIGJ5IGRlZmF1bHQsIGRvZXNuJiMzOTt0IGVtdWxhdGUgYHN0bW1hY2AuIEhvd2V2ZXIsIEkgcmVjYWxsIFFFTVUgKmRvZXMqIGhhdmUgZW11bGF0ZWQgbmV0d29yayBoYXJkd2FyZSBpbiBwbGFjZXMgbGlrZSBgaHcvbmV0L2lteF9mZWMuY2AsIGBody9uZXQvY2FkZW5jZV9nZW0uY2AsIGFuZCBzZXZlcmFsIG90aGVycy4gRG9lcyBpdCAqYWxzbyogZW11bGF0ZSBEZXNpZ25XYXJlIE1BQ3MsIHdoaWNoIGlzIHdoYXQgYHN0bW1hY2AgZHJpdmVzPyBZZXMhIFFFTVUgKmRvZXMqIGVtdWxhdGUgdGhlIGBkZXNpZ253YXJlYCBNQUMsIHNwZWNpZmljYWxseSBpbiBgaHcvbmV0L2Rlc2lnbndhcmUuY2AuIFRoYXQmIzM5O3MgdGhlIGtleS4KCkxldCBtZSBjb25maXJtIHF1aWNrbHk6IFFFTVUmIzM5O3MgYGh3L25ldC9kZXNpZ253YXJlLmNgIGVtdWxhdGVzIHRoZSBTeW5vcHN5cyBEZXNpZ25XYXJlIDEwLzEwMC8xMDAwIEV0aGVybmV0IE1BQywgd2hpY2ggaXMgKmV4YWN0bHkqIHdoYXQgYHN0bW1hY2AgaW50ZXJhY3RzIHdpdGguIFRoaXMgaXMgcHJvbWlzaW5nLgoKTm93LCBjb25zaWRlcmluZyBmdXp6aW5nLCBzeXprYWxsZXIgaGFzIGBzeXpfdXNiX2Nvbm5lY3RgIGZvciBVU0IgYW5kIGBzeXpfcGNpX3NldHVwYCBmb3IgUENJLiBgc3RtbWFjYCBpcyBvZnRlbiBhIHBsYXRmb3JtIGRldmljZSwgYnV0IHN5emthbGxlciAqY2FuKiBmdXp6IHBsYXRmb3JtIGRldmljZXMgaWYgdGhleSYjMzk7cmUgaW5zdGFudGlhdGVkIHRocm91Z2ggdGhlIGRldmljZSB0cmVlIG9yLCBpbXBvcnRhbnRseSwgaWYgdGhleSYjMzk7cmUgUENJIGRldmljZXMuIEFuZCB3YWl0Li4uIGBzdG1tYWNfcGNpYCAqaXMqIGEgUENJIGRyaXZlciEgU3l6a2FsbGVyJiMzOTtzIFBDSSBmdXp6ZXIgY2FuIHBvdGVudGlhbGx5IGluc3RhbnRpYXRlIGl0ISBUaGlzIGlzIGV4Y2VsbGVudCBuZXdzLgoKVGhlIHBhdGNoIGl0c2VsZiBpcyBtb2RpZnlpbmcgYHN0bW1hY19kaXNhYmxlX2FsbF9kbWFfaXJxYCwgYHN0bW1hY19zeW5jaHJvbml6ZV9pcnFgLCBgc3RtbWFjX3hkcF9yZWxlYXNlYCwgYW5kIGBzdG1tYWNfeGRwX29wZW5gLiBUaGVzZSBhcmUga2VybmVsIGZ1bmN0aW9uYWwgY2hhbmdlcywgYW5kIHRoaXMgaXMgcHJpbWUgZnV6emluZyB0ZXJyaXRvcnkuCgpJcyB0aGlzIHdvcnRoIHRoZSBlZmZvcnQ/IEFic29sdXRlbHkuIFRoZSBmb2N1cyBzeW1ib2xzIGFyZSBjbGVhcmx5OiBgc3RtbWFjX3hkcF9vcGVuYCwgYHN0bW1hY194ZHBfcmVsZWFzZWAsIGBzdG1tYWNfZGlzYWJsZV9hbGxfZG1hX2lycWAsIGFuZCBgc3RtbWFjX3N5bmNocm9uaXplX2lycWAuIFdhaXQgYSBzZWNvbmQgdGhvdWdoLCBgc3RtbWFjX2Rpc2FibGVfYWxsX2RtYV9pcnFgIGFuZCBgc3RtbWFjX3N5bmNocm9uaXplX2lycWAgYXJlIHN0YXRpYyBmdW5jdGlvbnMuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgaWYgdGhleSYjMzk7cmUgaW5saW5lZCBvciBhY2Nlc3NpYmxlIGluIGEgd2F5IHRoYXQgYWxsb3dzIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDQ6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RtbWFjX2Rpc2FibGVfYWxsX2RtYV9pcnEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0yNTE3PXN0YXRpYyB2b2lkIHN0bW1hY19lbmFibGVfYWxsX2RtYV9pcnEoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjUzMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjUzNDpzdGF0aWMgdm9pZCBzdG1tYWNfZGlzYWJsZV9hbGxfZG1hX2lycShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI1MzUte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzE0MT12b2lkIHN0bW1hY194ZHBfcmVsZWFzZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzE1NS1cdC8qIFNpbGVuY2UgRE1BIGludGVycnVwdHMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzE1NjpcdHN0bW1hY19kaXNhYmxlX2FsbF9kbWFfaXJxKHByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MTU3LVx0c3RtbWFjX3N5bmNocm9uaXplX2lycShkZXYpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA0OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0NDg1CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkFuYWx5emluZyBTdGF0aWMgRnVuY3Rpb25zIGFuZCBQb3RlbnRpYWwgWERQIEludGVyYWN0aW9ucyBpbiB0aGUgU1RNTUFDIERyaXZlcioqCgpBbHJpZ2h0LCBzbyB0aGUgY29yZSBvZiB3aGF0IEkmIzM5O20gbG9va2luZyBhdCBoZXJlIGlzIHRoZSBpbnRlcmFjdGlvbiBvZiBYRFAgKGVYcHJlc3MgRGF0YSBQYXRoKSB3aXRoIHRoZSBTVE1NQUMgZHJpdmVyLiBUaGUgbm90ZXMgbWFrZSBpdCBjbGVhciB0aGF0IHRoZSBmdW5jdGlvbnMgdGhhdCBhcmUgZGVjbGFyZWQgc3RhdGljIGFyZSBpbmxpbmVkLCBzbyBJIHdvbiYjMzk7dCBuZWVkIHRvIGRpZyBpbnRvIHRob3NlLiBNeSBmb2N1cyB0aGVuIHNoaWZ0cyB0byB0aGUgbm9uLXN0YXRpYyBmdW5jdGlvbnMgcmVsYXRlZCB0byBYRFAuCgpUaGUga2V5IHBsYXllcnMgaGVyZSBhcmUgYHN0bW1hY194ZHBfcmVsZWFzZWAsIGBzdG1tYWNfeGRwX29wZW5gLCBhbmQsIGp1c3QgdG8gYmUgdGhvcm91Z2gsIEkgc2hvdWxkIHJlYWxseSBzY3J1dGluaXplIGBzdG1tYWNfeGRwX3NldF9wcm9nYCBhcyB3ZWxsLiBVbmRlcnN0YW5kaW5nIGhvdyB0aGVzZSB0aHJlZSBmdW5jdGlvbnMgaGFuZGxlIFhEUCBwcm9ncmFtIG1hbmFnZW1lbnQgYW5kIGRyaXZlciBpbnRlcmFjdGlvbiBpcyBjcml0aWNhbC4gTXkgZ3V0IHRlbGxzIG1lIHRoZXNlIGZ1bmN0aW9ucyBhcmUgbGlrZWx5IHRvIGJlIHJlc3BvbnNpYmxlIGZvciBsb2FkaW5nLCB1bmxvYWRpbmcsIGFuZCBzZXR0aW5nIHRoZSBYRFAgcHJvZ3JhbS4gSSBuZWVkIHRvIGRpdmUgaW50byB0aGVpciBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIHRvIGZ1bGx5IGdyYXNwIHRoZSBYRFAgaW50ZWdyYXRpb24uIFBlcmhhcHMgdGhlcmUmIzM5O3MgYW4gaXNzdWUgdGhlcmU/CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA0OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY194ZHBfc2V0X3Byb2cmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz02OTgzPXN0YXRpYyBpbnQgc3RtbWFjX2JwZihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmV0ZGV2X2JwZiAqYnBmKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjk4OC1cdGNhc2UgWERQX1NFVFVQX1BST0c6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjY5ODk6XHRcdHJldHVybiBzdG1tYWNfeGRwX3NldF9wcm9nKHByaXYsIGJwZi1cdTAwM2Vwcm9nLCBicGYtXHUwMDNlZXh0YWNrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjk5MC1cdGNhc2UgWERQX1NFVFVQX1hTS19QT09MOlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYz05NT1pbnQgc3RtbWFjX3hkcF9zZXR1cF9wb29sKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jLTEwMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYzoxMDI6aW50IHN0bW1hY194ZHBfc2V0X3Byb2coc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmMtMTAzLVx0XHRcdHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmg9OT1pbnQgc3RtbWFjX3hkcF9zZXR1cF9wb29sKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmgtMTAtXHRcdFx0ICB1MTYgcXVldWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5oOjExOmludCBzdG1tYWNfeGRwX3NldF9wcm9nKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgc3RydWN0IGJwZl9wcm9nICpwcm9nLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5oLTEyLVx0XHRcdHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA0OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1MzgyCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMTM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU1RNTUFDIFhEUCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCAmIzM0O0FoYSEgYHN0bW1hY194ZHBfc2V0X3Byb2dgIGlzIGV4cG9zZWQgYW5kIHJlYWNoYWJsZSB0aHJvdWdoIGBzdG1tYWNfYnBmYC4mIzM0OyBUaGF0JiMzOTtzIHRoZSBlbnRyeSBwb2ludCwgdGhlIGNyaXRpY2FsIHBpZWNlIGhlcmUuIEJ1dCBob2xkIG9uLCB0aGUgcGF0Y2ggdG91Y2hlcyBgc3RtbWFjX3hkcF9yZWxlYXNlYCBhbmQgYHN0bW1hY194ZHBfb3BlbmAgYXMgd2VsbC4gUmlnaHQsIG9mIGNvdXJzZSwgdGhlc2UgYXJlIHJlbGF0ZWQgbGlmZWN5Y2xlIGZ1bmN0aW9ucy4gVGhlcmVmb3JlLCB0byBlbnN1cmUgSSBoYXZlIGZ1bGwgY29udGV4dCwgSSBuZWVkIHRvIGluY2x1ZGUgYHN0bW1hY194ZHBfcmVsZWFzZWAsIGBzdG1tYWNfeGRwX29wZW5gLCBgc3RtbWFjX3hkcF9zZXRfcHJvZ2AsIGFuZCBgc3RtbWFjX2JwZmAgaW4gbXkgRm9jdXNTeW1ib2xzIGxpc3QuIFRoYXQgd2F5LCBJIGNhbiB0cmFjZSBldmVyeXRoaW5nLiBOb3csIGxldCYjMzk7cyBjb25zaWRlciB0aGUgYnVpbGQgZW52aXJvbm1lbnQuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGBzdG1tYWNgIGRyaXZlciBpcyBjb25maWd1cmVkIGNvcnJlY3RseSBmb3IgdGhpcyBmdW5jdGlvbmFsaXR5IHRvIGV2ZW4gYmUgcmVsZXZhbnQuIFRpbWUgdG8gY2hlY2sgdGhlIEtjb25maWcgZmlsZXMgZm9yIHRoZSBgc3RtbWFjYCBkcml2ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA0OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTVE1NQUNfRVRIJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Mjpjb25maWcgU1RNTUFDX0VUSFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7U1RNaWNyb2VsZWN0cm9uaWNzIE11bHRpLUdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA0OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1ODkxCgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjoKCioqSW52ZXN0aWdhdGluZyBTVE1NQUMgRHJpdmVyIERlcGVuZGVuY2llcyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBmb3IgdGhlIFNUTU1BQyBFdGhlcm5ldCBkcml2ZXIuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGNoZWNrIHRoZSBgS2NvbmZpZ2AgZmlsZSB3aXRoaW4gdGhlIGRyaXZlciYjMzk7cyBkaXJlY3RvcnkuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBoZWFkaW5nIHN0cmFpZ2h0IGZvciBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ2AuIFRoaXMgZmlsZSBpcyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgd2hpY2ggb3RoZXIgbW9kdWxlcywgZmVhdHVyZXMsIG9yIGNvbmZpZ3VyYXRpb25zIGFyZSByZXF1aXJlZCBvciBvcHRpb25hbCB3aGVuIGJ1aWxkaW5nIGFuZCBpbmNsdWRpbmcgdGhlIFNUTU1BQyBkcml2ZXIgaW4gYSBrZXJuZWwgY29uZmlndXJhdGlvbi4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCBjb25kaXRpb25hbCBkZXBlbmRlbmNpZXMgb24gb3RoZXIgZHJpdmVycywgaGFyZHdhcmUgcGxhdGZvcm1zLCBvciBzcGVjaWZpYyBmZWF0dXJlcyByZWxhdGVkIHRvIHRoZSBTVE1pY3JvIEV0aGVybmV0IE1BQyBjb250cm9sbGVycy4gVGhpcyB3aWxsIGdpdmUgbWUgYSBwcm9wZXIgY29udGV4dCBiZWZvcmUgSSBwcm9jZWVkIHdpdGggYW55IGZ1cnRoZXIgaW52ZXN0aWdhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDQ6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBTVE1NQUNfRVRIXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gSEFTX0lPTUVNIFx1MDAyNlx1MDAyNiBIQVNfRE1BXG4gICA1Olx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG4gICA2Olx0XHRkZXBlbmRzIG9uIEVUSFRPT0xfTkVUTElOS1xuICAgNzpcdFx0c2VsZWN0IE1JSVxuICAgODpcdFx0c2VsZWN0IFBDU19YUENTXG4gICA5Olx0XHRzZWxlY3QgUEFHRV9QT09MXG4gIDEwOlx0XHRzZWxlY3QgUEhZTElOS1xuICAxMTpcdFx0c2VsZWN0IENSQzMyXG4gIDEyOlx0XHRzZWxlY3QgUkVTRVRfQ09OVFJPTExFUlxuICAxMzpcdFx0c2VsZWN0IE5FVF9ERVZMSU5LXG4gIDE0Olx0XHRoZWxwXG4gIDE1Olx0XHQgIFRoaXMgaXMgdGhlIGRyaXZlciBmb3IgdGhlIEV0aGVybmV0IElQcyBidWlsdCBhcm91bmQgYVxuICAxNjpcdFx0ICBTeW5vcHN5cyBJUCBDb3JlLlxuICAxNzpcdFxuICAxODpcdGlmIFNUTU1BQ19FVEhcbiAgMTk6XHRcbiAgMjA6XHRjb25maWcgU1RNTUFDX1NFTEZURVNUU1xuICAyMTpcdFx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciBTVE1NQUMgU2VsZnRlc3RzXCYjMzQ7XG4gIDIyOlx0XHRkZXBlbmRzIG9uIElORVRcbiAgMjM6XHRcdGRlZmF1bHQgblxuICAyNDpcdFx0aGVscFxuICAyNTpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgU1RNTUFDIFNlbGZ0ZXN0cyB1c2luZyBldGh0b29sLiBFbmFibGUgdGhpc1xuICAyNjpcdFx0ICBmZWF0dXJlIGlmIHlvdSBhcmUgZmFjaW5nIHByb2JsZW1zIHdpdGggeW91ciBIVyBhbmQgc3VibWl0IHRoZSB0ZXN0XG4gIDI3Olx0XHQgIHJlc3VsdHMgdG8gdGhlIG5ldGRldiBNYWlsaW5nIExpc3QuXG4gIDI4Olx0XG4gIDI5Olx0Y29uZmlnIFNUTU1BQ19QTEFURk9STVxuICAzMDpcdFx0dHJpc3RhdGUgXCYjMzQ7U1RNTUFDIFBsYXRmb3JtIGJ1cyBzdXBwb3J0XCYjMzQ7XG4gIDMxOlx0XHRzZWxlY3QgTUZEX1NZU0NPTlxuICAzMjpcdFx0ZGVmYXVsdCB5XG4gIDMzOlx0XHRoZWxwXG4gIDM0Olx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgYnVzIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLlxuICAzNTpcdFx0ICBUaGlzIGlzIHRoZSBkcml2ZXIgdXNlZCBvbiBzZXZlcmFsIFNvQ3M6XG4gIDM2Olx0XHQgIFNUaSwgQWxsd2lubmVyLCBBbWxvZ2ljIE1lc29uLCBBbHRlcmEgU09DRlBHQS5cbiAgMzc6XHRcbiAgMzg6XHRcdCAgSWYgeW91IGhhdmUgYSBjb250cm9sbGVyIHdpdGggdGhpcyBpbnRlcmZhY2UsIHNheSBZIG9yIE0gaGVyZS5cbiAgMzk6XHRcbiAgNDA6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgNDE6XHRcbiAgNDI6XHRpZiBTVE1NQUNfUExBVEZPUk1cbiAgNDM6XHRcbiAgNDQ6XHRjb25maWcgRFdNQUNfRFdDX1FPU19FVEhcbiAgNDU6XHRcdHRyaXN0YXRlIFwmIzM0O1N1cHBvcnQgZm9yIHNucHMsZHdjLXFvcy1ldGhlcm5ldC50eHQgRFQgYmluZGluZy5cJiMzNDtcbiAgNDY6XHRcdHNlbGVjdCBDUkMzMlxuICA0NzpcdFx0c2VsZWN0IE1JSVxuICA0ODpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgSEFTX0RNQVxuICA0OTpcdFx0aGVscFxuICA1MDpcdFx0ICBTdXBwb3J0IGZvciBjaGlwcyB1c2luZyB0aGUgc25wcyxkd2MtcW9zLWV0aGVybmV0LnR4dCBEVCBiaW5kaW5nLlxuICA1MTpcdFxuICA1MjpcdGNvbmZpZyBEV01BQ19HRU5FUklDXG4gIDUzOlx0XHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIGRyaXZlciBmb3IgRFdNQUNcJiMzNDtcbiAgNTQ6XHRcdGRlZmF1bHQgU1RNTUFDX1BMQVRGT1JNXG4gIDU1Olx0XHRoZWxwXG4gIDU2Olx0XHQgIEdlbmVyaWMgRFdNQUMgZHJpdmVyIGZvciBwbGF0Zm9ybXMgdGhhdCBkb24mIzM5O3QgcmVxdWlyZSBhbnlcbiAgNTc6XHRcdCAgcGxhdGZvcm0gc3BlY2lmaWMgY29kZSB0byBmdW5jdGlvbiBvciBpcyB1c2luZyBwbGF0Zm9ybVxuICA1ODpcdFx0ICBkYXRhIGZvciBzZXR1cC5cbiAgNTk6XHRcbiAgNjA6XHRjb25maWcgRFdNQUNfQU5BUklPTlxuICA2MTpcdFx0dHJpc3RhdGUgXCYjMzQ7QWRhcHRydW0gQW5hcmlvbiBHTUFDIHN1cHBvcnRcJiMzNDtcbiAgNjI6XHRcdGRlZmF1bHQgQVJDXG4gIDYzOlx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDIHx8IENPTVBJTEVfVEVTVClcbiAgNjQ6XHRcdGhlbHBcbiAgNjU6XHRcdCAgU3VwcG9ydCBmb3IgQWRhcHRydW0gQW5hcmlvbiBHTUFDIEV0aGVybmV0IGNvbnRyb2xsZXIuXG4gIDY2Olx0XG4gIDY3Olx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgQW5hcmlvbiBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cbiAgNjg6XHRcbiAgNjk6XHRjb25maWcgRFdNQUNfRUlDNzcwMFxuICA3MDpcdFx0dHJpc3RhdGUgXCYjMzQ7U3VwcG9ydCBmb3IgRXN3aW4gZWljNzcwMCBldGhlcm5ldCBkcml2ZXJcJiMzNDtcbiAgNzE6XHRcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IEhBU19ETUEgXHUwMDI2XHUwMDI2IEFSQ0hfRVNXSU4gfHwgQ09NUElMRV9URVNUXG4gIDcyOlx0XHRoZWxwXG4gIDczOlx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSBFc3dpbiBFSUM3NzAwIEV0aGVybmV0IGNvbnRyb2xsZXIsXG4gIDc0Olx0XHQgIHdoaWNoIGludGVncmF0ZXMgU3lub3BzeXMgRGVzaWduV2FyZSBRb1MgZmVhdHVyZXMuIEl0IGVuYWJsZXNcbiAgNzU6XHRcdCAgaGlnaC1zcGVlZCBuZXR3b3JraW5nIHdpdGggRE1BIGFjY2VsZXJhdGlvbiBhbmQgaXMgb3B0aW1pemVkXG4gIDc2Olx0XHQgIGZvciBlbWJlZGRlZCBzeXN0ZW1zLlxuICA3NzpcdFxuICA3ODpcdGNvbmZpZyBEV01BQ19JTkdFTklDXG4gIDc5Olx0XHR0cmlzdGF0ZSBcJiMzNDtJbmdlbmljIE1BQyBzdXBwb3J0XCYjMzQ7XG4gIDgwOlx0XHRkZWZhdWx0IE1BQ0hfSU5HRU5JQ1xuICA4MTpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgSEFTX0lPTUVNIFx1MDAyNlx1MDAyNiAoTUFDSF9JTkdFTklDIHx8IENPTVBJTEVfVEVTVClcbiAgODI6XHRcdHNlbGVjdCBNRkRfU1lTQ09OXG4gIDgzOlx0XHRoZWxwXG4gIDg0Olx0XHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXIgb24gSW5nZW5pYyBTb0NzLlxuICA4NTpcdFxuICA4NjpcdFx0ICBUaGlzIHNlbGVjdHMgSW5nZW5pYyBTb0NzIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hY1xuICA4NzpcdFx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIG9uIGZvciB0aGUgSW5nZW5pYyBTb0NzXG4gIDg4Olx0XHQgIE1BQyBldGhlcm5ldCBjb250cm9sbGVyLlxuICA4OTpcdFxuICA5MDpcdGNvbmZpZyBEV01BQ19JUFE4MDZYXG4gIDkxOlx0XHR0cmlzdGF0ZSBcJiMzNDtRQ0EgSVBRODA2eCBEV01BQyBzdXBwb3J0XCYjMzQ7XG4gIDkyOlx0XHRkZWZhdWx0IEFSQ0hfUUNPTVxuICA5MzpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfUUNPTSB8fCBDT01QSUxFX1RFU1QpXG4gIDk0Olx0XHRzZWxlY3QgTUZEX1NZU0NPTlxuICA5NTpcdFx0aGVscFxuICA5NjpcdFx0ICBTdXBwb3J0IGZvciBRQ0EgSVBRODA2WCBEV01BQyBFdGhlcm5ldC5cbiAgOTc6XHRcbiAgOTg6XHRcdCAgVGhpcyBzZWxlY3RzIHRoZSBJUFE4MDZ4IFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWNcbiAgOTk6XHRcdCAgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgZG9lcyBub3QgdXNlIGFueSBvZiB0aGUgaGFyZHdhcmVcbiAxMDA6XHRcdCAgYWNjZWxlcmF0aW9uIGZlYXR1cmVzIGF2YWlsYWJsZSBvbiB0aGlzIFNvQy4gTmV0d29yayBkZXZpY2VzXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA0OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3NTI1CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgcGVyc3BlY3RpdmU6CgoqKkRlYnVnZ2luZyBEcml2ZXIgQ29uZmlndXJhdGlvbiBmb3IgU3l6a2FsbGVyIEludGVncmF0aW9uKioKCkFscmlnaHQsIHNvIHdlIG5lZWQgdG8gZ2V0IHRoaXMgYFNUTU1BQ19QQ0lgIG9wdGlvbiBlbmFibGVkLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgbWFraW5nIHN1cmUgdGhlIFBDSSBkcml2ZXIgZm9yIHRoZSBTVE1NQUMgZXRoZXJuZXQgY29udHJvbGxlciBpcyBhdmFpbGFibGUuIFRoaXMgaXMgY3J1Y2lhbCBiZWNhdXNlIHN5emthbGxlciwgd2hpY2ggd2UmIzM5O3JlIHVzaW5nIGZvciBmdXp6aW5nLCB3aWxsIGxpa2VseSBpbnRlcmFjdCB3aXRoIHRoZSBkcml2ZXIgdGhyb3VnaCB0aGUgUENJIGludGVyZmFjZS4gVGhlcmVmb3JlLCBgU1RNTUFDX1BDSWAgaGFzIHRvIGJlIGNvcnJlY3RseSBjb25maWd1cmVkLiBUaGUgbmV4dCBvYnZpb3VzIHN0ZXAgaXMgdG8gcXVpY2tseSBmaW5kIG91dCB3aGVyZSB0aGlzIHRoaW5nIGlzIGFjdHVhbGx5IGRlZmluZWQgd2l0aGluIHRoZSBrZXJuZWwgc291cmNlLiBObyBwb2ludCBpbiBndWVzc2luZzsgSSBuZWVkIHRoZSBhdXRob3JpdGF0aXZlIGxvY2F0aW9uIHRvIHVuZGVyc3RhbmQgaXRzIGRlcGVuZGVuY2llcyBhbmQgZW5zdXJlIGl0JiMzOTtzIGVuYWJsZWQgYXBwcm9wcmlhdGVseS4gTGV0JiMzOTtzIGRpZyBpbiBhbmQgdHJhY2sgZG93biB0aGUgZGVmaW5pdGlvbiBvZiBgU1RNTUFDX1BDSWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA0OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTVE1NQUNfUENJJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mzk4PWNvbmZpZyBEV01BQ19NT1RPUkNPTU1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NDA3OmNvbmZpZyBTVE1NQUNfUENJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwOC1cdHRyaXN0YXRlIFwmIzM0O1NUTU1BQyBQQ0kgYnVzIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDQ6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc5MDUKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHRoZSBgU1RNTUFDX1BDSWAgRGVmaW5pdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIHByZXNlbnRlZCB3aXRoIGEgcmVmZXJlbmNlIHRvIGBTVE1NQUNfUENJYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7UmlnaHQsIGxldCYjMzk7cyBnZXQgaW50byB0aGUgc3BlY2lmaWNzIG9mIHRoaXMuJiMzNDsgU2luY2UgSSYjMzk7bSB3b3JraW5nIGF0IHRoaXMgbGV2ZWwsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBhcmNoaXRlY3R1cmFsIGRldGFpbHMuIFNvLCB0aGUgZmlyc3Qgc3RlcCBpcyB0byBkaXZlIGludG8gdGhlIGRlZmluaXRpb24gaXRzZWxmLiBJIG5lZWQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGlzIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gdGllcyBpbnRvIHRoZSBicm9hZGVyIFNUTU1BQyAoU1RNaWNyb2VsZWN0cm9uaWNzIE1lZGlhIEFjY2VzcyBDb250cm9sbGVyKSBlY29zeXN0ZW0uIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGNsdWVzIGFib3V0IHRoZSBQQ0kgKFBlcmlwaGVyYWwgQ29tcG9uZW50IEludGVyY29ubmVjdCkgaW50ZXJmYWNlIGltcGxlbWVudGF0aW9uOiBIb3cgZG9lcyBpdCBtYW5hZ2UgbWVtb3J5IG1hcHBpbmc/IFdoYXQgYWJvdXQgaW50ZXJydXB0IGhhbmRsaW5nPyBBcmUgdGhlcmUgYW55IHNwZWNpZmljIGhhcmR3YXJlIHF1aXJrcyBvciBlcnJhdGEgSSBuZWVkIHRvIGJlIGF3YXJlIG9mIHdpdGhpbiB0aGlzIGNvbmZpZ3VyYXRpb24/IFRoaXMgaW5mb3JtYXRpb24gaXMgY3JpdGljYWwgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGJlaGF2aW9yIG9mIHRoZSBOSUMsIGl0cyBwZXJmb3JtYW5jZSBsaW1pdHMsIGFuZCBkZWJ1Z2dpbmcgYW55IHBvdGVudGlhbCBpc3N1ZXMgdGhhdCBtYXkgYXJpc2UgaW4gdGhpcyBzcGVjaWZpYyBzZXR1cC4gRXNzZW50aWFsbHksIEkgbmVlZCB0byBlc3RhYmxpc2ggYSBzb2xpZCwgY29uY3JldGUgdW5kZXJzdGFuZGluZyBvZiAqdGhpcyogcGFydGljdWxhciBpbnN0YW5jZSBvZiBhbiBTVE1NQUMgZHJpdmVyIGludGVyYWN0aW5nIHdpdGggdGhlIFBDSSBidXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA0OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDAwOlx0XHRkZXBlbmRzIG9uIFBDSVxuIDQwMTpcdFx0c2VsZWN0IE1PVE9SQ09NTV9QSFlcbiA0MDI6XHRcdHNlbGVjdCBTVE1NQUNfTElCUENJXG4gNDAzOlx0XHRoZWxwXG4gNDA0Olx0XHQgIFRoaXMgZW5hYmxlcyBnbHVlIGRyaXZlciBmb3IgTW90b3Jjb21tIERXTUFDLWJhc2VkIFBDSSBFdGhlcm5ldFxuIDQwNTpcdFx0ICBjb250cm9sbGVycy4gQ3VycmVudGx5IG9ubHkgWVQ2ODAxIGlzIHN1cHBvcnRlZC5cbiA0MDY6XHRcbiA0MDc6XHRjb25maWcgU1RNTUFDX1BDSVxuIDQwODpcdFx0dHJpc3RhdGUgXCYjMzQ7U1RNTUFDIFBDSSBidXMgc3VwcG9ydFwmIzM0O1xuIDQwOTpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiA0MTA6XHRcdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xuIDQxMTpcdFx0c2VsZWN0IFNUTU1BQ19MSUJQQ0lcbiA0MTI6XHRcdGhlbHBcbiA0MTM6XHRcdCAgVGhpcyBzZWxlY3RzIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBidXMgc3VwcG9ydCBmb3IgdGhlIHN0bW1hYyBkcml2ZXIuXG4gNDE0Olx0XHQgIFRoaXMgZHJpdmVyIHdhcyB0ZXN0ZWQgb24gWExJTlggWEMyVjMwMDAgRkYxMTUyQU1UMDIyMVxuIDQxNTpcdFx0ICBEMTIxNTk5NEEgVklSVEVYIEZQR0EgYm9hcmQgYW5kIFNOUFMgUW9TIElQSyBQcm90b3R5cGluZyBLaXQuXG4gNDE2Olx0XG4gNDE3Olx0XHQgIElmIHlvdSBoYXZlIGEgY29udHJvbGxlciB3aXRoIHRoaXMgaW50ZXJmYWNlLCBzYXkgWSBvciBNIGhlcmUuXG4gNDE4Olx0XG4gNDE5Olx0XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA0OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4NTE4CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMzM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBTdG1tYWMgQ29uZmlndXJhdGlvbiBhbmQgUGF0Y2gqKgoKT2theSwgc28gbG9va2luZyBhdCB0aGlzLCBpdCBzZWVtcyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGBTVE1NQUNfRVRIYCBhbmQgYFNUTU1BQ19QQ0lgIGNvbmZpZ3VyYXRpb25zLiBUaG9zZSBhcmUgdGhlIGtleSBvbmVzLCBubyBxdWVzdGlvbi4gSGFuZyBvbiwgdGhvdWdoLiBgU1RNTUFDX0VUSGAgaXMgZGVwZW5kZW50IG9uIGBIQVNfSU9NRU1gLCBgSEFTX0RNQWAsIGBQVFBfMTU4OF9DTE9DS19PUFRJT05BTGAsIGFuZCBgRVRIVE9PTF9ORVRMSU5LYC4gVGhvc2UgYXJlIGFsbCBwcmV0dHkgc3RhbmRhcmQgZGVwZW5kZW5jaWVzLCBub3RoaW5nIG91dCBvZiB0aGUgb3JkaW5hcnkuIEFscmlnaHQsIEkmIzM5O2xsIGFkZCBgU1RNTUFDX0VUSGAgYW5kIGBTVE1NQUNfUENJYCB0byBgRW5hYmxlQ29uZmlnc2AgdG8gbWFrZSBzdXJlIHRob3NlIGdldCBzZXQgcHJvcGVybHkuCgpOb3csIEkgbmVlZCB0byB0YWtlIGFub3RoZXIgbG9vayBhdCB0aGlzIHBhdGNoIGFuZCByZWFsbHkgemVybyBpbiBvbiB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zLiBJdCBsb29rcyBsaWtlIGl0IHRvdWNoZXMgYHN0bW1hY19kaXNhYmxlX2FsbF9kbWFfaXJxYCB3aGljaCBpcyBzdGF0aWMsIGFuZCB0aGVuIGBzdG1tYWNfc3luY2hyb25pemVfaXJxYCB3aGljaCBpcyBhbHNvIHN0YXRpYy4gVGhlc2UgYXJlIGludGVybmFsIGZ1bmN0aW9ucy4gSG93ZXZlciwgYHN0bW1hY194ZHBfcmVsZWFzZWAgYW5kIGBzdG1tYWNfeGRwX29wZW5gIGFyZSBub24tc3RhdGljIGFuZCB0aG9zZSBhcmUgdGhlIGVudHJ5IHBvaW50cyBmb3IgdGhlIG1vZGlmaWVkIGxvZ2ljLiBUaG9zZSBhcmUgdGhlIG9uZXMgSSByZWFsbHkgbmVlZCB0byBmb2N1cyBvbi4gU28sIEkgd2lsbCBhZGQgYHN0bW1hY194ZHBfcmVsZWFzZWAgYW5kIGBzdG1tYWNfeGRwX29wZW5gIHRvIGBGb2N1c1N5bWJvbHNgLiBBbmQgSSBzaG91bGQgcHJvYmFibHkgaW5jbHVkZSBgc3RtbWFjX3hkcF9zZXRfcHJvZ2AgYW5kIGBzdG1tYWNfYnBmYCBzaW5jZSB0aGV5JiMzOTtyZSBjYWxsaW5nIGBzdG1tYWNfeGRwX29wZW5gLiBCdXQgd2FpdCwgZG9lcyBgc3RtbWFjX3hkcF9yZWxlYXNlYCBhbHNvIGdldCBjYWxsZWQgZnJvbSBgc3RtbWFjX3hkcF9zZXRfcHJvZ2A/IEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZSBjaGVjayB0aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNDo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdG1tYWNfeGRwX3JlbGVhc2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmg9NDA4PWludCBzdG1tYWNfeGRwX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaDo0MDk6dm9pZCBzdG1tYWNfeGRwX3JlbGVhc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaC00MTAtaW50IHN0bW1hY19nZXRfcGh5X2ludGZfc2VsKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzEwMz12b2lkIHN0bW1hY19lbmFibGVfdHhfcXVldWUoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1MzIgcXVldWUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MTQwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3MTQxOnZvaWQgc3RtbWFjX3hkcF9yZWxlYXNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTcxNDIte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYz0xMDI9aW50IHN0bW1hY194ZHBfc2V0X3Byb2coc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jLTEyNC1cdGlmIChpZl9ydW5uaW5nIFx1MDAyNlx1MDAyNiBuZWVkX3VwZGF0ZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYzoxMjU6XHRcdHN0bW1hY194ZHBfcmVsZWFzZShkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jLTEyNi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDQ6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk3NDUKCQkJCQkJCW91dHB1dDogMTU1CgkJCQkJCQl0aG91Z2h0czogNjcwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgVGFyZ2V0cyBpbiB0aGUgU1RNTUFDIEV0aGVybmV0IERyaXZlcjogWERQIEhhbmRsaW5nKioKCk9rYXksIHNvIGhlcmUmIzM5O3MgdGhlIHRob3VnaHQgcHJvY2VzczogSSYjMzk7dmUgdHJhY2VkIHRoZSBjb2RlIGFuZCBjb25maXJtZWQgdGhhdCBgc3RtbWFjX3hkcF9yZWxlYXNlYCBpcyBpbmRlZWQgY2FsbGVkIGZyb20gYHN0bW1hY194ZHBfc2V0X3Byb2dgLiBUaGUgY2FsbCBjaGFpbiBpcyBjbGVhcjogYHN0bW1hY19icGZgIC0mZ3Q7IGBzdG1tYWNfeGRwX3NldF9wcm9nYCAtJmd0OyBgc3RtbWFjX3hkcF9yZWxlYXNlYCAvIGBzdG1tYWNfeGRwX29wZW5gLiBUaGF0IGltbWVkaWF0ZWx5IHNjcmVhbXMgJiMzNDtmdXp6aW5nIHRhcmdldHMsJiMzNDsgZXNwZWNpYWxseSBnaXZlbiB0aGUgWERQIGNvbnRleHQuCgpJIGRvdWJsZS1jaGVja2VkOyBgc3RtbWFjX3hkcF9yZWxlYXNlYCBhbmQgYHN0bW1hY194ZHBfb3BlbmAgYXJlbiYjMzk7dCBzdGF0aWM7IHRoZXkmIzM5O3JlIGRlZmluZWQgaW4gYHN0bW1hY19tYWluLmNgIGFuZCBkZWNsYXJlZCBpbiBgc3RtbWFjLmhgLiBQZXJmZWN0LCB0aGF0IG1lYW5zIHRoZXkgaGF2ZSBkaXN0aW5jdCBzeW1ib2xzIGFuZCBhcmUgYWNjZXNzaWJsZSB0byBzeXprYWxsZXIuCgpDb25maWd1cmF0aW9uLXdpc2UsIEkmIzM5O20gdGhpbmtpbmcgYFNUTU1BQ19FVEhgIGFuZCBgU1RNTUFDX1BDSWAgYXJlIGdvaW5nIHRvIGJlIG5lY2Vzc2FyeS4gYEJQRl9TWVNDQUxMYCBpcyB1c3VhbGx5IGVuYWJsZWQgYnkgZGVmYXVsdCBpbiBmdXp6aW5nIGVudmlyb25tZW50cyBidXQgc2luY2UgWERQIGlzIHN0YW5kYXJkIG5ldHdvcmtpbmcsIGxldCYjMzk7cyBrZWVwIGl0IGNsZWFuLgoKU28sIGhlcmUmIzM5O3MgdGhlIHN1bW1hcnk6CgpXb3J0aEZ1enppbmc6IGB0cnVlYApSZWFzb25pbmc6IFRoaXMgcGF0Y2ggcmVwcmVzZW50cyBhIHNpZ25pZmljYW50IGNoYW5nZSBpbiBob3cgdGhlIHN0bW1hYyBFdGhlcm5ldCBkcml2ZXIgaGFuZGxlcyBYRFAuIFNwZWNpZmljYWxseSwgaXQgYWx0ZXJzIHRoZSBYRFAgb3BlbiBhbmQgcmVsZWFzZSBwYXRocywgZGlzYWJsaW5nIGFuZCBzeW5jaHJvbml6aW5nIERNQSBpbnRlcnJ1cHRzIHJhdGhlciB0aGFuIGZyZWVpbmcgdGhlbS4gVGhpcyBmaXhlcyBwb3RlbnRpYWwgSVJRIGhhbmRsaW5nIGlzc3Vlcy4gVGhlIGRyaXZlciBpcyByZWFjaGFibGUgdmlhIHRoZSBzdG1tYWMgUENJIHdyYXBwZXIgd2hpY2ggY2FuIGJlIGVtdWxhdGVkIGJ5IHN5emthbGxlci4KRm9jdXNTeW1ib2xzOiBgc3RtbWFjX3hkcF9vcGVuYCwgYHN0bW1hY194ZHBfcmVsZWFzZWAsIGBzdG1tYWNfeGRwX3NldF9wcm9nYCwgYHN0bW1hY19icGZgCkVuYWJsZUNvbmZpZ3M6IGBTVE1NQUNfRVRIYCwgYFNUTU1BQ19QQ0lgCgpOb3csIGxldCYjMzk7cyBnZXQgaW50byB0aGUgc3BlY2lmaWNzIG9mIHdoYXQmIzM5O3MgYmVlbiBjaGFuZ2VkLiBIb2xkIG9uLi4uIHdhaXQsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSByZW1lbWJlcmluZyB0aGlzIHJpZ2h0LiBSaWdodCwgYHN0bW1hY19kaXNhYmxlX2FsbF9kbWFfaXJxYCBpcyBjYWxsZWQgZnJvbSBgc3RtbWFjX3hkcF9yZWxlYXNlYCwgbm90IGBzdG1tYWNfeGRwX29wZW5gLiAgQW5kIHllcywgYHN0bW1hY194ZHBfcmVsZWFzZWAgY2FsbHMgYHN0bW1hY19kaXNhYmxlX2FsbF9kbWFfaXJxYCBhbmQgYHN0bW1hY19zeW5jaHJvbml6ZV9pcnFgLiBgc3RtbWFjX3hkcF9vcGVuYCBpcyByZW1vdmluZyBjYWxscyBmb3IgYHN0bW1hY19yZXF1ZXN0X2lycWAgYW5kIERNQSBDU1IgY2hhbm5lbCBjb25maWd1cmF0aW9uLgoKT2theSwgSSYjMzk7dmUgZ290IGl0LiBUaGUgcGF0Y2ggKnJlbW92ZXMqIGBzdG1tYWNfcmVxdWVzdF9pcnEoZGV2KWAgZnJvbSBgc3RtbWFjX3hkcF9vcGVuYCBhbmQgKnJlbW92ZXMqIGBzdG1tYWNfZnJlZV9pcnEoZGV2LCBSRVFfSVJRX0VSUl9BTEwsIDApYCBmcm9tIGBzdG1tYWNfeGRwX3JlbGVhc2VgLiBTbyBpbnN0ZWFkIG9mIElSUXMgYmVpbmcgZnJlZWQgYW5kIHJlLXJlcXVlc3RlZCwgdGhleSBhcmUgKmRpc2FibGVkKiBhbmQgc3luY2hyb25pemVkIGR1cmluZyBYRFAgcHJvZ3JhbSB1cGRhdGVzLiBUaGF0JiMzOTtzIGEgaHVnZSBmdW5jdGlvbmFsIGNoYW5nZSBmb3IgdGhlIGRyaXZlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDQ6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BDSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3N0bW1hY194ZHBfb3BlbiYjMzQ7LAogICAgJiMzNDtzdG1tYWNfeGRwX3JlbGVhc2UmIzM0OywKICAgICYjMzQ7c3RtbWFjX3hkcF9zZXRfcHJvZyYjMzQ7LAogICAgJiMzNDtzdG1tYWNfYnBmJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBYRFAgb3BlbiBhbmQgcmVsZWFzZSBwYXRocyBpbiB0aGUgc3RtbWFjIEV0aGVybmV0IGRyaXZlci4gSXQgcmVwbGFjZXMgZnJlZWluZyBhbmQgcmUtcmVxdWVzdGluZyBJUlFzIHdpdGggZGlzYWJsaW5nIGFuZCBzeW5jaHJvbml6aW5nIERNQSBpbnRlcnJ1cHRzIGR1cmluZyBYRFAgcHJvZ3JhbSB1cGRhdGVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBjb3JlIGRyaXZlciB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSB0aGUgUENJIGludGVyZmFjZSwgd2hpY2ggc3l6a2FsbGVyIGNhbiBlbXVsYXRlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtTVE1NQUNfRVRIJiMzNDssCiAgICAmIzM0O1NUTU1BQ19QQ0kmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzdG1tYWNfeGRwX29wZW4mIzM0OywKICAgICYjMzQ7c3RtbWFjX3hkcF9yZWxlYXNlJiMzNDssCiAgICAmIzM0O3N0bW1hY194ZHBfc2V0X3Byb2cmIzM0OywKICAgICYjMzQ7c3RtbWFjX2JwZiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgWERQIG9wZW4gYW5kIHJlbGVhc2UgcGF0aHMgaW4gdGhlIHN0bW1hYyBFdGhlcm5ldCBkcml2ZXIuIEl0IHJlcGxhY2VzIGZyZWVpbmcgYW5kIHJlLXJlcXVlc3RpbmcgSVJRcyB3aXRoIGRpc2FibGluZyBhbmQgc3luY2hyb25pemluZyBETUEgaW50ZXJydXB0cyBkdXJpbmcgWERQIHByb2dyYW0gdXBkYXRlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgY29yZSBkcml2ZXIgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgdGhlIFBDSSBpbnRlcmZhY2UsIHdoaWNoIHN5emthbGxlciBjYW4gZW11bGF0ZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA0OjUxOjUzLjQzNzI2NjA0MloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3NDk2ODY4MDQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNUTU1BQ19FVEhcIixcbiAgICBcIlNUTU1BQ19QQ0lcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzdG1tYWNfeGRwX29wZW5cIixcbiAgICBcInN0bW1hY194ZHBfcmVsZWFzZVwiLFxuICAgIFwic3RtbWFjX3hkcF9zZXRfcHJvZ1wiLFxuICAgIFwic3RtbWFjX2JwZlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBYRFAgb3BlbiBhbmQgcmVsZWFzZSBwYXRocyBpbiB0aGUgc3RtbWFjIEV0aGVybmV0IGRyaXZlci4gSXQgcmVwbGFjZXMgZnJlZWluZyBhbmQgcmUtcmVxdWVzdGluZyBJUlFzIHdpdGggZGlzYWJsaW5nIGFuZCBzeW5jaHJvbml6aW5nIERNQSBpbnRlcnJ1cHRzIGR1cmluZyBYRFAgcHJvZ3JhbSB1cGRhdGVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBjb3JlIGRyaXZlciB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSB0aGUgUENJIGludGVyZmFjZSwgd2hpY2ggc3l6a2FsbGVyIGNhbiBlbXVsYXRlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwNDo1MTo1My40MzcyNzQ4NTJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzOTU2Mjg5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDA0ZjU3ZTFkZThiZGRjODM5YjFmODJkNGE0MGNjYWI3MTBiMDhhOTRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBBdWcgMSAwNDo1MTo1MiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xcbmluZGV4IDJhMGQ3ZWZmODhkM2YuLjNjZjQzNjAxNDY4NmEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcXG5AQCAtMjUzMSw2ICsyNTMxLDIzIEBAIHN0YXRpYyB2b2lkIHN0bW1hY19lbmFibGVfYWxsX2RtYV9pcnEoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbiBcXHR9XFxuIH1cXG4gXFxuK3N0YXRpYyB2b2lkIHN0bW1hY19kaXNhYmxlX2FsbF9kbWFfaXJxKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4re1xcbitcXHR1OCByeF9jaGFubmVsc19jb3VudCA9IHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZXJ4X3F1ZXVlc190b191c2U7XFxuK1xcdHU4IHR4X2NoYW5uZWxzX2NvdW50ID0gcHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNldHhfcXVldWVzX3RvX3VzZTtcXG4rXFx0dTggZG1hX2Nzcl9jaCA9IG1heChyeF9jaGFubmVsc19jb3VudCwgdHhfY2hhbm5lbHNfY291bnQpO1xcbitcXHR1OCBjaGFuO1xcbitcXG4rXFx0Zm9yIChjaGFuID0gMDsgY2hhbiBcXHUwMDNjIGRtYV9jc3JfY2g7IGNoYW4rKykge1xcbitcXHRcXHRzdHJ1Y3Qgc3RtbWFjX2NoYW5uZWwgKmNoID0gXFx1MDAyNnByaXYtXFx1MDAzZWNoYW5uZWxbY2hhbl07XFxuK1xcdFxcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFxuK1xcbitcXHRcXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2Y2gtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG4rXFx0XFx0c3RtbWFjX2Rpc2FibGVfZG1hX2lycShwcml2LCBwcml2LVxcdTAwM2Vpb2FkZHIsIGNoYW4sIDEsIDEpO1xcbitcXHRcXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZjaC1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbitcXHR9XFxuK31cXG4rXFxuIC8qKlxcbiAgKiBzdG1tYWNfc3RhcnRfYWxsX2RtYSAtIHN0YXJ0IGFsbCBSWCBhbmQgVFggRE1BIGNoYW5uZWxzXFxuICAqIEBwcml2OiBkcml2ZXIgcHJpdmF0ZSBzdHJ1Y3R1cmVcXG5AQCAtMzgxNCw2ICszODMxLDMzIEBAIHN0YXRpYyB2b2lkIHN0bW1hY19mcmVlX2lycShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXHR9XFxuIH1cXG4gXFxuK3N0YXRpYyB2b2lkIHN0bW1hY19zeW5jaHJvbml6ZV9pcnEoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4re1xcbitcXHRzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihkZXYpO1xcbitcXHRzdHJ1Y3Qgc3RtbWFjX21zaSAqbXNpID0gcHJpdi1cXHUwMDNlbXNpO1xcbitcXHRpbnQgajtcXG4rXFxuK1xcdGZvciAoaiA9IHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZXR4X3F1ZXVlc190b191c2UgLSAxOyBtc2kgXFx1MDAyNlxcdTAwMjYgaiBcXHUwMDNlPSAwOyBqLS0pIHtcXG4rXFx0XFx0aWYgKG1zaS1cXHUwMDNldHhfaXJxW2pdIFxcdTAwM2UgMClcXG4rXFx0XFx0XFx0c3luY2hyb25pemVfaXJxKG1zaS1cXHUwMDNldHhfaXJxW2pdKTtcXG4rXFx0fVxcbitcXG4rXFx0Zm9yIChqID0gcHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlcnhfcXVldWVzX3RvX3VzZSAtIDE7IG1zaSBcXHUwMDI2XFx1MDAyNiBqIFxcdTAwM2U9IDA7IGotLSkge1xcbitcXHRcXHRpZiAobXNpLVxcdTAwM2VyeF9pcnFbal0gXFx1MDAzZSAwKVxcbitcXHRcXHRcXHRzeW5jaHJvbml6ZV9pcnEobXNpLVxcdTAwM2VyeF9pcnFbal0pO1xcbitcXHR9XFxuK1xcbitcXHRpZiAobXNpIFxcdTAwMjZcXHUwMDI2IG1zaS1cXHUwMDNlc2Z0eV91ZV9pcnEgXFx1MDAzZSAwIFxcdTAwMjZcXHUwMDI2IG1zaS1cXHUwMDNlc2Z0eV91ZV9pcnEgIT0gZGV2LVxcdTAwM2VpcnEpXFxuK1xcdFxcdHN5bmNocm9uaXplX2lycShtc2ktXFx1MDAzZXNmdHlfdWVfaXJxKTtcXG4rXFx0aWYgKG1zaSBcXHUwMDI2XFx1MDAyNiBtc2ktXFx1MDAzZXNmdHlfY2VfaXJxIFxcdTAwM2UgMCBcXHUwMDI2XFx1MDAyNiBtc2ktXFx1MDAzZXNmdHlfY2VfaXJxICE9IGRldi1cXHUwMDNlaXJxKVxcbitcXHRcXHRzeW5jaHJvbml6ZV9pcnEobXNpLVxcdTAwM2VzZnR5X2NlX2lycSk7XFxuK1xcdGlmIChwcml2LVxcdTAwM2V3b2xfaXJxIFxcdTAwM2UgMCBcXHUwMDI2XFx1MDAyNiBwcml2LVxcdTAwM2V3b2xfaXJxICE9IGRldi1cXHUwMDNlaXJxKVxcbitcXHRcXHRzeW5jaHJvbml6ZV9pcnEocHJpdi1cXHUwMDNld29sX2lycSk7XFxuK1xcdGlmIChwcml2LVxcdTAwM2VzZnR5X2lycSBcXHUwMDNlIDAgXFx1MDAyNlxcdTAwMjYgcHJpdi1cXHUwMDNlc2Z0eV9pcnEgIT0gZGV2LVxcdTAwM2VpcnEpXFxuK1xcdFxcdHN5bmNocm9uaXplX2lycShwcml2LVxcdTAwM2VzZnR5X2lycSk7XFxuK1xcdHN5bmNocm9uaXplX2lycShkZXYtXFx1MDAzZWlycSk7XFxuK31cXG4rXFxuIHN0YXRpYyBpbnQgc3RtbWFjX21zaV9pbml0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4gXFx0XFx0XFx0ICAgc3RydWN0IHN0bW1hY19yZXNvdXJjZXMgKnJlcylcXG4ge1xcbkBAIC03MTA4LDggKzcxNTIsOSBAQCB2b2lkIHN0bW1hY194ZHBfcmVsZWFzZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiBcXHRmb3IgKGNoYW4gPSAwOyBjaGFuIFxcdTAwM2MgcHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNldHhfcXVldWVzX3RvX3VzZTsgY2hhbisrKVxcbiBcXHRcXHRocnRpbWVyX2NhbmNlbChcXHUwMDI2cHJpdi1cXHUwMDNlZG1hX2NvbmYudHhfcXVldWVbY2hhbl0udHh0aW1lcik7XFxuIFxcbi1cXHQvKiBGcmVlIHRoZSBJUlEgbGluZXMgKi9cXG4tXFx0c3RtbWFjX2ZyZWVfaXJxKGRldiwgUkVRX0lSUV9FUlJfQUxMLCAwKTtcXG4rXFx0LyogU2lsZW5jZSBETUEgaW50ZXJydXB0cyAqL1xcbitcXHRzdG1tYWNfZGlzYWJsZV9hbGxfZG1hX2lycShwcml2KTtcXG4rXFx0c3RtbWFjX3N5bmNocm9uaXplX2lycShkZXYpO1xcbiBcXG4gXFx0LyogU3RvcCBUWC9SWCBETUEgY2hhbm5lbHMgKi9cXG4gXFx0c3RtbWFjX3N0b3BfYWxsX2RtYShwcml2KTtcXG5AQCAtNzEzMiw3ICs3MTc3LDYgQEAgaW50IHN0bW1hY194ZHBfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiBcXHRzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihkZXYpO1xcbiBcXHR1OCByeF9jbnQgPSBwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2VyeF9xdWV1ZXNfdG9fdXNlO1xcbiBcXHR1OCB0eF9jbnQgPSBwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2V0eF9xdWV1ZXNfdG9fdXNlO1xcbi1cXHR1OCBkbWFfY3NyX2NoID0gbWF4KHJ4X2NudCwgdHhfY250KTtcXG4gXFx0c3RydWN0IHN0bW1hY19yeF9xdWV1ZSAqcnhfcTtcXG4gXFx0c3RydWN0IHN0bW1hY190eF9xdWV1ZSAqdHhfcTtcXG4gXFx0Ym9vbCBzcGhfZW47XFxuQEAgLTcxNTUsMTIgKzcxOTksNiBAQCBpbnQgc3RtbWFjX3hkcF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIFxcbiBcXHRzdG1tYWNfcmVzZXRfcXVldWVzX3BhcmFtKHByaXYpO1xcbiBcXG4tXFx0LyogRE1BIENTUiBDaGFubmVsIGNvbmZpZ3VyYXRpb24gKi9cXG4tXFx0Zm9yIChjaGFuID0gMDsgY2hhbiBcXHUwMDNjIGRtYV9jc3JfY2g7IGNoYW4rKykge1xcbi1cXHRcXHRzdG1tYWNfaW5pdF9jaGFuKHByaXYsIHByaXYtXFx1MDAzZWlvYWRkciwgcHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlZG1hX2NmZywgY2hhbik7XFxuLVxcdFxcdHN0bW1hY19kaXNhYmxlX2RtYV9pcnEocHJpdiwgcHJpdi1cXHUwMDNlaW9hZGRyLCBjaGFuLCAxLCAxKTtcXG4tXFx0fVxcbi1cXG4gXFx0LyogQWRqdXN0IFNwbGl0IGhlYWRlciAqL1xcbiBcXHRzcGhfZW4gPSAocHJpdi1cXHUwMDNlaHctXFx1MDAzZXJ4X2NzdW0gXFx1MDAzZSAwKSBcXHUwMDI2XFx1MDAyNiBwcml2LVxcdTAwM2VzcGhfYWN0aXZlO1xcbiBcXG5AQCAtNzE5NywxMCArNzIzNSw2IEBAIGludCBzdG1tYWNfeGRwX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFx0LyogU3RhcnQgUnggXFx1MDAyNiBUeCBETUEgQ2hhbm5lbHMgKi9cXG4gXFx0c3RtbWFjX3N0YXJ0X2FsbF9kbWEocHJpdik7XFxuIFxcbi1cXHRyZXQgPSBzdG1tYWNfcmVxdWVzdF9pcnEoZGV2KTtcXG4tXFx0aWYgKHJldClcXG4tXFx0XFx0Z290byBpcnFfZXJyb3I7XFxuLVxcbiBcXHQvKiBFbmFibGUgTkFQSSBwcm9jZXNzKi9cXG4gXFx0c3RtbWFjX2VuYWJsZV9hbGxfcXVldWVzKHByaXYpO1xcbiBcXHRuZXRpZl9jYXJyaWVyX29uKGRldik7XFxuQEAgLTcyMDksMTAgKzcyNDMsNiBAQCBpbnQgc3RtbWFjX3hkcF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIFxcbiBcXHRyZXR1cm4gMDtcXG4gXFxuLWlycV9lcnJvcjpcXG4tXFx0Zm9yIChjaGFuID0gMDsgY2hhbiBcXHUwMDNjIHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZXR4X3F1ZXVlc190b191c2U7IGNoYW4rKylcXG4tXFx0XFx0aHJ0aW1lcl9jYW5jZWwoXFx1MDAyNnByaXYtXFx1MDAzZWRtYV9jb25mLnR4X3F1ZXVlW2NoYW5dLnR4dGltZXIpO1xcbi1cXG4gaW5pdF9lcnJvcjpcXG4gXFx0ZnJlZV9kbWFfZGVzY19yZXNvdXJjZXMocHJpdiwgXFx1MDAyNnByaXYtXFx1MDAzZWRtYV9jb25mKTtcXG4gZG1hX2Rlc2NfZXJyb3I6XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA0OjUxOjUzLjk3NzUxODEwOFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjU2OTU2NjAxODcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNUTU1BQ19FVEhcIixcbiAgICBcIlNUTU1BQ19QQ0lcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzdG1tYWNfeGRwX29wZW5cIixcbiAgICBcInN0bW1hY194ZHBfcmVsZWFzZVwiLFxuICAgIFwic3RtbWFjX3hkcF9zZXRfcHJvZ1wiLFxuICAgIFwic3RtbWFjX2JwZlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBYRFAgb3BlbiBhbmQgcmVsZWFzZSBwYXRocyBpbiB0aGUgc3RtbWFjIEV0aGVybmV0IGRyaXZlci4gSXQgcmVwbGFjZXMgZnJlZWluZyBhbmQgcmUtcmVxdWVzdGluZyBJUlFzIHdpdGggZGlzYWJsaW5nIGFuZCBzeW5jaHJvbml6aW5nIERNQSBpbnRlcnJ1cHRzIGR1cmluZyBYRFAgcHJvZ3JhbSB1cGRhdGVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBjb3JlIGRyaXZlciB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSB0aGUgUENJIGludGVyZmFjZSwgd2hpY2ggc3l6a2FsbGVyIGNhbiBlbXVsYXRlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAwNGY1N2UxZGU4YmRkYzgzOWIxZjgyZDRhNDBjY2FiNzEwYjA4YTk0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgMSAwNDo1MTo1MiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5pbmRleCAyYTBkN2VmZjg4ZDNmLi4zY2Y0MzYwMTQ2ODZhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuQEAgLTI1MzEsNiArMjUzMSwyMyBAQCBzdGF0aWMgdm9pZCBzdG1tYWNfZW5hYmxlX2FsbF9kbWFfaXJxKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbiBcdH1cbiB9XG4gXG4rc3RhdGljIHZvaWQgc3RtbWFjX2Rpc2FibGVfYWxsX2RtYV9pcnEoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuK3tcbitcdHU4IHJ4X2NoYW5uZWxzX2NvdW50ID0gcHJpdi1cdTAwM2VwbGF0LVx1MDAzZXJ4X3F1ZXVlc190b191c2U7XG4rXHR1OCB0eF9jaGFubmVsc19jb3VudCA9IHByaXYtXHUwMDNlcGxhdC1cdTAwM2V0eF9xdWV1ZXNfdG9fdXNlO1xuK1x0dTggZG1hX2Nzcl9jaCA9IG1heChyeF9jaGFubmVsc19jb3VudCwgdHhfY2hhbm5lbHNfY291bnQpO1xuK1x0dTggY2hhbjtcbitcbitcdGZvciAoY2hhbiA9IDA7IGNoYW4gXHUwMDNjIGRtYV9jc3JfY2g7IGNoYW4rKykge1xuK1x0XHRzdHJ1Y3Qgc3RtbWFjX2NoYW5uZWwgKmNoID0gXHUwMDI2cHJpdi1cdTAwM2VjaGFubmVsW2NoYW5dO1xuK1x0XHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuK1xuK1x0XHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZjaC1cdTAwM2Vsb2NrLCBmbGFncyk7XG4rXHRcdHN0bW1hY19kaXNhYmxlX2RtYV9pcnEocHJpdiwgcHJpdi1cdTAwM2Vpb2FkZHIsIGNoYW4sIDEsIDEpO1xuK1x0XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmNoLVx1MDAzZWxvY2ssIGZsYWdzKTtcbitcdH1cbit9XG4rXG4gLyoqXG4gICogc3RtbWFjX3N0YXJ0X2FsbF9kbWEgLSBzdGFydCBhbGwgUlggYW5kIFRYIERNQSBjaGFubmVsc1xuICAqIEBwcml2OiBkcml2ZXIgcHJpdmF0ZSBzdHJ1Y3R1cmVcbkBAIC0zODE0LDYgKzM4MzEsMzMgQEAgc3RhdGljIHZvaWQgc3RtbWFjX2ZyZWVfaXJxKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHR9XG4gfVxuIFxuK3N0YXRpYyB2b2lkIHN0bW1hY19zeW5jaHJvbml6ZV9pcnEoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbit7XG4rXHRzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihkZXYpO1xuK1x0c3RydWN0IHN0bW1hY19tc2kgKm1zaSA9IHByaXYtXHUwMDNlbXNpO1xuK1x0aW50IGo7XG4rXG4rXHRmb3IgKGogPSBwcml2LVx1MDAzZXBsYXQtXHUwMDNldHhfcXVldWVzX3RvX3VzZSAtIDE7IG1zaSBcdTAwMjZcdTAwMjYgaiBcdTAwM2U9IDA7IGotLSkge1xuK1x0XHRpZiAobXNpLVx1MDAzZXR4X2lycVtqXSBcdTAwM2UgMClcbitcdFx0XHRzeW5jaHJvbml6ZV9pcnEobXNpLVx1MDAzZXR4X2lycVtqXSk7XG4rXHR9XG4rXG4rXHRmb3IgKGogPSBwcml2LVx1MDAzZXBsYXQtXHUwMDNlcnhfcXVldWVzX3RvX3VzZSAtIDE7IG1zaSBcdTAwMjZcdTAwMjYgaiBcdTAwM2U9IDA7IGotLSkge1xuK1x0XHRpZiAobXNpLVx1MDAzZXJ4X2lycVtqXSBcdTAwM2UgMClcbitcdFx0XHRzeW5jaHJvbml6ZV9pcnEobXNpLVx1MDAzZXJ4X2lycVtqXSk7XG4rXHR9XG4rXG4rXHRpZiAobXNpIFx1MDAyNlx1MDAyNiBtc2ktXHUwMDNlc2Z0eV91ZV9pcnEgXHUwMDNlIDAgXHUwMDI2XHUwMDI2IG1zaS1cdTAwM2VzZnR5X3VlX2lycSAhPSBkZXYtXHUwMDNlaXJxKVxuK1x0XHRzeW5jaHJvbml6ZV9pcnEobXNpLVx1MDAzZXNmdHlfdWVfaXJxKTtcbitcdGlmIChtc2kgXHUwMDI2XHUwMDI2IG1zaS1cdTAwM2VzZnR5X2NlX2lycSBcdTAwM2UgMCBcdTAwMjZcdTAwMjYgbXNpLVx1MDAzZXNmdHlfY2VfaXJxICE9IGRldi1cdTAwM2VpcnEpXG4rXHRcdHN5bmNocm9uaXplX2lycShtc2ktXHUwMDNlc2Z0eV9jZV9pcnEpO1xuK1x0aWYgKHByaXYtXHUwMDNld29sX2lycSBcdTAwM2UgMCBcdTAwMjZcdTAwMjYgcHJpdi1cdTAwM2V3b2xfaXJxICE9IGRldi1cdTAwM2VpcnEpXG4rXHRcdHN5bmNocm9uaXplX2lycShwcml2LVx1MDAzZXdvbF9pcnEpO1xuK1x0aWYgKHByaXYtXHUwMDNlc2Z0eV9pcnEgXHUwMDNlIDAgXHUwMDI2XHUwMDI2IHByaXYtXHUwMDNlc2Z0eV9pcnEgIT0gZGV2LVx1MDAzZWlycSlcbitcdFx0c3luY2hyb25pemVfaXJxKHByaXYtXHUwMDNlc2Z0eV9pcnEpO1xuK1x0c3luY2hyb25pemVfaXJxKGRldi1cdTAwM2VpcnEpO1xuK31cbitcbiBzdGF0aWMgaW50IHN0bW1hY19tc2lfaW5pdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4gXHRcdFx0ICAgc3RydWN0IHN0bW1hY19yZXNvdXJjZXMgKnJlcylcbiB7XG5AQCAtNzEwOCw4ICs3MTUyLDkgQEAgdm9pZCBzdG1tYWNfeGRwX3JlbGVhc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdGZvciAoY2hhbiA9IDA7IGNoYW4gXHUwMDNjIHByaXYtXHUwMDNlcGxhdC1cdTAwM2V0eF9xdWV1ZXNfdG9fdXNlOyBjaGFuKyspXG4gXHRcdGhydGltZXJfY2FuY2VsKFx1MDAyNnByaXYtXHUwMDNlZG1hX2NvbmYudHhfcXVldWVbY2hhbl0udHh0aW1lcik7XG4gXG4tXHQvKiBGcmVlIHRoZSBJUlEgbGluZXMgKi9cbi1cdHN0bW1hY19mcmVlX2lycShkZXYsIFJFUV9JUlFfRVJSX0FMTCwgMCk7XG4rXHQvKiBTaWxlbmNlIERNQSBpbnRlcnJ1cHRzICovXG4rXHRzdG1tYWNfZGlzYWJsZV9hbGxfZG1hX2lycShwcml2KTtcbitcdHN0bW1hY19zeW5jaHJvbml6ZV9pcnEoZGV2KTtcbiBcbiBcdC8qIFN0b3AgVFgvUlggRE1BIGNoYW5uZWxzICovXG4gXHRzdG1tYWNfc3RvcF9hbGxfZG1hKHByaXYpO1xuQEAgLTcxMzIsNyArNzE3Nyw2IEBAIGludCBzdG1tYWNfeGRwX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KGRldik7XG4gXHR1OCByeF9jbnQgPSBwcml2LVx1MDAzZXBsYXQtXHUwMDNlcnhfcXVldWVzX3RvX3VzZTtcbiBcdHU4IHR4X2NudCA9IHByaXYtXHUwMDNlcGxhdC1cdTAwM2V0eF9xdWV1ZXNfdG9fdXNlO1xuLVx0dTggZG1hX2Nzcl9jaCA9IG1heChyeF9jbnQsIHR4X2NudCk7XG4gXHRzdHJ1Y3Qgc3RtbWFjX3J4X3F1ZXVlICpyeF9xO1xuIFx0c3RydWN0IHN0bW1hY190eF9xdWV1ZSAqdHhfcTtcbiBcdGJvb2wgc3BoX2VuO1xuQEAgLTcxNTUsMTIgKzcxOTksNiBAQCBpbnQgc3RtbWFjX3hkcF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXG4gXHRzdG1tYWNfcmVzZXRfcXVldWVzX3BhcmFtKHByaXYpO1xuIFxuLVx0LyogRE1BIENTUiBDaGFubmVsIGNvbmZpZ3VyYXRpb24gKi9cbi1cdGZvciAoY2hhbiA9IDA7IGNoYW4gXHUwMDNjIGRtYV9jc3JfY2g7IGNoYW4rKykge1xuLVx0XHRzdG1tYWNfaW5pdF9jaGFuKHByaXYsIHByaXYtXHUwMDNlaW9hZGRyLCBwcml2LVx1MDAzZXBsYXQtXHUwMDNlZG1hX2NmZywgY2hhbik7XG4tXHRcdHN0bW1hY19kaXNhYmxlX2RtYV9pcnEocHJpdiwgcHJpdi1cdTAwM2Vpb2FkZHIsIGNoYW4sIDEsIDEpO1xuLVx0fVxuLVxuIFx0LyogQWRqdXN0IFNwbGl0IGhlYWRlciAqL1xuIFx0c3BoX2VuID0gKHByaXYtXHUwMDNlaHctXHUwMDNlcnhfY3N1bSBcdTAwM2UgMCkgXHUwMDI2XHUwMDI2IHByaXYtXHUwMDNlc3BoX2FjdGl2ZTtcbiBcbkBAIC03MTk3LDEwICs3MjM1LDYgQEAgaW50IHN0bW1hY194ZHBfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0LyogU3RhcnQgUnggXHUwMDI2IFR4IERNQSBDaGFubmVscyAqL1xuIFx0c3RtbWFjX3N0YXJ0X2FsbF9kbWEocHJpdik7XG4gXG4tXHRyZXQgPSBzdG1tYWNfcmVxdWVzdF9pcnEoZGV2KTtcbi1cdGlmIChyZXQpXG4tXHRcdGdvdG8gaXJxX2Vycm9yO1xuLVxuIFx0LyogRW5hYmxlIE5BUEkgcHJvY2VzcyovXG4gXHRzdG1tYWNfZW5hYmxlX2FsbF9xdWV1ZXMocHJpdik7XG4gXHRuZXRpZl9jYXJyaWVyX29uKGRldik7XG5AQCAtNzIwOSwxMCArNzI0Myw2IEBAIGludCBzdG1tYWNfeGRwX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcbiBcdHJldHVybiAwO1xuIFxuLWlycV9lcnJvcjpcbi1cdGZvciAoY2hhbiA9IDA7IGNoYW4gXHUwMDNjIHByaXYtXHUwMDNlcGxhdC1cdTAwM2V0eF9xdWV1ZXNfdG9fdXNlOyBjaGFuKyspXG4tXHRcdGhydGltZXJfY2FuY2VsKFx1MDAyNnByaXYtXHUwMDNlZG1hX2NvbmYudHhfcXVldWVbY2hhbl0udHh0aW1lcik7XG4tXG4gaW5pdF9lcnJvcjpcbiBcdGZyZWVfZG1hX2Rlc2NfcmVzb3VyY2VzKHByaXYsIFx1MDAyNnByaXYtXHUwMDNlZG1hX2NvbmYpO1xuIGRtYV9kZXNjX2Vycm9yOlxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDQ6NTE6NTMuOTc3NTE5MzY4WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njg0MTUzNjA0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQYXRjaCB0byB0aGUgU1RNTUFDIEV0aGVybmV0IERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0b3VjaGVzIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jYC4gSXQncyBhZGRpbmcgYHN0bW1hY19kaXNhYmxlX2FsbF9kbWFfaXJxYCBhbmQgYHN0bW1hY19zeW5jaHJvbml6ZV9pcnFgLCBhbmQgbW9kaWZ5aW5nIGBzdG1tYWNfeGRwX3JlbGVhc2VgIGFuZCBgc3RtbWFjX3hkcF9vcGVuYC4gSW50ZXJlc3RpbmcuIFNwZWNpZmljYWxseSwgaW4gYHN0bW1hY194ZHBfcmVsZWFzZWAsIHRoZXkncmUgcmVwbGFjaW5nIHRoZSBzdGFuZGFyZCBgc3RtbWFjX2ZyZWVfaXJxYCB3aXRoIHRob3NlIG5ldyBmdW5jdGlvbnMsIGFuZCBpbiBgc3RtbWFjX3hkcF9vcGVuYCwgdGhleSdyZSB0YWtpbmcgb3V0IGBzdG1tYWNfcmVxdWVzdF9pcnFgIGFuZCBzb21lIERNQSBDU1IgY2hhbm5lbCBjb25maWcuIEknbSBnb2luZyB0byBzdGFydCBieSBnZXR0aW5nIGEgaGFuZGxlIG9uIHRoZSBiaWdnZXIgcGljdHVyZSBoZXJlLlxuXG5UaGlzIGlzIHRoZSBkcml2ZXIgZm9yIFNUTWljcm9lbGVjdHJvbmljcycgMTAvMTAwLzEwMDAvRVFPUyBFdGhlcm5ldCBNQUMuIE5vdywgYSBrZXkgcXVlc3Rpb24gcG9wcyB1cDogaXMgdGhpcyBzb21ldGhpbmcgdGhhdCBjb3VsZCBiZSByZWFjaGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cz8gV2UgaGF2ZSB0byBjb25zaWRlciB3aGV0aGVyIGl0J3MgYSBQQ0kgZGV2aWNlIG9yIGEgcGxhdGZvcm0gZGV2aWNlLCBhbmQgd2hldGhlciB0aGUgZGV2aWNlIGlzIGVtdWxhdGVkIG9yIHJlcXVpcmVzIHNwZWNpZmljIGhhcmR3YXJlLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgYHN0bW1hY2AgaXMgb2Z0ZW4gYSBwbGF0Zm9ybSBkcml2ZXIgdXNlZCBpbiBTb0NzLCBidXQgdGhlcmUgaXMgYWxzbyBhIFBDSSB3cmFwcGVyLCBgc3RtbWFjX3BjaWAuXG5cbk9rYXksIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSBpZiB0aGlzIGlzIHNvbWV0aGluZyB0aGF0IEkgY2FuIHRhcmdldCBpbiBRRU1VIG9yIGlmIGl0J3MgZnV6emFibGUuIFRvIHRoYXQgZW5kLCBJIHNob3VsZCBzZWFyY2ggZm9yIGBzdG1tYWNfcGNpYCBvciBgc3RtbWFjYCBnZW5lcmFsbHkgaW4gUUVNVS4gQWN0dWFsbHksIGBzdG1tYWNgIGlzIGEgdmVyeSBjb21tb24gZHJpdmVyLCBvZnRlbiBmb3VuZCBpbiBBUk0gU29DcywgYnV0LCBpdCBhbHNvIGhhcyBhIFBDSSBkcml2ZXIgYHN0bW1hY19wY2kuY2AuIFRoZSBxdWVzdGlvbiBiZWNvbWVzLCBjYW4gSSBmdXp6IHRoZSBgc3RtbWFjX3BjaWAgY2FzZT8gSXQncyBhIFBDSSBkZXZpY2UsIHNvIEkgc2hvdWxkIGJlIGFibGUgdG8uIEkgc2hvdWxkIHN0YXJ0IGJ5IHJ1bm5pbmcgYSBncmVwIGZvciBgc3RtbWFjX3BjaWAgb3IgYHN0bW1hY2AgUENJIElEcyB0byBuYXJyb3cgdGhpcyBkb3duLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjQwLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzkzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDQ6NTI6MDAuODE5MDU4NjlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjEwNjUxMzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RtbWFjX3BjaVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU9NTM9b2JqLSQoQ09ORklHX0RXTUFDX01PVE9SQ09NTSlcXHQrPSBkd21hYy1tb3RvcmNvbW0ub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjU0OnN0bW1hYy1wY2ktb2Jqczo9IHN0bW1hY19wY2kub1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0yNT1zdHJ1Y3QgaW50ZWxfcHJpdl9kYXRhIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMzktICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo0MDpzdHJ1Y3Qgc3RtbWFjX3BjaV9mdW5jX2RhdGEge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNDEtXFx0dW5zaWduZWQgaW50IGZ1bmM7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTQ0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6NDU6c3RydWN0IHN0bW1hY19wY2lfZG1pX2RhdGEge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6NDY6XFx0Y29uc3Qgc3RydWN0IHN0bW1hY19wY2lfZnVuY19kYXRhICpmdW5jO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNDctXFx0c2l6ZV90IG5mdW5jcztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo1MDpzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTUxLVxcdGludCAoKnNldHVwKShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9OTE9c3RhdGljIGNvbnN0IGludCBhZGxuX3Rzbl9sYW5lX3JlZ3NbXSA9IHs2fTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTkyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6OTM6c3RhdGljIGludCBzdG1tYWNfcGNpX2ZpbmRfcGh5X2FkZHIoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05NC1cXHRcXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IGRtaV9zeXN0ZW1faWQgKmRtaV9saXN0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6OTY6XFx0Y29uc3Qgc3RydWN0IHN0bW1hY19wY2lfZnVuY19kYXRhICpmdW5jX2RhdGE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo5NzpcXHRjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9kbWlfZGF0YSAqZG1pX2RhdGE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05OC1cXHRjb25zdCBzdHJ1Y3QgZG1pX3N5c3RlbV9pZCAqZG1pX2lkO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz03NTU9c3RhdGljIGludCBlaGxfc2dtaWlfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNzc0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6Nzc1OnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGVobF9zZ21paTFnX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy03NzYtXFx0LnNldHVwID0gZWhsX3NnbWlpX2RhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTc3OT1zdGF0aWMgaW50IGVobF9yZ21paV9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy03ODktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo3OTA6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gZWhsX3JnbWlpMWdfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTc5MS1cXHQuc2V0dXAgPSBlaGxfcmdtaWlfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9ODEwPXN0YXRpYyBpbnQgZWhsX3BzZTBfcmdtaWkxZ19kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04MTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo4MTc6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gZWhsX3BzZTBfcmdtaWkxZ19pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODE4LVxcdC5zZXR1cCA9IGVobF9wc2UwX3JnbWlpMWdfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9ODIxPXN0YXRpYyBpbnQgZWhsX3BzZTBfc2dtaWkxZ19kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04MzgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo4Mzk6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gZWhsX3BzZTBfc2dtaWkxZ19pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODQwLVxcdC5zZXR1cCA9IGVobF9wc2UwX3NnbWlpMWdfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9ODU5PXN0YXRpYyBpbnQgZWhsX3BzZTFfcmdtaWkxZ19kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04NjUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo4NjY6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gZWhsX3BzZTFfcmdtaWkxZ19pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODY3LVxcdC5zZXR1cCA9IGVobF9wc2UxX3JnbWlpMWdfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9ODcwPXN0YXRpYyBpbnQgZWhsX3BzZTFfc2dtaWkxZ19kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04ODctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo4ODg6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gZWhsX3BzZTFfc2dtaWkxZ19pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODg5LVxcdC5zZXR1cCA9IGVobF9wc2UxX3NnbWlpMWdfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9OTEzPXN0YXRpYyBpbnQgdGdsX3NnbWlpX3BoeTBfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTIxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6OTIyOnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHRnbF9zZ21paTFnX3BoeTBfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTkyMy1cXHQuc2V0dXAgPSB0Z2xfc2dtaWlfcGh5MF9kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz05MjY9c3RhdGljIGludCB0Z2xfc2dtaWlfcGh5MV9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05MzQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo5MzU6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gdGdsX3NnbWlpMWdfcGh5MV9pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTM2LVxcdC5zZXR1cCA9IHRnbF9zZ21paV9waHkxX2RhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTkzOT1zdGF0aWMgaW50IGFkbHNfc2dtaWlfcGh5MF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05NDgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo5NDk6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gYWRsc19zZ21paTFnX3BoeTBfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTk1MC1cXHQuc2V0dXAgPSBhZGxzX3NnbWlpX3BoeTBfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9OTUzPXN0YXRpYyBpbnQgYWRsc19zZ21paV9waHkxX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTk2Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjk2MzpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBhZGxzX3NnbWlpMWdfcGh5MV9pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTY0LVxcdC5zZXR1cCA9IGFkbHNfc2dtaWlfcGh5MV9kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz05OTI9c3RhdGljIGludCBhZGxuX3NnbWlpX3BoeTBfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTAxMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEwMTE6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gYWRsbl9zZ21paTFnX3BoeTBfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwMTItXFx0LnNldHVwID0gYWRsbl9zZ21paV9waHkwX2RhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwMTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMDE1OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9mdW5jX2RhdGEgZ2FsaWxlb19zdG1tYWNfZnVuY19kYXRhW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDE2LVxcdHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTAyMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEwMjI6c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2RtaV9kYXRhIGdhbGlsZW9fc3RtbWFjX2RtaV9kYXRhID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTAyMy1cXHQuZnVuYyA9IGdhbGlsZW9fc3RtbWFjX2Z1bmNfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTAyNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEwMjc6c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2Z1bmNfZGF0YSBpb3QyMDQwX3N0bW1hY19mdW5jX2RhdGFbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwMjgtXFx0e1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDM3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTAzODpzdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19wY2lfZG1pX2RhdGEgaW90MjA0MF9zdG1tYWNfZG1pX2RhdGEgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDM5LVxcdC5mdW5jID0gaW90MjA0MF9zdG1tYWNfZnVuY19kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMDc4PXN0YXRpYyBpbnQgcXVhcmtfZGVmYXVsdF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDg4LVxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTA4OTpcXHRyZXQgPSBzdG1tYWNfcGNpX2ZpbmRfcGh5X2FkZHIocGRldiwgcXVhcmtfcGNpX2RtaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDkwLVxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTExMTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMTE0OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHF1YXJrX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMTE1LVxcdC5zZXR1cCA9IHF1YXJrX2RlZmF1bHRfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9MTIzMj1zdGF0aWMgaW50IGludGVsX2V0aF9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEyMzQte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTIzNTpcXHRzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvICppbmZvID0gKHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gKilpZC1cXHUwMDNlZHJpdmVyX2RhdGE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMjM2LVxcdHN0cnVjdCBpbnRlbF9wcml2X2RhdGEgKmludGVsX3ByaXY7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTc2PXN0cnVjdCBsb29uZ3Nvbl9kYXRhIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtODEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo4MjpzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTgzLVxcdGludCAoKnNldHVwKShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM9MTMyPXN0YXRpYyBpbnQgbG9vbmdzb25fZ21hY19kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy0xNDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzoxNDI6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gbG9vbmdzb25fZ21hY19wY2lfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTE0My1cXHQuc2V0dXAgPSBsb29uZ3Nvbl9nbWFjX2RhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTE2NT1zdGF0aWMgaW50IGxvb25nc29uX2duZXRfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtMTc2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6MTc3OnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGxvb25nc29uX2duZXRfcGNpX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy0xNzgtXFx0LnNldHVwID0gbG9vbmdzb25fZ25ldF9kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz00OTg9c3RhdGljIGludCBsb29uZ3Nvbl9kd21hY19wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01MDEtXFx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgcmVzID0ge307XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo1MDI6XFx0c3RydWN0IHN0bW1hY19wY2lfaW5mbyAqaW5mbztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTUwMy1cXHRzdHJ1Y3QgbG9vbmdzb25fZGF0YSAqbGQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTUzNy1cXHRwbGF0LVxcdTAwM2VmaXhfc29jX3Jlc2V0ID0gbG9vbmdzb25fZHdtYWNfZml4X3Jlc2V0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6NTM4OlxcdHBsYXQtXFx1MDAzZXN1c3BlbmQgPSBzdG1tYWNfcGNpX3BsYXRfc3VzcGVuZDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjUzOTpcXHRwbGF0LVxcdTAwM2VyZXN1bWUgPSBzdG1tYWNfcGNpX3BsYXRfcmVzdW1lO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTQwLVxcdGxkLVxcdTAwM2VkZXYgPSBcXHUwMDI2cGRldi1cXHUwMDNlZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01NDItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo1NDM6XFx0aW5mbyA9IChzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvICopaWQtXFx1MDAzZWRyaXZlcl9kYXRhO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTQ0LVxcdHJldCA9IGluZm8tXFx1MDAzZXNldHVwKHBkZXYsIHBsYXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM9MTg4PXN0YXRpYyBpbnQgbW90b3Jjb21tX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmJzcF9wcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMTkyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjE5MzpcXHRyZXQgPSBzdG1tYWNfcGNpX3BsYXRfcmVzdW1lKGRldiwgYnNwX3ByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTE5NC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM9MjA4PW1vdG9yY29tbV9kZWZhdWx0X3BsYXRfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTI0OC1cXHRwbGF0LVxcdTAwM2Vjb3JlX3R5cGVcXHRcXHQ9IERXTUFDX0NPUkVfR01BQzQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MjQ5OlxcdHBsYXQtXFx1MDAzZXN1c3BlbmRcXHRcXHQ9IHN0bW1hY19wY2lfcGxhdF9zdXNwZW5kO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTI1MC1cXHRwbGF0LVxcdTAwM2VyZXN1bWVcXHRcXHQ9IG1vdG9yY29tbV9yZXN1bWU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmMtMTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5jOjEyOmludCBzdG1tYWNfcGNpX3BsYXRfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmJzcF9wcml2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuYy0xMy17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmMtMjUtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuYzoyNjpFWFBPUlRfU1lNQk9MX0dQTChzdG1tYWNfcGNpX3BsYXRfc3VzcGVuZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5jLTI3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuYzoyODppbnQgc3RtbWFjX3BjaV9wbGF0X3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmJzcF9wcml2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuYy0yOS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmMtNDMtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuYzo0NDpFWFBPUlRfU1lNQk9MX0dQTChzdG1tYWNfcGNpX3BsYXRfcmVzdW1lKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmMtNDUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmgtOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmg6OTppbnQgc3RtbWFjX3BjaV9wbGF0X3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpic3BfcHJpdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5oOjEwOmludCBzdG1tYWNfcGNpX3BsYXRfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqYnNwX3ByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuaC0xMS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTk6c3RydWN0IHN0bW1hY19wY2lfaW5mbyB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIwLVxcdGludCAoKnNldHVwKShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0zMz1zdGF0aWMgaW50IHN0bW1hY19kZWZhdWx0X2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtNDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjUwOnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHN0bW1hY19wY2lfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtNTEtXFx0LnNldHVwID0gc3RtbWFjX2RlZmF1bHRfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz01ND1zdGF0aWMgaW50IHNucHNfZ21hYzVfZGVmYXVsdF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEwMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTAyOnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHNucHNfZ21hYzVfcGNpX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEwMy1cXHQuc2V0dXAgPSBzbnBzX2dtYWM1X2RlZmF1bHRfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xMDYtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjEwNzogKiBzdG1tYWNfcGNpX3Byb2JlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEwOC0gKlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTExNy0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTE4OnN0YXRpYyBpbnQgc3RtbWFjX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTE5LVxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEyMC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjEyMTpcXHRzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvICppbmZvID0gKHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gKilpZC1cXHUwMDNlZHJpdmVyX2RhdGE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEyMi1cXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTc5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxODA6XFx0cGxhdC1cXHUwMDNlc3VzcGVuZCA9IHN0bW1hY19wY2lfcGxhdF9zdXNwZW5kO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxODE6XFx0cGxhdC1cXHUwMDNlcmVzdW1lID0gc3RtbWFjX3BjaV9wbGF0X3Jlc3VtZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTgyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE4Ni0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTg3OiAqIHN0bW1hY19wY2lfcmVtb3ZlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE4OC0gKlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE5MS0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTkyOnN0YXRpYyB2b2lkIHN0bW1hY19wY2lfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xOTMte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTIwMz1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgc3RtbWFjX2lkX3RhYmxlW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIwNDpcXHR7IFBDSV9ERVZJQ0VfREFUQShTVE1NQUMsIFNUTU1BQywgXFx1MDAyNnN0bW1hY19wY2lfaW5mbykgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjA1OlxcdHsgUENJX0RFVklDRV9EQVRBKFNUTUlDUk8sIE1BQywgXFx1MDAyNnN0bW1hY19wY2lfaW5mbykgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjA2LVxcdHsgUENJX0RFVklDRV9EQVRBKFNZTk9QU1lTLCBHTUFDNV9JRCwgXFx1MDAyNnNucHNfZ21hYzVfcGNpX2luZm8pIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MjEwPU1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBzdG1tYWNfaWRfdGFibGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIxMjpzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgc3RtbWFjX3BjaV9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIxMy1cXHQubmFtZSA9IFNUTU1BQ19SRVNPVVJDRV9OQU1FLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMTQtXFx0LmlkX3RhYmxlID0gc3RtbWFjX2lkX3RhYmxlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMTU6XFx0LnByb2JlID0gc3RtbWFjX3BjaV9wcm9iZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjE2OlxcdC5yZW1vdmUgPSBzdG1tYWNfcGNpX3JlbW92ZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjE3LVxcdC5kcml2ZXIgICAgICAgICA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIyMjptb2R1bGVfcGNpX2RyaXZlcihzdG1tYWNfcGNpX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIyMy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDQ6NTI6MDAuODgwMTMwNzQ2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjgzOTU4MDg1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIFNUTU1BQyBEcml2ZXIgYW5kIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlIGBzdG1tYWNgIGRyaXZlciBhbmQgdGhlIGBzdG1tYWNfcGNpLmNgIFBDSSB3cmFwcGVyLCB3aGljaCByZWdpc3RlcnMgdGhlIFBDSSBkcml2ZXIuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIkNhbiB3ZSBmdXp6IHRoaXMgaW4gUUVNVT9cIi4gU3l6a2FsbGVyIGlzIHRoZSBvYnZpb3VzIHRvb2wsIGFuZCBpdCBvZnRlbiBoYW5kbGVzIFBDSSBkZXZpY2VzIGJ5IGVpdGhlciBlbXVsYXRpbmcgdGhlbSB3aXRoIGBzeXpfcGNpX3NldHVwYCBvciB1c2luZyB2aXJ0dWFsIGRldmljZXMgaWYgdGhleSdyZSBub3Qgc3RhbmRhcmQgUUVNVSBjb21wb25lbnRzLiBUaGUga2V5IGhlcmUgaXMsIGlzIGBzdG1tYWNgIHN0YW5kYXJkPyBObywgaXQncyBub3QgYSBzdGFuZGFyZCBRRU1VIGRldmljZS4gQnV0LCBTeXprYWxsZXIgKmRvZXMqIGhhdmUgdGhpcyB2aXJ0dWFsIFBDSSBkZXZpY2UgZnV6emVyLi4uIHNvIG1heWJlP1xuXG5UaGVuIEkgdGhpbmssIFwiSGFzIFN5emthbGxlciBhbHJlYWR5IHRhY2tsZWQgYHN0bW1hY2A/XCIuIEkgc2VlIGEgY29tbWl0IG1lc3NhZ2UgbWVudGlvbmluZyBgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3YCwgd2hpY2ggc3Ryb25nbHkgc3VnZ2VzdHMgc29tZW9uZSdzIHN1Ym1pdHRlZCBhIHBhdGNoIHRvIFN5emthbGxlciBzcGVjaWZpY2FsbHkgZm9yIHRoaXMgZHJpdmVyLCBvciBhdCBsZWFzdCB0aGV5J3JlIHRlc3RpbmcgaXQuXG5cbldhaXQsIG5vdyBJJ20gcmVhZGluZyB0aGUgb3JpZ2luYWwgcHJvbXB0LCBhbmQgaXQgbWVudGlvbnMgYXZvaWRpbmcgZnV6emluZyBvZiBzcGVjaWZpYyB2ZW5kb3Itc3BlY2lmaWMgUENJZSBkZXZpY2VzIGxpa2UgU21hcnROSUNzLCBHUFVzLCBhbmQgUENJZSBzd2l0Y2hlcy4uLiBpcyBgc3RtbWFjYCBvbmUgb2YgdGhvc2U/IE5vLCB0aGF0J3Mgbm90IHJpZ2h0LiBJdCdzIGEgc3RhbmRhcmQgRXRoZXJuZXQgTUFDIGRyaXZlciwgRGVzaWduV2FyZSBNQUMsIHdoaWNoIGlzIHF1aXRlIGNvbW1vbiwgc28gdGhhdCdzIGEgbm8gb24gdGhlIGV4Y2x1c2lvbiBjbGF1c2UuXG5cbkFoLCB0aGUgcGF0Y2ggaXRzZWxmIGlzIGZvY3VzZWQgb24gYHN0bW1hY194ZHBfcmVsZWFzZWAgYW5kIGBzdG1tYWNfeGRwX29wZW5gLiBUaGVzZSBhcmUgWERQIChlQlBGKSByZWxhdGVkIGZ1bmN0aW9ucy4gTm93IEknbSB0aGlua2luZywgXCJJcyBgc3RtbWFjX3hkcF9vcGVuYCByZWFjaGFibGU/XCIuIEl0IGxvb2tzIGxpa2UgaXQgZ2V0cyBjYWxsZWQgd2hlbiB3ZSBhdHRhY2ggb3IgZGV0YWNoIGFuIFhEUCBwcm9ncmFtLCBvciB3aGVuIHRoZSBpbnRlcmZhY2UgaXMgYnJvdWdodCB1cCB3aXRoIFhEUC4gU28sIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjYWxsIHBhdGhzIHRvIGBzdG1tYWNfeGRwX29wZW5gLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTc0OSwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwNDo1MjowNy43MTk3MTQxOTlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjMxODQzMjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RtbWFjX3hkcF9vcGVuXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaD00MDc9dm9pZCBzdG1tYWNfcHRwX3VucmVnaXN0ZXIoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaDo0MDg6aW50IHN0bW1hY194ZHBfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaC00MDktdm9pZCBzdG1tYWNfeGRwX3JlbGVhc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTcxNDE9dm9pZCBzdG1tYWNfeGRwX3JlbGVhc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzE3NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjcxNzU6aW50IHN0bW1hY194ZHBfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzE3Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmM9MTAyPWludCBzdG1tYWNfeGRwX3NldF9wcm9nKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgc3RydWN0IGJwZl9wcm9nICpwcm9nLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jLTEzNC1cXHRpZiAoaWZfcnVubmluZyBcXHUwMDI2XFx1MDAyNiBuZWVkX3VwZGF0ZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmM6MTM1OlxcdFxcdHN0bW1hY194ZHBfb3BlbihkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYy0xMzYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA0OjUyOjA3Ljc4MjkwMzg0NVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg2NDg5MTg0MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYHN0bW1hY2AgRHJpdmVyJ3MgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBzbyBgc3RtbWFjX3hkcF9vcGVuYCBpcyBjYWxsZWQgYnkgYHN0bW1hY194ZHBfc2V0X3Byb2dgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgY2FuIEkgZXZlbiByZWFjaCB0aGlzIHRoaW5nIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IFFFTVUsIGJ5IGRlZmF1bHQsIGRvZXNuJ3QgZW11bGF0ZSBgc3RtbWFjYC4gSG93ZXZlciwgSSByZWNhbGwgUUVNVSAqZG9lcyogaGF2ZSBlbXVsYXRlZCBuZXR3b3JrIGhhcmR3YXJlIGluIHBsYWNlcyBsaWtlIGBody9uZXQvaW14X2ZlYy5jYCwgYGh3L25ldC9jYWRlbmNlX2dlbS5jYCwgYW5kIHNldmVyYWwgb3RoZXJzLiBEb2VzIGl0ICphbHNvKiBlbXVsYXRlIERlc2lnbldhcmUgTUFDcywgd2hpY2ggaXMgd2hhdCBgc3RtbWFjYCBkcml2ZXM/IFllcyEgUUVNVSAqZG9lcyogZW11bGF0ZSB0aGUgYGRlc2lnbndhcmVgIE1BQywgc3BlY2lmaWNhbGx5IGluIGBody9uZXQvZGVzaWdud2FyZS5jYC4gVGhhdCdzIHRoZSBrZXkuXG5cbkxldCBtZSBjb25maXJtIHF1aWNrbHk6IFFFTVUncyBgaHcvbmV0L2Rlc2lnbndhcmUuY2AgZW11bGF0ZXMgdGhlIFN5bm9wc3lzIERlc2lnbldhcmUgMTAvMTAwLzEwMDAgRXRoZXJuZXQgTUFDLCB3aGljaCBpcyAqZXhhY3RseSogd2hhdCBgc3RtbWFjYCBpbnRlcmFjdHMgd2l0aC4gVGhpcyBpcyBwcm9taXNpbmcuXG5cbk5vdywgY29uc2lkZXJpbmcgZnV6emluZywgc3l6a2FsbGVyIGhhcyBgc3l6X3VzYl9jb25uZWN0YCBmb3IgVVNCIGFuZCBgc3l6X3BjaV9zZXR1cGAgZm9yIFBDSS4gYHN0bW1hY2AgaXMgb2Z0ZW4gYSBwbGF0Zm9ybSBkZXZpY2UsIGJ1dCBzeXprYWxsZXIgKmNhbiogZnV6eiBwbGF0Zm9ybSBkZXZpY2VzIGlmIHRoZXkncmUgaW5zdGFudGlhdGVkIHRocm91Z2ggdGhlIGRldmljZSB0cmVlIG9yLCBpbXBvcnRhbnRseSwgaWYgdGhleSdyZSBQQ0kgZGV2aWNlcy4gQW5kIHdhaXQuLi4gYHN0bW1hY19wY2lgICppcyogYSBQQ0kgZHJpdmVyISBTeXprYWxsZXIncyBQQ0kgZnV6emVyIGNhbiBwb3RlbnRpYWxseSBpbnN0YW50aWF0ZSBpdCEgVGhpcyBpcyBleGNlbGxlbnQgbmV3cy5cblxuVGhlIHBhdGNoIGl0c2VsZiBpcyBtb2RpZnlpbmcgYHN0bW1hY19kaXNhYmxlX2FsbF9kbWFfaXJxYCwgYHN0bW1hY19zeW5jaHJvbml6ZV9pcnFgLCBgc3RtbWFjX3hkcF9yZWxlYXNlYCwgYW5kIGBzdG1tYWNfeGRwX29wZW5gLiBUaGVzZSBhcmUga2VybmVsIGZ1bmN0aW9uYWwgY2hhbmdlcywgYW5kIHRoaXMgaXMgcHJpbWUgZnV6emluZyB0ZXJyaXRvcnkuXG5cbklzIHRoaXMgd29ydGggdGhlIGVmZm9ydD8gQWJzb2x1dGVseS4gVGhlIGZvY3VzIHN5bWJvbHMgYXJlIGNsZWFybHk6IGBzdG1tYWNfeGRwX29wZW5gLCBgc3RtbWFjX3hkcF9yZWxlYXNlYCwgYHN0bW1hY19kaXNhYmxlX2FsbF9kbWFfaXJxYCwgYW5kIGBzdG1tYWNfc3luY2hyb25pemVfaXJxYC4gV2FpdCBhIHNlY29uZCB0aG91Z2gsIGBzdG1tYWNfZGlzYWJsZV9hbGxfZG1hX2lycWAgYW5kIGBzdG1tYWNfc3luY2hyb25pemVfaXJxYCBhcmUgc3RhdGljIGZ1bmN0aW9ucy4gSSdsbCBuZWVkIHRvIGNoZWNrIGlmIHRoZXkncmUgaW5saW5lZCBvciBhY2Nlc3NpYmxlIGluIGEgd2F5IHRoYXQgYWxsb3dzIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzMDQxLCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTA4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA0OjUyOjE2LjQzMTg1NzIwNVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDg4OTk5NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfZGlzYWJsZV9hbGxfZG1hX2lycVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0yNTE3PXN0YXRpYyB2b2lkIHN0bW1hY19lbmFibGVfYWxsX2RtYV9pcnEoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yNTMzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjUzNDpzdGF0aWMgdm9pZCBzdG1tYWNfZGlzYWJsZV9hbGxfZG1hX2lycShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yNTM1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzE0MT12b2lkIHN0bW1hY194ZHBfcmVsZWFzZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MTU1LVxcdC8qIFNpbGVuY2UgRE1BIGludGVycnVwdHMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjcxNTY6XFx0c3RtbWFjX2Rpc2FibGVfYWxsX2RtYV9pcnEocHJpdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MTU3LVxcdHN0bW1hY19zeW5jaHJvbml6ZV9pcnEoZGV2KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDQ6NTI6MTYuNDkyNzUyMjgxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQyNDkzOTA1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkFuYWx5emluZyBTdGF0aWMgRnVuY3Rpb25zIGFuZCBQb3RlbnRpYWwgWERQIEludGVyYWN0aW9ucyBpbiB0aGUgU1RNTUFDIERyaXZlcioqXG5cbkFscmlnaHQsIHNvIHRoZSBjb3JlIG9mIHdoYXQgSSdtIGxvb2tpbmcgYXQgaGVyZSBpcyB0aGUgaW50ZXJhY3Rpb24gb2YgWERQIChlWHByZXNzIERhdGEgUGF0aCkgd2l0aCB0aGUgU1RNTUFDIGRyaXZlci4gVGhlIG5vdGVzIG1ha2UgaXQgY2xlYXIgdGhhdCB0aGUgZnVuY3Rpb25zIHRoYXQgYXJlIGRlY2xhcmVkIHN0YXRpYyBhcmUgaW5saW5lZCwgc28gSSB3b24ndCBuZWVkIHRvIGRpZyBpbnRvIHRob3NlLiBNeSBmb2N1cyB0aGVuIHNoaWZ0cyB0byB0aGUgbm9uLXN0YXRpYyBmdW5jdGlvbnMgcmVsYXRlZCB0byBYRFAuXG5cblRoZSBrZXkgcGxheWVycyBoZXJlIGFyZSBgc3RtbWFjX3hkcF9yZWxlYXNlYCwgYHN0bW1hY194ZHBfb3BlbmAsIGFuZCwganVzdCB0byBiZSB0aG9yb3VnaCwgSSBzaG91bGQgcmVhbGx5IHNjcnV0aW5pemUgYHN0bW1hY194ZHBfc2V0X3Byb2dgIGFzIHdlbGwuIFVuZGVyc3RhbmRpbmcgaG93IHRoZXNlIHRocmVlIGZ1bmN0aW9ucyBoYW5kbGUgWERQIHByb2dyYW0gbWFuYWdlbWVudCBhbmQgZHJpdmVyIGludGVyYWN0aW9uIGlzIGNyaXRpY2FsLiBNeSBndXQgdGVsbHMgbWUgdGhlc2UgZnVuY3Rpb25zIGFyZSBsaWtlbHkgdG8gYmUgcmVzcG9uc2libGUgZm9yIGxvYWRpbmcsIHVubG9hZGluZywgYW5kIHNldHRpbmcgdGhlIFhEUCBwcm9ncmFtLiBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZWlyIGltcGxlbWVudGF0aW9uIGRldGFpbHMgdG8gZnVsbHkgZ3Jhc3AgdGhlIFhEUCBpbnRlZ3JhdGlvbi4gUGVyaGFwcyB0aGVyZSdzIGFuIGlzc3VlIHRoZXJlP1xuXG5cbiIsIklucHV0VG9rZW5zIjoxNDQ4NSwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA0OjUyOjE5LjkxNzY5Mzk4N1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjY2NTk5MzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RtbWFjX3hkcF9zZXRfcHJvZ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz02OTgzPXN0YXRpYyBpbnQgc3RtbWFjX2JwZihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmV0ZGV2X2JwZiAqYnBmKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02OTg4LVxcdGNhc2UgWERQX1NFVFVQX1BST0c6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo2OTg5OlxcdFxcdHJldHVybiBzdG1tYWNfeGRwX3NldF9wcm9nKHByaXYsIGJwZi1cXHUwMDNlcHJvZywgYnBmLVxcdTAwM2VleHRhY2spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjk5MC1cXHRjYXNlIFhEUF9TRVRVUF9YU0tfUE9PTDpcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYz05NT1pbnQgc3RtbWFjX3hkcF9zZXR1cF9wb29sKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmMtMTAxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYzoxMDI6aW50IHN0bW1hY194ZHBfc2V0X3Byb2coc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jLTEwMy1cXHRcXHRcXHRzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmg9OT1pbnQgc3RtbWFjX3hkcF9zZXR1cF9wb29sKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5oLTEwLVxcdFxcdFxcdCAgdTE2IHF1ZXVlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmg6MTE6aW50IHN0bW1hY194ZHBfc2V0X3Byb2coc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5oLTEyLVxcdFxcdFxcdHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA0OjUyOjE5Ljk4NDM2MDY3M1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzcyNzA5NzUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU1RNTUFDIFhEUCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgXCJBaGEhIGBzdG1tYWNfeGRwX3NldF9wcm9nYCBpcyBleHBvc2VkIGFuZCByZWFjaGFibGUgdGhyb3VnaCBgc3RtbWFjX2JwZmAuXCIgVGhhdCdzIHRoZSBlbnRyeSBwb2ludCwgdGhlIGNyaXRpY2FsIHBpZWNlIGhlcmUuIEJ1dCBob2xkIG9uLCB0aGUgcGF0Y2ggdG91Y2hlcyBgc3RtbWFjX3hkcF9yZWxlYXNlYCBhbmQgYHN0bW1hY194ZHBfb3BlbmAgYXMgd2VsbC4gUmlnaHQsIG9mIGNvdXJzZSwgdGhlc2UgYXJlIHJlbGF0ZWQgbGlmZWN5Y2xlIGZ1bmN0aW9ucy4gVGhlcmVmb3JlLCB0byBlbnN1cmUgSSBoYXZlIGZ1bGwgY29udGV4dCwgSSBuZWVkIHRvIGluY2x1ZGUgYHN0bW1hY194ZHBfcmVsZWFzZWAsIGBzdG1tYWNfeGRwX29wZW5gLCBgc3RtbWFjX3hkcF9zZXRfcHJvZ2AsIGFuZCBgc3RtbWFjX2JwZmAgaW4gbXkgRm9jdXNTeW1ib2xzIGxpc3QuIFRoYXQgd2F5LCBJIGNhbiB0cmFjZSBldmVyeXRoaW5nLiBOb3csIGxldCdzIGNvbnNpZGVyIHRoZSBidWlsZCBlbnZpcm9ubWVudC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgYHN0bW1hY2AgZHJpdmVyIGlzIGNvbmZpZ3VyZWQgY29ycmVjdGx5IGZvciB0aGlzIGZ1bmN0aW9uYWxpdHkgdG8gZXZlbiBiZSByZWxldmFudC4gVGltZSB0byBjaGVjayB0aGUgS2NvbmZpZyBmaWxlcyBmb3IgdGhlIGBzdG1tYWNgIGRyaXZlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTUzODIsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDQ6NTI6MjQuNzU3MDczMDY1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDg0NDUzNDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNUTU1BQ19FVEhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI6Y29uZmlnIFNUTU1BQ19FVEhcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlNUTWljcm9lbGVjdHJvbmljcyBNdWx0aS1HaWdhYml0IEV0aGVybmV0IGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDQ6NTI6MjQuODY1NTIyNzE4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzOTg0MzMzNDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOlxuXG4qKkludmVzdGlnYXRpbmcgU1RNTUFDIERyaXZlciBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGluLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGZvciB0aGUgU1RNTUFDIEV0aGVybmV0IGRyaXZlci4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gY2hlY2sgdGhlIGBLY29uZmlnYCBmaWxlIHdpdGhpbiB0aGUgZHJpdmVyJ3MgZGlyZWN0b3J5LiBTcGVjaWZpY2FsbHksIEknbSBoZWFkaW5nIHN0cmFpZ2h0IGZvciBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ2AuIFRoaXMgZmlsZSBpcyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgd2hpY2ggb3RoZXIgbW9kdWxlcywgZmVhdHVyZXMsIG9yIGNvbmZpZ3VyYXRpb25zIGFyZSByZXF1aXJlZCBvciBvcHRpb25hbCB3aGVuIGJ1aWxkaW5nIGFuZCBpbmNsdWRpbmcgdGhlIFNUTU1BQyBkcml2ZXIgaW4gYSBrZXJuZWwgY29uZmlndXJhdGlvbi4gSSdtIGV4cGVjdGluZyB0byBmaW5kIGNvbmRpdGlvbmFsIGRlcGVuZGVuY2llcyBvbiBvdGhlciBkcml2ZXJzLCBoYXJkd2FyZSBwbGF0Zm9ybXMsIG9yIHNwZWNpZmljIGZlYXR1cmVzIHJlbGF0ZWQgdG8gdGhlIFNUTWljcm8gRXRoZXJuZXQgTUFDIGNvbnRyb2xsZXJzLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIHByb3BlciBjb250ZXh0IGJlZm9yZSBJIHByb2NlZWQgd2l0aCBhbnkgZnVydGhlciBpbnZlc3RpZ2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTg5MSwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA0OjUyOjI4LjI2Mzk1ODMyNloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MjQ2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIFNUTU1BQ19FVEhcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIEhBU19JT01FTSBcXHUwMDI2XFx1MDAyNiBIQVNfRE1BXFxuICAgNTpcXHRcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuICAgNjpcXHRcXHRkZXBlbmRzIG9uIEVUSFRPT0xfTkVUTElOS1xcbiAgIDc6XFx0XFx0c2VsZWN0IE1JSVxcbiAgIDg6XFx0XFx0c2VsZWN0IFBDU19YUENTXFxuICAgOTpcXHRcXHRzZWxlY3QgUEFHRV9QT09MXFxuICAxMDpcXHRcXHRzZWxlY3QgUEhZTElOS1xcbiAgMTE6XFx0XFx0c2VsZWN0IENSQzMyXFxuICAxMjpcXHRcXHRzZWxlY3QgUkVTRVRfQ09OVFJPTExFUlxcbiAgMTM6XFx0XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuICAxNDpcXHRcXHRoZWxwXFxuICAxNTpcXHRcXHQgIFRoaXMgaXMgdGhlIGRyaXZlciBmb3IgdGhlIEV0aGVybmV0IElQcyBidWlsdCBhcm91bmQgYVxcbiAgMTY6XFx0XFx0ICBTeW5vcHN5cyBJUCBDb3JlLlxcbiAgMTc6XFx0XFxuICAxODpcXHRpZiBTVE1NQUNfRVRIXFxuICAxOTpcXHRcXG4gIDIwOlxcdGNvbmZpZyBTVE1NQUNfU0VMRlRFU1RTXFxuICAyMTpcXHRcXHRib29sIFxcXCJTdXBwb3J0IGZvciBTVE1NQUMgU2VsZnRlc3RzXFxcIlxcbiAgMjI6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUXFxuICAyMzpcXHRcXHRkZWZhdWx0IG5cXG4gIDI0OlxcdFxcdGhlbHBcXG4gIDI1OlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIFNUTU1BQyBTZWxmdGVzdHMgdXNpbmcgZXRodG9vbC4gRW5hYmxlIHRoaXNcXG4gIDI2OlxcdFxcdCAgZmVhdHVyZSBpZiB5b3UgYXJlIGZhY2luZyBwcm9ibGVtcyB3aXRoIHlvdXIgSFcgYW5kIHN1Ym1pdCB0aGUgdGVzdFxcbiAgMjc6XFx0XFx0ICByZXN1bHRzIHRvIHRoZSBuZXRkZXYgTWFpbGluZyBMaXN0LlxcbiAgMjg6XFx0XFxuICAyOTpcXHRjb25maWcgU1RNTUFDX1BMQVRGT1JNXFxuICAzMDpcXHRcXHR0cmlzdGF0ZSBcXFwiU1RNTUFDIFBsYXRmb3JtIGJ1cyBzdXBwb3J0XFxcIlxcbiAgMzE6XFx0XFx0c2VsZWN0IE1GRF9TWVNDT05cXG4gIDMyOlxcdFxcdGRlZmF1bHQgeVxcbiAgMzM6XFx0XFx0aGVscFxcbiAgMzQ6XFx0XFx0ICBUaGlzIHNlbGVjdHMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGJ1cyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cXG4gIDM1OlxcdFxcdCAgVGhpcyBpcyB0aGUgZHJpdmVyIHVzZWQgb24gc2V2ZXJhbCBTb0NzOlxcbiAgMzY6XFx0XFx0ICBTVGksIEFsbHdpbm5lciwgQW1sb2dpYyBNZXNvbiwgQWx0ZXJhIFNPQ0ZQR0EuXFxuICAzNzpcXHRcXG4gIDM4OlxcdFxcdCAgSWYgeW91IGhhdmUgYSBjb250cm9sbGVyIHdpdGggdGhpcyBpbnRlcmZhY2UsIHNheSBZIG9yIE0gaGVyZS5cXG4gIDM5OlxcdFxcbiAgNDA6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbiAgNDE6XFx0XFxuICA0MjpcXHRpZiBTVE1NQUNfUExBVEZPUk1cXG4gIDQzOlxcdFxcbiAgNDQ6XFx0Y29uZmlnIERXTUFDX0RXQ19RT1NfRVRIXFxuICA0NTpcXHRcXHR0cmlzdGF0ZSBcXFwiU3VwcG9ydCBmb3Igc25wcyxkd2MtcW9zLWV0aGVybmV0LnR4dCBEVCBiaW5kaW5nLlxcXCJcXG4gIDQ2OlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAgNDc6XFx0XFx0c2VsZWN0IE1JSVxcbiAgNDg6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiBIQVNfRE1BXFxuICA0OTpcXHRcXHRoZWxwXFxuICA1MDpcXHRcXHQgIFN1cHBvcnQgZm9yIGNoaXBzIHVzaW5nIHRoZSBzbnBzLGR3Yy1xb3MtZXRoZXJuZXQudHh0IERUIGJpbmRpbmcuXFxuICA1MTpcXHRcXG4gIDUyOlxcdGNvbmZpZyBEV01BQ19HRU5FUklDXFxuICA1MzpcXHRcXHR0cmlzdGF0ZSBcXFwiR2VuZXJpYyBkcml2ZXIgZm9yIERXTUFDXFxcIlxcbiAgNTQ6XFx0XFx0ZGVmYXVsdCBTVE1NQUNfUExBVEZPUk1cXG4gIDU1OlxcdFxcdGhlbHBcXG4gIDU2OlxcdFxcdCAgR2VuZXJpYyBEV01BQyBkcml2ZXIgZm9yIHBsYXRmb3JtcyB0aGF0IGRvbid0IHJlcXVpcmUgYW55XFxuICA1NzpcXHRcXHQgIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUgdG8gZnVuY3Rpb24gb3IgaXMgdXNpbmcgcGxhdGZvcm1cXG4gIDU4OlxcdFxcdCAgZGF0YSBmb3Igc2V0dXAuXFxuICA1OTpcXHRcXG4gIDYwOlxcdGNvbmZpZyBEV01BQ19BTkFSSU9OXFxuICA2MTpcXHRcXHR0cmlzdGF0ZSBcXFwiQWRhcHRydW0gQW5hcmlvbiBHTUFDIHN1cHBvcnRcXFwiXFxuICA2MjpcXHRcXHRkZWZhdWx0IEFSQ1xcbiAgNjM6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDIHx8IENPTVBJTEVfVEVTVClcXG4gIDY0OlxcdFxcdGhlbHBcXG4gIDY1OlxcdFxcdCAgU3VwcG9ydCBmb3IgQWRhcHRydW0gQW5hcmlvbiBHTUFDIEV0aGVybmV0IGNvbnRyb2xsZXIuXFxuICA2NjpcXHRcXG4gIDY3OlxcdFxcdCAgVGhpcyBzZWxlY3RzIHRoZSBBbmFyaW9uIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLlxcbiAgNjg6XFx0XFxuICA2OTpcXHRjb25maWcgRFdNQUNfRUlDNzcwMFxcbiAgNzA6XFx0XFx0dHJpc3RhdGUgXFxcIlN1cHBvcnQgZm9yIEVzd2luIGVpYzc3MDAgZXRoZXJuZXQgZHJpdmVyXFxcIlxcbiAgNzE6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiBIQVNfRE1BIFxcdTAwMjZcXHUwMDI2IEFSQ0hfRVNXSU4gfHwgQ09NUElMRV9URVNUXFxuICA3MjpcXHRcXHRoZWxwXFxuICA3MzpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSBFc3dpbiBFSUM3NzAwIEV0aGVybmV0IGNvbnRyb2xsZXIsXFxuICA3NDpcXHRcXHQgIHdoaWNoIGludGVncmF0ZXMgU3lub3BzeXMgRGVzaWduV2FyZSBRb1MgZmVhdHVyZXMuIEl0IGVuYWJsZXNcXG4gIDc1OlxcdFxcdCAgaGlnaC1zcGVlZCBuZXR3b3JraW5nIHdpdGggRE1BIGFjY2VsZXJhdGlvbiBhbmQgaXMgb3B0aW1pemVkXFxuICA3NjpcXHRcXHQgIGZvciBlbWJlZGRlZCBzeXN0ZW1zLlxcbiAgNzc6XFx0XFxuICA3ODpcXHRjb25maWcgRFdNQUNfSU5HRU5JQ1xcbiAgNzk6XFx0XFx0dHJpc3RhdGUgXFxcIkluZ2VuaWMgTUFDIHN1cHBvcnRcXFwiXFxuICA4MDpcXHRcXHRkZWZhdWx0IE1BQ0hfSU5HRU5JQ1xcbiAgODE6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiBIQVNfSU9NRU0gXFx1MDAyNlxcdTAwMjYgKE1BQ0hfSU5HRU5JQyB8fCBDT01QSUxFX1RFU1QpXFxuICA4MjpcXHRcXHRzZWxlY3QgTUZEX1NZU0NPTlxcbiAgODM6XFx0XFx0aGVscFxcbiAgODQ6XFx0XFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIEluZ2VuaWMgU29Dcy5cXG4gIDg1OlxcdFxcbiAgODY6XFx0XFx0ICBUaGlzIHNlbGVjdHMgSW5nZW5pYyBTb0NzIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hY1xcbiAgODc6XFx0XFx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIG9uIGZvciB0aGUgSW5nZW5pYyBTb0NzXFxuICA4ODpcXHRcXHQgIE1BQyBldGhlcm5ldCBjb250cm9sbGVyLlxcbiAgODk6XFx0XFxuICA5MDpcXHRjb25maWcgRFdNQUNfSVBRODA2WFxcbiAgOTE6XFx0XFx0dHJpc3RhdGUgXFxcIlFDQSBJUFE4MDZ4IERXTUFDIHN1cHBvcnRcXFwiXFxuICA5MjpcXHRcXHRkZWZhdWx0IEFSQ0hfUUNPTVxcbiAgOTM6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9RQ09NIHx8IENPTVBJTEVfVEVTVClcXG4gIDk0OlxcdFxcdHNlbGVjdCBNRkRfU1lTQ09OXFxuICA5NTpcXHRcXHRoZWxwXFxuICA5NjpcXHRcXHQgIFN1cHBvcnQgZm9yIFFDQSBJUFE4MDZYIERXTUFDIEV0aGVybmV0LlxcbiAgOTc6XFx0XFxuICA5ODpcXHRcXHQgIFRoaXMgc2VsZWN0cyB0aGUgSVBRODA2eCBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjXFxuICA5OTpcXHRcXHQgIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGRvZXMgbm90IHVzZSBhbnkgb2YgdGhlIGhhcmR3YXJlXFxuIDEwMDpcXHRcXHQgIGFjY2VsZXJhdGlvbiBmZWF0dXJlcyBhdmFpbGFibGUgb24gdGhpcyBTb0MuIE5ldHdvcmsgZGV2aWNlc1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwNDo1MjoyOC4yNjQwNTI3NzVaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE2NjQzODg2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmcm9tIG15IHBlcnNwZWN0aXZlOlxuXG4qKkRlYnVnZ2luZyBEcml2ZXIgQ29uZmlndXJhdGlvbiBmb3IgU3l6a2FsbGVyIEludGVncmF0aW9uKipcblxuQWxyaWdodCwgc28gd2UgbmVlZCB0byBnZXQgdGhpcyBgU1RNTUFDX1BDSWAgb3B0aW9uIGVuYWJsZWQuIFNwZWNpZmljYWxseSwgSSdtIHRoaW5raW5nIGFib3V0IG1ha2luZyBzdXJlIHRoZSBQQ0kgZHJpdmVyIGZvciB0aGUgU1RNTUFDIGV0aGVybmV0IGNvbnRyb2xsZXIgaXMgYXZhaWxhYmxlLiBUaGlzIGlzIGNydWNpYWwgYmVjYXVzZSBzeXprYWxsZXIsIHdoaWNoIHdlJ3JlIHVzaW5nIGZvciBmdXp6aW5nLCB3aWxsIGxpa2VseSBpbnRlcmFjdCB3aXRoIHRoZSBkcml2ZXIgdGhyb3VnaCB0aGUgUENJIGludGVyZmFjZS4gVGhlcmVmb3JlLCBgU1RNTUFDX1BDSWAgaGFzIHRvIGJlIGNvcnJlY3RseSBjb25maWd1cmVkLiBUaGUgbmV4dCBvYnZpb3VzIHN0ZXAgaXMgdG8gcXVpY2tseSBmaW5kIG91dCB3aGVyZSB0aGlzIHRoaW5nIGlzIGFjdHVhbGx5IGRlZmluZWQgd2l0aGluIHRoZSBrZXJuZWwgc291cmNlLiBObyBwb2ludCBpbiBndWVzc2luZzsgSSBuZWVkIHRoZSBhdXRob3JpdGF0aXZlIGxvY2F0aW9uIHRvIHVuZGVyc3RhbmQgaXRzIGRlcGVuZGVuY2llcyBhbmQgZW5zdXJlIGl0J3MgZW5hYmxlZCBhcHByb3ByaWF0ZWx5LiBMZXQncyBkaWcgaW4gYW5kIHRyYWNrIGRvd24gdGhlIGRlZmluaXRpb24gb2YgYFNUTU1BQ19QQ0lgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzUyNSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDQ6NTI6MzEuNDMwNDk2MDc3WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MjI1MjI5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgU1RNTUFDX1BDSVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zOTg9Y29uZmlnIERXTUFDX01PVE9SQ09NTVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo0MDc6Y29uZmlnIFNUTU1BQ19QQ0lcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwOC1cXHR0cmlzdGF0ZSBcXFwiU1RNTUFDIFBDSSBidXMgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDQ6NTI6MzEuNTEyNzU1MDYzWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMjc1NDc4MzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIGBTVE1NQUNfUENJYCBEZWZpbml0aW9uKipcblxuT2theSwgc28gSSdtIHByZXNlbnRlZCB3aXRoIGEgcmVmZXJlbmNlIHRvIGBTVE1NQUNfUENJYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiUmlnaHQsIGxldCdzIGdldCBpbnRvIHRoZSBzcGVjaWZpY3Mgb2YgdGhpcy5cIiBTaW5jZSBJJ20gd29ya2luZyBhdCB0aGlzIGxldmVsLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYXJjaGl0ZWN0dXJhbCBkZXRhaWxzLiBTbywgdGhlIGZpcnN0IHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIHRoZSBkZWZpbml0aW9uIGl0c2VsZi4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhpcyBzcGVjaWZpYyBjb25maWd1cmF0aW9uIHRpZXMgaW50byB0aGUgYnJvYWRlciBTVE1NQUMgKFNUTWljcm9lbGVjdHJvbmljcyBNZWRpYSBBY2Nlc3MgQ29udHJvbGxlcikgZWNvc3lzdGVtLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIGNsdWVzIGFib3V0IHRoZSBQQ0kgKFBlcmlwaGVyYWwgQ29tcG9uZW50IEludGVyY29ubmVjdCkgaW50ZXJmYWNlIGltcGxlbWVudGF0aW9uOiBIb3cgZG9lcyBpdCBtYW5hZ2UgbWVtb3J5IG1hcHBpbmc/IFdoYXQgYWJvdXQgaW50ZXJydXB0IGhhbmRsaW5nPyBBcmUgdGhlcmUgYW55IHNwZWNpZmljIGhhcmR3YXJlIHF1aXJrcyBvciBlcnJhdGEgSSBuZWVkIHRvIGJlIGF3YXJlIG9mIHdpdGhpbiB0aGlzIGNvbmZpZ3VyYXRpb24/IFRoaXMgaW5mb3JtYXRpb24gaXMgY3JpdGljYWwgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGJlaGF2aW9yIG9mIHRoZSBOSUMsIGl0cyBwZXJmb3JtYW5jZSBsaW1pdHMsIGFuZCBkZWJ1Z2dpbmcgYW55IHBvdGVudGlhbCBpc3N1ZXMgdGhhdCBtYXkgYXJpc2UgaW4gdGhpcyBzcGVjaWZpYyBzZXR1cC4gRXNzZW50aWFsbHksIEkgbmVlZCB0byBlc3RhYmxpc2ggYSBzb2xpZCwgY29uY3JldGUgdW5kZXJzdGFuZGluZyBvZiAqdGhpcyogcGFydGljdWxhciBpbnN0YW5jZSBvZiBhbiBTVE1NQUMgZHJpdmVyIGludGVyYWN0aW5nIHdpdGggdGhlIFBDSSBidXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3OTA1LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDQ6NTI6MzQuNzQwMzA1OTkxWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNjA1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQwMCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDQwMDpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiA0MDE6XFx0XFx0c2VsZWN0IE1PVE9SQ09NTV9QSFlcXG4gNDAyOlxcdFxcdHNlbGVjdCBTVE1NQUNfTElCUENJXFxuIDQwMzpcXHRcXHRoZWxwXFxuIDQwNDpcXHRcXHQgIFRoaXMgZW5hYmxlcyBnbHVlIGRyaXZlciBmb3IgTW90b3Jjb21tIERXTUFDLWJhc2VkIFBDSSBFdGhlcm5ldFxcbiA0MDU6XFx0XFx0ICBjb250cm9sbGVycy4gQ3VycmVudGx5IG9ubHkgWVQ2ODAxIGlzIHN1cHBvcnRlZC5cXG4gNDA2OlxcdFxcbiA0MDc6XFx0Y29uZmlnIFNUTU1BQ19QQ0lcXG4gNDA4OlxcdFxcdHRyaXN0YXRlIFxcXCJTVE1NQUMgUENJIGJ1cyBzdXBwb3J0XFxcIlxcbiA0MDk6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gNDEwOlxcdFxcdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xcbiA0MTE6XFx0XFx0c2VsZWN0IFNUTU1BQ19MSUJQQ0lcXG4gNDEyOlxcdFxcdGhlbHBcXG4gNDEzOlxcdFxcdCAgVGhpcyBzZWxlY3RzIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBidXMgc3VwcG9ydCBmb3IgdGhlIHN0bW1hYyBkcml2ZXIuXFxuIDQxNDpcXHRcXHQgIFRoaXMgZHJpdmVyIHdhcyB0ZXN0ZWQgb24gWExJTlggWEMyVjMwMDAgRkYxMTUyQU1UMDIyMVxcbiA0MTU6XFx0XFx0ICBEMTIxNTk5NEEgVklSVEVYIEZQR0EgYm9hcmQgYW5kIFNOUFMgUW9TIElQSyBQcm90b3R5cGluZyBLaXQuXFxuIDQxNjpcXHRcXG4gNDE3OlxcdFxcdCAgSWYgeW91IGhhdmUgYSBjb250cm9sbGVyIHdpdGggdGhpcyBpbnRlcmZhY2UsIHNheSBZIG9yIE0gaGVyZS5cXG4gNDE4OlxcdFxcbiA0MTk6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwNDo1MjozNC43NDA0MjUwNjFaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTY2NDc0MTM2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgU3RtbWFjIENvbmZpZ3VyYXRpb24gYW5kIFBhdGNoKipcblxuT2theSwgc28gbG9va2luZyBhdCB0aGlzLCBpdCBzZWVtcyB3ZSdyZSBkZWFsaW5nIHdpdGggYFNUTU1BQ19FVEhgIGFuZCBgU1RNTUFDX1BDSWAgY29uZmlndXJhdGlvbnMuIFRob3NlIGFyZSB0aGUga2V5IG9uZXMsIG5vIHF1ZXN0aW9uLiBIYW5nIG9uLCB0aG91Z2guIGBTVE1NQUNfRVRIYCBpcyBkZXBlbmRlbnQgb24gYEhBU19JT01FTWAsIGBIQVNfRE1BYCwgYFBUUF8xNTg4X0NMT0NLX09QVElPTkFMYCwgYW5kIGBFVEhUT09MX05FVExJTktgLiBUaG9zZSBhcmUgYWxsIHByZXR0eSBzdGFuZGFyZCBkZXBlbmRlbmNpZXMsIG5vdGhpbmcgb3V0IG9mIHRoZSBvcmRpbmFyeS4gQWxyaWdodCwgSSdsbCBhZGQgYFNUTU1BQ19FVEhgIGFuZCBgU1RNTUFDX1BDSWAgdG8gYEVuYWJsZUNvbmZpZ3NgIHRvIG1ha2Ugc3VyZSB0aG9zZSBnZXQgc2V0IHByb3Blcmx5LlxuXG5Ob3csIEkgbmVlZCB0byB0YWtlIGFub3RoZXIgbG9vayBhdCB0aGlzIHBhdGNoIGFuZCByZWFsbHkgemVybyBpbiBvbiB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zLiBJdCBsb29rcyBsaWtlIGl0IHRvdWNoZXMgYHN0bW1hY19kaXNhYmxlX2FsbF9kbWFfaXJxYCB3aGljaCBpcyBzdGF0aWMsIGFuZCB0aGVuIGBzdG1tYWNfc3luY2hyb25pemVfaXJxYCB3aGljaCBpcyBhbHNvIHN0YXRpYy4gVGhlc2UgYXJlIGludGVybmFsIGZ1bmN0aW9ucy4gSG93ZXZlciwgYHN0bW1hY194ZHBfcmVsZWFzZWAgYW5kIGBzdG1tYWNfeGRwX29wZW5gIGFyZSBub24tc3RhdGljIGFuZCB0aG9zZSBhcmUgdGhlIGVudHJ5IHBvaW50cyBmb3IgdGhlIG1vZGlmaWVkIGxvZ2ljLiBUaG9zZSBhcmUgdGhlIG9uZXMgSSByZWFsbHkgbmVlZCB0byBmb2N1cyBvbi4gU28sIEkgd2lsbCBhZGQgYHN0bW1hY194ZHBfcmVsZWFzZWAgYW5kIGBzdG1tYWNfeGRwX29wZW5gIHRvIGBGb2N1c1N5bWJvbHNgLiBBbmQgSSBzaG91bGQgcHJvYmFibHkgaW5jbHVkZSBgc3RtbWFjX3hkcF9zZXRfcHJvZ2AgYW5kIGBzdG1tYWNfYnBmYCBzaW5jZSB0aGV5J3JlIGNhbGxpbmcgYHN0bW1hY194ZHBfb3BlbmAuIEJ1dCB3YWl0LCBkb2VzIGBzdG1tYWNfeGRwX3JlbGVhc2VgIGFsc28gZ2V0IGNhbGxlZCBmcm9tIGBzdG1tYWNfeGRwX3NldF9wcm9nYD8gSSBzaG91bGQgcHJvYmFibHkgZG91YmxlIGNoZWNrIHRoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4NTE4LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzM5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDQ6NTI6NDAuNDA1MTcxMjU3WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2OTAyNTU3NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfeGRwX3JlbGVhc2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oPTQwOD1pbnQgc3RtbWFjX3hkcF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oOjQwOTp2b2lkIHN0bW1hY194ZHBfcmVsZWFzZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaC00MTAtaW50IHN0bW1hY19nZXRfcGh5X2ludGZfc2VsKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03MTAzPXZvaWQgc3RtbWFjX2VuYWJsZV90eF9xdWV1ZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHUzMiBxdWV1ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzE0MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjcxNDE6dm9pZCBzdG1tYWNfeGRwX3JlbGVhc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTcxNDIte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jPTEwMj1pbnQgc3RtbWFjX3hkcF9zZXRfcHJvZyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYy0xMjQtXFx0aWYgKGlmX3J1bm5pbmcgXFx1MDAyNlxcdTAwMjYgbmVlZF91cGRhdGUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jOjEyNTpcXHRcXHRzdG1tYWNfeGRwX3JlbGVhc2UoZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmMtMTI2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwNDo1Mjo0MC40NzQyMDE3NDNaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAyNzUxMjc0NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBUYXJnZXRzIGluIHRoZSBTVE1NQUMgRXRoZXJuZXQgRHJpdmVyOiBYRFAgSGFuZGxpbmcqKlxuXG5Pa2F5LCBzbyBoZXJlJ3MgdGhlIHRob3VnaHQgcHJvY2VzczogSSd2ZSB0cmFjZWQgdGhlIGNvZGUgYW5kIGNvbmZpcm1lZCB0aGF0IGBzdG1tYWNfeGRwX3JlbGVhc2VgIGlzIGluZGVlZCBjYWxsZWQgZnJvbSBgc3RtbWFjX3hkcF9zZXRfcHJvZ2AuIFRoZSBjYWxsIGNoYWluIGlzIGNsZWFyOiBgc3RtbWFjX2JwZmAgLVx1MDAzZSBgc3RtbWFjX3hkcF9zZXRfcHJvZ2AgLVx1MDAzZSBgc3RtbWFjX3hkcF9yZWxlYXNlYCAvIGBzdG1tYWNfeGRwX29wZW5gLiBUaGF0IGltbWVkaWF0ZWx5IHNjcmVhbXMgXCJmdXp6aW5nIHRhcmdldHMsXCIgZXNwZWNpYWxseSBnaXZlbiB0aGUgWERQIGNvbnRleHQuXG5cbkkgZG91YmxlLWNoZWNrZWQ7IGBzdG1tYWNfeGRwX3JlbGVhc2VgIGFuZCBgc3RtbWFjX3hkcF9vcGVuYCBhcmVuJ3Qgc3RhdGljOyB0aGV5J3JlIGRlZmluZWQgaW4gYHN0bW1hY19tYWluLmNgIGFuZCBkZWNsYXJlZCBpbiBgc3RtbWFjLmhgLiBQZXJmZWN0LCB0aGF0IG1lYW5zIHRoZXkgaGF2ZSBkaXN0aW5jdCBzeW1ib2xzIGFuZCBhcmUgYWNjZXNzaWJsZSB0byBzeXprYWxsZXIuXG5cbkNvbmZpZ3VyYXRpb24td2lzZSwgSSdtIHRoaW5raW5nIGBTVE1NQUNfRVRIYCBhbmQgYFNUTU1BQ19QQ0lgIGFyZSBnb2luZyB0byBiZSBuZWNlc3NhcnkuIGBCUEZfU1lTQ0FMTGAgaXMgdXN1YWxseSBlbmFibGVkIGJ5IGRlZmF1bHQgaW4gZnV6emluZyBlbnZpcm9ubWVudHMgYnV0IHNpbmNlIFhEUCBpcyBzdGFuZGFyZCBuZXR3b3JraW5nLCBsZXQncyBrZWVwIGl0IGNsZWFuLlxuXG5TbywgaGVyZSdzIHRoZSBzdW1tYXJ5OlxuXG5Xb3J0aEZ1enppbmc6IGB0cnVlYFxuUmVhc29uaW5nOiBUaGlzIHBhdGNoIHJlcHJlc2VudHMgYSBzaWduaWZpY2FudCBjaGFuZ2UgaW4gaG93IHRoZSBzdG1tYWMgRXRoZXJuZXQgZHJpdmVyIGhhbmRsZXMgWERQLiBTcGVjaWZpY2FsbHksIGl0IGFsdGVycyB0aGUgWERQIG9wZW4gYW5kIHJlbGVhc2UgcGF0aHMsIGRpc2FibGluZyBhbmQgc3luY2hyb25pemluZyBETUEgaW50ZXJydXB0cyByYXRoZXIgdGhhbiBmcmVlaW5nIHRoZW0uIFRoaXMgZml4ZXMgcG90ZW50aWFsIElSUSBoYW5kbGluZyBpc3N1ZXMuIFRoZSBkcml2ZXIgaXMgcmVhY2hhYmxlIHZpYSB0aGUgc3RtbWFjIFBDSSB3cmFwcGVyIHdoaWNoIGNhbiBiZSBlbXVsYXRlZCBieSBzeXprYWxsZXIuXG5Gb2N1c1N5bWJvbHM6IGBzdG1tYWNfeGRwX29wZW5gLCBgc3RtbWFjX3hkcF9yZWxlYXNlYCwgYHN0bW1hY194ZHBfc2V0X3Byb2dgLCBgc3RtbWFjX2JwZmBcbkVuYWJsZUNvbmZpZ3M6IGBTVE1NQUNfRVRIYCwgYFNUTU1BQ19QQ0lgXG5cbk5vdywgbGV0J3MgZ2V0IGludG8gdGhlIHNwZWNpZmljcyBvZiB3aGF0J3MgYmVlbiBjaGFuZ2VkLiBIb2xkIG9uLi4uIHdhaXQsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSdtIHJlbWVtYmVyaW5nIHRoaXMgcmlnaHQuIFJpZ2h0LCBgc3RtbWFjX2Rpc2FibGVfYWxsX2RtYV9pcnFgIGlzIGNhbGxlZCBmcm9tIGBzdG1tYWNfeGRwX3JlbGVhc2VgLCBub3QgYHN0bW1hY194ZHBfb3BlbmAuICBBbmQgeWVzLCBgc3RtbWFjX3hkcF9yZWxlYXNlYCBjYWxscyBgc3RtbWFjX2Rpc2FibGVfYWxsX2RtYV9pcnFgIGFuZCBgc3RtbWFjX3N5bmNocm9uaXplX2lycWAuIGBzdG1tYWNfeGRwX29wZW5gIGlzIHJlbW92aW5nIGNhbGxzIGZvciBgc3RtbWFjX3JlcXVlc3RfaXJxYCBhbmQgRE1BIENTUiBjaGFubmVsIGNvbmZpZ3VyYXRpb24uXG5cbk9rYXksIEkndmUgZ290IGl0LiBUaGUgcGF0Y2ggKnJlbW92ZXMqIGBzdG1tYWNfcmVxdWVzdF9pcnEoZGV2KWAgZnJvbSBgc3RtbWFjX3hkcF9vcGVuYCBhbmQgKnJlbW92ZXMqIGBzdG1tYWNfZnJlZV9pcnEoZGV2LCBSRVFfSVJRX0VSUl9BTEwsIDApYCBmcm9tIGBzdG1tYWNfeGRwX3JlbGVhc2VgLiBTbyBpbnN0ZWFkIG9mIElSUXMgYmVpbmcgZnJlZWQgYW5kIHJlLXJlcXVlc3RlZCwgdGhleSBhcmUgKmRpc2FibGVkKiBhbmQgc3luY2hyb25pemVkIGR1cmluZyBYRFAgcHJvZ3JhbSB1cGRhdGVzLiBUaGF0J3MgYSBodWdlIGZ1bmN0aW9uYWwgY2hhbmdlIGZvciB0aGUgZHJpdmVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTc0NSwiT3V0cHV0VG9rZW5zIjoxNTUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDQ6NTI6NTAuNzQ5MzMyMDVaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODQ3ODI2NDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNUTU1BQ19FVEhcIixcbiAgICBcIlNUTU1BQ19QQ0lcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzdG1tYWNfeGRwX29wZW5cIixcbiAgICBcInN0bW1hY194ZHBfcmVsZWFzZVwiLFxuICAgIFwic3RtbWFjX3hkcF9zZXRfcHJvZ1wiLFxuICAgIFwic3RtbWFjX2JwZlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBYRFAgb3BlbiBhbmQgcmVsZWFzZSBwYXRocyBpbiB0aGUgc3RtbWFjIEV0aGVybmV0IGRyaXZlci4gSXQgcmVwbGFjZXMgZnJlZWluZyBhbmQgcmUtcmVxdWVzdGluZyBJUlFzIHdpdGggZGlzYWJsaW5nIGFuZCBzeW5jaHJvbml6aW5nIERNQSBpbnRlcnJ1cHRzIGR1cmluZyBYRFAgcHJvZ3JhbSB1cGRhdGVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBjb3JlIGRyaXZlciB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSB0aGUgUENJIGludGVyZmFjZSwgd2hpY2ggc3l6a2FsbGVyIGNhbiBlbXVsYXRlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNUTU1BQ19FVEhcIixcbiAgICBcIlNUTU1BQ19QQ0lcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzdG1tYWNfeGRwX29wZW5cIixcbiAgICBcInN0bW1hY194ZHBfcmVsZWFzZVwiLFxuICAgIFwic3RtbWFjX3hkcF9zZXRfcHJvZ1wiLFxuICAgIFwic3RtbWFjX2JwZlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBYRFAgb3BlbiBhbmQgcmVsZWFzZSBwYXRocyBpbiB0aGUgc3RtbWFjIEV0aGVybmV0IGRyaXZlci4gSXQgcmVwbGFjZXMgZnJlZWluZyBhbmQgcmUtcmVxdWVzdGluZyBJUlFzIHdpdGggZGlzYWJsaW5nIGFuZCBzeW5jaHJvbml6aW5nIERNQSBpbnRlcnJ1cHRzIGR1cmluZyBYRFAgcHJvZ3JhbSB1cGRhdGVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBjb3JlIGRyaXZlciB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSB0aGUgUENJIGludGVyZmFjZSwgd2hpY2ggc3l6a2FsbGVyIGNhbiBlbXVsYXRlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowrxhhh[1] Phase: Succeeded StartedAt: 2026-08-01 04:53:02 +0000 UTC FinishedAt: 2026-08-01 04:53:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrxhhh[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-01 04:53:03 +0000 UTC FinishedAt: 2026-08-01 04:53:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrxhhh[2] Phase: Succeeded StartedAt: 2026-08-01 04:53:03 +0000 UTC FinishedAt: 2026-08-01 06:00:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrxhhh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_bpf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"9fdaf8ca-0bcc-4c5e-ad78-4609a90c7ba2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-01 04:53:03 +0000 UTC FinishedAt: 2026-08-01 06:00:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_bpf"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"9fdaf8ca-0bcc-4c5e-ad78-4609a90c7ba2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowrxhhh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_bpf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"9fdaf8ca-0bcc-4c5e-ad78-4609a90c7ba2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-01 04:53:03 +0000 UTC FinishedAt: 2026-08-01 04:53:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrxhhh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_bpf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"9fdaf8ca-0bcc-4c5e-ad78-4609a90c7ba2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-01 04:53:03 +0000 UTC FinishedAt: 2026-08-01 04:53:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowrxhhh/series-workflowrxhhh-convert-artifact-449718357/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrxhhh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_bpf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"9fdaf8ca-0bcc-4c5e-ad78-4609a90c7ba2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-01 04:53:25 +0000 UTC FinishedAt: 2026-08-01 05:24:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrxhhh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_bpf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"9fdaf8ca-0bcc-4c5e-ad78-4609a90c7ba2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-01 04:53:25 +0000 UTC FinishedAt: 2026-08-01 05:24:59 +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:*3f4eb045-e4bb-4e21-bde7-c047d158d8ee,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-workflowrxhhh/series-workflowrxhhh-convert-artifact-449718357/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": "11608f09-009a-4f91-b571-47df855e3832", "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-workflowrxhhh/series-workflowrxhhh-build-action-3838431931/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrxhhh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_bpf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"9fdaf8ca-0bcc-4c5e-ad78-4609a90c7ba2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-01 04:53:25 +0000 UTC FinishedAt: 2026-08-01 05:24:47 +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:*3f4eb045-e4bb-4e21-bde7-c047d158d8ee,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-workflowrxhhh/series-workflowrxhhh-convert-artifact-449718357/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": "11608f09-009a-4f91-b571-47df855e3832", "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-workflowrxhhh/series-workflowrxhhh-build-action-3838431931/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrxhhh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_bpf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"9fdaf8ca-0bcc-4c5e-ad78-4609a90c7ba2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-01 05:24:59 +0000 UTC FinishedAt: 2026-08-01 05:24:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrxhhh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_bpf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"9fdaf8ca-0bcc-4c5e-ad78-4609a90c7ba2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-01 05:24:59 +0000 UTC FinishedAt: 2026-08-01 05:24:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrxhhh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_bpf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"9fdaf8ca-0bcc-4c5e-ad78-4609a90c7ba2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-01 05:24:59 +0000 UTC FinishedAt: 2026-08-01 05:25:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrxhhh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_bpf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"9fdaf8ca-0bcc-4c5e-ad78-4609a90c7ba2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-01 05:24:59 +0000 UTC FinishedAt: 2026-08-01 05:25:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"9fdaf8ca-0bcc-4c5e-ad78-4609a90c7ba2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowrxhhh/series-workflowrxhhh-convert-artifact-1730581808/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrxhhh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_bpf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"9fdaf8ca-0bcc-4c5e-ad78-4609a90c7ba2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-01 05:25:33 +0000 UTC FinishedAt: 2026-08-01 05:27:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrxhhh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_bpf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"9fdaf8ca-0bcc-4c5e-ad78-4609a90c7ba2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-01 05:25:33 +0000 UTC FinishedAt: 2026-08-01 05:27:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*11608f09-009a-4f91-b571-47df855e3832,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-workflowrxhhh/series-workflowrxhhh-build-action-3838431931/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-workflowrxhhh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_bpf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"9fdaf8ca-0bcc-4c5e-ad78-4609a90c7ba2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-01 05:27:53 +0000 UTC FinishedAt: 2026-08-01 05:27:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrxhhh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_bpf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"9fdaf8ca-0bcc-4c5e-ad78-4609a90c7ba2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-01 05:27:53 +0000 UTC FinishedAt: 2026-08-01 05:27:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrxhhh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_bpf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"9fdaf8ca-0bcc-4c5e-ad78-4609a90c7ba2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-01 05:27:53 +0000 UTC FinishedAt: 2026-08-01 05:55:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrxhhh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_bpf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"9fdaf8ca-0bcc-4c5e-ad78-4609a90c7ba2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-01 05:27:53 +0000 UTC FinishedAt: 2026-08-01 05:55:19 +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:*3f4eb045-e4bb-4e21-bde7-c047d158d8ee,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-workflowrxhhh/series-workflowrxhhh-convert-artifact-1730581808/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": "90153f8c-041b-4e17-9890-eb6196bfef69", "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-workflowrxhhh/series-workflowrxhhh-build-action-2995547948/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrxhhh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_bpf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"9fdaf8ca-0bcc-4c5e-ad78-4609a90c7ba2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-01 05:27:53 +0000 UTC FinishedAt: 2026-08-01 05:55:09 +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:*3f4eb045-e4bb-4e21-bde7-c047d158d8ee,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-workflowrxhhh/series-workflowrxhhh-convert-artifact-1730581808/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": "90153f8c-041b-4e17-9890-eb6196bfef69", "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-workflowrxhhh/series-workflowrxhhh-build-action-2995547948/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrxhhh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_bpf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"9fdaf8ca-0bcc-4c5e-ad78-4609a90c7ba2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-01 05:55:19 +0000 UTC FinishedAt: 2026-08-01 05:55:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrxhhh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_bpf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"9fdaf8ca-0bcc-4c5e-ad78-4609a90c7ba2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-01 05:55:19 +0000 UTC FinishedAt: 2026-08-01 05:55:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrxhhh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_bpf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"9fdaf8ca-0bcc-4c5e-ad78-4609a90c7ba2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-01 05:55:19 +0000 UTC FinishedAt: 2026-08-01 05:57:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrxhhh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_bpf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"9fdaf8ca-0bcc-4c5e-ad78-4609a90c7ba2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-01 05:55:19 +0000 UTC FinishedAt: 2026-08-01 05:57:17 +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:*90153f8c-041b-4e17-9890-eb6196bfef69,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-workflowrxhhh/series-workflowrxhhh-build-action-2995547948/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-workflowrxhhh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_bpf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"9fdaf8ca-0bcc-4c5e-ad78-4609a90c7ba2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-01 05:57:27 +0000 UTC FinishedAt: 2026-08-01 06:00:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrxhhh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_bpf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"9fdaf8ca-0bcc-4c5e-ad78-4609a90c7ba2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-01 05:57:27 +0000 UTC FinishedAt: 2026-08-01 06:00:43 +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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_bpf"],"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:*11608f09-009a-4f91-b571-47df855e3832,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*90153f8c-041b-4e17-9890-eb6196bfef69,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-workflowrxhhh/series-workflowrxhhh-build-action-3838431931/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-workflowrxhhh/series-workflowrxhhh-build-action-2995547948/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowrxhhh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_bpf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"9fdaf8ca-0bcc-4c5e-ad78-4609a90c7ba2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-01 05:57:27 +0000 UTC FinishedAt: 2026-08-01 05:58:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrxhhh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_bpf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"9fdaf8ca-0bcc-4c5e-ad78-4609a90c7ba2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-01 05:57:27 +0000 UTC FinishedAt: 2026-08-01 05:58:01 +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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_bpf"],"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-workflowrxhhh/series-workflowrxhhh-convert-artifact-4204312233/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrxhhh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_bpf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"9fdaf8ca-0bcc-4c5e-ad78-4609a90c7ba2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-01 05:57:27 +0000 UTC FinishedAt: 2026-08-01 05:57:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrxhhh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_bpf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"9fdaf8ca-0bcc-4c5e-ad78-4609a90c7ba2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-01 05:57:27 +0000 UTC FinishedAt: 2026-08-01 05:57:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrxhhh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_bpf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"9fdaf8ca-0bcc-4c5e-ad78-4609a90c7ba2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-01 05:57:27 +0000 UTC FinishedAt: 2026-08-01 05:57:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrxhhh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_bpf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"9fdaf8ca-0bcc-4c5e-ad78-4609a90c7ba2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-01 05:58:07 +0000 UTC FinishedAt: 2026-08-01 06:00:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrxhhh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_bpf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"9fdaf8ca-0bcc-4c5e-ad78-4609a90c7ba2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-01 05:58:07 +0000 UTC FinishedAt: 2026-08-01 06:00:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*11608f09-009a-4f91-b571-47df855e3832,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*90153f8c-041b-4e17-9890-eb6196bfef69,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-workflowrxhhh/series-workflowrxhhh-build-action-3838431931/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-workflowrxhhh/series-workflowrxhhh-build-action-2995547948/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-workflowrxhhh/series-workflowrxhhh-convert-artifact-4204312233/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,}