Name: series-workflow98zh9 Phase: Succeeded StartedAt: 2026-07-08 08:27:56 +0000 UTC FinishedAt: 2026-07-08 12:43:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98zh9[0] Phase: Succeeded StartedAt: 2026-07-08 08:27:56 +0000 UTC FinishedAt: 2026-07-08 08:48:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98zh9[0].run-triage Phase: Succeeded StartedAt: 2026-07-08 08:27:56 +0000 UTC FinishedAt: 2026-07-08 08:48:31 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "FUSE_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "FUSE_FS" ], "series_id": "e6af2591-e1ae-4c7e-888e-26772f40678a" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "fuse_send_write_pages", "fuse_fill_write_pages", "fuse_notify_store", "iomap_folio_mark_uptodate" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDA4OjQ3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0ZVU0VfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtmdXNlX3NlbmRfd3JpdGVfcGFnZXMmIzM0OywKICAgICYjMzQ7ZnVzZV9maWxsX3dyaXRlX3BhZ2VzJiMzNDssCiAgICAmIzM0O2Z1c2Vfbm90aWZ5X3N0b3JlJiMzNDssCiAgICAmIzM0O2lvbWFwX2ZvbGlvX21hcmtfdXB0b2RhdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgcGFnZSB1cHRvZGF0ZSBoYW5kbGluZyBpbiBGVVNFIHdyaXRlIGFuZCBub3RpZnkgcGF0aHMsIGFuZCBpbnRyb2R1Y2VzIGEgbmV3IGlvbWFwIGhlbHBlci4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiBmaWxlc3lzdGVtIGxvZ2ljIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSB1c2VyLXNwYWNlIHZpYSBGVVNFLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDA4OjQ3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZjUxOTM3YTU0NTdhN2YxYTU4OWMxZjg5N2QyMDAwMDQ0Mjk5YTg0ZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDggMDg6NDc6MTYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvZnVzZS9maWxlLmMgYi9mcy9mdXNlL2ZpbGUuY1xuaW5kZXggY2VhZGE3NTMxMGI4ODAuLmRhNTg1OWU4MTU5ZDRmIDEwMDY0NFxuLS0tIGEvZnMvZnVzZS9maWxlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2Z1c2UvZmlsZS5jXG5AQCAtMTIxOSw4ICYjNDM7MTIxOSw3IEBAIHN0YXRpYyBzc2l6ZV90IGZ1c2Vfc2VuZF93cml0ZV9wYWdlcyhzdHJ1Y3QgZnVzZV9pb19hcmdzICppYSxcbiBcdHN0cnVjdCBmaWxlICpmaWxlID0gaW9jYi1cdTAwM2VraV9maWxwO1xuIFx0c3RydWN0IGZ1c2VfZmlsZSAqZmYgPSBmaWxlLVx1MDAzZXByaXZhdGVfZGF0YTtcbiBcdHN0cnVjdCBmdXNlX21vdW50ICpmbSA9IGZmLVx1MDAzZWZtO1xuLVx0dW5zaWduZWQgaW50IG9mZnNldCwgaTtcbi1cdGJvb2wgc2hvcnRfd3JpdGU7XG4mIzQzO1x0dW5zaWduZWQgaW50IGk7XG4gXHRpbnQgZXJyO1xuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYXAtXHUwMDNlbnVtX2ZvbGlvczsgaSYjNDM7JiM0MzspXG5AQCAtMTIzNSwyNCAmIzQzOzEyMzQsOSBAQCBzdGF0aWMgc3NpemVfdCBmdXNlX3NlbmRfd3JpdGVfcGFnZXMoc3RydWN0IGZ1c2VfaW9fYXJncyAqaWEsXG4gXHRpZiAoIWVyciBcdTAwMjZcdTAwMjYgaWEtXHUwMDNld3JpdGUub3V0LnNpemUgXHUwMDNlIGNvdW50KVxuIFx0XHRlcnIgPSAtRUlPO1xuIFxuLVx0c2hvcnRfd3JpdGUgPSBpYS1cdTAwM2V3cml0ZS5vdXQuc2l6ZSBcdTAwM2MgY291bnQ7XG4tXHRvZmZzZXQgPSBhcC1cdTAwM2VkZXNjc1swXS5vZmZzZXQ7XG4tXHRjb3VudCA9IGlhLVx1MDAzZXdyaXRlLm91dC5zaXplO1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYXAtXHUwMDNlbnVtX2ZvbGlvczsgaSYjNDM7JiM0MzspIHtcbiBcdFx0c3RydWN0IGZvbGlvICpmb2xpbyA9IGFwLVx1MDAzZWZvbGlvc1tpXTtcbiBcbi1cdFx0aWYgKGVycikge1xuLVx0XHRcdGZvbGlvX2NsZWFyX3VwdG9kYXRlKGZvbGlvKTtcbi1cdFx0fSBlbHNlIHtcbi1cdFx0XHRpZiAoY291bnQgXHUwMDNlPSBmb2xpb19zaXplKGZvbGlvKSAtIG9mZnNldClcbi1cdFx0XHRcdGNvdW50IC09IGZvbGlvX3NpemUoZm9saW8pIC0gb2Zmc2V0O1xuLVx0XHRcdGVsc2Uge1xuLVx0XHRcdFx0aWYgKHNob3J0X3dyaXRlKVxuLVx0XHRcdFx0XHRmb2xpb19jbGVhcl91cHRvZGF0ZShmb2xpbyk7XG4tXHRcdFx0XHRjb3VudCA9IDA7XG4tXHRcdFx0fVxuLVx0XHRcdG9mZnNldCA9IDA7XG4tXHRcdH1cbiBcdFx0aWYgKGlhLVx1MDAzZXdyaXRlLmZvbGlvX2xvY2tlZCBcdTAwMjZcdTAwMjYgKGkgPT0gYXAtXHUwMDNlbnVtX2ZvbGlvcyAtIDEpKVxuIFx0XHRcdGZvbGlvX3VubG9jayhmb2xpbyk7XG4gXHRcdGZvbGlvX3B1dChmb2xpbyk7XG5AQCAtMTMyNyw3ICYjNDM7MTMxMSw3IEBAIHN0YXRpYyBzc2l6ZV90IGZ1c2VfZmlsbF93cml0ZV9wYWdlcyhzdHJ1Y3QgZnVzZV9pb19hcmdzICppYSxcbiBcbiBcdFx0LyogSWYgd2UgY29waWVkIGZ1bGwgZm9saW8sIG1hcmsgaXQgdXB0b2RhdGUgKi9cbiBcdFx0aWYgKHRtcCA9PSBmb2xpb19zaXplKGZvbGlvKSlcbi1cdFx0XHRmb2xpb19tYXJrX3VwdG9kYXRlKGZvbGlvKTtcbiYjNDM7XHRcdFx0aW9tYXBfZm9saW9fbWFya191cHRvZGF0ZShmb2xpbyk7XG4gXG4gXHRcdGlmIChmb2xpb190ZXN0X3VwdG9kYXRlKGZvbGlvKSkge1xuIFx0XHRcdGZvbGlvX3VubG9jayhmb2xpbyk7XG5kaWZmIC0tZ2l0IGEvZnMvZnVzZS9ub3RpZnkuYyBiL2ZzL2Z1c2Uvbm90aWZ5LmNcbmluZGV4IDI5NTc4MTA0YWU2Y2Q2Li4xYmE3NjM3MDVkOTExOSAxMDA2NDRcbi0tLSBhL2ZzL2Z1c2Uvbm90aWZ5LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2Z1c2Uvbm90aWZ5LmNcbkBAIC0yLDYgJiM0MzsyLDggQEBcbiBcbiAjaW5jbHVkZSBcJiMzNDtkZXYuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O2Z1c2VfaS5oXCYjMzQ7XG4mIzQzO1xuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9pb21hcC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcGFnZW1hcC5oXHUwMDNlXG4gXG4gc3RhdGljIGludCBmdXNlX25vdGlmeV9wb2xsKHN0cnVjdCBmdXNlX2Nvbm4gKmZjLCB1bnNpZ25lZCBpbnQgc2l6ZSxcbkBAIC0xOTIsNyAmIzQzOzE5NCw3IEBAIHN0YXRpYyBpbnQgZnVzZV9ub3RpZnlfc3RvcmUoc3RydWN0IGZ1c2VfY29ubiAqZmMsIHVuc2lnbmVkIGludCBzaXplLFxuIFx0XHRpZiAoIWZvbGlvX3Rlc3RfdXB0b2RhdGUoZm9saW8pIFx1MDAyNlx1MDAyNiAhZXJyIFx1MDAyNlx1MDAyNiBmb2xpb19vZmZzZXQgPT0gMCBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIChucl9ieXRlcyA9PSBmb2xpb19zaXplKGZvbGlvKSB8fCBmaWxlX3NpemUgPT0gZW5kKSkge1xuIFx0XHRcdGZvbGlvX3plcm9fc2VnbWVudChmb2xpbywgbnJfYnl0ZXMsIGZvbGlvX3NpemUoZm9saW8pKTtcbi1cdFx0XHRmb2xpb19tYXJrX3VwdG9kYXRlKGZvbGlvKTtcbiYjNDM7XHRcdFx0aW9tYXBfZm9saW9fbWFya191cHRvZGF0ZShmb2xpbyk7XG4gXHRcdH1cbiBcdFx0Zm9saW9fdW5sb2NrKGZvbGlvKTtcbiBcdFx0Zm9saW9fcHV0KGZvbGlvKTtcbmRpZmYgLS1naXQgYS9mcy9pb21hcC9idWZmZXJlZC1pby5jIGIvZnMvaW9tYXAvYnVmZmVyZWQtaW8uY1xuaW5kZXggMjc2NzIwYmMxOGRjNTIuLmFmNDE1MjkzZTI2NTFmIDEwMDY0NFxuLS0tIGEvZnMvaW9tYXAvYnVmZmVyZWQtaW8uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvaW9tYXAvYnVmZmVyZWQtaW8uY1xuQEAgLTEwNSw2ICYjNDM7MTA1LDEyIEBAIHN0YXRpYyB2b2lkIGlvbWFwX3NldF9yYW5nZV91cHRvZGF0ZShzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzaXplX3Qgb2ZmLFxuIFx0XHRmb2xpb19tYXJrX3VwdG9kYXRlKGZvbGlvKTtcbiB9XG4gXG4mIzQzO3ZvaWQgaW9tYXBfZm9saW9fbWFya191cHRvZGF0ZShzdHJ1Y3QgZm9saW8gKmZvbGlvKVxuJiM0Mzt7XG4mIzQzO1x0aW9tYXBfc2V0X3JhbmdlX3VwdG9kYXRlKGZvbGlvLCAwLCBmb2xpb19zaXplKGZvbGlvKSk7XG4mIzQzO31cbiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwoaW9tYXBfZm9saW9fbWFya191cHRvZGF0ZSk7XG4mIzQzO1xuIC8qXG4gICogRmluZCB0aGUgbmV4dCBkaXJ0eSBibG9jayBpbiB0aGUgZm9saW8uIGVuZF9ibGsgaXMgaW5jbHVzaXZlLlxuICAqIElmIG5vIGRpcnR5IGJsb2NrIGlzIGZvdW5kLCB0aGlzIHdpbGwgcmV0dXJuIGVuZF9ibGsgJiM0MzsgMS5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2lvbWFwLmggYi9pbmNsdWRlL2xpbnV4L2lvbWFwLmhcbmluZGV4IDU2YjQzZDU5NGU2ZTI5Li40MGFhMzQ3NmEzNTFkMiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvaW9tYXAuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9pb21hcC5oXG5AQCAtMzY1LDYgJiM0MzszNjUsNyBAQCBzdHJ1Y3QgZm9saW8gKmlvbWFwX2dldF9mb2xpbyhzdHJ1Y3QgaW9tYXBfaXRlciAqaXRlciwgbG9mZl90IHBvcywgc2l6ZV90IGxlbik7XG4gYm9vbCBpb21hcF9yZWxlYXNlX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8sIGdmcF90IGdmcF9mbGFncyk7XG4gdm9pZCBpb21hcF9pbnZhbGlkYXRlX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW4pO1xuIGJvb2wgaW9tYXBfZGlydHlfZm9saW8oc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsIHN0cnVjdCBmb2xpbyAqZm9saW8pO1xuJiM0Mzt2b2lkIGlvbWFwX2ZvbGlvX21hcmtfdXB0b2RhdGUoc3RydWN0IGZvbGlvICpmb2xpbyk7XG4gaW50IGlvbWFwX2ZpbGVfdW5zaGFyZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgcG9zLCBsb2ZmX3QgbGVuLFxuIFx0XHRjb25zdCBzdHJ1Y3QgaW9tYXBfb3BzICpvcHMsXG4gXHRcdGNvbnN0IHN0cnVjdCBpb21hcF93cml0ZV9vcHMgKndyaXRlX29wcyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMDg6NDc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RlVTRV9GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Z1c2Vfc2VuZF93cml0ZV9wYWdlcyYjMzQ7LAogICAgJiMzNDtmdXNlX2ZpbGxfd3JpdGVfcGFnZXMmIzM0OywKICAgICYjMzQ7ZnVzZV9ub3RpZnlfc3RvcmUmIzM0OywKICAgICYjMzQ7aW9tYXBfZm9saW9fbWFya191cHRvZGF0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBwYWdlIHVwdG9kYXRlIGhhbmRsaW5nIGluIEZVU0Ugd3JpdGUgYW5kIG5vdGlmeSBwYXRocywgYW5kIGludHJvZHVjZXMgYSBuZXcgaW9tYXAgaGVscGVyLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIGZpbGVzeXN0ZW0gbG9naWMgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IHVzZXItc3BhY2UgdmlhIEZVU0UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGY1MTkzN2E1NDU3YTdmMWE1ODljMWY4OTdkMjAwMDA0NDI5OWE4NGQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCA4IDA4OjQ3OjE2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZnMvZnVzZS9maWxlLmMgYi9mcy9mdXNlL2ZpbGUuYwppbmRleCBjZWFkYTc1MzEwYjg4MC4uZGE1ODU5ZTgxNTlkNGYgMTAwNjQ0Ci0tLSBhL2ZzL2Z1c2UvZmlsZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2Z1c2UvZmlsZS5jCkBAIC0xMjE5LDggJiM0MzsxMjE5LDcgQEAgc3RhdGljIHNzaXplX3QgZnVzZV9zZW5kX3dyaXRlX3BhZ2VzKHN0cnVjdCBmdXNlX2lvX2FyZ3MgKmlhLAogCXN0cnVjdCBmaWxlICpmaWxlID0gaW9jYi0mZ3Q7a2lfZmlscDsKIAlzdHJ1Y3QgZnVzZV9maWxlICpmZiA9IGZpbGUtJmd0O3ByaXZhdGVfZGF0YTsKIAlzdHJ1Y3QgZnVzZV9tb3VudCAqZm0gPSBmZi0mZ3Q7Zm07Ci0JdW5zaWduZWQgaW50IG9mZnNldCwgaTsKLQlib29sIHNob3J0X3dyaXRlOwomIzQzOwl1bnNpZ25lZCBpbnQgaTsKIAlpbnQgZXJyOwogCiAJZm9yIChpID0gMDsgaSAmbHQ7IGFwLSZndDtudW1fZm9saW9zOyBpJiM0MzsmIzQzOykKQEAgLTEyMzUsMjQgJiM0MzsxMjM0LDkgQEAgc3RhdGljIHNzaXplX3QgZnVzZV9zZW5kX3dyaXRlX3BhZ2VzKHN0cnVjdCBmdXNlX2lvX2FyZ3MgKmlhLAogCWlmICghZXJyICZhbXA7JmFtcDsgaWEtJmd0O3dyaXRlLm91dC5zaXplICZndDsgY291bnQpCiAJCWVyciA9IC1FSU87CiAKLQlzaG9ydF93cml0ZSA9IGlhLSZndDt3cml0ZS5vdXQuc2l6ZSAmbHQ7IGNvdW50OwotCW9mZnNldCA9IGFwLSZndDtkZXNjc1swXS5vZmZzZXQ7Ci0JY291bnQgPSBpYS0mZ3Q7d3JpdGUub3V0LnNpemU7CiAJZm9yIChpID0gMDsgaSAmbHQ7IGFwLSZndDtudW1fZm9saW9zOyBpJiM0MzsmIzQzOykgewogCQlzdHJ1Y3QgZm9saW8gKmZvbGlvID0gYXAtJmd0O2ZvbGlvc1tpXTsKIAotCQlpZiAoZXJyKSB7Ci0JCQlmb2xpb19jbGVhcl91cHRvZGF0ZShmb2xpbyk7Ci0JCX0gZWxzZSB7Ci0JCQlpZiAoY291bnQgJmd0Oz0gZm9saW9fc2l6ZShmb2xpbykgLSBvZmZzZXQpCi0JCQkJY291bnQgLT0gZm9saW9fc2l6ZShmb2xpbykgLSBvZmZzZXQ7Ci0JCQllbHNlIHsKLQkJCQlpZiAoc2hvcnRfd3JpdGUpCi0JCQkJCWZvbGlvX2NsZWFyX3VwdG9kYXRlKGZvbGlvKTsKLQkJCQljb3VudCA9IDA7Ci0JCQl9Ci0JCQlvZmZzZXQgPSAwOwotCQl9CiAJCWlmIChpYS0mZ3Q7d3JpdGUuZm9saW9fbG9ja2VkICZhbXA7JmFtcDsgKGkgPT0gYXAtJmd0O251bV9mb2xpb3MgLSAxKSkKIAkJCWZvbGlvX3VubG9jayhmb2xpbyk7CiAJCWZvbGlvX3B1dChmb2xpbyk7CkBAIC0xMzI3LDcgJiM0MzsxMzExLDcgQEAgc3RhdGljIHNzaXplX3QgZnVzZV9maWxsX3dyaXRlX3BhZ2VzKHN0cnVjdCBmdXNlX2lvX2FyZ3MgKmlhLAogCiAJCS8qIElmIHdlIGNvcGllZCBmdWxsIGZvbGlvLCBtYXJrIGl0IHVwdG9kYXRlICovCiAJCWlmICh0bXAgPT0gZm9saW9fc2l6ZShmb2xpbykpCi0JCQlmb2xpb19tYXJrX3VwdG9kYXRlKGZvbGlvKTsKJiM0MzsJCQlpb21hcF9mb2xpb19tYXJrX3VwdG9kYXRlKGZvbGlvKTsKIAogCQlpZiAoZm9saW9fdGVzdF91cHRvZGF0ZShmb2xpbykpIHsKIAkJCWZvbGlvX3VubG9jayhmb2xpbyk7CmRpZmYgLS1naXQgYS9mcy9mdXNlL25vdGlmeS5jIGIvZnMvZnVzZS9ub3RpZnkuYwppbmRleCAyOTU3ODEwNGFlNmNkNi4uMWJhNzYzNzA1ZDkxMTkgMTAwNjQ0Ci0tLSBhL2ZzL2Z1c2Uvbm90aWZ5LmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvZnVzZS9ub3RpZnkuYwpAQCAtMiw2ICYjNDM7Miw4IEBACiAKICNpbmNsdWRlICYjMzQ7ZGV2LmgmIzM0OwogI2luY2x1ZGUgJiMzNDtmdXNlX2kuaCYjMzQ7CiYjNDM7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2lvbWFwLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvcGFnZW1hcC5oJmd0OwogCiBzdGF0aWMgaW50IGZ1c2Vfbm90aWZ5X3BvbGwoc3RydWN0IGZ1c2VfY29ubiAqZmMsIHVuc2lnbmVkIGludCBzaXplLApAQCAtMTkyLDcgJiM0MzsxOTQsNyBAQCBzdGF0aWMgaW50IGZ1c2Vfbm90aWZ5X3N0b3JlKHN0cnVjdCBmdXNlX2Nvbm4gKmZjLCB1bnNpZ25lZCBpbnQgc2l6ZSwKIAkJaWYgKCFmb2xpb190ZXN0X3VwdG9kYXRlKGZvbGlvKSAmYW1wOyZhbXA7ICFlcnIgJmFtcDsmYW1wOyBmb2xpb19vZmZzZXQgPT0gMCAmYW1wOyZhbXA7CiAJCSAgICAobnJfYnl0ZXMgPT0gZm9saW9fc2l6ZShmb2xpbykgfHwgZmlsZV9zaXplID09IGVuZCkpIHsKIAkJCWZvbGlvX3plcm9fc2VnbWVudChmb2xpbywgbnJfYnl0ZXMsIGZvbGlvX3NpemUoZm9saW8pKTsKLQkJCWZvbGlvX21hcmtfdXB0b2RhdGUoZm9saW8pOwomIzQzOwkJCWlvbWFwX2ZvbGlvX21hcmtfdXB0b2RhdGUoZm9saW8pOwogCQl9CiAJCWZvbGlvX3VubG9jayhmb2xpbyk7CiAJCWZvbGlvX3B1dChmb2xpbyk7CmRpZmYgLS1naXQgYS9mcy9pb21hcC9idWZmZXJlZC1pby5jIGIvZnMvaW9tYXAvYnVmZmVyZWQtaW8uYwppbmRleCAyNzY3MjBiYzE4ZGM1Mi4uYWY0MTUyOTNlMjY1MWYgMTAwNjQ0Ci0tLSBhL2ZzL2lvbWFwL2J1ZmZlcmVkLWlvLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvaW9tYXAvYnVmZmVyZWQtaW8uYwpAQCAtMTA1LDYgJiM0MzsxMDUsMTIgQEAgc3RhdGljIHZvaWQgaW9tYXBfc2V0X3JhbmdlX3VwdG9kYXRlKHN0cnVjdCBmb2xpbyAqZm9saW8sIHNpemVfdCBvZmYsCiAJCWZvbGlvX21hcmtfdXB0b2RhdGUoZm9saW8pOwogfQogCiYjNDM7dm9pZCBpb21hcF9mb2xpb19tYXJrX3VwdG9kYXRlKHN0cnVjdCBmb2xpbyAqZm9saW8pCiYjNDM7ewomIzQzOwlpb21hcF9zZXRfcmFuZ2VfdXB0b2RhdGUoZm9saW8sIDAsIGZvbGlvX3NpemUoZm9saW8pKTsKJiM0Mzt9CiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwoaW9tYXBfZm9saW9fbWFya191cHRvZGF0ZSk7CiYjNDM7CiAvKgogICogRmluZCB0aGUgbmV4dCBkaXJ0eSBibG9jayBpbiB0aGUgZm9saW8uIGVuZF9ibGsgaXMgaW5jbHVzaXZlLgogICogSWYgbm8gZGlydHkgYmxvY2sgaXMgZm91bmQsIHRoaXMgd2lsbCByZXR1cm4gZW5kX2JsayAmIzQzOyAxLgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9pb21hcC5oIGIvaW5jbHVkZS9saW51eC9pb21hcC5oCmluZGV4IDU2YjQzZDU5NGU2ZTI5Li40MGFhMzQ3NmEzNTFkMiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9pb21hcC5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvaW9tYXAuaApAQCAtMzY1LDYgJiM0MzszNjUsNyBAQCBzdHJ1Y3QgZm9saW8gKmlvbWFwX2dldF9mb2xpbyhzdHJ1Y3QgaW9tYXBfaXRlciAqaXRlciwgbG9mZl90IHBvcywgc2l6ZV90IGxlbik7CiBib29sIGlvbWFwX3JlbGVhc2VfZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbywgZ2ZwX3QgZ2ZwX2ZsYWdzKTsKIHZvaWQgaW9tYXBfaW52YWxpZGF0ZV9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuKTsKIGJvb2wgaW9tYXBfZGlydHlfZm9saW8oc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsIHN0cnVjdCBmb2xpbyAqZm9saW8pOwomIzQzO3ZvaWQgaW9tYXBfZm9saW9fbWFya191cHRvZGF0ZShzdHJ1Y3QgZm9saW8gKmZvbGlvKTsKIGludCBpb21hcF9maWxlX3Vuc2hhcmUoc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IHBvcywgbG9mZl90IGxlbiwKIAkJY29uc3Qgc3RydWN0IGlvbWFwX29wcyAqb3BzLAogCQljb25zdCBzdHJ1Y3QgaW9tYXBfd3JpdGVfb3BzICp3cml0ZV9vcHMpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAwODo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTMyCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMzA0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEZVU0UvSU9NQVAgUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCBhIHBhdGNoIGluIGZyb250IG9mIG1lIHRoYXQgdG91Y2hlcyBzb21lIHByZXR0eSBmdW5kYW1lbnRhbCBhcmVhczogYGZzL2Z1c2UvZmlsZS5jYCwgYGZzL2Z1c2Uvbm90aWZ5LmNgLCBgZnMvaW9tYXAvYnVmZmVyZWQtaW8uY2AsIGFuZCBgaW5jbHVkZS9saW51eC9pb21hcC5oYC4gSW1tZWRpYXRlbHksIG15IHNwaWRleS1zZW5zZSBpcyB0aW5nbGluZy4gVGhpcyBpc24mIzM5O3QganVzdCBhIG1pbm9yIHR3ZWFrOyB3ZSYjMzk7cmUgdGFsa2luZyBhYm91dCBjb3JlIEZVU0UgYW5kIElPTUFQIGxvZ2ljLCBhbmQgdGhhdCYjMzk7cyAqYWx3YXlzKiB3b3J0aCBhIGNsb3NlciBsb29rIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLgoKRXNzZW50aWFsbHksIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIHRoaXMgbmV3IGBpb21hcF9mb2xpb19tYXJrX3VwdG9kYXRlKHN0cnVjdCBmb2xpbyAqZm9saW8pYCBmdW5jdGlvbiwgd2hpY2ggc2VlbXMgdG8gY2VudHJhbGl6ZSB0aGUgbWFya2luZyBvZiBmb2xpb3MgYXMgdXAtdG8tZGF0ZS4gSXQmIzM5O3MgY2FsbGluZyB0aGUgSU9NQVAtc3BlY2lmaWMgZnVuY3Rpb24gdG8gbWFyayB0aGUgZW50aXJlIGZvbGlvLCByZXBsYWNpbmcgdGhlIG1vcmUgZ2VuZXJpYyBgZm9saW9fbWFya191cHRvZGF0ZWAgY2FsbHMgaW4gYGZ1c2VfZmlsbF93cml0ZV9wYWdlc2AgYW5kIGBmdXNlX25vdGlmeV9zdG9yZWAuIE9uIHRvcCBvZiB0aGF0LCBpdCByZW1vdmVzIHNvbWUgZXhpc3RpbmcgZXJyb3IgaGFuZGxpbmcvc2hvcnQgd3JpdGUgaGFuZGxpbmcgZnJvbSBgZnVzZV9zZW5kX3dyaXRlX3BhZ2VzYCB3aGljaCBjbGVhcnMgdGhlIHVwLXRvLWRhdGUgZmxhZywgd2hpY2gsIGJ5IGl0c2VsZiwgaXMgaW50ZXJlc3RpbmcuIFRoaXMgbG9va3MgbGlrZSBhIHNpbXBsaWZpY2F0aW9uIGFuZCBwb3RlbnRpYWwgb3B0aW1pemF0aW9uLCBidXQgdGhhdCBhbHdheXMgaW50cm9kdWNlcyBhIG5ldyB2ZWN0b3IgZm9yIGF0dGFjay4KCk15IGluaXRpYWwgZ3V0IGZlZWxpbmcgaXMgdGhhdCB0aGlzICppcyogZnV6emFibGUsIGFuZCAqc2hvdWxkKiBiZSBmdXp6ZWQsIGFzIHRoZXJlJiMzOTtzIGEgZ29vZCBwcm9iYWJpbGl0eSB0aGF0IHRoZXJlIGFyZSBmdW5jdGlvbmFsIGFyZWFzLCBhbmQgdGhhdCB0aGVzZSBhcmVhcyBhcmUgcmVhY2hhYmxlLCBhbmQgdGhlIGNoYW5nZXMgYXJlIHNpZ25pZmljYW50IGVub3VnaCB0byB3YXJyYW50IGludmVzdGlnYXRpb24uCgpTcGVjaWZpY2FsbHksIEkmIzM5O2xsIHdhbnQgdG8gZm9jdXMgb246IGBmdXNlX3NlbmRfd3JpdGVfcGFnZXNgLCBgZnVzZV9maWxsX3dyaXRlX3BhZ2VzYCwgYGZ1c2Vfbm90aWZ5X3N0b3JlYCwgYW5kIG5vdywgY3JpdGljYWxseSwgdGhlIG5ldyBgaW9tYXBfZm9saW9fbWFya191cHRvZGF0ZWAgZnVuY3Rpb24uIFRoZXNlIGFyZSB0aGUga2V5IHN5bWJvbHMgaW1wYWN0ZWQgYnkgdGhlIHBhdGNoLgoKTm93LCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gYnVpbGRpbmcgdGhpcyB3aXRoIHRoZSByaWdodCBjb25maWd1cmF0aW9ucy4gQ2xlYXJseSwgYEZVU0VfRlNgIGlzIHJlcXVpcmVkLiBJJiMzOTtsbCBhbHNvIG5lZWQgYEZTX0lPTUFQYC4gU2luY2UgSU9NQVAgaXMgb2Z0ZW4gZW5hYmxlZCBhcyBhIGRlcGVuZGVuY3kgb2Ygb3RoZXIgZmlsZXN5c3RlbXMsIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCB0aGlzIGlzIGEgY29uZmlndXJhYmxlIG9wdGlvbi4KCkkmIzM5O2xsIGNoZWNrIHRoZSBgZnMvZnVzZS9LY29uZmlnYCBhbmQgYGZzL2lvbWFwL0tjb25maWdgIGZpbGVzIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLiBUaGUgc29vbmVyIEkgYnVpbGQgdGhlIGZ1enppbmcgYnVpbGQsIHRoZSBzb29uZXIgSSBjYW4gc3RhcnQgYWN0dWFsbHkgZGlnZ2luZyBpbnRvIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMDg6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEZVU0VfRlMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9mdXNlL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZnVzZS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5mcy9mdXNlL0tjb25maWc6Mjpjb25maWcgRlVTRV9GU1xuZnMvZnVzZS9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtGVVNFIChGaWxlc3lzdGVtIGluIFVzZXJzcGFjZSkgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDA4OjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwNzEKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyBhIFBvdGVudGlhbCBJL08gTWFwcGluZyBJc3N1ZSoqCgpBbHJpZ2h0LCB0aGUgdXNlciYjMzk7cyBwcm9iYWJseSBlbmNvdW50ZXJpbmcgYSBwcm9ibGVtIHJlbGF0ZWQgdG8gZmlsZSBJL08gbWFwcGluZy4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGRpdmUgaW50byB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gZmlsZXMsIHNwZWNpZmljYWxseSBhbnl0aGluZyBkZWFsaW5nIHdpdGggSS9PIG1hcHBpbmcuIExldCYjMzk7cyBzZWUuLi4gYSBnb29kIHN0YXJ0aW5nIHBvaW50IHdvdWxkIGJlIGBmcy9pb21hcC9LY29uZmlnYCBvciBzb21ldGhpbmcgc2ltaWxhciB3aXRoaW4gdGhlIGZpbGUgc3lzdGVtIGNvcmUuIFRoYXQmIzM5O3MgdXN1YWxseSB3aGVyZSB0aGUga25vYnMgYW5kIGZlYXR1cmVzIHJlbGF0ZWQgdG8gaG93IGZpbGUgc3lzdGVtcyBoYW5kbGUgZGlyZWN0IEkvTywgYnVmZmVyZWQgSS9PLCBhbmQgcmVsYXRlZCBvcHRpbWl6YXRpb25zIGFyZSBkZWZpbmVkLiBDaGFuY2VzIGFyZSwgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgZG9jdW1lbnRlZCB0aGVyZSwgYWxvbmdzaWRlIHRoZSBkZXBlbmRlbmNpZXMgdGhhdCBpbXBhY3QgdGhlaXIgYXZhaWxhYmlsaXR5IG9yIGJlaGF2aW9yLiBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiBkaWZmZXJlbnQgc2V0dGluZ3MgdG8gZGlhZ25vc2UgdGhlIHVzZXImIzM5O3MgaXNzdWUgZWZmZWN0aXZlbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMDg6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRlNfSU9NQVAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9pb21hcC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAwODo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MzExCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGhpczoKCioqTG9jYXRpbmcgdGhlIERlZmluaXRpb24gb2YgYEZTX0lPTUFQYCoqCgpBbHJpZ2h0LCBzbyBJIG5lZWQgdG8gZmluZCB0aGUgZGVmaW5pdGlvbiBvZiBgRlNfSU9NQVBgLiBUaGlzIGlzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBzdGFydGluZyBwb2ludC4gSSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGtub3dpbmcgd2hlcmUgdGhpcyBwYXJ0aWN1bGFyIG1hY3JvIG9yIHN5bWJvbCBpcyBkZWZpbmVkLiBJcyBpdCBpbiB0aGUga2VybmVsIGhlYWRlcnMsIGluIGEgc3BlY2lmaWMgbGlicmFyeSwgb3IgbWF5YmUgZXZlbiBpbiBhIHVzZXJzcGFjZSBpbmNsdWRlIGZpbGU/IEl0IGNvdWxkIGJlIGFueXdoZXJlLCByZWFsbHkuIEJ1dCB0byBlZmZlY3RpdmVseSB3b3JrIHdpdGggb3IgYW5hbHl6ZSBhbnl0aGluZyByZWxhdGVkIHRvIGBGU19JT01BUGAsIGxvY2F0aW5nIGl0cyBkZWNsYXJhdGlvbiBpcyBhYnNvbHV0ZWx5IGVzc2VudGlhbC4gVGhhdCYjMzk7cyBteSBpbml0aWFsIGdvYWwuIEtub3dpbmcgdGhlIGRlZmluaXRpb24gaXMgdGhlIGZvdW5kYXRpb24gZm9yIHVuZGVyc3RhbmRpbmcgaXRzIHB1cnBvc2UgYW5kIGhvdyBpdCYjMzk7cyB1c2VkIHdpdGhpbiBhIHN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAwODo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRlNfSU9NQVAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL0tjb25maWc9MTI9Y29uZmlnIFZBTElEQVRFX0ZTX1BBUlNFUlxuLS1cbmZzL0tjb25maWctMTctXG5mcy9LY29uZmlnOjE4OmNvbmZpZyBGU19JT01BUFxuZnMvS2NvbmZpZy0xOS1cdGJvb2xcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAwODo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTc3CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZVU0UgV3JpdGUgUGF0aCBBbmFseXNpcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBgRlNfSU9NQVBgIGlzIGEgYm9vbGVhbi4gVXN1YWxseSwgSSBzZWUgb3RoZXIgZmlsZXN5c3RlbXMgc2V0dGluZyB0aGlzLCBzbyBsZXQmIzM5O3MgY2hlY2sgZm9yIG90aGVyIGNvbmZpZ3MuIFRoZSBwcmltYXJ5IHJlbGV2YW50IG9uZSBoZXJlIHNlZW1zIHRvIGJlIGBGVVNFX0ZTYC4KCkFscmlnaHQsIGxldCYjMzk7cyB6ZXJvIGluIG9uIHRoZSBrZXkgc3ltYm9scyBpbnZvbHZlZC4gSSBzZWUgYGZ1c2Vfc2VuZF93cml0ZV9wYWdlc2AsIGBmdXNlX2ZpbGxfd3JpdGVfcGFnZXNgLCBgZnVzZV9ub3RpZnlfc3RvcmVgLCBhbmQgYGlvbWFwX2ZvbGlvX21hcmtfdXB0b2RhdGVgIGFzIHRoZSBrZXkgZnVuY3Rpb25zIHRvIHdhdGNoLiBJIHNob3VsZCBmaWd1cmUgb3V0IGlmIGVhY2ggYXJlIHN0YXRpYyBvciBleHBvcnRlZC4gCgpgZnVzZV9zZW5kX3dyaXRlX3BhZ2VzYCBhbmQgYGZ1c2VfZmlsbF93cml0ZV9wYWdlc2AgYXJlIHN0YXRpYyBhbmQgZm91bmQgaW4gYGZzL2Z1c2UvZmlsZS5jYCwgYW5kIGBmdXNlX25vdGlmeV9zdG9yZWAgaXMgYWxzbyBzdGF0aWMgaW4gYGZzL2Z1c2Uvbm90aWZ5LmNgLCB3aGlsZSBgaW9tYXBfZm9saW9fbWFya191cHRvZGF0ZWAgaXMgZXhwb3J0ZWQgZnJvbSBgZnMvaW9tYXAvYnVmZmVyZWQtaW8uY2AuCgpOb3csIGlzIGBmdXNlX3NlbmRfd3JpdGVfcGFnZXNgIGEgaG90IHBhdGg/IEdpdmVuIGl0cyBuYW1lLCBpdCYjMzk7cyBjYWxsZWQgZHVyaW5nIHdyaXRlIHBhZ2VzLCBhbmQgdGhhdCYjMzk7cyBhbiBvYnZpb3VzIGNhbmRpZGF0ZSBmb3IgZnV6emluZyBpbiBGVVNFISBHb29kLgoKTGV0JiMzOTtzIHF1aWNrbHkgdmVyaWZ5IHRoZSBtZXRhZGF0YS4gWWVwLCBgV29ydGhGdXp6aW5nYCBpcyBgdHJ1ZWAuIFRoZSByZWFzb25pbmcgbWFrZXMgcGVyZmVjdCBzZW5zZTogaXQgdG91Y2hlcyBwYWdlIHVwdG9kYXRlIGhhbmRsaW5nIGluIEZVU0Ugd3JpdGUgYW5kIG5vdGlmaWNhdGlvbiBwYXRocywgYW5kIGludHJvZHVjZXMgYW4gaW9tYXAgaGVscGVyLCBhbmQgYWxsIHRoZXNlIHRoaW5ncyBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHVzZXItc3BhY2UgY2FuIHRyaWdnZXIgdmlhIEZVU0UuIFRoZSBgRm9jdXNTeW1ib2xzYCBhcmUgc3BvdCBvbiwgYW5kIGBGVVNFX0ZTYCBpcyB0aGUgcmVxdWlyZWQgYEVuYWJsZUNvbmZpZ2AuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSYjMzk7bGwgZG91YmxlLWNoZWNrIGlmIGBGU19JT01BUGAgcmVxdWlyZXMgZXhwbGljaXQgZW5hYmxpbmcuIFNpbmNlIGl0JiMzOTtzIGEgYGJvb2xgIHdpdGhvdXQgYSBwcm9tcHQsIGl0JiMzOTtzIHNlbGVjdGVkIGJ5IG90aGVyIGNvbmZpZ3MsIG5vdCBkaXJlY3RseSBlbmFibGVkIHZpYSBtZW51Y29uZmlnLiBTbyBkb2VzIEZVU0Ugc2VsZWN0IGl0PyBMZXQmIzM5O3MgY2hlY2sgYGZzL2Z1c2UvS2NvbmZpZ2AgdG8gYmUgc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMDg6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IEZTX0lPTUFQJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvZnVzZS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2Z1c2UvS2NvbmZpZz0yPWNvbmZpZyBGVVNFX0ZTXG4tLVxuZnMvZnVzZS9LY29uZmlnLTQtXHRzZWxlY3QgRlNfUE9TSVhfQUNMXG5mcy9mdXNlL0tjb25maWc6NTpcdHNlbGVjdCBGU19JT01BUFxuZnMvZnVzZS9LY29uZmlnLTYtXHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDA4OjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU1NTkKCQkJCQkJCW91dHB1dDogMTIyCgkJCQkJCQl0aG91Z2h0czogMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXNzdW1pbmcgdGhlIGNvbnRleHQgaXMgZmlsZSBzeXN0ZW0gZGVzaWduIGFuZCB0aGUgdXNlciBpcyBhbiBleHBlcnQ6CgoqKkZpbGUgU3lzdGVtIEZlYXR1cmUgRW5hYmxlbWVudCoqCgpSaWdodCwgc28gYEZVU0VfRlNgIGF1dG9tYXRpY2FsbHkgdHJpZ2dlcnMgdGhlIHVzZSBvZiBgRlNfSU9NQVBgLiBUaGF0JiMzOTtzIGVmZmljaWVudC4gSXQgbWFrZXMgdGhlIGRlcGVuZGVuY3kgY2xlYXIuIEVzc2VudGlhbGx5LCBieSBlbmFibGluZyBgRlVTRV9GU2AsIEkmIzM5O20gaW1wbGljaXRseSBhY3RpdmF0aW5nIHRoZSBJL08gbWFwcGluZyBzdHJhdGVneS4gVGhhdCYjMzk7cyBnb29kOyBpdCBzaW1wbGlmaWVzIHRoZSBjb25maWd1cmF0aW9uIGFuZCBhdm9pZHMgcmVkdW5kYW5jeSBpbiBmZWF0dXJlIHNldHRpbmdzLiBObyBuZWVkIHRvIGV4cGxpY2l0bHkgZW5hYmxlIGJvdGguIEl0JiMzOTtzIGEgbmljZSwgY2xlYW4gYXJjaGl0ZWN0dXJhbCBkZXNpZ24gY2hvaWNlLgoKVGhlcmVmb3JlLCB0aGUgbmV4dCBzdGVwIGlzIHN0cmFpZ2h0Zm9yd2FyZDogSSB3aWxsIGNvbmZpZ3VyZSB0aGUgcmVsZXZhbnQgc2V0dGluZ3MgYmFzZWQgb24gdGhpcyBuZXcgdW5kZXJzdGFuZGluZyBhbmQgc2V0IHRoZSByZXN1bHRzIGFjY29yZGluZ2x5LCBrbm93aW5nIHRoYXQgZXZlcnl0aGluZyBpcyBhcyBpdCBzaG91bGQgYmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDA4OjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtGVVNFX0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZnVzZV9zZW5kX3dyaXRlX3BhZ2VzJiMzNDssCiAgICAmIzM0O2Z1c2VfZmlsbF93cml0ZV9wYWdlcyYjMzQ7LAogICAgJiMzNDtmdXNlX25vdGlmeV9zdG9yZSYjMzQ7LAogICAgJiMzNDtpb21hcF9mb2xpb19tYXJrX3VwdG9kYXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHBhZ2UgdXB0b2RhdGUgaGFuZGxpbmcgaW4gRlVTRSB3cml0ZSBhbmQgbm90aWZ5IHBhdGhzLCBhbmQgaW50cm9kdWNlcyBhIG5ldyBpb21hcCBoZWxwZXIuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gZmlsZXN5c3RlbSBsb2dpYyB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgYnkgdXNlci1zcGFjZSB2aWEgRlVTRS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RlVTRV9GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Z1c2Vfc2VuZF93cml0ZV9wYWdlcyYjMzQ7LAogICAgJiMzNDtmdXNlX2ZpbGxfd3JpdGVfcGFnZXMmIzM0OywKICAgICYjMzQ7ZnVzZV9ub3RpZnlfc3RvcmUmIzM0OywKICAgICYjMzQ7aW9tYXBfZm9saW9fbWFya191cHRvZGF0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBwYWdlIHVwdG9kYXRlIGhhbmRsaW5nIGluIEZVU0Ugd3JpdGUgYW5kIG5vdGlmeSBwYXRocywgYW5kIGludHJvZHVjZXMgYSBuZXcgaW9tYXAgaGVscGVyLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIGZpbGVzeXN0ZW0gbG9naWMgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IHVzZXItc3BhY2UgdmlhIEZVU0UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wOFQwODo0NzoxNy45NjY4MDgwNDJaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzAwNjE3OTA4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJGVVNFX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZnVzZV9zZW5kX3dyaXRlX3BhZ2VzXCIsXG4gICAgXCJmdXNlX2ZpbGxfd3JpdGVfcGFnZXNcIixcbiAgICBcImZ1c2Vfbm90aWZ5X3N0b3JlXCIsXG4gICAgXCJpb21hcF9mb2xpb19tYXJrX3VwdG9kYXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgcGFnZSB1cHRvZGF0ZSBoYW5kbGluZyBpbiBGVVNFIHdyaXRlIGFuZCBub3RpZnkgcGF0aHMsIGFuZCBpbnRyb2R1Y2VzIGEgbmV3IGlvbWFwIGhlbHBlci4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiBmaWxlc3lzdGVtIGxvZ2ljIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSB1c2VyLXNwYWNlIHZpYSBGVVNFLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQwODo0NzoxNy45NjY4Mjg0NzFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgzNzAyNzQzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGY1MTkzN2E1NDU3YTdmMWE1ODljMWY4OTdkMjAwMDA0NDI5OWE4NGRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgOCAwODo0NzoxNiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9mcy9mdXNlL2ZpbGUuYyBiL2ZzL2Z1c2UvZmlsZS5jXFxuaW5kZXggY2VhZGE3NTMxMGI4ODAuLmRhNTg1OWU4MTU5ZDRmIDEwMDY0NFxcbi0tLSBhL2ZzL2Z1c2UvZmlsZS5jXFxuKysrIGIvZnMvZnVzZS9maWxlLmNcXG5AQCAtMTIxOSw4ICsxMjE5LDcgQEAgc3RhdGljIHNzaXplX3QgZnVzZV9zZW5kX3dyaXRlX3BhZ2VzKHN0cnVjdCBmdXNlX2lvX2FyZ3MgKmlhLFxcbiBcXHRzdHJ1Y3QgZmlsZSAqZmlsZSA9IGlvY2ItXFx1MDAzZWtpX2ZpbHA7XFxuIFxcdHN0cnVjdCBmdXNlX2ZpbGUgKmZmID0gZmlsZS1cXHUwMDNlcHJpdmF0ZV9kYXRhO1xcbiBcXHRzdHJ1Y3QgZnVzZV9tb3VudCAqZm0gPSBmZi1cXHUwMDNlZm07XFxuLVxcdHVuc2lnbmVkIGludCBvZmZzZXQsIGk7XFxuLVxcdGJvb2wgc2hvcnRfd3JpdGU7XFxuK1xcdHVuc2lnbmVkIGludCBpO1xcbiBcXHRpbnQgZXJyO1xcbiBcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGFwLVxcdTAwM2VudW1fZm9saW9zOyBpKyspXFxuQEAgLTEyMzUsMjQgKzEyMzQsOSBAQCBzdGF0aWMgc3NpemVfdCBmdXNlX3NlbmRfd3JpdGVfcGFnZXMoc3RydWN0IGZ1c2VfaW9fYXJncyAqaWEsXFxuIFxcdGlmICghZXJyIFxcdTAwMjZcXHUwMDI2IGlhLVxcdTAwM2V3cml0ZS5vdXQuc2l6ZSBcXHUwMDNlIGNvdW50KVxcbiBcXHRcXHRlcnIgPSAtRUlPO1xcbiBcXG4tXFx0c2hvcnRfd3JpdGUgPSBpYS1cXHUwMDNld3JpdGUub3V0LnNpemUgXFx1MDAzYyBjb3VudDtcXG4tXFx0b2Zmc2V0ID0gYXAtXFx1MDAzZWRlc2NzWzBdLm9mZnNldDtcXG4tXFx0Y291bnQgPSBpYS1cXHUwMDNld3JpdGUub3V0LnNpemU7XFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBhcC1cXHUwMDNlbnVtX2ZvbGlvczsgaSsrKSB7XFxuIFxcdFxcdHN0cnVjdCBmb2xpbyAqZm9saW8gPSBhcC1cXHUwMDNlZm9saW9zW2ldO1xcbiBcXG4tXFx0XFx0aWYgKGVycikge1xcbi1cXHRcXHRcXHRmb2xpb19jbGVhcl91cHRvZGF0ZShmb2xpbyk7XFxuLVxcdFxcdH0gZWxzZSB7XFxuLVxcdFxcdFxcdGlmIChjb3VudCBcXHUwMDNlPSBmb2xpb19zaXplKGZvbGlvKSAtIG9mZnNldClcXG4tXFx0XFx0XFx0XFx0Y291bnQgLT0gZm9saW9fc2l6ZShmb2xpbykgLSBvZmZzZXQ7XFxuLVxcdFxcdFxcdGVsc2Uge1xcbi1cXHRcXHRcXHRcXHRpZiAoc2hvcnRfd3JpdGUpXFxuLVxcdFxcdFxcdFxcdFxcdGZvbGlvX2NsZWFyX3VwdG9kYXRlKGZvbGlvKTtcXG4tXFx0XFx0XFx0XFx0Y291bnQgPSAwO1xcbi1cXHRcXHRcXHR9XFxuLVxcdFxcdFxcdG9mZnNldCA9IDA7XFxuLVxcdFxcdH1cXG4gXFx0XFx0aWYgKGlhLVxcdTAwM2V3cml0ZS5mb2xpb19sb2NrZWQgXFx1MDAyNlxcdTAwMjYgKGkgPT0gYXAtXFx1MDAzZW51bV9mb2xpb3MgLSAxKSlcXG4gXFx0XFx0XFx0Zm9saW9fdW5sb2NrKGZvbGlvKTtcXG4gXFx0XFx0Zm9saW9fcHV0KGZvbGlvKTtcXG5AQCAtMTMyNyw3ICsxMzExLDcgQEAgc3RhdGljIHNzaXplX3QgZnVzZV9maWxsX3dyaXRlX3BhZ2VzKHN0cnVjdCBmdXNlX2lvX2FyZ3MgKmlhLFxcbiBcXG4gXFx0XFx0LyogSWYgd2UgY29waWVkIGZ1bGwgZm9saW8sIG1hcmsgaXQgdXB0b2RhdGUgKi9cXG4gXFx0XFx0aWYgKHRtcCA9PSBmb2xpb19zaXplKGZvbGlvKSlcXG4tXFx0XFx0XFx0Zm9saW9fbWFya191cHRvZGF0ZShmb2xpbyk7XFxuK1xcdFxcdFxcdGlvbWFwX2ZvbGlvX21hcmtfdXB0b2RhdGUoZm9saW8pO1xcbiBcXG4gXFx0XFx0aWYgKGZvbGlvX3Rlc3RfdXB0b2RhdGUoZm9saW8pKSB7XFxuIFxcdFxcdFxcdGZvbGlvX3VubG9jayhmb2xpbyk7XFxuZGlmZiAtLWdpdCBhL2ZzL2Z1c2Uvbm90aWZ5LmMgYi9mcy9mdXNlL25vdGlmeS5jXFxuaW5kZXggMjk1NzgxMDRhZTZjZDYuLjFiYTc2MzcwNWQ5MTE5IDEwMDY0NFxcbi0tLSBhL2ZzL2Z1c2Uvbm90aWZ5LmNcXG4rKysgYi9mcy9mdXNlL25vdGlmeS5jXFxuQEAgLTIsNiArMiw4IEBAXFxuIFxcbiAjaW5jbHVkZSBcXFwiZGV2LmhcXFwiXFxuICNpbmNsdWRlIFxcXCJmdXNlX2kuaFxcXCJcXG4rXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9pb21hcC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcGFnZW1hcC5oXFx1MDAzZVxcbiBcXG4gc3RhdGljIGludCBmdXNlX25vdGlmeV9wb2xsKHN0cnVjdCBmdXNlX2Nvbm4gKmZjLCB1bnNpZ25lZCBpbnQgc2l6ZSxcXG5AQCAtMTkyLDcgKzE5NCw3IEBAIHN0YXRpYyBpbnQgZnVzZV9ub3RpZnlfc3RvcmUoc3RydWN0IGZ1c2VfY29ubiAqZmMsIHVuc2lnbmVkIGludCBzaXplLFxcbiBcXHRcXHRpZiAoIWZvbGlvX3Rlc3RfdXB0b2RhdGUoZm9saW8pIFxcdTAwMjZcXHUwMDI2ICFlcnIgXFx1MDAyNlxcdTAwMjYgZm9saW9fb2Zmc2V0ID09IDAgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0ICAgIChucl9ieXRlcyA9PSBmb2xpb19zaXplKGZvbGlvKSB8fCBmaWxlX3NpemUgPT0gZW5kKSkge1xcbiBcXHRcXHRcXHRmb2xpb196ZXJvX3NlZ21lbnQoZm9saW8sIG5yX2J5dGVzLCBmb2xpb19zaXplKGZvbGlvKSk7XFxuLVxcdFxcdFxcdGZvbGlvX21hcmtfdXB0b2RhdGUoZm9saW8pO1xcbitcXHRcXHRcXHRpb21hcF9mb2xpb19tYXJrX3VwdG9kYXRlKGZvbGlvKTtcXG4gXFx0XFx0fVxcbiBcXHRcXHRmb2xpb191bmxvY2soZm9saW8pO1xcbiBcXHRcXHRmb2xpb19wdXQoZm9saW8pO1xcbmRpZmYgLS1naXQgYS9mcy9pb21hcC9idWZmZXJlZC1pby5jIGIvZnMvaW9tYXAvYnVmZmVyZWQtaW8uY1xcbmluZGV4IDI3NjcyMGJjMThkYzUyLi5hZjQxNTI5M2UyNjUxZiAxMDA2NDRcXG4tLS0gYS9mcy9pb21hcC9idWZmZXJlZC1pby5jXFxuKysrIGIvZnMvaW9tYXAvYnVmZmVyZWQtaW8uY1xcbkBAIC0xMDUsNiArMTA1LDEyIEBAIHN0YXRpYyB2b2lkIGlvbWFwX3NldF9yYW5nZV91cHRvZGF0ZShzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzaXplX3Qgb2ZmLFxcbiBcXHRcXHRmb2xpb19tYXJrX3VwdG9kYXRlKGZvbGlvKTtcXG4gfVxcbiBcXG4rdm9pZCBpb21hcF9mb2xpb19tYXJrX3VwdG9kYXRlKHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuK3tcXG4rXFx0aW9tYXBfc2V0X3JhbmdlX3VwdG9kYXRlKGZvbGlvLCAwLCBmb2xpb19zaXplKGZvbGlvKSk7XFxuK31cXG4rRVhQT1JUX1NZTUJPTF9HUEwoaW9tYXBfZm9saW9fbWFya191cHRvZGF0ZSk7XFxuK1xcbiAvKlxcbiAgKiBGaW5kIHRoZSBuZXh0IGRpcnR5IGJsb2NrIGluIHRoZSBmb2xpby4gZW5kX2JsayBpcyBpbmNsdXNpdmUuXFxuICAqIElmIG5vIGRpcnR5IGJsb2NrIGlzIGZvdW5kLCB0aGlzIHdpbGwgcmV0dXJuIGVuZF9ibGsgKyAxLlxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2lvbWFwLmggYi9pbmNsdWRlL2xpbnV4L2lvbWFwLmhcXG5pbmRleCA1NmI0M2Q1OTRlNmUyOS4uNDBhYTM0NzZhMzUxZDIgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9pb21hcC5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9pb21hcC5oXFxuQEAgLTM2NSw2ICszNjUsNyBAQCBzdHJ1Y3QgZm9saW8gKmlvbWFwX2dldF9mb2xpbyhzdHJ1Y3QgaW9tYXBfaXRlciAqaXRlciwgbG9mZl90IHBvcywgc2l6ZV90IGxlbik7XFxuIGJvb2wgaW9tYXBfcmVsZWFzZV9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvLCBnZnBfdCBnZnBfZmxhZ3MpO1xcbiB2b2lkIGlvbWFwX2ludmFsaWRhdGVfZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbywgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbik7XFxuIGJvb2wgaW9tYXBfZGlydHlfZm9saW8oc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsIHN0cnVjdCBmb2xpbyAqZm9saW8pO1xcbit2b2lkIGlvbWFwX2ZvbGlvX21hcmtfdXB0b2RhdGUoc3RydWN0IGZvbGlvICpmb2xpbyk7XFxuIGludCBpb21hcF9maWxlX3Vuc2hhcmUoc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IHBvcywgbG9mZl90IGxlbixcXG4gXFx0XFx0Y29uc3Qgc3RydWN0IGlvbWFwX29wcyAqb3BzLFxcbiBcXHRcXHRjb25zdCBzdHJ1Y3QgaW9tYXBfd3JpdGVfb3BzICp3cml0ZV9vcHMpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQwODo0NzoxOC44MDQ5MDE2MDlaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI2MTY4MDY5NDQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkZVU0VfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmdXNlX3NlbmRfd3JpdGVfcGFnZXNcIixcbiAgICBcImZ1c2VfZmlsbF93cml0ZV9wYWdlc1wiLFxuICAgIFwiZnVzZV9ub3RpZnlfc3RvcmVcIixcbiAgICBcImlvbWFwX2ZvbGlvX21hcmtfdXB0b2RhdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBwYWdlIHVwdG9kYXRlIGhhbmRsaW5nIGluIEZVU0Ugd3JpdGUgYW5kIG5vdGlmeSBwYXRocywgYW5kIGludHJvZHVjZXMgYSBuZXcgaW9tYXAgaGVscGVyLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIGZpbGVzeXN0ZW0gbG9naWMgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IHVzZXItc3BhY2UgdmlhIEZVU0UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZjUxOTM3YTU0NTdhN2YxYTU4OWMxZjg5N2QyMDAwMDQ0Mjk5YTg0ZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDggMDg6NDc6MTYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9mdXNlL2ZpbGUuYyBiL2ZzL2Z1c2UvZmlsZS5jXG5pbmRleCBjZWFkYTc1MzEwYjg4MC4uZGE1ODU5ZTgxNTlkNGYgMTAwNjQ0XG4tLS0gYS9mcy9mdXNlL2ZpbGUuY1xuKysrIGIvZnMvZnVzZS9maWxlLmNcbkBAIC0xMjE5LDggKzEyMTksNyBAQCBzdGF0aWMgc3NpemVfdCBmdXNlX3NlbmRfd3JpdGVfcGFnZXMoc3RydWN0IGZ1c2VfaW9fYXJncyAqaWEsXG4gXHRzdHJ1Y3QgZmlsZSAqZmlsZSA9IGlvY2ItXHUwMDNla2lfZmlscDtcbiBcdHN0cnVjdCBmdXNlX2ZpbGUgKmZmID0gZmlsZS1cdTAwM2Vwcml2YXRlX2RhdGE7XG4gXHRzdHJ1Y3QgZnVzZV9tb3VudCAqZm0gPSBmZi1cdTAwM2VmbTtcbi1cdHVuc2lnbmVkIGludCBvZmZzZXQsIGk7XG4tXHRib29sIHNob3J0X3dyaXRlO1xuK1x0dW5zaWduZWQgaW50IGk7XG4gXHRpbnQgZXJyO1xuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYXAtXHUwMDNlbnVtX2ZvbGlvczsgaSsrKVxuQEAgLTEyMzUsMjQgKzEyMzQsOSBAQCBzdGF0aWMgc3NpemVfdCBmdXNlX3NlbmRfd3JpdGVfcGFnZXMoc3RydWN0IGZ1c2VfaW9fYXJncyAqaWEsXG4gXHRpZiAoIWVyciBcdTAwMjZcdTAwMjYgaWEtXHUwMDNld3JpdGUub3V0LnNpemUgXHUwMDNlIGNvdW50KVxuIFx0XHRlcnIgPSAtRUlPO1xuIFxuLVx0c2hvcnRfd3JpdGUgPSBpYS1cdTAwM2V3cml0ZS5vdXQuc2l6ZSBcdTAwM2MgY291bnQ7XG4tXHRvZmZzZXQgPSBhcC1cdTAwM2VkZXNjc1swXS5vZmZzZXQ7XG4tXHRjb3VudCA9IGlhLVx1MDAzZXdyaXRlLm91dC5zaXplO1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYXAtXHUwMDNlbnVtX2ZvbGlvczsgaSsrKSB7XG4gXHRcdHN0cnVjdCBmb2xpbyAqZm9saW8gPSBhcC1cdTAwM2Vmb2xpb3NbaV07XG4gXG4tXHRcdGlmIChlcnIpIHtcbi1cdFx0XHRmb2xpb19jbGVhcl91cHRvZGF0ZShmb2xpbyk7XG4tXHRcdH0gZWxzZSB7XG4tXHRcdFx0aWYgKGNvdW50IFx1MDAzZT0gZm9saW9fc2l6ZShmb2xpbykgLSBvZmZzZXQpXG4tXHRcdFx0XHRjb3VudCAtPSBmb2xpb19zaXplKGZvbGlvKSAtIG9mZnNldDtcbi1cdFx0XHRlbHNlIHtcbi1cdFx0XHRcdGlmIChzaG9ydF93cml0ZSlcbi1cdFx0XHRcdFx0Zm9saW9fY2xlYXJfdXB0b2RhdGUoZm9saW8pO1xuLVx0XHRcdFx0Y291bnQgPSAwO1xuLVx0XHRcdH1cbi1cdFx0XHRvZmZzZXQgPSAwO1xuLVx0XHR9XG4gXHRcdGlmIChpYS1cdTAwM2V3cml0ZS5mb2xpb19sb2NrZWQgXHUwMDI2XHUwMDI2IChpID09IGFwLVx1MDAzZW51bV9mb2xpb3MgLSAxKSlcbiBcdFx0XHRmb2xpb191bmxvY2soZm9saW8pO1xuIFx0XHRmb2xpb19wdXQoZm9saW8pO1xuQEAgLTEzMjcsNyArMTMxMSw3IEBAIHN0YXRpYyBzc2l6ZV90IGZ1c2VfZmlsbF93cml0ZV9wYWdlcyhzdHJ1Y3QgZnVzZV9pb19hcmdzICppYSxcbiBcbiBcdFx0LyogSWYgd2UgY29waWVkIGZ1bGwgZm9saW8sIG1hcmsgaXQgdXB0b2RhdGUgKi9cbiBcdFx0aWYgKHRtcCA9PSBmb2xpb19zaXplKGZvbGlvKSlcbi1cdFx0XHRmb2xpb19tYXJrX3VwdG9kYXRlKGZvbGlvKTtcbitcdFx0XHRpb21hcF9mb2xpb19tYXJrX3VwdG9kYXRlKGZvbGlvKTtcbiBcbiBcdFx0aWYgKGZvbGlvX3Rlc3RfdXB0b2RhdGUoZm9saW8pKSB7XG4gXHRcdFx0Zm9saW9fdW5sb2NrKGZvbGlvKTtcbmRpZmYgLS1naXQgYS9mcy9mdXNlL25vdGlmeS5jIGIvZnMvZnVzZS9ub3RpZnkuY1xuaW5kZXggMjk1NzgxMDRhZTZjZDYuLjFiYTc2MzcwNWQ5MTE5IDEwMDY0NFxuLS0tIGEvZnMvZnVzZS9ub3RpZnkuY1xuKysrIGIvZnMvZnVzZS9ub3RpZnkuY1xuQEAgLTIsNiArMiw4IEBAXG4gXG4gI2luY2x1ZGUgXCJkZXYuaFwiXG4gI2luY2x1ZGUgXCJmdXNlX2kuaFwiXG4rXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvaW9tYXAuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BhZ2VtYXAuaFx1MDAzZVxuIFxuIHN0YXRpYyBpbnQgZnVzZV9ub3RpZnlfcG9sbChzdHJ1Y3QgZnVzZV9jb25uICpmYywgdW5zaWduZWQgaW50IHNpemUsXG5AQCAtMTkyLDcgKzE5NCw3IEBAIHN0YXRpYyBpbnQgZnVzZV9ub3RpZnlfc3RvcmUoc3RydWN0IGZ1c2VfY29ubiAqZmMsIHVuc2lnbmVkIGludCBzaXplLFxuIFx0XHRpZiAoIWZvbGlvX3Rlc3RfdXB0b2RhdGUoZm9saW8pIFx1MDAyNlx1MDAyNiAhZXJyIFx1MDAyNlx1MDAyNiBmb2xpb19vZmZzZXQgPT0gMCBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIChucl9ieXRlcyA9PSBmb2xpb19zaXplKGZvbGlvKSB8fCBmaWxlX3NpemUgPT0gZW5kKSkge1xuIFx0XHRcdGZvbGlvX3plcm9fc2VnbWVudChmb2xpbywgbnJfYnl0ZXMsIGZvbGlvX3NpemUoZm9saW8pKTtcbi1cdFx0XHRmb2xpb19tYXJrX3VwdG9kYXRlKGZvbGlvKTtcbitcdFx0XHRpb21hcF9mb2xpb19tYXJrX3VwdG9kYXRlKGZvbGlvKTtcbiBcdFx0fVxuIFx0XHRmb2xpb191bmxvY2soZm9saW8pO1xuIFx0XHRmb2xpb19wdXQoZm9saW8pO1xuZGlmZiAtLWdpdCBhL2ZzL2lvbWFwL2J1ZmZlcmVkLWlvLmMgYi9mcy9pb21hcC9idWZmZXJlZC1pby5jXG5pbmRleCAyNzY3MjBiYzE4ZGM1Mi4uYWY0MTUyOTNlMjY1MWYgMTAwNjQ0XG4tLS0gYS9mcy9pb21hcC9idWZmZXJlZC1pby5jXG4rKysgYi9mcy9pb21hcC9idWZmZXJlZC1pby5jXG5AQCAtMTA1LDYgKzEwNSwxMiBAQCBzdGF0aWMgdm9pZCBpb21hcF9zZXRfcmFuZ2VfdXB0b2RhdGUoc3RydWN0IGZvbGlvICpmb2xpbywgc2l6ZV90IG9mZixcbiBcdFx0Zm9saW9fbWFya191cHRvZGF0ZShmb2xpbyk7XG4gfVxuIFxuK3ZvaWQgaW9tYXBfZm9saW9fbWFya191cHRvZGF0ZShzdHJ1Y3QgZm9saW8gKmZvbGlvKVxuK3tcbitcdGlvbWFwX3NldF9yYW5nZV91cHRvZGF0ZShmb2xpbywgMCwgZm9saW9fc2l6ZShmb2xpbykpO1xuK31cbitFWFBPUlRfU1lNQk9MX0dQTChpb21hcF9mb2xpb19tYXJrX3VwdG9kYXRlKTtcbitcbiAvKlxuICAqIEZpbmQgdGhlIG5leHQgZGlydHkgYmxvY2sgaW4gdGhlIGZvbGlvLiBlbmRfYmxrIGlzIGluY2x1c2l2ZS5cbiAgKiBJZiBubyBkaXJ0eSBibG9jayBpcyBmb3VuZCwgdGhpcyB3aWxsIHJldHVybiBlbmRfYmxrICsgMS5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2lvbWFwLmggYi9pbmNsdWRlL2xpbnV4L2lvbWFwLmhcbmluZGV4IDU2YjQzZDU5NGU2ZTI5Li40MGFhMzQ3NmEzNTFkMiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvaW9tYXAuaFxuKysrIGIvaW5jbHVkZS9saW51eC9pb21hcC5oXG5AQCAtMzY1LDYgKzM2NSw3IEBAIHN0cnVjdCBmb2xpbyAqaW9tYXBfZ2V0X2ZvbGlvKHN0cnVjdCBpb21hcF9pdGVyICppdGVyLCBsb2ZmX3QgcG9zLCBzaXplX3QgbGVuKTtcbiBib29sIGlvbWFwX3JlbGVhc2VfZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbywgZ2ZwX3QgZ2ZwX2ZsYWdzKTtcbiB2b2lkIGlvbWFwX2ludmFsaWRhdGVfZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbywgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbik7XG4gYm9vbCBpb21hcF9kaXJ0eV9mb2xpbyhzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywgc3RydWN0IGZvbGlvICpmb2xpbyk7XG4rdm9pZCBpb21hcF9mb2xpb19tYXJrX3VwdG9kYXRlKHN0cnVjdCBmb2xpbyAqZm9saW8pO1xuIGludCBpb21hcF9maWxlX3Vuc2hhcmUoc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IHBvcywgbG9mZl90IGxlbixcbiBcdFx0Y29uc3Qgc3RydWN0IGlvbWFwX29wcyAqb3BzLFxuIFx0XHRjb25zdCBzdHJ1Y3QgaW9tYXBfd3JpdGVfb3BzICp3cml0ZV9vcHMpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMDg6NDc6MTguODA0OTA0MTg5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODA5NjEyODg5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBGVVNFL0lPTUFQIFBhdGNoIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIEkndmUgZ290IGEgcGF0Y2ggaW4gZnJvbnQgb2YgbWUgdGhhdCB0b3VjaGVzIHNvbWUgcHJldHR5IGZ1bmRhbWVudGFsIGFyZWFzOiBgZnMvZnVzZS9maWxlLmNgLCBgZnMvZnVzZS9ub3RpZnkuY2AsIGBmcy9pb21hcC9idWZmZXJlZC1pby5jYCwgYW5kIGBpbmNsdWRlL2xpbnV4L2lvbWFwLmhgLiBJbW1lZGlhdGVseSwgbXkgc3BpZGV5LXNlbnNlIGlzIHRpbmdsaW5nLiBUaGlzIGlzbid0IGp1c3QgYSBtaW5vciB0d2Vhazsgd2UncmUgdGFsa2luZyBhYm91dCBjb3JlIEZVU0UgYW5kIElPTUFQIGxvZ2ljLCBhbmQgdGhhdCdzICphbHdheXMqIHdvcnRoIGEgY2xvc2VyIGxvb2sgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUuXG5cbkVzc2VudGlhbGx5LCB0aGUgcGF0Y2ggaW50cm9kdWNlcyB0aGlzIG5ldyBgaW9tYXBfZm9saW9fbWFya191cHRvZGF0ZShzdHJ1Y3QgZm9saW8gKmZvbGlvKWAgZnVuY3Rpb24sIHdoaWNoIHNlZW1zIHRvIGNlbnRyYWxpemUgdGhlIG1hcmtpbmcgb2YgZm9saW9zIGFzIHVwLXRvLWRhdGUuIEl0J3MgY2FsbGluZyB0aGUgSU9NQVAtc3BlY2lmaWMgZnVuY3Rpb24gdG8gbWFyayB0aGUgZW50aXJlIGZvbGlvLCByZXBsYWNpbmcgdGhlIG1vcmUgZ2VuZXJpYyBgZm9saW9fbWFya191cHRvZGF0ZWAgY2FsbHMgaW4gYGZ1c2VfZmlsbF93cml0ZV9wYWdlc2AgYW5kIGBmdXNlX25vdGlmeV9zdG9yZWAuIE9uIHRvcCBvZiB0aGF0LCBpdCByZW1vdmVzIHNvbWUgZXhpc3RpbmcgZXJyb3IgaGFuZGxpbmcvc2hvcnQgd3JpdGUgaGFuZGxpbmcgZnJvbSBgZnVzZV9zZW5kX3dyaXRlX3BhZ2VzYCB3aGljaCBjbGVhcnMgdGhlIHVwLXRvLWRhdGUgZmxhZywgd2hpY2gsIGJ5IGl0c2VsZiwgaXMgaW50ZXJlc3RpbmcuIFRoaXMgbG9va3MgbGlrZSBhIHNpbXBsaWZpY2F0aW9uIGFuZCBwb3RlbnRpYWwgb3B0aW1pemF0aW9uLCBidXQgdGhhdCBhbHdheXMgaW50cm9kdWNlcyBhIG5ldyB2ZWN0b3IgZm9yIGF0dGFjay5cblxuTXkgaW5pdGlhbCBndXQgZmVlbGluZyBpcyB0aGF0IHRoaXMgKmlzKiBmdXp6YWJsZSwgYW5kICpzaG91bGQqIGJlIGZ1enplZCwgYXMgdGhlcmUncyBhIGdvb2QgcHJvYmFiaWxpdHkgdGhhdCB0aGVyZSBhcmUgZnVuY3Rpb25hbCBhcmVhcywgYW5kIHRoYXQgdGhlc2UgYXJlYXMgYXJlIHJlYWNoYWJsZSwgYW5kIHRoZSBjaGFuZ2VzIGFyZSBzaWduaWZpY2FudCBlbm91Z2ggdG8gd2FycmFudCBpbnZlc3RpZ2F0aW9uLlxuXG5TcGVjaWZpY2FsbHksIEknbGwgd2FudCB0byBmb2N1cyBvbjogYGZ1c2Vfc2VuZF93cml0ZV9wYWdlc2AsIGBmdXNlX2ZpbGxfd3JpdGVfcGFnZXNgLCBgZnVzZV9ub3RpZnlfc3RvcmVgLCBhbmQgbm93LCBjcml0aWNhbGx5LCB0aGUgbmV3IGBpb21hcF9mb2xpb19tYXJrX3VwdG9kYXRlYCBmdW5jdGlvbi4gVGhlc2UgYXJlIHRoZSBrZXkgc3ltYm9scyBpbXBhY3RlZCBieSB0aGUgcGF0Y2guXG5cbk5vdywgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gYnVpbGRpbmcgdGhpcyB3aXRoIHRoZSByaWdodCBjb25maWd1cmF0aW9ucy4gQ2xlYXJseSwgYEZVU0VfRlNgIGlzIHJlcXVpcmVkLiBJJ2xsIGFsc28gbmVlZCBgRlNfSU9NQVBgLiBTaW5jZSBJT01BUCBpcyBvZnRlbiBlbmFibGVkIGFzIGEgZGVwZW5kZW5jeSBvZiBvdGhlciBmaWxlc3lzdGVtcywgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IHRoaXMgaXMgYSBjb25maWd1cmFibGUgb3B0aW9uLlxuXG5JJ2xsIGNoZWNrIHRoZSBgZnMvZnVzZS9LY29uZmlnYCBhbmQgYGZzL2lvbWFwL0tjb25maWdgIGZpbGVzIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLiBUaGUgc29vbmVyIEkgYnVpbGQgdGhlIGZ1enppbmcgYnVpbGQsIHRoZSBzb29uZXIgSSBjYW4gc3RhcnQgYWN0dWFsbHkgZGlnZ2luZyBpbnRvIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxMzIsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMDQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQwODo0NzoyNi45MDEwMzU4NjdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTc5NjUwMzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEZVU0VfRlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZnVzZS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2Z1c2UvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmZzL2Z1c2UvS2NvbmZpZzoyOmNvbmZpZyBGVVNFX0ZTXFxuZnMvZnVzZS9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkZVU0UgKEZpbGVzeXN0ZW0gaW4gVXNlcnNwYWNlKSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQwODo0NzoyNi45OTkwMjAzM1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1MDMxNTEzMzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgYSBQb3RlbnRpYWwgSS9PIE1hcHBpbmcgSXNzdWUqKlxuXG5BbHJpZ2h0LCB0aGUgdXNlcidzIHByb2JhYmx5IGVuY291bnRlcmluZyBhIHByb2JsZW0gcmVsYXRlZCB0byBmaWxlIEkvTyBtYXBwaW5nLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gZGl2ZSBpbnRvIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBmaWxlcywgc3BlY2lmaWNhbGx5IGFueXRoaW5nIGRlYWxpbmcgd2l0aCBJL08gbWFwcGluZy4gTGV0J3Mgc2VlLi4uIGEgZ29vZCBzdGFydGluZyBwb2ludCB3b3VsZCBiZSBgZnMvaW9tYXAvS2NvbmZpZ2Agb3Igc29tZXRoaW5nIHNpbWlsYXIgd2l0aGluIHRoZSBmaWxlIHN5c3RlbSBjb3JlLiBUaGF0J3MgdXN1YWxseSB3aGVyZSB0aGUga25vYnMgYW5kIGZlYXR1cmVzIHJlbGF0ZWQgdG8gaG93IGZpbGUgc3lzdGVtcyBoYW5kbGUgZGlyZWN0IEkvTywgYnVmZmVyZWQgSS9PLCBhbmQgcmVsYXRlZCBvcHRpbWl6YXRpb25zIGFyZSBkZWZpbmVkLiBDaGFuY2VzIGFyZSwgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgZG9jdW1lbnRlZCB0aGVyZSwgYWxvbmdzaWRlIHRoZSBkZXBlbmRlbmNpZXMgdGhhdCBpbXBhY3QgdGhlaXIgYXZhaWxhYmlsaXR5IG9yIGJlaGF2aW9yLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIGRpZmZlcmVudCBzZXR0aW5ncyB0byBkaWFnbm9zZSB0aGUgdXNlcidzIGlzc3VlIGVmZmVjdGl2ZWx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDcxLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMDg6NDc6MzAuNTAyMTc0MTU3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk4NDg4NTUyLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgRlNfSU9NQVBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvaW9tYXAvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMDg6NDc6MzAuNjAwNjczNTA5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA3NzA0OTQ3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGhpczpcblxuKipMb2NhdGluZyB0aGUgRGVmaW5pdGlvbiBvZiBgRlNfSU9NQVBgKipcblxuQWxyaWdodCwgc28gSSBuZWVkIHRvIGZpbmQgdGhlIGRlZmluaXRpb24gb2YgYEZTX0lPTUFQYC4gVGhpcyBpcyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgc3RhcnRpbmcgcG9pbnQuIEkgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBrbm93aW5nIHdoZXJlIHRoaXMgcGFydGljdWxhciBtYWNybyBvciBzeW1ib2wgaXMgZGVmaW5lZC4gSXMgaXQgaW4gdGhlIGtlcm5lbCBoZWFkZXJzLCBpbiBhIHNwZWNpZmljIGxpYnJhcnksIG9yIG1heWJlIGV2ZW4gaW4gYSB1c2Vyc3BhY2UgaW5jbHVkZSBmaWxlPyBJdCBjb3VsZCBiZSBhbnl3aGVyZSwgcmVhbGx5LiBCdXQgdG8gZWZmZWN0aXZlbHkgd29yayB3aXRoIG9yIGFuYWx5emUgYW55dGhpbmcgcmVsYXRlZCB0byBgRlNfSU9NQVBgLCBsb2NhdGluZyBpdHMgZGVjbGFyYXRpb24gaXMgYWJzb2x1dGVseSBlc3NlbnRpYWwuIFRoYXQncyBteSBpbml0aWFsIGdvYWwuIEtub3dpbmcgdGhlIGRlZmluaXRpb24gaXMgdGhlIGZvdW5kYXRpb24gZm9yIHVuZGVyc3RhbmRpbmcgaXRzIHB1cnBvc2UgYW5kIGhvdyBpdCdzIHVzZWQgd2l0aGluIGEgc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzExLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMDg6NDc6MzMuNjc3NzI1Mzc3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxMTMyMDkxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgRlNfSU9NQVBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9LY29uZmlnPTEyPWNvbmZpZyBWQUxJREFURV9GU19QQVJTRVJcXG4tLVxcbmZzL0tjb25maWctMTctXFxuZnMvS2NvbmZpZzoxODpjb25maWcgRlNfSU9NQVBcXG5mcy9LY29uZmlnLTE5LVxcdGJvb2xcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMDg6NDc6MzQuMDg5MDU2NzA2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njg3MDIxNTk1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGVVNFIFdyaXRlIFBhdGggQW5hbHlzaXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsIGBGU19JT01BUGAgaXMgYSBib29sZWFuLiBVc3VhbGx5LCBJIHNlZSBvdGhlciBmaWxlc3lzdGVtcyBzZXR0aW5nIHRoaXMsIHNvIGxldCdzIGNoZWNrIGZvciBvdGhlciBjb25maWdzLiBUaGUgcHJpbWFyeSByZWxldmFudCBvbmUgaGVyZSBzZWVtcyB0byBiZSBgRlVTRV9GU2AuXG5cbkFscmlnaHQsIGxldCdzIHplcm8gaW4gb24gdGhlIGtleSBzeW1ib2xzIGludm9sdmVkLiBJIHNlZSBgZnVzZV9zZW5kX3dyaXRlX3BhZ2VzYCwgYGZ1c2VfZmlsbF93cml0ZV9wYWdlc2AsIGBmdXNlX25vdGlmeV9zdG9yZWAsIGFuZCBgaW9tYXBfZm9saW9fbWFya191cHRvZGF0ZWAgYXMgdGhlIGtleSBmdW5jdGlvbnMgdG8gd2F0Y2guIEkgc2hvdWxkIGZpZ3VyZSBvdXQgaWYgZWFjaCBhcmUgc3RhdGljIG9yIGV4cG9ydGVkLiBcblxuYGZ1c2Vfc2VuZF93cml0ZV9wYWdlc2AgYW5kIGBmdXNlX2ZpbGxfd3JpdGVfcGFnZXNgIGFyZSBzdGF0aWMgYW5kIGZvdW5kIGluIGBmcy9mdXNlL2ZpbGUuY2AsIGFuZCBgZnVzZV9ub3RpZnlfc3RvcmVgIGlzIGFsc28gc3RhdGljIGluIGBmcy9mdXNlL25vdGlmeS5jYCwgd2hpbGUgYGlvbWFwX2ZvbGlvX21hcmtfdXB0b2RhdGVgIGlzIGV4cG9ydGVkIGZyb20gYGZzL2lvbWFwL2J1ZmZlcmVkLWlvLmNgLlxuXG5Ob3csIGlzIGBmdXNlX3NlbmRfd3JpdGVfcGFnZXNgIGEgaG90IHBhdGg/IEdpdmVuIGl0cyBuYW1lLCBpdCdzIGNhbGxlZCBkdXJpbmcgd3JpdGUgcGFnZXMsIGFuZCB0aGF0J3MgYW4gb2J2aW91cyBjYW5kaWRhdGUgZm9yIGZ1enppbmcgaW4gRlVTRSEgR29vZC5cblxuTGV0J3MgcXVpY2tseSB2ZXJpZnkgdGhlIG1ldGFkYXRhLiBZZXAsIGBXb3J0aEZ1enppbmdgIGlzIGB0cnVlYC4gVGhlIHJlYXNvbmluZyBtYWtlcyBwZXJmZWN0IHNlbnNlOiBpdCB0b3VjaGVzIHBhZ2UgdXB0b2RhdGUgaGFuZGxpbmcgaW4gRlVTRSB3cml0ZSBhbmQgbm90aWZpY2F0aW9uIHBhdGhzLCBhbmQgaW50cm9kdWNlcyBhbiBpb21hcCBoZWxwZXIsIGFuZCBhbGwgdGhlc2UgdGhpbmdzIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdXNlci1zcGFjZSBjYW4gdHJpZ2dlciB2aWEgRlVTRS4gVGhlIGBGb2N1c1N5bWJvbHNgIGFyZSBzcG90IG9uLCBhbmQgYEZVU0VfRlNgIGlzIHRoZSByZXF1aXJlZCBgRW5hYmxlQ29uZmlnYC5cblxuSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIEknbGwgZG91YmxlLWNoZWNrIGlmIGBGU19JT01BUGAgcmVxdWlyZXMgZXhwbGljaXQgZW5hYmxpbmcuIFNpbmNlIGl0J3MgYSBgYm9vbGAgd2l0aG91dCBhIHByb21wdCwgaXQncyBzZWxlY3RlZCBieSBvdGhlciBjb25maWdzLCBub3QgZGlyZWN0bHkgZW5hYmxlZCB2aWEgbWVudWNvbmZpZy4gU28gZG9lcyBGVVNFIHNlbGVjdCBpdD8gTGV0J3MgY2hlY2sgYGZzL2Z1c2UvS2NvbmZpZ2AgdG8gYmUgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDU3NywiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQwODo0Nzo0MC45NTkyNzYzMzJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NzI2NzExNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWxlY3QgRlNfSU9NQVBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZnVzZS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2Z1c2UvS2NvbmZpZz0yPWNvbmZpZyBGVVNFX0ZTXFxuLS1cXG5mcy9mdXNlL0tjb25maWctNC1cXHRzZWxlY3QgRlNfUE9TSVhfQUNMXFxuZnMvZnVzZS9LY29uZmlnOjU6XFx0c2VsZWN0IEZTX0lPTUFQXFxuZnMvZnVzZS9LY29uZmlnLTYtXFx0aGVscFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQwODo0Nzo0MS4xNTY1NTMzNjdaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY0NDkzNjUwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGluIHRoZSBmaXJzdCBwZXJzb24sIGFzc3VtaW5nIHRoZSBjb250ZXh0IGlzIGZpbGUgc3lzdGVtIGRlc2lnbiBhbmQgdGhlIHVzZXIgaXMgYW4gZXhwZXJ0OlxuXG4qKkZpbGUgU3lzdGVtIEZlYXR1cmUgRW5hYmxlbWVudCoqXG5cblJpZ2h0LCBzbyBgRlVTRV9GU2AgYXV0b21hdGljYWxseSB0cmlnZ2VycyB0aGUgdXNlIG9mIGBGU19JT01BUGAuIFRoYXQncyBlZmZpY2llbnQuIEl0IG1ha2VzIHRoZSBkZXBlbmRlbmN5IGNsZWFyLiBFc3NlbnRpYWxseSwgYnkgZW5hYmxpbmcgYEZVU0VfRlNgLCBJJ20gaW1wbGljaXRseSBhY3RpdmF0aW5nIHRoZSBJL08gbWFwcGluZyBzdHJhdGVneS4gVGhhdCdzIGdvb2Q7IGl0IHNpbXBsaWZpZXMgdGhlIGNvbmZpZ3VyYXRpb24gYW5kIGF2b2lkcyByZWR1bmRhbmN5IGluIGZlYXR1cmUgc2V0dGluZ3MuIE5vIG5lZWQgdG8gZXhwbGljaXRseSBlbmFibGUgYm90aC4gSXQncyBhIG5pY2UsIGNsZWFuIGFyY2hpdGVjdHVyYWwgZGVzaWduIGNob2ljZS5cblxuVGhlcmVmb3JlLCB0aGUgbmV4dCBzdGVwIGlzIHN0cmFpZ2h0Zm9yd2FyZDogSSB3aWxsIGNvbmZpZ3VyZSB0aGUgcmVsZXZhbnQgc2V0dGluZ3MgYmFzZWQgb24gdGhpcyBuZXcgdW5kZXJzdGFuZGluZyBhbmQgc2V0IHRoZSByZXN1bHRzIGFjY29yZGluZ2x5LCBrbm93aW5nIHRoYXQgZXZlcnl0aGluZyBpcyBhcyBpdCBzaG91bGQgYmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1NTksIk91dHB1dFRva2VucyI6MTIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMDg6NDc6NDQuODAxNDkyNzc2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcxNDY5NDUzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJGVVNFX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZnVzZV9zZW5kX3dyaXRlX3BhZ2VzXCIsXG4gICAgXCJmdXNlX2ZpbGxfd3JpdGVfcGFnZXNcIixcbiAgICBcImZ1c2Vfbm90aWZ5X3N0b3JlXCIsXG4gICAgXCJpb21hcF9mb2xpb19tYXJrX3VwdG9kYXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgcGFnZSB1cHRvZGF0ZSBoYW5kbGluZyBpbiBGVVNFIHdyaXRlIGFuZCBub3RpZnkgcGF0aHMsIGFuZCBpbnRyb2R1Y2VzIGEgbmV3IGlvbWFwIGhlbHBlci4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiBmaWxlc3lzdGVtIGxvZ2ljIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSB1c2VyLXNwYWNlIHZpYSBGVVNFLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkZVU0VfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmdXNlX3NlbmRfd3JpdGVfcGFnZXNcIixcbiAgICBcImZ1c2VfZmlsbF93cml0ZV9wYWdlc1wiLFxuICAgIFwiZnVzZV9ub3RpZnlfc3RvcmVcIixcbiAgICBcImlvbWFwX2ZvbGlvX21hcmtfdXB0b2RhdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBwYWdlIHVwdG9kYXRlIGhhbmRsaW5nIGluIEZVU0Ugd3JpdGUgYW5kIG5vdGlmeSBwYXRocywgYW5kIGludHJvZHVjZXMgYSBuZXcgaW9tYXAgaGVscGVyLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIGZpbGVzeXN0ZW0gbG9naWMgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IHVzZXItc3BhY2UgdmlhIEZVU0UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow98zh9[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-08 08:27:56 +0000 UTC FinishedAt: 2026-07-08 08:47:47 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "FUSE_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "FUSE_FS" ], "series_id": "e6af2591-e1ae-4c7e-888e-26772f40678a" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "fuse_send_write_pages", "fuse_fill_write_pages", "fuse_notify_store", "iomap_folio_mark_uptodate" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDA4OjQ3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0ZVU0VfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtmdXNlX3NlbmRfd3JpdGVfcGFnZXMmIzM0OywKICAgICYjMzQ7ZnVzZV9maWxsX3dyaXRlX3BhZ2VzJiMzNDssCiAgICAmIzM0O2Z1c2Vfbm90aWZ5X3N0b3JlJiMzNDssCiAgICAmIzM0O2lvbWFwX2ZvbGlvX21hcmtfdXB0b2RhdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgcGFnZSB1cHRvZGF0ZSBoYW5kbGluZyBpbiBGVVNFIHdyaXRlIGFuZCBub3RpZnkgcGF0aHMsIGFuZCBpbnRyb2R1Y2VzIGEgbmV3IGlvbWFwIGhlbHBlci4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiBmaWxlc3lzdGVtIGxvZ2ljIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSB1c2VyLXNwYWNlIHZpYSBGVVNFLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDA4OjQ3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZjUxOTM3YTU0NTdhN2YxYTU4OWMxZjg5N2QyMDAwMDQ0Mjk5YTg0ZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDggMDg6NDc6MTYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvZnVzZS9maWxlLmMgYi9mcy9mdXNlL2ZpbGUuY1xuaW5kZXggY2VhZGE3NTMxMGI4ODAuLmRhNTg1OWU4MTU5ZDRmIDEwMDY0NFxuLS0tIGEvZnMvZnVzZS9maWxlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2Z1c2UvZmlsZS5jXG5AQCAtMTIxOSw4ICYjNDM7MTIxOSw3IEBAIHN0YXRpYyBzc2l6ZV90IGZ1c2Vfc2VuZF93cml0ZV9wYWdlcyhzdHJ1Y3QgZnVzZV9pb19hcmdzICppYSxcbiBcdHN0cnVjdCBmaWxlICpmaWxlID0gaW9jYi1cdTAwM2VraV9maWxwO1xuIFx0c3RydWN0IGZ1c2VfZmlsZSAqZmYgPSBmaWxlLVx1MDAzZXByaXZhdGVfZGF0YTtcbiBcdHN0cnVjdCBmdXNlX21vdW50ICpmbSA9IGZmLVx1MDAzZWZtO1xuLVx0dW5zaWduZWQgaW50IG9mZnNldCwgaTtcbi1cdGJvb2wgc2hvcnRfd3JpdGU7XG4mIzQzO1x0dW5zaWduZWQgaW50IGk7XG4gXHRpbnQgZXJyO1xuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYXAtXHUwMDNlbnVtX2ZvbGlvczsgaSYjNDM7JiM0MzspXG5AQCAtMTIzNSwyNCAmIzQzOzEyMzQsOSBAQCBzdGF0aWMgc3NpemVfdCBmdXNlX3NlbmRfd3JpdGVfcGFnZXMoc3RydWN0IGZ1c2VfaW9fYXJncyAqaWEsXG4gXHRpZiAoIWVyciBcdTAwMjZcdTAwMjYgaWEtXHUwMDNld3JpdGUub3V0LnNpemUgXHUwMDNlIGNvdW50KVxuIFx0XHRlcnIgPSAtRUlPO1xuIFxuLVx0c2hvcnRfd3JpdGUgPSBpYS1cdTAwM2V3cml0ZS5vdXQuc2l6ZSBcdTAwM2MgY291bnQ7XG4tXHRvZmZzZXQgPSBhcC1cdTAwM2VkZXNjc1swXS5vZmZzZXQ7XG4tXHRjb3VudCA9IGlhLVx1MDAzZXdyaXRlLm91dC5zaXplO1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYXAtXHUwMDNlbnVtX2ZvbGlvczsgaSYjNDM7JiM0MzspIHtcbiBcdFx0c3RydWN0IGZvbGlvICpmb2xpbyA9IGFwLVx1MDAzZWZvbGlvc1tpXTtcbiBcbi1cdFx0aWYgKGVycikge1xuLVx0XHRcdGZvbGlvX2NsZWFyX3VwdG9kYXRlKGZvbGlvKTtcbi1cdFx0fSBlbHNlIHtcbi1cdFx0XHRpZiAoY291bnQgXHUwMDNlPSBmb2xpb19zaXplKGZvbGlvKSAtIG9mZnNldClcbi1cdFx0XHRcdGNvdW50IC09IGZvbGlvX3NpemUoZm9saW8pIC0gb2Zmc2V0O1xuLVx0XHRcdGVsc2Uge1xuLVx0XHRcdFx0aWYgKHNob3J0X3dyaXRlKVxuLVx0XHRcdFx0XHRmb2xpb19jbGVhcl91cHRvZGF0ZShmb2xpbyk7XG4tXHRcdFx0XHRjb3VudCA9IDA7XG4tXHRcdFx0fVxuLVx0XHRcdG9mZnNldCA9IDA7XG4tXHRcdH1cbiBcdFx0aWYgKGlhLVx1MDAzZXdyaXRlLmZvbGlvX2xvY2tlZCBcdTAwMjZcdTAwMjYgKGkgPT0gYXAtXHUwMDNlbnVtX2ZvbGlvcyAtIDEpKVxuIFx0XHRcdGZvbGlvX3VubG9jayhmb2xpbyk7XG4gXHRcdGZvbGlvX3B1dChmb2xpbyk7XG5AQCAtMTMyNyw3ICYjNDM7MTMxMSw3IEBAIHN0YXRpYyBzc2l6ZV90IGZ1c2VfZmlsbF93cml0ZV9wYWdlcyhzdHJ1Y3QgZnVzZV9pb19hcmdzICppYSxcbiBcbiBcdFx0LyogSWYgd2UgY29waWVkIGZ1bGwgZm9saW8sIG1hcmsgaXQgdXB0b2RhdGUgKi9cbiBcdFx0aWYgKHRtcCA9PSBmb2xpb19zaXplKGZvbGlvKSlcbi1cdFx0XHRmb2xpb19tYXJrX3VwdG9kYXRlKGZvbGlvKTtcbiYjNDM7XHRcdFx0aW9tYXBfZm9saW9fbWFya191cHRvZGF0ZShmb2xpbyk7XG4gXG4gXHRcdGlmIChmb2xpb190ZXN0X3VwdG9kYXRlKGZvbGlvKSkge1xuIFx0XHRcdGZvbGlvX3VubG9jayhmb2xpbyk7XG5kaWZmIC0tZ2l0IGEvZnMvZnVzZS9ub3RpZnkuYyBiL2ZzL2Z1c2Uvbm90aWZ5LmNcbmluZGV4IDI5NTc4MTA0YWU2Y2Q2Li4xYmE3NjM3MDVkOTExOSAxMDA2NDRcbi0tLSBhL2ZzL2Z1c2Uvbm90aWZ5LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2Z1c2Uvbm90aWZ5LmNcbkBAIC0yLDYgJiM0MzsyLDggQEBcbiBcbiAjaW5jbHVkZSBcJiMzNDtkZXYuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O2Z1c2VfaS5oXCYjMzQ7XG4mIzQzO1xuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9pb21hcC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcGFnZW1hcC5oXHUwMDNlXG4gXG4gc3RhdGljIGludCBmdXNlX25vdGlmeV9wb2xsKHN0cnVjdCBmdXNlX2Nvbm4gKmZjLCB1bnNpZ25lZCBpbnQgc2l6ZSxcbkBAIC0xOTIsNyAmIzQzOzE5NCw3IEBAIHN0YXRpYyBpbnQgZnVzZV9ub3RpZnlfc3RvcmUoc3RydWN0IGZ1c2VfY29ubiAqZmMsIHVuc2lnbmVkIGludCBzaXplLFxuIFx0XHRpZiAoIWZvbGlvX3Rlc3RfdXB0b2RhdGUoZm9saW8pIFx1MDAyNlx1MDAyNiAhZXJyIFx1MDAyNlx1MDAyNiBmb2xpb19vZmZzZXQgPT0gMCBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIChucl9ieXRlcyA9PSBmb2xpb19zaXplKGZvbGlvKSB8fCBmaWxlX3NpemUgPT0gZW5kKSkge1xuIFx0XHRcdGZvbGlvX3plcm9fc2VnbWVudChmb2xpbywgbnJfYnl0ZXMsIGZvbGlvX3NpemUoZm9saW8pKTtcbi1cdFx0XHRmb2xpb19tYXJrX3VwdG9kYXRlKGZvbGlvKTtcbiYjNDM7XHRcdFx0aW9tYXBfZm9saW9fbWFya191cHRvZGF0ZShmb2xpbyk7XG4gXHRcdH1cbiBcdFx0Zm9saW9fdW5sb2NrKGZvbGlvKTtcbiBcdFx0Zm9saW9fcHV0KGZvbGlvKTtcbmRpZmYgLS1naXQgYS9mcy9pb21hcC9idWZmZXJlZC1pby5jIGIvZnMvaW9tYXAvYnVmZmVyZWQtaW8uY1xuaW5kZXggMjc2NzIwYmMxOGRjNTIuLmFmNDE1MjkzZTI2NTFmIDEwMDY0NFxuLS0tIGEvZnMvaW9tYXAvYnVmZmVyZWQtaW8uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvaW9tYXAvYnVmZmVyZWQtaW8uY1xuQEAgLTEwNSw2ICYjNDM7MTA1LDEyIEBAIHN0YXRpYyB2b2lkIGlvbWFwX3NldF9yYW5nZV91cHRvZGF0ZShzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzaXplX3Qgb2ZmLFxuIFx0XHRmb2xpb19tYXJrX3VwdG9kYXRlKGZvbGlvKTtcbiB9XG4gXG4mIzQzO3ZvaWQgaW9tYXBfZm9saW9fbWFya191cHRvZGF0ZShzdHJ1Y3QgZm9saW8gKmZvbGlvKVxuJiM0Mzt7XG4mIzQzO1x0aW9tYXBfc2V0X3JhbmdlX3VwdG9kYXRlKGZvbGlvLCAwLCBmb2xpb19zaXplKGZvbGlvKSk7XG4mIzQzO31cbiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwoaW9tYXBfZm9saW9fbWFya191cHRvZGF0ZSk7XG4mIzQzO1xuIC8qXG4gICogRmluZCB0aGUgbmV4dCBkaXJ0eSBibG9jayBpbiB0aGUgZm9saW8uIGVuZF9ibGsgaXMgaW5jbHVzaXZlLlxuICAqIElmIG5vIGRpcnR5IGJsb2NrIGlzIGZvdW5kLCB0aGlzIHdpbGwgcmV0dXJuIGVuZF9ibGsgJiM0MzsgMS5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2lvbWFwLmggYi9pbmNsdWRlL2xpbnV4L2lvbWFwLmhcbmluZGV4IDU2YjQzZDU5NGU2ZTI5Li40MGFhMzQ3NmEzNTFkMiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvaW9tYXAuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9pb21hcC5oXG5AQCAtMzY1LDYgJiM0MzszNjUsNyBAQCBzdHJ1Y3QgZm9saW8gKmlvbWFwX2dldF9mb2xpbyhzdHJ1Y3QgaW9tYXBfaXRlciAqaXRlciwgbG9mZl90IHBvcywgc2l6ZV90IGxlbik7XG4gYm9vbCBpb21hcF9yZWxlYXNlX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8sIGdmcF90IGdmcF9mbGFncyk7XG4gdm9pZCBpb21hcF9pbnZhbGlkYXRlX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW4pO1xuIGJvb2wgaW9tYXBfZGlydHlfZm9saW8oc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsIHN0cnVjdCBmb2xpbyAqZm9saW8pO1xuJiM0Mzt2b2lkIGlvbWFwX2ZvbGlvX21hcmtfdXB0b2RhdGUoc3RydWN0IGZvbGlvICpmb2xpbyk7XG4gaW50IGlvbWFwX2ZpbGVfdW5zaGFyZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgcG9zLCBsb2ZmX3QgbGVuLFxuIFx0XHRjb25zdCBzdHJ1Y3QgaW9tYXBfb3BzICpvcHMsXG4gXHRcdGNvbnN0IHN0cnVjdCBpb21hcF93cml0ZV9vcHMgKndyaXRlX29wcyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMDg6NDc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RlVTRV9GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Z1c2Vfc2VuZF93cml0ZV9wYWdlcyYjMzQ7LAogICAgJiMzNDtmdXNlX2ZpbGxfd3JpdGVfcGFnZXMmIzM0OywKICAgICYjMzQ7ZnVzZV9ub3RpZnlfc3RvcmUmIzM0OywKICAgICYjMzQ7aW9tYXBfZm9saW9fbWFya191cHRvZGF0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBwYWdlIHVwdG9kYXRlIGhhbmRsaW5nIGluIEZVU0Ugd3JpdGUgYW5kIG5vdGlmeSBwYXRocywgYW5kIGludHJvZHVjZXMgYSBuZXcgaW9tYXAgaGVscGVyLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIGZpbGVzeXN0ZW0gbG9naWMgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IHVzZXItc3BhY2UgdmlhIEZVU0UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGY1MTkzN2E1NDU3YTdmMWE1ODljMWY4OTdkMjAwMDA0NDI5OWE4NGQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCA4IDA4OjQ3OjE2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZnMvZnVzZS9maWxlLmMgYi9mcy9mdXNlL2ZpbGUuYwppbmRleCBjZWFkYTc1MzEwYjg4MC4uZGE1ODU5ZTgxNTlkNGYgMTAwNjQ0Ci0tLSBhL2ZzL2Z1c2UvZmlsZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2Z1c2UvZmlsZS5jCkBAIC0xMjE5LDggJiM0MzsxMjE5LDcgQEAgc3RhdGljIHNzaXplX3QgZnVzZV9zZW5kX3dyaXRlX3BhZ2VzKHN0cnVjdCBmdXNlX2lvX2FyZ3MgKmlhLAogCXN0cnVjdCBmaWxlICpmaWxlID0gaW9jYi0mZ3Q7a2lfZmlscDsKIAlzdHJ1Y3QgZnVzZV9maWxlICpmZiA9IGZpbGUtJmd0O3ByaXZhdGVfZGF0YTsKIAlzdHJ1Y3QgZnVzZV9tb3VudCAqZm0gPSBmZi0mZ3Q7Zm07Ci0JdW5zaWduZWQgaW50IG9mZnNldCwgaTsKLQlib29sIHNob3J0X3dyaXRlOwomIzQzOwl1bnNpZ25lZCBpbnQgaTsKIAlpbnQgZXJyOwogCiAJZm9yIChpID0gMDsgaSAmbHQ7IGFwLSZndDtudW1fZm9saW9zOyBpJiM0MzsmIzQzOykKQEAgLTEyMzUsMjQgJiM0MzsxMjM0LDkgQEAgc3RhdGljIHNzaXplX3QgZnVzZV9zZW5kX3dyaXRlX3BhZ2VzKHN0cnVjdCBmdXNlX2lvX2FyZ3MgKmlhLAogCWlmICghZXJyICZhbXA7JmFtcDsgaWEtJmd0O3dyaXRlLm91dC5zaXplICZndDsgY291bnQpCiAJCWVyciA9IC1FSU87CiAKLQlzaG9ydF93cml0ZSA9IGlhLSZndDt3cml0ZS5vdXQuc2l6ZSAmbHQ7IGNvdW50OwotCW9mZnNldCA9IGFwLSZndDtkZXNjc1swXS5vZmZzZXQ7Ci0JY291bnQgPSBpYS0mZ3Q7d3JpdGUub3V0LnNpemU7CiAJZm9yIChpID0gMDsgaSAmbHQ7IGFwLSZndDtudW1fZm9saW9zOyBpJiM0MzsmIzQzOykgewogCQlzdHJ1Y3QgZm9saW8gKmZvbGlvID0gYXAtJmd0O2ZvbGlvc1tpXTsKIAotCQlpZiAoZXJyKSB7Ci0JCQlmb2xpb19jbGVhcl91cHRvZGF0ZShmb2xpbyk7Ci0JCX0gZWxzZSB7Ci0JCQlpZiAoY291bnQgJmd0Oz0gZm9saW9fc2l6ZShmb2xpbykgLSBvZmZzZXQpCi0JCQkJY291bnQgLT0gZm9saW9fc2l6ZShmb2xpbykgLSBvZmZzZXQ7Ci0JCQllbHNlIHsKLQkJCQlpZiAoc2hvcnRfd3JpdGUpCi0JCQkJCWZvbGlvX2NsZWFyX3VwdG9kYXRlKGZvbGlvKTsKLQkJCQljb3VudCA9IDA7Ci0JCQl9Ci0JCQlvZmZzZXQgPSAwOwotCQl9CiAJCWlmIChpYS0mZ3Q7d3JpdGUuZm9saW9fbG9ja2VkICZhbXA7JmFtcDsgKGkgPT0gYXAtJmd0O251bV9mb2xpb3MgLSAxKSkKIAkJCWZvbGlvX3VubG9jayhmb2xpbyk7CiAJCWZvbGlvX3B1dChmb2xpbyk7CkBAIC0xMzI3LDcgJiM0MzsxMzExLDcgQEAgc3RhdGljIHNzaXplX3QgZnVzZV9maWxsX3dyaXRlX3BhZ2VzKHN0cnVjdCBmdXNlX2lvX2FyZ3MgKmlhLAogCiAJCS8qIElmIHdlIGNvcGllZCBmdWxsIGZvbGlvLCBtYXJrIGl0IHVwdG9kYXRlICovCiAJCWlmICh0bXAgPT0gZm9saW9fc2l6ZShmb2xpbykpCi0JCQlmb2xpb19tYXJrX3VwdG9kYXRlKGZvbGlvKTsKJiM0MzsJCQlpb21hcF9mb2xpb19tYXJrX3VwdG9kYXRlKGZvbGlvKTsKIAogCQlpZiAoZm9saW9fdGVzdF91cHRvZGF0ZShmb2xpbykpIHsKIAkJCWZvbGlvX3VubG9jayhmb2xpbyk7CmRpZmYgLS1naXQgYS9mcy9mdXNlL25vdGlmeS5jIGIvZnMvZnVzZS9ub3RpZnkuYwppbmRleCAyOTU3ODEwNGFlNmNkNi4uMWJhNzYzNzA1ZDkxMTkgMTAwNjQ0Ci0tLSBhL2ZzL2Z1c2Uvbm90aWZ5LmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvZnVzZS9ub3RpZnkuYwpAQCAtMiw2ICYjNDM7Miw4IEBACiAKICNpbmNsdWRlICYjMzQ7ZGV2LmgmIzM0OwogI2luY2x1ZGUgJiMzNDtmdXNlX2kuaCYjMzQ7CiYjNDM7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2lvbWFwLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvcGFnZW1hcC5oJmd0OwogCiBzdGF0aWMgaW50IGZ1c2Vfbm90aWZ5X3BvbGwoc3RydWN0IGZ1c2VfY29ubiAqZmMsIHVuc2lnbmVkIGludCBzaXplLApAQCAtMTkyLDcgJiM0MzsxOTQsNyBAQCBzdGF0aWMgaW50IGZ1c2Vfbm90aWZ5X3N0b3JlKHN0cnVjdCBmdXNlX2Nvbm4gKmZjLCB1bnNpZ25lZCBpbnQgc2l6ZSwKIAkJaWYgKCFmb2xpb190ZXN0X3VwdG9kYXRlKGZvbGlvKSAmYW1wOyZhbXA7ICFlcnIgJmFtcDsmYW1wOyBmb2xpb19vZmZzZXQgPT0gMCAmYW1wOyZhbXA7CiAJCSAgICAobnJfYnl0ZXMgPT0gZm9saW9fc2l6ZShmb2xpbykgfHwgZmlsZV9zaXplID09IGVuZCkpIHsKIAkJCWZvbGlvX3plcm9fc2VnbWVudChmb2xpbywgbnJfYnl0ZXMsIGZvbGlvX3NpemUoZm9saW8pKTsKLQkJCWZvbGlvX21hcmtfdXB0b2RhdGUoZm9saW8pOwomIzQzOwkJCWlvbWFwX2ZvbGlvX21hcmtfdXB0b2RhdGUoZm9saW8pOwogCQl9CiAJCWZvbGlvX3VubG9jayhmb2xpbyk7CiAJCWZvbGlvX3B1dChmb2xpbyk7CmRpZmYgLS1naXQgYS9mcy9pb21hcC9idWZmZXJlZC1pby5jIGIvZnMvaW9tYXAvYnVmZmVyZWQtaW8uYwppbmRleCAyNzY3MjBiYzE4ZGM1Mi4uYWY0MTUyOTNlMjY1MWYgMTAwNjQ0Ci0tLSBhL2ZzL2lvbWFwL2J1ZmZlcmVkLWlvLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvaW9tYXAvYnVmZmVyZWQtaW8uYwpAQCAtMTA1LDYgJiM0MzsxMDUsMTIgQEAgc3RhdGljIHZvaWQgaW9tYXBfc2V0X3JhbmdlX3VwdG9kYXRlKHN0cnVjdCBmb2xpbyAqZm9saW8sIHNpemVfdCBvZmYsCiAJCWZvbGlvX21hcmtfdXB0b2RhdGUoZm9saW8pOwogfQogCiYjNDM7dm9pZCBpb21hcF9mb2xpb19tYXJrX3VwdG9kYXRlKHN0cnVjdCBmb2xpbyAqZm9saW8pCiYjNDM7ewomIzQzOwlpb21hcF9zZXRfcmFuZ2VfdXB0b2RhdGUoZm9saW8sIDAsIGZvbGlvX3NpemUoZm9saW8pKTsKJiM0Mzt9CiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwoaW9tYXBfZm9saW9fbWFya191cHRvZGF0ZSk7CiYjNDM7CiAvKgogICogRmluZCB0aGUgbmV4dCBkaXJ0eSBibG9jayBpbiB0aGUgZm9saW8uIGVuZF9ibGsgaXMgaW5jbHVzaXZlLgogICogSWYgbm8gZGlydHkgYmxvY2sgaXMgZm91bmQsIHRoaXMgd2lsbCByZXR1cm4gZW5kX2JsayAmIzQzOyAxLgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9pb21hcC5oIGIvaW5jbHVkZS9saW51eC9pb21hcC5oCmluZGV4IDU2YjQzZDU5NGU2ZTI5Li40MGFhMzQ3NmEzNTFkMiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9pb21hcC5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvaW9tYXAuaApAQCAtMzY1LDYgJiM0MzszNjUsNyBAQCBzdHJ1Y3QgZm9saW8gKmlvbWFwX2dldF9mb2xpbyhzdHJ1Y3QgaW9tYXBfaXRlciAqaXRlciwgbG9mZl90IHBvcywgc2l6ZV90IGxlbik7CiBib29sIGlvbWFwX3JlbGVhc2VfZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbywgZ2ZwX3QgZ2ZwX2ZsYWdzKTsKIHZvaWQgaW9tYXBfaW52YWxpZGF0ZV9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuKTsKIGJvb2wgaW9tYXBfZGlydHlfZm9saW8oc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsIHN0cnVjdCBmb2xpbyAqZm9saW8pOwomIzQzO3ZvaWQgaW9tYXBfZm9saW9fbWFya191cHRvZGF0ZShzdHJ1Y3QgZm9saW8gKmZvbGlvKTsKIGludCBpb21hcF9maWxlX3Vuc2hhcmUoc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IHBvcywgbG9mZl90IGxlbiwKIAkJY29uc3Qgc3RydWN0IGlvbWFwX29wcyAqb3BzLAogCQljb25zdCBzdHJ1Y3QgaW9tYXBfd3JpdGVfb3BzICp3cml0ZV9vcHMpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAwODo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTMyCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMzA0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEZVU0UvSU9NQVAgUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCBhIHBhdGNoIGluIGZyb250IG9mIG1lIHRoYXQgdG91Y2hlcyBzb21lIHByZXR0eSBmdW5kYW1lbnRhbCBhcmVhczogYGZzL2Z1c2UvZmlsZS5jYCwgYGZzL2Z1c2Uvbm90aWZ5LmNgLCBgZnMvaW9tYXAvYnVmZmVyZWQtaW8uY2AsIGFuZCBgaW5jbHVkZS9saW51eC9pb21hcC5oYC4gSW1tZWRpYXRlbHksIG15IHNwaWRleS1zZW5zZSBpcyB0aW5nbGluZy4gVGhpcyBpc24mIzM5O3QganVzdCBhIG1pbm9yIHR3ZWFrOyB3ZSYjMzk7cmUgdGFsa2luZyBhYm91dCBjb3JlIEZVU0UgYW5kIElPTUFQIGxvZ2ljLCBhbmQgdGhhdCYjMzk7cyAqYWx3YXlzKiB3b3J0aCBhIGNsb3NlciBsb29rIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLgoKRXNzZW50aWFsbHksIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIHRoaXMgbmV3IGBpb21hcF9mb2xpb19tYXJrX3VwdG9kYXRlKHN0cnVjdCBmb2xpbyAqZm9saW8pYCBmdW5jdGlvbiwgd2hpY2ggc2VlbXMgdG8gY2VudHJhbGl6ZSB0aGUgbWFya2luZyBvZiBmb2xpb3MgYXMgdXAtdG8tZGF0ZS4gSXQmIzM5O3MgY2FsbGluZyB0aGUgSU9NQVAtc3BlY2lmaWMgZnVuY3Rpb24gdG8gbWFyayB0aGUgZW50aXJlIGZvbGlvLCByZXBsYWNpbmcgdGhlIG1vcmUgZ2VuZXJpYyBgZm9saW9fbWFya191cHRvZGF0ZWAgY2FsbHMgaW4gYGZ1c2VfZmlsbF93cml0ZV9wYWdlc2AgYW5kIGBmdXNlX25vdGlmeV9zdG9yZWAuIE9uIHRvcCBvZiB0aGF0LCBpdCByZW1vdmVzIHNvbWUgZXhpc3RpbmcgZXJyb3IgaGFuZGxpbmcvc2hvcnQgd3JpdGUgaGFuZGxpbmcgZnJvbSBgZnVzZV9zZW5kX3dyaXRlX3BhZ2VzYCB3aGljaCBjbGVhcnMgdGhlIHVwLXRvLWRhdGUgZmxhZywgd2hpY2gsIGJ5IGl0c2VsZiwgaXMgaW50ZXJlc3RpbmcuIFRoaXMgbG9va3MgbGlrZSBhIHNpbXBsaWZpY2F0aW9uIGFuZCBwb3RlbnRpYWwgb3B0aW1pemF0aW9uLCBidXQgdGhhdCBhbHdheXMgaW50cm9kdWNlcyBhIG5ldyB2ZWN0b3IgZm9yIGF0dGFjay4KCk15IGluaXRpYWwgZ3V0IGZlZWxpbmcgaXMgdGhhdCB0aGlzICppcyogZnV6emFibGUsIGFuZCAqc2hvdWxkKiBiZSBmdXp6ZWQsIGFzIHRoZXJlJiMzOTtzIGEgZ29vZCBwcm9iYWJpbGl0eSB0aGF0IHRoZXJlIGFyZSBmdW5jdGlvbmFsIGFyZWFzLCBhbmQgdGhhdCB0aGVzZSBhcmVhcyBhcmUgcmVhY2hhYmxlLCBhbmQgdGhlIGNoYW5nZXMgYXJlIHNpZ25pZmljYW50IGVub3VnaCB0byB3YXJyYW50IGludmVzdGlnYXRpb24uCgpTcGVjaWZpY2FsbHksIEkmIzM5O2xsIHdhbnQgdG8gZm9jdXMgb246IGBmdXNlX3NlbmRfd3JpdGVfcGFnZXNgLCBgZnVzZV9maWxsX3dyaXRlX3BhZ2VzYCwgYGZ1c2Vfbm90aWZ5X3N0b3JlYCwgYW5kIG5vdywgY3JpdGljYWxseSwgdGhlIG5ldyBgaW9tYXBfZm9saW9fbWFya191cHRvZGF0ZWAgZnVuY3Rpb24uIFRoZXNlIGFyZSB0aGUga2V5IHN5bWJvbHMgaW1wYWN0ZWQgYnkgdGhlIHBhdGNoLgoKTm93LCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gYnVpbGRpbmcgdGhpcyB3aXRoIHRoZSByaWdodCBjb25maWd1cmF0aW9ucy4gQ2xlYXJseSwgYEZVU0VfRlNgIGlzIHJlcXVpcmVkLiBJJiMzOTtsbCBhbHNvIG5lZWQgYEZTX0lPTUFQYC4gU2luY2UgSU9NQVAgaXMgb2Z0ZW4gZW5hYmxlZCBhcyBhIGRlcGVuZGVuY3kgb2Ygb3RoZXIgZmlsZXN5c3RlbXMsIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCB0aGlzIGlzIGEgY29uZmlndXJhYmxlIG9wdGlvbi4KCkkmIzM5O2xsIGNoZWNrIHRoZSBgZnMvZnVzZS9LY29uZmlnYCBhbmQgYGZzL2lvbWFwL0tjb25maWdgIGZpbGVzIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLiBUaGUgc29vbmVyIEkgYnVpbGQgdGhlIGZ1enppbmcgYnVpbGQsIHRoZSBzb29uZXIgSSBjYW4gc3RhcnQgYWN0dWFsbHkgZGlnZ2luZyBpbnRvIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMDg6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEZVU0VfRlMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9mdXNlL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZnVzZS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5mcy9mdXNlL0tjb25maWc6Mjpjb25maWcgRlVTRV9GU1xuZnMvZnVzZS9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtGVVNFIChGaWxlc3lzdGVtIGluIFVzZXJzcGFjZSkgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDA4OjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwNzEKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyBhIFBvdGVudGlhbCBJL08gTWFwcGluZyBJc3N1ZSoqCgpBbHJpZ2h0LCB0aGUgdXNlciYjMzk7cyBwcm9iYWJseSBlbmNvdW50ZXJpbmcgYSBwcm9ibGVtIHJlbGF0ZWQgdG8gZmlsZSBJL08gbWFwcGluZy4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGRpdmUgaW50byB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gZmlsZXMsIHNwZWNpZmljYWxseSBhbnl0aGluZyBkZWFsaW5nIHdpdGggSS9PIG1hcHBpbmcuIExldCYjMzk7cyBzZWUuLi4gYSBnb29kIHN0YXJ0aW5nIHBvaW50IHdvdWxkIGJlIGBmcy9pb21hcC9LY29uZmlnYCBvciBzb21ldGhpbmcgc2ltaWxhciB3aXRoaW4gdGhlIGZpbGUgc3lzdGVtIGNvcmUuIFRoYXQmIzM5O3MgdXN1YWxseSB3aGVyZSB0aGUga25vYnMgYW5kIGZlYXR1cmVzIHJlbGF0ZWQgdG8gaG93IGZpbGUgc3lzdGVtcyBoYW5kbGUgZGlyZWN0IEkvTywgYnVmZmVyZWQgSS9PLCBhbmQgcmVsYXRlZCBvcHRpbWl6YXRpb25zIGFyZSBkZWZpbmVkLiBDaGFuY2VzIGFyZSwgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgZG9jdW1lbnRlZCB0aGVyZSwgYWxvbmdzaWRlIHRoZSBkZXBlbmRlbmNpZXMgdGhhdCBpbXBhY3QgdGhlaXIgYXZhaWxhYmlsaXR5IG9yIGJlaGF2aW9yLiBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiBkaWZmZXJlbnQgc2V0dGluZ3MgdG8gZGlhZ25vc2UgdGhlIHVzZXImIzM5O3MgaXNzdWUgZWZmZWN0aXZlbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMDg6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRlNfSU9NQVAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9pb21hcC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAwODo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MzExCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGhpczoKCioqTG9jYXRpbmcgdGhlIERlZmluaXRpb24gb2YgYEZTX0lPTUFQYCoqCgpBbHJpZ2h0LCBzbyBJIG5lZWQgdG8gZmluZCB0aGUgZGVmaW5pdGlvbiBvZiBgRlNfSU9NQVBgLiBUaGlzIGlzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBzdGFydGluZyBwb2ludC4gSSB1bmRlcnN0YW5kIHRoZSBpbXBvcnRhbmNlIG9mIGtub3dpbmcgd2hlcmUgdGhpcyBwYXJ0aWN1bGFyIG1hY3JvIG9yIHN5bWJvbCBpcyBkZWZpbmVkLiBJcyBpdCBpbiB0aGUga2VybmVsIGhlYWRlcnMsIGluIGEgc3BlY2lmaWMgbGlicmFyeSwgb3IgbWF5YmUgZXZlbiBpbiBhIHVzZXJzcGFjZSBpbmNsdWRlIGZpbGU/IEl0IGNvdWxkIGJlIGFueXdoZXJlLCByZWFsbHkuIEJ1dCB0byBlZmZlY3RpdmVseSB3b3JrIHdpdGggb3IgYW5hbHl6ZSBhbnl0aGluZyByZWxhdGVkIHRvIGBGU19JT01BUGAsIGxvY2F0aW5nIGl0cyBkZWNsYXJhdGlvbiBpcyBhYnNvbHV0ZWx5IGVzc2VudGlhbC4gVGhhdCYjMzk7cyBteSBpbml0aWFsIGdvYWwuIEtub3dpbmcgdGhlIGRlZmluaXRpb24gaXMgdGhlIGZvdW5kYXRpb24gZm9yIHVuZGVyc3RhbmRpbmcgaXRzIHB1cnBvc2UgYW5kIGhvdyBpdCYjMzk7cyB1c2VkIHdpdGhpbiBhIHN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAwODo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRlNfSU9NQVAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL0tjb25maWc9MTI9Y29uZmlnIFZBTElEQVRFX0ZTX1BBUlNFUlxuLS1cbmZzL0tjb25maWctMTctXG5mcy9LY29uZmlnOjE4OmNvbmZpZyBGU19JT01BUFxuZnMvS2NvbmZpZy0xOS1cdGJvb2xcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAwODo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTc3CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZVU0UgV3JpdGUgUGF0aCBBbmFseXNpcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBgRlNfSU9NQVBgIGlzIGEgYm9vbGVhbi4gVXN1YWxseSwgSSBzZWUgb3RoZXIgZmlsZXN5c3RlbXMgc2V0dGluZyB0aGlzLCBzbyBsZXQmIzM5O3MgY2hlY2sgZm9yIG90aGVyIGNvbmZpZ3MuIFRoZSBwcmltYXJ5IHJlbGV2YW50IG9uZSBoZXJlIHNlZW1zIHRvIGJlIGBGVVNFX0ZTYC4KCkFscmlnaHQsIGxldCYjMzk7cyB6ZXJvIGluIG9uIHRoZSBrZXkgc3ltYm9scyBpbnZvbHZlZC4gSSBzZWUgYGZ1c2Vfc2VuZF93cml0ZV9wYWdlc2AsIGBmdXNlX2ZpbGxfd3JpdGVfcGFnZXNgLCBgZnVzZV9ub3RpZnlfc3RvcmVgLCBhbmQgYGlvbWFwX2ZvbGlvX21hcmtfdXB0b2RhdGVgIGFzIHRoZSBrZXkgZnVuY3Rpb25zIHRvIHdhdGNoLiBJIHNob3VsZCBmaWd1cmUgb3V0IGlmIGVhY2ggYXJlIHN0YXRpYyBvciBleHBvcnRlZC4gCgpgZnVzZV9zZW5kX3dyaXRlX3BhZ2VzYCBhbmQgYGZ1c2VfZmlsbF93cml0ZV9wYWdlc2AgYXJlIHN0YXRpYyBhbmQgZm91bmQgaW4gYGZzL2Z1c2UvZmlsZS5jYCwgYW5kIGBmdXNlX25vdGlmeV9zdG9yZWAgaXMgYWxzbyBzdGF0aWMgaW4gYGZzL2Z1c2Uvbm90aWZ5LmNgLCB3aGlsZSBgaW9tYXBfZm9saW9fbWFya191cHRvZGF0ZWAgaXMgZXhwb3J0ZWQgZnJvbSBgZnMvaW9tYXAvYnVmZmVyZWQtaW8uY2AuCgpOb3csIGlzIGBmdXNlX3NlbmRfd3JpdGVfcGFnZXNgIGEgaG90IHBhdGg/IEdpdmVuIGl0cyBuYW1lLCBpdCYjMzk7cyBjYWxsZWQgZHVyaW5nIHdyaXRlIHBhZ2VzLCBhbmQgdGhhdCYjMzk7cyBhbiBvYnZpb3VzIGNhbmRpZGF0ZSBmb3IgZnV6emluZyBpbiBGVVNFISBHb29kLgoKTGV0JiMzOTtzIHF1aWNrbHkgdmVyaWZ5IHRoZSBtZXRhZGF0YS4gWWVwLCBgV29ydGhGdXp6aW5nYCBpcyBgdHJ1ZWAuIFRoZSByZWFzb25pbmcgbWFrZXMgcGVyZmVjdCBzZW5zZTogaXQgdG91Y2hlcyBwYWdlIHVwdG9kYXRlIGhhbmRsaW5nIGluIEZVU0Ugd3JpdGUgYW5kIG5vdGlmaWNhdGlvbiBwYXRocywgYW5kIGludHJvZHVjZXMgYW4gaW9tYXAgaGVscGVyLCBhbmQgYWxsIHRoZXNlIHRoaW5ncyBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHVzZXItc3BhY2UgY2FuIHRyaWdnZXIgdmlhIEZVU0UuIFRoZSBgRm9jdXNTeW1ib2xzYCBhcmUgc3BvdCBvbiwgYW5kIGBGVVNFX0ZTYCBpcyB0aGUgcmVxdWlyZWQgYEVuYWJsZUNvbmZpZ2AuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSYjMzk7bGwgZG91YmxlLWNoZWNrIGlmIGBGU19JT01BUGAgcmVxdWlyZXMgZXhwbGljaXQgZW5hYmxpbmcuIFNpbmNlIGl0JiMzOTtzIGEgYGJvb2xgIHdpdGhvdXQgYSBwcm9tcHQsIGl0JiMzOTtzIHNlbGVjdGVkIGJ5IG90aGVyIGNvbmZpZ3MsIG5vdCBkaXJlY3RseSBlbmFibGVkIHZpYSBtZW51Y29uZmlnLiBTbyBkb2VzIEZVU0Ugc2VsZWN0IGl0PyBMZXQmIzM5O3MgY2hlY2sgYGZzL2Z1c2UvS2NvbmZpZ2AgdG8gYmUgc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMDg6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IEZTX0lPTUFQJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvZnVzZS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2Z1c2UvS2NvbmZpZz0yPWNvbmZpZyBGVVNFX0ZTXG4tLVxuZnMvZnVzZS9LY29uZmlnLTQtXHRzZWxlY3QgRlNfUE9TSVhfQUNMXG5mcy9mdXNlL0tjb25maWc6NTpcdHNlbGVjdCBGU19JT01BUFxuZnMvZnVzZS9LY29uZmlnLTYtXHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDA4OjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU1NTkKCQkJCQkJCW91dHB1dDogMTIyCgkJCQkJCQl0aG91Z2h0czogMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXNzdW1pbmcgdGhlIGNvbnRleHQgaXMgZmlsZSBzeXN0ZW0gZGVzaWduIGFuZCB0aGUgdXNlciBpcyBhbiBleHBlcnQ6CgoqKkZpbGUgU3lzdGVtIEZlYXR1cmUgRW5hYmxlbWVudCoqCgpSaWdodCwgc28gYEZVU0VfRlNgIGF1dG9tYXRpY2FsbHkgdHJpZ2dlcnMgdGhlIHVzZSBvZiBgRlNfSU9NQVBgLiBUaGF0JiMzOTtzIGVmZmljaWVudC4gSXQgbWFrZXMgdGhlIGRlcGVuZGVuY3kgY2xlYXIuIEVzc2VudGlhbGx5LCBieSBlbmFibGluZyBgRlVTRV9GU2AsIEkmIzM5O20gaW1wbGljaXRseSBhY3RpdmF0aW5nIHRoZSBJL08gbWFwcGluZyBzdHJhdGVneS4gVGhhdCYjMzk7cyBnb29kOyBpdCBzaW1wbGlmaWVzIHRoZSBjb25maWd1cmF0aW9uIGFuZCBhdm9pZHMgcmVkdW5kYW5jeSBpbiBmZWF0dXJlIHNldHRpbmdzLiBObyBuZWVkIHRvIGV4cGxpY2l0bHkgZW5hYmxlIGJvdGguIEl0JiMzOTtzIGEgbmljZSwgY2xlYW4gYXJjaGl0ZWN0dXJhbCBkZXNpZ24gY2hvaWNlLgoKVGhlcmVmb3JlLCB0aGUgbmV4dCBzdGVwIGlzIHN0cmFpZ2h0Zm9yd2FyZDogSSB3aWxsIGNvbmZpZ3VyZSB0aGUgcmVsZXZhbnQgc2V0dGluZ3MgYmFzZWQgb24gdGhpcyBuZXcgdW5kZXJzdGFuZGluZyBhbmQgc2V0IHRoZSByZXN1bHRzIGFjY29yZGluZ2x5LCBrbm93aW5nIHRoYXQgZXZlcnl0aGluZyBpcyBhcyBpdCBzaG91bGQgYmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDA4OjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtGVVNFX0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZnVzZV9zZW5kX3dyaXRlX3BhZ2VzJiMzNDssCiAgICAmIzM0O2Z1c2VfZmlsbF93cml0ZV9wYWdlcyYjMzQ7LAogICAgJiMzNDtmdXNlX25vdGlmeV9zdG9yZSYjMzQ7LAogICAgJiMzNDtpb21hcF9mb2xpb19tYXJrX3VwdG9kYXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHBhZ2UgdXB0b2RhdGUgaGFuZGxpbmcgaW4gRlVTRSB3cml0ZSBhbmQgbm90aWZ5IHBhdGhzLCBhbmQgaW50cm9kdWNlcyBhIG5ldyBpb21hcCBoZWxwZXIuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gZmlsZXN5c3RlbSBsb2dpYyB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgYnkgdXNlci1zcGFjZSB2aWEgRlVTRS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RlVTRV9GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Z1c2Vfc2VuZF93cml0ZV9wYWdlcyYjMzQ7LAogICAgJiMzNDtmdXNlX2ZpbGxfd3JpdGVfcGFnZXMmIzM0OywKICAgICYjMzQ7ZnVzZV9ub3RpZnlfc3RvcmUmIzM0OywKICAgICYjMzQ7aW9tYXBfZm9saW9fbWFya191cHRvZGF0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBwYWdlIHVwdG9kYXRlIGhhbmRsaW5nIGluIEZVU0Ugd3JpdGUgYW5kIG5vdGlmeSBwYXRocywgYW5kIGludHJvZHVjZXMgYSBuZXcgaW9tYXAgaGVscGVyLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIGZpbGVzeXN0ZW0gbG9naWMgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IHVzZXItc3BhY2UgdmlhIEZVU0UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wOFQwODo0NzoxNy45NjY4MDgwNDJaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzAwNjE3OTA4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJGVVNFX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZnVzZV9zZW5kX3dyaXRlX3BhZ2VzXCIsXG4gICAgXCJmdXNlX2ZpbGxfd3JpdGVfcGFnZXNcIixcbiAgICBcImZ1c2Vfbm90aWZ5X3N0b3JlXCIsXG4gICAgXCJpb21hcF9mb2xpb19tYXJrX3VwdG9kYXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgcGFnZSB1cHRvZGF0ZSBoYW5kbGluZyBpbiBGVVNFIHdyaXRlIGFuZCBub3RpZnkgcGF0aHMsIGFuZCBpbnRyb2R1Y2VzIGEgbmV3IGlvbWFwIGhlbHBlci4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiBmaWxlc3lzdGVtIGxvZ2ljIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSB1c2VyLXNwYWNlIHZpYSBGVVNFLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQwODo0NzoxNy45NjY4Mjg0NzFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgzNzAyNzQzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGY1MTkzN2E1NDU3YTdmMWE1ODljMWY4OTdkMjAwMDA0NDI5OWE4NGRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgOCAwODo0NzoxNiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9mcy9mdXNlL2ZpbGUuYyBiL2ZzL2Z1c2UvZmlsZS5jXFxuaW5kZXggY2VhZGE3NTMxMGI4ODAuLmRhNTg1OWU4MTU5ZDRmIDEwMDY0NFxcbi0tLSBhL2ZzL2Z1c2UvZmlsZS5jXFxuKysrIGIvZnMvZnVzZS9maWxlLmNcXG5AQCAtMTIxOSw4ICsxMjE5LDcgQEAgc3RhdGljIHNzaXplX3QgZnVzZV9zZW5kX3dyaXRlX3BhZ2VzKHN0cnVjdCBmdXNlX2lvX2FyZ3MgKmlhLFxcbiBcXHRzdHJ1Y3QgZmlsZSAqZmlsZSA9IGlvY2ItXFx1MDAzZWtpX2ZpbHA7XFxuIFxcdHN0cnVjdCBmdXNlX2ZpbGUgKmZmID0gZmlsZS1cXHUwMDNlcHJpdmF0ZV9kYXRhO1xcbiBcXHRzdHJ1Y3QgZnVzZV9tb3VudCAqZm0gPSBmZi1cXHUwMDNlZm07XFxuLVxcdHVuc2lnbmVkIGludCBvZmZzZXQsIGk7XFxuLVxcdGJvb2wgc2hvcnRfd3JpdGU7XFxuK1xcdHVuc2lnbmVkIGludCBpO1xcbiBcXHRpbnQgZXJyO1xcbiBcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGFwLVxcdTAwM2VudW1fZm9saW9zOyBpKyspXFxuQEAgLTEyMzUsMjQgKzEyMzQsOSBAQCBzdGF0aWMgc3NpemVfdCBmdXNlX3NlbmRfd3JpdGVfcGFnZXMoc3RydWN0IGZ1c2VfaW9fYXJncyAqaWEsXFxuIFxcdGlmICghZXJyIFxcdTAwMjZcXHUwMDI2IGlhLVxcdTAwM2V3cml0ZS5vdXQuc2l6ZSBcXHUwMDNlIGNvdW50KVxcbiBcXHRcXHRlcnIgPSAtRUlPO1xcbiBcXG4tXFx0c2hvcnRfd3JpdGUgPSBpYS1cXHUwMDNld3JpdGUub3V0LnNpemUgXFx1MDAzYyBjb3VudDtcXG4tXFx0b2Zmc2V0ID0gYXAtXFx1MDAzZWRlc2NzWzBdLm9mZnNldDtcXG4tXFx0Y291bnQgPSBpYS1cXHUwMDNld3JpdGUub3V0LnNpemU7XFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBhcC1cXHUwMDNlbnVtX2ZvbGlvczsgaSsrKSB7XFxuIFxcdFxcdHN0cnVjdCBmb2xpbyAqZm9saW8gPSBhcC1cXHUwMDNlZm9saW9zW2ldO1xcbiBcXG4tXFx0XFx0aWYgKGVycikge1xcbi1cXHRcXHRcXHRmb2xpb19jbGVhcl91cHRvZGF0ZShmb2xpbyk7XFxuLVxcdFxcdH0gZWxzZSB7XFxuLVxcdFxcdFxcdGlmIChjb3VudCBcXHUwMDNlPSBmb2xpb19zaXplKGZvbGlvKSAtIG9mZnNldClcXG4tXFx0XFx0XFx0XFx0Y291bnQgLT0gZm9saW9fc2l6ZShmb2xpbykgLSBvZmZzZXQ7XFxuLVxcdFxcdFxcdGVsc2Uge1xcbi1cXHRcXHRcXHRcXHRpZiAoc2hvcnRfd3JpdGUpXFxuLVxcdFxcdFxcdFxcdFxcdGZvbGlvX2NsZWFyX3VwdG9kYXRlKGZvbGlvKTtcXG4tXFx0XFx0XFx0XFx0Y291bnQgPSAwO1xcbi1cXHRcXHRcXHR9XFxuLVxcdFxcdFxcdG9mZnNldCA9IDA7XFxuLVxcdFxcdH1cXG4gXFx0XFx0aWYgKGlhLVxcdTAwM2V3cml0ZS5mb2xpb19sb2NrZWQgXFx1MDAyNlxcdTAwMjYgKGkgPT0gYXAtXFx1MDAzZW51bV9mb2xpb3MgLSAxKSlcXG4gXFx0XFx0XFx0Zm9saW9fdW5sb2NrKGZvbGlvKTtcXG4gXFx0XFx0Zm9saW9fcHV0KGZvbGlvKTtcXG5AQCAtMTMyNyw3ICsxMzExLDcgQEAgc3RhdGljIHNzaXplX3QgZnVzZV9maWxsX3dyaXRlX3BhZ2VzKHN0cnVjdCBmdXNlX2lvX2FyZ3MgKmlhLFxcbiBcXG4gXFx0XFx0LyogSWYgd2UgY29waWVkIGZ1bGwgZm9saW8sIG1hcmsgaXQgdXB0b2RhdGUgKi9cXG4gXFx0XFx0aWYgKHRtcCA9PSBmb2xpb19zaXplKGZvbGlvKSlcXG4tXFx0XFx0XFx0Zm9saW9fbWFya191cHRvZGF0ZShmb2xpbyk7XFxuK1xcdFxcdFxcdGlvbWFwX2ZvbGlvX21hcmtfdXB0b2RhdGUoZm9saW8pO1xcbiBcXG4gXFx0XFx0aWYgKGZvbGlvX3Rlc3RfdXB0b2RhdGUoZm9saW8pKSB7XFxuIFxcdFxcdFxcdGZvbGlvX3VubG9jayhmb2xpbyk7XFxuZGlmZiAtLWdpdCBhL2ZzL2Z1c2Uvbm90aWZ5LmMgYi9mcy9mdXNlL25vdGlmeS5jXFxuaW5kZXggMjk1NzgxMDRhZTZjZDYuLjFiYTc2MzcwNWQ5MTE5IDEwMDY0NFxcbi0tLSBhL2ZzL2Z1c2Uvbm90aWZ5LmNcXG4rKysgYi9mcy9mdXNlL25vdGlmeS5jXFxuQEAgLTIsNiArMiw4IEBAXFxuIFxcbiAjaW5jbHVkZSBcXFwiZGV2LmhcXFwiXFxuICNpbmNsdWRlIFxcXCJmdXNlX2kuaFxcXCJcXG4rXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9pb21hcC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcGFnZW1hcC5oXFx1MDAzZVxcbiBcXG4gc3RhdGljIGludCBmdXNlX25vdGlmeV9wb2xsKHN0cnVjdCBmdXNlX2Nvbm4gKmZjLCB1bnNpZ25lZCBpbnQgc2l6ZSxcXG5AQCAtMTkyLDcgKzE5NCw3IEBAIHN0YXRpYyBpbnQgZnVzZV9ub3RpZnlfc3RvcmUoc3RydWN0IGZ1c2VfY29ubiAqZmMsIHVuc2lnbmVkIGludCBzaXplLFxcbiBcXHRcXHRpZiAoIWZvbGlvX3Rlc3RfdXB0b2RhdGUoZm9saW8pIFxcdTAwMjZcXHUwMDI2ICFlcnIgXFx1MDAyNlxcdTAwMjYgZm9saW9fb2Zmc2V0ID09IDAgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0ICAgIChucl9ieXRlcyA9PSBmb2xpb19zaXplKGZvbGlvKSB8fCBmaWxlX3NpemUgPT0gZW5kKSkge1xcbiBcXHRcXHRcXHRmb2xpb196ZXJvX3NlZ21lbnQoZm9saW8sIG5yX2J5dGVzLCBmb2xpb19zaXplKGZvbGlvKSk7XFxuLVxcdFxcdFxcdGZvbGlvX21hcmtfdXB0b2RhdGUoZm9saW8pO1xcbitcXHRcXHRcXHRpb21hcF9mb2xpb19tYXJrX3VwdG9kYXRlKGZvbGlvKTtcXG4gXFx0XFx0fVxcbiBcXHRcXHRmb2xpb191bmxvY2soZm9saW8pO1xcbiBcXHRcXHRmb2xpb19wdXQoZm9saW8pO1xcbmRpZmYgLS1naXQgYS9mcy9pb21hcC9idWZmZXJlZC1pby5jIGIvZnMvaW9tYXAvYnVmZmVyZWQtaW8uY1xcbmluZGV4IDI3NjcyMGJjMThkYzUyLi5hZjQxNTI5M2UyNjUxZiAxMDA2NDRcXG4tLS0gYS9mcy9pb21hcC9idWZmZXJlZC1pby5jXFxuKysrIGIvZnMvaW9tYXAvYnVmZmVyZWQtaW8uY1xcbkBAIC0xMDUsNiArMTA1LDEyIEBAIHN0YXRpYyB2b2lkIGlvbWFwX3NldF9yYW5nZV91cHRvZGF0ZShzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzaXplX3Qgb2ZmLFxcbiBcXHRcXHRmb2xpb19tYXJrX3VwdG9kYXRlKGZvbGlvKTtcXG4gfVxcbiBcXG4rdm9pZCBpb21hcF9mb2xpb19tYXJrX3VwdG9kYXRlKHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuK3tcXG4rXFx0aW9tYXBfc2V0X3JhbmdlX3VwdG9kYXRlKGZvbGlvLCAwLCBmb2xpb19zaXplKGZvbGlvKSk7XFxuK31cXG4rRVhQT1JUX1NZTUJPTF9HUEwoaW9tYXBfZm9saW9fbWFya191cHRvZGF0ZSk7XFxuK1xcbiAvKlxcbiAgKiBGaW5kIHRoZSBuZXh0IGRpcnR5IGJsb2NrIGluIHRoZSBmb2xpby4gZW5kX2JsayBpcyBpbmNsdXNpdmUuXFxuICAqIElmIG5vIGRpcnR5IGJsb2NrIGlzIGZvdW5kLCB0aGlzIHdpbGwgcmV0dXJuIGVuZF9ibGsgKyAxLlxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2lvbWFwLmggYi9pbmNsdWRlL2xpbnV4L2lvbWFwLmhcXG5pbmRleCA1NmI0M2Q1OTRlNmUyOS4uNDBhYTM0NzZhMzUxZDIgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9pb21hcC5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9pb21hcC5oXFxuQEAgLTM2NSw2ICszNjUsNyBAQCBzdHJ1Y3QgZm9saW8gKmlvbWFwX2dldF9mb2xpbyhzdHJ1Y3QgaW9tYXBfaXRlciAqaXRlciwgbG9mZl90IHBvcywgc2l6ZV90IGxlbik7XFxuIGJvb2wgaW9tYXBfcmVsZWFzZV9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvLCBnZnBfdCBnZnBfZmxhZ3MpO1xcbiB2b2lkIGlvbWFwX2ludmFsaWRhdGVfZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbywgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbik7XFxuIGJvb2wgaW9tYXBfZGlydHlfZm9saW8oc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsIHN0cnVjdCBmb2xpbyAqZm9saW8pO1xcbit2b2lkIGlvbWFwX2ZvbGlvX21hcmtfdXB0b2RhdGUoc3RydWN0IGZvbGlvICpmb2xpbyk7XFxuIGludCBpb21hcF9maWxlX3Vuc2hhcmUoc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IHBvcywgbG9mZl90IGxlbixcXG4gXFx0XFx0Y29uc3Qgc3RydWN0IGlvbWFwX29wcyAqb3BzLFxcbiBcXHRcXHRjb25zdCBzdHJ1Y3QgaW9tYXBfd3JpdGVfb3BzICp3cml0ZV9vcHMpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQwODo0NzoxOC44MDQ5MDE2MDlaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI2MTY4MDY5NDQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkZVU0VfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmdXNlX3NlbmRfd3JpdGVfcGFnZXNcIixcbiAgICBcImZ1c2VfZmlsbF93cml0ZV9wYWdlc1wiLFxuICAgIFwiZnVzZV9ub3RpZnlfc3RvcmVcIixcbiAgICBcImlvbWFwX2ZvbGlvX21hcmtfdXB0b2RhdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBwYWdlIHVwdG9kYXRlIGhhbmRsaW5nIGluIEZVU0Ugd3JpdGUgYW5kIG5vdGlmeSBwYXRocywgYW5kIGludHJvZHVjZXMgYSBuZXcgaW9tYXAgaGVscGVyLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIGZpbGVzeXN0ZW0gbG9naWMgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IHVzZXItc3BhY2UgdmlhIEZVU0UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZjUxOTM3YTU0NTdhN2YxYTU4OWMxZjg5N2QyMDAwMDQ0Mjk5YTg0ZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDggMDg6NDc6MTYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9mdXNlL2ZpbGUuYyBiL2ZzL2Z1c2UvZmlsZS5jXG5pbmRleCBjZWFkYTc1MzEwYjg4MC4uZGE1ODU5ZTgxNTlkNGYgMTAwNjQ0XG4tLS0gYS9mcy9mdXNlL2ZpbGUuY1xuKysrIGIvZnMvZnVzZS9maWxlLmNcbkBAIC0xMjE5LDggKzEyMTksNyBAQCBzdGF0aWMgc3NpemVfdCBmdXNlX3NlbmRfd3JpdGVfcGFnZXMoc3RydWN0IGZ1c2VfaW9fYXJncyAqaWEsXG4gXHRzdHJ1Y3QgZmlsZSAqZmlsZSA9IGlvY2ItXHUwMDNla2lfZmlscDtcbiBcdHN0cnVjdCBmdXNlX2ZpbGUgKmZmID0gZmlsZS1cdTAwM2Vwcml2YXRlX2RhdGE7XG4gXHRzdHJ1Y3QgZnVzZV9tb3VudCAqZm0gPSBmZi1cdTAwM2VmbTtcbi1cdHVuc2lnbmVkIGludCBvZmZzZXQsIGk7XG4tXHRib29sIHNob3J0X3dyaXRlO1xuK1x0dW5zaWduZWQgaW50IGk7XG4gXHRpbnQgZXJyO1xuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYXAtXHUwMDNlbnVtX2ZvbGlvczsgaSsrKVxuQEAgLTEyMzUsMjQgKzEyMzQsOSBAQCBzdGF0aWMgc3NpemVfdCBmdXNlX3NlbmRfd3JpdGVfcGFnZXMoc3RydWN0IGZ1c2VfaW9fYXJncyAqaWEsXG4gXHRpZiAoIWVyciBcdTAwMjZcdTAwMjYgaWEtXHUwMDNld3JpdGUub3V0LnNpemUgXHUwMDNlIGNvdW50KVxuIFx0XHRlcnIgPSAtRUlPO1xuIFxuLVx0c2hvcnRfd3JpdGUgPSBpYS1cdTAwM2V3cml0ZS5vdXQuc2l6ZSBcdTAwM2MgY291bnQ7XG4tXHRvZmZzZXQgPSBhcC1cdTAwM2VkZXNjc1swXS5vZmZzZXQ7XG4tXHRjb3VudCA9IGlhLVx1MDAzZXdyaXRlLm91dC5zaXplO1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYXAtXHUwMDNlbnVtX2ZvbGlvczsgaSsrKSB7XG4gXHRcdHN0cnVjdCBmb2xpbyAqZm9saW8gPSBhcC1cdTAwM2Vmb2xpb3NbaV07XG4gXG4tXHRcdGlmIChlcnIpIHtcbi1cdFx0XHRmb2xpb19jbGVhcl91cHRvZGF0ZShmb2xpbyk7XG4tXHRcdH0gZWxzZSB7XG4tXHRcdFx0aWYgKGNvdW50IFx1MDAzZT0gZm9saW9fc2l6ZShmb2xpbykgLSBvZmZzZXQpXG4tXHRcdFx0XHRjb3VudCAtPSBmb2xpb19zaXplKGZvbGlvKSAtIG9mZnNldDtcbi1cdFx0XHRlbHNlIHtcbi1cdFx0XHRcdGlmIChzaG9ydF93cml0ZSlcbi1cdFx0XHRcdFx0Zm9saW9fY2xlYXJfdXB0b2RhdGUoZm9saW8pO1xuLVx0XHRcdFx0Y291bnQgPSAwO1xuLVx0XHRcdH1cbi1cdFx0XHRvZmZzZXQgPSAwO1xuLVx0XHR9XG4gXHRcdGlmIChpYS1cdTAwM2V3cml0ZS5mb2xpb19sb2NrZWQgXHUwMDI2XHUwMDI2IChpID09IGFwLVx1MDAzZW51bV9mb2xpb3MgLSAxKSlcbiBcdFx0XHRmb2xpb191bmxvY2soZm9saW8pO1xuIFx0XHRmb2xpb19wdXQoZm9saW8pO1xuQEAgLTEzMjcsNyArMTMxMSw3IEBAIHN0YXRpYyBzc2l6ZV90IGZ1c2VfZmlsbF93cml0ZV9wYWdlcyhzdHJ1Y3QgZnVzZV9pb19hcmdzICppYSxcbiBcbiBcdFx0LyogSWYgd2UgY29waWVkIGZ1bGwgZm9saW8sIG1hcmsgaXQgdXB0b2RhdGUgKi9cbiBcdFx0aWYgKHRtcCA9PSBmb2xpb19zaXplKGZvbGlvKSlcbi1cdFx0XHRmb2xpb19tYXJrX3VwdG9kYXRlKGZvbGlvKTtcbitcdFx0XHRpb21hcF9mb2xpb19tYXJrX3VwdG9kYXRlKGZvbGlvKTtcbiBcbiBcdFx0aWYgKGZvbGlvX3Rlc3RfdXB0b2RhdGUoZm9saW8pKSB7XG4gXHRcdFx0Zm9saW9fdW5sb2NrKGZvbGlvKTtcbmRpZmYgLS1naXQgYS9mcy9mdXNlL25vdGlmeS5jIGIvZnMvZnVzZS9ub3RpZnkuY1xuaW5kZXggMjk1NzgxMDRhZTZjZDYuLjFiYTc2MzcwNWQ5MTE5IDEwMDY0NFxuLS0tIGEvZnMvZnVzZS9ub3RpZnkuY1xuKysrIGIvZnMvZnVzZS9ub3RpZnkuY1xuQEAgLTIsNiArMiw4IEBAXG4gXG4gI2luY2x1ZGUgXCJkZXYuaFwiXG4gI2luY2x1ZGUgXCJmdXNlX2kuaFwiXG4rXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvaW9tYXAuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BhZ2VtYXAuaFx1MDAzZVxuIFxuIHN0YXRpYyBpbnQgZnVzZV9ub3RpZnlfcG9sbChzdHJ1Y3QgZnVzZV9jb25uICpmYywgdW5zaWduZWQgaW50IHNpemUsXG5AQCAtMTkyLDcgKzE5NCw3IEBAIHN0YXRpYyBpbnQgZnVzZV9ub3RpZnlfc3RvcmUoc3RydWN0IGZ1c2VfY29ubiAqZmMsIHVuc2lnbmVkIGludCBzaXplLFxuIFx0XHRpZiAoIWZvbGlvX3Rlc3RfdXB0b2RhdGUoZm9saW8pIFx1MDAyNlx1MDAyNiAhZXJyIFx1MDAyNlx1MDAyNiBmb2xpb19vZmZzZXQgPT0gMCBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIChucl9ieXRlcyA9PSBmb2xpb19zaXplKGZvbGlvKSB8fCBmaWxlX3NpemUgPT0gZW5kKSkge1xuIFx0XHRcdGZvbGlvX3plcm9fc2VnbWVudChmb2xpbywgbnJfYnl0ZXMsIGZvbGlvX3NpemUoZm9saW8pKTtcbi1cdFx0XHRmb2xpb19tYXJrX3VwdG9kYXRlKGZvbGlvKTtcbitcdFx0XHRpb21hcF9mb2xpb19tYXJrX3VwdG9kYXRlKGZvbGlvKTtcbiBcdFx0fVxuIFx0XHRmb2xpb191bmxvY2soZm9saW8pO1xuIFx0XHRmb2xpb19wdXQoZm9saW8pO1xuZGlmZiAtLWdpdCBhL2ZzL2lvbWFwL2J1ZmZlcmVkLWlvLmMgYi9mcy9pb21hcC9idWZmZXJlZC1pby5jXG5pbmRleCAyNzY3MjBiYzE4ZGM1Mi4uYWY0MTUyOTNlMjY1MWYgMTAwNjQ0XG4tLS0gYS9mcy9pb21hcC9idWZmZXJlZC1pby5jXG4rKysgYi9mcy9pb21hcC9idWZmZXJlZC1pby5jXG5AQCAtMTA1LDYgKzEwNSwxMiBAQCBzdGF0aWMgdm9pZCBpb21hcF9zZXRfcmFuZ2VfdXB0b2RhdGUoc3RydWN0IGZvbGlvICpmb2xpbywgc2l6ZV90IG9mZixcbiBcdFx0Zm9saW9fbWFya191cHRvZGF0ZShmb2xpbyk7XG4gfVxuIFxuK3ZvaWQgaW9tYXBfZm9saW9fbWFya191cHRvZGF0ZShzdHJ1Y3QgZm9saW8gKmZvbGlvKVxuK3tcbitcdGlvbWFwX3NldF9yYW5nZV91cHRvZGF0ZShmb2xpbywgMCwgZm9saW9fc2l6ZShmb2xpbykpO1xuK31cbitFWFBPUlRfU1lNQk9MX0dQTChpb21hcF9mb2xpb19tYXJrX3VwdG9kYXRlKTtcbitcbiAvKlxuICAqIEZpbmQgdGhlIG5leHQgZGlydHkgYmxvY2sgaW4gdGhlIGZvbGlvLiBlbmRfYmxrIGlzIGluY2x1c2l2ZS5cbiAgKiBJZiBubyBkaXJ0eSBibG9jayBpcyBmb3VuZCwgdGhpcyB3aWxsIHJldHVybiBlbmRfYmxrICsgMS5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2lvbWFwLmggYi9pbmNsdWRlL2xpbnV4L2lvbWFwLmhcbmluZGV4IDU2YjQzZDU5NGU2ZTI5Li40MGFhMzQ3NmEzNTFkMiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvaW9tYXAuaFxuKysrIGIvaW5jbHVkZS9saW51eC9pb21hcC5oXG5AQCAtMzY1LDYgKzM2NSw3IEBAIHN0cnVjdCBmb2xpbyAqaW9tYXBfZ2V0X2ZvbGlvKHN0cnVjdCBpb21hcF9pdGVyICppdGVyLCBsb2ZmX3QgcG9zLCBzaXplX3QgbGVuKTtcbiBib29sIGlvbWFwX3JlbGVhc2VfZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbywgZ2ZwX3QgZ2ZwX2ZsYWdzKTtcbiB2b2lkIGlvbWFwX2ludmFsaWRhdGVfZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbywgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbik7XG4gYm9vbCBpb21hcF9kaXJ0eV9mb2xpbyhzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywgc3RydWN0IGZvbGlvICpmb2xpbyk7XG4rdm9pZCBpb21hcF9mb2xpb19tYXJrX3VwdG9kYXRlKHN0cnVjdCBmb2xpbyAqZm9saW8pO1xuIGludCBpb21hcF9maWxlX3Vuc2hhcmUoc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IHBvcywgbG9mZl90IGxlbixcbiBcdFx0Y29uc3Qgc3RydWN0IGlvbWFwX29wcyAqb3BzLFxuIFx0XHRjb25zdCBzdHJ1Y3QgaW9tYXBfd3JpdGVfb3BzICp3cml0ZV9vcHMpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMDg6NDc6MTguODA0OTA0MTg5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODA5NjEyODg5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBGVVNFL0lPTUFQIFBhdGNoIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIEkndmUgZ290IGEgcGF0Y2ggaW4gZnJvbnQgb2YgbWUgdGhhdCB0b3VjaGVzIHNvbWUgcHJldHR5IGZ1bmRhbWVudGFsIGFyZWFzOiBgZnMvZnVzZS9maWxlLmNgLCBgZnMvZnVzZS9ub3RpZnkuY2AsIGBmcy9pb21hcC9idWZmZXJlZC1pby5jYCwgYW5kIGBpbmNsdWRlL2xpbnV4L2lvbWFwLmhgLiBJbW1lZGlhdGVseSwgbXkgc3BpZGV5LXNlbnNlIGlzIHRpbmdsaW5nLiBUaGlzIGlzbid0IGp1c3QgYSBtaW5vciB0d2Vhazsgd2UncmUgdGFsa2luZyBhYm91dCBjb3JlIEZVU0UgYW5kIElPTUFQIGxvZ2ljLCBhbmQgdGhhdCdzICphbHdheXMqIHdvcnRoIGEgY2xvc2VyIGxvb2sgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUuXG5cbkVzc2VudGlhbGx5LCB0aGUgcGF0Y2ggaW50cm9kdWNlcyB0aGlzIG5ldyBgaW9tYXBfZm9saW9fbWFya191cHRvZGF0ZShzdHJ1Y3QgZm9saW8gKmZvbGlvKWAgZnVuY3Rpb24sIHdoaWNoIHNlZW1zIHRvIGNlbnRyYWxpemUgdGhlIG1hcmtpbmcgb2YgZm9saW9zIGFzIHVwLXRvLWRhdGUuIEl0J3MgY2FsbGluZyB0aGUgSU9NQVAtc3BlY2lmaWMgZnVuY3Rpb24gdG8gbWFyayB0aGUgZW50aXJlIGZvbGlvLCByZXBsYWNpbmcgdGhlIG1vcmUgZ2VuZXJpYyBgZm9saW9fbWFya191cHRvZGF0ZWAgY2FsbHMgaW4gYGZ1c2VfZmlsbF93cml0ZV9wYWdlc2AgYW5kIGBmdXNlX25vdGlmeV9zdG9yZWAuIE9uIHRvcCBvZiB0aGF0LCBpdCByZW1vdmVzIHNvbWUgZXhpc3RpbmcgZXJyb3IgaGFuZGxpbmcvc2hvcnQgd3JpdGUgaGFuZGxpbmcgZnJvbSBgZnVzZV9zZW5kX3dyaXRlX3BhZ2VzYCB3aGljaCBjbGVhcnMgdGhlIHVwLXRvLWRhdGUgZmxhZywgd2hpY2gsIGJ5IGl0c2VsZiwgaXMgaW50ZXJlc3RpbmcuIFRoaXMgbG9va3MgbGlrZSBhIHNpbXBsaWZpY2F0aW9uIGFuZCBwb3RlbnRpYWwgb3B0aW1pemF0aW9uLCBidXQgdGhhdCBhbHdheXMgaW50cm9kdWNlcyBhIG5ldyB2ZWN0b3IgZm9yIGF0dGFjay5cblxuTXkgaW5pdGlhbCBndXQgZmVlbGluZyBpcyB0aGF0IHRoaXMgKmlzKiBmdXp6YWJsZSwgYW5kICpzaG91bGQqIGJlIGZ1enplZCwgYXMgdGhlcmUncyBhIGdvb2QgcHJvYmFiaWxpdHkgdGhhdCB0aGVyZSBhcmUgZnVuY3Rpb25hbCBhcmVhcywgYW5kIHRoYXQgdGhlc2UgYXJlYXMgYXJlIHJlYWNoYWJsZSwgYW5kIHRoZSBjaGFuZ2VzIGFyZSBzaWduaWZpY2FudCBlbm91Z2ggdG8gd2FycmFudCBpbnZlc3RpZ2F0aW9uLlxuXG5TcGVjaWZpY2FsbHksIEknbGwgd2FudCB0byBmb2N1cyBvbjogYGZ1c2Vfc2VuZF93cml0ZV9wYWdlc2AsIGBmdXNlX2ZpbGxfd3JpdGVfcGFnZXNgLCBgZnVzZV9ub3RpZnlfc3RvcmVgLCBhbmQgbm93LCBjcml0aWNhbGx5LCB0aGUgbmV3IGBpb21hcF9mb2xpb19tYXJrX3VwdG9kYXRlYCBmdW5jdGlvbi4gVGhlc2UgYXJlIHRoZSBrZXkgc3ltYm9scyBpbXBhY3RlZCBieSB0aGUgcGF0Y2guXG5cbk5vdywgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gYnVpbGRpbmcgdGhpcyB3aXRoIHRoZSByaWdodCBjb25maWd1cmF0aW9ucy4gQ2xlYXJseSwgYEZVU0VfRlNgIGlzIHJlcXVpcmVkLiBJJ2xsIGFsc28gbmVlZCBgRlNfSU9NQVBgLiBTaW5jZSBJT01BUCBpcyBvZnRlbiBlbmFibGVkIGFzIGEgZGVwZW5kZW5jeSBvZiBvdGhlciBmaWxlc3lzdGVtcywgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IHRoaXMgaXMgYSBjb25maWd1cmFibGUgb3B0aW9uLlxuXG5JJ2xsIGNoZWNrIHRoZSBgZnMvZnVzZS9LY29uZmlnYCBhbmQgYGZzL2lvbWFwL0tjb25maWdgIGZpbGVzIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLiBUaGUgc29vbmVyIEkgYnVpbGQgdGhlIGZ1enppbmcgYnVpbGQsIHRoZSBzb29uZXIgSSBjYW4gc3RhcnQgYWN0dWFsbHkgZGlnZ2luZyBpbnRvIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxMzIsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMDQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQwODo0NzoyNi45MDEwMzU4NjdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTc5NjUwMzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEZVU0VfRlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZnVzZS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2Z1c2UvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmZzL2Z1c2UvS2NvbmZpZzoyOmNvbmZpZyBGVVNFX0ZTXFxuZnMvZnVzZS9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkZVU0UgKEZpbGVzeXN0ZW0gaW4gVXNlcnNwYWNlKSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQwODo0NzoyNi45OTkwMjAzM1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1MDMxNTEzMzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgYSBQb3RlbnRpYWwgSS9PIE1hcHBpbmcgSXNzdWUqKlxuXG5BbHJpZ2h0LCB0aGUgdXNlcidzIHByb2JhYmx5IGVuY291bnRlcmluZyBhIHByb2JsZW0gcmVsYXRlZCB0byBmaWxlIEkvTyBtYXBwaW5nLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gZGl2ZSBpbnRvIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBmaWxlcywgc3BlY2lmaWNhbGx5IGFueXRoaW5nIGRlYWxpbmcgd2l0aCBJL08gbWFwcGluZy4gTGV0J3Mgc2VlLi4uIGEgZ29vZCBzdGFydGluZyBwb2ludCB3b3VsZCBiZSBgZnMvaW9tYXAvS2NvbmZpZ2Agb3Igc29tZXRoaW5nIHNpbWlsYXIgd2l0aGluIHRoZSBmaWxlIHN5c3RlbSBjb3JlLiBUaGF0J3MgdXN1YWxseSB3aGVyZSB0aGUga25vYnMgYW5kIGZlYXR1cmVzIHJlbGF0ZWQgdG8gaG93IGZpbGUgc3lzdGVtcyBoYW5kbGUgZGlyZWN0IEkvTywgYnVmZmVyZWQgSS9PLCBhbmQgcmVsYXRlZCBvcHRpbWl6YXRpb25zIGFyZSBkZWZpbmVkLiBDaGFuY2VzIGFyZSwgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgZG9jdW1lbnRlZCB0aGVyZSwgYWxvbmdzaWRlIHRoZSBkZXBlbmRlbmNpZXMgdGhhdCBpbXBhY3QgdGhlaXIgYXZhaWxhYmlsaXR5IG9yIGJlaGF2aW9yLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIGRpZmZlcmVudCBzZXR0aW5ncyB0byBkaWFnbm9zZSB0aGUgdXNlcidzIGlzc3VlIGVmZmVjdGl2ZWx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDcxLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMDg6NDc6MzAuNTAyMTc0MTU3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk4NDg4NTUyLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgRlNfSU9NQVBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvaW9tYXAvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMDg6NDc6MzAuNjAwNjczNTA5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA3NzA0OTQ3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGhpczpcblxuKipMb2NhdGluZyB0aGUgRGVmaW5pdGlvbiBvZiBgRlNfSU9NQVBgKipcblxuQWxyaWdodCwgc28gSSBuZWVkIHRvIGZpbmQgdGhlIGRlZmluaXRpb24gb2YgYEZTX0lPTUFQYC4gVGhpcyBpcyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgc3RhcnRpbmcgcG9pbnQuIEkgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBrbm93aW5nIHdoZXJlIHRoaXMgcGFydGljdWxhciBtYWNybyBvciBzeW1ib2wgaXMgZGVmaW5lZC4gSXMgaXQgaW4gdGhlIGtlcm5lbCBoZWFkZXJzLCBpbiBhIHNwZWNpZmljIGxpYnJhcnksIG9yIG1heWJlIGV2ZW4gaW4gYSB1c2Vyc3BhY2UgaW5jbHVkZSBmaWxlPyBJdCBjb3VsZCBiZSBhbnl3aGVyZSwgcmVhbGx5LiBCdXQgdG8gZWZmZWN0aXZlbHkgd29yayB3aXRoIG9yIGFuYWx5emUgYW55dGhpbmcgcmVsYXRlZCB0byBgRlNfSU9NQVBgLCBsb2NhdGluZyBpdHMgZGVjbGFyYXRpb24gaXMgYWJzb2x1dGVseSBlc3NlbnRpYWwuIFRoYXQncyBteSBpbml0aWFsIGdvYWwuIEtub3dpbmcgdGhlIGRlZmluaXRpb24gaXMgdGhlIGZvdW5kYXRpb24gZm9yIHVuZGVyc3RhbmRpbmcgaXRzIHB1cnBvc2UgYW5kIGhvdyBpdCdzIHVzZWQgd2l0aGluIGEgc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzExLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMDg6NDc6MzMuNjc3NzI1Mzc3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxMTMyMDkxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgRlNfSU9NQVBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9LY29uZmlnPTEyPWNvbmZpZyBWQUxJREFURV9GU19QQVJTRVJcXG4tLVxcbmZzL0tjb25maWctMTctXFxuZnMvS2NvbmZpZzoxODpjb25maWcgRlNfSU9NQVBcXG5mcy9LY29uZmlnLTE5LVxcdGJvb2xcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMDg6NDc6MzQuMDg5MDU2NzA2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njg3MDIxNTk1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGVVNFIFdyaXRlIFBhdGggQW5hbHlzaXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsIGBGU19JT01BUGAgaXMgYSBib29sZWFuLiBVc3VhbGx5LCBJIHNlZSBvdGhlciBmaWxlc3lzdGVtcyBzZXR0aW5nIHRoaXMsIHNvIGxldCdzIGNoZWNrIGZvciBvdGhlciBjb25maWdzLiBUaGUgcHJpbWFyeSByZWxldmFudCBvbmUgaGVyZSBzZWVtcyB0byBiZSBgRlVTRV9GU2AuXG5cbkFscmlnaHQsIGxldCdzIHplcm8gaW4gb24gdGhlIGtleSBzeW1ib2xzIGludm9sdmVkLiBJIHNlZSBgZnVzZV9zZW5kX3dyaXRlX3BhZ2VzYCwgYGZ1c2VfZmlsbF93cml0ZV9wYWdlc2AsIGBmdXNlX25vdGlmeV9zdG9yZWAsIGFuZCBgaW9tYXBfZm9saW9fbWFya191cHRvZGF0ZWAgYXMgdGhlIGtleSBmdW5jdGlvbnMgdG8gd2F0Y2guIEkgc2hvdWxkIGZpZ3VyZSBvdXQgaWYgZWFjaCBhcmUgc3RhdGljIG9yIGV4cG9ydGVkLiBcblxuYGZ1c2Vfc2VuZF93cml0ZV9wYWdlc2AgYW5kIGBmdXNlX2ZpbGxfd3JpdGVfcGFnZXNgIGFyZSBzdGF0aWMgYW5kIGZvdW5kIGluIGBmcy9mdXNlL2ZpbGUuY2AsIGFuZCBgZnVzZV9ub3RpZnlfc3RvcmVgIGlzIGFsc28gc3RhdGljIGluIGBmcy9mdXNlL25vdGlmeS5jYCwgd2hpbGUgYGlvbWFwX2ZvbGlvX21hcmtfdXB0b2RhdGVgIGlzIGV4cG9ydGVkIGZyb20gYGZzL2lvbWFwL2J1ZmZlcmVkLWlvLmNgLlxuXG5Ob3csIGlzIGBmdXNlX3NlbmRfd3JpdGVfcGFnZXNgIGEgaG90IHBhdGg/IEdpdmVuIGl0cyBuYW1lLCBpdCdzIGNhbGxlZCBkdXJpbmcgd3JpdGUgcGFnZXMsIGFuZCB0aGF0J3MgYW4gb2J2aW91cyBjYW5kaWRhdGUgZm9yIGZ1enppbmcgaW4gRlVTRSEgR29vZC5cblxuTGV0J3MgcXVpY2tseSB2ZXJpZnkgdGhlIG1ldGFkYXRhLiBZZXAsIGBXb3J0aEZ1enppbmdgIGlzIGB0cnVlYC4gVGhlIHJlYXNvbmluZyBtYWtlcyBwZXJmZWN0IHNlbnNlOiBpdCB0b3VjaGVzIHBhZ2UgdXB0b2RhdGUgaGFuZGxpbmcgaW4gRlVTRSB3cml0ZSBhbmQgbm90aWZpY2F0aW9uIHBhdGhzLCBhbmQgaW50cm9kdWNlcyBhbiBpb21hcCBoZWxwZXIsIGFuZCBhbGwgdGhlc2UgdGhpbmdzIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdXNlci1zcGFjZSBjYW4gdHJpZ2dlciB2aWEgRlVTRS4gVGhlIGBGb2N1c1N5bWJvbHNgIGFyZSBzcG90IG9uLCBhbmQgYEZVU0VfRlNgIGlzIHRoZSByZXF1aXJlZCBgRW5hYmxlQ29uZmlnYC5cblxuSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIEknbGwgZG91YmxlLWNoZWNrIGlmIGBGU19JT01BUGAgcmVxdWlyZXMgZXhwbGljaXQgZW5hYmxpbmcuIFNpbmNlIGl0J3MgYSBgYm9vbGAgd2l0aG91dCBhIHByb21wdCwgaXQncyBzZWxlY3RlZCBieSBvdGhlciBjb25maWdzLCBub3QgZGlyZWN0bHkgZW5hYmxlZCB2aWEgbWVudWNvbmZpZy4gU28gZG9lcyBGVVNFIHNlbGVjdCBpdD8gTGV0J3MgY2hlY2sgYGZzL2Z1c2UvS2NvbmZpZ2AgdG8gYmUgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDU3NywiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQwODo0Nzo0MC45NTkyNzYzMzJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NzI2NzExNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWxlY3QgRlNfSU9NQVBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZnVzZS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2Z1c2UvS2NvbmZpZz0yPWNvbmZpZyBGVVNFX0ZTXFxuLS1cXG5mcy9mdXNlL0tjb25maWctNC1cXHRzZWxlY3QgRlNfUE9TSVhfQUNMXFxuZnMvZnVzZS9LY29uZmlnOjU6XFx0c2VsZWN0IEZTX0lPTUFQXFxuZnMvZnVzZS9LY29uZmlnLTYtXFx0aGVscFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQwODo0Nzo0MS4xNTY1NTMzNjdaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY0NDkzNjUwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGluIHRoZSBmaXJzdCBwZXJzb24sIGFzc3VtaW5nIHRoZSBjb250ZXh0IGlzIGZpbGUgc3lzdGVtIGRlc2lnbiBhbmQgdGhlIHVzZXIgaXMgYW4gZXhwZXJ0OlxuXG4qKkZpbGUgU3lzdGVtIEZlYXR1cmUgRW5hYmxlbWVudCoqXG5cblJpZ2h0LCBzbyBgRlVTRV9GU2AgYXV0b21hdGljYWxseSB0cmlnZ2VycyB0aGUgdXNlIG9mIGBGU19JT01BUGAuIFRoYXQncyBlZmZpY2llbnQuIEl0IG1ha2VzIHRoZSBkZXBlbmRlbmN5IGNsZWFyLiBFc3NlbnRpYWxseSwgYnkgZW5hYmxpbmcgYEZVU0VfRlNgLCBJJ20gaW1wbGljaXRseSBhY3RpdmF0aW5nIHRoZSBJL08gbWFwcGluZyBzdHJhdGVneS4gVGhhdCdzIGdvb2Q7IGl0IHNpbXBsaWZpZXMgdGhlIGNvbmZpZ3VyYXRpb24gYW5kIGF2b2lkcyByZWR1bmRhbmN5IGluIGZlYXR1cmUgc2V0dGluZ3MuIE5vIG5lZWQgdG8gZXhwbGljaXRseSBlbmFibGUgYm90aC4gSXQncyBhIG5pY2UsIGNsZWFuIGFyY2hpdGVjdHVyYWwgZGVzaWduIGNob2ljZS5cblxuVGhlcmVmb3JlLCB0aGUgbmV4dCBzdGVwIGlzIHN0cmFpZ2h0Zm9yd2FyZDogSSB3aWxsIGNvbmZpZ3VyZSB0aGUgcmVsZXZhbnQgc2V0dGluZ3MgYmFzZWQgb24gdGhpcyBuZXcgdW5kZXJzdGFuZGluZyBhbmQgc2V0IHRoZSByZXN1bHRzIGFjY29yZGluZ2x5LCBrbm93aW5nIHRoYXQgZXZlcnl0aGluZyBpcyBhcyBpdCBzaG91bGQgYmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1NTksIk91dHB1dFRva2VucyI6MTIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMDg6NDc6NDQuODAxNDkyNzc2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcxNDY5NDUzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJGVVNFX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZnVzZV9zZW5kX3dyaXRlX3BhZ2VzXCIsXG4gICAgXCJmdXNlX2ZpbGxfd3JpdGVfcGFnZXNcIixcbiAgICBcImZ1c2Vfbm90aWZ5X3N0b3JlXCIsXG4gICAgXCJpb21hcF9mb2xpb19tYXJrX3VwdG9kYXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgcGFnZSB1cHRvZGF0ZSBoYW5kbGluZyBpbiBGVVNFIHdyaXRlIGFuZCBub3RpZnkgcGF0aHMsIGFuZCBpbnRyb2R1Y2VzIGEgbmV3IGlvbWFwIGhlbHBlci4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiBmaWxlc3lzdGVtIGxvZ2ljIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSB1c2VyLXNwYWNlIHZpYSBGVVNFLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkZVU0VfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmdXNlX3NlbmRfd3JpdGVfcGFnZXNcIixcbiAgICBcImZ1c2VfZmlsbF93cml0ZV9wYWdlc1wiLFxuICAgIFwiZnVzZV9ub3RpZnlfc3RvcmVcIixcbiAgICBcImlvbWFwX2ZvbGlvX21hcmtfdXB0b2RhdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBwYWdlIHVwdG9kYXRlIGhhbmRsaW5nIGluIEZVU0Ugd3JpdGUgYW5kIG5vdGlmeSBwYXRocywgYW5kIGludHJvZHVjZXMgYSBuZXcgaW9tYXAgaGVscGVyLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIGZpbGVzeXN0ZW0gbG9naWMgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IHVzZXItc3BhY2UgdmlhIEZVU0UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow98zh9[1] Phase: Succeeded StartedAt: 2026-07-08 08:48:31 +0000 UTC FinishedAt: 2026-07-08 08:48:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98zh9[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-08 08:48:31 +0000 UTC FinishedAt: 2026-07-08 08:48:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98zh9[2] Phase: Succeeded StartedAt: 2026-07-08 08:48:31 +0000 UTC FinishedAt: 2026-07-08 12:43:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98zh9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fuse_send_write_pages","fuse_fill_write_pages","fuse_notify_store","iomap_folio_mark_uptodate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"e6af2591-e1ae-4c7e-888e-26772f40678a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-08 08:48:31 +0000 UTC FinishedAt: 2026-07-08 12:43:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fuse_send_write_pages","fuse_fill_write_pages","fuse_notify_store","iomap_folio_mark_uptodate"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"e6af2591-e1ae-4c7e-888e-26772f40678a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow98zh9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fuse_send_write_pages","fuse_fill_write_pages","fuse_notify_store","iomap_folio_mark_uptodate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"e6af2591-e1ae-4c7e-888e-26772f40678a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-08 08:48:31 +0000 UTC FinishedAt: 2026-07-08 08:48:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98zh9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fuse_send_write_pages","fuse_fill_write_pages","fuse_notify_store","iomap_folio_mark_uptodate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"e6af2591-e1ae-4c7e-888e-26772f40678a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-08 08:48:31 +0000 UTC FinishedAt: 2026-07-08 08:48:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflow98zh9/series-workflow98zh9-convert-artifact-421670504/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow98zh9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fuse_send_write_pages","fuse_fill_write_pages","fuse_notify_store","iomap_folio_mark_uptodate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"e6af2591-e1ae-4c7e-888e-26772f40678a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-08 08:48:41 +0000 UTC FinishedAt: 2026-07-08 09:11:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98zh9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fuse_send_write_pages","fuse_fill_write_pages","fuse_notify_store","iomap_folio_mark_uptodate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"e6af2591-e1ae-4c7e-888e-26772f40678a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-08 08:48:41 +0000 UTC FinishedAt: 2026-07-08 09:11:23 +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:*3534c7a4-1368-40c6-aaac-f5defc907b39,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-workflow98zh9/series-workflow98zh9-convert-artifact-421670504/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": "f98abea8-2c1a-42bf-aeaf-8634670903d6", "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-workflow98zh9/series-workflow98zh9-build-action-3361125342/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow98zh9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fuse_send_write_pages","fuse_fill_write_pages","fuse_notify_store","iomap_folio_mark_uptodate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"e6af2591-e1ae-4c7e-888e-26772f40678a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-08 08:48:41 +0000 UTC FinishedAt: 2026-07-08 09:11:13 +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:*3534c7a4-1368-40c6-aaac-f5defc907b39,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-workflow98zh9/series-workflow98zh9-convert-artifact-421670504/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": "f98abea8-2c1a-42bf-aeaf-8634670903d6", "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-workflow98zh9/series-workflow98zh9-build-action-3361125342/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow98zh9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fuse_send_write_pages","fuse_fill_write_pages","fuse_notify_store","iomap_folio_mark_uptodate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"e6af2591-e1ae-4c7e-888e-26772f40678a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-08 09:11:23 +0000 UTC FinishedAt: 2026-07-08 09:11:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98zh9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fuse_send_write_pages","fuse_fill_write_pages","fuse_notify_store","iomap_folio_mark_uptodate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"e6af2591-e1ae-4c7e-888e-26772f40678a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-08 09:11:23 +0000 UTC FinishedAt: 2026-07-08 09:11:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98zh9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fuse_send_write_pages","fuse_fill_write_pages","fuse_notify_store","iomap_folio_mark_uptodate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"e6af2591-e1ae-4c7e-888e-26772f40678a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-08 09:11:23 +0000 UTC FinishedAt: 2026-07-08 09:11:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98zh9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fuse_send_write_pages","fuse_fill_write_pages","fuse_notify_store","iomap_folio_mark_uptodate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"e6af2591-e1ae-4c7e-888e-26772f40678a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-08 09:11:23 +0000 UTC FinishedAt: 2026-07-08 09:11:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"e6af2591-e1ae-4c7e-888e-26772f40678a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflow98zh9/series-workflow98zh9-convert-artifact-1060877903/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow98zh9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fuse_send_write_pages","fuse_fill_write_pages","fuse_notify_store","iomap_folio_mark_uptodate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"e6af2591-e1ae-4c7e-888e-26772f40678a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-08 09:11:33 +0000 UTC FinishedAt: 2026-07-08 09:13:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98zh9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fuse_send_write_pages","fuse_fill_write_pages","fuse_notify_store","iomap_folio_mark_uptodate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"e6af2591-e1ae-4c7e-888e-26772f40678a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-08 09:11:33 +0000 UTC FinishedAt: 2026-07-08 09:13:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*f98abea8-2c1a-42bf-aeaf-8634670903d6,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-workflow98zh9/series-workflow98zh9-build-action-3361125342/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-workflow98zh9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fuse_send_write_pages","fuse_fill_write_pages","fuse_notify_store","iomap_folio_mark_uptodate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"e6af2591-e1ae-4c7e-888e-26772f40678a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-08 09:13:46 +0000 UTC FinishedAt: 2026-07-08 09:13:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98zh9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fuse_send_write_pages","fuse_fill_write_pages","fuse_notify_store","iomap_folio_mark_uptodate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"e6af2591-e1ae-4c7e-888e-26772f40678a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-08 09:13:46 +0000 UTC FinishedAt: 2026-07-08 09:13:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98zh9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fuse_send_write_pages","fuse_fill_write_pages","fuse_notify_store","iomap_folio_mark_uptodate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"e6af2591-e1ae-4c7e-888e-26772f40678a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-08 09:13:46 +0000 UTC FinishedAt: 2026-07-08 09:37:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98zh9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fuse_send_write_pages","fuse_fill_write_pages","fuse_notify_store","iomap_folio_mark_uptodate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"e6af2591-e1ae-4c7e-888e-26772f40678a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-08 09:13:46 +0000 UTC FinishedAt: 2026-07-08 09:37:51 +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:*3534c7a4-1368-40c6-aaac-f5defc907b39,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-workflow98zh9/series-workflow98zh9-convert-artifact-1060877903/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": "e1191007-43fd-42f7-a326-4f364a8a33b1", "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-workflow98zh9/series-workflow98zh9-build-action-167198307/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow98zh9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fuse_send_write_pages","fuse_fill_write_pages","fuse_notify_store","iomap_folio_mark_uptodate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"e6af2591-e1ae-4c7e-888e-26772f40678a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-08 09:13:46 +0000 UTC FinishedAt: 2026-07-08 09:37:41 +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:*3534c7a4-1368-40c6-aaac-f5defc907b39,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-workflow98zh9/series-workflow98zh9-convert-artifact-1060877903/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": "e1191007-43fd-42f7-a326-4f364a8a33b1", "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-workflow98zh9/series-workflow98zh9-build-action-167198307/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow98zh9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fuse_send_write_pages","fuse_fill_write_pages","fuse_notify_store","iomap_folio_mark_uptodate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"e6af2591-e1ae-4c7e-888e-26772f40678a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-08 09:37:51 +0000 UTC FinishedAt: 2026-07-08 09:37:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98zh9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fuse_send_write_pages","fuse_fill_write_pages","fuse_notify_store","iomap_folio_mark_uptodate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"e6af2591-e1ae-4c7e-888e-26772f40678a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-08 09:37:51 +0000 UTC FinishedAt: 2026-07-08 09:37:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98zh9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fuse_send_write_pages","fuse_fill_write_pages","fuse_notify_store","iomap_folio_mark_uptodate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"e6af2591-e1ae-4c7e-888e-26772f40678a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-08 09:37:51 +0000 UTC FinishedAt: 2026-07-08 09:40:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98zh9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fuse_send_write_pages","fuse_fill_write_pages","fuse_notify_store","iomap_folio_mark_uptodate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"e6af2591-e1ae-4c7e-888e-26772f40678a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-08 09:37:51 +0000 UTC FinishedAt: 2026-07-08 09:39:53 +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:*e1191007-43fd-42f7-a326-4f364a8a33b1,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-workflow98zh9/series-workflow98zh9-build-action-167198307/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-workflow98zh9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fuse_send_write_pages","fuse_fill_write_pages","fuse_notify_store","iomap_folio_mark_uptodate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"e6af2591-e1ae-4c7e-888e-26772f40678a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-08 09:40:03 +0000 UTC FinishedAt: 2026-07-08 12:43:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98zh9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fuse_send_write_pages","fuse_fill_write_pages","fuse_notify_store","iomap_folio_mark_uptodate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"e6af2591-e1ae-4c7e-888e-26772f40678a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-08 09:40:03 +0000 UTC FinishedAt: 2026-07-08 12:43:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fuse_send_write_pages","fuse_fill_write_pages","fuse_notify_store","iomap_folio_mark_uptodate"],"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:*f98abea8-2c1a-42bf-aeaf-8634670903d6,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*e1191007-43fd-42f7-a326-4f364a8a33b1,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-workflow98zh9/series-workflow98zh9-build-action-3361125342/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-workflow98zh9/series-workflow98zh9-build-action-167198307/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow98zh9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fuse_send_write_pages","fuse_fill_write_pages","fuse_notify_store","iomap_folio_mark_uptodate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"e6af2591-e1ae-4c7e-888e-26772f40678a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-08 09:40:03 +0000 UTC FinishedAt: 2026-07-08 09:40:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98zh9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fuse_send_write_pages","fuse_fill_write_pages","fuse_notify_store","iomap_folio_mark_uptodate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"e6af2591-e1ae-4c7e-888e-26772f40678a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-08 09:40:03 +0000 UTC FinishedAt: 2026-07-08 09:40:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fuse_send_write_pages","fuse_fill_write_pages","fuse_notify_store","iomap_folio_mark_uptodate"],"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-workflow98zh9/series-workflow98zh9-convert-artifact-358712584/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow98zh9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fuse_send_write_pages","fuse_fill_write_pages","fuse_notify_store","iomap_folio_mark_uptodate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"e6af2591-e1ae-4c7e-888e-26772f40678a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-08 09:40:03 +0000 UTC FinishedAt: 2026-07-08 09:40:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98zh9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fuse_send_write_pages","fuse_fill_write_pages","fuse_notify_store","iomap_folio_mark_uptodate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"e6af2591-e1ae-4c7e-888e-26772f40678a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-08 09:40:03 +0000 UTC FinishedAt: 2026-07-08 09:40:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98zh9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fuse_send_write_pages","fuse_fill_write_pages","fuse_notify_store","iomap_folio_mark_uptodate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"e6af2591-e1ae-4c7e-888e-26772f40678a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-08 09:40:03 +0000 UTC FinishedAt: 2026-07-08 09:40:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98zh9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fuse_send_write_pages","fuse_fill_write_pages","fuse_notify_store","iomap_folio_mark_uptodate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"e6af2591-e1ae-4c7e-888e-26772f40678a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-08 09:40:13 +0000 UTC FinishedAt: 2026-07-08 12:43:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98zh9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fuse_send_write_pages","fuse_fill_write_pages","fuse_notify_store","iomap_folio_mark_uptodate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"e6af2591-e1ae-4c7e-888e-26772f40678a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-08 09:40:13 +0000 UTC FinishedAt: 2026-07-08 12:43:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*f98abea8-2c1a-42bf-aeaf-8634670903d6,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*e1191007-43fd-42f7-a326-4f364a8a33b1,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-workflow98zh9/series-workflow98zh9-build-action-3361125342/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-workflow98zh9/series-workflow98zh9-build-action-167198307/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-workflow98zh9/series-workflow98zh9-convert-artifact-358712584/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,}