Name: series-workfloww6wcv Phase: Running StartedAt: 2026-07-15 01:07:57 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww6wcv[0] Phase: Succeeded StartedAt: 2026-07-15 01:07:57 +0000 UTC FinishedAt: 2026-07-15 01:32:43 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww6wcv[0].run-triage Phase: Succeeded StartedAt: 2026-07-15 01:07:57 +0000 UTC FinishedAt: 2026-07-15 01:32:43 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VHOST_VSOCK" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VHOST_VSOCK" ], "series_id": "48171fe7-e117-4373-a84b-9ad25d68c93c" }, "track": "KASAN", "fuzz": { "focus": [ "kvm", "net" ], "focus_symbols": [ "vhost_workers_free", "vhost_vsock_start", "vhost_vsock_stop", "vhost_vsock_reset_owner", "vhost_vsock_drop_backends", "vhost_vsock_dev_ioctl" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDAxOjMxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZIT1NUX1ZTT0NLJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dmhvc3Rfd29ya2Vyc19mcmVlJiMzNDssCiAgICAmIzM0O3Zob3N0X3Zzb2NrX3N0YXJ0JiMzNDssCiAgICAmIzM0O3Zob3N0X3Zzb2NrX3N0b3AmIzM0OywKICAgICYjMzQ7dmhvc3RfdnNvY2tfcmVzZXRfb3duZXImIzM0OywKICAgICYjMzQ7dmhvc3RfdnNvY2tfZHJvcF9iYWNrZW5kcyYjMzQ7LAogICAgJiMzNDt2aG9zdF92c29ja19kZXZfaW9jdGwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHZob3N0IHZzb2NrIGRyaXZlciB0byBoYW5kbGUgdGhlIFZIT1NUX1JFU0VUX09XTkVSIGlvY3RsLCBmaXhlcyB3b3JrZXIgZnJlZWluZyBsb2dpYyBpbiB0aGUgdmhvc3QgY29yZSwgYW5kIGNoYW5nZXMgdGhlIHBhY2tldCBzZW5kaW5nIGxvZ2ljIHRvIHdhaXQgZm9yIHRoZSBkZXZpY2UgdG8gYmUgc3RhcnRlZC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgY29udHJvbCBhbmQgZGF0YSBwYXRocyBvZiB0aGUgdmhvc3QgdnNvY2sgZHJpdmVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDAxOjMxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMWY1ZTVjZTJhZmIzN2VhZTFhZDM1MzA2MGY3MzVmN2U3MTJiOWMwZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDE1IDAxOjMxOjUzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmhvc3Qvdmhvc3QuYyBiL2RyaXZlcnMvdmhvc3Qvdmhvc3QuY1xuaW5kZXggNGM1MjViM2UxNmVhZDguLjBkMTQxNGQ0MGY0ZTcyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy92aG9zdC92aG9zdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3Zob3N0L3Zob3N0LmNcbkBAIC03MjksNiAmIzQzOzcyOSwyMSBAQCBzdGF0aWMgdm9pZCB2aG9zdF93b3JrZXJzX2ZyZWUoc3RydWN0IHZob3N0X2RldiAqZGV2KVxuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgZGV2LVx1MDAzZW52cXM7IGkmIzQzOyYjNDM7KVxuIFx0XHRyY3VfYXNzaWduX3BvaW50ZXIoZGV2LVx1MDAzZXZxc1tpXS1cdTAwM2V3b3JrZXIsIE5VTEwpO1xuJiM0MztcbiYjNDM7XHQvKlxuJiM0MztcdCAqIHZob3N0X3ZxX3dvcmtfcXVldWUoKSByZWFkcyB2cS1cdTAwM2V3b3JrZXIgdW5kZXIgcmN1X3JlYWRfbG9jaygpLCBzbyBhXG4mIzQzO1x0ICogY2FsbGVyIHRoYXQgZmV0Y2hlZCBhIHdvcmtlciBiZWZvcmUgd2UgY2xlYXJlZCB0aGUgcG9pbnRlcnMgYWJvdmVcbiYjNDM7XHQgKiBtYXkgc3RpbGwgYmUgYWJvdXQgdG8gcXVldWUgd29yayBvbiBpdC4gIFdhaXQgZm9yIHRob3NlIFJDVSByZWFkZXJzXG4mIzQzO1x0ICogdG8gZmluaXNoIGJlZm9yZSBmcmVlaW5nIHRoZSB3b3JrZXIsIHRoZW4gcnVuIHdoYXRldmVyIHRoZXkgcXVldWVkXG4mIzQzO1x0ICogc28gbm90aGluZyBpcyBsZWZ0IHdpdGggVkhPU1RfV09SS19RVUVVRUQgc2V0LiAgTWlycm9yc1xuJiM0MztcdCAqIHZob3N0X3dvcmtlcl9raWxsZWQoKS5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAoIXhhX2VtcHR5KFx1MDAyNmRldi1cdTAwM2V3b3JrZXJfeGEpKSB7XG4mIzQzO1x0XHRzeW5jaHJvbml6ZV9yY3UoKTtcbiYjNDM7XHRcdHhhX2Zvcl9lYWNoKFx1MDAyNmRldi1cdTAwM2V3b3JrZXJfeGEsIGksIHdvcmtlcilcbiYjNDM7XHRcdFx0dmhvc3RfcnVuX3dvcmtfbGlzdCh3b3JrZXIpO1xuJiM0MztcdH1cbiYjNDM7XG4gXHQvKlxuIFx0ICogRnJlZSB0aGUgZGVmYXVsdCB3b3JrZXIgd2UgY3JlYXRlZCBhbmQgY2xlYW51cCB3b3JrZXJzIHVzZXJzcGFjZVxuIFx0ICogY3JlYXRlZCBidXQgY291bGRuJiMzOTt0IGNsZWFuIHVwIChpdCBmb3Jnb3Qgb3IgY3Jhc2hlZCkuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy92aG9zdC92c29jay5jIGIvZHJpdmVycy92aG9zdC92c29jay5jXG5pbmRleCA5YWFhYjZiYjgwNjFjMS4uODZmMjVmZjgwNzIyZDMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3Zob3N0L3Zzb2NrLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdmhvc3QvdnNvY2suY1xuQEAgLTYxLDYgJiM0Mzs2MSw3IEBAIHN0cnVjdCB2aG9zdF92c29jayB7XG4gXG4gXHR1MzIgZ3Vlc3RfY2lkO1xuIFx0Ym9vbCBzZXFwYWNrZXRfYWxsb3c7XG4mIzQzO1x0Ym9vbCBldmVyX3N0YXJ0ZWQ7IC8qIHNldCBvbiBmaXJzdCBTRVRfUlVOTklORygxKTsgbmV2ZXIgY2xlYXJlZCAqL1xuIH07XG4gXG4gc3RhdGljIHUzMiB2aG9zdF90cmFuc3BvcnRfZ2V0X2xvY2FsX2NpZCh2b2lkKVxuQEAgLTMwMiwxNyAmIzQzOzMwMywxMiBAQCB2aG9zdF90cmFuc3BvcnRfc2VuZF9wa3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldCAqbmV0KVxuIFx0XHRyZXR1cm4gLUVOT0RFVjtcbiBcdH1cbiBcbi1cdC8qIEZhc3QtZmFpbCBpZiB0aGUgZ3Vlc3QgaGFzbiYjMzk7dCBlbmFibGVkIHRoZSBSWCB2cSB5ZXQuIFF1ZXVpbmcgdGhlIHBhY2tldFxuLVx0ICogYW5kIG1ha2luZyB0aGUgY2FsbGVyIHdhaXQgaXMgcG9pbnRsZXNzOiBldmVuIGlmIHRoZSBndWVzdCBtYW5hZ2VzIHRvIGluaXRcbi1cdCAqIHdpdGhpbiB0aGUgdGltZW91dCwgaXQmIzM5O2xsIGltbWVkaWF0ZWx5IHJlcGx5IHdpdGggUlNULCBiZWNhdXNlIHRoZXJlJiMzOTtzIG5vXG4tXHQgKiBsaXN0ZW5lciBvbiB0aGUgcG9ydCB5ZXQuXG4tXHQgKlxuLVx0ICogdmhvc3RfdnFfZ2V0X2JhY2tlbmQoKSB3aXRob3V0IHZxLVx1MDAzZW11dGV4IGlzIGFjY2VwdGFibGUgaGVyZTogbG9ja2luZ1xuLVx0ICogdGhlIG11dGV4IHdvdWxkIGJlIHRvbyBleHBlbnNpdmUgaW4gdGhpcyBob3QgcGF0aCwgYW5kIHdlIGFscmVhZHkgaGF2ZVxuLVx0ICogYWxsIHRoZSBvdXRjb21lcyBjb3ZlcmVkOiBpZiB0aGUgYmFja2VuZCBiZWNvbWVzIE5VTEwgcmlnaHQgYWZ0ZXIgdGhlIGNoZWNrLFxuLVx0ICogdmhvc3RfdHJhbnNwb3J0X2RvX3NlbmRfcGt0KCkgd2lsbCBjaGVjayBpdCB1bmRlciB0aGUgbXV0ZXggYW55d2F5LlxuJiM0MztcdC8qIEZhc3QtZmFpbCB1bnRpbCB0aGUgZ3Vlc3QgZmlyc3QgZW5hYmxlcyB0aGUgZGV2aWNlIChTRVRfUlVOTklORygxKSkuXG4mIzQzO1x0ICogQmVmb3JlIHRoYXQgdGhlcmUgaXMgbm8gbGlzdGVuZXIsIHNvIHF1ZXVpbmcgaXMgcG9pbnRsZXNzLlxuJiM0MztcdCAqICYjMzk7ZXZlcl9zdGFydGVkJiMzOTsgaXMgbmV2ZXIgY2xlYXJlZCwgc28gb25jZSB3ZSYjMzk7cmUgdXAgd2Uga2VlcCBxdWV1aW5nXG4mIzQzO1x0ICogYWNyb3NzIGxhdGVyIHN0b3AgLyBDUFItcGF1c2Ugd2luZG93cy5cbiBcdCAqL1xuLVx0aWYgKHVubGlrZWx5KCFkYXRhX3JhY2Uodmhvc3RfdnFfZ2V0X2JhY2tlbmQoXHUwMDI2dnNvY2stXHUwMDNldnFzW1ZTT0NLX1ZRX1JYXSkpKSkge1xuJiM0MztcdGlmICh1bmxpa2VseSghUkVBRF9PTkNFKHZzb2NrLVx1MDAzZWV2ZXJfc3RhcnRlZCkpKSB7XG4gXHRcdHJjdV9yZWFkX3VubG9jaygpO1xuIFx0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIC1FSE9TVFVOUkVBQ0g7XG5AQCAtNjQwLDExICYjNDM7NjM2LDIzIEBAIHN0YXRpYyBpbnQgdmhvc3RfdnNvY2tfc3RhcnQoc3RydWN0IHZob3N0X3Zzb2NrICp2c29jaylcbiBcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnZxLVx1MDAzZW11dGV4KTtcbiBcdH1cbiBcbiYjNDM7XHQvKiBTZXQgJiMzOTtldmVyX3N0YXJ0ZWQmIzM5OyBmbGFnIG9uIHRoZSBmaXJzdCBzdGFydDsgbmV2ZXIgY2xlYXJlZCwgc28gc2VuZF9wa3RcbiYjNDM7XHQgKiBrZWVwcyBxdWV1aW5nIChpbnN0ZWFkIG9mIGZhc3QtZmFpbGluZykgb24gbGF0ZXIgc3RvcCAvIENQUiBwYXVzZXMuXG4mIzQzO1x0ICovXG4mIzQzO1x0V1JJVEVfT05DRSh2c29jay1cdTAwM2VldmVyX3N0YXJ0ZWQsIHRydWUpO1xuJiM0MztcbiBcdC8qIFNvbWUgcGFja2V0cyBtYXkgaGF2ZSBiZWVuIHF1ZXVlZCBiZWZvcmUgdGhlIGRldmljZSB3YXMgc3RhcnRlZCxcbiBcdCAqIGxldCYjMzk7cyBraWNrIHRoZSBzZW5kIHdvcmtlciB0byBzZW5kIHRoZW0uXG4gXHQgKi9cbiBcdHZob3N0X3ZxX3dvcmtfcXVldWUoXHUwMDI2dnNvY2stXHUwMDNldnFzW1ZTT0NLX1ZRX1JYXSwgXHUwMDI2dnNvY2stXHUwMDNlc2VuZF9wa3Rfd29yayk7XG4gXG4mIzQzO1x0LyogVGhlIGd1ZXN0IG1heSBoYXZlIGFkZGVkIFRYIGJ1ZmZlcnMgd2hpbGUgdGhlIGRldmljZSB3YXMgc3RvcHBlZFxuJiM0MztcdCAqIChlLmcuIGFjcm9zcyBWSE9TVF9SRVNFVF9PV05FUikgYW5kIHRoZWlyIGtpY2tzIGdvdCBjb25zdW1lZCBieVxuJiM0MztcdCAqIHRoZSBOVUxMLWJhY2tlbmQgd2luZG93LiAgUmUtc2NhbiB0aGUgVFggVlEsIG1pcnJvcmluZyB0aGUgUlhcbiYjNDM7XHQgKiBzZW5kLXdvcmtlciBraWNrIGFib3ZlLlxuJiM0MztcdCAqL1xuJiM0MztcdHZob3N0X3BvbGxfcXVldWUoXHUwMDI2dnNvY2stXHUwMDNldnFzW1ZTT0NLX1ZRX1RYXS5wb2xsKTtcbiYjNDM7XG4gXHRtdXRleF91bmxvY2soXHUwMDI2dnNvY2stXHUwMDNlZGV2Lm11dGV4KTtcbiBcdHJldHVybiAwO1xuIFxuQEAgLTY2NCw5ICYjNDM7NjcyLDI0IEBAIHN0YXRpYyBpbnQgdmhvc3RfdnNvY2tfc3RhcnQoc3RydWN0IHZob3N0X3Zzb2NrICp2c29jaylcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuLXN0YXRpYyBpbnQgdmhvc3RfdnNvY2tfc3RvcChzdHJ1Y3Qgdmhvc3RfdnNvY2sgKnZzb2NrLCBib29sIGNoZWNrX293bmVyKVxuJiM0MztzdGF0aWMgdm9pZCB2aG9zdF92c29ja19kcm9wX2JhY2tlbmRzKHN0cnVjdCB2aG9zdF92c29jayAqdnNvY2spXG4ge1xuJiM0MztcdHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgKnZxO1xuIFx0c2l6ZV90IGk7XG4mIzQzO1xuJiM0MztcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXHUwMDI2dnNvY2stXHUwMDNlZGV2Lm11dGV4KTtcbiYjNDM7XG4mIzQzO1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRSh2c29jay1cdTAwM2V2cXMpOyBpJiM0MzsmIzQzOykge1xuJiM0MztcdFx0dnEgPSBcdTAwMjZ2c29jay1cdTAwM2V2cXNbaV07XG4mIzQzO1xuJiM0MztcdFx0bXV0ZXhfbG9jayhcdTAwMjZ2cS1cdTAwM2VtdXRleCk7XG4mIzQzO1x0XHR2aG9zdF92cV9zZXRfYmFja2VuZCh2cSwgTlVMTCk7XG4mIzQzO1x0XHRtdXRleF91bmxvY2soXHUwMDI2dnEtXHUwMDNlbXV0ZXgpO1xuJiM0MztcdH1cbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludCB2aG9zdF92c29ja19zdG9wKHN0cnVjdCB2aG9zdF92c29jayAqdnNvY2ssIGJvb2wgY2hlY2tfb3duZXIpXG4mIzQzO3tcbiBcdGludCByZXQgPSAwO1xuIFxuIFx0bXV0ZXhfbG9jayhcdTAwMjZ2c29jay1cdTAwM2VkZXYubXV0ZXgpO1xuQEAgLTY3NywxNCAmIzQzOzcwMCw3IEBAIHN0YXRpYyBpbnQgdmhvc3RfdnNvY2tfc3RvcChzdHJ1Y3Qgdmhvc3RfdnNvY2sgKnZzb2NrLCBib29sIGNoZWNrX293bmVyKVxuIFx0XHRcdGdvdG8gZXJyO1xuIFx0fVxuIFxuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRSh2c29jay1cdTAwM2V2cXMpOyBpJiM0MzsmIzQzOykge1xuLVx0XHRzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSA9IFx1MDAyNnZzb2NrLVx1MDAzZXZxc1tpXTtcbi1cbi1cdFx0bXV0ZXhfbG9jayhcdTAwMjZ2cS1cdTAwM2VtdXRleCk7XG4tXHRcdHZob3N0X3ZxX3NldF9iYWNrZW5kKHZxLCBOVUxMKTtcbi1cdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnZxLVx1MDAzZW11dGV4KTtcbi1cdH1cbi1cbiYjNDM7XHR2aG9zdF92c29ja19kcm9wX2JhY2tlbmRzKHZzb2NrKTtcbiBlcnI6XG4gXHRtdXRleF91bmxvY2soXHUwMDI2dnNvY2stXHUwMDNlZGV2Lm11dGV4KTtcbiBcdHJldHVybiByZXQ7XG5AQCAtNzIwLDYgJiM0Mzs3MzYsNyBAQCBzdGF0aWMgaW50IHZob3N0X3Zzb2NrX2Rldl9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxuIFxuIFx0dnNvY2stXHUwMDNlZ3Vlc3RfY2lkID0gMDsgLyogbm8gQ0lEIGFzc2lnbmVkIHlldCAqL1xuIFx0dnNvY2stXHUwMDNlc2VxcGFja2V0X2FsbG93ID0gZmFsc2U7XG4mIzQzO1x0dnNvY2stXHUwMDNlZXZlcl9zdGFydGVkID0gZmFsc2U7XG4gXG4gXHRhdG9taWNfc2V0KFx1MDAyNnZzb2NrLVx1MDAzZXF1ZXVlZF9yZXBsaWVzLCAwKTtcbiBcbkBAIC04ODYsNiAmIzQzOzkwMywyOSBAQCBzdGF0aWMgaW50IHZob3N0X3Zzb2NrX3NldF9mZWF0dXJlcyhzdHJ1Y3Qgdmhvc3RfdnNvY2sgKnZzb2NrLCB1NjQgZmVhdHVyZXMpXG4gXHRyZXR1cm4gLUVGQVVMVDtcbiB9XG4gXG4mIzQzO3N0YXRpYyBsb25nIHZob3N0X3Zzb2NrX3Jlc2V0X293bmVyKHN0cnVjdCB2aG9zdF92c29jayAqdnNvY2spXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3Qgdmhvc3RfaW90bGIgKnVtZW07XG4mIzQzO1x0bG9uZyBlcnI7XG4mIzQzO1xuJiM0MztcdG11dGV4X2xvY2soXHUwMDI2dnNvY2stXHUwMDNlZGV2Lm11dGV4KTtcbiYjNDM7XHRlcnIgPSB2aG9zdF9kZXZfY2hlY2tfb3duZXIoXHUwMDI2dnNvY2stXHUwMDNlZGV2KTtcbiYjNDM7XHRpZiAoZXJyKVxuJiM0MztcdFx0Z290byBkb25lO1xuJiM0MztcdHVtZW0gPSB2aG9zdF9kZXZfcmVzZXRfb3duZXJfcHJlcGFyZSgpO1xuJiM0MztcdGlmICghdW1lbSkge1xuJiM0MztcdFx0ZXJyID0gLUVOT01FTTtcbiYjNDM7XHRcdGdvdG8gZG9uZTtcbiYjNDM7XHR9XG4mIzQzO1x0dmhvc3RfdnNvY2tfZHJvcF9iYWNrZW5kcyh2c29jayk7XG4mIzQzO1x0dmhvc3RfdnNvY2tfZmx1c2godnNvY2spO1xuJiM0MztcdHZob3N0X2Rldl9zdG9wKFx1MDAyNnZzb2NrLVx1MDAzZWRldik7XG4mIzQzO1x0dmhvc3RfZGV2X3Jlc2V0X293bmVyKFx1MDAyNnZzb2NrLVx1MDAzZWRldiwgdW1lbSk7XG4mIzQzO2RvbmU6XG4mIzQzO1x0bXV0ZXhfdW5sb2NrKFx1MDAyNnZzb2NrLVx1MDAzZWRldi5tdXRleCk7XG4mIzQzO1x0cmV0dXJuIGVycjtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgbG9uZyB2aG9zdF92c29ja19kZXZfaW9jdGwoc3RydWN0IGZpbGUgKmYsIHVuc2lnbmVkIGludCBpb2N0bCxcbiBcdFx0XHRcdCAgdW5zaWduZWQgbG9uZyBhcmcpXG4ge1xuQEAgLTkyOSw2ICYjNDM7OTY5LDggQEAgc3RhdGljIGxvbmcgdmhvc3RfdnNvY2tfZGV2X2lvY3RsKHN0cnVjdCBmaWxlICpmLCB1bnNpZ25lZCBpbnQgaW9jdGwsXG4gXHRcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIFx0XHR2aG9zdF9zZXRfYmFja2VuZF9mZWF0dXJlcyhcdTAwMjZ2c29jay1cdTAwM2VkZXYsIGZlYXR1cmVzKTtcbiBcdFx0cmV0dXJuIDA7XG4mIzQzO1x0Y2FzZSBWSE9TVF9SRVNFVF9PV05FUjpcbiYjNDM7XHRcdHJldHVybiB2aG9zdF92c29ja19yZXNldF9vd25lcih2c29jayk7XG4gXHRkZWZhdWx0OlxuIFx0XHRtdXRleF9sb2NrKFx1MDAyNnZzb2NrLVx1MDAzZWRldi5tdXRleCk7XG4gXHRcdHIgPSB2aG9zdF9kZXZfaW9jdGwoXHUwMDI2dnNvY2stXHUwMDNlZGV2LCBpb2N0bCwgYXJncCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDE6MzE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VkhPU1RfVlNPQ0smIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2aG9zdF93b3JrZXJzX2ZyZWUmIzM0OywKICAgICYjMzQ7dmhvc3RfdnNvY2tfc3RhcnQmIzM0OywKICAgICYjMzQ7dmhvc3RfdnNvY2tfc3RvcCYjMzQ7LAogICAgJiMzNDt2aG9zdF92c29ja19yZXNldF9vd25lciYjMzQ7LAogICAgJiMzNDt2aG9zdF92c29ja19kcm9wX2JhY2tlbmRzJiMzNDssCiAgICAmIzM0O3Zob3N0X3Zzb2NrX2Rldl9pb2N0bCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgdmhvc3QgdnNvY2sgZHJpdmVyIHRvIGhhbmRsZSB0aGUgVkhPU1RfUkVTRVRfT1dORVIgaW9jdGwsIGZpeGVzIHdvcmtlciBmcmVlaW5nIGxvZ2ljIGluIHRoZSB2aG9zdCBjb3JlLCBhbmQgY2hhbmdlcyB0aGUgcGFja2V0IHNlbmRpbmcgbG9naWMgdG8gd2FpdCBmb3IgdGhlIGRldmljZSB0byBiZSBzdGFydGVkLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSBjb250cm9sIGFuZCBkYXRhIHBhdGhzIG9mIHRoZSB2aG9zdCB2c29jayBkcml2ZXIuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDFmNWU1Y2UyYWZiMzdlYWUxYWQzNTMwNjBmNzM1ZjdlNzEyYjljMGYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCAxNSAwMTozMTo1MyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmhvc3Qvdmhvc3QuYyBiL2RyaXZlcnMvdmhvc3Qvdmhvc3QuYwppbmRleCA0YzUyNWIzZTE2ZWFkOC4uMGQxNDE0ZDQwZjRlNzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmhvc3Qvdmhvc3QuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3Zob3N0L3Zob3N0LmMKQEAgLTcyOSw2ICYjNDM7NzI5LDIxIEBAIHN0YXRpYyB2b2lkIHZob3N0X3dvcmtlcnNfZnJlZShzdHJ1Y3Qgdmhvc3RfZGV2ICpkZXYpCiAKIAlmb3IgKGkgPSAwOyBpICZsdDsgZGV2LSZndDtudnFzOyBpJiM0MzsmIzQzOykKIAkJcmN1X2Fzc2lnbl9wb2ludGVyKGRldi0mZ3Q7dnFzW2ldLSZndDt3b3JrZXIsIE5VTEwpOwomIzQzOwomIzQzOwkvKgomIzQzOwkgKiB2aG9zdF92cV93b3JrX3F1ZXVlKCkgcmVhZHMgdnEtJmd0O3dvcmtlciB1bmRlciByY3VfcmVhZF9sb2NrKCksIHNvIGEKJiM0MzsJICogY2FsbGVyIHRoYXQgZmV0Y2hlZCBhIHdvcmtlciBiZWZvcmUgd2UgY2xlYXJlZCB0aGUgcG9pbnRlcnMgYWJvdmUKJiM0MzsJICogbWF5IHN0aWxsIGJlIGFib3V0IHRvIHF1ZXVlIHdvcmsgb24gaXQuICBXYWl0IGZvciB0aG9zZSBSQ1UgcmVhZGVycwomIzQzOwkgKiB0byBmaW5pc2ggYmVmb3JlIGZyZWVpbmcgdGhlIHdvcmtlciwgdGhlbiBydW4gd2hhdGV2ZXIgdGhleSBxdWV1ZWQKJiM0MzsJICogc28gbm90aGluZyBpcyBsZWZ0IHdpdGggVkhPU1RfV09SS19RVUVVRUQgc2V0LiAgTWlycm9ycwomIzQzOwkgKiB2aG9zdF93b3JrZXJfa2lsbGVkKCkuCiYjNDM7CSAqLwomIzQzOwlpZiAoIXhhX2VtcHR5KCZhbXA7ZGV2LSZndDt3b3JrZXJfeGEpKSB7CiYjNDM7CQlzeW5jaHJvbml6ZV9yY3UoKTsKJiM0MzsJCXhhX2Zvcl9lYWNoKCZhbXA7ZGV2LSZndDt3b3JrZXJfeGEsIGksIHdvcmtlcikKJiM0MzsJCQl2aG9zdF9ydW5fd29ya19saXN0KHdvcmtlcik7CiYjNDM7CX0KJiM0MzsKIAkvKgogCSAqIEZyZWUgdGhlIGRlZmF1bHQgd29ya2VyIHdlIGNyZWF0ZWQgYW5kIGNsZWFudXAgd29ya2VycyB1c2Vyc3BhY2UKIAkgKiBjcmVhdGVkIGJ1dCBjb3VsZG4mIzM5O3QgY2xlYW4gdXAgKGl0IGZvcmdvdCBvciBjcmFzaGVkKS4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmhvc3QvdnNvY2suYyBiL2RyaXZlcnMvdmhvc3QvdnNvY2suYwppbmRleCA5YWFhYjZiYjgwNjFjMS4uODZmMjVmZjgwNzIyZDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmhvc3QvdnNvY2suYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3Zob3N0L3Zzb2NrLmMKQEAgLTYxLDYgJiM0Mzs2MSw3IEBAIHN0cnVjdCB2aG9zdF92c29jayB7CiAKIAl1MzIgZ3Vlc3RfY2lkOwogCWJvb2wgc2VxcGFja2V0X2FsbG93OwomIzQzOwlib29sIGV2ZXJfc3RhcnRlZDsgLyogc2V0IG9uIGZpcnN0IFNFVF9SVU5OSU5HKDEpOyBuZXZlciBjbGVhcmVkICovCiB9OwogCiBzdGF0aWMgdTMyIHZob3N0X3RyYW5zcG9ydF9nZXRfbG9jYWxfY2lkKHZvaWQpCkBAIC0zMDIsMTcgJiM0MzszMDMsMTIgQEAgdmhvc3RfdHJhbnNwb3J0X3NlbmRfcGt0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXQgKm5ldCkKIAkJcmV0dXJuIC1FTk9ERVY7CiAJfQogCi0JLyogRmFzdC1mYWlsIGlmIHRoZSBndWVzdCBoYXNuJiMzOTt0IGVuYWJsZWQgdGhlIFJYIHZxIHlldC4gUXVldWluZyB0aGUgcGFja2V0Ci0JICogYW5kIG1ha2luZyB0aGUgY2FsbGVyIHdhaXQgaXMgcG9pbnRsZXNzOiBldmVuIGlmIHRoZSBndWVzdCBtYW5hZ2VzIHRvIGluaXQKLQkgKiB3aXRoaW4gdGhlIHRpbWVvdXQsIGl0JiMzOTtsbCBpbW1lZGlhdGVseSByZXBseSB3aXRoIFJTVCwgYmVjYXVzZSB0aGVyZSYjMzk7cyBubwotCSAqIGxpc3RlbmVyIG9uIHRoZSBwb3J0IHlldC4KLQkgKgotCSAqIHZob3N0X3ZxX2dldF9iYWNrZW5kKCkgd2l0aG91dCB2cS0mZ3Q7bXV0ZXggaXMgYWNjZXB0YWJsZSBoZXJlOiBsb2NraW5nCi0JICogdGhlIG11dGV4IHdvdWxkIGJlIHRvbyBleHBlbnNpdmUgaW4gdGhpcyBob3QgcGF0aCwgYW5kIHdlIGFscmVhZHkgaGF2ZQotCSAqIGFsbCB0aGUgb3V0Y29tZXMgY292ZXJlZDogaWYgdGhlIGJhY2tlbmQgYmVjb21lcyBOVUxMIHJpZ2h0IGFmdGVyIHRoZSBjaGVjaywKLQkgKiB2aG9zdF90cmFuc3BvcnRfZG9fc2VuZF9wa3QoKSB3aWxsIGNoZWNrIGl0IHVuZGVyIHRoZSBtdXRleCBhbnl3YXkuCiYjNDM7CS8qIEZhc3QtZmFpbCB1bnRpbCB0aGUgZ3Vlc3QgZmlyc3QgZW5hYmxlcyB0aGUgZGV2aWNlIChTRVRfUlVOTklORygxKSkuCiYjNDM7CSAqIEJlZm9yZSB0aGF0IHRoZXJlIGlzIG5vIGxpc3RlbmVyLCBzbyBxdWV1aW5nIGlzIHBvaW50bGVzcy4KJiM0MzsJICogJiMzOTtldmVyX3N0YXJ0ZWQmIzM5OyBpcyBuZXZlciBjbGVhcmVkLCBzbyBvbmNlIHdlJiMzOTtyZSB1cCB3ZSBrZWVwIHF1ZXVpbmcKJiM0MzsJICogYWNyb3NzIGxhdGVyIHN0b3AgLyBDUFItcGF1c2Ugd2luZG93cy4KIAkgKi8KLQlpZiAodW5saWtlbHkoIWRhdGFfcmFjZSh2aG9zdF92cV9nZXRfYmFja2VuZCgmYW1wO3Zzb2NrLSZndDt2cXNbVlNPQ0tfVlFfUlhdKSkpKSB7CiYjNDM7CWlmICh1bmxpa2VseSghUkVBRF9PTkNFKHZzb2NrLSZndDtldmVyX3N0YXJ0ZWQpKSkgewogCQlyY3VfcmVhZF91bmxvY2soKTsKIAkJa2ZyZWVfc2tiKHNrYik7CiAJCXJldHVybiAtRUhPU1RVTlJFQUNIOwpAQCAtNjQwLDExICYjNDM7NjM2LDIzIEBAIHN0YXRpYyBpbnQgdmhvc3RfdnNvY2tfc3RhcnQoc3RydWN0IHZob3N0X3Zzb2NrICp2c29jaykKIAkJbXV0ZXhfdW5sb2NrKCZhbXA7dnEtJmd0O211dGV4KTsKIAl9CiAKJiM0MzsJLyogU2V0ICYjMzk7ZXZlcl9zdGFydGVkJiMzOTsgZmxhZyBvbiB0aGUgZmlyc3Qgc3RhcnQ7IG5ldmVyIGNsZWFyZWQsIHNvIHNlbmRfcGt0CiYjNDM7CSAqIGtlZXBzIHF1ZXVpbmcgKGluc3RlYWQgb2YgZmFzdC1mYWlsaW5nKSBvbiBsYXRlciBzdG9wIC8gQ1BSIHBhdXNlcy4KJiM0MzsJICovCiYjNDM7CVdSSVRFX09OQ0UodnNvY2stJmd0O2V2ZXJfc3RhcnRlZCwgdHJ1ZSk7CiYjNDM7CiAJLyogU29tZSBwYWNrZXRzIG1heSBoYXZlIGJlZW4gcXVldWVkIGJlZm9yZSB0aGUgZGV2aWNlIHdhcyBzdGFydGVkLAogCSAqIGxldCYjMzk7cyBraWNrIHRoZSBzZW5kIHdvcmtlciB0byBzZW5kIHRoZW0uCiAJICovCiAJdmhvc3RfdnFfd29ya19xdWV1ZSgmYW1wO3Zzb2NrLSZndDt2cXNbVlNPQ0tfVlFfUlhdLCAmYW1wO3Zzb2NrLSZndDtzZW5kX3BrdF93b3JrKTsKIAomIzQzOwkvKiBUaGUgZ3Vlc3QgbWF5IGhhdmUgYWRkZWQgVFggYnVmZmVycyB3aGlsZSB0aGUgZGV2aWNlIHdhcyBzdG9wcGVkCiYjNDM7CSAqIChlLmcuIGFjcm9zcyBWSE9TVF9SRVNFVF9PV05FUikgYW5kIHRoZWlyIGtpY2tzIGdvdCBjb25zdW1lZCBieQomIzQzOwkgKiB0aGUgTlVMTC1iYWNrZW5kIHdpbmRvdy4gIFJlLXNjYW4gdGhlIFRYIFZRLCBtaXJyb3JpbmcgdGhlIFJYCiYjNDM7CSAqIHNlbmQtd29ya2VyIGtpY2sgYWJvdmUuCiYjNDM7CSAqLwomIzQzOwl2aG9zdF9wb2xsX3F1ZXVlKCZhbXA7dnNvY2stJmd0O3Zxc1tWU09DS19WUV9UWF0ucG9sbCk7CiYjNDM7CiAJbXV0ZXhfdW5sb2NrKCZhbXA7dnNvY2stJmd0O2Rldi5tdXRleCk7CiAJcmV0dXJuIDA7CiAKQEAgLTY2NCw5ICYjNDM7NjcyLDI0IEBAIHN0YXRpYyBpbnQgdmhvc3RfdnNvY2tfc3RhcnQoc3RydWN0IHZob3N0X3Zzb2NrICp2c29jaykKIAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgaW50IHZob3N0X3Zzb2NrX3N0b3Aoc3RydWN0IHZob3N0X3Zzb2NrICp2c29jaywgYm9vbCBjaGVja19vd25lcikKJiM0MztzdGF0aWMgdm9pZCB2aG9zdF92c29ja19kcm9wX2JhY2tlbmRzKHN0cnVjdCB2aG9zdF92c29jayAqdnNvY2spCiB7CiYjNDM7CXN0cnVjdCB2aG9zdF92aXJ0cXVldWUgKnZxOwogCXNpemVfdCBpOwomIzQzOwomIzQzOwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZhbXA7dnNvY2stJmd0O2Rldi5tdXRleCk7CiYjNDM7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBBUlJBWV9TSVpFKHZzb2NrLSZndDt2cXMpOyBpJiM0MzsmIzQzOykgewomIzQzOwkJdnEgPSAmYW1wO3Zzb2NrLSZndDt2cXNbaV07CiYjNDM7CiYjNDM7CQltdXRleF9sb2NrKCZhbXA7dnEtJmd0O211dGV4KTsKJiM0MzsJCXZob3N0X3ZxX3NldF9iYWNrZW5kKHZxLCBOVUxMKTsKJiM0MzsJCW11dGV4X3VubG9jaygmYW1wO3ZxLSZndDttdXRleCk7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCB2aG9zdF92c29ja19zdG9wKHN0cnVjdCB2aG9zdF92c29jayAqdnNvY2ssIGJvb2wgY2hlY2tfb3duZXIpCiYjNDM7ewogCWludCByZXQgPSAwOwogCiAJbXV0ZXhfbG9jaygmYW1wO3Zzb2NrLSZndDtkZXYubXV0ZXgpOwpAQCAtNjc3LDE0ICYjNDM7NzAwLDcgQEAgc3RhdGljIGludCB2aG9zdF92c29ja19zdG9wKHN0cnVjdCB2aG9zdF92c29jayAqdnNvY2ssIGJvb2wgY2hlY2tfb3duZXIpCiAJCQlnb3RvIGVycjsKIAl9CiAKLQlmb3IgKGkgPSAwOyBpICZsdDsgQVJSQVlfU0laRSh2c29jay0mZ3Q7dnFzKTsgaSYjNDM7JiM0MzspIHsKLQkJc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnEgPSAmYW1wO3Zzb2NrLSZndDt2cXNbaV07Ci0KLQkJbXV0ZXhfbG9jaygmYW1wO3ZxLSZndDttdXRleCk7Ci0JCXZob3N0X3ZxX3NldF9iYWNrZW5kKHZxLCBOVUxMKTsKLQkJbXV0ZXhfdW5sb2NrKCZhbXA7dnEtJmd0O211dGV4KTsKLQl9Ci0KJiM0MzsJdmhvc3RfdnNvY2tfZHJvcF9iYWNrZW5kcyh2c29jayk7CiBlcnI6CiAJbXV0ZXhfdW5sb2NrKCZhbXA7dnNvY2stJmd0O2Rldi5tdXRleCk7CiAJcmV0dXJuIHJldDsKQEAgLTcyMCw2ICYjNDM7NzM2LDcgQEAgc3RhdGljIGludCB2aG9zdF92c29ja19kZXZfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKIAogCXZzb2NrLSZndDtndWVzdF9jaWQgPSAwOyAvKiBubyBDSUQgYXNzaWduZWQgeWV0ICovCiAJdnNvY2stJmd0O3NlcXBhY2tldF9hbGxvdyA9IGZhbHNlOwomIzQzOwl2c29jay0mZ3Q7ZXZlcl9zdGFydGVkID0gZmFsc2U7CiAKIAlhdG9taWNfc2V0KCZhbXA7dnNvY2stJmd0O3F1ZXVlZF9yZXBsaWVzLCAwKTsKIApAQCAtODg2LDYgJiM0Mzs5MDMsMjkgQEAgc3RhdGljIGludCB2aG9zdF92c29ja19zZXRfZmVhdHVyZXMoc3RydWN0IHZob3N0X3Zzb2NrICp2c29jaywgdTY0IGZlYXR1cmVzKQogCXJldHVybiAtRUZBVUxUOwogfQogCiYjNDM7c3RhdGljIGxvbmcgdmhvc3RfdnNvY2tfcmVzZXRfb3duZXIoc3RydWN0IHZob3N0X3Zzb2NrICp2c29jaykKJiM0Mzt7CiYjNDM7CXN0cnVjdCB2aG9zdF9pb3RsYiAqdW1lbTsKJiM0MzsJbG9uZyBlcnI7CiYjNDM7CiYjNDM7CW11dGV4X2xvY2soJmFtcDt2c29jay0mZ3Q7ZGV2Lm11dGV4KTsKJiM0MzsJZXJyID0gdmhvc3RfZGV2X2NoZWNrX293bmVyKCZhbXA7dnNvY2stJmd0O2Rldik7CiYjNDM7CWlmIChlcnIpCiYjNDM7CQlnb3RvIGRvbmU7CiYjNDM7CXVtZW0gPSB2aG9zdF9kZXZfcmVzZXRfb3duZXJfcHJlcGFyZSgpOwomIzQzOwlpZiAoIXVtZW0pIHsKJiM0MzsJCWVyciA9IC1FTk9NRU07CiYjNDM7CQlnb3RvIGRvbmU7CiYjNDM7CX0KJiM0MzsJdmhvc3RfdnNvY2tfZHJvcF9iYWNrZW5kcyh2c29jayk7CiYjNDM7CXZob3N0X3Zzb2NrX2ZsdXNoKHZzb2NrKTsKJiM0MzsJdmhvc3RfZGV2X3N0b3AoJmFtcDt2c29jay0mZ3Q7ZGV2KTsKJiM0MzsJdmhvc3RfZGV2X3Jlc2V0X293bmVyKCZhbXA7dnNvY2stJmd0O2RldiwgdW1lbSk7CiYjNDM7ZG9uZToKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7dnNvY2stJmd0O2Rldi5tdXRleCk7CiYjNDM7CXJldHVybiBlcnI7CiYjNDM7fQomIzQzOwogc3RhdGljIGxvbmcgdmhvc3RfdnNvY2tfZGV2X2lvY3RsKHN0cnVjdCBmaWxlICpmLCB1bnNpZ25lZCBpbnQgaW9jdGwsCiAJCQkJICB1bnNpZ25lZCBsb25nIGFyZykKIHsKQEAgLTkyOSw2ICYjNDM7OTY5LDggQEAgc3RhdGljIGxvbmcgdmhvc3RfdnNvY2tfZGV2X2lvY3RsKHN0cnVjdCBmaWxlICpmLCB1bnNpZ25lZCBpbnQgaW9jdGwsCiAJCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAJCXZob3N0X3NldF9iYWNrZW5kX2ZlYXR1cmVzKCZhbXA7dnNvY2stJmd0O2RldiwgZmVhdHVyZXMpOwogCQlyZXR1cm4gMDsKJiM0MzsJY2FzZSBWSE9TVF9SRVNFVF9PV05FUjoKJiM0MzsJCXJldHVybiB2aG9zdF92c29ja19yZXNldF9vd25lcih2c29jayk7CiAJZGVmYXVsdDoKIAkJbXV0ZXhfbG9jaygmYW1wO3Zzb2NrLSZndDtkZXYubXV0ZXgpOwogCQlyID0gdmhvc3RfZGV2X2lvY3RsKCZhbXA7dnNvY2stJmd0O2RldiwgaW9jdGwsIGFyZ3ApOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwMTozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTE4CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMjQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgdmhvc3QtdnNvY2sgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0b3VjaGVzIGBkcml2ZXJzL3Zob3N0L3Zob3N0LmNgIGFuZCBgZHJpdmVycy92aG9zdC92c29jay5jYC4gSXQgbG9va3MgbGlrZSBpdCYjMzk7cyBhZGRpbmcgc29tZSBzdHVmZiB0byBgdmhvc3Rfd29ya2Vyc19mcmVlYCBpbiBgdmhvc3QuY2AsIGFuZCBtYWtpbmcgY2hhbmdlcyB0byBhIGZldyBmdW5jdGlvbnMgaW4gYHZzb2NrLmNgIOKAkyBgdmhvc3RfdnNvY2tfc3RhcnRgLCBgdmhvc3RfdnNvY2tfc3RvcGAsIGB2aG9zdF92c29ja19kZXZfb3BlbmAsIGB2aG9zdF92c29ja19kZXZfaW9jdGxgLCBhbmQgaXQmIzM5O3MgaW50cm9kdWNpbmcgYHZob3N0X3Zzb2NrX3Jlc2V0X293bmVyYCBhcyB3ZWxsLgoKVGhlIGZpcnN0IHRoaW5nIEkgd2FudCB0byBrbm93IGlzLCBpcyB0aGlzIGFjdHVhbGx5IGRvaW5nIGFueXRoaW5nIHVzZWZ1bCBhbmQsIGltcG9ydGFudGx5LCBpcyBpdCAqcmVhY2hhYmxlKj8gRXhhbWluaW5nIHRoZSBgdmhvc3RfdnNvY2tfZGV2X2lvY3RsYCBjaGFuZ2UsIHNwZWNpZmljYWxseSB0aGUgYWRkaXRpb24gb2YgaGFuZGxpbmcgYFZIT1NUX1JFU0VUX09XTkVSYCwgYW5kIHRoZSBjaGFuZ2UgaW4gYHZob3N0X3RyYW5zcG9ydF9zZW5kX3BrdGAgdG8gbGV2ZXJhZ2UgYHZzb2NrLSZndDtldmVyX3N0YXJ0ZWRgIGluc3RlYWQgb2YgY2hlY2tpbmcgdGhlIGJhY2tlbmQsIGNvbmZpcm1zIHRoYXQgaXQgKmlzKiBmdW5jdGlvbmFsIGFuZCBjZXJ0YWlubHkgcmVhY2hhYmxlIHRocm91Z2ggdGhlIHVzdWFsIGlvY3RsIGNhbGxzIG9uIGAvZGV2L3Zob3N0LXZzb2NrYC4gTm8gc3VycHJpc2VzIHRoZXJlLgoKTmV4dCwgSSBuZWVkIHRvIGtub3cgd2hpY2ggY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSByZXF1aXJlZCBmb3IgdGhpcyB0byB3b3JrLiBJIGtub3cgYGRyaXZlcnMvdmhvc3QvdnNvY2suY2AgaXMgY29tcGlsZWQgd2hlbiBgQ09ORklHX1ZIT1NUX1ZTT0NLYCBpcyBlbmFibGVkLCBhbmQgSSYjMzk7bGwgY29uZmlybSB0aGF0IHF1aWNrbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDE6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7VkhPU1RfVlNPQ0smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3Zob3N0L01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmhvc3QvTWFrZWZpbGU9Nj12aG9zdF9zY3NpLXkgOj0gc2NzaS5vXG5kcml2ZXJzL3Zob3N0L01ha2VmaWxlLTctXG5kcml2ZXJzL3Zob3N0L01ha2VmaWxlOjg6b2JqLSQoQ09ORklHX1ZIT1NUX1ZTT0NLKSAmIzQzOz0gdmhvc3RfdnNvY2sub1xuZHJpdmVycy92aG9zdC9NYWtlZmlsZS05LXZob3N0X3Zzb2NrLXkgOj0gdnNvY2sub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDAxOjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ2MDUKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAzOTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTY29wZSBvZiBUaGlzIFBhdGNoKioKCk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdCwgeWVzLCBgQ09ORklHX1ZIT1NUX1ZTT0NLYCBpcyBkZWZpbml0ZWx5IHJlbGV2YW50IGhlcmUsIG5vIHF1ZXN0aW9uIGFib3V0IHRoYXQuIE5vdywgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzIGFuZCBpZGVudGlmeSB0aGUga2V5IGZ1bmN0aW9ucyB0aGF0IHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcuIFdlJiMzOTtyZSBsb29raW5nIGZvciB0aGUgZm9jdXMgc3ltYm9scywgdGhlIG9uZXMgdGhhdCByZXF1aXJlIGNhcmVmdWwgc2NydXRpbnkuCgpJdCBsb29rcyBsaWtlIHRoZSBwYXRjaCBtb2RpZmllcyBhIG51bWJlciBvZiBmdW5jdGlvbnM6IGB2aG9zdF93b3JrZXJzX2ZyZWVgLCBgdmhvc3RfdHJhbnNwb3J0X3NlbmRfcGt0YCwgYHZob3N0X3Zzb2NrX3N0YXJ0YCwgYHZob3N0X3Zzb2NrX2Ryb3BfYmFja2VuZHNgLCBgdmhvc3RfdnNvY2tfc3RvcGAsIGB2aG9zdF92c29ja19kZXZfb3BlbmAsIGB2aG9zdF92c29ja19zZXRfZmVhdHVyZXNgICh3aGljaCBJIHNlZSBpcyBjb250ZXh0LW9ubHkpLCBgdmhvc3RfdnNvY2tfcmVzZXRfb3duZXJgLCBhbmQgYHZob3N0X3Zzb2NrX2Rldl9pb2N0bGAuCgpPa2F5LCBhZnRlciBhIHF1aWNrIHN3ZWVwLCBJIHRoaW5rIHRoZSByZWFsIGZvY3VzIHNob3VsZCBiZSBvbjogYHZob3N0X3dvcmtlcnNfZnJlZWAsIGB2aG9zdF92c29ja19zdGFydGAsIGB2aG9zdF92c29ja19zdG9wYCwgYHZob3N0X3Zzb2NrX3Jlc2V0X293bmVyYCwgYW5kIGB2aG9zdF92c29ja19kZXZfaW9jdGxgLgoKUmlnaHQsIGxldCYjMzk7cyBzZWUsIGB2aG9zdF90cmFuc3BvcnRfc2VuZF9wa3RgIGlzIGEgcGFja2V0IHNlbmRlci4gVGhhdCBpcyBhIGhvdCBwYXRoIGZ1bmN0aW9uLCBzbyB3ZSBzaG91bGQgdHJ5IHRvIG1pbmltaXplIGFueSBpbXBhY3QgdGhlcmUuIGB2aG9zdF92c29ja19kZXZfb3BlbmAgaXMganVzdCBpbml0aWFsaXphdGlvbiwgc28gdGhhdCYjMzk7cyBsaWtlbHkgbGVzcyBjcml0aWNhbCwgYW5kIGB2aG9zdF92c29ja19kcm9wX2JhY2tlbmRzYCBpcyBqdXN0IGEgaGVscGVyIGZ1bmN0aW9uIHRoYXQmIzM5O3MgY2FsbGVkIGZyb20gYHZob3N0X3Zzb2NrX3N0b3BgIGFuZCBgdmhvc3RfdnNvY2tfcmVzZXRfb3duZXJgLgoKQWxyaWdodCwgbGV0JiMzOTtzIGRvdWJsZS1jaGVjayB0aGUgcG90ZW50aWFsIGZvciBwZXJmb3JtYW5jZSBpbXBhY3QuIGB2aG9zdF93b3JrZXJzX2ZyZWVgIGlzIGNhbGxlZCB3aGVuIHRoZSB2aG9zdCBkZXZpY2UgaXMgZnJlZWQsIHdoaWNoIHN1Z2dlc3RzIGl0IGlzbiYjMzk7dCBvbiBhIGhvdCBwYXRoLiBTbywgYHZob3N0X3Zzb2NrX3N0YXJ0YCwgYHZob3N0X3Zzb2NrX3N0b3BgLCBgdmhvc3RfdnNvY2tfcmVzZXRfb3duZXJgLCBhbmQgYHZob3N0X3Zzb2NrX2Rldl9pb2N0bGAgYXBwZWFyIHRvIGJlIGNvbnRyb2wgcGF0aCBmdW5jdGlvbnMuIE1ha2VzIHNlbnNlLiBKdXN0IHRvIGJlIGNvbXBsZXRlbHkgc3VyZSwgSSYjMzk7bGwgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBgdmhvc3Rfd29ya2Vyc19mcmVlYCBmdW5jdGlvbiBpbiBgZHJpdmVycy92aG9zdC92aG9zdC5jYCwganVzdCB0byBjb25maXJtIG15IGluaXRpYWwgYXNzZXNzbWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwMTozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2aG9zdF93b3JrZXJzX2ZyZWUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3Zob3N0L3Zob3N0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC92aG9zdC5jPTcxMD1zdGF0aWMgdm9pZCB2aG9zdF93b3JrZXJfZGVzdHJveShzdHJ1Y3Qgdmhvc3RfZGV2ICpkZXYsXG4tLVxuZHJpdmVycy92aG9zdC92aG9zdC5jLTcyMS1cbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYzo3MjI6c3RhdGljIHZvaWQgdmhvc3Rfd29ya2Vyc19mcmVlKHN0cnVjdCB2aG9zdF9kZXYgKmRldilcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYy03MjMte1xuLS1cbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYz0xMjE1PXZvaWQgdmhvc3RfZGV2X2NsZWFudXAoc3RydWN0IHZob3N0X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYy0xMjM4LVx0d2FrZV91cF9pbnRlcnJ1cHRpYmxlX3BvbGwoXHUwMDI2ZGV2LVx1MDAzZXdhaXQsIEVQT0xMSU4gfCBFUE9MTFJETk9STSk7XG5kcml2ZXJzL3Zob3N0L3Zob3N0LmM6MTIzOTpcdHZob3N0X3dvcmtlcnNfZnJlZShkZXYpO1xuZHJpdmVycy92aG9zdC92aG9zdC5jLTEyNDAtXHR2aG9zdF9kZXRhY2hfbW0oZGV2KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwMTozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NzY3CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSB2aG9zdF9kZXZfY2xlYW51cCBDYWxsKioKClJpZ2h0LCBzbyB3ZSYjMzk7cmUgZGl2aW5nIGludG8gdGhpcyBgdmhvc3RfZGV2X2NsZWFudXBgIGNhbGwuIFRoYXQgc2lnbmFscyB3ZSYjMzk7cmUgaW4gdGhlIG1pZHN0IG9mIGNsZWFuaW5nIHVwIGEgdmhvc3QgZGV2aWNlLCB3aGljaCBjb3VsZCBpbmRpY2F0ZSBhIHNodXRkb3duLCBhIHJlc2V0LCBvciBzb21lIG90aGVyIGRldmljZS1sZXZlbCB0ZWFyZG93bi4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gcGlucG9pbnQgdGhlIGV4YWN0IGNvbnRleHQgYW5kIHdoYXQgY29tcG9uZW50cyBhcmUgYmVpbmcgbWFuYWdlZCBkdXJpbmcgdGhpcyBjbGVhbnVwLiBHaXZlbiB0aGF0IHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggdmhvc3QgYW5kIHRoYXQgdnNvY2sgaXMgdGhlIHRvcGljLCBteSBpbml0aWFsIHJlYWN0aW9uIGlzIHRvIGludmVzdGlnYXRlIHRoZSB2c29jay1zcGVjaWZpYyBjbGVhbnVwIHJvdXRpbmVzLiBJ4oCZbGwgaW1tZWRpYXRlbHkgaGVhZCBvdmVyIHRvIGBkcml2ZXJzL3Zob3N0L3Zzb2NrLmNgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgY2xlYW51cCBsb2dpYyB1c2VkIHdpdGggYSB2aG9zdCBkZXZpY2UuIFRoZSBmdW5jdGlvbiBgdmhvc3RfdnNvY2tfcmVzZXRfb3duZXJgIHNvdW5kcyBsaWtlIGEga2V5IGZ1bmN0aW9uIHRvIGV4cGxvcmUuIEkgd2FudCB0byBzZWUgaG93IHRoZSB2aG9zdCB2c29jayBvd25lciBpcyByZXNldCBoZXJlIGJlY2F1c2UgaXQgaXMgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGhvbGRpbmcgdGhlIGtleSB0byBob3cgdGhlIHZzb2NrIGRldmljZSBpcyByZWxlYXNlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGZ1bmN0aW9uIGRvZXMgZHVyaW5nIGB2aG9zdF9kZXZfY2xlYW51cGAgc2luY2UgaXQgY291bGQgZGV0ZXJtaW5lIHRoZSByZXNvdXJjZSByZWxlYXNlLCBzdGF0ZSBjaGFuZ2VzLCBvciBvdGhlciBrZXkgY2xlYW51cCBzdGVwcyB0aGF0IGFyZSBwYXJ0IG9mIHRoZSBwcm9jZXNzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDAxOjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Zob3N0X3Zzb2NrX3Jlc2V0X293bmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC92c29jay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmhvc3QvdnNvY2suYz04NzE9c3RhdGljIGludCB2aG9zdF92c29ja19zZXRfZmVhdHVyZXMoc3RydWN0IHZob3N0X3Zzb2NrICp2c29jaywgdTY0IGZlYXR1cmVzKVxuLS1cbmRyaXZlcnMvdmhvc3QvdnNvY2suYy05MDUtXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmM6OTA2OnN0YXRpYyBsb25nIHZob3N0X3Zzb2NrX3Jlc2V0X293bmVyKHN0cnVjdCB2aG9zdF92c29jayAqdnNvY2spXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmMtOTA3LXtcbi0tXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmM9OTI5PXN0YXRpYyBsb25nIHZob3N0X3Zzb2NrX2Rldl9pb2N0bChzdHJ1Y3QgZmlsZSAqZiwgdW5zaWduZWQgaW50IGlvY3RsLFxuLS1cbmRyaXZlcnMvdmhvc3QvdnNvY2suYy05NzItXHRjYXNlIFZIT1NUX1JFU0VUX09XTkVSOlxuZHJpdmVycy92aG9zdC92c29jay5jOjk3MzpcdFx0cmV0dXJuIHZob3N0X3Zzb2NrX3Jlc2V0X293bmVyKHZzb2NrKTtcbmRyaXZlcnMvdmhvc3QvdnNvY2suYy05NzQtXHRkZWZhdWx0OlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDAxOjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYzNDcKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIE5ldyBGdW5jdGlvbioqCgpBbHJpZ2h0LCBhIG5ldyBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvLCBvZiBjb3Vyc2UsIHVuZGVyc3RhbmQgaXRzIHB1cnBvc2UuIEdpdmVuIHRoZSBjb250ZXh0LCBJJiMzOTttIGFscmVhZHkgYW50aWNpcGF0aW5nIGl0JiMzOTtzIHJlbGF0ZWQgdG8gc29tZSBraW5kIG9mIGNvbm5lY3Rpb24gbWFuYWdlbWVudCB3aXRoaW4gdGhlIHZob3N0X3Zzb2NrIGZyYW1ld29yaywgcHJvYmFibHkgY2xlYW51cCBvciByZXNvdXJjZSBoYW5kbGluZy4gSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byB0aGUgZGV0YWlscywgYnV0IG15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiB0aGUgZnVuY3Rpb24gbmFtZTogYHZob3N0X3Zzb2NrX2Ryb3BfYmFja2VuZHNgLiBUaGUgJiMzNDtkcm9wJiMzNDsgdmVyYiBpbXBsaWVzIHJlbGVhc2luZyBvciBzZXZlcmluZyBjb25uZWN0aW9ucy4gJiMzNDtCYWNrZW5kcyYjMzQ7IGluZGljYXRlcyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIHRoZSB0YXJnZXQgc2lkZSBvZiBhIHZob3N0X3Zzb2NrIGNvbm5lY3Rpb24uIFNvLCBteSBndXQgZmVlbGluZyBpcyB0aGlzIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciBncmFjZWZ1bGx5IHRlYXJpbmcgZG93biB2aG9zdF92c29jayBjb25uZWN0aW9ucyBvciBhc3NvY2lhdGVkIHJlc291cmNlcyBvbiB0aGUgZ3Vlc3Qgc2lkZSBvZiB0aGUgaW50ZXJmYWNlLCBwb3RlbnRpYWxseSBkdXJpbmcgc2h1dGRvd24gb3IgZHVlIHRvIGNvbm5lY3Rpb24gaXNzdWVzLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gbXkgaW5pdGlhbCBoeXBvdGhlc2lzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwMTozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2aG9zdF92c29ja19kcm9wX2JhY2tlbmRzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC92c29jay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmhvc3QvdnNvY2suYz02MDc9c3RhdGljIGludCB2aG9zdF92c29ja19zdGFydChzdHJ1Y3Qgdmhvc3RfdnNvY2sgKnZzb2NrKVxuLS1cbmRyaXZlcnMvdmhvc3QvdnNvY2suYy02NzQtXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmM6Njc1OnN0YXRpYyB2b2lkIHZob3N0X3Zzb2NrX2Ryb3BfYmFja2VuZHMoc3RydWN0IHZob3N0X3Zzb2NrICp2c29jaylcbmRyaXZlcnMvdmhvc3QvdnNvY2suYy02NzYte1xuLS1cbmRyaXZlcnMvdmhvc3QvdnNvY2suYz02OTE9c3RhdGljIGludCB2aG9zdF92c29ja19zdG9wKHN0cnVjdCB2aG9zdF92c29jayAqdnNvY2ssIGJvb2wgY2hlY2tfb3duZXIpXG4tLVxuZHJpdmVycy92aG9zdC92c29jay5jLTcwMi1cbmRyaXZlcnMvdmhvc3QvdnNvY2suYzo3MDM6XHR2aG9zdF92c29ja19kcm9wX2JhY2tlbmRzKHZzb2NrKTtcbmRyaXZlcnMvdmhvc3QvdnNvY2suYy03MDQtZXJyOlxuLS1cbmRyaXZlcnMvdmhvc3QvdnNvY2suYz05MDY9c3RhdGljIGxvbmcgdmhvc3RfdnNvY2tfcmVzZXRfb3duZXIoc3RydWN0IHZob3N0X3Zzb2NrICp2c29jaylcbi0tXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmMtOTE5LVx0fVxuZHJpdmVycy92aG9zdC92c29jay5jOjkyMDpcdHZob3N0X3Zzb2NrX2Ryb3BfYmFja2VuZHModnNvY2spO1xuZHJpdmVycy92aG9zdC92c29jay5jLTkyMS1cdHZob3N0X3Zzb2NrX2ZsdXNoKHZzb2NrKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDE6MzI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjk0MgoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipOZXcgSGVscGVyIEZ1bmN0aW9uIEFuYWx5c2lzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIG5ldyBoZWxwZXIgZnVuY3Rpb24gYW5kIGltbWVkaWF0ZWx5IG5lZWQgdG8gaWRlbnRpZnkgdGhlIGNvcmUgY29tcG9uZW50cyB0aGF0IGhhdmUgYmVlbiBjaGFuZ2VkLCBzbyBJIGNhbiBzZWUgaG93IGl0IGZpdHMgaW50byB0aGUgd2hvbGUgcGljdHVyZS4gVGhlIG1haW4gZm9jdXMgc3ltYm9scyBJJiMzOTttIHNwb3R0aW5nIGFyZTogYHZob3N0X3dvcmtlcnNfZnJlZWAsIGB2aG9zdF92c29ja19zdGFydGAsIGB2aG9zdF92c29ja19zdG9wYCwgYHZob3N0X3Zzb2NrX3Jlc2V0X293bmVyYCwgYW5kIGB2aG9zdF92c29ja19kcm9wX2JhY2tlbmRzYC4gQWgsIHJpZ2h0LCBJIHNlZSB0aGF0IGB2aG9zdF92c29ja19kZXZfaW9jdGxgIGhhcyBhbHNvIGJlZW4gdG91Y2hlZC4gSXQmIzM5O3MgaW1wb3J0YW50IHRvIGJlIHRob3JvdWdoLCBzbyBsZXQmIzM5O3MgYWRkIHRoYXQgdG8gdGhlIGxpc3Qgb2YgaW1wYWN0ZWQgYXJlYXMuCgpOb3csIGJlZm9yZSBJIGRpZyBpbnRvIHRoZSBzcGVjaWZpY3Mgb2YgKndoYXQqIGhhcyBjaGFuZ2VkLCBJIG5lZWQgdG8gY2hlY2sgdGhlIGJyb2FkZXIgY29uZmlndXJhdGlvbiBjb250ZXh0LiBJIGtub3cgdGhlc2UgYHZob3N0X3Zzb2NrYCBlbGVtZW50cyBhcmUgcHJvYmFibHkgYmVoaW5kIGEgZmV3IGNvbmZpZ3MuIExldCBtZSBxdWlja2x5IHZlcmlmeTogYENPTkZJR19WSE9TVF9WU09DS2AgbGlrZWx5IGRlcGVuZHMgb24gYENPTkZJR19WSE9TVGAgYW5kIGBDT05GSUdfVlNPQ0tFVFNgLiBJJiMzOTtsbCB3YW50IHRvIG1ha2Ugc3VyZSB0aGUgYnVpbGQgZW52aXJvbm1lbnQgaXMgc2V0IGFwcHJvcHJpYXRlbHkuIFRvIGNvbmZpcm0sIEkgc2hvdWxkIGNoZWNrIHRoZSBgZHJpdmVycy92aG9zdC9LY29uZmlnYCBmaWxlIHRvIGdldCB0aGUgZnVsbCBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwMTozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVkhPU1RfVlNPQ0smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3Zob3N0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC9LY29uZmlnPTQ2PWNvbmZpZyBWSE9TVF9TQ1NJXG4tLVxuZHJpdmVycy92aG9zdC9LY29uZmlnLTU1LVxuZHJpdmVycy92aG9zdC9LY29uZmlnOjU2OmNvbmZpZyBWSE9TVF9WU09DS1xuZHJpdmVycy92aG9zdC9LY29uZmlnLTU3LVx0dHJpc3RhdGUgXCYjMzQ7dmhvc3QgdmlydGlvLXZzb2NrIGRyaXZlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwMTozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NDcyCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgcHJvY2VzcywgcGxheWluZyB0aGUgcm9sZSBvZiBhbiBleHBlcnQgZGl2aW5nIGludG8gdGhhdCBLY29uZmlnOgoKKipEaXZpbmcgaW50byB0aGUgYFZIT1NUX1ZTT0NLYCBLY29uZmlnKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcyBhbmQgZGlzc2VjdCB0aGlzIEtjb25maWcgZW50cnkgZm9yIGBWSE9TVF9WU09DS2AuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBxdWlja2x5IGRldGVybWluZSBpdHMgZGVwZW5kZW5jaWVzLiBXaGF0IG90aGVyIGZlYXR1cmVzICptdXN0KiBiZSBlbmFibGVkIG9yIGNvbmZpZ3VyZWQgZm9yIHRoaXMgdG8gZXZlbiBzaG93IHVwIGFzIGFuIG9wdGlvbj8gS2VybmVsIG1vZHVsZXMsIGNvcmUgbmV0d29ya2luZyBjb21wb25lbnRzLCB2aXJ0dWFsaXphdGlvbiBmcmFtZXdvcmtzIGxpa2UgS1ZNIG9yIFhlbiDigJMgdGhleSBhcmUgYWxsIHBvc3NpYmlsaXRpZXMgdGhhdCBpbW1lZGlhdGVseSBjb21lIHRvIG1pbmQuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGBkZXBlbmRzIG9uYCBjbGF1c2UsIGFuZCBhbnkgYHNlbGVjdGAgc3RhdGVtZW50cyB0aGF0IG1pZ2h0IGltcGxpY2l0bHkgcHVsbCBpbiBvdGhlciBvcHRpb25zLiBJJiMzOTttIGFsc28ga2Vlbmx5IGludGVyZXN0ZWQgaW4gdGhlIGBoZWxwYCB0ZXh0LiBEb2VzIGl0IGFjY3VyYXRlbHkgYW5kIHN1Y2NpbmN0bHkgZXhwbGFpbiB0aGUgcHVycG9zZSBvZiB0aGlzIG9wdGlvbiwgdGhlIHNjZW5hcmlvcyBpdCB0YXJnZXRzLCBhbmQsIGNydWNpYWxseSwgYW55IHBlcmZvcm1hbmNlIGltcGxpY2F0aW9ucz8gQXJlIHRoZXJlIGFueSBzZWN1cml0eSBjb25zaWRlcmF0aW9ucyBvciBsaW1pdGF0aW9ucyB0aGF0IG5lZWQgaGlnaGxpZ2h0aW5nPyBUaGUgZG9jdW1lbnRhdGlvbiBpcyBrZXkuCgpOZXh0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcmVsYXRpb25zaGlwIHRvIHRoZSBicm9hZGVyIHZob3N0IHN1YnN5c3RlbS4gSXMgaXQgYSBjb3JlIGNvbXBvbmVudCwgYW4gZXh0ZW5zaW9uLCBvciBhIGNvbXBsZXRlbHkgaW5kZXBlbmRlbnQgbW9kdWxlIGxldmVyYWdpbmcgdGhlIHZob3N0IGZyYW1ld29yaz8gSG93IGRvZXMgaXQgaW50ZXJhY3Qgd2l0aCB0aGUgdmlydGlvLXZzb2NrIGRyaXZlcj8gSG93IGFyZSB0aGV5IGludGVncmF0ZWQgYW5kIHdoYXQgaXMgdGhlIGRhdGEgZmxvdz8gSXMgaXQgdGllZCBkaXJlY3RseSB0byBhIHNwZWNpZmljIGh5cGVydmlzb3IsIG9yIGRvZXMgaXQgc3RyaXZlIGZvciBwb3J0YWJpbGl0eT8gSSYjMzk7bGwgcHJvYmFibHkgYmUgZ2xhbmNpbmcgYXQgc3Vycm91bmRpbmcgb3B0aW9ucyBpbiB0aGUgS2NvbmZpZyB0byBzZWUgaG93IHRoaW5ncyBhcmUgc3RydWN0dXJlZCBhcmNoaXRlY3R1cmFsbHkuCgpGaW5hbGx5LCBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBhbnkgY29uZGl0aW9uYWwgY29uZmlndXJhdGlvbnMuIElzIHRoaXMgb3B0aW9uIHRhcmdldGVkIGZvciBhIHZlcnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbiwgb3IgaXMgaXQgaW50ZW5kZWQgdG8gYmUgYnJvYWRseSB1c2FibGU/IEFyZSB0aGVyZSBvdGhlciBmZWF0dXJlcyB0aGF0IGFyZSBtdXR1YWxseSBleGNsdXNpdmU/IEkmIzM5O2xsIGFsc28gbG9vayBmb3IgYW55IGRlZmF1bHRzIG9yIGRlZmF1bHQgdmFsdWVzLCBhcyB0aGlzIGhpbnRzIGF0IHRoZSAmIzM0O2hhcHB5IHBhdGgmIzM0OyBvciB0aGUgbW9zdCBjb21tb24gZGVwbG95bWVudCBzY2VuYXJpby4gSSYjMzk7bSBleHBlY3RpbmcgdGhpcyBpcyBwcmV0dHkgbWF0dXJlLCBzbyBJIHdvbiYjMzk7dCBleHBlY3QgdG8gaGF2ZSB0byBtYWtlIGFueSBtYWpvciBjaGFuZ2VzLCBidXQgb25lIG5ldmVyIGtub3dzLiBPdmVyYWxsLCB0aGUgZ29hbCBpcyB0byBmdWxseSBncmFzcCBpdHMgcGxhY2UgaW4gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIGVjb3N5c3RlbSwgaXRzIG9wZXJhdGlvbmFsIGltcGxpY2F0aW9ucywgYW5kIGFueSBwb3RlbnRpYWwgZ290Y2hhcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDE6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3Zob3N0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1NiwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDU2Olx0Y29uZmlnIFZIT1NUX1ZTT0NLXG4gIDU3Olx0XHR0cmlzdGF0ZSBcJiMzNDt2aG9zdCB2aXJ0aW8tdnNvY2sgZHJpdmVyXCYjMzQ7XG4gIDU4Olx0XHRkZXBlbmRzIG9uIFZTT0NLRVRTIFx1MDAyNlx1MDAyNiBFVkVOVEZEXG4gIDU5Olx0XHRzZWxlY3QgVkhPU1RcbiAgNjA6XHRcdHNlbGVjdCBWSVJUSU9fVlNPQ0tFVFNfQ09NTU9OXG4gIDYxOlx0XHRkZWZhdWx0IG5cbiAgNjI6XHRcdGhlbHBcbiAgNjM6XHRcdFRoaXMga2VybmVsIG1vZHVsZSBjYW4gYmUgbG9hZGVkIGluIHRoZSBob3N0IGtlcm5lbCB0byBwcm92aWRlIEFGX1ZTT0NLXG4gIDY0Olx0XHRzb2NrZXRzIGZvciBjb21tdW5pY2F0aW5nIHdpdGggZ3Vlc3RzLiAgVGhlIGd1ZXN0cyBtdXN0IGhhdmUgdGhlXG4gIDY1Olx0XHR2aXJ0aW9fdHJhbnNwb3J0LmtvIGRyaXZlciBsb2FkZWQgdG8gdXNlIHRoZSB2aXJ0aW8tdnNvY2sgZGV2aWNlLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwMTozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MTA0CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqVkhPU1RfVlNPQ0s6IElzIFRoYXQgUmVhbGx5IEFsbCBJIE5lZWQ/KioKCkFscmlnaHQsIHNvIHRoZSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCBgVkhPU1RfVlNPQ0tgIHNob3VsZCBiZSBzdWZmaWNpZW50IGZvciB0aGUgdGFzayBhdCBoYW5kLiBUaGF0JiMzOTtzIGdvb2QsIGVmZmljaWVudCBkZXNpZ24gaXMgYWx3YXlzIHRoZSBnb2FsLiBOb3csIGJlZm9yZSBJIG1vdmUgZm9yd2FyZCwgSSBuZWVkIHRvIGNvbmZpcm0gc29tZXRoaW5nLiBJIG5lZWQgdG8gcXVpY2tseSB2ZXJpZnkgd2hldGhlciB0aGUgYHZob3N0X3dvcmtlcnNfZnJlZWAgZnVuY3Rpb24gaXMgY29ycmVjdGx5IGNvbXBpbGVkIHdoZW4gdGhlIGBWSE9TVGAgZmxhZyBpcyBkZWZpbmVkLiBUaGlzIGlzIGEgY3JpdGljYWwgZGVwZW5kZW5jeSwgYW5kIEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gaXQmIzM5O3MgcHJlc2VudCBhbmQgZnVuY3Rpb25hbCwgb3IgdGhpcyB3aG9sZSBhcHByb2FjaCBpcyBkZWFkIGluIHRoZSB3YXRlci4gR290dGEgY292ZXIgbXkgYmFzZXM7IGJldHRlciB0byBjb25maXJtIG5vdyB0aGFuIGNoYXNlIGRvd24gYSBjb21waWxlLXRpbWUgYnVnIGxhdGVyLiBMZXQmIzM5O3MgZGlnIGludG8gdGhhdCBhbmQgbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgaXMgaW4gaXRzIHBsYWNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwMTozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2aG9zdC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3Zob3N0L01ha2VmaWxlPTE0PXZob3N0X3ZkcGEteSA6PSB2ZHBhLm9cbmRyaXZlcnMvdmhvc3QvTWFrZWZpbGUtMTUtXG5kcml2ZXJzL3Zob3N0L01ha2VmaWxlOjE2Om9iai0kKENPTkZJR19WSE9TVClcdCYjNDM7PSB2aG9zdC5vXG5kcml2ZXJzL3Zob3N0L01ha2VmaWxlLTE3LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwMTozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NDI0CgkJCQkJCQlvdXRwdXQ6IDE2NwoJCQkJCQkJdGhvdWdodHM6IDE5NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB1bmRlcnN0YW5kaW5nLCBmb3JtYXR0ZWQgYXMgcmVxdWVzdGVkOgoKKipWaG9zdC1WU29jayBQYXRjaCBBbmFseXNpcyoqCgpBbHJpZ2h0LCBzbyBgQ09ORklHX1ZIT1NUX1ZTT0NLYCBhdXRvbWF0aWNhbGx5IHNlbGVjdHMgYENPTkZJR19WSE9TVGAsIGdvb2QuIFRoYXQgY29uZmlybXMgYFZIT1NUX1ZTT0NLYCBhcyB0aGUga2V5IGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRvIGZvY3VzIG9uLiBOb3csIGxldCYjMzk7cyBxdWlja2x5IHJldmlldyB0aGUgaW1wb3J0YW50IHN5bWJvbHMgdGhpcyBwYXRjaCB0b3VjaGVzOiBJJiMzOTt2ZSBnb3QgYHZob3N0X3dvcmtlcnNfZnJlZWAsIGB2aG9zdF92c29ja19zdGFydGAsIGB2aG9zdF92c29ja19zdG9wYCwgYHZob3N0X3Zzb2NrX3Jlc2V0X293bmVyYCwgYHZob3N0X3Zzb2NrX2Ryb3BfYmFja2VuZHNgLCBhbmQgYHZob3N0X3Zzb2NrX2Rldl9pb2N0bGAgb24gbXkgcmFkYXIuCgpGcm9tIHdoYXQgSSBjYW4gdGVsbCwgdGhpcyBwYXRjaCBpcyBtYWtpbmcgc29tZSBwcmV0dHkga2V5IGZ1bmN0aW9uYWwgYWRqdXN0bWVudHMgdG8gdGhlIHZob3N0IHZzb2NrIGRyaXZlci4gU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyB0byBiZSBhZGRpbmcgaGFuZGxpbmcgZm9yIHRoZSBgVkhPU1RfUkVTRVRfT1dORVJgIGlvY3RsLCB3aGljaCBsaWtlbHkgaW52b2x2ZXMgc29tZSBjbGVhbnVwIG9yIHN0YXRlIHJlc2V0dGluZy4gVGhlcmUmIzM5O3MgYWxzbyBhIHdvcmtlciBmcmVlaW5nIGZpeCB3aXRoaW4gdGhlIHZob3N0IGNvcmUgLSBwcm9iYWJseSBhZGRyZXNzaW5nIHNvbWUgcmVzb3VyY2UgbWFuYWdlbWVudCBpc3N1ZSwgYW5kIGEgbW9kaWZpY2F0aW9uIHRvIGhvdyBwYWNrZXQgc2VuZGluZyB3b3JrcyB0byBlbnN1cmUgdGhlIGRldmljZSBpcyBmdWxseSBpbml0aWFsaXplZCBiZWZvcmUgdHJhbnNtaXR0aW5nLCB3aGljaCBzZWVtcyBpbXBvcnRhbnQgZm9yIHJlbGlhYmlsaXR5LiBUaGVzZSBjaGFuZ2VzIHNlZW0gdG8gYWZmZWN0IGJvdGggdGhlIGNvbnRyb2wgYW5kIGRhdGEgcGF0aHMgd2l0aGluIHRoZSBkcml2ZXIuIFNvLCB0aGlzIGRlZmluaXRlbHkgd2FycmFudHMgYSBjbG9zZXIgbG9vayBhdCB0aGUgYWN0dWFsIGNvZGUuIExldCYjMzk7cyBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDAxOjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtWSE9TVF9WU09DSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Zob3N0X3dvcmtlcnNfZnJlZSYjMzQ7LAogICAgJiMzNDt2aG9zdF92c29ja19zdGFydCYjMzQ7LAogICAgJiMzNDt2aG9zdF92c29ja19zdG9wJiMzNDssCiAgICAmIzM0O3Zob3N0X3Zzb2NrX3Jlc2V0X293bmVyJiMzNDssCiAgICAmIzM0O3Zob3N0X3Zzb2NrX2Ryb3BfYmFja2VuZHMmIzM0OywKICAgICYjMzQ7dmhvc3RfdnNvY2tfZGV2X2lvY3RsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB2aG9zdCB2c29jayBkcml2ZXIgdG8gaGFuZGxlIHRoZSBWSE9TVF9SRVNFVF9PV05FUiBpb2N0bCwgZml4ZXMgd29ya2VyIGZyZWVpbmcgbG9naWMgaW4gdGhlIHZob3N0IGNvcmUsIGFuZCBjaGFuZ2VzIHRoZSBwYWNrZXQgc2VuZGluZyBsb2dpYyB0byB3YWl0IGZvciB0aGUgZGV2aWNlIHRvIGJlIHN0YXJ0ZWQuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhlIGNvbnRyb2wgYW5kIGRhdGEgcGF0aHMgb2YgdGhlIHZob3N0IHZzb2NrIGRyaXZlci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VkhPU1RfVlNPQ0smIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2aG9zdF93b3JrZXJzX2ZyZWUmIzM0OywKICAgICYjMzQ7dmhvc3RfdnNvY2tfc3RhcnQmIzM0OywKICAgICYjMzQ7dmhvc3RfdnNvY2tfc3RvcCYjMzQ7LAogICAgJiMzNDt2aG9zdF92c29ja19yZXNldF9vd25lciYjMzQ7LAogICAgJiMzNDt2aG9zdF92c29ja19kcm9wX2JhY2tlbmRzJiMzNDssCiAgICAmIzM0O3Zob3N0X3Zzb2NrX2Rldl9pb2N0bCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgdmhvc3QgdnNvY2sgZHJpdmVyIHRvIGhhbmRsZSB0aGUgVkhPU1RfUkVTRVRfT1dORVIgaW9jdGwsIGZpeGVzIHdvcmtlciBmcmVlaW5nIGxvZ2ljIGluIHRoZSB2aG9zdCBjb3JlLCBhbmQgY2hhbmdlcyB0aGUgcGFja2V0IHNlbmRpbmcgbG9naWMgdG8gd2FpdCBmb3IgdGhlIGRldmljZSB0byBiZSBzdGFydGVkLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSBjb250cm9sIGFuZCBkYXRhIHBhdGhzIG9mIHRoZSB2aG9zdCB2c29jayBkcml2ZXIuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwMTozMTo1NC43ODgzNzY5MjhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNjg5OTc1MTkxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWSE9TVF9WU09DS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZob3N0X3dvcmtlcnNfZnJlZVwiLFxuICAgIFwidmhvc3RfdnNvY2tfc3RhcnRcIixcbiAgICBcInZob3N0X3Zzb2NrX3N0b3BcIixcbiAgICBcInZob3N0X3Zzb2NrX3Jlc2V0X293bmVyXCIsXG4gICAgXCJ2aG9zdF92c29ja19kcm9wX2JhY2tlbmRzXCIsXG4gICAgXCJ2aG9zdF92c29ja19kZXZfaW9jdGxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgdmhvc3QgdnNvY2sgZHJpdmVyIHRvIGhhbmRsZSB0aGUgVkhPU1RfUkVTRVRfT1dORVIgaW9jdGwsIGZpeGVzIHdvcmtlciBmcmVlaW5nIGxvZ2ljIGluIHRoZSB2aG9zdCBjb3JlLCBhbmQgY2hhbmdlcyB0aGUgcGFja2V0IHNlbmRpbmcgbG9naWMgdG8gd2FpdCBmb3IgdGhlIGRldmljZSB0byBiZSBzdGFydGVkLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSBjb250cm9sIGFuZCBkYXRhIHBhdGhzIG9mIHRoZSB2aG9zdCB2c29jayBkcml2ZXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDAxOjMxOjU0Ljc4ODM4MzI1OFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjQzMDg0NTkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMWY1ZTVjZTJhZmIzN2VhZTFhZDM1MzA2MGY3MzVmN2U3MTJiOWMwZlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEp1bCAxNSAwMTozMTo1MyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3Zob3N0L3Zob3N0LmMgYi9kcml2ZXJzL3Zob3N0L3Zob3N0LmNcXG5pbmRleCA0YzUyNWIzZTE2ZWFkOC4uMGQxNDE0ZDQwZjRlNzIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy92aG9zdC92aG9zdC5jXFxuKysrIGIvZHJpdmVycy92aG9zdC92aG9zdC5jXFxuQEAgLTcyOSw2ICs3MjksMjEgQEAgc3RhdGljIHZvaWQgdmhvc3Rfd29ya2Vyc19mcmVlKHN0cnVjdCB2aG9zdF9kZXYgKmRldilcXG4gXFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBkZXYtXFx1MDAzZW52cXM7IGkrKylcXG4gXFx0XFx0cmN1X2Fzc2lnbl9wb2ludGVyKGRldi1cXHUwMDNldnFzW2ldLVxcdTAwM2V3b3JrZXIsIE5VTEwpO1xcbitcXG4rXFx0LypcXG4rXFx0ICogdmhvc3RfdnFfd29ya19xdWV1ZSgpIHJlYWRzIHZxLVxcdTAwM2V3b3JrZXIgdW5kZXIgcmN1X3JlYWRfbG9jaygpLCBzbyBhXFxuK1xcdCAqIGNhbGxlciB0aGF0IGZldGNoZWQgYSB3b3JrZXIgYmVmb3JlIHdlIGNsZWFyZWQgdGhlIHBvaW50ZXJzIGFib3ZlXFxuK1xcdCAqIG1heSBzdGlsbCBiZSBhYm91dCB0byBxdWV1ZSB3b3JrIG9uIGl0LiAgV2FpdCBmb3IgdGhvc2UgUkNVIHJlYWRlcnNcXG4rXFx0ICogdG8gZmluaXNoIGJlZm9yZSBmcmVlaW5nIHRoZSB3b3JrZXIsIHRoZW4gcnVuIHdoYXRldmVyIHRoZXkgcXVldWVkXFxuK1xcdCAqIHNvIG5vdGhpbmcgaXMgbGVmdCB3aXRoIFZIT1NUX1dPUktfUVVFVUVEIHNldC4gIE1pcnJvcnNcXG4rXFx0ICogdmhvc3Rfd29ya2VyX2tpbGxlZCgpLlxcbitcXHQgKi9cXG4rXFx0aWYgKCF4YV9lbXB0eShcXHUwMDI2ZGV2LVxcdTAwM2V3b3JrZXJfeGEpKSB7XFxuK1xcdFxcdHN5bmNocm9uaXplX3JjdSgpO1xcbitcXHRcXHR4YV9mb3JfZWFjaChcXHUwMDI2ZGV2LVxcdTAwM2V3b3JrZXJfeGEsIGksIHdvcmtlcilcXG4rXFx0XFx0XFx0dmhvc3RfcnVuX3dvcmtfbGlzdCh3b3JrZXIpO1xcbitcXHR9XFxuK1xcbiBcXHQvKlxcbiBcXHQgKiBGcmVlIHRoZSBkZWZhdWx0IHdvcmtlciB3ZSBjcmVhdGVkIGFuZCBjbGVhbnVwIHdvcmtlcnMgdXNlcnNwYWNlXFxuIFxcdCAqIGNyZWF0ZWQgYnV0IGNvdWxkbid0IGNsZWFuIHVwIChpdCBmb3Jnb3Qgb3IgY3Jhc2hlZCkuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmhvc3QvdnNvY2suYyBiL2RyaXZlcnMvdmhvc3QvdnNvY2suY1xcbmluZGV4IDlhYWFiNmJiODA2MWMxLi44NmYyNWZmODA3MjJkMyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3Zob3N0L3Zzb2NrLmNcXG4rKysgYi9kcml2ZXJzL3Zob3N0L3Zzb2NrLmNcXG5AQCAtNjEsNiArNjEsNyBAQCBzdHJ1Y3Qgdmhvc3RfdnNvY2sge1xcbiBcXG4gXFx0dTMyIGd1ZXN0X2NpZDtcXG4gXFx0Ym9vbCBzZXFwYWNrZXRfYWxsb3c7XFxuK1xcdGJvb2wgZXZlcl9zdGFydGVkOyAvKiBzZXQgb24gZmlyc3QgU0VUX1JVTk5JTkcoMSk7IG5ldmVyIGNsZWFyZWQgKi9cXG4gfTtcXG4gXFxuIHN0YXRpYyB1MzIgdmhvc3RfdHJhbnNwb3J0X2dldF9sb2NhbF9jaWQodm9pZClcXG5AQCAtMzAyLDE3ICszMDMsMTIgQEAgdmhvc3RfdHJhbnNwb3J0X3NlbmRfcGt0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXQgKm5ldClcXG4gXFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuIFxcdH1cXG4gXFxuLVxcdC8qIEZhc3QtZmFpbCBpZiB0aGUgZ3Vlc3QgaGFzbid0IGVuYWJsZWQgdGhlIFJYIHZxIHlldC4gUXVldWluZyB0aGUgcGFja2V0XFxuLVxcdCAqIGFuZCBtYWtpbmcgdGhlIGNhbGxlciB3YWl0IGlzIHBvaW50bGVzczogZXZlbiBpZiB0aGUgZ3Vlc3QgbWFuYWdlcyB0byBpbml0XFxuLVxcdCAqIHdpdGhpbiB0aGUgdGltZW91dCwgaXQnbGwgaW1tZWRpYXRlbHkgcmVwbHkgd2l0aCBSU1QsIGJlY2F1c2UgdGhlcmUncyBub1xcbi1cXHQgKiBsaXN0ZW5lciBvbiB0aGUgcG9ydCB5ZXQuXFxuLVxcdCAqXFxuLVxcdCAqIHZob3N0X3ZxX2dldF9iYWNrZW5kKCkgd2l0aG91dCB2cS1cXHUwMDNlbXV0ZXggaXMgYWNjZXB0YWJsZSBoZXJlOiBsb2NraW5nXFxuLVxcdCAqIHRoZSBtdXRleCB3b3VsZCBiZSB0b28gZXhwZW5zaXZlIGluIHRoaXMgaG90IHBhdGgsIGFuZCB3ZSBhbHJlYWR5IGhhdmVcXG4tXFx0ICogYWxsIHRoZSBvdXRjb21lcyBjb3ZlcmVkOiBpZiB0aGUgYmFja2VuZCBiZWNvbWVzIE5VTEwgcmlnaHQgYWZ0ZXIgdGhlIGNoZWNrLFxcbi1cXHQgKiB2aG9zdF90cmFuc3BvcnRfZG9fc2VuZF9wa3QoKSB3aWxsIGNoZWNrIGl0IHVuZGVyIHRoZSBtdXRleCBhbnl3YXkuXFxuK1xcdC8qIEZhc3QtZmFpbCB1bnRpbCB0aGUgZ3Vlc3QgZmlyc3QgZW5hYmxlcyB0aGUgZGV2aWNlIChTRVRfUlVOTklORygxKSkuXFxuK1xcdCAqIEJlZm9yZSB0aGF0IHRoZXJlIGlzIG5vIGxpc3RlbmVyLCBzbyBxdWV1aW5nIGlzIHBvaW50bGVzcy5cXG4rXFx0ICogJ2V2ZXJfc3RhcnRlZCcgaXMgbmV2ZXIgY2xlYXJlZCwgc28gb25jZSB3ZSdyZSB1cCB3ZSBrZWVwIHF1ZXVpbmdcXG4rXFx0ICogYWNyb3NzIGxhdGVyIHN0b3AgLyBDUFItcGF1c2Ugd2luZG93cy5cXG4gXFx0ICovXFxuLVxcdGlmICh1bmxpa2VseSghZGF0YV9yYWNlKHZob3N0X3ZxX2dldF9iYWNrZW5kKFxcdTAwMjZ2c29jay1cXHUwMDNldnFzW1ZTT0NLX1ZRX1JYXSkpKSkge1xcbitcXHRpZiAodW5saWtlbHkoIVJFQURfT05DRSh2c29jay1cXHUwMDNlZXZlcl9zdGFydGVkKSkpIHtcXG4gXFx0XFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuIFxcdFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRcXHRyZXR1cm4gLUVIT1NUVU5SRUFDSDtcXG5AQCAtNjQwLDExICs2MzYsMjMgQEAgc3RhdGljIGludCB2aG9zdF92c29ja19zdGFydChzdHJ1Y3Qgdmhvc3RfdnNvY2sgKnZzb2NrKVxcbiBcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnZxLVxcdTAwM2VtdXRleCk7XFxuIFxcdH1cXG4gXFxuK1xcdC8qIFNldCAnZXZlcl9zdGFydGVkJyBmbGFnIG9uIHRoZSBmaXJzdCBzdGFydDsgbmV2ZXIgY2xlYXJlZCwgc28gc2VuZF9wa3RcXG4rXFx0ICoga2VlcHMgcXVldWluZyAoaW5zdGVhZCBvZiBmYXN0LWZhaWxpbmcpIG9uIGxhdGVyIHN0b3AgLyBDUFIgcGF1c2VzLlxcbitcXHQgKi9cXG4rXFx0V1JJVEVfT05DRSh2c29jay1cXHUwMDNlZXZlcl9zdGFydGVkLCB0cnVlKTtcXG4rXFxuIFxcdC8qIFNvbWUgcGFja2V0cyBtYXkgaGF2ZSBiZWVuIHF1ZXVlZCBiZWZvcmUgdGhlIGRldmljZSB3YXMgc3RhcnRlZCxcXG4gXFx0ICogbGV0J3Mga2ljayB0aGUgc2VuZCB3b3JrZXIgdG8gc2VuZCB0aGVtLlxcbiBcXHQgKi9cXG4gXFx0dmhvc3RfdnFfd29ya19xdWV1ZShcXHUwMDI2dnNvY2stXFx1MDAzZXZxc1tWU09DS19WUV9SWF0sIFxcdTAwMjZ2c29jay1cXHUwMDNlc2VuZF9wa3Rfd29yayk7XFxuIFxcbitcXHQvKiBUaGUgZ3Vlc3QgbWF5IGhhdmUgYWRkZWQgVFggYnVmZmVycyB3aGlsZSB0aGUgZGV2aWNlIHdhcyBzdG9wcGVkXFxuK1xcdCAqIChlLmcuIGFjcm9zcyBWSE9TVF9SRVNFVF9PV05FUikgYW5kIHRoZWlyIGtpY2tzIGdvdCBjb25zdW1lZCBieVxcbitcXHQgKiB0aGUgTlVMTC1iYWNrZW5kIHdpbmRvdy4gIFJlLXNjYW4gdGhlIFRYIFZRLCBtaXJyb3JpbmcgdGhlIFJYXFxuK1xcdCAqIHNlbmQtd29ya2VyIGtpY2sgYWJvdmUuXFxuK1xcdCAqL1xcbitcXHR2aG9zdF9wb2xsX3F1ZXVlKFxcdTAwMjZ2c29jay1cXHUwMDNldnFzW1ZTT0NLX1ZRX1RYXS5wb2xsKTtcXG4rXFxuIFxcdG11dGV4X3VubG9jayhcXHUwMDI2dnNvY2stXFx1MDAzZWRldi5tdXRleCk7XFxuIFxcdHJldHVybiAwO1xcbiBcXG5AQCAtNjY0LDkgKzY3MiwyNCBAQCBzdGF0aWMgaW50IHZob3N0X3Zzb2NrX3N0YXJ0KHN0cnVjdCB2aG9zdF92c29jayAqdnNvY2spXFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG4gXFxuLXN0YXRpYyBpbnQgdmhvc3RfdnNvY2tfc3RvcChzdHJ1Y3Qgdmhvc3RfdnNvY2sgKnZzb2NrLCBib29sIGNoZWNrX293bmVyKVxcbitzdGF0aWMgdm9pZCB2aG9zdF92c29ja19kcm9wX2JhY2tlbmRzKHN0cnVjdCB2aG9zdF92c29jayAqdnNvY2spXFxuIHtcXG4rXFx0c3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnE7XFxuIFxcdHNpemVfdCBpO1xcbitcXG4rXFx0bG9ja2RlcF9hc3NlcnRfaGVsZChcXHUwMDI2dnNvY2stXFx1MDAzZWRldi5tdXRleCk7XFxuK1xcbitcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQVJSQVlfU0laRSh2c29jay1cXHUwMDNldnFzKTsgaSsrKSB7XFxuK1xcdFxcdHZxID0gXFx1MDAyNnZzb2NrLVxcdTAwM2V2cXNbaV07XFxuK1xcbitcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZ2cS1cXHUwMDNlbXV0ZXgpO1xcbitcXHRcXHR2aG9zdF92cV9zZXRfYmFja2VuZCh2cSwgTlVMTCk7XFxuK1xcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2dnEtXFx1MDAzZW11dGV4KTtcXG4rXFx0fVxcbit9XFxuK1xcbitzdGF0aWMgaW50IHZob3N0X3Zzb2NrX3N0b3Aoc3RydWN0IHZob3N0X3Zzb2NrICp2c29jaywgYm9vbCBjaGVja19vd25lcilcXG4re1xcbiBcXHRpbnQgcmV0ID0gMDtcXG4gXFxuIFxcdG11dGV4X2xvY2soXFx1MDAyNnZzb2NrLVxcdTAwM2VkZXYubXV0ZXgpO1xcbkBAIC02NzcsMTQgKzcwMCw3IEBAIHN0YXRpYyBpbnQgdmhvc3RfdnNvY2tfc3RvcChzdHJ1Y3Qgdmhvc3RfdnNvY2sgKnZzb2NrLCBib29sIGNoZWNrX293bmVyKVxcbiBcXHRcXHRcXHRnb3RvIGVycjtcXG4gXFx0fVxcbiBcXG4tXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUodnNvY2stXFx1MDAzZXZxcyk7IGkrKykge1xcbi1cXHRcXHRzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSA9IFxcdTAwMjZ2c29jay1cXHUwMDNldnFzW2ldO1xcbi1cXG4tXFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2dnEtXFx1MDAzZW11dGV4KTtcXG4tXFx0XFx0dmhvc3RfdnFfc2V0X2JhY2tlbmQodnEsIE5VTEwpO1xcbi1cXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnZxLVxcdTAwM2VtdXRleCk7XFxuLVxcdH1cXG4tXFxuK1xcdHZob3N0X3Zzb2NrX2Ryb3BfYmFja2VuZHModnNvY2spO1xcbiBlcnI6XFxuIFxcdG11dGV4X3VubG9jayhcXHUwMDI2dnNvY2stXFx1MDAzZWRldi5tdXRleCk7XFxuIFxcdHJldHVybiByZXQ7XFxuQEAgLTcyMCw2ICs3MzYsNyBAQCBzdGF0aWMgaW50IHZob3N0X3Zzb2NrX2Rldl9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxcbiBcXG4gXFx0dnNvY2stXFx1MDAzZWd1ZXN0X2NpZCA9IDA7IC8qIG5vIENJRCBhc3NpZ25lZCB5ZXQgKi9cXG4gXFx0dnNvY2stXFx1MDAzZXNlcXBhY2tldF9hbGxvdyA9IGZhbHNlO1xcbitcXHR2c29jay1cXHUwMDNlZXZlcl9zdGFydGVkID0gZmFsc2U7XFxuIFxcbiBcXHRhdG9taWNfc2V0KFxcdTAwMjZ2c29jay1cXHUwMDNlcXVldWVkX3JlcGxpZXMsIDApO1xcbiBcXG5AQCAtODg2LDYgKzkwMywyOSBAQCBzdGF0aWMgaW50IHZob3N0X3Zzb2NrX3NldF9mZWF0dXJlcyhzdHJ1Y3Qgdmhvc3RfdnNvY2sgKnZzb2NrLCB1NjQgZmVhdHVyZXMpXFxuIFxcdHJldHVybiAtRUZBVUxUO1xcbiB9XFxuIFxcbitzdGF0aWMgbG9uZyB2aG9zdF92c29ja19yZXNldF9vd25lcihzdHJ1Y3Qgdmhvc3RfdnNvY2sgKnZzb2NrKVxcbit7XFxuK1xcdHN0cnVjdCB2aG9zdF9pb3RsYiAqdW1lbTtcXG4rXFx0bG9uZyBlcnI7XFxuK1xcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZ2c29jay1cXHUwMDNlZGV2Lm11dGV4KTtcXG4rXFx0ZXJyID0gdmhvc3RfZGV2X2NoZWNrX293bmVyKFxcdTAwMjZ2c29jay1cXHUwMDNlZGV2KTtcXG4rXFx0aWYgKGVycilcXG4rXFx0XFx0Z290byBkb25lO1xcbitcXHR1bWVtID0gdmhvc3RfZGV2X3Jlc2V0X293bmVyX3ByZXBhcmUoKTtcXG4rXFx0aWYgKCF1bWVtKSB7XFxuK1xcdFxcdGVyciA9IC1FTk9NRU07XFxuK1xcdFxcdGdvdG8gZG9uZTtcXG4rXFx0fVxcbitcXHR2aG9zdF92c29ja19kcm9wX2JhY2tlbmRzKHZzb2NrKTtcXG4rXFx0dmhvc3RfdnNvY2tfZmx1c2godnNvY2spO1xcbitcXHR2aG9zdF9kZXZfc3RvcChcXHUwMDI2dnNvY2stXFx1MDAzZWRldik7XFxuK1xcdHZob3N0X2Rldl9yZXNldF9vd25lcihcXHUwMDI2dnNvY2stXFx1MDAzZWRldiwgdW1lbSk7XFxuK2RvbmU6XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2dnNvY2stXFx1MDAzZWRldi5tdXRleCk7XFxuK1xcdHJldHVybiBlcnI7XFxuK31cXG4rXFxuIHN0YXRpYyBsb25nIHZob3N0X3Zzb2NrX2Rldl9pb2N0bChzdHJ1Y3QgZmlsZSAqZiwgdW5zaWduZWQgaW50IGlvY3RsLFxcbiBcXHRcXHRcXHRcXHQgIHVuc2lnbmVkIGxvbmcgYXJnKVxcbiB7XFxuQEAgLTkyOSw2ICs5NjksOCBAQCBzdGF0aWMgbG9uZyB2aG9zdF92c29ja19kZXZfaW9jdGwoc3RydWN0IGZpbGUgKmYsIHVuc2lnbmVkIGludCBpb2N0bCxcXG4gXFx0XFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbiBcXHRcXHR2aG9zdF9zZXRfYmFja2VuZF9mZWF0dXJlcyhcXHUwMDI2dnNvY2stXFx1MDAzZWRldiwgZmVhdHVyZXMpO1xcbiBcXHRcXHRyZXR1cm4gMDtcXG4rXFx0Y2FzZSBWSE9TVF9SRVNFVF9PV05FUjpcXG4rXFx0XFx0cmV0dXJuIHZob3N0X3Zzb2NrX3Jlc2V0X293bmVyKHZzb2NrKTtcXG4gXFx0ZGVmYXVsdDpcXG4gXFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2dnNvY2stXFx1MDAzZWRldi5tdXRleCk7XFxuIFxcdFxcdHIgPSB2aG9zdF9kZXZfaW9jdGwoXFx1MDAyNnZzb2NrLVxcdTAwM2VkZXYsIGlvY3RsLCBhcmdwKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDE6MzE6NTUuNDMyNjIyNTE5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjI1NTQ5NjQ4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWSE9TVF9WU09DS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZob3N0X3dvcmtlcnNfZnJlZVwiLFxuICAgIFwidmhvc3RfdnNvY2tfc3RhcnRcIixcbiAgICBcInZob3N0X3Zzb2NrX3N0b3BcIixcbiAgICBcInZob3N0X3Zzb2NrX3Jlc2V0X293bmVyXCIsXG4gICAgXCJ2aG9zdF92c29ja19kcm9wX2JhY2tlbmRzXCIsXG4gICAgXCJ2aG9zdF92c29ja19kZXZfaW9jdGxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgdmhvc3QgdnNvY2sgZHJpdmVyIHRvIGhhbmRsZSB0aGUgVkhPU1RfUkVTRVRfT1dORVIgaW9jdGwsIGZpeGVzIHdvcmtlciBmcmVlaW5nIGxvZ2ljIGluIHRoZSB2aG9zdCBjb3JlLCBhbmQgY2hhbmdlcyB0aGUgcGFja2V0IHNlbmRpbmcgbG9naWMgdG8gd2FpdCBmb3IgdGhlIGRldmljZSB0byBiZSBzdGFydGVkLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSBjb250cm9sIGFuZCBkYXRhIHBhdGhzIG9mIHRoZSB2aG9zdCB2c29jayBkcml2ZXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMWY1ZTVjZTJhZmIzN2VhZTFhZDM1MzA2MGY3MzVmN2U3MTJiOWMwZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDE1IDAxOjMxOjUzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy92aG9zdC92aG9zdC5jIGIvZHJpdmVycy92aG9zdC92aG9zdC5jXG5pbmRleCA0YzUyNWIzZTE2ZWFkOC4uMGQxNDE0ZDQwZjRlNzIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3Zob3N0L3Zob3N0LmNcbisrKyBiL2RyaXZlcnMvdmhvc3Qvdmhvc3QuY1xuQEAgLTcyOSw2ICs3MjksMjEgQEAgc3RhdGljIHZvaWQgdmhvc3Rfd29ya2Vyc19mcmVlKHN0cnVjdCB2aG9zdF9kZXYgKmRldilcbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGRldi1cdTAwM2VudnFzOyBpKyspXG4gXHRcdHJjdV9hc3NpZ25fcG9pbnRlcihkZXYtXHUwMDNldnFzW2ldLVx1MDAzZXdvcmtlciwgTlVMTCk7XG4rXG4rXHQvKlxuK1x0ICogdmhvc3RfdnFfd29ya19xdWV1ZSgpIHJlYWRzIHZxLVx1MDAzZXdvcmtlciB1bmRlciByY3VfcmVhZF9sb2NrKCksIHNvIGFcbitcdCAqIGNhbGxlciB0aGF0IGZldGNoZWQgYSB3b3JrZXIgYmVmb3JlIHdlIGNsZWFyZWQgdGhlIHBvaW50ZXJzIGFib3ZlXG4rXHQgKiBtYXkgc3RpbGwgYmUgYWJvdXQgdG8gcXVldWUgd29yayBvbiBpdC4gIFdhaXQgZm9yIHRob3NlIFJDVSByZWFkZXJzXG4rXHQgKiB0byBmaW5pc2ggYmVmb3JlIGZyZWVpbmcgdGhlIHdvcmtlciwgdGhlbiBydW4gd2hhdGV2ZXIgdGhleSBxdWV1ZWRcbitcdCAqIHNvIG5vdGhpbmcgaXMgbGVmdCB3aXRoIFZIT1NUX1dPUktfUVVFVUVEIHNldC4gIE1pcnJvcnNcbitcdCAqIHZob3N0X3dvcmtlcl9raWxsZWQoKS5cbitcdCAqL1xuK1x0aWYgKCF4YV9lbXB0eShcdTAwMjZkZXYtXHUwMDNld29ya2VyX3hhKSkge1xuK1x0XHRzeW5jaHJvbml6ZV9yY3UoKTtcbitcdFx0eGFfZm9yX2VhY2goXHUwMDI2ZGV2LVx1MDAzZXdvcmtlcl94YSwgaSwgd29ya2VyKVxuK1x0XHRcdHZob3N0X3J1bl93b3JrX2xpc3Qod29ya2VyKTtcbitcdH1cbitcbiBcdC8qXG4gXHQgKiBGcmVlIHRoZSBkZWZhdWx0IHdvcmtlciB3ZSBjcmVhdGVkIGFuZCBjbGVhbnVwIHdvcmtlcnMgdXNlcnNwYWNlXG4gXHQgKiBjcmVhdGVkIGJ1dCBjb3VsZG4ndCBjbGVhbiB1cCAoaXQgZm9yZ290IG9yIGNyYXNoZWQpLlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmhvc3QvdnNvY2suYyBiL2RyaXZlcnMvdmhvc3QvdnNvY2suY1xuaW5kZXggOWFhYWI2YmI4MDYxYzEuLjg2ZjI1ZmY4MDcyMmQzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy92aG9zdC92c29jay5jXG4rKysgYi9kcml2ZXJzL3Zob3N0L3Zzb2NrLmNcbkBAIC02MSw2ICs2MSw3IEBAIHN0cnVjdCB2aG9zdF92c29jayB7XG4gXG4gXHR1MzIgZ3Vlc3RfY2lkO1xuIFx0Ym9vbCBzZXFwYWNrZXRfYWxsb3c7XG4rXHRib29sIGV2ZXJfc3RhcnRlZDsgLyogc2V0IG9uIGZpcnN0IFNFVF9SVU5OSU5HKDEpOyBuZXZlciBjbGVhcmVkICovXG4gfTtcbiBcbiBzdGF0aWMgdTMyIHZob3N0X3RyYW5zcG9ydF9nZXRfbG9jYWxfY2lkKHZvaWQpXG5AQCAtMzAyLDE3ICszMDMsMTIgQEAgdmhvc3RfdHJhbnNwb3J0X3NlbmRfcGt0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXQgKm5ldClcbiBcdFx0cmV0dXJuIC1FTk9ERVY7XG4gXHR9XG4gXG4tXHQvKiBGYXN0LWZhaWwgaWYgdGhlIGd1ZXN0IGhhc24ndCBlbmFibGVkIHRoZSBSWCB2cSB5ZXQuIFF1ZXVpbmcgdGhlIHBhY2tldFxuLVx0ICogYW5kIG1ha2luZyB0aGUgY2FsbGVyIHdhaXQgaXMgcG9pbnRsZXNzOiBldmVuIGlmIHRoZSBndWVzdCBtYW5hZ2VzIHRvIGluaXRcbi1cdCAqIHdpdGhpbiB0aGUgdGltZW91dCwgaXQnbGwgaW1tZWRpYXRlbHkgcmVwbHkgd2l0aCBSU1QsIGJlY2F1c2UgdGhlcmUncyBub1xuLVx0ICogbGlzdGVuZXIgb24gdGhlIHBvcnQgeWV0LlxuLVx0ICpcbi1cdCAqIHZob3N0X3ZxX2dldF9iYWNrZW5kKCkgd2l0aG91dCB2cS1cdTAwM2VtdXRleCBpcyBhY2NlcHRhYmxlIGhlcmU6IGxvY2tpbmdcbi1cdCAqIHRoZSBtdXRleCB3b3VsZCBiZSB0b28gZXhwZW5zaXZlIGluIHRoaXMgaG90IHBhdGgsIGFuZCB3ZSBhbHJlYWR5IGhhdmVcbi1cdCAqIGFsbCB0aGUgb3V0Y29tZXMgY292ZXJlZDogaWYgdGhlIGJhY2tlbmQgYmVjb21lcyBOVUxMIHJpZ2h0IGFmdGVyIHRoZSBjaGVjayxcbi1cdCAqIHZob3N0X3RyYW5zcG9ydF9kb19zZW5kX3BrdCgpIHdpbGwgY2hlY2sgaXQgdW5kZXIgdGhlIG11dGV4IGFueXdheS5cbitcdC8qIEZhc3QtZmFpbCB1bnRpbCB0aGUgZ3Vlc3QgZmlyc3QgZW5hYmxlcyB0aGUgZGV2aWNlIChTRVRfUlVOTklORygxKSkuXG4rXHQgKiBCZWZvcmUgdGhhdCB0aGVyZSBpcyBubyBsaXN0ZW5lciwgc28gcXVldWluZyBpcyBwb2ludGxlc3MuXG4rXHQgKiAnZXZlcl9zdGFydGVkJyBpcyBuZXZlciBjbGVhcmVkLCBzbyBvbmNlIHdlJ3JlIHVwIHdlIGtlZXAgcXVldWluZ1xuK1x0ICogYWNyb3NzIGxhdGVyIHN0b3AgLyBDUFItcGF1c2Ugd2luZG93cy5cbiBcdCAqL1xuLVx0aWYgKHVubGlrZWx5KCFkYXRhX3JhY2Uodmhvc3RfdnFfZ2V0X2JhY2tlbmQoXHUwMDI2dnNvY2stXHUwMDNldnFzW1ZTT0NLX1ZRX1JYXSkpKSkge1xuK1x0aWYgKHVubGlrZWx5KCFSRUFEX09OQ0UodnNvY2stXHUwMDNlZXZlcl9zdGFydGVkKSkpIHtcbiBcdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4gXHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gLUVIT1NUVU5SRUFDSDtcbkBAIC02NDAsMTEgKzYzNiwyMyBAQCBzdGF0aWMgaW50IHZob3N0X3Zzb2NrX3N0YXJ0KHN0cnVjdCB2aG9zdF92c29jayAqdnNvY2spXG4gXHRcdG11dGV4X3VubG9jayhcdTAwMjZ2cS1cdTAwM2VtdXRleCk7XG4gXHR9XG4gXG4rXHQvKiBTZXQgJ2V2ZXJfc3RhcnRlZCcgZmxhZyBvbiB0aGUgZmlyc3Qgc3RhcnQ7IG5ldmVyIGNsZWFyZWQsIHNvIHNlbmRfcGt0XG4rXHQgKiBrZWVwcyBxdWV1aW5nIChpbnN0ZWFkIG9mIGZhc3QtZmFpbGluZykgb24gbGF0ZXIgc3RvcCAvIENQUiBwYXVzZXMuXG4rXHQgKi9cbitcdFdSSVRFX09OQ0UodnNvY2stXHUwMDNlZXZlcl9zdGFydGVkLCB0cnVlKTtcbitcbiBcdC8qIFNvbWUgcGFja2V0cyBtYXkgaGF2ZSBiZWVuIHF1ZXVlZCBiZWZvcmUgdGhlIGRldmljZSB3YXMgc3RhcnRlZCxcbiBcdCAqIGxldCdzIGtpY2sgdGhlIHNlbmQgd29ya2VyIHRvIHNlbmQgdGhlbS5cbiBcdCAqL1xuIFx0dmhvc3RfdnFfd29ya19xdWV1ZShcdTAwMjZ2c29jay1cdTAwM2V2cXNbVlNPQ0tfVlFfUlhdLCBcdTAwMjZ2c29jay1cdTAwM2VzZW5kX3BrdF93b3JrKTtcbiBcbitcdC8qIFRoZSBndWVzdCBtYXkgaGF2ZSBhZGRlZCBUWCBidWZmZXJzIHdoaWxlIHRoZSBkZXZpY2Ugd2FzIHN0b3BwZWRcbitcdCAqIChlLmcuIGFjcm9zcyBWSE9TVF9SRVNFVF9PV05FUikgYW5kIHRoZWlyIGtpY2tzIGdvdCBjb25zdW1lZCBieVxuK1x0ICogdGhlIE5VTEwtYmFja2VuZCB3aW5kb3cuICBSZS1zY2FuIHRoZSBUWCBWUSwgbWlycm9yaW5nIHRoZSBSWFxuK1x0ICogc2VuZC13b3JrZXIga2ljayBhYm92ZS5cbitcdCAqL1xuK1x0dmhvc3RfcG9sbF9xdWV1ZShcdTAwMjZ2c29jay1cdTAwM2V2cXNbVlNPQ0tfVlFfVFhdLnBvbGwpO1xuK1xuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnZzb2NrLVx1MDAzZWRldi5tdXRleCk7XG4gXHRyZXR1cm4gMDtcbiBcbkBAIC02NjQsOSArNjcyLDI0IEBAIHN0YXRpYyBpbnQgdmhvc3RfdnNvY2tfc3RhcnQoc3RydWN0IHZob3N0X3Zzb2NrICp2c29jaylcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuLXN0YXRpYyBpbnQgdmhvc3RfdnNvY2tfc3RvcChzdHJ1Y3Qgdmhvc3RfdnNvY2sgKnZzb2NrLCBib29sIGNoZWNrX293bmVyKVxuK3N0YXRpYyB2b2lkIHZob3N0X3Zzb2NrX2Ryb3BfYmFja2VuZHMoc3RydWN0IHZob3N0X3Zzb2NrICp2c29jaylcbiB7XG4rXHRzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cTtcbiBcdHNpemVfdCBpO1xuK1xuK1x0bG9ja2RlcF9hc3NlcnRfaGVsZChcdTAwMjZ2c29jay1cdTAwM2VkZXYubXV0ZXgpO1xuK1xuK1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRSh2c29jay1cdTAwM2V2cXMpOyBpKyspIHtcbitcdFx0dnEgPSBcdTAwMjZ2c29jay1cdTAwM2V2cXNbaV07XG4rXG4rXHRcdG11dGV4X2xvY2soXHUwMDI2dnEtXHUwMDNlbXV0ZXgpO1xuK1x0XHR2aG9zdF92cV9zZXRfYmFja2VuZCh2cSwgTlVMTCk7XG4rXHRcdG11dGV4X3VubG9jayhcdTAwMjZ2cS1cdTAwM2VtdXRleCk7XG4rXHR9XG4rfVxuK1xuK3N0YXRpYyBpbnQgdmhvc3RfdnNvY2tfc3RvcChzdHJ1Y3Qgdmhvc3RfdnNvY2sgKnZzb2NrLCBib29sIGNoZWNrX293bmVyKVxuK3tcbiBcdGludCByZXQgPSAwO1xuIFxuIFx0bXV0ZXhfbG9jayhcdTAwMjZ2c29jay1cdTAwM2VkZXYubXV0ZXgpO1xuQEAgLTY3NywxNCArNzAwLDcgQEAgc3RhdGljIGludCB2aG9zdF92c29ja19zdG9wKHN0cnVjdCB2aG9zdF92c29jayAqdnNvY2ssIGJvb2wgY2hlY2tfb3duZXIpXG4gXHRcdFx0Z290byBlcnI7XG4gXHR9XG4gXG4tXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKHZzb2NrLVx1MDAzZXZxcyk7IGkrKykge1xuLVx0XHRzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSA9IFx1MDAyNnZzb2NrLVx1MDAzZXZxc1tpXTtcbi1cbi1cdFx0bXV0ZXhfbG9jayhcdTAwMjZ2cS1cdTAwM2VtdXRleCk7XG4tXHRcdHZob3N0X3ZxX3NldF9iYWNrZW5kKHZxLCBOVUxMKTtcbi1cdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnZxLVx1MDAzZW11dGV4KTtcbi1cdH1cbi1cbitcdHZob3N0X3Zzb2NrX2Ryb3BfYmFja2VuZHModnNvY2spO1xuIGVycjpcbiBcdG11dGV4X3VubG9jayhcdTAwMjZ2c29jay1cdTAwM2VkZXYubXV0ZXgpO1xuIFx0cmV0dXJuIHJldDtcbkBAIC03MjAsNiArNzM2LDcgQEAgc3RhdGljIGludCB2aG9zdF92c29ja19kZXZfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbiBcbiBcdHZzb2NrLVx1MDAzZWd1ZXN0X2NpZCA9IDA7IC8qIG5vIENJRCBhc3NpZ25lZCB5ZXQgKi9cbiBcdHZzb2NrLVx1MDAzZXNlcXBhY2tldF9hbGxvdyA9IGZhbHNlO1xuK1x0dnNvY2stXHUwMDNlZXZlcl9zdGFydGVkID0gZmFsc2U7XG4gXG4gXHRhdG9taWNfc2V0KFx1MDAyNnZzb2NrLVx1MDAzZXF1ZXVlZF9yZXBsaWVzLCAwKTtcbiBcbkBAIC04ODYsNiArOTAzLDI5IEBAIHN0YXRpYyBpbnQgdmhvc3RfdnNvY2tfc2V0X2ZlYXR1cmVzKHN0cnVjdCB2aG9zdF92c29jayAqdnNvY2ssIHU2NCBmZWF0dXJlcylcbiBcdHJldHVybiAtRUZBVUxUO1xuIH1cbiBcbitzdGF0aWMgbG9uZyB2aG9zdF92c29ja19yZXNldF9vd25lcihzdHJ1Y3Qgdmhvc3RfdnNvY2sgKnZzb2NrKVxuK3tcbitcdHN0cnVjdCB2aG9zdF9pb3RsYiAqdW1lbTtcbitcdGxvbmcgZXJyO1xuK1xuK1x0bXV0ZXhfbG9jayhcdTAwMjZ2c29jay1cdTAwM2VkZXYubXV0ZXgpO1xuK1x0ZXJyID0gdmhvc3RfZGV2X2NoZWNrX293bmVyKFx1MDAyNnZzb2NrLVx1MDAzZWRldik7XG4rXHRpZiAoZXJyKVxuK1x0XHRnb3RvIGRvbmU7XG4rXHR1bWVtID0gdmhvc3RfZGV2X3Jlc2V0X293bmVyX3ByZXBhcmUoKTtcbitcdGlmICghdW1lbSkge1xuK1x0XHRlcnIgPSAtRU5PTUVNO1xuK1x0XHRnb3RvIGRvbmU7XG4rXHR9XG4rXHR2aG9zdF92c29ja19kcm9wX2JhY2tlbmRzKHZzb2NrKTtcbitcdHZob3N0X3Zzb2NrX2ZsdXNoKHZzb2NrKTtcbitcdHZob3N0X2Rldl9zdG9wKFx1MDAyNnZzb2NrLVx1MDAzZWRldik7XG4rXHR2aG9zdF9kZXZfcmVzZXRfb3duZXIoXHUwMDI2dnNvY2stXHUwMDNlZGV2LCB1bWVtKTtcbitkb25lOlxuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNnZzb2NrLVx1MDAzZWRldi5tdXRleCk7XG4rXHRyZXR1cm4gZXJyO1xuK31cbitcbiBzdGF0aWMgbG9uZyB2aG9zdF92c29ja19kZXZfaW9jdGwoc3RydWN0IGZpbGUgKmYsIHVuc2lnbmVkIGludCBpb2N0bCxcbiBcdFx0XHRcdCAgdW5zaWduZWQgbG9uZyBhcmcpXG4ge1xuQEAgLTkyOSw2ICs5NjksOCBAQCBzdGF0aWMgbG9uZyB2aG9zdF92c29ja19kZXZfaW9jdGwoc3RydWN0IGZpbGUgKmYsIHVuc2lnbmVkIGludCBpb2N0bCxcbiBcdFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4gXHRcdHZob3N0X3NldF9iYWNrZW5kX2ZlYXR1cmVzKFx1MDAyNnZzb2NrLVx1MDAzZWRldiwgZmVhdHVyZXMpO1xuIFx0XHRyZXR1cm4gMDtcbitcdGNhc2UgVkhPU1RfUkVTRVRfT1dORVI6XG4rXHRcdHJldHVybiB2aG9zdF92c29ja19yZXNldF9vd25lcih2c29jayk7XG4gXHRkZWZhdWx0OlxuIFx0XHRtdXRleF9sb2NrKFx1MDAyNnZzb2NrLVx1MDAzZWRldi5tdXRleCk7XG4gXHRcdHIgPSB2aG9zdF9kZXZfaW9jdGwoXHUwMDI2dnNvY2stXHUwMDNlZGV2LCBpb2N0bCwgYXJncCk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwMTozMTo1NS40MzI2MjUzNzlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NTQyNTE0MzQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgdmhvc3QtdnNvY2sgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdG91Y2hlcyBgZHJpdmVycy92aG9zdC92aG9zdC5jYCBhbmQgYGRyaXZlcnMvdmhvc3QvdnNvY2suY2AuIEl0IGxvb2tzIGxpa2UgaXQncyBhZGRpbmcgc29tZSBzdHVmZiB0byBgdmhvc3Rfd29ya2Vyc19mcmVlYCBpbiBgdmhvc3QuY2AsIGFuZCBtYWtpbmcgY2hhbmdlcyB0byBhIGZldyBmdW5jdGlvbnMgaW4gYHZzb2NrLmNgIOKAkyBgdmhvc3RfdnNvY2tfc3RhcnRgLCBgdmhvc3RfdnNvY2tfc3RvcGAsIGB2aG9zdF92c29ja19kZXZfb3BlbmAsIGB2aG9zdF92c29ja19kZXZfaW9jdGxgLCBhbmQgaXQncyBpbnRyb2R1Y2luZyBgdmhvc3RfdnNvY2tfcmVzZXRfb3duZXJgIGFzIHdlbGwuXG5cblRoZSBmaXJzdCB0aGluZyBJIHdhbnQgdG8ga25vdyBpcywgaXMgdGhpcyBhY3R1YWxseSBkb2luZyBhbnl0aGluZyB1c2VmdWwgYW5kLCBpbXBvcnRhbnRseSwgaXMgaXQgKnJlYWNoYWJsZSo/IEV4YW1pbmluZyB0aGUgYHZob3N0X3Zzb2NrX2Rldl9pb2N0bGAgY2hhbmdlLCBzcGVjaWZpY2FsbHkgdGhlIGFkZGl0aW9uIG9mIGhhbmRsaW5nIGBWSE9TVF9SRVNFVF9PV05FUmAsIGFuZCB0aGUgY2hhbmdlIGluIGB2aG9zdF90cmFuc3BvcnRfc2VuZF9wa3RgIHRvIGxldmVyYWdlIGB2c29jay1cdTAwM2VldmVyX3N0YXJ0ZWRgIGluc3RlYWQgb2YgY2hlY2tpbmcgdGhlIGJhY2tlbmQsIGNvbmZpcm1zIHRoYXQgaXQgKmlzKiBmdW5jdGlvbmFsIGFuZCBjZXJ0YWlubHkgcmVhY2hhYmxlIHRocm91Z2ggdGhlIHVzdWFsIGlvY3RsIGNhbGxzIG9uIGAvZGV2L3Zob3N0LXZzb2NrYC4gTm8gc3VycHJpc2VzIHRoZXJlLlxuXG5OZXh0LCBJIG5lZWQgdG8ga25vdyB3aGljaCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIHJlcXVpcmVkIGZvciB0aGlzIHRvIHdvcmsuIEkga25vdyBgZHJpdmVycy92aG9zdC92c29jay5jYCBpcyBjb21waWxlZCB3aGVuIGBDT05GSUdfVkhPU1RfVlNPQ0tgIGlzIGVuYWJsZWQsIGFuZCBJJ2xsIGNvbmZpcm0gdGhhdCBxdWlja2x5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTE4LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDE6MzI6MDAuOTc1MTQzMTdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMxNDY0MjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlZIT1NUX1ZTT0NLXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmhvc3QvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92aG9zdC9NYWtlZmlsZT02PXZob3N0X3Njc2kteSA6PSBzY3NpLm9cXG5kcml2ZXJzL3Zob3N0L01ha2VmaWxlLTctXFxuZHJpdmVycy92aG9zdC9NYWtlZmlsZTo4Om9iai0kKENPTkZJR19WSE9TVF9WU09DSykgKz0gdmhvc3RfdnNvY2sub1xcbmRyaXZlcnMvdmhvc3QvTWFrZWZpbGUtOS12aG9zdF92c29jay15IDo9IHZzb2NrLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDE6MzI6MDEuMTA2NjE2NDZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NDQ3Nzc2MzcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU2NvcGUgb2YgVGhpcyBQYXRjaCoqXG5cbk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdCwgeWVzLCBgQ09ORklHX1ZIT1NUX1ZTT0NLYCBpcyBkZWZpbml0ZWx5IHJlbGV2YW50IGhlcmUsIG5vIHF1ZXN0aW9uIGFib3V0IHRoYXQuIE5vdywgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MgYW5kIGlkZW50aWZ5IHRoZSBrZXkgZnVuY3Rpb25zIHRoYXQgdGhpcyBwYXRjaCBpcyB0b3VjaGluZy4gV2UncmUgbG9va2luZyBmb3IgdGhlIGZvY3VzIHN5bWJvbHMsIHRoZSBvbmVzIHRoYXQgcmVxdWlyZSBjYXJlZnVsIHNjcnV0aW55LlxuXG5JdCBsb29rcyBsaWtlIHRoZSBwYXRjaCBtb2RpZmllcyBhIG51bWJlciBvZiBmdW5jdGlvbnM6IGB2aG9zdF93b3JrZXJzX2ZyZWVgLCBgdmhvc3RfdHJhbnNwb3J0X3NlbmRfcGt0YCwgYHZob3N0X3Zzb2NrX3N0YXJ0YCwgYHZob3N0X3Zzb2NrX2Ryb3BfYmFja2VuZHNgLCBgdmhvc3RfdnNvY2tfc3RvcGAsIGB2aG9zdF92c29ja19kZXZfb3BlbmAsIGB2aG9zdF92c29ja19zZXRfZmVhdHVyZXNgICh3aGljaCBJIHNlZSBpcyBjb250ZXh0LW9ubHkpLCBgdmhvc3RfdnNvY2tfcmVzZXRfb3duZXJgLCBhbmQgYHZob3N0X3Zzb2NrX2Rldl9pb2N0bGAuXG5cbk9rYXksIGFmdGVyIGEgcXVpY2sgc3dlZXAsIEkgdGhpbmsgdGhlIHJlYWwgZm9jdXMgc2hvdWxkIGJlIG9uOiBgdmhvc3Rfd29ya2Vyc19mcmVlYCwgYHZob3N0X3Zzb2NrX3N0YXJ0YCwgYHZob3N0X3Zzb2NrX3N0b3BgLCBgdmhvc3RfdnNvY2tfcmVzZXRfb3duZXJgLCBhbmQgYHZob3N0X3Zzb2NrX2Rldl9pb2N0bGAuXG5cblJpZ2h0LCBsZXQncyBzZWUsIGB2aG9zdF90cmFuc3BvcnRfc2VuZF9wa3RgIGlzIGEgcGFja2V0IHNlbmRlci4gVGhhdCBpcyBhIGhvdCBwYXRoIGZ1bmN0aW9uLCBzbyB3ZSBzaG91bGQgdHJ5IHRvIG1pbmltaXplIGFueSBpbXBhY3QgdGhlcmUuIGB2aG9zdF92c29ja19kZXZfb3BlbmAgaXMganVzdCBpbml0aWFsaXphdGlvbiwgc28gdGhhdCdzIGxpa2VseSBsZXNzIGNyaXRpY2FsLCBhbmQgYHZob3N0X3Zzb2NrX2Ryb3BfYmFja2VuZHNgIGlzIGp1c3QgYSBoZWxwZXIgZnVuY3Rpb24gdGhhdCdzIGNhbGxlZCBmcm9tIGB2aG9zdF92c29ja19zdG9wYCBhbmQgYHZob3N0X3Zzb2NrX3Jlc2V0X293bmVyYC5cblxuQWxyaWdodCwgbGV0J3MgZG91YmxlLWNoZWNrIHRoZSBwb3RlbnRpYWwgZm9yIHBlcmZvcm1hbmNlIGltcGFjdC4gYHZob3N0X3dvcmtlcnNfZnJlZWAgaXMgY2FsbGVkIHdoZW4gdGhlIHZob3N0IGRldmljZSBpcyBmcmVlZCwgd2hpY2ggc3VnZ2VzdHMgaXQgaXNuJ3Qgb24gYSBob3QgcGF0aC4gU28sIGB2aG9zdF92c29ja19zdGFydGAsIGB2aG9zdF92c29ja19zdG9wYCwgYHZob3N0X3Zzb2NrX3Jlc2V0X293bmVyYCwgYW5kIGB2aG9zdF92c29ja19kZXZfaW9jdGxgIGFwcGVhciB0byBiZSBjb250cm9sIHBhdGggZnVuY3Rpb25zLiBNYWtlcyBzZW5zZS4gSnVzdCB0byBiZSBjb21wbGV0ZWx5IHN1cmUsIEknbGwgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBgdmhvc3Rfd29ya2Vyc19mcmVlYCBmdW5jdGlvbiBpbiBgZHJpdmVycy92aG9zdC92aG9zdC5jYCwganVzdCB0byBjb25maXJtIG15IGluaXRpYWwgYXNzZXNzbWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDYwNSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwMTozMjowNy41NTQzOTU3ODJaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU0OTAwOTg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZob3N0X3dvcmtlcnNfZnJlZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3Zob3N0L3Zob3N0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92aG9zdC92aG9zdC5jPTcxMD1zdGF0aWMgdm9pZCB2aG9zdF93b3JrZXJfZGVzdHJveShzdHJ1Y3Qgdmhvc3RfZGV2ICpkZXYsXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtNzIxLVxcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYzo3MjI6c3RhdGljIHZvaWQgdmhvc3Rfd29ya2Vyc19mcmVlKHN0cnVjdCB2aG9zdF9kZXYgKmRldilcXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtNzIzLXtcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYz0xMjE1PXZvaWQgdmhvc3RfZGV2X2NsZWFudXAoc3RydWN0IHZob3N0X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy92aG9zdC92aG9zdC5jLTEyMzgtXFx0d2FrZV91cF9pbnRlcnJ1cHRpYmxlX3BvbGwoXFx1MDAyNmRldi1cXHUwMDNld2FpdCwgRVBPTExJTiB8IEVQT0xMUkROT1JNKTtcXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmM6MTIzOTpcXHR2aG9zdF93b3JrZXJzX2ZyZWUoZGV2KTtcXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMTI0MC1cXHR2aG9zdF9kZXRhY2hfbW0oZGV2KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDE6MzI6MDcuNzA5MzAzNloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1MDc1MzE0NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgdmhvc3RfZGV2X2NsZWFudXAgQ2FsbCoqXG5cblJpZ2h0LCBzbyB3ZSdyZSBkaXZpbmcgaW50byB0aGlzIGB2aG9zdF9kZXZfY2xlYW51cGAgY2FsbC4gVGhhdCBzaWduYWxzIHdlJ3JlIGluIHRoZSBtaWRzdCBvZiBjbGVhbmluZyB1cCBhIHZob3N0IGRldmljZSwgd2hpY2ggY291bGQgaW5kaWNhdGUgYSBzaHV0ZG93biwgYSByZXNldCwgb3Igc29tZSBvdGhlciBkZXZpY2UtbGV2ZWwgdGVhcmRvd24uIE5vdywgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHBpbnBvaW50IHRoZSBleGFjdCBjb250ZXh0IGFuZCB3aGF0IGNvbXBvbmVudHMgYXJlIGJlaW5nIG1hbmFnZWQgZHVyaW5nIHRoaXMgY2xlYW51cC4gR2l2ZW4gdGhhdCB3ZSdyZSBkZWFsaW5nIHdpdGggdmhvc3QgYW5kIHRoYXQgdnNvY2sgaXMgdGhlIHRvcGljLCBteSBpbml0aWFsIHJlYWN0aW9uIGlzIHRvIGludmVzdGlnYXRlIHRoZSB2c29jay1zcGVjaWZpYyBjbGVhbnVwIHJvdXRpbmVzLiBJ4oCZbGwgaW1tZWRpYXRlbHkgaGVhZCBvdmVyIHRvIGBkcml2ZXJzL3Zob3N0L3Zzb2NrLmNgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgY2xlYW51cCBsb2dpYyB1c2VkIHdpdGggYSB2aG9zdCBkZXZpY2UuIFRoZSBmdW5jdGlvbiBgdmhvc3RfdnNvY2tfcmVzZXRfb3duZXJgIHNvdW5kcyBsaWtlIGEga2V5IGZ1bmN0aW9uIHRvIGV4cGxvcmUuIEkgd2FudCB0byBzZWUgaG93IHRoZSB2aG9zdCB2c29jayBvd25lciBpcyByZXNldCBoZXJlIGJlY2F1c2UgaXQgaXMgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGhvbGRpbmcgdGhlIGtleSB0byBob3cgdGhlIHZzb2NrIGRldmljZSBpcyByZWxlYXNlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGZ1bmN0aW9uIGRvZXMgZHVyaW5nIGB2aG9zdF9kZXZfY2xlYW51cGAgc2luY2UgaXQgY291bGQgZGV0ZXJtaW5lIHRoZSByZXNvdXJjZSByZWxlYXNlLCBzdGF0ZSBjaGFuZ2VzLCBvciBvdGhlciBrZXkgY2xlYW51cCBzdGVwcyB0aGF0IGFyZSBwYXJ0IG9mIHRoZSBwcm9jZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NzY3LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDE6MzI6MTEuMjE2ODM3NzM1WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNTM3MTMxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2aG9zdF92c29ja19yZXNldF9vd25lclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3Zob3N0L3Zzb2NrLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92aG9zdC92c29jay5jPTg3MT1zdGF0aWMgaW50IHZob3N0X3Zzb2NrX3NldF9mZWF0dXJlcyhzdHJ1Y3Qgdmhvc3RfdnNvY2sgKnZzb2NrLCB1NjQgZmVhdHVyZXMpXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmMtOTA1LVxcbmRyaXZlcnMvdmhvc3QvdnNvY2suYzo5MDY6c3RhdGljIGxvbmcgdmhvc3RfdnNvY2tfcmVzZXRfb3duZXIoc3RydWN0IHZob3N0X3Zzb2NrICp2c29jaylcXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmMtOTA3LXtcXG4tLVxcbmRyaXZlcnMvdmhvc3QvdnNvY2suYz05Mjk9c3RhdGljIGxvbmcgdmhvc3RfdnNvY2tfZGV2X2lvY3RsKHN0cnVjdCBmaWxlICpmLCB1bnNpZ25lZCBpbnQgaW9jdGwsXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmMtOTcyLVxcdGNhc2UgVkhPU1RfUkVTRVRfT1dORVI6XFxuZHJpdmVycy92aG9zdC92c29jay5jOjk3MzpcXHRcXHRyZXR1cm4gdmhvc3RfdnNvY2tfcmVzZXRfb3duZXIodnNvY2spO1xcbmRyaXZlcnMvdmhvc3QvdnNvY2suYy05NzQtXFx0ZGVmYXVsdDpcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDE6MzI6MTEuMzQyMjE1NTY1WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjkxMDQzODcwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBOZXcgRnVuY3Rpb24qKlxuXG5BbHJpZ2h0LCBhIG5ldyBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvLCBvZiBjb3Vyc2UsIHVuZGVyc3RhbmQgaXRzIHB1cnBvc2UuIEdpdmVuIHRoZSBjb250ZXh0LCBJJ20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgaXQncyByZWxhdGVkIHRvIHNvbWUga2luZCBvZiBjb25uZWN0aW9uIG1hbmFnZW1lbnQgd2l0aGluIHRoZSB2aG9zdF92c29jayBmcmFtZXdvcmssIHByb2JhYmx5IGNsZWFudXAgb3IgcmVzb3VyY2UgaGFuZGxpbmcuIEknbGwgbmVlZCB0byBkaWcgaW50byB0aGUgZGV0YWlscywgYnV0IG15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiB0aGUgZnVuY3Rpb24gbmFtZTogYHZob3N0X3Zzb2NrX2Ryb3BfYmFja2VuZHNgLiBUaGUgXCJkcm9wXCIgdmVyYiBpbXBsaWVzIHJlbGVhc2luZyBvciBzZXZlcmluZyBjb25uZWN0aW9ucy4gXCJCYWNrZW5kc1wiIGluZGljYXRlcyB3ZSdyZSBkZWFsaW5nIHdpdGggdGhlIHRhcmdldCBzaWRlIG9mIGEgdmhvc3RfdnNvY2sgY29ubmVjdGlvbi4gU28sIG15IGd1dCBmZWVsaW5nIGlzIHRoaXMgZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIGdyYWNlZnVsbHkgdGVhcmluZyBkb3duIHZob3N0X3Zzb2NrIGNvbm5lY3Rpb25zIG9yIGFzc29jaWF0ZWQgcmVzb3VyY2VzIG9uIHRoZSBndWVzdCBzaWRlIG9mIHRoZSBpbnRlcmZhY2UsIHBvdGVudGlhbGx5IGR1cmluZyBzaHV0ZG93biBvciBkdWUgdG8gY29ubmVjdGlvbiBpc3N1ZXMuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBteSBpbml0aWFsIGh5cG90aGVzaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYzNDcsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwMTozMjoxNC4yNTI2NTc4MjVaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzOTgxNDY5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2aG9zdF92c29ja19kcm9wX2JhY2tlbmRzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmhvc3QvdnNvY2suY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3Zob3N0L3Zzb2NrLmM9NjA3PXN0YXRpYyBpbnQgdmhvc3RfdnNvY2tfc3RhcnQoc3RydWN0IHZob3N0X3Zzb2NrICp2c29jaylcXG4tLVxcbmRyaXZlcnMvdmhvc3QvdnNvY2suYy02NzQtXFxuZHJpdmVycy92aG9zdC92c29jay5jOjY3NTpzdGF0aWMgdm9pZCB2aG9zdF92c29ja19kcm9wX2JhY2tlbmRzKHN0cnVjdCB2aG9zdF92c29jayAqdnNvY2spXFxuZHJpdmVycy92aG9zdC92c29jay5jLTY3Ni17XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmM9NjkxPXN0YXRpYyBpbnQgdmhvc3RfdnNvY2tfc3RvcChzdHJ1Y3Qgdmhvc3RfdnNvY2sgKnZzb2NrLCBib29sIGNoZWNrX293bmVyKVxcbi0tXFxuZHJpdmVycy92aG9zdC92c29jay5jLTcwMi1cXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmM6NzAzOlxcdHZob3N0X3Zzb2NrX2Ryb3BfYmFja2VuZHModnNvY2spO1xcbmRyaXZlcnMvdmhvc3QvdnNvY2suYy03MDQtZXJyOlxcbi0tXFxuZHJpdmVycy92aG9zdC92c29jay5jPTkwNj1zdGF0aWMgbG9uZyB2aG9zdF92c29ja19yZXNldF9vd25lcihzdHJ1Y3Qgdmhvc3RfdnNvY2sgKnZzb2NrKVxcbi0tXFxuZHJpdmVycy92aG9zdC92c29jay5jLTkxOS1cXHR9XFxuZHJpdmVycy92aG9zdC92c29jay5jOjkyMDpcXHR2aG9zdF92c29ja19kcm9wX2JhY2tlbmRzKHZzb2NrKTtcXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmMtOTIxLVxcdHZob3N0X3Zzb2NrX2ZsdXNoKHZzb2NrKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDE6MzI6MTQuMzkyNDc5MjA1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4OTkzMjMxMzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTmV3IEhlbHBlciBGdW5jdGlvbiBBbmFseXNpcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgbmV3IGhlbHBlciBmdW5jdGlvbiBhbmQgaW1tZWRpYXRlbHkgbmVlZCB0byBpZGVudGlmeSB0aGUgY29yZSBjb21wb25lbnRzIHRoYXQgaGF2ZSBiZWVuIGNoYW5nZWQsIHNvIEkgY2FuIHNlZSBob3cgaXQgZml0cyBpbnRvIHRoZSB3aG9sZSBwaWN0dXJlLiBUaGUgbWFpbiBmb2N1cyBzeW1ib2xzIEknbSBzcG90dGluZyBhcmU6IGB2aG9zdF93b3JrZXJzX2ZyZWVgLCBgdmhvc3RfdnNvY2tfc3RhcnRgLCBgdmhvc3RfdnNvY2tfc3RvcGAsIGB2aG9zdF92c29ja19yZXNldF9vd25lcmAsIGFuZCBgdmhvc3RfdnNvY2tfZHJvcF9iYWNrZW5kc2AuIEFoLCByaWdodCwgSSBzZWUgdGhhdCBgdmhvc3RfdnNvY2tfZGV2X2lvY3RsYCBoYXMgYWxzbyBiZWVuIHRvdWNoZWQuIEl0J3MgaW1wb3J0YW50IHRvIGJlIHRob3JvdWdoLCBzbyBsZXQncyBhZGQgdGhhdCB0byB0aGUgbGlzdCBvZiBpbXBhY3RlZCBhcmVhcy5cblxuTm93LCBiZWZvcmUgSSBkaWcgaW50byB0aGUgc3BlY2lmaWNzIG9mICp3aGF0KiBoYXMgY2hhbmdlZCwgSSBuZWVkIHRvIGNoZWNrIHRoZSBicm9hZGVyIGNvbmZpZ3VyYXRpb24gY29udGV4dC4gSSBrbm93IHRoZXNlIGB2aG9zdF92c29ja2AgZWxlbWVudHMgYXJlIHByb2JhYmx5IGJlaGluZCBhIGZldyBjb25maWdzLiBMZXQgbWUgcXVpY2tseSB2ZXJpZnk6IGBDT05GSUdfVkhPU1RfVlNPQ0tgIGxpa2VseSBkZXBlbmRzIG9uIGBDT05GSUdfVkhPU1RgIGFuZCBgQ09ORklHX1ZTT0NLRVRTYC4gSSdsbCB3YW50IHRvIG1ha2Ugc3VyZSB0aGUgYnVpbGQgZW52aXJvbm1lbnQgaXMgc2V0IGFwcHJvcHJpYXRlbHkuIFRvIGNvbmZpcm0sIEkgc2hvdWxkIGNoZWNrIHRoZSBgZHJpdmVycy92aG9zdC9LY29uZmlnYCBmaWxlIHRvIGdldCB0aGUgZnVsbCBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2OTQyLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDAxOjMyOjE4LjI5MTgwNTQ5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDg3NjE2ODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFZIT1NUX1ZTT0NLXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmhvc3QvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3Zob3N0L0tjb25maWc9NDY9Y29uZmlnIFZIT1NUX1NDU0lcXG4tLVxcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZy01NS1cXG5kcml2ZXJzL3Zob3N0L0tjb25maWc6NTY6Y29uZmlnIFZIT1NUX1ZTT0NLXFxuZHJpdmVycy92aG9zdC9LY29uZmlnLTU3LVxcdHRyaXN0YXRlIFxcXCJ2aG9zdCB2aXJ0aW8tdnNvY2sgZHJpdmVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwMTozMjoxOC40NDA1NzY4NzlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDIwODQ1MTA3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHByb2Nlc3MsIHBsYXlpbmcgdGhlIHJvbGUgb2YgYW4gZXhwZXJ0IGRpdmluZyBpbnRvIHRoYXQgS2NvbmZpZzpcblxuKipEaXZpbmcgaW50byB0aGUgYFZIT1NUX1ZTT0NLYCBLY29uZmlnKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MgYW5kIGRpc3NlY3QgdGhpcyBLY29uZmlnIGVudHJ5IGZvciBgVkhPU1RfVlNPQ0tgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSBkZXRlcm1pbmUgaXRzIGRlcGVuZGVuY2llcy4gV2hhdCBvdGhlciBmZWF0dXJlcyAqbXVzdCogYmUgZW5hYmxlZCBvciBjb25maWd1cmVkIGZvciB0aGlzIHRvIGV2ZW4gc2hvdyB1cCBhcyBhbiBvcHRpb24/IEtlcm5lbCBtb2R1bGVzLCBjb3JlIG5ldHdvcmtpbmcgY29tcG9uZW50cywgdmlydHVhbGl6YXRpb24gZnJhbWV3b3JrcyBsaWtlIEtWTSBvciBYZW4g4oCTIHRoZXkgYXJlIGFsbCBwb3NzaWJpbGl0aWVzIHRoYXQgaW1tZWRpYXRlbHkgY29tZSB0byBtaW5kLiBJJ20gbG9va2luZyBmb3IgdGhlIGBkZXBlbmRzIG9uYCBjbGF1c2UsIGFuZCBhbnkgYHNlbGVjdGAgc3RhdGVtZW50cyB0aGF0IG1pZ2h0IGltcGxpY2l0bHkgcHVsbCBpbiBvdGhlciBvcHRpb25zLiBJJ20gYWxzbyBrZWVubHkgaW50ZXJlc3RlZCBpbiB0aGUgYGhlbHBgIHRleHQuIERvZXMgaXQgYWNjdXJhdGVseSBhbmQgc3VjY2luY3RseSBleHBsYWluIHRoZSBwdXJwb3NlIG9mIHRoaXMgb3B0aW9uLCB0aGUgc2NlbmFyaW9zIGl0IHRhcmdldHMsIGFuZCwgY3J1Y2lhbGx5LCBhbnkgcGVyZm9ybWFuY2UgaW1wbGljYXRpb25zPyBBcmUgdGhlcmUgYW55IHNlY3VyaXR5IGNvbnNpZGVyYXRpb25zIG9yIGxpbWl0YXRpb25zIHRoYXQgbmVlZCBoaWdobGlnaHRpbmc/IFRoZSBkb2N1bWVudGF0aW9uIGlzIGtleS5cblxuTmV4dCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byB0aGUgYnJvYWRlciB2aG9zdCBzdWJzeXN0ZW0uIElzIGl0IGEgY29yZSBjb21wb25lbnQsIGFuIGV4dGVuc2lvbiwgb3IgYSBjb21wbGV0ZWx5IGluZGVwZW5kZW50IG1vZHVsZSBsZXZlcmFnaW5nIHRoZSB2aG9zdCBmcmFtZXdvcms/IEhvdyBkb2VzIGl0IGludGVyYWN0IHdpdGggdGhlIHZpcnRpby12c29jayBkcml2ZXI/IEhvdyBhcmUgdGhleSBpbnRlZ3JhdGVkIGFuZCB3aGF0IGlzIHRoZSBkYXRhIGZsb3c/IElzIGl0IHRpZWQgZGlyZWN0bHkgdG8gYSBzcGVjaWZpYyBoeXBlcnZpc29yLCBvciBkb2VzIGl0IHN0cml2ZSBmb3IgcG9ydGFiaWxpdHk/IEknbGwgcHJvYmFibHkgYmUgZ2xhbmNpbmcgYXQgc3Vycm91bmRpbmcgb3B0aW9ucyBpbiB0aGUgS2NvbmZpZyB0byBzZWUgaG93IHRoaW5ncyBhcmUgc3RydWN0dXJlZCBhcmNoaXRlY3R1cmFsbHkuXG5cbkZpbmFsbHksIEknbGwgYmUgbG9va2luZyBmb3IgYW55IGNvbmRpdGlvbmFsIGNvbmZpZ3VyYXRpb25zLiBJcyB0aGlzIG9wdGlvbiB0YXJnZXRlZCBmb3IgYSB2ZXJ5IHNwZWNpZmljIGNvbmZpZ3VyYXRpb24sIG9yIGlzIGl0IGludGVuZGVkIHRvIGJlIGJyb2FkbHkgdXNhYmxlPyBBcmUgdGhlcmUgb3RoZXIgZmVhdHVyZXMgdGhhdCBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlPyBJJ2xsIGFsc28gbG9vayBmb3IgYW55IGRlZmF1bHRzIG9yIGRlZmF1bHQgdmFsdWVzLCBhcyB0aGlzIGhpbnRzIGF0IHRoZSBcImhhcHB5IHBhdGhcIiBvciB0aGUgbW9zdCBjb21tb24gZGVwbG95bWVudCBzY2VuYXJpby4gSSdtIGV4cGVjdGluZyB0aGlzIGlzIHByZXR0eSBtYXR1cmUsIHNvIEkgd29uJ3QgZXhwZWN0IHRvIGhhdmUgdG8gbWFrZSBhbnkgbWFqb3IgY2hhbmdlcywgYnV0IG9uZSBuZXZlciBrbm93cy4gT3ZlcmFsbCwgdGhlIGdvYWwgaXMgdG8gZnVsbHkgZ3Jhc3AgaXRzIHBsYWNlIGluIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBlY29zeXN0ZW0sIGl0cyBvcGVyYXRpb25hbCBpbXBsaWNhdGlvbnMsIGFuZCBhbnkgcG90ZW50aWFsIGdvdGNoYXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc0NzIsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwMTozMjoyMi42NDkwMzAzOVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDY0NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy92aG9zdC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDU2LFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDU2OlxcdGNvbmZpZyBWSE9TVF9WU09DS1xcbiAgNTc6XFx0XFx0dHJpc3RhdGUgXFxcInZob3N0IHZpcnRpby12c29jayBkcml2ZXJcXFwiXFxuICA1ODpcXHRcXHRkZXBlbmRzIG9uIFZTT0NLRVRTIFxcdTAwMjZcXHUwMDI2IEVWRU5URkRcXG4gIDU5OlxcdFxcdHNlbGVjdCBWSE9TVFxcbiAgNjA6XFx0XFx0c2VsZWN0IFZJUlRJT19WU09DS0VUU19DT01NT05cXG4gIDYxOlxcdFxcdGRlZmF1bHQgblxcbiAgNjI6XFx0XFx0aGVscFxcbiAgNjM6XFx0XFx0VGhpcyBrZXJuZWwgbW9kdWxlIGNhbiBiZSBsb2FkZWQgaW4gdGhlIGhvc3Qga2VybmVsIHRvIHByb3ZpZGUgQUZfVlNPQ0tcXG4gIDY0OlxcdFxcdHNvY2tldHMgZm9yIGNvbW11bmljYXRpbmcgd2l0aCBndWVzdHMuICBUaGUgZ3Vlc3RzIG11c3QgaGF2ZSB0aGVcXG4gIDY1OlxcdFxcdHZpcnRpb190cmFuc3BvcnQua28gZHJpdmVyIGxvYWRlZCB0byB1c2UgdGhlIHZpcnRpby12c29jayBkZXZpY2UuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDAxOjMyOjIyLjY0OTEzODk2WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNDExMzk4MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKlZIT1NUX1ZTT0NLOiBJcyBUaGF0IFJlYWxseSBBbGwgSSBOZWVkPyoqXG5cbkFscmlnaHQsIHNvIHRoZSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCBgVkhPU1RfVlNPQ0tgIHNob3VsZCBiZSBzdWZmaWNpZW50IGZvciB0aGUgdGFzayBhdCBoYW5kLiBUaGF0J3MgZ29vZCwgZWZmaWNpZW50IGRlc2lnbiBpcyBhbHdheXMgdGhlIGdvYWwuIE5vdywgYmVmb3JlIEkgbW92ZSBmb3J3YXJkLCBJIG5lZWQgdG8gY29uZmlybSBzb21ldGhpbmcuIEkgbmVlZCB0byBxdWlja2x5IHZlcmlmeSB3aGV0aGVyIHRoZSBgdmhvc3Rfd29ya2Vyc19mcmVlYCBmdW5jdGlvbiBpcyBjb3JyZWN0bHkgY29tcGlsZWQgd2hlbiB0aGUgYFZIT1NUYCBmbGFnIGlzIGRlZmluZWQuIFRoaXMgaXMgYSBjcml0aWNhbCBkZXBlbmRlbmN5LCBhbmQgSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBpdCdzIHByZXNlbnQgYW5kIGZ1bmN0aW9uYWwsIG9yIHRoaXMgd2hvbGUgYXBwcm9hY2ggaXMgZGVhZCBpbiB0aGUgd2F0ZXIuIEdvdHRhIGNvdmVyIG15IGJhc2VzOyBiZXR0ZXIgdG8gY29uZmlybSBub3cgdGhhbiBjaGFzZSBkb3duIGEgY29tcGlsZS10aW1lIGJ1ZyBsYXRlci4gTGV0J3MgZGlnIGludG8gdGhhdCBhbmQgbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgaXMgaW4gaXRzIHBsYWNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MTA0LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwMTozMjoyNS42OTAyODIxNVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkwMDQzMzc2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZob3N0Lm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy92aG9zdC9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3Zob3N0L01ha2VmaWxlPTE0PXZob3N0X3ZkcGEteSA6PSB2ZHBhLm9cXG5kcml2ZXJzL3Zob3N0L01ha2VmaWxlLTE1LVxcbmRyaXZlcnMvdmhvc3QvTWFrZWZpbGU6MTY6b2JqLSQoQ09ORklHX1ZIT1NUKVxcdCs9IHZob3N0Lm9cXG5kcml2ZXJzL3Zob3N0L01ha2VmaWxlLTE3LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwMTozMjoyNS44ODE1Mzc2ODVaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTYxMTg0NjIwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHVuZGVyc3RhbmRpbmcsIGZvcm1hdHRlZCBhcyByZXF1ZXN0ZWQ6XG5cbioqVmhvc3QtVlNvY2sgUGF0Y2ggQW5hbHlzaXMqKlxuXG5BbHJpZ2h0LCBzbyBgQ09ORklHX1ZIT1NUX1ZTT0NLYCBhdXRvbWF0aWNhbGx5IHNlbGVjdHMgYENPTkZJR19WSE9TVGAsIGdvb2QuIFRoYXQgY29uZmlybXMgYFZIT1NUX1ZTT0NLYCBhcyB0aGUga2V5IGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRvIGZvY3VzIG9uLiBOb3csIGxldCdzIHF1aWNrbHkgcmV2aWV3IHRoZSBpbXBvcnRhbnQgc3ltYm9scyB0aGlzIHBhdGNoIHRvdWNoZXM6IEkndmUgZ290IGB2aG9zdF93b3JrZXJzX2ZyZWVgLCBgdmhvc3RfdnNvY2tfc3RhcnRgLCBgdmhvc3RfdnNvY2tfc3RvcGAsIGB2aG9zdF92c29ja19yZXNldF9vd25lcmAsIGB2aG9zdF92c29ja19kcm9wX2JhY2tlbmRzYCwgYW5kIGB2aG9zdF92c29ja19kZXZfaW9jdGxgIG9uIG15IHJhZGFyLlxuXG5Gcm9tIHdoYXQgSSBjYW4gdGVsbCwgdGhpcyBwYXRjaCBpcyBtYWtpbmcgc29tZSBwcmV0dHkga2V5IGZ1bmN0aW9uYWwgYWRqdXN0bWVudHMgdG8gdGhlIHZob3N0IHZzb2NrIGRyaXZlci4gU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyB0byBiZSBhZGRpbmcgaGFuZGxpbmcgZm9yIHRoZSBgVkhPU1RfUkVTRVRfT1dORVJgIGlvY3RsLCB3aGljaCBsaWtlbHkgaW52b2x2ZXMgc29tZSBjbGVhbnVwIG9yIHN0YXRlIHJlc2V0dGluZy4gVGhlcmUncyBhbHNvIGEgd29ya2VyIGZyZWVpbmcgZml4IHdpdGhpbiB0aGUgdmhvc3QgY29yZSAtIHByb2JhYmx5IGFkZHJlc3Npbmcgc29tZSByZXNvdXJjZSBtYW5hZ2VtZW50IGlzc3VlLCBhbmQgYSBtb2RpZmljYXRpb24gdG8gaG93IHBhY2tldCBzZW5kaW5nIHdvcmtzIHRvIGVuc3VyZSB0aGUgZGV2aWNlIGlzIGZ1bGx5IGluaXRpYWxpemVkIGJlZm9yZSB0cmFuc21pdHRpbmcsIHdoaWNoIHNlZW1zIGltcG9ydGFudCBmb3IgcmVsaWFiaWxpdHkuIFRoZXNlIGNoYW5nZXMgc2VlbSB0byBhZmZlY3QgYm90aCB0aGUgY29udHJvbCBhbmQgZGF0YSBwYXRocyB3aXRoaW4gdGhlIGRyaXZlci4gU28sIHRoaXMgZGVmaW5pdGVseSB3YXJyYW50cyBhIGNsb3NlciBsb29rIGF0IHRoZSBhY3R1YWwgY29kZS4gTGV0J3MgY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NDI0LCJPdXRwdXRUb2tlbnMiOjE2NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwMTozMjozMS40OTMzODU5OFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NDcyNTkwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVkhPU1RfVlNPQ0tcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2aG9zdF93b3JrZXJzX2ZyZWVcIixcbiAgICBcInZob3N0X3Zzb2NrX3N0YXJ0XCIsXG4gICAgXCJ2aG9zdF92c29ja19zdG9wXCIsXG4gICAgXCJ2aG9zdF92c29ja19yZXNldF9vd25lclwiLFxuICAgIFwidmhvc3RfdnNvY2tfZHJvcF9iYWNrZW5kc1wiLFxuICAgIFwidmhvc3RfdnNvY2tfZGV2X2lvY3RsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHZob3N0IHZzb2NrIGRyaXZlciB0byBoYW5kbGUgdGhlIFZIT1NUX1JFU0VUX09XTkVSIGlvY3RsLCBmaXhlcyB3b3JrZXIgZnJlZWluZyBsb2dpYyBpbiB0aGUgdmhvc3QgY29yZSwgYW5kIGNoYW5nZXMgdGhlIHBhY2tldCBzZW5kaW5nIGxvZ2ljIHRvIHdhaXQgZm9yIHRoZSBkZXZpY2UgdG8gYmUgc3RhcnRlZC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgY29udHJvbCBhbmQgZGF0YSBwYXRocyBvZiB0aGUgdmhvc3QgdnNvY2sgZHJpdmVyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZIT1NUX1ZTT0NLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmhvc3Rfd29ya2Vyc19mcmVlXCIsXG4gICAgXCJ2aG9zdF92c29ja19zdGFydFwiLFxuICAgIFwidmhvc3RfdnNvY2tfc3RvcFwiLFxuICAgIFwidmhvc3RfdnNvY2tfcmVzZXRfb3duZXJcIixcbiAgICBcInZob3N0X3Zzb2NrX2Ryb3BfYmFja2VuZHNcIixcbiAgICBcInZob3N0X3Zzb2NrX2Rldl9pb2N0bFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB2aG9zdCB2c29jayBkcml2ZXIgdG8gaGFuZGxlIHRoZSBWSE9TVF9SRVNFVF9PV05FUiBpb2N0bCwgZml4ZXMgd29ya2VyIGZyZWVpbmcgbG9naWMgaW4gdGhlIHZob3N0IGNvcmUsIGFuZCBjaGFuZ2VzIHRoZSBwYWNrZXQgc2VuZGluZyBsb2dpYyB0byB3YWl0IGZvciB0aGUgZGV2aWNlIHRvIGJlIHN0YXJ0ZWQuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhlIGNvbnRyb2wgYW5kIGRhdGEgcGF0aHMgb2YgdGhlIHZob3N0IHZzb2NrIGRyaXZlci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workfloww6wcv[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-15 01:07:57 +0000 UTC FinishedAt: 2026-07-15 01:32:33 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VHOST_VSOCK" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VHOST_VSOCK" ], "series_id": "48171fe7-e117-4373-a84b-9ad25d68c93c" }, "track": "KASAN", "fuzz": { "focus": [ "kvm", "net" ], "focus_symbols": [ "vhost_workers_free", "vhost_vsock_start", "vhost_vsock_stop", "vhost_vsock_reset_owner", "vhost_vsock_drop_backends", "vhost_vsock_dev_ioctl" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDAxOjMxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZIT1NUX1ZTT0NLJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dmhvc3Rfd29ya2Vyc19mcmVlJiMzNDssCiAgICAmIzM0O3Zob3N0X3Zzb2NrX3N0YXJ0JiMzNDssCiAgICAmIzM0O3Zob3N0X3Zzb2NrX3N0b3AmIzM0OywKICAgICYjMzQ7dmhvc3RfdnNvY2tfcmVzZXRfb3duZXImIzM0OywKICAgICYjMzQ7dmhvc3RfdnNvY2tfZHJvcF9iYWNrZW5kcyYjMzQ7LAogICAgJiMzNDt2aG9zdF92c29ja19kZXZfaW9jdGwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHZob3N0IHZzb2NrIGRyaXZlciB0byBoYW5kbGUgdGhlIFZIT1NUX1JFU0VUX09XTkVSIGlvY3RsLCBmaXhlcyB3b3JrZXIgZnJlZWluZyBsb2dpYyBpbiB0aGUgdmhvc3QgY29yZSwgYW5kIGNoYW5nZXMgdGhlIHBhY2tldCBzZW5kaW5nIGxvZ2ljIHRvIHdhaXQgZm9yIHRoZSBkZXZpY2UgdG8gYmUgc3RhcnRlZC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgY29udHJvbCBhbmQgZGF0YSBwYXRocyBvZiB0aGUgdmhvc3QgdnNvY2sgZHJpdmVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDAxOjMxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMWY1ZTVjZTJhZmIzN2VhZTFhZDM1MzA2MGY3MzVmN2U3MTJiOWMwZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDE1IDAxOjMxOjUzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmhvc3Qvdmhvc3QuYyBiL2RyaXZlcnMvdmhvc3Qvdmhvc3QuY1xuaW5kZXggNGM1MjViM2UxNmVhZDguLjBkMTQxNGQ0MGY0ZTcyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy92aG9zdC92aG9zdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3Zob3N0L3Zob3N0LmNcbkBAIC03MjksNiAmIzQzOzcyOSwyMSBAQCBzdGF0aWMgdm9pZCB2aG9zdF93b3JrZXJzX2ZyZWUoc3RydWN0IHZob3N0X2RldiAqZGV2KVxuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgZGV2LVx1MDAzZW52cXM7IGkmIzQzOyYjNDM7KVxuIFx0XHRyY3VfYXNzaWduX3BvaW50ZXIoZGV2LVx1MDAzZXZxc1tpXS1cdTAwM2V3b3JrZXIsIE5VTEwpO1xuJiM0MztcbiYjNDM7XHQvKlxuJiM0MztcdCAqIHZob3N0X3ZxX3dvcmtfcXVldWUoKSByZWFkcyB2cS1cdTAwM2V3b3JrZXIgdW5kZXIgcmN1X3JlYWRfbG9jaygpLCBzbyBhXG4mIzQzO1x0ICogY2FsbGVyIHRoYXQgZmV0Y2hlZCBhIHdvcmtlciBiZWZvcmUgd2UgY2xlYXJlZCB0aGUgcG9pbnRlcnMgYWJvdmVcbiYjNDM7XHQgKiBtYXkgc3RpbGwgYmUgYWJvdXQgdG8gcXVldWUgd29yayBvbiBpdC4gIFdhaXQgZm9yIHRob3NlIFJDVSByZWFkZXJzXG4mIzQzO1x0ICogdG8gZmluaXNoIGJlZm9yZSBmcmVlaW5nIHRoZSB3b3JrZXIsIHRoZW4gcnVuIHdoYXRldmVyIHRoZXkgcXVldWVkXG4mIzQzO1x0ICogc28gbm90aGluZyBpcyBsZWZ0IHdpdGggVkhPU1RfV09SS19RVUVVRUQgc2V0LiAgTWlycm9yc1xuJiM0MztcdCAqIHZob3N0X3dvcmtlcl9raWxsZWQoKS5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAoIXhhX2VtcHR5KFx1MDAyNmRldi1cdTAwM2V3b3JrZXJfeGEpKSB7XG4mIzQzO1x0XHRzeW5jaHJvbml6ZV9yY3UoKTtcbiYjNDM7XHRcdHhhX2Zvcl9lYWNoKFx1MDAyNmRldi1cdTAwM2V3b3JrZXJfeGEsIGksIHdvcmtlcilcbiYjNDM7XHRcdFx0dmhvc3RfcnVuX3dvcmtfbGlzdCh3b3JrZXIpO1xuJiM0MztcdH1cbiYjNDM7XG4gXHQvKlxuIFx0ICogRnJlZSB0aGUgZGVmYXVsdCB3b3JrZXIgd2UgY3JlYXRlZCBhbmQgY2xlYW51cCB3b3JrZXJzIHVzZXJzcGFjZVxuIFx0ICogY3JlYXRlZCBidXQgY291bGRuJiMzOTt0IGNsZWFuIHVwIChpdCBmb3Jnb3Qgb3IgY3Jhc2hlZCkuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy92aG9zdC92c29jay5jIGIvZHJpdmVycy92aG9zdC92c29jay5jXG5pbmRleCA5YWFhYjZiYjgwNjFjMS4uODZmMjVmZjgwNzIyZDMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3Zob3N0L3Zzb2NrLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdmhvc3QvdnNvY2suY1xuQEAgLTYxLDYgJiM0Mzs2MSw3IEBAIHN0cnVjdCB2aG9zdF92c29jayB7XG4gXG4gXHR1MzIgZ3Vlc3RfY2lkO1xuIFx0Ym9vbCBzZXFwYWNrZXRfYWxsb3c7XG4mIzQzO1x0Ym9vbCBldmVyX3N0YXJ0ZWQ7IC8qIHNldCBvbiBmaXJzdCBTRVRfUlVOTklORygxKTsgbmV2ZXIgY2xlYXJlZCAqL1xuIH07XG4gXG4gc3RhdGljIHUzMiB2aG9zdF90cmFuc3BvcnRfZ2V0X2xvY2FsX2NpZCh2b2lkKVxuQEAgLTMwMiwxNyAmIzQzOzMwMywxMiBAQCB2aG9zdF90cmFuc3BvcnRfc2VuZF9wa3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldCAqbmV0KVxuIFx0XHRyZXR1cm4gLUVOT0RFVjtcbiBcdH1cbiBcbi1cdC8qIEZhc3QtZmFpbCBpZiB0aGUgZ3Vlc3QgaGFzbiYjMzk7dCBlbmFibGVkIHRoZSBSWCB2cSB5ZXQuIFF1ZXVpbmcgdGhlIHBhY2tldFxuLVx0ICogYW5kIG1ha2luZyB0aGUgY2FsbGVyIHdhaXQgaXMgcG9pbnRsZXNzOiBldmVuIGlmIHRoZSBndWVzdCBtYW5hZ2VzIHRvIGluaXRcbi1cdCAqIHdpdGhpbiB0aGUgdGltZW91dCwgaXQmIzM5O2xsIGltbWVkaWF0ZWx5IHJlcGx5IHdpdGggUlNULCBiZWNhdXNlIHRoZXJlJiMzOTtzIG5vXG4tXHQgKiBsaXN0ZW5lciBvbiB0aGUgcG9ydCB5ZXQuXG4tXHQgKlxuLVx0ICogdmhvc3RfdnFfZ2V0X2JhY2tlbmQoKSB3aXRob3V0IHZxLVx1MDAzZW11dGV4IGlzIGFjY2VwdGFibGUgaGVyZTogbG9ja2luZ1xuLVx0ICogdGhlIG11dGV4IHdvdWxkIGJlIHRvbyBleHBlbnNpdmUgaW4gdGhpcyBob3QgcGF0aCwgYW5kIHdlIGFscmVhZHkgaGF2ZVxuLVx0ICogYWxsIHRoZSBvdXRjb21lcyBjb3ZlcmVkOiBpZiB0aGUgYmFja2VuZCBiZWNvbWVzIE5VTEwgcmlnaHQgYWZ0ZXIgdGhlIGNoZWNrLFxuLVx0ICogdmhvc3RfdHJhbnNwb3J0X2RvX3NlbmRfcGt0KCkgd2lsbCBjaGVjayBpdCB1bmRlciB0aGUgbXV0ZXggYW55d2F5LlxuJiM0MztcdC8qIEZhc3QtZmFpbCB1bnRpbCB0aGUgZ3Vlc3QgZmlyc3QgZW5hYmxlcyB0aGUgZGV2aWNlIChTRVRfUlVOTklORygxKSkuXG4mIzQzO1x0ICogQmVmb3JlIHRoYXQgdGhlcmUgaXMgbm8gbGlzdGVuZXIsIHNvIHF1ZXVpbmcgaXMgcG9pbnRsZXNzLlxuJiM0MztcdCAqICYjMzk7ZXZlcl9zdGFydGVkJiMzOTsgaXMgbmV2ZXIgY2xlYXJlZCwgc28gb25jZSB3ZSYjMzk7cmUgdXAgd2Uga2VlcCBxdWV1aW5nXG4mIzQzO1x0ICogYWNyb3NzIGxhdGVyIHN0b3AgLyBDUFItcGF1c2Ugd2luZG93cy5cbiBcdCAqL1xuLVx0aWYgKHVubGlrZWx5KCFkYXRhX3JhY2Uodmhvc3RfdnFfZ2V0X2JhY2tlbmQoXHUwMDI2dnNvY2stXHUwMDNldnFzW1ZTT0NLX1ZRX1JYXSkpKSkge1xuJiM0MztcdGlmICh1bmxpa2VseSghUkVBRF9PTkNFKHZzb2NrLVx1MDAzZWV2ZXJfc3RhcnRlZCkpKSB7XG4gXHRcdHJjdV9yZWFkX3VubG9jaygpO1xuIFx0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIC1FSE9TVFVOUkVBQ0g7XG5AQCAtNjQwLDExICYjNDM7NjM2LDIzIEBAIHN0YXRpYyBpbnQgdmhvc3RfdnNvY2tfc3RhcnQoc3RydWN0IHZob3N0X3Zzb2NrICp2c29jaylcbiBcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnZxLVx1MDAzZW11dGV4KTtcbiBcdH1cbiBcbiYjNDM7XHQvKiBTZXQgJiMzOTtldmVyX3N0YXJ0ZWQmIzM5OyBmbGFnIG9uIHRoZSBmaXJzdCBzdGFydDsgbmV2ZXIgY2xlYXJlZCwgc28gc2VuZF9wa3RcbiYjNDM7XHQgKiBrZWVwcyBxdWV1aW5nIChpbnN0ZWFkIG9mIGZhc3QtZmFpbGluZykgb24gbGF0ZXIgc3RvcCAvIENQUiBwYXVzZXMuXG4mIzQzO1x0ICovXG4mIzQzO1x0V1JJVEVfT05DRSh2c29jay1cdTAwM2VldmVyX3N0YXJ0ZWQsIHRydWUpO1xuJiM0MztcbiBcdC8qIFNvbWUgcGFja2V0cyBtYXkgaGF2ZSBiZWVuIHF1ZXVlZCBiZWZvcmUgdGhlIGRldmljZSB3YXMgc3RhcnRlZCxcbiBcdCAqIGxldCYjMzk7cyBraWNrIHRoZSBzZW5kIHdvcmtlciB0byBzZW5kIHRoZW0uXG4gXHQgKi9cbiBcdHZob3N0X3ZxX3dvcmtfcXVldWUoXHUwMDI2dnNvY2stXHUwMDNldnFzW1ZTT0NLX1ZRX1JYXSwgXHUwMDI2dnNvY2stXHUwMDNlc2VuZF9wa3Rfd29yayk7XG4gXG4mIzQzO1x0LyogVGhlIGd1ZXN0IG1heSBoYXZlIGFkZGVkIFRYIGJ1ZmZlcnMgd2hpbGUgdGhlIGRldmljZSB3YXMgc3RvcHBlZFxuJiM0MztcdCAqIChlLmcuIGFjcm9zcyBWSE9TVF9SRVNFVF9PV05FUikgYW5kIHRoZWlyIGtpY2tzIGdvdCBjb25zdW1lZCBieVxuJiM0MztcdCAqIHRoZSBOVUxMLWJhY2tlbmQgd2luZG93LiAgUmUtc2NhbiB0aGUgVFggVlEsIG1pcnJvcmluZyB0aGUgUlhcbiYjNDM7XHQgKiBzZW5kLXdvcmtlciBraWNrIGFib3ZlLlxuJiM0MztcdCAqL1xuJiM0MztcdHZob3N0X3BvbGxfcXVldWUoXHUwMDI2dnNvY2stXHUwMDNldnFzW1ZTT0NLX1ZRX1RYXS5wb2xsKTtcbiYjNDM7XG4gXHRtdXRleF91bmxvY2soXHUwMDI2dnNvY2stXHUwMDNlZGV2Lm11dGV4KTtcbiBcdHJldHVybiAwO1xuIFxuQEAgLTY2NCw5ICYjNDM7NjcyLDI0IEBAIHN0YXRpYyBpbnQgdmhvc3RfdnNvY2tfc3RhcnQoc3RydWN0IHZob3N0X3Zzb2NrICp2c29jaylcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuLXN0YXRpYyBpbnQgdmhvc3RfdnNvY2tfc3RvcChzdHJ1Y3Qgdmhvc3RfdnNvY2sgKnZzb2NrLCBib29sIGNoZWNrX293bmVyKVxuJiM0MztzdGF0aWMgdm9pZCB2aG9zdF92c29ja19kcm9wX2JhY2tlbmRzKHN0cnVjdCB2aG9zdF92c29jayAqdnNvY2spXG4ge1xuJiM0MztcdHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgKnZxO1xuIFx0c2l6ZV90IGk7XG4mIzQzO1xuJiM0MztcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXHUwMDI2dnNvY2stXHUwMDNlZGV2Lm11dGV4KTtcbiYjNDM7XG4mIzQzO1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRSh2c29jay1cdTAwM2V2cXMpOyBpJiM0MzsmIzQzOykge1xuJiM0MztcdFx0dnEgPSBcdTAwMjZ2c29jay1cdTAwM2V2cXNbaV07XG4mIzQzO1xuJiM0MztcdFx0bXV0ZXhfbG9jayhcdTAwMjZ2cS1cdTAwM2VtdXRleCk7XG4mIzQzO1x0XHR2aG9zdF92cV9zZXRfYmFja2VuZCh2cSwgTlVMTCk7XG4mIzQzO1x0XHRtdXRleF91bmxvY2soXHUwMDI2dnEtXHUwMDNlbXV0ZXgpO1xuJiM0MztcdH1cbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludCB2aG9zdF92c29ja19zdG9wKHN0cnVjdCB2aG9zdF92c29jayAqdnNvY2ssIGJvb2wgY2hlY2tfb3duZXIpXG4mIzQzO3tcbiBcdGludCByZXQgPSAwO1xuIFxuIFx0bXV0ZXhfbG9jayhcdTAwMjZ2c29jay1cdTAwM2VkZXYubXV0ZXgpO1xuQEAgLTY3NywxNCAmIzQzOzcwMCw3IEBAIHN0YXRpYyBpbnQgdmhvc3RfdnNvY2tfc3RvcChzdHJ1Y3Qgdmhvc3RfdnNvY2sgKnZzb2NrLCBib29sIGNoZWNrX293bmVyKVxuIFx0XHRcdGdvdG8gZXJyO1xuIFx0fVxuIFxuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRSh2c29jay1cdTAwM2V2cXMpOyBpJiM0MzsmIzQzOykge1xuLVx0XHRzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSA9IFx1MDAyNnZzb2NrLVx1MDAzZXZxc1tpXTtcbi1cbi1cdFx0bXV0ZXhfbG9jayhcdTAwMjZ2cS1cdTAwM2VtdXRleCk7XG4tXHRcdHZob3N0X3ZxX3NldF9iYWNrZW5kKHZxLCBOVUxMKTtcbi1cdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnZxLVx1MDAzZW11dGV4KTtcbi1cdH1cbi1cbiYjNDM7XHR2aG9zdF92c29ja19kcm9wX2JhY2tlbmRzKHZzb2NrKTtcbiBlcnI6XG4gXHRtdXRleF91bmxvY2soXHUwMDI2dnNvY2stXHUwMDNlZGV2Lm11dGV4KTtcbiBcdHJldHVybiByZXQ7XG5AQCAtNzIwLDYgJiM0Mzs3MzYsNyBAQCBzdGF0aWMgaW50IHZob3N0X3Zzb2NrX2Rldl9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxuIFxuIFx0dnNvY2stXHUwMDNlZ3Vlc3RfY2lkID0gMDsgLyogbm8gQ0lEIGFzc2lnbmVkIHlldCAqL1xuIFx0dnNvY2stXHUwMDNlc2VxcGFja2V0X2FsbG93ID0gZmFsc2U7XG4mIzQzO1x0dnNvY2stXHUwMDNlZXZlcl9zdGFydGVkID0gZmFsc2U7XG4gXG4gXHRhdG9taWNfc2V0KFx1MDAyNnZzb2NrLVx1MDAzZXF1ZXVlZF9yZXBsaWVzLCAwKTtcbiBcbkBAIC04ODYsNiAmIzQzOzkwMywyOSBAQCBzdGF0aWMgaW50IHZob3N0X3Zzb2NrX3NldF9mZWF0dXJlcyhzdHJ1Y3Qgdmhvc3RfdnNvY2sgKnZzb2NrLCB1NjQgZmVhdHVyZXMpXG4gXHRyZXR1cm4gLUVGQVVMVDtcbiB9XG4gXG4mIzQzO3N0YXRpYyBsb25nIHZob3N0X3Zzb2NrX3Jlc2V0X293bmVyKHN0cnVjdCB2aG9zdF92c29jayAqdnNvY2spXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3Qgdmhvc3RfaW90bGIgKnVtZW07XG4mIzQzO1x0bG9uZyBlcnI7XG4mIzQzO1xuJiM0MztcdG11dGV4X2xvY2soXHUwMDI2dnNvY2stXHUwMDNlZGV2Lm11dGV4KTtcbiYjNDM7XHRlcnIgPSB2aG9zdF9kZXZfY2hlY2tfb3duZXIoXHUwMDI2dnNvY2stXHUwMDNlZGV2KTtcbiYjNDM7XHRpZiAoZXJyKVxuJiM0MztcdFx0Z290byBkb25lO1xuJiM0MztcdHVtZW0gPSB2aG9zdF9kZXZfcmVzZXRfb3duZXJfcHJlcGFyZSgpO1xuJiM0MztcdGlmICghdW1lbSkge1xuJiM0MztcdFx0ZXJyID0gLUVOT01FTTtcbiYjNDM7XHRcdGdvdG8gZG9uZTtcbiYjNDM7XHR9XG4mIzQzO1x0dmhvc3RfdnNvY2tfZHJvcF9iYWNrZW5kcyh2c29jayk7XG4mIzQzO1x0dmhvc3RfdnNvY2tfZmx1c2godnNvY2spO1xuJiM0MztcdHZob3N0X2Rldl9zdG9wKFx1MDAyNnZzb2NrLVx1MDAzZWRldik7XG4mIzQzO1x0dmhvc3RfZGV2X3Jlc2V0X293bmVyKFx1MDAyNnZzb2NrLVx1MDAzZWRldiwgdW1lbSk7XG4mIzQzO2RvbmU6XG4mIzQzO1x0bXV0ZXhfdW5sb2NrKFx1MDAyNnZzb2NrLVx1MDAzZWRldi5tdXRleCk7XG4mIzQzO1x0cmV0dXJuIGVycjtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgbG9uZyB2aG9zdF92c29ja19kZXZfaW9jdGwoc3RydWN0IGZpbGUgKmYsIHVuc2lnbmVkIGludCBpb2N0bCxcbiBcdFx0XHRcdCAgdW5zaWduZWQgbG9uZyBhcmcpXG4ge1xuQEAgLTkyOSw2ICYjNDM7OTY5LDggQEAgc3RhdGljIGxvbmcgdmhvc3RfdnNvY2tfZGV2X2lvY3RsKHN0cnVjdCBmaWxlICpmLCB1bnNpZ25lZCBpbnQgaW9jdGwsXG4gXHRcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIFx0XHR2aG9zdF9zZXRfYmFja2VuZF9mZWF0dXJlcyhcdTAwMjZ2c29jay1cdTAwM2VkZXYsIGZlYXR1cmVzKTtcbiBcdFx0cmV0dXJuIDA7XG4mIzQzO1x0Y2FzZSBWSE9TVF9SRVNFVF9PV05FUjpcbiYjNDM7XHRcdHJldHVybiB2aG9zdF92c29ja19yZXNldF9vd25lcih2c29jayk7XG4gXHRkZWZhdWx0OlxuIFx0XHRtdXRleF9sb2NrKFx1MDAyNnZzb2NrLVx1MDAzZWRldi5tdXRleCk7XG4gXHRcdHIgPSB2aG9zdF9kZXZfaW9jdGwoXHUwMDI2dnNvY2stXHUwMDNlZGV2LCBpb2N0bCwgYXJncCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDE6MzE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VkhPU1RfVlNPQ0smIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2aG9zdF93b3JrZXJzX2ZyZWUmIzM0OywKICAgICYjMzQ7dmhvc3RfdnNvY2tfc3RhcnQmIzM0OywKICAgICYjMzQ7dmhvc3RfdnNvY2tfc3RvcCYjMzQ7LAogICAgJiMzNDt2aG9zdF92c29ja19yZXNldF9vd25lciYjMzQ7LAogICAgJiMzNDt2aG9zdF92c29ja19kcm9wX2JhY2tlbmRzJiMzNDssCiAgICAmIzM0O3Zob3N0X3Zzb2NrX2Rldl9pb2N0bCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgdmhvc3QgdnNvY2sgZHJpdmVyIHRvIGhhbmRsZSB0aGUgVkhPU1RfUkVTRVRfT1dORVIgaW9jdGwsIGZpeGVzIHdvcmtlciBmcmVlaW5nIGxvZ2ljIGluIHRoZSB2aG9zdCBjb3JlLCBhbmQgY2hhbmdlcyB0aGUgcGFja2V0IHNlbmRpbmcgbG9naWMgdG8gd2FpdCBmb3IgdGhlIGRldmljZSB0byBiZSBzdGFydGVkLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSBjb250cm9sIGFuZCBkYXRhIHBhdGhzIG9mIHRoZSB2aG9zdCB2c29jayBkcml2ZXIuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDFmNWU1Y2UyYWZiMzdlYWUxYWQzNTMwNjBmNzM1ZjdlNzEyYjljMGYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCAxNSAwMTozMTo1MyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmhvc3Qvdmhvc3QuYyBiL2RyaXZlcnMvdmhvc3Qvdmhvc3QuYwppbmRleCA0YzUyNWIzZTE2ZWFkOC4uMGQxNDE0ZDQwZjRlNzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmhvc3Qvdmhvc3QuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3Zob3N0L3Zob3N0LmMKQEAgLTcyOSw2ICYjNDM7NzI5LDIxIEBAIHN0YXRpYyB2b2lkIHZob3N0X3dvcmtlcnNfZnJlZShzdHJ1Y3Qgdmhvc3RfZGV2ICpkZXYpCiAKIAlmb3IgKGkgPSAwOyBpICZsdDsgZGV2LSZndDtudnFzOyBpJiM0MzsmIzQzOykKIAkJcmN1X2Fzc2lnbl9wb2ludGVyKGRldi0mZ3Q7dnFzW2ldLSZndDt3b3JrZXIsIE5VTEwpOwomIzQzOwomIzQzOwkvKgomIzQzOwkgKiB2aG9zdF92cV93b3JrX3F1ZXVlKCkgcmVhZHMgdnEtJmd0O3dvcmtlciB1bmRlciByY3VfcmVhZF9sb2NrKCksIHNvIGEKJiM0MzsJICogY2FsbGVyIHRoYXQgZmV0Y2hlZCBhIHdvcmtlciBiZWZvcmUgd2UgY2xlYXJlZCB0aGUgcG9pbnRlcnMgYWJvdmUKJiM0MzsJICogbWF5IHN0aWxsIGJlIGFib3V0IHRvIHF1ZXVlIHdvcmsgb24gaXQuICBXYWl0IGZvciB0aG9zZSBSQ1UgcmVhZGVycwomIzQzOwkgKiB0byBmaW5pc2ggYmVmb3JlIGZyZWVpbmcgdGhlIHdvcmtlciwgdGhlbiBydW4gd2hhdGV2ZXIgdGhleSBxdWV1ZWQKJiM0MzsJICogc28gbm90aGluZyBpcyBsZWZ0IHdpdGggVkhPU1RfV09SS19RVUVVRUQgc2V0LiAgTWlycm9ycwomIzQzOwkgKiB2aG9zdF93b3JrZXJfa2lsbGVkKCkuCiYjNDM7CSAqLwomIzQzOwlpZiAoIXhhX2VtcHR5KCZhbXA7ZGV2LSZndDt3b3JrZXJfeGEpKSB7CiYjNDM7CQlzeW5jaHJvbml6ZV9yY3UoKTsKJiM0MzsJCXhhX2Zvcl9lYWNoKCZhbXA7ZGV2LSZndDt3b3JrZXJfeGEsIGksIHdvcmtlcikKJiM0MzsJCQl2aG9zdF9ydW5fd29ya19saXN0KHdvcmtlcik7CiYjNDM7CX0KJiM0MzsKIAkvKgogCSAqIEZyZWUgdGhlIGRlZmF1bHQgd29ya2VyIHdlIGNyZWF0ZWQgYW5kIGNsZWFudXAgd29ya2VycyB1c2Vyc3BhY2UKIAkgKiBjcmVhdGVkIGJ1dCBjb3VsZG4mIzM5O3QgY2xlYW4gdXAgKGl0IGZvcmdvdCBvciBjcmFzaGVkKS4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmhvc3QvdnNvY2suYyBiL2RyaXZlcnMvdmhvc3QvdnNvY2suYwppbmRleCA5YWFhYjZiYjgwNjFjMS4uODZmMjVmZjgwNzIyZDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmhvc3QvdnNvY2suYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3Zob3N0L3Zzb2NrLmMKQEAgLTYxLDYgJiM0Mzs2MSw3IEBAIHN0cnVjdCB2aG9zdF92c29jayB7CiAKIAl1MzIgZ3Vlc3RfY2lkOwogCWJvb2wgc2VxcGFja2V0X2FsbG93OwomIzQzOwlib29sIGV2ZXJfc3RhcnRlZDsgLyogc2V0IG9uIGZpcnN0IFNFVF9SVU5OSU5HKDEpOyBuZXZlciBjbGVhcmVkICovCiB9OwogCiBzdGF0aWMgdTMyIHZob3N0X3RyYW5zcG9ydF9nZXRfbG9jYWxfY2lkKHZvaWQpCkBAIC0zMDIsMTcgJiM0MzszMDMsMTIgQEAgdmhvc3RfdHJhbnNwb3J0X3NlbmRfcGt0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXQgKm5ldCkKIAkJcmV0dXJuIC1FTk9ERVY7CiAJfQogCi0JLyogRmFzdC1mYWlsIGlmIHRoZSBndWVzdCBoYXNuJiMzOTt0IGVuYWJsZWQgdGhlIFJYIHZxIHlldC4gUXVldWluZyB0aGUgcGFja2V0Ci0JICogYW5kIG1ha2luZyB0aGUgY2FsbGVyIHdhaXQgaXMgcG9pbnRsZXNzOiBldmVuIGlmIHRoZSBndWVzdCBtYW5hZ2VzIHRvIGluaXQKLQkgKiB3aXRoaW4gdGhlIHRpbWVvdXQsIGl0JiMzOTtsbCBpbW1lZGlhdGVseSByZXBseSB3aXRoIFJTVCwgYmVjYXVzZSB0aGVyZSYjMzk7cyBubwotCSAqIGxpc3RlbmVyIG9uIHRoZSBwb3J0IHlldC4KLQkgKgotCSAqIHZob3N0X3ZxX2dldF9iYWNrZW5kKCkgd2l0aG91dCB2cS0mZ3Q7bXV0ZXggaXMgYWNjZXB0YWJsZSBoZXJlOiBsb2NraW5nCi0JICogdGhlIG11dGV4IHdvdWxkIGJlIHRvbyBleHBlbnNpdmUgaW4gdGhpcyBob3QgcGF0aCwgYW5kIHdlIGFscmVhZHkgaGF2ZQotCSAqIGFsbCB0aGUgb3V0Y29tZXMgY292ZXJlZDogaWYgdGhlIGJhY2tlbmQgYmVjb21lcyBOVUxMIHJpZ2h0IGFmdGVyIHRoZSBjaGVjaywKLQkgKiB2aG9zdF90cmFuc3BvcnRfZG9fc2VuZF9wa3QoKSB3aWxsIGNoZWNrIGl0IHVuZGVyIHRoZSBtdXRleCBhbnl3YXkuCiYjNDM7CS8qIEZhc3QtZmFpbCB1bnRpbCB0aGUgZ3Vlc3QgZmlyc3QgZW5hYmxlcyB0aGUgZGV2aWNlIChTRVRfUlVOTklORygxKSkuCiYjNDM7CSAqIEJlZm9yZSB0aGF0IHRoZXJlIGlzIG5vIGxpc3RlbmVyLCBzbyBxdWV1aW5nIGlzIHBvaW50bGVzcy4KJiM0MzsJICogJiMzOTtldmVyX3N0YXJ0ZWQmIzM5OyBpcyBuZXZlciBjbGVhcmVkLCBzbyBvbmNlIHdlJiMzOTtyZSB1cCB3ZSBrZWVwIHF1ZXVpbmcKJiM0MzsJICogYWNyb3NzIGxhdGVyIHN0b3AgLyBDUFItcGF1c2Ugd2luZG93cy4KIAkgKi8KLQlpZiAodW5saWtlbHkoIWRhdGFfcmFjZSh2aG9zdF92cV9nZXRfYmFja2VuZCgmYW1wO3Zzb2NrLSZndDt2cXNbVlNPQ0tfVlFfUlhdKSkpKSB7CiYjNDM7CWlmICh1bmxpa2VseSghUkVBRF9PTkNFKHZzb2NrLSZndDtldmVyX3N0YXJ0ZWQpKSkgewogCQlyY3VfcmVhZF91bmxvY2soKTsKIAkJa2ZyZWVfc2tiKHNrYik7CiAJCXJldHVybiAtRUhPU1RVTlJFQUNIOwpAQCAtNjQwLDExICYjNDM7NjM2LDIzIEBAIHN0YXRpYyBpbnQgdmhvc3RfdnNvY2tfc3RhcnQoc3RydWN0IHZob3N0X3Zzb2NrICp2c29jaykKIAkJbXV0ZXhfdW5sb2NrKCZhbXA7dnEtJmd0O211dGV4KTsKIAl9CiAKJiM0MzsJLyogU2V0ICYjMzk7ZXZlcl9zdGFydGVkJiMzOTsgZmxhZyBvbiB0aGUgZmlyc3Qgc3RhcnQ7IG5ldmVyIGNsZWFyZWQsIHNvIHNlbmRfcGt0CiYjNDM7CSAqIGtlZXBzIHF1ZXVpbmcgKGluc3RlYWQgb2YgZmFzdC1mYWlsaW5nKSBvbiBsYXRlciBzdG9wIC8gQ1BSIHBhdXNlcy4KJiM0MzsJICovCiYjNDM7CVdSSVRFX09OQ0UodnNvY2stJmd0O2V2ZXJfc3RhcnRlZCwgdHJ1ZSk7CiYjNDM7CiAJLyogU29tZSBwYWNrZXRzIG1heSBoYXZlIGJlZW4gcXVldWVkIGJlZm9yZSB0aGUgZGV2aWNlIHdhcyBzdGFydGVkLAogCSAqIGxldCYjMzk7cyBraWNrIHRoZSBzZW5kIHdvcmtlciB0byBzZW5kIHRoZW0uCiAJICovCiAJdmhvc3RfdnFfd29ya19xdWV1ZSgmYW1wO3Zzb2NrLSZndDt2cXNbVlNPQ0tfVlFfUlhdLCAmYW1wO3Zzb2NrLSZndDtzZW5kX3BrdF93b3JrKTsKIAomIzQzOwkvKiBUaGUgZ3Vlc3QgbWF5IGhhdmUgYWRkZWQgVFggYnVmZmVycyB3aGlsZSB0aGUgZGV2aWNlIHdhcyBzdG9wcGVkCiYjNDM7CSAqIChlLmcuIGFjcm9zcyBWSE9TVF9SRVNFVF9PV05FUikgYW5kIHRoZWlyIGtpY2tzIGdvdCBjb25zdW1lZCBieQomIzQzOwkgKiB0aGUgTlVMTC1iYWNrZW5kIHdpbmRvdy4gIFJlLXNjYW4gdGhlIFRYIFZRLCBtaXJyb3JpbmcgdGhlIFJYCiYjNDM7CSAqIHNlbmQtd29ya2VyIGtpY2sgYWJvdmUuCiYjNDM7CSAqLwomIzQzOwl2aG9zdF9wb2xsX3F1ZXVlKCZhbXA7dnNvY2stJmd0O3Zxc1tWU09DS19WUV9UWF0ucG9sbCk7CiYjNDM7CiAJbXV0ZXhfdW5sb2NrKCZhbXA7dnNvY2stJmd0O2Rldi5tdXRleCk7CiAJcmV0dXJuIDA7CiAKQEAgLTY2NCw5ICYjNDM7NjcyLDI0IEBAIHN0YXRpYyBpbnQgdmhvc3RfdnNvY2tfc3RhcnQoc3RydWN0IHZob3N0X3Zzb2NrICp2c29jaykKIAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgaW50IHZob3N0X3Zzb2NrX3N0b3Aoc3RydWN0IHZob3N0X3Zzb2NrICp2c29jaywgYm9vbCBjaGVja19vd25lcikKJiM0MztzdGF0aWMgdm9pZCB2aG9zdF92c29ja19kcm9wX2JhY2tlbmRzKHN0cnVjdCB2aG9zdF92c29jayAqdnNvY2spCiB7CiYjNDM7CXN0cnVjdCB2aG9zdF92aXJ0cXVldWUgKnZxOwogCXNpemVfdCBpOwomIzQzOwomIzQzOwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZhbXA7dnNvY2stJmd0O2Rldi5tdXRleCk7CiYjNDM7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBBUlJBWV9TSVpFKHZzb2NrLSZndDt2cXMpOyBpJiM0MzsmIzQzOykgewomIzQzOwkJdnEgPSAmYW1wO3Zzb2NrLSZndDt2cXNbaV07CiYjNDM7CiYjNDM7CQltdXRleF9sb2NrKCZhbXA7dnEtJmd0O211dGV4KTsKJiM0MzsJCXZob3N0X3ZxX3NldF9iYWNrZW5kKHZxLCBOVUxMKTsKJiM0MzsJCW11dGV4X3VubG9jaygmYW1wO3ZxLSZndDttdXRleCk7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCB2aG9zdF92c29ja19zdG9wKHN0cnVjdCB2aG9zdF92c29jayAqdnNvY2ssIGJvb2wgY2hlY2tfb3duZXIpCiYjNDM7ewogCWludCByZXQgPSAwOwogCiAJbXV0ZXhfbG9jaygmYW1wO3Zzb2NrLSZndDtkZXYubXV0ZXgpOwpAQCAtNjc3LDE0ICYjNDM7NzAwLDcgQEAgc3RhdGljIGludCB2aG9zdF92c29ja19zdG9wKHN0cnVjdCB2aG9zdF92c29jayAqdnNvY2ssIGJvb2wgY2hlY2tfb3duZXIpCiAJCQlnb3RvIGVycjsKIAl9CiAKLQlmb3IgKGkgPSAwOyBpICZsdDsgQVJSQVlfU0laRSh2c29jay0mZ3Q7dnFzKTsgaSYjNDM7JiM0MzspIHsKLQkJc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnEgPSAmYW1wO3Zzb2NrLSZndDt2cXNbaV07Ci0KLQkJbXV0ZXhfbG9jaygmYW1wO3ZxLSZndDttdXRleCk7Ci0JCXZob3N0X3ZxX3NldF9iYWNrZW5kKHZxLCBOVUxMKTsKLQkJbXV0ZXhfdW5sb2NrKCZhbXA7dnEtJmd0O211dGV4KTsKLQl9Ci0KJiM0MzsJdmhvc3RfdnNvY2tfZHJvcF9iYWNrZW5kcyh2c29jayk7CiBlcnI6CiAJbXV0ZXhfdW5sb2NrKCZhbXA7dnNvY2stJmd0O2Rldi5tdXRleCk7CiAJcmV0dXJuIHJldDsKQEAgLTcyMCw2ICYjNDM7NzM2LDcgQEAgc3RhdGljIGludCB2aG9zdF92c29ja19kZXZfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKIAogCXZzb2NrLSZndDtndWVzdF9jaWQgPSAwOyAvKiBubyBDSUQgYXNzaWduZWQgeWV0ICovCiAJdnNvY2stJmd0O3NlcXBhY2tldF9hbGxvdyA9IGZhbHNlOwomIzQzOwl2c29jay0mZ3Q7ZXZlcl9zdGFydGVkID0gZmFsc2U7CiAKIAlhdG9taWNfc2V0KCZhbXA7dnNvY2stJmd0O3F1ZXVlZF9yZXBsaWVzLCAwKTsKIApAQCAtODg2LDYgJiM0Mzs5MDMsMjkgQEAgc3RhdGljIGludCB2aG9zdF92c29ja19zZXRfZmVhdHVyZXMoc3RydWN0IHZob3N0X3Zzb2NrICp2c29jaywgdTY0IGZlYXR1cmVzKQogCXJldHVybiAtRUZBVUxUOwogfQogCiYjNDM7c3RhdGljIGxvbmcgdmhvc3RfdnNvY2tfcmVzZXRfb3duZXIoc3RydWN0IHZob3N0X3Zzb2NrICp2c29jaykKJiM0Mzt7CiYjNDM7CXN0cnVjdCB2aG9zdF9pb3RsYiAqdW1lbTsKJiM0MzsJbG9uZyBlcnI7CiYjNDM7CiYjNDM7CW11dGV4X2xvY2soJmFtcDt2c29jay0mZ3Q7ZGV2Lm11dGV4KTsKJiM0MzsJZXJyID0gdmhvc3RfZGV2X2NoZWNrX293bmVyKCZhbXA7dnNvY2stJmd0O2Rldik7CiYjNDM7CWlmIChlcnIpCiYjNDM7CQlnb3RvIGRvbmU7CiYjNDM7CXVtZW0gPSB2aG9zdF9kZXZfcmVzZXRfb3duZXJfcHJlcGFyZSgpOwomIzQzOwlpZiAoIXVtZW0pIHsKJiM0MzsJCWVyciA9IC1FTk9NRU07CiYjNDM7CQlnb3RvIGRvbmU7CiYjNDM7CX0KJiM0MzsJdmhvc3RfdnNvY2tfZHJvcF9iYWNrZW5kcyh2c29jayk7CiYjNDM7CXZob3N0X3Zzb2NrX2ZsdXNoKHZzb2NrKTsKJiM0MzsJdmhvc3RfZGV2X3N0b3AoJmFtcDt2c29jay0mZ3Q7ZGV2KTsKJiM0MzsJdmhvc3RfZGV2X3Jlc2V0X293bmVyKCZhbXA7dnNvY2stJmd0O2RldiwgdW1lbSk7CiYjNDM7ZG9uZToKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7dnNvY2stJmd0O2Rldi5tdXRleCk7CiYjNDM7CXJldHVybiBlcnI7CiYjNDM7fQomIzQzOwogc3RhdGljIGxvbmcgdmhvc3RfdnNvY2tfZGV2X2lvY3RsKHN0cnVjdCBmaWxlICpmLCB1bnNpZ25lZCBpbnQgaW9jdGwsCiAJCQkJICB1bnNpZ25lZCBsb25nIGFyZykKIHsKQEAgLTkyOSw2ICYjNDM7OTY5LDggQEAgc3RhdGljIGxvbmcgdmhvc3RfdnNvY2tfZGV2X2lvY3RsKHN0cnVjdCBmaWxlICpmLCB1bnNpZ25lZCBpbnQgaW9jdGwsCiAJCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAJCXZob3N0X3NldF9iYWNrZW5kX2ZlYXR1cmVzKCZhbXA7dnNvY2stJmd0O2RldiwgZmVhdHVyZXMpOwogCQlyZXR1cm4gMDsKJiM0MzsJY2FzZSBWSE9TVF9SRVNFVF9PV05FUjoKJiM0MzsJCXJldHVybiB2aG9zdF92c29ja19yZXNldF9vd25lcih2c29jayk7CiAJZGVmYXVsdDoKIAkJbXV0ZXhfbG9jaygmYW1wO3Zzb2NrLSZndDtkZXYubXV0ZXgpOwogCQlyID0gdmhvc3RfZGV2X2lvY3RsKCZhbXA7dnNvY2stJmd0O2RldiwgaW9jdGwsIGFyZ3ApOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwMTozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTE4CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMjQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgdmhvc3QtdnNvY2sgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0b3VjaGVzIGBkcml2ZXJzL3Zob3N0L3Zob3N0LmNgIGFuZCBgZHJpdmVycy92aG9zdC92c29jay5jYC4gSXQgbG9va3MgbGlrZSBpdCYjMzk7cyBhZGRpbmcgc29tZSBzdHVmZiB0byBgdmhvc3Rfd29ya2Vyc19mcmVlYCBpbiBgdmhvc3QuY2AsIGFuZCBtYWtpbmcgY2hhbmdlcyB0byBhIGZldyBmdW5jdGlvbnMgaW4gYHZzb2NrLmNgIOKAkyBgdmhvc3RfdnNvY2tfc3RhcnRgLCBgdmhvc3RfdnNvY2tfc3RvcGAsIGB2aG9zdF92c29ja19kZXZfb3BlbmAsIGB2aG9zdF92c29ja19kZXZfaW9jdGxgLCBhbmQgaXQmIzM5O3MgaW50cm9kdWNpbmcgYHZob3N0X3Zzb2NrX3Jlc2V0X293bmVyYCBhcyB3ZWxsLgoKVGhlIGZpcnN0IHRoaW5nIEkgd2FudCB0byBrbm93IGlzLCBpcyB0aGlzIGFjdHVhbGx5IGRvaW5nIGFueXRoaW5nIHVzZWZ1bCBhbmQsIGltcG9ydGFudGx5LCBpcyBpdCAqcmVhY2hhYmxlKj8gRXhhbWluaW5nIHRoZSBgdmhvc3RfdnNvY2tfZGV2X2lvY3RsYCBjaGFuZ2UsIHNwZWNpZmljYWxseSB0aGUgYWRkaXRpb24gb2YgaGFuZGxpbmcgYFZIT1NUX1JFU0VUX09XTkVSYCwgYW5kIHRoZSBjaGFuZ2UgaW4gYHZob3N0X3RyYW5zcG9ydF9zZW5kX3BrdGAgdG8gbGV2ZXJhZ2UgYHZzb2NrLSZndDtldmVyX3N0YXJ0ZWRgIGluc3RlYWQgb2YgY2hlY2tpbmcgdGhlIGJhY2tlbmQsIGNvbmZpcm1zIHRoYXQgaXQgKmlzKiBmdW5jdGlvbmFsIGFuZCBjZXJ0YWlubHkgcmVhY2hhYmxlIHRocm91Z2ggdGhlIHVzdWFsIGlvY3RsIGNhbGxzIG9uIGAvZGV2L3Zob3N0LXZzb2NrYC4gTm8gc3VycHJpc2VzIHRoZXJlLgoKTmV4dCwgSSBuZWVkIHRvIGtub3cgd2hpY2ggY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSByZXF1aXJlZCBmb3IgdGhpcyB0byB3b3JrLiBJIGtub3cgYGRyaXZlcnMvdmhvc3QvdnNvY2suY2AgaXMgY29tcGlsZWQgd2hlbiBgQ09ORklHX1ZIT1NUX1ZTT0NLYCBpcyBlbmFibGVkLCBhbmQgSSYjMzk7bGwgY29uZmlybSB0aGF0IHF1aWNrbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDE6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7VkhPU1RfVlNPQ0smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3Zob3N0L01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmhvc3QvTWFrZWZpbGU9Nj12aG9zdF9zY3NpLXkgOj0gc2NzaS5vXG5kcml2ZXJzL3Zob3N0L01ha2VmaWxlLTctXG5kcml2ZXJzL3Zob3N0L01ha2VmaWxlOjg6b2JqLSQoQ09ORklHX1ZIT1NUX1ZTT0NLKSAmIzQzOz0gdmhvc3RfdnNvY2sub1xuZHJpdmVycy92aG9zdC9NYWtlZmlsZS05LXZob3N0X3Zzb2NrLXkgOj0gdnNvY2sub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDAxOjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ2MDUKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAzOTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTY29wZSBvZiBUaGlzIFBhdGNoKioKCk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdCwgeWVzLCBgQ09ORklHX1ZIT1NUX1ZTT0NLYCBpcyBkZWZpbml0ZWx5IHJlbGV2YW50IGhlcmUsIG5vIHF1ZXN0aW9uIGFib3V0IHRoYXQuIE5vdywgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzIGFuZCBpZGVudGlmeSB0aGUga2V5IGZ1bmN0aW9ucyB0aGF0IHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcuIFdlJiMzOTtyZSBsb29raW5nIGZvciB0aGUgZm9jdXMgc3ltYm9scywgdGhlIG9uZXMgdGhhdCByZXF1aXJlIGNhcmVmdWwgc2NydXRpbnkuCgpJdCBsb29rcyBsaWtlIHRoZSBwYXRjaCBtb2RpZmllcyBhIG51bWJlciBvZiBmdW5jdGlvbnM6IGB2aG9zdF93b3JrZXJzX2ZyZWVgLCBgdmhvc3RfdHJhbnNwb3J0X3NlbmRfcGt0YCwgYHZob3N0X3Zzb2NrX3N0YXJ0YCwgYHZob3N0X3Zzb2NrX2Ryb3BfYmFja2VuZHNgLCBgdmhvc3RfdnNvY2tfc3RvcGAsIGB2aG9zdF92c29ja19kZXZfb3BlbmAsIGB2aG9zdF92c29ja19zZXRfZmVhdHVyZXNgICh3aGljaCBJIHNlZSBpcyBjb250ZXh0LW9ubHkpLCBgdmhvc3RfdnNvY2tfcmVzZXRfb3duZXJgLCBhbmQgYHZob3N0X3Zzb2NrX2Rldl9pb2N0bGAuCgpPa2F5LCBhZnRlciBhIHF1aWNrIHN3ZWVwLCBJIHRoaW5rIHRoZSByZWFsIGZvY3VzIHNob3VsZCBiZSBvbjogYHZob3N0X3dvcmtlcnNfZnJlZWAsIGB2aG9zdF92c29ja19zdGFydGAsIGB2aG9zdF92c29ja19zdG9wYCwgYHZob3N0X3Zzb2NrX3Jlc2V0X293bmVyYCwgYW5kIGB2aG9zdF92c29ja19kZXZfaW9jdGxgLgoKUmlnaHQsIGxldCYjMzk7cyBzZWUsIGB2aG9zdF90cmFuc3BvcnRfc2VuZF9wa3RgIGlzIGEgcGFja2V0IHNlbmRlci4gVGhhdCBpcyBhIGhvdCBwYXRoIGZ1bmN0aW9uLCBzbyB3ZSBzaG91bGQgdHJ5IHRvIG1pbmltaXplIGFueSBpbXBhY3QgdGhlcmUuIGB2aG9zdF92c29ja19kZXZfb3BlbmAgaXMganVzdCBpbml0aWFsaXphdGlvbiwgc28gdGhhdCYjMzk7cyBsaWtlbHkgbGVzcyBjcml0aWNhbCwgYW5kIGB2aG9zdF92c29ja19kcm9wX2JhY2tlbmRzYCBpcyBqdXN0IGEgaGVscGVyIGZ1bmN0aW9uIHRoYXQmIzM5O3MgY2FsbGVkIGZyb20gYHZob3N0X3Zzb2NrX3N0b3BgIGFuZCBgdmhvc3RfdnNvY2tfcmVzZXRfb3duZXJgLgoKQWxyaWdodCwgbGV0JiMzOTtzIGRvdWJsZS1jaGVjayB0aGUgcG90ZW50aWFsIGZvciBwZXJmb3JtYW5jZSBpbXBhY3QuIGB2aG9zdF93b3JrZXJzX2ZyZWVgIGlzIGNhbGxlZCB3aGVuIHRoZSB2aG9zdCBkZXZpY2UgaXMgZnJlZWQsIHdoaWNoIHN1Z2dlc3RzIGl0IGlzbiYjMzk7dCBvbiBhIGhvdCBwYXRoLiBTbywgYHZob3N0X3Zzb2NrX3N0YXJ0YCwgYHZob3N0X3Zzb2NrX3N0b3BgLCBgdmhvc3RfdnNvY2tfcmVzZXRfb3duZXJgLCBhbmQgYHZob3N0X3Zzb2NrX2Rldl9pb2N0bGAgYXBwZWFyIHRvIGJlIGNvbnRyb2wgcGF0aCBmdW5jdGlvbnMuIE1ha2VzIHNlbnNlLiBKdXN0IHRvIGJlIGNvbXBsZXRlbHkgc3VyZSwgSSYjMzk7bGwgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBgdmhvc3Rfd29ya2Vyc19mcmVlYCBmdW5jdGlvbiBpbiBgZHJpdmVycy92aG9zdC92aG9zdC5jYCwganVzdCB0byBjb25maXJtIG15IGluaXRpYWwgYXNzZXNzbWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwMTozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2aG9zdF93b3JrZXJzX2ZyZWUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3Zob3N0L3Zob3N0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC92aG9zdC5jPTcxMD1zdGF0aWMgdm9pZCB2aG9zdF93b3JrZXJfZGVzdHJveShzdHJ1Y3Qgdmhvc3RfZGV2ICpkZXYsXG4tLVxuZHJpdmVycy92aG9zdC92aG9zdC5jLTcyMS1cbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYzo3MjI6c3RhdGljIHZvaWQgdmhvc3Rfd29ya2Vyc19mcmVlKHN0cnVjdCB2aG9zdF9kZXYgKmRldilcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYy03MjMte1xuLS1cbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYz0xMjE1PXZvaWQgdmhvc3RfZGV2X2NsZWFudXAoc3RydWN0IHZob3N0X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYy0xMjM4LVx0d2FrZV91cF9pbnRlcnJ1cHRpYmxlX3BvbGwoXHUwMDI2ZGV2LVx1MDAzZXdhaXQsIEVQT0xMSU4gfCBFUE9MTFJETk9STSk7XG5kcml2ZXJzL3Zob3N0L3Zob3N0LmM6MTIzOTpcdHZob3N0X3dvcmtlcnNfZnJlZShkZXYpO1xuZHJpdmVycy92aG9zdC92aG9zdC5jLTEyNDAtXHR2aG9zdF9kZXRhY2hfbW0oZGV2KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwMTozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NzY3CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSB2aG9zdF9kZXZfY2xlYW51cCBDYWxsKioKClJpZ2h0LCBzbyB3ZSYjMzk7cmUgZGl2aW5nIGludG8gdGhpcyBgdmhvc3RfZGV2X2NsZWFudXBgIGNhbGwuIFRoYXQgc2lnbmFscyB3ZSYjMzk7cmUgaW4gdGhlIG1pZHN0IG9mIGNsZWFuaW5nIHVwIGEgdmhvc3QgZGV2aWNlLCB3aGljaCBjb3VsZCBpbmRpY2F0ZSBhIHNodXRkb3duLCBhIHJlc2V0LCBvciBzb21lIG90aGVyIGRldmljZS1sZXZlbCB0ZWFyZG93bi4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gcGlucG9pbnQgdGhlIGV4YWN0IGNvbnRleHQgYW5kIHdoYXQgY29tcG9uZW50cyBhcmUgYmVpbmcgbWFuYWdlZCBkdXJpbmcgdGhpcyBjbGVhbnVwLiBHaXZlbiB0aGF0IHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggdmhvc3QgYW5kIHRoYXQgdnNvY2sgaXMgdGhlIHRvcGljLCBteSBpbml0aWFsIHJlYWN0aW9uIGlzIHRvIGludmVzdGlnYXRlIHRoZSB2c29jay1zcGVjaWZpYyBjbGVhbnVwIHJvdXRpbmVzLiBJ4oCZbGwgaW1tZWRpYXRlbHkgaGVhZCBvdmVyIHRvIGBkcml2ZXJzL3Zob3N0L3Zzb2NrLmNgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgY2xlYW51cCBsb2dpYyB1c2VkIHdpdGggYSB2aG9zdCBkZXZpY2UuIFRoZSBmdW5jdGlvbiBgdmhvc3RfdnNvY2tfcmVzZXRfb3duZXJgIHNvdW5kcyBsaWtlIGEga2V5IGZ1bmN0aW9uIHRvIGV4cGxvcmUuIEkgd2FudCB0byBzZWUgaG93IHRoZSB2aG9zdCB2c29jayBvd25lciBpcyByZXNldCBoZXJlIGJlY2F1c2UgaXQgaXMgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGhvbGRpbmcgdGhlIGtleSB0byBob3cgdGhlIHZzb2NrIGRldmljZSBpcyByZWxlYXNlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGZ1bmN0aW9uIGRvZXMgZHVyaW5nIGB2aG9zdF9kZXZfY2xlYW51cGAgc2luY2UgaXQgY291bGQgZGV0ZXJtaW5lIHRoZSByZXNvdXJjZSByZWxlYXNlLCBzdGF0ZSBjaGFuZ2VzLCBvciBvdGhlciBrZXkgY2xlYW51cCBzdGVwcyB0aGF0IGFyZSBwYXJ0IG9mIHRoZSBwcm9jZXNzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDAxOjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Zob3N0X3Zzb2NrX3Jlc2V0X293bmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC92c29jay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmhvc3QvdnNvY2suYz04NzE9c3RhdGljIGludCB2aG9zdF92c29ja19zZXRfZmVhdHVyZXMoc3RydWN0IHZob3N0X3Zzb2NrICp2c29jaywgdTY0IGZlYXR1cmVzKVxuLS1cbmRyaXZlcnMvdmhvc3QvdnNvY2suYy05MDUtXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmM6OTA2OnN0YXRpYyBsb25nIHZob3N0X3Zzb2NrX3Jlc2V0X293bmVyKHN0cnVjdCB2aG9zdF92c29jayAqdnNvY2spXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmMtOTA3LXtcbi0tXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmM9OTI5PXN0YXRpYyBsb25nIHZob3N0X3Zzb2NrX2Rldl9pb2N0bChzdHJ1Y3QgZmlsZSAqZiwgdW5zaWduZWQgaW50IGlvY3RsLFxuLS1cbmRyaXZlcnMvdmhvc3QvdnNvY2suYy05NzItXHRjYXNlIFZIT1NUX1JFU0VUX09XTkVSOlxuZHJpdmVycy92aG9zdC92c29jay5jOjk3MzpcdFx0cmV0dXJuIHZob3N0X3Zzb2NrX3Jlc2V0X293bmVyKHZzb2NrKTtcbmRyaXZlcnMvdmhvc3QvdnNvY2suYy05NzQtXHRkZWZhdWx0OlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDAxOjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYzNDcKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIE5ldyBGdW5jdGlvbioqCgpBbHJpZ2h0LCBhIG5ldyBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvLCBvZiBjb3Vyc2UsIHVuZGVyc3RhbmQgaXRzIHB1cnBvc2UuIEdpdmVuIHRoZSBjb250ZXh0LCBJJiMzOTttIGFscmVhZHkgYW50aWNpcGF0aW5nIGl0JiMzOTtzIHJlbGF0ZWQgdG8gc29tZSBraW5kIG9mIGNvbm5lY3Rpb24gbWFuYWdlbWVudCB3aXRoaW4gdGhlIHZob3N0X3Zzb2NrIGZyYW1ld29yaywgcHJvYmFibHkgY2xlYW51cCBvciByZXNvdXJjZSBoYW5kbGluZy4gSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byB0aGUgZGV0YWlscywgYnV0IG15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiB0aGUgZnVuY3Rpb24gbmFtZTogYHZob3N0X3Zzb2NrX2Ryb3BfYmFja2VuZHNgLiBUaGUgJiMzNDtkcm9wJiMzNDsgdmVyYiBpbXBsaWVzIHJlbGVhc2luZyBvciBzZXZlcmluZyBjb25uZWN0aW9ucy4gJiMzNDtCYWNrZW5kcyYjMzQ7IGluZGljYXRlcyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIHRoZSB0YXJnZXQgc2lkZSBvZiBhIHZob3N0X3Zzb2NrIGNvbm5lY3Rpb24uIFNvLCBteSBndXQgZmVlbGluZyBpcyB0aGlzIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciBncmFjZWZ1bGx5IHRlYXJpbmcgZG93biB2aG9zdF92c29jayBjb25uZWN0aW9ucyBvciBhc3NvY2lhdGVkIHJlc291cmNlcyBvbiB0aGUgZ3Vlc3Qgc2lkZSBvZiB0aGUgaW50ZXJmYWNlLCBwb3RlbnRpYWxseSBkdXJpbmcgc2h1dGRvd24gb3IgZHVlIHRvIGNvbm5lY3Rpb24gaXNzdWVzLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gbXkgaW5pdGlhbCBoeXBvdGhlc2lzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwMTozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2aG9zdF92c29ja19kcm9wX2JhY2tlbmRzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC92c29jay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmhvc3QvdnNvY2suYz02MDc9c3RhdGljIGludCB2aG9zdF92c29ja19zdGFydChzdHJ1Y3Qgdmhvc3RfdnNvY2sgKnZzb2NrKVxuLS1cbmRyaXZlcnMvdmhvc3QvdnNvY2suYy02NzQtXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmM6Njc1OnN0YXRpYyB2b2lkIHZob3N0X3Zzb2NrX2Ryb3BfYmFja2VuZHMoc3RydWN0IHZob3N0X3Zzb2NrICp2c29jaylcbmRyaXZlcnMvdmhvc3QvdnNvY2suYy02NzYte1xuLS1cbmRyaXZlcnMvdmhvc3QvdnNvY2suYz02OTE9c3RhdGljIGludCB2aG9zdF92c29ja19zdG9wKHN0cnVjdCB2aG9zdF92c29jayAqdnNvY2ssIGJvb2wgY2hlY2tfb3duZXIpXG4tLVxuZHJpdmVycy92aG9zdC92c29jay5jLTcwMi1cbmRyaXZlcnMvdmhvc3QvdnNvY2suYzo3MDM6XHR2aG9zdF92c29ja19kcm9wX2JhY2tlbmRzKHZzb2NrKTtcbmRyaXZlcnMvdmhvc3QvdnNvY2suYy03MDQtZXJyOlxuLS1cbmRyaXZlcnMvdmhvc3QvdnNvY2suYz05MDY9c3RhdGljIGxvbmcgdmhvc3RfdnNvY2tfcmVzZXRfb3duZXIoc3RydWN0IHZob3N0X3Zzb2NrICp2c29jaylcbi0tXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmMtOTE5LVx0fVxuZHJpdmVycy92aG9zdC92c29jay5jOjkyMDpcdHZob3N0X3Zzb2NrX2Ryb3BfYmFja2VuZHModnNvY2spO1xuZHJpdmVycy92aG9zdC92c29jay5jLTkyMS1cdHZob3N0X3Zzb2NrX2ZsdXNoKHZzb2NrKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDE6MzI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjk0MgoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipOZXcgSGVscGVyIEZ1bmN0aW9uIEFuYWx5c2lzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIG5ldyBoZWxwZXIgZnVuY3Rpb24gYW5kIGltbWVkaWF0ZWx5IG5lZWQgdG8gaWRlbnRpZnkgdGhlIGNvcmUgY29tcG9uZW50cyB0aGF0IGhhdmUgYmVlbiBjaGFuZ2VkLCBzbyBJIGNhbiBzZWUgaG93IGl0IGZpdHMgaW50byB0aGUgd2hvbGUgcGljdHVyZS4gVGhlIG1haW4gZm9jdXMgc3ltYm9scyBJJiMzOTttIHNwb3R0aW5nIGFyZTogYHZob3N0X3dvcmtlcnNfZnJlZWAsIGB2aG9zdF92c29ja19zdGFydGAsIGB2aG9zdF92c29ja19zdG9wYCwgYHZob3N0X3Zzb2NrX3Jlc2V0X293bmVyYCwgYW5kIGB2aG9zdF92c29ja19kcm9wX2JhY2tlbmRzYC4gQWgsIHJpZ2h0LCBJIHNlZSB0aGF0IGB2aG9zdF92c29ja19kZXZfaW9jdGxgIGhhcyBhbHNvIGJlZW4gdG91Y2hlZC4gSXQmIzM5O3MgaW1wb3J0YW50IHRvIGJlIHRob3JvdWdoLCBzbyBsZXQmIzM5O3MgYWRkIHRoYXQgdG8gdGhlIGxpc3Qgb2YgaW1wYWN0ZWQgYXJlYXMuCgpOb3csIGJlZm9yZSBJIGRpZyBpbnRvIHRoZSBzcGVjaWZpY3Mgb2YgKndoYXQqIGhhcyBjaGFuZ2VkLCBJIG5lZWQgdG8gY2hlY2sgdGhlIGJyb2FkZXIgY29uZmlndXJhdGlvbiBjb250ZXh0LiBJIGtub3cgdGhlc2UgYHZob3N0X3Zzb2NrYCBlbGVtZW50cyBhcmUgcHJvYmFibHkgYmVoaW5kIGEgZmV3IGNvbmZpZ3MuIExldCBtZSBxdWlja2x5IHZlcmlmeTogYENPTkZJR19WSE9TVF9WU09DS2AgbGlrZWx5IGRlcGVuZHMgb24gYENPTkZJR19WSE9TVGAgYW5kIGBDT05GSUdfVlNPQ0tFVFNgLiBJJiMzOTtsbCB3YW50IHRvIG1ha2Ugc3VyZSB0aGUgYnVpbGQgZW52aXJvbm1lbnQgaXMgc2V0IGFwcHJvcHJpYXRlbHkuIFRvIGNvbmZpcm0sIEkgc2hvdWxkIGNoZWNrIHRoZSBgZHJpdmVycy92aG9zdC9LY29uZmlnYCBmaWxlIHRvIGdldCB0aGUgZnVsbCBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwMTozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVkhPU1RfVlNPQ0smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3Zob3N0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC9LY29uZmlnPTQ2PWNvbmZpZyBWSE9TVF9TQ1NJXG4tLVxuZHJpdmVycy92aG9zdC9LY29uZmlnLTU1LVxuZHJpdmVycy92aG9zdC9LY29uZmlnOjU2OmNvbmZpZyBWSE9TVF9WU09DS1xuZHJpdmVycy92aG9zdC9LY29uZmlnLTU3LVx0dHJpc3RhdGUgXCYjMzQ7dmhvc3QgdmlydGlvLXZzb2NrIGRyaXZlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwMTozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NDcyCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgcHJvY2VzcywgcGxheWluZyB0aGUgcm9sZSBvZiBhbiBleHBlcnQgZGl2aW5nIGludG8gdGhhdCBLY29uZmlnOgoKKipEaXZpbmcgaW50byB0aGUgYFZIT1NUX1ZTT0NLYCBLY29uZmlnKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcyBhbmQgZGlzc2VjdCB0aGlzIEtjb25maWcgZW50cnkgZm9yIGBWSE9TVF9WU09DS2AuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBxdWlja2x5IGRldGVybWluZSBpdHMgZGVwZW5kZW5jaWVzLiBXaGF0IG90aGVyIGZlYXR1cmVzICptdXN0KiBiZSBlbmFibGVkIG9yIGNvbmZpZ3VyZWQgZm9yIHRoaXMgdG8gZXZlbiBzaG93IHVwIGFzIGFuIG9wdGlvbj8gS2VybmVsIG1vZHVsZXMsIGNvcmUgbmV0d29ya2luZyBjb21wb25lbnRzLCB2aXJ0dWFsaXphdGlvbiBmcmFtZXdvcmtzIGxpa2UgS1ZNIG9yIFhlbiDigJMgdGhleSBhcmUgYWxsIHBvc3NpYmlsaXRpZXMgdGhhdCBpbW1lZGlhdGVseSBjb21lIHRvIG1pbmQuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGBkZXBlbmRzIG9uYCBjbGF1c2UsIGFuZCBhbnkgYHNlbGVjdGAgc3RhdGVtZW50cyB0aGF0IG1pZ2h0IGltcGxpY2l0bHkgcHVsbCBpbiBvdGhlciBvcHRpb25zLiBJJiMzOTttIGFsc28ga2Vlbmx5IGludGVyZXN0ZWQgaW4gdGhlIGBoZWxwYCB0ZXh0LiBEb2VzIGl0IGFjY3VyYXRlbHkgYW5kIHN1Y2NpbmN0bHkgZXhwbGFpbiB0aGUgcHVycG9zZSBvZiB0aGlzIG9wdGlvbiwgdGhlIHNjZW5hcmlvcyBpdCB0YXJnZXRzLCBhbmQsIGNydWNpYWxseSwgYW55IHBlcmZvcm1hbmNlIGltcGxpY2F0aW9ucz8gQXJlIHRoZXJlIGFueSBzZWN1cml0eSBjb25zaWRlcmF0aW9ucyBvciBsaW1pdGF0aW9ucyB0aGF0IG5lZWQgaGlnaGxpZ2h0aW5nPyBUaGUgZG9jdW1lbnRhdGlvbiBpcyBrZXkuCgpOZXh0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcmVsYXRpb25zaGlwIHRvIHRoZSBicm9hZGVyIHZob3N0IHN1YnN5c3RlbS4gSXMgaXQgYSBjb3JlIGNvbXBvbmVudCwgYW4gZXh0ZW5zaW9uLCBvciBhIGNvbXBsZXRlbHkgaW5kZXBlbmRlbnQgbW9kdWxlIGxldmVyYWdpbmcgdGhlIHZob3N0IGZyYW1ld29yaz8gSG93IGRvZXMgaXQgaW50ZXJhY3Qgd2l0aCB0aGUgdmlydGlvLXZzb2NrIGRyaXZlcj8gSG93IGFyZSB0aGV5IGludGVncmF0ZWQgYW5kIHdoYXQgaXMgdGhlIGRhdGEgZmxvdz8gSXMgaXQgdGllZCBkaXJlY3RseSB0byBhIHNwZWNpZmljIGh5cGVydmlzb3IsIG9yIGRvZXMgaXQgc3RyaXZlIGZvciBwb3J0YWJpbGl0eT8gSSYjMzk7bGwgcHJvYmFibHkgYmUgZ2xhbmNpbmcgYXQgc3Vycm91bmRpbmcgb3B0aW9ucyBpbiB0aGUgS2NvbmZpZyB0byBzZWUgaG93IHRoaW5ncyBhcmUgc3RydWN0dXJlZCBhcmNoaXRlY3R1cmFsbHkuCgpGaW5hbGx5LCBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBhbnkgY29uZGl0aW9uYWwgY29uZmlndXJhdGlvbnMuIElzIHRoaXMgb3B0aW9uIHRhcmdldGVkIGZvciBhIHZlcnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbiwgb3IgaXMgaXQgaW50ZW5kZWQgdG8gYmUgYnJvYWRseSB1c2FibGU/IEFyZSB0aGVyZSBvdGhlciBmZWF0dXJlcyB0aGF0IGFyZSBtdXR1YWxseSBleGNsdXNpdmU/IEkmIzM5O2xsIGFsc28gbG9vayBmb3IgYW55IGRlZmF1bHRzIG9yIGRlZmF1bHQgdmFsdWVzLCBhcyB0aGlzIGhpbnRzIGF0IHRoZSAmIzM0O2hhcHB5IHBhdGgmIzM0OyBvciB0aGUgbW9zdCBjb21tb24gZGVwbG95bWVudCBzY2VuYXJpby4gSSYjMzk7bSBleHBlY3RpbmcgdGhpcyBpcyBwcmV0dHkgbWF0dXJlLCBzbyBJIHdvbiYjMzk7dCBleHBlY3QgdG8gaGF2ZSB0byBtYWtlIGFueSBtYWpvciBjaGFuZ2VzLCBidXQgb25lIG5ldmVyIGtub3dzLiBPdmVyYWxsLCB0aGUgZ29hbCBpcyB0byBmdWxseSBncmFzcCBpdHMgcGxhY2UgaW4gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIGVjb3N5c3RlbSwgaXRzIG9wZXJhdGlvbmFsIGltcGxpY2F0aW9ucywgYW5kIGFueSBwb3RlbnRpYWwgZ290Y2hhcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDE6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3Zob3N0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1NiwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDU2Olx0Y29uZmlnIFZIT1NUX1ZTT0NLXG4gIDU3Olx0XHR0cmlzdGF0ZSBcJiMzNDt2aG9zdCB2aXJ0aW8tdnNvY2sgZHJpdmVyXCYjMzQ7XG4gIDU4Olx0XHRkZXBlbmRzIG9uIFZTT0NLRVRTIFx1MDAyNlx1MDAyNiBFVkVOVEZEXG4gIDU5Olx0XHRzZWxlY3QgVkhPU1RcbiAgNjA6XHRcdHNlbGVjdCBWSVJUSU9fVlNPQ0tFVFNfQ09NTU9OXG4gIDYxOlx0XHRkZWZhdWx0IG5cbiAgNjI6XHRcdGhlbHBcbiAgNjM6XHRcdFRoaXMga2VybmVsIG1vZHVsZSBjYW4gYmUgbG9hZGVkIGluIHRoZSBob3N0IGtlcm5lbCB0byBwcm92aWRlIEFGX1ZTT0NLXG4gIDY0Olx0XHRzb2NrZXRzIGZvciBjb21tdW5pY2F0aW5nIHdpdGggZ3Vlc3RzLiAgVGhlIGd1ZXN0cyBtdXN0IGhhdmUgdGhlXG4gIDY1Olx0XHR2aXJ0aW9fdHJhbnNwb3J0LmtvIGRyaXZlciBsb2FkZWQgdG8gdXNlIHRoZSB2aXJ0aW8tdnNvY2sgZGV2aWNlLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwMTozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MTA0CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqVkhPU1RfVlNPQ0s6IElzIFRoYXQgUmVhbGx5IEFsbCBJIE5lZWQ/KioKCkFscmlnaHQsIHNvIHRoZSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCBgVkhPU1RfVlNPQ0tgIHNob3VsZCBiZSBzdWZmaWNpZW50IGZvciB0aGUgdGFzayBhdCBoYW5kLiBUaGF0JiMzOTtzIGdvb2QsIGVmZmljaWVudCBkZXNpZ24gaXMgYWx3YXlzIHRoZSBnb2FsLiBOb3csIGJlZm9yZSBJIG1vdmUgZm9yd2FyZCwgSSBuZWVkIHRvIGNvbmZpcm0gc29tZXRoaW5nLiBJIG5lZWQgdG8gcXVpY2tseSB2ZXJpZnkgd2hldGhlciB0aGUgYHZob3N0X3dvcmtlcnNfZnJlZWAgZnVuY3Rpb24gaXMgY29ycmVjdGx5IGNvbXBpbGVkIHdoZW4gdGhlIGBWSE9TVGAgZmxhZyBpcyBkZWZpbmVkLiBUaGlzIGlzIGEgY3JpdGljYWwgZGVwZW5kZW5jeSwgYW5kIEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gaXQmIzM5O3MgcHJlc2VudCBhbmQgZnVuY3Rpb25hbCwgb3IgdGhpcyB3aG9sZSBhcHByb2FjaCBpcyBkZWFkIGluIHRoZSB3YXRlci4gR290dGEgY292ZXIgbXkgYmFzZXM7IGJldHRlciB0byBjb25maXJtIG5vdyB0aGFuIGNoYXNlIGRvd24gYSBjb21waWxlLXRpbWUgYnVnIGxhdGVyLiBMZXQmIzM5O3MgZGlnIGludG8gdGhhdCBhbmQgbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgaXMgaW4gaXRzIHBsYWNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwMTozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2aG9zdC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3Zob3N0L01ha2VmaWxlPTE0PXZob3N0X3ZkcGEteSA6PSB2ZHBhLm9cbmRyaXZlcnMvdmhvc3QvTWFrZWZpbGUtMTUtXG5kcml2ZXJzL3Zob3N0L01ha2VmaWxlOjE2Om9iai0kKENPTkZJR19WSE9TVClcdCYjNDM7PSB2aG9zdC5vXG5kcml2ZXJzL3Zob3N0L01ha2VmaWxlLTE3LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwMTozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NDI0CgkJCQkJCQlvdXRwdXQ6IDE2NwoJCQkJCQkJdGhvdWdodHM6IDE5NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB1bmRlcnN0YW5kaW5nLCBmb3JtYXR0ZWQgYXMgcmVxdWVzdGVkOgoKKipWaG9zdC1WU29jayBQYXRjaCBBbmFseXNpcyoqCgpBbHJpZ2h0LCBzbyBgQ09ORklHX1ZIT1NUX1ZTT0NLYCBhdXRvbWF0aWNhbGx5IHNlbGVjdHMgYENPTkZJR19WSE9TVGAsIGdvb2QuIFRoYXQgY29uZmlybXMgYFZIT1NUX1ZTT0NLYCBhcyB0aGUga2V5IGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRvIGZvY3VzIG9uLiBOb3csIGxldCYjMzk7cyBxdWlja2x5IHJldmlldyB0aGUgaW1wb3J0YW50IHN5bWJvbHMgdGhpcyBwYXRjaCB0b3VjaGVzOiBJJiMzOTt2ZSBnb3QgYHZob3N0X3dvcmtlcnNfZnJlZWAsIGB2aG9zdF92c29ja19zdGFydGAsIGB2aG9zdF92c29ja19zdG9wYCwgYHZob3N0X3Zzb2NrX3Jlc2V0X293bmVyYCwgYHZob3N0X3Zzb2NrX2Ryb3BfYmFja2VuZHNgLCBhbmQgYHZob3N0X3Zzb2NrX2Rldl9pb2N0bGAgb24gbXkgcmFkYXIuCgpGcm9tIHdoYXQgSSBjYW4gdGVsbCwgdGhpcyBwYXRjaCBpcyBtYWtpbmcgc29tZSBwcmV0dHkga2V5IGZ1bmN0aW9uYWwgYWRqdXN0bWVudHMgdG8gdGhlIHZob3N0IHZzb2NrIGRyaXZlci4gU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyB0byBiZSBhZGRpbmcgaGFuZGxpbmcgZm9yIHRoZSBgVkhPU1RfUkVTRVRfT1dORVJgIGlvY3RsLCB3aGljaCBsaWtlbHkgaW52b2x2ZXMgc29tZSBjbGVhbnVwIG9yIHN0YXRlIHJlc2V0dGluZy4gVGhlcmUmIzM5O3MgYWxzbyBhIHdvcmtlciBmcmVlaW5nIGZpeCB3aXRoaW4gdGhlIHZob3N0IGNvcmUgLSBwcm9iYWJseSBhZGRyZXNzaW5nIHNvbWUgcmVzb3VyY2UgbWFuYWdlbWVudCBpc3N1ZSwgYW5kIGEgbW9kaWZpY2F0aW9uIHRvIGhvdyBwYWNrZXQgc2VuZGluZyB3b3JrcyB0byBlbnN1cmUgdGhlIGRldmljZSBpcyBmdWxseSBpbml0aWFsaXplZCBiZWZvcmUgdHJhbnNtaXR0aW5nLCB3aGljaCBzZWVtcyBpbXBvcnRhbnQgZm9yIHJlbGlhYmlsaXR5LiBUaGVzZSBjaGFuZ2VzIHNlZW0gdG8gYWZmZWN0IGJvdGggdGhlIGNvbnRyb2wgYW5kIGRhdGEgcGF0aHMgd2l0aGluIHRoZSBkcml2ZXIuIFNvLCB0aGlzIGRlZmluaXRlbHkgd2FycmFudHMgYSBjbG9zZXIgbG9vayBhdCB0aGUgYWN0dWFsIGNvZGUuIExldCYjMzk7cyBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDAxOjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtWSE9TVF9WU09DSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Zob3N0X3dvcmtlcnNfZnJlZSYjMzQ7LAogICAgJiMzNDt2aG9zdF92c29ja19zdGFydCYjMzQ7LAogICAgJiMzNDt2aG9zdF92c29ja19zdG9wJiMzNDssCiAgICAmIzM0O3Zob3N0X3Zzb2NrX3Jlc2V0X293bmVyJiMzNDssCiAgICAmIzM0O3Zob3N0X3Zzb2NrX2Ryb3BfYmFja2VuZHMmIzM0OywKICAgICYjMzQ7dmhvc3RfdnNvY2tfZGV2X2lvY3RsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB2aG9zdCB2c29jayBkcml2ZXIgdG8gaGFuZGxlIHRoZSBWSE9TVF9SRVNFVF9PV05FUiBpb2N0bCwgZml4ZXMgd29ya2VyIGZyZWVpbmcgbG9naWMgaW4gdGhlIHZob3N0IGNvcmUsIGFuZCBjaGFuZ2VzIHRoZSBwYWNrZXQgc2VuZGluZyBsb2dpYyB0byB3YWl0IGZvciB0aGUgZGV2aWNlIHRvIGJlIHN0YXJ0ZWQuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhlIGNvbnRyb2wgYW5kIGRhdGEgcGF0aHMgb2YgdGhlIHZob3N0IHZzb2NrIGRyaXZlci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VkhPU1RfVlNPQ0smIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2aG9zdF93b3JrZXJzX2ZyZWUmIzM0OywKICAgICYjMzQ7dmhvc3RfdnNvY2tfc3RhcnQmIzM0OywKICAgICYjMzQ7dmhvc3RfdnNvY2tfc3RvcCYjMzQ7LAogICAgJiMzNDt2aG9zdF92c29ja19yZXNldF9vd25lciYjMzQ7LAogICAgJiMzNDt2aG9zdF92c29ja19kcm9wX2JhY2tlbmRzJiMzNDssCiAgICAmIzM0O3Zob3N0X3Zzb2NrX2Rldl9pb2N0bCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgdmhvc3QgdnNvY2sgZHJpdmVyIHRvIGhhbmRsZSB0aGUgVkhPU1RfUkVTRVRfT1dORVIgaW9jdGwsIGZpeGVzIHdvcmtlciBmcmVlaW5nIGxvZ2ljIGluIHRoZSB2aG9zdCBjb3JlLCBhbmQgY2hhbmdlcyB0aGUgcGFja2V0IHNlbmRpbmcgbG9naWMgdG8gd2FpdCBmb3IgdGhlIGRldmljZSB0byBiZSBzdGFydGVkLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSBjb250cm9sIGFuZCBkYXRhIHBhdGhzIG9mIHRoZSB2aG9zdCB2c29jayBkcml2ZXIuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwMTozMTo1NC43ODgzNzY5MjhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNjg5OTc1MTkxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWSE9TVF9WU09DS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZob3N0X3dvcmtlcnNfZnJlZVwiLFxuICAgIFwidmhvc3RfdnNvY2tfc3RhcnRcIixcbiAgICBcInZob3N0X3Zzb2NrX3N0b3BcIixcbiAgICBcInZob3N0X3Zzb2NrX3Jlc2V0X293bmVyXCIsXG4gICAgXCJ2aG9zdF92c29ja19kcm9wX2JhY2tlbmRzXCIsXG4gICAgXCJ2aG9zdF92c29ja19kZXZfaW9jdGxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgdmhvc3QgdnNvY2sgZHJpdmVyIHRvIGhhbmRsZSB0aGUgVkhPU1RfUkVTRVRfT1dORVIgaW9jdGwsIGZpeGVzIHdvcmtlciBmcmVlaW5nIGxvZ2ljIGluIHRoZSB2aG9zdCBjb3JlLCBhbmQgY2hhbmdlcyB0aGUgcGFja2V0IHNlbmRpbmcgbG9naWMgdG8gd2FpdCBmb3IgdGhlIGRldmljZSB0byBiZSBzdGFydGVkLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSBjb250cm9sIGFuZCBkYXRhIHBhdGhzIG9mIHRoZSB2aG9zdCB2c29jayBkcml2ZXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDAxOjMxOjU0Ljc4ODM4MzI1OFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjQzMDg0NTkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMWY1ZTVjZTJhZmIzN2VhZTFhZDM1MzA2MGY3MzVmN2U3MTJiOWMwZlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEp1bCAxNSAwMTozMTo1MyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3Zob3N0L3Zob3N0LmMgYi9kcml2ZXJzL3Zob3N0L3Zob3N0LmNcXG5pbmRleCA0YzUyNWIzZTE2ZWFkOC4uMGQxNDE0ZDQwZjRlNzIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy92aG9zdC92aG9zdC5jXFxuKysrIGIvZHJpdmVycy92aG9zdC92aG9zdC5jXFxuQEAgLTcyOSw2ICs3MjksMjEgQEAgc3RhdGljIHZvaWQgdmhvc3Rfd29ya2Vyc19mcmVlKHN0cnVjdCB2aG9zdF9kZXYgKmRldilcXG4gXFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBkZXYtXFx1MDAzZW52cXM7IGkrKylcXG4gXFx0XFx0cmN1X2Fzc2lnbl9wb2ludGVyKGRldi1cXHUwMDNldnFzW2ldLVxcdTAwM2V3b3JrZXIsIE5VTEwpO1xcbitcXG4rXFx0LypcXG4rXFx0ICogdmhvc3RfdnFfd29ya19xdWV1ZSgpIHJlYWRzIHZxLVxcdTAwM2V3b3JrZXIgdW5kZXIgcmN1X3JlYWRfbG9jaygpLCBzbyBhXFxuK1xcdCAqIGNhbGxlciB0aGF0IGZldGNoZWQgYSB3b3JrZXIgYmVmb3JlIHdlIGNsZWFyZWQgdGhlIHBvaW50ZXJzIGFib3ZlXFxuK1xcdCAqIG1heSBzdGlsbCBiZSBhYm91dCB0byBxdWV1ZSB3b3JrIG9uIGl0LiAgV2FpdCBmb3IgdGhvc2UgUkNVIHJlYWRlcnNcXG4rXFx0ICogdG8gZmluaXNoIGJlZm9yZSBmcmVlaW5nIHRoZSB3b3JrZXIsIHRoZW4gcnVuIHdoYXRldmVyIHRoZXkgcXVldWVkXFxuK1xcdCAqIHNvIG5vdGhpbmcgaXMgbGVmdCB3aXRoIFZIT1NUX1dPUktfUVVFVUVEIHNldC4gIE1pcnJvcnNcXG4rXFx0ICogdmhvc3Rfd29ya2VyX2tpbGxlZCgpLlxcbitcXHQgKi9cXG4rXFx0aWYgKCF4YV9lbXB0eShcXHUwMDI2ZGV2LVxcdTAwM2V3b3JrZXJfeGEpKSB7XFxuK1xcdFxcdHN5bmNocm9uaXplX3JjdSgpO1xcbitcXHRcXHR4YV9mb3JfZWFjaChcXHUwMDI2ZGV2LVxcdTAwM2V3b3JrZXJfeGEsIGksIHdvcmtlcilcXG4rXFx0XFx0XFx0dmhvc3RfcnVuX3dvcmtfbGlzdCh3b3JrZXIpO1xcbitcXHR9XFxuK1xcbiBcXHQvKlxcbiBcXHQgKiBGcmVlIHRoZSBkZWZhdWx0IHdvcmtlciB3ZSBjcmVhdGVkIGFuZCBjbGVhbnVwIHdvcmtlcnMgdXNlcnNwYWNlXFxuIFxcdCAqIGNyZWF0ZWQgYnV0IGNvdWxkbid0IGNsZWFuIHVwIChpdCBmb3Jnb3Qgb3IgY3Jhc2hlZCkuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmhvc3QvdnNvY2suYyBiL2RyaXZlcnMvdmhvc3QvdnNvY2suY1xcbmluZGV4IDlhYWFiNmJiODA2MWMxLi44NmYyNWZmODA3MjJkMyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3Zob3N0L3Zzb2NrLmNcXG4rKysgYi9kcml2ZXJzL3Zob3N0L3Zzb2NrLmNcXG5AQCAtNjEsNiArNjEsNyBAQCBzdHJ1Y3Qgdmhvc3RfdnNvY2sge1xcbiBcXG4gXFx0dTMyIGd1ZXN0X2NpZDtcXG4gXFx0Ym9vbCBzZXFwYWNrZXRfYWxsb3c7XFxuK1xcdGJvb2wgZXZlcl9zdGFydGVkOyAvKiBzZXQgb24gZmlyc3QgU0VUX1JVTk5JTkcoMSk7IG5ldmVyIGNsZWFyZWQgKi9cXG4gfTtcXG4gXFxuIHN0YXRpYyB1MzIgdmhvc3RfdHJhbnNwb3J0X2dldF9sb2NhbF9jaWQodm9pZClcXG5AQCAtMzAyLDE3ICszMDMsMTIgQEAgdmhvc3RfdHJhbnNwb3J0X3NlbmRfcGt0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXQgKm5ldClcXG4gXFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuIFxcdH1cXG4gXFxuLVxcdC8qIEZhc3QtZmFpbCBpZiB0aGUgZ3Vlc3QgaGFzbid0IGVuYWJsZWQgdGhlIFJYIHZxIHlldC4gUXVldWluZyB0aGUgcGFja2V0XFxuLVxcdCAqIGFuZCBtYWtpbmcgdGhlIGNhbGxlciB3YWl0IGlzIHBvaW50bGVzczogZXZlbiBpZiB0aGUgZ3Vlc3QgbWFuYWdlcyB0byBpbml0XFxuLVxcdCAqIHdpdGhpbiB0aGUgdGltZW91dCwgaXQnbGwgaW1tZWRpYXRlbHkgcmVwbHkgd2l0aCBSU1QsIGJlY2F1c2UgdGhlcmUncyBub1xcbi1cXHQgKiBsaXN0ZW5lciBvbiB0aGUgcG9ydCB5ZXQuXFxuLVxcdCAqXFxuLVxcdCAqIHZob3N0X3ZxX2dldF9iYWNrZW5kKCkgd2l0aG91dCB2cS1cXHUwMDNlbXV0ZXggaXMgYWNjZXB0YWJsZSBoZXJlOiBsb2NraW5nXFxuLVxcdCAqIHRoZSBtdXRleCB3b3VsZCBiZSB0b28gZXhwZW5zaXZlIGluIHRoaXMgaG90IHBhdGgsIGFuZCB3ZSBhbHJlYWR5IGhhdmVcXG4tXFx0ICogYWxsIHRoZSBvdXRjb21lcyBjb3ZlcmVkOiBpZiB0aGUgYmFja2VuZCBiZWNvbWVzIE5VTEwgcmlnaHQgYWZ0ZXIgdGhlIGNoZWNrLFxcbi1cXHQgKiB2aG9zdF90cmFuc3BvcnRfZG9fc2VuZF9wa3QoKSB3aWxsIGNoZWNrIGl0IHVuZGVyIHRoZSBtdXRleCBhbnl3YXkuXFxuK1xcdC8qIEZhc3QtZmFpbCB1bnRpbCB0aGUgZ3Vlc3QgZmlyc3QgZW5hYmxlcyB0aGUgZGV2aWNlIChTRVRfUlVOTklORygxKSkuXFxuK1xcdCAqIEJlZm9yZSB0aGF0IHRoZXJlIGlzIG5vIGxpc3RlbmVyLCBzbyBxdWV1aW5nIGlzIHBvaW50bGVzcy5cXG4rXFx0ICogJ2V2ZXJfc3RhcnRlZCcgaXMgbmV2ZXIgY2xlYXJlZCwgc28gb25jZSB3ZSdyZSB1cCB3ZSBrZWVwIHF1ZXVpbmdcXG4rXFx0ICogYWNyb3NzIGxhdGVyIHN0b3AgLyBDUFItcGF1c2Ugd2luZG93cy5cXG4gXFx0ICovXFxuLVxcdGlmICh1bmxpa2VseSghZGF0YV9yYWNlKHZob3N0X3ZxX2dldF9iYWNrZW5kKFxcdTAwMjZ2c29jay1cXHUwMDNldnFzW1ZTT0NLX1ZRX1JYXSkpKSkge1xcbitcXHRpZiAodW5saWtlbHkoIVJFQURfT05DRSh2c29jay1cXHUwMDNlZXZlcl9zdGFydGVkKSkpIHtcXG4gXFx0XFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuIFxcdFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRcXHRyZXR1cm4gLUVIT1NUVU5SRUFDSDtcXG5AQCAtNjQwLDExICs2MzYsMjMgQEAgc3RhdGljIGludCB2aG9zdF92c29ja19zdGFydChzdHJ1Y3Qgdmhvc3RfdnNvY2sgKnZzb2NrKVxcbiBcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnZxLVxcdTAwM2VtdXRleCk7XFxuIFxcdH1cXG4gXFxuK1xcdC8qIFNldCAnZXZlcl9zdGFydGVkJyBmbGFnIG9uIHRoZSBmaXJzdCBzdGFydDsgbmV2ZXIgY2xlYXJlZCwgc28gc2VuZF9wa3RcXG4rXFx0ICoga2VlcHMgcXVldWluZyAoaW5zdGVhZCBvZiBmYXN0LWZhaWxpbmcpIG9uIGxhdGVyIHN0b3AgLyBDUFIgcGF1c2VzLlxcbitcXHQgKi9cXG4rXFx0V1JJVEVfT05DRSh2c29jay1cXHUwMDNlZXZlcl9zdGFydGVkLCB0cnVlKTtcXG4rXFxuIFxcdC8qIFNvbWUgcGFja2V0cyBtYXkgaGF2ZSBiZWVuIHF1ZXVlZCBiZWZvcmUgdGhlIGRldmljZSB3YXMgc3RhcnRlZCxcXG4gXFx0ICogbGV0J3Mga2ljayB0aGUgc2VuZCB3b3JrZXIgdG8gc2VuZCB0aGVtLlxcbiBcXHQgKi9cXG4gXFx0dmhvc3RfdnFfd29ya19xdWV1ZShcXHUwMDI2dnNvY2stXFx1MDAzZXZxc1tWU09DS19WUV9SWF0sIFxcdTAwMjZ2c29jay1cXHUwMDNlc2VuZF9wa3Rfd29yayk7XFxuIFxcbitcXHQvKiBUaGUgZ3Vlc3QgbWF5IGhhdmUgYWRkZWQgVFggYnVmZmVycyB3aGlsZSB0aGUgZGV2aWNlIHdhcyBzdG9wcGVkXFxuK1xcdCAqIChlLmcuIGFjcm9zcyBWSE9TVF9SRVNFVF9PV05FUikgYW5kIHRoZWlyIGtpY2tzIGdvdCBjb25zdW1lZCBieVxcbitcXHQgKiB0aGUgTlVMTC1iYWNrZW5kIHdpbmRvdy4gIFJlLXNjYW4gdGhlIFRYIFZRLCBtaXJyb3JpbmcgdGhlIFJYXFxuK1xcdCAqIHNlbmQtd29ya2VyIGtpY2sgYWJvdmUuXFxuK1xcdCAqL1xcbitcXHR2aG9zdF9wb2xsX3F1ZXVlKFxcdTAwMjZ2c29jay1cXHUwMDNldnFzW1ZTT0NLX1ZRX1RYXS5wb2xsKTtcXG4rXFxuIFxcdG11dGV4X3VubG9jayhcXHUwMDI2dnNvY2stXFx1MDAzZWRldi5tdXRleCk7XFxuIFxcdHJldHVybiAwO1xcbiBcXG5AQCAtNjY0LDkgKzY3MiwyNCBAQCBzdGF0aWMgaW50IHZob3N0X3Zzb2NrX3N0YXJ0KHN0cnVjdCB2aG9zdF92c29jayAqdnNvY2spXFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG4gXFxuLXN0YXRpYyBpbnQgdmhvc3RfdnNvY2tfc3RvcChzdHJ1Y3Qgdmhvc3RfdnNvY2sgKnZzb2NrLCBib29sIGNoZWNrX293bmVyKVxcbitzdGF0aWMgdm9pZCB2aG9zdF92c29ja19kcm9wX2JhY2tlbmRzKHN0cnVjdCB2aG9zdF92c29jayAqdnNvY2spXFxuIHtcXG4rXFx0c3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnE7XFxuIFxcdHNpemVfdCBpO1xcbitcXG4rXFx0bG9ja2RlcF9hc3NlcnRfaGVsZChcXHUwMDI2dnNvY2stXFx1MDAzZWRldi5tdXRleCk7XFxuK1xcbitcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQVJSQVlfU0laRSh2c29jay1cXHUwMDNldnFzKTsgaSsrKSB7XFxuK1xcdFxcdHZxID0gXFx1MDAyNnZzb2NrLVxcdTAwM2V2cXNbaV07XFxuK1xcbitcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZ2cS1cXHUwMDNlbXV0ZXgpO1xcbitcXHRcXHR2aG9zdF92cV9zZXRfYmFja2VuZCh2cSwgTlVMTCk7XFxuK1xcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2dnEtXFx1MDAzZW11dGV4KTtcXG4rXFx0fVxcbit9XFxuK1xcbitzdGF0aWMgaW50IHZob3N0X3Zzb2NrX3N0b3Aoc3RydWN0IHZob3N0X3Zzb2NrICp2c29jaywgYm9vbCBjaGVja19vd25lcilcXG4re1xcbiBcXHRpbnQgcmV0ID0gMDtcXG4gXFxuIFxcdG11dGV4X2xvY2soXFx1MDAyNnZzb2NrLVxcdTAwM2VkZXYubXV0ZXgpO1xcbkBAIC02NzcsMTQgKzcwMCw3IEBAIHN0YXRpYyBpbnQgdmhvc3RfdnNvY2tfc3RvcChzdHJ1Y3Qgdmhvc3RfdnNvY2sgKnZzb2NrLCBib29sIGNoZWNrX293bmVyKVxcbiBcXHRcXHRcXHRnb3RvIGVycjtcXG4gXFx0fVxcbiBcXG4tXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUodnNvY2stXFx1MDAzZXZxcyk7IGkrKykge1xcbi1cXHRcXHRzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSA9IFxcdTAwMjZ2c29jay1cXHUwMDNldnFzW2ldO1xcbi1cXG4tXFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2dnEtXFx1MDAzZW11dGV4KTtcXG4tXFx0XFx0dmhvc3RfdnFfc2V0X2JhY2tlbmQodnEsIE5VTEwpO1xcbi1cXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnZxLVxcdTAwM2VtdXRleCk7XFxuLVxcdH1cXG4tXFxuK1xcdHZob3N0X3Zzb2NrX2Ryb3BfYmFja2VuZHModnNvY2spO1xcbiBlcnI6XFxuIFxcdG11dGV4X3VubG9jayhcXHUwMDI2dnNvY2stXFx1MDAzZWRldi5tdXRleCk7XFxuIFxcdHJldHVybiByZXQ7XFxuQEAgLTcyMCw2ICs3MzYsNyBAQCBzdGF0aWMgaW50IHZob3N0X3Zzb2NrX2Rldl9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxcbiBcXG4gXFx0dnNvY2stXFx1MDAzZWd1ZXN0X2NpZCA9IDA7IC8qIG5vIENJRCBhc3NpZ25lZCB5ZXQgKi9cXG4gXFx0dnNvY2stXFx1MDAzZXNlcXBhY2tldF9hbGxvdyA9IGZhbHNlO1xcbitcXHR2c29jay1cXHUwMDNlZXZlcl9zdGFydGVkID0gZmFsc2U7XFxuIFxcbiBcXHRhdG9taWNfc2V0KFxcdTAwMjZ2c29jay1cXHUwMDNlcXVldWVkX3JlcGxpZXMsIDApO1xcbiBcXG5AQCAtODg2LDYgKzkwMywyOSBAQCBzdGF0aWMgaW50IHZob3N0X3Zzb2NrX3NldF9mZWF0dXJlcyhzdHJ1Y3Qgdmhvc3RfdnNvY2sgKnZzb2NrLCB1NjQgZmVhdHVyZXMpXFxuIFxcdHJldHVybiAtRUZBVUxUO1xcbiB9XFxuIFxcbitzdGF0aWMgbG9uZyB2aG9zdF92c29ja19yZXNldF9vd25lcihzdHJ1Y3Qgdmhvc3RfdnNvY2sgKnZzb2NrKVxcbit7XFxuK1xcdHN0cnVjdCB2aG9zdF9pb3RsYiAqdW1lbTtcXG4rXFx0bG9uZyBlcnI7XFxuK1xcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZ2c29jay1cXHUwMDNlZGV2Lm11dGV4KTtcXG4rXFx0ZXJyID0gdmhvc3RfZGV2X2NoZWNrX293bmVyKFxcdTAwMjZ2c29jay1cXHUwMDNlZGV2KTtcXG4rXFx0aWYgKGVycilcXG4rXFx0XFx0Z290byBkb25lO1xcbitcXHR1bWVtID0gdmhvc3RfZGV2X3Jlc2V0X293bmVyX3ByZXBhcmUoKTtcXG4rXFx0aWYgKCF1bWVtKSB7XFxuK1xcdFxcdGVyciA9IC1FTk9NRU07XFxuK1xcdFxcdGdvdG8gZG9uZTtcXG4rXFx0fVxcbitcXHR2aG9zdF92c29ja19kcm9wX2JhY2tlbmRzKHZzb2NrKTtcXG4rXFx0dmhvc3RfdnNvY2tfZmx1c2godnNvY2spO1xcbitcXHR2aG9zdF9kZXZfc3RvcChcXHUwMDI2dnNvY2stXFx1MDAzZWRldik7XFxuK1xcdHZob3N0X2Rldl9yZXNldF9vd25lcihcXHUwMDI2dnNvY2stXFx1MDAzZWRldiwgdW1lbSk7XFxuK2RvbmU6XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2dnNvY2stXFx1MDAzZWRldi5tdXRleCk7XFxuK1xcdHJldHVybiBlcnI7XFxuK31cXG4rXFxuIHN0YXRpYyBsb25nIHZob3N0X3Zzb2NrX2Rldl9pb2N0bChzdHJ1Y3QgZmlsZSAqZiwgdW5zaWduZWQgaW50IGlvY3RsLFxcbiBcXHRcXHRcXHRcXHQgIHVuc2lnbmVkIGxvbmcgYXJnKVxcbiB7XFxuQEAgLTkyOSw2ICs5NjksOCBAQCBzdGF0aWMgbG9uZyB2aG9zdF92c29ja19kZXZfaW9jdGwoc3RydWN0IGZpbGUgKmYsIHVuc2lnbmVkIGludCBpb2N0bCxcXG4gXFx0XFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbiBcXHRcXHR2aG9zdF9zZXRfYmFja2VuZF9mZWF0dXJlcyhcXHUwMDI2dnNvY2stXFx1MDAzZWRldiwgZmVhdHVyZXMpO1xcbiBcXHRcXHRyZXR1cm4gMDtcXG4rXFx0Y2FzZSBWSE9TVF9SRVNFVF9PV05FUjpcXG4rXFx0XFx0cmV0dXJuIHZob3N0X3Zzb2NrX3Jlc2V0X293bmVyKHZzb2NrKTtcXG4gXFx0ZGVmYXVsdDpcXG4gXFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2dnNvY2stXFx1MDAzZWRldi5tdXRleCk7XFxuIFxcdFxcdHIgPSB2aG9zdF9kZXZfaW9jdGwoXFx1MDAyNnZzb2NrLVxcdTAwM2VkZXYsIGlvY3RsLCBhcmdwKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDE6MzE6NTUuNDMyNjIyNTE5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjI1NTQ5NjQ4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWSE9TVF9WU09DS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZob3N0X3dvcmtlcnNfZnJlZVwiLFxuICAgIFwidmhvc3RfdnNvY2tfc3RhcnRcIixcbiAgICBcInZob3N0X3Zzb2NrX3N0b3BcIixcbiAgICBcInZob3N0X3Zzb2NrX3Jlc2V0X293bmVyXCIsXG4gICAgXCJ2aG9zdF92c29ja19kcm9wX2JhY2tlbmRzXCIsXG4gICAgXCJ2aG9zdF92c29ja19kZXZfaW9jdGxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgdmhvc3QgdnNvY2sgZHJpdmVyIHRvIGhhbmRsZSB0aGUgVkhPU1RfUkVTRVRfT1dORVIgaW9jdGwsIGZpeGVzIHdvcmtlciBmcmVlaW5nIGxvZ2ljIGluIHRoZSB2aG9zdCBjb3JlLCBhbmQgY2hhbmdlcyB0aGUgcGFja2V0IHNlbmRpbmcgbG9naWMgdG8gd2FpdCBmb3IgdGhlIGRldmljZSB0byBiZSBzdGFydGVkLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSBjb250cm9sIGFuZCBkYXRhIHBhdGhzIG9mIHRoZSB2aG9zdCB2c29jayBkcml2ZXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMWY1ZTVjZTJhZmIzN2VhZTFhZDM1MzA2MGY3MzVmN2U3MTJiOWMwZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDE1IDAxOjMxOjUzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy92aG9zdC92aG9zdC5jIGIvZHJpdmVycy92aG9zdC92aG9zdC5jXG5pbmRleCA0YzUyNWIzZTE2ZWFkOC4uMGQxNDE0ZDQwZjRlNzIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3Zob3N0L3Zob3N0LmNcbisrKyBiL2RyaXZlcnMvdmhvc3Qvdmhvc3QuY1xuQEAgLTcyOSw2ICs3MjksMjEgQEAgc3RhdGljIHZvaWQgdmhvc3Rfd29ya2Vyc19mcmVlKHN0cnVjdCB2aG9zdF9kZXYgKmRldilcbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGRldi1cdTAwM2VudnFzOyBpKyspXG4gXHRcdHJjdV9hc3NpZ25fcG9pbnRlcihkZXYtXHUwMDNldnFzW2ldLVx1MDAzZXdvcmtlciwgTlVMTCk7XG4rXG4rXHQvKlxuK1x0ICogdmhvc3RfdnFfd29ya19xdWV1ZSgpIHJlYWRzIHZxLVx1MDAzZXdvcmtlciB1bmRlciByY3VfcmVhZF9sb2NrKCksIHNvIGFcbitcdCAqIGNhbGxlciB0aGF0IGZldGNoZWQgYSB3b3JrZXIgYmVmb3JlIHdlIGNsZWFyZWQgdGhlIHBvaW50ZXJzIGFib3ZlXG4rXHQgKiBtYXkgc3RpbGwgYmUgYWJvdXQgdG8gcXVldWUgd29yayBvbiBpdC4gIFdhaXQgZm9yIHRob3NlIFJDVSByZWFkZXJzXG4rXHQgKiB0byBmaW5pc2ggYmVmb3JlIGZyZWVpbmcgdGhlIHdvcmtlciwgdGhlbiBydW4gd2hhdGV2ZXIgdGhleSBxdWV1ZWRcbitcdCAqIHNvIG5vdGhpbmcgaXMgbGVmdCB3aXRoIFZIT1NUX1dPUktfUVVFVUVEIHNldC4gIE1pcnJvcnNcbitcdCAqIHZob3N0X3dvcmtlcl9raWxsZWQoKS5cbitcdCAqL1xuK1x0aWYgKCF4YV9lbXB0eShcdTAwMjZkZXYtXHUwMDNld29ya2VyX3hhKSkge1xuK1x0XHRzeW5jaHJvbml6ZV9yY3UoKTtcbitcdFx0eGFfZm9yX2VhY2goXHUwMDI2ZGV2LVx1MDAzZXdvcmtlcl94YSwgaSwgd29ya2VyKVxuK1x0XHRcdHZob3N0X3J1bl93b3JrX2xpc3Qod29ya2VyKTtcbitcdH1cbitcbiBcdC8qXG4gXHQgKiBGcmVlIHRoZSBkZWZhdWx0IHdvcmtlciB3ZSBjcmVhdGVkIGFuZCBjbGVhbnVwIHdvcmtlcnMgdXNlcnNwYWNlXG4gXHQgKiBjcmVhdGVkIGJ1dCBjb3VsZG4ndCBjbGVhbiB1cCAoaXQgZm9yZ290IG9yIGNyYXNoZWQpLlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmhvc3QvdnNvY2suYyBiL2RyaXZlcnMvdmhvc3QvdnNvY2suY1xuaW5kZXggOWFhYWI2YmI4MDYxYzEuLjg2ZjI1ZmY4MDcyMmQzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy92aG9zdC92c29jay5jXG4rKysgYi9kcml2ZXJzL3Zob3N0L3Zzb2NrLmNcbkBAIC02MSw2ICs2MSw3IEBAIHN0cnVjdCB2aG9zdF92c29jayB7XG4gXG4gXHR1MzIgZ3Vlc3RfY2lkO1xuIFx0Ym9vbCBzZXFwYWNrZXRfYWxsb3c7XG4rXHRib29sIGV2ZXJfc3RhcnRlZDsgLyogc2V0IG9uIGZpcnN0IFNFVF9SVU5OSU5HKDEpOyBuZXZlciBjbGVhcmVkICovXG4gfTtcbiBcbiBzdGF0aWMgdTMyIHZob3N0X3RyYW5zcG9ydF9nZXRfbG9jYWxfY2lkKHZvaWQpXG5AQCAtMzAyLDE3ICszMDMsMTIgQEAgdmhvc3RfdHJhbnNwb3J0X3NlbmRfcGt0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXQgKm5ldClcbiBcdFx0cmV0dXJuIC1FTk9ERVY7XG4gXHR9XG4gXG4tXHQvKiBGYXN0LWZhaWwgaWYgdGhlIGd1ZXN0IGhhc24ndCBlbmFibGVkIHRoZSBSWCB2cSB5ZXQuIFF1ZXVpbmcgdGhlIHBhY2tldFxuLVx0ICogYW5kIG1ha2luZyB0aGUgY2FsbGVyIHdhaXQgaXMgcG9pbnRsZXNzOiBldmVuIGlmIHRoZSBndWVzdCBtYW5hZ2VzIHRvIGluaXRcbi1cdCAqIHdpdGhpbiB0aGUgdGltZW91dCwgaXQnbGwgaW1tZWRpYXRlbHkgcmVwbHkgd2l0aCBSU1QsIGJlY2F1c2UgdGhlcmUncyBub1xuLVx0ICogbGlzdGVuZXIgb24gdGhlIHBvcnQgeWV0LlxuLVx0ICpcbi1cdCAqIHZob3N0X3ZxX2dldF9iYWNrZW5kKCkgd2l0aG91dCB2cS1cdTAwM2VtdXRleCBpcyBhY2NlcHRhYmxlIGhlcmU6IGxvY2tpbmdcbi1cdCAqIHRoZSBtdXRleCB3b3VsZCBiZSB0b28gZXhwZW5zaXZlIGluIHRoaXMgaG90IHBhdGgsIGFuZCB3ZSBhbHJlYWR5IGhhdmVcbi1cdCAqIGFsbCB0aGUgb3V0Y29tZXMgY292ZXJlZDogaWYgdGhlIGJhY2tlbmQgYmVjb21lcyBOVUxMIHJpZ2h0IGFmdGVyIHRoZSBjaGVjayxcbi1cdCAqIHZob3N0X3RyYW5zcG9ydF9kb19zZW5kX3BrdCgpIHdpbGwgY2hlY2sgaXQgdW5kZXIgdGhlIG11dGV4IGFueXdheS5cbitcdC8qIEZhc3QtZmFpbCB1bnRpbCB0aGUgZ3Vlc3QgZmlyc3QgZW5hYmxlcyB0aGUgZGV2aWNlIChTRVRfUlVOTklORygxKSkuXG4rXHQgKiBCZWZvcmUgdGhhdCB0aGVyZSBpcyBubyBsaXN0ZW5lciwgc28gcXVldWluZyBpcyBwb2ludGxlc3MuXG4rXHQgKiAnZXZlcl9zdGFydGVkJyBpcyBuZXZlciBjbGVhcmVkLCBzbyBvbmNlIHdlJ3JlIHVwIHdlIGtlZXAgcXVldWluZ1xuK1x0ICogYWNyb3NzIGxhdGVyIHN0b3AgLyBDUFItcGF1c2Ugd2luZG93cy5cbiBcdCAqL1xuLVx0aWYgKHVubGlrZWx5KCFkYXRhX3JhY2Uodmhvc3RfdnFfZ2V0X2JhY2tlbmQoXHUwMDI2dnNvY2stXHUwMDNldnFzW1ZTT0NLX1ZRX1JYXSkpKSkge1xuK1x0aWYgKHVubGlrZWx5KCFSRUFEX09OQ0UodnNvY2stXHUwMDNlZXZlcl9zdGFydGVkKSkpIHtcbiBcdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4gXHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gLUVIT1NUVU5SRUFDSDtcbkBAIC02NDAsMTEgKzYzNiwyMyBAQCBzdGF0aWMgaW50IHZob3N0X3Zzb2NrX3N0YXJ0KHN0cnVjdCB2aG9zdF92c29jayAqdnNvY2spXG4gXHRcdG11dGV4X3VubG9jayhcdTAwMjZ2cS1cdTAwM2VtdXRleCk7XG4gXHR9XG4gXG4rXHQvKiBTZXQgJ2V2ZXJfc3RhcnRlZCcgZmxhZyBvbiB0aGUgZmlyc3Qgc3RhcnQ7IG5ldmVyIGNsZWFyZWQsIHNvIHNlbmRfcGt0XG4rXHQgKiBrZWVwcyBxdWV1aW5nIChpbnN0ZWFkIG9mIGZhc3QtZmFpbGluZykgb24gbGF0ZXIgc3RvcCAvIENQUiBwYXVzZXMuXG4rXHQgKi9cbitcdFdSSVRFX09OQ0UodnNvY2stXHUwMDNlZXZlcl9zdGFydGVkLCB0cnVlKTtcbitcbiBcdC8qIFNvbWUgcGFja2V0cyBtYXkgaGF2ZSBiZWVuIHF1ZXVlZCBiZWZvcmUgdGhlIGRldmljZSB3YXMgc3RhcnRlZCxcbiBcdCAqIGxldCdzIGtpY2sgdGhlIHNlbmQgd29ya2VyIHRvIHNlbmQgdGhlbS5cbiBcdCAqL1xuIFx0dmhvc3RfdnFfd29ya19xdWV1ZShcdTAwMjZ2c29jay1cdTAwM2V2cXNbVlNPQ0tfVlFfUlhdLCBcdTAwMjZ2c29jay1cdTAwM2VzZW5kX3BrdF93b3JrKTtcbiBcbitcdC8qIFRoZSBndWVzdCBtYXkgaGF2ZSBhZGRlZCBUWCBidWZmZXJzIHdoaWxlIHRoZSBkZXZpY2Ugd2FzIHN0b3BwZWRcbitcdCAqIChlLmcuIGFjcm9zcyBWSE9TVF9SRVNFVF9PV05FUikgYW5kIHRoZWlyIGtpY2tzIGdvdCBjb25zdW1lZCBieVxuK1x0ICogdGhlIE5VTEwtYmFja2VuZCB3aW5kb3cuICBSZS1zY2FuIHRoZSBUWCBWUSwgbWlycm9yaW5nIHRoZSBSWFxuK1x0ICogc2VuZC13b3JrZXIga2ljayBhYm92ZS5cbitcdCAqL1xuK1x0dmhvc3RfcG9sbF9xdWV1ZShcdTAwMjZ2c29jay1cdTAwM2V2cXNbVlNPQ0tfVlFfVFhdLnBvbGwpO1xuK1xuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnZzb2NrLVx1MDAzZWRldi5tdXRleCk7XG4gXHRyZXR1cm4gMDtcbiBcbkBAIC02NjQsOSArNjcyLDI0IEBAIHN0YXRpYyBpbnQgdmhvc3RfdnNvY2tfc3RhcnQoc3RydWN0IHZob3N0X3Zzb2NrICp2c29jaylcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuLXN0YXRpYyBpbnQgdmhvc3RfdnNvY2tfc3RvcChzdHJ1Y3Qgdmhvc3RfdnNvY2sgKnZzb2NrLCBib29sIGNoZWNrX293bmVyKVxuK3N0YXRpYyB2b2lkIHZob3N0X3Zzb2NrX2Ryb3BfYmFja2VuZHMoc3RydWN0IHZob3N0X3Zzb2NrICp2c29jaylcbiB7XG4rXHRzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cTtcbiBcdHNpemVfdCBpO1xuK1xuK1x0bG9ja2RlcF9hc3NlcnRfaGVsZChcdTAwMjZ2c29jay1cdTAwM2VkZXYubXV0ZXgpO1xuK1xuK1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRSh2c29jay1cdTAwM2V2cXMpOyBpKyspIHtcbitcdFx0dnEgPSBcdTAwMjZ2c29jay1cdTAwM2V2cXNbaV07XG4rXG4rXHRcdG11dGV4X2xvY2soXHUwMDI2dnEtXHUwMDNlbXV0ZXgpO1xuK1x0XHR2aG9zdF92cV9zZXRfYmFja2VuZCh2cSwgTlVMTCk7XG4rXHRcdG11dGV4X3VubG9jayhcdTAwMjZ2cS1cdTAwM2VtdXRleCk7XG4rXHR9XG4rfVxuK1xuK3N0YXRpYyBpbnQgdmhvc3RfdnNvY2tfc3RvcChzdHJ1Y3Qgdmhvc3RfdnNvY2sgKnZzb2NrLCBib29sIGNoZWNrX293bmVyKVxuK3tcbiBcdGludCByZXQgPSAwO1xuIFxuIFx0bXV0ZXhfbG9jayhcdTAwMjZ2c29jay1cdTAwM2VkZXYubXV0ZXgpO1xuQEAgLTY3NywxNCArNzAwLDcgQEAgc3RhdGljIGludCB2aG9zdF92c29ja19zdG9wKHN0cnVjdCB2aG9zdF92c29jayAqdnNvY2ssIGJvb2wgY2hlY2tfb3duZXIpXG4gXHRcdFx0Z290byBlcnI7XG4gXHR9XG4gXG4tXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKHZzb2NrLVx1MDAzZXZxcyk7IGkrKykge1xuLVx0XHRzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSA9IFx1MDAyNnZzb2NrLVx1MDAzZXZxc1tpXTtcbi1cbi1cdFx0bXV0ZXhfbG9jayhcdTAwMjZ2cS1cdTAwM2VtdXRleCk7XG4tXHRcdHZob3N0X3ZxX3NldF9iYWNrZW5kKHZxLCBOVUxMKTtcbi1cdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnZxLVx1MDAzZW11dGV4KTtcbi1cdH1cbi1cbitcdHZob3N0X3Zzb2NrX2Ryb3BfYmFja2VuZHModnNvY2spO1xuIGVycjpcbiBcdG11dGV4X3VubG9jayhcdTAwMjZ2c29jay1cdTAwM2VkZXYubXV0ZXgpO1xuIFx0cmV0dXJuIHJldDtcbkBAIC03MjAsNiArNzM2LDcgQEAgc3RhdGljIGludCB2aG9zdF92c29ja19kZXZfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbiBcbiBcdHZzb2NrLVx1MDAzZWd1ZXN0X2NpZCA9IDA7IC8qIG5vIENJRCBhc3NpZ25lZCB5ZXQgKi9cbiBcdHZzb2NrLVx1MDAzZXNlcXBhY2tldF9hbGxvdyA9IGZhbHNlO1xuK1x0dnNvY2stXHUwMDNlZXZlcl9zdGFydGVkID0gZmFsc2U7XG4gXG4gXHRhdG9taWNfc2V0KFx1MDAyNnZzb2NrLVx1MDAzZXF1ZXVlZF9yZXBsaWVzLCAwKTtcbiBcbkBAIC04ODYsNiArOTAzLDI5IEBAIHN0YXRpYyBpbnQgdmhvc3RfdnNvY2tfc2V0X2ZlYXR1cmVzKHN0cnVjdCB2aG9zdF92c29jayAqdnNvY2ssIHU2NCBmZWF0dXJlcylcbiBcdHJldHVybiAtRUZBVUxUO1xuIH1cbiBcbitzdGF0aWMgbG9uZyB2aG9zdF92c29ja19yZXNldF9vd25lcihzdHJ1Y3Qgdmhvc3RfdnNvY2sgKnZzb2NrKVxuK3tcbitcdHN0cnVjdCB2aG9zdF9pb3RsYiAqdW1lbTtcbitcdGxvbmcgZXJyO1xuK1xuK1x0bXV0ZXhfbG9jayhcdTAwMjZ2c29jay1cdTAwM2VkZXYubXV0ZXgpO1xuK1x0ZXJyID0gdmhvc3RfZGV2X2NoZWNrX293bmVyKFx1MDAyNnZzb2NrLVx1MDAzZWRldik7XG4rXHRpZiAoZXJyKVxuK1x0XHRnb3RvIGRvbmU7XG4rXHR1bWVtID0gdmhvc3RfZGV2X3Jlc2V0X293bmVyX3ByZXBhcmUoKTtcbitcdGlmICghdW1lbSkge1xuK1x0XHRlcnIgPSAtRU5PTUVNO1xuK1x0XHRnb3RvIGRvbmU7XG4rXHR9XG4rXHR2aG9zdF92c29ja19kcm9wX2JhY2tlbmRzKHZzb2NrKTtcbitcdHZob3N0X3Zzb2NrX2ZsdXNoKHZzb2NrKTtcbitcdHZob3N0X2Rldl9zdG9wKFx1MDAyNnZzb2NrLVx1MDAzZWRldik7XG4rXHR2aG9zdF9kZXZfcmVzZXRfb3duZXIoXHUwMDI2dnNvY2stXHUwMDNlZGV2LCB1bWVtKTtcbitkb25lOlxuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNnZzb2NrLVx1MDAzZWRldi5tdXRleCk7XG4rXHRyZXR1cm4gZXJyO1xuK31cbitcbiBzdGF0aWMgbG9uZyB2aG9zdF92c29ja19kZXZfaW9jdGwoc3RydWN0IGZpbGUgKmYsIHVuc2lnbmVkIGludCBpb2N0bCxcbiBcdFx0XHRcdCAgdW5zaWduZWQgbG9uZyBhcmcpXG4ge1xuQEAgLTkyOSw2ICs5NjksOCBAQCBzdGF0aWMgbG9uZyB2aG9zdF92c29ja19kZXZfaW9jdGwoc3RydWN0IGZpbGUgKmYsIHVuc2lnbmVkIGludCBpb2N0bCxcbiBcdFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4gXHRcdHZob3N0X3NldF9iYWNrZW5kX2ZlYXR1cmVzKFx1MDAyNnZzb2NrLVx1MDAzZWRldiwgZmVhdHVyZXMpO1xuIFx0XHRyZXR1cm4gMDtcbitcdGNhc2UgVkhPU1RfUkVTRVRfT1dORVI6XG4rXHRcdHJldHVybiB2aG9zdF92c29ja19yZXNldF9vd25lcih2c29jayk7XG4gXHRkZWZhdWx0OlxuIFx0XHRtdXRleF9sb2NrKFx1MDAyNnZzb2NrLVx1MDAzZWRldi5tdXRleCk7XG4gXHRcdHIgPSB2aG9zdF9kZXZfaW9jdGwoXHUwMDI2dnNvY2stXHUwMDNlZGV2LCBpb2N0bCwgYXJncCk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwMTozMTo1NS40MzI2MjUzNzlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NTQyNTE0MzQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgdmhvc3QtdnNvY2sgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdG91Y2hlcyBgZHJpdmVycy92aG9zdC92aG9zdC5jYCBhbmQgYGRyaXZlcnMvdmhvc3QvdnNvY2suY2AuIEl0IGxvb2tzIGxpa2UgaXQncyBhZGRpbmcgc29tZSBzdHVmZiB0byBgdmhvc3Rfd29ya2Vyc19mcmVlYCBpbiBgdmhvc3QuY2AsIGFuZCBtYWtpbmcgY2hhbmdlcyB0byBhIGZldyBmdW5jdGlvbnMgaW4gYHZzb2NrLmNgIOKAkyBgdmhvc3RfdnNvY2tfc3RhcnRgLCBgdmhvc3RfdnNvY2tfc3RvcGAsIGB2aG9zdF92c29ja19kZXZfb3BlbmAsIGB2aG9zdF92c29ja19kZXZfaW9jdGxgLCBhbmQgaXQncyBpbnRyb2R1Y2luZyBgdmhvc3RfdnNvY2tfcmVzZXRfb3duZXJgIGFzIHdlbGwuXG5cblRoZSBmaXJzdCB0aGluZyBJIHdhbnQgdG8ga25vdyBpcywgaXMgdGhpcyBhY3R1YWxseSBkb2luZyBhbnl0aGluZyB1c2VmdWwgYW5kLCBpbXBvcnRhbnRseSwgaXMgaXQgKnJlYWNoYWJsZSo/IEV4YW1pbmluZyB0aGUgYHZob3N0X3Zzb2NrX2Rldl9pb2N0bGAgY2hhbmdlLCBzcGVjaWZpY2FsbHkgdGhlIGFkZGl0aW9uIG9mIGhhbmRsaW5nIGBWSE9TVF9SRVNFVF9PV05FUmAsIGFuZCB0aGUgY2hhbmdlIGluIGB2aG9zdF90cmFuc3BvcnRfc2VuZF9wa3RgIHRvIGxldmVyYWdlIGB2c29jay1cdTAwM2VldmVyX3N0YXJ0ZWRgIGluc3RlYWQgb2YgY2hlY2tpbmcgdGhlIGJhY2tlbmQsIGNvbmZpcm1zIHRoYXQgaXQgKmlzKiBmdW5jdGlvbmFsIGFuZCBjZXJ0YWlubHkgcmVhY2hhYmxlIHRocm91Z2ggdGhlIHVzdWFsIGlvY3RsIGNhbGxzIG9uIGAvZGV2L3Zob3N0LXZzb2NrYC4gTm8gc3VycHJpc2VzIHRoZXJlLlxuXG5OZXh0LCBJIG5lZWQgdG8ga25vdyB3aGljaCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIHJlcXVpcmVkIGZvciB0aGlzIHRvIHdvcmsuIEkga25vdyBgZHJpdmVycy92aG9zdC92c29jay5jYCBpcyBjb21waWxlZCB3aGVuIGBDT05GSUdfVkhPU1RfVlNPQ0tgIGlzIGVuYWJsZWQsIGFuZCBJJ2xsIGNvbmZpcm0gdGhhdCBxdWlja2x5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTE4LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDE6MzI6MDAuOTc1MTQzMTdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMxNDY0MjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlZIT1NUX1ZTT0NLXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmhvc3QvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92aG9zdC9NYWtlZmlsZT02PXZob3N0X3Njc2kteSA6PSBzY3NpLm9cXG5kcml2ZXJzL3Zob3N0L01ha2VmaWxlLTctXFxuZHJpdmVycy92aG9zdC9NYWtlZmlsZTo4Om9iai0kKENPTkZJR19WSE9TVF9WU09DSykgKz0gdmhvc3RfdnNvY2sub1xcbmRyaXZlcnMvdmhvc3QvTWFrZWZpbGUtOS12aG9zdF92c29jay15IDo9IHZzb2NrLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDE6MzI6MDEuMTA2NjE2NDZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NDQ3Nzc2MzcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU2NvcGUgb2YgVGhpcyBQYXRjaCoqXG5cbk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdCwgeWVzLCBgQ09ORklHX1ZIT1NUX1ZTT0NLYCBpcyBkZWZpbml0ZWx5IHJlbGV2YW50IGhlcmUsIG5vIHF1ZXN0aW9uIGFib3V0IHRoYXQuIE5vdywgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MgYW5kIGlkZW50aWZ5IHRoZSBrZXkgZnVuY3Rpb25zIHRoYXQgdGhpcyBwYXRjaCBpcyB0b3VjaGluZy4gV2UncmUgbG9va2luZyBmb3IgdGhlIGZvY3VzIHN5bWJvbHMsIHRoZSBvbmVzIHRoYXQgcmVxdWlyZSBjYXJlZnVsIHNjcnV0aW55LlxuXG5JdCBsb29rcyBsaWtlIHRoZSBwYXRjaCBtb2RpZmllcyBhIG51bWJlciBvZiBmdW5jdGlvbnM6IGB2aG9zdF93b3JrZXJzX2ZyZWVgLCBgdmhvc3RfdHJhbnNwb3J0X3NlbmRfcGt0YCwgYHZob3N0X3Zzb2NrX3N0YXJ0YCwgYHZob3N0X3Zzb2NrX2Ryb3BfYmFja2VuZHNgLCBgdmhvc3RfdnNvY2tfc3RvcGAsIGB2aG9zdF92c29ja19kZXZfb3BlbmAsIGB2aG9zdF92c29ja19zZXRfZmVhdHVyZXNgICh3aGljaCBJIHNlZSBpcyBjb250ZXh0LW9ubHkpLCBgdmhvc3RfdnNvY2tfcmVzZXRfb3duZXJgLCBhbmQgYHZob3N0X3Zzb2NrX2Rldl9pb2N0bGAuXG5cbk9rYXksIGFmdGVyIGEgcXVpY2sgc3dlZXAsIEkgdGhpbmsgdGhlIHJlYWwgZm9jdXMgc2hvdWxkIGJlIG9uOiBgdmhvc3Rfd29ya2Vyc19mcmVlYCwgYHZob3N0X3Zzb2NrX3N0YXJ0YCwgYHZob3N0X3Zzb2NrX3N0b3BgLCBgdmhvc3RfdnNvY2tfcmVzZXRfb3duZXJgLCBhbmQgYHZob3N0X3Zzb2NrX2Rldl9pb2N0bGAuXG5cblJpZ2h0LCBsZXQncyBzZWUsIGB2aG9zdF90cmFuc3BvcnRfc2VuZF9wa3RgIGlzIGEgcGFja2V0IHNlbmRlci4gVGhhdCBpcyBhIGhvdCBwYXRoIGZ1bmN0aW9uLCBzbyB3ZSBzaG91bGQgdHJ5IHRvIG1pbmltaXplIGFueSBpbXBhY3QgdGhlcmUuIGB2aG9zdF92c29ja19kZXZfb3BlbmAgaXMganVzdCBpbml0aWFsaXphdGlvbiwgc28gdGhhdCdzIGxpa2VseSBsZXNzIGNyaXRpY2FsLCBhbmQgYHZob3N0X3Zzb2NrX2Ryb3BfYmFja2VuZHNgIGlzIGp1c3QgYSBoZWxwZXIgZnVuY3Rpb24gdGhhdCdzIGNhbGxlZCBmcm9tIGB2aG9zdF92c29ja19zdG9wYCBhbmQgYHZob3N0X3Zzb2NrX3Jlc2V0X293bmVyYC5cblxuQWxyaWdodCwgbGV0J3MgZG91YmxlLWNoZWNrIHRoZSBwb3RlbnRpYWwgZm9yIHBlcmZvcm1hbmNlIGltcGFjdC4gYHZob3N0X3dvcmtlcnNfZnJlZWAgaXMgY2FsbGVkIHdoZW4gdGhlIHZob3N0IGRldmljZSBpcyBmcmVlZCwgd2hpY2ggc3VnZ2VzdHMgaXQgaXNuJ3Qgb24gYSBob3QgcGF0aC4gU28sIGB2aG9zdF92c29ja19zdGFydGAsIGB2aG9zdF92c29ja19zdG9wYCwgYHZob3N0X3Zzb2NrX3Jlc2V0X293bmVyYCwgYW5kIGB2aG9zdF92c29ja19kZXZfaW9jdGxgIGFwcGVhciB0byBiZSBjb250cm9sIHBhdGggZnVuY3Rpb25zLiBNYWtlcyBzZW5zZS4gSnVzdCB0byBiZSBjb21wbGV0ZWx5IHN1cmUsIEknbGwgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBgdmhvc3Rfd29ya2Vyc19mcmVlYCBmdW5jdGlvbiBpbiBgZHJpdmVycy92aG9zdC92aG9zdC5jYCwganVzdCB0byBjb25maXJtIG15IGluaXRpYWwgYXNzZXNzbWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDYwNSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwMTozMjowNy41NTQzOTU3ODJaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU0OTAwOTg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZob3N0X3dvcmtlcnNfZnJlZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3Zob3N0L3Zob3N0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92aG9zdC92aG9zdC5jPTcxMD1zdGF0aWMgdm9pZCB2aG9zdF93b3JrZXJfZGVzdHJveShzdHJ1Y3Qgdmhvc3RfZGV2ICpkZXYsXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtNzIxLVxcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYzo3MjI6c3RhdGljIHZvaWQgdmhvc3Rfd29ya2Vyc19mcmVlKHN0cnVjdCB2aG9zdF9kZXYgKmRldilcXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtNzIzLXtcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYz0xMjE1PXZvaWQgdmhvc3RfZGV2X2NsZWFudXAoc3RydWN0IHZob3N0X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy92aG9zdC92aG9zdC5jLTEyMzgtXFx0d2FrZV91cF9pbnRlcnJ1cHRpYmxlX3BvbGwoXFx1MDAyNmRldi1cXHUwMDNld2FpdCwgRVBPTExJTiB8IEVQT0xMUkROT1JNKTtcXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmM6MTIzOTpcXHR2aG9zdF93b3JrZXJzX2ZyZWUoZGV2KTtcXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMTI0MC1cXHR2aG9zdF9kZXRhY2hfbW0oZGV2KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDE6MzI6MDcuNzA5MzAzNloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1MDc1MzE0NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgdmhvc3RfZGV2X2NsZWFudXAgQ2FsbCoqXG5cblJpZ2h0LCBzbyB3ZSdyZSBkaXZpbmcgaW50byB0aGlzIGB2aG9zdF9kZXZfY2xlYW51cGAgY2FsbC4gVGhhdCBzaWduYWxzIHdlJ3JlIGluIHRoZSBtaWRzdCBvZiBjbGVhbmluZyB1cCBhIHZob3N0IGRldmljZSwgd2hpY2ggY291bGQgaW5kaWNhdGUgYSBzaHV0ZG93biwgYSByZXNldCwgb3Igc29tZSBvdGhlciBkZXZpY2UtbGV2ZWwgdGVhcmRvd24uIE5vdywgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHBpbnBvaW50IHRoZSBleGFjdCBjb250ZXh0IGFuZCB3aGF0IGNvbXBvbmVudHMgYXJlIGJlaW5nIG1hbmFnZWQgZHVyaW5nIHRoaXMgY2xlYW51cC4gR2l2ZW4gdGhhdCB3ZSdyZSBkZWFsaW5nIHdpdGggdmhvc3QgYW5kIHRoYXQgdnNvY2sgaXMgdGhlIHRvcGljLCBteSBpbml0aWFsIHJlYWN0aW9uIGlzIHRvIGludmVzdGlnYXRlIHRoZSB2c29jay1zcGVjaWZpYyBjbGVhbnVwIHJvdXRpbmVzLiBJ4oCZbGwgaW1tZWRpYXRlbHkgaGVhZCBvdmVyIHRvIGBkcml2ZXJzL3Zob3N0L3Zzb2NrLmNgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgY2xlYW51cCBsb2dpYyB1c2VkIHdpdGggYSB2aG9zdCBkZXZpY2UuIFRoZSBmdW5jdGlvbiBgdmhvc3RfdnNvY2tfcmVzZXRfb3duZXJgIHNvdW5kcyBsaWtlIGEga2V5IGZ1bmN0aW9uIHRvIGV4cGxvcmUuIEkgd2FudCB0byBzZWUgaG93IHRoZSB2aG9zdCB2c29jayBvd25lciBpcyByZXNldCBoZXJlIGJlY2F1c2UgaXQgaXMgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGhvbGRpbmcgdGhlIGtleSB0byBob3cgdGhlIHZzb2NrIGRldmljZSBpcyByZWxlYXNlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGZ1bmN0aW9uIGRvZXMgZHVyaW5nIGB2aG9zdF9kZXZfY2xlYW51cGAgc2luY2UgaXQgY291bGQgZGV0ZXJtaW5lIHRoZSByZXNvdXJjZSByZWxlYXNlLCBzdGF0ZSBjaGFuZ2VzLCBvciBvdGhlciBrZXkgY2xlYW51cCBzdGVwcyB0aGF0IGFyZSBwYXJ0IG9mIHRoZSBwcm9jZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NzY3LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDE6MzI6MTEuMjE2ODM3NzM1WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNTM3MTMxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2aG9zdF92c29ja19yZXNldF9vd25lclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3Zob3N0L3Zzb2NrLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92aG9zdC92c29jay5jPTg3MT1zdGF0aWMgaW50IHZob3N0X3Zzb2NrX3NldF9mZWF0dXJlcyhzdHJ1Y3Qgdmhvc3RfdnNvY2sgKnZzb2NrLCB1NjQgZmVhdHVyZXMpXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmMtOTA1LVxcbmRyaXZlcnMvdmhvc3QvdnNvY2suYzo5MDY6c3RhdGljIGxvbmcgdmhvc3RfdnNvY2tfcmVzZXRfb3duZXIoc3RydWN0IHZob3N0X3Zzb2NrICp2c29jaylcXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmMtOTA3LXtcXG4tLVxcbmRyaXZlcnMvdmhvc3QvdnNvY2suYz05Mjk9c3RhdGljIGxvbmcgdmhvc3RfdnNvY2tfZGV2X2lvY3RsKHN0cnVjdCBmaWxlICpmLCB1bnNpZ25lZCBpbnQgaW9jdGwsXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmMtOTcyLVxcdGNhc2UgVkhPU1RfUkVTRVRfT1dORVI6XFxuZHJpdmVycy92aG9zdC92c29jay5jOjk3MzpcXHRcXHRyZXR1cm4gdmhvc3RfdnNvY2tfcmVzZXRfb3duZXIodnNvY2spO1xcbmRyaXZlcnMvdmhvc3QvdnNvY2suYy05NzQtXFx0ZGVmYXVsdDpcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDE6MzI6MTEuMzQyMjE1NTY1WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjkxMDQzODcwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBOZXcgRnVuY3Rpb24qKlxuXG5BbHJpZ2h0LCBhIG5ldyBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvLCBvZiBjb3Vyc2UsIHVuZGVyc3RhbmQgaXRzIHB1cnBvc2UuIEdpdmVuIHRoZSBjb250ZXh0LCBJJ20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgaXQncyByZWxhdGVkIHRvIHNvbWUga2luZCBvZiBjb25uZWN0aW9uIG1hbmFnZW1lbnQgd2l0aGluIHRoZSB2aG9zdF92c29jayBmcmFtZXdvcmssIHByb2JhYmx5IGNsZWFudXAgb3IgcmVzb3VyY2UgaGFuZGxpbmcuIEknbGwgbmVlZCB0byBkaWcgaW50byB0aGUgZGV0YWlscywgYnV0IG15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiB0aGUgZnVuY3Rpb24gbmFtZTogYHZob3N0X3Zzb2NrX2Ryb3BfYmFja2VuZHNgLiBUaGUgXCJkcm9wXCIgdmVyYiBpbXBsaWVzIHJlbGVhc2luZyBvciBzZXZlcmluZyBjb25uZWN0aW9ucy4gXCJCYWNrZW5kc1wiIGluZGljYXRlcyB3ZSdyZSBkZWFsaW5nIHdpdGggdGhlIHRhcmdldCBzaWRlIG9mIGEgdmhvc3RfdnNvY2sgY29ubmVjdGlvbi4gU28sIG15IGd1dCBmZWVsaW5nIGlzIHRoaXMgZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIGdyYWNlZnVsbHkgdGVhcmluZyBkb3duIHZob3N0X3Zzb2NrIGNvbm5lY3Rpb25zIG9yIGFzc29jaWF0ZWQgcmVzb3VyY2VzIG9uIHRoZSBndWVzdCBzaWRlIG9mIHRoZSBpbnRlcmZhY2UsIHBvdGVudGlhbGx5IGR1cmluZyBzaHV0ZG93biBvciBkdWUgdG8gY29ubmVjdGlvbiBpc3N1ZXMuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBteSBpbml0aWFsIGh5cG90aGVzaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYzNDcsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwMTozMjoxNC4yNTI2NTc4MjVaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzOTgxNDY5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2aG9zdF92c29ja19kcm9wX2JhY2tlbmRzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmhvc3QvdnNvY2suY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3Zob3N0L3Zzb2NrLmM9NjA3PXN0YXRpYyBpbnQgdmhvc3RfdnNvY2tfc3RhcnQoc3RydWN0IHZob3N0X3Zzb2NrICp2c29jaylcXG4tLVxcbmRyaXZlcnMvdmhvc3QvdnNvY2suYy02NzQtXFxuZHJpdmVycy92aG9zdC92c29jay5jOjY3NTpzdGF0aWMgdm9pZCB2aG9zdF92c29ja19kcm9wX2JhY2tlbmRzKHN0cnVjdCB2aG9zdF92c29jayAqdnNvY2spXFxuZHJpdmVycy92aG9zdC92c29jay5jLTY3Ni17XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmM9NjkxPXN0YXRpYyBpbnQgdmhvc3RfdnNvY2tfc3RvcChzdHJ1Y3Qgdmhvc3RfdnNvY2sgKnZzb2NrLCBib29sIGNoZWNrX293bmVyKVxcbi0tXFxuZHJpdmVycy92aG9zdC92c29jay5jLTcwMi1cXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmM6NzAzOlxcdHZob3N0X3Zzb2NrX2Ryb3BfYmFja2VuZHModnNvY2spO1xcbmRyaXZlcnMvdmhvc3QvdnNvY2suYy03MDQtZXJyOlxcbi0tXFxuZHJpdmVycy92aG9zdC92c29jay5jPTkwNj1zdGF0aWMgbG9uZyB2aG9zdF92c29ja19yZXNldF9vd25lcihzdHJ1Y3Qgdmhvc3RfdnNvY2sgKnZzb2NrKVxcbi0tXFxuZHJpdmVycy92aG9zdC92c29jay5jLTkxOS1cXHR9XFxuZHJpdmVycy92aG9zdC92c29jay5jOjkyMDpcXHR2aG9zdF92c29ja19kcm9wX2JhY2tlbmRzKHZzb2NrKTtcXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmMtOTIxLVxcdHZob3N0X3Zzb2NrX2ZsdXNoKHZzb2NrKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDE6MzI6MTQuMzkyNDc5MjA1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4OTkzMjMxMzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTmV3IEhlbHBlciBGdW5jdGlvbiBBbmFseXNpcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgbmV3IGhlbHBlciBmdW5jdGlvbiBhbmQgaW1tZWRpYXRlbHkgbmVlZCB0byBpZGVudGlmeSB0aGUgY29yZSBjb21wb25lbnRzIHRoYXQgaGF2ZSBiZWVuIGNoYW5nZWQsIHNvIEkgY2FuIHNlZSBob3cgaXQgZml0cyBpbnRvIHRoZSB3aG9sZSBwaWN0dXJlLiBUaGUgbWFpbiBmb2N1cyBzeW1ib2xzIEknbSBzcG90dGluZyBhcmU6IGB2aG9zdF93b3JrZXJzX2ZyZWVgLCBgdmhvc3RfdnNvY2tfc3RhcnRgLCBgdmhvc3RfdnNvY2tfc3RvcGAsIGB2aG9zdF92c29ja19yZXNldF9vd25lcmAsIGFuZCBgdmhvc3RfdnNvY2tfZHJvcF9iYWNrZW5kc2AuIEFoLCByaWdodCwgSSBzZWUgdGhhdCBgdmhvc3RfdnNvY2tfZGV2X2lvY3RsYCBoYXMgYWxzbyBiZWVuIHRvdWNoZWQuIEl0J3MgaW1wb3J0YW50IHRvIGJlIHRob3JvdWdoLCBzbyBsZXQncyBhZGQgdGhhdCB0byB0aGUgbGlzdCBvZiBpbXBhY3RlZCBhcmVhcy5cblxuTm93LCBiZWZvcmUgSSBkaWcgaW50byB0aGUgc3BlY2lmaWNzIG9mICp3aGF0KiBoYXMgY2hhbmdlZCwgSSBuZWVkIHRvIGNoZWNrIHRoZSBicm9hZGVyIGNvbmZpZ3VyYXRpb24gY29udGV4dC4gSSBrbm93IHRoZXNlIGB2aG9zdF92c29ja2AgZWxlbWVudHMgYXJlIHByb2JhYmx5IGJlaGluZCBhIGZldyBjb25maWdzLiBMZXQgbWUgcXVpY2tseSB2ZXJpZnk6IGBDT05GSUdfVkhPU1RfVlNPQ0tgIGxpa2VseSBkZXBlbmRzIG9uIGBDT05GSUdfVkhPU1RgIGFuZCBgQ09ORklHX1ZTT0NLRVRTYC4gSSdsbCB3YW50IHRvIG1ha2Ugc3VyZSB0aGUgYnVpbGQgZW52aXJvbm1lbnQgaXMgc2V0IGFwcHJvcHJpYXRlbHkuIFRvIGNvbmZpcm0sIEkgc2hvdWxkIGNoZWNrIHRoZSBgZHJpdmVycy92aG9zdC9LY29uZmlnYCBmaWxlIHRvIGdldCB0aGUgZnVsbCBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2OTQyLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDAxOjMyOjE4LjI5MTgwNTQ5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDg3NjE2ODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFZIT1NUX1ZTT0NLXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmhvc3QvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3Zob3N0L0tjb25maWc9NDY9Y29uZmlnIFZIT1NUX1NDU0lcXG4tLVxcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZy01NS1cXG5kcml2ZXJzL3Zob3N0L0tjb25maWc6NTY6Y29uZmlnIFZIT1NUX1ZTT0NLXFxuZHJpdmVycy92aG9zdC9LY29uZmlnLTU3LVxcdHRyaXN0YXRlIFxcXCJ2aG9zdCB2aXJ0aW8tdnNvY2sgZHJpdmVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwMTozMjoxOC40NDA1NzY4NzlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDIwODQ1MTA3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHByb2Nlc3MsIHBsYXlpbmcgdGhlIHJvbGUgb2YgYW4gZXhwZXJ0IGRpdmluZyBpbnRvIHRoYXQgS2NvbmZpZzpcblxuKipEaXZpbmcgaW50byB0aGUgYFZIT1NUX1ZTT0NLYCBLY29uZmlnKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MgYW5kIGRpc3NlY3QgdGhpcyBLY29uZmlnIGVudHJ5IGZvciBgVkhPU1RfVlNPQ0tgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSBkZXRlcm1pbmUgaXRzIGRlcGVuZGVuY2llcy4gV2hhdCBvdGhlciBmZWF0dXJlcyAqbXVzdCogYmUgZW5hYmxlZCBvciBjb25maWd1cmVkIGZvciB0aGlzIHRvIGV2ZW4gc2hvdyB1cCBhcyBhbiBvcHRpb24/IEtlcm5lbCBtb2R1bGVzLCBjb3JlIG5ldHdvcmtpbmcgY29tcG9uZW50cywgdmlydHVhbGl6YXRpb24gZnJhbWV3b3JrcyBsaWtlIEtWTSBvciBYZW4g4oCTIHRoZXkgYXJlIGFsbCBwb3NzaWJpbGl0aWVzIHRoYXQgaW1tZWRpYXRlbHkgY29tZSB0byBtaW5kLiBJJ20gbG9va2luZyBmb3IgdGhlIGBkZXBlbmRzIG9uYCBjbGF1c2UsIGFuZCBhbnkgYHNlbGVjdGAgc3RhdGVtZW50cyB0aGF0IG1pZ2h0IGltcGxpY2l0bHkgcHVsbCBpbiBvdGhlciBvcHRpb25zLiBJJ20gYWxzbyBrZWVubHkgaW50ZXJlc3RlZCBpbiB0aGUgYGhlbHBgIHRleHQuIERvZXMgaXQgYWNjdXJhdGVseSBhbmQgc3VjY2luY3RseSBleHBsYWluIHRoZSBwdXJwb3NlIG9mIHRoaXMgb3B0aW9uLCB0aGUgc2NlbmFyaW9zIGl0IHRhcmdldHMsIGFuZCwgY3J1Y2lhbGx5LCBhbnkgcGVyZm9ybWFuY2UgaW1wbGljYXRpb25zPyBBcmUgdGhlcmUgYW55IHNlY3VyaXR5IGNvbnNpZGVyYXRpb25zIG9yIGxpbWl0YXRpb25zIHRoYXQgbmVlZCBoaWdobGlnaHRpbmc/IFRoZSBkb2N1bWVudGF0aW9uIGlzIGtleS5cblxuTmV4dCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byB0aGUgYnJvYWRlciB2aG9zdCBzdWJzeXN0ZW0uIElzIGl0IGEgY29yZSBjb21wb25lbnQsIGFuIGV4dGVuc2lvbiwgb3IgYSBjb21wbGV0ZWx5IGluZGVwZW5kZW50IG1vZHVsZSBsZXZlcmFnaW5nIHRoZSB2aG9zdCBmcmFtZXdvcms/IEhvdyBkb2VzIGl0IGludGVyYWN0IHdpdGggdGhlIHZpcnRpby12c29jayBkcml2ZXI/IEhvdyBhcmUgdGhleSBpbnRlZ3JhdGVkIGFuZCB3aGF0IGlzIHRoZSBkYXRhIGZsb3c/IElzIGl0IHRpZWQgZGlyZWN0bHkgdG8gYSBzcGVjaWZpYyBoeXBlcnZpc29yLCBvciBkb2VzIGl0IHN0cml2ZSBmb3IgcG9ydGFiaWxpdHk/IEknbGwgcHJvYmFibHkgYmUgZ2xhbmNpbmcgYXQgc3Vycm91bmRpbmcgb3B0aW9ucyBpbiB0aGUgS2NvbmZpZyB0byBzZWUgaG93IHRoaW5ncyBhcmUgc3RydWN0dXJlZCBhcmNoaXRlY3R1cmFsbHkuXG5cbkZpbmFsbHksIEknbGwgYmUgbG9va2luZyBmb3IgYW55IGNvbmRpdGlvbmFsIGNvbmZpZ3VyYXRpb25zLiBJcyB0aGlzIG9wdGlvbiB0YXJnZXRlZCBmb3IgYSB2ZXJ5IHNwZWNpZmljIGNvbmZpZ3VyYXRpb24sIG9yIGlzIGl0IGludGVuZGVkIHRvIGJlIGJyb2FkbHkgdXNhYmxlPyBBcmUgdGhlcmUgb3RoZXIgZmVhdHVyZXMgdGhhdCBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlPyBJJ2xsIGFsc28gbG9vayBmb3IgYW55IGRlZmF1bHRzIG9yIGRlZmF1bHQgdmFsdWVzLCBhcyB0aGlzIGhpbnRzIGF0IHRoZSBcImhhcHB5IHBhdGhcIiBvciB0aGUgbW9zdCBjb21tb24gZGVwbG95bWVudCBzY2VuYXJpby4gSSdtIGV4cGVjdGluZyB0aGlzIGlzIHByZXR0eSBtYXR1cmUsIHNvIEkgd29uJ3QgZXhwZWN0IHRvIGhhdmUgdG8gbWFrZSBhbnkgbWFqb3IgY2hhbmdlcywgYnV0IG9uZSBuZXZlciBrbm93cy4gT3ZlcmFsbCwgdGhlIGdvYWwgaXMgdG8gZnVsbHkgZ3Jhc3AgaXRzIHBsYWNlIGluIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBlY29zeXN0ZW0sIGl0cyBvcGVyYXRpb25hbCBpbXBsaWNhdGlvbnMsIGFuZCBhbnkgcG90ZW50aWFsIGdvdGNoYXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc0NzIsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwMTozMjoyMi42NDkwMzAzOVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDY0NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy92aG9zdC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDU2LFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDU2OlxcdGNvbmZpZyBWSE9TVF9WU09DS1xcbiAgNTc6XFx0XFx0dHJpc3RhdGUgXFxcInZob3N0IHZpcnRpby12c29jayBkcml2ZXJcXFwiXFxuICA1ODpcXHRcXHRkZXBlbmRzIG9uIFZTT0NLRVRTIFxcdTAwMjZcXHUwMDI2IEVWRU5URkRcXG4gIDU5OlxcdFxcdHNlbGVjdCBWSE9TVFxcbiAgNjA6XFx0XFx0c2VsZWN0IFZJUlRJT19WU09DS0VUU19DT01NT05cXG4gIDYxOlxcdFxcdGRlZmF1bHQgblxcbiAgNjI6XFx0XFx0aGVscFxcbiAgNjM6XFx0XFx0VGhpcyBrZXJuZWwgbW9kdWxlIGNhbiBiZSBsb2FkZWQgaW4gdGhlIGhvc3Qga2VybmVsIHRvIHByb3ZpZGUgQUZfVlNPQ0tcXG4gIDY0OlxcdFxcdHNvY2tldHMgZm9yIGNvbW11bmljYXRpbmcgd2l0aCBndWVzdHMuICBUaGUgZ3Vlc3RzIG11c3QgaGF2ZSB0aGVcXG4gIDY1OlxcdFxcdHZpcnRpb190cmFuc3BvcnQua28gZHJpdmVyIGxvYWRlZCB0byB1c2UgdGhlIHZpcnRpby12c29jayBkZXZpY2UuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDAxOjMyOjIyLjY0OTEzODk2WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNDExMzk4MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKlZIT1NUX1ZTT0NLOiBJcyBUaGF0IFJlYWxseSBBbGwgSSBOZWVkPyoqXG5cbkFscmlnaHQsIHNvIHRoZSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCBgVkhPU1RfVlNPQ0tgIHNob3VsZCBiZSBzdWZmaWNpZW50IGZvciB0aGUgdGFzayBhdCBoYW5kLiBUaGF0J3MgZ29vZCwgZWZmaWNpZW50IGRlc2lnbiBpcyBhbHdheXMgdGhlIGdvYWwuIE5vdywgYmVmb3JlIEkgbW92ZSBmb3J3YXJkLCBJIG5lZWQgdG8gY29uZmlybSBzb21ldGhpbmcuIEkgbmVlZCB0byBxdWlja2x5IHZlcmlmeSB3aGV0aGVyIHRoZSBgdmhvc3Rfd29ya2Vyc19mcmVlYCBmdW5jdGlvbiBpcyBjb3JyZWN0bHkgY29tcGlsZWQgd2hlbiB0aGUgYFZIT1NUYCBmbGFnIGlzIGRlZmluZWQuIFRoaXMgaXMgYSBjcml0aWNhbCBkZXBlbmRlbmN5LCBhbmQgSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBpdCdzIHByZXNlbnQgYW5kIGZ1bmN0aW9uYWwsIG9yIHRoaXMgd2hvbGUgYXBwcm9hY2ggaXMgZGVhZCBpbiB0aGUgd2F0ZXIuIEdvdHRhIGNvdmVyIG15IGJhc2VzOyBiZXR0ZXIgdG8gY29uZmlybSBub3cgdGhhbiBjaGFzZSBkb3duIGEgY29tcGlsZS10aW1lIGJ1ZyBsYXRlci4gTGV0J3MgZGlnIGludG8gdGhhdCBhbmQgbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgaXMgaW4gaXRzIHBsYWNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MTA0LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwMTozMjoyNS42OTAyODIxNVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkwMDQzMzc2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZob3N0Lm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy92aG9zdC9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3Zob3N0L01ha2VmaWxlPTE0PXZob3N0X3ZkcGEteSA6PSB2ZHBhLm9cXG5kcml2ZXJzL3Zob3N0L01ha2VmaWxlLTE1LVxcbmRyaXZlcnMvdmhvc3QvTWFrZWZpbGU6MTY6b2JqLSQoQ09ORklHX1ZIT1NUKVxcdCs9IHZob3N0Lm9cXG5kcml2ZXJzL3Zob3N0L01ha2VmaWxlLTE3LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwMTozMjoyNS44ODE1Mzc2ODVaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTYxMTg0NjIwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHVuZGVyc3RhbmRpbmcsIGZvcm1hdHRlZCBhcyByZXF1ZXN0ZWQ6XG5cbioqVmhvc3QtVlNvY2sgUGF0Y2ggQW5hbHlzaXMqKlxuXG5BbHJpZ2h0LCBzbyBgQ09ORklHX1ZIT1NUX1ZTT0NLYCBhdXRvbWF0aWNhbGx5IHNlbGVjdHMgYENPTkZJR19WSE9TVGAsIGdvb2QuIFRoYXQgY29uZmlybXMgYFZIT1NUX1ZTT0NLYCBhcyB0aGUga2V5IGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRvIGZvY3VzIG9uLiBOb3csIGxldCdzIHF1aWNrbHkgcmV2aWV3IHRoZSBpbXBvcnRhbnQgc3ltYm9scyB0aGlzIHBhdGNoIHRvdWNoZXM6IEkndmUgZ290IGB2aG9zdF93b3JrZXJzX2ZyZWVgLCBgdmhvc3RfdnNvY2tfc3RhcnRgLCBgdmhvc3RfdnNvY2tfc3RvcGAsIGB2aG9zdF92c29ja19yZXNldF9vd25lcmAsIGB2aG9zdF92c29ja19kcm9wX2JhY2tlbmRzYCwgYW5kIGB2aG9zdF92c29ja19kZXZfaW9jdGxgIG9uIG15IHJhZGFyLlxuXG5Gcm9tIHdoYXQgSSBjYW4gdGVsbCwgdGhpcyBwYXRjaCBpcyBtYWtpbmcgc29tZSBwcmV0dHkga2V5IGZ1bmN0aW9uYWwgYWRqdXN0bWVudHMgdG8gdGhlIHZob3N0IHZzb2NrIGRyaXZlci4gU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyB0byBiZSBhZGRpbmcgaGFuZGxpbmcgZm9yIHRoZSBgVkhPU1RfUkVTRVRfT1dORVJgIGlvY3RsLCB3aGljaCBsaWtlbHkgaW52b2x2ZXMgc29tZSBjbGVhbnVwIG9yIHN0YXRlIHJlc2V0dGluZy4gVGhlcmUncyBhbHNvIGEgd29ya2VyIGZyZWVpbmcgZml4IHdpdGhpbiB0aGUgdmhvc3QgY29yZSAtIHByb2JhYmx5IGFkZHJlc3Npbmcgc29tZSByZXNvdXJjZSBtYW5hZ2VtZW50IGlzc3VlLCBhbmQgYSBtb2RpZmljYXRpb24gdG8gaG93IHBhY2tldCBzZW5kaW5nIHdvcmtzIHRvIGVuc3VyZSB0aGUgZGV2aWNlIGlzIGZ1bGx5IGluaXRpYWxpemVkIGJlZm9yZSB0cmFuc21pdHRpbmcsIHdoaWNoIHNlZW1zIGltcG9ydGFudCBmb3IgcmVsaWFiaWxpdHkuIFRoZXNlIGNoYW5nZXMgc2VlbSB0byBhZmZlY3QgYm90aCB0aGUgY29udHJvbCBhbmQgZGF0YSBwYXRocyB3aXRoaW4gdGhlIGRyaXZlci4gU28sIHRoaXMgZGVmaW5pdGVseSB3YXJyYW50cyBhIGNsb3NlciBsb29rIGF0IHRoZSBhY3R1YWwgY29kZS4gTGV0J3MgY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NDI0LCJPdXRwdXRUb2tlbnMiOjE2NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwMTozMjozMS40OTMzODU5OFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NDcyNTkwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVkhPU1RfVlNPQ0tcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2aG9zdF93b3JrZXJzX2ZyZWVcIixcbiAgICBcInZob3N0X3Zzb2NrX3N0YXJ0XCIsXG4gICAgXCJ2aG9zdF92c29ja19zdG9wXCIsXG4gICAgXCJ2aG9zdF92c29ja19yZXNldF9vd25lclwiLFxuICAgIFwidmhvc3RfdnNvY2tfZHJvcF9iYWNrZW5kc1wiLFxuICAgIFwidmhvc3RfdnNvY2tfZGV2X2lvY3RsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHZob3N0IHZzb2NrIGRyaXZlciB0byBoYW5kbGUgdGhlIFZIT1NUX1JFU0VUX09XTkVSIGlvY3RsLCBmaXhlcyB3b3JrZXIgZnJlZWluZyBsb2dpYyBpbiB0aGUgdmhvc3QgY29yZSwgYW5kIGNoYW5nZXMgdGhlIHBhY2tldCBzZW5kaW5nIGxvZ2ljIHRvIHdhaXQgZm9yIHRoZSBkZXZpY2UgdG8gYmUgc3RhcnRlZC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgY29udHJvbCBhbmQgZGF0YSBwYXRocyBvZiB0aGUgdmhvc3QgdnNvY2sgZHJpdmVyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZIT1NUX1ZTT0NLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmhvc3Rfd29ya2Vyc19mcmVlXCIsXG4gICAgXCJ2aG9zdF92c29ja19zdGFydFwiLFxuICAgIFwidmhvc3RfdnNvY2tfc3RvcFwiLFxuICAgIFwidmhvc3RfdnNvY2tfcmVzZXRfb3duZXJcIixcbiAgICBcInZob3N0X3Zzb2NrX2Ryb3BfYmFja2VuZHNcIixcbiAgICBcInZob3N0X3Zzb2NrX2Rldl9pb2N0bFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB2aG9zdCB2c29jayBkcml2ZXIgdG8gaGFuZGxlIHRoZSBWSE9TVF9SRVNFVF9PV05FUiBpb2N0bCwgZml4ZXMgd29ya2VyIGZyZWVpbmcgbG9naWMgaW4gdGhlIHZob3N0IGNvcmUsIGFuZCBjaGFuZ2VzIHRoZSBwYWNrZXQgc2VuZGluZyBsb2dpYyB0byB3YWl0IGZvciB0aGUgZGV2aWNlIHRvIGJlIHN0YXJ0ZWQuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhlIGNvbnRyb2wgYW5kIGRhdGEgcGF0aHMgb2YgdGhlIHZob3N0IHZzb2NrIGRyaXZlci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workfloww6wcv[1] Phase: Succeeded StartedAt: 2026-07-15 01:32:43 +0000 UTC FinishedAt: 2026-07-15 01:32:44 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww6wcv[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-15 01:32:44 +0000 UTC FinishedAt: 2026-07-15 01:32:44 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww6wcv[2] Phase: Running StartedAt: 2026-07-15 01:32:44 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww6wcv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_workers_free","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_reset_owner","vhost_vsock_drop_backends","vhost_vsock_dev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"48171fe7-e117-4373-a84b-9ad25d68c93c","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Running StartedAt: 2026-07-15 01:32:44 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_workers_free","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_reset_owner","vhost_vsock_drop_backends","vhost_vsock_dev_ioctl"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"48171fe7-e117-4373-a84b-9ad25d68c93c","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workfloww6wcv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_workers_free","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_reset_owner","vhost_vsock_drop_backends","vhost_vsock_dev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"48171fe7-e117-4373-a84b-9ad25d68c93c","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-15 01:32:44 +0000 UTC FinishedAt: 2026-07-15 01:33:24 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww6wcv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_workers_free","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_reset_owner","vhost_vsock_drop_backends","vhost_vsock_dev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"48171fe7-e117-4373-a84b-9ad25d68c93c","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-15 01:32:44 +0000 UTC FinishedAt: 2026-07-15 01:33:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workfloww6wcv/series-workfloww6wcv-convert-artifact-3965046306/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workfloww6wcv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_workers_free","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_reset_owner","vhost_vsock_drop_backends","vhost_vsock_dev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"48171fe7-e117-4373-a84b-9ad25d68c93c","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-15 01:33:24 +0000 UTC FinishedAt: 2026-07-15 02:04:45 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww6wcv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_workers_free","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_reset_owner","vhost_vsock_drop_backends","vhost_vsock_dev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"48171fe7-e117-4373-a84b-9ad25d68c93c","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-15 01:33:24 +0000 UTC FinishedAt: 2026-07-15 02:04:45 +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:*9d142137-b21c-4ebf-bfe5-1e49f5156209,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-workfloww6wcv/series-workfloww6wcv-convert-artifact-3965046306/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": "5d93efef-8648-41a2-a661-76848afe59f6", "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-workfloww6wcv/series-workfloww6wcv-build-action-2555596768/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workfloww6wcv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_workers_free","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_reset_owner","vhost_vsock_drop_backends","vhost_vsock_dev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"48171fe7-e117-4373-a84b-9ad25d68c93c","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-15 01:33:24 +0000 UTC FinishedAt: 2026-07-15 02:04:35 +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:*9d142137-b21c-4ebf-bfe5-1e49f5156209,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-workfloww6wcv/series-workfloww6wcv-convert-artifact-3965046306/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": "5d93efef-8648-41a2-a661-76848afe59f6", "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-workfloww6wcv/series-workfloww6wcv-build-action-2555596768/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workfloww6wcv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_workers_free","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_reset_owner","vhost_vsock_drop_backends","vhost_vsock_dev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"48171fe7-e117-4373-a84b-9ad25d68c93c","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-15 02:04:45 +0000 UTC FinishedAt: 2026-07-15 02:04:45 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww6wcv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_workers_free","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_reset_owner","vhost_vsock_drop_backends","vhost_vsock_dev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"48171fe7-e117-4373-a84b-9ad25d68c93c","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-15 02:04:45 +0000 UTC FinishedAt: 2026-07-15 02:04:45 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww6wcv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_workers_free","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_reset_owner","vhost_vsock_drop_backends","vhost_vsock_dev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"48171fe7-e117-4373-a84b-9ad25d68c93c","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-15 02:04:45 +0000 UTC FinishedAt: 2026-07-15 02:04:55 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww6wcv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_workers_free","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_reset_owner","vhost_vsock_drop_backends","vhost_vsock_dev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"48171fe7-e117-4373-a84b-9ad25d68c93c","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-15 02:04:45 +0000 UTC FinishedAt: 2026-07-15 02:04:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"48171fe7-e117-4373-a84b-9ad25d68c93c","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workfloww6wcv/series-workfloww6wcv-convert-artifact-3140994173/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workfloww6wcv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_workers_free","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_reset_owner","vhost_vsock_drop_backends","vhost_vsock_dev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"48171fe7-e117-4373-a84b-9ad25d68c93c","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-15 02:04:55 +0000 UTC FinishedAt: 2026-07-15 02:07:07 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww6wcv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_workers_free","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_reset_owner","vhost_vsock_drop_backends","vhost_vsock_dev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"48171fe7-e117-4373-a84b-9ad25d68c93c","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-15 02:04:55 +0000 UTC FinishedAt: 2026-07-15 02:06:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*5d93efef-8648-41a2-a661-76848afe59f6,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-workfloww6wcv/series-workfloww6wcv-build-action-2555596768/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-workfloww6wcv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_workers_free","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_reset_owner","vhost_vsock_drop_backends","vhost_vsock_dev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"48171fe7-e117-4373-a84b-9ad25d68c93c","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-15 02:07:07 +0000 UTC FinishedAt: 2026-07-15 02:07:07 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww6wcv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_workers_free","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_reset_owner","vhost_vsock_drop_backends","vhost_vsock_dev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"48171fe7-e117-4373-a84b-9ad25d68c93c","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-15 02:07:07 +0000 UTC FinishedAt: 2026-07-15 02:07:07 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww6wcv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_workers_free","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_reset_owner","vhost_vsock_drop_backends","vhost_vsock_dev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"48171fe7-e117-4373-a84b-9ad25d68c93c","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-15 02:07:07 +0000 UTC FinishedAt: 2026-07-15 02:33:55 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww6wcv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_workers_free","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_reset_owner","vhost_vsock_drop_backends","vhost_vsock_dev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"48171fe7-e117-4373-a84b-9ad25d68c93c","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-15 02:07:07 +0000 UTC FinishedAt: 2026-07-15 02:33:55 +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:*9d142137-b21c-4ebf-bfe5-1e49f5156209,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-workfloww6wcv/series-workfloww6wcv-convert-artifact-3140994173/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": "af72c265-017e-4bdb-8753-f979fdbdf832", "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-workfloww6wcv/series-workfloww6wcv-build-action-62358745/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workfloww6wcv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_workers_free","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_reset_owner","vhost_vsock_drop_backends","vhost_vsock_dev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"48171fe7-e117-4373-a84b-9ad25d68c93c","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-15 02:07:07 +0000 UTC FinishedAt: 2026-07-15 02:32:39 +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:*9d142137-b21c-4ebf-bfe5-1e49f5156209,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-workfloww6wcv/series-workfloww6wcv-convert-artifact-3140994173/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": "af72c265-017e-4bdb-8753-f979fdbdf832", "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-workfloww6wcv/series-workfloww6wcv-build-action-62358745/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workfloww6wcv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_workers_free","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_reset_owner","vhost_vsock_drop_backends","vhost_vsock_dev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"48171fe7-e117-4373-a84b-9ad25d68c93c","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-15 02:33:55 +0000 UTC FinishedAt: 2026-07-15 02:33:55 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww6wcv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_workers_free","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_reset_owner","vhost_vsock_drop_backends","vhost_vsock_dev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"48171fe7-e117-4373-a84b-9ad25d68c93c","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-15 02:33:55 +0000 UTC FinishedAt: 2026-07-15 02:33:55 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww6wcv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_workers_free","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_reset_owner","vhost_vsock_drop_backends","vhost_vsock_dev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"48171fe7-e117-4373-a84b-9ad25d68c93c","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-15 02:33:55 +0000 UTC FinishedAt: 2026-07-15 02:36:08 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww6wcv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_workers_free","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_reset_owner","vhost_vsock_drop_backends","vhost_vsock_dev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"48171fe7-e117-4373-a84b-9ad25d68c93c","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-15 02:33:55 +0000 UTC FinishedAt: 2026-07-15 02:35: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:*af72c265-017e-4bdb-8753-f979fdbdf832,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-workfloww6wcv/series-workfloww6wcv-build-action-62358745/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-workfloww6wcv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_workers_free","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_reset_owner","vhost_vsock_drop_backends","vhost_vsock_dev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"48171fe7-e117-4373-a84b-9ad25d68c93c","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Running StartedAt: 2026-07-15 02:36:08 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww6wcv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_workers_free","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_reset_owner","vhost_vsock_drop_backends","vhost_vsock_dev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"48171fe7-e117-4373-a84b-9ad25d68c93c","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Running StartedAt: 2026-07-15 02:36:08 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +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-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_workers_free","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_reset_owner","vhost_vsock_drop_backends","vhost_vsock_dev_ioctl"],"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:*5d93efef-8648-41a2-a661-76848afe59f6,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*af72c265-017e-4bdb-8753-f979fdbdf832,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-workfloww6wcv/series-workfloww6wcv-build-action-2555596768/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-workfloww6wcv/series-workfloww6wcv-build-action-62358745/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workfloww6wcv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_workers_free","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_reset_owner","vhost_vsock_drop_backends","vhost_vsock_dev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"48171fe7-e117-4373-a84b-9ad25d68c93c","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-15 02:36:08 +0000 UTC FinishedAt: 2026-07-15 02:36:18 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww6wcv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_workers_free","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_reset_owner","vhost_vsock_drop_backends","vhost_vsock_dev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"48171fe7-e117-4373-a84b-9ad25d68c93c","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-15 02:36:08 +0000 UTC FinishedAt: 2026-07-15 02:36:12 +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-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_workers_free","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_reset_owner","vhost_vsock_drop_backends","vhost_vsock_dev_ioctl"],"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-workfloww6wcv/series-workfloww6wcv-convert-artifact-3349020674/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workfloww6wcv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_workers_free","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_reset_owner","vhost_vsock_drop_backends","vhost_vsock_dev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"48171fe7-e117-4373-a84b-9ad25d68c93c","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-15 02:36:08 +0000 UTC FinishedAt: 2026-07-15 02:36:08 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww6wcv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_workers_free","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_reset_owner","vhost_vsock_drop_backends","vhost_vsock_dev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"48171fe7-e117-4373-a84b-9ad25d68c93c","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-15 02:36:08 +0000 UTC FinishedAt: 2026-07-15 02:36:08 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww6wcv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_workers_free","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_reset_owner","vhost_vsock_drop_backends","vhost_vsock_dev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"48171fe7-e117-4373-a84b-9ad25d68c93c","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-15 02:36:08 +0000 UTC FinishedAt: 2026-07-15 02:36:08 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww6wcv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_workers_free","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_reset_owner","vhost_vsock_drop_backends","vhost_vsock_dev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"48171fe7-e117-4373-a84b-9ad25d68c93c","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Running StartedAt: 2026-07-15 02:36:18 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww6wcv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_workers_free","vhost_vsock_start","vhost_vsock_stop","vhost_vsock_reset_owner","vhost_vsock_drop_backends","vhost_vsock_dev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_VSOCK"],"series_id":"48171fe7-e117-4373-a84b-9ad25d68c93c","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Running StartedAt: 2026-07-15 02:36:18 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*5d93efef-8648-41a2-a661-76848afe59f6,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*af72c265-017e-4bdb-8753-f979fdbdf832,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-workfloww6wcv/series-workfloww6wcv-build-action-2555596768/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-workfloww6wcv/series-workfloww6wcv-build-action-62358745/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-workfloww6wcv/series-workfloww6wcv-convert-artifact-3349020674/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil