Name: series-workflow58n2t Phase: Succeeded StartedAt: 2026-08-22 04:59:52 +0000 UTC FinishedAt: 2026-08-22 09:26:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58n2t[0] Phase: Succeeded StartedAt: 2026-08-22 04:59:52 +0000 UTC FinishedAt: 2026-08-22 05:46:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58n2t[0].run-triage Phase: Succeeded StartedAt: 2026-08-22 04:59:52 +0000 UTC FinishedAt: 2026-08-22 05:46:21 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "4e15e89faac9f308baeb01f46c13a051814d2449", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "AMT", "IP_MULTICAST" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "4e15e89faac9f308baeb01f46c13a051814d2449", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "AMT", "IP_MULTICAST" ], "series_id": "3dff9c9d-6562-40c5-9763-668adff23ea4" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "amt_dev_stop", "amt_tunnel_expire" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIyIDA1OjQyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FNVCYjMzQ7LAogICAgJiMzNDtJUF9NVUxUSUNBU1QmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthbXRfZGV2X3N0b3AmIzM0OywKICAgICYjMzQ7YW10X3R1bm5lbF9leHBpcmUmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRyZXNzZXMgc3luY2hyb25pemF0aW9uIGFuZCBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgZG91YmxlLWZyZWUgaXNzdWVzIGJldHdlZW4gYGFtdF90dW5uZWxfZXhwaXJlYCBhbmQgYGFtdF9kZXZfc3RvcGAuIEl0IG1vZGlmaWVzIGxpc3QgbWFuYWdlbWVudCBhbmQgd29yayBxdWV1ZSBjYW5jZWxsYXRpb24gbG9naWMgdG8gcHJldmVudCByYWNlIGNvbmRpdGlvbnMgZHVyaW5nIGRldmljZSB0ZWFyZG93bi4gVGhlc2UgdHlwZXMgb2YgYnVncyAoVUFGLCByYWNlIGNvbmRpdGlvbnMsIGludmFsaWQgZnJlZXMpIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dpbmcgdG9vbHMuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCBvciBkYXRhIGNvcGllZCB0byB1c2VyIHNwYWNlIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB0ZWFyZG93biBsb2dpYyBvZiBBTVQgKEF1dG9tYXRpYyBNdWx0aWNhc3QgVHVubmVsaW5nKSBuZXR3b3JrIGludGVyZmFjZXMsIHNwZWNpZmljYWxseSBpbiB0aGUgZGV2aWNlIHN0b3AgY2FsbGJhY2sgKGBhbXRfZGV2X3N0b3BgKSBhbmQgdGhlIHR1bm5lbCBleHBpcmF0aW9uIHdvcmtxdWV1ZSBjYWxsYmFjayAoYGFtdF90dW5uZWxfZXhwaXJlYCkuIFRoZXNlIGFyZSByZWFjaGFibGUgY29yZSBuZXR3b3JrIGRyaXZlciBwYXRocyB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgYnkgY3JlYXRpbmcgYW5kIGRlc3Ryb3lpbmcgQU1UIGludGVyZmFjZXMgdmlhIHJ0bmV0bGluaywgbWFraW5nIHRoZW0gaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIyIDA1OjQyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMTM4YzM4YTEwOTg4OTY2NDM0NjgwMTA1OTNjZThiNzJhZTM2OTFlNFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDIyIDA1OjQyOjM1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2FtdC5jIGIvZHJpdmVycy9uZXQvYW10LmNcbmluZGV4IGJkZGMyNGUxODU2ZGUuLmE1ZGIwMmQ4MTI5MTcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9hbXQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvYW10LmNcbkBAIC0xMzQ4LDYgJiM0MzsxMzQ4LDExIEBAIHN0YXRpYyB2b2lkIGFtdF90dW5uZWxfZXhwaXJlKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiBcdHN0cnVjdCBhbXRfZGV2ICphbXQgPSB0dW5uZWwtXHUwMDNlYW10O1xuIFxuIFx0c3Bpbl9sb2NrX2JoKFx1MDAyNmFtdC1cdTAwM2Vsb2NrKTtcbiYjNDM7XHQvKiBhbXRfZGV2X3N0b3AoKSBtYXJrcyB0dW5uZWxzIGl0IG93bnMgd2l0aCBsaXN0X2RlbF9pbml0KCkuICovXG4mIzQzO1x0aWYgKGxpc3RfZW1wdHkoXHUwMDI2dHVubmVsLVx1MDAzZWxpc3QpKSB7XG4mIzQzO1x0XHRzcGluX3VubG9ja19iaChcdTAwMjZhbXQtXHUwMDNlbG9jayk7XG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1x0fVxuIFx0cmN1X3JlYWRfbG9jaygpO1xuIFx0bGlzdF9kZWxfcmN1KFx1MDAyNnR1bm5lbC1cdTAwM2VsaXN0KTtcbiBcdGFtdC1cdTAwM2Vucl90dW5uZWxzLS07XG5AQCAtMzA2OCw3ICYjNDM7MzA3Myw3IEBAIHN0YXRpYyBpbnQgYW10X2Rldl9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gc3RhdGljIGludCBhbXRfZGV2X3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiB7XG4gXHRzdHJ1Y3QgYW10X2RldiAqYW10ID0gbmV0ZGV2X3ByaXYoZGV2KTtcbi1cdHN0cnVjdCBhbXRfdHVubmVsX2xpc3QgKnR1bm5lbCwgKnRtcDtcbiYjNDM7XHRzdHJ1Y3QgYW10X3R1bm5lbF9saXN0ICp0dW5uZWw7XG4gXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuIFx0c3RydWN0IHNvY2sgKnNrO1xuIFx0aW50IGk7XG5AQCAtMzA3Nyw5ICYjNDM7MzA4MiwxMSBAQCBzdGF0aWMgaW50IGFtdF9kZXZfc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0ZGlzYWJsZV9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZhbXQtXHUwMDNlZGlzY292ZXJ5X3dxKTtcbiBcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZhbXQtXHUwMDNlc2VjcmV0X3dxKTtcbiBcbi1cdC8qIHNodXRkb3duICovXG4mIzQzO1x0LyogUXVpZXNjZSBSWCBwYXRoIGJlZm9yZSB0ZWFyaW5nIGRvd24gdHVubmVscy4gKi9cbiBcdHNrID0gcnRubF9kZXJlZmVyZW5jZShhbXQtXHUwMDNlc2spO1xuIFx0UkNVX0lOSVRfUE9JTlRFUihhbXQtXHUwMDNlc2ssIE5VTEwpO1xuJiM0MztcdGlmIChzaylcbiYjNDM7XHRcdHJjdV9hc3NpZ25fc2tfdXNlcl9kYXRhKHNrLCBOVUxMKTtcbiBcdHN5bmNocm9uaXplX25ldCgpO1xuIFx0aWYgKHNrKVxuIFx0XHR1ZHBfdHVubmVsX3NvY2tfcmVsZWFzZShzayk7XG5AQCAtMzA5NywxMyAmIzQzOzMxMDQsMjEgQEAgc3RhdGljIGludCBhbXRfZGV2X3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdGFtdC1cdTAwM2VyZXFfY250ID0gMDtcbiBcdFdSSVRFX09OQ0UoYW10LVx1MDAzZXJlbW90ZV9pcCwgMCk7XG4gXG4tXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUodHVubmVsLCB0bXAsIFx1MDAyNmFtdC1cdTAwM2V0dW5uZWxfbGlzdCwgbGlzdCkge1xuLVx0XHRsaXN0X2RlbF9yY3UoXHUwMDI2dHVubmVsLVx1MDAzZWxpc3QpO1xuJiM0MztcdHNwaW5fbG9ja19iaChcdTAwMjZhbXQtXHUwMDNlbG9jayk7XG4mIzQzO1x0d2hpbGUgKCFsaXN0X2VtcHR5KFx1MDAyNmFtdC1cdTAwM2V0dW5uZWxfbGlzdCkpIHtcbiYjNDM7XHRcdHR1bm5lbCA9IGxpc3RfZmlyc3RfZW50cnkoXHUwMDI2YW10LVx1MDAzZXR1bm5lbF9saXN0LFxuJiM0MztcdFx0XHRcdFx0ICBzdHJ1Y3QgYW10X3R1bm5lbF9saXN0LCBsaXN0KTtcbiYjNDM7XHRcdGxpc3RfZGVsX2luaXQoXHUwMDI2dHVubmVsLVx1MDAzZWxpc3QpO1xuIFx0XHRhbXQtXHUwMDNlbnJfdHVubmVscy0tO1xuLVx0XHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2dHVubmVsLVx1MDAzZWdjX3dxKTtcbiYjNDM7XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmFtdC1cdTAwM2Vsb2NrKTtcbiYjNDM7XG4mIzQzO1x0XHRkaXNhYmxlX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNnR1bm5lbC1cdTAwM2VnY193cSk7XG4gXHRcdGFtdF9jbGVhcl9ncm91cHModHVubmVsKTtcbiBcdFx0a2ZyZWVfcmN1KHR1bm5lbCwgcmN1KTtcbiYjNDM7XG4mIzQzO1x0XHRzcGluX2xvY2tfYmgoXHUwMDI2YW10LVx1MDAzZWxvY2spO1xuIFx0fVxuJiM0MztcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmFtdC1cdTAwM2Vsb2NrKTtcbiBcbiBcdHJldHVybiAwO1xuIH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMiAwNTo0MjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QU1UJiMzNDssCiAgICAmIzM0O0lQX01VTFRJQ0FTVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2FtdF9kZXZfc3RvcCYjMzQ7LAogICAgJiMzNDthbXRfdHVubmVsX2V4cGlyZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgdGVhcmRvd24gbG9naWMgb2YgQU1UIChBdXRvbWF0aWMgTXVsdGljYXN0IFR1bm5lbGluZykgbmV0d29yayBpbnRlcmZhY2VzLCBzcGVjaWZpY2FsbHkgaW4gdGhlIGRldmljZSBzdG9wIGNhbGxiYWNrIChgYW10X2Rldl9zdG9wYCkgYW5kIHRoZSB0dW5uZWwgZXhwaXJhdGlvbiB3b3JrcXVldWUgY2FsbGJhY2sgKGBhbXRfdHVubmVsX2V4cGlyZWApLiBUaGVzZSBhcmUgcmVhY2hhYmxlIGNvcmUgbmV0d29yayBkcml2ZXIgcGF0aHMgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGNyZWF0aW5nIGFuZCBkZXN0cm95aW5nIEFNVCBpbnRlcmZhY2VzIHZpYSBydG5ldGxpbmssIG1ha2luZyB0aGVtIGhpZ2hseSByZWxldmFudCBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDEzOGMzOGExMDk4ODk2NjQzNDY4MDEwNTkzY2U4YjcyYWUzNjkxZTQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEF1ZyAyMiAwNTo0MjozNSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2FtdC5jIGIvZHJpdmVycy9uZXQvYW10LmMKaW5kZXggYmRkYzI0ZTE4NTZkZS4uYTVkYjAyZDgxMjkxNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvYW10LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvYW10LmMKQEAgLTEzNDgsNiAmIzQzOzEzNDgsMTEgQEAgc3RhdGljIHZvaWQgYW10X3R1bm5lbF9leHBpcmUoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCXN0cnVjdCBhbXRfZGV2ICphbXQgPSB0dW5uZWwtJmd0O2FtdDsKIAogCXNwaW5fbG9ja19iaCgmYW1wO2FtdC0mZ3Q7bG9jayk7CiYjNDM7CS8qIGFtdF9kZXZfc3RvcCgpIG1hcmtzIHR1bm5lbHMgaXQgb3ducyB3aXRoIGxpc3RfZGVsX2luaXQoKS4gKi8KJiM0MzsJaWYgKGxpc3RfZW1wdHkoJmFtcDt0dW5uZWwtJmd0O2xpc3QpKSB7CiYjNDM7CQlzcGluX3VubG9ja19iaCgmYW1wO2FtdC0mZ3Q7bG9jayk7CiYjNDM7CQlyZXR1cm47CiYjNDM7CX0KIAlyY3VfcmVhZF9sb2NrKCk7CiAJbGlzdF9kZWxfcmN1KCZhbXA7dHVubmVsLSZndDtsaXN0KTsKIAlhbXQtJmd0O25yX3R1bm5lbHMtLTsKQEAgLTMwNjgsNyAmIzQzOzMwNzMsNyBAQCBzdGF0aWMgaW50IGFtdF9kZXZfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogc3RhdGljIGludCBhbXRfZGV2X3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIHsKIAlzdHJ1Y3QgYW10X2RldiAqYW10ID0gbmV0ZGV2X3ByaXYoZGV2KTsKLQlzdHJ1Y3QgYW10X3R1bm5lbF9saXN0ICp0dW5uZWwsICp0bXA7CiYjNDM7CXN0cnVjdCBhbXRfdHVubmVsX2xpc3QgKnR1bm5lbDsKIAlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOwogCXN0cnVjdCBzb2NrICpzazsKIAlpbnQgaTsKQEAgLTMwNzcsOSAmIzQzOzMwODIsMTEgQEAgc3RhdGljIGludCBhbXRfZGV2X3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAlkaXNhYmxlX2RlbGF5ZWRfd29ya19zeW5jKCZhbXA7YW10LSZndDtkaXNjb3Zlcnlfd3EpOwogCWNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmYW1wO2FtdC0mZ3Q7c2VjcmV0X3dxKTsKIAotCS8qIHNodXRkb3duICovCiYjNDM7CS8qIFF1aWVzY2UgUlggcGF0aCBiZWZvcmUgdGVhcmluZyBkb3duIHR1bm5lbHMuICovCiAJc2sgPSBydG5sX2RlcmVmZXJlbmNlKGFtdC0mZ3Q7c2spOwogCVJDVV9JTklUX1BPSU5URVIoYW10LSZndDtzaywgTlVMTCk7CiYjNDM7CWlmIChzaykKJiM0MzsJCXJjdV9hc3NpZ25fc2tfdXNlcl9kYXRhKHNrLCBOVUxMKTsKIAlzeW5jaHJvbml6ZV9uZXQoKTsKIAlpZiAoc2spCiAJCXVkcF90dW5uZWxfc29ja19yZWxlYXNlKHNrKTsKQEAgLTMwOTcsMTMgJiM0MzszMTA0LDIxIEBAIHN0YXRpYyBpbnQgYW10X2Rldl9zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAJYW10LSZndDtyZXFfY250ID0gMDsKIAlXUklURV9PTkNFKGFtdC0mZ3Q7cmVtb3RlX2lwLCAwKTsKIAotCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZSh0dW5uZWwsIHRtcCwgJmFtcDthbXQtJmd0O3R1bm5lbF9saXN0LCBsaXN0KSB7Ci0JCWxpc3RfZGVsX3JjdSgmYW1wO3R1bm5lbC0mZ3Q7bGlzdCk7CiYjNDM7CXNwaW5fbG9ja19iaCgmYW1wO2FtdC0mZ3Q7bG9jayk7CiYjNDM7CXdoaWxlICghbGlzdF9lbXB0eSgmYW1wO2FtdC0mZ3Q7dHVubmVsX2xpc3QpKSB7CiYjNDM7CQl0dW5uZWwgPSBsaXN0X2ZpcnN0X2VudHJ5KCZhbXA7YW10LSZndDt0dW5uZWxfbGlzdCwKJiM0MzsJCQkJCSAgc3RydWN0IGFtdF90dW5uZWxfbGlzdCwgbGlzdCk7CiYjNDM7CQlsaXN0X2RlbF9pbml0KCZhbXA7dHVubmVsLSZndDtsaXN0KTsKIAkJYW10LSZndDtucl90dW5uZWxzLS07Ci0JCWNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmYW1wO3R1bm5lbC0mZ3Q7Z2Nfd3EpOwomIzQzOwkJc3Bpbl91bmxvY2tfYmgoJmFtcDthbXQtJmd0O2xvY2spOwomIzQzOwomIzQzOwkJZGlzYWJsZV9kZWxheWVkX3dvcmtfc3luYygmYW1wO3R1bm5lbC0mZ3Q7Z2Nfd3EpOwogCQlhbXRfY2xlYXJfZ3JvdXBzKHR1bm5lbCk7CiAJCWtmcmVlX3JjdSh0dW5uZWwsIHJjdSk7CiYjNDM7CiYjNDM7CQlzcGluX2xvY2tfYmgoJmFtcDthbXQtJmd0O2xvY2spOwogCX0KJiM0MzsJc3Bpbl91bmxvY2tfYmgoJmFtcDthbXQtJmd0O2xvY2spOwogCiAJcmV0dXJuIDA7CiB9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIyIDA1OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2MTIKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxOTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgQU1UIERyaXZlcjogQSBRdWljayBBc3Nlc3NtZW50KioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCBhIHBhdGNoIGhlcmUgYWZmZWN0aW5nIHRoZSBgZHJpdmVycy9uZXQvYW10LmNgIGZpbGUuIEl0IHNlZW1zIHRvIGJlIGZvY3VzaW5nIG9uIHRoZSBBTVQgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdG91Y2hpbmcgYGFtdF90dW5uZWxfZXhwaXJlYCBhbmQgYGFtdF9kZXZfc3RvcGAuIEhtbSwgYGFtdF90dW5uZWxfZXhwaXJlYCBpcyBhIHdvcmtxdWV1ZSBjYWxsYmFjayBhbmQgYGFtdF9kZXZfc3RvcGAgaXMgYSBuZXR3b3JrIGRldmljZSBzdG9wIGNhbGxiYWNrIOKAkyB0aGF0JiMzOTtzIGdvb2QgdG8ga25vdyBmb3IgY29udGV4dC4gVGhlIHBhdGNoIGludHJvZHVjZXMgYSBgbGlzdF9lbXB0eSgpYCBjaGVjayB3aXRoaW4gYGFtdF90dW5uZWxfZXhwaXJlYCBhbmQgY2hhbmdlcyBob3cgdHVubmVscyBhcmUgdG9ybiBkb3duIGluIGBhbXRfZGV2X3N0b3BgLiBUaGUgaW50ZXJlc3RpbmcgYml0IGlzIHRoZSBhZGRpdGlvbiBvZiBgcmN1X2Fzc2lnbl9za191c2VyX2RhdGEoc2ssIE5VTEwpYCBpbiBgYW10X2Rldl9zdG9wYC4KCkdpdmVuIHRoaXMsIEkgbmVlZCB0byBkZWNpZGUgaWYgdGhpcyB3YXJyYW50cyBmdXp6aW5nLiBJdCYjMzk7cyBhIGJ1ZyBmaXggZm9yIHRoZSBBTVQgZHJpdmVyLCB3aGljaCwgYXMgSSByZWNhbGwsIGlzIHVzZWQgZm9yIEF1dG9tYXRpYyBNdWx0aWNhc3QgVHVubmVsaW5nLiBBTVQgZHJpdmVycyBjYW4gYmUgY3JlYXRlZCB0aHJvdWdoIHJ0bmV0bGluay4KCkxldCBtZSBqdXN0IHF1aWNrbHkgY2hlY2sgYGRyaXZlcnMvbmV0L2FtdC5jYCBmb3IgdGhlIHJlbGV2YW50IEtjb25maWcgb3B0aW9uLiBTZWUgaWYgdGhpcyBpcyBzb21ldGhpbmcgd29ydGggc3BlbmRpbmcgc29tZSB0aW1lIG9uIHRvIGVuc3VyZSBhIHJvYnVzdCBmaXguCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjIgMDU6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEFNVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZz0yODk9Y29uZmlnIFBGQ1Bcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTMwMS1cbmRyaXZlcnMvbmV0L0tjb25maWc6MzAyOmNvbmZpZyBBTVRcbmRyaXZlcnMvbmV0L0tjb25maWctMzAzLVx0dHJpc3RhdGUgXCYjMzQ7QXV0b21hdGljIE11bHRpY2FzdCBUdW5uZWxpbmcgKEFNVClcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMiAwNTo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTY3CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMjA3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgVGFyZ2V0IFByaW9yaXRpemF0aW9uOiBBTVQgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyB0aGUgY29uZmlndXJhdGlvbiBJJiMzOTttIGxvb2tpbmcgYXQgaXMgYEFNVGAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBxdWlja2x5IHZlcmlmeSB0aGUgcmVhY2hhYmlsaXR5IG9mIHR3byBmdW5jdGlvbnM6IGBhbXRfZGV2X3N0b3BgIGFuZCBgYW10X3R1bm5lbF9leHBpcmVgLiBgYW10X2Rldl9zdG9wYCBpcyB0cmlnZ2VyZWQgd2hlbiB0aGUgbmV0d29yayBpbnRlcmZhY2UgZ29lcyBkb3duLCBhbmQgYGFtdF90dW5uZWxfZXhwaXJlYCBpcyBpbnZva2VkIGZyb20gYSBkZWxheWVkIHdvcmtxdWV1ZS4gU2VlbXMgc3RyYWlnaHRmb3J3YXJkLCB0aGV5JiMzOTtyZSBib3RoIGRlZmluaXRlbHkgd29ydGggaW52ZXN0aWdhdGluZyBmb3IgZnV6emluZyBwb3RlbnRpYWwuCgpNeSBpbml0aWFsIGZvY3VzIGlzIG9uIHRob3NlIHR3bzogYGFtdF90dW5uZWxfZXhwaXJlYCBhbmQgYGFtdF9kZXZfc3RvcGAuIEJ1dCBoYW5nIG9uLi4uIGBhbXRfdHVubmVsX2V4cGlyZWAgaXMgKnN0YXRpYyouIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgaXQmIzM5O3MgaW5saW5lZC4gSXQmIzM5O3MgdXNlZCBhcyBhIHdvcmtxdWV1ZSBjYWxsYmFjaywgc28gaXRzIGFkZHJlc3MgbXVzdCBiZSB0YWtlbiwgd2hpY2ggcnVsZXMgb3V0IGlubGluaW5nLiBUaGF0JiMzOTtzIGEgcG9pbnQgYWdhaW5zdCBpdCwgSSBuZWVkIHRvIGtlZXAgdGhhdCBpbiBtaW5kLiBUaGUgaW5zdHJ1Y3Rpb25zIGRvIGFkdmlzZSBwcmlvcml0aXppbmcgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgZW50cnkgcG9pbnRzLgoKTm93LCBsZXQmIzM5O3MgbG9vayBhdCBgYW10X2Rldl9zdG9wYC4gSXQgaXMgYWxzbyBzdGF0aWMsIGFuZCB1c2VkIGFzIGBuZG9fc3RvcGAuIEkgbmVlZCB0byBicm9hZGVuIG15IHNlYXJjaCBhbmQgc2VlIGlmIHRoZXJlIGFyZSBiZXR0ZXIgY2FuZGlkYXRlcyBsaWtlIGBhbXRfbmV3bGlua2Agb3Igc29tZXRoaW5nIHNpbWlsYXIsIHRoYXQgYXJlIG5vbi1zdGF0aWMgYW5kIG5vbi1pbmxpbmVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIyIDA1OjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FtdF9kZXZfc3RvcCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2FtdC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2FtdC5jPTEzNDM9c3RhdGljIHZvaWQgYW10X3R1bm5lbF9leHBpcmUoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmV0L2FtdC5jLTEzNTAtXHRzcGluX2xvY2tfYmgoXHUwMDI2YW10LVx1MDAzZWxvY2spO1xuZHJpdmVycy9uZXQvYW10LmM6MTM1MTpcdC8qIGFtdF9kZXZfc3RvcCgpIG1hcmtzIHR1bm5lbHMgaXQgb3ducyB3aXRoIGxpc3RfZGVsX2luaXQoKS4gKi9cbmRyaXZlcnMvbmV0L2FtdC5jLTEzNTItXHRpZiAobGlzdF9lbXB0eShcdTAwMjZ0dW5uZWwtXHUwMDNlbGlzdCkpIHtcbi0tXG5kcml2ZXJzL25ldC9hbXQuYz0zMDM3PXN0YXRpYyBpbnQgYW10X2Rldl9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvYW10LmMtMzA3Mi1cbmRyaXZlcnMvbmV0L2FtdC5jOjMwNzM6c3RhdGljIGludCBhbXRfZGV2X3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L2FtdC5jLTMwNzQte1xuLS1cbmRyaXZlcnMvbmV0L2FtdC5jPTMxNTE9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBhbXRfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9hbXQuYy0zMTU0LVx0Lm5kb19vcGVuXHRcdD0gYW10X2Rldl9vcGVuLFxuZHJpdmVycy9uZXQvYW10LmM6MzE1NTpcdC5uZG9fc3RvcFx0XHQ9IGFtdF9kZXZfc3RvcCxcbmRyaXZlcnMvbmV0L2FtdC5jLTMxNTYtXHQubmRvX3N0YXJ0X3htaXQgICAgICAgICA9IGFtdF9kZXZfeG1pdCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMiAwNTo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDE0CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIGBhbXRfZGV2X3N0b3BgIGFuZCBgYW10X3R1bm5lbF9leHBpcmVgKioKCk9rYXksIHNvIGBhbXRfZGV2X3N0b3BgIGlzIGEgY2FsbGJhY2sgZnVuY3Rpb24gd2l0aGluIHRoZSBgYW10X25ldGRldl9vcHNgIHN0cnVjdHVyZSwgZ290IGl0LiBUaGlzIG1ha2VzIGl0IGEgbmV0d29yayBkZXZpY2Ugb3BlcmF0aW9uLCBwcm9iYWJseSByZWxhdGVkIHRvIHN0b3BwaW5nIG9yIGRpc2FibGluZyB0aGUgQU1UIChBY3RpdmUgTWFuYWdlbWVudCBUZWNobm9sb2d5KSBpbnRlcmZhY2UsIGEgY29tcG9uZW50IHdpdGggd2hpY2ggSSYjMzk7bSBmYW1pbGlhci4gSSBuZWVkIHRvIGtlZXAgdGhhdCBpbiBtaW5kLiBUaGVuLCBgYW10X3R1bm5lbF9leHBpcmVgIGlzIGEgY2FsbGJhY2sgZm9yIHRoZSB3b3JrcXVldWUuIFRoaXMgc3VnZ2VzdHMgc29tZSBwZXJpb2RpYyBjbGVhbnVwIG9yIHRpbWVvdXQgaGFuZGxpbmcgcmVsYXRlZCB0byBBTVQgdHVubmVscywgc29tZXRoaW5nIGFzeW5jaHJvbm91cy4KClJpZ2h0LCBzbyB0byBjb250aW51ZSBvbiwgSSYjMzk7bSB0aGlua2luZyBJIHNob3VsZCBwcm9iYWJseSBzZWUgaWYgdGhlcmUgYXJlIG5vbi1zdGF0aWMgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gdGhlc2UuIE5vbi1zdGF0aWMgZnVuY3Rpb25zIGFyZSBvZnRlbiBnbG9iYWwgb3IgYWNjZXNzaWJsZSBmcm9tIG90aGVyIHBhcnRzIG9mIHRoZSBrZXJuZWwuIFRoaXMgY291bGQgYmUgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGVzZSBmdW5jdGlvbnMgaW50ZXJhY3Qgd2l0aCB0aGUgYnJvYWRlciBzeXN0ZW0sIGFuZCB3aGVyZSBkZXBlbmRlbmNpZXMgbWlnaHQgbGllLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIyIDA1OjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FtdF90dW5uZWxfZXhwaXJlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvYW10LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvYW10LmM9MTMyNz1zdGF0aWMgdm9pZCBhbXRfY2xlYXJfZ3JvdXBzKHN0cnVjdCBhbXRfdHVubmVsX2xpc3QgKnR1bm5lbClcbi0tXG5kcml2ZXJzL25ldC9hbXQuYy0xMzQyLVxuZHJpdmVycy9uZXQvYW10LmM6MTM0MzpzdGF0aWMgdm9pZCBhbXRfdHVubmVsX2V4cGlyZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25ldC9hbXQuYy0xMzQ0LXtcbi0tXG5kcml2ZXJzL25ldC9hbXQuYz0yNzEwPXN0YXRpYyBib29sIGFtdF9yZXF1ZXN0X2hhbmRsZXIoc3RydWN0IGFtdF9kZXYgKmFtdCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC9hbXQuYy0yNzU3LVxuZHJpdmVycy9uZXQvYW10LmM6Mjc1ODpcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNnR1bm5lbC1cdTAwM2VnY193cSwgYW10X3R1bm5lbF9leHBpcmUpO1xuZHJpdmVycy9uZXQvYW10LmMtMjc1OS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMiAwNTo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDk2CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMjE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZvY3VzaW5nIG9uIHRoZSBBTVQgVHVubmVsIEV4cGlyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyBgYW10X3R1bm5lbF9leHBpcmVgIGlzIHVzZWQg4oCTIGl0JiMzOTtzIHBhcnQgb2YgYElOSVRfREVMQVlFRF9XT1JLYC4gSG1tLCBpbnRlcmVzdGluZy4gVGhlIGtleSBoZXJlIGlzIHRoYXQgYm90aCBgYW10X2Rldl9zdG9wYCBhbmQgYGFtdF90dW5uZWxfZXhwaXJlYCBhcmUgbW9kaWZpZWQsIGFuZCB0aGV5IGFyZSBib3RoIGNhbGxiYWNrcywgbWFraW5nIHRoZW0gcHJpbWUgY2FuZGlkYXRlcyBmb3IgYEZvY3VzU3ltYm9sc2AuIFRoZXkgYXJlIHN0YXRpYywgeWVzLCBidXQgdGhlaXIgYWRkcmVzc2VzIGFyZSB0YWtlbiwgbWVhbmluZyB0aGV5IGFyZW4mIzM5O3QgaW5saW5lZCBieSB0aGUgY29tcGlsZXIuIFRoaXMgaXMgZ3JlYXQ7IGJlY2F1c2UgdGhleSBoYXZlIGRpc3RpbmN0IGFkZHJlc3Nlcywgd2UgY2FuIGhvb2sgdGhlbSEKCldhaXQgYSBzZWNvbmTigKYgSSBuZWVkIHRvIHJlLXJlYWQgdGhhdCBwcm9tcHQuIEl0IGVtcGhhc2l6ZXMgcHJlZmVycmluZyBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMgb3ZlciBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucyB0aGF0IGFyZSB0eXBpY2FsbHkgaW5saW5lZC4gQnV0LCB0aGUgYWRkcmVzc2VzIGFyZSB0YWtlbiwgc28gdGhleSYjMzk7cmUgbm90IGlubGluZWQuCgpUaGUgYWRkcmVzc2VzIGFyZSB0YWtlbiwgc28gd2UgYXJlIG9rYXkhCkNvdWxkIHdlICphbHNvKiBjb25zaWRlciBhZGRpbmcgYGFtdF9uZXdsaW5rYCBvciBgYW10X2Rldl9vcGVuYD8gTWF5YmUsIGJ1dCBmb3Igbm93LCBsZXQmIzM5O3Mga2VlcCBpdCBzaW1wbGUgYW5kIGp1c3QgZ28gd2l0aCBgYW10X2Rldl9zdG9wYCBhbmQgYGFtdF90dW5uZWxfZXhwaXJlYC4gVGhpcyBzZWVtcyBsaWtlIHRoZSBtb3N0IGxvZ2ljYWwgcGF0aC4KCkJlZm9yZSBzb2xpZGlmeWluZyB0aGlzLCBsZXQmIzM5O3MgZG91YmxlIGNoZWNrIGlmIHRoZXJlIGFyZSBvdGhlciBjb25maWd1cmF0aW9ucyB0aGF0IGFmZmVjdCB0aGlzLiBJIGJlbGlldmUgYEFNVGAgaXMgZGVwZW5kZW50IG9uIGBJTkVUYCBhbmQgYElQVjZgLiBJIHdpbGwgY2hlY2sgYGRyaXZlcnMvbmV0L0tjb25maWdgIHRvIGNvbmZpcm0gYW55IGRlcGVuZGVuY3kuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIyIDA1OjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBBTVQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWc9Mjg5PWNvbmZpZyBQRkNQXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMDEtXG5kcml2ZXJzL25ldC9LY29uZmlnOjMwMjpjb25maWcgQU1UXG5kcml2ZXJzL25ldC9LY29uZmlnLTMwMy1cdHRyaXN0YXRlIFwmIzM0O0F1dG9tYXRpYyBNdWx0aWNhc3QgVHVubmVsaW5nIChBTVQpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIyIDA1OjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxMjIKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duLCBwcmVzZW50ZWQgdG8gYSBmZWxsb3cgZXhwZXJ0OgoKKipEaXZpbmcgaW50byB0aGUgQU1UIEtjb25maWcqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBob3cgSW50ZWwgQWN0aXZlIE1hbmFnZW1lbnQgVGVjaG5vbG9neSAoQU1UKSBpcyBjb25maWd1cmVkIGluIHRoaXMgcHJvamVjdC4gU28sIHRoZSBsb2dpY2FsIGZpcnN0IHN0ZXAgaXMgdG8gZGlnIGludG8gdGhlIEtjb25maWcgZmlsZS4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSBnZXR0aW5nIG15IGJlYXJpbmdzOiB3aGF0IG9wdGlvbnMgYXJlIGF2YWlsYWJsZT8gV2hhdCBkZXBlbmRlbmNpZXMgZXhpc3Q/IFdoYXQgYXJlIHRoZSBkZWZhdWx0IHNldHRpbmdzPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYnVpbGRpbmcgYmxvY2tzIGZvciB0aGlzIHNwZWNpZmljIGltcGxlbWVudGF0aW9uLiBJJiMzOTttIGxvb2tpbmcgZm9yIGNsdWVzIGFib3V0IHRoZSBjaG9zZW4gY29uZmlndXJhdGlvbiwgYW55IHJlbGV2YW50IGN1c3RvbWl6YXRpb24gZG9uZSwgYW5kIGlmIHRoZXJlIGFyZSBhbnkgZ290Y2hhcyBJIG5lZWQgdG8gYW50aWNpcGF0ZS4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlJiMzOTt2ZSBnb3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIyIDA1OjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMzAwOlx0XHQgIHdpbGwgYmUgY2FsbGVkIHBmY3AuXG4gMzAxOlx0XG4gMzAyOlx0Y29uZmlnIEFNVFxuIDMwMzpcdFx0dHJpc3RhdGUgXCYjMzQ7QXV0b21hdGljIE11bHRpY2FzdCBUdW5uZWxpbmcgKEFNVClcJiMzNDtcbiAzMDQ6XHRcdGRlcGVuZHMgb24gSU5FVCBcdTAwMjZcdTAwMjYgSVBfTVVMVElDQVNUXG4gMzA1Olx0XHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcbiAzMDY6XHRcdGhlbHBcbiAzMDc6XHRcdCAgVGhpcyBhbGxvd3Mgb25lIHRvIGNyZWF0ZSBBTVQoQXV0b21hdGljIE11bHRpY2FzdCBUdW5uZWxpbmcpXG4gMzA4Olx0XHQgIHZpcnR1YWwgaW50ZXJmYWNlcyB0aGF0IHByb3ZpZGUgbXVsdGljYXN0IHR1bm5lbGluZy5cbiAzMDk6XHRcdCAgVGhlcmUgYXJlIHR3byByb2xlcywgR2F0ZXdheSwgYW5kIFJlbGF5LlxuIDMxMDpcdFx0ICBHYXRld2F5IEVuY2Fwc3VsYXRlcyBJR01QL01MRCB0cmFmZmljIGZyb20gbGlzdGVuZXJzIHRvIHRoZSBSZWxheS5cbiAzMTE6XHRcdCAgR2F0ZXdheSBEZWNhcHN1bGF0ZXMgbXVsdGljYXN0IHRyYWZmaWMgZnJvbSB0aGUgUmVsYXkgdG8gTGlzdGVuZXJzLlxuIDMxMjpcdFx0ICBSZWxheSBFbmNhcHN1bGF0ZXMgbXVsdGljYXN0IHRyYWZmaWMgZnJvbSBTb3VyY2VzIHRvIEdhdGV3YXkuXG4gMzEzOlx0XHQgIFJlbGF5IERlY2Fwc3VsYXRlcyBJR01QL01MRCB0cmFmZmljIGZyb20gR2F0ZXdheS5cbiAzMTQ6XHRcbiAzMTU6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlcnMgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiAzMTY6XHRcdCAgd2lsbCBiZSBjYWxsZWQgYW10LlxuIDMxNzpcdFxuIDMxODpcdGNvbmZpZyBNQUNTRUNcbiAzMTk6XHRcdHRyaXN0YXRlIFwmIzM0O0lFRUUgODAyLjFBRSBNQUMtbGV2ZWwgZW5jcnlwdGlvbiAoTUFDc2VjKVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMiAwNTo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NjU3CgkJCQkJCQlvdXRwdXQ6IDEzMwoJCQkJCQkJdGhvdWdodHM6IDk3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IENvbmZpZ3VyYXRpb24gU3RyYXRlZ3kqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIGRlcGVuZGVuY2llczogYElORVRgIGFuZCBgSVBfTVVMVElDQVNUYC4gYElORVRgIGlzIHVzdWFsbHkgYSBnaXZlbiwgYnV0IGxldCYjMzk7cyBqdXN0IG1ha2Ugc3VyZSBpdCYjMzk7cyBleHBsaWNpdGx5IGVuYWJsZWQuIFRoYXQgbWVhbnMgSSBuZWVkIHRvIG1ha2Ugc3VyZSBgQU1UYCwgYElQX01VTFRJQ0FTVGAsIGFuZCwganVzdCBpbiBjYXNlLCBgSU5FVGAsIGFyZSBhbGwgaW5jbHVkZWQgaW4gdGhlIGBFbmFibGVDb25maWdzYCBsaXN0LiBOb3csIGhvbGQgb24sIGBJUF9NVUxUSUNBU1RgIGlzbiYjMzk7dCBhIHNpbXBsZSBkZXBlbmRlbmN5OyBpdCYjMzk7cyBhICpjb25maWcqISBSaWdodC4gR290IGl0LgoKTmV4dCwgSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGBhbXRfZGV2X3N0b3BgIGFuZCBgYW10X3R1bm5lbF9leHBpcmVgIGFyZSB0aGUgcmlnaHQgc3ltYm9scyB0byBiZSB3b3JraW5nIHdpdGguIEkgbmVlZCB0byBlbnN1cmUgdGhleSYjMzk7cmUgdGhlIGRpcmVjdCB0YXJnZXRzIG9mIHRoZSBtb2RpZmljYXRpb25zLiAqWWVzKiwgbG9va2luZyBhdCB0aGUgcmVsZXZhbnQgY29kZSwgdGhleSYjMzk7cmUgdGhlIG9uZXMgYmVpbmcgZGlyZWN0bHkgY2hhbmdlZC4gR29vZC4KCldpdGggdGhhdCBjb25maXJtZWQsIEkmIzM5O2xsIGdvIGFoZWFkIGFuZCBidWlsZCBteSBzb2x1dGlvbiwgbWFraW5nIHN1cmUgdG8gdXNlIGBzZXQtcmVzdWx0c2AgYXBwcm9wcmlhdGVseSB0byByZWZsZWN0IHRoZSBkZXNpcmVkIGNvbmZpZ3VyYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIyIDA1OjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtBTVQmIzM0OywKICAgICYjMzQ7SVBfTVVMVElDQVNUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YW10X2Rldl9zdG9wJiMzNDssCiAgICAmIzM0O2FtdF90dW5uZWxfZXhwaXJlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB0ZWFyZG93biBsb2dpYyBvZiBBTVQgKEF1dG9tYXRpYyBNdWx0aWNhc3QgVHVubmVsaW5nKSBuZXR3b3JrIGludGVyZmFjZXMsIHNwZWNpZmljYWxseSBpbiB0aGUgZGV2aWNlIHN0b3AgY2FsbGJhY2sgKGBhbXRfZGV2X3N0b3BgKSBhbmQgdGhlIHR1bm5lbCBleHBpcmF0aW9uIHdvcmtxdWV1ZSBjYWxsYmFjayAoYGFtdF90dW5uZWxfZXhwaXJlYCkuIFRoZXNlIGFyZSByZWFjaGFibGUgY29yZSBuZXR3b3JrIGRyaXZlciBwYXRocyB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgYnkgY3JlYXRpbmcgYW5kIGRlc3Ryb3lpbmcgQU1UIGludGVyZmFjZXMgdmlhIHJ0bmV0bGluaywgbWFraW5nIHRoZW0gaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtBTVQmIzM0OywKICAgICYjMzQ7SVBfTVVMVElDQVNUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YW10X2Rldl9zdG9wJiMzNDssCiAgICAmIzM0O2FtdF90dW5uZWxfZXhwaXJlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB0ZWFyZG93biBsb2dpYyBvZiBBTVQgKEF1dG9tYXRpYyBNdWx0aWNhc3QgVHVubmVsaW5nKSBuZXR3b3JrIGludGVyZmFjZXMsIHNwZWNpZmljYWxseSBpbiB0aGUgZGV2aWNlIHN0b3AgY2FsbGJhY2sgKGBhbXRfZGV2X3N0b3BgKSBhbmQgdGhlIHR1bm5lbCBleHBpcmF0aW9uIHdvcmtxdWV1ZSBjYWxsYmFjayAoYGFtdF90dW5uZWxfZXhwaXJlYCkuIFRoZXNlIGFyZSByZWFjaGFibGUgY29yZSBuZXR3b3JrIGRyaXZlciBwYXRocyB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgYnkgY3JlYXRpbmcgYW5kIGRlc3Ryb3lpbmcgQU1UIGludGVyZmFjZXMgdmlhIHJ0bmV0bGluaywgbWFraW5nIHRoZW0gaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMiAwNTo0NTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIyIDA1OjQ1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBzeW5jaHJvbml6YXRpb24gYW5kIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBkb3VibGUtZnJlZSBpc3N1ZXMgYmV0d2VlbiBgYW10X3R1bm5lbF9leHBpcmVgIGFuZCBgYW10X2Rldl9zdG9wYC4gSXQgbW9kaWZpZXMgbGlzdCBtYW5hZ2VtZW50IGFuZCB3b3JrIHF1ZXVlIGNhbmNlbGxhdGlvbiBsb2dpYyB0byBwcmV2ZW50IHJhY2UgY29uZGl0aW9ucyBkdXJpbmcgZGV2aWNlIHRlYXJkb3duLiBUaGVzZSB0eXBlcyBvZiBidWdzIChVQUYsIHJhY2UgY29uZGl0aW9ucywgaW52YWxpZCBmcmVlcykgYXJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIGRlYnVnZ2luZyB0b29scy4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIGRhdGEgY29waWVkIHRvIHVzZXIgc3BhY2UgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMTM4YzM4YTEwOTg4OTY2NDM0NjgwMTA1OTNjZThiNzJhZTM2OTFlNApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgQXVnIDIyIDA1OjQyOjM1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvYW10LmMgYi9kcml2ZXJzL25ldC9hbXQuYwppbmRleCBiZGRjMjRlMTg1NmRlLi5hNWRiMDJkODEyOTE3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9hbXQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9hbXQuYwpAQCAtMTM0OCw2ICYjNDM7MTM0OCwxMSBAQCBzdGF0aWMgdm9pZCBhbXRfdHVubmVsX2V4cGlyZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJc3RydWN0IGFtdF9kZXYgKmFtdCA9IHR1bm5lbC0mZ3Q7YW10OwogCiAJc3Bpbl9sb2NrX2JoKCZhbXA7YW10LSZndDtsb2NrKTsKJiM0MzsJLyogYW10X2Rldl9zdG9wKCkgbWFya3MgdHVubmVscyBpdCBvd25zIHdpdGggbGlzdF9kZWxfaW5pdCgpLiAqLwomIzQzOwlpZiAobGlzdF9lbXB0eSgmYW1wO3R1bm5lbC0mZ3Q7bGlzdCkpIHsKJiM0MzsJCXNwaW5fdW5sb2NrX2JoKCZhbXA7YW10LSZndDtsb2NrKTsKJiM0MzsJCXJldHVybjsKJiM0MzsJfQogCXJjdV9yZWFkX2xvY2soKTsKIAlsaXN0X2RlbF9yY3UoJmFtcDt0dW5uZWwtJmd0O2xpc3QpOwogCWFtdC0mZ3Q7bnJfdHVubmVscy0tOwpAQCAtMzA2OCw3ICYjNDM7MzA3Myw3IEBAIHN0YXRpYyBpbnQgYW10X2Rldl9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiBzdGF0aWMgaW50IGFtdF9kZXZfc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogewogCXN0cnVjdCBhbXRfZGV2ICphbXQgPSBuZXRkZXZfcHJpdihkZXYpOwotCXN0cnVjdCBhbXRfdHVubmVsX2xpc3QgKnR1bm5lbCwgKnRtcDsKJiM0MzsJc3RydWN0IGFtdF90dW5uZWxfbGlzdCAqdHVubmVsOwogCXN0cnVjdCBza19idWZmICpza2I7CiAJc3RydWN0IHNvY2sgKnNrOwogCWludCBpOwpAQCAtMzA3Nyw5ICYjNDM7MzA4MiwxMSBAQCBzdGF0aWMgaW50IGFtdF9kZXZfc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCWRpc2FibGVfZGVsYXllZF93b3JrX3N5bmMoJmFtcDthbXQtJmd0O2Rpc2NvdmVyeV93cSk7CiAJY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZhbXA7YW10LSZndDtzZWNyZXRfd3EpOwogCi0JLyogc2h1dGRvd24gKi8KJiM0MzsJLyogUXVpZXNjZSBSWCBwYXRoIGJlZm9yZSB0ZWFyaW5nIGRvd24gdHVubmVscy4gKi8KIAlzayA9IHJ0bmxfZGVyZWZlcmVuY2UoYW10LSZndDtzayk7CiAJUkNVX0lOSVRfUE9JTlRFUihhbXQtJmd0O3NrLCBOVUxMKTsKJiM0MzsJaWYgKHNrKQomIzQzOwkJcmN1X2Fzc2lnbl9za191c2VyX2RhdGEoc2ssIE5VTEwpOwogCXN5bmNocm9uaXplX25ldCgpOwogCWlmIChzaykKIAkJdWRwX3R1bm5lbF9zb2NrX3JlbGVhc2Uoc2spOwpAQCAtMzA5NywxMyAmIzQzOzMxMDQsMjEgQEAgc3RhdGljIGludCBhbXRfZGV2X3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAlhbXQtJmd0O3JlcV9jbnQgPSAwOwogCVdSSVRFX09OQ0UoYW10LSZndDtyZW1vdGVfaXAsIDApOwogCi0JbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHR1bm5lbCwgdG1wLCAmYW1wO2FtdC0mZ3Q7dHVubmVsX2xpc3QsIGxpc3QpIHsKLQkJbGlzdF9kZWxfcmN1KCZhbXA7dHVubmVsLSZndDtsaXN0KTsKJiM0MzsJc3Bpbl9sb2NrX2JoKCZhbXA7YW10LSZndDtsb2NrKTsKJiM0MzsJd2hpbGUgKCFsaXN0X2VtcHR5KCZhbXA7YW10LSZndDt0dW5uZWxfbGlzdCkpIHsKJiM0MzsJCXR1bm5lbCA9IGxpc3RfZmlyc3RfZW50cnkoJmFtcDthbXQtJmd0O3R1bm5lbF9saXN0LAomIzQzOwkJCQkJICBzdHJ1Y3QgYW10X3R1bm5lbF9saXN0LCBsaXN0KTsKJiM0MzsJCWxpc3RfZGVsX2luaXQoJmFtcDt0dW5uZWwtJmd0O2xpc3QpOwogCQlhbXQtJmd0O25yX3R1bm5lbHMtLTsKLQkJY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZhbXA7dHVubmVsLSZndDtnY193cSk7CiYjNDM7CQlzcGluX3VubG9ja19iaCgmYW1wO2FtdC0mZ3Q7bG9jayk7CiYjNDM7CiYjNDM7CQlkaXNhYmxlX2RlbGF5ZWRfd29ya19zeW5jKCZhbXA7dHVubmVsLSZndDtnY193cSk7CiAJCWFtdF9jbGVhcl9ncm91cHModHVubmVsKTsKIAkJa2ZyZWVfcmN1KHR1bm5lbCwgcmN1KTsKJiM0MzsKJiM0MzsJCXNwaW5fbG9ja19iaCgmYW1wO2FtdC0mZ3Q7bG9jayk7CiAJfQomIzQzOwlzcGluX3VubG9ja19iaCgmYW1wO2FtdC0mZ3Q7bG9jayk7CiAKIAlyZXR1cm4gMDsKIH0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIyIDA1OjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2MDkKCQkJCQkJCW91dHB1dDogMTQxCgkJCQkJCQl0aG91Z2h0czogMzM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEFNVCBEcml2ZXIgUGF0Y2gqKgoKT2theSwgbGV0IG1lIGJyZWFrIGRvd24gdGhpcyBwYXRjaCBmb3IgdGhlIEFNVCBkcml2ZXIuIE15IGluaXRpYWwgaW1wcmVzc2lvbiBpcyB0aGF0IGl0JiMzOTtzIGFkZHJlc3Npbmcgc29tZSBjcml0aWNhbCBzeW5jaHJvbml6YXRpb24gaXNzdWVzLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgYW10X3R1bm5lbF9leHBpcmVgIGFuZCBgYW10X2Rldl9zdG9wYCBmdW5jdGlvbnMgaW4gYGRyaXZlcnMvbmV0L2FtdC5jYC4KCk15IGZpcnN0IHRob3VnaHQgaXMgdGhpczogdGhlIHByaW1hcnkgZm9jdXMgaXMgb24gcHJldmVudGluZyB1c2UtYWZ0ZXItZnJlZSBhbmQgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyB3aGVuIHR1bm5lbHMgYXJlIGV4cGlyaW5nIGFuZCB0aGUgZGV2aWNlIGlzIGJlaW5nIHN0b3BwZWQuIFRoZSBhZGRpdGlvbiBvZiB0aGUgYGlmIChsaXN0X2VtcHR5KCZhbXA7dHVubmVsLSZndDtsaXN0KSlgIGNoZWNrIGluIGBhbXRfdHVubmVsX2V4cGlyZWAgaXMgYSBzbWFydCBtb3ZlLiBJdCBwcm92aWRlcyBhbiBlYXJseSBleGl0IGlmIHRoZSB0dW5uZWwgaGFzIGFscmVhZHkgYmVlbiByZW1vdmVkIGZyb20gdGhlIGxpc3QsIGVzc2VudGlhbGx5IGEgcXVpY2sgZ3VhcmQgYWdhaW5zdCBvcGVyYXRpbmcgb24gZnJlZWQgbWVtb3J5LgoKVGhlIGNoYW5nZXMgaW4gYGFtdF9kZXZfc3RvcGAgYXJlIGFsc28ga2V5LiBUaGUgc2hpZnQgdG8gYGRpc2FibGVfZGVsYXllZF93b3JrX3N5bmNgLCBgY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jYCwgYW5kIGVzcGVjaWFsbHkgYGxpc3RfZGVsX2luaXRgIHRvIG1hcmsgdHVubmVscyBhcyByZW1vdmVkLCBpbmRpY2F0ZXMgYSBjb25jZXJ0ZWQgZWZmb3J0IHRvIHByb3Blcmx5IGhhbmRsZSB3b3JrIHF1ZXVlIGNhbmNlbGxhdGlvbiBhbmQgbGlzdCBtYW5hZ2VtZW50LiBUaGlzIGNvb3JkaW5hdGVkIGFwcHJvYWNoIGJldHdlZW4gZXhwaXJhdGlvbiBhbmQgZGV2aWNlIHN0b3AgaXMgd2hhdCYjMzk7cyBjcml0aWNhbC4gVGhlIGByY3VfYXNzaWduX3NrX3VzZXJfZGF0YShzaywgTlVMTClgIGJlZm9yZSB0aGUgZmluYWwgY2xlYW51cCBzdGVwcyBpcyBhbHNvIGEgc3Ryb25nIHNpZ25hbCB0aGF0IHRoZSBkZXZlbG9wZXJzIGhhdmUgdGhvdWdodCB0aGlzIHRocm91Z2ggY2FyZWZ1bGx5LCBwcmV2ZW50aW5nIHN0YWxlIHJlZmVyZW5jZXMuCgpTaW5jZSB0aGVyZSBhcmUgbm8gbmV3IGFsbG9jYXRpb25zLCBubyBuZXcgZGF0YSBiZWluZyBzZW50IHRvIHVzZXJzcGFjZSwgYW5kIG5vIGluZGljYXRpb25zIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHVzZWQsIEkgZG9uJiMzOTt0IHNlZSBhbnkgcmlza3MgdGhhdCB3b3VsZCBiZSBjYXVnaHQgYnkgS01TQU4uIFRoZSBwcm9ibGVtcyBiZWluZyBmaXhlZCBhcmUgbGlrZWx5IHJlbGF0ZWQgdG8gdXNlLWFmdGVyLWZyZWUgb3IgcG90ZW50aWFsIGRvdWJsZSBmcmVlcywgd2hpY2ggYXJlIHByZWNpc2VseSB0aGUgdHlwZXMgb2YgaXNzdWVzIHRoYXQgS0FTQU4gKEtlcm5lbCBBZGRyZXNzIFNhbml0aXplcikgaXMgZGVzaWduZWQgdG8gaGFuZGxlLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIEkmIzM5O20gZ29pbmcgdG8gZG91YmxlLWNoZWNrIHRoZSBkZXRhaWxzLiBZZXMsIGBhbXRfdHVubmVsX2V4cGlyZWAgaXMgYSB3b3JrIHF1ZXVlIGZ1bmN0aW9uLCBhbmQgYGFtdF9kZXZfc3RvcGAgaXMgdGhlIG5ldHdvcmsgZGV2aWNlIHN0b3AgZnVuY3Rpb24uIFRoaXMgcGF0Y2ggaXMgZm9jdXNlZCBzb2xlbHkgb24gc3luY2hyb25pemF0aW9uLCB3b3JrIHF1ZXVlIGNhbmNlbGxhdGlvbiwgYW5kIGxpc3QgbWFuYWdlbWVudC4gSXQmIzM5O3Mgbm90IGludHJvZHVjaW5nIGFueSBuZXcgcmlza3MgcmVsYXRlZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeS4KClNvLCBiYXNlZCBvbiB0aGlzIHRob3JvdWdoIHJldmlldywgSSYjMzk7bSBjb25maWRlbnQgdGhhdCB0aGlzIHBhdGNoIGRvZXNuJiMzOTt0IHJlcXVpcmUgS01TQU4uIEkmIzM5O2xsIHNldCBgTmVlZHNLTVNBTj1mYWxzZWAgYW5kIGV4cGxhaW4gdGhhdCB0aGlzIHBhdGNoIGFkZHJlc3NlcyBzeW5jaHJvbml6YXRpb24gaXNzdWVzIGFuZCBndWFyZHMgYWdhaW5zdCB1c2UtYWZ0ZXItZnJlZSBzY2VuYXJpb3MsIHByb2JsZW1zIHRoYXQgYXJlIGFkZXF1YXRlbHkgYWRkcmVzc2VkIGJ5IEtBU0FOLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMiAwNTo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRyZXNzZXMgc3luY2hyb25pemF0aW9uIGFuZCBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgZG91YmxlLWZyZWUgaXNzdWVzIGJldHdlZW4gYGFtdF90dW5uZWxfZXhwaXJlYCBhbmQgYGFtdF9kZXZfc3RvcGAuIEl0IG1vZGlmaWVzIGxpc3QgbWFuYWdlbWVudCBhbmQgd29yayBxdWV1ZSBjYW5jZWxsYXRpb24gbG9naWMgdG8gcHJldmVudCByYWNlIGNvbmRpdGlvbnMgZHVyaW5nIGRldmljZSB0ZWFyZG93bi4gVGhlc2UgdHlwZXMgb2YgYnVncyAoVUFGLCByYWNlIGNvbmRpdGlvbnMsIGludmFsaWQgZnJlZXMpIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dpbmcgdG9vbHMuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCBvciBkYXRhIGNvcGllZCB0byB1c2VyIHNwYWNlIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRyZXNzZXMgc3luY2hyb25pemF0aW9uIGFuZCBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgZG91YmxlLWZyZWUgaXNzdWVzIGJldHdlZW4gYGFtdF90dW5uZWxfZXhwaXJlYCBhbmQgYGFtdF9kZXZfc3RvcGAuIEl0IG1vZGlmaWVzIGxpc3QgbWFuYWdlbWVudCBhbmQgd29yayBxdWV1ZSBjYW5jZWxsYXRpb24gbG9naWMgdG8gcHJldmVudCByYWNlIGNvbmRpdGlvbnMgZHVyaW5nIGRldmljZSB0ZWFyZG93bi4gVGhlc2UgdHlwZXMgb2YgYnVncyAoVUFGLCByYWNlIGNvbmRpdGlvbnMsIGludmFsaWQgZnJlZXMpIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dpbmcgdG9vbHMuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCBvciBkYXRhIGNvcGllZCB0byB1c2VyIHNwYWNlIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIyVDA1OjQyOjM2LjY0MTUwOTIzM1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMTQ4MzM0NjE0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBTVRcIixcbiAgICBcIklQX01VTFRJQ0FTVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImFtdF9kZXZfc3RvcFwiLFxuICAgIFwiYW10X3R1bm5lbF9leHBpcmVcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHJlc3NlcyBzeW5jaHJvbml6YXRpb24gYW5kIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBkb3VibGUtZnJlZSBpc3N1ZXMgYmV0d2VlbiBgYW10X3R1bm5lbF9leHBpcmVgIGFuZCBgYW10X2Rldl9zdG9wYC4gSXQgbW9kaWZpZXMgbGlzdCBtYW5hZ2VtZW50IGFuZCB3b3JrIHF1ZXVlIGNhbmNlbGxhdGlvbiBsb2dpYyB0byBwcmV2ZW50IHJhY2UgY29uZGl0aW9ucyBkdXJpbmcgZGV2aWNlIHRlYXJkb3duLiBUaGVzZSB0eXBlcyBvZiBidWdzIChVQUYsIHJhY2UgY29uZGl0aW9ucywgaW52YWxpZCBmcmVlcykgYXJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIGRlYnVnZ2luZyB0b29scy4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIGRhdGEgY29waWVkIHRvIHVzZXIgc3BhY2UgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgdGVhcmRvd24gbG9naWMgb2YgQU1UIChBdXRvbWF0aWMgTXVsdGljYXN0IFR1bm5lbGluZykgbmV0d29yayBpbnRlcmZhY2VzLCBzcGVjaWZpY2FsbHkgaW4gdGhlIGRldmljZSBzdG9wIGNhbGxiYWNrIChgYW10X2Rldl9zdG9wYCkgYW5kIHRoZSB0dW5uZWwgZXhwaXJhdGlvbiB3b3JrcXVldWUgY2FsbGJhY2sgKGBhbXRfdHVubmVsX2V4cGlyZWApLiBUaGVzZSBhcmUgcmVhY2hhYmxlIGNvcmUgbmV0d29yayBkcml2ZXIgcGF0aHMgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGNyZWF0aW5nIGFuZCBkZXN0cm95aW5nIEFNVCBpbnRlcmZhY2VzIHZpYSBydG5ldGxpbmssIG1ha2luZyB0aGVtIGhpZ2hseSByZWxldmFudCBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjJUMDU6NDI6MzYuNjQxNTE0NzAzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTcyNDg0OTgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMTM4YzM4YTEwOTg4OTY2NDM0NjgwMTA1OTNjZThiNzJhZTM2OTFlNFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEF1ZyAyMiAwNTo0MjozNSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9hbXQuYyBiL2RyaXZlcnMvbmV0L2FtdC5jXFxuaW5kZXggYmRkYzI0ZTE4NTZkZS4uYTVkYjAyZDgxMjkxNyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9hbXQuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2FtdC5jXFxuQEAgLTEzNDgsNiArMTM0OCwxMSBAQCBzdGF0aWMgdm9pZCBhbXRfdHVubmVsX2V4cGlyZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuIFxcdHN0cnVjdCBhbXRfZGV2ICphbXQgPSB0dW5uZWwtXFx1MDAzZWFtdDtcXG4gXFxuIFxcdHNwaW5fbG9ja19iaChcXHUwMDI2YW10LVxcdTAwM2Vsb2NrKTtcXG4rXFx0LyogYW10X2Rldl9zdG9wKCkgbWFya3MgdHVubmVscyBpdCBvd25zIHdpdGggbGlzdF9kZWxfaW5pdCgpLiAqL1xcbitcXHRpZiAobGlzdF9lbXB0eShcXHUwMDI2dHVubmVsLVxcdTAwM2VsaXN0KSkge1xcbitcXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2YW10LVxcdTAwM2Vsb2NrKTtcXG4rXFx0XFx0cmV0dXJuO1xcbitcXHR9XFxuIFxcdHJjdV9yZWFkX2xvY2soKTtcXG4gXFx0bGlzdF9kZWxfcmN1KFxcdTAwMjZ0dW5uZWwtXFx1MDAzZWxpc3QpO1xcbiBcXHRhbXQtXFx1MDAzZW5yX3R1bm5lbHMtLTtcXG5AQCAtMzA2OCw3ICszMDczLDcgQEAgc3RhdGljIGludCBhbXRfZGV2X29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gc3RhdGljIGludCBhbXRfZGV2X3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4ge1xcbiBcXHRzdHJ1Y3QgYW10X2RldiAqYW10ID0gbmV0ZGV2X3ByaXYoZGV2KTtcXG4tXFx0c3RydWN0IGFtdF90dW5uZWxfbGlzdCAqdHVubmVsLCAqdG1wO1xcbitcXHRzdHJ1Y3QgYW10X3R1bm5lbF9saXN0ICp0dW5uZWw7XFxuIFxcdHN0cnVjdCBza19idWZmICpza2I7XFxuIFxcdHN0cnVjdCBzb2NrICpzaztcXG4gXFx0aW50IGk7XFxuQEAgLTMwNzcsOSArMzA4MiwxMSBAQCBzdGF0aWMgaW50IGFtdF9kZXZfc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiBcXHRkaXNhYmxlX2RlbGF5ZWRfd29ya19zeW5jKFxcdTAwMjZhbXQtXFx1MDAzZWRpc2NvdmVyeV93cSk7XFxuIFxcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcXHUwMDI2YW10LVxcdTAwM2VzZWNyZXRfd3EpO1xcbiBcXG4tXFx0Lyogc2h1dGRvd24gKi9cXG4rXFx0LyogUXVpZXNjZSBSWCBwYXRoIGJlZm9yZSB0ZWFyaW5nIGRvd24gdHVubmVscy4gKi9cXG4gXFx0c2sgPSBydG5sX2RlcmVmZXJlbmNlKGFtdC1cXHUwMDNlc2spO1xcbiBcXHRSQ1VfSU5JVF9QT0lOVEVSKGFtdC1cXHUwMDNlc2ssIE5VTEwpO1xcbitcXHRpZiAoc2spXFxuK1xcdFxcdHJjdV9hc3NpZ25fc2tfdXNlcl9kYXRhKHNrLCBOVUxMKTtcXG4gXFx0c3luY2hyb25pemVfbmV0KCk7XFxuIFxcdGlmIChzaylcXG4gXFx0XFx0dWRwX3R1bm5lbF9zb2NrX3JlbGVhc2Uoc2spO1xcbkBAIC0zMDk3LDEzICszMTA0LDIxIEBAIHN0YXRpYyBpbnQgYW10X2Rldl9zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIFxcdGFtdC1cXHUwMDNlcmVxX2NudCA9IDA7XFxuIFxcdFdSSVRFX09OQ0UoYW10LVxcdTAwM2VyZW1vdGVfaXAsIDApO1xcbiBcXG4tXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHR1bm5lbCwgdG1wLCBcXHUwMDI2YW10LVxcdTAwM2V0dW5uZWxfbGlzdCwgbGlzdCkge1xcbi1cXHRcXHRsaXN0X2RlbF9yY3UoXFx1MDAyNnR1bm5lbC1cXHUwMDNlbGlzdCk7XFxuK1xcdHNwaW5fbG9ja19iaChcXHUwMDI2YW10LVxcdTAwM2Vsb2NrKTtcXG4rXFx0d2hpbGUgKCFsaXN0X2VtcHR5KFxcdTAwMjZhbXQtXFx1MDAzZXR1bm5lbF9saXN0KSkge1xcbitcXHRcXHR0dW5uZWwgPSBsaXN0X2ZpcnN0X2VudHJ5KFxcdTAwMjZhbXQtXFx1MDAzZXR1bm5lbF9saXN0LFxcbitcXHRcXHRcXHRcXHRcXHQgIHN0cnVjdCBhbXRfdHVubmVsX2xpc3QsIGxpc3QpO1xcbitcXHRcXHRsaXN0X2RlbF9pbml0KFxcdTAwMjZ0dW5uZWwtXFx1MDAzZWxpc3QpO1xcbiBcXHRcXHRhbXQtXFx1MDAzZW5yX3R1bm5lbHMtLTtcXG4tXFx0XFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFxcdTAwMjZ0dW5uZWwtXFx1MDAzZWdjX3dxKTtcXG4rXFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNmFtdC1cXHUwMDNlbG9jayk7XFxuK1xcbitcXHRcXHRkaXNhYmxlX2RlbGF5ZWRfd29ya19zeW5jKFxcdTAwMjZ0dW5uZWwtXFx1MDAzZWdjX3dxKTtcXG4gXFx0XFx0YW10X2NsZWFyX2dyb3Vwcyh0dW5uZWwpO1xcbiBcXHRcXHRrZnJlZV9yY3UodHVubmVsLCByY3UpO1xcbitcXG4rXFx0XFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZhbXQtXFx1MDAzZWxvY2spO1xcbiBcXHR9XFxuK1xcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZhbXQtXFx1MDAzZWxvY2spO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjJUMDU6NDI6MzcuODE0NjYxMzY2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTYwMjQ3NTMyNzE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFNVFwiLFxuICAgIFwiSVBfTVVMVElDQVNUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYW10X2Rldl9zdG9wXCIsXG4gICAgXCJhbXRfdHVubmVsX2V4cGlyZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB0ZWFyZG93biBsb2dpYyBvZiBBTVQgKEF1dG9tYXRpYyBNdWx0aWNhc3QgVHVubmVsaW5nKSBuZXR3b3JrIGludGVyZmFjZXMsIHNwZWNpZmljYWxseSBpbiB0aGUgZGV2aWNlIHN0b3AgY2FsbGJhY2sgKGBhbXRfZGV2X3N0b3BgKSBhbmQgdGhlIHR1bm5lbCBleHBpcmF0aW9uIHdvcmtxdWV1ZSBjYWxsYmFjayAoYGFtdF90dW5uZWxfZXhwaXJlYCkuIFRoZXNlIGFyZSByZWFjaGFibGUgY29yZSBuZXR3b3JrIGRyaXZlciBwYXRocyB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgYnkgY3JlYXRpbmcgYW5kIGRlc3Ryb3lpbmcgQU1UIGludGVyZmFjZXMgdmlhIHJ0bmV0bGluaywgbWFraW5nIHRoZW0gaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAxMzhjMzhhMTA5ODg5NjY0MzQ2ODAxMDU5M2NlOGI3MmFlMzY5MWU0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgMjIgMDU6NDI6MzUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9hbXQuYyBiL2RyaXZlcnMvbmV0L2FtdC5jXG5pbmRleCBiZGRjMjRlMTg1NmRlLi5hNWRiMDJkODEyOTE3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvYW10LmNcbisrKyBiL2RyaXZlcnMvbmV0L2FtdC5jXG5AQCAtMTM0OCw2ICsxMzQ4LDExIEBAIHN0YXRpYyB2b2lkIGFtdF90dW5uZWxfZXhwaXJlKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiBcdHN0cnVjdCBhbXRfZGV2ICphbXQgPSB0dW5uZWwtXHUwMDNlYW10O1xuIFxuIFx0c3Bpbl9sb2NrX2JoKFx1MDAyNmFtdC1cdTAwM2Vsb2NrKTtcbitcdC8qIGFtdF9kZXZfc3RvcCgpIG1hcmtzIHR1bm5lbHMgaXQgb3ducyB3aXRoIGxpc3RfZGVsX2luaXQoKS4gKi9cbitcdGlmIChsaXN0X2VtcHR5KFx1MDAyNnR1bm5lbC1cdTAwM2VsaXN0KSkge1xuK1x0XHRzcGluX3VubG9ja19iaChcdTAwMjZhbXQtXHUwMDNlbG9jayk7XG4rXHRcdHJldHVybjtcbitcdH1cbiBcdHJjdV9yZWFkX2xvY2soKTtcbiBcdGxpc3RfZGVsX3JjdShcdTAwMjZ0dW5uZWwtXHUwMDNlbGlzdCk7XG4gXHRhbXQtXHUwMDNlbnJfdHVubmVscy0tO1xuQEAgLTMwNjgsNyArMzA3Myw3IEBAIHN0YXRpYyBpbnQgYW10X2Rldl9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gc3RhdGljIGludCBhbXRfZGV2X3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiB7XG4gXHRzdHJ1Y3QgYW10X2RldiAqYW10ID0gbmV0ZGV2X3ByaXYoZGV2KTtcbi1cdHN0cnVjdCBhbXRfdHVubmVsX2xpc3QgKnR1bm5lbCwgKnRtcDtcbitcdHN0cnVjdCBhbXRfdHVubmVsX2xpc3QgKnR1bm5lbDtcbiBcdHN0cnVjdCBza19idWZmICpza2I7XG4gXHRzdHJ1Y3Qgc29jayAqc2s7XG4gXHRpbnQgaTtcbkBAIC0zMDc3LDkgKzMwODIsMTEgQEAgc3RhdGljIGludCBhbXRfZGV2X3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdGRpc2FibGVfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2YW10LVx1MDAzZWRpc2NvdmVyeV93cSk7XG4gXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2YW10LVx1MDAzZXNlY3JldF93cSk7XG4gXG4tXHQvKiBzaHV0ZG93biAqL1xuK1x0LyogUXVpZXNjZSBSWCBwYXRoIGJlZm9yZSB0ZWFyaW5nIGRvd24gdHVubmVscy4gKi9cbiBcdHNrID0gcnRubF9kZXJlZmVyZW5jZShhbXQtXHUwMDNlc2spO1xuIFx0UkNVX0lOSVRfUE9JTlRFUihhbXQtXHUwMDNlc2ssIE5VTEwpO1xuK1x0aWYgKHNrKVxuK1x0XHRyY3VfYXNzaWduX3NrX3VzZXJfZGF0YShzaywgTlVMTCk7XG4gXHRzeW5jaHJvbml6ZV9uZXQoKTtcbiBcdGlmIChzaylcbiBcdFx0dWRwX3R1bm5lbF9zb2NrX3JlbGVhc2Uoc2spO1xuQEAgLTMwOTcsMTMgKzMxMDQsMjEgQEAgc3RhdGljIGludCBhbXRfZGV2X3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdGFtdC1cdTAwM2VyZXFfY250ID0gMDtcbiBcdFdSSVRFX09OQ0UoYW10LVx1MDAzZXJlbW90ZV9pcCwgMCk7XG4gXG4tXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUodHVubmVsLCB0bXAsIFx1MDAyNmFtdC1cdTAwM2V0dW5uZWxfbGlzdCwgbGlzdCkge1xuLVx0XHRsaXN0X2RlbF9yY3UoXHUwMDI2dHVubmVsLVx1MDAzZWxpc3QpO1xuK1x0c3Bpbl9sb2NrX2JoKFx1MDAyNmFtdC1cdTAwM2Vsb2NrKTtcbitcdHdoaWxlICghbGlzdF9lbXB0eShcdTAwMjZhbXQtXHUwMDNldHVubmVsX2xpc3QpKSB7XG4rXHRcdHR1bm5lbCA9IGxpc3RfZmlyc3RfZW50cnkoXHUwMDI2YW10LVx1MDAzZXR1bm5lbF9saXN0LFxuK1x0XHRcdFx0XHQgIHN0cnVjdCBhbXRfdHVubmVsX2xpc3QsIGxpc3QpO1xuK1x0XHRsaXN0X2RlbF9pbml0KFx1MDAyNnR1bm5lbC1cdTAwM2VsaXN0KTtcbiBcdFx0YW10LVx1MDAzZW5yX3R1bm5lbHMtLTtcbi1cdFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNnR1bm5lbC1cdTAwM2VnY193cSk7XG4rXHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmFtdC1cdTAwM2Vsb2NrKTtcbitcbitcdFx0ZGlzYWJsZV9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZ0dW5uZWwtXHUwMDNlZ2Nfd3EpO1xuIFx0XHRhbXRfY2xlYXJfZ3JvdXBzKHR1bm5lbCk7XG4gXHRcdGtmcmVlX3JjdSh0dW5uZWwsIHJjdSk7XG4rXG4rXHRcdHNwaW5fbG9ja19iaChcdTAwMjZhbXQtXHUwMDNlbG9jayk7XG4gXHR9XG4rXHRzcGluX3VubG9ja19iaChcdTAwMjZhbXQtXHUwMDNlbG9jayk7XG4gXG4gXHRyZXR1cm4gMDtcbiB9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMlQwNTo0MjozNy44MTQ2NjI1NjZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MDQ3MzM5MDgxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBBTVQgRHJpdmVyOiBBIFF1aWNrIEFzc2Vzc21lbnQqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCBhIHBhdGNoIGhlcmUgYWZmZWN0aW5nIHRoZSBgZHJpdmVycy9uZXQvYW10LmNgIGZpbGUuIEl0IHNlZW1zIHRvIGJlIGZvY3VzaW5nIG9uIHRoZSBBTVQgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdG91Y2hpbmcgYGFtdF90dW5uZWxfZXhwaXJlYCBhbmQgYGFtdF9kZXZfc3RvcGAuIEhtbSwgYGFtdF90dW5uZWxfZXhwaXJlYCBpcyBhIHdvcmtxdWV1ZSBjYWxsYmFjayBhbmQgYGFtdF9kZXZfc3RvcGAgaXMgYSBuZXR3b3JrIGRldmljZSBzdG9wIGNhbGxiYWNrIOKAkyB0aGF0J3MgZ29vZCB0byBrbm93IGZvciBjb250ZXh0LiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGBsaXN0X2VtcHR5KClgIGNoZWNrIHdpdGhpbiBgYW10X3R1bm5lbF9leHBpcmVgIGFuZCBjaGFuZ2VzIGhvdyB0dW5uZWxzIGFyZSB0b3JuIGRvd24gaW4gYGFtdF9kZXZfc3RvcGAuIFRoZSBpbnRlcmVzdGluZyBiaXQgaXMgdGhlIGFkZGl0aW9uIG9mIGByY3VfYXNzaWduX3NrX3VzZXJfZGF0YShzaywgTlVMTClgIGluIGBhbXRfZGV2X3N0b3BgLlxuXG5HaXZlbiB0aGlzLCBJIG5lZWQgdG8gZGVjaWRlIGlmIHRoaXMgd2FycmFudHMgZnV6emluZy4gSXQncyBhIGJ1ZyBmaXggZm9yIHRoZSBBTVQgZHJpdmVyLCB3aGljaCwgYXMgSSByZWNhbGwsIGlzIHVzZWQgZm9yIEF1dG9tYXRpYyBNdWx0aWNhc3QgVHVubmVsaW5nLiBBTVQgZHJpdmVycyBjYW4gYmUgY3JlYXRlZCB0aHJvdWdoIHJ0bmV0bGluay5cblxuTGV0IG1lIGp1c3QgcXVpY2tseSBjaGVjayBgZHJpdmVycy9uZXQvYW10LmNgIGZvciB0aGUgcmVsZXZhbnQgS2NvbmZpZyBvcHRpb24uIFNlZSBpZiB0aGlzIGlzIHNvbWV0aGluZyB3b3J0aCBzcGVuZGluZyBzb21lIHRpbWUgb24gdG8gZW5zdXJlIGEgcm9idXN0IGZpeC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjYxMiwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5MywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIyVDA1OjQzOjU4LjI4ODA1NTk1MloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzU5NjgxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQU1UXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZz0yODk9Y29uZmlnIFBGQ1BcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctMzAxLVxcbmRyaXZlcnMvbmV0L0tjb25maWc6MzAyOmNvbmZpZyBBTVRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTMwMy1cXHR0cmlzdGF0ZSBcXFwiQXV0b21hdGljIE11bHRpY2FzdCBUdW5uZWxpbmcgKEFNVClcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIyVDA1OjQzOjU4LjM0MTY1OTY2OVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE1NjgyNjI4NjE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgVGFyZ2V0IFByaW9yaXRpemF0aW9uOiBBTVQgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIHRoZSBjb25maWd1cmF0aW9uIEknbSBsb29raW5nIGF0IGlzIGBBTVRgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSB2ZXJpZnkgdGhlIHJlYWNoYWJpbGl0eSBvZiB0d28gZnVuY3Rpb25zOiBgYW10X2Rldl9zdG9wYCBhbmQgYGFtdF90dW5uZWxfZXhwaXJlYC4gYGFtdF9kZXZfc3RvcGAgaXMgdHJpZ2dlcmVkIHdoZW4gdGhlIG5ldHdvcmsgaW50ZXJmYWNlIGdvZXMgZG93biwgYW5kIGBhbXRfdHVubmVsX2V4cGlyZWAgaXMgaW52b2tlZCBmcm9tIGEgZGVsYXllZCB3b3JrcXVldWUuIFNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCwgdGhleSdyZSBib3RoIGRlZmluaXRlbHkgd29ydGggaW52ZXN0aWdhdGluZyBmb3IgZnV6emluZyBwb3RlbnRpYWwuXG5cbk15IGluaXRpYWwgZm9jdXMgaXMgb24gdGhvc2UgdHdvOiBgYW10X3R1bm5lbF9leHBpcmVgIGFuZCBgYW10X2Rldl9zdG9wYC4gQnV0IGhhbmcgb24uLi4gYGFtdF90dW5uZWxfZXhwaXJlYCBpcyAqc3RhdGljKi4gSSBuZWVkIHRvIGRldGVybWluZSBpZiBpdCdzIGlubGluZWQuIEl0J3MgdXNlZCBhcyBhIHdvcmtxdWV1ZSBjYWxsYmFjaywgc28gaXRzIGFkZHJlc3MgbXVzdCBiZSB0YWtlbiwgd2hpY2ggcnVsZXMgb3V0IGlubGluaW5nLiBUaGF0J3MgYSBwb2ludCBhZ2FpbnN0IGl0LCBJIG5lZWQgdG8ga2VlcCB0aGF0IGluIG1pbmQuIFRoZSBpbnN0cnVjdGlvbnMgZG8gYWR2aXNlIHByaW9yaXRpemluZyBub24tc3RhdGljLCBub24taW5saW5lZCBlbnRyeSBwb2ludHMuXG5cbk5vdywgbGV0J3MgbG9vayBhdCBgYW10X2Rldl9zdG9wYC4gSXQgaXMgYWxzbyBzdGF0aWMsIGFuZCB1c2VkIGFzIGBuZG9fc3RvcGAuIEkgbmVlZCB0byBicm9hZGVuIG15IHNlYXJjaCBhbmQgc2VlIGlmIHRoZXJlIGFyZSBiZXR0ZXIgY2FuZGlkYXRlcyBsaWtlIGBhbXRfbmV3bGlua2Agb3Igc29tZXRoaW5nIHNpbWlsYXIsIHRoYXQgYXJlIG5vbi1zdGF0aWMgYW5kIG5vbi1pbmxpbmVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTY3LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjA3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIyVDA1OjQ0OjE0LjAyNDI5MDE5NVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTAzMjgxNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhbXRfZGV2X3N0b3BcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvYW10LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvYW10LmM9MTM0Mz1zdGF0aWMgdm9pZCBhbXRfdHVubmVsX2V4cGlyZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC9hbXQuYy0xMzUwLVxcdHNwaW5fbG9ja19iaChcXHUwMDI2YW10LVxcdTAwM2Vsb2NrKTtcXG5kcml2ZXJzL25ldC9hbXQuYzoxMzUxOlxcdC8qIGFtdF9kZXZfc3RvcCgpIG1hcmtzIHR1bm5lbHMgaXQgb3ducyB3aXRoIGxpc3RfZGVsX2luaXQoKS4gKi9cXG5kcml2ZXJzL25ldC9hbXQuYy0xMzUyLVxcdGlmIChsaXN0X2VtcHR5KFxcdTAwMjZ0dW5uZWwtXFx1MDAzZWxpc3QpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9hbXQuYz0zMDM3PXN0YXRpYyBpbnQgYW10X2Rldl9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9hbXQuYy0zMDcyLVxcbmRyaXZlcnMvbmV0L2FtdC5jOjMwNzM6c3RhdGljIGludCBhbXRfZGV2X3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC9hbXQuYy0zMDc0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2FtdC5jPTMxNTE9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBhbXRfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2FtdC5jLTMxNTQtXFx0Lm5kb19vcGVuXFx0XFx0PSBhbXRfZGV2X29wZW4sXFxuZHJpdmVycy9uZXQvYW10LmM6MzE1NTpcXHQubmRvX3N0b3BcXHRcXHQ9IGFtdF9kZXZfc3RvcCxcXG5kcml2ZXJzL25ldC9hbXQuYy0zMTU2LVxcdC5uZG9fc3RhcnRfeG1pdCAgICAgICAgID0gYW10X2Rldl94bWl0LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMlQwNTo0NDoxNC4wNjkzMjgwNjFaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODY3NDY2ODY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipBbmFseXppbmcgYGFtdF9kZXZfc3RvcGAgYW5kIGBhbXRfdHVubmVsX2V4cGlyZWAqKlxuXG5Pa2F5LCBzbyBgYW10X2Rldl9zdG9wYCBpcyBhIGNhbGxiYWNrIGZ1bmN0aW9uIHdpdGhpbiB0aGUgYGFtdF9uZXRkZXZfb3BzYCBzdHJ1Y3R1cmUsIGdvdCBpdC4gVGhpcyBtYWtlcyBpdCBhIG5ldHdvcmsgZGV2aWNlIG9wZXJhdGlvbiwgcHJvYmFibHkgcmVsYXRlZCB0byBzdG9wcGluZyBvciBkaXNhYmxpbmcgdGhlIEFNVCAoQWN0aXZlIE1hbmFnZW1lbnQgVGVjaG5vbG9neSkgaW50ZXJmYWNlLCBhIGNvbXBvbmVudCB3aXRoIHdoaWNoIEknbSBmYW1pbGlhci4gSSBuZWVkIHRvIGtlZXAgdGhhdCBpbiBtaW5kLiBUaGVuLCBgYW10X3R1bm5lbF9leHBpcmVgIGlzIGEgY2FsbGJhY2sgZm9yIHRoZSB3b3JrcXVldWUuIFRoaXMgc3VnZ2VzdHMgc29tZSBwZXJpb2RpYyBjbGVhbnVwIG9yIHRpbWVvdXQgaGFuZGxpbmcgcmVsYXRlZCB0byBBTVQgdHVubmVscywgc29tZXRoaW5nIGFzeW5jaHJvbm91cy5cblxuUmlnaHQsIHNvIHRvIGNvbnRpbnVlIG9uLCBJJ20gdGhpbmtpbmcgSSBzaG91bGQgcHJvYmFibHkgc2VlIGlmIHRoZXJlIGFyZSBub24tc3RhdGljIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHRoZXNlLiBOb24tc3RhdGljIGZ1bmN0aW9ucyBhcmUgb2Z0ZW4gZ2xvYmFsIG9yIGFjY2Vzc2libGUgZnJvbSBvdGhlciBwYXJ0cyBvZiB0aGUga2VybmVsLiBUaGlzIGNvdWxkIGJlIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlc2UgZnVuY3Rpb25zIGludGVyYWN0IHdpdGggdGhlIGJyb2FkZXIgc3lzdGVtLCBhbmQgd2hlcmUgZGVwZW5kZW5jaWVzIG1pZ2h0IGxpZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDAxNCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIyVDA1OjQ0OjE4LjkzNjc5ODMzNVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDE2Mzk4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhbXRfdHVubmVsX2V4cGlyZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9hbXQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9hbXQuYz0xMzI3PXN0YXRpYyB2b2lkIGFtdF9jbGVhcl9ncm91cHMoc3RydWN0IGFtdF90dW5uZWxfbGlzdCAqdHVubmVsKVxcbi0tXFxuZHJpdmVycy9uZXQvYW10LmMtMTM0Mi1cXG5kcml2ZXJzL25ldC9hbXQuYzoxMzQzOnN0YXRpYyB2b2lkIGFtdF90dW5uZWxfZXhwaXJlKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL25ldC9hbXQuYy0xMzQ0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2FtdC5jPTI3MTA9c3RhdGljIGJvb2wgYW10X3JlcXVlc3RfaGFuZGxlcihzdHJ1Y3QgYW10X2RldiAqYW10LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvYW10LmMtMjc1Ny1cXG5kcml2ZXJzL25ldC9hbXQuYzoyNzU4OlxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZ0dW5uZWwtXFx1MDAzZWdjX3dxLCBhbXRfdHVubmVsX2V4cGlyZSk7XFxuZHJpdmVycy9uZXQvYW10LmMtMjc1OS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjJUMDU6NDQ6MTguOTgwOTY2NzgxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTExNTYwNDc2ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRm9jdXNpbmcgb24gdGhlIEFNVCBUdW5uZWwgRXhwaXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyBgYW10X3R1bm5lbF9leHBpcmVgIGlzIHVzZWQg4oCTIGl0J3MgcGFydCBvZiBgSU5JVF9ERUxBWUVEX1dPUktgLiBIbW0sIGludGVyZXN0aW5nLiBUaGUga2V5IGhlcmUgaXMgdGhhdCBib3RoIGBhbXRfZGV2X3N0b3BgIGFuZCBgYW10X3R1bm5lbF9leHBpcmVgIGFyZSBtb2RpZmllZCwgYW5kIHRoZXkgYXJlIGJvdGggY2FsbGJhY2tzLCBtYWtpbmcgdGhlbSBwcmltZSBjYW5kaWRhdGVzIGZvciBgRm9jdXNTeW1ib2xzYC4gVGhleSBhcmUgc3RhdGljLCB5ZXMsIGJ1dCB0aGVpciBhZGRyZXNzZXMgYXJlIHRha2VuLCBtZWFuaW5nIHRoZXkgYXJlbid0IGlubGluZWQgYnkgdGhlIGNvbXBpbGVyLiBUaGlzIGlzIGdyZWF0OyBiZWNhdXNlIHRoZXkgaGF2ZSBkaXN0aW5jdCBhZGRyZXNzZXMsIHdlIGNhbiBob29rIHRoZW0hXG5cbldhaXQgYSBzZWNvbmTigKYgSSBuZWVkIHRvIHJlLXJlYWQgdGhhdCBwcm9tcHQuIEl0IGVtcGhhc2l6ZXMgcHJlZmVycmluZyBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMgb3ZlciBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucyB0aGF0IGFyZSB0eXBpY2FsbHkgaW5saW5lZC4gQnV0LCB0aGUgYWRkcmVzc2VzIGFyZSB0YWtlbiwgc28gdGhleSdyZSBub3QgaW5saW5lZC5cblxuVGhlIGFkZHJlc3NlcyBhcmUgdGFrZW4sIHNvIHdlIGFyZSBva2F5IVxuQ291bGQgd2UgKmFsc28qIGNvbnNpZGVyIGFkZGluZyBgYW10X25ld2xpbmtgIG9yIGBhbXRfZGV2X29wZW5gPyBNYXliZSwgYnV0IGZvciBub3csIGxldCdzIGtlZXAgaXQgc2ltcGxlIGFuZCBqdXN0IGdvIHdpdGggYGFtdF9kZXZfc3RvcGAgYW5kIGBhbXRfdHVubmVsX2V4cGlyZWAuIFRoaXMgc2VlbXMgbGlrZSB0aGUgbW9zdCBsb2dpY2FsIHBhdGguXG5cbkJlZm9yZSBzb2xpZGlmeWluZyB0aGlzLCBsZXQncyBkb3VibGUgY2hlY2sgaWYgdGhlcmUgYXJlIG90aGVyIGNvbmZpZ3VyYXRpb25zIHRoYXQgYWZmZWN0IHRoaXMuIEkgYmVsaWV2ZSBgQU1UYCBpcyBkZXBlbmRlbnQgb24gYElORVRgIGFuZCBgSVBWNmAuIEkgd2lsbCBjaGVjayBgZHJpdmVycy9uZXQvS2NvbmZpZ2AgdG8gY29uZmlybSBhbnkgZGVwZW5kZW5jeS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDQ5NiwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMlQwNTo0NDozMC4xMzcwMTgzMzZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MDk2NTI2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBBTVRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnPTI4OT1jb25maWcgUEZDUFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMDEtXFxuZHJpdmVycy9uZXQvS2NvbmZpZzozMDI6Y29uZmlnIEFNVFxcbmRyaXZlcnMvbmV0L0tjb25maWctMzAzLVxcdHRyaXN0YXRlIFxcXCJBdXRvbWF0aWMgTXVsdGljYXN0IFR1bm5lbGluZyAoQU1UKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjJUMDU6NDQ6MzAuMTgxMTE3NDEyWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE3MzEwNDE1Nzg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93biwgcHJlc2VudGVkIHRvIGEgZmVsbG93IGV4cGVydDpcblxuKipEaXZpbmcgaW50byB0aGUgQU1UIEtjb25maWcqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaG93IEludGVsIEFjdGl2ZSBNYW5hZ2VtZW50IFRlY2hub2xvZ3kgKEFNVCkgaXMgY29uZmlndXJlZCBpbiB0aGlzIHByb2plY3QuIFNvLCB0aGUgbG9naWNhbCBmaXJzdCBzdGVwIGlzIHRvIGRpZyBpbnRvIHRoZSBLY29uZmlnIGZpbGUuIEknbSBnb2luZyB0byBzdGFydCBieSBnZXR0aW5nIG15IGJlYXJpbmdzOiB3aGF0IG9wdGlvbnMgYXJlIGF2YWlsYWJsZT8gV2hhdCBkZXBlbmRlbmNpZXMgZXhpc3Q/IFdoYXQgYXJlIHRoZSBkZWZhdWx0IHNldHRpbmdzPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYnVpbGRpbmcgYmxvY2tzIGZvciB0aGlzIHNwZWNpZmljIGltcGxlbWVudGF0aW9uLiBJJ20gbG9va2luZyBmb3IgY2x1ZXMgYWJvdXQgdGhlIGNob3NlbiBjb25maWd1cmF0aW9uLCBhbnkgcmVsZXZhbnQgY3VzdG9taXphdGlvbiBkb25lLCBhbmQgaWYgdGhlcmUgYXJlIGFueSBnb3RjaGFzIEkgbmVlZCB0byBhbnRpY2lwYXRlLiBMZXQncyBzZWUgd2hhdCB3ZSd2ZSBnb3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUxMjIsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMlQwNTo0NDo0Ny40OTE1MzU3NVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MzMyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDMwMCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDMwMDpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIHBmY3AuXFxuIDMwMTpcXHRcXG4gMzAyOlxcdGNvbmZpZyBBTVRcXG4gMzAzOlxcdFxcdHRyaXN0YXRlIFxcXCJBdXRvbWF0aWMgTXVsdGljYXN0IFR1bm5lbGluZyAoQU1UKVxcXCJcXG4gMzA0OlxcdFxcdGRlcGVuZHMgb24gSU5FVCBcXHUwMDI2XFx1MDAyNiBJUF9NVUxUSUNBU1RcXG4gMzA1OlxcdFxcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxcbiAzMDY6XFx0XFx0aGVscFxcbiAzMDc6XFx0XFx0ICBUaGlzIGFsbG93cyBvbmUgdG8gY3JlYXRlIEFNVChBdXRvbWF0aWMgTXVsdGljYXN0IFR1bm5lbGluZylcXG4gMzA4OlxcdFxcdCAgdmlydHVhbCBpbnRlcmZhY2VzIHRoYXQgcHJvdmlkZSBtdWx0aWNhc3QgdHVubmVsaW5nLlxcbiAzMDk6XFx0XFx0ICBUaGVyZSBhcmUgdHdvIHJvbGVzLCBHYXRld2F5LCBhbmQgUmVsYXkuXFxuIDMxMDpcXHRcXHQgIEdhdGV3YXkgRW5jYXBzdWxhdGVzIElHTVAvTUxEIHRyYWZmaWMgZnJvbSBsaXN0ZW5lcnMgdG8gdGhlIFJlbGF5LlxcbiAzMTE6XFx0XFx0ICBHYXRld2F5IERlY2Fwc3VsYXRlcyBtdWx0aWNhc3QgdHJhZmZpYyBmcm9tIHRoZSBSZWxheSB0byBMaXN0ZW5lcnMuXFxuIDMxMjpcXHRcXHQgIFJlbGF5IEVuY2Fwc3VsYXRlcyBtdWx0aWNhc3QgdHJhZmZpYyBmcm9tIFNvdXJjZXMgdG8gR2F0ZXdheS5cXG4gMzEzOlxcdFxcdCAgUmVsYXkgRGVjYXBzdWxhdGVzIElHTVAvTUxEIHRyYWZmaWMgZnJvbSBHYXRld2F5LlxcbiAzMTQ6XFx0XFxuIDMxNTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXJzIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXFxuIDMxNjpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIGFtdC5cXG4gMzE3OlxcdFxcbiAzMTg6XFx0Y29uZmlnIE1BQ1NFQ1xcbiAzMTk6XFx0XFx0dHJpc3RhdGUgXFxcIklFRUUgODAyLjFBRSBNQUMtbGV2ZWwgZW5jcnlwdGlvbiAoTUFDc2VjKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjJUMDU6NDQ6NDcuNDkxNjMwNzVaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA0OTM5NDM1MjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ29uZmlndXJhdGlvbiBTdHJhdGVneSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIGRlcGVuZGVuY2llczogYElORVRgIGFuZCBgSVBfTVVMVElDQVNUYC4gYElORVRgIGlzIHVzdWFsbHkgYSBnaXZlbiwgYnV0IGxldCdzIGp1c3QgbWFrZSBzdXJlIGl0J3MgZXhwbGljaXRseSBlbmFibGVkLiBUaGF0IG1lYW5zIEkgbmVlZCB0byBtYWtlIHN1cmUgYEFNVGAsIGBJUF9NVUxUSUNBU1RgLCBhbmQsIGp1c3QgaW4gY2FzZSwgYElORVRgLCBhcmUgYWxsIGluY2x1ZGVkIGluIHRoZSBgRW5hYmxlQ29uZmlnc2AgbGlzdC4gTm93LCBob2xkIG9uLCBgSVBfTVVMVElDQVNUYCBpc24ndCBhIHNpbXBsZSBkZXBlbmRlbmN5OyBpdCdzIGEgKmNvbmZpZyohIFJpZ2h0LiBHb3QgaXQuXG5cbk5leHQsIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBgYW10X2Rldl9zdG9wYCBhbmQgYGFtdF90dW5uZWxfZXhwaXJlYCBhcmUgdGhlIHJpZ2h0IHN5bWJvbHMgdG8gYmUgd29ya2luZyB3aXRoLiBJIG5lZWQgdG8gZW5zdXJlIHRoZXkncmUgdGhlIGRpcmVjdCB0YXJnZXRzIG9mIHRoZSBtb2RpZmljYXRpb25zLiAqWWVzKiwgbG9va2luZyBhdCB0aGUgcmVsZXZhbnQgY29kZSwgdGhleSdyZSB0aGUgb25lcyBiZWluZyBkaXJlY3RseSBjaGFuZ2VkLiBHb29kLlxuXG5XaXRoIHRoYXQgY29uZmlybWVkLCBJJ2xsIGdvIGFoZWFkIGFuZCBidWlsZCBteSBzb2x1dGlvbiwgbWFraW5nIHN1cmUgdG8gdXNlIGBzZXQtcmVzdWx0c2AgYXBwcm9wcmlhdGVseSB0byByZWZsZWN0IHRoZSBkZXNpcmVkIGNvbmZpZ3VyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2NTcsIk91dHB1dFRva2VucyI6MTMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMlQwNTo0NToxNy45ODU1NzY5NjVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NjYxNDY3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQU1UXCIsXG4gICAgXCJJUF9NVUxUSUNBU1RcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhbXRfZGV2X3N0b3BcIixcbiAgICBcImFtdF90dW5uZWxfZXhwaXJlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHRlYXJkb3duIGxvZ2ljIG9mIEFNVCAoQXV0b21hdGljIE11bHRpY2FzdCBUdW5uZWxpbmcpIG5ldHdvcmsgaW50ZXJmYWNlcywgc3BlY2lmaWNhbGx5IGluIHRoZSBkZXZpY2Ugc3RvcCBjYWxsYmFjayAoYGFtdF9kZXZfc3RvcGApIGFuZCB0aGUgdHVubmVsIGV4cGlyYXRpb24gd29ya3F1ZXVlIGNhbGxiYWNrIChgYW10X3R1bm5lbF9leHBpcmVgKS4gVGhlc2UgYXJlIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmsgZHJpdmVyIHBhdGhzIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBjcmVhdGluZyBhbmQgZGVzdHJveWluZyBBTVQgaW50ZXJmYWNlcyB2aWEgcnRuZXRsaW5rLCBtYWtpbmcgdGhlbSBoaWdobHkgcmVsZXZhbnQgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQU1UXCIsXG4gICAgXCJJUF9NVUxUSUNBU1RcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhbXRfZGV2X3N0b3BcIixcbiAgICBcImFtdF90dW5uZWxfZXhwaXJlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHRlYXJkb3duIGxvZ2ljIG9mIEFNVCAoQXV0b21hdGljIE11bHRpY2FzdCBUdW5uZWxpbmcpIG5ldHdvcmsgaW50ZXJmYWNlcywgc3BlY2lmaWNhbGx5IGluIHRoZSBkZXZpY2Ugc3RvcCBjYWxsYmFjayAoYGFtdF9kZXZfc3RvcGApIGFuZCB0aGUgdHVubmVsIGV4cGlyYXRpb24gd29ya3F1ZXVlIGNhbGxiYWNrIChgYW10X3R1bm5lbF9leHBpcmVgKS4gVGhlc2UgYXJlIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmsgZHJpdmVyIHBhdGhzIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBjcmVhdGluZyBhbmQgZGVzdHJveWluZyBBTVQgaW50ZXJmYWNlcyB2aWEgcnRuZXRsaW5rLCBtYWtpbmcgdGhlbSBoaWdobHkgcmVsZXZhbnQgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIyVDA1OjQ1OjE4LjA2MjE5ODMxNVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDAwNjI2NDgyNjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMlQwNTo0NToxOC4wNjI2MzU2ODZaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NDAwNjIyMDc0MDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHJlc3NlcyBzeW5jaHJvbml6YXRpb24gYW5kIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBkb3VibGUtZnJlZSBpc3N1ZXMgYmV0d2VlbiBgYW10X3R1bm5lbF9leHBpcmVgIGFuZCBgYW10X2Rldl9zdG9wYC4gSXQgbW9kaWZpZXMgbGlzdCBtYW5hZ2VtZW50IGFuZCB3b3JrIHF1ZXVlIGNhbmNlbGxhdGlvbiBsb2dpYyB0byBwcmV2ZW50IHJhY2UgY29uZGl0aW9ucyBkdXJpbmcgZGV2aWNlIHRlYXJkb3duLiBUaGVzZSB0eXBlcyBvZiBidWdzIChVQUYsIHJhY2UgY29uZGl0aW9ucywgaW52YWxpZCBmcmVlcykgYXJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIGRlYnVnZ2luZyB0b29scy4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIGRhdGEgY29waWVkIHRvIHVzZXIgc3BhY2UgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAxMzhjMzhhMTA5ODg5NjY0MzQ2ODAxMDU5M2NlOGI3MmFlMzY5MWU0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgMjIgMDU6NDI6MzUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9hbXQuYyBiL2RyaXZlcnMvbmV0L2FtdC5jXG5pbmRleCBiZGRjMjRlMTg1NmRlLi5hNWRiMDJkODEyOTE3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvYW10LmNcbisrKyBiL2RyaXZlcnMvbmV0L2FtdC5jXG5AQCAtMTM0OCw2ICsxMzQ4LDExIEBAIHN0YXRpYyB2b2lkIGFtdF90dW5uZWxfZXhwaXJlKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiBcdHN0cnVjdCBhbXRfZGV2ICphbXQgPSB0dW5uZWwtXHUwMDNlYW10O1xuIFxuIFx0c3Bpbl9sb2NrX2JoKFx1MDAyNmFtdC1cdTAwM2Vsb2NrKTtcbitcdC8qIGFtdF9kZXZfc3RvcCgpIG1hcmtzIHR1bm5lbHMgaXQgb3ducyB3aXRoIGxpc3RfZGVsX2luaXQoKS4gKi9cbitcdGlmIChsaXN0X2VtcHR5KFx1MDAyNnR1bm5lbC1cdTAwM2VsaXN0KSkge1xuK1x0XHRzcGluX3VubG9ja19iaChcdTAwMjZhbXQtXHUwMDNlbG9jayk7XG4rXHRcdHJldHVybjtcbitcdH1cbiBcdHJjdV9yZWFkX2xvY2soKTtcbiBcdGxpc3RfZGVsX3JjdShcdTAwMjZ0dW5uZWwtXHUwMDNlbGlzdCk7XG4gXHRhbXQtXHUwMDNlbnJfdHVubmVscy0tO1xuQEAgLTMwNjgsNyArMzA3Myw3IEBAIHN0YXRpYyBpbnQgYW10X2Rldl9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gc3RhdGljIGludCBhbXRfZGV2X3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiB7XG4gXHRzdHJ1Y3QgYW10X2RldiAqYW10ID0gbmV0ZGV2X3ByaXYoZGV2KTtcbi1cdHN0cnVjdCBhbXRfdHVubmVsX2xpc3QgKnR1bm5lbCwgKnRtcDtcbitcdHN0cnVjdCBhbXRfdHVubmVsX2xpc3QgKnR1bm5lbDtcbiBcdHN0cnVjdCBza19idWZmICpza2I7XG4gXHRzdHJ1Y3Qgc29jayAqc2s7XG4gXHRpbnQgaTtcbkBAIC0zMDc3LDkgKzMwODIsMTEgQEAgc3RhdGljIGludCBhbXRfZGV2X3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdGRpc2FibGVfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2YW10LVx1MDAzZWRpc2NvdmVyeV93cSk7XG4gXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2YW10LVx1MDAzZXNlY3JldF93cSk7XG4gXG4tXHQvKiBzaHV0ZG93biAqL1xuK1x0LyogUXVpZXNjZSBSWCBwYXRoIGJlZm9yZSB0ZWFyaW5nIGRvd24gdHVubmVscy4gKi9cbiBcdHNrID0gcnRubF9kZXJlZmVyZW5jZShhbXQtXHUwMDNlc2spO1xuIFx0UkNVX0lOSVRfUE9JTlRFUihhbXQtXHUwMDNlc2ssIE5VTEwpO1xuK1x0aWYgKHNrKVxuK1x0XHRyY3VfYXNzaWduX3NrX3VzZXJfZGF0YShzaywgTlVMTCk7XG4gXHRzeW5jaHJvbml6ZV9uZXQoKTtcbiBcdGlmIChzaylcbiBcdFx0dWRwX3R1bm5lbF9zb2NrX3JlbGVhc2Uoc2spO1xuQEAgLTMwOTcsMTMgKzMxMDQsMjEgQEAgc3RhdGljIGludCBhbXRfZGV2X3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdGFtdC1cdTAwM2VyZXFfY250ID0gMDtcbiBcdFdSSVRFX09OQ0UoYW10LVx1MDAzZXJlbW90ZV9pcCwgMCk7XG4gXG4tXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUodHVubmVsLCB0bXAsIFx1MDAyNmFtdC1cdTAwM2V0dW5uZWxfbGlzdCwgbGlzdCkge1xuLVx0XHRsaXN0X2RlbF9yY3UoXHUwMDI2dHVubmVsLVx1MDAzZWxpc3QpO1xuK1x0c3Bpbl9sb2NrX2JoKFx1MDAyNmFtdC1cdTAwM2Vsb2NrKTtcbitcdHdoaWxlICghbGlzdF9lbXB0eShcdTAwMjZhbXQtXHUwMDNldHVubmVsX2xpc3QpKSB7XG4rXHRcdHR1bm5lbCA9IGxpc3RfZmlyc3RfZW50cnkoXHUwMDI2YW10LVx1MDAzZXR1bm5lbF9saXN0LFxuK1x0XHRcdFx0XHQgIHN0cnVjdCBhbXRfdHVubmVsX2xpc3QsIGxpc3QpO1xuK1x0XHRsaXN0X2RlbF9pbml0KFx1MDAyNnR1bm5lbC1cdTAwM2VsaXN0KTtcbiBcdFx0YW10LVx1MDAzZW5yX3R1bm5lbHMtLTtcbi1cdFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNnR1bm5lbC1cdTAwM2VnY193cSk7XG4rXHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmFtdC1cdTAwM2Vsb2NrKTtcbitcbitcdFx0ZGlzYWJsZV9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZ0dW5uZWwtXHUwMDNlZ2Nfd3EpO1xuIFx0XHRhbXRfY2xlYXJfZ3JvdXBzKHR1bm5lbCk7XG4gXHRcdGtmcmVlX3JjdSh0dW5uZWwsIHJjdSk7XG4rXG4rXHRcdHNwaW5fbG9ja19iaChcdTAwMjZhbXQtXHUwMDNlbG9jayk7XG4gXHR9XG4rXHRzcGluX3VubG9ja19iaChcdTAwMjZhbXQtXHUwMDNlbG9jayk7XG4gXG4gXHRyZXR1cm4gMDtcbiB9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMlQwNTo0NToxOC4wNjI2MzY1MzVaIiwiU2VxIjoxNywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAwNjIxNjY2MzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQU1UIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIGxldCBtZSBicmVhayBkb3duIHRoaXMgcGF0Y2ggZm9yIHRoZSBBTVQgZHJpdmVyLiBNeSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCBpdCdzIGFkZHJlc3Npbmcgc29tZSBjcml0aWNhbCBzeW5jaHJvbml6YXRpb24gaXNzdWVzLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgYW10X3R1bm5lbF9leHBpcmVgIGFuZCBgYW10X2Rldl9zdG9wYCBmdW5jdGlvbnMgaW4gYGRyaXZlcnMvbmV0L2FtdC5jYC5cblxuTXkgZmlyc3QgdGhvdWdodCBpcyB0aGlzOiB0aGUgcHJpbWFyeSBmb2N1cyBpcyBvbiBwcmV2ZW50aW5nIHVzZS1hZnRlci1mcmVlIGFuZCBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIHdoZW4gdHVubmVscyBhcmUgZXhwaXJpbmcgYW5kIHRoZSBkZXZpY2UgaXMgYmVpbmcgc3RvcHBlZC4gVGhlIGFkZGl0aW9uIG9mIHRoZSBgaWYgKGxpc3RfZW1wdHkoXHUwMDI2dHVubmVsLVx1MDAzZWxpc3QpKWAgY2hlY2sgaW4gYGFtdF90dW5uZWxfZXhwaXJlYCBpcyBhIHNtYXJ0IG1vdmUuIEl0IHByb3ZpZGVzIGFuIGVhcmx5IGV4aXQgaWYgdGhlIHR1bm5lbCBoYXMgYWxyZWFkeSBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgbGlzdCwgZXNzZW50aWFsbHkgYSBxdWljayBndWFyZCBhZ2FpbnN0IG9wZXJhdGluZyBvbiBmcmVlZCBtZW1vcnkuXG5cblRoZSBjaGFuZ2VzIGluIGBhbXRfZGV2X3N0b3BgIGFyZSBhbHNvIGtleS4gVGhlIHNoaWZ0IHRvIGBkaXNhYmxlX2RlbGF5ZWRfd29ya19zeW5jYCwgYGNhbmNlbF9kZWxheWVkX3dvcmtfc3luY2AsIGFuZCBlc3BlY2lhbGx5IGBsaXN0X2RlbF9pbml0YCB0byBtYXJrIHR1bm5lbHMgYXMgcmVtb3ZlZCwgaW5kaWNhdGVzIGEgY29uY2VydGVkIGVmZm9ydCB0byBwcm9wZXJseSBoYW5kbGUgd29yayBxdWV1ZSBjYW5jZWxsYXRpb24gYW5kIGxpc3QgbWFuYWdlbWVudC4gVGhpcyBjb29yZGluYXRlZCBhcHByb2FjaCBiZXR3ZWVuIGV4cGlyYXRpb24gYW5kIGRldmljZSBzdG9wIGlzIHdoYXQncyBjcml0aWNhbC4gVGhlIGByY3VfYXNzaWduX3NrX3VzZXJfZGF0YShzaywgTlVMTClgIGJlZm9yZSB0aGUgZmluYWwgY2xlYW51cCBzdGVwcyBpcyBhbHNvIGEgc3Ryb25nIHNpZ25hbCB0aGF0IHRoZSBkZXZlbG9wZXJzIGhhdmUgdGhvdWdodCB0aGlzIHRocm91Z2ggY2FyZWZ1bGx5LCBwcmV2ZW50aW5nIHN0YWxlIHJlZmVyZW5jZXMuXG5cblNpbmNlIHRoZXJlIGFyZSBubyBuZXcgYWxsb2NhdGlvbnMsIG5vIG5ldyBkYXRhIGJlaW5nIHNlbnQgdG8gdXNlcnNwYWNlLCBhbmQgbm8gaW5kaWNhdGlvbnMgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgdXNlZCwgSSBkb24ndCBzZWUgYW55IHJpc2tzIHRoYXQgd291bGQgYmUgY2F1Z2h0IGJ5IEtNU0FOLiBUaGUgcHJvYmxlbXMgYmVpbmcgZml4ZWQgYXJlIGxpa2VseSByZWxhdGVkIHRvIHVzZS1hZnRlci1mcmVlIG9yIHBvdGVudGlhbCBkb3VibGUgZnJlZXMsIHdoaWNoIGFyZSBwcmVjaXNlbHkgdGhlIHR5cGVzIG9mIGlzc3VlcyB0aGF0IEtBU0FOIChLZXJuZWwgQWRkcmVzcyBTYW5pdGl6ZXIpIGlzIGRlc2lnbmVkIHRvIGhhbmRsZS5cblxuSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIEknbSBnb2luZyB0byBkb3VibGUtY2hlY2sgdGhlIGRldGFpbHMuIFllcywgYGFtdF90dW5uZWxfZXhwaXJlYCBpcyBhIHdvcmsgcXVldWUgZnVuY3Rpb24sIGFuZCBgYW10X2Rldl9zdG9wYCBpcyB0aGUgbmV0d29yayBkZXZpY2Ugc3RvcCBmdW5jdGlvbi4gVGhpcyBwYXRjaCBpcyBmb2N1c2VkIHNvbGVseSBvbiBzeW5jaHJvbml6YXRpb24sIHdvcmsgcXVldWUgY2FuY2VsbGF0aW9uLCBhbmQgbGlzdCBtYW5hZ2VtZW50LiBJdCdzIG5vdCBpbnRyb2R1Y2luZyBhbnkgbmV3IHJpc2tzIHJlbGF0ZWQgdG8gdW5pbml0aWFsaXplZCBtZW1vcnkuXG5cblNvLCBiYXNlZCBvbiB0aGlzIHRob3JvdWdoIHJldmlldywgSSdtIGNvbmZpZGVudCB0aGF0IHRoaXMgcGF0Y2ggZG9lc24ndCByZXF1aXJlIEtNU0FOLiBJJ2xsIHNldCBgTmVlZHNLTVNBTj1mYWxzZWAgYW5kIGV4cGxhaW4gdGhhdCB0aGlzIHBhdGNoIGFkZHJlc3NlcyBzeW5jaHJvbml6YXRpb24gaXNzdWVzIGFuZCBndWFyZHMgYWdhaW5zdCB1c2UtYWZ0ZXItZnJlZSBzY2VuYXJpb3MsIHByb2JsZW1zIHRoYXQgYXJlIGFkZXF1YXRlbHkgYWRkcmVzc2VkIGJ5IEtBU0FOLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjA5LCJPdXRwdXRUb2tlbnMiOjE0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzOSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIyVDA1OjQ1OjU4LjEyNDgwNTYxMloiLCJTZXEiOjE4LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIHN5bmNocm9uaXphdGlvbiBhbmQgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIGRvdWJsZS1mcmVlIGlzc3VlcyBiZXR3ZWVuIGBhbXRfdHVubmVsX2V4cGlyZWAgYW5kIGBhbXRfZGV2X3N0b3BgLiBJdCBtb2RpZmllcyBsaXN0IG1hbmFnZW1lbnQgYW5kIHdvcmsgcXVldWUgY2FuY2VsbGF0aW9uIGxvZ2ljIHRvIHByZXZlbnQgcmFjZSBjb25kaXRpb25zIGR1cmluZyBkZXZpY2UgdGVhcmRvd24uIFRoZXNlIHR5cGVzIG9mIGJ1Z3MgKFVBRiwgcmFjZSBjb25kaXRpb25zLCBpbnZhbGlkIGZyZWVzKSBhcmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBrZXJuZWwgZGVidWdnaW5nIHRvb2xzLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBhbGxvY2F0aW9ucywgb3IgZGF0YSBjb3BpZWQgdG8gdXNlciBzcGFjZSB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHJlc3NlcyBzeW5jaHJvbml6YXRpb24gYW5kIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBkb3VibGUtZnJlZSBpc3N1ZXMgYmV0d2VlbiBgYW10X3R1bm5lbF9leHBpcmVgIGFuZCBgYW10X2Rldl9zdG9wYC4gSXQgbW9kaWZpZXMgbGlzdCBtYW5hZ2VtZW50IGFuZCB3b3JrIHF1ZXVlIGNhbmNlbGxhdGlvbiBsb2dpYyB0byBwcmV2ZW50IHJhY2UgY29uZGl0aW9ucyBkdXJpbmcgZGV2aWNlIHRlYXJkb3duLiBUaGVzZSB0eXBlcyBvZiBidWdzIChVQUYsIHJhY2UgY29uZGl0aW9ucywgaW52YWxpZCBmcmVlcykgYXJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIGRlYnVnZ2luZyB0b29scy4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIGRhdGEgY29waWVkIHRvIHVzZXIgc3BhY2UgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflow58n2t[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-22 04:59:52 +0000 UTC FinishedAt: 2026-08-22 05:45:59 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "4e15e89faac9f308baeb01f46c13a051814d2449", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "AMT", "IP_MULTICAST" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "4e15e89faac9f308baeb01f46c13a051814d2449", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "AMT", "IP_MULTICAST" ], "series_id": "3dff9c9d-6562-40c5-9763-668adff23ea4" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "amt_dev_stop", "amt_tunnel_expire" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIyIDA1OjQyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FNVCYjMzQ7LAogICAgJiMzNDtJUF9NVUxUSUNBU1QmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthbXRfZGV2X3N0b3AmIzM0OywKICAgICYjMzQ7YW10X3R1bm5lbF9leHBpcmUmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRyZXNzZXMgc3luY2hyb25pemF0aW9uIGFuZCBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgZG91YmxlLWZyZWUgaXNzdWVzIGJldHdlZW4gYGFtdF90dW5uZWxfZXhwaXJlYCBhbmQgYGFtdF9kZXZfc3RvcGAuIEl0IG1vZGlmaWVzIGxpc3QgbWFuYWdlbWVudCBhbmQgd29yayBxdWV1ZSBjYW5jZWxsYXRpb24gbG9naWMgdG8gcHJldmVudCByYWNlIGNvbmRpdGlvbnMgZHVyaW5nIGRldmljZSB0ZWFyZG93bi4gVGhlc2UgdHlwZXMgb2YgYnVncyAoVUFGLCByYWNlIGNvbmRpdGlvbnMsIGludmFsaWQgZnJlZXMpIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dpbmcgdG9vbHMuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCBvciBkYXRhIGNvcGllZCB0byB1c2VyIHNwYWNlIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB0ZWFyZG93biBsb2dpYyBvZiBBTVQgKEF1dG9tYXRpYyBNdWx0aWNhc3QgVHVubmVsaW5nKSBuZXR3b3JrIGludGVyZmFjZXMsIHNwZWNpZmljYWxseSBpbiB0aGUgZGV2aWNlIHN0b3AgY2FsbGJhY2sgKGBhbXRfZGV2X3N0b3BgKSBhbmQgdGhlIHR1bm5lbCBleHBpcmF0aW9uIHdvcmtxdWV1ZSBjYWxsYmFjayAoYGFtdF90dW5uZWxfZXhwaXJlYCkuIFRoZXNlIGFyZSByZWFjaGFibGUgY29yZSBuZXR3b3JrIGRyaXZlciBwYXRocyB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgYnkgY3JlYXRpbmcgYW5kIGRlc3Ryb3lpbmcgQU1UIGludGVyZmFjZXMgdmlhIHJ0bmV0bGluaywgbWFraW5nIHRoZW0gaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIyIDA1OjQyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMTM4YzM4YTEwOTg4OTY2NDM0NjgwMTA1OTNjZThiNzJhZTM2OTFlNFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDIyIDA1OjQyOjM1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2FtdC5jIGIvZHJpdmVycy9uZXQvYW10LmNcbmluZGV4IGJkZGMyNGUxODU2ZGUuLmE1ZGIwMmQ4MTI5MTcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9hbXQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvYW10LmNcbkBAIC0xMzQ4LDYgJiM0MzsxMzQ4LDExIEBAIHN0YXRpYyB2b2lkIGFtdF90dW5uZWxfZXhwaXJlKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiBcdHN0cnVjdCBhbXRfZGV2ICphbXQgPSB0dW5uZWwtXHUwMDNlYW10O1xuIFxuIFx0c3Bpbl9sb2NrX2JoKFx1MDAyNmFtdC1cdTAwM2Vsb2NrKTtcbiYjNDM7XHQvKiBhbXRfZGV2X3N0b3AoKSBtYXJrcyB0dW5uZWxzIGl0IG93bnMgd2l0aCBsaXN0X2RlbF9pbml0KCkuICovXG4mIzQzO1x0aWYgKGxpc3RfZW1wdHkoXHUwMDI2dHVubmVsLVx1MDAzZWxpc3QpKSB7XG4mIzQzO1x0XHRzcGluX3VubG9ja19iaChcdTAwMjZhbXQtXHUwMDNlbG9jayk7XG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1x0fVxuIFx0cmN1X3JlYWRfbG9jaygpO1xuIFx0bGlzdF9kZWxfcmN1KFx1MDAyNnR1bm5lbC1cdTAwM2VsaXN0KTtcbiBcdGFtdC1cdTAwM2Vucl90dW5uZWxzLS07XG5AQCAtMzA2OCw3ICYjNDM7MzA3Myw3IEBAIHN0YXRpYyBpbnQgYW10X2Rldl9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gc3RhdGljIGludCBhbXRfZGV2X3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiB7XG4gXHRzdHJ1Y3QgYW10X2RldiAqYW10ID0gbmV0ZGV2X3ByaXYoZGV2KTtcbi1cdHN0cnVjdCBhbXRfdHVubmVsX2xpc3QgKnR1bm5lbCwgKnRtcDtcbiYjNDM7XHRzdHJ1Y3QgYW10X3R1bm5lbF9saXN0ICp0dW5uZWw7XG4gXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuIFx0c3RydWN0IHNvY2sgKnNrO1xuIFx0aW50IGk7XG5AQCAtMzA3Nyw5ICYjNDM7MzA4MiwxMSBAQCBzdGF0aWMgaW50IGFtdF9kZXZfc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0ZGlzYWJsZV9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZhbXQtXHUwMDNlZGlzY292ZXJ5X3dxKTtcbiBcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZhbXQtXHUwMDNlc2VjcmV0X3dxKTtcbiBcbi1cdC8qIHNodXRkb3duICovXG4mIzQzO1x0LyogUXVpZXNjZSBSWCBwYXRoIGJlZm9yZSB0ZWFyaW5nIGRvd24gdHVubmVscy4gKi9cbiBcdHNrID0gcnRubF9kZXJlZmVyZW5jZShhbXQtXHUwMDNlc2spO1xuIFx0UkNVX0lOSVRfUE9JTlRFUihhbXQtXHUwMDNlc2ssIE5VTEwpO1xuJiM0MztcdGlmIChzaylcbiYjNDM7XHRcdHJjdV9hc3NpZ25fc2tfdXNlcl9kYXRhKHNrLCBOVUxMKTtcbiBcdHN5bmNocm9uaXplX25ldCgpO1xuIFx0aWYgKHNrKVxuIFx0XHR1ZHBfdHVubmVsX3NvY2tfcmVsZWFzZShzayk7XG5AQCAtMzA5NywxMyAmIzQzOzMxMDQsMjEgQEAgc3RhdGljIGludCBhbXRfZGV2X3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdGFtdC1cdTAwM2VyZXFfY250ID0gMDtcbiBcdFdSSVRFX09OQ0UoYW10LVx1MDAzZXJlbW90ZV9pcCwgMCk7XG4gXG4tXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUodHVubmVsLCB0bXAsIFx1MDAyNmFtdC1cdTAwM2V0dW5uZWxfbGlzdCwgbGlzdCkge1xuLVx0XHRsaXN0X2RlbF9yY3UoXHUwMDI2dHVubmVsLVx1MDAzZWxpc3QpO1xuJiM0MztcdHNwaW5fbG9ja19iaChcdTAwMjZhbXQtXHUwMDNlbG9jayk7XG4mIzQzO1x0d2hpbGUgKCFsaXN0X2VtcHR5KFx1MDAyNmFtdC1cdTAwM2V0dW5uZWxfbGlzdCkpIHtcbiYjNDM7XHRcdHR1bm5lbCA9IGxpc3RfZmlyc3RfZW50cnkoXHUwMDI2YW10LVx1MDAzZXR1bm5lbF9saXN0LFxuJiM0MztcdFx0XHRcdFx0ICBzdHJ1Y3QgYW10X3R1bm5lbF9saXN0LCBsaXN0KTtcbiYjNDM7XHRcdGxpc3RfZGVsX2luaXQoXHUwMDI2dHVubmVsLVx1MDAzZWxpc3QpO1xuIFx0XHRhbXQtXHUwMDNlbnJfdHVubmVscy0tO1xuLVx0XHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2dHVubmVsLVx1MDAzZWdjX3dxKTtcbiYjNDM7XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmFtdC1cdTAwM2Vsb2NrKTtcbiYjNDM7XG4mIzQzO1x0XHRkaXNhYmxlX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNnR1bm5lbC1cdTAwM2VnY193cSk7XG4gXHRcdGFtdF9jbGVhcl9ncm91cHModHVubmVsKTtcbiBcdFx0a2ZyZWVfcmN1KHR1bm5lbCwgcmN1KTtcbiYjNDM7XG4mIzQzO1x0XHRzcGluX2xvY2tfYmgoXHUwMDI2YW10LVx1MDAzZWxvY2spO1xuIFx0fVxuJiM0MztcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmFtdC1cdTAwM2Vsb2NrKTtcbiBcbiBcdHJldHVybiAwO1xuIH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMiAwNTo0MjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QU1UJiMzNDssCiAgICAmIzM0O0lQX01VTFRJQ0FTVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2FtdF9kZXZfc3RvcCYjMzQ7LAogICAgJiMzNDthbXRfdHVubmVsX2V4cGlyZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgdGVhcmRvd24gbG9naWMgb2YgQU1UIChBdXRvbWF0aWMgTXVsdGljYXN0IFR1bm5lbGluZykgbmV0d29yayBpbnRlcmZhY2VzLCBzcGVjaWZpY2FsbHkgaW4gdGhlIGRldmljZSBzdG9wIGNhbGxiYWNrIChgYW10X2Rldl9zdG9wYCkgYW5kIHRoZSB0dW5uZWwgZXhwaXJhdGlvbiB3b3JrcXVldWUgY2FsbGJhY2sgKGBhbXRfdHVubmVsX2V4cGlyZWApLiBUaGVzZSBhcmUgcmVhY2hhYmxlIGNvcmUgbmV0d29yayBkcml2ZXIgcGF0aHMgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGNyZWF0aW5nIGFuZCBkZXN0cm95aW5nIEFNVCBpbnRlcmZhY2VzIHZpYSBydG5ldGxpbmssIG1ha2luZyB0aGVtIGhpZ2hseSByZWxldmFudCBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDEzOGMzOGExMDk4ODk2NjQzNDY4MDEwNTkzY2U4YjcyYWUzNjkxZTQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEF1ZyAyMiAwNTo0MjozNSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2FtdC5jIGIvZHJpdmVycy9uZXQvYW10LmMKaW5kZXggYmRkYzI0ZTE4NTZkZS4uYTVkYjAyZDgxMjkxNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvYW10LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvYW10LmMKQEAgLTEzNDgsNiAmIzQzOzEzNDgsMTEgQEAgc3RhdGljIHZvaWQgYW10X3R1bm5lbF9leHBpcmUoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCXN0cnVjdCBhbXRfZGV2ICphbXQgPSB0dW5uZWwtJmd0O2FtdDsKIAogCXNwaW5fbG9ja19iaCgmYW1wO2FtdC0mZ3Q7bG9jayk7CiYjNDM7CS8qIGFtdF9kZXZfc3RvcCgpIG1hcmtzIHR1bm5lbHMgaXQgb3ducyB3aXRoIGxpc3RfZGVsX2luaXQoKS4gKi8KJiM0MzsJaWYgKGxpc3RfZW1wdHkoJmFtcDt0dW5uZWwtJmd0O2xpc3QpKSB7CiYjNDM7CQlzcGluX3VubG9ja19iaCgmYW1wO2FtdC0mZ3Q7bG9jayk7CiYjNDM7CQlyZXR1cm47CiYjNDM7CX0KIAlyY3VfcmVhZF9sb2NrKCk7CiAJbGlzdF9kZWxfcmN1KCZhbXA7dHVubmVsLSZndDtsaXN0KTsKIAlhbXQtJmd0O25yX3R1bm5lbHMtLTsKQEAgLTMwNjgsNyAmIzQzOzMwNzMsNyBAQCBzdGF0aWMgaW50IGFtdF9kZXZfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogc3RhdGljIGludCBhbXRfZGV2X3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIHsKIAlzdHJ1Y3QgYW10X2RldiAqYW10ID0gbmV0ZGV2X3ByaXYoZGV2KTsKLQlzdHJ1Y3QgYW10X3R1bm5lbF9saXN0ICp0dW5uZWwsICp0bXA7CiYjNDM7CXN0cnVjdCBhbXRfdHVubmVsX2xpc3QgKnR1bm5lbDsKIAlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOwogCXN0cnVjdCBzb2NrICpzazsKIAlpbnQgaTsKQEAgLTMwNzcsOSAmIzQzOzMwODIsMTEgQEAgc3RhdGljIGludCBhbXRfZGV2X3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAlkaXNhYmxlX2RlbGF5ZWRfd29ya19zeW5jKCZhbXA7YW10LSZndDtkaXNjb3Zlcnlfd3EpOwogCWNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmYW1wO2FtdC0mZ3Q7c2VjcmV0X3dxKTsKIAotCS8qIHNodXRkb3duICovCiYjNDM7CS8qIFF1aWVzY2UgUlggcGF0aCBiZWZvcmUgdGVhcmluZyBkb3duIHR1bm5lbHMuICovCiAJc2sgPSBydG5sX2RlcmVmZXJlbmNlKGFtdC0mZ3Q7c2spOwogCVJDVV9JTklUX1BPSU5URVIoYW10LSZndDtzaywgTlVMTCk7CiYjNDM7CWlmIChzaykKJiM0MzsJCXJjdV9hc3NpZ25fc2tfdXNlcl9kYXRhKHNrLCBOVUxMKTsKIAlzeW5jaHJvbml6ZV9uZXQoKTsKIAlpZiAoc2spCiAJCXVkcF90dW5uZWxfc29ja19yZWxlYXNlKHNrKTsKQEAgLTMwOTcsMTMgJiM0MzszMTA0LDIxIEBAIHN0YXRpYyBpbnQgYW10X2Rldl9zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAJYW10LSZndDtyZXFfY250ID0gMDsKIAlXUklURV9PTkNFKGFtdC0mZ3Q7cmVtb3RlX2lwLCAwKTsKIAotCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZSh0dW5uZWwsIHRtcCwgJmFtcDthbXQtJmd0O3R1bm5lbF9saXN0LCBsaXN0KSB7Ci0JCWxpc3RfZGVsX3JjdSgmYW1wO3R1bm5lbC0mZ3Q7bGlzdCk7CiYjNDM7CXNwaW5fbG9ja19iaCgmYW1wO2FtdC0mZ3Q7bG9jayk7CiYjNDM7CXdoaWxlICghbGlzdF9lbXB0eSgmYW1wO2FtdC0mZ3Q7dHVubmVsX2xpc3QpKSB7CiYjNDM7CQl0dW5uZWwgPSBsaXN0X2ZpcnN0X2VudHJ5KCZhbXA7YW10LSZndDt0dW5uZWxfbGlzdCwKJiM0MzsJCQkJCSAgc3RydWN0IGFtdF90dW5uZWxfbGlzdCwgbGlzdCk7CiYjNDM7CQlsaXN0X2RlbF9pbml0KCZhbXA7dHVubmVsLSZndDtsaXN0KTsKIAkJYW10LSZndDtucl90dW5uZWxzLS07Ci0JCWNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmYW1wO3R1bm5lbC0mZ3Q7Z2Nfd3EpOwomIzQzOwkJc3Bpbl91bmxvY2tfYmgoJmFtcDthbXQtJmd0O2xvY2spOwomIzQzOwomIzQzOwkJZGlzYWJsZV9kZWxheWVkX3dvcmtfc3luYygmYW1wO3R1bm5lbC0mZ3Q7Z2Nfd3EpOwogCQlhbXRfY2xlYXJfZ3JvdXBzKHR1bm5lbCk7CiAJCWtmcmVlX3JjdSh0dW5uZWwsIHJjdSk7CiYjNDM7CiYjNDM7CQlzcGluX2xvY2tfYmgoJmFtcDthbXQtJmd0O2xvY2spOwogCX0KJiM0MzsJc3Bpbl91bmxvY2tfYmgoJmFtcDthbXQtJmd0O2xvY2spOwogCiAJcmV0dXJuIDA7CiB9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIyIDA1OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2MTIKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxOTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgQU1UIERyaXZlcjogQSBRdWljayBBc3Nlc3NtZW50KioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCBhIHBhdGNoIGhlcmUgYWZmZWN0aW5nIHRoZSBgZHJpdmVycy9uZXQvYW10LmNgIGZpbGUuIEl0IHNlZW1zIHRvIGJlIGZvY3VzaW5nIG9uIHRoZSBBTVQgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdG91Y2hpbmcgYGFtdF90dW5uZWxfZXhwaXJlYCBhbmQgYGFtdF9kZXZfc3RvcGAuIEhtbSwgYGFtdF90dW5uZWxfZXhwaXJlYCBpcyBhIHdvcmtxdWV1ZSBjYWxsYmFjayBhbmQgYGFtdF9kZXZfc3RvcGAgaXMgYSBuZXR3b3JrIGRldmljZSBzdG9wIGNhbGxiYWNrIOKAkyB0aGF0JiMzOTtzIGdvb2QgdG8ga25vdyBmb3IgY29udGV4dC4gVGhlIHBhdGNoIGludHJvZHVjZXMgYSBgbGlzdF9lbXB0eSgpYCBjaGVjayB3aXRoaW4gYGFtdF90dW5uZWxfZXhwaXJlYCBhbmQgY2hhbmdlcyBob3cgdHVubmVscyBhcmUgdG9ybiBkb3duIGluIGBhbXRfZGV2X3N0b3BgLiBUaGUgaW50ZXJlc3RpbmcgYml0IGlzIHRoZSBhZGRpdGlvbiBvZiBgcmN1X2Fzc2lnbl9za191c2VyX2RhdGEoc2ssIE5VTEwpYCBpbiBgYW10X2Rldl9zdG9wYC4KCkdpdmVuIHRoaXMsIEkgbmVlZCB0byBkZWNpZGUgaWYgdGhpcyB3YXJyYW50cyBmdXp6aW5nLiBJdCYjMzk7cyBhIGJ1ZyBmaXggZm9yIHRoZSBBTVQgZHJpdmVyLCB3aGljaCwgYXMgSSByZWNhbGwsIGlzIHVzZWQgZm9yIEF1dG9tYXRpYyBNdWx0aWNhc3QgVHVubmVsaW5nLiBBTVQgZHJpdmVycyBjYW4gYmUgY3JlYXRlZCB0aHJvdWdoIHJ0bmV0bGluay4KCkxldCBtZSBqdXN0IHF1aWNrbHkgY2hlY2sgYGRyaXZlcnMvbmV0L2FtdC5jYCBmb3IgdGhlIHJlbGV2YW50IEtjb25maWcgb3B0aW9uLiBTZWUgaWYgdGhpcyBpcyBzb21ldGhpbmcgd29ydGggc3BlbmRpbmcgc29tZSB0aW1lIG9uIHRvIGVuc3VyZSBhIHJvYnVzdCBmaXguCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjIgMDU6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEFNVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZz0yODk9Y29uZmlnIFBGQ1Bcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTMwMS1cbmRyaXZlcnMvbmV0L0tjb25maWc6MzAyOmNvbmZpZyBBTVRcbmRyaXZlcnMvbmV0L0tjb25maWctMzAzLVx0dHJpc3RhdGUgXCYjMzQ7QXV0b21hdGljIE11bHRpY2FzdCBUdW5uZWxpbmcgKEFNVClcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMiAwNTo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTY3CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMjA3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgVGFyZ2V0IFByaW9yaXRpemF0aW9uOiBBTVQgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyB0aGUgY29uZmlndXJhdGlvbiBJJiMzOTttIGxvb2tpbmcgYXQgaXMgYEFNVGAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBxdWlja2x5IHZlcmlmeSB0aGUgcmVhY2hhYmlsaXR5IG9mIHR3byBmdW5jdGlvbnM6IGBhbXRfZGV2X3N0b3BgIGFuZCBgYW10X3R1bm5lbF9leHBpcmVgLiBgYW10X2Rldl9zdG9wYCBpcyB0cmlnZ2VyZWQgd2hlbiB0aGUgbmV0d29yayBpbnRlcmZhY2UgZ29lcyBkb3duLCBhbmQgYGFtdF90dW5uZWxfZXhwaXJlYCBpcyBpbnZva2VkIGZyb20gYSBkZWxheWVkIHdvcmtxdWV1ZS4gU2VlbXMgc3RyYWlnaHRmb3J3YXJkLCB0aGV5JiMzOTtyZSBib3RoIGRlZmluaXRlbHkgd29ydGggaW52ZXN0aWdhdGluZyBmb3IgZnV6emluZyBwb3RlbnRpYWwuCgpNeSBpbml0aWFsIGZvY3VzIGlzIG9uIHRob3NlIHR3bzogYGFtdF90dW5uZWxfZXhwaXJlYCBhbmQgYGFtdF9kZXZfc3RvcGAuIEJ1dCBoYW5nIG9uLi4uIGBhbXRfdHVubmVsX2V4cGlyZWAgaXMgKnN0YXRpYyouIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgaXQmIzM5O3MgaW5saW5lZC4gSXQmIzM5O3MgdXNlZCBhcyBhIHdvcmtxdWV1ZSBjYWxsYmFjaywgc28gaXRzIGFkZHJlc3MgbXVzdCBiZSB0YWtlbiwgd2hpY2ggcnVsZXMgb3V0IGlubGluaW5nLiBUaGF0JiMzOTtzIGEgcG9pbnQgYWdhaW5zdCBpdCwgSSBuZWVkIHRvIGtlZXAgdGhhdCBpbiBtaW5kLiBUaGUgaW5zdHJ1Y3Rpb25zIGRvIGFkdmlzZSBwcmlvcml0aXppbmcgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgZW50cnkgcG9pbnRzLgoKTm93LCBsZXQmIzM5O3MgbG9vayBhdCBgYW10X2Rldl9zdG9wYC4gSXQgaXMgYWxzbyBzdGF0aWMsIGFuZCB1c2VkIGFzIGBuZG9fc3RvcGAuIEkgbmVlZCB0byBicm9hZGVuIG15IHNlYXJjaCBhbmQgc2VlIGlmIHRoZXJlIGFyZSBiZXR0ZXIgY2FuZGlkYXRlcyBsaWtlIGBhbXRfbmV3bGlua2Agb3Igc29tZXRoaW5nIHNpbWlsYXIsIHRoYXQgYXJlIG5vbi1zdGF0aWMgYW5kIG5vbi1pbmxpbmVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIyIDA1OjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FtdF9kZXZfc3RvcCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2FtdC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2FtdC5jPTEzNDM9c3RhdGljIHZvaWQgYW10X3R1bm5lbF9leHBpcmUoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmV0L2FtdC5jLTEzNTAtXHRzcGluX2xvY2tfYmgoXHUwMDI2YW10LVx1MDAzZWxvY2spO1xuZHJpdmVycy9uZXQvYW10LmM6MTM1MTpcdC8qIGFtdF9kZXZfc3RvcCgpIG1hcmtzIHR1bm5lbHMgaXQgb3ducyB3aXRoIGxpc3RfZGVsX2luaXQoKS4gKi9cbmRyaXZlcnMvbmV0L2FtdC5jLTEzNTItXHRpZiAobGlzdF9lbXB0eShcdTAwMjZ0dW5uZWwtXHUwMDNlbGlzdCkpIHtcbi0tXG5kcml2ZXJzL25ldC9hbXQuYz0zMDM3PXN0YXRpYyBpbnQgYW10X2Rldl9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvYW10LmMtMzA3Mi1cbmRyaXZlcnMvbmV0L2FtdC5jOjMwNzM6c3RhdGljIGludCBhbXRfZGV2X3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L2FtdC5jLTMwNzQte1xuLS1cbmRyaXZlcnMvbmV0L2FtdC5jPTMxNTE9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBhbXRfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9hbXQuYy0zMTU0LVx0Lm5kb19vcGVuXHRcdD0gYW10X2Rldl9vcGVuLFxuZHJpdmVycy9uZXQvYW10LmM6MzE1NTpcdC5uZG9fc3RvcFx0XHQ9IGFtdF9kZXZfc3RvcCxcbmRyaXZlcnMvbmV0L2FtdC5jLTMxNTYtXHQubmRvX3N0YXJ0X3htaXQgICAgICAgICA9IGFtdF9kZXZfeG1pdCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMiAwNTo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDE0CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIGBhbXRfZGV2X3N0b3BgIGFuZCBgYW10X3R1bm5lbF9leHBpcmVgKioKCk9rYXksIHNvIGBhbXRfZGV2X3N0b3BgIGlzIGEgY2FsbGJhY2sgZnVuY3Rpb24gd2l0aGluIHRoZSBgYW10X25ldGRldl9vcHNgIHN0cnVjdHVyZSwgZ290IGl0LiBUaGlzIG1ha2VzIGl0IGEgbmV0d29yayBkZXZpY2Ugb3BlcmF0aW9uLCBwcm9iYWJseSByZWxhdGVkIHRvIHN0b3BwaW5nIG9yIGRpc2FibGluZyB0aGUgQU1UIChBY3RpdmUgTWFuYWdlbWVudCBUZWNobm9sb2d5KSBpbnRlcmZhY2UsIGEgY29tcG9uZW50IHdpdGggd2hpY2ggSSYjMzk7bSBmYW1pbGlhci4gSSBuZWVkIHRvIGtlZXAgdGhhdCBpbiBtaW5kLiBUaGVuLCBgYW10X3R1bm5lbF9leHBpcmVgIGlzIGEgY2FsbGJhY2sgZm9yIHRoZSB3b3JrcXVldWUuIFRoaXMgc3VnZ2VzdHMgc29tZSBwZXJpb2RpYyBjbGVhbnVwIG9yIHRpbWVvdXQgaGFuZGxpbmcgcmVsYXRlZCB0byBBTVQgdHVubmVscywgc29tZXRoaW5nIGFzeW5jaHJvbm91cy4KClJpZ2h0LCBzbyB0byBjb250aW51ZSBvbiwgSSYjMzk7bSB0aGlua2luZyBJIHNob3VsZCBwcm9iYWJseSBzZWUgaWYgdGhlcmUgYXJlIG5vbi1zdGF0aWMgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gdGhlc2UuIE5vbi1zdGF0aWMgZnVuY3Rpb25zIGFyZSBvZnRlbiBnbG9iYWwgb3IgYWNjZXNzaWJsZSBmcm9tIG90aGVyIHBhcnRzIG9mIHRoZSBrZXJuZWwuIFRoaXMgY291bGQgYmUgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGVzZSBmdW5jdGlvbnMgaW50ZXJhY3Qgd2l0aCB0aGUgYnJvYWRlciBzeXN0ZW0sIGFuZCB3aGVyZSBkZXBlbmRlbmNpZXMgbWlnaHQgbGllLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIyIDA1OjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FtdF90dW5uZWxfZXhwaXJlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvYW10LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvYW10LmM9MTMyNz1zdGF0aWMgdm9pZCBhbXRfY2xlYXJfZ3JvdXBzKHN0cnVjdCBhbXRfdHVubmVsX2xpc3QgKnR1bm5lbClcbi0tXG5kcml2ZXJzL25ldC9hbXQuYy0xMzQyLVxuZHJpdmVycy9uZXQvYW10LmM6MTM0MzpzdGF0aWMgdm9pZCBhbXRfdHVubmVsX2V4cGlyZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25ldC9hbXQuYy0xMzQ0LXtcbi0tXG5kcml2ZXJzL25ldC9hbXQuYz0yNzEwPXN0YXRpYyBib29sIGFtdF9yZXF1ZXN0X2hhbmRsZXIoc3RydWN0IGFtdF9kZXYgKmFtdCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC9hbXQuYy0yNzU3LVxuZHJpdmVycy9uZXQvYW10LmM6Mjc1ODpcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNnR1bm5lbC1cdTAwM2VnY193cSwgYW10X3R1bm5lbF9leHBpcmUpO1xuZHJpdmVycy9uZXQvYW10LmMtMjc1OS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMiAwNTo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDk2CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMjE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZvY3VzaW5nIG9uIHRoZSBBTVQgVHVubmVsIEV4cGlyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyBgYW10X3R1bm5lbF9leHBpcmVgIGlzIHVzZWQg4oCTIGl0JiMzOTtzIHBhcnQgb2YgYElOSVRfREVMQVlFRF9XT1JLYC4gSG1tLCBpbnRlcmVzdGluZy4gVGhlIGtleSBoZXJlIGlzIHRoYXQgYm90aCBgYW10X2Rldl9zdG9wYCBhbmQgYGFtdF90dW5uZWxfZXhwaXJlYCBhcmUgbW9kaWZpZWQsIGFuZCB0aGV5IGFyZSBib3RoIGNhbGxiYWNrcywgbWFraW5nIHRoZW0gcHJpbWUgY2FuZGlkYXRlcyBmb3IgYEZvY3VzU3ltYm9sc2AuIFRoZXkgYXJlIHN0YXRpYywgeWVzLCBidXQgdGhlaXIgYWRkcmVzc2VzIGFyZSB0YWtlbiwgbWVhbmluZyB0aGV5IGFyZW4mIzM5O3QgaW5saW5lZCBieSB0aGUgY29tcGlsZXIuIFRoaXMgaXMgZ3JlYXQ7IGJlY2F1c2UgdGhleSBoYXZlIGRpc3RpbmN0IGFkZHJlc3Nlcywgd2UgY2FuIGhvb2sgdGhlbSEKCldhaXQgYSBzZWNvbmTigKYgSSBuZWVkIHRvIHJlLXJlYWQgdGhhdCBwcm9tcHQuIEl0IGVtcGhhc2l6ZXMgcHJlZmVycmluZyBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMgb3ZlciBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucyB0aGF0IGFyZSB0eXBpY2FsbHkgaW5saW5lZC4gQnV0LCB0aGUgYWRkcmVzc2VzIGFyZSB0YWtlbiwgc28gdGhleSYjMzk7cmUgbm90IGlubGluZWQuCgpUaGUgYWRkcmVzc2VzIGFyZSB0YWtlbiwgc28gd2UgYXJlIG9rYXkhCkNvdWxkIHdlICphbHNvKiBjb25zaWRlciBhZGRpbmcgYGFtdF9uZXdsaW5rYCBvciBgYW10X2Rldl9vcGVuYD8gTWF5YmUsIGJ1dCBmb3Igbm93LCBsZXQmIzM5O3Mga2VlcCBpdCBzaW1wbGUgYW5kIGp1c3QgZ28gd2l0aCBgYW10X2Rldl9zdG9wYCBhbmQgYGFtdF90dW5uZWxfZXhwaXJlYC4gVGhpcyBzZWVtcyBsaWtlIHRoZSBtb3N0IGxvZ2ljYWwgcGF0aC4KCkJlZm9yZSBzb2xpZGlmeWluZyB0aGlzLCBsZXQmIzM5O3MgZG91YmxlIGNoZWNrIGlmIHRoZXJlIGFyZSBvdGhlciBjb25maWd1cmF0aW9ucyB0aGF0IGFmZmVjdCB0aGlzLiBJIGJlbGlldmUgYEFNVGAgaXMgZGVwZW5kZW50IG9uIGBJTkVUYCBhbmQgYElQVjZgLiBJIHdpbGwgY2hlY2sgYGRyaXZlcnMvbmV0L0tjb25maWdgIHRvIGNvbmZpcm0gYW55IGRlcGVuZGVuY3kuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIyIDA1OjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBBTVQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWc9Mjg5PWNvbmZpZyBQRkNQXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMDEtXG5kcml2ZXJzL25ldC9LY29uZmlnOjMwMjpjb25maWcgQU1UXG5kcml2ZXJzL25ldC9LY29uZmlnLTMwMy1cdHRyaXN0YXRlIFwmIzM0O0F1dG9tYXRpYyBNdWx0aWNhc3QgVHVubmVsaW5nIChBTVQpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIyIDA1OjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxMjIKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duLCBwcmVzZW50ZWQgdG8gYSBmZWxsb3cgZXhwZXJ0OgoKKipEaXZpbmcgaW50byB0aGUgQU1UIEtjb25maWcqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBob3cgSW50ZWwgQWN0aXZlIE1hbmFnZW1lbnQgVGVjaG5vbG9neSAoQU1UKSBpcyBjb25maWd1cmVkIGluIHRoaXMgcHJvamVjdC4gU28sIHRoZSBsb2dpY2FsIGZpcnN0IHN0ZXAgaXMgdG8gZGlnIGludG8gdGhlIEtjb25maWcgZmlsZS4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSBnZXR0aW5nIG15IGJlYXJpbmdzOiB3aGF0IG9wdGlvbnMgYXJlIGF2YWlsYWJsZT8gV2hhdCBkZXBlbmRlbmNpZXMgZXhpc3Q/IFdoYXQgYXJlIHRoZSBkZWZhdWx0IHNldHRpbmdzPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYnVpbGRpbmcgYmxvY2tzIGZvciB0aGlzIHNwZWNpZmljIGltcGxlbWVudGF0aW9uLiBJJiMzOTttIGxvb2tpbmcgZm9yIGNsdWVzIGFib3V0IHRoZSBjaG9zZW4gY29uZmlndXJhdGlvbiwgYW55IHJlbGV2YW50IGN1c3RvbWl6YXRpb24gZG9uZSwgYW5kIGlmIHRoZXJlIGFyZSBhbnkgZ290Y2hhcyBJIG5lZWQgdG8gYW50aWNpcGF0ZS4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlJiMzOTt2ZSBnb3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIyIDA1OjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMzAwOlx0XHQgIHdpbGwgYmUgY2FsbGVkIHBmY3AuXG4gMzAxOlx0XG4gMzAyOlx0Y29uZmlnIEFNVFxuIDMwMzpcdFx0dHJpc3RhdGUgXCYjMzQ7QXV0b21hdGljIE11bHRpY2FzdCBUdW5uZWxpbmcgKEFNVClcJiMzNDtcbiAzMDQ6XHRcdGRlcGVuZHMgb24gSU5FVCBcdTAwMjZcdTAwMjYgSVBfTVVMVElDQVNUXG4gMzA1Olx0XHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcbiAzMDY6XHRcdGhlbHBcbiAzMDc6XHRcdCAgVGhpcyBhbGxvd3Mgb25lIHRvIGNyZWF0ZSBBTVQoQXV0b21hdGljIE11bHRpY2FzdCBUdW5uZWxpbmcpXG4gMzA4Olx0XHQgIHZpcnR1YWwgaW50ZXJmYWNlcyB0aGF0IHByb3ZpZGUgbXVsdGljYXN0IHR1bm5lbGluZy5cbiAzMDk6XHRcdCAgVGhlcmUgYXJlIHR3byByb2xlcywgR2F0ZXdheSwgYW5kIFJlbGF5LlxuIDMxMDpcdFx0ICBHYXRld2F5IEVuY2Fwc3VsYXRlcyBJR01QL01MRCB0cmFmZmljIGZyb20gbGlzdGVuZXJzIHRvIHRoZSBSZWxheS5cbiAzMTE6XHRcdCAgR2F0ZXdheSBEZWNhcHN1bGF0ZXMgbXVsdGljYXN0IHRyYWZmaWMgZnJvbSB0aGUgUmVsYXkgdG8gTGlzdGVuZXJzLlxuIDMxMjpcdFx0ICBSZWxheSBFbmNhcHN1bGF0ZXMgbXVsdGljYXN0IHRyYWZmaWMgZnJvbSBTb3VyY2VzIHRvIEdhdGV3YXkuXG4gMzEzOlx0XHQgIFJlbGF5IERlY2Fwc3VsYXRlcyBJR01QL01MRCB0cmFmZmljIGZyb20gR2F0ZXdheS5cbiAzMTQ6XHRcbiAzMTU6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlcnMgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiAzMTY6XHRcdCAgd2lsbCBiZSBjYWxsZWQgYW10LlxuIDMxNzpcdFxuIDMxODpcdGNvbmZpZyBNQUNTRUNcbiAzMTk6XHRcdHRyaXN0YXRlIFwmIzM0O0lFRUUgODAyLjFBRSBNQUMtbGV2ZWwgZW5jcnlwdGlvbiAoTUFDc2VjKVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMiAwNTo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NjU3CgkJCQkJCQlvdXRwdXQ6IDEzMwoJCQkJCQkJdGhvdWdodHM6IDk3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IENvbmZpZ3VyYXRpb24gU3RyYXRlZ3kqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIGRlcGVuZGVuY2llczogYElORVRgIGFuZCBgSVBfTVVMVElDQVNUYC4gYElORVRgIGlzIHVzdWFsbHkgYSBnaXZlbiwgYnV0IGxldCYjMzk7cyBqdXN0IG1ha2Ugc3VyZSBpdCYjMzk7cyBleHBsaWNpdGx5IGVuYWJsZWQuIFRoYXQgbWVhbnMgSSBuZWVkIHRvIG1ha2Ugc3VyZSBgQU1UYCwgYElQX01VTFRJQ0FTVGAsIGFuZCwganVzdCBpbiBjYXNlLCBgSU5FVGAsIGFyZSBhbGwgaW5jbHVkZWQgaW4gdGhlIGBFbmFibGVDb25maWdzYCBsaXN0LiBOb3csIGhvbGQgb24sIGBJUF9NVUxUSUNBU1RgIGlzbiYjMzk7dCBhIHNpbXBsZSBkZXBlbmRlbmN5OyBpdCYjMzk7cyBhICpjb25maWcqISBSaWdodC4gR290IGl0LgoKTmV4dCwgSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGBhbXRfZGV2X3N0b3BgIGFuZCBgYW10X3R1bm5lbF9leHBpcmVgIGFyZSB0aGUgcmlnaHQgc3ltYm9scyB0byBiZSB3b3JraW5nIHdpdGguIEkgbmVlZCB0byBlbnN1cmUgdGhleSYjMzk7cmUgdGhlIGRpcmVjdCB0YXJnZXRzIG9mIHRoZSBtb2RpZmljYXRpb25zLiAqWWVzKiwgbG9va2luZyBhdCB0aGUgcmVsZXZhbnQgY29kZSwgdGhleSYjMzk7cmUgdGhlIG9uZXMgYmVpbmcgZGlyZWN0bHkgY2hhbmdlZC4gR29vZC4KCldpdGggdGhhdCBjb25maXJtZWQsIEkmIzM5O2xsIGdvIGFoZWFkIGFuZCBidWlsZCBteSBzb2x1dGlvbiwgbWFraW5nIHN1cmUgdG8gdXNlIGBzZXQtcmVzdWx0c2AgYXBwcm9wcmlhdGVseSB0byByZWZsZWN0IHRoZSBkZXNpcmVkIGNvbmZpZ3VyYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIyIDA1OjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtBTVQmIzM0OywKICAgICYjMzQ7SVBfTVVMVElDQVNUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YW10X2Rldl9zdG9wJiMzNDssCiAgICAmIzM0O2FtdF90dW5uZWxfZXhwaXJlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB0ZWFyZG93biBsb2dpYyBvZiBBTVQgKEF1dG9tYXRpYyBNdWx0aWNhc3QgVHVubmVsaW5nKSBuZXR3b3JrIGludGVyZmFjZXMsIHNwZWNpZmljYWxseSBpbiB0aGUgZGV2aWNlIHN0b3AgY2FsbGJhY2sgKGBhbXRfZGV2X3N0b3BgKSBhbmQgdGhlIHR1bm5lbCBleHBpcmF0aW9uIHdvcmtxdWV1ZSBjYWxsYmFjayAoYGFtdF90dW5uZWxfZXhwaXJlYCkuIFRoZXNlIGFyZSByZWFjaGFibGUgY29yZSBuZXR3b3JrIGRyaXZlciBwYXRocyB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgYnkgY3JlYXRpbmcgYW5kIGRlc3Ryb3lpbmcgQU1UIGludGVyZmFjZXMgdmlhIHJ0bmV0bGluaywgbWFraW5nIHRoZW0gaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtBTVQmIzM0OywKICAgICYjMzQ7SVBfTVVMVElDQVNUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YW10X2Rldl9zdG9wJiMzNDssCiAgICAmIzM0O2FtdF90dW5uZWxfZXhwaXJlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB0ZWFyZG93biBsb2dpYyBvZiBBTVQgKEF1dG9tYXRpYyBNdWx0aWNhc3QgVHVubmVsaW5nKSBuZXR3b3JrIGludGVyZmFjZXMsIHNwZWNpZmljYWxseSBpbiB0aGUgZGV2aWNlIHN0b3AgY2FsbGJhY2sgKGBhbXRfZGV2X3N0b3BgKSBhbmQgdGhlIHR1bm5lbCBleHBpcmF0aW9uIHdvcmtxdWV1ZSBjYWxsYmFjayAoYGFtdF90dW5uZWxfZXhwaXJlYCkuIFRoZXNlIGFyZSByZWFjaGFibGUgY29yZSBuZXR3b3JrIGRyaXZlciBwYXRocyB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgYnkgY3JlYXRpbmcgYW5kIGRlc3Ryb3lpbmcgQU1UIGludGVyZmFjZXMgdmlhIHJ0bmV0bGluaywgbWFraW5nIHRoZW0gaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMiAwNTo0NTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIyIDA1OjQ1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBzeW5jaHJvbml6YXRpb24gYW5kIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBkb3VibGUtZnJlZSBpc3N1ZXMgYmV0d2VlbiBgYW10X3R1bm5lbF9leHBpcmVgIGFuZCBgYW10X2Rldl9zdG9wYC4gSXQgbW9kaWZpZXMgbGlzdCBtYW5hZ2VtZW50IGFuZCB3b3JrIHF1ZXVlIGNhbmNlbGxhdGlvbiBsb2dpYyB0byBwcmV2ZW50IHJhY2UgY29uZGl0aW9ucyBkdXJpbmcgZGV2aWNlIHRlYXJkb3duLiBUaGVzZSB0eXBlcyBvZiBidWdzIChVQUYsIHJhY2UgY29uZGl0aW9ucywgaW52YWxpZCBmcmVlcykgYXJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIGRlYnVnZ2luZyB0b29scy4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIGRhdGEgY29waWVkIHRvIHVzZXIgc3BhY2UgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMTM4YzM4YTEwOTg4OTY2NDM0NjgwMTA1OTNjZThiNzJhZTM2OTFlNApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgQXVnIDIyIDA1OjQyOjM1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvYW10LmMgYi9kcml2ZXJzL25ldC9hbXQuYwppbmRleCBiZGRjMjRlMTg1NmRlLi5hNWRiMDJkODEyOTE3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9hbXQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9hbXQuYwpAQCAtMTM0OCw2ICYjNDM7MTM0OCwxMSBAQCBzdGF0aWMgdm9pZCBhbXRfdHVubmVsX2V4cGlyZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJc3RydWN0IGFtdF9kZXYgKmFtdCA9IHR1bm5lbC0mZ3Q7YW10OwogCiAJc3Bpbl9sb2NrX2JoKCZhbXA7YW10LSZndDtsb2NrKTsKJiM0MzsJLyogYW10X2Rldl9zdG9wKCkgbWFya3MgdHVubmVscyBpdCBvd25zIHdpdGggbGlzdF9kZWxfaW5pdCgpLiAqLwomIzQzOwlpZiAobGlzdF9lbXB0eSgmYW1wO3R1bm5lbC0mZ3Q7bGlzdCkpIHsKJiM0MzsJCXNwaW5fdW5sb2NrX2JoKCZhbXA7YW10LSZndDtsb2NrKTsKJiM0MzsJCXJldHVybjsKJiM0MzsJfQogCXJjdV9yZWFkX2xvY2soKTsKIAlsaXN0X2RlbF9yY3UoJmFtcDt0dW5uZWwtJmd0O2xpc3QpOwogCWFtdC0mZ3Q7bnJfdHVubmVscy0tOwpAQCAtMzA2OCw3ICYjNDM7MzA3Myw3IEBAIHN0YXRpYyBpbnQgYW10X2Rldl9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiBzdGF0aWMgaW50IGFtdF9kZXZfc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogewogCXN0cnVjdCBhbXRfZGV2ICphbXQgPSBuZXRkZXZfcHJpdihkZXYpOwotCXN0cnVjdCBhbXRfdHVubmVsX2xpc3QgKnR1bm5lbCwgKnRtcDsKJiM0MzsJc3RydWN0IGFtdF90dW5uZWxfbGlzdCAqdHVubmVsOwogCXN0cnVjdCBza19idWZmICpza2I7CiAJc3RydWN0IHNvY2sgKnNrOwogCWludCBpOwpAQCAtMzA3Nyw5ICYjNDM7MzA4MiwxMSBAQCBzdGF0aWMgaW50IGFtdF9kZXZfc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCWRpc2FibGVfZGVsYXllZF93b3JrX3N5bmMoJmFtcDthbXQtJmd0O2Rpc2NvdmVyeV93cSk7CiAJY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZhbXA7YW10LSZndDtzZWNyZXRfd3EpOwogCi0JLyogc2h1dGRvd24gKi8KJiM0MzsJLyogUXVpZXNjZSBSWCBwYXRoIGJlZm9yZSB0ZWFyaW5nIGRvd24gdHVubmVscy4gKi8KIAlzayA9IHJ0bmxfZGVyZWZlcmVuY2UoYW10LSZndDtzayk7CiAJUkNVX0lOSVRfUE9JTlRFUihhbXQtJmd0O3NrLCBOVUxMKTsKJiM0MzsJaWYgKHNrKQomIzQzOwkJcmN1X2Fzc2lnbl9za191c2VyX2RhdGEoc2ssIE5VTEwpOwogCXN5bmNocm9uaXplX25ldCgpOwogCWlmIChzaykKIAkJdWRwX3R1bm5lbF9zb2NrX3JlbGVhc2Uoc2spOwpAQCAtMzA5NywxMyAmIzQzOzMxMDQsMjEgQEAgc3RhdGljIGludCBhbXRfZGV2X3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAlhbXQtJmd0O3JlcV9jbnQgPSAwOwogCVdSSVRFX09OQ0UoYW10LSZndDtyZW1vdGVfaXAsIDApOwogCi0JbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHR1bm5lbCwgdG1wLCAmYW1wO2FtdC0mZ3Q7dHVubmVsX2xpc3QsIGxpc3QpIHsKLQkJbGlzdF9kZWxfcmN1KCZhbXA7dHVubmVsLSZndDtsaXN0KTsKJiM0MzsJc3Bpbl9sb2NrX2JoKCZhbXA7YW10LSZndDtsb2NrKTsKJiM0MzsJd2hpbGUgKCFsaXN0X2VtcHR5KCZhbXA7YW10LSZndDt0dW5uZWxfbGlzdCkpIHsKJiM0MzsJCXR1bm5lbCA9IGxpc3RfZmlyc3RfZW50cnkoJmFtcDthbXQtJmd0O3R1bm5lbF9saXN0LAomIzQzOwkJCQkJICBzdHJ1Y3QgYW10X3R1bm5lbF9saXN0LCBsaXN0KTsKJiM0MzsJCWxpc3RfZGVsX2luaXQoJmFtcDt0dW5uZWwtJmd0O2xpc3QpOwogCQlhbXQtJmd0O25yX3R1bm5lbHMtLTsKLQkJY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZhbXA7dHVubmVsLSZndDtnY193cSk7CiYjNDM7CQlzcGluX3VubG9ja19iaCgmYW1wO2FtdC0mZ3Q7bG9jayk7CiYjNDM7CiYjNDM7CQlkaXNhYmxlX2RlbGF5ZWRfd29ya19zeW5jKCZhbXA7dHVubmVsLSZndDtnY193cSk7CiAJCWFtdF9jbGVhcl9ncm91cHModHVubmVsKTsKIAkJa2ZyZWVfcmN1KHR1bm5lbCwgcmN1KTsKJiM0MzsKJiM0MzsJCXNwaW5fbG9ja19iaCgmYW1wO2FtdC0mZ3Q7bG9jayk7CiAJfQomIzQzOwlzcGluX3VubG9ja19iaCgmYW1wO2FtdC0mZ3Q7bG9jayk7CiAKIAlyZXR1cm4gMDsKIH0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIyIDA1OjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2MDkKCQkJCQkJCW91dHB1dDogMTQxCgkJCQkJCQl0aG91Z2h0czogMzM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEFNVCBEcml2ZXIgUGF0Y2gqKgoKT2theSwgbGV0IG1lIGJyZWFrIGRvd24gdGhpcyBwYXRjaCBmb3IgdGhlIEFNVCBkcml2ZXIuIE15IGluaXRpYWwgaW1wcmVzc2lvbiBpcyB0aGF0IGl0JiMzOTtzIGFkZHJlc3Npbmcgc29tZSBjcml0aWNhbCBzeW5jaHJvbml6YXRpb24gaXNzdWVzLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgYW10X3R1bm5lbF9leHBpcmVgIGFuZCBgYW10X2Rldl9zdG9wYCBmdW5jdGlvbnMgaW4gYGRyaXZlcnMvbmV0L2FtdC5jYC4KCk15IGZpcnN0IHRob3VnaHQgaXMgdGhpczogdGhlIHByaW1hcnkgZm9jdXMgaXMgb24gcHJldmVudGluZyB1c2UtYWZ0ZXItZnJlZSBhbmQgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyB3aGVuIHR1bm5lbHMgYXJlIGV4cGlyaW5nIGFuZCB0aGUgZGV2aWNlIGlzIGJlaW5nIHN0b3BwZWQuIFRoZSBhZGRpdGlvbiBvZiB0aGUgYGlmIChsaXN0X2VtcHR5KCZhbXA7dHVubmVsLSZndDtsaXN0KSlgIGNoZWNrIGluIGBhbXRfdHVubmVsX2V4cGlyZWAgaXMgYSBzbWFydCBtb3ZlLiBJdCBwcm92aWRlcyBhbiBlYXJseSBleGl0IGlmIHRoZSB0dW5uZWwgaGFzIGFscmVhZHkgYmVlbiByZW1vdmVkIGZyb20gdGhlIGxpc3QsIGVzc2VudGlhbGx5IGEgcXVpY2sgZ3VhcmQgYWdhaW5zdCBvcGVyYXRpbmcgb24gZnJlZWQgbWVtb3J5LgoKVGhlIGNoYW5nZXMgaW4gYGFtdF9kZXZfc3RvcGAgYXJlIGFsc28ga2V5LiBUaGUgc2hpZnQgdG8gYGRpc2FibGVfZGVsYXllZF93b3JrX3N5bmNgLCBgY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jYCwgYW5kIGVzcGVjaWFsbHkgYGxpc3RfZGVsX2luaXRgIHRvIG1hcmsgdHVubmVscyBhcyByZW1vdmVkLCBpbmRpY2F0ZXMgYSBjb25jZXJ0ZWQgZWZmb3J0IHRvIHByb3Blcmx5IGhhbmRsZSB3b3JrIHF1ZXVlIGNhbmNlbGxhdGlvbiBhbmQgbGlzdCBtYW5hZ2VtZW50LiBUaGlzIGNvb3JkaW5hdGVkIGFwcHJvYWNoIGJldHdlZW4gZXhwaXJhdGlvbiBhbmQgZGV2aWNlIHN0b3AgaXMgd2hhdCYjMzk7cyBjcml0aWNhbC4gVGhlIGByY3VfYXNzaWduX3NrX3VzZXJfZGF0YShzaywgTlVMTClgIGJlZm9yZSB0aGUgZmluYWwgY2xlYW51cCBzdGVwcyBpcyBhbHNvIGEgc3Ryb25nIHNpZ25hbCB0aGF0IHRoZSBkZXZlbG9wZXJzIGhhdmUgdGhvdWdodCB0aGlzIHRocm91Z2ggY2FyZWZ1bGx5LCBwcmV2ZW50aW5nIHN0YWxlIHJlZmVyZW5jZXMuCgpTaW5jZSB0aGVyZSBhcmUgbm8gbmV3IGFsbG9jYXRpb25zLCBubyBuZXcgZGF0YSBiZWluZyBzZW50IHRvIHVzZXJzcGFjZSwgYW5kIG5vIGluZGljYXRpb25zIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHVzZWQsIEkgZG9uJiMzOTt0IHNlZSBhbnkgcmlza3MgdGhhdCB3b3VsZCBiZSBjYXVnaHQgYnkgS01TQU4uIFRoZSBwcm9ibGVtcyBiZWluZyBmaXhlZCBhcmUgbGlrZWx5IHJlbGF0ZWQgdG8gdXNlLWFmdGVyLWZyZWUgb3IgcG90ZW50aWFsIGRvdWJsZSBmcmVlcywgd2hpY2ggYXJlIHByZWNpc2VseSB0aGUgdHlwZXMgb2YgaXNzdWVzIHRoYXQgS0FTQU4gKEtlcm5lbCBBZGRyZXNzIFNhbml0aXplcikgaXMgZGVzaWduZWQgdG8gaGFuZGxlLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIEkmIzM5O20gZ29pbmcgdG8gZG91YmxlLWNoZWNrIHRoZSBkZXRhaWxzLiBZZXMsIGBhbXRfdHVubmVsX2V4cGlyZWAgaXMgYSB3b3JrIHF1ZXVlIGZ1bmN0aW9uLCBhbmQgYGFtdF9kZXZfc3RvcGAgaXMgdGhlIG5ldHdvcmsgZGV2aWNlIHN0b3AgZnVuY3Rpb24uIFRoaXMgcGF0Y2ggaXMgZm9jdXNlZCBzb2xlbHkgb24gc3luY2hyb25pemF0aW9uLCB3b3JrIHF1ZXVlIGNhbmNlbGxhdGlvbiwgYW5kIGxpc3QgbWFuYWdlbWVudC4gSXQmIzM5O3Mgbm90IGludHJvZHVjaW5nIGFueSBuZXcgcmlza3MgcmVsYXRlZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeS4KClNvLCBiYXNlZCBvbiB0aGlzIHRob3JvdWdoIHJldmlldywgSSYjMzk7bSBjb25maWRlbnQgdGhhdCB0aGlzIHBhdGNoIGRvZXNuJiMzOTt0IHJlcXVpcmUgS01TQU4uIEkmIzM5O2xsIHNldCBgTmVlZHNLTVNBTj1mYWxzZWAgYW5kIGV4cGxhaW4gdGhhdCB0aGlzIHBhdGNoIGFkZHJlc3NlcyBzeW5jaHJvbml6YXRpb24gaXNzdWVzIGFuZCBndWFyZHMgYWdhaW5zdCB1c2UtYWZ0ZXItZnJlZSBzY2VuYXJpb3MsIHByb2JsZW1zIHRoYXQgYXJlIGFkZXF1YXRlbHkgYWRkcmVzc2VkIGJ5IEtBU0FOLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMiAwNTo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRyZXNzZXMgc3luY2hyb25pemF0aW9uIGFuZCBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgZG91YmxlLWZyZWUgaXNzdWVzIGJldHdlZW4gYGFtdF90dW5uZWxfZXhwaXJlYCBhbmQgYGFtdF9kZXZfc3RvcGAuIEl0IG1vZGlmaWVzIGxpc3QgbWFuYWdlbWVudCBhbmQgd29yayBxdWV1ZSBjYW5jZWxsYXRpb24gbG9naWMgdG8gcHJldmVudCByYWNlIGNvbmRpdGlvbnMgZHVyaW5nIGRldmljZSB0ZWFyZG93bi4gVGhlc2UgdHlwZXMgb2YgYnVncyAoVUFGLCByYWNlIGNvbmRpdGlvbnMsIGludmFsaWQgZnJlZXMpIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dpbmcgdG9vbHMuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCBvciBkYXRhIGNvcGllZCB0byB1c2VyIHNwYWNlIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRyZXNzZXMgc3luY2hyb25pemF0aW9uIGFuZCBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgZG91YmxlLWZyZWUgaXNzdWVzIGJldHdlZW4gYGFtdF90dW5uZWxfZXhwaXJlYCBhbmQgYGFtdF9kZXZfc3RvcGAuIEl0IG1vZGlmaWVzIGxpc3QgbWFuYWdlbWVudCBhbmQgd29yayBxdWV1ZSBjYW5jZWxsYXRpb24gbG9naWMgdG8gcHJldmVudCByYWNlIGNvbmRpdGlvbnMgZHVyaW5nIGRldmljZSB0ZWFyZG93bi4gVGhlc2UgdHlwZXMgb2YgYnVncyAoVUFGLCByYWNlIGNvbmRpdGlvbnMsIGludmFsaWQgZnJlZXMpIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dpbmcgdG9vbHMuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCBvciBkYXRhIGNvcGllZCB0byB1c2VyIHNwYWNlIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIyVDA1OjQyOjM2LjY0MTUwOTIzM1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMTQ4MzM0NjE0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBTVRcIixcbiAgICBcIklQX01VTFRJQ0FTVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImFtdF9kZXZfc3RvcFwiLFxuICAgIFwiYW10X3R1bm5lbF9leHBpcmVcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHJlc3NlcyBzeW5jaHJvbml6YXRpb24gYW5kIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBkb3VibGUtZnJlZSBpc3N1ZXMgYmV0d2VlbiBgYW10X3R1bm5lbF9leHBpcmVgIGFuZCBgYW10X2Rldl9zdG9wYC4gSXQgbW9kaWZpZXMgbGlzdCBtYW5hZ2VtZW50IGFuZCB3b3JrIHF1ZXVlIGNhbmNlbGxhdGlvbiBsb2dpYyB0byBwcmV2ZW50IHJhY2UgY29uZGl0aW9ucyBkdXJpbmcgZGV2aWNlIHRlYXJkb3duLiBUaGVzZSB0eXBlcyBvZiBidWdzIChVQUYsIHJhY2UgY29uZGl0aW9ucywgaW52YWxpZCBmcmVlcykgYXJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIGRlYnVnZ2luZyB0b29scy4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIGRhdGEgY29waWVkIHRvIHVzZXIgc3BhY2UgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgdGVhcmRvd24gbG9naWMgb2YgQU1UIChBdXRvbWF0aWMgTXVsdGljYXN0IFR1bm5lbGluZykgbmV0d29yayBpbnRlcmZhY2VzLCBzcGVjaWZpY2FsbHkgaW4gdGhlIGRldmljZSBzdG9wIGNhbGxiYWNrIChgYW10X2Rldl9zdG9wYCkgYW5kIHRoZSB0dW5uZWwgZXhwaXJhdGlvbiB3b3JrcXVldWUgY2FsbGJhY2sgKGBhbXRfdHVubmVsX2V4cGlyZWApLiBUaGVzZSBhcmUgcmVhY2hhYmxlIGNvcmUgbmV0d29yayBkcml2ZXIgcGF0aHMgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGNyZWF0aW5nIGFuZCBkZXN0cm95aW5nIEFNVCBpbnRlcmZhY2VzIHZpYSBydG5ldGxpbmssIG1ha2luZyB0aGVtIGhpZ2hseSByZWxldmFudCBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjJUMDU6NDI6MzYuNjQxNTE0NzAzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTcyNDg0OTgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMTM4YzM4YTEwOTg4OTY2NDM0NjgwMTA1OTNjZThiNzJhZTM2OTFlNFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEF1ZyAyMiAwNTo0MjozNSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9hbXQuYyBiL2RyaXZlcnMvbmV0L2FtdC5jXFxuaW5kZXggYmRkYzI0ZTE4NTZkZS4uYTVkYjAyZDgxMjkxNyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9hbXQuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2FtdC5jXFxuQEAgLTEzNDgsNiArMTM0OCwxMSBAQCBzdGF0aWMgdm9pZCBhbXRfdHVubmVsX2V4cGlyZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuIFxcdHN0cnVjdCBhbXRfZGV2ICphbXQgPSB0dW5uZWwtXFx1MDAzZWFtdDtcXG4gXFxuIFxcdHNwaW5fbG9ja19iaChcXHUwMDI2YW10LVxcdTAwM2Vsb2NrKTtcXG4rXFx0LyogYW10X2Rldl9zdG9wKCkgbWFya3MgdHVubmVscyBpdCBvd25zIHdpdGggbGlzdF9kZWxfaW5pdCgpLiAqL1xcbitcXHRpZiAobGlzdF9lbXB0eShcXHUwMDI2dHVubmVsLVxcdTAwM2VsaXN0KSkge1xcbitcXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2YW10LVxcdTAwM2Vsb2NrKTtcXG4rXFx0XFx0cmV0dXJuO1xcbitcXHR9XFxuIFxcdHJjdV9yZWFkX2xvY2soKTtcXG4gXFx0bGlzdF9kZWxfcmN1KFxcdTAwMjZ0dW5uZWwtXFx1MDAzZWxpc3QpO1xcbiBcXHRhbXQtXFx1MDAzZW5yX3R1bm5lbHMtLTtcXG5AQCAtMzA2OCw3ICszMDczLDcgQEAgc3RhdGljIGludCBhbXRfZGV2X29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gc3RhdGljIGludCBhbXRfZGV2X3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4ge1xcbiBcXHRzdHJ1Y3QgYW10X2RldiAqYW10ID0gbmV0ZGV2X3ByaXYoZGV2KTtcXG4tXFx0c3RydWN0IGFtdF90dW5uZWxfbGlzdCAqdHVubmVsLCAqdG1wO1xcbitcXHRzdHJ1Y3QgYW10X3R1bm5lbF9saXN0ICp0dW5uZWw7XFxuIFxcdHN0cnVjdCBza19idWZmICpza2I7XFxuIFxcdHN0cnVjdCBzb2NrICpzaztcXG4gXFx0aW50IGk7XFxuQEAgLTMwNzcsOSArMzA4MiwxMSBAQCBzdGF0aWMgaW50IGFtdF9kZXZfc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiBcXHRkaXNhYmxlX2RlbGF5ZWRfd29ya19zeW5jKFxcdTAwMjZhbXQtXFx1MDAzZWRpc2NvdmVyeV93cSk7XFxuIFxcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcXHUwMDI2YW10LVxcdTAwM2VzZWNyZXRfd3EpO1xcbiBcXG4tXFx0Lyogc2h1dGRvd24gKi9cXG4rXFx0LyogUXVpZXNjZSBSWCBwYXRoIGJlZm9yZSB0ZWFyaW5nIGRvd24gdHVubmVscy4gKi9cXG4gXFx0c2sgPSBydG5sX2RlcmVmZXJlbmNlKGFtdC1cXHUwMDNlc2spO1xcbiBcXHRSQ1VfSU5JVF9QT0lOVEVSKGFtdC1cXHUwMDNlc2ssIE5VTEwpO1xcbitcXHRpZiAoc2spXFxuK1xcdFxcdHJjdV9hc3NpZ25fc2tfdXNlcl9kYXRhKHNrLCBOVUxMKTtcXG4gXFx0c3luY2hyb25pemVfbmV0KCk7XFxuIFxcdGlmIChzaylcXG4gXFx0XFx0dWRwX3R1bm5lbF9zb2NrX3JlbGVhc2Uoc2spO1xcbkBAIC0zMDk3LDEzICszMTA0LDIxIEBAIHN0YXRpYyBpbnQgYW10X2Rldl9zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIFxcdGFtdC1cXHUwMDNlcmVxX2NudCA9IDA7XFxuIFxcdFdSSVRFX09OQ0UoYW10LVxcdTAwM2VyZW1vdGVfaXAsIDApO1xcbiBcXG4tXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHR1bm5lbCwgdG1wLCBcXHUwMDI2YW10LVxcdTAwM2V0dW5uZWxfbGlzdCwgbGlzdCkge1xcbi1cXHRcXHRsaXN0X2RlbF9yY3UoXFx1MDAyNnR1bm5lbC1cXHUwMDNlbGlzdCk7XFxuK1xcdHNwaW5fbG9ja19iaChcXHUwMDI2YW10LVxcdTAwM2Vsb2NrKTtcXG4rXFx0d2hpbGUgKCFsaXN0X2VtcHR5KFxcdTAwMjZhbXQtXFx1MDAzZXR1bm5lbF9saXN0KSkge1xcbitcXHRcXHR0dW5uZWwgPSBsaXN0X2ZpcnN0X2VudHJ5KFxcdTAwMjZhbXQtXFx1MDAzZXR1bm5lbF9saXN0LFxcbitcXHRcXHRcXHRcXHRcXHQgIHN0cnVjdCBhbXRfdHVubmVsX2xpc3QsIGxpc3QpO1xcbitcXHRcXHRsaXN0X2RlbF9pbml0KFxcdTAwMjZ0dW5uZWwtXFx1MDAzZWxpc3QpO1xcbiBcXHRcXHRhbXQtXFx1MDAzZW5yX3R1bm5lbHMtLTtcXG4tXFx0XFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFxcdTAwMjZ0dW5uZWwtXFx1MDAzZWdjX3dxKTtcXG4rXFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNmFtdC1cXHUwMDNlbG9jayk7XFxuK1xcbitcXHRcXHRkaXNhYmxlX2RlbGF5ZWRfd29ya19zeW5jKFxcdTAwMjZ0dW5uZWwtXFx1MDAzZWdjX3dxKTtcXG4gXFx0XFx0YW10X2NsZWFyX2dyb3Vwcyh0dW5uZWwpO1xcbiBcXHRcXHRrZnJlZV9yY3UodHVubmVsLCByY3UpO1xcbitcXG4rXFx0XFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZhbXQtXFx1MDAzZWxvY2spO1xcbiBcXHR9XFxuK1xcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZhbXQtXFx1MDAzZWxvY2spO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjJUMDU6NDI6MzcuODE0NjYxMzY2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTYwMjQ3NTMyNzE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFNVFwiLFxuICAgIFwiSVBfTVVMVElDQVNUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYW10X2Rldl9zdG9wXCIsXG4gICAgXCJhbXRfdHVubmVsX2V4cGlyZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB0ZWFyZG93biBsb2dpYyBvZiBBTVQgKEF1dG9tYXRpYyBNdWx0aWNhc3QgVHVubmVsaW5nKSBuZXR3b3JrIGludGVyZmFjZXMsIHNwZWNpZmljYWxseSBpbiB0aGUgZGV2aWNlIHN0b3AgY2FsbGJhY2sgKGBhbXRfZGV2X3N0b3BgKSBhbmQgdGhlIHR1bm5lbCBleHBpcmF0aW9uIHdvcmtxdWV1ZSBjYWxsYmFjayAoYGFtdF90dW5uZWxfZXhwaXJlYCkuIFRoZXNlIGFyZSByZWFjaGFibGUgY29yZSBuZXR3b3JrIGRyaXZlciBwYXRocyB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgYnkgY3JlYXRpbmcgYW5kIGRlc3Ryb3lpbmcgQU1UIGludGVyZmFjZXMgdmlhIHJ0bmV0bGluaywgbWFraW5nIHRoZW0gaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAxMzhjMzhhMTA5ODg5NjY0MzQ2ODAxMDU5M2NlOGI3MmFlMzY5MWU0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgMjIgMDU6NDI6MzUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9hbXQuYyBiL2RyaXZlcnMvbmV0L2FtdC5jXG5pbmRleCBiZGRjMjRlMTg1NmRlLi5hNWRiMDJkODEyOTE3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvYW10LmNcbisrKyBiL2RyaXZlcnMvbmV0L2FtdC5jXG5AQCAtMTM0OCw2ICsxMzQ4LDExIEBAIHN0YXRpYyB2b2lkIGFtdF90dW5uZWxfZXhwaXJlKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiBcdHN0cnVjdCBhbXRfZGV2ICphbXQgPSB0dW5uZWwtXHUwMDNlYW10O1xuIFxuIFx0c3Bpbl9sb2NrX2JoKFx1MDAyNmFtdC1cdTAwM2Vsb2NrKTtcbitcdC8qIGFtdF9kZXZfc3RvcCgpIG1hcmtzIHR1bm5lbHMgaXQgb3ducyB3aXRoIGxpc3RfZGVsX2luaXQoKS4gKi9cbitcdGlmIChsaXN0X2VtcHR5KFx1MDAyNnR1bm5lbC1cdTAwM2VsaXN0KSkge1xuK1x0XHRzcGluX3VubG9ja19iaChcdTAwMjZhbXQtXHUwMDNlbG9jayk7XG4rXHRcdHJldHVybjtcbitcdH1cbiBcdHJjdV9yZWFkX2xvY2soKTtcbiBcdGxpc3RfZGVsX3JjdShcdTAwMjZ0dW5uZWwtXHUwMDNlbGlzdCk7XG4gXHRhbXQtXHUwMDNlbnJfdHVubmVscy0tO1xuQEAgLTMwNjgsNyArMzA3Myw3IEBAIHN0YXRpYyBpbnQgYW10X2Rldl9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gc3RhdGljIGludCBhbXRfZGV2X3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiB7XG4gXHRzdHJ1Y3QgYW10X2RldiAqYW10ID0gbmV0ZGV2X3ByaXYoZGV2KTtcbi1cdHN0cnVjdCBhbXRfdHVubmVsX2xpc3QgKnR1bm5lbCwgKnRtcDtcbitcdHN0cnVjdCBhbXRfdHVubmVsX2xpc3QgKnR1bm5lbDtcbiBcdHN0cnVjdCBza19idWZmICpza2I7XG4gXHRzdHJ1Y3Qgc29jayAqc2s7XG4gXHRpbnQgaTtcbkBAIC0zMDc3LDkgKzMwODIsMTEgQEAgc3RhdGljIGludCBhbXRfZGV2X3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdGRpc2FibGVfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2YW10LVx1MDAzZWRpc2NvdmVyeV93cSk7XG4gXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2YW10LVx1MDAzZXNlY3JldF93cSk7XG4gXG4tXHQvKiBzaHV0ZG93biAqL1xuK1x0LyogUXVpZXNjZSBSWCBwYXRoIGJlZm9yZSB0ZWFyaW5nIGRvd24gdHVubmVscy4gKi9cbiBcdHNrID0gcnRubF9kZXJlZmVyZW5jZShhbXQtXHUwMDNlc2spO1xuIFx0UkNVX0lOSVRfUE9JTlRFUihhbXQtXHUwMDNlc2ssIE5VTEwpO1xuK1x0aWYgKHNrKVxuK1x0XHRyY3VfYXNzaWduX3NrX3VzZXJfZGF0YShzaywgTlVMTCk7XG4gXHRzeW5jaHJvbml6ZV9uZXQoKTtcbiBcdGlmIChzaylcbiBcdFx0dWRwX3R1bm5lbF9zb2NrX3JlbGVhc2Uoc2spO1xuQEAgLTMwOTcsMTMgKzMxMDQsMjEgQEAgc3RhdGljIGludCBhbXRfZGV2X3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdGFtdC1cdTAwM2VyZXFfY250ID0gMDtcbiBcdFdSSVRFX09OQ0UoYW10LVx1MDAzZXJlbW90ZV9pcCwgMCk7XG4gXG4tXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUodHVubmVsLCB0bXAsIFx1MDAyNmFtdC1cdTAwM2V0dW5uZWxfbGlzdCwgbGlzdCkge1xuLVx0XHRsaXN0X2RlbF9yY3UoXHUwMDI2dHVubmVsLVx1MDAzZWxpc3QpO1xuK1x0c3Bpbl9sb2NrX2JoKFx1MDAyNmFtdC1cdTAwM2Vsb2NrKTtcbitcdHdoaWxlICghbGlzdF9lbXB0eShcdTAwMjZhbXQtXHUwMDNldHVubmVsX2xpc3QpKSB7XG4rXHRcdHR1bm5lbCA9IGxpc3RfZmlyc3RfZW50cnkoXHUwMDI2YW10LVx1MDAzZXR1bm5lbF9saXN0LFxuK1x0XHRcdFx0XHQgIHN0cnVjdCBhbXRfdHVubmVsX2xpc3QsIGxpc3QpO1xuK1x0XHRsaXN0X2RlbF9pbml0KFx1MDAyNnR1bm5lbC1cdTAwM2VsaXN0KTtcbiBcdFx0YW10LVx1MDAzZW5yX3R1bm5lbHMtLTtcbi1cdFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNnR1bm5lbC1cdTAwM2VnY193cSk7XG4rXHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmFtdC1cdTAwM2Vsb2NrKTtcbitcbitcdFx0ZGlzYWJsZV9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZ0dW5uZWwtXHUwMDNlZ2Nfd3EpO1xuIFx0XHRhbXRfY2xlYXJfZ3JvdXBzKHR1bm5lbCk7XG4gXHRcdGtmcmVlX3JjdSh0dW5uZWwsIHJjdSk7XG4rXG4rXHRcdHNwaW5fbG9ja19iaChcdTAwMjZhbXQtXHUwMDNlbG9jayk7XG4gXHR9XG4rXHRzcGluX3VubG9ja19iaChcdTAwMjZhbXQtXHUwMDNlbG9jayk7XG4gXG4gXHRyZXR1cm4gMDtcbiB9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMlQwNTo0MjozNy44MTQ2NjI1NjZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MDQ3MzM5MDgxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBBTVQgRHJpdmVyOiBBIFF1aWNrIEFzc2Vzc21lbnQqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCBhIHBhdGNoIGhlcmUgYWZmZWN0aW5nIHRoZSBgZHJpdmVycy9uZXQvYW10LmNgIGZpbGUuIEl0IHNlZW1zIHRvIGJlIGZvY3VzaW5nIG9uIHRoZSBBTVQgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdG91Y2hpbmcgYGFtdF90dW5uZWxfZXhwaXJlYCBhbmQgYGFtdF9kZXZfc3RvcGAuIEhtbSwgYGFtdF90dW5uZWxfZXhwaXJlYCBpcyBhIHdvcmtxdWV1ZSBjYWxsYmFjayBhbmQgYGFtdF9kZXZfc3RvcGAgaXMgYSBuZXR3b3JrIGRldmljZSBzdG9wIGNhbGxiYWNrIOKAkyB0aGF0J3MgZ29vZCB0byBrbm93IGZvciBjb250ZXh0LiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGBsaXN0X2VtcHR5KClgIGNoZWNrIHdpdGhpbiBgYW10X3R1bm5lbF9leHBpcmVgIGFuZCBjaGFuZ2VzIGhvdyB0dW5uZWxzIGFyZSB0b3JuIGRvd24gaW4gYGFtdF9kZXZfc3RvcGAuIFRoZSBpbnRlcmVzdGluZyBiaXQgaXMgdGhlIGFkZGl0aW9uIG9mIGByY3VfYXNzaWduX3NrX3VzZXJfZGF0YShzaywgTlVMTClgIGluIGBhbXRfZGV2X3N0b3BgLlxuXG5HaXZlbiB0aGlzLCBJIG5lZWQgdG8gZGVjaWRlIGlmIHRoaXMgd2FycmFudHMgZnV6emluZy4gSXQncyBhIGJ1ZyBmaXggZm9yIHRoZSBBTVQgZHJpdmVyLCB3aGljaCwgYXMgSSByZWNhbGwsIGlzIHVzZWQgZm9yIEF1dG9tYXRpYyBNdWx0aWNhc3QgVHVubmVsaW5nLiBBTVQgZHJpdmVycyBjYW4gYmUgY3JlYXRlZCB0aHJvdWdoIHJ0bmV0bGluay5cblxuTGV0IG1lIGp1c3QgcXVpY2tseSBjaGVjayBgZHJpdmVycy9uZXQvYW10LmNgIGZvciB0aGUgcmVsZXZhbnQgS2NvbmZpZyBvcHRpb24uIFNlZSBpZiB0aGlzIGlzIHNvbWV0aGluZyB3b3J0aCBzcGVuZGluZyBzb21lIHRpbWUgb24gdG8gZW5zdXJlIGEgcm9idXN0IGZpeC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjYxMiwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5MywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIyVDA1OjQzOjU4LjI4ODA1NTk1MloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzU5NjgxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQU1UXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZz0yODk9Y29uZmlnIFBGQ1BcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctMzAxLVxcbmRyaXZlcnMvbmV0L0tjb25maWc6MzAyOmNvbmZpZyBBTVRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTMwMy1cXHR0cmlzdGF0ZSBcXFwiQXV0b21hdGljIE11bHRpY2FzdCBUdW5uZWxpbmcgKEFNVClcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIyVDA1OjQzOjU4LjM0MTY1OTY2OVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE1NjgyNjI4NjE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgVGFyZ2V0IFByaW9yaXRpemF0aW9uOiBBTVQgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIHRoZSBjb25maWd1cmF0aW9uIEknbSBsb29raW5nIGF0IGlzIGBBTVRgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSB2ZXJpZnkgdGhlIHJlYWNoYWJpbGl0eSBvZiB0d28gZnVuY3Rpb25zOiBgYW10X2Rldl9zdG9wYCBhbmQgYGFtdF90dW5uZWxfZXhwaXJlYC4gYGFtdF9kZXZfc3RvcGAgaXMgdHJpZ2dlcmVkIHdoZW4gdGhlIG5ldHdvcmsgaW50ZXJmYWNlIGdvZXMgZG93biwgYW5kIGBhbXRfdHVubmVsX2V4cGlyZWAgaXMgaW52b2tlZCBmcm9tIGEgZGVsYXllZCB3b3JrcXVldWUuIFNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCwgdGhleSdyZSBib3RoIGRlZmluaXRlbHkgd29ydGggaW52ZXN0aWdhdGluZyBmb3IgZnV6emluZyBwb3RlbnRpYWwuXG5cbk15IGluaXRpYWwgZm9jdXMgaXMgb24gdGhvc2UgdHdvOiBgYW10X3R1bm5lbF9leHBpcmVgIGFuZCBgYW10X2Rldl9zdG9wYC4gQnV0IGhhbmcgb24uLi4gYGFtdF90dW5uZWxfZXhwaXJlYCBpcyAqc3RhdGljKi4gSSBuZWVkIHRvIGRldGVybWluZSBpZiBpdCdzIGlubGluZWQuIEl0J3MgdXNlZCBhcyBhIHdvcmtxdWV1ZSBjYWxsYmFjaywgc28gaXRzIGFkZHJlc3MgbXVzdCBiZSB0YWtlbiwgd2hpY2ggcnVsZXMgb3V0IGlubGluaW5nLiBUaGF0J3MgYSBwb2ludCBhZ2FpbnN0IGl0LCBJIG5lZWQgdG8ga2VlcCB0aGF0IGluIG1pbmQuIFRoZSBpbnN0cnVjdGlvbnMgZG8gYWR2aXNlIHByaW9yaXRpemluZyBub24tc3RhdGljLCBub24taW5saW5lZCBlbnRyeSBwb2ludHMuXG5cbk5vdywgbGV0J3MgbG9vayBhdCBgYW10X2Rldl9zdG9wYC4gSXQgaXMgYWxzbyBzdGF0aWMsIGFuZCB1c2VkIGFzIGBuZG9fc3RvcGAuIEkgbmVlZCB0byBicm9hZGVuIG15IHNlYXJjaCBhbmQgc2VlIGlmIHRoZXJlIGFyZSBiZXR0ZXIgY2FuZGlkYXRlcyBsaWtlIGBhbXRfbmV3bGlua2Agb3Igc29tZXRoaW5nIHNpbWlsYXIsIHRoYXQgYXJlIG5vbi1zdGF0aWMgYW5kIG5vbi1pbmxpbmVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTY3LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjA3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIyVDA1OjQ0OjE0LjAyNDI5MDE5NVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTAzMjgxNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhbXRfZGV2X3N0b3BcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvYW10LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvYW10LmM9MTM0Mz1zdGF0aWMgdm9pZCBhbXRfdHVubmVsX2V4cGlyZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC9hbXQuYy0xMzUwLVxcdHNwaW5fbG9ja19iaChcXHUwMDI2YW10LVxcdTAwM2Vsb2NrKTtcXG5kcml2ZXJzL25ldC9hbXQuYzoxMzUxOlxcdC8qIGFtdF9kZXZfc3RvcCgpIG1hcmtzIHR1bm5lbHMgaXQgb3ducyB3aXRoIGxpc3RfZGVsX2luaXQoKS4gKi9cXG5kcml2ZXJzL25ldC9hbXQuYy0xMzUyLVxcdGlmIChsaXN0X2VtcHR5KFxcdTAwMjZ0dW5uZWwtXFx1MDAzZWxpc3QpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9hbXQuYz0zMDM3PXN0YXRpYyBpbnQgYW10X2Rldl9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9hbXQuYy0zMDcyLVxcbmRyaXZlcnMvbmV0L2FtdC5jOjMwNzM6c3RhdGljIGludCBhbXRfZGV2X3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC9hbXQuYy0zMDc0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2FtdC5jPTMxNTE9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBhbXRfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2FtdC5jLTMxNTQtXFx0Lm5kb19vcGVuXFx0XFx0PSBhbXRfZGV2X29wZW4sXFxuZHJpdmVycy9uZXQvYW10LmM6MzE1NTpcXHQubmRvX3N0b3BcXHRcXHQ9IGFtdF9kZXZfc3RvcCxcXG5kcml2ZXJzL25ldC9hbXQuYy0zMTU2LVxcdC5uZG9fc3RhcnRfeG1pdCAgICAgICAgID0gYW10X2Rldl94bWl0LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMlQwNTo0NDoxNC4wNjkzMjgwNjFaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODY3NDY2ODY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipBbmFseXppbmcgYGFtdF9kZXZfc3RvcGAgYW5kIGBhbXRfdHVubmVsX2V4cGlyZWAqKlxuXG5Pa2F5LCBzbyBgYW10X2Rldl9zdG9wYCBpcyBhIGNhbGxiYWNrIGZ1bmN0aW9uIHdpdGhpbiB0aGUgYGFtdF9uZXRkZXZfb3BzYCBzdHJ1Y3R1cmUsIGdvdCBpdC4gVGhpcyBtYWtlcyBpdCBhIG5ldHdvcmsgZGV2aWNlIG9wZXJhdGlvbiwgcHJvYmFibHkgcmVsYXRlZCB0byBzdG9wcGluZyBvciBkaXNhYmxpbmcgdGhlIEFNVCAoQWN0aXZlIE1hbmFnZW1lbnQgVGVjaG5vbG9neSkgaW50ZXJmYWNlLCBhIGNvbXBvbmVudCB3aXRoIHdoaWNoIEknbSBmYW1pbGlhci4gSSBuZWVkIHRvIGtlZXAgdGhhdCBpbiBtaW5kLiBUaGVuLCBgYW10X3R1bm5lbF9leHBpcmVgIGlzIGEgY2FsbGJhY2sgZm9yIHRoZSB3b3JrcXVldWUuIFRoaXMgc3VnZ2VzdHMgc29tZSBwZXJpb2RpYyBjbGVhbnVwIG9yIHRpbWVvdXQgaGFuZGxpbmcgcmVsYXRlZCB0byBBTVQgdHVubmVscywgc29tZXRoaW5nIGFzeW5jaHJvbm91cy5cblxuUmlnaHQsIHNvIHRvIGNvbnRpbnVlIG9uLCBJJ20gdGhpbmtpbmcgSSBzaG91bGQgcHJvYmFibHkgc2VlIGlmIHRoZXJlIGFyZSBub24tc3RhdGljIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHRoZXNlLiBOb24tc3RhdGljIGZ1bmN0aW9ucyBhcmUgb2Z0ZW4gZ2xvYmFsIG9yIGFjY2Vzc2libGUgZnJvbSBvdGhlciBwYXJ0cyBvZiB0aGUga2VybmVsLiBUaGlzIGNvdWxkIGJlIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlc2UgZnVuY3Rpb25zIGludGVyYWN0IHdpdGggdGhlIGJyb2FkZXIgc3lzdGVtLCBhbmQgd2hlcmUgZGVwZW5kZW5jaWVzIG1pZ2h0IGxpZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDAxNCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIyVDA1OjQ0OjE4LjkzNjc5ODMzNVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDE2Mzk4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhbXRfdHVubmVsX2V4cGlyZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9hbXQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9hbXQuYz0xMzI3PXN0YXRpYyB2b2lkIGFtdF9jbGVhcl9ncm91cHMoc3RydWN0IGFtdF90dW5uZWxfbGlzdCAqdHVubmVsKVxcbi0tXFxuZHJpdmVycy9uZXQvYW10LmMtMTM0Mi1cXG5kcml2ZXJzL25ldC9hbXQuYzoxMzQzOnN0YXRpYyB2b2lkIGFtdF90dW5uZWxfZXhwaXJlKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL25ldC9hbXQuYy0xMzQ0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2FtdC5jPTI3MTA9c3RhdGljIGJvb2wgYW10X3JlcXVlc3RfaGFuZGxlcihzdHJ1Y3QgYW10X2RldiAqYW10LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvYW10LmMtMjc1Ny1cXG5kcml2ZXJzL25ldC9hbXQuYzoyNzU4OlxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZ0dW5uZWwtXFx1MDAzZWdjX3dxLCBhbXRfdHVubmVsX2V4cGlyZSk7XFxuZHJpdmVycy9uZXQvYW10LmMtMjc1OS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjJUMDU6NDQ6MTguOTgwOTY2NzgxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTExNTYwNDc2ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRm9jdXNpbmcgb24gdGhlIEFNVCBUdW5uZWwgRXhwaXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyBgYW10X3R1bm5lbF9leHBpcmVgIGlzIHVzZWQg4oCTIGl0J3MgcGFydCBvZiBgSU5JVF9ERUxBWUVEX1dPUktgLiBIbW0sIGludGVyZXN0aW5nLiBUaGUga2V5IGhlcmUgaXMgdGhhdCBib3RoIGBhbXRfZGV2X3N0b3BgIGFuZCBgYW10X3R1bm5lbF9leHBpcmVgIGFyZSBtb2RpZmllZCwgYW5kIHRoZXkgYXJlIGJvdGggY2FsbGJhY2tzLCBtYWtpbmcgdGhlbSBwcmltZSBjYW5kaWRhdGVzIGZvciBgRm9jdXNTeW1ib2xzYC4gVGhleSBhcmUgc3RhdGljLCB5ZXMsIGJ1dCB0aGVpciBhZGRyZXNzZXMgYXJlIHRha2VuLCBtZWFuaW5nIHRoZXkgYXJlbid0IGlubGluZWQgYnkgdGhlIGNvbXBpbGVyLiBUaGlzIGlzIGdyZWF0OyBiZWNhdXNlIHRoZXkgaGF2ZSBkaXN0aW5jdCBhZGRyZXNzZXMsIHdlIGNhbiBob29rIHRoZW0hXG5cbldhaXQgYSBzZWNvbmTigKYgSSBuZWVkIHRvIHJlLXJlYWQgdGhhdCBwcm9tcHQuIEl0IGVtcGhhc2l6ZXMgcHJlZmVycmluZyBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMgb3ZlciBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucyB0aGF0IGFyZSB0eXBpY2FsbHkgaW5saW5lZC4gQnV0LCB0aGUgYWRkcmVzc2VzIGFyZSB0YWtlbiwgc28gdGhleSdyZSBub3QgaW5saW5lZC5cblxuVGhlIGFkZHJlc3NlcyBhcmUgdGFrZW4sIHNvIHdlIGFyZSBva2F5IVxuQ291bGQgd2UgKmFsc28qIGNvbnNpZGVyIGFkZGluZyBgYW10X25ld2xpbmtgIG9yIGBhbXRfZGV2X29wZW5gPyBNYXliZSwgYnV0IGZvciBub3csIGxldCdzIGtlZXAgaXQgc2ltcGxlIGFuZCBqdXN0IGdvIHdpdGggYGFtdF9kZXZfc3RvcGAgYW5kIGBhbXRfdHVubmVsX2V4cGlyZWAuIFRoaXMgc2VlbXMgbGlrZSB0aGUgbW9zdCBsb2dpY2FsIHBhdGguXG5cbkJlZm9yZSBzb2xpZGlmeWluZyB0aGlzLCBsZXQncyBkb3VibGUgY2hlY2sgaWYgdGhlcmUgYXJlIG90aGVyIGNvbmZpZ3VyYXRpb25zIHRoYXQgYWZmZWN0IHRoaXMuIEkgYmVsaWV2ZSBgQU1UYCBpcyBkZXBlbmRlbnQgb24gYElORVRgIGFuZCBgSVBWNmAuIEkgd2lsbCBjaGVjayBgZHJpdmVycy9uZXQvS2NvbmZpZ2AgdG8gY29uZmlybSBhbnkgZGVwZW5kZW5jeS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDQ5NiwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMlQwNTo0NDozMC4xMzcwMTgzMzZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MDk2NTI2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBBTVRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnPTI4OT1jb25maWcgUEZDUFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMDEtXFxuZHJpdmVycy9uZXQvS2NvbmZpZzozMDI6Y29uZmlnIEFNVFxcbmRyaXZlcnMvbmV0L0tjb25maWctMzAzLVxcdHRyaXN0YXRlIFxcXCJBdXRvbWF0aWMgTXVsdGljYXN0IFR1bm5lbGluZyAoQU1UKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjJUMDU6NDQ6MzAuMTgxMTE3NDEyWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE3MzEwNDE1Nzg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93biwgcHJlc2VudGVkIHRvIGEgZmVsbG93IGV4cGVydDpcblxuKipEaXZpbmcgaW50byB0aGUgQU1UIEtjb25maWcqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaG93IEludGVsIEFjdGl2ZSBNYW5hZ2VtZW50IFRlY2hub2xvZ3kgKEFNVCkgaXMgY29uZmlndXJlZCBpbiB0aGlzIHByb2plY3QuIFNvLCB0aGUgbG9naWNhbCBmaXJzdCBzdGVwIGlzIHRvIGRpZyBpbnRvIHRoZSBLY29uZmlnIGZpbGUuIEknbSBnb2luZyB0byBzdGFydCBieSBnZXR0aW5nIG15IGJlYXJpbmdzOiB3aGF0IG9wdGlvbnMgYXJlIGF2YWlsYWJsZT8gV2hhdCBkZXBlbmRlbmNpZXMgZXhpc3Q/IFdoYXQgYXJlIHRoZSBkZWZhdWx0IHNldHRpbmdzPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYnVpbGRpbmcgYmxvY2tzIGZvciB0aGlzIHNwZWNpZmljIGltcGxlbWVudGF0aW9uLiBJJ20gbG9va2luZyBmb3IgY2x1ZXMgYWJvdXQgdGhlIGNob3NlbiBjb25maWd1cmF0aW9uLCBhbnkgcmVsZXZhbnQgY3VzdG9taXphdGlvbiBkb25lLCBhbmQgaWYgdGhlcmUgYXJlIGFueSBnb3RjaGFzIEkgbmVlZCB0byBhbnRpY2lwYXRlLiBMZXQncyBzZWUgd2hhdCB3ZSd2ZSBnb3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUxMjIsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMlQwNTo0NDo0Ny40OTE1MzU3NVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MzMyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDMwMCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDMwMDpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIHBmY3AuXFxuIDMwMTpcXHRcXG4gMzAyOlxcdGNvbmZpZyBBTVRcXG4gMzAzOlxcdFxcdHRyaXN0YXRlIFxcXCJBdXRvbWF0aWMgTXVsdGljYXN0IFR1bm5lbGluZyAoQU1UKVxcXCJcXG4gMzA0OlxcdFxcdGRlcGVuZHMgb24gSU5FVCBcXHUwMDI2XFx1MDAyNiBJUF9NVUxUSUNBU1RcXG4gMzA1OlxcdFxcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxcbiAzMDY6XFx0XFx0aGVscFxcbiAzMDc6XFx0XFx0ICBUaGlzIGFsbG93cyBvbmUgdG8gY3JlYXRlIEFNVChBdXRvbWF0aWMgTXVsdGljYXN0IFR1bm5lbGluZylcXG4gMzA4OlxcdFxcdCAgdmlydHVhbCBpbnRlcmZhY2VzIHRoYXQgcHJvdmlkZSBtdWx0aWNhc3QgdHVubmVsaW5nLlxcbiAzMDk6XFx0XFx0ICBUaGVyZSBhcmUgdHdvIHJvbGVzLCBHYXRld2F5LCBhbmQgUmVsYXkuXFxuIDMxMDpcXHRcXHQgIEdhdGV3YXkgRW5jYXBzdWxhdGVzIElHTVAvTUxEIHRyYWZmaWMgZnJvbSBsaXN0ZW5lcnMgdG8gdGhlIFJlbGF5LlxcbiAzMTE6XFx0XFx0ICBHYXRld2F5IERlY2Fwc3VsYXRlcyBtdWx0aWNhc3QgdHJhZmZpYyBmcm9tIHRoZSBSZWxheSB0byBMaXN0ZW5lcnMuXFxuIDMxMjpcXHRcXHQgIFJlbGF5IEVuY2Fwc3VsYXRlcyBtdWx0aWNhc3QgdHJhZmZpYyBmcm9tIFNvdXJjZXMgdG8gR2F0ZXdheS5cXG4gMzEzOlxcdFxcdCAgUmVsYXkgRGVjYXBzdWxhdGVzIElHTVAvTUxEIHRyYWZmaWMgZnJvbSBHYXRld2F5LlxcbiAzMTQ6XFx0XFxuIDMxNTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXJzIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXFxuIDMxNjpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIGFtdC5cXG4gMzE3OlxcdFxcbiAzMTg6XFx0Y29uZmlnIE1BQ1NFQ1xcbiAzMTk6XFx0XFx0dHJpc3RhdGUgXFxcIklFRUUgODAyLjFBRSBNQUMtbGV2ZWwgZW5jcnlwdGlvbiAoTUFDc2VjKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjJUMDU6NDQ6NDcuNDkxNjMwNzVaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA0OTM5NDM1MjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ29uZmlndXJhdGlvbiBTdHJhdGVneSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIGRlcGVuZGVuY2llczogYElORVRgIGFuZCBgSVBfTVVMVElDQVNUYC4gYElORVRgIGlzIHVzdWFsbHkgYSBnaXZlbiwgYnV0IGxldCdzIGp1c3QgbWFrZSBzdXJlIGl0J3MgZXhwbGljaXRseSBlbmFibGVkLiBUaGF0IG1lYW5zIEkgbmVlZCB0byBtYWtlIHN1cmUgYEFNVGAsIGBJUF9NVUxUSUNBU1RgLCBhbmQsIGp1c3QgaW4gY2FzZSwgYElORVRgLCBhcmUgYWxsIGluY2x1ZGVkIGluIHRoZSBgRW5hYmxlQ29uZmlnc2AgbGlzdC4gTm93LCBob2xkIG9uLCBgSVBfTVVMVElDQVNUYCBpc24ndCBhIHNpbXBsZSBkZXBlbmRlbmN5OyBpdCdzIGEgKmNvbmZpZyohIFJpZ2h0LiBHb3QgaXQuXG5cbk5leHQsIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBgYW10X2Rldl9zdG9wYCBhbmQgYGFtdF90dW5uZWxfZXhwaXJlYCBhcmUgdGhlIHJpZ2h0IHN5bWJvbHMgdG8gYmUgd29ya2luZyB3aXRoLiBJIG5lZWQgdG8gZW5zdXJlIHRoZXkncmUgdGhlIGRpcmVjdCB0YXJnZXRzIG9mIHRoZSBtb2RpZmljYXRpb25zLiAqWWVzKiwgbG9va2luZyBhdCB0aGUgcmVsZXZhbnQgY29kZSwgdGhleSdyZSB0aGUgb25lcyBiZWluZyBkaXJlY3RseSBjaGFuZ2VkLiBHb29kLlxuXG5XaXRoIHRoYXQgY29uZmlybWVkLCBJJ2xsIGdvIGFoZWFkIGFuZCBidWlsZCBteSBzb2x1dGlvbiwgbWFraW5nIHN1cmUgdG8gdXNlIGBzZXQtcmVzdWx0c2AgYXBwcm9wcmlhdGVseSB0byByZWZsZWN0IHRoZSBkZXNpcmVkIGNvbmZpZ3VyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2NTcsIk91dHB1dFRva2VucyI6MTMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMlQwNTo0NToxNy45ODU1NzY5NjVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NjYxNDY3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQU1UXCIsXG4gICAgXCJJUF9NVUxUSUNBU1RcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhbXRfZGV2X3N0b3BcIixcbiAgICBcImFtdF90dW5uZWxfZXhwaXJlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHRlYXJkb3duIGxvZ2ljIG9mIEFNVCAoQXV0b21hdGljIE11bHRpY2FzdCBUdW5uZWxpbmcpIG5ldHdvcmsgaW50ZXJmYWNlcywgc3BlY2lmaWNhbGx5IGluIHRoZSBkZXZpY2Ugc3RvcCBjYWxsYmFjayAoYGFtdF9kZXZfc3RvcGApIGFuZCB0aGUgdHVubmVsIGV4cGlyYXRpb24gd29ya3F1ZXVlIGNhbGxiYWNrIChgYW10X3R1bm5lbF9leHBpcmVgKS4gVGhlc2UgYXJlIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmsgZHJpdmVyIHBhdGhzIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBjcmVhdGluZyBhbmQgZGVzdHJveWluZyBBTVQgaW50ZXJmYWNlcyB2aWEgcnRuZXRsaW5rLCBtYWtpbmcgdGhlbSBoaWdobHkgcmVsZXZhbnQgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQU1UXCIsXG4gICAgXCJJUF9NVUxUSUNBU1RcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhbXRfZGV2X3N0b3BcIixcbiAgICBcImFtdF90dW5uZWxfZXhwaXJlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHRlYXJkb3duIGxvZ2ljIG9mIEFNVCAoQXV0b21hdGljIE11bHRpY2FzdCBUdW5uZWxpbmcpIG5ldHdvcmsgaW50ZXJmYWNlcywgc3BlY2lmaWNhbGx5IGluIHRoZSBkZXZpY2Ugc3RvcCBjYWxsYmFjayAoYGFtdF9kZXZfc3RvcGApIGFuZCB0aGUgdHVubmVsIGV4cGlyYXRpb24gd29ya3F1ZXVlIGNhbGxiYWNrIChgYW10X3R1bm5lbF9leHBpcmVgKS4gVGhlc2UgYXJlIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmsgZHJpdmVyIHBhdGhzIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBjcmVhdGluZyBhbmQgZGVzdHJveWluZyBBTVQgaW50ZXJmYWNlcyB2aWEgcnRuZXRsaW5rLCBtYWtpbmcgdGhlbSBoaWdobHkgcmVsZXZhbnQgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIyVDA1OjQ1OjE4LjA2MjE5ODMxNVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDAwNjI2NDgyNjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMlQwNTo0NToxOC4wNjI2MzU2ODZaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NDAwNjIyMDc0MDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHJlc3NlcyBzeW5jaHJvbml6YXRpb24gYW5kIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBkb3VibGUtZnJlZSBpc3N1ZXMgYmV0d2VlbiBgYW10X3R1bm5lbF9leHBpcmVgIGFuZCBgYW10X2Rldl9zdG9wYC4gSXQgbW9kaWZpZXMgbGlzdCBtYW5hZ2VtZW50IGFuZCB3b3JrIHF1ZXVlIGNhbmNlbGxhdGlvbiBsb2dpYyB0byBwcmV2ZW50IHJhY2UgY29uZGl0aW9ucyBkdXJpbmcgZGV2aWNlIHRlYXJkb3duLiBUaGVzZSB0eXBlcyBvZiBidWdzIChVQUYsIHJhY2UgY29uZGl0aW9ucywgaW52YWxpZCBmcmVlcykgYXJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIGRlYnVnZ2luZyB0b29scy4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIGRhdGEgY29waWVkIHRvIHVzZXIgc3BhY2UgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAxMzhjMzhhMTA5ODg5NjY0MzQ2ODAxMDU5M2NlOGI3MmFlMzY5MWU0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgMjIgMDU6NDI6MzUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9hbXQuYyBiL2RyaXZlcnMvbmV0L2FtdC5jXG5pbmRleCBiZGRjMjRlMTg1NmRlLi5hNWRiMDJkODEyOTE3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvYW10LmNcbisrKyBiL2RyaXZlcnMvbmV0L2FtdC5jXG5AQCAtMTM0OCw2ICsxMzQ4LDExIEBAIHN0YXRpYyB2b2lkIGFtdF90dW5uZWxfZXhwaXJlKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiBcdHN0cnVjdCBhbXRfZGV2ICphbXQgPSB0dW5uZWwtXHUwMDNlYW10O1xuIFxuIFx0c3Bpbl9sb2NrX2JoKFx1MDAyNmFtdC1cdTAwM2Vsb2NrKTtcbitcdC8qIGFtdF9kZXZfc3RvcCgpIG1hcmtzIHR1bm5lbHMgaXQgb3ducyB3aXRoIGxpc3RfZGVsX2luaXQoKS4gKi9cbitcdGlmIChsaXN0X2VtcHR5KFx1MDAyNnR1bm5lbC1cdTAwM2VsaXN0KSkge1xuK1x0XHRzcGluX3VubG9ja19iaChcdTAwMjZhbXQtXHUwMDNlbG9jayk7XG4rXHRcdHJldHVybjtcbitcdH1cbiBcdHJjdV9yZWFkX2xvY2soKTtcbiBcdGxpc3RfZGVsX3JjdShcdTAwMjZ0dW5uZWwtXHUwMDNlbGlzdCk7XG4gXHRhbXQtXHUwMDNlbnJfdHVubmVscy0tO1xuQEAgLTMwNjgsNyArMzA3Myw3IEBAIHN0YXRpYyBpbnQgYW10X2Rldl9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gc3RhdGljIGludCBhbXRfZGV2X3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiB7XG4gXHRzdHJ1Y3QgYW10X2RldiAqYW10ID0gbmV0ZGV2X3ByaXYoZGV2KTtcbi1cdHN0cnVjdCBhbXRfdHVubmVsX2xpc3QgKnR1bm5lbCwgKnRtcDtcbitcdHN0cnVjdCBhbXRfdHVubmVsX2xpc3QgKnR1bm5lbDtcbiBcdHN0cnVjdCBza19idWZmICpza2I7XG4gXHRzdHJ1Y3Qgc29jayAqc2s7XG4gXHRpbnQgaTtcbkBAIC0zMDc3LDkgKzMwODIsMTEgQEAgc3RhdGljIGludCBhbXRfZGV2X3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdGRpc2FibGVfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2YW10LVx1MDAzZWRpc2NvdmVyeV93cSk7XG4gXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2YW10LVx1MDAzZXNlY3JldF93cSk7XG4gXG4tXHQvKiBzaHV0ZG93biAqL1xuK1x0LyogUXVpZXNjZSBSWCBwYXRoIGJlZm9yZSB0ZWFyaW5nIGRvd24gdHVubmVscy4gKi9cbiBcdHNrID0gcnRubF9kZXJlZmVyZW5jZShhbXQtXHUwMDNlc2spO1xuIFx0UkNVX0lOSVRfUE9JTlRFUihhbXQtXHUwMDNlc2ssIE5VTEwpO1xuK1x0aWYgKHNrKVxuK1x0XHRyY3VfYXNzaWduX3NrX3VzZXJfZGF0YShzaywgTlVMTCk7XG4gXHRzeW5jaHJvbml6ZV9uZXQoKTtcbiBcdGlmIChzaylcbiBcdFx0dWRwX3R1bm5lbF9zb2NrX3JlbGVhc2Uoc2spO1xuQEAgLTMwOTcsMTMgKzMxMDQsMjEgQEAgc3RhdGljIGludCBhbXRfZGV2X3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdGFtdC1cdTAwM2VyZXFfY250ID0gMDtcbiBcdFdSSVRFX09OQ0UoYW10LVx1MDAzZXJlbW90ZV9pcCwgMCk7XG4gXG4tXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUodHVubmVsLCB0bXAsIFx1MDAyNmFtdC1cdTAwM2V0dW5uZWxfbGlzdCwgbGlzdCkge1xuLVx0XHRsaXN0X2RlbF9yY3UoXHUwMDI2dHVubmVsLVx1MDAzZWxpc3QpO1xuK1x0c3Bpbl9sb2NrX2JoKFx1MDAyNmFtdC1cdTAwM2Vsb2NrKTtcbitcdHdoaWxlICghbGlzdF9lbXB0eShcdTAwMjZhbXQtXHUwMDNldHVubmVsX2xpc3QpKSB7XG4rXHRcdHR1bm5lbCA9IGxpc3RfZmlyc3RfZW50cnkoXHUwMDI2YW10LVx1MDAzZXR1bm5lbF9saXN0LFxuK1x0XHRcdFx0XHQgIHN0cnVjdCBhbXRfdHVubmVsX2xpc3QsIGxpc3QpO1xuK1x0XHRsaXN0X2RlbF9pbml0KFx1MDAyNnR1bm5lbC1cdTAwM2VsaXN0KTtcbiBcdFx0YW10LVx1MDAzZW5yX3R1bm5lbHMtLTtcbi1cdFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNnR1bm5lbC1cdTAwM2VnY193cSk7XG4rXHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmFtdC1cdTAwM2Vsb2NrKTtcbitcbitcdFx0ZGlzYWJsZV9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZ0dW5uZWwtXHUwMDNlZ2Nfd3EpO1xuIFx0XHRhbXRfY2xlYXJfZ3JvdXBzKHR1bm5lbCk7XG4gXHRcdGtmcmVlX3JjdSh0dW5uZWwsIHJjdSk7XG4rXG4rXHRcdHNwaW5fbG9ja19iaChcdTAwMjZhbXQtXHUwMDNlbG9jayk7XG4gXHR9XG4rXHRzcGluX3VubG9ja19iaChcdTAwMjZhbXQtXHUwMDNlbG9jayk7XG4gXG4gXHRyZXR1cm4gMDtcbiB9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMlQwNTo0NToxOC4wNjI2MzY1MzVaIiwiU2VxIjoxNywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAwNjIxNjY2MzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQU1UIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIGxldCBtZSBicmVhayBkb3duIHRoaXMgcGF0Y2ggZm9yIHRoZSBBTVQgZHJpdmVyLiBNeSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCBpdCdzIGFkZHJlc3Npbmcgc29tZSBjcml0aWNhbCBzeW5jaHJvbml6YXRpb24gaXNzdWVzLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgYW10X3R1bm5lbF9leHBpcmVgIGFuZCBgYW10X2Rldl9zdG9wYCBmdW5jdGlvbnMgaW4gYGRyaXZlcnMvbmV0L2FtdC5jYC5cblxuTXkgZmlyc3QgdGhvdWdodCBpcyB0aGlzOiB0aGUgcHJpbWFyeSBmb2N1cyBpcyBvbiBwcmV2ZW50aW5nIHVzZS1hZnRlci1mcmVlIGFuZCBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIHdoZW4gdHVubmVscyBhcmUgZXhwaXJpbmcgYW5kIHRoZSBkZXZpY2UgaXMgYmVpbmcgc3RvcHBlZC4gVGhlIGFkZGl0aW9uIG9mIHRoZSBgaWYgKGxpc3RfZW1wdHkoXHUwMDI2dHVubmVsLVx1MDAzZWxpc3QpKWAgY2hlY2sgaW4gYGFtdF90dW5uZWxfZXhwaXJlYCBpcyBhIHNtYXJ0IG1vdmUuIEl0IHByb3ZpZGVzIGFuIGVhcmx5IGV4aXQgaWYgdGhlIHR1bm5lbCBoYXMgYWxyZWFkeSBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgbGlzdCwgZXNzZW50aWFsbHkgYSBxdWljayBndWFyZCBhZ2FpbnN0IG9wZXJhdGluZyBvbiBmcmVlZCBtZW1vcnkuXG5cblRoZSBjaGFuZ2VzIGluIGBhbXRfZGV2X3N0b3BgIGFyZSBhbHNvIGtleS4gVGhlIHNoaWZ0IHRvIGBkaXNhYmxlX2RlbGF5ZWRfd29ya19zeW5jYCwgYGNhbmNlbF9kZWxheWVkX3dvcmtfc3luY2AsIGFuZCBlc3BlY2lhbGx5IGBsaXN0X2RlbF9pbml0YCB0byBtYXJrIHR1bm5lbHMgYXMgcmVtb3ZlZCwgaW5kaWNhdGVzIGEgY29uY2VydGVkIGVmZm9ydCB0byBwcm9wZXJseSBoYW5kbGUgd29yayBxdWV1ZSBjYW5jZWxsYXRpb24gYW5kIGxpc3QgbWFuYWdlbWVudC4gVGhpcyBjb29yZGluYXRlZCBhcHByb2FjaCBiZXR3ZWVuIGV4cGlyYXRpb24gYW5kIGRldmljZSBzdG9wIGlzIHdoYXQncyBjcml0aWNhbC4gVGhlIGByY3VfYXNzaWduX3NrX3VzZXJfZGF0YShzaywgTlVMTClgIGJlZm9yZSB0aGUgZmluYWwgY2xlYW51cCBzdGVwcyBpcyBhbHNvIGEgc3Ryb25nIHNpZ25hbCB0aGF0IHRoZSBkZXZlbG9wZXJzIGhhdmUgdGhvdWdodCB0aGlzIHRocm91Z2ggY2FyZWZ1bGx5LCBwcmV2ZW50aW5nIHN0YWxlIHJlZmVyZW5jZXMuXG5cblNpbmNlIHRoZXJlIGFyZSBubyBuZXcgYWxsb2NhdGlvbnMsIG5vIG5ldyBkYXRhIGJlaW5nIHNlbnQgdG8gdXNlcnNwYWNlLCBhbmQgbm8gaW5kaWNhdGlvbnMgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgdXNlZCwgSSBkb24ndCBzZWUgYW55IHJpc2tzIHRoYXQgd291bGQgYmUgY2F1Z2h0IGJ5IEtNU0FOLiBUaGUgcHJvYmxlbXMgYmVpbmcgZml4ZWQgYXJlIGxpa2VseSByZWxhdGVkIHRvIHVzZS1hZnRlci1mcmVlIG9yIHBvdGVudGlhbCBkb3VibGUgZnJlZXMsIHdoaWNoIGFyZSBwcmVjaXNlbHkgdGhlIHR5cGVzIG9mIGlzc3VlcyB0aGF0IEtBU0FOIChLZXJuZWwgQWRkcmVzcyBTYW5pdGl6ZXIpIGlzIGRlc2lnbmVkIHRvIGhhbmRsZS5cblxuSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIEknbSBnb2luZyB0byBkb3VibGUtY2hlY2sgdGhlIGRldGFpbHMuIFllcywgYGFtdF90dW5uZWxfZXhwaXJlYCBpcyBhIHdvcmsgcXVldWUgZnVuY3Rpb24sIGFuZCBgYW10X2Rldl9zdG9wYCBpcyB0aGUgbmV0d29yayBkZXZpY2Ugc3RvcCBmdW5jdGlvbi4gVGhpcyBwYXRjaCBpcyBmb2N1c2VkIHNvbGVseSBvbiBzeW5jaHJvbml6YXRpb24sIHdvcmsgcXVldWUgY2FuY2VsbGF0aW9uLCBhbmQgbGlzdCBtYW5hZ2VtZW50LiBJdCdzIG5vdCBpbnRyb2R1Y2luZyBhbnkgbmV3IHJpc2tzIHJlbGF0ZWQgdG8gdW5pbml0aWFsaXplZCBtZW1vcnkuXG5cblNvLCBiYXNlZCBvbiB0aGlzIHRob3JvdWdoIHJldmlldywgSSdtIGNvbmZpZGVudCB0aGF0IHRoaXMgcGF0Y2ggZG9lc24ndCByZXF1aXJlIEtNU0FOLiBJJ2xsIHNldCBgTmVlZHNLTVNBTj1mYWxzZWAgYW5kIGV4cGxhaW4gdGhhdCB0aGlzIHBhdGNoIGFkZHJlc3NlcyBzeW5jaHJvbml6YXRpb24gaXNzdWVzIGFuZCBndWFyZHMgYWdhaW5zdCB1c2UtYWZ0ZXItZnJlZSBzY2VuYXJpb3MsIHByb2JsZW1zIHRoYXQgYXJlIGFkZXF1YXRlbHkgYWRkcmVzc2VkIGJ5IEtBU0FOLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjA5LCJPdXRwdXRUb2tlbnMiOjE0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzOSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIyVDA1OjQ1OjU4LjEyNDgwNTYxMloiLCJTZXEiOjE4LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIHN5bmNocm9uaXphdGlvbiBhbmQgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIGRvdWJsZS1mcmVlIGlzc3VlcyBiZXR3ZWVuIGBhbXRfdHVubmVsX2V4cGlyZWAgYW5kIGBhbXRfZGV2X3N0b3BgLiBJdCBtb2RpZmllcyBsaXN0IG1hbmFnZW1lbnQgYW5kIHdvcmsgcXVldWUgY2FuY2VsbGF0aW9uIGxvZ2ljIHRvIHByZXZlbnQgcmFjZSBjb25kaXRpb25zIGR1cmluZyBkZXZpY2UgdGVhcmRvd24uIFRoZXNlIHR5cGVzIG9mIGJ1Z3MgKFVBRiwgcmFjZSBjb25kaXRpb25zLCBpbnZhbGlkIGZyZWVzKSBhcmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBrZXJuZWwgZGVidWdnaW5nIHRvb2xzLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBhbGxvY2F0aW9ucywgb3IgZGF0YSBjb3BpZWQgdG8gdXNlciBzcGFjZSB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHJlc3NlcyBzeW5jaHJvbml6YXRpb24gYW5kIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBkb3VibGUtZnJlZSBpc3N1ZXMgYmV0d2VlbiBgYW10X3R1bm5lbF9leHBpcmVgIGFuZCBgYW10X2Rldl9zdG9wYC4gSXQgbW9kaWZpZXMgbGlzdCBtYW5hZ2VtZW50IGFuZCB3b3JrIHF1ZXVlIGNhbmNlbGxhdGlvbiBsb2dpYyB0byBwcmV2ZW50IHJhY2UgY29uZGl0aW9ucyBkdXJpbmcgZGV2aWNlIHRlYXJkb3duLiBUaGVzZSB0eXBlcyBvZiBidWdzIChVQUYsIHJhY2UgY29uZGl0aW9ucywgaW52YWxpZCBmcmVlcykgYXJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIGRlYnVnZ2luZyB0b29scy4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIGRhdGEgY29waWVkIHRvIHVzZXIgc3BhY2UgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflow58n2t[1] Phase: Succeeded StartedAt: 2026-08-22 05:46:21 +0000 UTC FinishedAt: 2026-08-22 05:46:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58n2t[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-22 05:46:21 +0000 UTC FinishedAt: 2026-08-22 05:46:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58n2t[2] Phase: Succeeded StartedAt: 2026-08-22 05:46:21 +0000 UTC FinishedAt: 2026-08-22 09:26:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58n2t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4e15e89faac9f308baeb01f46c13a051814d2449","config_name":"upstream-apparmor-kasan.config","enable_configs":["AMT","IP_MULTICAST"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amt_dev_stop","amt_tunnel_expire"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4e15e89faac9f308baeb01f46c13a051814d2449","config_name":"upstream-apparmor-kasan.config","enable_configs":["AMT","IP_MULTICAST"],"series_id":"3dff9c9d-6562-40c5-9763-668adff23ea4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-22 05:46:21 +0000 UTC FinishedAt: 2026-08-22 09:26:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"4e15e89faac9f308baeb01f46c13a051814d2449","config_name":"upstream-apparmor-kasan.config","enable_configs":["AMT","IP_MULTICAST"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amt_dev_stop","amt_tunnel_expire"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"4e15e89faac9f308baeb01f46c13a051814d2449","config_name":"upstream-apparmor-kasan.config","enable_configs":["AMT","IP_MULTICAST"],"series_id":"3dff9c9d-6562-40c5-9763-668adff23ea4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow58n2t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4e15e89faac9f308baeb01f46c13a051814d2449","config_name":"upstream-apparmor-kasan.config","enable_configs":["AMT","IP_MULTICAST"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amt_dev_stop","amt_tunnel_expire"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4e15e89faac9f308baeb01f46c13a051814d2449","config_name":"upstream-apparmor-kasan.config","enable_configs":["AMT","IP_MULTICAST"],"series_id":"3dff9c9d-6562-40c5-9763-668adff23ea4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-22 05:46:21 +0000 UTC FinishedAt: 2026-08-22 05:46:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58n2t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4e15e89faac9f308baeb01f46c13a051814d2449","config_name":"upstream-apparmor-kasan.config","enable_configs":["AMT","IP_MULTICAST"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amt_dev_stop","amt_tunnel_expire"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4e15e89faac9f308baeb01f46c13a051814d2449","config_name":"upstream-apparmor-kasan.config","enable_configs":["AMT","IP_MULTICAST"],"series_id":"3dff9c9d-6562-40c5-9763-668adff23ea4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-22 05:46:21 +0000 UTC FinishedAt: 2026-08-22 05:46:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"4e15e89faac9f308baeb01f46c13a051814d2449","config_name":"upstream-apparmor-kasan.config","enable_configs":["AMT","IP_MULTICAST"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflow58n2t/series-workflow58n2t-convert-artifact-2371208854/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow58n2t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4e15e89faac9f308baeb01f46c13a051814d2449","config_name":"upstream-apparmor-kasan.config","enable_configs":["AMT","IP_MULTICAST"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amt_dev_stop","amt_tunnel_expire"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4e15e89faac9f308baeb01f46c13a051814d2449","config_name":"upstream-apparmor-kasan.config","enable_configs":["AMT","IP_MULTICAST"],"series_id":"3dff9c9d-6562-40c5-9763-668adff23ea4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-22 05:46:31 +0000 UTC FinishedAt: 2026-08-22 06:02:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58n2t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4e15e89faac9f308baeb01f46c13a051814d2449","config_name":"upstream-apparmor-kasan.config","enable_configs":["AMT","IP_MULTICAST"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amt_dev_stop","amt_tunnel_expire"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4e15e89faac9f308baeb01f46c13a051814d2449","config_name":"upstream-apparmor-kasan.config","enable_configs":["AMT","IP_MULTICAST"],"series_id":"3dff9c9d-6562-40c5-9763-668adff23ea4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-22 05:46:31 +0000 UTC FinishedAt: 2026-08-22 06:02:42 +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:*ad1089c9-bd60-4eaa-935e-ce7a16641896,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-workflow58n2t/series-workflow58n2t-convert-artifact-2371208854/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": "5c428fb4-b386-436c-a8f8-22321374e965", "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-workflow58n2t/series-workflow58n2t-build-action-3056662060/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow58n2t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4e15e89faac9f308baeb01f46c13a051814d2449","config_name":"upstream-apparmor-kasan.config","enable_configs":["AMT","IP_MULTICAST"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amt_dev_stop","amt_tunnel_expire"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4e15e89faac9f308baeb01f46c13a051814d2449","config_name":"upstream-apparmor-kasan.config","enable_configs":["AMT","IP_MULTICAST"],"series_id":"3dff9c9d-6562-40c5-9763-668adff23ea4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-22 05:46:31 +0000 UTC FinishedAt: 2026-08-22 06:02:34 +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:*ad1089c9-bd60-4eaa-935e-ce7a16641896,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-workflow58n2t/series-workflow58n2t-convert-artifact-2371208854/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": "5c428fb4-b386-436c-a8f8-22321374e965", "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-workflow58n2t/series-workflow58n2t-build-action-3056662060/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow58n2t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4e15e89faac9f308baeb01f46c13a051814d2449","config_name":"upstream-apparmor-kasan.config","enable_configs":["AMT","IP_MULTICAST"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amt_dev_stop","amt_tunnel_expire"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4e15e89faac9f308baeb01f46c13a051814d2449","config_name":"upstream-apparmor-kasan.config","enable_configs":["AMT","IP_MULTICAST"],"series_id":"3dff9c9d-6562-40c5-9763-668adff23ea4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-22 06:02:42 +0000 UTC FinishedAt: 2026-08-22 06:02:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58n2t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4e15e89faac9f308baeb01f46c13a051814d2449","config_name":"upstream-apparmor-kasan.config","enable_configs":["AMT","IP_MULTICAST"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amt_dev_stop","amt_tunnel_expire"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4e15e89faac9f308baeb01f46c13a051814d2449","config_name":"upstream-apparmor-kasan.config","enable_configs":["AMT","IP_MULTICAST"],"series_id":"3dff9c9d-6562-40c5-9763-668adff23ea4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-22 06:02:42 +0000 UTC FinishedAt: 2026-08-22 06:02:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58n2t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4e15e89faac9f308baeb01f46c13a051814d2449","config_name":"upstream-apparmor-kasan.config","enable_configs":["AMT","IP_MULTICAST"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amt_dev_stop","amt_tunnel_expire"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4e15e89faac9f308baeb01f46c13a051814d2449","config_name":"upstream-apparmor-kasan.config","enable_configs":["AMT","IP_MULTICAST"],"series_id":"3dff9c9d-6562-40c5-9763-668adff23ea4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-22 06:02:42 +0000 UTC FinishedAt: 2026-08-22 06:02:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58n2t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4e15e89faac9f308baeb01f46c13a051814d2449","config_name":"upstream-apparmor-kasan.config","enable_configs":["AMT","IP_MULTICAST"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amt_dev_stop","amt_tunnel_expire"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4e15e89faac9f308baeb01f46c13a051814d2449","config_name":"upstream-apparmor-kasan.config","enable_configs":["AMT","IP_MULTICAST"],"series_id":"3dff9c9d-6562-40c5-9763-668adff23ea4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-22 06:02:42 +0000 UTC FinishedAt: 2026-08-22 06:02:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"4e15e89faac9f308baeb01f46c13a051814d2449","config_name":"upstream-apparmor-kasan.config","enable_configs":["AMT","IP_MULTICAST"],"series_id":"3dff9c9d-6562-40c5-9763-668adff23ea4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflow58n2t/series-workflow58n2t-convert-artifact-13511977/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow58n2t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4e15e89faac9f308baeb01f46c13a051814d2449","config_name":"upstream-apparmor-kasan.config","enable_configs":["AMT","IP_MULTICAST"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amt_dev_stop","amt_tunnel_expire"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4e15e89faac9f308baeb01f46c13a051814d2449","config_name":"upstream-apparmor-kasan.config","enable_configs":["AMT","IP_MULTICAST"],"series_id":"3dff9c9d-6562-40c5-9763-668adff23ea4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-22 06:02:52 +0000 UTC FinishedAt: 2026-08-22 06:04:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58n2t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4e15e89faac9f308baeb01f46c13a051814d2449","config_name":"upstream-apparmor-kasan.config","enable_configs":["AMT","IP_MULTICAST"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amt_dev_stop","amt_tunnel_expire"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4e15e89faac9f308baeb01f46c13a051814d2449","config_name":"upstream-apparmor-kasan.config","enable_configs":["AMT","IP_MULTICAST"],"series_id":"3dff9c9d-6562-40c5-9763-668adff23ea4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-22 06:02:52 +0000 UTC FinishedAt: 2026-08-22 06:04:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*5c428fb4-b386-436c-a8f8-22321374e965,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-workflow58n2t/series-workflow58n2t-build-action-3056662060/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-workflow58n2t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4e15e89faac9f308baeb01f46c13a051814d2449","config_name":"upstream-apparmor-kasan.config","enable_configs":["AMT","IP_MULTICAST"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amt_dev_stop","amt_tunnel_expire"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4e15e89faac9f308baeb01f46c13a051814d2449","config_name":"upstream-apparmor-kasan.config","enable_configs":["AMT","IP_MULTICAST"],"series_id":"3dff9c9d-6562-40c5-9763-668adff23ea4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-22 06:04:57 +0000 UTC FinishedAt: 2026-08-22 06:04:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58n2t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4e15e89faac9f308baeb01f46c13a051814d2449","config_name":"upstream-apparmor-kasan.config","enable_configs":["AMT","IP_MULTICAST"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amt_dev_stop","amt_tunnel_expire"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4e15e89faac9f308baeb01f46c13a051814d2449","config_name":"upstream-apparmor-kasan.config","enable_configs":["AMT","IP_MULTICAST"],"series_id":"3dff9c9d-6562-40c5-9763-668adff23ea4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-22 06:04:57 +0000 UTC FinishedAt: 2026-08-22 06:04:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58n2t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4e15e89faac9f308baeb01f46c13a051814d2449","config_name":"upstream-apparmor-kasan.config","enable_configs":["AMT","IP_MULTICAST"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amt_dev_stop","amt_tunnel_expire"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4e15e89faac9f308baeb01f46c13a051814d2449","config_name":"upstream-apparmor-kasan.config","enable_configs":["AMT","IP_MULTICAST"],"series_id":"3dff9c9d-6562-40c5-9763-668adff23ea4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-22 06:04:57 +0000 UTC FinishedAt: 2026-08-22 06:21:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58n2t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4e15e89faac9f308baeb01f46c13a051814d2449","config_name":"upstream-apparmor-kasan.config","enable_configs":["AMT","IP_MULTICAST"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amt_dev_stop","amt_tunnel_expire"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4e15e89faac9f308baeb01f46c13a051814d2449","config_name":"upstream-apparmor-kasan.config","enable_configs":["AMT","IP_MULTICAST"],"series_id":"3dff9c9d-6562-40c5-9763-668adff23ea4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-22 06:04:57 +0000 UTC FinishedAt: 2026-08-22 06:21:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*ad1089c9-bd60-4eaa-935e-ce7a16641896,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-workflow58n2t/series-workflow58n2t-convert-artifact-13511977/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": "04725146-4222-48e2-95bb-2bdace7c36d6", "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-workflow58n2t/series-workflow58n2t-build-action-1869967877/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow58n2t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4e15e89faac9f308baeb01f46c13a051814d2449","config_name":"upstream-apparmor-kasan.config","enable_configs":["AMT","IP_MULTICAST"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amt_dev_stop","amt_tunnel_expire"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4e15e89faac9f308baeb01f46c13a051814d2449","config_name":"upstream-apparmor-kasan.config","enable_configs":["AMT","IP_MULTICAST"],"series_id":"3dff9c9d-6562-40c5-9763-668adff23ea4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-22 06:04:57 +0000 UTC FinishedAt: 2026-08-22 06:21:28 +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:*ad1089c9-bd60-4eaa-935e-ce7a16641896,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-workflow58n2t/series-workflow58n2t-convert-artifact-13511977/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": "04725146-4222-48e2-95bb-2bdace7c36d6", "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-workflow58n2t/series-workflow58n2t-build-action-1869967877/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow58n2t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4e15e89faac9f308baeb01f46c13a051814d2449","config_name":"upstream-apparmor-kasan.config","enable_configs":["AMT","IP_MULTICAST"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amt_dev_stop","amt_tunnel_expire"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4e15e89faac9f308baeb01f46c13a051814d2449","config_name":"upstream-apparmor-kasan.config","enable_configs":["AMT","IP_MULTICAST"],"series_id":"3dff9c9d-6562-40c5-9763-668adff23ea4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-22 06:21:38 +0000 UTC FinishedAt: 2026-08-22 06:21:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58n2t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4e15e89faac9f308baeb01f46c13a051814d2449","config_name":"upstream-apparmor-kasan.config","enable_configs":["AMT","IP_MULTICAST"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amt_dev_stop","amt_tunnel_expire"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4e15e89faac9f308baeb01f46c13a051814d2449","config_name":"upstream-apparmor-kasan.config","enable_configs":["AMT","IP_MULTICAST"],"series_id":"3dff9c9d-6562-40c5-9763-668adff23ea4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-22 06:21:38 +0000 UTC FinishedAt: 2026-08-22 06:21:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58n2t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4e15e89faac9f308baeb01f46c13a051814d2449","config_name":"upstream-apparmor-kasan.config","enable_configs":["AMT","IP_MULTICAST"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amt_dev_stop","amt_tunnel_expire"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4e15e89faac9f308baeb01f46c13a051814d2449","config_name":"upstream-apparmor-kasan.config","enable_configs":["AMT","IP_MULTICAST"],"series_id":"3dff9c9d-6562-40c5-9763-668adff23ea4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-22 06:21:38 +0000 UTC FinishedAt: 2026-08-22 06:23:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58n2t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4e15e89faac9f308baeb01f46c13a051814d2449","config_name":"upstream-apparmor-kasan.config","enable_configs":["AMT","IP_MULTICAST"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amt_dev_stop","amt_tunnel_expire"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4e15e89faac9f308baeb01f46c13a051814d2449","config_name":"upstream-apparmor-kasan.config","enable_configs":["AMT","IP_MULTICAST"],"series_id":"3dff9c9d-6562-40c5-9763-668adff23ea4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-22 06:21:38 +0000 UTC FinishedAt: 2026-08-22 06:23:31 +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:*04725146-4222-48e2-95bb-2bdace7c36d6,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-workflow58n2t/series-workflow58n2t-build-action-1869967877/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-workflow58n2t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4e15e89faac9f308baeb01f46c13a051814d2449","config_name":"upstream-apparmor-kasan.config","enable_configs":["AMT","IP_MULTICAST"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amt_dev_stop","amt_tunnel_expire"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4e15e89faac9f308baeb01f46c13a051814d2449","config_name":"upstream-apparmor-kasan.config","enable_configs":["AMT","IP_MULTICAST"],"series_id":"3dff9c9d-6562-40c5-9763-668adff23ea4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-22 06:23:41 +0000 UTC FinishedAt: 2026-08-22 09:26:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58n2t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4e15e89faac9f308baeb01f46c13a051814d2449","config_name":"upstream-apparmor-kasan.config","enable_configs":["AMT","IP_MULTICAST"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amt_dev_stop","amt_tunnel_expire"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4e15e89faac9f308baeb01f46c13a051814d2449","config_name":"upstream-apparmor-kasan.config","enable_configs":["AMT","IP_MULTICAST"],"series_id":"3dff9c9d-6562-40c5-9763-668adff23ea4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-22 06:23:41 +0000 UTC FinishedAt: 2026-08-22 09:26:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amt_dev_stop","amt_tunnel_expire"],"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:*5c428fb4-b386-436c-a8f8-22321374e965,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*04725146-4222-48e2-95bb-2bdace7c36d6,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-workflow58n2t/series-workflow58n2t-build-action-3056662060/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-workflow58n2t/series-workflow58n2t-build-action-1869967877/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow58n2t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4e15e89faac9f308baeb01f46c13a051814d2449","config_name":"upstream-apparmor-kasan.config","enable_configs":["AMT","IP_MULTICAST"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amt_dev_stop","amt_tunnel_expire"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4e15e89faac9f308baeb01f46c13a051814d2449","config_name":"upstream-apparmor-kasan.config","enable_configs":["AMT","IP_MULTICAST"],"series_id":"3dff9c9d-6562-40c5-9763-668adff23ea4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-22 06:23:41 +0000 UTC FinishedAt: 2026-08-22 06:23:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58n2t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4e15e89faac9f308baeb01f46c13a051814d2449","config_name":"upstream-apparmor-kasan.config","enable_configs":["AMT","IP_MULTICAST"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amt_dev_stop","amt_tunnel_expire"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4e15e89faac9f308baeb01f46c13a051814d2449","config_name":"upstream-apparmor-kasan.config","enable_configs":["AMT","IP_MULTICAST"],"series_id":"3dff9c9d-6562-40c5-9763-668adff23ea4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-22 06:23:41 +0000 UTC FinishedAt: 2026-08-22 06:23:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amt_dev_stop","amt_tunnel_expire"],"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-workflow58n2t/series-workflow58n2t-convert-artifact-3707175806/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow58n2t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4e15e89faac9f308baeb01f46c13a051814d2449","config_name":"upstream-apparmor-kasan.config","enable_configs":["AMT","IP_MULTICAST"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amt_dev_stop","amt_tunnel_expire"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4e15e89faac9f308baeb01f46c13a051814d2449","config_name":"upstream-apparmor-kasan.config","enable_configs":["AMT","IP_MULTICAST"],"series_id":"3dff9c9d-6562-40c5-9763-668adff23ea4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-22 06:23:41 +0000 UTC FinishedAt: 2026-08-22 06:23:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58n2t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4e15e89faac9f308baeb01f46c13a051814d2449","config_name":"upstream-apparmor-kasan.config","enable_configs":["AMT","IP_MULTICAST"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amt_dev_stop","amt_tunnel_expire"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4e15e89faac9f308baeb01f46c13a051814d2449","config_name":"upstream-apparmor-kasan.config","enable_configs":["AMT","IP_MULTICAST"],"series_id":"3dff9c9d-6562-40c5-9763-668adff23ea4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-22 06:23:41 +0000 UTC FinishedAt: 2026-08-22 06:23:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58n2t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4e15e89faac9f308baeb01f46c13a051814d2449","config_name":"upstream-apparmor-kasan.config","enable_configs":["AMT","IP_MULTICAST"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amt_dev_stop","amt_tunnel_expire"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4e15e89faac9f308baeb01f46c13a051814d2449","config_name":"upstream-apparmor-kasan.config","enable_configs":["AMT","IP_MULTICAST"],"series_id":"3dff9c9d-6562-40c5-9763-668adff23ea4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-22 06:23:41 +0000 UTC FinishedAt: 2026-08-22 06:23:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58n2t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4e15e89faac9f308baeb01f46c13a051814d2449","config_name":"upstream-apparmor-kasan.config","enable_configs":["AMT","IP_MULTICAST"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amt_dev_stop","amt_tunnel_expire"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4e15e89faac9f308baeb01f46c13a051814d2449","config_name":"upstream-apparmor-kasan.config","enable_configs":["AMT","IP_MULTICAST"],"series_id":"3dff9c9d-6562-40c5-9763-668adff23ea4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-22 06:23:51 +0000 UTC FinishedAt: 2026-08-22 09:26:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58n2t[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4e15e89faac9f308baeb01f46c13a051814d2449","config_name":"upstream-apparmor-kasan.config","enable_configs":["AMT","IP_MULTICAST"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["amt_dev_stop","amt_tunnel_expire"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4e15e89faac9f308baeb01f46c13a051814d2449","config_name":"upstream-apparmor-kasan.config","enable_configs":["AMT","IP_MULTICAST"],"series_id":"3dff9c9d-6562-40c5-9763-668adff23ea4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-22 06:23:51 +0000 UTC FinishedAt: 2026-08-22 09:26:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*5c428fb4-b386-436c-a8f8-22321374e965,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*04725146-4222-48e2-95bb-2bdace7c36d6,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-workflow58n2t/series-workflow58n2t-build-action-3056662060/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-workflow58n2t/series-workflow58n2t-build-action-1869967877/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-workflow58n2t/series-workflow58n2t-convert-artifact-3707175806/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,}