Name: series-workflownc9kz Phase: Succeeded StartedAt: 2026-07-16 11:39:30 +0000 UTC FinishedAt: 2026-07-16 14:04:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflownc9kz[0] Phase: Succeeded StartedAt: 2026-07-16 11:39:31 +0000 UTC FinishedAt: 2026-07-16 12:01:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflownc9kz[0].run-triage Phase: Succeeded StartedAt: 2026-07-16 11:39:31 +0000 UTC FinishedAt: 2026-07-16 12:01:00 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "58717b2a1365d06c8c64b72aa948541b53fe31eb", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_9P", "NET_9P_FD", "9P_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "58717b2a1365d06c8c64b72aa948541b53fe31eb", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_9P", "NET_9P_FD", "9P_FS" ], "series_id": "9213aec5-dc39-4a75-b59e-3cbfa4f99e79" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "p9_client_abort", "p9_read_work", "p9_client_rpc", "p9_client_zc_rpc" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDEyOjAwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF85UCYjMzQ7LAogICAgJiMzNDtORVRfOVBfRkQmIzM0OywKICAgICYjMzQ7OVBfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwOV9jbGllbnRfYWJvcnQmIzM0OywKICAgICYjMzQ7cDlfcmVhZF93b3JrJiMzNDssCiAgICAmIzM0O3A5X2NsaWVudF9ycGMmIzM0OywKICAgICYjMzQ7cDlfY2xpZW50X3pjX3JwYyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgOXAgY2xpZW50IGFuZCB0cmFuc3BvcnQgY29kZSB0byBoYW5kbGUgZmF0YWwgc2lnbmFscyBieSBhYm9ydGluZyByZXF1ZXN0cyBpbnN0ZWFkIG9mIHdhaXRpbmcgZm9yIFRGTFVTSC4gSXQgaW50cm9kdWNlcyBhIG5ldyByZXF1ZXN0IHN0YXR1cyBSRVFfU1RBVFVTX0FCT1JURUQgYW5kIG1vZGlmaWVzIHA5X2NsaWVudF9ycGMsIHA5X2NsaWVudF96Y19ycGMsIGFuZCBwOV9yZWFkX3dvcmsgdG8gaGFuZGxlIGl0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgOXAgY2xpZW50IGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDEyOjAwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNDA0ZDg4MjM4YTM5MWNjMDlhMzMyZjYwZjE0YTU3M2UxMTc1ZjQ1MFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDE2IDEyOjAwOjExIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LzlwL2NsaWVudC5oIGIvaW5jbHVkZS9uZXQvOXAvY2xpZW50LmhcbmluZGV4IDU1YzZjYjU0YmQyNTQ4Li43MDBkY2IzN2MxZGM0MCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0LzlwL2NsaWVudC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC85cC9jbGllbnQuaFxuQEAgLTU4LDYgJiM0Mzs1OCw4IEBAIGVudW0gcDlfdHJhbnNfc3RhdHVzIHtcbiAgKiBAUkVRX1NUQVRVU19VTlNFTlQ6IHJlcXVlc3Qgd2FpdGluZyB0byBiZSBzZW50XG4gICogQFJFUV9TVEFUVVNfU0VOVDogcmVxdWVzdCBzZW50IHRvIHNlcnZlclxuICAqIEBSRVFfU1RBVFVTX1JDVkQ6IHJlc3BvbnNlIHJlY2VpdmVkIGZyb20gc2VydmVyXG4mIzQzOyAqIEBSRVFfU1RBVFVTX0FCT1JURUQ6IGNhbGxlciBzdG9wcGVkIHdhaXRpbmcsIGJ1dCB0aGUgcmVxdWVzdCBrZWVwcyBpdHMgdGFnXG4mIzQzOyAqICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkIHVudGlsIGEgcmVwbHkgYXJyaXZlcyBvciB0aGUgdHJhbnNwb3J0IGNsb3Nlc1xuICAqIEBSRVFfU1RBVFVTX0ZMU0hEOiByZXF1ZXN0IGhhcyBiZWVuIGZsdXNoZWRcbiAgKiBAUkVRX1NUQVRVU19FUlJPUjogcmVxdWVzdCBlbmNvdW50ZXJlZCBhbiBlcnJvciBvbiB0aGUgY2xpZW50IHNpZGVcbiAgKi9cbkBAIC02Nyw2ICYjNDM7NjksNyBAQCBlbnVtIHA5X3JlcV9zdGF0dXNfdCB7XG4gXHRSRVFfU1RBVFVTX1VOU0VOVCxcbiBcdFJFUV9TVEFUVVNfU0VOVCxcbiBcdFJFUV9TVEFUVVNfUkNWRCxcbiYjNDM7XHRSRVFfU1RBVFVTX0FCT1JURUQsXG4gXHRSRVFfU1RBVFVTX0ZMU0hELFxuIFx0UkVRX1NUQVRVU19FUlJPUixcbiB9O1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LzlwL3RyYW5zcG9ydC5oIGIvaW5jbHVkZS9uZXQvOXAvdHJhbnNwb3J0LmhcbmluZGV4IGE5MTJiYmFhODYyZjliLi45MzM0OWZlMzNkZmY0MCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0LzlwL3RyYW5zcG9ydC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC85cC90cmFuc3BvcnQuaFxuQEAgLTM0LDYgJiM0MzszNCw5IEBAXG4gICogQHN1cHBvcnRzX3ZtYWxsb2M6IHNldCBpZiB0aGlzIHRyYW5zcG9ydCBjYW4gd29yayB3aXRoIHZtYWxsb2MmIzM5O2QgYnVmZmVyc1xuICAqICAgICAgICAgICAgICAgICAgICAobm9uLXBoeXNpY2FsbHkgY29udGlndW91cyBtZW1vcnkpLiBUcmFuc3BvcnRzIHJlcXVpcmluZ1xuICAqICAgICAgICAgICAgICAgICAgICBETUEgc2hvdWxkIGxlYXZlIHRoaXMgYXMgZmFsc2UuXG4mIzQzOyAqIEBzdXBwb3J0c19hc3luY19hYm9ydDogc2V0IGlmIGEgc2VudCByZXF1ZXN0IHJlbWFpbnMgcmVmZXJlbmNlZCBieSB0aGVcbiYjNDM7ICogICAgICAgICAgICAgICAgICAgICAgICB0cmFuc3BvcnQgdW50aWwgaXRzIHJlcGx5IGlzIGNvbnN1bWVkIG9yIHRoZVxuJiM0MzsgKiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9ydCBpcyBjbG9zZWRcbiAgKiBAY3JlYXRlOiBtZW1iZXIgZnVuY3Rpb24gdG8gY3JlYXRlIGEgbmV3IGNvbm5lY3Rpb24gb24gdGhpcyB0cmFuc3BvcnRcbiAgKiBAY2xvc2U6IG1lbWJlciBmdW5jdGlvbiB0byBkaXNjYXJkIGEgY29ubmVjdGlvbiBvbiB0aGlzIHRyYW5zcG9ydFxuICAqIEByZXF1ZXN0OiBtZW1iZXIgZnVuY3Rpb24gdG8gaXNzdWUgYSByZXF1ZXN0IHRvIHRoZSB0cmFuc3BvcnRcbkBAIC01NSw2ICYjNDM7NTgsNyBAQCBzdHJ1Y3QgcDlfdHJhbnNfbW9kdWxlIHtcbiBcdGJvb2wgcG9vbGVkX3JidWZmZXJzO1xuIFx0Ym9vbCBkZWY7XHRcdC8qIHRoaXMgdHJhbnNwb3J0IHNob3VsZCBiZSBkZWZhdWx0ICovXG4gXHRib29sIHN1cHBvcnRzX3ZtYWxsb2M7XHQvKiBjYW4gd29yayB3aXRoIHZtYWxsb2MmIzM5O2QgYnVmZmVycyAqL1xuJiM0MztcdGJvb2wgc3VwcG9ydHNfYXN5bmNfYWJvcnQ7IC8qIGtlZXBzIHNlbnQgcmVxdWVzdHMgYWxpdmUgYWZ0ZXIgY2FsbGVyIGV4aXRzICovXG4gXHRzdHJ1Y3QgbW9kdWxlICpvd25lcjtcbiBcdGludCAoKmNyZWF0ZSkoc3RydWN0IHA5X2NsaWVudCAqY2xpZW50LFxuIFx0XHQgICAgICBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpO1xuZGlmZiAtLWdpdCBhL25ldC85cC9jbGllbnQuYyBiL25ldC85cC9jbGllbnQuY1xuaW5kZXggZWY2NDU0NmM2ZDUyYTEuLjQ3MzUzY2YwNzUwZGRmIDEwMDY0NFxuLS0tIGEvbmV0LzlwL2NsaWVudC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvOXAvY2xpZW50LmNcbkBAIC01MzgsNiAmIzQzOzUzOCwyMiBAQCBzdGF0aWMgc3RydWN0IHA5X3JlcV90ICpwOV9jbGllbnRfcHJlcGFyZV9yZXEoc3RydWN0IHA5X2NsaWVudCAqYyxcbiBcdHJldHVybiBFUlJfUFRSKGVycik7XG4gfVxuIFxuJiM0MztzdGF0aWMgdm9pZCBwOV9jbGllbnRfYWJvcnQoc3RydWN0IHA5X2NsaWVudCAqYywgc3RydWN0IHA5X3JlcV90ICpyZXEpXG4mIzQzO3tcbiYjNDM7XHQvKlxuJiM0MztcdCAqIEEgZmF0YWwgc2lnbmFsIGNhbm5vdCB3YWl0IGZvciBURkxVU0gsIGJ1dCBhIHNlbnQgcmVxdWVzdCBtdXN0IGtlZXBcbiYjNDM7XHQgKiBpdHMgdGFnIHVudGlsIGEgbGF0ZSByZXBseSBhcnJpdmVzIG9yIHRoZSB0cmFuc3BvcnQgaXMgdG9ybiBkb3duLlxuJiM0MztcdCAqL1xuJiM0MztcdGlmICghYy1cdTAwM2V0cmFuc19tb2QtXHUwMDNlc3VwcG9ydHNfYXN5bmNfYWJvcnQgfHxcbiYjNDM7XHQgICAgUkVBRF9PTkNFKHJlcS1cdTAwM2VzdGF0dXMpIFx1MDAzZT0gUkVRX1NUQVRVU19SQ1ZEKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHRpZiAoIWMtXHUwMDNldHJhbnNfbW9kLVx1MDAzZWNhbmNlbChjLCByZXEpKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHRjbXB4Y2hnKFx1MDAyNnJlcS1cdTAwM2VzdGF0dXMsIFJFUV9TVEFUVVNfU0VOVCwgUkVRX1NUQVRVU19BQk9SVEVEKTtcbiYjNDM7fVxuJiM0MztcbiAvKipcbiAgKiBwOV9jbGllbnRfcnBjIC0gaXNzdWUgYSByZXF1ZXN0IGFuZCB3YWl0IGZvciBhIHJlc3BvbnNlXG4gICogQGM6IGNsaWVudCBzZXNzaW9uXG5AQCAtNjEyLDYgJiM0Mzs2MjgsMjAgQEAgcDlfY2xpZW50X3JwYyhzdHJ1Y3QgcDlfY2xpZW50ICpjLCBpbnQ4X3QgdHlwZSwgY29uc3QgY2hhciAqZm10LCAuLi4pXG4gXHRcdGVyciA9IHJlcS1cdTAwM2V0X2VycjtcbiBcdH1cbiBcdGlmIChlcnIgPT0gLUVSRVNUQVJUU1lTIFx1MDAyNlx1MDAyNiBjLVx1MDAzZXN0YXR1cyA9PSBDb25uZWN0ZWQpIHtcbiYjNDM7XHRcdGlmIChSRUFEX09OQ0UocmVxLVx1MDAzZXN0YXR1cykgPT0gUkVRX1NUQVRVU19SQ1ZEKSB7XG4mIzQzO1x0XHRcdGVyciA9IDA7XG4mIzQzO1x0XHRcdGdvdG8gcmVjYWxjX3NpZ3BlbmRpbmc7XG4mIzQzO1x0XHR9XG4mIzQzO1xuJiM0MztcdFx0aWYgKGZhdGFsX3NpZ25hbF9wZW5kaW5nKGN1cnJlbnQpIFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0ICAgIGMtXHUwMDNldHJhbnNfbW9kLVx1MDAzZXN1cHBvcnRzX2FzeW5jX2Fib3J0KSB7XG4mIzQzO1x0XHRcdHA5X2RlYnVnKFA5X0RFQlVHX01VWCwgXCYjMzQ7ZmF0YWwgc2lnbmFsOiBza2lwIGZsdXNoXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdFx0cDlfY2xpZW50X2Fib3J0KGMsIHJlcSk7XG4mIzQzO1x0XHRcdGlmIChSRUFEX09OQ0UocmVxLVx1MDAzZXN0YXR1cykgPT0gUkVRX1NUQVRVU19SQ1ZEKVxuJiM0MztcdFx0XHRcdGVyciA9IDA7XG4mIzQzO1x0XHRcdGdvdG8gcmVjYWxjX3NpZ3BlbmRpbmc7XG4mIzQzO1x0XHR9XG4mIzQzO1xuIFx0XHRwOV9kZWJ1ZyhQOV9ERUJVR19NVVgsIFwmIzM0O2ZsdXNoaW5nXFxuXCYjMzQ7KTtcbiBcdFx0c2lncGVuZGluZyA9IDE7XG4gXHRcdGNsZWFyX3RocmVhZF9mbGFnKFRJRl9TSUdQRU5ESU5HKTtcbkBAIC02OTcsNiAmIzQzOzcyNywxMSBAQCBzdGF0aWMgc3RydWN0IHA5X3JlcV90ICpwOV9jbGllbnRfemNfcnBjKHN0cnVjdCBwOV9jbGllbnQgKmMsIGludDhfdCB0eXBlLFxuIFx0XHRlcnIgPSByZXEtXHUwMDNldF9lcnI7XG4gXHR9XG4gXHRpZiAoZXJyID09IC1FUkVTVEFSVFNZUyBcdTAwMjZcdTAwMjYgYy1cdTAwM2VzdGF0dXMgPT0gQ29ubmVjdGVkKSB7XG4mIzQzO1x0XHRpZiAoUkVBRF9PTkNFKHJlcS1cdTAwM2VzdGF0dXMpID09IFJFUV9TVEFUVVNfUkNWRCkge1xuJiM0MztcdFx0XHRlcnIgPSAwO1xuJiM0MztcdFx0XHRnb3RvIHJlY2FsY19zaWdwZW5kaW5nO1xuJiM0MztcdFx0fVxuJiM0MztcbiBcdFx0cDlfZGVidWcoUDlfREVCVUdfTVVYLCBcJiMzNDtmbHVzaGluZ1xcblwmIzM0Oyk7XG4gXHRcdHNpZ3BlbmRpbmcgPSAxO1xuIFx0XHRjbGVhcl90aHJlYWRfZmxhZyhUSUZfU0lHUEVORElORyk7XG5kaWZmIC0tZ2l0IGEvbmV0LzlwL3RyYW5zX2ZkLmMgYi9uZXQvOXAvdHJhbnNfZmQuY1xuaW5kZXggZWI2ODViNTJhZWIyNjQuLmQ1Y2ZmOGMyYzg4Y2RjIDEwMDY0NFxuLS0tIGEvbmV0LzlwL3RyYW5zX2ZkLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC85cC90cmFuc19mZC5jXG5AQCAtMjkzLDcgJiM0MzsyOTMsOSBAQCBzdGF0aWMgdm9pZCBwOV9yZWFkX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0XHRcdCBtLCBtLVx1MDAzZXJjLnNpemUsIG0tXHUwMDNlcmMudGFnKTtcbiBcbiBcdFx0bS1cdTAwM2VycmVxID0gcDlfdGFnX2xvb2t1cChtLVx1MDAzZWNsaWVudCwgbS1cdTAwM2VyYy50YWcpO1xuLVx0XHRpZiAoIW0tXHUwMDNlcnJlcSB8fCAobS1cdTAwM2VycmVxLVx1MDAzZXN0YXR1cyAhPSBSRVFfU1RBVFVTX1NFTlQpKSB7XG4mIzQzO1x0XHRpZiAoIW0tXHUwMDNlcnJlcSB8fFxuJiM0MztcdFx0ICAgIChtLVx1MDAzZXJyZXEtXHUwMDNlc3RhdHVzICE9IFJFUV9TVEFUVVNfU0VOVCBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdCAgICAgbS1cdTAwM2VycmVxLVx1MDAzZXN0YXR1cyAhPSBSRVFfU1RBVFVTX0FCT1JURUQpKSB7XG4gXHRcdFx0cDlfZGVidWcoUDlfREVCVUdfRVJST1IsIFwmIzM0O1VuZXhwZWN0ZWQgcGFja2V0IHRhZyAlZFxcblwmIzM0OyxcbiBcdFx0XHRcdCBtLVx1MDAzZXJjLnRhZyk7XG4gXHRcdFx0ZXJyID0gLUVJTztcbkBAIC0zMzIsNiAmIzQzOzMzNCw5IEBAIHN0YXRpYyB2b2lkIHA5X3JlYWRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXHRcdGlmIChtLVx1MDAzZXJyZXEtXHUwMDNlc3RhdHVzID09IFJFUV9TVEFUVVNfU0VOVCkge1xuIFx0XHRcdGxpc3RfZGVsKFx1MDAyNm0tXHUwMDNlcnJlcS1cdTAwM2VyZXFfbGlzdCk7XG4gXHRcdFx0cDlfY2xpZW50X2NiKG0tXHUwMDNlY2xpZW50LCBtLVx1MDAzZXJyZXEsIFJFUV9TVEFUVVNfUkNWRCk7XG4mIzQzO1x0XHR9IGVsc2UgaWYgKG0tXHUwMDNlcnJlcS1cdTAwM2VzdGF0dXMgPT0gUkVRX1NUQVRVU19BQk9SVEVEKSB7XG4mIzQzO1x0XHRcdGxpc3RfZGVsKFx1MDAyNm0tXHUwMDNlcnJlcS1cdTAwM2VyZXFfbGlzdCk7XG4mIzQzO1x0XHRcdHA5X2NsaWVudF9jYihtLVx1MDAzZWNsaWVudCwgbS1cdTAwM2VycmVxLCBSRVFfU1RBVFVTX0FCT1JURUQpO1xuIFx0XHR9IGVsc2UgaWYgKG0tXHUwMDNlcnJlcS1cdTAwM2VzdGF0dXMgPT0gUkVRX1NUQVRVU19GTFNIRCkge1xuIFx0XHRcdC8qIElnbm9yZSByZXBsaWVzIGFzc29jaWF0ZWQgd2l0aCBhIGNhbmNlbGxlZCByZXF1ZXN0LiAqL1xuIFx0XHRcdHA5X2RlYnVnKFA5X0RFQlVHX1RSQU5TLFxuQEAgLTk5Niw2ICYjNDM7MTAwMSw3IEBAIHN0YXRpYyBzdHJ1Y3QgcDlfdHJhbnNfbW9kdWxlIHA5X3RjcF90cmFucyA9IHtcbiBcdC5wb29sZWRfcmJ1ZmZlcnMgPSBmYWxzZSxcbiBcdC5kZWYgPSBmYWxzZSxcbiBcdC5zdXBwb3J0c192bWFsbG9jID0gdHJ1ZSxcbiYjNDM7XHQuc3VwcG9ydHNfYXN5bmNfYWJvcnQgPSB0cnVlLFxuIFx0LmNyZWF0ZSA9IHA5X2ZkX2NyZWF0ZV90Y3AsXG4gXHQuY2xvc2UgPSBwOV9mZF9jbG9zZSxcbiBcdC5yZXF1ZXN0ID0gcDlfZmRfcmVxdWVzdCxcbkBAIC0xMDExLDYgJiM0MzsxMDE3LDcgQEAgc3RhdGljIHN0cnVjdCBwOV90cmFuc19tb2R1bGUgcDlfdW5peF90cmFucyA9IHtcbiBcdC5tYXhzaXplID0gTUFYX1NPQ0tfQlVGLFxuIFx0LmRlZiA9IGZhbHNlLFxuIFx0LnN1cHBvcnRzX3ZtYWxsb2MgPSB0cnVlLFxuJiM0MztcdC5zdXBwb3J0c19hc3luY19hYm9ydCA9IHRydWUsXG4gXHQuY3JlYXRlID0gcDlfZmRfY3JlYXRlX3VuaXgsXG4gXHQuY2xvc2UgPSBwOV9mZF9jbG9zZSxcbiBcdC5yZXF1ZXN0ID0gcDlfZmRfcmVxdWVzdCxcbkBAIC0xMDI2LDYgJiM0MzsxMDMzLDcgQEAgc3RhdGljIHN0cnVjdCBwOV90cmFuc19tb2R1bGUgcDlfZmRfdHJhbnMgPSB7XG4gXHQubWF4c2l6ZSA9IE1BWF9TT0NLX0JVRixcbiBcdC5kZWYgPSBmYWxzZSxcbiBcdC5zdXBwb3J0c192bWFsbG9jID0gdHJ1ZSxcbiYjNDM7XHQuc3VwcG9ydHNfYXN5bmNfYWJvcnQgPSB0cnVlLFxuIFx0LmNyZWF0ZSA9IHA5X2ZkX2NyZWF0ZSxcbiBcdC5jbG9zZSA9IHA5X2ZkX2Nsb3NlLFxuIFx0LnJlcXVlc3QgPSBwOV9mZF9yZXF1ZXN0LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDEyOjAwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF85UCYjMzQ7LAogICAgJiMzNDtORVRfOVBfRkQmIzM0OywKICAgICYjMzQ7OVBfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwOV9jbGllbnRfYWJvcnQmIzM0OywKICAgICYjMzQ7cDlfcmVhZF93b3JrJiMzNDssCiAgICAmIzM0O3A5X2NsaWVudF9ycGMmIzM0OywKICAgICYjMzQ7cDlfY2xpZW50X3pjX3JwYyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgOXAgY2xpZW50IGFuZCB0cmFuc3BvcnQgY29kZSB0byBoYW5kbGUgZmF0YWwgc2lnbmFscyBieSBhYm9ydGluZyByZXF1ZXN0cyBpbnN0ZWFkIG9mIHdhaXRpbmcgZm9yIFRGTFVTSC4gSXQgaW50cm9kdWNlcyBhIG5ldyByZXF1ZXN0IHN0YXR1cyBSRVFfU1RBVFVTX0FCT1JURUQgYW5kIG1vZGlmaWVzIHA5X2NsaWVudF9ycGMsIHA5X2NsaWVudF96Y19ycGMsIGFuZCBwOV9yZWFkX3dvcmsgdG8gaGFuZGxlIGl0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgOXAgY2xpZW50IGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA0MDRkODgyMzhhMzkxY2MwOWEzMzJmNjBmMTRhNTczZTExNzVmNDUwCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdWwgMTYgMTI6MDA6MTEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC85cC9jbGllbnQuaCBiL2luY2x1ZGUvbmV0LzlwL2NsaWVudC5oCmluZGV4IDU1YzZjYjU0YmQyNTQ4Li43MDBkY2IzN2MxZGM0MCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvOXAvY2xpZW50LmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvOXAvY2xpZW50LmgKQEAgLTU4LDYgJiM0Mzs1OCw4IEBAIGVudW0gcDlfdHJhbnNfc3RhdHVzIHsKICAqIEBSRVFfU1RBVFVTX1VOU0VOVDogcmVxdWVzdCB3YWl0aW5nIHRvIGJlIHNlbnQKICAqIEBSRVFfU1RBVFVTX1NFTlQ6IHJlcXVlc3Qgc2VudCB0byBzZXJ2ZXIKICAqIEBSRVFfU1RBVFVTX1JDVkQ6IHJlc3BvbnNlIHJlY2VpdmVkIGZyb20gc2VydmVyCiYjNDM7ICogQFJFUV9TVEFUVVNfQUJPUlRFRDogY2FsbGVyIHN0b3BwZWQgd2FpdGluZywgYnV0IHRoZSByZXF1ZXN0IGtlZXBzIGl0cyB0YWcKJiM0MzsgKiAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCB1bnRpbCBhIHJlcGx5IGFycml2ZXMgb3IgdGhlIHRyYW5zcG9ydCBjbG9zZXMKICAqIEBSRVFfU1RBVFVTX0ZMU0hEOiByZXF1ZXN0IGhhcyBiZWVuIGZsdXNoZWQKICAqIEBSRVFfU1RBVFVTX0VSUk9SOiByZXF1ZXN0IGVuY291bnRlcmVkIGFuIGVycm9yIG9uIHRoZSBjbGllbnQgc2lkZQogICovCkBAIC02Nyw2ICYjNDM7NjksNyBAQCBlbnVtIHA5X3JlcV9zdGF0dXNfdCB7CiAJUkVRX1NUQVRVU19VTlNFTlQsCiAJUkVRX1NUQVRVU19TRU5ULAogCVJFUV9TVEFUVVNfUkNWRCwKJiM0MzsJUkVRX1NUQVRVU19BQk9SVEVELAogCVJFUV9TVEFUVVNfRkxTSEQsCiAJUkVRX1NUQVRVU19FUlJPUiwKIH07CmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC85cC90cmFuc3BvcnQuaCBiL2luY2x1ZGUvbmV0LzlwL3RyYW5zcG9ydC5oCmluZGV4IGE5MTJiYmFhODYyZjliLi45MzM0OWZlMzNkZmY0MCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvOXAvdHJhbnNwb3J0LmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvOXAvdHJhbnNwb3J0LmgKQEAgLTM0LDYgJiM0MzszNCw5IEBACiAgKiBAc3VwcG9ydHNfdm1hbGxvYzogc2V0IGlmIHRoaXMgdHJhbnNwb3J0IGNhbiB3b3JrIHdpdGggdm1hbGxvYyYjMzk7ZCBidWZmZXJzCiAgKiAgICAgICAgICAgICAgICAgICAgKG5vbi1waHlzaWNhbGx5IGNvbnRpZ3VvdXMgbWVtb3J5KS4gVHJhbnNwb3J0cyByZXF1aXJpbmcKICAqICAgICAgICAgICAgICAgICAgICBETUEgc2hvdWxkIGxlYXZlIHRoaXMgYXMgZmFsc2UuCiYjNDM7ICogQHN1cHBvcnRzX2FzeW5jX2Fib3J0OiBzZXQgaWYgYSBzZW50IHJlcXVlc3QgcmVtYWlucyByZWZlcmVuY2VkIGJ5IHRoZQomIzQzOyAqICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3J0IHVudGlsIGl0cyByZXBseSBpcyBjb25zdW1lZCBvciB0aGUKJiM0MzsgKiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9ydCBpcyBjbG9zZWQKICAqIEBjcmVhdGU6IG1lbWJlciBmdW5jdGlvbiB0byBjcmVhdGUgYSBuZXcgY29ubmVjdGlvbiBvbiB0aGlzIHRyYW5zcG9ydAogICogQGNsb3NlOiBtZW1iZXIgZnVuY3Rpb24gdG8gZGlzY2FyZCBhIGNvbm5lY3Rpb24gb24gdGhpcyB0cmFuc3BvcnQKICAqIEByZXF1ZXN0OiBtZW1iZXIgZnVuY3Rpb24gdG8gaXNzdWUgYSByZXF1ZXN0IHRvIHRoZSB0cmFuc3BvcnQKQEAgLTU1LDYgJiM0Mzs1OCw3IEBAIHN0cnVjdCBwOV90cmFuc19tb2R1bGUgewogCWJvb2wgcG9vbGVkX3JidWZmZXJzOwogCWJvb2wgZGVmOwkJLyogdGhpcyB0cmFuc3BvcnQgc2hvdWxkIGJlIGRlZmF1bHQgKi8KIAlib29sIHN1cHBvcnRzX3ZtYWxsb2M7CS8qIGNhbiB3b3JrIHdpdGggdm1hbGxvYyYjMzk7ZCBidWZmZXJzICovCiYjNDM7CWJvb2wgc3VwcG9ydHNfYXN5bmNfYWJvcnQ7IC8qIGtlZXBzIHNlbnQgcmVxdWVzdHMgYWxpdmUgYWZ0ZXIgY2FsbGVyIGV4aXRzICovCiAJc3RydWN0IG1vZHVsZSAqb3duZXI7CiAJaW50ICgqY3JlYXRlKShzdHJ1Y3QgcDlfY2xpZW50ICpjbGllbnQsCiAJCSAgICAgIHN0cnVjdCBmc19jb250ZXh0ICpmYyk7CmRpZmYgLS1naXQgYS9uZXQvOXAvY2xpZW50LmMgYi9uZXQvOXAvY2xpZW50LmMKaW5kZXggZWY2NDU0NmM2ZDUyYTEuLjQ3MzUzY2YwNzUwZGRmIDEwMDY0NAotLS0gYS9uZXQvOXAvY2xpZW50LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0LzlwL2NsaWVudC5jCkBAIC01MzgsNiAmIzQzOzUzOCwyMiBAQCBzdGF0aWMgc3RydWN0IHA5X3JlcV90ICpwOV9jbGllbnRfcHJlcGFyZV9yZXEoc3RydWN0IHA5X2NsaWVudCAqYywKIAlyZXR1cm4gRVJSX1BUUihlcnIpOwogfQogCiYjNDM7c3RhdGljIHZvaWQgcDlfY2xpZW50X2Fib3J0KHN0cnVjdCBwOV9jbGllbnQgKmMsIHN0cnVjdCBwOV9yZXFfdCAqcmVxKQomIzQzO3sKJiM0MzsJLyoKJiM0MzsJICogQSBmYXRhbCBzaWduYWwgY2Fubm90IHdhaXQgZm9yIFRGTFVTSCwgYnV0IGEgc2VudCByZXF1ZXN0IG11c3Qga2VlcAomIzQzOwkgKiBpdHMgdGFnIHVudGlsIGEgbGF0ZSByZXBseSBhcnJpdmVzIG9yIHRoZSB0cmFuc3BvcnQgaXMgdG9ybiBkb3duLgomIzQzOwkgKi8KJiM0MzsJaWYgKCFjLSZndDt0cmFuc19tb2QtJmd0O3N1cHBvcnRzX2FzeW5jX2Fib3J0IHx8CiYjNDM7CSAgICBSRUFEX09OQ0UocmVxLSZndDtzdGF0dXMpICZndDs9IFJFUV9TVEFUVVNfUkNWRCkKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJaWYgKCFjLSZndDt0cmFuc19tb2QtJmd0O2NhbmNlbChjLCByZXEpKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwljbXB4Y2hnKCZhbXA7cmVxLSZndDtzdGF0dXMsIFJFUV9TVEFUVVNfU0VOVCwgUkVRX1NUQVRVU19BQk9SVEVEKTsKJiM0Mzt9CiYjNDM7CiAvKioKICAqIHA5X2NsaWVudF9ycGMgLSBpc3N1ZSBhIHJlcXVlc3QgYW5kIHdhaXQgZm9yIGEgcmVzcG9uc2UKICAqIEBjOiBjbGllbnQgc2Vzc2lvbgpAQCAtNjEyLDYgJiM0Mzs2MjgsMjAgQEAgcDlfY2xpZW50X3JwYyhzdHJ1Y3QgcDlfY2xpZW50ICpjLCBpbnQ4X3QgdHlwZSwgY29uc3QgY2hhciAqZm10LCAuLi4pCiAJCWVyciA9IHJlcS0mZ3Q7dF9lcnI7CiAJfQogCWlmIChlcnIgPT0gLUVSRVNUQVJUU1lTICZhbXA7JmFtcDsgYy0mZ3Q7c3RhdHVzID09IENvbm5lY3RlZCkgewomIzQzOwkJaWYgKFJFQURfT05DRShyZXEtJmd0O3N0YXR1cykgPT0gUkVRX1NUQVRVU19SQ1ZEKSB7CiYjNDM7CQkJZXJyID0gMDsKJiM0MzsJCQlnb3RvIHJlY2FsY19zaWdwZW5kaW5nOwomIzQzOwkJfQomIzQzOwomIzQzOwkJaWYgKGZhdGFsX3NpZ25hbF9wZW5kaW5nKGN1cnJlbnQpICZhbXA7JmFtcDsKJiM0MzsJCSAgICBjLSZndDt0cmFuc19tb2QtJmd0O3N1cHBvcnRzX2FzeW5jX2Fib3J0KSB7CiYjNDM7CQkJcDlfZGVidWcoUDlfREVCVUdfTVVYLCAmIzM0O2ZhdGFsIHNpZ25hbDogc2tpcCBmbHVzaFxuJiMzNDspOwomIzQzOwkJCXA5X2NsaWVudF9hYm9ydChjLCByZXEpOwomIzQzOwkJCWlmIChSRUFEX09OQ0UocmVxLSZndDtzdGF0dXMpID09IFJFUV9TVEFUVVNfUkNWRCkKJiM0MzsJCQkJZXJyID0gMDsKJiM0MzsJCQlnb3RvIHJlY2FsY19zaWdwZW5kaW5nOwomIzQzOwkJfQomIzQzOwogCQlwOV9kZWJ1ZyhQOV9ERUJVR19NVVgsICYjMzQ7Zmx1c2hpbmdcbiYjMzQ7KTsKIAkJc2lncGVuZGluZyA9IDE7CiAJCWNsZWFyX3RocmVhZF9mbGFnKFRJRl9TSUdQRU5ESU5HKTsKQEAgLTY5Nyw2ICYjNDM7NzI3LDExIEBAIHN0YXRpYyBzdHJ1Y3QgcDlfcmVxX3QgKnA5X2NsaWVudF96Y19ycGMoc3RydWN0IHA5X2NsaWVudCAqYywgaW50OF90IHR5cGUsCiAJCWVyciA9IHJlcS0mZ3Q7dF9lcnI7CiAJfQogCWlmIChlcnIgPT0gLUVSRVNUQVJUU1lTICZhbXA7JmFtcDsgYy0mZ3Q7c3RhdHVzID09IENvbm5lY3RlZCkgewomIzQzOwkJaWYgKFJFQURfT05DRShyZXEtJmd0O3N0YXR1cykgPT0gUkVRX1NUQVRVU19SQ1ZEKSB7CiYjNDM7CQkJZXJyID0gMDsKJiM0MzsJCQlnb3RvIHJlY2FsY19zaWdwZW5kaW5nOwomIzQzOwkJfQomIzQzOwogCQlwOV9kZWJ1ZyhQOV9ERUJVR19NVVgsICYjMzQ7Zmx1c2hpbmdcbiYjMzQ7KTsKIAkJc2lncGVuZGluZyA9IDE7CiAJCWNsZWFyX3RocmVhZF9mbGFnKFRJRl9TSUdQRU5ESU5HKTsKZGlmZiAtLWdpdCBhL25ldC85cC90cmFuc19mZC5jIGIvbmV0LzlwL3RyYW5zX2ZkLmMKaW5kZXggZWI2ODViNTJhZWIyNjQuLmQ1Y2ZmOGMyYzg4Y2RjIDEwMDY0NAotLS0gYS9uZXQvOXAvdHJhbnNfZmQuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvOXAvdHJhbnNfZmQuYwpAQCAtMjkzLDcgJiM0MzsyOTMsOSBAQCBzdGF0aWMgdm9pZCBwOV9yZWFkX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCQkJIG0sIG0tJmd0O3JjLnNpemUsIG0tJmd0O3JjLnRhZyk7CiAKIAkJbS0mZ3Q7cnJlcSA9IHA5X3RhZ19sb29rdXAobS0mZ3Q7Y2xpZW50LCBtLSZndDtyYy50YWcpOwotCQlpZiAoIW0tJmd0O3JyZXEgfHwgKG0tJmd0O3JyZXEtJmd0O3N0YXR1cyAhPSBSRVFfU1RBVFVTX1NFTlQpKSB7CiYjNDM7CQlpZiAoIW0tJmd0O3JyZXEgfHwKJiM0MzsJCSAgICAobS0mZ3Q7cnJlcS0mZ3Q7c3RhdHVzICE9IFJFUV9TVEFUVVNfU0VOVCAmYW1wOyZhbXA7CiYjNDM7CQkgICAgIG0tJmd0O3JyZXEtJmd0O3N0YXR1cyAhPSBSRVFfU1RBVFVTX0FCT1JURUQpKSB7CiAJCQlwOV9kZWJ1ZyhQOV9ERUJVR19FUlJPUiwgJiMzNDtVbmV4cGVjdGVkIHBhY2tldCB0YWcgJWRcbiYjMzQ7LAogCQkJCSBtLSZndDtyYy50YWcpOwogCQkJZXJyID0gLUVJTzsKQEAgLTMzMiw2ICYjNDM7MzM0LDkgQEAgc3RhdGljIHZvaWQgcDlfcmVhZF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAkJaWYgKG0tJmd0O3JyZXEtJmd0O3N0YXR1cyA9PSBSRVFfU1RBVFVTX1NFTlQpIHsKIAkJCWxpc3RfZGVsKCZhbXA7bS0mZ3Q7cnJlcS0mZ3Q7cmVxX2xpc3QpOwogCQkJcDlfY2xpZW50X2NiKG0tJmd0O2NsaWVudCwgbS0mZ3Q7cnJlcSwgUkVRX1NUQVRVU19SQ1ZEKTsKJiM0MzsJCX0gZWxzZSBpZiAobS0mZ3Q7cnJlcS0mZ3Q7c3RhdHVzID09IFJFUV9TVEFUVVNfQUJPUlRFRCkgewomIzQzOwkJCWxpc3RfZGVsKCZhbXA7bS0mZ3Q7cnJlcS0mZ3Q7cmVxX2xpc3QpOwomIzQzOwkJCXA5X2NsaWVudF9jYihtLSZndDtjbGllbnQsIG0tJmd0O3JyZXEsIFJFUV9TVEFUVVNfQUJPUlRFRCk7CiAJCX0gZWxzZSBpZiAobS0mZ3Q7cnJlcS0mZ3Q7c3RhdHVzID09IFJFUV9TVEFUVVNfRkxTSEQpIHsKIAkJCS8qIElnbm9yZSByZXBsaWVzIGFzc29jaWF0ZWQgd2l0aCBhIGNhbmNlbGxlZCByZXF1ZXN0LiAqLwogCQkJcDlfZGVidWcoUDlfREVCVUdfVFJBTlMsCkBAIC05OTYsNiAmIzQzOzEwMDEsNyBAQCBzdGF0aWMgc3RydWN0IHA5X3RyYW5zX21vZHVsZSBwOV90Y3BfdHJhbnMgPSB7CiAJLnBvb2xlZF9yYnVmZmVycyA9IGZhbHNlLAogCS5kZWYgPSBmYWxzZSwKIAkuc3VwcG9ydHNfdm1hbGxvYyA9IHRydWUsCiYjNDM7CS5zdXBwb3J0c19hc3luY19hYm9ydCA9IHRydWUsCiAJLmNyZWF0ZSA9IHA5X2ZkX2NyZWF0ZV90Y3AsCiAJLmNsb3NlID0gcDlfZmRfY2xvc2UsCiAJLnJlcXVlc3QgPSBwOV9mZF9yZXF1ZXN0LApAQCAtMTAxMSw2ICYjNDM7MTAxNyw3IEBAIHN0YXRpYyBzdHJ1Y3QgcDlfdHJhbnNfbW9kdWxlIHA5X3VuaXhfdHJhbnMgPSB7CiAJLm1heHNpemUgPSBNQVhfU09DS19CVUYsCiAJLmRlZiA9IGZhbHNlLAogCS5zdXBwb3J0c192bWFsbG9jID0gdHJ1ZSwKJiM0MzsJLnN1cHBvcnRzX2FzeW5jX2Fib3J0ID0gdHJ1ZSwKIAkuY3JlYXRlID0gcDlfZmRfY3JlYXRlX3VuaXgsCiAJLmNsb3NlID0gcDlfZmRfY2xvc2UsCiAJLnJlcXVlc3QgPSBwOV9mZF9yZXF1ZXN0LApAQCAtMTAyNiw2ICYjNDM7MTAzMyw3IEBAIHN0YXRpYyBzdHJ1Y3QgcDlfdHJhbnNfbW9kdWxlIHA5X2ZkX3RyYW5zID0gewogCS5tYXhzaXplID0gTUFYX1NPQ0tfQlVGLAogCS5kZWYgPSBmYWxzZSwKIAkuc3VwcG9ydHNfdm1hbGxvYyA9IHRydWUsCiYjNDM7CS5zdXBwb3J0c19hc3luY19hYm9ydCA9IHRydWUsCiAJLmNyZWF0ZSA9IHA5X2ZkX2NyZWF0ZSwKIAkuY2xvc2UgPSBwOV9mZF9jbG9zZSwKIAkucmVxdWVzdCA9IHA5X2ZkX3JlcXVlc3QsCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDEyOjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5NDcKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgOXAgQ2xpZW50IFBhdGNoKioKCk9rYXksIHNvIHdlIGhhdmUgYSBwYXRjaCBoZXJlIHRoYXQmIzM5O3MgbWFraW5nIHNvbWUgcHJldHR5IHNpZ25pZmljYW50IGNoYW5nZXMgdG8gdGhlIDlwIGNsaWVudCBhbmQgaXRzIHRyYW5zcG9ydCBjb2RlLiBUaGUgY29yZSBvZiBpdCBzZWVtcyB0byBiZSBhYm91dCBpbXByb3ZpbmcgaG93IHdlIGhhbmRsZSBhc3luY2hyb25vdXMgcmVxdWVzdCBhYm9ydGlvbi4gSXQgbG9va3MgbGlrZSB0aGV5JiMzOTtyZSBpbnRyb2R1Y2luZyBhIG5ldyByZXF1ZXN0IHN0YXR1cywgYFJFUV9TVEFUVVNfQUJPUlRFRGAsIGFuZCBhZGRpbmcgYHN1cHBvcnRzX2FzeW5jX2Fib3J0YCB0byB0aGUgYHA5X3RyYW5zX21vZHVsZWAuCgpFc3NlbnRpYWxseSwgdGhlIHBhdGNoIGFsdGVycyBgcDlfY2xpZW50X3JwY2AgYW5kIGBwOV9jbGllbnRfemNfcnBjYCB0byBkZWFsIHdpdGggZmF0YWwgc2lnbmFscyAobGlrZWx5IGZyb20gdGltZW91dHMgb3Igb3RoZXIgc3lzdGVtLWxldmVsIGlzc3VlcykgYnkgYWJvcnRpbmcgdGhlIHJlcXVlc3RzIGRpcmVjdGx5IGluc3RlYWQgb2YgaGFuZ2luZyBhcm91bmQgd2FpdGluZyBmb3IgYSBgVEZMVVNIYC4gVGhpcyBpcyBtdWNoIGNsZWFuZXIuIEkgc2VlIGl0IGFsc28gbW9kaWZpZXMgdGhlIGBwOV9yZWFkX3dvcmtgIGZ1bmN0aW9uIGluIGBuZXQvOXAvdHJhbnNfZmQuY2AgdG8gaGFuZGxlIHRoaXMgbmV3IGBSRVFfU1RBVFVTX0FCT1JURURgIHByb3Blcmx5LiBUaGF0IGlzIHRoZSBmaW5hbCBwaWVjZSBvZiB0aGUgbG9naWMuCgpJdCB0aGVuIHNldHMgYHN1cHBvcnRzX2FzeW5jX2Fib3J0ID0gdHJ1ZWAgZm9yIHRoZSBjb3JlIHRyYW5zcG9ydHMg4oCTIGBwOV90Y3BfdHJhbnNgLCBgcDlfdW5peF90cmFuc2AsIGFuZCBgcDlfZmRfdHJhbnNgLiBUaGlzIG1ha2VzIHNlbnNlLCBhcyB0aGVzZSBhcmUgdGhlIHByaW1hcnkgdHJhbnNwb3J0IG1lY2hhbmlzbXMuCgpUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UuIEFueSA5cCBmaWxlc3lzdGVtIG1vdW50IGlzIGxpa2VseSB0byB0b3VjaCB0aGlzIGNvZGUuIFRoYXQgaW1tZWRpYXRlbHkgbWFrZXMgbWUgdGhpbmssICYjMzQ7ZnV6emluZyYjMzQ7LiBUaGUgcGF0Y2ggc2VlbXMgbGlrZSBhIGdvb2QgdGFyZ2V0IGZvciBzb21lIGZ1enppbmcgY2FtcGFpZ25zLgoKTGV0IG1lIHRha2UgYSBxdWljayBsb29rIGF0IHRoZSBLY29uZmlnIG9wdGlvbnMgdG8gZGV0ZXJtaW5lIGlmIHRoZXNlIGNoYW5nZXMgY2FuIGJlIGNvbnRyb2xsZWQuIEJhc2VkIG9uIG15IGV4aXN0aW5nIGtub3dsZWRnZSwgSSBleHBlY3QgdGhlIHJlbGV2YW50IG9wdGlvbnMgdG8gYmU6IGBDT05GSUdfTkVUXzlQYCwgYENPTkZJR19ORVRfOVBfRkRgLCBhbmQgYENPTkZJR185UF9GU2AuIEkmIzM5O2xsIHVzZSBgZ3JlcHBlcmAgdG8gYmUgYWJzb2x1dGVseSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDEyOjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfOVAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvOXAvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvOXAvS2NvbmZpZy01LVxubmV0LzlwL0tjb25maWc6NjptZW51Y29uZmlnIE5FVF85UFxubmV0LzlwL0tjb25maWctNy1cdHRyaXN0YXRlIFwmIzM0O1BsYW4gOSBSZXNvdXJjZSBTaGFyaW5nIFN1cHBvcnQgKDlQMjAwMClcJiMzNDtcbi0tXG5uZXQvOXAvS2NvbmZpZz0xNz1pZiBORVRfOVBcbm5ldC85cC9LY29uZmlnLTE4LVxubmV0LzlwL0tjb25maWc6MTk6Y29uZmlnIE5FVF85UF9GRFxubmV0LzlwL0tjb25maWctMjAtXHRkZWZhdWx0IE5FVF85UFxuLS1cbm5ldC85cC9LY29uZmlnLTI3LVxubmV0LzlwL0tjb25maWc6Mjg6Y29uZmlnIE5FVF85UF9WSVJUSU9cbm5ldC85cC9LY29uZmlnLTI5LVx0ZGVwZW5kcyBvbiBWSVJUSU9cbi0tXG5uZXQvOXAvS2NvbmZpZy0zNC1cbm5ldC85cC9LY29uZmlnOjM1OmNvbmZpZyBORVRfOVBfWEVOXG5uZXQvOXAvS2NvbmZpZy0zNi1cdGRlcGVuZHMgb24gWEVOXG4tLVxubmV0LzlwL0tjb25maWctNDItXG5uZXQvOXAvS2NvbmZpZzo0Mzpjb25maWcgTkVUXzlQX1VTQkdcbm5ldC85cC9LY29uZmlnLTQ0LVx0dHJpc3RhdGUgXCYjMzQ7OVAgVVNCIEdhZGdldCBUcmFuc3BvcnRcJiMzNDtcbi0tXG5uZXQvOXAvS2NvbmZpZy01MS1cbm5ldC85cC9LY29uZmlnOjUyOmNvbmZpZyBORVRfOVBfUkRNQVxubmV0LzlwL0tjb25maWctNTMtXHRkZXBlbmRzIG9uIElORVQgXHUwMDI2XHUwMDI2IElORklOSUJBTkQgXHUwMDI2XHUwMDI2IElORklOSUJBTkRfQUREUl9UUkFOU1xuLS1cbm5ldC85cC9LY29uZmlnLTU3LVxubmV0LzlwL0tjb25maWc6NTg6Y29uZmlnIE5FVF85UF9ERUJVR1xubmV0LzlwL0tjb25maWctNTktXHRib29sIFwmIzM0O0RlYnVnIGluZm9ybWF0aW9uXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTI6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTAyMgoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgY29uZmlnIG9wdGlvbnMsIHRoaW5raW5nIHRocm91Z2ggdGhpcyBsaWtlIEkgd291bGQ6CgoqKkRpZ2dpbmcgaW50byB0aGUgOVAgTmV0d29yayBGaWxlIFN5c3RlbSBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIHNvIEkmIzM5O20gZGVhbGluZyB3aXRoIHRoZSA5UCBuZXR3b3JrIGZpbGUgc3lzdGVtIGFuZCBuZWVkIHRvIHF1aWNrbHkgZmlndXJlIG91dCB0aGUgZXNzZW50aWFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkga25vdyB0aGF0IGBORVRfOVBgIGFuZCBgTkVUXzlQX0ZEYCBhcmUgZ29pbmcgdG8gYmUga2V5LiBgTkVUXzlQYCBpcyBwcm9iYWJseSB0aGUgY29yZSA5UCBmdW5jdGlvbmFsaXR5LCBsaWtlbHkgZW5hYmxpbmcgdGhlIGdlbmVyYWwgbmV0d29yayBwcm90b2NvbCBzdXBwb3J0LiBBbmQsIEkmIzM5O20gYmV0dGluZyB0aGF0IGBORVRfOVBfRkRgIGhhcyB0byBkbyB3aXRoIHVzaW5nIGZpbGUgZGVzY3JpcHRvcnMsIG1heWJlIGZvciBwZXJmb3JtYW5jZSBvciBtb3JlIGRpcmVjdCBpbnRlcmFjdGlvbi4gSSByZWFsbHkgbmVlZCB0byB2ZXJpZnkgdGhhdCBhbmQgc2VlIGhvdyB0aGV5IGludGVycGxheS4KCkkgYWxzbyByZW1lbWJlciwgb2YgY291cnNlLCB0aGF0IHRoZXJlJiMzOTtzIGA5UF9GU2AsIHdoaWNoIGlzIHByb2JhYmx5IHRoZSBhY3R1YWwgZmlsZXN5c3RlbSBtb2R1bGUgZm9yIHRoZSA5UCBwcm90b2NvbC4gSSBtZWFuLCBpdCBpcyB0aGUgc3RhbmRhcmQgZm9yIDlQIGFmdGVyIGFsbC4gSXQmIzM5O3MgdGltZSB0byBkcmlsbCBkb3duIGFuZCBjaGVjayB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gZmlsZSAoYGZzLzlwL0tjb25maWdgKSB0byBjb25maXJtIG15IGFzc3VtcHRpb25zIGFuZCBnZXQgdGhlIGZ1bGwgcGljdHVyZS4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBkZXBlbmRlbmNpZXMgYW5kIHJlbGF0aW9uc2hpcHMgYXJlIGJldHdlZW4gdGhlc2Ugb3B0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAxMjowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgOVBfRlMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy85cC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzLzlwL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmZzLzlwL0tjb25maWc6Mjpjb25maWcgOVBfRlNcbmZzLzlwL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1BsYW4gOSBSZXNvdXJjZSBTaGFyaW5nIFN1cHBvcnQgKDlQMjAwMClcJiMzNDtcbi0tXG5mcy85cC9LY29uZmlnPTE0PWlmIDlQX0ZTXG5mcy85cC9LY29uZmlnOjE1OmNvbmZpZyA5UF9GU0NBQ0hFXG5mcy85cC9LY29uZmlnLTE2LVx0Ym9vbCBcJiMzNDtFbmFibGUgOVAgY2xpZW50IGNhY2hpbmcgc3VwcG9ydFwmIzM0O1xuLS1cbmZzLzlwL0tjb25maWctMjItXG5mcy85cC9LY29uZmlnOjIzOmNvbmZpZyA5UF9GU19QT1NJWF9BQ0xcbmZzLzlwL0tjb25maWctMjQtXHRib29sIFwmIzM0OzlQIFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzXCYjMzQ7XG4tLVxuZnMvOXAvS2NvbmZpZz0zMj1lbmRpZlxuLS1cbmZzLzlwL0tjb25maWctMzQtXG5mcy85cC9LY29uZmlnOjM1OmNvbmZpZyA5UF9GU19TRUNVUklUWVxuZnMvOXAvS2NvbmZpZy0zNi1cdGJvb2wgXCYjMzQ7OVAgU2VjdXJpdHkgTGFiZWxzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTI6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTYyMQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDIwMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIDlQIENsaWVudCBQYXRjaCoqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCBtb2RpZmljYXRpb25zIHJlbGF0ZWQgdG8gYE5FVF85UGAsIGBORVRfOVBfRkRgLCBhbmQgYDlQX0ZTYC4gTXkgZm9jdXMgbmVlZHMgdG8gYmUgb24gdGhlIGtleSBmdW5jdGlvbnMgaW1wYWN0ZWQgYnkgdGhpcyBwYXRjaC4gTGV0JiMzOTtzIHNlZS4uLiB0aGUgcGF0Y2ggc3BlY2lmaWNhbGx5IHRvdWNoZXMgYHA5X2NsaWVudF9wcmVwYXJlX3JlcWAgd2hpY2ggSSByZWNvZ25pemUgaXMgaGFuZGxpbmcgdGhlIGNvbnRleHQsIGFuZCBhbHNvIGludHJvZHVjZXMgYSBuZXcgZnVuY3Rpb24sIGBwOV9jbGllbnRfYWJvcnRgLiAgVGhlcmUgYXJlIGFsc28gY2hhbmdlcyB0byBgcDlfY2xpZW50X3JwY2AsIGBwOV9jbGllbnRfemNfcnBjYCwgYW5kIGBwOV9yZWFkX3dvcmtgLgoKTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgYW5kIHZpc2liaWxpdHkgb2YgdGhlc2UgZnVuY3Rpb25zLiBJcyBgcDlfY2xpZW50X2Fib3J0YCBzdGF0aWM/IFllcywgaXQgYXBwZWFycyB0byBiZS4gVGhhdCYjMzk7cyBpbXBvcnRhbnQgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIHNjb3BlIHdpdGhpbiB0aGUgbW9kdWxlLiBHb29kLiBgcDlfY2xpZW50X3JwY2AgYW5kIGBwOV9jbGllbnRfemNfcnBjYCBhcmUgZWl0aGVyIGV4cG9ydGVkIG9yLCBhdCB0aGUgdmVyeSBsZWFzdCwgZ2xvYmFsbHkgYWNjZXNzaWJsZTsgd2hpY2ggaXMgdG8gYmUgZXhwZWN0ZWQgZm9yIGNvcmUgUlBDIGZ1bmN0aW9ucy4gQW5kIGBwOV9yZWFkX3dvcmtgLCB0aGF0JiMzOTtzIHN0YXRpYywgaXQgcmVzaWRlcyB3aXRoaW4gYG5ldC85cC90cmFuc19mZC5jYC4KCkkmIzM5O2xsIGNoZWNrIGBuZXQvOXAvY2xpZW50LmNgIHRvIGNvbmZpcm0gdGhhdCBgcDlfY2xpZW50X2Fib3J0YCBpcywgaW5kZWVkLCBzdGF0aWMsIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIG9mIGl0cyBzY29wZSBhbmQgdXNhZ2UuIEl0IGlzIGFsd2F5cyBnb29kIHRvIGhhdmUgYSBoaWdoIGRlZ3JlZSBvZiBjb25maWRlbmNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDEyOjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3A5X2NsaWVudF9hYm9ydCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC85cC9jbGllbnQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvOXAvY2xpZW50LmM9NTAyPXN0YXRpYyBzdHJ1Y3QgcDlfcmVxX3QgKnA5X2NsaWVudF9wcmVwYXJlX3JlcShzdHJ1Y3QgcDlfY2xpZW50ICpjLFxuLS1cbm5ldC85cC9jbGllbnQuYy01NDAtXG5uZXQvOXAvY2xpZW50LmM6NTQxOnN0YXRpYyB2b2lkIHA5X2NsaWVudF9hYm9ydChzdHJ1Y3QgcDlfY2xpZW50ICpjLCBzdHJ1Y3QgcDlfcmVxX3QgKnJlcSlcbm5ldC85cC9jbGllbnQuYy01NDIte1xuLS1cbm5ldC85cC9jbGllbnQuYz01Njc9cDlfY2xpZW50X3JwYyhzdHJ1Y3QgcDlfY2xpZW50ICpjLCBpbnQ4X3QgdHlwZSwgY29uc3QgY2hhciAqZm10LCAuLi4pXG4tLVxubmV0LzlwL2NsaWVudC5jLTYzOC1cdFx0XHRwOV9kZWJ1ZyhQOV9ERUJVR19NVVgsIFwmIzM0O2ZhdGFsIHNpZ25hbDogc2tpcCBmbHVzaFxcblwmIzM0Oyk7XG5uZXQvOXAvY2xpZW50LmM6NjM5Olx0XHRcdHA5X2NsaWVudF9hYm9ydChjLCByZXEpO1xubmV0LzlwL2NsaWVudC5jLTY0MC1cdFx0XHRpZiAoUkVBRF9PTkNFKHJlcS1cdTAwM2VzdGF0dXMpID09IFJFUV9TVEFUVVNfUkNWRClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAxMjowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDI3CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTc1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBQb3RlbnRpYWwgUm9vdCBDYXVzZXMqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGlzIGBwOV9jbGllbnRfYWJvcnRgIGlzc3VlLiBJdCYjMzk7cyBzdGF0aWMsIHNvIHRoYXQmIzM5O3MgcHJvYmFibHkgbm90IHRoZSBkaXJlY3QgY3VscHJpdC4gV2UgbmVlZCB0byBsb29rIGRlZXBlci4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgYHA5X2NsaWVudF9ycGNgIGFuZCBgcDlfY2xpZW50X3pjX3JwY2AgYXJlIHN0cm9uZyBwb3NzaWJpbGl0aWVzLCBhbmQgSSYjMzk7bSBhZGRpbmcgYHA5X3JlYWRfd29ya2AgdG8gdGhlIGxpc3QuIEkmIzM5O20gb3BlcmF0aW5nIG9uIHRoZSBhc3N1bXB0aW9uIHRoYXQgdGhpcyBsaWtlbHkgaGFzIHNvbWV0aGluZyB0byBkbyB3aXRoIHRoZSBSUEMgZmxvdywgc2luY2UgdGhhdCBpcywgZm9yIGFsbCBpbnRlbnRzIGFuZCBwdXJwb3NlcywgdGhlIGhlYXJ0IG9mIHRoZSA5cCBwcm90b2NvbCBpbnRlcmFjdGlvbi4KCkxldCYjMzk7cyBxdWlja2x5IGNvbmZpcm0gaWYgYHA5X2NsaWVudF9ycGNgIGlzIGEgaG90IHBhdGguIEl0JiMzOTtzIHRoZSBwcmltYXJ5IFJQQyBmdW5jdGlvbiwgY2FsbGVkIGZvciBhbG1vc3QgZXZlcnkgOXAgb3BlcmF0aW9uLCBzbyBpdCYjMzk7cyBwcm9iYWJseSBoZWF2aWx5IHVzZWQuIEJ1dCB0aGUgY29yZSBvZiB0aGUgaXNzdWUgc2VlbXMgcmVsYXRlZCB0byBhIHBlbmRpbmcgZmF0YWwgc2lnbmFsLCB3aGljaCBpcyBpbnRyaWd1aW5nLiBGdXp6aW5nIGBwOV9jbGllbnRfcnBjYCBhbmQgYHA5X2NsaWVudF96Y19ycGNgIHNvdW5kcyBsaWtlIGEgcmVhc29uYWJsZSBhcHByb2FjaCBnaXZlbiB0aGUgc2lnbmFsLXJlbGF0ZWQgbmF0dXJlIG9mIHRoaXMgYnVnLgoKTW9yZW92ZXIsIGBwOV9yZWFkX3dvcmtgIGlzIGNydWNpYWwgYXMgaXQgaGFuZGxlcyB0aGUgcmVwbGllcy4gV2UgZGVmaW5pdGVseSBuZWVkIHRvIGNoZWNrIHRoYXQgb3V0LCBlc3BlY2lhbGx5IGluIGBuZXQvOXAvdHJhbnNfZmQuY2AuIFNvIGxldCYjMzk7cyBmb2N1cyBvbiB0aGF0IGFyZWEgZm9yIG5vdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTI6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cDlfcmVhZF93b3JrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0LzlwL3RyYW5zX2ZkLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0LzlwL3RyYW5zX2ZkLmM9MjE2PXN0YXRpYyBpbnQgcDlfZmRfcmVhZChzdHJ1Y3QgcDlfY2xpZW50ICpjbGllbnQsIHZvaWQgKnYsIGludCBsZW4pXG4tLVxubmV0LzlwL3RyYW5zX2ZkLmMtMjM4LS8qKlxubmV0LzlwL3RyYW5zX2ZkLmM6MjM5OiAqIHA5X3JlYWRfd29yayAtIGNhbGxlZCB3aGVuIHRoZXJlIGlzIHNvbWUgZGF0YSB0byBiZSByZWFkIGZyb20gYSB0cmFuc3BvcnRcbm5ldC85cC90cmFuc19mZC5jLTI0MC0gKiBAd29yazogY29udGFpbmVyIG9mIHdvcmsgdG8gYmUgZG9uZVxuLS1cbm5ldC85cC90cmFuc19mZC5jLTI0My1cbm5ldC85cC90cmFuc19mZC5jOjI0NDpzdGF0aWMgdm9pZCBwOV9yZWFkX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxubmV0LzlwL3RyYW5zX2ZkLmMtMjQ1LXtcbi0tXG5uZXQvOXAvdHJhbnNfZmQuYz01NTQ9c3RhdGljIHZvaWQgcDlfY29ubl9jcmVhdGUoc3RydWN0IHA5X2NsaWVudCAqY2xpZW50KVxuLS1cbm5ldC85cC90cmFuc19mZC5jLTU2Ny1cdElOSVRfTElTVF9IRUFEKFx1MDAyNm0tXHUwMDNldW5zZW50X3JlcV9saXN0KTtcbm5ldC85cC90cmFuc19mZC5jOjU2ODpcdElOSVRfV09SSyhcdTAwMjZtLVx1MDAzZXJxLCBwOV9yZWFkX3dvcmspO1xubmV0LzlwL3RyYW5zX2ZkLmMtNTY5LVx0SU5JVF9XT1JLKFx1MDAyNm0tXHUwMDNld3EsIHA5X3dyaXRlX3dvcmspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAxMjowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MjU0CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMTI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBQb3RlbnRpYWwgRnV6emluZyBUYXJnZXRzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBmdW5jdGlvbnMgd2l0aGluIHRoZSBjb250ZXh0IG9mIGZ1enppbmcsIHNwZWNpZmljYWxseSB3aXRoIHN5emthbGxlci4gVGhlIGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRoYXQgYHA5X3JlYWRfd29ya2AgaXMgc3RhdGljLCB3aGljaCBpcyB3b3J0aCBub3RpbmcuIFRoZSBtYWluIGNhbmRpZGF0ZXMgZm9yIHRhcmdldHMgYXBwZWFyIHRvIGJlIGBwOV9jbGllbnRfcnBjYCwgYHA5X2NsaWVudF96Y19ycGNgLCBhbmQgYHA5X3JlYWRfd29ya2AuCgpTaW5jZSBgcDlfY2xpZW50X2Fib3J0YCBpcyBhbHNvIHN0YXRpYywgYW5kIHN5emthbGxlciAqY2FuKiBzb21ldGltZXMgdGFyZ2V0IHN0YXRpYyBmdW5jdGlvbnMsIGVzcGVjaWFsbHkgaWYgdGhlIGRlYnVnIGluZm8gaXMgcHJlc2VudCwgaXQmIzM5O3Mgd29ydGggY29uc2lkZXJpbmcuIFRoZSBjcnVjaWFsIHBvaW50IGhlcmUgaXMgdW5pcXVlbmVzczsgaWYgdGhlIHN0YXRpYyBmdW5jdGlvbiBuYW1lIGlzIHVuaXF1ZSwgdGhlbiBzeXprYWxsZXIgc2hvdWxkIGJlIGFibGUgdG8gaWRlbnRpZnkgaXQgZXZlbiBpZiBpdCYjMzk7cyBzdGF0aWMuIGBwOV9jbGllbnRfYWJvcnRgIHNlZW1zIGxpa2UgYSBwb3RlbnRpYWwgdGFyZ2V0IGlmIGl0ICppcyogdW5pcXVlLgoKU28sIHRoZSBuZXh0IHN0ZXAgaXMgZGVmaW5pdGVseSB0byB2ZXJpZnkgd2hldGhlciBvciBub3QgYHA5X2NsaWVudF9hYm9ydGAmIzM5O3MgbmFtZSBpcyBhY3R1YWxseSB1bmlxdWUgd2l0aGluIHRoZSBzY29wZSBvZiB0aGUgcHJvZ3JhbS4gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAxMjowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwOV9jbGllbnRfYWJvcnQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0LzlwL2NsaWVudC5jPTUwMj1zdGF0aWMgc3RydWN0IHA5X3JlcV90ICpwOV9jbGllbnRfcHJlcGFyZV9yZXEoc3RydWN0IHA5X2NsaWVudCAqYyxcbi0tXG5uZXQvOXAvY2xpZW50LmMtNTQwLVxubmV0LzlwL2NsaWVudC5jOjU0MTpzdGF0aWMgdm9pZCBwOV9jbGllbnRfYWJvcnQoc3RydWN0IHA5X2NsaWVudCAqYywgc3RydWN0IHA5X3JlcV90ICpyZXEpXG5uZXQvOXAvY2xpZW50LmMtNTQyLXtcbi0tXG5uZXQvOXAvY2xpZW50LmM9NTY3PXA5X2NsaWVudF9ycGMoc3RydWN0IHA5X2NsaWVudCAqYywgaW50OF90IHR5cGUsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKVxuLS1cbm5ldC85cC9jbGllbnQuYy02MzgtXHRcdFx0cDlfZGVidWcoUDlfREVCVUdfTVVYLCBcJiMzNDtmYXRhbCBzaWduYWw6IHNraXAgZmx1c2hcXG5cJiMzNDspO1xubmV0LzlwL2NsaWVudC5jOjYzOTpcdFx0XHRwOV9jbGllbnRfYWJvcnQoYywgcmVxKTtcbm5ldC85cC9jbGllbnQuYy02NDAtXHRcdFx0aWYgKFJFQURfT05DRShyZXEtXHUwMDNlc3RhdHVzKSA9PSBSRVFfU1RBVFVTX1JDVkQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDEyOjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc4OTUKCQkJCQkJCW91dHB1dDogMTgwCgkJCQkJCQl0aG91Z2h0czogMzA3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIDlwIENsaWVudCBQYXRjaCoqCgpPa2F5LCB0aGlzIHBhdGNoIGlzIGRlZmluaXRlbHkgdW5pcXVlOyBpdCYjMzk7cyBub3Qgc29tZXRoaW5nIEkmIzM5O3ZlIHNlZW4gYmVmb3JlLiBMZXQgbWUgc2VlLi4uIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIHJlbGV2YW50IGNvbmZpZ3MgYXJlIGVuYWJsZWQ6IGBORVRfOVBgLCBgTkVUXzlQX0ZEYCwgYW5kIGA5UF9GU2AuCgpUaGUgY29yZSBvZiB0aGlzIGNoYW5nZSBzZWVtcyB0byBiZSBhcm91bmQgaG93IHRoZSA5cCBjbGllbnQgYW5kIHRyYW5zcG9ydCBjb2RlIGhhbmRsZXMgZmF0YWwgc2lnbmFscy4gSXQmIzM5O3MgZXNzZW50aWFsbHkgYWJvcnRpbmcgcmVxdWVzdHMsIHJhdGhlciB0aGFuIGdldHRpbmcgc3R1Y2sgd2FpdGluZyBmb3IgYSBgVEZMVVNIYC4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgYW5kIHF1aXRlIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGJhc2UgY2xpZW50IGxvZ2ljLiBUaGUgaW50cm9kdWN0aW9uIG9mIGBSRVFfU1RBVFVTX0FCT1JURURgIGlzIHRoZSBrZXksIGFuZCBmdW5jdGlvbnMgbGlrZSBgcDlfY2xpZW50X3JwY2AsIGBwOV9jbGllbnRfemNfcnBjYCwgYW5kIGBwOV9yZWFkX3dvcmtgIGFyZSBhbGwgbW9kaWZpZWQgdG8gYWNjb3VudCBmb3IgaXQuIFRoaXMgcmVhbGx5IGNhbGxzIGZvciBmdXp6aW5nLgoKTXkgcHJpbWFyeSBmb2N1cyBmb3IgZnV6emluZyB3aWxsIGJlIG9uIHRoZSBmdW5jdGlvbnM6IGBwOV9jbGllbnRfYWJvcnRgLCBgcDlfY2xpZW50X3JwY2AsIGBwOV9jbGllbnRfemNfcnBjYCwgYW5kIGBwOV9yZWFkX3dvcmtgLiBXYWl0IGEgbWludXRlLCBgcDlfY2xpZW50X3JwY2AgYW5kIGBwOV9jbGllbnRfemNfcnBjYCBhcmUgdGhlIHByaW1hcnkgaG90IHBhdGhzIGZvciA5cCBjbGllbnQgaW50ZXJhY3Rpb24uIFRoZXkgYXJlIHRoZSBtYWluIGVudHJ5IHBvaW50cyBmb3IgZnV6emVyIGludGVyYWN0aW9uLiBgcDlfY2xpZW50X2Fib3J0YCBpcyB0aGUgZnVuY3Rpb24gKmFjdHVhbGx5KiBoYW5kbGluZyB0aGUgYWJvcnQgbG9naWMgc3BlY2lmaWNhbGx5LCBhbmQgYHA5X3JlYWRfd29ya2AgaXMgdGhlIHJlcGx5IGhhbmRsZXIsIHNvIEkgbmVlZCB0byBtYWtlIHN1cmUgdG8gaW5jbHVkZSB0aG9zZSB0b28uIEkmIzM5O2xsIG1ha2Ugc3VyZSB0byBnZXQgYHA5X2NsaWVudF9hYm9ydGAgYW5kIGBwOV9yZWFkX3dvcmtgIG9uIHRoZSBsaXN0LgoKTm93LCBsZXQgbWUganVzdCBjb25maXJtIHRoYXQgYHA5X2NsaWVudF9hYm9ydGAgaXMgdGhlICpvbmx5KiBuZXdseSBhZGRlZCBmdW5jdGlvbi4gWWVwLCB0aGF0JiMzOTtzIHRoZSBvbmx5IG9uZS4gT2theSwgbGV0JiMzOTtzIGNhbGwgaXQgYW5kIHNldCB0aGUgcmVzdWx0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTI6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF85UCYjMzQ7LAogICAgJiMzNDtORVRfOVBfRkQmIzM0OywKICAgICYjMzQ7OVBfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwOV9jbGllbnRfYWJvcnQmIzM0OywKICAgICYjMzQ7cDlfcmVhZF93b3JrJiMzNDssCiAgICAmIzM0O3A5X2NsaWVudF9ycGMmIzM0OywKICAgICYjMzQ7cDlfY2xpZW50X3pjX3JwYyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgOXAgY2xpZW50IGFuZCB0cmFuc3BvcnQgY29kZSB0byBoYW5kbGUgZmF0YWwgc2lnbmFscyBieSBhYm9ydGluZyByZXF1ZXN0cyBpbnN0ZWFkIG9mIHdhaXRpbmcgZm9yIFRGTFVTSC4gSXQgaW50cm9kdWNlcyBhIG5ldyByZXF1ZXN0IHN0YXR1cyBSRVFfU1RBVFVTX0FCT1JURUQgYW5kIG1vZGlmaWVzIHA5X2NsaWVudF9ycGMsIHA5X2NsaWVudF96Y19ycGMsIGFuZCBwOV9yZWFkX3dvcmsgdG8gaGFuZGxlIGl0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgOXAgY2xpZW50IGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfOVAmIzM0OywKICAgICYjMzQ7TkVUXzlQX0ZEJiMzNDssCiAgICAmIzM0OzlQX0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cDlfY2xpZW50X2Fib3J0JiMzNDssCiAgICAmIzM0O3A5X3JlYWRfd29yayYjMzQ7LAogICAgJiMzNDtwOV9jbGllbnRfcnBjJiMzNDssCiAgICAmIzM0O3A5X2NsaWVudF96Y19ycGMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIDlwIGNsaWVudCBhbmQgdHJhbnNwb3J0IGNvZGUgdG8gaGFuZGxlIGZhdGFsIHNpZ25hbHMgYnkgYWJvcnRpbmcgcmVxdWVzdHMgaW5zdGVhZCBvZiB3YWl0aW5nIGZvciBURkxVU0guIEl0IGludHJvZHVjZXMgYSBuZXcgcmVxdWVzdCBzdGF0dXMgUkVRX1NUQVRVU19BQk9SVEVEIGFuZCBtb2RpZmllcyBwOV9jbGllbnRfcnBjLCBwOV9jbGllbnRfemNfcnBjLCBhbmQgcDlfcmVhZF93b3JrIHRvIGhhbmRsZSBpdC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIDlwIGNsaWVudCBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDEyOjAwOjEyLjg1ODY2NjQzNloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM2NTI3OTQzNTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF85UFwiLFxuICAgIFwiTkVUXzlQX0ZEXCIsXG4gICAgXCI5UF9GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInA5X2NsaWVudF9hYm9ydFwiLFxuICAgIFwicDlfcmVhZF93b3JrXCIsXG4gICAgXCJwOV9jbGllbnRfcnBjXCIsXG4gICAgXCJwOV9jbGllbnRfemNfcnBjXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIDlwIGNsaWVudCBhbmQgdHJhbnNwb3J0IGNvZGUgdG8gaGFuZGxlIGZhdGFsIHNpZ25hbHMgYnkgYWJvcnRpbmcgcmVxdWVzdHMgaW5zdGVhZCBvZiB3YWl0aW5nIGZvciBURkxVU0guIEl0IGludHJvZHVjZXMgYSBuZXcgcmVxdWVzdCBzdGF0dXMgUkVRX1NUQVRVU19BQk9SVEVEIGFuZCBtb2RpZmllcyBwOV9jbGllbnRfcnBjLCBwOV9jbGllbnRfemNfcnBjLCBhbmQgcDlfcmVhZF93b3JrIHRvIGhhbmRsZSBpdC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIDlwIGNsaWVudCBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTI6MDA6MTIuODU4NjcyNDM2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NTA5MTE2NTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA0MDRkODgyMzhhMzkxY2MwOWEzMzJmNjBmMTRhNTczZTExNzVmNDUwXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDE2IDEyOjAwOjExIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LzlwL2NsaWVudC5oIGIvaW5jbHVkZS9uZXQvOXAvY2xpZW50LmhcXG5pbmRleCA1NWM2Y2I1NGJkMjU0OC4uNzAwZGNiMzdjMWRjNDAgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9uZXQvOXAvY2xpZW50LmhcXG4rKysgYi9pbmNsdWRlL25ldC85cC9jbGllbnQuaFxcbkBAIC01OCw2ICs1OCw4IEBAIGVudW0gcDlfdHJhbnNfc3RhdHVzIHtcXG4gICogQFJFUV9TVEFUVVNfVU5TRU5UOiByZXF1ZXN0IHdhaXRpbmcgdG8gYmUgc2VudFxcbiAgKiBAUkVRX1NUQVRVU19TRU5UOiByZXF1ZXN0IHNlbnQgdG8gc2VydmVyXFxuICAqIEBSRVFfU1RBVFVTX1JDVkQ6IHJlc3BvbnNlIHJlY2VpdmVkIGZyb20gc2VydmVyXFxuKyAqIEBSRVFfU1RBVFVTX0FCT1JURUQ6IGNhbGxlciBzdG9wcGVkIHdhaXRpbmcsIGJ1dCB0aGUgcmVxdWVzdCBrZWVwcyBpdHMgdGFnXFxuKyAqICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkIHVudGlsIGEgcmVwbHkgYXJyaXZlcyBvciB0aGUgdHJhbnNwb3J0IGNsb3Nlc1xcbiAgKiBAUkVRX1NUQVRVU19GTFNIRDogcmVxdWVzdCBoYXMgYmVlbiBmbHVzaGVkXFxuICAqIEBSRVFfU1RBVFVTX0VSUk9SOiByZXF1ZXN0IGVuY291bnRlcmVkIGFuIGVycm9yIG9uIHRoZSBjbGllbnQgc2lkZVxcbiAgKi9cXG5AQCAtNjcsNiArNjksNyBAQCBlbnVtIHA5X3JlcV9zdGF0dXNfdCB7XFxuIFxcdFJFUV9TVEFUVVNfVU5TRU5ULFxcbiBcXHRSRVFfU1RBVFVTX1NFTlQsXFxuIFxcdFJFUV9TVEFUVVNfUkNWRCxcXG4rXFx0UkVRX1NUQVRVU19BQk9SVEVELFxcbiBcXHRSRVFfU1RBVFVTX0ZMU0hELFxcbiBcXHRSRVFfU1RBVFVTX0VSUk9SLFxcbiB9O1xcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC85cC90cmFuc3BvcnQuaCBiL2luY2x1ZGUvbmV0LzlwL3RyYW5zcG9ydC5oXFxuaW5kZXggYTkxMmJiYWE4NjJmOWIuLjkzMzQ5ZmUzM2RmZjQwIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbmV0LzlwL3RyYW5zcG9ydC5oXFxuKysrIGIvaW5jbHVkZS9uZXQvOXAvdHJhbnNwb3J0LmhcXG5AQCAtMzQsNiArMzQsOSBAQFxcbiAgKiBAc3VwcG9ydHNfdm1hbGxvYzogc2V0IGlmIHRoaXMgdHJhbnNwb3J0IGNhbiB3b3JrIHdpdGggdm1hbGxvYydkIGJ1ZmZlcnNcXG4gICogICAgICAgICAgICAgICAgICAgIChub24tcGh5c2ljYWxseSBjb250aWd1b3VzIG1lbW9yeSkuIFRyYW5zcG9ydHMgcmVxdWlyaW5nXFxuICAqICAgICAgICAgICAgICAgICAgICBETUEgc2hvdWxkIGxlYXZlIHRoaXMgYXMgZmFsc2UuXFxuKyAqIEBzdXBwb3J0c19hc3luY19hYm9ydDogc2V0IGlmIGEgc2VudCByZXF1ZXN0IHJlbWFpbnMgcmVmZXJlbmNlZCBieSB0aGVcXG4rICogICAgICAgICAgICAgICAgICAgICAgICB0cmFuc3BvcnQgdW50aWwgaXRzIHJlcGx5IGlzIGNvbnN1bWVkIG9yIHRoZVxcbisgKiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9ydCBpcyBjbG9zZWRcXG4gICogQGNyZWF0ZTogbWVtYmVyIGZ1bmN0aW9uIHRvIGNyZWF0ZSBhIG5ldyBjb25uZWN0aW9uIG9uIHRoaXMgdHJhbnNwb3J0XFxuICAqIEBjbG9zZTogbWVtYmVyIGZ1bmN0aW9uIHRvIGRpc2NhcmQgYSBjb25uZWN0aW9uIG9uIHRoaXMgdHJhbnNwb3J0XFxuICAqIEByZXF1ZXN0OiBtZW1iZXIgZnVuY3Rpb24gdG8gaXNzdWUgYSByZXF1ZXN0IHRvIHRoZSB0cmFuc3BvcnRcXG5AQCAtNTUsNiArNTgsNyBAQCBzdHJ1Y3QgcDlfdHJhbnNfbW9kdWxlIHtcXG4gXFx0Ym9vbCBwb29sZWRfcmJ1ZmZlcnM7XFxuIFxcdGJvb2wgZGVmO1xcdFxcdC8qIHRoaXMgdHJhbnNwb3J0IHNob3VsZCBiZSBkZWZhdWx0ICovXFxuIFxcdGJvb2wgc3VwcG9ydHNfdm1hbGxvYztcXHQvKiBjYW4gd29yayB3aXRoIHZtYWxsb2MnZCBidWZmZXJzICovXFxuK1xcdGJvb2wgc3VwcG9ydHNfYXN5bmNfYWJvcnQ7IC8qIGtlZXBzIHNlbnQgcmVxdWVzdHMgYWxpdmUgYWZ0ZXIgY2FsbGVyIGV4aXRzICovXFxuIFxcdHN0cnVjdCBtb2R1bGUgKm93bmVyO1xcbiBcXHRpbnQgKCpjcmVhdGUpKHN0cnVjdCBwOV9jbGllbnQgKmNsaWVudCxcXG4gXFx0XFx0ICAgICAgc3RydWN0IGZzX2NvbnRleHQgKmZjKTtcXG5kaWZmIC0tZ2l0IGEvbmV0LzlwL2NsaWVudC5jIGIvbmV0LzlwL2NsaWVudC5jXFxuaW5kZXggZWY2NDU0NmM2ZDUyYTEuLjQ3MzUzY2YwNzUwZGRmIDEwMDY0NFxcbi0tLSBhL25ldC85cC9jbGllbnQuY1xcbisrKyBiL25ldC85cC9jbGllbnQuY1xcbkBAIC01MzgsNiArNTM4LDIyIEBAIHN0YXRpYyBzdHJ1Y3QgcDlfcmVxX3QgKnA5X2NsaWVudF9wcmVwYXJlX3JlcShzdHJ1Y3QgcDlfY2xpZW50ICpjLFxcbiBcXHRyZXR1cm4gRVJSX1BUUihlcnIpO1xcbiB9XFxuIFxcbitzdGF0aWMgdm9pZCBwOV9jbGllbnRfYWJvcnQoc3RydWN0IHA5X2NsaWVudCAqYywgc3RydWN0IHA5X3JlcV90ICpyZXEpXFxuK3tcXG4rXFx0LypcXG4rXFx0ICogQSBmYXRhbCBzaWduYWwgY2Fubm90IHdhaXQgZm9yIFRGTFVTSCwgYnV0IGEgc2VudCByZXF1ZXN0IG11c3Qga2VlcFxcbitcXHQgKiBpdHMgdGFnIHVudGlsIGEgbGF0ZSByZXBseSBhcnJpdmVzIG9yIHRoZSB0cmFuc3BvcnQgaXMgdG9ybiBkb3duLlxcbitcXHQgKi9cXG4rXFx0aWYgKCFjLVxcdTAwM2V0cmFuc19tb2QtXFx1MDAzZXN1cHBvcnRzX2FzeW5jX2Fib3J0IHx8XFxuK1xcdCAgICBSRUFEX09OQ0UocmVxLVxcdTAwM2VzdGF0dXMpIFxcdTAwM2U9IFJFUV9TVEFUVVNfUkNWRClcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0aWYgKCFjLVxcdTAwM2V0cmFuc19tb2QtXFx1MDAzZWNhbmNlbChjLCByZXEpKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbitcXHRjbXB4Y2hnKFxcdTAwMjZyZXEtXFx1MDAzZXN0YXR1cywgUkVRX1NUQVRVU19TRU5ULCBSRVFfU1RBVFVTX0FCT1JURUQpO1xcbit9XFxuK1xcbiAvKipcXG4gICogcDlfY2xpZW50X3JwYyAtIGlzc3VlIGEgcmVxdWVzdCBhbmQgd2FpdCBmb3IgYSByZXNwb25zZVxcbiAgKiBAYzogY2xpZW50IHNlc3Npb25cXG5AQCAtNjEyLDYgKzYyOCwyMCBAQCBwOV9jbGllbnRfcnBjKHN0cnVjdCBwOV9jbGllbnQgKmMsIGludDhfdCB0eXBlLCBjb25zdCBjaGFyICpmbXQsIC4uLilcXG4gXFx0XFx0ZXJyID0gcmVxLVxcdTAwM2V0X2VycjtcXG4gXFx0fVxcbiBcXHRpZiAoZXJyID09IC1FUkVTVEFSVFNZUyBcXHUwMDI2XFx1MDAyNiBjLVxcdTAwM2VzdGF0dXMgPT0gQ29ubmVjdGVkKSB7XFxuK1xcdFxcdGlmIChSRUFEX09OQ0UocmVxLVxcdTAwM2VzdGF0dXMpID09IFJFUV9TVEFUVVNfUkNWRCkge1xcbitcXHRcXHRcXHRlcnIgPSAwO1xcbitcXHRcXHRcXHRnb3RvIHJlY2FsY19zaWdwZW5kaW5nO1xcbitcXHRcXHR9XFxuK1xcbitcXHRcXHRpZiAoZmF0YWxfc2lnbmFsX3BlbmRpbmcoY3VycmVudCkgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0ICAgIGMtXFx1MDAzZXRyYW5zX21vZC1cXHUwMDNlc3VwcG9ydHNfYXN5bmNfYWJvcnQpIHtcXG4rXFx0XFx0XFx0cDlfZGVidWcoUDlfREVCVUdfTVVYLCBcXFwiZmF0YWwgc2lnbmFsOiBza2lwIGZsdXNoXFxcXG5cXFwiKTtcXG4rXFx0XFx0XFx0cDlfY2xpZW50X2Fib3J0KGMsIHJlcSk7XFxuK1xcdFxcdFxcdGlmIChSRUFEX09OQ0UocmVxLVxcdTAwM2VzdGF0dXMpID09IFJFUV9TVEFUVVNfUkNWRClcXG4rXFx0XFx0XFx0XFx0ZXJyID0gMDtcXG4rXFx0XFx0XFx0Z290byByZWNhbGNfc2lncGVuZGluZztcXG4rXFx0XFx0fVxcbitcXG4gXFx0XFx0cDlfZGVidWcoUDlfREVCVUdfTVVYLCBcXFwiZmx1c2hpbmdcXFxcblxcXCIpO1xcbiBcXHRcXHRzaWdwZW5kaW5nID0gMTtcXG4gXFx0XFx0Y2xlYXJfdGhyZWFkX2ZsYWcoVElGX1NJR1BFTkRJTkcpO1xcbkBAIC02OTcsNiArNzI3LDExIEBAIHN0YXRpYyBzdHJ1Y3QgcDlfcmVxX3QgKnA5X2NsaWVudF96Y19ycGMoc3RydWN0IHA5X2NsaWVudCAqYywgaW50OF90IHR5cGUsXFxuIFxcdFxcdGVyciA9IHJlcS1cXHUwMDNldF9lcnI7XFxuIFxcdH1cXG4gXFx0aWYgKGVyciA9PSAtRVJFU1RBUlRTWVMgXFx1MDAyNlxcdTAwMjYgYy1cXHUwMDNlc3RhdHVzID09IENvbm5lY3RlZCkge1xcbitcXHRcXHRpZiAoUkVBRF9PTkNFKHJlcS1cXHUwMDNlc3RhdHVzKSA9PSBSRVFfU1RBVFVTX1JDVkQpIHtcXG4rXFx0XFx0XFx0ZXJyID0gMDtcXG4rXFx0XFx0XFx0Z290byByZWNhbGNfc2lncGVuZGluZztcXG4rXFx0XFx0fVxcbitcXG4gXFx0XFx0cDlfZGVidWcoUDlfREVCVUdfTVVYLCBcXFwiZmx1c2hpbmdcXFxcblxcXCIpO1xcbiBcXHRcXHRzaWdwZW5kaW5nID0gMTtcXG4gXFx0XFx0Y2xlYXJfdGhyZWFkX2ZsYWcoVElGX1NJR1BFTkRJTkcpO1xcbmRpZmYgLS1naXQgYS9uZXQvOXAvdHJhbnNfZmQuYyBiL25ldC85cC90cmFuc19mZC5jXFxuaW5kZXggZWI2ODViNTJhZWIyNjQuLmQ1Y2ZmOGMyYzg4Y2RjIDEwMDY0NFxcbi0tLSBhL25ldC85cC90cmFuc19mZC5jXFxuKysrIGIvbmV0LzlwL3RyYW5zX2ZkLmNcXG5AQCAtMjkzLDcgKzI5Myw5IEBAIHN0YXRpYyB2b2lkIHA5X3JlYWRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuIFxcdFxcdFxcdCBtLCBtLVxcdTAwM2VyYy5zaXplLCBtLVxcdTAwM2VyYy50YWcpO1xcbiBcXG4gXFx0XFx0bS1cXHUwMDNlcnJlcSA9IHA5X3RhZ19sb29rdXAobS1cXHUwMDNlY2xpZW50LCBtLVxcdTAwM2VyYy50YWcpO1xcbi1cXHRcXHRpZiAoIW0tXFx1MDAzZXJyZXEgfHwgKG0tXFx1MDAzZXJyZXEtXFx1MDAzZXN0YXR1cyAhPSBSRVFfU1RBVFVTX1NFTlQpKSB7XFxuK1xcdFxcdGlmICghbS1cXHUwMDNlcnJlcSB8fFxcbitcXHRcXHQgICAgKG0tXFx1MDAzZXJyZXEtXFx1MDAzZXN0YXR1cyAhPSBSRVFfU1RBVFVTX1NFTlQgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0ICAgICBtLVxcdTAwM2VycmVxLVxcdTAwM2VzdGF0dXMgIT0gUkVRX1NUQVRVU19BQk9SVEVEKSkge1xcbiBcXHRcXHRcXHRwOV9kZWJ1ZyhQOV9ERUJVR19FUlJPUiwgXFxcIlVuZXhwZWN0ZWQgcGFja2V0IHRhZyAlZFxcXFxuXFxcIixcXG4gXFx0XFx0XFx0XFx0IG0tXFx1MDAzZXJjLnRhZyk7XFxuIFxcdFxcdFxcdGVyciA9IC1FSU87XFxuQEAgLTMzMiw2ICszMzQsOSBAQCBzdGF0aWMgdm9pZCBwOV9yZWFkX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbiBcXHRcXHRpZiAobS1cXHUwMDNlcnJlcS1cXHUwMDNlc3RhdHVzID09IFJFUV9TVEFUVVNfU0VOVCkge1xcbiBcXHRcXHRcXHRsaXN0X2RlbChcXHUwMDI2bS1cXHUwMDNlcnJlcS1cXHUwMDNlcmVxX2xpc3QpO1xcbiBcXHRcXHRcXHRwOV9jbGllbnRfY2IobS1cXHUwMDNlY2xpZW50LCBtLVxcdTAwM2VycmVxLCBSRVFfU1RBVFVTX1JDVkQpO1xcbitcXHRcXHR9IGVsc2UgaWYgKG0tXFx1MDAzZXJyZXEtXFx1MDAzZXN0YXR1cyA9PSBSRVFfU1RBVFVTX0FCT1JURUQpIHtcXG4rXFx0XFx0XFx0bGlzdF9kZWwoXFx1MDAyNm0tXFx1MDAzZXJyZXEtXFx1MDAzZXJlcV9saXN0KTtcXG4rXFx0XFx0XFx0cDlfY2xpZW50X2NiKG0tXFx1MDAzZWNsaWVudCwgbS1cXHUwMDNlcnJlcSwgUkVRX1NUQVRVU19BQk9SVEVEKTtcXG4gXFx0XFx0fSBlbHNlIGlmIChtLVxcdTAwM2VycmVxLVxcdTAwM2VzdGF0dXMgPT0gUkVRX1NUQVRVU19GTFNIRCkge1xcbiBcXHRcXHRcXHQvKiBJZ25vcmUgcmVwbGllcyBhc3NvY2lhdGVkIHdpdGggYSBjYW5jZWxsZWQgcmVxdWVzdC4gKi9cXG4gXFx0XFx0XFx0cDlfZGVidWcoUDlfREVCVUdfVFJBTlMsXFxuQEAgLTk5Niw2ICsxMDAxLDcgQEAgc3RhdGljIHN0cnVjdCBwOV90cmFuc19tb2R1bGUgcDlfdGNwX3RyYW5zID0ge1xcbiBcXHQucG9vbGVkX3JidWZmZXJzID0gZmFsc2UsXFxuIFxcdC5kZWYgPSBmYWxzZSxcXG4gXFx0LnN1cHBvcnRzX3ZtYWxsb2MgPSB0cnVlLFxcbitcXHQuc3VwcG9ydHNfYXN5bmNfYWJvcnQgPSB0cnVlLFxcbiBcXHQuY3JlYXRlID0gcDlfZmRfY3JlYXRlX3RjcCxcXG4gXFx0LmNsb3NlID0gcDlfZmRfY2xvc2UsXFxuIFxcdC5yZXF1ZXN0ID0gcDlfZmRfcmVxdWVzdCxcXG5AQCAtMTAxMSw2ICsxMDE3LDcgQEAgc3RhdGljIHN0cnVjdCBwOV90cmFuc19tb2R1bGUgcDlfdW5peF90cmFucyA9IHtcXG4gXFx0Lm1heHNpemUgPSBNQVhfU09DS19CVUYsXFxuIFxcdC5kZWYgPSBmYWxzZSxcXG4gXFx0LnN1cHBvcnRzX3ZtYWxsb2MgPSB0cnVlLFxcbitcXHQuc3VwcG9ydHNfYXN5bmNfYWJvcnQgPSB0cnVlLFxcbiBcXHQuY3JlYXRlID0gcDlfZmRfY3JlYXRlX3VuaXgsXFxuIFxcdC5jbG9zZSA9IHA5X2ZkX2Nsb3NlLFxcbiBcXHQucmVxdWVzdCA9IHA5X2ZkX3JlcXVlc3QsXFxuQEAgLTEwMjYsNiArMTAzMyw3IEBAIHN0YXRpYyBzdHJ1Y3QgcDlfdHJhbnNfbW9kdWxlIHA5X2ZkX3RyYW5zID0ge1xcbiBcXHQubWF4c2l6ZSA9IE1BWF9TT0NLX0JVRixcXG4gXFx0LmRlZiA9IGZhbHNlLFxcbiBcXHQuc3VwcG9ydHNfdm1hbGxvYyA9IHRydWUsXFxuK1xcdC5zdXBwb3J0c19hc3luY19hYm9ydCA9IHRydWUsXFxuIFxcdC5jcmVhdGUgPSBwOV9mZF9jcmVhdGUsXFxuIFxcdC5jbG9zZSA9IHA5X2ZkX2Nsb3NlLFxcbiBcXHQucmVxdWVzdCA9IHA5X2ZkX3JlcXVlc3QsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDEyOjAwOjEzLjYxMDUzMzEzMloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU3NzYwNjU5MDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUXzlQXCIsXG4gICAgXCJORVRfOVBfRkRcIixcbiAgICBcIjlQX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicDlfY2xpZW50X2Fib3J0XCIsXG4gICAgXCJwOV9yZWFkX3dvcmtcIixcbiAgICBcInA5X2NsaWVudF9ycGNcIixcbiAgICBcInA5X2NsaWVudF96Y19ycGNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgOXAgY2xpZW50IGFuZCB0cmFuc3BvcnQgY29kZSB0byBoYW5kbGUgZmF0YWwgc2lnbmFscyBieSBhYm9ydGluZyByZXF1ZXN0cyBpbnN0ZWFkIG9mIHdhaXRpbmcgZm9yIFRGTFVTSC4gSXQgaW50cm9kdWNlcyBhIG5ldyByZXF1ZXN0IHN0YXR1cyBSRVFfU1RBVFVTX0FCT1JURUQgYW5kIG1vZGlmaWVzIHA5X2NsaWVudF9ycGMsIHA5X2NsaWVudF96Y19ycGMsIGFuZCBwOV9yZWFkX3dvcmsgdG8gaGFuZGxlIGl0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgOXAgY2xpZW50IGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDQwNGQ4ODIzOGEzOTFjYzA5YTMzMmY2MGYxNGE1NzNlMTE3NWY0NTBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAxNiAxMjowMDoxMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LzlwL2NsaWVudC5oIGIvaW5jbHVkZS9uZXQvOXAvY2xpZW50LmhcbmluZGV4IDU1YzZjYjU0YmQyNTQ4Li43MDBkY2IzN2MxZGM0MCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0LzlwL2NsaWVudC5oXG4rKysgYi9pbmNsdWRlL25ldC85cC9jbGllbnQuaFxuQEAgLTU4LDYgKzU4LDggQEAgZW51bSBwOV90cmFuc19zdGF0dXMge1xuICAqIEBSRVFfU1RBVFVTX1VOU0VOVDogcmVxdWVzdCB3YWl0aW5nIHRvIGJlIHNlbnRcbiAgKiBAUkVRX1NUQVRVU19TRU5UOiByZXF1ZXN0IHNlbnQgdG8gc2VydmVyXG4gICogQFJFUV9TVEFUVVNfUkNWRDogcmVzcG9uc2UgcmVjZWl2ZWQgZnJvbSBzZXJ2ZXJcbisgKiBAUkVRX1NUQVRVU19BQk9SVEVEOiBjYWxsZXIgc3RvcHBlZCB3YWl0aW5nLCBidXQgdGhlIHJlcXVlc3Qga2VlcHMgaXRzIHRhZ1xuKyAqICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkIHVudGlsIGEgcmVwbHkgYXJyaXZlcyBvciB0aGUgdHJhbnNwb3J0IGNsb3Nlc1xuICAqIEBSRVFfU1RBVFVTX0ZMU0hEOiByZXF1ZXN0IGhhcyBiZWVuIGZsdXNoZWRcbiAgKiBAUkVRX1NUQVRVU19FUlJPUjogcmVxdWVzdCBlbmNvdW50ZXJlZCBhbiBlcnJvciBvbiB0aGUgY2xpZW50IHNpZGVcbiAgKi9cbkBAIC02Nyw2ICs2OSw3IEBAIGVudW0gcDlfcmVxX3N0YXR1c190IHtcbiBcdFJFUV9TVEFUVVNfVU5TRU5ULFxuIFx0UkVRX1NUQVRVU19TRU5ULFxuIFx0UkVRX1NUQVRVU19SQ1ZELFxuK1x0UkVRX1NUQVRVU19BQk9SVEVELFxuIFx0UkVRX1NUQVRVU19GTFNIRCxcbiBcdFJFUV9TVEFUVVNfRVJST1IsXG4gfTtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC85cC90cmFuc3BvcnQuaCBiL2luY2x1ZGUvbmV0LzlwL3RyYW5zcG9ydC5oXG5pbmRleCBhOTEyYmJhYTg2MmY5Yi4uOTMzNDlmZTMzZGZmNDAgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC85cC90cmFuc3BvcnQuaFxuKysrIGIvaW5jbHVkZS9uZXQvOXAvdHJhbnNwb3J0LmhcbkBAIC0zNCw2ICszNCw5IEBAXG4gICogQHN1cHBvcnRzX3ZtYWxsb2M6IHNldCBpZiB0aGlzIHRyYW5zcG9ydCBjYW4gd29yayB3aXRoIHZtYWxsb2MnZCBidWZmZXJzXG4gICogICAgICAgICAgICAgICAgICAgIChub24tcGh5c2ljYWxseSBjb250aWd1b3VzIG1lbW9yeSkuIFRyYW5zcG9ydHMgcmVxdWlyaW5nXG4gICogICAgICAgICAgICAgICAgICAgIERNQSBzaG91bGQgbGVhdmUgdGhpcyBhcyBmYWxzZS5cbisgKiBAc3VwcG9ydHNfYXN5bmNfYWJvcnQ6IHNldCBpZiBhIHNlbnQgcmVxdWVzdCByZW1haW5zIHJlZmVyZW5jZWQgYnkgdGhlXG4rICogICAgICAgICAgICAgICAgICAgICAgICB0cmFuc3BvcnQgdW50aWwgaXRzIHJlcGx5IGlzIGNvbnN1bWVkIG9yIHRoZVxuKyAqICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3J0IGlzIGNsb3NlZFxuICAqIEBjcmVhdGU6IG1lbWJlciBmdW5jdGlvbiB0byBjcmVhdGUgYSBuZXcgY29ubmVjdGlvbiBvbiB0aGlzIHRyYW5zcG9ydFxuICAqIEBjbG9zZTogbWVtYmVyIGZ1bmN0aW9uIHRvIGRpc2NhcmQgYSBjb25uZWN0aW9uIG9uIHRoaXMgdHJhbnNwb3J0XG4gICogQHJlcXVlc3Q6IG1lbWJlciBmdW5jdGlvbiB0byBpc3N1ZSBhIHJlcXVlc3QgdG8gdGhlIHRyYW5zcG9ydFxuQEAgLTU1LDYgKzU4LDcgQEAgc3RydWN0IHA5X3RyYW5zX21vZHVsZSB7XG4gXHRib29sIHBvb2xlZF9yYnVmZmVycztcbiBcdGJvb2wgZGVmO1x0XHQvKiB0aGlzIHRyYW5zcG9ydCBzaG91bGQgYmUgZGVmYXVsdCAqL1xuIFx0Ym9vbCBzdXBwb3J0c192bWFsbG9jO1x0LyogY2FuIHdvcmsgd2l0aCB2bWFsbG9jJ2QgYnVmZmVycyAqL1xuK1x0Ym9vbCBzdXBwb3J0c19hc3luY19hYm9ydDsgLyoga2VlcHMgc2VudCByZXF1ZXN0cyBhbGl2ZSBhZnRlciBjYWxsZXIgZXhpdHMgKi9cbiBcdHN0cnVjdCBtb2R1bGUgKm93bmVyO1xuIFx0aW50ICgqY3JlYXRlKShzdHJ1Y3QgcDlfY2xpZW50ICpjbGllbnQsXG4gXHRcdCAgICAgIHN0cnVjdCBmc19jb250ZXh0ICpmYyk7XG5kaWZmIC0tZ2l0IGEvbmV0LzlwL2NsaWVudC5jIGIvbmV0LzlwL2NsaWVudC5jXG5pbmRleCBlZjY0NTQ2YzZkNTJhMS4uNDczNTNjZjA3NTBkZGYgMTAwNjQ0XG4tLS0gYS9uZXQvOXAvY2xpZW50LmNcbisrKyBiL25ldC85cC9jbGllbnQuY1xuQEAgLTUzOCw2ICs1MzgsMjIgQEAgc3RhdGljIHN0cnVjdCBwOV9yZXFfdCAqcDlfY2xpZW50X3ByZXBhcmVfcmVxKHN0cnVjdCBwOV9jbGllbnQgKmMsXG4gXHRyZXR1cm4gRVJSX1BUUihlcnIpO1xuIH1cbiBcbitzdGF0aWMgdm9pZCBwOV9jbGllbnRfYWJvcnQoc3RydWN0IHA5X2NsaWVudCAqYywgc3RydWN0IHA5X3JlcV90ICpyZXEpXG4re1xuK1x0LypcbitcdCAqIEEgZmF0YWwgc2lnbmFsIGNhbm5vdCB3YWl0IGZvciBURkxVU0gsIGJ1dCBhIHNlbnQgcmVxdWVzdCBtdXN0IGtlZXBcbitcdCAqIGl0cyB0YWcgdW50aWwgYSBsYXRlIHJlcGx5IGFycml2ZXMgb3IgdGhlIHRyYW5zcG9ydCBpcyB0b3JuIGRvd24uXG4rXHQgKi9cbitcdGlmICghYy1cdTAwM2V0cmFuc19tb2QtXHUwMDNlc3VwcG9ydHNfYXN5bmNfYWJvcnQgfHxcbitcdCAgICBSRUFEX09OQ0UocmVxLVx1MDAzZXN0YXR1cykgXHUwMDNlPSBSRVFfU1RBVFVTX1JDVkQpXG4rXHRcdHJldHVybjtcbitcbitcdGlmICghYy1cdTAwM2V0cmFuc19tb2QtXHUwMDNlY2FuY2VsKGMsIHJlcSkpXG4rXHRcdHJldHVybjtcbitcbitcdGNtcHhjaGcoXHUwMDI2cmVxLVx1MDAzZXN0YXR1cywgUkVRX1NUQVRVU19TRU5ULCBSRVFfU1RBVFVTX0FCT1JURUQpO1xuK31cbitcbiAvKipcbiAgKiBwOV9jbGllbnRfcnBjIC0gaXNzdWUgYSByZXF1ZXN0IGFuZCB3YWl0IGZvciBhIHJlc3BvbnNlXG4gICogQGM6IGNsaWVudCBzZXNzaW9uXG5AQCAtNjEyLDYgKzYyOCwyMCBAQCBwOV9jbGllbnRfcnBjKHN0cnVjdCBwOV9jbGllbnQgKmMsIGludDhfdCB0eXBlLCBjb25zdCBjaGFyICpmbXQsIC4uLilcbiBcdFx0ZXJyID0gcmVxLVx1MDAzZXRfZXJyO1xuIFx0fVxuIFx0aWYgKGVyciA9PSAtRVJFU1RBUlRTWVMgXHUwMDI2XHUwMDI2IGMtXHUwMDNlc3RhdHVzID09IENvbm5lY3RlZCkge1xuK1x0XHRpZiAoUkVBRF9PTkNFKHJlcS1cdTAwM2VzdGF0dXMpID09IFJFUV9TVEFUVVNfUkNWRCkge1xuK1x0XHRcdGVyciA9IDA7XG4rXHRcdFx0Z290byByZWNhbGNfc2lncGVuZGluZztcbitcdFx0fVxuK1xuK1x0XHRpZiAoZmF0YWxfc2lnbmFsX3BlbmRpbmcoY3VycmVudCkgXHUwMDI2XHUwMDI2XG4rXHRcdCAgICBjLVx1MDAzZXRyYW5zX21vZC1cdTAwM2VzdXBwb3J0c19hc3luY19hYm9ydCkge1xuK1x0XHRcdHA5X2RlYnVnKFA5X0RFQlVHX01VWCwgXCJmYXRhbCBzaWduYWw6IHNraXAgZmx1c2hcXG5cIik7XG4rXHRcdFx0cDlfY2xpZW50X2Fib3J0KGMsIHJlcSk7XG4rXHRcdFx0aWYgKFJFQURfT05DRShyZXEtXHUwMDNlc3RhdHVzKSA9PSBSRVFfU1RBVFVTX1JDVkQpXG4rXHRcdFx0XHRlcnIgPSAwO1xuK1x0XHRcdGdvdG8gcmVjYWxjX3NpZ3BlbmRpbmc7XG4rXHRcdH1cbitcbiBcdFx0cDlfZGVidWcoUDlfREVCVUdfTVVYLCBcImZsdXNoaW5nXFxuXCIpO1xuIFx0XHRzaWdwZW5kaW5nID0gMTtcbiBcdFx0Y2xlYXJfdGhyZWFkX2ZsYWcoVElGX1NJR1BFTkRJTkcpO1xuQEAgLTY5Nyw2ICs3MjcsMTEgQEAgc3RhdGljIHN0cnVjdCBwOV9yZXFfdCAqcDlfY2xpZW50X3pjX3JwYyhzdHJ1Y3QgcDlfY2xpZW50ICpjLCBpbnQ4X3QgdHlwZSxcbiBcdFx0ZXJyID0gcmVxLVx1MDAzZXRfZXJyO1xuIFx0fVxuIFx0aWYgKGVyciA9PSAtRVJFU1RBUlRTWVMgXHUwMDI2XHUwMDI2IGMtXHUwMDNlc3RhdHVzID09IENvbm5lY3RlZCkge1xuK1x0XHRpZiAoUkVBRF9PTkNFKHJlcS1cdTAwM2VzdGF0dXMpID09IFJFUV9TVEFUVVNfUkNWRCkge1xuK1x0XHRcdGVyciA9IDA7XG4rXHRcdFx0Z290byByZWNhbGNfc2lncGVuZGluZztcbitcdFx0fVxuK1xuIFx0XHRwOV9kZWJ1ZyhQOV9ERUJVR19NVVgsIFwiZmx1c2hpbmdcXG5cIik7XG4gXHRcdHNpZ3BlbmRpbmcgPSAxO1xuIFx0XHRjbGVhcl90aHJlYWRfZmxhZyhUSUZfU0lHUEVORElORyk7XG5kaWZmIC0tZ2l0IGEvbmV0LzlwL3RyYW5zX2ZkLmMgYi9uZXQvOXAvdHJhbnNfZmQuY1xuaW5kZXggZWI2ODViNTJhZWIyNjQuLmQ1Y2ZmOGMyYzg4Y2RjIDEwMDY0NFxuLS0tIGEvbmV0LzlwL3RyYW5zX2ZkLmNcbisrKyBiL25ldC85cC90cmFuc19mZC5jXG5AQCAtMjkzLDcgKzI5Myw5IEBAIHN0YXRpYyB2b2lkIHA5X3JlYWRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXHRcdFx0IG0sIG0tXHUwMDNlcmMuc2l6ZSwgbS1cdTAwM2VyYy50YWcpO1xuIFxuIFx0XHRtLVx1MDAzZXJyZXEgPSBwOV90YWdfbG9va3VwKG0tXHUwMDNlY2xpZW50LCBtLVx1MDAzZXJjLnRhZyk7XG4tXHRcdGlmICghbS1cdTAwM2VycmVxIHx8IChtLVx1MDAzZXJyZXEtXHUwMDNlc3RhdHVzICE9IFJFUV9TVEFUVVNfU0VOVCkpIHtcbitcdFx0aWYgKCFtLVx1MDAzZXJyZXEgfHxcbitcdFx0ICAgIChtLVx1MDAzZXJyZXEtXHUwMDNlc3RhdHVzICE9IFJFUV9TVEFUVVNfU0VOVCBcdTAwMjZcdTAwMjZcbitcdFx0ICAgICBtLVx1MDAzZXJyZXEtXHUwMDNlc3RhdHVzICE9IFJFUV9TVEFUVVNfQUJPUlRFRCkpIHtcbiBcdFx0XHRwOV9kZWJ1ZyhQOV9ERUJVR19FUlJPUiwgXCJVbmV4cGVjdGVkIHBhY2tldCB0YWcgJWRcXG5cIixcbiBcdFx0XHRcdCBtLVx1MDAzZXJjLnRhZyk7XG4gXHRcdFx0ZXJyID0gLUVJTztcbkBAIC0zMzIsNiArMzM0LDkgQEAgc3RhdGljIHZvaWQgcDlfcmVhZF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiBcdFx0aWYgKG0tXHUwMDNlcnJlcS1cdTAwM2VzdGF0dXMgPT0gUkVRX1NUQVRVU19TRU5UKSB7XG4gXHRcdFx0bGlzdF9kZWwoXHUwMDI2bS1cdTAwM2VycmVxLVx1MDAzZXJlcV9saXN0KTtcbiBcdFx0XHRwOV9jbGllbnRfY2IobS1cdTAwM2VjbGllbnQsIG0tXHUwMDNlcnJlcSwgUkVRX1NUQVRVU19SQ1ZEKTtcbitcdFx0fSBlbHNlIGlmIChtLVx1MDAzZXJyZXEtXHUwMDNlc3RhdHVzID09IFJFUV9TVEFUVVNfQUJPUlRFRCkge1xuK1x0XHRcdGxpc3RfZGVsKFx1MDAyNm0tXHUwMDNlcnJlcS1cdTAwM2VyZXFfbGlzdCk7XG4rXHRcdFx0cDlfY2xpZW50X2NiKG0tXHUwMDNlY2xpZW50LCBtLVx1MDAzZXJyZXEsIFJFUV9TVEFUVVNfQUJPUlRFRCk7XG4gXHRcdH0gZWxzZSBpZiAobS1cdTAwM2VycmVxLVx1MDAzZXN0YXR1cyA9PSBSRVFfU1RBVFVTX0ZMU0hEKSB7XG4gXHRcdFx0LyogSWdub3JlIHJlcGxpZXMgYXNzb2NpYXRlZCB3aXRoIGEgY2FuY2VsbGVkIHJlcXVlc3QuICovXG4gXHRcdFx0cDlfZGVidWcoUDlfREVCVUdfVFJBTlMsXG5AQCAtOTk2LDYgKzEwMDEsNyBAQCBzdGF0aWMgc3RydWN0IHA5X3RyYW5zX21vZHVsZSBwOV90Y3BfdHJhbnMgPSB7XG4gXHQucG9vbGVkX3JidWZmZXJzID0gZmFsc2UsXG4gXHQuZGVmID0gZmFsc2UsXG4gXHQuc3VwcG9ydHNfdm1hbGxvYyA9IHRydWUsXG4rXHQuc3VwcG9ydHNfYXN5bmNfYWJvcnQgPSB0cnVlLFxuIFx0LmNyZWF0ZSA9IHA5X2ZkX2NyZWF0ZV90Y3AsXG4gXHQuY2xvc2UgPSBwOV9mZF9jbG9zZSxcbiBcdC5yZXF1ZXN0ID0gcDlfZmRfcmVxdWVzdCxcbkBAIC0xMDExLDYgKzEwMTcsNyBAQCBzdGF0aWMgc3RydWN0IHA5X3RyYW5zX21vZHVsZSBwOV91bml4X3RyYW5zID0ge1xuIFx0Lm1heHNpemUgPSBNQVhfU09DS19CVUYsXG4gXHQuZGVmID0gZmFsc2UsXG4gXHQuc3VwcG9ydHNfdm1hbGxvYyA9IHRydWUsXG4rXHQuc3VwcG9ydHNfYXN5bmNfYWJvcnQgPSB0cnVlLFxuIFx0LmNyZWF0ZSA9IHA5X2ZkX2NyZWF0ZV91bml4LFxuIFx0LmNsb3NlID0gcDlfZmRfY2xvc2UsXG4gXHQucmVxdWVzdCA9IHA5X2ZkX3JlcXVlc3QsXG5AQCAtMTAyNiw2ICsxMDMzLDcgQEAgc3RhdGljIHN0cnVjdCBwOV90cmFuc19tb2R1bGUgcDlfZmRfdHJhbnMgPSB7XG4gXHQubWF4c2l6ZSA9IE1BWF9TT0NLX0JVRixcbiBcdC5kZWYgPSBmYWxzZSxcbiBcdC5zdXBwb3J0c192bWFsbG9jID0gdHJ1ZSxcbitcdC5zdXBwb3J0c19hc3luY19hYm9ydCA9IHRydWUsXG4gXHQuY3JlYXRlID0gcDlfZmRfY3JlYXRlLFxuIFx0LmNsb3NlID0gcDlfZmRfY2xvc2UsXG4gXHQucmVxdWVzdCA9IHA5X2ZkX3JlcXVlc3QsXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQxMjowMDoxMy42MTA1MzQ5ODJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjMwNjQ3NTQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIDlwIENsaWVudCBQYXRjaCoqXG5cbk9rYXksIHNvIHdlIGhhdmUgYSBwYXRjaCBoZXJlIHRoYXQncyBtYWtpbmcgc29tZSBwcmV0dHkgc2lnbmlmaWNhbnQgY2hhbmdlcyB0byB0aGUgOXAgY2xpZW50IGFuZCBpdHMgdHJhbnNwb3J0IGNvZGUuIFRoZSBjb3JlIG9mIGl0IHNlZW1zIHRvIGJlIGFib3V0IGltcHJvdmluZyBob3cgd2UgaGFuZGxlIGFzeW5jaHJvbm91cyByZXF1ZXN0IGFib3J0aW9uLiBJdCBsb29rcyBsaWtlIHRoZXkncmUgaW50cm9kdWNpbmcgYSBuZXcgcmVxdWVzdCBzdGF0dXMsIGBSRVFfU1RBVFVTX0FCT1JURURgLCBhbmQgYWRkaW5nIGBzdXBwb3J0c19hc3luY19hYm9ydGAgdG8gdGhlIGBwOV90cmFuc19tb2R1bGVgLlxuXG5Fc3NlbnRpYWxseSwgdGhlIHBhdGNoIGFsdGVycyBgcDlfY2xpZW50X3JwY2AgYW5kIGBwOV9jbGllbnRfemNfcnBjYCB0byBkZWFsIHdpdGggZmF0YWwgc2lnbmFscyAobGlrZWx5IGZyb20gdGltZW91dHMgb3Igb3RoZXIgc3lzdGVtLWxldmVsIGlzc3VlcykgYnkgYWJvcnRpbmcgdGhlIHJlcXVlc3RzIGRpcmVjdGx5IGluc3RlYWQgb2YgaGFuZ2luZyBhcm91bmQgd2FpdGluZyBmb3IgYSBgVEZMVVNIYC4gVGhpcyBpcyBtdWNoIGNsZWFuZXIuIEkgc2VlIGl0IGFsc28gbW9kaWZpZXMgdGhlIGBwOV9yZWFkX3dvcmtgIGZ1bmN0aW9uIGluIGBuZXQvOXAvdHJhbnNfZmQuY2AgdG8gaGFuZGxlIHRoaXMgbmV3IGBSRVFfU1RBVFVTX0FCT1JURURgIHByb3Blcmx5LiBUaGF0IGlzIHRoZSBmaW5hbCBwaWVjZSBvZiB0aGUgbG9naWMuXG5cbkl0IHRoZW4gc2V0cyBgc3VwcG9ydHNfYXN5bmNfYWJvcnQgPSB0cnVlYCBmb3IgdGhlIGNvcmUgdHJhbnNwb3J0cyDigJMgYHA5X3RjcF90cmFuc2AsIGBwOV91bml4X3RyYW5zYCwgYW5kIGBwOV9mZF90cmFuc2AuIFRoaXMgbWFrZXMgc2Vuc2UsIGFzIHRoZXNlIGFyZSB0aGUgcHJpbWFyeSB0cmFuc3BvcnQgbWVjaGFuaXNtcy5cblxuVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLiBBbnkgOXAgZmlsZXN5c3RlbSBtb3VudCBpcyBsaWtlbHkgdG8gdG91Y2ggdGhpcyBjb2RlLiBUaGF0IGltbWVkaWF0ZWx5IG1ha2VzIG1lIHRoaW5rLCBcImZ1enppbmdcIi4gVGhlIHBhdGNoIHNlZW1zIGxpa2UgYSBnb29kIHRhcmdldCBmb3Igc29tZSBmdXp6aW5nIGNhbXBhaWducy5cblxuTGV0IG1lIHRha2UgYSBxdWljayBsb29rIGF0IHRoZSBLY29uZmlnIG9wdGlvbnMgdG8gZGV0ZXJtaW5lIGlmIHRoZXNlIGNoYW5nZXMgY2FuIGJlIGNvbnRyb2xsZWQuIEJhc2VkIG9uIG15IGV4aXN0aW5nIGtub3dsZWRnZSwgSSBleHBlY3QgdGhlIHJlbGV2YW50IG9wdGlvbnMgdG8gYmU6IGBDT05GSUdfTkVUXzlQYCwgYENPTkZJR19ORVRfOVBfRkRgLCBhbmQgYENPTkZJR185UF9GU2AuIEknbGwgdXNlIGBncmVwcGVyYCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5NDcsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQxMjowMDoxOC44NDExODUyMjdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTMxMTk2MTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfOVBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0LzlwL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0LzlwL0tjb25maWctNS1cXG5uZXQvOXAvS2NvbmZpZzo2Om1lbnVjb25maWcgTkVUXzlQXFxubmV0LzlwL0tjb25maWctNy1cXHR0cmlzdGF0ZSBcXFwiUGxhbiA5IFJlc291cmNlIFNoYXJpbmcgU3VwcG9ydCAoOVAyMDAwKVxcXCJcXG4tLVxcbm5ldC85cC9LY29uZmlnPTE3PWlmIE5FVF85UFxcbm5ldC85cC9LY29uZmlnLTE4LVxcbm5ldC85cC9LY29uZmlnOjE5OmNvbmZpZyBORVRfOVBfRkRcXG5uZXQvOXAvS2NvbmZpZy0yMC1cXHRkZWZhdWx0IE5FVF85UFxcbi0tXFxubmV0LzlwL0tjb25maWctMjctXFxubmV0LzlwL0tjb25maWc6Mjg6Y29uZmlnIE5FVF85UF9WSVJUSU9cXG5uZXQvOXAvS2NvbmZpZy0yOS1cXHRkZXBlbmRzIG9uIFZJUlRJT1xcbi0tXFxubmV0LzlwL0tjb25maWctMzQtXFxubmV0LzlwL0tjb25maWc6MzU6Y29uZmlnIE5FVF85UF9YRU5cXG5uZXQvOXAvS2NvbmZpZy0zNi1cXHRkZXBlbmRzIG9uIFhFTlxcbi0tXFxubmV0LzlwL0tjb25maWctNDItXFxubmV0LzlwL0tjb25maWc6NDM6Y29uZmlnIE5FVF85UF9VU0JHXFxubmV0LzlwL0tjb25maWctNDQtXFx0dHJpc3RhdGUgXFxcIjlQIFVTQiBHYWRnZXQgVHJhbnNwb3J0XFxcIlxcbi0tXFxubmV0LzlwL0tjb25maWctNTEtXFxubmV0LzlwL0tjb25maWc6NTI6Y29uZmlnIE5FVF85UF9SRE1BXFxubmV0LzlwL0tjb25maWctNTMtXFx0ZGVwZW5kcyBvbiBJTkVUIFxcdTAwMjZcXHUwMDI2IElORklOSUJBTkQgXFx1MDAyNlxcdTAwMjYgSU5GSU5JQkFORF9BRERSX1RSQU5TXFxuLS1cXG5uZXQvOXAvS2NvbmZpZy01Ny1cXG5uZXQvOXAvS2NvbmZpZzo1ODpjb25maWcgTkVUXzlQX0RFQlVHXFxubmV0LzlwL0tjb25maWctNTktXFx0Ym9vbCBcXFwiRGVidWcgaW5mb3JtYXRpb25cXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDEyOjAwOjE5LjM3MjM4ODU5NloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNjM1MTY5NTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIGNvbmZpZyBvcHRpb25zLCB0aGlua2luZyB0aHJvdWdoIHRoaXMgbGlrZSBJIHdvdWxkOlxuXG4qKkRpZ2dpbmcgaW50byB0aGUgOVAgTmV0d29yayBGaWxlIFN5c3RlbSBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgc28gSSdtIGRlYWxpbmcgd2l0aCB0aGUgOVAgbmV0d29yayBmaWxlIHN5c3RlbSBhbmQgbmVlZCB0byBxdWlja2x5IGZpZ3VyZSBvdXQgdGhlIGVzc2VudGlhbCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIGtub3cgdGhhdCBgTkVUXzlQYCBhbmQgYE5FVF85UF9GRGAgYXJlIGdvaW5nIHRvIGJlIGtleS4gYE5FVF85UGAgaXMgcHJvYmFibHkgdGhlIGNvcmUgOVAgZnVuY3Rpb25hbGl0eSwgbGlrZWx5IGVuYWJsaW5nIHRoZSBnZW5lcmFsIG5ldHdvcmsgcHJvdG9jb2wgc3VwcG9ydC4gQW5kLCBJJ20gYmV0dGluZyB0aGF0IGBORVRfOVBfRkRgIGhhcyB0byBkbyB3aXRoIHVzaW5nIGZpbGUgZGVzY3JpcHRvcnMsIG1heWJlIGZvciBwZXJmb3JtYW5jZSBvciBtb3JlIGRpcmVjdCBpbnRlcmFjdGlvbi4gSSByZWFsbHkgbmVlZCB0byB2ZXJpZnkgdGhhdCBhbmQgc2VlIGhvdyB0aGV5IGludGVycGxheS5cblxuSSBhbHNvIHJlbWVtYmVyLCBvZiBjb3Vyc2UsIHRoYXQgdGhlcmUncyBgOVBfRlNgLCB3aGljaCBpcyBwcm9iYWJseSB0aGUgYWN0dWFsIGZpbGVzeXN0ZW0gbW9kdWxlIGZvciB0aGUgOVAgcHJvdG9jb2wuIEkgbWVhbiwgaXQgaXMgdGhlIHN0YW5kYXJkIGZvciA5UCBhZnRlciBhbGwuIEl0J3MgdGltZSB0byBkcmlsbCBkb3duIGFuZCBjaGVjayB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gZmlsZSAoYGZzLzlwL0tjb25maWdgKSB0byBjb25maXJtIG15IGFzc3VtcHRpb25zIGFuZCBnZXQgdGhlIGZ1bGwgcGljdHVyZS4gTGV0J3Mgc2VlIHdoYXQgdGhlIGRlcGVuZGVuY2llcyBhbmQgcmVsYXRpb25zaGlwcyBhcmUgYmV0d2VlbiB0aGVzZSBvcHRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MDIyLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTI6MDA6MjIuNzM1OTA3ODVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE0MjgyMDY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyA5UF9GU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy85cC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzLzlwL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5mcy85cC9LY29uZmlnOjI6Y29uZmlnIDlQX0ZTXFxuZnMvOXAvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJQbGFuIDkgUmVzb3VyY2UgU2hhcmluZyBTdXBwb3J0ICg5UDIwMDApXFxcIlxcbi0tXFxuZnMvOXAvS2NvbmZpZz0xND1pZiA5UF9GU1xcbmZzLzlwL0tjb25maWc6MTU6Y29uZmlnIDlQX0ZTQ0FDSEVcXG5mcy85cC9LY29uZmlnLTE2LVxcdGJvb2wgXFxcIkVuYWJsZSA5UCBjbGllbnQgY2FjaGluZyBzdXBwb3J0XFxcIlxcbi0tXFxuZnMvOXAvS2NvbmZpZy0yMi1cXG5mcy85cC9LY29uZmlnOjIzOmNvbmZpZyA5UF9GU19QT1NJWF9BQ0xcXG5mcy85cC9LY29uZmlnLTI0LVxcdGJvb2wgXFxcIjlQIFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzXFxcIlxcbi0tXFxuZnMvOXAvS2NvbmZpZz0zMj1lbmRpZlxcbi0tXFxuZnMvOXAvS2NvbmZpZy0zNC1cXG5mcy85cC9LY29uZmlnOjM1OmNvbmZpZyA5UF9GU19TRUNVUklUWVxcbmZzLzlwL0tjb25maWctMzYtXFx0Ym9vbCBcXFwiOVAgU2VjdXJpdHkgTGFiZWxzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQxMjowMDoyMi45NTAxOTUwNThaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTY2ODc4NzQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgOVAgQ2xpZW50IFBhdGNoKipcblxuT2theSwgc28gd2UncmUgbG9va2luZyBhdCBtb2RpZmljYXRpb25zIHJlbGF0ZWQgdG8gYE5FVF85UGAsIGBORVRfOVBfRkRgLCBhbmQgYDlQX0ZTYC4gTXkgZm9jdXMgbmVlZHMgdG8gYmUgb24gdGhlIGtleSBmdW5jdGlvbnMgaW1wYWN0ZWQgYnkgdGhpcyBwYXRjaC4gTGV0J3Mgc2VlLi4uIHRoZSBwYXRjaCBzcGVjaWZpY2FsbHkgdG91Y2hlcyBgcDlfY2xpZW50X3ByZXBhcmVfcmVxYCB3aGljaCBJIHJlY29nbml6ZSBpcyBoYW5kbGluZyB0aGUgY29udGV4dCwgYW5kIGFsc28gaW50cm9kdWNlcyBhIG5ldyBmdW5jdGlvbiwgYHA5X2NsaWVudF9hYm9ydGAuICBUaGVyZSBhcmUgYWxzbyBjaGFuZ2VzIHRvIGBwOV9jbGllbnRfcnBjYCwgYHA5X2NsaWVudF96Y19ycGNgLCBhbmQgYHA5X3JlYWRfd29ya2AuXG5cbk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIGFuZCB2aXNpYmlsaXR5IG9mIHRoZXNlIGZ1bmN0aW9ucy4gSXMgYHA5X2NsaWVudF9hYm9ydGAgc3RhdGljPyBZZXMsIGl0IGFwcGVhcnMgdG8gYmUuIFRoYXQncyBpbXBvcnRhbnQgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIHNjb3BlIHdpdGhpbiB0aGUgbW9kdWxlLiBHb29kLiBgcDlfY2xpZW50X3JwY2AgYW5kIGBwOV9jbGllbnRfemNfcnBjYCBhcmUgZWl0aGVyIGV4cG9ydGVkIG9yLCBhdCB0aGUgdmVyeSBsZWFzdCwgZ2xvYmFsbHkgYWNjZXNzaWJsZTsgd2hpY2ggaXMgdG8gYmUgZXhwZWN0ZWQgZm9yIGNvcmUgUlBDIGZ1bmN0aW9ucy4gQW5kIGBwOV9yZWFkX3dvcmtgLCB0aGF0J3Mgc3RhdGljLCBpdCByZXNpZGVzIHdpdGhpbiBgbmV0LzlwL3RyYW5zX2ZkLmNgLlxuXG5JJ2xsIGNoZWNrIGBuZXQvOXAvY2xpZW50LmNgIHRvIGNvbmZpcm0gdGhhdCBgcDlfY2xpZW50X2Fib3J0YCBpcywgaW5kZWVkLCBzdGF0aWMsIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIG9mIGl0cyBzY29wZSBhbmQgdXNhZ2UuIEl0IGlzIGFsd2F5cyBnb29kIHRvIGhhdmUgYSBoaWdoIGRlZ3JlZSBvZiBjb25maWRlbmNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NjIxLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDEyOjAwOjI3LjUxNzA3NjM0MVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjA1MTU4OTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicDlfY2xpZW50X2Fib3J0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC85cC9jbGllbnQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvOXAvY2xpZW50LmM9NTAyPXN0YXRpYyBzdHJ1Y3QgcDlfcmVxX3QgKnA5X2NsaWVudF9wcmVwYXJlX3JlcShzdHJ1Y3QgcDlfY2xpZW50ICpjLFxcbi0tXFxubmV0LzlwL2NsaWVudC5jLTU0MC1cXG5uZXQvOXAvY2xpZW50LmM6NTQxOnN0YXRpYyB2b2lkIHA5X2NsaWVudF9hYm9ydChzdHJ1Y3QgcDlfY2xpZW50ICpjLCBzdHJ1Y3QgcDlfcmVxX3QgKnJlcSlcXG5uZXQvOXAvY2xpZW50LmMtNTQyLXtcXG4tLVxcbm5ldC85cC9jbGllbnQuYz01Njc9cDlfY2xpZW50X3JwYyhzdHJ1Y3QgcDlfY2xpZW50ICpjLCBpbnQ4X3QgdHlwZSwgY29uc3QgY2hhciAqZm10LCAuLi4pXFxuLS1cXG5uZXQvOXAvY2xpZW50LmMtNjM4LVxcdFxcdFxcdHA5X2RlYnVnKFA5X0RFQlVHX01VWCwgXFxcImZhdGFsIHNpZ25hbDogc2tpcCBmbHVzaFxcXFxuXFxcIik7XFxubmV0LzlwL2NsaWVudC5jOjYzOTpcXHRcXHRcXHRwOV9jbGllbnRfYWJvcnQoYywgcmVxKTtcXG5uZXQvOXAvY2xpZW50LmMtNjQwLVxcdFxcdFxcdGlmIChSRUFEX09OQ0UocmVxLVxcdTAwM2VzdGF0dXMpID09IFJFUV9TVEFUVVNfUkNWRClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTI6MDA6MjcuNjM3NTk4MDI0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE2MzYyMzQwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgUG90ZW50aWFsIFJvb3QgQ2F1c2VzKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IHRoaXMgYHA5X2NsaWVudF9hYm9ydGAgaXNzdWUuIEl0J3Mgc3RhdGljLCBzbyB0aGF0J3MgcHJvYmFibHkgbm90IHRoZSBkaXJlY3QgY3VscHJpdC4gV2UgbmVlZCB0byBsb29rIGRlZXBlci4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgYHA5X2NsaWVudF9ycGNgIGFuZCBgcDlfY2xpZW50X3pjX3JwY2AgYXJlIHN0cm9uZyBwb3NzaWJpbGl0aWVzLCBhbmQgSSdtIGFkZGluZyBgcDlfcmVhZF93b3JrYCB0byB0aGUgbGlzdC4gSSdtIG9wZXJhdGluZyBvbiB0aGUgYXNzdW1wdGlvbiB0aGF0IHRoaXMgbGlrZWx5IGhhcyBzb21ldGhpbmcgdG8gZG8gd2l0aCB0aGUgUlBDIGZsb3csIHNpbmNlIHRoYXQgaXMsIGZvciBhbGwgaW50ZW50cyBhbmQgcHVycG9zZXMsIHRoZSBoZWFydCBvZiB0aGUgOXAgcHJvdG9jb2wgaW50ZXJhY3Rpb24uXG5cbkxldCdzIHF1aWNrbHkgY29uZmlybSBpZiBgcDlfY2xpZW50X3JwY2AgaXMgYSBob3QgcGF0aC4gSXQncyB0aGUgcHJpbWFyeSBSUEMgZnVuY3Rpb24sIGNhbGxlZCBmb3IgYWxtb3N0IGV2ZXJ5IDlwIG9wZXJhdGlvbiwgc28gaXQncyBwcm9iYWJseSBoZWF2aWx5IHVzZWQuIEJ1dCB0aGUgY29yZSBvZiB0aGUgaXNzdWUgc2VlbXMgcmVsYXRlZCB0byBhIHBlbmRpbmcgZmF0YWwgc2lnbmFsLCB3aGljaCBpcyBpbnRyaWd1aW5nLiBGdXp6aW5nIGBwOV9jbGllbnRfcnBjYCBhbmQgYHA5X2NsaWVudF96Y19ycGNgIHNvdW5kcyBsaWtlIGEgcmVhc29uYWJsZSBhcHByb2FjaCBnaXZlbiB0aGUgc2lnbmFsLXJlbGF0ZWQgbmF0dXJlIG9mIHRoaXMgYnVnLlxuXG5Nb3Jlb3ZlciwgYHA5X3JlYWRfd29ya2AgaXMgY3J1Y2lhbCBhcyBpdCBoYW5kbGVzIHRoZSByZXBsaWVzLiBXZSBkZWZpbml0ZWx5IG5lZWQgdG8gY2hlY2sgdGhhdCBvdXQsIGVzcGVjaWFsbHkgaW4gYG5ldC85cC90cmFuc19mZC5jYC4gU28gbGV0J3MgZm9jdXMgb24gdGhhdCBhcmVhIGZvciBub3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY0MjcsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTI6MDA6MzEuODAxMjI0MTMyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTk4MjU1NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicDlfcmVhZF93b3JrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC85cC90cmFuc19mZC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC85cC90cmFuc19mZC5jPTIxNj1zdGF0aWMgaW50IHA5X2ZkX3JlYWQoc3RydWN0IHA5X2NsaWVudCAqY2xpZW50LCB2b2lkICp2LCBpbnQgbGVuKVxcbi0tXFxubmV0LzlwL3RyYW5zX2ZkLmMtMjM4LS8qKlxcbm5ldC85cC90cmFuc19mZC5jOjIzOTogKiBwOV9yZWFkX3dvcmsgLSBjYWxsZWQgd2hlbiB0aGVyZSBpcyBzb21lIGRhdGEgdG8gYmUgcmVhZCBmcm9tIGEgdHJhbnNwb3J0XFxubmV0LzlwL3RyYW5zX2ZkLmMtMjQwLSAqIEB3b3JrOiBjb250YWluZXIgb2Ygd29yayB0byBiZSBkb25lXFxuLS1cXG5uZXQvOXAvdHJhbnNfZmQuYy0yNDMtXFxubmV0LzlwL3RyYW5zX2ZkLmM6MjQ0OnN0YXRpYyB2b2lkIHA5X3JlYWRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxubmV0LzlwL3RyYW5zX2ZkLmMtMjQ1LXtcXG4tLVxcbm5ldC85cC90cmFuc19mZC5jPTU1ND1zdGF0aWMgdm9pZCBwOV9jb25uX2NyZWF0ZShzdHJ1Y3QgcDlfY2xpZW50ICpjbGllbnQpXFxuLS1cXG5uZXQvOXAvdHJhbnNfZmQuYy01NjctXFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNm0tXFx1MDAzZXVuc2VudF9yZXFfbGlzdCk7XFxubmV0LzlwL3RyYW5zX2ZkLmM6NTY4OlxcdElOSVRfV09SSyhcXHUwMDI2bS1cXHUwMDNlcnEsIHA5X3JlYWRfd29yayk7XFxubmV0LzlwL3RyYW5zX2ZkLmMtNTY5LVxcdElOSVRfV09SSyhcXHUwMDI2bS1cXHUwMDNld3EsIHA5X3dyaXRlX3dvcmspO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQxMjowMDozMi4zMjEwNTYwOTFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI4NTc3NDkyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgUG90ZW50aWFsIEZ1enppbmcgVGFyZ2V0cyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIGZ1bmN0aW9ucyB3aXRoaW4gdGhlIGNvbnRleHQgb2YgZnV6emluZywgc3BlY2lmaWNhbGx5IHdpdGggc3l6a2FsbGVyLiBUaGUgaW1tZWRpYXRlIHRob3VnaHQgaXMgdGhhdCBgcDlfcmVhZF93b3JrYCBpcyBzdGF0aWMsIHdoaWNoIGlzIHdvcnRoIG5vdGluZy4gVGhlIG1haW4gY2FuZGlkYXRlcyBmb3IgdGFyZ2V0cyBhcHBlYXIgdG8gYmUgYHA5X2NsaWVudF9ycGNgLCBgcDlfY2xpZW50X3pjX3JwY2AsIGFuZCBgcDlfcmVhZF93b3JrYC5cblxuU2luY2UgYHA5X2NsaWVudF9hYm9ydGAgaXMgYWxzbyBzdGF0aWMsIGFuZCBzeXprYWxsZXIgKmNhbiogc29tZXRpbWVzIHRhcmdldCBzdGF0aWMgZnVuY3Rpb25zLCBlc3BlY2lhbGx5IGlmIHRoZSBkZWJ1ZyBpbmZvIGlzIHByZXNlbnQsIGl0J3Mgd29ydGggY29uc2lkZXJpbmcuIFRoZSBjcnVjaWFsIHBvaW50IGhlcmUgaXMgdW5pcXVlbmVzczsgaWYgdGhlIHN0YXRpYyBmdW5jdGlvbiBuYW1lIGlzIHVuaXF1ZSwgdGhlbiBzeXprYWxsZXIgc2hvdWxkIGJlIGFibGUgdG8gaWRlbnRpZnkgaXQgZXZlbiBpZiBpdCdzIHN0YXRpYy4gYHA5X2NsaWVudF9hYm9ydGAgc2VlbXMgbGlrZSBhIHBvdGVudGlhbCB0YXJnZXQgaWYgaXQgKmlzKiB1bmlxdWUuXG5cblNvLCB0aGUgbmV4dCBzdGVwIGlzIGRlZmluaXRlbHkgdG8gdmVyaWZ5IHdoZXRoZXIgb3Igbm90IGBwOV9jbGllbnRfYWJvcnRgJ3MgbmFtZSBpcyBhY3R1YWxseSB1bmlxdWUgd2l0aGluIHRoZSBzY29wZSBvZiB0aGUgcHJvZ3JhbS4gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MjU0LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDEyOjAwOjM2LjYwNjgzMzM5MVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTMxNzU5ODI3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwOV9jbGllbnRfYWJvcnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC85cC9jbGllbnQuYz01MDI9c3RhdGljIHN0cnVjdCBwOV9yZXFfdCAqcDlfY2xpZW50X3ByZXBhcmVfcmVxKHN0cnVjdCBwOV9jbGllbnQgKmMsXFxuLS1cXG5uZXQvOXAvY2xpZW50LmMtNTQwLVxcbm5ldC85cC9jbGllbnQuYzo1NDE6c3RhdGljIHZvaWQgcDlfY2xpZW50X2Fib3J0KHN0cnVjdCBwOV9jbGllbnQgKmMsIHN0cnVjdCBwOV9yZXFfdCAqcmVxKVxcbm5ldC85cC9jbGllbnQuYy01NDIte1xcbi0tXFxubmV0LzlwL2NsaWVudC5jPTU2Nz1wOV9jbGllbnRfcnBjKHN0cnVjdCBwOV9jbGllbnQgKmMsIGludDhfdCB0eXBlLCBjb25zdCBjaGFyICpmbXQsIC4uLilcXG4tLVxcbm5ldC85cC9jbGllbnQuYy02MzgtXFx0XFx0XFx0cDlfZGVidWcoUDlfREVCVUdfTVVYLCBcXFwiZmF0YWwgc2lnbmFsOiBza2lwIGZsdXNoXFxcXG5cXFwiKTtcXG5uZXQvOXAvY2xpZW50LmM6NjM5OlxcdFxcdFxcdHA5X2NsaWVudF9hYm9ydChjLCByZXEpO1xcbm5ldC85cC9jbGllbnQuYy02NDAtXFx0XFx0XFx0aWYgKFJFQURfT05DRShyZXEtXFx1MDAzZXN0YXR1cykgPT0gUkVRX1NUQVRVU19SQ1ZEKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQxMjowMDo0MS45MjQ0Mzc0NjFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzIyMDMzMTE0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSA5cCBDbGllbnQgUGF0Y2gqKlxuXG5Pa2F5LCB0aGlzIHBhdGNoIGlzIGRlZmluaXRlbHkgdW5pcXVlOyBpdCdzIG5vdCBzb21ldGhpbmcgSSd2ZSBzZWVuIGJlZm9yZS4gTGV0IG1lIHNlZS4uLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSByZWxldmFudCBjb25maWdzIGFyZSBlbmFibGVkOiBgTkVUXzlQYCwgYE5FVF85UF9GRGAsIGFuZCBgOVBfRlNgLlxuXG5UaGUgY29yZSBvZiB0aGlzIGNoYW5nZSBzZWVtcyB0byBiZSBhcm91bmQgaG93IHRoZSA5cCBjbGllbnQgYW5kIHRyYW5zcG9ydCBjb2RlIGhhbmRsZXMgZmF0YWwgc2lnbmFscy4gSXQncyBlc3NlbnRpYWxseSBhYm9ydGluZyByZXF1ZXN0cywgcmF0aGVyIHRoYW4gZ2V0dGluZyBzdHVjayB3YWl0aW5nIGZvciBhIGBURkxVU0hgLiBUaGF0J3MgaW50ZXJlc3RpbmcsIGFuZCBxdWl0ZSBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBiYXNlIGNsaWVudCBsb2dpYy4gVGhlIGludHJvZHVjdGlvbiBvZiBgUkVRX1NUQVRVU19BQk9SVEVEYCBpcyB0aGUga2V5LCBhbmQgZnVuY3Rpb25zIGxpa2UgYHA5X2NsaWVudF9ycGNgLCBgcDlfY2xpZW50X3pjX3JwY2AsIGFuZCBgcDlfcmVhZF93b3JrYCBhcmUgYWxsIG1vZGlmaWVkIHRvIGFjY291bnQgZm9yIGl0LiBUaGlzIHJlYWxseSBjYWxscyBmb3IgZnV6emluZy5cblxuTXkgcHJpbWFyeSBmb2N1cyBmb3IgZnV6emluZyB3aWxsIGJlIG9uIHRoZSBmdW5jdGlvbnM6IGBwOV9jbGllbnRfYWJvcnRgLCBgcDlfY2xpZW50X3JwY2AsIGBwOV9jbGllbnRfemNfcnBjYCwgYW5kIGBwOV9yZWFkX3dvcmtgLiBXYWl0IGEgbWludXRlLCBgcDlfY2xpZW50X3JwY2AgYW5kIGBwOV9jbGllbnRfemNfcnBjYCBhcmUgdGhlIHByaW1hcnkgaG90IHBhdGhzIGZvciA5cCBjbGllbnQgaW50ZXJhY3Rpb24uIFRoZXkgYXJlIHRoZSBtYWluIGVudHJ5IHBvaW50cyBmb3IgZnV6emVyIGludGVyYWN0aW9uLiBgcDlfY2xpZW50X2Fib3J0YCBpcyB0aGUgZnVuY3Rpb24gKmFjdHVhbGx5KiBoYW5kbGluZyB0aGUgYWJvcnQgbG9naWMgc3BlY2lmaWNhbGx5LCBhbmQgYHA5X3JlYWRfd29ya2AgaXMgdGhlIHJlcGx5IGhhbmRsZXIsIHNvIEkgbmVlZCB0byBtYWtlIHN1cmUgdG8gaW5jbHVkZSB0aG9zZSB0b28uIEknbGwgbWFrZSBzdXJlIHRvIGdldCBgcDlfY2xpZW50X2Fib3J0YCBhbmQgYHA5X3JlYWRfd29ya2Agb24gdGhlIGxpc3QuXG5cbk5vdywgbGV0IG1lIGp1c3QgY29uZmlybSB0aGF0IGBwOV9jbGllbnRfYWJvcnRgIGlzIHRoZSAqb25seSogbmV3bHkgYWRkZWQgZnVuY3Rpb24uIFllcCwgdGhhdCdzIHRoZSBvbmx5IG9uZS4gT2theSwgbGV0J3MgY2FsbCBpdCBhbmQgc2V0IHRoZSByZXN1bHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3ODk1LCJPdXRwdXRUb2tlbnMiOjE4MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQxMjowMDo0OS4xNDQ3NzA4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQxODIyNjg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfOVBcIixcbiAgICBcIk5FVF85UF9GRFwiLFxuICAgIFwiOVBfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwOV9jbGllbnRfYWJvcnRcIixcbiAgICBcInA5X3JlYWRfd29ya1wiLFxuICAgIFwicDlfY2xpZW50X3JwY1wiLFxuICAgIFwicDlfY2xpZW50X3pjX3JwY1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSA5cCBjbGllbnQgYW5kIHRyYW5zcG9ydCBjb2RlIHRvIGhhbmRsZSBmYXRhbCBzaWduYWxzIGJ5IGFib3J0aW5nIHJlcXVlc3RzIGluc3RlYWQgb2Ygd2FpdGluZyBmb3IgVEZMVVNILiBJdCBpbnRyb2R1Y2VzIGEgbmV3IHJlcXVlc3Qgc3RhdHVzIFJFUV9TVEFUVVNfQUJPUlRFRCBhbmQgbW9kaWZpZXMgcDlfY2xpZW50X3JwYywgcDlfY2xpZW50X3pjX3JwYywgYW5kIHA5X3JlYWRfd29yayB0byBoYW5kbGUgaXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSA5cCBjbGllbnQgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUXzlQXCIsXG4gICAgXCJORVRfOVBfRkRcIixcbiAgICBcIjlQX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicDlfY2xpZW50X2Fib3J0XCIsXG4gICAgXCJwOV9yZWFkX3dvcmtcIixcbiAgICBcInA5X2NsaWVudF9ycGNcIixcbiAgICBcInA5X2NsaWVudF96Y19ycGNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgOXAgY2xpZW50IGFuZCB0cmFuc3BvcnQgY29kZSB0byBoYW5kbGUgZmF0YWwgc2lnbmFscyBieSBhYm9ydGluZyByZXF1ZXN0cyBpbnN0ZWFkIG9mIHdhaXRpbmcgZm9yIFRGTFVTSC4gSXQgaW50cm9kdWNlcyBhIG5ldyByZXF1ZXN0IHN0YXR1cyBSRVFfU1RBVFVTX0FCT1JURUQgYW5kIG1vZGlmaWVzIHA5X2NsaWVudF9ycGMsIHA5X2NsaWVudF96Y19ycGMsIGFuZCBwOV9yZWFkX3dvcmsgdG8gaGFuZGxlIGl0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgOXAgY2xpZW50IGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflownc9kz[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-16 11:39:31 +0000 UTC FinishedAt: 2026-07-16 12:00:51 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "58717b2a1365d06c8c64b72aa948541b53fe31eb", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_9P", "NET_9P_FD", "9P_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "58717b2a1365d06c8c64b72aa948541b53fe31eb", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_9P", "NET_9P_FD", "9P_FS" ], "series_id": "9213aec5-dc39-4a75-b59e-3cbfa4f99e79" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "p9_client_abort", "p9_read_work", "p9_client_rpc", "p9_client_zc_rpc" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDEyOjAwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF85UCYjMzQ7LAogICAgJiMzNDtORVRfOVBfRkQmIzM0OywKICAgICYjMzQ7OVBfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwOV9jbGllbnRfYWJvcnQmIzM0OywKICAgICYjMzQ7cDlfcmVhZF93b3JrJiMzNDssCiAgICAmIzM0O3A5X2NsaWVudF9ycGMmIzM0OywKICAgICYjMzQ7cDlfY2xpZW50X3pjX3JwYyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgOXAgY2xpZW50IGFuZCB0cmFuc3BvcnQgY29kZSB0byBoYW5kbGUgZmF0YWwgc2lnbmFscyBieSBhYm9ydGluZyByZXF1ZXN0cyBpbnN0ZWFkIG9mIHdhaXRpbmcgZm9yIFRGTFVTSC4gSXQgaW50cm9kdWNlcyBhIG5ldyByZXF1ZXN0IHN0YXR1cyBSRVFfU1RBVFVTX0FCT1JURUQgYW5kIG1vZGlmaWVzIHA5X2NsaWVudF9ycGMsIHA5X2NsaWVudF96Y19ycGMsIGFuZCBwOV9yZWFkX3dvcmsgdG8gaGFuZGxlIGl0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgOXAgY2xpZW50IGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDEyOjAwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNDA0ZDg4MjM4YTM5MWNjMDlhMzMyZjYwZjE0YTU3M2UxMTc1ZjQ1MFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDE2IDEyOjAwOjExIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LzlwL2NsaWVudC5oIGIvaW5jbHVkZS9uZXQvOXAvY2xpZW50LmhcbmluZGV4IDU1YzZjYjU0YmQyNTQ4Li43MDBkY2IzN2MxZGM0MCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0LzlwL2NsaWVudC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC85cC9jbGllbnQuaFxuQEAgLTU4LDYgJiM0Mzs1OCw4IEBAIGVudW0gcDlfdHJhbnNfc3RhdHVzIHtcbiAgKiBAUkVRX1NUQVRVU19VTlNFTlQ6IHJlcXVlc3Qgd2FpdGluZyB0byBiZSBzZW50XG4gICogQFJFUV9TVEFUVVNfU0VOVDogcmVxdWVzdCBzZW50IHRvIHNlcnZlclxuICAqIEBSRVFfU1RBVFVTX1JDVkQ6IHJlc3BvbnNlIHJlY2VpdmVkIGZyb20gc2VydmVyXG4mIzQzOyAqIEBSRVFfU1RBVFVTX0FCT1JURUQ6IGNhbGxlciBzdG9wcGVkIHdhaXRpbmcsIGJ1dCB0aGUgcmVxdWVzdCBrZWVwcyBpdHMgdGFnXG4mIzQzOyAqICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkIHVudGlsIGEgcmVwbHkgYXJyaXZlcyBvciB0aGUgdHJhbnNwb3J0IGNsb3Nlc1xuICAqIEBSRVFfU1RBVFVTX0ZMU0hEOiByZXF1ZXN0IGhhcyBiZWVuIGZsdXNoZWRcbiAgKiBAUkVRX1NUQVRVU19FUlJPUjogcmVxdWVzdCBlbmNvdW50ZXJlZCBhbiBlcnJvciBvbiB0aGUgY2xpZW50IHNpZGVcbiAgKi9cbkBAIC02Nyw2ICYjNDM7NjksNyBAQCBlbnVtIHA5X3JlcV9zdGF0dXNfdCB7XG4gXHRSRVFfU1RBVFVTX1VOU0VOVCxcbiBcdFJFUV9TVEFUVVNfU0VOVCxcbiBcdFJFUV9TVEFUVVNfUkNWRCxcbiYjNDM7XHRSRVFfU1RBVFVTX0FCT1JURUQsXG4gXHRSRVFfU1RBVFVTX0ZMU0hELFxuIFx0UkVRX1NUQVRVU19FUlJPUixcbiB9O1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LzlwL3RyYW5zcG9ydC5oIGIvaW5jbHVkZS9uZXQvOXAvdHJhbnNwb3J0LmhcbmluZGV4IGE5MTJiYmFhODYyZjliLi45MzM0OWZlMzNkZmY0MCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0LzlwL3RyYW5zcG9ydC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC85cC90cmFuc3BvcnQuaFxuQEAgLTM0LDYgJiM0MzszNCw5IEBAXG4gICogQHN1cHBvcnRzX3ZtYWxsb2M6IHNldCBpZiB0aGlzIHRyYW5zcG9ydCBjYW4gd29yayB3aXRoIHZtYWxsb2MmIzM5O2QgYnVmZmVyc1xuICAqICAgICAgICAgICAgICAgICAgICAobm9uLXBoeXNpY2FsbHkgY29udGlndW91cyBtZW1vcnkpLiBUcmFuc3BvcnRzIHJlcXVpcmluZ1xuICAqICAgICAgICAgICAgICAgICAgICBETUEgc2hvdWxkIGxlYXZlIHRoaXMgYXMgZmFsc2UuXG4mIzQzOyAqIEBzdXBwb3J0c19hc3luY19hYm9ydDogc2V0IGlmIGEgc2VudCByZXF1ZXN0IHJlbWFpbnMgcmVmZXJlbmNlZCBieSB0aGVcbiYjNDM7ICogICAgICAgICAgICAgICAgICAgICAgICB0cmFuc3BvcnQgdW50aWwgaXRzIHJlcGx5IGlzIGNvbnN1bWVkIG9yIHRoZVxuJiM0MzsgKiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9ydCBpcyBjbG9zZWRcbiAgKiBAY3JlYXRlOiBtZW1iZXIgZnVuY3Rpb24gdG8gY3JlYXRlIGEgbmV3IGNvbm5lY3Rpb24gb24gdGhpcyB0cmFuc3BvcnRcbiAgKiBAY2xvc2U6IG1lbWJlciBmdW5jdGlvbiB0byBkaXNjYXJkIGEgY29ubmVjdGlvbiBvbiB0aGlzIHRyYW5zcG9ydFxuICAqIEByZXF1ZXN0OiBtZW1iZXIgZnVuY3Rpb24gdG8gaXNzdWUgYSByZXF1ZXN0IHRvIHRoZSB0cmFuc3BvcnRcbkBAIC01NSw2ICYjNDM7NTgsNyBAQCBzdHJ1Y3QgcDlfdHJhbnNfbW9kdWxlIHtcbiBcdGJvb2wgcG9vbGVkX3JidWZmZXJzO1xuIFx0Ym9vbCBkZWY7XHRcdC8qIHRoaXMgdHJhbnNwb3J0IHNob3VsZCBiZSBkZWZhdWx0ICovXG4gXHRib29sIHN1cHBvcnRzX3ZtYWxsb2M7XHQvKiBjYW4gd29yayB3aXRoIHZtYWxsb2MmIzM5O2QgYnVmZmVycyAqL1xuJiM0MztcdGJvb2wgc3VwcG9ydHNfYXN5bmNfYWJvcnQ7IC8qIGtlZXBzIHNlbnQgcmVxdWVzdHMgYWxpdmUgYWZ0ZXIgY2FsbGVyIGV4aXRzICovXG4gXHRzdHJ1Y3QgbW9kdWxlICpvd25lcjtcbiBcdGludCAoKmNyZWF0ZSkoc3RydWN0IHA5X2NsaWVudCAqY2xpZW50LFxuIFx0XHQgICAgICBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpO1xuZGlmZiAtLWdpdCBhL25ldC85cC9jbGllbnQuYyBiL25ldC85cC9jbGllbnQuY1xuaW5kZXggZWY2NDU0NmM2ZDUyYTEuLjQ3MzUzY2YwNzUwZGRmIDEwMDY0NFxuLS0tIGEvbmV0LzlwL2NsaWVudC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvOXAvY2xpZW50LmNcbkBAIC01MzgsNiAmIzQzOzUzOCwyMiBAQCBzdGF0aWMgc3RydWN0IHA5X3JlcV90ICpwOV9jbGllbnRfcHJlcGFyZV9yZXEoc3RydWN0IHA5X2NsaWVudCAqYyxcbiBcdHJldHVybiBFUlJfUFRSKGVycik7XG4gfVxuIFxuJiM0MztzdGF0aWMgdm9pZCBwOV9jbGllbnRfYWJvcnQoc3RydWN0IHA5X2NsaWVudCAqYywgc3RydWN0IHA5X3JlcV90ICpyZXEpXG4mIzQzO3tcbiYjNDM7XHQvKlxuJiM0MztcdCAqIEEgZmF0YWwgc2lnbmFsIGNhbm5vdCB3YWl0IGZvciBURkxVU0gsIGJ1dCBhIHNlbnQgcmVxdWVzdCBtdXN0IGtlZXBcbiYjNDM7XHQgKiBpdHMgdGFnIHVudGlsIGEgbGF0ZSByZXBseSBhcnJpdmVzIG9yIHRoZSB0cmFuc3BvcnQgaXMgdG9ybiBkb3duLlxuJiM0MztcdCAqL1xuJiM0MztcdGlmICghYy1cdTAwM2V0cmFuc19tb2QtXHUwMDNlc3VwcG9ydHNfYXN5bmNfYWJvcnQgfHxcbiYjNDM7XHQgICAgUkVBRF9PTkNFKHJlcS1cdTAwM2VzdGF0dXMpIFx1MDAzZT0gUkVRX1NUQVRVU19SQ1ZEKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHRpZiAoIWMtXHUwMDNldHJhbnNfbW9kLVx1MDAzZWNhbmNlbChjLCByZXEpKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHRjbXB4Y2hnKFx1MDAyNnJlcS1cdTAwM2VzdGF0dXMsIFJFUV9TVEFUVVNfU0VOVCwgUkVRX1NUQVRVU19BQk9SVEVEKTtcbiYjNDM7fVxuJiM0MztcbiAvKipcbiAgKiBwOV9jbGllbnRfcnBjIC0gaXNzdWUgYSByZXF1ZXN0IGFuZCB3YWl0IGZvciBhIHJlc3BvbnNlXG4gICogQGM6IGNsaWVudCBzZXNzaW9uXG5AQCAtNjEyLDYgJiM0Mzs2MjgsMjAgQEAgcDlfY2xpZW50X3JwYyhzdHJ1Y3QgcDlfY2xpZW50ICpjLCBpbnQ4X3QgdHlwZSwgY29uc3QgY2hhciAqZm10LCAuLi4pXG4gXHRcdGVyciA9IHJlcS1cdTAwM2V0X2VycjtcbiBcdH1cbiBcdGlmIChlcnIgPT0gLUVSRVNUQVJUU1lTIFx1MDAyNlx1MDAyNiBjLVx1MDAzZXN0YXR1cyA9PSBDb25uZWN0ZWQpIHtcbiYjNDM7XHRcdGlmIChSRUFEX09OQ0UocmVxLVx1MDAzZXN0YXR1cykgPT0gUkVRX1NUQVRVU19SQ1ZEKSB7XG4mIzQzO1x0XHRcdGVyciA9IDA7XG4mIzQzO1x0XHRcdGdvdG8gcmVjYWxjX3NpZ3BlbmRpbmc7XG4mIzQzO1x0XHR9XG4mIzQzO1xuJiM0MztcdFx0aWYgKGZhdGFsX3NpZ25hbF9wZW5kaW5nKGN1cnJlbnQpIFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0ICAgIGMtXHUwMDNldHJhbnNfbW9kLVx1MDAzZXN1cHBvcnRzX2FzeW5jX2Fib3J0KSB7XG4mIzQzO1x0XHRcdHA5X2RlYnVnKFA5X0RFQlVHX01VWCwgXCYjMzQ7ZmF0YWwgc2lnbmFsOiBza2lwIGZsdXNoXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdFx0cDlfY2xpZW50X2Fib3J0KGMsIHJlcSk7XG4mIzQzO1x0XHRcdGlmIChSRUFEX09OQ0UocmVxLVx1MDAzZXN0YXR1cykgPT0gUkVRX1NUQVRVU19SQ1ZEKVxuJiM0MztcdFx0XHRcdGVyciA9IDA7XG4mIzQzO1x0XHRcdGdvdG8gcmVjYWxjX3NpZ3BlbmRpbmc7XG4mIzQzO1x0XHR9XG4mIzQzO1xuIFx0XHRwOV9kZWJ1ZyhQOV9ERUJVR19NVVgsIFwmIzM0O2ZsdXNoaW5nXFxuXCYjMzQ7KTtcbiBcdFx0c2lncGVuZGluZyA9IDE7XG4gXHRcdGNsZWFyX3RocmVhZF9mbGFnKFRJRl9TSUdQRU5ESU5HKTtcbkBAIC02OTcsNiAmIzQzOzcyNywxMSBAQCBzdGF0aWMgc3RydWN0IHA5X3JlcV90ICpwOV9jbGllbnRfemNfcnBjKHN0cnVjdCBwOV9jbGllbnQgKmMsIGludDhfdCB0eXBlLFxuIFx0XHRlcnIgPSByZXEtXHUwMDNldF9lcnI7XG4gXHR9XG4gXHRpZiAoZXJyID09IC1FUkVTVEFSVFNZUyBcdTAwMjZcdTAwMjYgYy1cdTAwM2VzdGF0dXMgPT0gQ29ubmVjdGVkKSB7XG4mIzQzO1x0XHRpZiAoUkVBRF9PTkNFKHJlcS1cdTAwM2VzdGF0dXMpID09IFJFUV9TVEFUVVNfUkNWRCkge1xuJiM0MztcdFx0XHRlcnIgPSAwO1xuJiM0MztcdFx0XHRnb3RvIHJlY2FsY19zaWdwZW5kaW5nO1xuJiM0MztcdFx0fVxuJiM0MztcbiBcdFx0cDlfZGVidWcoUDlfREVCVUdfTVVYLCBcJiMzNDtmbHVzaGluZ1xcblwmIzM0Oyk7XG4gXHRcdHNpZ3BlbmRpbmcgPSAxO1xuIFx0XHRjbGVhcl90aHJlYWRfZmxhZyhUSUZfU0lHUEVORElORyk7XG5kaWZmIC0tZ2l0IGEvbmV0LzlwL3RyYW5zX2ZkLmMgYi9uZXQvOXAvdHJhbnNfZmQuY1xuaW5kZXggZWI2ODViNTJhZWIyNjQuLmQ1Y2ZmOGMyYzg4Y2RjIDEwMDY0NFxuLS0tIGEvbmV0LzlwL3RyYW5zX2ZkLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC85cC90cmFuc19mZC5jXG5AQCAtMjkzLDcgJiM0MzsyOTMsOSBAQCBzdGF0aWMgdm9pZCBwOV9yZWFkX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0XHRcdCBtLCBtLVx1MDAzZXJjLnNpemUsIG0tXHUwMDNlcmMudGFnKTtcbiBcbiBcdFx0bS1cdTAwM2VycmVxID0gcDlfdGFnX2xvb2t1cChtLVx1MDAzZWNsaWVudCwgbS1cdTAwM2VyYy50YWcpO1xuLVx0XHRpZiAoIW0tXHUwMDNlcnJlcSB8fCAobS1cdTAwM2VycmVxLVx1MDAzZXN0YXR1cyAhPSBSRVFfU1RBVFVTX1NFTlQpKSB7XG4mIzQzO1x0XHRpZiAoIW0tXHUwMDNlcnJlcSB8fFxuJiM0MztcdFx0ICAgIChtLVx1MDAzZXJyZXEtXHUwMDNlc3RhdHVzICE9IFJFUV9TVEFUVVNfU0VOVCBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdCAgICAgbS1cdTAwM2VycmVxLVx1MDAzZXN0YXR1cyAhPSBSRVFfU1RBVFVTX0FCT1JURUQpKSB7XG4gXHRcdFx0cDlfZGVidWcoUDlfREVCVUdfRVJST1IsIFwmIzM0O1VuZXhwZWN0ZWQgcGFja2V0IHRhZyAlZFxcblwmIzM0OyxcbiBcdFx0XHRcdCBtLVx1MDAzZXJjLnRhZyk7XG4gXHRcdFx0ZXJyID0gLUVJTztcbkBAIC0zMzIsNiAmIzQzOzMzNCw5IEBAIHN0YXRpYyB2b2lkIHA5X3JlYWRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXHRcdGlmIChtLVx1MDAzZXJyZXEtXHUwMDNlc3RhdHVzID09IFJFUV9TVEFUVVNfU0VOVCkge1xuIFx0XHRcdGxpc3RfZGVsKFx1MDAyNm0tXHUwMDNlcnJlcS1cdTAwM2VyZXFfbGlzdCk7XG4gXHRcdFx0cDlfY2xpZW50X2NiKG0tXHUwMDNlY2xpZW50LCBtLVx1MDAzZXJyZXEsIFJFUV9TVEFUVVNfUkNWRCk7XG4mIzQzO1x0XHR9IGVsc2UgaWYgKG0tXHUwMDNlcnJlcS1cdTAwM2VzdGF0dXMgPT0gUkVRX1NUQVRVU19BQk9SVEVEKSB7XG4mIzQzO1x0XHRcdGxpc3RfZGVsKFx1MDAyNm0tXHUwMDNlcnJlcS1cdTAwM2VyZXFfbGlzdCk7XG4mIzQzO1x0XHRcdHA5X2NsaWVudF9jYihtLVx1MDAzZWNsaWVudCwgbS1cdTAwM2VycmVxLCBSRVFfU1RBVFVTX0FCT1JURUQpO1xuIFx0XHR9IGVsc2UgaWYgKG0tXHUwMDNlcnJlcS1cdTAwM2VzdGF0dXMgPT0gUkVRX1NUQVRVU19GTFNIRCkge1xuIFx0XHRcdC8qIElnbm9yZSByZXBsaWVzIGFzc29jaWF0ZWQgd2l0aCBhIGNhbmNlbGxlZCByZXF1ZXN0LiAqL1xuIFx0XHRcdHA5X2RlYnVnKFA5X0RFQlVHX1RSQU5TLFxuQEAgLTk5Niw2ICYjNDM7MTAwMSw3IEBAIHN0YXRpYyBzdHJ1Y3QgcDlfdHJhbnNfbW9kdWxlIHA5X3RjcF90cmFucyA9IHtcbiBcdC5wb29sZWRfcmJ1ZmZlcnMgPSBmYWxzZSxcbiBcdC5kZWYgPSBmYWxzZSxcbiBcdC5zdXBwb3J0c192bWFsbG9jID0gdHJ1ZSxcbiYjNDM7XHQuc3VwcG9ydHNfYXN5bmNfYWJvcnQgPSB0cnVlLFxuIFx0LmNyZWF0ZSA9IHA5X2ZkX2NyZWF0ZV90Y3AsXG4gXHQuY2xvc2UgPSBwOV9mZF9jbG9zZSxcbiBcdC5yZXF1ZXN0ID0gcDlfZmRfcmVxdWVzdCxcbkBAIC0xMDExLDYgJiM0MzsxMDE3LDcgQEAgc3RhdGljIHN0cnVjdCBwOV90cmFuc19tb2R1bGUgcDlfdW5peF90cmFucyA9IHtcbiBcdC5tYXhzaXplID0gTUFYX1NPQ0tfQlVGLFxuIFx0LmRlZiA9IGZhbHNlLFxuIFx0LnN1cHBvcnRzX3ZtYWxsb2MgPSB0cnVlLFxuJiM0MztcdC5zdXBwb3J0c19hc3luY19hYm9ydCA9IHRydWUsXG4gXHQuY3JlYXRlID0gcDlfZmRfY3JlYXRlX3VuaXgsXG4gXHQuY2xvc2UgPSBwOV9mZF9jbG9zZSxcbiBcdC5yZXF1ZXN0ID0gcDlfZmRfcmVxdWVzdCxcbkBAIC0xMDI2LDYgJiM0MzsxMDMzLDcgQEAgc3RhdGljIHN0cnVjdCBwOV90cmFuc19tb2R1bGUgcDlfZmRfdHJhbnMgPSB7XG4gXHQubWF4c2l6ZSA9IE1BWF9TT0NLX0JVRixcbiBcdC5kZWYgPSBmYWxzZSxcbiBcdC5zdXBwb3J0c192bWFsbG9jID0gdHJ1ZSxcbiYjNDM7XHQuc3VwcG9ydHNfYXN5bmNfYWJvcnQgPSB0cnVlLFxuIFx0LmNyZWF0ZSA9IHA5X2ZkX2NyZWF0ZSxcbiBcdC5jbG9zZSA9IHA5X2ZkX2Nsb3NlLFxuIFx0LnJlcXVlc3QgPSBwOV9mZF9yZXF1ZXN0LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDEyOjAwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF85UCYjMzQ7LAogICAgJiMzNDtORVRfOVBfRkQmIzM0OywKICAgICYjMzQ7OVBfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwOV9jbGllbnRfYWJvcnQmIzM0OywKICAgICYjMzQ7cDlfcmVhZF93b3JrJiMzNDssCiAgICAmIzM0O3A5X2NsaWVudF9ycGMmIzM0OywKICAgICYjMzQ7cDlfY2xpZW50X3pjX3JwYyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgOXAgY2xpZW50IGFuZCB0cmFuc3BvcnQgY29kZSB0byBoYW5kbGUgZmF0YWwgc2lnbmFscyBieSBhYm9ydGluZyByZXF1ZXN0cyBpbnN0ZWFkIG9mIHdhaXRpbmcgZm9yIFRGTFVTSC4gSXQgaW50cm9kdWNlcyBhIG5ldyByZXF1ZXN0IHN0YXR1cyBSRVFfU1RBVFVTX0FCT1JURUQgYW5kIG1vZGlmaWVzIHA5X2NsaWVudF9ycGMsIHA5X2NsaWVudF96Y19ycGMsIGFuZCBwOV9yZWFkX3dvcmsgdG8gaGFuZGxlIGl0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgOXAgY2xpZW50IGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA0MDRkODgyMzhhMzkxY2MwOWEzMzJmNjBmMTRhNTczZTExNzVmNDUwCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdWwgMTYgMTI6MDA6MTEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC85cC9jbGllbnQuaCBiL2luY2x1ZGUvbmV0LzlwL2NsaWVudC5oCmluZGV4IDU1YzZjYjU0YmQyNTQ4Li43MDBkY2IzN2MxZGM0MCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvOXAvY2xpZW50LmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvOXAvY2xpZW50LmgKQEAgLTU4LDYgJiM0Mzs1OCw4IEBAIGVudW0gcDlfdHJhbnNfc3RhdHVzIHsKICAqIEBSRVFfU1RBVFVTX1VOU0VOVDogcmVxdWVzdCB3YWl0aW5nIHRvIGJlIHNlbnQKICAqIEBSRVFfU1RBVFVTX1NFTlQ6IHJlcXVlc3Qgc2VudCB0byBzZXJ2ZXIKICAqIEBSRVFfU1RBVFVTX1JDVkQ6IHJlc3BvbnNlIHJlY2VpdmVkIGZyb20gc2VydmVyCiYjNDM7ICogQFJFUV9TVEFUVVNfQUJPUlRFRDogY2FsbGVyIHN0b3BwZWQgd2FpdGluZywgYnV0IHRoZSByZXF1ZXN0IGtlZXBzIGl0cyB0YWcKJiM0MzsgKiAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCB1bnRpbCBhIHJlcGx5IGFycml2ZXMgb3IgdGhlIHRyYW5zcG9ydCBjbG9zZXMKICAqIEBSRVFfU1RBVFVTX0ZMU0hEOiByZXF1ZXN0IGhhcyBiZWVuIGZsdXNoZWQKICAqIEBSRVFfU1RBVFVTX0VSUk9SOiByZXF1ZXN0IGVuY291bnRlcmVkIGFuIGVycm9yIG9uIHRoZSBjbGllbnQgc2lkZQogICovCkBAIC02Nyw2ICYjNDM7NjksNyBAQCBlbnVtIHA5X3JlcV9zdGF0dXNfdCB7CiAJUkVRX1NUQVRVU19VTlNFTlQsCiAJUkVRX1NUQVRVU19TRU5ULAogCVJFUV9TVEFUVVNfUkNWRCwKJiM0MzsJUkVRX1NUQVRVU19BQk9SVEVELAogCVJFUV9TVEFUVVNfRkxTSEQsCiAJUkVRX1NUQVRVU19FUlJPUiwKIH07CmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC85cC90cmFuc3BvcnQuaCBiL2luY2x1ZGUvbmV0LzlwL3RyYW5zcG9ydC5oCmluZGV4IGE5MTJiYmFhODYyZjliLi45MzM0OWZlMzNkZmY0MCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvOXAvdHJhbnNwb3J0LmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvOXAvdHJhbnNwb3J0LmgKQEAgLTM0LDYgJiM0MzszNCw5IEBACiAgKiBAc3VwcG9ydHNfdm1hbGxvYzogc2V0IGlmIHRoaXMgdHJhbnNwb3J0IGNhbiB3b3JrIHdpdGggdm1hbGxvYyYjMzk7ZCBidWZmZXJzCiAgKiAgICAgICAgICAgICAgICAgICAgKG5vbi1waHlzaWNhbGx5IGNvbnRpZ3VvdXMgbWVtb3J5KS4gVHJhbnNwb3J0cyByZXF1aXJpbmcKICAqICAgICAgICAgICAgICAgICAgICBETUEgc2hvdWxkIGxlYXZlIHRoaXMgYXMgZmFsc2UuCiYjNDM7ICogQHN1cHBvcnRzX2FzeW5jX2Fib3J0OiBzZXQgaWYgYSBzZW50IHJlcXVlc3QgcmVtYWlucyByZWZlcmVuY2VkIGJ5IHRoZQomIzQzOyAqICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3J0IHVudGlsIGl0cyByZXBseSBpcyBjb25zdW1lZCBvciB0aGUKJiM0MzsgKiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9ydCBpcyBjbG9zZWQKICAqIEBjcmVhdGU6IG1lbWJlciBmdW5jdGlvbiB0byBjcmVhdGUgYSBuZXcgY29ubmVjdGlvbiBvbiB0aGlzIHRyYW5zcG9ydAogICogQGNsb3NlOiBtZW1iZXIgZnVuY3Rpb24gdG8gZGlzY2FyZCBhIGNvbm5lY3Rpb24gb24gdGhpcyB0cmFuc3BvcnQKICAqIEByZXF1ZXN0OiBtZW1iZXIgZnVuY3Rpb24gdG8gaXNzdWUgYSByZXF1ZXN0IHRvIHRoZSB0cmFuc3BvcnQKQEAgLTU1LDYgJiM0Mzs1OCw3IEBAIHN0cnVjdCBwOV90cmFuc19tb2R1bGUgewogCWJvb2wgcG9vbGVkX3JidWZmZXJzOwogCWJvb2wgZGVmOwkJLyogdGhpcyB0cmFuc3BvcnQgc2hvdWxkIGJlIGRlZmF1bHQgKi8KIAlib29sIHN1cHBvcnRzX3ZtYWxsb2M7CS8qIGNhbiB3b3JrIHdpdGggdm1hbGxvYyYjMzk7ZCBidWZmZXJzICovCiYjNDM7CWJvb2wgc3VwcG9ydHNfYXN5bmNfYWJvcnQ7IC8qIGtlZXBzIHNlbnQgcmVxdWVzdHMgYWxpdmUgYWZ0ZXIgY2FsbGVyIGV4aXRzICovCiAJc3RydWN0IG1vZHVsZSAqb3duZXI7CiAJaW50ICgqY3JlYXRlKShzdHJ1Y3QgcDlfY2xpZW50ICpjbGllbnQsCiAJCSAgICAgIHN0cnVjdCBmc19jb250ZXh0ICpmYyk7CmRpZmYgLS1naXQgYS9uZXQvOXAvY2xpZW50LmMgYi9uZXQvOXAvY2xpZW50LmMKaW5kZXggZWY2NDU0NmM2ZDUyYTEuLjQ3MzUzY2YwNzUwZGRmIDEwMDY0NAotLS0gYS9uZXQvOXAvY2xpZW50LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0LzlwL2NsaWVudC5jCkBAIC01MzgsNiAmIzQzOzUzOCwyMiBAQCBzdGF0aWMgc3RydWN0IHA5X3JlcV90ICpwOV9jbGllbnRfcHJlcGFyZV9yZXEoc3RydWN0IHA5X2NsaWVudCAqYywKIAlyZXR1cm4gRVJSX1BUUihlcnIpOwogfQogCiYjNDM7c3RhdGljIHZvaWQgcDlfY2xpZW50X2Fib3J0KHN0cnVjdCBwOV9jbGllbnQgKmMsIHN0cnVjdCBwOV9yZXFfdCAqcmVxKQomIzQzO3sKJiM0MzsJLyoKJiM0MzsJICogQSBmYXRhbCBzaWduYWwgY2Fubm90IHdhaXQgZm9yIFRGTFVTSCwgYnV0IGEgc2VudCByZXF1ZXN0IG11c3Qga2VlcAomIzQzOwkgKiBpdHMgdGFnIHVudGlsIGEgbGF0ZSByZXBseSBhcnJpdmVzIG9yIHRoZSB0cmFuc3BvcnQgaXMgdG9ybiBkb3duLgomIzQzOwkgKi8KJiM0MzsJaWYgKCFjLSZndDt0cmFuc19tb2QtJmd0O3N1cHBvcnRzX2FzeW5jX2Fib3J0IHx8CiYjNDM7CSAgICBSRUFEX09OQ0UocmVxLSZndDtzdGF0dXMpICZndDs9IFJFUV9TVEFUVVNfUkNWRCkKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJaWYgKCFjLSZndDt0cmFuc19tb2QtJmd0O2NhbmNlbChjLCByZXEpKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwljbXB4Y2hnKCZhbXA7cmVxLSZndDtzdGF0dXMsIFJFUV9TVEFUVVNfU0VOVCwgUkVRX1NUQVRVU19BQk9SVEVEKTsKJiM0Mzt9CiYjNDM7CiAvKioKICAqIHA5X2NsaWVudF9ycGMgLSBpc3N1ZSBhIHJlcXVlc3QgYW5kIHdhaXQgZm9yIGEgcmVzcG9uc2UKICAqIEBjOiBjbGllbnQgc2Vzc2lvbgpAQCAtNjEyLDYgJiM0Mzs2MjgsMjAgQEAgcDlfY2xpZW50X3JwYyhzdHJ1Y3QgcDlfY2xpZW50ICpjLCBpbnQ4X3QgdHlwZSwgY29uc3QgY2hhciAqZm10LCAuLi4pCiAJCWVyciA9IHJlcS0mZ3Q7dF9lcnI7CiAJfQogCWlmIChlcnIgPT0gLUVSRVNUQVJUU1lTICZhbXA7JmFtcDsgYy0mZ3Q7c3RhdHVzID09IENvbm5lY3RlZCkgewomIzQzOwkJaWYgKFJFQURfT05DRShyZXEtJmd0O3N0YXR1cykgPT0gUkVRX1NUQVRVU19SQ1ZEKSB7CiYjNDM7CQkJZXJyID0gMDsKJiM0MzsJCQlnb3RvIHJlY2FsY19zaWdwZW5kaW5nOwomIzQzOwkJfQomIzQzOwomIzQzOwkJaWYgKGZhdGFsX3NpZ25hbF9wZW5kaW5nKGN1cnJlbnQpICZhbXA7JmFtcDsKJiM0MzsJCSAgICBjLSZndDt0cmFuc19tb2QtJmd0O3N1cHBvcnRzX2FzeW5jX2Fib3J0KSB7CiYjNDM7CQkJcDlfZGVidWcoUDlfREVCVUdfTVVYLCAmIzM0O2ZhdGFsIHNpZ25hbDogc2tpcCBmbHVzaFxuJiMzNDspOwomIzQzOwkJCXA5X2NsaWVudF9hYm9ydChjLCByZXEpOwomIzQzOwkJCWlmIChSRUFEX09OQ0UocmVxLSZndDtzdGF0dXMpID09IFJFUV9TVEFUVVNfUkNWRCkKJiM0MzsJCQkJZXJyID0gMDsKJiM0MzsJCQlnb3RvIHJlY2FsY19zaWdwZW5kaW5nOwomIzQzOwkJfQomIzQzOwogCQlwOV9kZWJ1ZyhQOV9ERUJVR19NVVgsICYjMzQ7Zmx1c2hpbmdcbiYjMzQ7KTsKIAkJc2lncGVuZGluZyA9IDE7CiAJCWNsZWFyX3RocmVhZF9mbGFnKFRJRl9TSUdQRU5ESU5HKTsKQEAgLTY5Nyw2ICYjNDM7NzI3LDExIEBAIHN0YXRpYyBzdHJ1Y3QgcDlfcmVxX3QgKnA5X2NsaWVudF96Y19ycGMoc3RydWN0IHA5X2NsaWVudCAqYywgaW50OF90IHR5cGUsCiAJCWVyciA9IHJlcS0mZ3Q7dF9lcnI7CiAJfQogCWlmIChlcnIgPT0gLUVSRVNUQVJUU1lTICZhbXA7JmFtcDsgYy0mZ3Q7c3RhdHVzID09IENvbm5lY3RlZCkgewomIzQzOwkJaWYgKFJFQURfT05DRShyZXEtJmd0O3N0YXR1cykgPT0gUkVRX1NUQVRVU19SQ1ZEKSB7CiYjNDM7CQkJZXJyID0gMDsKJiM0MzsJCQlnb3RvIHJlY2FsY19zaWdwZW5kaW5nOwomIzQzOwkJfQomIzQzOwogCQlwOV9kZWJ1ZyhQOV9ERUJVR19NVVgsICYjMzQ7Zmx1c2hpbmdcbiYjMzQ7KTsKIAkJc2lncGVuZGluZyA9IDE7CiAJCWNsZWFyX3RocmVhZF9mbGFnKFRJRl9TSUdQRU5ESU5HKTsKZGlmZiAtLWdpdCBhL25ldC85cC90cmFuc19mZC5jIGIvbmV0LzlwL3RyYW5zX2ZkLmMKaW5kZXggZWI2ODViNTJhZWIyNjQuLmQ1Y2ZmOGMyYzg4Y2RjIDEwMDY0NAotLS0gYS9uZXQvOXAvdHJhbnNfZmQuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvOXAvdHJhbnNfZmQuYwpAQCAtMjkzLDcgJiM0MzsyOTMsOSBAQCBzdGF0aWMgdm9pZCBwOV9yZWFkX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCQkJIG0sIG0tJmd0O3JjLnNpemUsIG0tJmd0O3JjLnRhZyk7CiAKIAkJbS0mZ3Q7cnJlcSA9IHA5X3RhZ19sb29rdXAobS0mZ3Q7Y2xpZW50LCBtLSZndDtyYy50YWcpOwotCQlpZiAoIW0tJmd0O3JyZXEgfHwgKG0tJmd0O3JyZXEtJmd0O3N0YXR1cyAhPSBSRVFfU1RBVFVTX1NFTlQpKSB7CiYjNDM7CQlpZiAoIW0tJmd0O3JyZXEgfHwKJiM0MzsJCSAgICAobS0mZ3Q7cnJlcS0mZ3Q7c3RhdHVzICE9IFJFUV9TVEFUVVNfU0VOVCAmYW1wOyZhbXA7CiYjNDM7CQkgICAgIG0tJmd0O3JyZXEtJmd0O3N0YXR1cyAhPSBSRVFfU1RBVFVTX0FCT1JURUQpKSB7CiAJCQlwOV9kZWJ1ZyhQOV9ERUJVR19FUlJPUiwgJiMzNDtVbmV4cGVjdGVkIHBhY2tldCB0YWcgJWRcbiYjMzQ7LAogCQkJCSBtLSZndDtyYy50YWcpOwogCQkJZXJyID0gLUVJTzsKQEAgLTMzMiw2ICYjNDM7MzM0LDkgQEAgc3RhdGljIHZvaWQgcDlfcmVhZF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAkJaWYgKG0tJmd0O3JyZXEtJmd0O3N0YXR1cyA9PSBSRVFfU1RBVFVTX1NFTlQpIHsKIAkJCWxpc3RfZGVsKCZhbXA7bS0mZ3Q7cnJlcS0mZ3Q7cmVxX2xpc3QpOwogCQkJcDlfY2xpZW50X2NiKG0tJmd0O2NsaWVudCwgbS0mZ3Q7cnJlcSwgUkVRX1NUQVRVU19SQ1ZEKTsKJiM0MzsJCX0gZWxzZSBpZiAobS0mZ3Q7cnJlcS0mZ3Q7c3RhdHVzID09IFJFUV9TVEFUVVNfQUJPUlRFRCkgewomIzQzOwkJCWxpc3RfZGVsKCZhbXA7bS0mZ3Q7cnJlcS0mZ3Q7cmVxX2xpc3QpOwomIzQzOwkJCXA5X2NsaWVudF9jYihtLSZndDtjbGllbnQsIG0tJmd0O3JyZXEsIFJFUV9TVEFUVVNfQUJPUlRFRCk7CiAJCX0gZWxzZSBpZiAobS0mZ3Q7cnJlcS0mZ3Q7c3RhdHVzID09IFJFUV9TVEFUVVNfRkxTSEQpIHsKIAkJCS8qIElnbm9yZSByZXBsaWVzIGFzc29jaWF0ZWQgd2l0aCBhIGNhbmNlbGxlZCByZXF1ZXN0LiAqLwogCQkJcDlfZGVidWcoUDlfREVCVUdfVFJBTlMsCkBAIC05OTYsNiAmIzQzOzEwMDEsNyBAQCBzdGF0aWMgc3RydWN0IHA5X3RyYW5zX21vZHVsZSBwOV90Y3BfdHJhbnMgPSB7CiAJLnBvb2xlZF9yYnVmZmVycyA9IGZhbHNlLAogCS5kZWYgPSBmYWxzZSwKIAkuc3VwcG9ydHNfdm1hbGxvYyA9IHRydWUsCiYjNDM7CS5zdXBwb3J0c19hc3luY19hYm9ydCA9IHRydWUsCiAJLmNyZWF0ZSA9IHA5X2ZkX2NyZWF0ZV90Y3AsCiAJLmNsb3NlID0gcDlfZmRfY2xvc2UsCiAJLnJlcXVlc3QgPSBwOV9mZF9yZXF1ZXN0LApAQCAtMTAxMSw2ICYjNDM7MTAxNyw3IEBAIHN0YXRpYyBzdHJ1Y3QgcDlfdHJhbnNfbW9kdWxlIHA5X3VuaXhfdHJhbnMgPSB7CiAJLm1heHNpemUgPSBNQVhfU09DS19CVUYsCiAJLmRlZiA9IGZhbHNlLAogCS5zdXBwb3J0c192bWFsbG9jID0gdHJ1ZSwKJiM0MzsJLnN1cHBvcnRzX2FzeW5jX2Fib3J0ID0gdHJ1ZSwKIAkuY3JlYXRlID0gcDlfZmRfY3JlYXRlX3VuaXgsCiAJLmNsb3NlID0gcDlfZmRfY2xvc2UsCiAJLnJlcXVlc3QgPSBwOV9mZF9yZXF1ZXN0LApAQCAtMTAyNiw2ICYjNDM7MTAzMyw3IEBAIHN0YXRpYyBzdHJ1Y3QgcDlfdHJhbnNfbW9kdWxlIHA5X2ZkX3RyYW5zID0gewogCS5tYXhzaXplID0gTUFYX1NPQ0tfQlVGLAogCS5kZWYgPSBmYWxzZSwKIAkuc3VwcG9ydHNfdm1hbGxvYyA9IHRydWUsCiYjNDM7CS5zdXBwb3J0c19hc3luY19hYm9ydCA9IHRydWUsCiAJLmNyZWF0ZSA9IHA5X2ZkX2NyZWF0ZSwKIAkuY2xvc2UgPSBwOV9mZF9jbG9zZSwKIAkucmVxdWVzdCA9IHA5X2ZkX3JlcXVlc3QsCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDEyOjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5NDcKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgOXAgQ2xpZW50IFBhdGNoKioKCk9rYXksIHNvIHdlIGhhdmUgYSBwYXRjaCBoZXJlIHRoYXQmIzM5O3MgbWFraW5nIHNvbWUgcHJldHR5IHNpZ25pZmljYW50IGNoYW5nZXMgdG8gdGhlIDlwIGNsaWVudCBhbmQgaXRzIHRyYW5zcG9ydCBjb2RlLiBUaGUgY29yZSBvZiBpdCBzZWVtcyB0byBiZSBhYm91dCBpbXByb3ZpbmcgaG93IHdlIGhhbmRsZSBhc3luY2hyb25vdXMgcmVxdWVzdCBhYm9ydGlvbi4gSXQgbG9va3MgbGlrZSB0aGV5JiMzOTtyZSBpbnRyb2R1Y2luZyBhIG5ldyByZXF1ZXN0IHN0YXR1cywgYFJFUV9TVEFUVVNfQUJPUlRFRGAsIGFuZCBhZGRpbmcgYHN1cHBvcnRzX2FzeW5jX2Fib3J0YCB0byB0aGUgYHA5X3RyYW5zX21vZHVsZWAuCgpFc3NlbnRpYWxseSwgdGhlIHBhdGNoIGFsdGVycyBgcDlfY2xpZW50X3JwY2AgYW5kIGBwOV9jbGllbnRfemNfcnBjYCB0byBkZWFsIHdpdGggZmF0YWwgc2lnbmFscyAobGlrZWx5IGZyb20gdGltZW91dHMgb3Igb3RoZXIgc3lzdGVtLWxldmVsIGlzc3VlcykgYnkgYWJvcnRpbmcgdGhlIHJlcXVlc3RzIGRpcmVjdGx5IGluc3RlYWQgb2YgaGFuZ2luZyBhcm91bmQgd2FpdGluZyBmb3IgYSBgVEZMVVNIYC4gVGhpcyBpcyBtdWNoIGNsZWFuZXIuIEkgc2VlIGl0IGFsc28gbW9kaWZpZXMgdGhlIGBwOV9yZWFkX3dvcmtgIGZ1bmN0aW9uIGluIGBuZXQvOXAvdHJhbnNfZmQuY2AgdG8gaGFuZGxlIHRoaXMgbmV3IGBSRVFfU1RBVFVTX0FCT1JURURgIHByb3Blcmx5LiBUaGF0IGlzIHRoZSBmaW5hbCBwaWVjZSBvZiB0aGUgbG9naWMuCgpJdCB0aGVuIHNldHMgYHN1cHBvcnRzX2FzeW5jX2Fib3J0ID0gdHJ1ZWAgZm9yIHRoZSBjb3JlIHRyYW5zcG9ydHMg4oCTIGBwOV90Y3BfdHJhbnNgLCBgcDlfdW5peF90cmFuc2AsIGFuZCBgcDlfZmRfdHJhbnNgLiBUaGlzIG1ha2VzIHNlbnNlLCBhcyB0aGVzZSBhcmUgdGhlIHByaW1hcnkgdHJhbnNwb3J0IG1lY2hhbmlzbXMuCgpUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UuIEFueSA5cCBmaWxlc3lzdGVtIG1vdW50IGlzIGxpa2VseSB0byB0b3VjaCB0aGlzIGNvZGUuIFRoYXQgaW1tZWRpYXRlbHkgbWFrZXMgbWUgdGhpbmssICYjMzQ7ZnV6emluZyYjMzQ7LiBUaGUgcGF0Y2ggc2VlbXMgbGlrZSBhIGdvb2QgdGFyZ2V0IGZvciBzb21lIGZ1enppbmcgY2FtcGFpZ25zLgoKTGV0IG1lIHRha2UgYSBxdWljayBsb29rIGF0IHRoZSBLY29uZmlnIG9wdGlvbnMgdG8gZGV0ZXJtaW5lIGlmIHRoZXNlIGNoYW5nZXMgY2FuIGJlIGNvbnRyb2xsZWQuIEJhc2VkIG9uIG15IGV4aXN0aW5nIGtub3dsZWRnZSwgSSBleHBlY3QgdGhlIHJlbGV2YW50IG9wdGlvbnMgdG8gYmU6IGBDT05GSUdfTkVUXzlQYCwgYENPTkZJR19ORVRfOVBfRkRgLCBhbmQgYENPTkZJR185UF9GU2AuIEkmIzM5O2xsIHVzZSBgZ3JlcHBlcmAgdG8gYmUgYWJzb2x1dGVseSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDEyOjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfOVAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvOXAvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvOXAvS2NvbmZpZy01LVxubmV0LzlwL0tjb25maWc6NjptZW51Y29uZmlnIE5FVF85UFxubmV0LzlwL0tjb25maWctNy1cdHRyaXN0YXRlIFwmIzM0O1BsYW4gOSBSZXNvdXJjZSBTaGFyaW5nIFN1cHBvcnQgKDlQMjAwMClcJiMzNDtcbi0tXG5uZXQvOXAvS2NvbmZpZz0xNz1pZiBORVRfOVBcbm5ldC85cC9LY29uZmlnLTE4LVxubmV0LzlwL0tjb25maWc6MTk6Y29uZmlnIE5FVF85UF9GRFxubmV0LzlwL0tjb25maWctMjAtXHRkZWZhdWx0IE5FVF85UFxuLS1cbm5ldC85cC9LY29uZmlnLTI3LVxubmV0LzlwL0tjb25maWc6Mjg6Y29uZmlnIE5FVF85UF9WSVJUSU9cbm5ldC85cC9LY29uZmlnLTI5LVx0ZGVwZW5kcyBvbiBWSVJUSU9cbi0tXG5uZXQvOXAvS2NvbmZpZy0zNC1cbm5ldC85cC9LY29uZmlnOjM1OmNvbmZpZyBORVRfOVBfWEVOXG5uZXQvOXAvS2NvbmZpZy0zNi1cdGRlcGVuZHMgb24gWEVOXG4tLVxubmV0LzlwL0tjb25maWctNDItXG5uZXQvOXAvS2NvbmZpZzo0Mzpjb25maWcgTkVUXzlQX1VTQkdcbm5ldC85cC9LY29uZmlnLTQ0LVx0dHJpc3RhdGUgXCYjMzQ7OVAgVVNCIEdhZGdldCBUcmFuc3BvcnRcJiMzNDtcbi0tXG5uZXQvOXAvS2NvbmZpZy01MS1cbm5ldC85cC9LY29uZmlnOjUyOmNvbmZpZyBORVRfOVBfUkRNQVxubmV0LzlwL0tjb25maWctNTMtXHRkZXBlbmRzIG9uIElORVQgXHUwMDI2XHUwMDI2IElORklOSUJBTkQgXHUwMDI2XHUwMDI2IElORklOSUJBTkRfQUREUl9UUkFOU1xuLS1cbm5ldC85cC9LY29uZmlnLTU3LVxubmV0LzlwL0tjb25maWc6NTg6Y29uZmlnIE5FVF85UF9ERUJVR1xubmV0LzlwL0tjb25maWctNTktXHRib29sIFwmIzM0O0RlYnVnIGluZm9ybWF0aW9uXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTI6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTAyMgoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgY29uZmlnIG9wdGlvbnMsIHRoaW5raW5nIHRocm91Z2ggdGhpcyBsaWtlIEkgd291bGQ6CgoqKkRpZ2dpbmcgaW50byB0aGUgOVAgTmV0d29yayBGaWxlIFN5c3RlbSBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIHNvIEkmIzM5O20gZGVhbGluZyB3aXRoIHRoZSA5UCBuZXR3b3JrIGZpbGUgc3lzdGVtIGFuZCBuZWVkIHRvIHF1aWNrbHkgZmlndXJlIG91dCB0aGUgZXNzZW50aWFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkga25vdyB0aGF0IGBORVRfOVBgIGFuZCBgTkVUXzlQX0ZEYCBhcmUgZ29pbmcgdG8gYmUga2V5LiBgTkVUXzlQYCBpcyBwcm9iYWJseSB0aGUgY29yZSA5UCBmdW5jdGlvbmFsaXR5LCBsaWtlbHkgZW5hYmxpbmcgdGhlIGdlbmVyYWwgbmV0d29yayBwcm90b2NvbCBzdXBwb3J0LiBBbmQsIEkmIzM5O20gYmV0dGluZyB0aGF0IGBORVRfOVBfRkRgIGhhcyB0byBkbyB3aXRoIHVzaW5nIGZpbGUgZGVzY3JpcHRvcnMsIG1heWJlIGZvciBwZXJmb3JtYW5jZSBvciBtb3JlIGRpcmVjdCBpbnRlcmFjdGlvbi4gSSByZWFsbHkgbmVlZCB0byB2ZXJpZnkgdGhhdCBhbmQgc2VlIGhvdyB0aGV5IGludGVycGxheS4KCkkgYWxzbyByZW1lbWJlciwgb2YgY291cnNlLCB0aGF0IHRoZXJlJiMzOTtzIGA5UF9GU2AsIHdoaWNoIGlzIHByb2JhYmx5IHRoZSBhY3R1YWwgZmlsZXN5c3RlbSBtb2R1bGUgZm9yIHRoZSA5UCBwcm90b2NvbC4gSSBtZWFuLCBpdCBpcyB0aGUgc3RhbmRhcmQgZm9yIDlQIGFmdGVyIGFsbC4gSXQmIzM5O3MgdGltZSB0byBkcmlsbCBkb3duIGFuZCBjaGVjayB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gZmlsZSAoYGZzLzlwL0tjb25maWdgKSB0byBjb25maXJtIG15IGFzc3VtcHRpb25zIGFuZCBnZXQgdGhlIGZ1bGwgcGljdHVyZS4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBkZXBlbmRlbmNpZXMgYW5kIHJlbGF0aW9uc2hpcHMgYXJlIGJldHdlZW4gdGhlc2Ugb3B0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAxMjowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgOVBfRlMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy85cC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzLzlwL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmZzLzlwL0tjb25maWc6Mjpjb25maWcgOVBfRlNcbmZzLzlwL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1BsYW4gOSBSZXNvdXJjZSBTaGFyaW5nIFN1cHBvcnQgKDlQMjAwMClcJiMzNDtcbi0tXG5mcy85cC9LY29uZmlnPTE0PWlmIDlQX0ZTXG5mcy85cC9LY29uZmlnOjE1OmNvbmZpZyA5UF9GU0NBQ0hFXG5mcy85cC9LY29uZmlnLTE2LVx0Ym9vbCBcJiMzNDtFbmFibGUgOVAgY2xpZW50IGNhY2hpbmcgc3VwcG9ydFwmIzM0O1xuLS1cbmZzLzlwL0tjb25maWctMjItXG5mcy85cC9LY29uZmlnOjIzOmNvbmZpZyA5UF9GU19QT1NJWF9BQ0xcbmZzLzlwL0tjb25maWctMjQtXHRib29sIFwmIzM0OzlQIFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzXCYjMzQ7XG4tLVxuZnMvOXAvS2NvbmZpZz0zMj1lbmRpZlxuLS1cbmZzLzlwL0tjb25maWctMzQtXG5mcy85cC9LY29uZmlnOjM1OmNvbmZpZyA5UF9GU19TRUNVUklUWVxuZnMvOXAvS2NvbmZpZy0zNi1cdGJvb2wgXCYjMzQ7OVAgU2VjdXJpdHkgTGFiZWxzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTI6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTYyMQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDIwMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIDlQIENsaWVudCBQYXRjaCoqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCBtb2RpZmljYXRpb25zIHJlbGF0ZWQgdG8gYE5FVF85UGAsIGBORVRfOVBfRkRgLCBhbmQgYDlQX0ZTYC4gTXkgZm9jdXMgbmVlZHMgdG8gYmUgb24gdGhlIGtleSBmdW5jdGlvbnMgaW1wYWN0ZWQgYnkgdGhpcyBwYXRjaC4gTGV0JiMzOTtzIHNlZS4uLiB0aGUgcGF0Y2ggc3BlY2lmaWNhbGx5IHRvdWNoZXMgYHA5X2NsaWVudF9wcmVwYXJlX3JlcWAgd2hpY2ggSSByZWNvZ25pemUgaXMgaGFuZGxpbmcgdGhlIGNvbnRleHQsIGFuZCBhbHNvIGludHJvZHVjZXMgYSBuZXcgZnVuY3Rpb24sIGBwOV9jbGllbnRfYWJvcnRgLiAgVGhlcmUgYXJlIGFsc28gY2hhbmdlcyB0byBgcDlfY2xpZW50X3JwY2AsIGBwOV9jbGllbnRfemNfcnBjYCwgYW5kIGBwOV9yZWFkX3dvcmtgLgoKTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgYW5kIHZpc2liaWxpdHkgb2YgdGhlc2UgZnVuY3Rpb25zLiBJcyBgcDlfY2xpZW50X2Fib3J0YCBzdGF0aWM/IFllcywgaXQgYXBwZWFycyB0byBiZS4gVGhhdCYjMzk7cyBpbXBvcnRhbnQgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIHNjb3BlIHdpdGhpbiB0aGUgbW9kdWxlLiBHb29kLiBgcDlfY2xpZW50X3JwY2AgYW5kIGBwOV9jbGllbnRfemNfcnBjYCBhcmUgZWl0aGVyIGV4cG9ydGVkIG9yLCBhdCB0aGUgdmVyeSBsZWFzdCwgZ2xvYmFsbHkgYWNjZXNzaWJsZTsgd2hpY2ggaXMgdG8gYmUgZXhwZWN0ZWQgZm9yIGNvcmUgUlBDIGZ1bmN0aW9ucy4gQW5kIGBwOV9yZWFkX3dvcmtgLCB0aGF0JiMzOTtzIHN0YXRpYywgaXQgcmVzaWRlcyB3aXRoaW4gYG5ldC85cC90cmFuc19mZC5jYC4KCkkmIzM5O2xsIGNoZWNrIGBuZXQvOXAvY2xpZW50LmNgIHRvIGNvbmZpcm0gdGhhdCBgcDlfY2xpZW50X2Fib3J0YCBpcywgaW5kZWVkLCBzdGF0aWMsIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIG9mIGl0cyBzY29wZSBhbmQgdXNhZ2UuIEl0IGlzIGFsd2F5cyBnb29kIHRvIGhhdmUgYSBoaWdoIGRlZ3JlZSBvZiBjb25maWRlbmNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDEyOjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3A5X2NsaWVudF9hYm9ydCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC85cC9jbGllbnQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvOXAvY2xpZW50LmM9NTAyPXN0YXRpYyBzdHJ1Y3QgcDlfcmVxX3QgKnA5X2NsaWVudF9wcmVwYXJlX3JlcShzdHJ1Y3QgcDlfY2xpZW50ICpjLFxuLS1cbm5ldC85cC9jbGllbnQuYy01NDAtXG5uZXQvOXAvY2xpZW50LmM6NTQxOnN0YXRpYyB2b2lkIHA5X2NsaWVudF9hYm9ydChzdHJ1Y3QgcDlfY2xpZW50ICpjLCBzdHJ1Y3QgcDlfcmVxX3QgKnJlcSlcbm5ldC85cC9jbGllbnQuYy01NDIte1xuLS1cbm5ldC85cC9jbGllbnQuYz01Njc9cDlfY2xpZW50X3JwYyhzdHJ1Y3QgcDlfY2xpZW50ICpjLCBpbnQ4X3QgdHlwZSwgY29uc3QgY2hhciAqZm10LCAuLi4pXG4tLVxubmV0LzlwL2NsaWVudC5jLTYzOC1cdFx0XHRwOV9kZWJ1ZyhQOV9ERUJVR19NVVgsIFwmIzM0O2ZhdGFsIHNpZ25hbDogc2tpcCBmbHVzaFxcblwmIzM0Oyk7XG5uZXQvOXAvY2xpZW50LmM6NjM5Olx0XHRcdHA5X2NsaWVudF9hYm9ydChjLCByZXEpO1xubmV0LzlwL2NsaWVudC5jLTY0MC1cdFx0XHRpZiAoUkVBRF9PTkNFKHJlcS1cdTAwM2VzdGF0dXMpID09IFJFUV9TVEFUVVNfUkNWRClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAxMjowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDI3CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTc1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBQb3RlbnRpYWwgUm9vdCBDYXVzZXMqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGlzIGBwOV9jbGllbnRfYWJvcnRgIGlzc3VlLiBJdCYjMzk7cyBzdGF0aWMsIHNvIHRoYXQmIzM5O3MgcHJvYmFibHkgbm90IHRoZSBkaXJlY3QgY3VscHJpdC4gV2UgbmVlZCB0byBsb29rIGRlZXBlci4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgYHA5X2NsaWVudF9ycGNgIGFuZCBgcDlfY2xpZW50X3pjX3JwY2AgYXJlIHN0cm9uZyBwb3NzaWJpbGl0aWVzLCBhbmQgSSYjMzk7bSBhZGRpbmcgYHA5X3JlYWRfd29ya2AgdG8gdGhlIGxpc3QuIEkmIzM5O20gb3BlcmF0aW5nIG9uIHRoZSBhc3N1bXB0aW9uIHRoYXQgdGhpcyBsaWtlbHkgaGFzIHNvbWV0aGluZyB0byBkbyB3aXRoIHRoZSBSUEMgZmxvdywgc2luY2UgdGhhdCBpcywgZm9yIGFsbCBpbnRlbnRzIGFuZCBwdXJwb3NlcywgdGhlIGhlYXJ0IG9mIHRoZSA5cCBwcm90b2NvbCBpbnRlcmFjdGlvbi4KCkxldCYjMzk7cyBxdWlja2x5IGNvbmZpcm0gaWYgYHA5X2NsaWVudF9ycGNgIGlzIGEgaG90IHBhdGguIEl0JiMzOTtzIHRoZSBwcmltYXJ5IFJQQyBmdW5jdGlvbiwgY2FsbGVkIGZvciBhbG1vc3QgZXZlcnkgOXAgb3BlcmF0aW9uLCBzbyBpdCYjMzk7cyBwcm9iYWJseSBoZWF2aWx5IHVzZWQuIEJ1dCB0aGUgY29yZSBvZiB0aGUgaXNzdWUgc2VlbXMgcmVsYXRlZCB0byBhIHBlbmRpbmcgZmF0YWwgc2lnbmFsLCB3aGljaCBpcyBpbnRyaWd1aW5nLiBGdXp6aW5nIGBwOV9jbGllbnRfcnBjYCBhbmQgYHA5X2NsaWVudF96Y19ycGNgIHNvdW5kcyBsaWtlIGEgcmVhc29uYWJsZSBhcHByb2FjaCBnaXZlbiB0aGUgc2lnbmFsLXJlbGF0ZWQgbmF0dXJlIG9mIHRoaXMgYnVnLgoKTW9yZW92ZXIsIGBwOV9yZWFkX3dvcmtgIGlzIGNydWNpYWwgYXMgaXQgaGFuZGxlcyB0aGUgcmVwbGllcy4gV2UgZGVmaW5pdGVseSBuZWVkIHRvIGNoZWNrIHRoYXQgb3V0LCBlc3BlY2lhbGx5IGluIGBuZXQvOXAvdHJhbnNfZmQuY2AuIFNvIGxldCYjMzk7cyBmb2N1cyBvbiB0aGF0IGFyZWEgZm9yIG5vdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTI6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cDlfcmVhZF93b3JrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0LzlwL3RyYW5zX2ZkLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0LzlwL3RyYW5zX2ZkLmM9MjE2PXN0YXRpYyBpbnQgcDlfZmRfcmVhZChzdHJ1Y3QgcDlfY2xpZW50ICpjbGllbnQsIHZvaWQgKnYsIGludCBsZW4pXG4tLVxubmV0LzlwL3RyYW5zX2ZkLmMtMjM4LS8qKlxubmV0LzlwL3RyYW5zX2ZkLmM6MjM5OiAqIHA5X3JlYWRfd29yayAtIGNhbGxlZCB3aGVuIHRoZXJlIGlzIHNvbWUgZGF0YSB0byBiZSByZWFkIGZyb20gYSB0cmFuc3BvcnRcbm5ldC85cC90cmFuc19mZC5jLTI0MC0gKiBAd29yazogY29udGFpbmVyIG9mIHdvcmsgdG8gYmUgZG9uZVxuLS1cbm5ldC85cC90cmFuc19mZC5jLTI0My1cbm5ldC85cC90cmFuc19mZC5jOjI0NDpzdGF0aWMgdm9pZCBwOV9yZWFkX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxubmV0LzlwL3RyYW5zX2ZkLmMtMjQ1LXtcbi0tXG5uZXQvOXAvdHJhbnNfZmQuYz01NTQ9c3RhdGljIHZvaWQgcDlfY29ubl9jcmVhdGUoc3RydWN0IHA5X2NsaWVudCAqY2xpZW50KVxuLS1cbm5ldC85cC90cmFuc19mZC5jLTU2Ny1cdElOSVRfTElTVF9IRUFEKFx1MDAyNm0tXHUwMDNldW5zZW50X3JlcV9saXN0KTtcbm5ldC85cC90cmFuc19mZC5jOjU2ODpcdElOSVRfV09SSyhcdTAwMjZtLVx1MDAzZXJxLCBwOV9yZWFkX3dvcmspO1xubmV0LzlwL3RyYW5zX2ZkLmMtNTY5LVx0SU5JVF9XT1JLKFx1MDAyNm0tXHUwMDNld3EsIHA5X3dyaXRlX3dvcmspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAxMjowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MjU0CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMTI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBQb3RlbnRpYWwgRnV6emluZyBUYXJnZXRzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBmdW5jdGlvbnMgd2l0aGluIHRoZSBjb250ZXh0IG9mIGZ1enppbmcsIHNwZWNpZmljYWxseSB3aXRoIHN5emthbGxlci4gVGhlIGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRoYXQgYHA5X3JlYWRfd29ya2AgaXMgc3RhdGljLCB3aGljaCBpcyB3b3J0aCBub3RpbmcuIFRoZSBtYWluIGNhbmRpZGF0ZXMgZm9yIHRhcmdldHMgYXBwZWFyIHRvIGJlIGBwOV9jbGllbnRfcnBjYCwgYHA5X2NsaWVudF96Y19ycGNgLCBhbmQgYHA5X3JlYWRfd29ya2AuCgpTaW5jZSBgcDlfY2xpZW50X2Fib3J0YCBpcyBhbHNvIHN0YXRpYywgYW5kIHN5emthbGxlciAqY2FuKiBzb21ldGltZXMgdGFyZ2V0IHN0YXRpYyBmdW5jdGlvbnMsIGVzcGVjaWFsbHkgaWYgdGhlIGRlYnVnIGluZm8gaXMgcHJlc2VudCwgaXQmIzM5O3Mgd29ydGggY29uc2lkZXJpbmcuIFRoZSBjcnVjaWFsIHBvaW50IGhlcmUgaXMgdW5pcXVlbmVzczsgaWYgdGhlIHN0YXRpYyBmdW5jdGlvbiBuYW1lIGlzIHVuaXF1ZSwgdGhlbiBzeXprYWxsZXIgc2hvdWxkIGJlIGFibGUgdG8gaWRlbnRpZnkgaXQgZXZlbiBpZiBpdCYjMzk7cyBzdGF0aWMuIGBwOV9jbGllbnRfYWJvcnRgIHNlZW1zIGxpa2UgYSBwb3RlbnRpYWwgdGFyZ2V0IGlmIGl0ICppcyogdW5pcXVlLgoKU28sIHRoZSBuZXh0IHN0ZXAgaXMgZGVmaW5pdGVseSB0byB2ZXJpZnkgd2hldGhlciBvciBub3QgYHA5X2NsaWVudF9hYm9ydGAmIzM5O3MgbmFtZSBpcyBhY3R1YWxseSB1bmlxdWUgd2l0aGluIHRoZSBzY29wZSBvZiB0aGUgcHJvZ3JhbS4gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAxMjowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwOV9jbGllbnRfYWJvcnQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0LzlwL2NsaWVudC5jPTUwMj1zdGF0aWMgc3RydWN0IHA5X3JlcV90ICpwOV9jbGllbnRfcHJlcGFyZV9yZXEoc3RydWN0IHA5X2NsaWVudCAqYyxcbi0tXG5uZXQvOXAvY2xpZW50LmMtNTQwLVxubmV0LzlwL2NsaWVudC5jOjU0MTpzdGF0aWMgdm9pZCBwOV9jbGllbnRfYWJvcnQoc3RydWN0IHA5X2NsaWVudCAqYywgc3RydWN0IHA5X3JlcV90ICpyZXEpXG5uZXQvOXAvY2xpZW50LmMtNTQyLXtcbi0tXG5uZXQvOXAvY2xpZW50LmM9NTY3PXA5X2NsaWVudF9ycGMoc3RydWN0IHA5X2NsaWVudCAqYywgaW50OF90IHR5cGUsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKVxuLS1cbm5ldC85cC9jbGllbnQuYy02MzgtXHRcdFx0cDlfZGVidWcoUDlfREVCVUdfTVVYLCBcJiMzNDtmYXRhbCBzaWduYWw6IHNraXAgZmx1c2hcXG5cJiMzNDspO1xubmV0LzlwL2NsaWVudC5jOjYzOTpcdFx0XHRwOV9jbGllbnRfYWJvcnQoYywgcmVxKTtcbm5ldC85cC9jbGllbnQuYy02NDAtXHRcdFx0aWYgKFJFQURfT05DRShyZXEtXHUwMDNlc3RhdHVzKSA9PSBSRVFfU1RBVFVTX1JDVkQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDEyOjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc4OTUKCQkJCQkJCW91dHB1dDogMTgwCgkJCQkJCQl0aG91Z2h0czogMzA3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIDlwIENsaWVudCBQYXRjaCoqCgpPa2F5LCB0aGlzIHBhdGNoIGlzIGRlZmluaXRlbHkgdW5pcXVlOyBpdCYjMzk7cyBub3Qgc29tZXRoaW5nIEkmIzM5O3ZlIHNlZW4gYmVmb3JlLiBMZXQgbWUgc2VlLi4uIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIHJlbGV2YW50IGNvbmZpZ3MgYXJlIGVuYWJsZWQ6IGBORVRfOVBgLCBgTkVUXzlQX0ZEYCwgYW5kIGA5UF9GU2AuCgpUaGUgY29yZSBvZiB0aGlzIGNoYW5nZSBzZWVtcyB0byBiZSBhcm91bmQgaG93IHRoZSA5cCBjbGllbnQgYW5kIHRyYW5zcG9ydCBjb2RlIGhhbmRsZXMgZmF0YWwgc2lnbmFscy4gSXQmIzM5O3MgZXNzZW50aWFsbHkgYWJvcnRpbmcgcmVxdWVzdHMsIHJhdGhlciB0aGFuIGdldHRpbmcgc3R1Y2sgd2FpdGluZyBmb3IgYSBgVEZMVVNIYC4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgYW5kIHF1aXRlIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGJhc2UgY2xpZW50IGxvZ2ljLiBUaGUgaW50cm9kdWN0aW9uIG9mIGBSRVFfU1RBVFVTX0FCT1JURURgIGlzIHRoZSBrZXksIGFuZCBmdW5jdGlvbnMgbGlrZSBgcDlfY2xpZW50X3JwY2AsIGBwOV9jbGllbnRfemNfcnBjYCwgYW5kIGBwOV9yZWFkX3dvcmtgIGFyZSBhbGwgbW9kaWZpZWQgdG8gYWNjb3VudCBmb3IgaXQuIFRoaXMgcmVhbGx5IGNhbGxzIGZvciBmdXp6aW5nLgoKTXkgcHJpbWFyeSBmb2N1cyBmb3IgZnV6emluZyB3aWxsIGJlIG9uIHRoZSBmdW5jdGlvbnM6IGBwOV9jbGllbnRfYWJvcnRgLCBgcDlfY2xpZW50X3JwY2AsIGBwOV9jbGllbnRfemNfcnBjYCwgYW5kIGBwOV9yZWFkX3dvcmtgLiBXYWl0IGEgbWludXRlLCBgcDlfY2xpZW50X3JwY2AgYW5kIGBwOV9jbGllbnRfemNfcnBjYCBhcmUgdGhlIHByaW1hcnkgaG90IHBhdGhzIGZvciA5cCBjbGllbnQgaW50ZXJhY3Rpb24uIFRoZXkgYXJlIHRoZSBtYWluIGVudHJ5IHBvaW50cyBmb3IgZnV6emVyIGludGVyYWN0aW9uLiBgcDlfY2xpZW50X2Fib3J0YCBpcyB0aGUgZnVuY3Rpb24gKmFjdHVhbGx5KiBoYW5kbGluZyB0aGUgYWJvcnQgbG9naWMgc3BlY2lmaWNhbGx5LCBhbmQgYHA5X3JlYWRfd29ya2AgaXMgdGhlIHJlcGx5IGhhbmRsZXIsIHNvIEkgbmVlZCB0byBtYWtlIHN1cmUgdG8gaW5jbHVkZSB0aG9zZSB0b28uIEkmIzM5O2xsIG1ha2Ugc3VyZSB0byBnZXQgYHA5X2NsaWVudF9hYm9ydGAgYW5kIGBwOV9yZWFkX3dvcmtgIG9uIHRoZSBsaXN0LgoKTm93LCBsZXQgbWUganVzdCBjb25maXJtIHRoYXQgYHA5X2NsaWVudF9hYm9ydGAgaXMgdGhlICpvbmx5KiBuZXdseSBhZGRlZCBmdW5jdGlvbi4gWWVwLCB0aGF0JiMzOTtzIHRoZSBvbmx5IG9uZS4gT2theSwgbGV0JiMzOTtzIGNhbGwgaXQgYW5kIHNldCB0aGUgcmVzdWx0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTI6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF85UCYjMzQ7LAogICAgJiMzNDtORVRfOVBfRkQmIzM0OywKICAgICYjMzQ7OVBfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwOV9jbGllbnRfYWJvcnQmIzM0OywKICAgICYjMzQ7cDlfcmVhZF93b3JrJiMzNDssCiAgICAmIzM0O3A5X2NsaWVudF9ycGMmIzM0OywKICAgICYjMzQ7cDlfY2xpZW50X3pjX3JwYyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgOXAgY2xpZW50IGFuZCB0cmFuc3BvcnQgY29kZSB0byBoYW5kbGUgZmF0YWwgc2lnbmFscyBieSBhYm9ydGluZyByZXF1ZXN0cyBpbnN0ZWFkIG9mIHdhaXRpbmcgZm9yIFRGTFVTSC4gSXQgaW50cm9kdWNlcyBhIG5ldyByZXF1ZXN0IHN0YXR1cyBSRVFfU1RBVFVTX0FCT1JURUQgYW5kIG1vZGlmaWVzIHA5X2NsaWVudF9ycGMsIHA5X2NsaWVudF96Y19ycGMsIGFuZCBwOV9yZWFkX3dvcmsgdG8gaGFuZGxlIGl0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgOXAgY2xpZW50IGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfOVAmIzM0OywKICAgICYjMzQ7TkVUXzlQX0ZEJiMzNDssCiAgICAmIzM0OzlQX0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cDlfY2xpZW50X2Fib3J0JiMzNDssCiAgICAmIzM0O3A5X3JlYWRfd29yayYjMzQ7LAogICAgJiMzNDtwOV9jbGllbnRfcnBjJiMzNDssCiAgICAmIzM0O3A5X2NsaWVudF96Y19ycGMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIDlwIGNsaWVudCBhbmQgdHJhbnNwb3J0IGNvZGUgdG8gaGFuZGxlIGZhdGFsIHNpZ25hbHMgYnkgYWJvcnRpbmcgcmVxdWVzdHMgaW5zdGVhZCBvZiB3YWl0aW5nIGZvciBURkxVU0guIEl0IGludHJvZHVjZXMgYSBuZXcgcmVxdWVzdCBzdGF0dXMgUkVRX1NUQVRVU19BQk9SVEVEIGFuZCBtb2RpZmllcyBwOV9jbGllbnRfcnBjLCBwOV9jbGllbnRfemNfcnBjLCBhbmQgcDlfcmVhZF93b3JrIHRvIGhhbmRsZSBpdC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIDlwIGNsaWVudCBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDEyOjAwOjEyLjg1ODY2NjQzNloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM2NTI3OTQzNTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF85UFwiLFxuICAgIFwiTkVUXzlQX0ZEXCIsXG4gICAgXCI5UF9GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInA5X2NsaWVudF9hYm9ydFwiLFxuICAgIFwicDlfcmVhZF93b3JrXCIsXG4gICAgXCJwOV9jbGllbnRfcnBjXCIsXG4gICAgXCJwOV9jbGllbnRfemNfcnBjXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIDlwIGNsaWVudCBhbmQgdHJhbnNwb3J0IGNvZGUgdG8gaGFuZGxlIGZhdGFsIHNpZ25hbHMgYnkgYWJvcnRpbmcgcmVxdWVzdHMgaW5zdGVhZCBvZiB3YWl0aW5nIGZvciBURkxVU0guIEl0IGludHJvZHVjZXMgYSBuZXcgcmVxdWVzdCBzdGF0dXMgUkVRX1NUQVRVU19BQk9SVEVEIGFuZCBtb2RpZmllcyBwOV9jbGllbnRfcnBjLCBwOV9jbGllbnRfemNfcnBjLCBhbmQgcDlfcmVhZF93b3JrIHRvIGhhbmRsZSBpdC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIDlwIGNsaWVudCBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTI6MDA6MTIuODU4NjcyNDM2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NTA5MTE2NTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA0MDRkODgyMzhhMzkxY2MwOWEzMzJmNjBmMTRhNTczZTExNzVmNDUwXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDE2IDEyOjAwOjExIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LzlwL2NsaWVudC5oIGIvaW5jbHVkZS9uZXQvOXAvY2xpZW50LmhcXG5pbmRleCA1NWM2Y2I1NGJkMjU0OC4uNzAwZGNiMzdjMWRjNDAgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9uZXQvOXAvY2xpZW50LmhcXG4rKysgYi9pbmNsdWRlL25ldC85cC9jbGllbnQuaFxcbkBAIC01OCw2ICs1OCw4IEBAIGVudW0gcDlfdHJhbnNfc3RhdHVzIHtcXG4gICogQFJFUV9TVEFUVVNfVU5TRU5UOiByZXF1ZXN0IHdhaXRpbmcgdG8gYmUgc2VudFxcbiAgKiBAUkVRX1NUQVRVU19TRU5UOiByZXF1ZXN0IHNlbnQgdG8gc2VydmVyXFxuICAqIEBSRVFfU1RBVFVTX1JDVkQ6IHJlc3BvbnNlIHJlY2VpdmVkIGZyb20gc2VydmVyXFxuKyAqIEBSRVFfU1RBVFVTX0FCT1JURUQ6IGNhbGxlciBzdG9wcGVkIHdhaXRpbmcsIGJ1dCB0aGUgcmVxdWVzdCBrZWVwcyBpdHMgdGFnXFxuKyAqICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkIHVudGlsIGEgcmVwbHkgYXJyaXZlcyBvciB0aGUgdHJhbnNwb3J0IGNsb3Nlc1xcbiAgKiBAUkVRX1NUQVRVU19GTFNIRDogcmVxdWVzdCBoYXMgYmVlbiBmbHVzaGVkXFxuICAqIEBSRVFfU1RBVFVTX0VSUk9SOiByZXF1ZXN0IGVuY291bnRlcmVkIGFuIGVycm9yIG9uIHRoZSBjbGllbnQgc2lkZVxcbiAgKi9cXG5AQCAtNjcsNiArNjksNyBAQCBlbnVtIHA5X3JlcV9zdGF0dXNfdCB7XFxuIFxcdFJFUV9TVEFUVVNfVU5TRU5ULFxcbiBcXHRSRVFfU1RBVFVTX1NFTlQsXFxuIFxcdFJFUV9TVEFUVVNfUkNWRCxcXG4rXFx0UkVRX1NUQVRVU19BQk9SVEVELFxcbiBcXHRSRVFfU1RBVFVTX0ZMU0hELFxcbiBcXHRSRVFfU1RBVFVTX0VSUk9SLFxcbiB9O1xcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC85cC90cmFuc3BvcnQuaCBiL2luY2x1ZGUvbmV0LzlwL3RyYW5zcG9ydC5oXFxuaW5kZXggYTkxMmJiYWE4NjJmOWIuLjkzMzQ5ZmUzM2RmZjQwIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbmV0LzlwL3RyYW5zcG9ydC5oXFxuKysrIGIvaW5jbHVkZS9uZXQvOXAvdHJhbnNwb3J0LmhcXG5AQCAtMzQsNiArMzQsOSBAQFxcbiAgKiBAc3VwcG9ydHNfdm1hbGxvYzogc2V0IGlmIHRoaXMgdHJhbnNwb3J0IGNhbiB3b3JrIHdpdGggdm1hbGxvYydkIGJ1ZmZlcnNcXG4gICogICAgICAgICAgICAgICAgICAgIChub24tcGh5c2ljYWxseSBjb250aWd1b3VzIG1lbW9yeSkuIFRyYW5zcG9ydHMgcmVxdWlyaW5nXFxuICAqICAgICAgICAgICAgICAgICAgICBETUEgc2hvdWxkIGxlYXZlIHRoaXMgYXMgZmFsc2UuXFxuKyAqIEBzdXBwb3J0c19hc3luY19hYm9ydDogc2V0IGlmIGEgc2VudCByZXF1ZXN0IHJlbWFpbnMgcmVmZXJlbmNlZCBieSB0aGVcXG4rICogICAgICAgICAgICAgICAgICAgICAgICB0cmFuc3BvcnQgdW50aWwgaXRzIHJlcGx5IGlzIGNvbnN1bWVkIG9yIHRoZVxcbisgKiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9ydCBpcyBjbG9zZWRcXG4gICogQGNyZWF0ZTogbWVtYmVyIGZ1bmN0aW9uIHRvIGNyZWF0ZSBhIG5ldyBjb25uZWN0aW9uIG9uIHRoaXMgdHJhbnNwb3J0XFxuICAqIEBjbG9zZTogbWVtYmVyIGZ1bmN0aW9uIHRvIGRpc2NhcmQgYSBjb25uZWN0aW9uIG9uIHRoaXMgdHJhbnNwb3J0XFxuICAqIEByZXF1ZXN0OiBtZW1iZXIgZnVuY3Rpb24gdG8gaXNzdWUgYSByZXF1ZXN0IHRvIHRoZSB0cmFuc3BvcnRcXG5AQCAtNTUsNiArNTgsNyBAQCBzdHJ1Y3QgcDlfdHJhbnNfbW9kdWxlIHtcXG4gXFx0Ym9vbCBwb29sZWRfcmJ1ZmZlcnM7XFxuIFxcdGJvb2wgZGVmO1xcdFxcdC8qIHRoaXMgdHJhbnNwb3J0IHNob3VsZCBiZSBkZWZhdWx0ICovXFxuIFxcdGJvb2wgc3VwcG9ydHNfdm1hbGxvYztcXHQvKiBjYW4gd29yayB3aXRoIHZtYWxsb2MnZCBidWZmZXJzICovXFxuK1xcdGJvb2wgc3VwcG9ydHNfYXN5bmNfYWJvcnQ7IC8qIGtlZXBzIHNlbnQgcmVxdWVzdHMgYWxpdmUgYWZ0ZXIgY2FsbGVyIGV4aXRzICovXFxuIFxcdHN0cnVjdCBtb2R1bGUgKm93bmVyO1xcbiBcXHRpbnQgKCpjcmVhdGUpKHN0cnVjdCBwOV9jbGllbnQgKmNsaWVudCxcXG4gXFx0XFx0ICAgICAgc3RydWN0IGZzX2NvbnRleHQgKmZjKTtcXG5kaWZmIC0tZ2l0IGEvbmV0LzlwL2NsaWVudC5jIGIvbmV0LzlwL2NsaWVudC5jXFxuaW5kZXggZWY2NDU0NmM2ZDUyYTEuLjQ3MzUzY2YwNzUwZGRmIDEwMDY0NFxcbi0tLSBhL25ldC85cC9jbGllbnQuY1xcbisrKyBiL25ldC85cC9jbGllbnQuY1xcbkBAIC01MzgsNiArNTM4LDIyIEBAIHN0YXRpYyBzdHJ1Y3QgcDlfcmVxX3QgKnA5X2NsaWVudF9wcmVwYXJlX3JlcShzdHJ1Y3QgcDlfY2xpZW50ICpjLFxcbiBcXHRyZXR1cm4gRVJSX1BUUihlcnIpO1xcbiB9XFxuIFxcbitzdGF0aWMgdm9pZCBwOV9jbGllbnRfYWJvcnQoc3RydWN0IHA5X2NsaWVudCAqYywgc3RydWN0IHA5X3JlcV90ICpyZXEpXFxuK3tcXG4rXFx0LypcXG4rXFx0ICogQSBmYXRhbCBzaWduYWwgY2Fubm90IHdhaXQgZm9yIFRGTFVTSCwgYnV0IGEgc2VudCByZXF1ZXN0IG11c3Qga2VlcFxcbitcXHQgKiBpdHMgdGFnIHVudGlsIGEgbGF0ZSByZXBseSBhcnJpdmVzIG9yIHRoZSB0cmFuc3BvcnQgaXMgdG9ybiBkb3duLlxcbitcXHQgKi9cXG4rXFx0aWYgKCFjLVxcdTAwM2V0cmFuc19tb2QtXFx1MDAzZXN1cHBvcnRzX2FzeW5jX2Fib3J0IHx8XFxuK1xcdCAgICBSRUFEX09OQ0UocmVxLVxcdTAwM2VzdGF0dXMpIFxcdTAwM2U9IFJFUV9TVEFUVVNfUkNWRClcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0aWYgKCFjLVxcdTAwM2V0cmFuc19tb2QtXFx1MDAzZWNhbmNlbChjLCByZXEpKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbitcXHRjbXB4Y2hnKFxcdTAwMjZyZXEtXFx1MDAzZXN0YXR1cywgUkVRX1NUQVRVU19TRU5ULCBSRVFfU1RBVFVTX0FCT1JURUQpO1xcbit9XFxuK1xcbiAvKipcXG4gICogcDlfY2xpZW50X3JwYyAtIGlzc3VlIGEgcmVxdWVzdCBhbmQgd2FpdCBmb3IgYSByZXNwb25zZVxcbiAgKiBAYzogY2xpZW50IHNlc3Npb25cXG5AQCAtNjEyLDYgKzYyOCwyMCBAQCBwOV9jbGllbnRfcnBjKHN0cnVjdCBwOV9jbGllbnQgKmMsIGludDhfdCB0eXBlLCBjb25zdCBjaGFyICpmbXQsIC4uLilcXG4gXFx0XFx0ZXJyID0gcmVxLVxcdTAwM2V0X2VycjtcXG4gXFx0fVxcbiBcXHRpZiAoZXJyID09IC1FUkVTVEFSVFNZUyBcXHUwMDI2XFx1MDAyNiBjLVxcdTAwM2VzdGF0dXMgPT0gQ29ubmVjdGVkKSB7XFxuK1xcdFxcdGlmIChSRUFEX09OQ0UocmVxLVxcdTAwM2VzdGF0dXMpID09IFJFUV9TVEFUVVNfUkNWRCkge1xcbitcXHRcXHRcXHRlcnIgPSAwO1xcbitcXHRcXHRcXHRnb3RvIHJlY2FsY19zaWdwZW5kaW5nO1xcbitcXHRcXHR9XFxuK1xcbitcXHRcXHRpZiAoZmF0YWxfc2lnbmFsX3BlbmRpbmcoY3VycmVudCkgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0ICAgIGMtXFx1MDAzZXRyYW5zX21vZC1cXHUwMDNlc3VwcG9ydHNfYXN5bmNfYWJvcnQpIHtcXG4rXFx0XFx0XFx0cDlfZGVidWcoUDlfREVCVUdfTVVYLCBcXFwiZmF0YWwgc2lnbmFsOiBza2lwIGZsdXNoXFxcXG5cXFwiKTtcXG4rXFx0XFx0XFx0cDlfY2xpZW50X2Fib3J0KGMsIHJlcSk7XFxuK1xcdFxcdFxcdGlmIChSRUFEX09OQ0UocmVxLVxcdTAwM2VzdGF0dXMpID09IFJFUV9TVEFUVVNfUkNWRClcXG4rXFx0XFx0XFx0XFx0ZXJyID0gMDtcXG4rXFx0XFx0XFx0Z290byByZWNhbGNfc2lncGVuZGluZztcXG4rXFx0XFx0fVxcbitcXG4gXFx0XFx0cDlfZGVidWcoUDlfREVCVUdfTVVYLCBcXFwiZmx1c2hpbmdcXFxcblxcXCIpO1xcbiBcXHRcXHRzaWdwZW5kaW5nID0gMTtcXG4gXFx0XFx0Y2xlYXJfdGhyZWFkX2ZsYWcoVElGX1NJR1BFTkRJTkcpO1xcbkBAIC02OTcsNiArNzI3LDExIEBAIHN0YXRpYyBzdHJ1Y3QgcDlfcmVxX3QgKnA5X2NsaWVudF96Y19ycGMoc3RydWN0IHA5X2NsaWVudCAqYywgaW50OF90IHR5cGUsXFxuIFxcdFxcdGVyciA9IHJlcS1cXHUwMDNldF9lcnI7XFxuIFxcdH1cXG4gXFx0aWYgKGVyciA9PSAtRVJFU1RBUlRTWVMgXFx1MDAyNlxcdTAwMjYgYy1cXHUwMDNlc3RhdHVzID09IENvbm5lY3RlZCkge1xcbitcXHRcXHRpZiAoUkVBRF9PTkNFKHJlcS1cXHUwMDNlc3RhdHVzKSA9PSBSRVFfU1RBVFVTX1JDVkQpIHtcXG4rXFx0XFx0XFx0ZXJyID0gMDtcXG4rXFx0XFx0XFx0Z290byByZWNhbGNfc2lncGVuZGluZztcXG4rXFx0XFx0fVxcbitcXG4gXFx0XFx0cDlfZGVidWcoUDlfREVCVUdfTVVYLCBcXFwiZmx1c2hpbmdcXFxcblxcXCIpO1xcbiBcXHRcXHRzaWdwZW5kaW5nID0gMTtcXG4gXFx0XFx0Y2xlYXJfdGhyZWFkX2ZsYWcoVElGX1NJR1BFTkRJTkcpO1xcbmRpZmYgLS1naXQgYS9uZXQvOXAvdHJhbnNfZmQuYyBiL25ldC85cC90cmFuc19mZC5jXFxuaW5kZXggZWI2ODViNTJhZWIyNjQuLmQ1Y2ZmOGMyYzg4Y2RjIDEwMDY0NFxcbi0tLSBhL25ldC85cC90cmFuc19mZC5jXFxuKysrIGIvbmV0LzlwL3RyYW5zX2ZkLmNcXG5AQCAtMjkzLDcgKzI5Myw5IEBAIHN0YXRpYyB2b2lkIHA5X3JlYWRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuIFxcdFxcdFxcdCBtLCBtLVxcdTAwM2VyYy5zaXplLCBtLVxcdTAwM2VyYy50YWcpO1xcbiBcXG4gXFx0XFx0bS1cXHUwMDNlcnJlcSA9IHA5X3RhZ19sb29rdXAobS1cXHUwMDNlY2xpZW50LCBtLVxcdTAwM2VyYy50YWcpO1xcbi1cXHRcXHRpZiAoIW0tXFx1MDAzZXJyZXEgfHwgKG0tXFx1MDAzZXJyZXEtXFx1MDAzZXN0YXR1cyAhPSBSRVFfU1RBVFVTX1NFTlQpKSB7XFxuK1xcdFxcdGlmICghbS1cXHUwMDNlcnJlcSB8fFxcbitcXHRcXHQgICAgKG0tXFx1MDAzZXJyZXEtXFx1MDAzZXN0YXR1cyAhPSBSRVFfU1RBVFVTX1NFTlQgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0ICAgICBtLVxcdTAwM2VycmVxLVxcdTAwM2VzdGF0dXMgIT0gUkVRX1NUQVRVU19BQk9SVEVEKSkge1xcbiBcXHRcXHRcXHRwOV9kZWJ1ZyhQOV9ERUJVR19FUlJPUiwgXFxcIlVuZXhwZWN0ZWQgcGFja2V0IHRhZyAlZFxcXFxuXFxcIixcXG4gXFx0XFx0XFx0XFx0IG0tXFx1MDAzZXJjLnRhZyk7XFxuIFxcdFxcdFxcdGVyciA9IC1FSU87XFxuQEAgLTMzMiw2ICszMzQsOSBAQCBzdGF0aWMgdm9pZCBwOV9yZWFkX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbiBcXHRcXHRpZiAobS1cXHUwMDNlcnJlcS1cXHUwMDNlc3RhdHVzID09IFJFUV9TVEFUVVNfU0VOVCkge1xcbiBcXHRcXHRcXHRsaXN0X2RlbChcXHUwMDI2bS1cXHUwMDNlcnJlcS1cXHUwMDNlcmVxX2xpc3QpO1xcbiBcXHRcXHRcXHRwOV9jbGllbnRfY2IobS1cXHUwMDNlY2xpZW50LCBtLVxcdTAwM2VycmVxLCBSRVFfU1RBVFVTX1JDVkQpO1xcbitcXHRcXHR9IGVsc2UgaWYgKG0tXFx1MDAzZXJyZXEtXFx1MDAzZXN0YXR1cyA9PSBSRVFfU1RBVFVTX0FCT1JURUQpIHtcXG4rXFx0XFx0XFx0bGlzdF9kZWwoXFx1MDAyNm0tXFx1MDAzZXJyZXEtXFx1MDAzZXJlcV9saXN0KTtcXG4rXFx0XFx0XFx0cDlfY2xpZW50X2NiKG0tXFx1MDAzZWNsaWVudCwgbS1cXHUwMDNlcnJlcSwgUkVRX1NUQVRVU19BQk9SVEVEKTtcXG4gXFx0XFx0fSBlbHNlIGlmIChtLVxcdTAwM2VycmVxLVxcdTAwM2VzdGF0dXMgPT0gUkVRX1NUQVRVU19GTFNIRCkge1xcbiBcXHRcXHRcXHQvKiBJZ25vcmUgcmVwbGllcyBhc3NvY2lhdGVkIHdpdGggYSBjYW5jZWxsZWQgcmVxdWVzdC4gKi9cXG4gXFx0XFx0XFx0cDlfZGVidWcoUDlfREVCVUdfVFJBTlMsXFxuQEAgLTk5Niw2ICsxMDAxLDcgQEAgc3RhdGljIHN0cnVjdCBwOV90cmFuc19tb2R1bGUgcDlfdGNwX3RyYW5zID0ge1xcbiBcXHQucG9vbGVkX3JidWZmZXJzID0gZmFsc2UsXFxuIFxcdC5kZWYgPSBmYWxzZSxcXG4gXFx0LnN1cHBvcnRzX3ZtYWxsb2MgPSB0cnVlLFxcbitcXHQuc3VwcG9ydHNfYXN5bmNfYWJvcnQgPSB0cnVlLFxcbiBcXHQuY3JlYXRlID0gcDlfZmRfY3JlYXRlX3RjcCxcXG4gXFx0LmNsb3NlID0gcDlfZmRfY2xvc2UsXFxuIFxcdC5yZXF1ZXN0ID0gcDlfZmRfcmVxdWVzdCxcXG5AQCAtMTAxMSw2ICsxMDE3LDcgQEAgc3RhdGljIHN0cnVjdCBwOV90cmFuc19tb2R1bGUgcDlfdW5peF90cmFucyA9IHtcXG4gXFx0Lm1heHNpemUgPSBNQVhfU09DS19CVUYsXFxuIFxcdC5kZWYgPSBmYWxzZSxcXG4gXFx0LnN1cHBvcnRzX3ZtYWxsb2MgPSB0cnVlLFxcbitcXHQuc3VwcG9ydHNfYXN5bmNfYWJvcnQgPSB0cnVlLFxcbiBcXHQuY3JlYXRlID0gcDlfZmRfY3JlYXRlX3VuaXgsXFxuIFxcdC5jbG9zZSA9IHA5X2ZkX2Nsb3NlLFxcbiBcXHQucmVxdWVzdCA9IHA5X2ZkX3JlcXVlc3QsXFxuQEAgLTEwMjYsNiArMTAzMyw3IEBAIHN0YXRpYyBzdHJ1Y3QgcDlfdHJhbnNfbW9kdWxlIHA5X2ZkX3RyYW5zID0ge1xcbiBcXHQubWF4c2l6ZSA9IE1BWF9TT0NLX0JVRixcXG4gXFx0LmRlZiA9IGZhbHNlLFxcbiBcXHQuc3VwcG9ydHNfdm1hbGxvYyA9IHRydWUsXFxuK1xcdC5zdXBwb3J0c19hc3luY19hYm9ydCA9IHRydWUsXFxuIFxcdC5jcmVhdGUgPSBwOV9mZF9jcmVhdGUsXFxuIFxcdC5jbG9zZSA9IHA5X2ZkX2Nsb3NlLFxcbiBcXHQucmVxdWVzdCA9IHA5X2ZkX3JlcXVlc3QsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDEyOjAwOjEzLjYxMDUzMzEzMloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU3NzYwNjU5MDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUXzlQXCIsXG4gICAgXCJORVRfOVBfRkRcIixcbiAgICBcIjlQX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicDlfY2xpZW50X2Fib3J0XCIsXG4gICAgXCJwOV9yZWFkX3dvcmtcIixcbiAgICBcInA5X2NsaWVudF9ycGNcIixcbiAgICBcInA5X2NsaWVudF96Y19ycGNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgOXAgY2xpZW50IGFuZCB0cmFuc3BvcnQgY29kZSB0byBoYW5kbGUgZmF0YWwgc2lnbmFscyBieSBhYm9ydGluZyByZXF1ZXN0cyBpbnN0ZWFkIG9mIHdhaXRpbmcgZm9yIFRGTFVTSC4gSXQgaW50cm9kdWNlcyBhIG5ldyByZXF1ZXN0IHN0YXR1cyBSRVFfU1RBVFVTX0FCT1JURUQgYW5kIG1vZGlmaWVzIHA5X2NsaWVudF9ycGMsIHA5X2NsaWVudF96Y19ycGMsIGFuZCBwOV9yZWFkX3dvcmsgdG8gaGFuZGxlIGl0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgOXAgY2xpZW50IGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDQwNGQ4ODIzOGEzOTFjYzA5YTMzMmY2MGYxNGE1NzNlMTE3NWY0NTBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAxNiAxMjowMDoxMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LzlwL2NsaWVudC5oIGIvaW5jbHVkZS9uZXQvOXAvY2xpZW50LmhcbmluZGV4IDU1YzZjYjU0YmQyNTQ4Li43MDBkY2IzN2MxZGM0MCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0LzlwL2NsaWVudC5oXG4rKysgYi9pbmNsdWRlL25ldC85cC9jbGllbnQuaFxuQEAgLTU4LDYgKzU4LDggQEAgZW51bSBwOV90cmFuc19zdGF0dXMge1xuICAqIEBSRVFfU1RBVFVTX1VOU0VOVDogcmVxdWVzdCB3YWl0aW5nIHRvIGJlIHNlbnRcbiAgKiBAUkVRX1NUQVRVU19TRU5UOiByZXF1ZXN0IHNlbnQgdG8gc2VydmVyXG4gICogQFJFUV9TVEFUVVNfUkNWRDogcmVzcG9uc2UgcmVjZWl2ZWQgZnJvbSBzZXJ2ZXJcbisgKiBAUkVRX1NUQVRVU19BQk9SVEVEOiBjYWxsZXIgc3RvcHBlZCB3YWl0aW5nLCBidXQgdGhlIHJlcXVlc3Qga2VlcHMgaXRzIHRhZ1xuKyAqICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkIHVudGlsIGEgcmVwbHkgYXJyaXZlcyBvciB0aGUgdHJhbnNwb3J0IGNsb3Nlc1xuICAqIEBSRVFfU1RBVFVTX0ZMU0hEOiByZXF1ZXN0IGhhcyBiZWVuIGZsdXNoZWRcbiAgKiBAUkVRX1NUQVRVU19FUlJPUjogcmVxdWVzdCBlbmNvdW50ZXJlZCBhbiBlcnJvciBvbiB0aGUgY2xpZW50IHNpZGVcbiAgKi9cbkBAIC02Nyw2ICs2OSw3IEBAIGVudW0gcDlfcmVxX3N0YXR1c190IHtcbiBcdFJFUV9TVEFUVVNfVU5TRU5ULFxuIFx0UkVRX1NUQVRVU19TRU5ULFxuIFx0UkVRX1NUQVRVU19SQ1ZELFxuK1x0UkVRX1NUQVRVU19BQk9SVEVELFxuIFx0UkVRX1NUQVRVU19GTFNIRCxcbiBcdFJFUV9TVEFUVVNfRVJST1IsXG4gfTtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC85cC90cmFuc3BvcnQuaCBiL2luY2x1ZGUvbmV0LzlwL3RyYW5zcG9ydC5oXG5pbmRleCBhOTEyYmJhYTg2MmY5Yi4uOTMzNDlmZTMzZGZmNDAgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC85cC90cmFuc3BvcnQuaFxuKysrIGIvaW5jbHVkZS9uZXQvOXAvdHJhbnNwb3J0LmhcbkBAIC0zNCw2ICszNCw5IEBAXG4gICogQHN1cHBvcnRzX3ZtYWxsb2M6IHNldCBpZiB0aGlzIHRyYW5zcG9ydCBjYW4gd29yayB3aXRoIHZtYWxsb2MnZCBidWZmZXJzXG4gICogICAgICAgICAgICAgICAgICAgIChub24tcGh5c2ljYWxseSBjb250aWd1b3VzIG1lbW9yeSkuIFRyYW5zcG9ydHMgcmVxdWlyaW5nXG4gICogICAgICAgICAgICAgICAgICAgIERNQSBzaG91bGQgbGVhdmUgdGhpcyBhcyBmYWxzZS5cbisgKiBAc3VwcG9ydHNfYXN5bmNfYWJvcnQ6IHNldCBpZiBhIHNlbnQgcmVxdWVzdCByZW1haW5zIHJlZmVyZW5jZWQgYnkgdGhlXG4rICogICAgICAgICAgICAgICAgICAgICAgICB0cmFuc3BvcnQgdW50aWwgaXRzIHJlcGx5IGlzIGNvbnN1bWVkIG9yIHRoZVxuKyAqICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3J0IGlzIGNsb3NlZFxuICAqIEBjcmVhdGU6IG1lbWJlciBmdW5jdGlvbiB0byBjcmVhdGUgYSBuZXcgY29ubmVjdGlvbiBvbiB0aGlzIHRyYW5zcG9ydFxuICAqIEBjbG9zZTogbWVtYmVyIGZ1bmN0aW9uIHRvIGRpc2NhcmQgYSBjb25uZWN0aW9uIG9uIHRoaXMgdHJhbnNwb3J0XG4gICogQHJlcXVlc3Q6IG1lbWJlciBmdW5jdGlvbiB0byBpc3N1ZSBhIHJlcXVlc3QgdG8gdGhlIHRyYW5zcG9ydFxuQEAgLTU1LDYgKzU4LDcgQEAgc3RydWN0IHA5X3RyYW5zX21vZHVsZSB7XG4gXHRib29sIHBvb2xlZF9yYnVmZmVycztcbiBcdGJvb2wgZGVmO1x0XHQvKiB0aGlzIHRyYW5zcG9ydCBzaG91bGQgYmUgZGVmYXVsdCAqL1xuIFx0Ym9vbCBzdXBwb3J0c192bWFsbG9jO1x0LyogY2FuIHdvcmsgd2l0aCB2bWFsbG9jJ2QgYnVmZmVycyAqL1xuK1x0Ym9vbCBzdXBwb3J0c19hc3luY19hYm9ydDsgLyoga2VlcHMgc2VudCByZXF1ZXN0cyBhbGl2ZSBhZnRlciBjYWxsZXIgZXhpdHMgKi9cbiBcdHN0cnVjdCBtb2R1bGUgKm93bmVyO1xuIFx0aW50ICgqY3JlYXRlKShzdHJ1Y3QgcDlfY2xpZW50ICpjbGllbnQsXG4gXHRcdCAgICAgIHN0cnVjdCBmc19jb250ZXh0ICpmYyk7XG5kaWZmIC0tZ2l0IGEvbmV0LzlwL2NsaWVudC5jIGIvbmV0LzlwL2NsaWVudC5jXG5pbmRleCBlZjY0NTQ2YzZkNTJhMS4uNDczNTNjZjA3NTBkZGYgMTAwNjQ0XG4tLS0gYS9uZXQvOXAvY2xpZW50LmNcbisrKyBiL25ldC85cC9jbGllbnQuY1xuQEAgLTUzOCw2ICs1MzgsMjIgQEAgc3RhdGljIHN0cnVjdCBwOV9yZXFfdCAqcDlfY2xpZW50X3ByZXBhcmVfcmVxKHN0cnVjdCBwOV9jbGllbnQgKmMsXG4gXHRyZXR1cm4gRVJSX1BUUihlcnIpO1xuIH1cbiBcbitzdGF0aWMgdm9pZCBwOV9jbGllbnRfYWJvcnQoc3RydWN0IHA5X2NsaWVudCAqYywgc3RydWN0IHA5X3JlcV90ICpyZXEpXG4re1xuK1x0LypcbitcdCAqIEEgZmF0YWwgc2lnbmFsIGNhbm5vdCB3YWl0IGZvciBURkxVU0gsIGJ1dCBhIHNlbnQgcmVxdWVzdCBtdXN0IGtlZXBcbitcdCAqIGl0cyB0YWcgdW50aWwgYSBsYXRlIHJlcGx5IGFycml2ZXMgb3IgdGhlIHRyYW5zcG9ydCBpcyB0b3JuIGRvd24uXG4rXHQgKi9cbitcdGlmICghYy1cdTAwM2V0cmFuc19tb2QtXHUwMDNlc3VwcG9ydHNfYXN5bmNfYWJvcnQgfHxcbitcdCAgICBSRUFEX09OQ0UocmVxLVx1MDAzZXN0YXR1cykgXHUwMDNlPSBSRVFfU1RBVFVTX1JDVkQpXG4rXHRcdHJldHVybjtcbitcbitcdGlmICghYy1cdTAwM2V0cmFuc19tb2QtXHUwMDNlY2FuY2VsKGMsIHJlcSkpXG4rXHRcdHJldHVybjtcbitcbitcdGNtcHhjaGcoXHUwMDI2cmVxLVx1MDAzZXN0YXR1cywgUkVRX1NUQVRVU19TRU5ULCBSRVFfU1RBVFVTX0FCT1JURUQpO1xuK31cbitcbiAvKipcbiAgKiBwOV9jbGllbnRfcnBjIC0gaXNzdWUgYSByZXF1ZXN0IGFuZCB3YWl0IGZvciBhIHJlc3BvbnNlXG4gICogQGM6IGNsaWVudCBzZXNzaW9uXG5AQCAtNjEyLDYgKzYyOCwyMCBAQCBwOV9jbGllbnRfcnBjKHN0cnVjdCBwOV9jbGllbnQgKmMsIGludDhfdCB0eXBlLCBjb25zdCBjaGFyICpmbXQsIC4uLilcbiBcdFx0ZXJyID0gcmVxLVx1MDAzZXRfZXJyO1xuIFx0fVxuIFx0aWYgKGVyciA9PSAtRVJFU1RBUlRTWVMgXHUwMDI2XHUwMDI2IGMtXHUwMDNlc3RhdHVzID09IENvbm5lY3RlZCkge1xuK1x0XHRpZiAoUkVBRF9PTkNFKHJlcS1cdTAwM2VzdGF0dXMpID09IFJFUV9TVEFUVVNfUkNWRCkge1xuK1x0XHRcdGVyciA9IDA7XG4rXHRcdFx0Z290byByZWNhbGNfc2lncGVuZGluZztcbitcdFx0fVxuK1xuK1x0XHRpZiAoZmF0YWxfc2lnbmFsX3BlbmRpbmcoY3VycmVudCkgXHUwMDI2XHUwMDI2XG4rXHRcdCAgICBjLVx1MDAzZXRyYW5zX21vZC1cdTAwM2VzdXBwb3J0c19hc3luY19hYm9ydCkge1xuK1x0XHRcdHA5X2RlYnVnKFA5X0RFQlVHX01VWCwgXCJmYXRhbCBzaWduYWw6IHNraXAgZmx1c2hcXG5cIik7XG4rXHRcdFx0cDlfY2xpZW50X2Fib3J0KGMsIHJlcSk7XG4rXHRcdFx0aWYgKFJFQURfT05DRShyZXEtXHUwMDNlc3RhdHVzKSA9PSBSRVFfU1RBVFVTX1JDVkQpXG4rXHRcdFx0XHRlcnIgPSAwO1xuK1x0XHRcdGdvdG8gcmVjYWxjX3NpZ3BlbmRpbmc7XG4rXHRcdH1cbitcbiBcdFx0cDlfZGVidWcoUDlfREVCVUdfTVVYLCBcImZsdXNoaW5nXFxuXCIpO1xuIFx0XHRzaWdwZW5kaW5nID0gMTtcbiBcdFx0Y2xlYXJfdGhyZWFkX2ZsYWcoVElGX1NJR1BFTkRJTkcpO1xuQEAgLTY5Nyw2ICs3MjcsMTEgQEAgc3RhdGljIHN0cnVjdCBwOV9yZXFfdCAqcDlfY2xpZW50X3pjX3JwYyhzdHJ1Y3QgcDlfY2xpZW50ICpjLCBpbnQ4X3QgdHlwZSxcbiBcdFx0ZXJyID0gcmVxLVx1MDAzZXRfZXJyO1xuIFx0fVxuIFx0aWYgKGVyciA9PSAtRVJFU1RBUlRTWVMgXHUwMDI2XHUwMDI2IGMtXHUwMDNlc3RhdHVzID09IENvbm5lY3RlZCkge1xuK1x0XHRpZiAoUkVBRF9PTkNFKHJlcS1cdTAwM2VzdGF0dXMpID09IFJFUV9TVEFUVVNfUkNWRCkge1xuK1x0XHRcdGVyciA9IDA7XG4rXHRcdFx0Z290byByZWNhbGNfc2lncGVuZGluZztcbitcdFx0fVxuK1xuIFx0XHRwOV9kZWJ1ZyhQOV9ERUJVR19NVVgsIFwiZmx1c2hpbmdcXG5cIik7XG4gXHRcdHNpZ3BlbmRpbmcgPSAxO1xuIFx0XHRjbGVhcl90aHJlYWRfZmxhZyhUSUZfU0lHUEVORElORyk7XG5kaWZmIC0tZ2l0IGEvbmV0LzlwL3RyYW5zX2ZkLmMgYi9uZXQvOXAvdHJhbnNfZmQuY1xuaW5kZXggZWI2ODViNTJhZWIyNjQuLmQ1Y2ZmOGMyYzg4Y2RjIDEwMDY0NFxuLS0tIGEvbmV0LzlwL3RyYW5zX2ZkLmNcbisrKyBiL25ldC85cC90cmFuc19mZC5jXG5AQCAtMjkzLDcgKzI5Myw5IEBAIHN0YXRpYyB2b2lkIHA5X3JlYWRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXHRcdFx0IG0sIG0tXHUwMDNlcmMuc2l6ZSwgbS1cdTAwM2VyYy50YWcpO1xuIFxuIFx0XHRtLVx1MDAzZXJyZXEgPSBwOV90YWdfbG9va3VwKG0tXHUwMDNlY2xpZW50LCBtLVx1MDAzZXJjLnRhZyk7XG4tXHRcdGlmICghbS1cdTAwM2VycmVxIHx8IChtLVx1MDAzZXJyZXEtXHUwMDNlc3RhdHVzICE9IFJFUV9TVEFUVVNfU0VOVCkpIHtcbitcdFx0aWYgKCFtLVx1MDAzZXJyZXEgfHxcbitcdFx0ICAgIChtLVx1MDAzZXJyZXEtXHUwMDNlc3RhdHVzICE9IFJFUV9TVEFUVVNfU0VOVCBcdTAwMjZcdTAwMjZcbitcdFx0ICAgICBtLVx1MDAzZXJyZXEtXHUwMDNlc3RhdHVzICE9IFJFUV9TVEFUVVNfQUJPUlRFRCkpIHtcbiBcdFx0XHRwOV9kZWJ1ZyhQOV9ERUJVR19FUlJPUiwgXCJVbmV4cGVjdGVkIHBhY2tldCB0YWcgJWRcXG5cIixcbiBcdFx0XHRcdCBtLVx1MDAzZXJjLnRhZyk7XG4gXHRcdFx0ZXJyID0gLUVJTztcbkBAIC0zMzIsNiArMzM0LDkgQEAgc3RhdGljIHZvaWQgcDlfcmVhZF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiBcdFx0aWYgKG0tXHUwMDNlcnJlcS1cdTAwM2VzdGF0dXMgPT0gUkVRX1NUQVRVU19TRU5UKSB7XG4gXHRcdFx0bGlzdF9kZWwoXHUwMDI2bS1cdTAwM2VycmVxLVx1MDAzZXJlcV9saXN0KTtcbiBcdFx0XHRwOV9jbGllbnRfY2IobS1cdTAwM2VjbGllbnQsIG0tXHUwMDNlcnJlcSwgUkVRX1NUQVRVU19SQ1ZEKTtcbitcdFx0fSBlbHNlIGlmIChtLVx1MDAzZXJyZXEtXHUwMDNlc3RhdHVzID09IFJFUV9TVEFUVVNfQUJPUlRFRCkge1xuK1x0XHRcdGxpc3RfZGVsKFx1MDAyNm0tXHUwMDNlcnJlcS1cdTAwM2VyZXFfbGlzdCk7XG4rXHRcdFx0cDlfY2xpZW50X2NiKG0tXHUwMDNlY2xpZW50LCBtLVx1MDAzZXJyZXEsIFJFUV9TVEFUVVNfQUJPUlRFRCk7XG4gXHRcdH0gZWxzZSBpZiAobS1cdTAwM2VycmVxLVx1MDAzZXN0YXR1cyA9PSBSRVFfU1RBVFVTX0ZMU0hEKSB7XG4gXHRcdFx0LyogSWdub3JlIHJlcGxpZXMgYXNzb2NpYXRlZCB3aXRoIGEgY2FuY2VsbGVkIHJlcXVlc3QuICovXG4gXHRcdFx0cDlfZGVidWcoUDlfREVCVUdfVFJBTlMsXG5AQCAtOTk2LDYgKzEwMDEsNyBAQCBzdGF0aWMgc3RydWN0IHA5X3RyYW5zX21vZHVsZSBwOV90Y3BfdHJhbnMgPSB7XG4gXHQucG9vbGVkX3JidWZmZXJzID0gZmFsc2UsXG4gXHQuZGVmID0gZmFsc2UsXG4gXHQuc3VwcG9ydHNfdm1hbGxvYyA9IHRydWUsXG4rXHQuc3VwcG9ydHNfYXN5bmNfYWJvcnQgPSB0cnVlLFxuIFx0LmNyZWF0ZSA9IHA5X2ZkX2NyZWF0ZV90Y3AsXG4gXHQuY2xvc2UgPSBwOV9mZF9jbG9zZSxcbiBcdC5yZXF1ZXN0ID0gcDlfZmRfcmVxdWVzdCxcbkBAIC0xMDExLDYgKzEwMTcsNyBAQCBzdGF0aWMgc3RydWN0IHA5X3RyYW5zX21vZHVsZSBwOV91bml4X3RyYW5zID0ge1xuIFx0Lm1heHNpemUgPSBNQVhfU09DS19CVUYsXG4gXHQuZGVmID0gZmFsc2UsXG4gXHQuc3VwcG9ydHNfdm1hbGxvYyA9IHRydWUsXG4rXHQuc3VwcG9ydHNfYXN5bmNfYWJvcnQgPSB0cnVlLFxuIFx0LmNyZWF0ZSA9IHA5X2ZkX2NyZWF0ZV91bml4LFxuIFx0LmNsb3NlID0gcDlfZmRfY2xvc2UsXG4gXHQucmVxdWVzdCA9IHA5X2ZkX3JlcXVlc3QsXG5AQCAtMTAyNiw2ICsxMDMzLDcgQEAgc3RhdGljIHN0cnVjdCBwOV90cmFuc19tb2R1bGUgcDlfZmRfdHJhbnMgPSB7XG4gXHQubWF4c2l6ZSA9IE1BWF9TT0NLX0JVRixcbiBcdC5kZWYgPSBmYWxzZSxcbiBcdC5zdXBwb3J0c192bWFsbG9jID0gdHJ1ZSxcbitcdC5zdXBwb3J0c19hc3luY19hYm9ydCA9IHRydWUsXG4gXHQuY3JlYXRlID0gcDlfZmRfY3JlYXRlLFxuIFx0LmNsb3NlID0gcDlfZmRfY2xvc2UsXG4gXHQucmVxdWVzdCA9IHA5X2ZkX3JlcXVlc3QsXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQxMjowMDoxMy42MTA1MzQ5ODJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjMwNjQ3NTQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIDlwIENsaWVudCBQYXRjaCoqXG5cbk9rYXksIHNvIHdlIGhhdmUgYSBwYXRjaCBoZXJlIHRoYXQncyBtYWtpbmcgc29tZSBwcmV0dHkgc2lnbmlmaWNhbnQgY2hhbmdlcyB0byB0aGUgOXAgY2xpZW50IGFuZCBpdHMgdHJhbnNwb3J0IGNvZGUuIFRoZSBjb3JlIG9mIGl0IHNlZW1zIHRvIGJlIGFib3V0IGltcHJvdmluZyBob3cgd2UgaGFuZGxlIGFzeW5jaHJvbm91cyByZXF1ZXN0IGFib3J0aW9uLiBJdCBsb29rcyBsaWtlIHRoZXkncmUgaW50cm9kdWNpbmcgYSBuZXcgcmVxdWVzdCBzdGF0dXMsIGBSRVFfU1RBVFVTX0FCT1JURURgLCBhbmQgYWRkaW5nIGBzdXBwb3J0c19hc3luY19hYm9ydGAgdG8gdGhlIGBwOV90cmFuc19tb2R1bGVgLlxuXG5Fc3NlbnRpYWxseSwgdGhlIHBhdGNoIGFsdGVycyBgcDlfY2xpZW50X3JwY2AgYW5kIGBwOV9jbGllbnRfemNfcnBjYCB0byBkZWFsIHdpdGggZmF0YWwgc2lnbmFscyAobGlrZWx5IGZyb20gdGltZW91dHMgb3Igb3RoZXIgc3lzdGVtLWxldmVsIGlzc3VlcykgYnkgYWJvcnRpbmcgdGhlIHJlcXVlc3RzIGRpcmVjdGx5IGluc3RlYWQgb2YgaGFuZ2luZyBhcm91bmQgd2FpdGluZyBmb3IgYSBgVEZMVVNIYC4gVGhpcyBpcyBtdWNoIGNsZWFuZXIuIEkgc2VlIGl0IGFsc28gbW9kaWZpZXMgdGhlIGBwOV9yZWFkX3dvcmtgIGZ1bmN0aW9uIGluIGBuZXQvOXAvdHJhbnNfZmQuY2AgdG8gaGFuZGxlIHRoaXMgbmV3IGBSRVFfU1RBVFVTX0FCT1JURURgIHByb3Blcmx5LiBUaGF0IGlzIHRoZSBmaW5hbCBwaWVjZSBvZiB0aGUgbG9naWMuXG5cbkl0IHRoZW4gc2V0cyBgc3VwcG9ydHNfYXN5bmNfYWJvcnQgPSB0cnVlYCBmb3IgdGhlIGNvcmUgdHJhbnNwb3J0cyDigJMgYHA5X3RjcF90cmFuc2AsIGBwOV91bml4X3RyYW5zYCwgYW5kIGBwOV9mZF90cmFuc2AuIFRoaXMgbWFrZXMgc2Vuc2UsIGFzIHRoZXNlIGFyZSB0aGUgcHJpbWFyeSB0cmFuc3BvcnQgbWVjaGFuaXNtcy5cblxuVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLiBBbnkgOXAgZmlsZXN5c3RlbSBtb3VudCBpcyBsaWtlbHkgdG8gdG91Y2ggdGhpcyBjb2RlLiBUaGF0IGltbWVkaWF0ZWx5IG1ha2VzIG1lIHRoaW5rLCBcImZ1enppbmdcIi4gVGhlIHBhdGNoIHNlZW1zIGxpa2UgYSBnb29kIHRhcmdldCBmb3Igc29tZSBmdXp6aW5nIGNhbXBhaWducy5cblxuTGV0IG1lIHRha2UgYSBxdWljayBsb29rIGF0IHRoZSBLY29uZmlnIG9wdGlvbnMgdG8gZGV0ZXJtaW5lIGlmIHRoZXNlIGNoYW5nZXMgY2FuIGJlIGNvbnRyb2xsZWQuIEJhc2VkIG9uIG15IGV4aXN0aW5nIGtub3dsZWRnZSwgSSBleHBlY3QgdGhlIHJlbGV2YW50IG9wdGlvbnMgdG8gYmU6IGBDT05GSUdfTkVUXzlQYCwgYENPTkZJR19ORVRfOVBfRkRgLCBhbmQgYENPTkZJR185UF9GU2AuIEknbGwgdXNlIGBncmVwcGVyYCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5NDcsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQxMjowMDoxOC44NDExODUyMjdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTMxMTk2MTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfOVBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0LzlwL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0LzlwL0tjb25maWctNS1cXG5uZXQvOXAvS2NvbmZpZzo2Om1lbnVjb25maWcgTkVUXzlQXFxubmV0LzlwL0tjb25maWctNy1cXHR0cmlzdGF0ZSBcXFwiUGxhbiA5IFJlc291cmNlIFNoYXJpbmcgU3VwcG9ydCAoOVAyMDAwKVxcXCJcXG4tLVxcbm5ldC85cC9LY29uZmlnPTE3PWlmIE5FVF85UFxcbm5ldC85cC9LY29uZmlnLTE4LVxcbm5ldC85cC9LY29uZmlnOjE5OmNvbmZpZyBORVRfOVBfRkRcXG5uZXQvOXAvS2NvbmZpZy0yMC1cXHRkZWZhdWx0IE5FVF85UFxcbi0tXFxubmV0LzlwL0tjb25maWctMjctXFxubmV0LzlwL0tjb25maWc6Mjg6Y29uZmlnIE5FVF85UF9WSVJUSU9cXG5uZXQvOXAvS2NvbmZpZy0yOS1cXHRkZXBlbmRzIG9uIFZJUlRJT1xcbi0tXFxubmV0LzlwL0tjb25maWctMzQtXFxubmV0LzlwL0tjb25maWc6MzU6Y29uZmlnIE5FVF85UF9YRU5cXG5uZXQvOXAvS2NvbmZpZy0zNi1cXHRkZXBlbmRzIG9uIFhFTlxcbi0tXFxubmV0LzlwL0tjb25maWctNDItXFxubmV0LzlwL0tjb25maWc6NDM6Y29uZmlnIE5FVF85UF9VU0JHXFxubmV0LzlwL0tjb25maWctNDQtXFx0dHJpc3RhdGUgXFxcIjlQIFVTQiBHYWRnZXQgVHJhbnNwb3J0XFxcIlxcbi0tXFxubmV0LzlwL0tjb25maWctNTEtXFxubmV0LzlwL0tjb25maWc6NTI6Y29uZmlnIE5FVF85UF9SRE1BXFxubmV0LzlwL0tjb25maWctNTMtXFx0ZGVwZW5kcyBvbiBJTkVUIFxcdTAwMjZcXHUwMDI2IElORklOSUJBTkQgXFx1MDAyNlxcdTAwMjYgSU5GSU5JQkFORF9BRERSX1RSQU5TXFxuLS1cXG5uZXQvOXAvS2NvbmZpZy01Ny1cXG5uZXQvOXAvS2NvbmZpZzo1ODpjb25maWcgTkVUXzlQX0RFQlVHXFxubmV0LzlwL0tjb25maWctNTktXFx0Ym9vbCBcXFwiRGVidWcgaW5mb3JtYXRpb25cXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDEyOjAwOjE5LjM3MjM4ODU5NloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNjM1MTY5NTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIGNvbmZpZyBvcHRpb25zLCB0aGlua2luZyB0aHJvdWdoIHRoaXMgbGlrZSBJIHdvdWxkOlxuXG4qKkRpZ2dpbmcgaW50byB0aGUgOVAgTmV0d29yayBGaWxlIFN5c3RlbSBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgc28gSSdtIGRlYWxpbmcgd2l0aCB0aGUgOVAgbmV0d29yayBmaWxlIHN5c3RlbSBhbmQgbmVlZCB0byBxdWlja2x5IGZpZ3VyZSBvdXQgdGhlIGVzc2VudGlhbCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIGtub3cgdGhhdCBgTkVUXzlQYCBhbmQgYE5FVF85UF9GRGAgYXJlIGdvaW5nIHRvIGJlIGtleS4gYE5FVF85UGAgaXMgcHJvYmFibHkgdGhlIGNvcmUgOVAgZnVuY3Rpb25hbGl0eSwgbGlrZWx5IGVuYWJsaW5nIHRoZSBnZW5lcmFsIG5ldHdvcmsgcHJvdG9jb2wgc3VwcG9ydC4gQW5kLCBJJ20gYmV0dGluZyB0aGF0IGBORVRfOVBfRkRgIGhhcyB0byBkbyB3aXRoIHVzaW5nIGZpbGUgZGVzY3JpcHRvcnMsIG1heWJlIGZvciBwZXJmb3JtYW5jZSBvciBtb3JlIGRpcmVjdCBpbnRlcmFjdGlvbi4gSSByZWFsbHkgbmVlZCB0byB2ZXJpZnkgdGhhdCBhbmQgc2VlIGhvdyB0aGV5IGludGVycGxheS5cblxuSSBhbHNvIHJlbWVtYmVyLCBvZiBjb3Vyc2UsIHRoYXQgdGhlcmUncyBgOVBfRlNgLCB3aGljaCBpcyBwcm9iYWJseSB0aGUgYWN0dWFsIGZpbGVzeXN0ZW0gbW9kdWxlIGZvciB0aGUgOVAgcHJvdG9jb2wuIEkgbWVhbiwgaXQgaXMgdGhlIHN0YW5kYXJkIGZvciA5UCBhZnRlciBhbGwuIEl0J3MgdGltZSB0byBkcmlsbCBkb3duIGFuZCBjaGVjayB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gZmlsZSAoYGZzLzlwL0tjb25maWdgKSB0byBjb25maXJtIG15IGFzc3VtcHRpb25zIGFuZCBnZXQgdGhlIGZ1bGwgcGljdHVyZS4gTGV0J3Mgc2VlIHdoYXQgdGhlIGRlcGVuZGVuY2llcyBhbmQgcmVsYXRpb25zaGlwcyBhcmUgYmV0d2VlbiB0aGVzZSBvcHRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MDIyLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTI6MDA6MjIuNzM1OTA3ODVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE0MjgyMDY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyA5UF9GU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy85cC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzLzlwL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5mcy85cC9LY29uZmlnOjI6Y29uZmlnIDlQX0ZTXFxuZnMvOXAvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJQbGFuIDkgUmVzb3VyY2UgU2hhcmluZyBTdXBwb3J0ICg5UDIwMDApXFxcIlxcbi0tXFxuZnMvOXAvS2NvbmZpZz0xND1pZiA5UF9GU1xcbmZzLzlwL0tjb25maWc6MTU6Y29uZmlnIDlQX0ZTQ0FDSEVcXG5mcy85cC9LY29uZmlnLTE2LVxcdGJvb2wgXFxcIkVuYWJsZSA5UCBjbGllbnQgY2FjaGluZyBzdXBwb3J0XFxcIlxcbi0tXFxuZnMvOXAvS2NvbmZpZy0yMi1cXG5mcy85cC9LY29uZmlnOjIzOmNvbmZpZyA5UF9GU19QT1NJWF9BQ0xcXG5mcy85cC9LY29uZmlnLTI0LVxcdGJvb2wgXFxcIjlQIFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzXFxcIlxcbi0tXFxuZnMvOXAvS2NvbmZpZz0zMj1lbmRpZlxcbi0tXFxuZnMvOXAvS2NvbmZpZy0zNC1cXG5mcy85cC9LY29uZmlnOjM1OmNvbmZpZyA5UF9GU19TRUNVUklUWVxcbmZzLzlwL0tjb25maWctMzYtXFx0Ym9vbCBcXFwiOVAgU2VjdXJpdHkgTGFiZWxzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQxMjowMDoyMi45NTAxOTUwNThaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTY2ODc4NzQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgOVAgQ2xpZW50IFBhdGNoKipcblxuT2theSwgc28gd2UncmUgbG9va2luZyBhdCBtb2RpZmljYXRpb25zIHJlbGF0ZWQgdG8gYE5FVF85UGAsIGBORVRfOVBfRkRgLCBhbmQgYDlQX0ZTYC4gTXkgZm9jdXMgbmVlZHMgdG8gYmUgb24gdGhlIGtleSBmdW5jdGlvbnMgaW1wYWN0ZWQgYnkgdGhpcyBwYXRjaC4gTGV0J3Mgc2VlLi4uIHRoZSBwYXRjaCBzcGVjaWZpY2FsbHkgdG91Y2hlcyBgcDlfY2xpZW50X3ByZXBhcmVfcmVxYCB3aGljaCBJIHJlY29nbml6ZSBpcyBoYW5kbGluZyB0aGUgY29udGV4dCwgYW5kIGFsc28gaW50cm9kdWNlcyBhIG5ldyBmdW5jdGlvbiwgYHA5X2NsaWVudF9hYm9ydGAuICBUaGVyZSBhcmUgYWxzbyBjaGFuZ2VzIHRvIGBwOV9jbGllbnRfcnBjYCwgYHA5X2NsaWVudF96Y19ycGNgLCBhbmQgYHA5X3JlYWRfd29ya2AuXG5cbk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIGFuZCB2aXNpYmlsaXR5IG9mIHRoZXNlIGZ1bmN0aW9ucy4gSXMgYHA5X2NsaWVudF9hYm9ydGAgc3RhdGljPyBZZXMsIGl0IGFwcGVhcnMgdG8gYmUuIFRoYXQncyBpbXBvcnRhbnQgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIHNjb3BlIHdpdGhpbiB0aGUgbW9kdWxlLiBHb29kLiBgcDlfY2xpZW50X3JwY2AgYW5kIGBwOV9jbGllbnRfemNfcnBjYCBhcmUgZWl0aGVyIGV4cG9ydGVkIG9yLCBhdCB0aGUgdmVyeSBsZWFzdCwgZ2xvYmFsbHkgYWNjZXNzaWJsZTsgd2hpY2ggaXMgdG8gYmUgZXhwZWN0ZWQgZm9yIGNvcmUgUlBDIGZ1bmN0aW9ucy4gQW5kIGBwOV9yZWFkX3dvcmtgLCB0aGF0J3Mgc3RhdGljLCBpdCByZXNpZGVzIHdpdGhpbiBgbmV0LzlwL3RyYW5zX2ZkLmNgLlxuXG5JJ2xsIGNoZWNrIGBuZXQvOXAvY2xpZW50LmNgIHRvIGNvbmZpcm0gdGhhdCBgcDlfY2xpZW50X2Fib3J0YCBpcywgaW5kZWVkLCBzdGF0aWMsIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIG9mIGl0cyBzY29wZSBhbmQgdXNhZ2UuIEl0IGlzIGFsd2F5cyBnb29kIHRvIGhhdmUgYSBoaWdoIGRlZ3JlZSBvZiBjb25maWRlbmNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NjIxLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDEyOjAwOjI3LjUxNzA3NjM0MVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjA1MTU4OTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicDlfY2xpZW50X2Fib3J0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC85cC9jbGllbnQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvOXAvY2xpZW50LmM9NTAyPXN0YXRpYyBzdHJ1Y3QgcDlfcmVxX3QgKnA5X2NsaWVudF9wcmVwYXJlX3JlcShzdHJ1Y3QgcDlfY2xpZW50ICpjLFxcbi0tXFxubmV0LzlwL2NsaWVudC5jLTU0MC1cXG5uZXQvOXAvY2xpZW50LmM6NTQxOnN0YXRpYyB2b2lkIHA5X2NsaWVudF9hYm9ydChzdHJ1Y3QgcDlfY2xpZW50ICpjLCBzdHJ1Y3QgcDlfcmVxX3QgKnJlcSlcXG5uZXQvOXAvY2xpZW50LmMtNTQyLXtcXG4tLVxcbm5ldC85cC9jbGllbnQuYz01Njc9cDlfY2xpZW50X3JwYyhzdHJ1Y3QgcDlfY2xpZW50ICpjLCBpbnQ4X3QgdHlwZSwgY29uc3QgY2hhciAqZm10LCAuLi4pXFxuLS1cXG5uZXQvOXAvY2xpZW50LmMtNjM4LVxcdFxcdFxcdHA5X2RlYnVnKFA5X0RFQlVHX01VWCwgXFxcImZhdGFsIHNpZ25hbDogc2tpcCBmbHVzaFxcXFxuXFxcIik7XFxubmV0LzlwL2NsaWVudC5jOjYzOTpcXHRcXHRcXHRwOV9jbGllbnRfYWJvcnQoYywgcmVxKTtcXG5uZXQvOXAvY2xpZW50LmMtNjQwLVxcdFxcdFxcdGlmIChSRUFEX09OQ0UocmVxLVxcdTAwM2VzdGF0dXMpID09IFJFUV9TVEFUVVNfUkNWRClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTI6MDA6MjcuNjM3NTk4MDI0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE2MzYyMzQwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgUG90ZW50aWFsIFJvb3QgQ2F1c2VzKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IHRoaXMgYHA5X2NsaWVudF9hYm9ydGAgaXNzdWUuIEl0J3Mgc3RhdGljLCBzbyB0aGF0J3MgcHJvYmFibHkgbm90IHRoZSBkaXJlY3QgY3VscHJpdC4gV2UgbmVlZCB0byBsb29rIGRlZXBlci4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgYHA5X2NsaWVudF9ycGNgIGFuZCBgcDlfY2xpZW50X3pjX3JwY2AgYXJlIHN0cm9uZyBwb3NzaWJpbGl0aWVzLCBhbmQgSSdtIGFkZGluZyBgcDlfcmVhZF93b3JrYCB0byB0aGUgbGlzdC4gSSdtIG9wZXJhdGluZyBvbiB0aGUgYXNzdW1wdGlvbiB0aGF0IHRoaXMgbGlrZWx5IGhhcyBzb21ldGhpbmcgdG8gZG8gd2l0aCB0aGUgUlBDIGZsb3csIHNpbmNlIHRoYXQgaXMsIGZvciBhbGwgaW50ZW50cyBhbmQgcHVycG9zZXMsIHRoZSBoZWFydCBvZiB0aGUgOXAgcHJvdG9jb2wgaW50ZXJhY3Rpb24uXG5cbkxldCdzIHF1aWNrbHkgY29uZmlybSBpZiBgcDlfY2xpZW50X3JwY2AgaXMgYSBob3QgcGF0aC4gSXQncyB0aGUgcHJpbWFyeSBSUEMgZnVuY3Rpb24sIGNhbGxlZCBmb3IgYWxtb3N0IGV2ZXJ5IDlwIG9wZXJhdGlvbiwgc28gaXQncyBwcm9iYWJseSBoZWF2aWx5IHVzZWQuIEJ1dCB0aGUgY29yZSBvZiB0aGUgaXNzdWUgc2VlbXMgcmVsYXRlZCB0byBhIHBlbmRpbmcgZmF0YWwgc2lnbmFsLCB3aGljaCBpcyBpbnRyaWd1aW5nLiBGdXp6aW5nIGBwOV9jbGllbnRfcnBjYCBhbmQgYHA5X2NsaWVudF96Y19ycGNgIHNvdW5kcyBsaWtlIGEgcmVhc29uYWJsZSBhcHByb2FjaCBnaXZlbiB0aGUgc2lnbmFsLXJlbGF0ZWQgbmF0dXJlIG9mIHRoaXMgYnVnLlxuXG5Nb3Jlb3ZlciwgYHA5X3JlYWRfd29ya2AgaXMgY3J1Y2lhbCBhcyBpdCBoYW5kbGVzIHRoZSByZXBsaWVzLiBXZSBkZWZpbml0ZWx5IG5lZWQgdG8gY2hlY2sgdGhhdCBvdXQsIGVzcGVjaWFsbHkgaW4gYG5ldC85cC90cmFuc19mZC5jYC4gU28gbGV0J3MgZm9jdXMgb24gdGhhdCBhcmVhIGZvciBub3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY0MjcsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTI6MDA6MzEuODAxMjI0MTMyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTk4MjU1NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicDlfcmVhZF93b3JrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC85cC90cmFuc19mZC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC85cC90cmFuc19mZC5jPTIxNj1zdGF0aWMgaW50IHA5X2ZkX3JlYWQoc3RydWN0IHA5X2NsaWVudCAqY2xpZW50LCB2b2lkICp2LCBpbnQgbGVuKVxcbi0tXFxubmV0LzlwL3RyYW5zX2ZkLmMtMjM4LS8qKlxcbm5ldC85cC90cmFuc19mZC5jOjIzOTogKiBwOV9yZWFkX3dvcmsgLSBjYWxsZWQgd2hlbiB0aGVyZSBpcyBzb21lIGRhdGEgdG8gYmUgcmVhZCBmcm9tIGEgdHJhbnNwb3J0XFxubmV0LzlwL3RyYW5zX2ZkLmMtMjQwLSAqIEB3b3JrOiBjb250YWluZXIgb2Ygd29yayB0byBiZSBkb25lXFxuLS1cXG5uZXQvOXAvdHJhbnNfZmQuYy0yNDMtXFxubmV0LzlwL3RyYW5zX2ZkLmM6MjQ0OnN0YXRpYyB2b2lkIHA5X3JlYWRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxubmV0LzlwL3RyYW5zX2ZkLmMtMjQ1LXtcXG4tLVxcbm5ldC85cC90cmFuc19mZC5jPTU1ND1zdGF0aWMgdm9pZCBwOV9jb25uX2NyZWF0ZShzdHJ1Y3QgcDlfY2xpZW50ICpjbGllbnQpXFxuLS1cXG5uZXQvOXAvdHJhbnNfZmQuYy01NjctXFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNm0tXFx1MDAzZXVuc2VudF9yZXFfbGlzdCk7XFxubmV0LzlwL3RyYW5zX2ZkLmM6NTY4OlxcdElOSVRfV09SSyhcXHUwMDI2bS1cXHUwMDNlcnEsIHA5X3JlYWRfd29yayk7XFxubmV0LzlwL3RyYW5zX2ZkLmMtNTY5LVxcdElOSVRfV09SSyhcXHUwMDI2bS1cXHUwMDNld3EsIHA5X3dyaXRlX3dvcmspO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQxMjowMDozMi4zMjEwNTYwOTFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI4NTc3NDkyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgUG90ZW50aWFsIEZ1enppbmcgVGFyZ2V0cyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIGZ1bmN0aW9ucyB3aXRoaW4gdGhlIGNvbnRleHQgb2YgZnV6emluZywgc3BlY2lmaWNhbGx5IHdpdGggc3l6a2FsbGVyLiBUaGUgaW1tZWRpYXRlIHRob3VnaHQgaXMgdGhhdCBgcDlfcmVhZF93b3JrYCBpcyBzdGF0aWMsIHdoaWNoIGlzIHdvcnRoIG5vdGluZy4gVGhlIG1haW4gY2FuZGlkYXRlcyBmb3IgdGFyZ2V0cyBhcHBlYXIgdG8gYmUgYHA5X2NsaWVudF9ycGNgLCBgcDlfY2xpZW50X3pjX3JwY2AsIGFuZCBgcDlfcmVhZF93b3JrYC5cblxuU2luY2UgYHA5X2NsaWVudF9hYm9ydGAgaXMgYWxzbyBzdGF0aWMsIGFuZCBzeXprYWxsZXIgKmNhbiogc29tZXRpbWVzIHRhcmdldCBzdGF0aWMgZnVuY3Rpb25zLCBlc3BlY2lhbGx5IGlmIHRoZSBkZWJ1ZyBpbmZvIGlzIHByZXNlbnQsIGl0J3Mgd29ydGggY29uc2lkZXJpbmcuIFRoZSBjcnVjaWFsIHBvaW50IGhlcmUgaXMgdW5pcXVlbmVzczsgaWYgdGhlIHN0YXRpYyBmdW5jdGlvbiBuYW1lIGlzIHVuaXF1ZSwgdGhlbiBzeXprYWxsZXIgc2hvdWxkIGJlIGFibGUgdG8gaWRlbnRpZnkgaXQgZXZlbiBpZiBpdCdzIHN0YXRpYy4gYHA5X2NsaWVudF9hYm9ydGAgc2VlbXMgbGlrZSBhIHBvdGVudGlhbCB0YXJnZXQgaWYgaXQgKmlzKiB1bmlxdWUuXG5cblNvLCB0aGUgbmV4dCBzdGVwIGlzIGRlZmluaXRlbHkgdG8gdmVyaWZ5IHdoZXRoZXIgb3Igbm90IGBwOV9jbGllbnRfYWJvcnRgJ3MgbmFtZSBpcyBhY3R1YWxseSB1bmlxdWUgd2l0aGluIHRoZSBzY29wZSBvZiB0aGUgcHJvZ3JhbS4gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MjU0LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDEyOjAwOjM2LjYwNjgzMzM5MVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTMxNzU5ODI3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwOV9jbGllbnRfYWJvcnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC85cC9jbGllbnQuYz01MDI9c3RhdGljIHN0cnVjdCBwOV9yZXFfdCAqcDlfY2xpZW50X3ByZXBhcmVfcmVxKHN0cnVjdCBwOV9jbGllbnQgKmMsXFxuLS1cXG5uZXQvOXAvY2xpZW50LmMtNTQwLVxcbm5ldC85cC9jbGllbnQuYzo1NDE6c3RhdGljIHZvaWQgcDlfY2xpZW50X2Fib3J0KHN0cnVjdCBwOV9jbGllbnQgKmMsIHN0cnVjdCBwOV9yZXFfdCAqcmVxKVxcbm5ldC85cC9jbGllbnQuYy01NDIte1xcbi0tXFxubmV0LzlwL2NsaWVudC5jPTU2Nz1wOV9jbGllbnRfcnBjKHN0cnVjdCBwOV9jbGllbnQgKmMsIGludDhfdCB0eXBlLCBjb25zdCBjaGFyICpmbXQsIC4uLilcXG4tLVxcbm5ldC85cC9jbGllbnQuYy02MzgtXFx0XFx0XFx0cDlfZGVidWcoUDlfREVCVUdfTVVYLCBcXFwiZmF0YWwgc2lnbmFsOiBza2lwIGZsdXNoXFxcXG5cXFwiKTtcXG5uZXQvOXAvY2xpZW50LmM6NjM5OlxcdFxcdFxcdHA5X2NsaWVudF9hYm9ydChjLCByZXEpO1xcbm5ldC85cC9jbGllbnQuYy02NDAtXFx0XFx0XFx0aWYgKFJFQURfT05DRShyZXEtXFx1MDAzZXN0YXR1cykgPT0gUkVRX1NUQVRVU19SQ1ZEKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQxMjowMDo0MS45MjQ0Mzc0NjFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzIyMDMzMTE0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSA5cCBDbGllbnQgUGF0Y2gqKlxuXG5Pa2F5LCB0aGlzIHBhdGNoIGlzIGRlZmluaXRlbHkgdW5pcXVlOyBpdCdzIG5vdCBzb21ldGhpbmcgSSd2ZSBzZWVuIGJlZm9yZS4gTGV0IG1lIHNlZS4uLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSByZWxldmFudCBjb25maWdzIGFyZSBlbmFibGVkOiBgTkVUXzlQYCwgYE5FVF85UF9GRGAsIGFuZCBgOVBfRlNgLlxuXG5UaGUgY29yZSBvZiB0aGlzIGNoYW5nZSBzZWVtcyB0byBiZSBhcm91bmQgaG93IHRoZSA5cCBjbGllbnQgYW5kIHRyYW5zcG9ydCBjb2RlIGhhbmRsZXMgZmF0YWwgc2lnbmFscy4gSXQncyBlc3NlbnRpYWxseSBhYm9ydGluZyByZXF1ZXN0cywgcmF0aGVyIHRoYW4gZ2V0dGluZyBzdHVjayB3YWl0aW5nIGZvciBhIGBURkxVU0hgLiBUaGF0J3MgaW50ZXJlc3RpbmcsIGFuZCBxdWl0ZSBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBiYXNlIGNsaWVudCBsb2dpYy4gVGhlIGludHJvZHVjdGlvbiBvZiBgUkVRX1NUQVRVU19BQk9SVEVEYCBpcyB0aGUga2V5LCBhbmQgZnVuY3Rpb25zIGxpa2UgYHA5X2NsaWVudF9ycGNgLCBgcDlfY2xpZW50X3pjX3JwY2AsIGFuZCBgcDlfcmVhZF93b3JrYCBhcmUgYWxsIG1vZGlmaWVkIHRvIGFjY291bnQgZm9yIGl0LiBUaGlzIHJlYWxseSBjYWxscyBmb3IgZnV6emluZy5cblxuTXkgcHJpbWFyeSBmb2N1cyBmb3IgZnV6emluZyB3aWxsIGJlIG9uIHRoZSBmdW5jdGlvbnM6IGBwOV9jbGllbnRfYWJvcnRgLCBgcDlfY2xpZW50X3JwY2AsIGBwOV9jbGllbnRfemNfcnBjYCwgYW5kIGBwOV9yZWFkX3dvcmtgLiBXYWl0IGEgbWludXRlLCBgcDlfY2xpZW50X3JwY2AgYW5kIGBwOV9jbGllbnRfemNfcnBjYCBhcmUgdGhlIHByaW1hcnkgaG90IHBhdGhzIGZvciA5cCBjbGllbnQgaW50ZXJhY3Rpb24uIFRoZXkgYXJlIHRoZSBtYWluIGVudHJ5IHBvaW50cyBmb3IgZnV6emVyIGludGVyYWN0aW9uLiBgcDlfY2xpZW50X2Fib3J0YCBpcyB0aGUgZnVuY3Rpb24gKmFjdHVhbGx5KiBoYW5kbGluZyB0aGUgYWJvcnQgbG9naWMgc3BlY2lmaWNhbGx5LCBhbmQgYHA5X3JlYWRfd29ya2AgaXMgdGhlIHJlcGx5IGhhbmRsZXIsIHNvIEkgbmVlZCB0byBtYWtlIHN1cmUgdG8gaW5jbHVkZSB0aG9zZSB0b28uIEknbGwgbWFrZSBzdXJlIHRvIGdldCBgcDlfY2xpZW50X2Fib3J0YCBhbmQgYHA5X3JlYWRfd29ya2Agb24gdGhlIGxpc3QuXG5cbk5vdywgbGV0IG1lIGp1c3QgY29uZmlybSB0aGF0IGBwOV9jbGllbnRfYWJvcnRgIGlzIHRoZSAqb25seSogbmV3bHkgYWRkZWQgZnVuY3Rpb24uIFllcCwgdGhhdCdzIHRoZSBvbmx5IG9uZS4gT2theSwgbGV0J3MgY2FsbCBpdCBhbmQgc2V0IHRoZSByZXN1bHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3ODk1LCJPdXRwdXRUb2tlbnMiOjE4MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQxMjowMDo0OS4xNDQ3NzA4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQxODIyNjg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfOVBcIixcbiAgICBcIk5FVF85UF9GRFwiLFxuICAgIFwiOVBfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwOV9jbGllbnRfYWJvcnRcIixcbiAgICBcInA5X3JlYWRfd29ya1wiLFxuICAgIFwicDlfY2xpZW50X3JwY1wiLFxuICAgIFwicDlfY2xpZW50X3pjX3JwY1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSA5cCBjbGllbnQgYW5kIHRyYW5zcG9ydCBjb2RlIHRvIGhhbmRsZSBmYXRhbCBzaWduYWxzIGJ5IGFib3J0aW5nIHJlcXVlc3RzIGluc3RlYWQgb2Ygd2FpdGluZyBmb3IgVEZMVVNILiBJdCBpbnRyb2R1Y2VzIGEgbmV3IHJlcXVlc3Qgc3RhdHVzIFJFUV9TVEFUVVNfQUJPUlRFRCBhbmQgbW9kaWZpZXMgcDlfY2xpZW50X3JwYywgcDlfY2xpZW50X3pjX3JwYywgYW5kIHA5X3JlYWRfd29yayB0byBoYW5kbGUgaXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSA5cCBjbGllbnQgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUXzlQXCIsXG4gICAgXCJORVRfOVBfRkRcIixcbiAgICBcIjlQX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicDlfY2xpZW50X2Fib3J0XCIsXG4gICAgXCJwOV9yZWFkX3dvcmtcIixcbiAgICBcInA5X2NsaWVudF9ycGNcIixcbiAgICBcInA5X2NsaWVudF96Y19ycGNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgOXAgY2xpZW50IGFuZCB0cmFuc3BvcnQgY29kZSB0byBoYW5kbGUgZmF0YWwgc2lnbmFscyBieSBhYm9ydGluZyByZXF1ZXN0cyBpbnN0ZWFkIG9mIHdhaXRpbmcgZm9yIFRGTFVTSC4gSXQgaW50cm9kdWNlcyBhIG5ldyByZXF1ZXN0IHN0YXR1cyBSRVFfU1RBVFVTX0FCT1JURUQgYW5kIG1vZGlmaWVzIHA5X2NsaWVudF9ycGMsIHA5X2NsaWVudF96Y19ycGMsIGFuZCBwOV9yZWFkX3dvcmsgdG8gaGFuZGxlIGl0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgOXAgY2xpZW50IGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflownc9kz[1] Phase: Succeeded StartedAt: 2026-07-16 12:01:00 +0000 UTC FinishedAt: 2026-07-16 12:01:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflownc9kz[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-16 12:01:00 +0000 UTC FinishedAt: 2026-07-16 12:01:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflownc9kz[2] Phase: Succeeded StartedAt: 2026-07-16 12:01:00 +0000 UTC FinishedAt: 2026-07-16 14:04:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflownc9kz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_9P","NET_9P_FD","9P_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p9_client_abort","p9_read_work","p9_client_rpc","p9_client_zc_rpc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_9P","NET_9P_FD","9P_FS"],"series_id":"9213aec5-dc39-4a75-b59e-3cbfa4f99e79","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-16 12:01:00 +0000 UTC FinishedAt: 2026-07-16 14:04:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_9P","NET_9P_FD","9P_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p9_client_abort","p9_read_work","p9_client_rpc","p9_client_zc_rpc"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_9P","NET_9P_FD","9P_FS"],"series_id":"9213aec5-dc39-4a75-b59e-3cbfa4f99e79","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflownc9kz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_9P","NET_9P_FD","9P_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p9_client_abort","p9_read_work","p9_client_rpc","p9_client_zc_rpc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_9P","NET_9P_FD","9P_FS"],"series_id":"9213aec5-dc39-4a75-b59e-3cbfa4f99e79","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-16 12:01:00 +0000 UTC FinishedAt: 2026-07-16 12:01:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflownc9kz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_9P","NET_9P_FD","9P_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p9_client_abort","p9_read_work","p9_client_rpc","p9_client_zc_rpc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_9P","NET_9P_FD","9P_FS"],"series_id":"9213aec5-dc39-4a75-b59e-3cbfa4f99e79","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-16 12:01:00 +0000 UTC FinishedAt: 2026-07-16 12:01:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_9P","NET_9P_FD","9P_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflownc9kz/series-workflownc9kz-convert-artifact-363263370/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownc9kz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_9P","NET_9P_FD","9P_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p9_client_abort","p9_read_work","p9_client_rpc","p9_client_zc_rpc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_9P","NET_9P_FD","9P_FS"],"series_id":"9213aec5-dc39-4a75-b59e-3cbfa4f99e79","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-16 12:01:11 +0000 UTC FinishedAt: 2026-07-16 12:38:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflownc9kz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_9P","NET_9P_FD","9P_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p9_client_abort","p9_read_work","p9_client_rpc","p9_client_zc_rpc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_9P","NET_9P_FD","9P_FS"],"series_id":"9213aec5-dc39-4a75-b59e-3cbfa4f99e79","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-16 12:01:11 +0000 UTC FinishedAt: 2026-07-16 12:38:18 +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:*306a7967-18c6-42e7-aace-7dc7f249e47a,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-workflownc9kz/series-workflownc9kz-convert-artifact-363263370/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": "0ae40832-2fdd-49fb-969f-7a57f981ba9c", "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-workflownc9kz/series-workflownc9kz-build-action-1064804472/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownc9kz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_9P","NET_9P_FD","9P_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p9_client_abort","p9_read_work","p9_client_rpc","p9_client_zc_rpc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_9P","NET_9P_FD","9P_FS"],"series_id":"9213aec5-dc39-4a75-b59e-3cbfa4f99e79","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-16 12:01:11 +0000 UTC FinishedAt: 2026-07-16 12:38:08 +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:*306a7967-18c6-42e7-aace-7dc7f249e47a,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-workflownc9kz/series-workflownc9kz-convert-artifact-363263370/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": "0ae40832-2fdd-49fb-969f-7a57f981ba9c", "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-workflownc9kz/series-workflownc9kz-build-action-1064804472/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownc9kz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_9P","NET_9P_FD","9P_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p9_client_abort","p9_read_work","p9_client_rpc","p9_client_zc_rpc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_9P","NET_9P_FD","9P_FS"],"series_id":"9213aec5-dc39-4a75-b59e-3cbfa4f99e79","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-16 12:38:18 +0000 UTC FinishedAt: 2026-07-16 12:38:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflownc9kz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_9P","NET_9P_FD","9P_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p9_client_abort","p9_read_work","p9_client_rpc","p9_client_zc_rpc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_9P","NET_9P_FD","9P_FS"],"series_id":"9213aec5-dc39-4a75-b59e-3cbfa4f99e79","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-16 12:38:18 +0000 UTC FinishedAt: 2026-07-16 12:38:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflownc9kz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_9P","NET_9P_FD","9P_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p9_client_abort","p9_read_work","p9_client_rpc","p9_client_zc_rpc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_9P","NET_9P_FD","9P_FS"],"series_id":"9213aec5-dc39-4a75-b59e-3cbfa4f99e79","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-16 12:38:18 +0000 UTC FinishedAt: 2026-07-16 12:38:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflownc9kz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_9P","NET_9P_FD","9P_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p9_client_abort","p9_read_work","p9_client_rpc","p9_client_zc_rpc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_9P","NET_9P_FD","9P_FS"],"series_id":"9213aec5-dc39-4a75-b59e-3cbfa4f99e79","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-16 12:38:18 +0000 UTC FinishedAt: 2026-07-16 12:38:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_9P","NET_9P_FD","9P_FS"],"series_id":"9213aec5-dc39-4a75-b59e-3cbfa4f99e79","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflownc9kz/series-workflownc9kz-convert-artifact-4242916133/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownc9kz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_9P","NET_9P_FD","9P_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p9_client_abort","p9_read_work","p9_client_rpc","p9_client_zc_rpc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_9P","NET_9P_FD","9P_FS"],"series_id":"9213aec5-dc39-4a75-b59e-3cbfa4f99e79","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-16 12:38:28 +0000 UTC FinishedAt: 2026-07-16 12:40:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflownc9kz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_9P","NET_9P_FD","9P_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p9_client_abort","p9_read_work","p9_client_rpc","p9_client_zc_rpc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_9P","NET_9P_FD","9P_FS"],"series_id":"9213aec5-dc39-4a75-b59e-3cbfa4f99e79","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-16 12:38:28 +0000 UTC FinishedAt: 2026-07-16 12:40:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*0ae40832-2fdd-49fb-969f-7a57f981ba9c,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-workflownc9kz/series-workflownc9kz-build-action-1064804472/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-workflownc9kz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_9P","NET_9P_FD","9P_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p9_client_abort","p9_read_work","p9_client_rpc","p9_client_zc_rpc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_9P","NET_9P_FD","9P_FS"],"series_id":"9213aec5-dc39-4a75-b59e-3cbfa4f99e79","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-16 12:40:31 +0000 UTC FinishedAt: 2026-07-16 12:40:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflownc9kz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_9P","NET_9P_FD","9P_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p9_client_abort","p9_read_work","p9_client_rpc","p9_client_zc_rpc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_9P","NET_9P_FD","9P_FS"],"series_id":"9213aec5-dc39-4a75-b59e-3cbfa4f99e79","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-16 12:40:31 +0000 UTC FinishedAt: 2026-07-16 12:40:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflownc9kz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_9P","NET_9P_FD","9P_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p9_client_abort","p9_read_work","p9_client_rpc","p9_client_zc_rpc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_9P","NET_9P_FD","9P_FS"],"series_id":"9213aec5-dc39-4a75-b59e-3cbfa4f99e79","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-16 12:40:31 +0000 UTC FinishedAt: 2026-07-16 13:06:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflownc9kz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_9P","NET_9P_FD","9P_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p9_client_abort","p9_read_work","p9_client_rpc","p9_client_zc_rpc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_9P","NET_9P_FD","9P_FS"],"series_id":"9213aec5-dc39-4a75-b59e-3cbfa4f99e79","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-16 12:40:31 +0000 UTC FinishedAt: 2026-07-16 13:06:00 +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:*306a7967-18c6-42e7-aace-7dc7f249e47a,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-workflownc9kz/series-workflownc9kz-convert-artifact-4242916133/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": "67e5fb0f-75e2-4270-91c8-b5e7da0d91a0", "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-workflownc9kz/series-workflownc9kz-build-action-2485058417/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownc9kz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_9P","NET_9P_FD","9P_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p9_client_abort","p9_read_work","p9_client_rpc","p9_client_zc_rpc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_9P","NET_9P_FD","9P_FS"],"series_id":"9213aec5-dc39-4a75-b59e-3cbfa4f99e79","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-16 12:40:31 +0000 UTC FinishedAt: 2026-07-16 13:05:50 +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:*306a7967-18c6-42e7-aace-7dc7f249e47a,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-workflownc9kz/series-workflownc9kz-convert-artifact-4242916133/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": "67e5fb0f-75e2-4270-91c8-b5e7da0d91a0", "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-workflownc9kz/series-workflownc9kz-build-action-2485058417/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownc9kz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_9P","NET_9P_FD","9P_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p9_client_abort","p9_read_work","p9_client_rpc","p9_client_zc_rpc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_9P","NET_9P_FD","9P_FS"],"series_id":"9213aec5-dc39-4a75-b59e-3cbfa4f99e79","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-16 13:06:00 +0000 UTC FinishedAt: 2026-07-16 13:06:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflownc9kz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_9P","NET_9P_FD","9P_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p9_client_abort","p9_read_work","p9_client_rpc","p9_client_zc_rpc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_9P","NET_9P_FD","9P_FS"],"series_id":"9213aec5-dc39-4a75-b59e-3cbfa4f99e79","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-16 13:06:00 +0000 UTC FinishedAt: 2026-07-16 13:06:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflownc9kz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_9P","NET_9P_FD","9P_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p9_client_abort","p9_read_work","p9_client_rpc","p9_client_zc_rpc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_9P","NET_9P_FD","9P_FS"],"series_id":"9213aec5-dc39-4a75-b59e-3cbfa4f99e79","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-16 13:06:00 +0000 UTC FinishedAt: 2026-07-16 13:08:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflownc9kz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_9P","NET_9P_FD","9P_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p9_client_abort","p9_read_work","p9_client_rpc","p9_client_zc_rpc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_9P","NET_9P_FD","9P_FS"],"series_id":"9213aec5-dc39-4a75-b59e-3cbfa4f99e79","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-16 13:06:00 +0000 UTC FinishedAt: 2026-07-16 13:07:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*67e5fb0f-75e2-4270-91c8-b5e7da0d91a0,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-workflownc9kz/series-workflownc9kz-build-action-2485058417/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-workflownc9kz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_9P","NET_9P_FD","9P_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p9_client_abort","p9_read_work","p9_client_rpc","p9_client_zc_rpc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_9P","NET_9P_FD","9P_FS"],"series_id":"9213aec5-dc39-4a75-b59e-3cbfa4f99e79","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-16 13:08:08 +0000 UTC FinishedAt: 2026-07-16 14:04:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflownc9kz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_9P","NET_9P_FD","9P_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p9_client_abort","p9_read_work","p9_client_rpc","p9_client_zc_rpc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_9P","NET_9P_FD","9P_FS"],"series_id":"9213aec5-dc39-4a75-b59e-3cbfa4f99e79","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-16 13:08:08 +0000 UTC FinishedAt: 2026-07-16 14:04:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p9_client_abort","p9_read_work","p9_client_rpc","p9_client_zc_rpc"],"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:*0ae40832-2fdd-49fb-969f-7a57f981ba9c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*67e5fb0f-75e2-4270-91c8-b5e7da0d91a0,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-workflownc9kz/series-workflownc9kz-build-action-1064804472/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-workflownc9kz/series-workflownc9kz-build-action-2485058417/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflownc9kz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_9P","NET_9P_FD","9P_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p9_client_abort","p9_read_work","p9_client_rpc","p9_client_zc_rpc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_9P","NET_9P_FD","9P_FS"],"series_id":"9213aec5-dc39-4a75-b59e-3cbfa4f99e79","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-16 13:08:08 +0000 UTC FinishedAt: 2026-07-16 13:08:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflownc9kz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_9P","NET_9P_FD","9P_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p9_client_abort","p9_read_work","p9_client_rpc","p9_client_zc_rpc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_9P","NET_9P_FD","9P_FS"],"series_id":"9213aec5-dc39-4a75-b59e-3cbfa4f99e79","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-16 13:08:08 +0000 UTC FinishedAt: 2026-07-16 13:08:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p9_client_abort","p9_read_work","p9_client_rpc","p9_client_zc_rpc"],"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-workflownc9kz/series-workflownc9kz-convert-artifact-557094826/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownc9kz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_9P","NET_9P_FD","9P_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p9_client_abort","p9_read_work","p9_client_rpc","p9_client_zc_rpc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_9P","NET_9P_FD","9P_FS"],"series_id":"9213aec5-dc39-4a75-b59e-3cbfa4f99e79","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-16 13:08:08 +0000 UTC FinishedAt: 2026-07-16 13:08:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflownc9kz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_9P","NET_9P_FD","9P_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p9_client_abort","p9_read_work","p9_client_rpc","p9_client_zc_rpc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_9P","NET_9P_FD","9P_FS"],"series_id":"9213aec5-dc39-4a75-b59e-3cbfa4f99e79","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-16 13:08:08 +0000 UTC FinishedAt: 2026-07-16 13:08:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflownc9kz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_9P","NET_9P_FD","9P_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p9_client_abort","p9_read_work","p9_client_rpc","p9_client_zc_rpc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_9P","NET_9P_FD","9P_FS"],"series_id":"9213aec5-dc39-4a75-b59e-3cbfa4f99e79","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-16 13:08:08 +0000 UTC FinishedAt: 2026-07-16 13:08:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflownc9kz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_9P","NET_9P_FD","9P_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p9_client_abort","p9_read_work","p9_client_rpc","p9_client_zc_rpc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_9P","NET_9P_FD","9P_FS"],"series_id":"9213aec5-dc39-4a75-b59e-3cbfa4f99e79","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-16 13:08:49 +0000 UTC FinishedAt: 2026-07-16 14:04:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflownc9kz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_9P","NET_9P_FD","9P_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p9_client_abort","p9_read_work","p9_client_rpc","p9_client_zc_rpc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_9P","NET_9P_FD","9P_FS"],"series_id":"9213aec5-dc39-4a75-b59e-3cbfa4f99e79","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-16 13:08:49 +0000 UTC FinishedAt: 2026-07-16 14:04:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*0ae40832-2fdd-49fb-969f-7a57f981ba9c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*67e5fb0f-75e2-4270-91c8-b5e7da0d91a0,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-workflownc9kz/series-workflownc9kz-build-action-1064804472/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-workflownc9kz/series-workflownc9kz-build-action-2485058417/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-workflownc9kz/series-workflownc9kz-convert-artifact-557094826/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,}