Name: series-workflowz6lwj Phase: Succeeded StartedAt: 2026-09-03 00:36:38 +0000 UTC FinishedAt: 2026-09-03 02:49:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz6lwj[0] Phase: Succeeded StartedAt: 2026-09-03 00:36:38 +0000 UTC FinishedAt: 2026-09-03 01:17:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz6lwj[0].run-triage Phase: Succeeded StartedAt: 2026-09-03 00:36:38 +0000 UTC FinishedAt: 2026-09-03 01:17:40 +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": "d0ec95a8a4e79f2fd6063fc8932415db8c227689", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "USB_NET_CX82310_ETH", "USB_USBNET" ], "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": "d0ec95a8a4e79f2fd6063fc8932415db8c227689", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "USB_NET_CX82310_ETH", "USB_USBNET" ], "series_id": "73225c68-e980-48cc-9afe-be610c4fcddf" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "cx82310_rx_fixup" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAxOjE2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTQl9ORVRfQ1g4MjMxMF9FVEgmIzM0OywKICAgICYjMzQ7VVNCX1VTQk5FVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2N4ODIzMTBfcnhfZml4dXAmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGFuIGVhcmx5ICYjMzk7cmV0dXJuIDA7JiMzOTsgd2hlbiAmIzM5O2xlbiA9PSAweGZmZmYmIzM5OyBpbiBjeDgyMzEwX3J4X2ZpeHVwKCkgdG8gYWJvcnQgcHJvY2Vzc2luZyB3aGVuIHRoZSByb3V0ZXIgcmVib290cyBhbmQgcmUtZW5hYmxpbmcgd29yayBpcyBzY2hlZHVsZWQuIFByZXZpb3VzbHksIGV4ZWN1dGlvbiBmZWxsIHRocm91Z2ggaW50byBwYXJ0aWFsIHBhY2tldCBoYW5kbGluZywgd2hpY2ggY291bGQgbGVhZCB0byBvdXQtb2YtYm91bmRzIHJlYWRzIG9uIHN1YnNlcXVlbnQgcGFja2V0cy4gXG5cblRoZSBmaXggb25seSBtb2RpZmllcyBjb250cm9sIGZsb3cgdG8gZGlzY2FyZCB0aGUgc2tiIGFuZCBkb2VzIG5vdCBhbGxvY2F0ZSwgaW5pdGlhbGl6ZSwgcmVhZCwgb3IgY29weSBhbnkgdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSBvciBrZXJuZWwgc3RydWN0dXJlcyB0byB1c2VyIHNwYWNlLiBBbnkgbWVtb3J5IHNhZmV0eSBpc3N1ZXMgcHJldmVudGVkIG9yIHRvdWNoZWQgYnkgdGhpcyBjb2RlIGFyZSBvdXQtb2YtYm91bmRzIGFjY2VzcyAvIGludmFsaWQgc3RhdGUgYnVncyBjYXVnaHQgYnkgS0FTQU4sIG5vdCB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZXMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWVkZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgZnVuY3Rpb25hbCBmbG93IGJ1ZyBpbiB0aGUgUlggcGFja2V0IHByb2Nlc3NpbmcgbG9naWMgb2YgdGhlIGN4ODIzMTBfZXRoIFVTQiBuZXR3b3JrIGRyaXZlci4gUHJldmlvdXNseSwgd2hlbiBhbiBSWCBwYWNrZXQgaGFkIGxlbmd0aCAweGZmZmYgKHNpZ25hbGluZyByb3V0ZXIgcmVib290KSwgdGhlIGZ1bmN0aW9uIHNjaGVkdWxlZCBhIHJlLWVuYWJsZSB3b3JrZXIgYnV0IGZlbGwgdGhyb3VnaCBpbnRvIHBhcnRpYWwgcGFja2V0IGhhbmRsaW5nLCB3aGljaCBjb3VsZCBsZWFkIHRvIG1hbGZvcm1lZCBwYWNrZXQgcHJvY2Vzc2luZyBvciBvdXQtb2YtYm91bmRzL292ZXJmbG93IGlzc3Vlcy4gVGhlIHBhdGNoIHJldHVybnMgMCB0byBwcm9wZXJseSBkcm9wIHRoZSBwYWNrZXQuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgdmlhIFVTQiBlbXVsYXRpb24vZnV6emluZyAoZS5nLiBSYXcgR2FkZ2V0IC8gZHVtbXlfaGNkKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMToxNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGE3ZDYxZDY0MGQ2N2YyNGRjOWU2MmVkNmIxN2UzZmUwNmFjODc0NmRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IFNlcCAzIDAxOjE2OjI1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jIGIvZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmNcbmluZGV4IDA2OGFjYjA1MmFkYjAuLjVkZjY1N2FjZjNkNTUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmNcbkBAIC0yODIsNiAmIzQzOzI4Miw3IEBAIHN0YXRpYyBpbnQgY3g4MjMxMF9yeF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRcdGlmIChsZW4gPT0gMHhmZmZmKSB7XG4gXHRcdFx0bmV0ZGV2X2luZm8oZGV2LVx1MDAzZW5ldCwgXCYjMzQ7cm91dGVyIHdhcyByZWJvb3RlZCwgcmUtZW5hYmxpbmcgZXRoZXJuZXQgbW9kZVwmIzM0Oyk7XG4gXHRcdFx0c2NoZWR1bGVfd29yayhcdTAwMjZwcml2LVx1MDAzZXJlZW5hYmxlX3dvcmspO1xuJiM0MztcdFx0XHRyZXR1cm4gMDtcbiBcdFx0fSBlbHNlIGlmIChsZW4gXHUwMDNlIENYODIzMTBfTVRVKSB7XG4gXHRcdFx0bmV0ZGV2X2VycihkZXYtXHUwMDNlbmV0LCBcJiMzNDtSWCBwYWNrZXQgdG9vIGxvbmc6ICVkIEJcXG5cJiMzNDssIGxlbik7XG4gXHRcdFx0cmV0dXJuIDA7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMDE6MTY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VVNCX05FVF9DWDgyMzEwX0VUSCYjMzQ7LAogICAgJiMzNDtVU0JfVVNCTkVUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y3g4MjMxMF9yeF9maXh1cCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGZ1bmN0aW9uYWwgZmxvdyBidWcgaW4gdGhlIFJYIHBhY2tldCBwcm9jZXNzaW5nIGxvZ2ljIG9mIHRoZSBjeDgyMzEwX2V0aCBVU0IgbmV0d29yayBkcml2ZXIuIFByZXZpb3VzbHksIHdoZW4gYW4gUlggcGFja2V0IGhhZCBsZW5ndGggMHhmZmZmIChzaWduYWxpbmcgcm91dGVyIHJlYm9vdCksIHRoZSBmdW5jdGlvbiBzY2hlZHVsZWQgYSByZS1lbmFibGUgd29ya2VyIGJ1dCBmZWxsIHRocm91Z2ggaW50byBwYXJ0aWFsIHBhY2tldCBoYW5kbGluZywgd2hpY2ggY291bGQgbGVhZCB0byBtYWxmb3JtZWQgcGFja2V0IHByb2Nlc3Npbmcgb3Igb3V0LW9mLWJvdW5kcy9vdmVyZmxvdyBpc3N1ZXMuIFRoZSBwYXRjaCByZXR1cm5zIDAgdG8gcHJvcGVybHkgZHJvcCB0aGUgcGFja2V0LiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBVU0IgZW11bGF0aW9uL2Z1enppbmcgKGUuZy4gUmF3IEdhZGdldCAvIGR1bW15X2hjZCkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBhN2Q2MWQ2NDBkNjdmMjRkYzllNjJlZDZiMTdlM2ZlMDZhYzg3NDZkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBTZXAgMyAwMToxNjoyNSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jIGIvZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMKaW5kZXggMDY4YWNiMDUyYWRiMC4uNWRmNjU3YWNmM2Q1NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMKQEAgLTI4Miw2ICYjNDM7MjgyLDcgQEAgc3RhdGljIGludCBjeDgyMzEwX3J4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAkJaWYgKGxlbiA9PSAweGZmZmYpIHsKIAkJCW5ldGRldl9pbmZvKGRldi0mZ3Q7bmV0LCAmIzM0O3JvdXRlciB3YXMgcmVib290ZWQsIHJlLWVuYWJsaW5nIGV0aGVybmV0IG1vZGUmIzM0Oyk7CiAJCQlzY2hlZHVsZV93b3JrKCZhbXA7cHJpdi0mZ3Q7cmVlbmFibGVfd29yayk7CiYjNDM7CQkJcmV0dXJuIDA7CiAJCX0gZWxzZSBpZiAobGVuICZndDsgQ1g4MjMxMF9NVFUpIHsKIAkJCW5ldGRldl9lcnIoZGV2LSZndDtuZXQsICYjMzQ7UlggcGFja2V0IHRvbyBsb25nOiAlZCBCXG4mIzM0OywgbGVuKTsKIAkJCXJldHVybiAwOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMToxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTMzCgkJCQkJCQlvdXRwdXQ6IDc1CgkJCQkJCQl0aG91Z2h0czogMjgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE5ldHdvcmsgRHJpdmVyIENoYW5nZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBkaWZmLCBzcGVjaWZpY2FsbHkgdGhlIGNoYW5nZSBpbiBgZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmNgLiBUaGUgbW9kaWZpY2F0aW9uIHRvIGBjeDgyMzEwX3J4X2ZpeHVwYCBhdCBsaW5lIDI4MiBpcyBpbnRlcmVzdGluZy4gSXQgbG9va3MgbGlrZSBpdCBoYW5kbGVzIHNvbWUga2luZCBvZiBlcnJvciBjb25kaXRpb24gcmVsYXRlZCB0byBwYWNrZXQgbGVuZ3RoIG9yIHBvdGVudGlhbGx5IGEgcm91dGVyIHJlYm9vdCwgYW5kIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBleGFjdCBjb250ZXh0LiBMZXQgbWUgZGl2ZSBpbnRvIHRoZSBzdXJyb3VuZGluZyBjb2RlIGluIHRoYXQgZmlsZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGBjeDgyMzEwX3J4X2ZpeHVwYCB3b3JrcyB3aXRoaW4gdGhlIGB1c2JuZXRgIGZyYW1ld29yay4gSSB3YW50IHRvIHRyYWNlIHRoZSBkYXRhIGZsb3cgdG8gc2VlIGlmIFVTQiBkcml2ZXJzLCB0aGUgYHVzYm5ldGAgYWJzdHJhY3Rpb24gbGF5ZXIsIG9yIGV2ZW4gc29tZXRoaW5nIHJlbGF0ZWQgdG8gVVNCIGVtdWxhdGlvbiBvciBmdXp6aW5nIHRlY2huaXF1ZXMgbGlrZSBzeXprYWxsZXIgY291bGQgcG90ZW50aWFsbHkgdHJpZ2dlciB0aGlzLiBJJiMzOTtsbCBuZWVkIHRvIGtub3cgdGhlIGNvbmZpZyBkZXBlbmRlbmNpZXMuIExldCBtZSBjYWxsIGByZWFkLWZpbGVgIGFuZCBjaGVjayBLY29uZmlnIHRvIHNlZSB3aGF0JiMzOTtzIG5lZWRlZC4gSSYjMzk7bGwgZm9jdXMgb24gd2hldGhlciB0aGlzIGNvdWxkIGJlIGhpdCBieSBVU0IgdHJhZmZpYy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMToxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjUwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDcwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyNTA6XHRcdCAqIElmIHRoZSBsYXN0IHNrYiBlbmRlZCB3aXRoIGFuIGluY29tcGxldGUgcGFja2V0LCB0aGlzIHNrYiBjb250YWluc1xuIDI1MTpcdFx0ICogZW5kIG9mIHRoYXQgcGFja2V0IGF0IHRoZSBiZWdpbm5pbmcuXG4gMjUyOlx0XHQgKi9cbiAyNTM6XHRcdGlmIChkZXYtXHUwMDNlcGFydGlhbF9yZW0pIHtcbiAyNTQ6XHRcdFx0bGVuID0gZGV2LVx1MDAzZXBhcnRpYWxfbGVuICYjNDM7IGRldi1cdTAwM2VwYXJ0aWFsX3JlbTtcbiAyNTU6XHRcdFx0c2tiMiA9IGFsbG9jX3NrYihsZW4sIEdGUF9BVE9NSUMpO1xuIDI1NjpcdFx0XHRpZiAoIXNrYjIpXG4gMjU3Olx0XHRcdFx0cmV0dXJuIDA7XG4gMjU4Olx0XHRcdHNrYl9wdXQoc2tiMiwgbGVuKTtcbiAyNTk6XHRcdFx0bWVtY3B5KHNrYjItXHUwMDNlZGF0YSwgKHZvaWQgKilkZXYtXHUwMDNlcGFydGlhbF9kYXRhLFxuIDI2MDpcdFx0XHQgICAgICAgZGV2LVx1MDAzZXBhcnRpYWxfbGVuKTtcbiAyNjE6XHRcdFx0bWVtY3B5KHNrYjItXHUwMDNlZGF0YSAmIzQzOyBkZXYtXHUwMDNlcGFydGlhbF9sZW4sIHNrYi1cdTAwM2VkYXRhLFxuIDI2MjpcdFx0XHQgICAgICAgZGV2LVx1MDAzZXBhcnRpYWxfcmVtKTtcbiAyNjM6XHRcdFx0dXNibmV0X3NrYl9yZXR1cm4oZGV2LCBza2IyKTtcbiAyNjQ6XHRcdFx0c2tiX3B1bGwoc2tiLCAoZGV2LVx1MDAzZXBhcnRpYWxfcmVtICYjNDM7IDEpIFx1MDAyNiB+MSk7XG4gMjY1Olx0XHRcdGRldi1cdTAwM2VwYXJ0aWFsX3JlbSA9IDA7XG4gMjY2Olx0XHRcdGlmIChza2ItXHUwMDNlbGVuIFx1MDAzYyAyKVxuIDI2NzpcdFx0XHRcdHJldHVybiAxO1xuIDI2ODpcdFx0fVxuIDI2OTpcdFxuIDI3MDpcdFx0LyogYSBza2IgY2FuIGNvbnRhaW4gbXVsdGlwbGUgcGFja2V0cyAqL1xuIDI3MTpcdFx0d2hpbGUgKHNrYi1cdTAwM2VsZW4gXHUwMDNlIDEpIHtcbiAyNzI6XHRcdFx0LyogZmlyc3QgdHdvIGJ5dGVzIGFyZSBwYWNrZXQgbGVuZ3RoICovXG4gMjczOlx0XHRcdGxlbiA9IHNrYi1cdTAwM2VkYXRhWzBdIHwgKHNrYi1cdTAwM2VkYXRhWzFdIFx1MDAzY1x1MDAzYyA4KTtcbiAyNzQ6XHRcdFx0c2tiX3B1bGwoc2tiLCAyKTtcbiAyNzU6XHRcbiAyNzY6XHRcdFx0LyogaWYgbGFzdCBwYWNrZXQgaW4gdGhlIHNrYiwgbGV0IHVzYm5ldCB0byBwcm9jZXNzIGl0ICovXG4gMjc3Olx0XHRcdGlmIChsZW4gPT0gc2tiLVx1MDAzZWxlbiB8fCBsZW4gJiM0MzsgMSA9PSBza2ItXHUwMDNlbGVuKSB7XG4gMjc4Olx0XHRcdFx0c2tiX3RyaW0oc2tiLCBsZW4pO1xuIDI3OTpcdFx0XHRcdGJyZWFrO1xuIDI4MDpcdFx0XHR9XG4gMjgxOlx0XG4gMjgyOlx0XHRcdGlmIChsZW4gPT0gMHhmZmZmKSB7XG4gMjgzOlx0XHRcdFx0bmV0ZGV2X2luZm8oZGV2LVx1MDAzZW5ldCwgXCYjMzQ7cm91dGVyIHdhcyByZWJvb3RlZCwgcmUtZW5hYmxpbmcgZXRoZXJuZXQgbW9kZVwmIzM0Oyk7XG4gMjg0Olx0XHRcdFx0c2NoZWR1bGVfd29yayhcdTAwMjZwcml2LVx1MDAzZXJlZW5hYmxlX3dvcmspO1xuIDI4NTpcdFx0XHRcdHJldHVybiAwO1xuIDI4NjpcdFx0XHR9IGVsc2UgaWYgKGxlbiBcdTAwM2UgQ1g4MjMxMF9NVFUpIHtcbiAyODc6XHRcdFx0XHRuZXRkZXZfZXJyKGRldi1cdTAwM2VuZXQsIFwmIzM0O1JYIHBhY2tldCB0b28gbG9uZzogJWQgQlxcblwmIzM0OywgbGVuKTtcbiAyODg6XHRcdFx0XHRyZXR1cm4gMDtcbiAyODk6XHRcdFx0fVxuIDI5MDpcdFxuIDI5MTpcdFx0XHQvKiBpbmNvbXBsZXRlIHBhY2tldCwgc2F2ZSBpdCBmb3IgdGhlIG5leHQgc2tiICovXG4gMjkyOlx0XHRcdGlmIChsZW4gXHUwMDNlIHNrYi1cdTAwM2VsZW4pIHtcbiAyOTM6XHRcdFx0XHRkZXYtXHUwMDNlcGFydGlhbF9sZW4gPSBza2ItXHUwMDNlbGVuO1xuIDI5NDpcdFx0XHRcdGRldi1cdTAwM2VwYXJ0aWFsX3JlbSA9IGxlbiAtIHNrYi1cdTAwM2VsZW47XG4gMjk1Olx0XHRcdFx0bWVtY3B5KCh2b2lkICopZGV2LVx1MDAzZXBhcnRpYWxfZGF0YSwgc2tiLVx1MDAzZWRhdGEsXG4gMjk2Olx0XHRcdFx0ICAgICAgIGRldi1cdTAwM2VwYXJ0aWFsX2xlbik7XG4gMjk3Olx0XHRcdFx0c2tiX3B1bGwoc2tiLCBza2ItXHUwMDNlbGVuKTtcbiAyOTg6XHRcdFx0XHRicmVhaztcbiAyOTk6XHRcdFx0fVxuIDMwMDpcdFxuIDMwMTpcdFx0XHRza2IyID0gYWxsb2Nfc2tiKGxlbiwgR0ZQX0FUT01JQyk7XG4gMzAyOlx0XHRcdGlmICghc2tiMilcbiAzMDM6XHRcdFx0XHRyZXR1cm4gMDtcbiAzMDQ6XHRcdFx0c2tiX3B1dChza2IyLCBsZW4pO1xuIDMwNTpcdFx0XHRtZW1jcHkoc2tiMi1cdTAwM2VkYXRhLCBza2ItXHUwMDNlZGF0YSwgbGVuKTtcbiAzMDY6XHRcdFx0LyogcHJvY2VzcyB0aGUgcGFja2V0ICovXG4gMzA3Olx0XHRcdHVzYm5ldF9za2JfcmV0dXJuKGRldiwgc2tiMik7XG4gMzA4Olx0XG4gMzA5Olx0XHRcdHNrYl9wdWxsKHNrYiwgKGxlbiAmIzQzOyAxKSBcdTAwMjYgfjEpO1xuIDMxMDpcdFx0fVxuIDMxMTpcdFxuIDMxMjpcdFx0LyogbGV0IHVzYm5ldCBwcm9jZXNzIHRoZSBsYXN0IHBhY2tldCAqL1xuIDMxMzpcdFx0cmV0dXJuIDE7XG4gMzE0Olx0fVxuIDMxNTpcdFxuIDMxNjpcdC8qIFRYIGlzIGVhc3ksIGp1c3QgYWRkIDIgYnl0ZXMgb2YgbGVuZ3RoIGF0IHRoZSBiZWdpbm5pbmcgKi9cbiAzMTc6XHRzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmN4ODIzMTBfdHhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIDMxODpcdFx0XHRcdFx0ICAgICAgIGdmcF90IGZsYWdzKVxuIDMxOTpcdHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMToxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjeDgyMzEwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9NYWtlZmlsZT0zNT1vYmotJChDT05GSUdfVVNCX1NJRVJSQV9ORVQpXHQmIzQzOz0gc2llcnJhX25ldC5vXG5kcml2ZXJzL25ldC91c2IvTWFrZWZpbGU6MzY6b2JqLSQoQ09ORklHX1VTQl9ORVRfQ1g4MjMxMF9FVEgpXHQmIzQzOz0gY3g4MjMxMF9ldGgub1xuZHJpdmVycy9uZXQvdXNiL01ha2VmaWxlLTM3LW9iai0kKENPTkZJR19VU0JfTkVUX0NEQ19OQ00pXHQmIzQzOz0gY2RjX25jbS5vXG4tLVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMTYtXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzoxNzplbnVtIGN4ODIzMTBfY21kIHtcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTE4LVx0Q01EX1NUQVJUXHRcdD0gMHg4NCxcdC8qIG5vIGVmZmVjdD8gKi9cbi0tXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0yNS1cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjI2OmVudW0gY3g4MjMxMF9zdGF0dXMge1xuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMjctXHRTVEFUVVNfVU5ERUZJTkVELFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTQyLVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6NDM6c3RydWN0IGN4ODIzMTBfcHJpdiB7XG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy00NC1cdHN0cnVjdCB3b3JrX3N0cnVjdCByZWVuYWJsZV93b3JrO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTUzLSAqL1xuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6NTQ6c3RhdGljIGludCBjeDgyMzEwX2NtZChzdHJ1Y3QgdXNibmV0ICpkZXYsIGVudW0gY3g4MjMxMF9jbWQgY21kLCBib29sIHJlcGx5LFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtNTUtXHRcdCAgICAgICB1OCAqd2RhdGEsIGludCB3bGVuLCB1OCAqcmRhdGEsIGludCBybGVuKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTExOS1cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjEyMDpzdGF0aWMgaW50IGN4ODIzMTBfZW5hYmxlX2V0aGVybmV0KHN0cnVjdCB1c2JuZXQgKmRldilcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTEyMS17XG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzoxMjI6XHRpbnQgcmV0ID0gY3g4MjMxMF9jbWQoZGV2LCBDTURfRVRIRVJORVRfTU9ERSwgdHJ1ZSwgXCYjMzQ7XFx4MDFcJiMzNDssIDEsIE5VTEwsIDApO1xuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMTIzLVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTEyOS1cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjEzMDpzdGF0aWMgdm9pZCBjeDgyMzEwX3JlZW5hYmxlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMTMxLXtcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjEzMjpcdHN0cnVjdCBjeDgyMzEwX3ByaXYgKnByaXYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IGN4ODIzMTBfcHJpdixcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTEzMy1cdFx0XHRcdFx0XHQgcmVlbmFibGVfd29yayk7XG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzoxMzQ6XHRjeDgyMzEwX2VuYWJsZV9ldGhlcm5ldChwcml2LVx1MDAzZWRldik7XG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0xMzUtfVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTE0MC1cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjE0MTpzdGF0aWMgaW50IGN4ODIzMTBfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMTQyLXtcbi0tXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0xNDctXHRpbnQgdGltZW91dCA9IDUwO1xuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MTQ4Olx0c3RydWN0IGN4ODIzMTBfcHJpdiAqcHJpdjtcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTE0OS1cdHU4IGFkZHJbRVRIX0FMRU5dO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTE4MS1cdGRldi1cdTAwM2Vkcml2ZXJfcHJpdiA9IHByaXY7XG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzoxODI6XHRJTklUX1dPUksoXHUwMDI2cHJpdi1cdTAwM2VyZWVuYWJsZV93b3JrLCBjeDgyMzEwX3JlZW5hYmxlX3dvcmspO1xuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMTgzLVx0cHJpdi1cdTAwM2VkZXYgPSBkZXY7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMTg2LVx0d2hpbGUgKC0tdGltZW91dCkge1xuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MTg3Olx0XHRyZXQgPSBjeDgyMzEwX2NtZChkZXYsIENNRF9HRVRfTElOS19TVEFUVVMsIHRydWUsIE5VTEwsIDAsXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0xODgtXHRcdFx0XHQgIGxpbmssIHNpemVvZihsaW5rKSk7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMjAwLVx0LyogZW5hYmxlIGV0aGVybmV0IG1vZGUgKD8pICovXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzoyMDE6XHRyZXQgPSBjeDgyMzEwX2VuYWJsZV9ldGhlcm5ldChkZXYpO1xuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMjAyLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0yMDUtXHQvKiBnZXQgdGhlIE1BQyBhZGRyZXNzICovXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzoyMDY6XHRyZXQgPSBjeDgyMzEwX2NtZChkZXYsIENNRF9HRVRfTUFDX0FERFIsIHRydWUsIE5VTEwsIDAsIGFkZHIsIEVUSF9BTEVOKTtcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTIwNy1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0yMTMtXHQvKiBzdGFydCAoZG9lcyBub3Qgc2VlbSB0byBoYXZlIGFueSBlZmZlY3Q/KSAqL1xuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MjE0Olx0cmV0ID0gY3g4MjMxMF9jbWQoZGV2LCBDTURfU1RBUlQsIGZhbHNlLCBOVUxMLCAwLCBOVUxMLCAwKTtcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTIxNS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMjI1LVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MjI2OnN0YXRpYyB2b2lkIGN4ODIzMTBfdW5iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0yMjcte1xuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MjI4Olx0c3RydWN0IGN4ODIzMTBfcHJpdiAqcHJpdiA9IGRldi1cdTAwM2Vkcml2ZXJfcHJpdjtcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTIyOS1cbi0tXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0yNDItICovXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzoyNDM6c3RhdGljIGludCBjeDgyMzEwX3J4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTI0NC17XG4tLVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMjQ2LVx0c3RydWN0IHNrX2J1ZmYgKnNrYjI7XG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzoyNDc6XHRzdHJ1Y3QgY3g4MjMxMF9wcml2ICpwcml2ID0gZGV2LVx1MDAzZWRyaXZlcl9wcml2O1xuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMjQ4LVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTMxNi0vKiBUWCBpcyBlYXN5LCBqdXN0IGFkZCAyIGJ5dGVzIG9mIGxlbmd0aCBhdCB0aGUgYmVnaW5uaW5nICovXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzozMTc6c3RhdGljIHN0cnVjdCBza19idWZmICpjeDgyMzEwX3R4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTMxOC1cdFx0XHRcdCAgICAgICBnZnBfdCBmbGFncylcbi0tXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0zMzQtXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzozMzU6c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mb1x0Y3g4MjMxMF9pbmZvID0ge1xuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMzM2LVx0LmRlc2NyaXB0aW9uXHQ9IFwmIzM0O0NvbmV4YW50IENYODIzMTAgVVNCIGV0aGVybmV0XCYjMzQ7LFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMzM3LVx0LmZsYWdzXHRcdD0gRkxBR19FVEhFUixcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjMzODpcdC5iaW5kXHRcdD0gY3g4MjMxMF9iaW5kLFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MzM5Olx0LnVuYmluZFx0XHQ9IGN4ODIzMTBfdW5iaW5kLFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MzQwOlx0LnJ4X2ZpeHVwXHQ9IGN4ODIzMTBfcnhfZml4dXAsXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzozNDE6XHQudHhfZml4dXBcdD0gY3g4MjMxMF90eF9maXh1cCxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTM0Mi19O1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jPTM1Mz1zdGF0aWMgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgcHJvZHVjdHNbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0zNTUtXHRcdFVTQl9ERVZJQ0VfQ0xBU1MoMHgwNTcyLCAweGNiMDEsIDB4ZmYsIDAsIDApLFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MzU2Olx0XHQuZHJpdmVyX2luZm8gPSAodW5zaWduZWQgbG9uZykgXHUwMDI2Y3g4MjMxMF9pbmZvXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0zNTctXHR9LFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jPTM2MD1NT0RVTEVfREVWSUNFX1RBQkxFKHVzYiwgcHJvZHVjdHMpO1xuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMzYxLVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MzYyOnN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBjeDgyMzEwX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjM2MzpcdC5uYW1lXHRcdD0gXCYjMzQ7Y3g4MjMxMF9ldGhcJiMzNDssXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0zNjQtXHQuaWRfdGFibGVcdD0gcHJvZHVjdHMsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMzcxLVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MzcyOm1vZHVsZV91c2JfZHJpdmVyKGN4ODIzMTBfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTM3My1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMToxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2Njc3CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IGltbWVkaWF0ZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKktjb25maWcgRGl2ZSBmb3IgQ1g4MjMxMCBFdGhlcm5ldCoqCgpBbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBzb3VyY2UuIEkgbmVlZCB0byB2ZXJpZnkgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGZvciB0aGUgQ1g4MjMxMCBFdGhlcm5ldCBkcml2ZXIsIHNwZWNpZmljYWxseSBgQ09ORklHX1VTQl9ORVRfQ1g4MjMxMF9FVEhgLiBJJiMzOTttIHN0YXJ0aW5nIHdpdGggS2NvbmZpZyBiZWNhdXNlIHRoYXQmIzM5O3MgdGhlIGNlbnRyYWwgcmVwb3NpdG9yeSBmb3IgYnVpbGQgY29uZmlndXJhdGlvbi4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3Igd2hlcmUgdGhpcyBvcHRpb24gaXMgZGVmaW5lZCwgYW55IGRlcGVuZGVuY2llcyBpdCBoYXMgKG90aGVyIFVTQiBuZXR3b3JrIHN0YWNrIGZlYXR1cmVzLCBwZXJoYXBzIHNwZWNpZmljIFVTQiBjb250cm9sbGVycyksIGl0cyBkZWZhdWx0IHN0YXRlLCBhbmQgYW55IGhlbHAgdGV4dCBhc3NvY2lhdGVkIHdpdGggaXQuIFRoaXMmIzM5O2xsIHF1aWNrbHkgdGVsbCBtZSBpZiB0aGUgZHJpdmVyIGlzIGV2ZW4gKmludGVuZGVkKiB0byBiZSBpbmNsdWRlZCwgYW5kIHdoYXQgcHJlY29uZGl0aW9ucyBuZWVkIHRvIGJlIG1ldCBmb3IgaXQgdG8gYmUgY29tcGlsZWQgaW50byB0aGUgaW1hZ2UuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiBpdCYjMzk7cyBtb2R1bGFyIG9yIGJ1aWx0LWluLCBhbmQgaG93IHRvIGNoYW5nZSBpdHMgYnVpbGQgc3RhdHVzLiBUaGVuIEkgd2lsbCBzZWUgd2hhdCB0aGUgYnVpbGQgc2NyaXB0cyBkbyB3aXRoIGl0LiBUaGlzIGluZm9ybWF0aW9uIHdpbGwgaW5mb3JtIG15IG5leHQgc3RlcHMgaW4gZWl0aGVyIGVuYWJsaW5nIGl0IG9yIHRyb3VibGVzaG9vdGluZyBpdHMgYWJzZW5jZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMToxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtVU0JfTkVUX0NYODIzMTBfRVRIJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTQ5ND1jb25maWcgVVNCX05FVF9aQVVSVVNcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy01MTEtXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo1MTI6Y29uZmlnIFVTQl9ORVRfQ1g4MjMxMF9FVEhcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTUxMy1cdHRyaXN0YXRlIFwmIzM0O0NvbmV4YW50IENYODIzMTAgVVNCIGV0aGVybmV0IHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC91c2IvTWFrZWZpbGU9MzU9b2JqLSQoQ09ORklHX1VTQl9TSUVSUkFfTkVUKVx0JiM0Mzs9IHNpZXJyYV9uZXQub1xuZHJpdmVycy9uZXQvdXNiL01ha2VmaWxlOjM2Om9iai0kKENPTkZJR19VU0JfTkVUX0NYODIzMTBfRVRIKVx0JiM0Mzs9IGN4ODIzMTBfZXRoLm9cbmRyaXZlcnMvbmV0L3VzYi9NYWtlZmlsZS0zNy1vYmotJChDT05GSUdfVVNCX05FVF9DRENfTkNNKVx0JiM0Mzs9IGNkY19uY20ub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAxOjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcxNzgKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHRoZSBVU0IgTmV0d29ya2luZyBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBwdWxsIHVwIHRoYXQgYGRyaXZlcnMvbmV0L3VzYi9LY29uZmlnYCBmaWxlLiBJJiMzOTttIHNwZWNpZmljYWxseSBpbnRlcmVzdGVkIGluLCBzYXksIGFyb3VuZCBsaW5lIDUxMi4gTXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBhICpzcGVjaWZpYyogVVNCIG5ldHdvcmsgZGV2aWNlLCBwcm9iYWJseSByZWxhdGVkIHRvIGEgcGFydGljdWxhciBkcml2ZXIgaW1wbGVtZW50YXRpb24uIEkgZXhwZWN0IHRvIHNlZSB0aGUgdHlwaWNhbCBLY29uZmlnIHN0cnVjdHVyZSDigJMgYGNvbmZpZ2AgYmxvY2tzLCBtYXliZSBzb21lIGBkZXBlbmRzIG9uYCBzdGF0ZW1lbnRzLCBhIGBzZWxlY3RgIG9yIHR3byBpZiB3ZSYjMzk7cmUgbHVja3kuIEkgd2FudCB0byBxdWlja2x5IGFzY2VydGFpbiB3aGF0IHRoZSBkZXBlbmRlbmNpZXMgYXJlLCBhbmQgd2hhdCB0aGUgZGVmYXVsdCBzZXR0aW5ncyBtaWdodCBiZS4gQXJlIHRoZXJlIG11bHRpcGxlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBncm91cGVkIHRvZ2V0aGVyIGF0IHRoaXMgbG9jYXRpb24sIG9yIGEgc2luZ2xlIGNvbXBsZXggb3B0aW9uPyBJdCB3aWxsIGJlIGludGVyZXN0aW5nIHRvIHNlZSBpZiBhbnkgb2YgdGhlIGRlcGVuZGVuY2llcyBhcmUgcG9vcmx5IGV4cGxhaW5lZCBvciBpZiB0aGVyZSBhcmUgdW5leHBlY3RlZCBpbnRlcmFjdGlvbnMuIFVsdGltYXRlbHksIEkmIzM5O20gdHJ5aW5nIHRvIHF1aWNrbHkgYnVpbGQgYSBtZW50YWwgbWFwIG9mIHRoaXMgc2VjdGlvbiB0byBpZGVudGlmeSBwb3RlbnRpYWwgYXJlYXMgZm9yIGN1c3RvbWl6YXRpb24sIG9yIGlmIEkgc3BvdCBhIGNvbmZpZ3VyYXRpb24gdGhhdCBJIGFscmVhZHkgdXNlIHRoYXQgbWF5IGJlIGludGVyYWN0aW5nIHdpdGggYW5vdGhlciBwYXJ0IG9mIHRoZSBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMDE6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDUwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNTAwOlx0XHRoZWxwXG4gNTAxOlx0XHQgIENob29zZSB0aGlzIG9wdGlvbiB0byBzdXBwb3J0IHRoZSB1c2IgbmV0d29ya2luZyBsaW5rcyB1c2VkIGJ5XG4gNTAyOlx0XHQgIFphdXJ1cyBtb2RlbHMgbGlrZSB0aGUgU0wtNTAwMEQsIFNMLTU1MDAsIFNMLTU2MDAsIEEtMzAwLCBCLTUwMC5cbiA1MDM6XHRcdCAgVGhpcyBhbHNvIHN1cHBvcnRzIHNvbWUgcmVsYXRlZCBkZXZpY2UgZmlybXdhcmUsIGFzIHVzZWQgaW4gc29tZVxuIDUwNDpcdFx0ICBQREFzIGZyb20gT2x5bXB1cyBhbmQgc29tZSBjZWxsIHBob25lcyBmcm9tIE1vdG9yb2xhLlxuIDUwNTpcdFxuIDUwNjpcdFx0ICBJZiB5b3UgaW5zdGFsbCBhbiBhbHRlcm5hdGUgaW1hZ2UsIHN1Y2ggYXMgdGhlIExpbnV4IDIuNiBiYXNlZFxuIDUwNzpcdFx0ICB2ZXJzaW9ucyBvZiBPcGVuWmF1cnVzLCB5b3Ugc2hvdWxkIG5vIGxvbmdlciBuZWVkIHRvIHN1cHBvcnQgdGhpc1xuIDUwODpcdFx0ICBwcm90b2NvbC4gIE9ubHkgdGhlIFwmIzM0O2V0aC1mZFwmIzM0OyBvciBcJiMzNDtuZXRfZmRcJiMzNDsgZHJpdmVycyBpbiB0aGVzZSBkZXZpY2VzXG4gNTA5Olx0XHQgIHJlYWxseSBuZWVkIHRoaXMgbm9uLWNvbmZvcm1hbnQgdmFyaWFudCBvZiBDREMgRXRoZXJuZXQgKG9yIGluXG4gNTEwOlx0XHQgIHNvbWUgY2FzZXMgQ0RDIE1ETE0pIHByb3RvY29sLCBub3QgXCYjMzQ7Z19ldGhlclwmIzM0Oy5cbiA1MTE6XHRcbiA1MTI6XHRjb25maWcgVVNCX05FVF9DWDgyMzEwX0VUSFxuIDUxMzpcdFx0dHJpc3RhdGUgXCYjMzQ7Q29uZXhhbnQgQ1g4MjMxMCBVU0IgZXRoZXJuZXQgcG9ydFwmIzM0O1xuIDUxNDpcdFx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXG4gNTE1Olx0XHRoZWxwXG4gNTE2Olx0XHQgIENob29zZSB0aGlzIG9wdGlvbiBpZiB5b3UmIzM5O3JlIHVzaW5nIGEgQ29uZXhhbnQgQ1g4MjMxMC1iYXNlZCBBRFNMXG4gNTE3Olx0XHQgIHJvdXRlciB3aXRoIFVTQiBldGhlcm5ldCBwb3J0LiBUaGlzIGRyaXZlciBpcyBmb3Igcm91dGVycyBvbmx5LFxuIDUxODpcdFx0ICBpdCB3aWxsIG5vdCB3b3JrIHdpdGggQURTTCBtb2RlbXMgKHVzZSBjeGFjcnUgZHJpdmVyIGluc3RlYWQpLlxuIDUxOTpcdFxuIDUyMDpcdGNvbmZpZyBVU0JfTkVUX0tBTE1JQVxuIDUyMTpcdFx0dHJpc3RhdGUgXCYjMzQ7U2Ftc3VuZyBLYWxtaWEgYmFzZWQgTFRFIFVTQiBtb2RlbVwmIzM0O1xuIDUyMjpcdFx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXG4gNTIzOlx0XHRoZWxwXG4gNTI0Olx0XHQgIENob29zZSB0aGlzIG9wdGlvbiBpZiB5b3UgaGF2ZSBhIFNhbXN1bmcgS2FsbWlhIGJhc2VkIFVTQiBtb2RlbVxuIDUyNTpcdFx0ICBhcyBTYW1zdW5nIEdULUIzNzMwLlxuIDUyNjpcdFxuIDUyNzpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcbiA1Mjg6XHRcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGthbG1pYS5cbiA1Mjk6XHRcbiA1MzA6XHRjb25maWcgVVNCX05FVF9RTUlfV1dBTlxuIDUzMTpcdFx0dHJpc3RhdGUgXCYjMzQ7UU1JIFdXQU4gZHJpdmVyIGZvciBRdWFsY29tbSBNU00gYmFzZWQgM0cgYW5kIExURSBtb2RlbXNcJiMzNDtcbiA1MzI6XHRcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxuIDUzMzpcdFx0c2VsZWN0IFVTQl9XRE1cbiA1MzQ6XHRcdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMDE6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODA5NAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkludmVzdGlnYXRpbmcgVVNCIE5ldHdvcmsgRHJpdmVyIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZGlnIGludG8gdGhlIGRlcGVuZGVuY2llcyBvZiB0aGUgYFVTQl9VU0JORVRgIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3VzYi9LY29uZmlnYCBmaWxlLiBUaGlzIGlzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoaXMgc3BlY2lmaWMgVVNCIG5ldHdvcmtpbmcgZHJpdmVyIHJlbGF0ZXMgdG8gb3RoZXIgY29tcG9uZW50cyBpbiB0aGUga2VybmVsLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IG90aGVyIG1vZHVsZXMgb3IgZmVhdHVyZXMgKm11c3QqIGJlIGVuYWJsZWQgb3IgYXJlIGxvZ2ljYWxseSBsaW5rZWQgZm9yIGBVU0JfVVNCTkVUYCB0byBmdW5jdGlvbiBjb3JyZWN0bHkuIEFyZSB0aGVyZSBhbnkgc3BlY2lmaWMgVVNCIGNvcmUgZmVhdHVyZXMsIG5ldHdvcmtpbmcgc3Vic3lzdGVtcywgb3IgZXZlbiBoYXJkd2FyZSBkcml2ZXJzIHRoYXQgYXJlIHByZXJlcXVpc2l0ZXM/IEkgbmVlZCB0byBrbm93IHRoZSBlbnRpcmUgZGVwZW5kZW5jeSBjaGFpbiB0byBtYWtlIGluZm9ybWVkIGRlY2lzaW9ucyBhYm91dCBteSBrZXJuZWwgY29uZmlndXJhdGlvbi4gVGhpcyBpbmZvcm1hdGlvbiB3aWxsIHByZXZlbnQgYnVpbGQgZXJyb3JzIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3VyIGRvd24gdGhlIGxpbmUuIEkgd2FudCB0byBidWlsZCBhIHNlY3VyZSBrZXJuZWwhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAxOjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBVU0JfVVNCTkVUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTExMz1jb25maWcgVVNCX0xBTjc4WFhcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xMzEtXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzoxMzI6Y29uZmlnIFVTQl9VU0JORVRcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTEzMy1cdHRyaXN0YXRlIFwmIzM0O011bHRpLXB1cnBvc2UgVVNCIE5ldHdvcmtpbmcgRnJhbWV3b3JrXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAxOjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg0MDgKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqTmF2aWdhdGluZyB0aGUgVVNCIE5ldHdvcmsgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgYGRyaXZlcnMvbmV0L3VzYi9LY29uZmlnYCBmaWxlLiBJJiMzOTttIGZvY3VzaW5nIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSAxMzIuIE15IGluaXRpYWwgZ29hbCBoZXJlIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gYSBzcGVjaWZpYyBVU0IgbmV0d29yayBkcml2ZXIg4oCTIGxpa2VseSBvbmUgdGhhdCBJJiMzOTttIHdvcmtpbmcgd2l0aCBvciB0cm91Ymxlc2hvb3RpbmcuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBob3cgdGhpcyBwYXJ0aWN1bGFyIGRyaXZlciBpcyBleHBvc2VkIHRvIHRoZSBidWlsZCBzeXN0ZW0sIHdoYXQgc2V0dGluZ3MgaW5mbHVlbmNlIGl0cyBpbmNsdXNpb24sIGFuZCBwZXJoYXBzIGFsc28gcmV2aWV3IGFueSBidWlsZC10aW1lIG9yIHJ1bi10aW1lIHZhcmlhYmxlcyB0aGF0IGNhbiBiZSBhZmZlY3RlZCwgY29uZmlndXJlZCwgb3IgaW5mbHVlbmNlZC4gSSYjMzk7bSBob3BpbmcgdG8gcXVpY2tseSBncmFzcCB0aGUgbG9naWNhbCBmbG93IG9mIHRoZSBgS2NvbmZpZ2Agc3RydWN0dXJlLCBsb29raW5nIGZvciBjbHVlcyB0aGF0IG1pZ2h0IHByb3ZpZGUgaW5zaWdodHMgaW50byBidWlsZCBjb25maWd1cmF0aW9ucyBJIG1pZ2h0IGJlIG1pc3NpbmcsIG9yIHBlcmhhcHMgaWRlbnRpZnkgdGhlIHBhcmFtZXRlcnMgdGhhdCBhcmUgcmVsZXZhbnQgdG8gc29sdmUgbXkgcGFydGljdWxhciBwcm9ibGVtLiBUaGUgbGluZSBudW1iZXIgaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LCBhcyBJJiMzOTt2ZSBwcm9iYWJseSBnb3Qgc29tZSBwcmlvciBjb250ZXh0IGFib3V0IHRoZSBmaWxlJiMzOTtzIGdlbmVyYWwgc3RydWN0dXJlLCBzbyBsZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgdGhlcmUgYW5kIHdoYXQgdGhpcyBwYXJ0IGNvbnRyb2xzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMToxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTI1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDM1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxMjU6XHRcdCAgTEFONzgwMSA6IFVTQiAzIHRvIDEwLzEwMC8xMDAwIEV0aGVybmV0IGFkYXB0ZXIgKE1BQyBvbmx5KVxuIDEyNjpcdFxuIDEyNzpcdFx0ICBQcm9wZXIgUEhZIGRyaXZlciBpcyByZXF1aXJlZCBmb3IgTEFONzgwMS5cbiAxMjg6XHRcbiAxMjk6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXG4gMTMwOlx0XHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBsYW43OHh4LlxuIDEzMTpcdFxuIDEzMjpcdGNvbmZpZyBVU0JfVVNCTkVUXG4gMTMzOlx0XHR0cmlzdGF0ZSBcJiMzNDtNdWx0aS1wdXJwb3NlIFVTQiBOZXR3b3JraW5nIEZyYW1ld29ya1wmIzM0O1xuIDEzNDpcdFx0c2VsZWN0IE1JSVxuIDEzNTpcdFx0aGVscFxuIDEzNjpcdFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBzZXZlcmFsIGtpbmRzIG9mIG5ldHdvcmsgbGlua3Mgb3ZlciBVU0IsXG4gMTM3Olx0XHQgIHdpdGggXCYjMzQ7bWluaWRyaXZlcnNcJiMzNDsgYnVpbHQgYXJvdW5kIGEgY29tbW9uIG5ldHdvcmsgZHJpdmVyIGNvcmVcbiAxMzg6XHRcdCAgdGhhdCBzdXBwb3J0cyBkZWVwIHF1ZXVlcyBmb3IgZWZmaWNpZW50IHRyYW5zZmVycy4gIChUaGlzIGdpdmVzXG4gMTM5Olx0XHQgIGJldHRlciBwZXJmb3JtYW5jZSB3aXRoIHNtYWxsIHBhY2tldHMgYW5kIGF0IGhpZ2ggc3BlZWRzKS5cbiAxNDA6XHRcbiAxNDE6XHRcdCAgVGhlIFVTQiBob3N0IHJ1bnMgXCYjMzQ7dXNibmV0XCYjMzQ7LCBhbmQgdGhlIG90aGVyIGVuZCBvZiB0aGUgbGluayBtaWdodCBiZTpcbiAxNDI6XHRcbiAxNDM6XHRcdCAgLSBBbm90aGVyIFVTQiBob3N0LCB3aGVuIHVzaW5nIFVTQiBcJiMzNDtuZXR3b3JrXCYjMzQ7IG9yIFwmIzM0O2RhdGEgdHJhbnNmZXJcJiMzNDtcbiAxNDQ6XHRcdCAgICBjYWJsZXMuICBUaGVzZSBhcmUgb2Z0ZW4gdXNlZCB0byBuZXR3b3JrIGxhcHRvcHMgdG8gUENzLCBsaWtlXG4gMTQ1Olx0XHQgICAgXCYjMzQ7TGFwbGlua1wmIzM0OyBwYXJhbGxlbCBjYWJsZXMgb3Igc29tZSBtb3RoZXJib2FyZHMuICBUaGVzZSByZWx5XG4gMTQ2Olx0XHQgICAgb24gc3BlY2lhbGl6ZWQgY2hpcHMgZnJvbSBtYW55IHN1cHBsaWVycy5cbiAxNDc6XHRcbiAxNDg6XHRcdCAgLSBBbiBpbnRlbGxpZ2VudCBVU0IgZ2FkZ2V0LCBwZXJoYXBzIGVtYmVkZGluZyBhIExpbnV4IHN5c3RlbS5cbiAxNDk6XHRcdCAgICBUaGVzZSBpbmNsdWRlIFBEQXMgcnVubmluZyBMaW51eCAoaVBhcSwgWW9weSwgWmF1cnVzLCBhbmRcbiAxNTA6XHRcdCAgICBvdGhlcnMpLCBhbmQgZGV2aWNlcyB0aGF0IGludGVyb3BlcmF0ZSB1c2luZyB0aGUgc3RhbmRhcmRcbiAxNTE6XHRcdCAgICBDREMtRXRoZXJuZXQgc3BlY2lmaWNhdGlvbiAoaW5jbHVkaW5nIG1hbnkgY2FibGUgbW9kZW1zKS5cbiAxNTI6XHRcbiAxNTM6XHRcdCAgLSBOZXR3b3JrIGFkYXB0ZXIgaGFyZHdhcmUgKGxpa2UgdGhvc2UgZm9yIDEwLzEwMCBFdGhlcm5ldCkgd2hpY2hcbiAxNTQ6XHRcdCAgICB1c2VzIHRoaXMgZHJpdmVyIGZyYW1ld29yay5cbiAxNTU6XHRcbiAxNTY6XHRcdCAgVGhlIGxpbmsgd2lsbCBhcHBlYXIgd2l0aCBhIG5hbWUgbGlrZSBcJiMzNDt1c2IwXCYjMzQ7LCB3aGVuIHRoZSBsaW5rIGlzXG4gMTU3Olx0XHQgIGEgdHdvLW5vZGUgbGluaywgb3IgXCYjMzQ7ZXRoMFwmIzM0OyBmb3IgbW9zdCBDREMtRXRoZXJuZXQgZGV2aWNlcy4gIFRob3NlXG4gMTU4Olx0XHQgIHR3by1ub2RlIGxpbmtzIGFyZSBtb3N0IGVhc2lseSBtYW5hZ2VkIHdpdGggRXRoZXJuZXQgQnJpZGdpbmdcbiAxNTk6XHRcdCAgKENPTkZJR19CUklER0UpIGluc3RlYWQgb2Ygcm91dGluZy5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMDE6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTMxMQoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkludmVzdGlnYXRpbmcgTmV0d29yayBEcml2ZXIgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzIGZvciB0aGVzZSBuZXR3b3JrIGRyaXZlcnMsIHNwZWNpZmljYWxseSB0aGUgb25lcyByZWxhdGVkIHRvIFVTQi4gSSYjMzk7bSB0aGlua2luZyB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludCBpcyB0byBkaXZlIGludG8gdGhlIEtjb25maWcgZmlsZXMuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgYGRyaXZlcnMvbmV0L0tjb25maWdgIGFuZCwgc2luY2Ugd2UmIzM5O3JlIGludGVyZXN0ZWQgaW4gVVNCLCBhbHNvIGBkcml2ZXJzL25ldC91c2IvS2NvbmZpZ2AuIFRoaXMgd2lsbCBhbGxvdyBtZSB0byB0cmFjZSB3aGF0IG9wdGlvbnMgbmVlZCB0byBiZSBlbmFibGVkIGZvciB2YXJpb3VzIG5ldHdvcmsgZHJpdmVyIGZlYXR1cmVzIHRvIGJlY29tZSBhdmFpbGFibGUuIEtub3dpbmcgdGhlIHBhcmVudCBkZXBlbmRlbmNpZXMgaXMgY3JpdGljYWwgZm9yIHRyb3VibGVzaG9vdGluZywgcG9ydGluZywgb3IgZ2VuZXJhbGx5IHVuZGVyc3RhbmRpbmcgaG93IGFsbCB0aGVzZSBwaWVjZXMgZml0IHRvZ2V0aGVyIGluIHRoZSBuZXR3b3JrIHN0YWNrLiBJdCYjMzk7cyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGNvbmRpdGlvbmFsIGxvZ2ljIHRoYXQgY29udHJvbHMgd2hpY2ggZHJpdmVycyBnZXQgYnVpbHQuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgS2NvbmZpZyBmaWxlcyByZXZlYWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAxOjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NvdXJjZS4qZHJpdmVycy9uZXQvdXNiJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnPTUzMj1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9zMzkwL25ldC9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnLTUzMy1cbmRyaXZlcnMvbmV0L0tjb25maWc6NTM0OnNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC91c2IvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZy01MzUtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAxOjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk2MTYKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6CgoqKkFuYWx5emluZyB0aGUgVVNCIE5ldHdvcmsgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgVVNCIG5ldHdvcmtpbmcgZHJpdmVyIGNvbmZpZ3VyYXRpb24uIE15IGZpcnN0IHN0ZXAgaXMgdG8gemVybyBpbiBvbiB0aGUgYEtjb25maWdgIG1lbnUsIHNwZWNpZmljYWxseSB0aGUgb25lIGxvY2F0ZWQgdW5kZXIgYGRyaXZlcnMvbmV0L3VzYi9gLiBJIGtub3cgdGhhdCYjMzk7cyB3aGVyZSB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVzaWRlIGZvciB0aGlzIHBhcnQgb2YgdGhlIGtlcm5lbC4gSSYjMzk7bSBnb2luZyB0byBzY2FuIHRoZSB2ZXJ5IHRvcCBvZiB0aGF0IGZpbGUsIGZvY3VzaW5nIG9uIHRoZSBjb25kaXRpb25hbCBsaW5lcyAodXNpbmcgYGlmYCkuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW5pdGlhbCBjb25kaXRpb25zIG9yIGRlcGVuZGVuY2llcyB0aGF0IGRpY3RhdGUgd2hldGhlciB0aGUgcmVzdCBvZiB0aGUgb3B0aW9ucyBpbiB0aGF0IG1lbnUgYXJlIGV2ZW4gKnZpc2libGUqIG9yIHNlbGVjdGFibGUuIFRoaXMgZmlyc3QgYGlmYCBzdGF0ZW1lbnQgb2Z0ZW4gc2V0cyB0aGUgc3RhZ2UgZm9yIHRoZSBlbnRpcmUgVVNCIG5ldHdvcmtpbmcgY29uZmlndXJhdGlvbiBicmFuY2gsIHNvIGl0JiMzOTtzIGEgY3JpdGljYWwgc3RhcnRpbmcgcG9pbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAxOjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHQjXG4gICAzOlx0IyBVU0IgTmV0d29yayBkZXZpY2VzIGNvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0Y29tbWVudCBcJiMzNDtIb3N0LXNpZGUgVVNCIHN1cHBvcnQgaXMgbmVlZGVkIGZvciBVU0IgTmV0d29yayBBZGFwdGVyIHN1cHBvcnRcJiMzNDtcbiAgIDY6XHRcdGRlcGVuZHMgb24gIVVTQiBcdTAwMjZcdTAwMjYgTkVUXG4gICA3Olx0XG4gICA4Olx0bWVudWNvbmZpZyBVU0JfTkVUX0RSSVZFUlNcbiAgIDk6XHRcdHRyaXN0YXRlIFwmIzM0O1VTQiBOZXR3b3JrIEFkYXB0ZXJzXCYjMzQ7XG4gIDEwOlx0XHRkZWZhdWx0IFVTQiBpZiBVU0JcbiAgMTE6XHRcdGRlcGVuZHMgb24gVVNCIFx1MDAyNlx1MDAyNiBORVRcbiAgMTI6XHRcbiAgMTM6XHRpZiBVU0JfTkVUX0RSSVZFUlNcbiAgMTQ6XHRcbiAgMTU6XHRjb25maWcgVVNCX0NBVENcbiAgMTY6XHRcdHRyaXN0YXRlIFwmIzM0O1VTQiBDQVRDIE5ldE1hdGUtYmFzZWQgRXRoZXJuZXQgZGV2aWNlIHN1cHBvcnRcJiMzNDtcbiAgMTc6XHRcdHNlbGVjdCBDUkMzMlxuICAxODpcdFx0aGVscFxuICAxOTpcdFx0ICBTYXkgWSBpZiB5b3Ugd2FudCB0byB1c2Ugb25lIG9mIHRoZSBmb2xsb3dpbmcgMTBNYnBzIFVTQiBFdGhlcm5ldFxuICAyMDpcdFx0ICBkZXZpY2UgYmFzZWQgb24gdGhlIEVMMTIxMEEgY2hpcC4gU3VwcG9ydGVkIGRldmljZXMgYXJlOlxuICAyMTpcdFx0ICBCZWxraW4gRjVVMDExXG4gIDIyOlx0XHQgIEJlbGtpbiBGNVUxMTFcbiAgMjM6XHRcdCAgQ0FUQyBOZXRNYXRlXG4gIDI0Olx0XHQgIENBVEMgTmV0TWF0ZSBJSVxuICAyNTpcdFx0ICBzbWFydEJyaWRnZXMgc21hcnROSUNcbiAgMjY6XHRcbiAgMjc6XHRcdCAgVGhpcyBkcml2ZXIgbWFrZXMgdGhlIGFkYXB0ZXIgYXBwZWFyIGFzIGEgbm9ybWFsIEV0aGVybmV0IGludGVyZmFjZSxcbiAgMjg6XHRcdCAgdHlwaWNhbGx5IG9uIGV0aDAsIGlmIGl0IGlzIHRoZSBvbmx5IGV0aGVybmV0IGRldmljZSwgb3IgcGVyaGFwcyBvblxuICAyOTpcdFx0ICBldGgxLCBpZiB5b3UgaGF2ZSBhIFBDSSBvciBJU0EgZXRoZXJuZXQgY2FyZCBpbnN0YWxsZWQuXG4gIDMwOlx0XG4gIDMxOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxuICAzMjpcdFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgY2F0Yy5cbiAgMzM6XHRcbiAgMzQ6XHRjb25maWcgVVNCX0tBV0VUSFxuICAzNTpcdFx0dHJpc3RhdGUgXCYjMzQ7VVNCIEtMU0kgS0w1VVNCMTAxLWJhc2VkIGV0aGVybmV0IGRldmljZSBzdXBwb3J0XCYjMzQ7XG4gIDM2Olx0XHRoZWxwXG4gIDM3Olx0XHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIG9uZSBvZiB0aGUgZm9sbG93aW5nIDEwTWJwcyBvbmx5XG4gIDM4Olx0XHQgIFVTQiBFdGhlcm5ldCBhZGFwdGVycyBiYXNlZCBvbiB0aGUgS0xTSSBLTDVLVVNCMTAxQiBjaGlwc2V0OlxuICAzOTpcdFx0ICAzQ29tIDNDMTkyNTBcbiAgNDA6XHRcdCAgQURTIFVTQi0xMEJUXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAxOjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMzk3CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogNDA2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGF0Y2gmIzM5O3MgSW1wYWN0IGFuZCBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2ggYW5kIGZpZ3VyZSBvdXQgaWYgaXQmIzM5O3MgZXZlbiB3b3J0aCBjb25zaWRlcmluZyBmb3IgZnV6emluZy4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGZvY3VzaW5nIG9uIGBjeDgyMzEwX3J4X2ZpeHVwYC4gTG9va2luZyBhdCB0aGUgY29kZSwgaXQgc2VlbXMgdGhlIGNoYW5nZSBhZGRyZXNzZXMgYSBzcGVjaWZpYyBjb25kaXRpb246IGBsZW4gPT0gMHhmZmZmYC4KCkJlZm9yZSB0aGUgcGF0Y2gsIGlmIGBsZW5gIHdhcyBlcXVhbCB0byAweGZmZmYsIHRoZSBjb2RlIHdvdWxkIHByaW50IGEgJiMzNDtyb3V0ZXIgd2FzIHJlYm9vdGVkJiMzNDsgbWVzc2FnZSwgc2NoZWR1bGUgc29tZSB3b3JrLCBhbmQgdGhlbi4uLiAqZmFsbCB0aHJvdWdoKiB0byB0aGUgaW5jb21wbGV0ZSBwYWNrZXQgaGFuZGxpbmcgbG9naWMuIFRoYXQmIzM5O3MgYSBiaXQgb2RkLiBUaGUgZm9sbG93aW5nIGNvZGUgZGVhbHMgd2l0aCB3aGF0IGFwcGVhcnMgdG8gYmUgaW5jb21wbGV0ZSBwYWNrZXRzIGFuZCBhdHRlbXB0cyB0byBzYXZlIHRoZW0gZm9yIHJlYXNzZW1ibHkgbGF0ZXIuCgpUaGVuIGl0IGhpdHMgbWU6IGBsZW4gPSAweGZmZmZgIHdoaWNoIGlzIDY1NTM1LCBhIHN1cnByaXNpbmdseSBsYXJnZSB2YWx1ZSEgTm93IHRoZSBxdWVzdGlvbiB0aGF0IGFyaXNlczogV2hhdCYjMzk7cyB0aGUgc2l6ZSBhbmQgdHlwZSBvZiBgZGV2LSZndDtwYXJ0aWFsX2RhdGFgPyBJcyBpdCBhIGZpeGVkIGJ1ZmZlciwgb3IgaXMgaXQgcGFydCBvZiBhbiBgc2tiYCBidWZmZXIgd2l0aGluIHRoZSBgdXNibmV0YCBzdHJ1Y3R1cmU/IFRoYXQmIzM5O3MgdGhlIGNyaXRpY2FsIHBpZWNlIGhlcmUsIHdoZXRoZXIgaXQmIzM5O3Mgc3RhdGljYWxseSBhbGxvY2F0ZWQgb3IgZHluYW1pY2FsbHkgbWFuYWdlZC4KCkkgbmVlZCB0byB0cmFjZSBiYWNrIHdoZXJlIGBkZXYtJmd0O3BhcnRpYWxfZGF0YWAgaXMgZGVmaW5lZCBhbmQgaG93IGl0cyBzaXplIGlzIGRldGVybWluZWQuIEVpdGhlciBpbiBgY3g4MjMxMF9iaW5kYCBvciB0aGUgcGFyZW50IGB1c2JuZXRgIHN0cnVjdHVyZS4gVGhpcyBjb3VsZCBiZSBpbnRlcmVzdGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMDE6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGFydGlhbF9kYXRhJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jPTEzMD1zdGF0aWMgdm9pZCBjeDgyMzEwX3JlZW5hYmxlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTEzOC0jZGVmaW5lIHBhcnRpYWxfcmVtXHRkYXRhWzFdXHRcdC8qIHJlbWFpbmluZyAobWlzc2luZykgZGF0YSBsZW5ndGggKi9cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjEzOTojZGVmaW5lIHBhcnRpYWxfZGF0YVx0ZGF0YVsyXVx0XHQvKiBwYXJ0aWFsIHBhY2tldCBkYXRhICovXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0xNDAtXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYz0xNDE9c3RhdGljIGludCBjeDgyMzEwX2JpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0xNzEtXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzoxNzI6XHRkZXYtXHUwMDNlcGFydGlhbF9kYXRhID0gKHVuc2lnbmVkIGxvbmcpIGttYWxsb2MoZGV2LVx1MDAzZWhhcmRfbXR1LCBHRlBfS0VSTkVMKTtcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjE3MzpcdGlmICghZGV2LVx1MDAzZXBhcnRpYWxfZGF0YSlcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTE3NC1cdFx0cmV0dXJuIC1FTk9NRU07XG4tLVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMjIxLWVycl9wYXJ0aWFsOlxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MjIyOlx0a2ZyZWUoKHZvaWQgKilkZXYtXHUwMDNlcGFydGlhbF9kYXRhKTtcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTIyMy1cdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM9MjI2PXN0YXRpYyB2b2lkIGN4ODIzMTBfdW5iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMjI5LVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MjMwOlx0a2ZyZWUoKHZvaWQgKilkZXYtXHUwMDNlcGFydGlhbF9kYXRhKTtcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTIzMS1cdGNhbmNlbF93b3JrX3N5bmMoXHUwMDI2cHJpdi1cdTAwM2VyZWVuYWJsZV93b3JrKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYz0yNDM9c3RhdGljIGludCBjeDgyMzEwX3J4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0yNTgtXHRcdHNrYl9wdXQoc2tiMiwgbGVuKTtcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjI1OTpcdFx0bWVtY3B5KHNrYjItXHUwMDNlZGF0YSwgKHZvaWQgKilkZXYtXHUwMDNlcGFydGlhbF9kYXRhLFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMjYwLVx0XHQgICAgICAgZGV2LVx1MDAzZXBhcnRpYWxfbGVuKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0yOTQtXHRcdFx0ZGV2LVx1MDAzZXBhcnRpYWxfcmVtID0gbGVuIC0gc2tiLVx1MDAzZWxlbjtcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjI5NTpcdFx0XHRtZW1jcHkoKHZvaWQgKilkZXYtXHUwMDNlcGFydGlhbF9kYXRhLCBza2ItXHUwMDNlZGF0YSxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTI5Ni1cdFx0XHQgICAgICAgZGV2LVx1MDAzZXBhcnRpYWxfbGVuKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMDE6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE5NTUKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA2NjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBXb3J0aCBvZiBGdXp6aW5nIGBjeDgyMzEwX3J4X2ZpeHVwYCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIG9ic2VydmF0aW9uIGlzIGZvY3VzZWQgb24gYGN4ODIzMTBfcnhfZml4dXBgLiBTcGVjaWZpY2FsbHksIHRoZSBjYXNlIHdoZXJlIHRoZSBsZW5ndGggYGxlbmAgZXF1YWxzIGAweGZmZmZgLiBJdCYjMzk7cyBjbGVhciB0aGVyZSYjMzk7cyBhIHBvdGVudGlhbCBvdmVyZmxvdyBjb25kaXRpb24gaGVyZSwgc3RlbW1pbmcgZnJvbSBob3cgdGhlIGNvZGUgaGFuZGxlcyBwYXJ0aWFsIHBhY2tldHMgd2hlbiBgbGVuYCBoaXRzIHRoaXMgbWF4aW11bSB2YWx1ZS4gUHJldmlvdXNseSwgdGhlIGxvZ2ljIGZsb3dlZCBpbnRvIGEgcHJvYmxlbWF0aWMgYGlmIChsZW4gJmd0OyBza2ItJmd0O2xlbilgIGNvbmRpdGlvbiB3aGljaCBzZXRzIGBkZXYtJmd0O3BhcnRpYWxfcmVtID0gMHhmZmZmIC0gc2tiLSZndDtsZW47YC4gVGhpcywgY291cGxlZCB3aXRoIGhvdyB0aGUgbmV4dCBwYWNrZXQmIzM5O3MgbGVuZ3RoIGlzIGNhbGN1bGF0ZWQsIGNvdWxkIGxlYWQgdG8gYWxsb2NhdGluZyBhIG1hc3NpdmUgU0tCIGJ1ZmZlciwgb3IgZXZlbiBhbiBvdmVyZmxvdy4gVGhlIGZpeCwgcmV0dXJuaW5nIDAsIGluZGljYXRlcyBhIFJYIGZhaWx1cmUvcGFja2V0IGRyb3AuCgpOb3csIEkgbmVlZCB0byBldmFsdWF0ZSBpZiBmdXp6aW5nIHRoaXMgaXMgd29ydGh3aGlsZS4gTGV0JiMzOTtzIHNlZSBpZiBpdCBoaXRzIG15IGNyaXRlcmlhLgoKRmlyc3QsICpyZWFjaGFiaWxpdHkqLiBDYW4gYGN4ODIzMTBgIGJlIHRyaWdnZXJlZCBpbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIHdpdGggc3l6a2FsbGVyPyBZZXMsIGFic29sdXRlbHkuIFVTQiBkcml2ZXJzIGFyZSBlbXVsYXRhYmxlIHZpYSBVU0IgUmF3IEdhZGdldCwgc3l6a2FsbGVyIFVTQiBmdXp6aW5nLCBhbmQgdG9vbHMgbGlrZSBkdW1teV9oY2QuIFN5emthbGxlciByZWd1bGFybHkgdGFja2xlcyBVU0IgZGV2aWNlIGRyaXZlcnMsIGluY2x1ZGluZyB0aGUgYHVzYm5ldGAgbWluaWRyaXZlcnMuIFRoaXMgaXMgcHJvbWlzaW5nLgoKTmV4dCwgZG9lcyB0aGlzIHBhdGNoICptb2RpZnkgY29yZSBrZXJuZWwgbG9naWMqIG9yIHNpZ25pZmljYW50IGRyaXZlcnMvYXJjaGl0ZWN0dXJlcz8gSXQgZGlyZWN0bHkgYWx0ZXJzIHRoZSBjb250cm9sIGZsb3cgd2l0aGluIGBjeDgyMzEwX3J4X2ZpeHVwYCwgc3BlY2lmaWNhbGx5IHRoZSBSWCBwYWNrZXQgaGFuZGxpbmcgd2hlbiBgbGVuID09IDB4ZmZmZmAuIFRoaXMgaXMgYSBzaWduaWZpY2FudCBmdW5jdGlvbmFsIGNoYW5nZS4KCkZpbmFsbHksIGRvZXMgaXQgZmFsbCBpbnRvIHRoZSAqZXhjbHVzaW9ucyogZm9yIGZ1enppbmc/IExldCYjMzk7cyBjaGVjayBhZ2FpbnN0IHRoZSBydWxlcy4gVGhpcyBpc24mIzM5O3QganVzdCBkb2N1bWVudGF0aW9uIG9yIGxvZ2dpbmcsIGlzbiYjMzk7dCBhIHNpbXBsZSBjb25zdGFudCBjaGFuZ2UsIGlzIHJlYWNoYWJsZSB2aWEgdmlydHVhbGl6YXRpb24sIGFuZCBpc24mIzM5O3QgYSB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrLiBJbiBmYWN0LCBpdCBjaGFuZ2VzIGFuIFJYIHBhdGggd2l0aGluIGEgVVNCIG5ldHdvcmsgZHJpdmVyIChgY3g4MjMxMF9ldGhgKSwgbW9kaWZ5aW5nIGl0cyBleGVjdXRpb24gcGF0aC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLgoKVGhlcmVmb3JlLCBnaXZlbiB0aGUgc2V2ZXJpdHkgb2YgdGhlIHBvdGVudGlhbCBvdmVyZmxvdyBhbmQgaXRzIHJlYWNoYWJpbGl0eSwgYFdvcnRoRnV6emluZyA9IHRydWVgLgoKTmV4dCwgSSBuZWVkIHRvIGlkZW50aWZ5IHRoZSAqRm9jdXNTeW1ib2xzKi4gVGhlIGNyaXRpY2FsIG9uZXMgYXJlIHdpdGhpbiBgY3g4MjMxMF9yeF9maXh1cGAgYW5kIGl0cyBjYWxsZXJzLiBUaGUga2V5IGlzIG5vdyB0byBwaW5wb2ludCBleGFjdGx5IGhvdyBgY3g4MjMxMF9yeF9maXh1cGAgaXMgaW52b2tlZCBmcm9tIGB1c2JuZXRgLiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIGBjeDgyMzEwX3J4X2ZpeHVwYCBvciBpdHMgY2FsbGVyIGZ1bmN0aW9ucyB3aXRoaW4gYHVzYm5ldGAgb3IgYGN4ODIzMTBgIGFyZSBleHBvcnRlZC9ub24tc3RhdGljL3N0YXRpYywgdG8gZmlndXJlIG91dCB0aGUgcmlnaHQgc3ltYm9scy4gQSBxdWljayBgZ3JlcGAgZm9yICYjMzQ7cnhfZml4dXAmIzM0OyB3aXRoaW4gYGRyaXZlcnMvbmV0L3VzYi91c2JuZXQuY2Agc2hvdWxkIGRvIHRoZSB0cmljay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMDE6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnhfZml4dXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2ImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDY1OCBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jPTEwNTc9c3RhdGljIHZvaWQgYXFjMTExX3J4X2NoZWNrc3VtKHN0cnVjdCBza19idWZmICpza2IsIHU2NCBwa3RfZGVzYylcbi0tXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmMtMTA3MS1cbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzoxMDcyOnN0YXRpYyBpbnQgYXFjMTExX3J4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0xMDczLXtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM9MTI0Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIGFxYzExMV9pbmZvID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0xMjUxLVx0XHRcdCAgRkxBR19BVk9JRF9VTkxJTktfVVJCUyB8IEZMQUdfTVVMVElfUEFDS0VULFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jOjEyNTI6XHQucnhfZml4dXBcdD0gYXFjMTExX3J4X2ZpeHVwLFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTEyNTMtXHQudHhfZml4dXBcdD0gYXFjMTExX3R4X2ZpeHVwLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYz0xMjU5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gYXNpeDExMV9pbmZvID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0xMjY4LVx0XHRcdCAgRkxBR19BVk9JRF9VTkxJTktfVVJCUyB8IEZMQUdfTVVMVElfUEFDS0VULFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jOjEyNjk6XHQucnhfZml4dXBcdD0gYXFjMTExX3J4X2ZpeHVwLFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTEyNzAtXHQudHhfZml4dXBcdD0gYXFjMTExX3R4X2ZpeHVwLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYz0xMjc4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gYXNpeDExMl9pbmZvID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0xMjg3LVx0XHRcdCAgRkxBR19BVk9JRF9VTkxJTktfVVJCUyB8IEZMQUdfTVVMVElfUEFDS0VULFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jOjEyODg6XHQucnhfZml4dXBcdD0gYXFjMTExX3J4X2ZpeHVwLFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTEyODktXHQudHhfZml4dXBcdD0gYXFjMTExX3R4X2ZpeHVwLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYz0xMjk0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gdHJlbmRuZXRfaW5mbyA9IHtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmMtMTMwMy1cdFx0XHQgIEZMQUdfQVZPSURfVU5MSU5LX1VSQlMgfCBGTEFHX01VTFRJX1BBQ0tFVCxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzoxMzA0Olx0LnJ4X2ZpeHVwXHQ9IGFxYzExMV9yeF9maXh1cCxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0xMzA1LVx0LnR4X2ZpeHVwXHQ9IGFxYzExMV90eF9maXh1cCxcbi0tXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM9MTMwOD1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIHFuYXBfaW5mbyA9IHtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmMtMTMxNy1cdFx0XHQgIEZMQUdfQVZPSURfVU5MSU5LX1VSQlMgfCBGTEFHX01VTFRJX1BBQ0tFVCxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzoxMzE4Olx0LnJ4X2ZpeHVwXHQ9IGFxYzExMV9yeF9maXh1cCxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0xMzE5LVx0LnR4X2ZpeHVwXHQ9IGFxYzExMV90eF9maXh1cCxcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oPTE2Mz1zdHJ1Y3QgYXNpeF9kYXRhIHtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oLTE3MC1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4Lmg6MTcxOnN0cnVjdCBhc2l4X3J4X2ZpeHVwX2luZm8ge1xuZHJpdmVycy9uZXQvdXNiL2FzaXguaC0xNzItXHRzdHJ1Y3Qgc2tfYnVmZiAqYXhfc2tiO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4Lmg9MTc4PXN0cnVjdCBhc2l4X2NvbW1vbl9wcml2YXRlIHtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oLTE4My1cdHUxNiBwcmVzdmRfcGh5X2JtY3I7XG5kcml2ZXJzL25ldC91c2IvYXNpeC5oOjE4NDpcdHN0cnVjdCBhc2l4X3J4X2ZpeHVwX2luZm8gcnhfZml4dXBfaW5mbztcbmRyaXZlcnMvbmV0L3VzYi9hc2l4LmgtMTg1LVx0c3RydWN0IG1paV9idXMgKm1kaW87XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXguaD0yMDY9dm9pZCBhc2l4X3dyaXRlX2NtZF9hc3luYyhzdHJ1Y3QgdXNibmV0ICpkZXYsIHU4IGNtZCwgdTE2IHZhbHVlLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4LmgtMjA4LVxuZHJpdmVycy9uZXQvdXNiL2FzaXguaDoyMDk6aW50IGFzaXhfcnhfZml4dXBfaW50ZXJuYWwoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuZHJpdmVycy9uZXQvdXNiL2FzaXguaDoyMTA6XHRcdFx0ICAgc3RydWN0IGFzaXhfcnhfZml4dXBfaW5mbyAqcngpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXguaDoyMTE6aW50IGFzaXhfcnhfZml4dXBfY29tbW9uKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG5kcml2ZXJzL25ldC91c2IvYXNpeC5oOjIxMjp2b2lkIGFzaXhfcnhfZml4dXBfY29tbW9uX2ZyZWUoc3RydWN0IGFzaXhfY29tbW9uX3ByaXZhdGUgKmRwKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4LmgtMjEzLVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jPTkyPXN0YXRpYyBpbnQgYXNpeF9jaGVja19ob3N0X2VuYWJsZShzdHJ1Y3QgdXNibmV0ICpkZXYsIGludCBpbl9wbSlcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy0xMTQtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzoxMTU6c3RhdGljIHZvaWQgcmVzZXRfYXNpeF9yeF9maXh1cF9pbmZvKHN0cnVjdCBhc2l4X3J4X2ZpeHVwX2luZm8gKnJ4KVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtMTE2LXtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTExNy1cdC8qIFJlc2V0IHRoZSB2YXJpYWJsZXMgdGhhdCBoYXZlIGEgbGlmZXRpbWUgb3V0c2lkZSBvZlxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6MTE4Olx0ICogYXNpeF9yeF9maXh1cF9pbnRlcm5hbCgpIHNvIHRoYXQgZnV0dXJlIHByb2Nlc3Npbmcgc3RhcnRzIGZyb20gYVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtMTE5LVx0ICoga25vd24gc2V0IG9mIGluaXRpYWwgY29uZGl0aW9ucy5cbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy0xMzUtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzoxMzY6aW50IGFzaXhfcnhfZml4dXBfaW50ZXJuYWwoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6MTM3Olx0XHRcdCAgIHN0cnVjdCBhc2l4X3J4X2ZpeHVwX2luZm8gKnJ4KVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtMTM4LXtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy0xNTctXHRcdGlmIChzaXplICE9ICgofnJ4LVx1MDAzZWhlYWRlciBcdTAwM2VcdTAwM2UgMTYpIFx1MDAyNiAweDdmZikpIHtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjE1ODpcdFx0XHRuZXRkZXZfZXJyKGRldi1cdTAwM2VuZXQsIFwmIzM0O2FzaXhfcnhfZml4dXAoKSBEYXRhIEhlYWRlciBzeW5jaHJvbmlzYXRpb24gd2FzIGxvc3QsIHJlbWFpbmluZyAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTE1OS1cdFx0XHRcdCAgIHJ4LVx1MDAzZXJlbWFpbmluZyk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzoxNjA6XHRcdFx0cmVzZXRfYXNpeF9yeF9maXh1cF9pbmZvKHJ4KTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTE2MS1cdFx0fVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTE4OS1cdFx0XHRpZiAoc2l6ZSAhPSAoKH5yeC1cdTAwM2VoZWFkZXIgXHUwMDNlXHUwMDNlIDE2KSBcdTAwMjYgMHg3ZmYpKSB7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzoxOTA6XHRcdFx0XHRuZXRkZXZfZXJyKGRldi1cdTAwM2VuZXQsIFwmIzM0O2FzaXhfcnhfZml4dXAoKSBCYWQgSGVhZGVyIExlbmd0aCAweCV4LCBvZmZzZXQgJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy0xOTEtXHRcdFx0XHRcdCAgIHJ4LVx1MDAzZWhlYWRlciwgb2Zmc2V0KTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjE5MjpcdFx0XHRcdHJlc2V0X2FzaXhfcnhfZml4dXBfaW5mbyhyeCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy0xOTMtXHRcdFx0XHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy0xOTUtXHRcdFx0aWYgKHNpemUgXHUwMDNlIGRldi1cdTAwM2VuZXQtXHUwMDNlbXR1ICYjNDM7IEVUSF9ITEVOICYjNDM7IFZMQU5fSExFTikge1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6MTk2Olx0XHRcdFx0bmV0ZGV2X2RiZyhkZXYtXHUwMDNlbmV0LCBcJiMzNDthc2l4X3J4X2ZpeHVwKCkgQmFkIFJYIExlbmd0aCAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTE5Ny1cdFx0XHRcdFx0ICAgc2l6ZSk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzoxOTg6XHRcdFx0XHRyZXNldF9hc2l4X3J4X2ZpeHVwX2luZm8ocngpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtMTk5LVx0XHRcdFx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtMjMyLVx0aWYgKHNrYi1cdTAwM2VsZW4gIT0gb2Zmc2V0KSB7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzoyMzM6XHRcdG5ldGRldl9lcnIoZGV2LVx1MDAzZW5ldCwgXCYjMzQ7YXNpeF9yeF9maXh1cCgpIEJhZCBTS0IgTGVuZ3RoICVkLCAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTIzNC1cdFx0XHQgICBza2ItXHUwMDNlbGVuLCBvZmZzZXQpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6MjM1Olx0XHRyZXNldF9hc2l4X3J4X2ZpeHVwX2luZm8ocngpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtMjM2LVx0XHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy0yNDEtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzoyNDI6aW50IGFzaXhfcnhfZml4dXBfY29tbW9uKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTI0My17XG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy0yNDQtXHRzdHJ1Y3QgYXNpeF9jb21tb25fcHJpdmF0ZSAqZHAgPSBkZXYtXHUwMDNlZHJpdmVyX3ByaXY7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzoyNDU6XHRzdHJ1Y3QgYXNpeF9yeF9maXh1cF9pbmZvICpyeCA9IFx1MDAyNmRwLVx1MDAzZXJ4X2ZpeHVwX2luZm87XG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy0yNDYtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzoyNDc6XHRyZXR1cm4gYXNpeF9yeF9maXh1cF9pbnRlcm5hbChkZXYsIHNrYiwgcngpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtMjQ4LX1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTI0OS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjI1MDp2b2lkIGFzaXhfcnhfZml4dXBfY29tbW9uX2ZyZWUoc3RydWN0IGFzaXhfY29tbW9uX3ByaXZhdGUgKmRwKVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtMjUxLXtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjI1MjpcdHN0cnVjdCBhc2l4X3J4X2ZpeHVwX2luZm8gKnJ4O1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtMjUzLVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTI1Ni1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjI1NzpcdHJ4ID0gXHUwMDI2ZHAtXHUwMDNlcnhfZml4dXBfaW5mbztcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTI1OC1cbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9OTU1PXN0YXRpYyB2b2lkIGF4ODg3NzJfdW5iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTk2My1cdGF4ODg3NzJfbWRpb191bnJlZ2lzdGVyKHByaXYpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjk2NDpcdGFzaXhfcnhfZml4dXBfY29tbW9uX2ZyZWUoZGV2LVx1MDAzZWRyaXZlcl9wcml2KTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05NjUtXHQvKiBEcm9wIHRoZSBQTSB1c2FnZSByZWYgdGFrZW4gaW4gYmluZCgpICovXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTk2OT1zdGF0aWMgdm9pZCBheDg4MTc4X3VuYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTk3MC17XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTcxOlx0YXNpeF9yeF9maXh1cF9jb21tb25fZnJlZShkZXYtXHUwMDNlZHJpdmVyX3ByaXYpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTk3Mi1cdGtmcmVlKGRldi1cdTAwM2Vkcml2ZXJfcHJpdik7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTEzNjY9c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mbyBheDg4NzcyX2luZm8gPSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEzNzItXHQuZmxhZ3MgPSBGTEFHX0VUSEVSIHwgRkxBR19GUkFNSU5HX0FYIHwgRkxBR19NVUxUSV9QQUNLRVQsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTM3MzpcdC5yeF9maXh1cCA9IGFzaXhfcnhfZml4dXBfY29tbW9uLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEzNzQtXHQudHhfZml4dXAgPSBhc2l4X3R4X2ZpeHVwLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0xMzc3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gYXg4ODc3MmJfaW5mbyA9IHtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTM4My1cdC5mbGFncyA9IEZMQUdfRVRIRVIgfCBGTEFHX0ZSQU1JTkdfQVggfCBGTEFHX01VTFRJX1BBQ0tFVCxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMzg0Olx0LnJ4X2ZpeHVwID0gYXNpeF9yeF9maXh1cF9jb21tb24sXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTM4NS1cdC50eF9maXh1cCA9IGFzaXhfdHhfZml4dXAsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTEzODk9c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mbyBseGF1c2JfdDFsX2luZm8gPSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEzOTUtXHQuZmxhZ3MgPSBGTEFHX0VUSEVSIHwgRkxBR19GUkFNSU5HX0FYIHwgRkxBR19NVUxUSV9QQUNLRVQsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTM5NjpcdC5yeF9maXh1cCA9IGFzaXhfcnhfZml4dXBfY29tbW9uLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEzOTctXHQudHhfZml4dXAgPSBhc2l4X3R4X2ZpeHVwLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0xNDAxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gYXg4ODE3OF9pbmZvID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xNDA5LVx0XHQgRkxBR19NVUxUSV9QQUNLRVQsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTQxMDpcdC5yeF9maXh1cCA9IGFzaXhfcnhfZml4dXBfY29tbW9uLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTE0MTEtXHQudHhfZml4dXAgPSBhc2l4X3R4X2ZpeHVwLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0xNDIzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gaGcyMGY5X2luZm8gPSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTE0MjgtXHQuZmxhZ3MgPSBGTEFHX0VUSEVSIHwgRkxBR19GUkFNSU5HX0FYIHwgRkxBR19NVUxUSV9QQUNLRVQsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTQyOTpcdC5yeF9maXh1cCA9IGFzaXhfcnhfZml4dXBfY29tbW9uLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTE0MzAtXHQudHhfZml4dXAgPSBhc2l4X3R4X2ZpeHVwLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0xNDM0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gbHljb25zeXNfZmliZXJnZWNrbzEwMF9pbmZvID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xNDQxLVx0XHQgRkxBR19NVUxUSV9QQUNLRVQsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTQ0MjpcdC5yeF9maXh1cCA9IGFzaXhfcnhfZml4dXBfY29tbW9uLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTE0NDMtXHQudHhfZml4dXAgPSBhc2l4X3R4X2ZpeHVwLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jPTE4PXN0cnVjdCBheDg4MTcyYV9wcml2YXRlIHtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy0yNC1cdGludCB1c2VfZW1iZHBoeTtcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jOjI1Olx0c3RydWN0IGFzaXhfcnhfZml4dXBfaW5mbyByeF9maXh1cF9pbmZvO1xuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtMjYtfTtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYz0yNjE9c3RhdGljIGludCBheDg4MTcyYV9yZXNldChzdHJ1Y3QgdXNibmV0ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtMzM4LVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmM6MzM5OnN0YXRpYyBpbnQgYXg4ODE3MmFfcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtMzQwLXtcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jLTM0MS1cdHN0cnVjdCBheDg4MTcyYV9wcml2YXRlICpkcCA9IGRldi1cdTAwM2Vkcml2ZXJfcHJpdjtcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jOjM0MjpcdHN0cnVjdCBhc2l4X3J4X2ZpeHVwX2luZm8gKnJ4ID0gXHUwMDI2ZHAtXHUwMDNlcnhfZml4dXBfaW5mbztcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jLTM0My1cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jOjM0NDpcdHJldHVybiBhc2l4X3J4X2ZpeHVwX2ludGVybmFsKGRldiwgc2tiLCByeCk7XG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy0zNDUtfVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jPTM0Nz1jb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gYXg4ODE3MmFfaW5mbyA9IHtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy0zNTUtXHRcdCBGTEFHX01VTFRJX1BBQ0tFVCxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jOjM1NjpcdC5yeF9maXh1cCA9IGF4ODgxNzJhX3J4X2ZpeHVwLFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtMzU3LVx0LnR4X2ZpeHVwID0gYXNpeF90eF9maXh1cCxcbi0tXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmM9MTM0Mj1heDg4MTc5X3J4X2NoZWNrc3VtKHN0cnVjdCBza19idWZmICpza2IsIHUzMiAqcGt0X2hkcilcbi0tXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMtMTM1Ni1cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYzoxMzU3OnN0YXRpYyBpbnQgYXg4ODE3OV9yeF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMtMTM1OC17XG4tLVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jPTE3MTI9c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mbyBheDg4MTc5X2luZm8gPSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jLTE3MjAtXHQuZmxhZ3MgPSBGTEFHX0VUSEVSIHwgRkxBR19GUkFNSU5HX0FYLFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jOjE3MjE6XHQucnhfZml4dXAgPSBheDg4MTc5X3J4X2ZpeHVwLFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jLTE3MjItXHQudHhfZml4dXAgPSBheDg4MTc5X3R4X2ZpeHVwLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYz0xNzI1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gYXg4ODE3OGFfaW5mbyA9IHtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMtMTczMy1cdC5mbGFncyA9IEZMQUdfRVRIRVIgfCBGTEFHX0ZSQU1JTkdfQVgsXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmM6MTczNDpcdC5yeF9maXh1cCA9IGF4ODgxNzlfcnhfZml4dXAsXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMtMTczNS1cdC50eF9maXh1cCA9IGF4ODgxNzlfdHhfZml4dXAsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jPTE3Mzg9c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mbyBjeXByZXNzX0dYM19pbmZvID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYy0xNzQ2LVx0LmZsYWdzID0gRkxBR19FVEhFUiB8IEZMQUdfRlJBTUlOR19BWCxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYzoxNzQ3Olx0LnJ4X2ZpeHVwID0gYXg4ODE3OV9yeF9maXh1cCxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYy0xNzQ4LVx0LnR4X2ZpeHVwID0gYXg4ODE3OV90eF9maXh1cCxcbi0tXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmM9MTc1MT1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIGRsaW5rX2R1YjEzMTJfaW5mbyA9IHtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMtMTc1OS1cdC5mbGFncyA9IEZMQUdfRVRIRVIgfCBGTEFHX0ZSQU1JTkdfQVgsXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmM6MTc2MDpcdC5yeF9maXh1cCA9IGF4ODgxNzlfcnhfZml4dXAsXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMtMTc2MS1cdC50eF9maXh1cCA9IGF4ODgxNzlfdHhfZml4dXAsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jPTE3NjQ9c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mbyBzaXRlY29tX2luZm8gPSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jLTE3NzItXHQuZmxhZ3MgPSBGTEFHX0VUSEVSIHwgRkxBR19GUkFNSU5HX0FYLFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jOjE3NzM6XHQucnhfZml4dXAgPSBheDg4MTc5X3J4X2ZpeHVwLFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jLTE3NzQtXHQudHhfZml4dXAgPSBheDg4MTc5X3R4X2ZpeHVwLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYz0xNzc3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gc2Ftc3VuZ19pbmZvID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYy0xNzg1LVx0LmZsYWdzID0gRkxBR19FVEhFUiB8IEZMQUdfRlJBTUlOR19BWCxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYzoxNzg2Olx0LnJ4X2ZpeHVwID0gYXg4ODE3OV9yeF9maXh1cCxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYy0xNzg3LVx0LnR4X2ZpeHVwID0gYXg4ODE3OV90eF9maXh1cCxcbi0tXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmM9MTc5MD1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIGxlbm92b19pbmZvID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYy0xNzk4LVx0LmZsYWdzID0gRkxBR19FVEhFUiB8IEZMQUdfRlJBTUlOR19BWCxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYzoxNzk5Olx0LnJ4X2ZpeHVwID0gYXg4ODE3OV9yeF9maXh1cCxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYy0xODAwLVx0LnR4X2ZpeHVwID0gYXg4ODE3OV90eF9maXh1cCxcbi0tXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmM9MTgwMz1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIGJlbGtpbl9pbmZvID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYy0xODExLVx0LmZsYWdzXHQ9IEZMQUdfRVRIRVIgfCBGTEFHX0ZSQU1JTkdfQVgsXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmM6MTgxMjpcdC5yeF9maXh1cCA9IGF4ODgxNzlfcnhfZml4dXAsXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMtMTgxMy1cdC50eF9maXh1cCA9IGF4ODgxNzlfdHhfZml4dXAsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jPTE4MTY9c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mbyB0b3NoaWJhX2luZm8gPSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jLTE4MjQtXHQuZmxhZ3NcdD0gRkxBR19FVEhFUiB8IEZMQUdfRlJBTUlOR19BWCxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYzoxODI1Olx0LnJ4X2ZpeHVwID0gYXg4ODE3OV9yeF9maXh1cCxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYy0xODI2LVx0LnR4X2ZpeHVwID0gYXg4ODE3OV90eF9maXh1cCxcbi0tXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmM9MTgyOT1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIG1jdF9pbmZvID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYy0xODM3LVx0LmZsYWdzXHQ9IEZMQUdfRVRIRVIgfCBGTEFHX0ZSQU1JTkdfQVgsXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmM6MTgzODpcdC5yeF9maXh1cCA9IGF4ODgxNzlfcnhfZml4dXAsXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMtMTgzOS1cdC50eF9maXh1cCA9IGF4ODgxNzlfdHhfZml4dXAsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jPTE4NDI9c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mbyBhdF91bWMyMDAwX2luZm8gPSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jLTE4NTAtXHQuZmxhZ3MgID0gRkxBR19FVEhFUiB8IEZMQUdfRlJBTUlOR19BWCxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYzoxODUxOlx0LnJ4X2ZpeHVwID0gYXg4ODE3OV9yeF9maXh1cCxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYy0xODUyLVx0LnR4X2ZpeHVwID0gYXg4ODE3OV90eF9maXh1cCxcbi0tXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmM9MTg1NT1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIGF0X3VtYzIwMF9pbmZvID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYy0xODYzLVx0LmZsYWdzICA9IEZMQUdfRVRIRVIgfCBGTEFHX0ZSQU1JTkdfQVgsXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmM6MTg2NDpcdC5yeF9maXh1cCA9IGF4ODgxNzlfcnhfZml4dXAsXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMtMTg2NS1cdC50eF9maXh1cCA9IGF4ODgxNzlfdHhfZml4dXAsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jPTE4Njg9c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mbyBhdF91bWMyMDAwc3BfaW5mbyA9IHtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMtMTg3Ni1cdC5mbGFncyAgPSBGTEFHX0VUSEVSIHwgRkxBR19GUkFNSU5HX0FYLFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jOjE4Nzc6XHQucnhfZml4dXAgPSBheDg4MTc5X3J4X2ZpeHVwLFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jLTE4NzgtXHQudHhfZml4dXAgPSBheDg4MTc5X3R4X2ZpeHVwLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfZWVtLmM9ODk9c3RhdGljIHN0cnVjdCBza19idWZmICplZW1fdHhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfZWVtLmMtMTUzLVxuZHJpdmVycy9uZXQvdXNiL2NkY19lZW0uYzoxNTQ6c3RhdGljIGludCBlZW1fcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvdXNiL2NkY19lZW0uYy0xNTUte1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfZWVtLmM9MzMwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gZWVtX2luZm8gPSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19lZW0uYy0zMzMtXHQuYmluZCA9XHRcdGVlbV9iaW5kLFxuZHJpdmVycy9uZXQvdXNiL2NkY19lZW0uYzozMzQ6XHQucnhfZml4dXAgPVx0ZWVtX3J4X2ZpeHVwLFxuZHJpdmVycy9uZXQvdXNiL2NkY19lZW0uYy0zMzUtXHQudHhfZml4dXAgPVx0ZWVtX3R4X2ZpeHVwLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYz00NzI9c3RhdGljIGludCB1c2JuZXRfY2RjX3p0ZV9iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jLTQ4OC0gKi9cbmRyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYzo0ODk6aW50IHVzYm5ldF9jZGNfenRlX3J4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYy00OTAte1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYy00OTgtfVxuZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jOjQ5OTpFWFBPUlRfU1lNQk9MX0dQTCh1c2JuZXRfY2RjX3p0ZV9yeF9maXh1cCk7XG5kcml2ZXJzL25ldC91c2IvY2RjX2V0aGVyLmMtNTAwLVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYz01NTE9c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mb1x0enRlX2NkY19pbmZvID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYy01NTgtXHQubWFuYWdlX3Bvd2VyID1cdHVzYm5ldF9tYW5hZ2VfcG93ZXIsXG5kcml2ZXJzL25ldC91c2IvY2RjX2V0aGVyLmM6NTU5Olx0LnJ4X2ZpeHVwID0gdXNibmV0X2NkY196dGVfcnhfZml4dXAsXG5kcml2ZXJzL25ldC91c2IvY2RjX2V0aGVyLmMtNTYwLX07XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM9MzY2PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqY2RjX21iaW1fcHJvY2Vzc19kZ3JhbShzdHJ1Y3QgdXNibmV0ICpkZXYsIHU4ICpidWYsIHNpemVfdCBsZW4sIHUxNiB0Y2kpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtNDExLVxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM6NDEyOnN0YXRpYyBpbnQgY2RjX21iaW1fcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiX2luKVxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtNDEzLXtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYz01NTM9c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mbyBjZGNfbWJpbV9pbmZvID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTU1OC1cdC5tYW5hZ2VfcG93ZXIgPSBjZGNfbWJpbV9tYW5hZ2VfcG93ZXIsXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYzo1NTk6XHQucnhfZml4dXAgPSBjZGNfbWJpbV9yeF9maXh1cCxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTU2MC1cdC50eF9maXh1cCA9IGNkY19tYmltX3R4X2ZpeHVwLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jPTU3Nz1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIGNkY19tYmltX2luZm9femxwID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTU4Mi1cdC5tYW5hZ2VfcG93ZXIgPSBjZGNfbWJpbV9tYW5hZ2VfcG93ZXIsXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYzo1ODM6XHQucnhfZml4dXAgPSBjZGNfbWJpbV9yeF9maXh1cCxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTU4NC1cdC50eF9maXh1cCA9IGNkY19tYmltX3R4X2ZpeHVwLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jPTU5Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIGNkY19tYmltX2luZm9fbmRwX3RvX2VuZCA9IHtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy02MDEtXHQubWFuYWdlX3Bvd2VyID0gY2RjX21iaW1fbWFuYWdlX3Bvd2VyLFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM6NjAyOlx0LnJ4X2ZpeHVwID0gY2RjX21iaW1fcnhfZml4dXAsXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy02MDMtXHQudHhfZml4dXAgPSBjZGNfbWJpbV90eF9maXh1cCxcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYz02MTE9c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mbyBjZGNfbWJpbV9pbmZvX2F2b2lkX2FsdHNldHRpbmdfdG9nZ2xlID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTYxNi1cdC5tYW5hZ2VfcG93ZXIgPSBjZGNfbWJpbV9tYW5hZ2VfcG93ZXIsXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYzo2MTc6XHQucnhfZml4dXAgPSBjZGNfbWJpbV9yeF9maXh1cCxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTYxOC1cdC50eF9maXh1cCA9IGNkY19tYmltX3R4X2ZpeHVwLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM9MTcyNT1FWFBPUlRfU1lNQk9MX0dQTChjZGNfbmNtX3J4X3ZlcmlmeV9uZHAzMik7XG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTE3MjYtXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jOjE3Mjc6aW50IGNkY19uY21fcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiX2luKVxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0xNzI4LXtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTE4NDgtfVxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYzoxODQ5OkVYUE9SVF9TWU1CT0xfR1BMKGNkY19uY21fcnhfZml4dXApO1xuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0xODUwLVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM9MTkxNT1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIGNkY19uY21faW5mbyA9IHtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTE5MjItXHQuc3RhdHVzID0gY2RjX25jbV9zdGF0dXMsXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jOjE5MjM6XHQucnhfZml4dXAgPSBjZGNfbmNtX3J4X2ZpeHVwLFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0xOTI0LVx0LnR4X2ZpeHVwID0gY2RjX25jbV90eF9maXh1cCxcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jPTE5Mjk9c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mbyBjZGNfbmNtX3pscF9pbmZvID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMTkzNi1cdC5zdGF0dXMgPSBjZGNfbmNtX3N0YXR1cyxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM6MTkzNzpcdC5yeF9maXh1cCA9IGNkY19uY21fcnhfZml4dXAsXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTE5MzgtXHQudHhfZml4dXAgPSBjZGNfbmNtX3R4X2ZpeHVwLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM9MTk0Mz1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIGFwcGxlX3RldGhlcmluZ19pbnRlcmZhY2VfaW5mbyA9IHtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTE5NTAtXHQuc3RhdHVzID0gY2RjX25jbV9zdGF0dXMsXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jOjE5NTE6XHQucnhfZml4dXAgPSBjZGNfbmNtX3J4X2ZpeHVwLFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0xOTUyLVx0LnR4X2ZpeHVwID0gY2RjX25jbV90eF9maXh1cCxcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jPTE5NTc9c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mbyBhcHBsZV9wcml2YXRlX2ludGVyZmFjZV9pbmZvID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMTk2NC1cdC5zdGF0dXMgPSBjZGNfbmNtX3N0YXR1cyxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM6MTk2NTpcdC5yeF9maXh1cCA9IGNkY19uY21fcnhfZml4dXAsXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTE5NjYtXHQudHhfZml4dXAgPSBjZGNfbmNtX3R4X2ZpeHVwLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM9MTk3MT1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIHd3YW5faW5mbyA9IHtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTE5NzgtXHQuc3RhdHVzID0gY2RjX25jbV9zdGF0dXMsXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jOjE5Nzk6XHQucnhfZml4dXAgPSBjZGNfbmNtX3J4X2ZpeHVwLFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0xOTgwLVx0LnR4X2ZpeHVwID0gY2RjX25jbV90eF9maXh1cCxcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jPTE5ODU9c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mbyB3d2FuX25vYXJwX2luZm8gPSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0xOTkyLVx0LnN0YXR1cyA9IGNkY19uY21fc3RhdHVzLFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYzoxOTkzOlx0LnJ4X2ZpeHVwID0gY2RjX25jbV9yeF9maXh1cCxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMTk5NC1cdC50eF9maXh1cCA9IGNkY19uY21fdHhfZml4dXAsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2NoOTIwMC5jPTI0OD1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmNoOTIwMF90eF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2NoOTIwMC5jLTI4OC1cbmRyaXZlcnMvbmV0L3VzYi9jaDkyMDAuYzoyODk6c3RhdGljIGludCBjaDkyMDBfcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvdXNiL2NoOTIwMC5jLTI5MC17XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NoOTIwMC5jPTM5Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIGNoOTIwMF9pbmZvID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jaDkyMDAuYy0zOTktXHQuYmluZCA9IGNoOTIwMF9iaW5kLFxuZHJpdmVycy9uZXQvdXNiL2NoOTIwMC5jOjQwMDpcdC5yeF9maXh1cCA9IGNoOTIwMF9yeF9maXh1cCxcbmRyaXZlcnMvbmV0L3VzYi9jaDkyMDAuYy00MDEtXHQudHhfZml4dXAgPSBjaDkyMDBfdHhfZml4dXAsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM9MjI2PXN0YXRpYyB2b2lkIGN4ODIzMTBfdW5iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMjQyLSAqL1xuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MjQzOnN0YXRpYyBpbnQgY3g4MjMxMF9yeF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0yNDQte1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jPTMzNT1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvXHRjeDgyMzEwX2luZm8gPSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMzM5LVx0LnVuYmluZFx0XHQ9IGN4ODIzMTBfdW5iaW5kLFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MzQwOlx0LnJ4X2ZpeHVwXHQ9IGN4ODIzMTBfcnhfZml4dXAsXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0zNDEtXHQudHhfZml4dXBcdD0gY3g4MjMxMF90eF9maXh1cCxcbi0tXG5kcml2ZXJzL25ldC91c2IvZG05NjAxLmM9MzM4PXN0YXRpYyBpbnQgZG05NjAxX2JpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC91c2IvZG05NjAxLmMtNDIwLVxuZHJpdmVycy9uZXQvdXNiL2RtOTYwMS5jOjQyMTpzdGF0aWMgaW50IGRtOTYwMV9yeF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC91c2IvZG05NjAxLmMtNDIyLXtcbi0tXG5kcml2ZXJzL25ldC91c2IvZG05NjAxLmM9NTQ1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gZG05NjAxX2luZm8gPSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2RtOTYwMS5jLTU0OC1cdC5iaW5kXHRcdD0gZG05NjAxX2JpbmQsXG5kcml2ZXJzL25ldC91c2IvZG05NjAxLmM6NTQ5Olx0LnJ4X2ZpeHVwXHQ9IGRtOTYwMV9yeF9maXh1cCxcbmRyaXZlcnMvbmV0L3VzYi9kbTk2MDEuYy01NTAtXHQudHhfZml4dXBcdD0gZG05NjAxX3R4X2ZpeHVwLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9nbDYyMGEuYz02Mj1zdHJ1Y3QgZ2xfaGVhZGVyIHtcbi0tXG5kcml2ZXJzL25ldC91c2IvZ2w2MjBhLmMtNjYtXG5kcml2ZXJzL25ldC91c2IvZ2w2MjBhLmM6Njc6c3RhdGljIGludCBnZW5lbGlua19yeF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC91c2IvZ2w2MjBhLmMtNjgte1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9nbDYyMGEuYz0xODU9c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mb1x0Z2VuZWxpbmtfaW5mbyA9IHtcbi0tXG5kcml2ZXJzL25ldC91c2IvZ2w2MjBhLmMtMTg4LVx0LmJpbmQgPVx0XHRnZW5lbGlua19iaW5kLFxuZHJpdmVycy9uZXQvdXNiL2dsNjIwYS5jOjE4OTpcdC5yeF9maXh1cCA9XHRnZW5lbGlua19yeF9maXh1cCxcbmRyaXZlcnMvbmV0L3VzYi9nbDYyMGEuYy0xOTAtXHQudHhfZml4dXAgPVx0Z2VuZWxpbmtfdHhfZml4dXAsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2h1YXdlaV9jZGNfbmNtLmM9MTgyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gaHVhd2VpX2NkY19uY21faW5mbyA9IHtcbi0tXG5kcml2ZXJzL25ldC91c2IvaHVhd2VpX2NkY19uY20uYy0xODctXHQubWFuYWdlX3Bvd2VyID0gaHVhd2VpX2NkY19uY21fbWFuYWdlX3Bvd2VyLFxuZHJpdmVycy9uZXQvdXNiL2h1YXdlaV9jZGNfbmNtLmM6MTg4Olx0LnJ4X2ZpeHVwID0gY2RjX25jbV9yeF9maXh1cCxcbmRyaXZlcnMvbmV0L3VzYi9odWF3ZWlfY2RjX25jbS5jLTE4OS1cdC50eF9maXh1cCA9IGNkY19uY21fdHhfZml4dXAsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2ludDUxeDEuYy0yNi1cbmRyaXZlcnMvbmV0L3VzYi9pbnQ1MXgxLmM6Mjc6c3RhdGljIGludCBpbnQ1MXgxX3J4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3VzYi9pbnQ1MXgxLmMtMjgte1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9pbnQ1MXgxLmM9MTIyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gaW50NTF4MV9pbmZvID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9pbnQ1MXgxLmMtMTI0LVx0LmJpbmQgICAgICAgID0gaW50NTF4MV9iaW5kLFxuZHJpdmVycy9uZXQvdXNiL2ludDUxeDEuYzoxMjU6XHQucnhfZml4dXAgICAgPSBpbnQ1MXgxX3J4X2ZpeHVwLFxuZHJpdmVycy9uZXQvdXNiL2ludDUxeDEuYy0xMjYtXHQudHhfZml4dXAgICAgPSBpbnQ1MXgxX3R4X2ZpeHVwLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9rYWxtaWEuYz0yMjk9c3RhdGljIGludFxuZHJpdmVycy9uZXQvdXNiL2thbG1pYS5jOjIzMDprYWxtaWFfcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvdXNiL2thbG1pYS5jLTIzMS17XG4tLVxuZHJpdmVycy9uZXQvdXNiL2thbG1pYS5jPTM0MD1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIGthbG1pYV9pbmZvID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9rYWxtaWEuYy0zNDMtXHQuYmluZCA9IGthbG1pYV9iaW5kLFxuZHJpdmVycy9uZXQvdXNiL2thbG1pYS5jOjM0NDpcdC5yeF9maXh1cCA9IGthbG1pYV9yeF9maXh1cCxcbmRyaXZlcnMvbmV0L3VzYi9rYWxtaWEuYy0zNDUtXHQudHhfZml4dXAgPSBrYWxtaWFfdHhfZml4dXBcbi0tXG5kcml2ZXJzL25ldC91c2IvbGctdmw2MDAuYz04Nj1zdGF0aWMgdm9pZCB2bDYwMF91bmJpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC91c2IvbGctdmw2MDAuYy05NS1cbmRyaXZlcnMvbmV0L3VzYi9sZy12bDYwMC5jOjk2OnN0YXRpYyBpbnQgdmw2MDBfcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvdXNiL2xnLXZsNjAwLmMtOTcte1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9sZy12bDYwMC5jPTMwMT1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvXHR2bDYwMF9pbmZvID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9sZy12bDYwMC5jLTMwNi1cdC5zdGF0dXNcdFx0PSB1c2JuZXRfY2RjX3N0YXR1cyxcbmRyaXZlcnMvbmV0L3VzYi9sZy12bDYwMC5jOjMwNzpcdC5yeF9maXh1cFx0PSB2bDYwMF9yeF9maXh1cCxcbmRyaXZlcnMvbmV0L3VzYi9sZy12bDYwMC5jLTMwOC1cdC50eF9maXh1cFx0PSB2bDYwMF90eF9maXh1cCxcbi0tXG5kcml2ZXJzL25ldC91c2IvbWNzNzgzMC5jPTQ3MD1zdGF0aWMgaW50IG1jczc4MzBfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9tY3M3ODMwLmMtNTExLS8qIFRoZSBjaGlwIGFsd2F5cyBhcHBlbmRzIGEgc3RhdHVzIGJ5dGUgdGhhdCB3ZSBuZWVkIHRvIHN0cmlwICovXG5kcml2ZXJzL25ldC91c2IvbWNzNzgzMC5jOjUxMjpzdGF0aWMgaW50IG1jczc4MzBfcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvdXNiL21jczc4MzAuYy01MTMte1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9tY3M3ODMwLmM9NTYxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gbW9zY2hpcF9pbmZvID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9tY3M3ODMwLmMtNTYzLVx0LmJpbmRcdFx0PSBtY3M3ODMwX2JpbmQsXG5kcml2ZXJzL25ldC91c2IvbWNzNzgzMC5jOjU2NDpcdC5yeF9maXh1cFx0PSBtY3M3ODMwX3J4X2ZpeHVwLFxuZHJpdmVycy9uZXQvdXNiL21jczc4MzAuYy01NjUtXHQuZmxhZ3NcdFx0PSBGTEFHX0VUSEVSIHwgRkxBR19MSU5LX0lOVFIsXG4tLVxuZHJpdmVycy9uZXQvdXNiL21jczc4MzAuYz01NzE9c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mbyBzaXRlY29tX2luZm8gPSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL21jczc4MzAuYy01NzMtXHQuYmluZFx0XHQ9IG1jczc4MzBfYmluZCxcbmRyaXZlcnMvbmV0L3VzYi9tY3M3ODMwLmM6NTc0Olx0LnJ4X2ZpeHVwXHQ9IG1jczc4MzBfcnhfZml4dXAsXG5kcml2ZXJzL25ldC91c2IvbWNzNzgzMC5jLTU3NS1cdC5mbGFnc1x0XHQ9IEZMQUdfRVRIRVIgfCBGTEFHX0xJTktfSU5UUixcbi0tXG5kcml2ZXJzL25ldC91c2IvbmV0MTA4MC5jPTMyMT1zdGF0aWMgdm9pZCBuY19lbnN1cmVfc3luYyhzdHJ1Y3QgdXNibmV0ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL25ldDEwODAuYy0zMzgtXG5kcml2ZXJzL25ldC91c2IvbmV0MTA4MC5jOjMzOTpzdGF0aWMgaW50IG5ldDEwODBfcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvdXNiL25ldDEwODAuYy0zNDAte1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9uZXQxMDgwLmM9NDg2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm9cdG5ldDEwODBfaW5mbyA9IHtcbi0tXG5kcml2ZXJzL25ldC91c2IvbmV0MTA4MC5jLTQ5MS1cdC5jaGVja19jb25uZWN0ID0gbmV0MTA4MF9jaGVja19jb25uZWN0LFxuZHJpdmVycy9uZXQvdXNiL25ldDEwODAuYzo0OTI6XHQucnhfZml4dXAgPVx0bmV0MTA4MF9yeF9maXh1cCxcbmRyaXZlcnMvbmV0L3VzYi9uZXQxMDgwLmMtNDkzLVx0LnR4X2ZpeHVwID1cdG5ldDEwODBfdHhfZml4dXAsXG4tLVxuZHJpdmVycy9uZXQvdXNiL3BlZ2FzdXMuYz00NTc9c3RhdGljIHZvaWQgcmVhZF9idWxrX2NhbGxiYWNrKHN0cnVjdCB1cmIgKnVyYilcbi0tXG5kcml2ZXJzL25ldC91c2IvcGVnYXN1cy5jLTU2Ni1cbmRyaXZlcnMvbmV0L3VzYi9wZWdhc3VzLmM6NTY3OnN0YXRpYyB2b2lkIHJ4X2ZpeHVwKHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdClcbmRyaXZlcnMvbmV0L3VzYi9wZWdhc3VzLmMtNTY4LXtcbi0tXG5kcml2ZXJzL25ldC91c2IvcGVnYXN1cy5jPTExNDI9c3RhdGljIGludCBwZWdhc3VzX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9wZWdhc3VzLmMtMTE4MC1cbmRyaXZlcnMvbmV0L3VzYi9wZWdhc3VzLmM6MTE4MTpcdHRhc2tsZXRfc2V0dXAoXHUwMDI2cGVnYXN1cy1cdTAwM2VyeF90bCwgcnhfZml4dXApO1xuZHJpdmVycy9uZXQvdXNiL3BlZ2FzdXMuYy0xMTgyLVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTE1Nz1zdGF0aWMgYm9vbCBxbWltdXhfaGFzX3NsYXZlcyhzdHJ1Y3QgdXNibmV0ICpkZXYpXG4tLVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAxOjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1NTMwCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKk5hdmlnYXRpbmcgdGhlIGB1c2JuZXQuY2AgU291cmNlKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByb2xlIGFuZCB1c2FnZSBvZiB0aGUgYHJ4X2ZpeHVwYCBmdW5jdGlvbiB3aXRoaW4gYHVzYm5ldC5jYC4gTXkgZmlyc3Qgc3RlcCBpcyB0byB0cmFjZSB3aGVyZSBpdCYjMzk7cyBhY3R1YWxseSAqY2FsbGVkKiB3aXRoaW4gdGhhdCBmaWxlLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgc2NhbiB0aHJvdWdoIHRoZSBjb2RlLCBsb29raW5nIGZvciBkaXJlY3QgaW52b2NhdGlvbnMgb2YgYHJ4X2ZpeHVwYC4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGdvb2Qgb3ZlcnZpZXcgb2YgdGhlIGNvbnRleHRzIGluIHdoaWNoIHRoaXMgZnVuY3Rpb24gaXMgcmVsZXZhbnQg4oCTIHdoaWNoIHBhcnRzIG9mIHRoZSBVU0IgbmV0d29yayBkcml2ZXIgYXJlIGludGVyYWN0aW5nIHdpdGggaXQuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGNsdWVzIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlIHJlZ2FyZGluZyB0aGUgbmF0dXJlIG9mIHRoZSBkYXRhIGJlaW5nIHByb2Nlc3NlZCBhbmQgdGhlIHN0YWdlIG9mIHRoZSByZWNlaXZlIHByb2Nlc3MgaW4gd2hpY2ggYHJ4X2ZpeHVwYCBpcyBpbnZvbHZlZC4gVW5kZXJzdGFuZGluZyB0aGUgY2FsbCBzaXRlcyBpcyBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgcHVycG9zZSBvZiB0aGlzIGZ1bmN0aW9uIGFuZCBpdHMgaW50ZW5kZWQgdXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyeF9maXh1cCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi91c2JuZXQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvdXNibmV0LmM9MzEyPXN0YXRpYyB2b2lkIF9fdXNibmV0X3N0YXR1c19zdG9wX2ZvcmNlKHN0cnVjdCB1c2JuZXQgKmRldilcbi0tXG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmMtMzIyLS8qIFBhc3NlcyB0aGlzIHBhY2tldCB1cCB0aGUgc3RhY2ssIHVwZGF0aW5nIGl0cyBhY2NvdW50aW5nLlxuZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jOjMyMzogKiBTb21lIGxpbmsgcHJvdG9jb2xzIGJhdGNoIHBhY2tldHMsIHNvIHRoZWlyIHJ4X2ZpeHVwIHBhdGhzXG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmMtMzI0LSAqIGNhbiByZXR1cm4gY2xvbmVzIGFzIHdlbGwgYXMganVzdCBtb2RpZnkgdGhlIG9yaWdpbmFsIHNrYi5cbi0tXG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmM9MzI2PXZvaWQgdXNibmV0X3NrYl9yZXR1cm4oc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYy0zMzYtXG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmM6MzM3Olx0Lyogb25seSB1cGRhdGUgaWYgdW5zZXQgdG8gYWxsb3cgbWluaWRyaXZlciByeF9maXh1cCBvdmVycmlkZSAqL1xuZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jLTMzOC1cdGlmIChza2ItXHUwMDNlcHJvdG9jb2wgPT0gMClcbi0tXG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmM9NTY5PXN0YXRpYyBpbmxpbmUgaW50IHJ4X3Byb2Nlc3Moc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jLTU3MC17XG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmM6NTcxOlx0aWYgKGRldi1cdTAwM2Vkcml2ZXJfaW5mby1cdTAwM2VyeF9maXh1cCBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYzo1NzI6XHQgICAgIWRldi1cdTAwM2Vkcml2ZXJfaW5mby1cdTAwM2VyeF9maXh1cChkZXYsIHNrYikpIHtcbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYzo1NzM6XHRcdC8qIFdpdGggUlhfQVNTRU1CTEUsIHJ4X2ZpeHVwKCkgbXVzdCB1cGRhdGUgY291bnRlcnMgKi9cbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYy01NzQtXHRcdGlmICghKGRldi1cdTAwM2Vkcml2ZXJfaW5mby1cdTAwM2VmbGFncyBcdTAwMjYgRkxBR19SWF9BU1NFTUJMRSkpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAxOjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2MjA2CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNDg5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQ29uZXhhbnQgQ1g4MjMxMCBVU0IgRXRoZXJuZXQgRHJpdmVyJiMzOTtzIFJYIFBhdGgqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gVGhlIGByeF9wcm9jZXNzYCBmdW5jdGlvbiB3aXRoaW4gYGRyaXZlcnMvbmV0L3VzYi91c2JuZXQuY2AgaXMgdGhlIGtleSDigJMgaXQgY2FsbHMgYGRldi0mZ3Q7ZHJpdmVyX2luZm8tJmd0O3J4X2ZpeHVwKGRldiwgc2tiKWAuIFRoZSBtb2RpZmljYXRpb24gSSYjMzk7bSBpbnRlcmVzdGVkIGluIGlzIGBjeDgyMzEwX3J4X2ZpeHVwYCwgd2hpY2ggcmVzaWRlcyBpbiBgY3g4MjMxMF9ldGguY2AuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gZGV0ZXJtaW5lIGhvdyBhY2Nlc3NpYmxlIGBjeDgyMzEwX3J4X2ZpeHVwYCBpczogaXMgaXQgYW4gZW50cnkgcG9pbnQsIGFuIGV4cG9ydGVkIHN5bWJvbCwgbm9uLXN0YXRpYywgb3IgaXMgaXQgc3RhdGljPwoKQSBxdWljayBjaGVjayBjb25maXJtcyBpdCYjMzk7cyBkZWNsYXJlZCBhcyBgc3RhdGljIGludCBjeDgyMzEwX3J4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilgLiBTbywgaXQmIzM5O3MgKnN1cHBvc2VkKiB0byBiZSBsaW1pdGVkIGluIHNjb3BlLiBCdXQgdGhlIGNydWNpYWwgcXVlc3Rpb24gaXMgd2hldGhlciBpdHMgYWRkcmVzcyBpcyB0YWtlbiBhbnl3aGVyZS4gQWgsIGhlcmUgaXQgaXM6IGBjeDgyMzEwX3J4X2ZpeHVwYCAqaXMqIHBhc3NlZCBieSBwb2ludGVyIHRvIGBjeDgyMzEwX2luZm9gLgoKYGBgYwpzdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvCWN4ODIzMTBfaW5mbyA9IHsKCS5kZXNjcmlwdGlvbgk9ICYjMzQ7Q29uZXhhbnQgQ1g4MjMxMCBVU0IgZXRoZXJuZXQmIzM0OywKCS5mbGFncwkJPSBGTEFHX0VUSEVSLAoJLmJpbmQJCT0gY3g4MjMxMF9iaW5kLAoJLnVuYmluZAkJPSBjeDgyMzEwX3VuYmluZCwKCS5yeF9maXh1cAk9IGN4ODIzMTBfcnhfZml4dXAsCgkudHhfZml4dXAJPSBjeDgyMzEwX3R4X2ZpeHVwLAp9OwpgYGAKCkJlY2F1c2UgaXRzIGFkZHJlc3MgaXMgYXNzaWduZWQgdG8gYGN4ODIzMTBfaW5mby5yeF9maXh1cGAsIHRoZSBjb21waWxlciAqY2Fubm90KiBpbmxpbmUgYGN4ODIzMTBfcnhfZml4dXBgIGludG8gYW55IGNhbGxlci4gU2luY2UgYHJ4X3Byb2Nlc3NgIGluIGB1c2JuZXQuY2AgY2FsbHMgaXQgdGhyb3VnaCBhIGZ1bmN0aW9uIHBvaW50ZXIsIHRoZSBgY3g4MjMxMF9yeF9maXh1cGAgd2lsbCBuZWNlc3NhcmlseSBleGlzdCBhcyBhIGRpc3RpbmN0IGZ1bmN0aW9uIHN5bWJvbCBpbiB0aGUgb2JqZWN0IGZpbGUuIFRoYXQmIzM5O3MgZ29vZCB0byBrbm93IGZvciBmdXJ0aGVyIGFuYWx5c2lzLgoKV2hpbGUgSSYjMzk7bSBoZXJlLCBJIHNob3VsZCB0YWtlIGEgbG9vayBhdCB0aGUgb3RoZXIgc3ltYm9scyBpbiBgY3g4MjMxMF9ldGguY2AgYW5kIGNoZWNrIG91dCB0aGUgZnVuY3Rpb25zIGBjeDgyMzEwX3JlZW5hYmxlX3dvcmtgIGFuZCBgY3g4MjMxMF9iaW5kYC4gSnVzdCBjb3ZlcmluZyBhbGwgdGhlIGJhc2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtec3RhdGljICYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jPTQzPXN0cnVjdCBjeDgyMzEwX3ByaXYge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTUzLSAqL1xuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6NTQ6c3RhdGljIGludCBjeDgyMzEwX2NtZChzdHJ1Y3QgdXNibmV0ICpkZXYsIGVudW0gY3g4MjMxMF9jbWQgY21kLCBib29sIHJlcGx5LFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtNTUtXHRcdCAgICAgICB1OCAqd2RhdGEsIGludCB3bGVuLCB1OCAqcmRhdGEsIGludCBybGVuKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTExOS1cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjEyMDpzdGF0aWMgaW50IGN4ODIzMTBfZW5hYmxlX2V0aGVybmV0KHN0cnVjdCB1c2JuZXQgKmRldilcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTEyMS17XG4tLVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMTI5LVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MTMwOnN0YXRpYyB2b2lkIGN4ODIzMTBfcmVlbmFibGVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0xMzEte1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTE0MC1cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjE0MTpzdGF0aWMgaW50IGN4ODIzMTBfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMTQyLXtcbi0tXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0yMjUtXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzoyMjY6c3RhdGljIHZvaWQgY3g4MjMxMF91bmJpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTIyNy17XG4tLVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMjQyLSAqL1xuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MjQzOnN0YXRpYyBpbnQgY3g4MjMxMF9yeF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0yNDQte1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTMxNi0vKiBUWCBpcyBlYXN5LCBqdXN0IGFkZCAyIGJ5dGVzIG9mIGxlbmd0aCBhdCB0aGUgYmVnaW5uaW5nICovXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzozMTc6c3RhdGljIHN0cnVjdCBza19idWZmICpjeDgyMzEwX3R4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTMxOC1cdFx0XHRcdCAgICAgICBnZnBfdCBmbGFncylcbi0tXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0zMzQtXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzozMzU6c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mb1x0Y3g4MjMxMF9pbmZvID0ge1xuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMzM2LVx0LmRlc2NyaXB0aW9uXHQ9IFwmIzM0O0NvbmV4YW50IENYODIzMTAgVVNCIGV0aGVybmV0XCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTM1Mi1cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjM1MzpzdGF0aWMgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgcHJvZHVjdHNbXSA9IHtcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTM1NC1cdHtcbi0tXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYz0zNjA9TU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIHByb2R1Y3RzKTtcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTM2MS1cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjM2MjpzdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgY3g4MjMxMF9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0zNjMtXHQubmFtZVx0XHQ9IFwmIzM0O2N4ODIzMTBfZXRoXCYjMzQ7LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMToxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODM0MwoJCQkJCQkJb3V0cHV0OiAxODAKCQkJCQkJCXRob3VnaHRzOiA5MjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgdGhlIENYODIzMTAgRXRoZXJuZXQgRHJpdmVyIGZvciBGdXp6aW5nKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGZvY3VzIGlzIG9uIHByZXBhcmluZyB0aGlzIGRyaXZlciBmb3IgZnV6emluZy4gRmlyc3QsIEkgbmVlZCB0byBpZGVudGlmeSB0aGUga2V5IGFyZWFzIGFuZCBjb25maWd1cmF0aW9ucy4gSSYjMzk7bSBzdGFydGluZyB3aXRoIGBtb2R1bGVfdXNiX2RyaXZlcihjeDgyMzEwX2RyaXZlcilgIGluIGBjeDgyMzEwX2V0aC5jYC4gVGhlIGBjeDgyMzEwX2RyaXZlcmAgc3RydWN0dXJlIGlzIGNyaXRpY2FsIGhlcmUuIEl0JiMzOTtzIHJlZ2lzdGVyZWQgYW5kIGluY2x1ZGVzIHN0YW5kYXJkIFVTQiBkcml2ZXIgb3BlcmF0aW9uczogcHJvYmUsIGRpc2Nvbm5lY3QsIHN1c3BlbmQsIGFuZCByZXN1bWUsIGFsbCBoYW5kbGVkIHRocm91Z2ggYHVzYm5ldGAgZnVuY3Rpb25zLiBTcGVjaWZpY2FsbHksIHRoZSBtb2RpZmllZCBmdW5jdGlvbiBgY3g4MjMxMF9yeF9maXh1cGAgaXMgaW1wb3J0YW50LiBUaGlzIHN1Z2dlc3RzIGEgcG90ZW50aWFsIGFyZWEgZm9yIGZ1enppbmcuCgpOb3csIGxldCYjMzk7cyB2ZXJpZnkgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSSYjMzk7dmUgY29uZmlybWVkIHRoYXQgYFVTQl9ORVRfQ1g4MjMxMF9FVEhgIGluIGBkcml2ZXJzL25ldC91c2IvS2NvbmZpZ2AgZGVwZW5kcyBvbiBgVVNCX1VTQk5FVGAuIEZ1cnRoZXJtb3JlLCBgVVNCX1VTQk5FVGAgZGVwZW5kcyBvbiBgTUlJYCBhbmQgYFVTQl9ORVRfRFJJVkVSU2AuIGBVU0JfTkVUX0RSSVZFUlNgIGluIHR1cm4gZGVwZW5kcyBvbiBgVVNCYCBhbmQgYE5FVGAuIFRoZXJlZm9yZSwgdG8gYnVpbGQgdGhlIGRyaXZlciwgSSYjMzk7bGwgbmVlZCBgVVNCX05FVF9DWDgyMzEwX0VUSGAgYW5kIGBVU0JfVVNCTkVUYCAob3IganVzdCBgVVNCX05FVF9DWDgyMzEwX0VUSGAsIHNpbmNlIHRoZSBsYXR0ZXIgaXMgaW1wbGllZCkuIEkmIzM5O2xsIGFkZCB0aGVzZSB0byB0aGUgYEVuYWJsZUNvbmZpZ3NgIGxpc3QuCgpMb29raW5nIGF0IGBkcml2ZXJzL25ldC91c2IvTWFrZWZpbGVgLCB0aGUgb2JqZWN0IGZpbGUgYGN4ODIzMTBfZXRoLm9gIGlzIGJ1aWx0IGlmIGBDT05GSUdfVVNCX05FVF9DWDgyMzEwX0VUSGAgaXMgZW5hYmxlZCwgYW5kIGB1c2JuZXQub2AgaWYgYENPTkZJR19VU0JfVVNCTkVUYCBpcyBlbmFibGVkLgoKSW4gdGVybXMgb2YgZnV6emluZywgdGhlIGd1aWRhbmNlIHNheXMgdG8gaWRlbnRpZnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucywgcHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucy4gU2luY2UgYGN4ODIzMTBfcnhfZml4dXBgIGlzIGNhbGxlZCB0aHJvdWdoIGEgZnVuY3Rpb24gcG9pbnRlciwgaXQgaXMgaW5kZWVkIGFuIGFwcHJvcHJpYXRlIGZ1bmN0aW9uIHRvIGZvY3VzIG9uLiBTbywgSSB3aWxsIGluY2x1ZGUgYCYjMzQ7Y3g4MjMxMF9yeF9maXh1cCYjMzQ7YCBpbiB0aGUgYEZvY3VzU3ltYm9sc2AgbGlzdC4KCkZpbmFsbHksIEkmIzM5O2xsIG1ha2Ugc3VyZSBhbGwgdGhlIGd1aWRhbmNlIGlzIGZvbGxvd2VkLCBlc3BlY2lhbGx5IHRoZSBjYWxsIHRvIGBzZXQtcmVzdWx0c2AuIAoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VVNCX05FVF9DWDgyMzEwX0VUSCYjMzQ7LAogICAgJiMzNDtVU0JfVVNCTkVUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y3g4MjMxMF9yeF9maXh1cCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGZ1bmN0aW9uYWwgZmxvdyBidWcgaW4gdGhlIFJYIHBhY2tldCBwcm9jZXNzaW5nIGxvZ2ljIG9mIHRoZSBjeDgyMzEwX2V0aCBVU0IgbmV0d29yayBkcml2ZXIuIFByZXZpb3VzbHksIHdoZW4gYW4gUlggcGFja2V0IGhhZCBsZW5ndGggMHhmZmZmIChzaWduYWxpbmcgcm91dGVyIHJlYm9vdCksIHRoZSBmdW5jdGlvbiBzY2hlZHVsZWQgYSByZS1lbmFibGUgd29ya2VyIGJ1dCBmZWxsIHRocm91Z2ggaW50byBwYXJ0aWFsIHBhY2tldCBoYW5kbGluZywgd2hpY2ggY291bGQgbGVhZCB0byBtYWxmb3JtZWQgcGFja2V0IHByb2Nlc3Npbmcgb3Igb3V0LW9mLWJvdW5kcy9vdmVyZmxvdyBpc3N1ZXMuIFRoZSBwYXRjaCByZXR1cm5zIDAgdG8gcHJvcGVybHkgZHJvcCB0aGUgcGFja2V0LiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBVU0IgZW11bGF0aW9uL2Z1enppbmcgKGUuZy4gUmF3IEdhZGdldCAvIGR1bW15X2hjZCkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTQl9ORVRfQ1g4MjMxMF9FVEgmIzM0OywKICAgICYjMzQ7VVNCX1VTQk5FVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2N4ODIzMTBfcnhfZml4dXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBmdW5jdGlvbmFsIGZsb3cgYnVnIGluIHRoZSBSWCBwYWNrZXQgcHJvY2Vzc2luZyBsb2dpYyBvZiB0aGUgY3g4MjMxMF9ldGggVVNCIG5ldHdvcmsgZHJpdmVyLiBQcmV2aW91c2x5LCB3aGVuIGFuIFJYIHBhY2tldCBoYWQgbGVuZ3RoIDB4ZmZmZiAoc2lnbmFsaW5nIHJvdXRlciByZWJvb3QpLCB0aGUgZnVuY3Rpb24gc2NoZWR1bGVkIGEgcmUtZW5hYmxlIHdvcmtlciBidXQgZmVsbCB0aHJvdWdoIGludG8gcGFydGlhbCBwYWNrZXQgaGFuZGxpbmcsIHdoaWNoIGNvdWxkIGxlYWQgdG8gbWFsZm9ybWVkIHBhY2tldCBwcm9jZXNzaW5nIG9yIG91dC1vZi1ib3VuZHMvb3ZlcmZsb3cgaXNzdWVzLiBUaGUgcGF0Y2ggcmV0dXJucyAwIHRvIHByb3Blcmx5IGRyb3AgdGhlIHBhY2tldC4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgVVNCIGVtdWxhdGlvbi9mdXp6aW5nIChlLmcuIFJhdyBHYWRnZXQgLyBkdW1teV9oY2QpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMToxNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAxOjE3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhbiBlYXJseSAmIzM5O3JldHVybiAwOyYjMzk7IHdoZW4gJiMzOTtsZW4gPT0gMHhmZmZmJiMzOTsgaW4gY3g4MjMxMF9yeF9maXh1cCgpIHRvIGFib3J0IHByb2Nlc3Npbmcgd2hlbiB0aGUgcm91dGVyIHJlYm9vdHMgYW5kIHJlLWVuYWJsaW5nIHdvcmsgaXMgc2NoZWR1bGVkLiBQcmV2aW91c2x5LCBleGVjdXRpb24gZmVsbCB0aHJvdWdoIGludG8gcGFydGlhbCBwYWNrZXQgaGFuZGxpbmcsIHdoaWNoIGNvdWxkIGxlYWQgdG8gb3V0LW9mLWJvdW5kcyByZWFkcyBvbiBzdWJzZXF1ZW50IHBhY2tldHMuIFxuXG5UaGUgZml4IG9ubHkgbW9kaWZpZXMgY29udHJvbCBmbG93IHRvIGRpc2NhcmQgdGhlIHNrYiBhbmQgZG9lcyBub3QgYWxsb2NhdGUsIGluaXRpYWxpemUsIHJlYWQsIG9yIGNvcHkgYW55IHVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgb3Iga2VybmVsIHN0cnVjdHVyZXMgdG8gdXNlciBzcGFjZS4gQW55IG1lbW9yeSBzYWZldHkgaXNzdWVzIHByZXZlbnRlZCBvciB0b3VjaGVkIGJ5IHRoaXMgY29kZSBhcmUgb3V0LW9mLWJvdW5kcyBhY2Nlc3MgLyBpbnZhbGlkIHN0YXRlIGJ1Z3MgY2F1Z2h0IGJ5IEtBU0FOLCBub3QgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWVzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVlZGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBhN2Q2MWQ2NDBkNjdmMjRkYzllNjJlZDZiMTdlM2ZlMDZhYzg3NDZkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBTZXAgMyAwMToxNjoyNSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jIGIvZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMKaW5kZXggMDY4YWNiMDUyYWRiMC4uNWRmNjU3YWNmM2Q1NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMKQEAgLTI4Miw2ICYjNDM7MjgyLDcgQEAgc3RhdGljIGludCBjeDgyMzEwX3J4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAkJaWYgKGxlbiA9PSAweGZmZmYpIHsKIAkJCW5ldGRldl9pbmZvKGRldi0mZ3Q7bmV0LCAmIzM0O3JvdXRlciB3YXMgcmVib290ZWQsIHJlLWVuYWJsaW5nIGV0aGVybmV0IG1vZGUmIzM0Oyk7CiAJCQlzY2hlZHVsZV93b3JrKCZhbXA7cHJpdi0mZ3Q7cmVlbmFibGVfd29yayk7CiYjNDM7CQkJcmV0dXJuIDA7CiAJCX0gZWxzZSBpZiAobGVuICZndDsgQ1g4MjMxMF9NVFUpIHsKIAkJCW5ldGRldl9lcnIoZGV2LSZndDtuZXQsICYjMzQ7UlggcGFja2V0IHRvbyBsb25nOiAlZCBCXG4mIzM0OywgbGVuKTsKIAkJCXJldHVybiAwOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMDE6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjEzMAoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoYXQgc25pcHBldDoKCioqRGl2aW5nIGludG8gdGhlIGN4ODIzMTAgRXRoZXJuZXQgRHJpdmVyKioKCk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhpcyBwYXRjaC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB0aGUgYGRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jYCBmaWxlLiBUaGF0JiMzOTtzIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50LCB0aGUgY29yZSBvZiB0aGUgZHJpdmVyIGluIHF1ZXN0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIHVzZSBgcmVhZC1maWxlYCB0byBnZXQgdGhlIGNvbnRleHQgcmlnaHQuIEkmIzM5O20gZm9jdXNpbmcgb24gYGN4ODIzMTBfcnhfZml4dXBgIHJpZ2h0IG5vdy4gVGhpcyBzdHJvbmdseSBzdWdnZXN0cyB0aGF0IEkgc2hvdWxkIHNwZWNpZmljYWxseSBsb29rIGZvciBSWC1yZWxhdGVkIGNvZGUuIFdpdGggYHJlYWQtZmlsZWAgSSBjYW4gcXVpY2tseSBjaGVjayB0aGF0IHBpZWNlIG9mIGNvZGUgYW5kIGlkZW50aWZ5IHBvdGVudGlhbCBpc3N1ZXMuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBhdCB0aGUgc3Vycm91bmRpbmcgY29kZSBhcyB3ZWxsIHRvIGJ1aWxkIHRoZSBjb3JyZWN0IG1lbnRhbCBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjUwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDgwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyNTA6XHRcdCAqIElmIHRoZSBsYXN0IHNrYiBlbmRlZCB3aXRoIGFuIGluY29tcGxldGUgcGFja2V0LCB0aGlzIHNrYiBjb250YWluc1xuIDI1MTpcdFx0ICogZW5kIG9mIHRoYXQgcGFja2V0IGF0IHRoZSBiZWdpbm5pbmcuXG4gMjUyOlx0XHQgKi9cbiAyNTM6XHRcdGlmIChkZXYtXHUwMDNlcGFydGlhbF9yZW0pIHtcbiAyNTQ6XHRcdFx0bGVuID0gZGV2LVx1MDAzZXBhcnRpYWxfbGVuICYjNDM7IGRldi1cdTAwM2VwYXJ0aWFsX3JlbTtcbiAyNTU6XHRcdFx0c2tiMiA9IGFsbG9jX3NrYihsZW4sIEdGUF9BVE9NSUMpO1xuIDI1NjpcdFx0XHRpZiAoIXNrYjIpXG4gMjU3Olx0XHRcdFx0cmV0dXJuIDA7XG4gMjU4Olx0XHRcdHNrYl9wdXQoc2tiMiwgbGVuKTtcbiAyNTk6XHRcdFx0bWVtY3B5KHNrYjItXHUwMDNlZGF0YSwgKHZvaWQgKilkZXYtXHUwMDNlcGFydGlhbF9kYXRhLFxuIDI2MDpcdFx0XHQgICAgICAgZGV2LVx1MDAzZXBhcnRpYWxfbGVuKTtcbiAyNjE6XHRcdFx0bWVtY3B5KHNrYjItXHUwMDNlZGF0YSAmIzQzOyBkZXYtXHUwMDNlcGFydGlhbF9sZW4sIHNrYi1cdTAwM2VkYXRhLFxuIDI2MjpcdFx0XHQgICAgICAgZGV2LVx1MDAzZXBhcnRpYWxfcmVtKTtcbiAyNjM6XHRcdFx0dXNibmV0X3NrYl9yZXR1cm4oZGV2LCBza2IyKTtcbiAyNjQ6XHRcdFx0c2tiX3B1bGwoc2tiLCAoZGV2LVx1MDAzZXBhcnRpYWxfcmVtICYjNDM7IDEpIFx1MDAyNiB+MSk7XG4gMjY1Olx0XHRcdGRldi1cdTAwM2VwYXJ0aWFsX3JlbSA9IDA7XG4gMjY2Olx0XHRcdGlmIChza2ItXHUwMDNlbGVuIFx1MDAzYyAyKVxuIDI2NzpcdFx0XHRcdHJldHVybiAxO1xuIDI2ODpcdFx0fVxuIDI2OTpcdFxuIDI3MDpcdFx0LyogYSBza2IgY2FuIGNvbnRhaW4gbXVsdGlwbGUgcGFja2V0cyAqL1xuIDI3MTpcdFx0d2hpbGUgKHNrYi1cdTAwM2VsZW4gXHUwMDNlIDEpIHtcbiAyNzI6XHRcdFx0LyogZmlyc3QgdHdvIGJ5dGVzIGFyZSBwYWNrZXQgbGVuZ3RoICovXG4gMjczOlx0XHRcdGxlbiA9IHNrYi1cdTAwM2VkYXRhWzBdIHwgKHNrYi1cdTAwM2VkYXRhWzFdIFx1MDAzY1x1MDAzYyA4KTtcbiAyNzQ6XHRcdFx0c2tiX3B1bGwoc2tiLCAyKTtcbiAyNzU6XHRcbiAyNzY6XHRcdFx0LyogaWYgbGFzdCBwYWNrZXQgaW4gdGhlIHNrYiwgbGV0IHVzYm5ldCB0byBwcm9jZXNzIGl0ICovXG4gMjc3Olx0XHRcdGlmIChsZW4gPT0gc2tiLVx1MDAzZWxlbiB8fCBsZW4gJiM0MzsgMSA9PSBza2ItXHUwMDNlbGVuKSB7XG4gMjc4Olx0XHRcdFx0c2tiX3RyaW0oc2tiLCBsZW4pO1xuIDI3OTpcdFx0XHRcdGJyZWFrO1xuIDI4MDpcdFx0XHR9XG4gMjgxOlx0XG4gMjgyOlx0XHRcdGlmIChsZW4gPT0gMHhmZmZmKSB7XG4gMjgzOlx0XHRcdFx0bmV0ZGV2X2luZm8oZGV2LVx1MDAzZW5ldCwgXCYjMzQ7cm91dGVyIHdhcyByZWJvb3RlZCwgcmUtZW5hYmxpbmcgZXRoZXJuZXQgbW9kZVwmIzM0Oyk7XG4gMjg0Olx0XHRcdFx0c2NoZWR1bGVfd29yayhcdTAwMjZwcml2LVx1MDAzZXJlZW5hYmxlX3dvcmspO1xuIDI4NTpcdFx0XHRcdHJldHVybiAwO1xuIDI4NjpcdFx0XHR9IGVsc2UgaWYgKGxlbiBcdTAwM2UgQ1g4MjMxMF9NVFUpIHtcbiAyODc6XHRcdFx0XHRuZXRkZXZfZXJyKGRldi1cdTAwM2VuZXQsIFwmIzM0O1JYIHBhY2tldCB0b28gbG9uZzogJWQgQlxcblwmIzM0OywgbGVuKTtcbiAyODg6XHRcdFx0XHRyZXR1cm4gMDtcbiAyODk6XHRcdFx0fVxuIDI5MDpcdFxuIDI5MTpcdFx0XHQvKiBpbmNvbXBsZXRlIHBhY2tldCwgc2F2ZSBpdCBmb3IgdGhlIG5leHQgc2tiICovXG4gMjkyOlx0XHRcdGlmIChsZW4gXHUwMDNlIHNrYi1cdTAwM2VsZW4pIHtcbiAyOTM6XHRcdFx0XHRkZXYtXHUwMDNlcGFydGlhbF9sZW4gPSBza2ItXHUwMDNlbGVuO1xuIDI5NDpcdFx0XHRcdGRldi1cdTAwM2VwYXJ0aWFsX3JlbSA9IGxlbiAtIHNrYi1cdTAwM2VsZW47XG4gMjk1Olx0XHRcdFx0bWVtY3B5KCh2b2lkICopZGV2LVx1MDAzZXBhcnRpYWxfZGF0YSwgc2tiLVx1MDAzZWRhdGEsXG4gMjk2Olx0XHRcdFx0ICAgICAgIGRldi1cdTAwM2VwYXJ0aWFsX2xlbik7XG4gMjk3Olx0XHRcdFx0c2tiX3B1bGwoc2tiLCBza2ItXHUwMDNlbGVuKTtcbiAyOTg6XHRcdFx0XHRicmVhaztcbiAyOTk6XHRcdFx0fVxuIDMwMDpcdFxuIDMwMTpcdFx0XHRza2IyID0gYWxsb2Nfc2tiKGxlbiwgR0ZQX0FUT01JQyk7XG4gMzAyOlx0XHRcdGlmICghc2tiMilcbiAzMDM6XHRcdFx0XHRyZXR1cm4gMDtcbiAzMDQ6XHRcdFx0c2tiX3B1dChza2IyLCBsZW4pO1xuIDMwNTpcdFx0XHRtZW1jcHkoc2tiMi1cdTAwM2VkYXRhLCBza2ItXHUwMDNlZGF0YSwgbGVuKTtcbiAzMDY6XHRcdFx0LyogcHJvY2VzcyB0aGUgcGFja2V0ICovXG4gMzA3Olx0XHRcdHVzYm5ldF9za2JfcmV0dXJuKGRldiwgc2tiMik7XG4gMzA4Olx0XG4gMzA5Olx0XHRcdHNrYl9wdWxsKHNrYiwgKGxlbiAmIzQzOyAxKSBcdTAwMjYgfjEpO1xuIDMxMDpcdFx0fVxuIDMxMTpcdFxuIDMxMjpcdFx0LyogbGV0IHVzYm5ldCBwcm9jZXNzIHRoZSBsYXN0IHBhY2tldCAqL1xuIDMxMzpcdFx0cmV0dXJuIDE7XG4gMzE0Olx0fVxuIDMxNTpcdFxuIDMxNjpcdC8qIFRYIGlzIGVhc3ksIGp1c3QgYWRkIDIgYnl0ZXMgb2YgbGVuZ3RoIGF0IHRoZSBiZWdpbm5pbmcgKi9cbiAzMTc6XHRzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmN4ODIzMTBfdHhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIDMxODpcdFx0XHRcdFx0ICAgICAgIGdmcF90IGZsYWdzKVxuIDMxOTpcdHtcbiAzMjA6XHRcdGludCBsZW4gPSBza2ItXHUwMDNlbGVuO1xuIDMyMTpcdFxuIDMyMjpcdFx0aWYgKHNrYl9jb3dfaGVhZChza2IsIDIpKSB7XG4gMzIzOlx0XHRcdGRldl9rZnJlZV9za2JfYW55KHNrYik7XG4gMzI0Olx0XHRcdHJldHVybiBOVUxMO1xuIDMyNTpcdFx0fVxuIDMyNjpcdFx0c2tiX3B1c2goc2tiLCAyKTtcbiAzMjc6XHRcbiAzMjg6XHRcdHNrYi1cdTAwM2VkYXRhWzBdID0gbGVuO1xuIDMyOTpcdFx0c2tiLVx1MDAzZWRhdGFbMV0gPSBsZW4gXHUwMDNlXHUwMDNlIDg7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAxOjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2OTEKCQkJCQkJCW91dHB1dDogMTgyCgkJCQkJCQl0aG91Z2h0czogNjEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIHRoZSBjeDgyMzEwIERyaXZlcioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgZG93biB0aGlzIHBhdGNoIGZvciB0aGUgYGN4ODIzMTBgIGRyaXZlci4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvcmUgY2hhbmdlIGFuZCBwb3RlbnRpYWwgaW1wbGljYXRpb25zLiBJdCBsb29rcyBsaWtlIHRoZSBwcmltYXJ5IGZvY3VzIGlzIHdpdGhpbiB0aGUgYGN4ODIzMTBfcnhfZml4dXBgIGZ1bmN0aW9uLiBUaGUgY29kZSBhZGRyZXNzZXMgYSBzcGVjaWZpYyBzY2VuYXJpbzogYGxlbiA9PSAweGZmZmZgLiBCZWZvcmUgdGhpcyBwYXRjaCwgaWYgdGhlIHBhY2tldCBsZW5ndGggd2FzIHRoaXMgbWF4aW11bSB2YWx1ZSwgdGhlIGNvZGUgd291bGQgcHJvY2VlZCBwYXN0IHRoYXQgY29uZGl0aW9uYWwgY2hlY2sgd2l0aG91dCByZXR1cm5pbmcsIGxlYWRpbmcgdG8gc29tZSBwb3RlbnRpYWxseSBuYXN0eSBjb25zZXF1ZW5jZXMgZG93biB0aGUgbGluZS4KClRoZSB2dWxuZXJhYmlsaXR5IHN0ZW1zIGZyb20gdGhlIGxvZ2ljIHRoYXQgZm9sbG93cyB3aGVuIGBsZW5gIGlzIGAweGZmZmZgLiBUaGUgcHJldmlvdXMgY29kZSB3b3VsZCBlbmQgdXAgZG9pbmcgc29tZSBkYW5nZXJvdXMgY2FsY3VsYXRpb25zOiBhc3NpZ25pbmcgYGRldi0mZ3Q7cGFydGlhbF9sZW5gIGFzIGBza2ItJmd0O2xlbmAsIHRoZW4gY2FsY3VsYXRpbmcgYGRldi0mZ3Q7cGFydGlhbF9yZW1gIGFzIGEgbWFzc2l2ZSBkaWZmZXJlbmNlIChgMHhmZmZmIC0gc2tiLSZndDtsZW5gKS4gTmV4dCwgaXQgY29waWVzIGRhdGEgYmFzZWQgb24gYGRldi0mZ3Q7cGFydGlhbF9sZW5gLiBUaGVuLCBvbiBhIHN1YnNlcXVlbnQgcGFja2V0LCBiZWNhdXNlIGBkZXYtJmd0O3BhcnRpYWxfcmVtYCB3b3VsZCBiZSBub24temVybywgaXQgZG9lcyBhbiBhbGxvY2F0aW9uLCB1c2luZyBhIGxlbmd0aCB0aGF0IHdvdWxkIGluY2x1ZGUgdGhpcyBlbm9ybW91cyBgZGV2LSZndDtwYXJ0aWFsX3JlbWAsIGFuZCB0cmllcyB0byBjb3B5IG1lbW9yeSBiYXNlZCBvbiBgZGV2LSZndDtwYXJ0aWFsX3JlbWAgZnJvbSBgc2tiLSZndDtkYXRhYCB0byB0aGUgbmV3bHkgYWxsb2NhdGVkIHNrYjIuIFRoaXMgaXMgd2hlcmUgaXQgYnJlYWtzOiBJdCBsb29rcyBsaWtlIGl0IGNvdWxkIGhhdmUgcmVzdWx0ZWQgaW4gYSAqc2lnbmlmaWNhbnQqIG91dC1vZi1ib3VuZHMgcmVhZCBmcm9tIGBza2ItJmd0O2RhdGFgIGJlY2F1c2UgYHNrYi0mZ3Q7bGVuYCBpcyBnb2luZyB0byBiZSBmYXIgc21hbGxlciB0aGFuIGBkZXYtJmd0O3BhcnRpYWxfcmVtYC4gQmlnIHByb2JsZW0hIFRoaXMgcGF0Y2ggbmVhdGx5IGZpeGVzIHRoaXMgYnkgYWRkaW5nIGEgYHJldHVybiAwO2AgYWZ0ZXIgYHNjaGVkdWxlX3dvcmsoKWAuCgpNeSBmaXJzdCBjb25jZXJuIGlzIGFsd2F5cywgJiMzNDtEb2VzIHRoaXMgcGF0Y2ggaW50cm9kdWNlIGFueSBuZXcgcmlza3M/JiMzNDsgSXQgc2VlbXMgbm90LiBJdCYjMzk7cyBlc3NlbnRpYWxseSBhZGRpbmcgYW4gZWFybHkgcmV0dXJuIHRvIHN0b3AgcHJvY2Vzc2luZyB0aGUgcGFja2V0IGluIGFuIGVycm9yIG9yIHNwZWNpYWwgcmVib290IGNvbmRpdGlvbiwgcHJldmVudGluZyB0aGlzIG91dC1vZi1ib3VuZHMgYWNjZXNzLiBJJiMzOTt2ZSBzcGVjaWZpY2FsbHkgY29uc2lkZXJlZCB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcy4gVGhlcmUgYXJlIG5vIG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIG5vIHVuaW5pdGlhbGl6ZWQgc3RydWN0IGZpZWxkcywgbm8gbmV3IGJ1ZmZlcnMgdG8gcmVhZC9jb3B5IHVuaW5pdGlhbGl6ZWQgZGF0YS4gVGhlcmUgYXJlIG5vIGxlYWtzIHRvIHVzZXIgc3BhY2UuIEl0IGRvZXNuJiMzOTt0IG1vZGlmeSBib3VuZHMtY2hlY2tpbmcgbG9naWMgdGhhdCBjb3VsZCBhbGxvdyB1bmluaXRpYWxpemVkIGJ5dGVzIHRvIGJlIGV4cG9zZWQuIFRoZSBjaGFuZ2UgaXMgc2ltcGx5IGEgbW9yZSBjb3JyZWN0IGVycm9yIGhhbmRsaW5nIHByb2NlZHVyZS4KCktBU0FOLCBpZiB0aGUgYnVnIHdlcmUgdG8gYmUgcmVwcm9kdWNlZCBieSBhbiBhdHRhY2tlciwgd291bGQgbGlrZWx5IGNhdGNoIHRoZSBoZWFwIG91dC1vZi1ib3VuZHMgcmVhZC4gS01TQU4sIHdoaWNoIEkgYW0gdmVyeSBmYW1pbGlhciB3aXRoLCB0YXJnZXRzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIGFuZCBrZXJuZWwtdG8tdXNlciBpbmZvcm1hdGlvbiBsZWFrcy4gSSBkb24mIzM5O3Qgc2VlIGFueSBpbnRyb2R1Y3Rpb24gb3IgcmVhZGluZyBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBoZXJlLgoKV2l0aCB0aGlzIGFuYWx5c2lzIGNvbXBsZXRlLCBJJiMzOTttIGNvbmZpZGVudCBpbiB0aGUgY29ycmVjdG5lc3Mgb2YgdGhpcyBwYXRjaC4gTm93IEkmIzM5O2xsIHByZXBhcmUgdGhlIGBzZXQtcmVzdWx0c2AgdG9vbCBjYWxsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGFuIGVhcmx5ICYjMzk7cmV0dXJuIDA7JiMzOTsgd2hlbiAmIzM5O2xlbiA9PSAweGZmZmYmIzM5OyBpbiBjeDgyMzEwX3J4X2ZpeHVwKCkgdG8gYWJvcnQgcHJvY2Vzc2luZyB3aGVuIHRoZSByb3V0ZXIgcmVib290cyBhbmQgcmUtZW5hYmxpbmcgd29yayBpcyBzY2hlZHVsZWQuIFByZXZpb3VzbHksIGV4ZWN1dGlvbiBmZWxsIHRocm91Z2ggaW50byBwYXJ0aWFsIHBhY2tldCBoYW5kbGluZywgd2hpY2ggY291bGQgbGVhZCB0byBvdXQtb2YtYm91bmRzIHJlYWRzIG9uIHN1YnNlcXVlbnQgcGFja2V0cy4gXG5cblRoZSBmaXggb25seSBtb2RpZmllcyBjb250cm9sIGZsb3cgdG8gZGlzY2FyZCB0aGUgc2tiIGFuZCBkb2VzIG5vdCBhbGxvY2F0ZSwgaW5pdGlhbGl6ZSwgcmVhZCwgb3IgY29weSBhbnkgdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSBvciBrZXJuZWwgc3RydWN0dXJlcyB0byB1c2VyIHNwYWNlLiBBbnkgbWVtb3J5IHNhZmV0eSBpc3N1ZXMgcHJldmVudGVkIG9yIHRvdWNoZWQgYnkgdGhpcyBjb2RlIGFyZSBvdXQtb2YtYm91bmRzIGFjY2VzcyAvIGludmFsaWQgc3RhdGUgYnVncyBjYXVnaHQgYnkgS0FTQU4sIG5vdCB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZXMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWVkZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGFuIGVhcmx5ICYjMzk7cmV0dXJuIDA7JiMzOTsgd2hlbiAmIzM5O2xlbiA9PSAweGZmZmYmIzM5OyBpbiBjeDgyMzEwX3J4X2ZpeHVwKCkgdG8gYWJvcnQgcHJvY2Vzc2luZyB3aGVuIHRoZSByb3V0ZXIgcmVib290cyBhbmQgcmUtZW5hYmxpbmcgd29yayBpcyBzY2hlZHVsZWQuIFByZXZpb3VzbHksIGV4ZWN1dGlvbiBmZWxsIHRocm91Z2ggaW50byBwYXJ0aWFsIHBhY2tldCBoYW5kbGluZywgd2hpY2ggY291bGQgbGVhZCB0byBvdXQtb2YtYm91bmRzIHJlYWRzIG9uIHN1YnNlcXVlbnQgcGFja2V0cy4gXG5cblRoZSBmaXggb25seSBtb2RpZmllcyBjb250cm9sIGZsb3cgdG8gZGlzY2FyZCB0aGUgc2tiIGFuZCBkb2VzIG5vdCBhbGxvY2F0ZSwgaW5pdGlhbGl6ZSwgcmVhZCwgb3IgY29weSBhbnkgdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSBvciBrZXJuZWwgc3RydWN0dXJlcyB0byB1c2VyIHNwYWNlLiBBbnkgbWVtb3J5IHNhZmV0eSBpc3N1ZXMgcHJldmVudGVkIG9yIHRvdWNoZWQgYnkgdGhpcyBjb2RlIGFyZSBvdXQtb2YtYm91bmRzIGFjY2VzcyAvIGludmFsaWQgc3RhdGUgYnVncyBjYXVnaHQgYnkgS0FTQU4sIG5vdCB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZXMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWVkZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAxOjE2OjI2LjY2NjY1MjYzMVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyNzY1NzI1OTg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlVTQl9ORVRfQ1g4MjMxMF9FVEhcIixcbiAgICBcIlVTQl9VU0JORVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjeDgyMzEwX3J4X2ZpeHVwXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGFuIGVhcmx5ICdyZXR1cm4gMDsnIHdoZW4gJ2xlbiA9PSAweGZmZmYnIGluIGN4ODIzMTBfcnhfZml4dXAoKSB0byBhYm9ydCBwcm9jZXNzaW5nIHdoZW4gdGhlIHJvdXRlciByZWJvb3RzIGFuZCByZS1lbmFibGluZyB3b3JrIGlzIHNjaGVkdWxlZC4gUHJldmlvdXNseSwgZXhlY3V0aW9uIGZlbGwgdGhyb3VnaCBpbnRvIHBhcnRpYWwgcGFja2V0IGhhbmRsaW5nLCB3aGljaCBjb3VsZCBsZWFkIHRvIG91dC1vZi1ib3VuZHMgcmVhZHMgb24gc3Vic2VxdWVudCBwYWNrZXRzLiBcXG5cXG5UaGUgZml4IG9ubHkgbW9kaWZpZXMgY29udHJvbCBmbG93IHRvIGRpc2NhcmQgdGhlIHNrYiBhbmQgZG9lcyBub3QgYWxsb2NhdGUsIGluaXRpYWxpemUsIHJlYWQsIG9yIGNvcHkgYW55IHVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgb3Iga2VybmVsIHN0cnVjdHVyZXMgdG8gdXNlciBzcGFjZS4gQW55IG1lbW9yeSBzYWZldHkgaXNzdWVzIHByZXZlbnRlZCBvciB0b3VjaGVkIGJ5IHRoaXMgY29kZSBhcmUgb3V0LW9mLWJvdW5kcyBhY2Nlc3MgLyBpbnZhbGlkIHN0YXRlIGJ1Z3MgY2F1Z2h0IGJ5IEtBU0FOLCBub3QgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWVzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVlZGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgZnVuY3Rpb25hbCBmbG93IGJ1ZyBpbiB0aGUgUlggcGFja2V0IHByb2Nlc3NpbmcgbG9naWMgb2YgdGhlIGN4ODIzMTBfZXRoIFVTQiBuZXR3b3JrIGRyaXZlci4gUHJldmlvdXNseSwgd2hlbiBhbiBSWCBwYWNrZXQgaGFkIGxlbmd0aCAweGZmZmYgKHNpZ25hbGluZyByb3V0ZXIgcmVib290KSwgdGhlIGZ1bmN0aW9uIHNjaGVkdWxlZCBhIHJlLWVuYWJsZSB3b3JrZXIgYnV0IGZlbGwgdGhyb3VnaCBpbnRvIHBhcnRpYWwgcGFja2V0IGhhbmRsaW5nLCB3aGljaCBjb3VsZCBsZWFkIHRvIG1hbGZvcm1lZCBwYWNrZXQgcHJvY2Vzc2luZyBvciBvdXQtb2YtYm91bmRzL292ZXJmbG93IGlzc3Vlcy4gVGhlIHBhdGNoIHJldHVybnMgMCB0byBwcm9wZXJseSBkcm9wIHRoZSBwYWNrZXQuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgdmlhIFVTQiBlbXVsYXRpb24vZnV6emluZyAoZS5nLiBSYXcgR2FkZ2V0IC8gZHVtbXlfaGNkKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDE6MTY6MjYuNjY2NjU5NDQxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTg2Mjc5MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBhN2Q2MWQ2NDBkNjdmMjRkYzllNjJlZDZiMTdlM2ZlMDZhYzg3NDZkXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgU2VwIDMgMDE6MTY6MjUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMgYi9kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguY1xcbmluZGV4IDA2OGFjYjA1MmFkYjAuLjVkZjY1N2FjZjNkNTUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmNcXG4rKysgYi9kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguY1xcbkBAIC0yODIsNiArMjgyLDcgQEAgc3RhdGljIGludCBjeDgyMzEwX3J4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gXFx0XFx0aWYgKGxlbiA9PSAweGZmZmYpIHtcXG4gXFx0XFx0XFx0bmV0ZGV2X2luZm8oZGV2LVxcdTAwM2VuZXQsIFxcXCJyb3V0ZXIgd2FzIHJlYm9vdGVkLCByZS1lbmFibGluZyBldGhlcm5ldCBtb2RlXFxcIik7XFxuIFxcdFxcdFxcdHNjaGVkdWxlX3dvcmsoXFx1MDAyNnByaXYtXFx1MDAzZXJlZW5hYmxlX3dvcmspO1xcbitcXHRcXHRcXHRyZXR1cm4gMDtcXG4gXFx0XFx0fSBlbHNlIGlmIChsZW4gXFx1MDAzZSBDWDgyMzEwX01UVSkge1xcbiBcXHRcXHRcXHRuZXRkZXZfZXJyKGRldi1cXHUwMDNlbmV0LCBcXFwiUlggcGFja2V0IHRvbyBsb25nOiAlZCBCXFxcXG5cXFwiLCBsZW4pO1xcbiBcXHRcXHRcXHRyZXR1cm4gMDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDE6MTY6MjcuMDg1OTAwN1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6NTA5OTYwMzcwNDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVVNCX05FVF9DWDgyMzEwX0VUSFwiLFxuICAgIFwiVVNCX1VTQk5FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImN4ODIzMTBfcnhfZml4dXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGZ1bmN0aW9uYWwgZmxvdyBidWcgaW4gdGhlIFJYIHBhY2tldCBwcm9jZXNzaW5nIGxvZ2ljIG9mIHRoZSBjeDgyMzEwX2V0aCBVU0IgbmV0d29yayBkcml2ZXIuIFByZXZpb3VzbHksIHdoZW4gYW4gUlggcGFja2V0IGhhZCBsZW5ndGggMHhmZmZmIChzaWduYWxpbmcgcm91dGVyIHJlYm9vdCksIHRoZSBmdW5jdGlvbiBzY2hlZHVsZWQgYSByZS1lbmFibGUgd29ya2VyIGJ1dCBmZWxsIHRocm91Z2ggaW50byBwYXJ0aWFsIHBhY2tldCBoYW5kbGluZywgd2hpY2ggY291bGQgbGVhZCB0byBtYWxmb3JtZWQgcGFja2V0IHByb2Nlc3Npbmcgb3Igb3V0LW9mLWJvdW5kcy9vdmVyZmxvdyBpc3N1ZXMuIFRoZSBwYXRjaCByZXR1cm5zIDAgdG8gcHJvcGVybHkgZHJvcCB0aGUgcGFja2V0LiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBVU0IgZW11bGF0aW9uL2Z1enppbmcgKGUuZy4gUmF3IEdhZGdldCAvIGR1bW15X2hjZCkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGE3ZDYxZDY0MGQ2N2YyNGRjOWU2MmVkNmIxN2UzZmUwNmFjODc0NmRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IFNlcCAzIDAxOjE2OjI1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMgYi9kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguY1xuaW5kZXggMDY4YWNiMDUyYWRiMC4uNWRmNjU3YWNmM2Q1NSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jXG4rKysgYi9kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguY1xuQEAgLTI4Miw2ICsyODIsNyBAQCBzdGF0aWMgaW50IGN4ODIzMTBfcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0XHRpZiAobGVuID09IDB4ZmZmZikge1xuIFx0XHRcdG5ldGRldl9pbmZvKGRldi1cdTAwM2VuZXQsIFwicm91dGVyIHdhcyByZWJvb3RlZCwgcmUtZW5hYmxpbmcgZXRoZXJuZXQgbW9kZVwiKTtcbiBcdFx0XHRzY2hlZHVsZV93b3JrKFx1MDAyNnByaXYtXHUwMDNlcmVlbmFibGVfd29yayk7XG4rXHRcdFx0cmV0dXJuIDA7XG4gXHRcdH0gZWxzZSBpZiAobGVuIFx1MDAzZSBDWDgyMzEwX01UVSkge1xuIFx0XHRcdG5ldGRldl9lcnIoZGV2LVx1MDAzZW5ldCwgXCJSWCBwYWNrZXQgdG9vIGxvbmc6ICVkIEJcXG5cIiwgbGVuKTtcbiBcdFx0XHRyZXR1cm4gMDtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAxOjE2OjI3LjA4NTkwMjY2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTc1OTc1NTQzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBOZXR3b3JrIERyaXZlciBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGRpZmYsIHNwZWNpZmljYWxseSB0aGUgY2hhbmdlIGluIGBkcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguY2AuIFRoZSBtb2RpZmljYXRpb24gdG8gYGN4ODIzMTBfcnhfZml4dXBgIGF0IGxpbmUgMjgyIGlzIGludGVyZXN0aW5nLiBJdCBsb29rcyBsaWtlIGl0IGhhbmRsZXMgc29tZSBraW5kIG9mIGVycm9yIGNvbmRpdGlvbiByZWxhdGVkIHRvIHBhY2tldCBsZW5ndGggb3IgcG90ZW50aWFsbHkgYSByb3V0ZXIgcmVib290LCBhbmQgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGV4YWN0IGNvbnRleHQuIExldCBtZSBkaXZlIGludG8gdGhlIHN1cnJvdW5kaW5nIGNvZGUgaW4gdGhhdCBmaWxlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgYGN4ODIzMTBfcnhfZml4dXBgIHdvcmtzIHdpdGhpbiB0aGUgYHVzYm5ldGAgZnJhbWV3b3JrLiBJIHdhbnQgdG8gdHJhY2UgdGhlIGRhdGEgZmxvdyB0byBzZWUgaWYgVVNCIGRyaXZlcnMsIHRoZSBgdXNibmV0YCBhYnN0cmFjdGlvbiBsYXllciwgb3IgZXZlbiBzb21ldGhpbmcgcmVsYXRlZCB0byBVU0IgZW11bGF0aW9uIG9yIGZ1enppbmcgdGVjaG5pcXVlcyBsaWtlIHN5emthbGxlciBjb3VsZCBwb3RlbnRpYWxseSB0cmlnZ2VyIHRoaXMuIEknbGwgbmVlZCB0byBrbm93IHRoZSBjb25maWcgZGVwZW5kZW5jaWVzLiBMZXQgbWUgY2FsbCBgcmVhZC1maWxlYCBhbmQgY2hlY2sgS2NvbmZpZyB0byBzZWUgd2hhdCdzIG5lZWRlZC4gSSdsbCBmb2N1cyBvbiB3aGV0aGVyIHRoaXMgY291bGQgYmUgaGl0IGJ5IFVTQiB0cmFmZmljLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTMzLCJPdXRwdXRUb2tlbnMiOjc1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDE6MTY6MzIuODQ1NjU5ODg4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjY5ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjUwLFxuICBcIkxpbmVDb3VudFwiOiA3MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjUwOlxcdFxcdCAqIElmIHRoZSBsYXN0IHNrYiBlbmRlZCB3aXRoIGFuIGluY29tcGxldGUgcGFja2V0LCB0aGlzIHNrYiBjb250YWluc1xcbiAyNTE6XFx0XFx0ICogZW5kIG9mIHRoYXQgcGFja2V0IGF0IHRoZSBiZWdpbm5pbmcuXFxuIDI1MjpcXHRcXHQgKi9cXG4gMjUzOlxcdFxcdGlmIChkZXYtXFx1MDAzZXBhcnRpYWxfcmVtKSB7XFxuIDI1NDpcXHRcXHRcXHRsZW4gPSBkZXYtXFx1MDAzZXBhcnRpYWxfbGVuICsgZGV2LVxcdTAwM2VwYXJ0aWFsX3JlbTtcXG4gMjU1OlxcdFxcdFxcdHNrYjIgPSBhbGxvY19za2IobGVuLCBHRlBfQVRPTUlDKTtcXG4gMjU2OlxcdFxcdFxcdGlmICghc2tiMilcXG4gMjU3OlxcdFxcdFxcdFxcdHJldHVybiAwO1xcbiAyNTg6XFx0XFx0XFx0c2tiX3B1dChza2IyLCBsZW4pO1xcbiAyNTk6XFx0XFx0XFx0bWVtY3B5KHNrYjItXFx1MDAzZWRhdGEsICh2b2lkICopZGV2LVxcdTAwM2VwYXJ0aWFsX2RhdGEsXFxuIDI2MDpcXHRcXHRcXHQgICAgICAgZGV2LVxcdTAwM2VwYXJ0aWFsX2xlbik7XFxuIDI2MTpcXHRcXHRcXHRtZW1jcHkoc2tiMi1cXHUwMDNlZGF0YSArIGRldi1cXHUwMDNlcGFydGlhbF9sZW4sIHNrYi1cXHUwMDNlZGF0YSxcXG4gMjYyOlxcdFxcdFxcdCAgICAgICBkZXYtXFx1MDAzZXBhcnRpYWxfcmVtKTtcXG4gMjYzOlxcdFxcdFxcdHVzYm5ldF9za2JfcmV0dXJuKGRldiwgc2tiMik7XFxuIDI2NDpcXHRcXHRcXHRza2JfcHVsbChza2IsIChkZXYtXFx1MDAzZXBhcnRpYWxfcmVtICsgMSkgXFx1MDAyNiB+MSk7XFxuIDI2NTpcXHRcXHRcXHRkZXYtXFx1MDAzZXBhcnRpYWxfcmVtID0gMDtcXG4gMjY2OlxcdFxcdFxcdGlmIChza2ItXFx1MDAzZWxlbiBcXHUwMDNjIDIpXFxuIDI2NzpcXHRcXHRcXHRcXHRyZXR1cm4gMTtcXG4gMjY4OlxcdFxcdH1cXG4gMjY5OlxcdFxcbiAyNzA6XFx0XFx0LyogYSBza2IgY2FuIGNvbnRhaW4gbXVsdGlwbGUgcGFja2V0cyAqL1xcbiAyNzE6XFx0XFx0d2hpbGUgKHNrYi1cXHUwMDNlbGVuIFxcdTAwM2UgMSkge1xcbiAyNzI6XFx0XFx0XFx0LyogZmlyc3QgdHdvIGJ5dGVzIGFyZSBwYWNrZXQgbGVuZ3RoICovXFxuIDI3MzpcXHRcXHRcXHRsZW4gPSBza2ItXFx1MDAzZWRhdGFbMF0gfCAoc2tiLVxcdTAwM2VkYXRhWzFdIFxcdTAwM2NcXHUwMDNjIDgpO1xcbiAyNzQ6XFx0XFx0XFx0c2tiX3B1bGwoc2tiLCAyKTtcXG4gMjc1OlxcdFxcbiAyNzY6XFx0XFx0XFx0LyogaWYgbGFzdCBwYWNrZXQgaW4gdGhlIHNrYiwgbGV0IHVzYm5ldCB0byBwcm9jZXNzIGl0ICovXFxuIDI3NzpcXHRcXHRcXHRpZiAobGVuID09IHNrYi1cXHUwMDNlbGVuIHx8IGxlbiArIDEgPT0gc2tiLVxcdTAwM2VsZW4pIHtcXG4gMjc4OlxcdFxcdFxcdFxcdHNrYl90cmltKHNrYiwgbGVuKTtcXG4gMjc5OlxcdFxcdFxcdFxcdGJyZWFrO1xcbiAyODA6XFx0XFx0XFx0fVxcbiAyODE6XFx0XFxuIDI4MjpcXHRcXHRcXHRpZiAobGVuID09IDB4ZmZmZikge1xcbiAyODM6XFx0XFx0XFx0XFx0bmV0ZGV2X2luZm8oZGV2LVxcdTAwM2VuZXQsIFxcXCJyb3V0ZXIgd2FzIHJlYm9vdGVkLCByZS1lbmFibGluZyBldGhlcm5ldCBtb2RlXFxcIik7XFxuIDI4NDpcXHRcXHRcXHRcXHRzY2hlZHVsZV93b3JrKFxcdTAwMjZwcml2LVxcdTAwM2VyZWVuYWJsZV93b3JrKTtcXG4gMjg1OlxcdFxcdFxcdFxcdHJldHVybiAwO1xcbiAyODY6XFx0XFx0XFx0fSBlbHNlIGlmIChsZW4gXFx1MDAzZSBDWDgyMzEwX01UVSkge1xcbiAyODc6XFx0XFx0XFx0XFx0bmV0ZGV2X2VycihkZXYtXFx1MDAzZW5ldCwgXFxcIlJYIHBhY2tldCB0b28gbG9uZzogJWQgQlxcXFxuXFxcIiwgbGVuKTtcXG4gMjg4OlxcdFxcdFxcdFxcdHJldHVybiAwO1xcbiAyODk6XFx0XFx0XFx0fVxcbiAyOTA6XFx0XFxuIDI5MTpcXHRcXHRcXHQvKiBpbmNvbXBsZXRlIHBhY2tldCwgc2F2ZSBpdCBmb3IgdGhlIG5leHQgc2tiICovXFxuIDI5MjpcXHRcXHRcXHRpZiAobGVuIFxcdTAwM2Ugc2tiLVxcdTAwM2VsZW4pIHtcXG4gMjkzOlxcdFxcdFxcdFxcdGRldi1cXHUwMDNlcGFydGlhbF9sZW4gPSBza2ItXFx1MDAzZWxlbjtcXG4gMjk0OlxcdFxcdFxcdFxcdGRldi1cXHUwMDNlcGFydGlhbF9yZW0gPSBsZW4gLSBza2ItXFx1MDAzZWxlbjtcXG4gMjk1OlxcdFxcdFxcdFxcdG1lbWNweSgodm9pZCAqKWRldi1cXHUwMDNlcGFydGlhbF9kYXRhLCBza2ItXFx1MDAzZWRhdGEsXFxuIDI5NjpcXHRcXHRcXHRcXHQgICAgICAgZGV2LVxcdTAwM2VwYXJ0aWFsX2xlbik7XFxuIDI5NzpcXHRcXHRcXHRcXHRza2JfcHVsbChza2IsIHNrYi1cXHUwMDNlbGVuKTtcXG4gMjk4OlxcdFxcdFxcdFxcdGJyZWFrO1xcbiAyOTk6XFx0XFx0XFx0fVxcbiAzMDA6XFx0XFxuIDMwMTpcXHRcXHRcXHRza2IyID0gYWxsb2Nfc2tiKGxlbiwgR0ZQX0FUT01JQyk7XFxuIDMwMjpcXHRcXHRcXHRpZiAoIXNrYjIpXFxuIDMwMzpcXHRcXHRcXHRcXHRyZXR1cm4gMDtcXG4gMzA0OlxcdFxcdFxcdHNrYl9wdXQoc2tiMiwgbGVuKTtcXG4gMzA1OlxcdFxcdFxcdG1lbWNweShza2IyLVxcdTAwM2VkYXRhLCBza2ItXFx1MDAzZWRhdGEsIGxlbik7XFxuIDMwNjpcXHRcXHRcXHQvKiBwcm9jZXNzIHRoZSBwYWNrZXQgKi9cXG4gMzA3OlxcdFxcdFxcdHVzYm5ldF9za2JfcmV0dXJuKGRldiwgc2tiMik7XFxuIDMwODpcXHRcXG4gMzA5OlxcdFxcdFxcdHNrYl9wdWxsKHNrYiwgKGxlbiArIDEpIFxcdTAwMjYgfjEpO1xcbiAzMTA6XFx0XFx0fVxcbiAzMTE6XFx0XFxuIDMxMjpcXHRcXHQvKiBsZXQgdXNibmV0IHByb2Nlc3MgdGhlIGxhc3QgcGFja2V0ICovXFxuIDMxMzpcXHRcXHRyZXR1cm4gMTtcXG4gMzE0OlxcdH1cXG4gMzE1OlxcdFxcbiAzMTY6XFx0LyogVFggaXMgZWFzeSwganVzdCBhZGQgMiBieXRlcyBvZiBsZW5ndGggYXQgdGhlIGJlZ2lubmluZyAqL1xcbiAzMTc6XFx0c3RhdGljIHN0cnVjdCBza19idWZmICpjeDgyMzEwX3R4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gMzE4OlxcdFxcdFxcdFxcdFxcdCAgICAgICBnZnBfdCBmbGFncylcXG4gMzE5OlxcdHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDE6MTY6MzIuODQ1NzI3ODI4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2ODY2Nzc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImN4ODIzMTBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdXNiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3VzYi9NYWtlZmlsZT0zNT1vYmotJChDT05GSUdfVVNCX1NJRVJSQV9ORVQpXFx0Kz0gc2llcnJhX25ldC5vXFxuZHJpdmVycy9uZXQvdXNiL01ha2VmaWxlOjM2Om9iai0kKENPTkZJR19VU0JfTkVUX0NYODIzMTBfRVRIKVxcdCs9IGN4ODIzMTBfZXRoLm9cXG5kcml2ZXJzL25ldC91c2IvTWFrZWZpbGUtMzctb2JqLSQoQ09ORklHX1VTQl9ORVRfQ0RDX05DTSlcXHQrPSBjZGNfbmNtLm9cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTE2LVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjE3OmVudW0gY3g4MjMxMF9jbWQge1xcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTE4LVxcdENNRF9TVEFSVFxcdFxcdD0gMHg4NCxcXHQvKiBubyBlZmZlY3Q/ICovXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0yNS1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzoyNjplbnVtIGN4ODIzMTBfc3RhdHVzIHtcXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0yNy1cXHRTVEFUVVNfVU5ERUZJTkVELFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtNDItXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6NDM6c3RydWN0IGN4ODIzMTBfcHJpdiB7XFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtNDQtXFx0c3RydWN0IHdvcmtfc3RydWN0IHJlZW5hYmxlX3dvcms7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy01My0gKi9cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzo1NDpzdGF0aWMgaW50IGN4ODIzMTBfY21kKHN0cnVjdCB1c2JuZXQgKmRldiwgZW51bSBjeDgyMzEwX2NtZCBjbWQsIGJvb2wgcmVwbHksXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtNTUtXFx0XFx0ICAgICAgIHU4ICp3ZGF0YSwgaW50IHdsZW4sIHU4ICpyZGF0YSwgaW50IHJsZW4pXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0xMTktXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MTIwOnN0YXRpYyBpbnQgY3g4MjMxMF9lbmFibGVfZXRoZXJuZXQoc3RydWN0IHVzYm5ldCAqZGV2KVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTEyMS17XFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MTIyOlxcdGludCByZXQgPSBjeDgyMzEwX2NtZChkZXYsIENNRF9FVEhFUk5FVF9NT0RFLCB0cnVlLCBcXFwiXFxcXHgwMVxcXCIsIDEsIE5VTEwsIDApO1xcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTEyMy1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTEyOS1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzoxMzA6c3RhdGljIHZvaWQgY3g4MjMxMF9yZWVuYWJsZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0xMzEte1xcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjEzMjpcXHRzdHJ1Y3QgY3g4MjMxMF9wcml2ICpwcml2ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBjeDgyMzEwX3ByaXYsXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMTMzLVxcdFxcdFxcdFxcdFxcdFxcdCByZWVuYWJsZV93b3JrKTtcXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzoxMzQ6XFx0Y3g4MjMxMF9lbmFibGVfZXRoZXJuZXQocHJpdi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0xMzUtfVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMTQwLVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjE0MTpzdGF0aWMgaW50IGN4ODIzMTBfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTE0Mi17XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0xNDctXFx0aW50IHRpbWVvdXQgPSA1MDtcXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzoxNDg6XFx0c3RydWN0IGN4ODIzMTBfcHJpdiAqcHJpdjtcXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0xNDktXFx0dTggYWRkcltFVEhfQUxFTl07XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0xODEtXFx0ZGV2LVxcdTAwM2Vkcml2ZXJfcHJpdiA9IHByaXY7XFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MTgyOlxcdElOSVRfV09SSyhcXHUwMDI2cHJpdi1cXHUwMDNlcmVlbmFibGVfd29yaywgY3g4MjMxMF9yZWVuYWJsZV93b3JrKTtcXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0xODMtXFx0cHJpdi1cXHUwMDNlZGV2ID0gZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMTg2LVxcdHdoaWxlICgtLXRpbWVvdXQpIHtcXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzoxODc6XFx0XFx0cmV0ID0gY3g4MjMxMF9jbWQoZGV2LCBDTURfR0VUX0xJTktfU1RBVFVTLCB0cnVlLCBOVUxMLCAwLFxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTE4OC1cXHRcXHRcXHRcXHQgIGxpbmssIHNpemVvZihsaW5rKSk7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0yMDAtXFx0LyogZW5hYmxlIGV0aGVybmV0IG1vZGUgKD8pICovXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MjAxOlxcdHJldCA9IGN4ODIzMTBfZW5hYmxlX2V0aGVybmV0KGRldik7XFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMjAyLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0yMDUtXFx0LyogZ2V0IHRoZSBNQUMgYWRkcmVzcyAqL1xcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjIwNjpcXHRyZXQgPSBjeDgyMzEwX2NtZChkZXYsIENNRF9HRVRfTUFDX0FERFIsIHRydWUsIE5VTEwsIDAsIGFkZHIsIEVUSF9BTEVOKTtcXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0yMDctXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMjEzLVxcdC8qIHN0YXJ0IChkb2VzIG5vdCBzZWVtIHRvIGhhdmUgYW55IGVmZmVjdD8pICovXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MjE0OlxcdHJldCA9IGN4ODIzMTBfY21kKGRldiwgQ01EX1NUQVJULCBmYWxzZSwgTlVMTCwgMCwgTlVMTCwgMCk7XFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMjE1LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0yMjUtXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MjI2OnN0YXRpYyB2b2lkIGN4ODIzMTBfdW5iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMjI3LXtcXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzoyMjg6XFx0c3RydWN0IGN4ODIzMTBfcHJpdiAqcHJpdiA9IGRldi1cXHUwMDNlZHJpdmVyX3ByaXY7XFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMjI5LVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMjQyLSAqL1xcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjI0MzpzdGF0aWMgaW50IGN4ODIzMTBfcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTI0NC17XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0yNDYtXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjI7XFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MjQ3OlxcdHN0cnVjdCBjeDgyMzEwX3ByaXYgKnByaXYgPSBkZXYtXFx1MDAzZWRyaXZlcl9wcml2O1xcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTI0OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTMxNi0vKiBUWCBpcyBlYXN5LCBqdXN0IGFkZCAyIGJ5dGVzIG9mIGxlbmd0aCBhdCB0aGUgYmVnaW5uaW5nICovXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MzE3OnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqY3g4MjMxMF90eF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IsXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMzE4LVxcdFxcdFxcdFxcdCAgICAgICBnZnBfdCBmbGFncylcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTMzNC1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzozMzU6c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mb1xcdGN4ODIzMTBfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0zMzYtXFx0LmRlc2NyaXB0aW9uXFx0PSBcXFwiQ29uZXhhbnQgQ1g4MjMxMCBVU0IgZXRoZXJuZXRcXFwiLFxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTMzNy1cXHQuZmxhZ3NcXHRcXHQ9IEZMQUdfRVRIRVIsXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MzM4OlxcdC5iaW5kXFx0XFx0PSBjeDgyMzEwX2JpbmQsXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MzM5OlxcdC51bmJpbmRcXHRcXHQ9IGN4ODIzMTBfdW5iaW5kLFxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjM0MDpcXHQucnhfZml4dXBcXHQ9IGN4ODIzMTBfcnhfZml4dXAsXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MzQxOlxcdC50eF9maXh1cFxcdD0gY3g4MjMxMF90eF9maXh1cCxcXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0zNDItfTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jPTM1Mz1zdGF0aWMgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgcHJvZHVjdHNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTM1NS1cXHRcXHRVU0JfREVWSUNFX0NMQVNTKDB4MDU3MiwgMHhjYjAxLCAweGZmLCAwLCAwKSxcXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzozNTY6XFx0XFx0LmRyaXZlcl9pbmZvID0gKHVuc2lnbmVkIGxvbmcpIFxcdTAwMjZjeDgyMzEwX2luZm9cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0zNTctXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jPTM2MD1NT0RVTEVfREVWSUNFX1RBQkxFKHVzYiwgcHJvZHVjdHMpO1xcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTM2MS1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzozNjI6c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIGN4ODIzMTBfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjM2MzpcXHQubmFtZVxcdFxcdD0gXFxcImN4ODIzMTBfZXRoXFxcIixcXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0zNjQtXFx0LmlkX3RhYmxlXFx0PSBwcm9kdWN0cyxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTM3MS1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzozNzI6bW9kdWxlX3VzYl9kcml2ZXIoY3g4MjMxMF9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTM3My1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDE6MTY6MzIuODkyNjAwNDU1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzEyMTQ2NjM4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSBpbW1lZGlhdGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKktjb25maWcgRGl2ZSBmb3IgQ1g4MjMxMCBFdGhlcm5ldCoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZGlnIGludG8gdGhlIHNvdXJjZS4gSSBuZWVkIHRvIHZlcmlmeSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb24gZm9yIHRoZSBDWDgyMzEwIEV0aGVybmV0IGRyaXZlciwgc3BlY2lmaWNhbGx5IGBDT05GSUdfVVNCX05FVF9DWDgyMzEwX0VUSGAuIEknbSBzdGFydGluZyB3aXRoIEtjb25maWcgYmVjYXVzZSB0aGF0J3MgdGhlIGNlbnRyYWwgcmVwb3NpdG9yeSBmb3IgYnVpbGQgY29uZmlndXJhdGlvbi4gSSdsbCBiZSBsb29raW5nIGZvciB3aGVyZSB0aGlzIG9wdGlvbiBpcyBkZWZpbmVkLCBhbnkgZGVwZW5kZW5jaWVzIGl0IGhhcyAob3RoZXIgVVNCIG5ldHdvcmsgc3RhY2sgZmVhdHVyZXMsIHBlcmhhcHMgc3BlY2lmaWMgVVNCIGNvbnRyb2xsZXJzKSwgaXRzIGRlZmF1bHQgc3RhdGUsIGFuZCBhbnkgaGVscCB0ZXh0IGFzc29jaWF0ZWQgd2l0aCBpdC4gVGhpcydsbCBxdWlja2x5IHRlbGwgbWUgaWYgdGhlIGRyaXZlciBpcyBldmVuICppbnRlbmRlZCogdG8gYmUgaW5jbHVkZWQsIGFuZCB3aGF0IHByZWNvbmRpdGlvbnMgbmVlZCB0byBiZSBtZXQgZm9yIGl0IHRvIGJlIGNvbXBpbGVkIGludG8gdGhlIGltYWdlLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiBpdCdzIG1vZHVsYXIgb3IgYnVpbHQtaW4sIGFuZCBob3cgdG8gY2hhbmdlIGl0cyBidWlsZCBzdGF0dXMuIFRoZW4gSSB3aWxsIHNlZSB3aGF0IHRoZSBidWlsZCBzY3JpcHRzIGRvIHdpdGggaXQuIFRoaXMgaW5mb3JtYXRpb24gd2lsbCBpbmZvcm0gbXkgbmV4dCBzdGVwcyBpbiBlaXRoZXIgZW5hYmxpbmcgaXQgb3IgdHJvdWJsZXNob290aW5nIGl0cyBhYnNlbmNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2Njc3LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiLCJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDE6MTY6MzYuMDE0MDY5NjgxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MTMxMTc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlVTQl9ORVRfQ1g4MjMxMF9FVEhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdXNiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTQ5ND1jb25maWcgVVNCX05FVF9aQVVSVVNcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTUxMS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo1MTI6Y29uZmlnIFVTQl9ORVRfQ1g4MjMxMF9FVEhcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy01MTMtXFx0dHJpc3RhdGUgXFxcIkNvbmV4YW50IENYODIzMTAgVVNCIGV0aGVybmV0IHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvTWFrZWZpbGU9MzU9b2JqLSQoQ09ORklHX1VTQl9TSUVSUkFfTkVUKVxcdCs9IHNpZXJyYV9uZXQub1xcbmRyaXZlcnMvbmV0L3VzYi9NYWtlZmlsZTozNjpvYmotJChDT05GSUdfVVNCX05FVF9DWDgyMzEwX0VUSClcXHQrPSBjeDgyMzEwX2V0aC5vXFxuZHJpdmVycy9uZXQvdXNiL01ha2VmaWxlLTM3LW9iai0kKENPTkZJR19VU0JfTkVUX0NEQ19OQ00pXFx0Kz0gY2RjX25jbS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAxOjE2OjM2LjA2MDIwODcwN1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMxOTg1NDg2OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIFVTQiBOZXR3b3JraW5nIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBsZXQncyBwdWxsIHVwIHRoYXQgYGRyaXZlcnMvbmV0L3VzYi9LY29uZmlnYCBmaWxlLiBJJ20gc3BlY2lmaWNhbGx5IGludGVyZXN0ZWQgaW4sIHNheSwgYXJvdW5kIGxpbmUgNTEyLiBNeSBpbml0aWFsIGh1bmNoIGlzIHRoYXQgd2UncmUgZGVhbGluZyB3aXRoIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgYSAqc3BlY2lmaWMqIFVTQiBuZXR3b3JrIGRldmljZSwgcHJvYmFibHkgcmVsYXRlZCB0byBhIHBhcnRpY3VsYXIgZHJpdmVyIGltcGxlbWVudGF0aW9uLiBJIGV4cGVjdCB0byBzZWUgdGhlIHR5cGljYWwgS2NvbmZpZyBzdHJ1Y3R1cmUg4oCTIGBjb25maWdgIGJsb2NrcywgbWF5YmUgc29tZSBgZGVwZW5kcyBvbmAgc3RhdGVtZW50cywgYSBgc2VsZWN0YCBvciB0d28gaWYgd2UncmUgbHVja3kuIEkgd2FudCB0byBxdWlja2x5IGFzY2VydGFpbiB3aGF0IHRoZSBkZXBlbmRlbmNpZXMgYXJlLCBhbmQgd2hhdCB0aGUgZGVmYXVsdCBzZXR0aW5ncyBtaWdodCBiZS4gQXJlIHRoZXJlIG11bHRpcGxlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBncm91cGVkIHRvZ2V0aGVyIGF0IHRoaXMgbG9jYXRpb24sIG9yIGEgc2luZ2xlIGNvbXBsZXggb3B0aW9uPyBJdCB3aWxsIGJlIGludGVyZXN0aW5nIHRvIHNlZSBpZiBhbnkgb2YgdGhlIGRlcGVuZGVuY2llcyBhcmUgcG9vcmx5IGV4cGxhaW5lZCBvciBpZiB0aGVyZSBhcmUgdW5leHBlY3RlZCBpbnRlcmFjdGlvbnMuIFVsdGltYXRlbHksIEknbSB0cnlpbmcgdG8gcXVpY2tseSBidWlsZCBhIG1lbnRhbCBtYXAgb2YgdGhpcyBzZWN0aW9uIHRvIGlkZW50aWZ5IHBvdGVudGlhbCBhcmVhcyBmb3IgY3VzdG9taXphdGlvbiwgb3IgaWYgSSBzcG90IGEgY29uZmlndXJhdGlvbiB0aGF0IEkgYWxyZWFkeSB1c2UgdGhhdCBtYXkgYmUgaW50ZXJhY3Rpbmcgd2l0aCBhbm90aGVyIHBhcnQgb2YgdGhlIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzE3OCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAxOjE2OjM5LjI1ODc2MDM1OFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg5NDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3VzYi9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDUwMCxcbiAgXCJMaW5lQ291bnRcIjogMzVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDUwMDpcXHRcXHRoZWxwXFxuIDUwMTpcXHRcXHQgIENob29zZSB0aGlzIG9wdGlvbiB0byBzdXBwb3J0IHRoZSB1c2IgbmV0d29ya2luZyBsaW5rcyB1c2VkIGJ5XFxuIDUwMjpcXHRcXHQgIFphdXJ1cyBtb2RlbHMgbGlrZSB0aGUgU0wtNTAwMEQsIFNMLTU1MDAsIFNMLTU2MDAsIEEtMzAwLCBCLTUwMC5cXG4gNTAzOlxcdFxcdCAgVGhpcyBhbHNvIHN1cHBvcnRzIHNvbWUgcmVsYXRlZCBkZXZpY2UgZmlybXdhcmUsIGFzIHVzZWQgaW4gc29tZVxcbiA1MDQ6XFx0XFx0ICBQREFzIGZyb20gT2x5bXB1cyBhbmQgc29tZSBjZWxsIHBob25lcyBmcm9tIE1vdG9yb2xhLlxcbiA1MDU6XFx0XFxuIDUwNjpcXHRcXHQgIElmIHlvdSBpbnN0YWxsIGFuIGFsdGVybmF0ZSBpbWFnZSwgc3VjaCBhcyB0aGUgTGludXggMi42IGJhc2VkXFxuIDUwNzpcXHRcXHQgIHZlcnNpb25zIG9mIE9wZW5aYXVydXMsIHlvdSBzaG91bGQgbm8gbG9uZ2VyIG5lZWQgdG8gc3VwcG9ydCB0aGlzXFxuIDUwODpcXHRcXHQgIHByb3RvY29sLiAgT25seSB0aGUgXFxcImV0aC1mZFxcXCIgb3IgXFxcIm5ldF9mZFxcXCIgZHJpdmVycyBpbiB0aGVzZSBkZXZpY2VzXFxuIDUwOTpcXHRcXHQgIHJlYWxseSBuZWVkIHRoaXMgbm9uLWNvbmZvcm1hbnQgdmFyaWFudCBvZiBDREMgRXRoZXJuZXQgKG9yIGluXFxuIDUxMDpcXHRcXHQgIHNvbWUgY2FzZXMgQ0RDIE1ETE0pIHByb3RvY29sLCBub3QgXFxcImdfZXRoZXJcXFwiLlxcbiA1MTE6XFx0XFxuIDUxMjpcXHRjb25maWcgVVNCX05FVF9DWDgyMzEwX0VUSFxcbiA1MTM6XFx0XFx0dHJpc3RhdGUgXFxcIkNvbmV4YW50IENYODIzMTAgVVNCIGV0aGVybmV0IHBvcnRcXFwiXFxuIDUxNDpcXHRcXHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcXG4gNTE1OlxcdFxcdGhlbHBcXG4gNTE2OlxcdFxcdCAgQ2hvb3NlIHRoaXMgb3B0aW9uIGlmIHlvdSdyZSB1c2luZyBhIENvbmV4YW50IENYODIzMTAtYmFzZWQgQURTTFxcbiA1MTc6XFx0XFx0ICByb3V0ZXIgd2l0aCBVU0IgZXRoZXJuZXQgcG9ydC4gVGhpcyBkcml2ZXIgaXMgZm9yIHJvdXRlcnMgb25seSxcXG4gNTE4OlxcdFxcdCAgaXQgd2lsbCBub3Qgd29yayB3aXRoIEFEU0wgbW9kZW1zICh1c2UgY3hhY3J1IGRyaXZlciBpbnN0ZWFkKS5cXG4gNTE5OlxcdFxcbiA1MjA6XFx0Y29uZmlnIFVTQl9ORVRfS0FMTUlBXFxuIDUyMTpcXHRcXHR0cmlzdGF0ZSBcXFwiU2Ftc3VuZyBLYWxtaWEgYmFzZWQgTFRFIFVTQiBtb2RlbVxcXCJcXG4gNTIyOlxcdFxcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxcbiA1MjM6XFx0XFx0aGVscFxcbiA1MjQ6XFx0XFx0ICBDaG9vc2UgdGhpcyBvcHRpb24gaWYgeW91IGhhdmUgYSBTYW1zdW5nIEthbG1pYSBiYXNlZCBVU0IgbW9kZW1cXG4gNTI1OlxcdFxcdCAgYXMgU2Ftc3VuZyBHVC1CMzczMC5cXG4gNTI2OlxcdFxcbiA1Mjc6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcXG4gNTI4OlxcdFxcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGthbG1pYS5cXG4gNTI5OlxcdFxcbiA1MzA6XFx0Y29uZmlnIFVTQl9ORVRfUU1JX1dXQU5cXG4gNTMxOlxcdFxcdHRyaXN0YXRlIFxcXCJRTUkgV1dBTiBkcml2ZXIgZm9yIFF1YWxjb21tIE1TTSBiYXNlZCAzRyBhbmQgTFRFIG1vZGVtc1xcXCJcXG4gNTMyOlxcdFxcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxcbiA1MzM6XFx0XFx0c2VsZWN0IFVTQl9XRE1cXG4gNTM0OlxcdFxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDE6MTY6MzkuMjU4ODUxNTU4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE4NDU3NTg5NDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkludmVzdGlnYXRpbmcgVVNCIE5ldHdvcmsgRHJpdmVyIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBkaWcgaW50byB0aGUgZGVwZW5kZW5jaWVzIG9mIHRoZSBgVVNCX1VTQk5FVGAgY29uZmlndXJhdGlvbiBvcHRpb24gd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvdXNiL0tjb25maWdgIGZpbGUuIFRoaXMgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhpcyBzcGVjaWZpYyBVU0IgbmV0d29ya2luZyBkcml2ZXIgcmVsYXRlcyB0byBvdGhlciBjb21wb25lbnRzIGluIHRoZSBrZXJuZWwuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgb3RoZXIgbW9kdWxlcyBvciBmZWF0dXJlcyAqbXVzdCogYmUgZW5hYmxlZCBvciBhcmUgbG9naWNhbGx5IGxpbmtlZCBmb3IgYFVTQl9VU0JORVRgIHRvIGZ1bmN0aW9uIGNvcnJlY3RseS4gQXJlIHRoZXJlIGFueSBzcGVjaWZpYyBVU0IgY29yZSBmZWF0dXJlcywgbmV0d29ya2luZyBzdWJzeXN0ZW1zLCBvciBldmVuIGhhcmR3YXJlIGRyaXZlcnMgdGhhdCBhcmUgcHJlcmVxdWlzaXRlcz8gSSBuZWVkIHRvIGtub3cgdGhlIGVudGlyZSBkZXBlbmRlbmN5IGNoYWluIHRvIG1ha2UgaW5mb3JtZWQgZGVjaXNpb25zIGFib3V0IG15IGtlcm5lbCBjb25maWd1cmF0aW9uLiBUaGlzIGluZm9ybWF0aW9uIHdpbGwgcHJldmVudCBidWlsZCBlcnJvcnMgb3IgdW5leHBlY3RlZCBiZWhhdmlvdXIgZG93biB0aGUgbGluZS4gSSB3YW50IHRvIGJ1aWxkIGEgc2VjdXJlIGtlcm5lbCFcblxuXG4iLCJJbnB1dFRva2VucyI6ODA5NCwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDE6MTY6NDEuMTA0NjEzODJaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5Mjc1ODM2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBVU0JfVVNCTkVUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3VzYlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC91c2IvS2NvbmZpZz0xMTM9Y29uZmlnIFVTQl9MQU43OFhYXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xMzEtXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MTMyOmNvbmZpZyBVU0JfVVNCTkVUXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTMzLVxcdHRyaXN0YXRlIFxcXCJNdWx0aS1wdXJwb3NlIFVTQiBOZXR3b3JraW5nIEZyYW1ld29ya1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDE6MTY6NDEuMTUzODk3NTY2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjgwMDE1NDEyMTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipOYXZpZ2F0aW5nIHRoZSBVU0IgTmV0d29yayBEcml2ZXIgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGUgYGRyaXZlcnMvbmV0L3VzYi9LY29uZmlnYCBmaWxlLiBJJ20gZm9jdXNpbmcgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDEzMi4gTXkgaW5pdGlhbCBnb2FsIGhlcmUgaXMgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBhIHNwZWNpZmljIFVTQiBuZXR3b3JrIGRyaXZlciDigJMgbGlrZWx5IG9uZSB0aGF0IEknbSB3b3JraW5nIHdpdGggb3IgdHJvdWJsZXNob290aW5nLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gaG93IHRoaXMgcGFydGljdWxhciBkcml2ZXIgaXMgZXhwb3NlZCB0byB0aGUgYnVpbGQgc3lzdGVtLCB3aGF0IHNldHRpbmdzIGluZmx1ZW5jZSBpdHMgaW5jbHVzaW9uLCBhbmQgcGVyaGFwcyBhbHNvIHJldmlldyBhbnkgYnVpbGQtdGltZSBvciBydW4tdGltZSB2YXJpYWJsZXMgdGhhdCBjYW4gYmUgYWZmZWN0ZWQsIGNvbmZpZ3VyZWQsIG9yIGluZmx1ZW5jZWQuIEknbSBob3BpbmcgdG8gcXVpY2tseSBncmFzcCB0aGUgbG9naWNhbCBmbG93IG9mIHRoZSBgS2NvbmZpZ2Agc3RydWN0dXJlLCBsb29raW5nIGZvciBjbHVlcyB0aGF0IG1pZ2h0IHByb3ZpZGUgaW5zaWdodHMgaW50byBidWlsZCBjb25maWd1cmF0aW9ucyBJIG1pZ2h0IGJlIG1pc3NpbmcsIG9yIHBlcmhhcHMgaWRlbnRpZnkgdGhlIHBhcmFtZXRlcnMgdGhhdCBhcmUgcmVsZXZhbnQgdG8gc29sdmUgbXkgcGFydGljdWxhciBwcm9ibGVtLiBUaGUgbGluZSBudW1iZXIgaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LCBhcyBJJ3ZlIHByb2JhYmx5IGdvdCBzb21lIHByaW9yIGNvbnRleHQgYWJvdXQgdGhlIGZpbGUncyBnZW5lcmFsIHN0cnVjdHVyZSwgc28gbGV0J3Mgc2VlIHdoYXQncyB0aGVyZSBhbmQgd2hhdCB0aGlzIHBhcnQgY29udHJvbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg0MDgsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMToxNjo0OS4xNTU0NDEzNzdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTg5NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvdXNiL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMTI1LFxuICBcIkxpbmVDb3VudFwiOiAzNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTI1OlxcdFxcdCAgTEFONzgwMSA6IFVTQiAzIHRvIDEwLzEwMC8xMDAwIEV0aGVybmV0IGFkYXB0ZXIgKE1BQyBvbmx5KVxcbiAxMjY6XFx0XFxuIDEyNzpcXHRcXHQgIFByb3BlciBQSFkgZHJpdmVyIGlzIHJlcXVpcmVkIGZvciBMQU43ODAxLlxcbiAxMjg6XFx0XFxuIDEyOTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbiAxMzA6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgbGFuNzh4eC5cXG4gMTMxOlxcdFxcbiAxMzI6XFx0Y29uZmlnIFVTQl9VU0JORVRcXG4gMTMzOlxcdFxcdHRyaXN0YXRlIFxcXCJNdWx0aS1wdXJwb3NlIFVTQiBOZXR3b3JraW5nIEZyYW1ld29ya1xcXCJcXG4gMTM0OlxcdFxcdHNlbGVjdCBNSUlcXG4gMTM1OlxcdFxcdGhlbHBcXG4gMTM2OlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgc2V2ZXJhbCBraW5kcyBvZiBuZXR3b3JrIGxpbmtzIG92ZXIgVVNCLFxcbiAxMzc6XFx0XFx0ICB3aXRoIFxcXCJtaW5pZHJpdmVyc1xcXCIgYnVpbHQgYXJvdW5kIGEgY29tbW9uIG5ldHdvcmsgZHJpdmVyIGNvcmVcXG4gMTM4OlxcdFxcdCAgdGhhdCBzdXBwb3J0cyBkZWVwIHF1ZXVlcyBmb3IgZWZmaWNpZW50IHRyYW5zZmVycy4gIChUaGlzIGdpdmVzXFxuIDEzOTpcXHRcXHQgIGJldHRlciBwZXJmb3JtYW5jZSB3aXRoIHNtYWxsIHBhY2tldHMgYW5kIGF0IGhpZ2ggc3BlZWRzKS5cXG4gMTQwOlxcdFxcbiAxNDE6XFx0XFx0ICBUaGUgVVNCIGhvc3QgcnVucyBcXFwidXNibmV0XFxcIiwgYW5kIHRoZSBvdGhlciBlbmQgb2YgdGhlIGxpbmsgbWlnaHQgYmU6XFxuIDE0MjpcXHRcXG4gMTQzOlxcdFxcdCAgLSBBbm90aGVyIFVTQiBob3N0LCB3aGVuIHVzaW5nIFVTQiBcXFwibmV0d29ya1xcXCIgb3IgXFxcImRhdGEgdHJhbnNmZXJcXFwiXFxuIDE0NDpcXHRcXHQgICAgY2FibGVzLiAgVGhlc2UgYXJlIG9mdGVuIHVzZWQgdG8gbmV0d29yayBsYXB0b3BzIHRvIFBDcywgbGlrZVxcbiAxNDU6XFx0XFx0ICAgIFxcXCJMYXBsaW5rXFxcIiBwYXJhbGxlbCBjYWJsZXMgb3Igc29tZSBtb3RoZXJib2FyZHMuICBUaGVzZSByZWx5XFxuIDE0NjpcXHRcXHQgICAgb24gc3BlY2lhbGl6ZWQgY2hpcHMgZnJvbSBtYW55IHN1cHBsaWVycy5cXG4gMTQ3OlxcdFxcbiAxNDg6XFx0XFx0ICAtIEFuIGludGVsbGlnZW50IFVTQiBnYWRnZXQsIHBlcmhhcHMgZW1iZWRkaW5nIGEgTGludXggc3lzdGVtLlxcbiAxNDk6XFx0XFx0ICAgIFRoZXNlIGluY2x1ZGUgUERBcyBydW5uaW5nIExpbnV4IChpUGFxLCBZb3B5LCBaYXVydXMsIGFuZFxcbiAxNTA6XFx0XFx0ICAgIG90aGVycyksIGFuZCBkZXZpY2VzIHRoYXQgaW50ZXJvcGVyYXRlIHVzaW5nIHRoZSBzdGFuZGFyZFxcbiAxNTE6XFx0XFx0ICAgIENEQy1FdGhlcm5ldCBzcGVjaWZpY2F0aW9uIChpbmNsdWRpbmcgbWFueSBjYWJsZSBtb2RlbXMpLlxcbiAxNTI6XFx0XFxuIDE1MzpcXHRcXHQgIC0gTmV0d29yayBhZGFwdGVyIGhhcmR3YXJlIChsaWtlIHRob3NlIGZvciAxMC8xMDAgRXRoZXJuZXQpIHdoaWNoXFxuIDE1NDpcXHRcXHQgICAgdXNlcyB0aGlzIGRyaXZlciBmcmFtZXdvcmsuXFxuIDE1NTpcXHRcXG4gMTU2OlxcdFxcdCAgVGhlIGxpbmsgd2lsbCBhcHBlYXIgd2l0aCBhIG5hbWUgbGlrZSBcXFwidXNiMFxcXCIsIHdoZW4gdGhlIGxpbmsgaXNcXG4gMTU3OlxcdFxcdCAgYSB0d28tbm9kZSBsaW5rLCBvciBcXFwiZXRoMFxcXCIgZm9yIG1vc3QgQ0RDLUV0aGVybmV0IGRldmljZXMuICBUaG9zZVxcbiAxNTg6XFx0XFx0ICB0d28tbm9kZSBsaW5rcyBhcmUgbW9zdCBlYXNpbHkgbWFuYWdlZCB3aXRoIEV0aGVybmV0IEJyaWRnaW5nXFxuIDE1OTpcXHRcXHQgIChDT05GSUdfQlJJREdFKSBpbnN0ZWFkIG9mIHJvdXRpbmcuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAxOjE2OjQ5LjE1NTU0MjQ4NloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMjM2MjkyNjMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipJbnZlc3RpZ2F0aW5nIE5ldHdvcmsgRHJpdmVyIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzIGZvciB0aGVzZSBuZXR3b3JrIGRyaXZlcnMsIHNwZWNpZmljYWxseSB0aGUgb25lcyByZWxhdGVkIHRvIFVTQi4gSSdtIHRoaW5raW5nIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGlzIHRvIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmaWxlcy4gSSdsbCBuZWVkIHRvIGNoZWNrIGBkcml2ZXJzL25ldC9LY29uZmlnYCBhbmQsIHNpbmNlIHdlJ3JlIGludGVyZXN0ZWQgaW4gVVNCLCBhbHNvIGBkcml2ZXJzL25ldC91c2IvS2NvbmZpZ2AuIFRoaXMgd2lsbCBhbGxvdyBtZSB0byB0cmFjZSB3aGF0IG9wdGlvbnMgbmVlZCB0byBiZSBlbmFibGVkIGZvciB2YXJpb3VzIG5ldHdvcmsgZHJpdmVyIGZlYXR1cmVzIHRvIGJlY29tZSBhdmFpbGFibGUuIEtub3dpbmcgdGhlIHBhcmVudCBkZXBlbmRlbmNpZXMgaXMgY3JpdGljYWwgZm9yIHRyb3VibGVzaG9vdGluZywgcG9ydGluZywgb3IgZ2VuZXJhbGx5IHVuZGVyc3RhbmRpbmcgaG93IGFsbCB0aGVzZSBwaWVjZXMgZml0IHRvZ2V0aGVyIGluIHRoZSBuZXR3b3JrIHN0YWNrLiBJdCdzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgY29uZGl0aW9uYWwgbG9naWMgdGhhdCBjb250cm9scyB3aGljaCBkcml2ZXJzIGdldCBidWlsdC4gTGV0J3Mgc2VlIHdoYXQgdGhlIEtjb25maWcgZmlsZXMgcmV2ZWFsLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MzExLCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMToxNjo1MS4zOTE4MzgwODlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MzYwMTM3NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic291cmNlLipkcml2ZXJzL25ldC91c2JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVyc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnPTUzMj1zb3VyY2UgXFxcImRyaXZlcnMvczM5MC9uZXQvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnLTUzMy1cXG5kcml2ZXJzL25ldC9LY29uZmlnOjUzNDpzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3VzYi9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWctNTM1LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMToxNjo1My4xMjc4NTgxNDlaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTg5MzA5Mzk1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czpcblxuKipBbmFseXppbmcgdGhlIFVTQiBOZXR3b3JrIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgVVNCIG5ldHdvcmtpbmcgZHJpdmVyIGNvbmZpZ3VyYXRpb24uIE15IGZpcnN0IHN0ZXAgaXMgdG8gemVybyBpbiBvbiB0aGUgYEtjb25maWdgIG1lbnUsIHNwZWNpZmljYWxseSB0aGUgb25lIGxvY2F0ZWQgdW5kZXIgYGRyaXZlcnMvbmV0L3VzYi9gLiBJIGtub3cgdGhhdCdzIHdoZXJlIHRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZXNpZGUgZm9yIHRoaXMgcGFydCBvZiB0aGUga2VybmVsLiBJJ20gZ29pbmcgdG8gc2NhbiB0aGUgdmVyeSB0b3Agb2YgdGhhdCBmaWxlLCBmb2N1c2luZyBvbiB0aGUgY29uZGl0aW9uYWwgbGluZXMgKHVzaW5nIGBpZmApLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW5pdGlhbCBjb25kaXRpb25zIG9yIGRlcGVuZGVuY2llcyB0aGF0IGRpY3RhdGUgd2hldGhlciB0aGUgcmVzdCBvZiB0aGUgb3B0aW9ucyBpbiB0aGF0IG1lbnUgYXJlIGV2ZW4gKnZpc2libGUqIG9yIHNlbGVjdGFibGUuIFRoaXMgZmlyc3QgYGlmYCBzdGF0ZW1lbnQgb2Z0ZW4gc2V0cyB0aGUgc3RhZ2UgZm9yIHRoZSBlbnRpcmUgVVNCIG5ldHdvcmtpbmcgY29uZmlndXJhdGlvbiBicmFuY2gsIHNvIGl0J3MgYSBjcml0aWNhbCBzdGFydGluZyBwb2ludC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTYxNiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAxOjE2OjU1LjAyMDk1NjE1N1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzcwNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvdXNiL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgVVNCIE5ldHdvcmsgZGV2aWNlcyBjb25maWd1cmF0aW9uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRjb21tZW50IFxcXCJIb3N0LXNpZGUgVVNCIHN1cHBvcnQgaXMgbmVlZGVkIGZvciBVU0IgTmV0d29yayBBZGFwdGVyIHN1cHBvcnRcXFwiXFxuICAgNjpcXHRcXHRkZXBlbmRzIG9uICFVU0IgXFx1MDAyNlxcdTAwMjYgTkVUXFxuICAgNzpcXHRcXG4gICA4OlxcdG1lbnVjb25maWcgVVNCX05FVF9EUklWRVJTXFxuICAgOTpcXHRcXHR0cmlzdGF0ZSBcXFwiVVNCIE5ldHdvcmsgQWRhcHRlcnNcXFwiXFxuICAxMDpcXHRcXHRkZWZhdWx0IFVTQiBpZiBVU0JcXG4gIDExOlxcdFxcdGRlcGVuZHMgb24gVVNCIFxcdTAwMjZcXHUwMDI2IE5FVFxcbiAgMTI6XFx0XFxuICAxMzpcXHRpZiBVU0JfTkVUX0RSSVZFUlNcXG4gIDE0OlxcdFxcbiAgMTU6XFx0Y29uZmlnIFVTQl9DQVRDXFxuICAxNjpcXHRcXHR0cmlzdGF0ZSBcXFwiVVNCIENBVEMgTmV0TWF0ZS1iYXNlZCBFdGhlcm5ldCBkZXZpY2Ugc3VwcG9ydFxcXCJcXG4gIDE3OlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAgMTg6XFx0XFx0aGVscFxcbiAgMTk6XFx0XFx0ICBTYXkgWSBpZiB5b3Ugd2FudCB0byB1c2Ugb25lIG9mIHRoZSBmb2xsb3dpbmcgMTBNYnBzIFVTQiBFdGhlcm5ldFxcbiAgMjA6XFx0XFx0ICBkZXZpY2UgYmFzZWQgb24gdGhlIEVMMTIxMEEgY2hpcC4gU3VwcG9ydGVkIGRldmljZXMgYXJlOlxcbiAgMjE6XFx0XFx0ICBCZWxraW4gRjVVMDExXFxuICAyMjpcXHRcXHQgIEJlbGtpbiBGNVUxMTFcXG4gIDIzOlxcdFxcdCAgQ0FUQyBOZXRNYXRlXFxuICAyNDpcXHRcXHQgIENBVEMgTmV0TWF0ZSBJSVxcbiAgMjU6XFx0XFx0ICBzbWFydEJyaWRnZXMgc21hcnROSUNcXG4gIDI2OlxcdFxcbiAgMjc6XFx0XFx0ICBUaGlzIGRyaXZlciBtYWtlcyB0aGUgYWRhcHRlciBhcHBlYXIgYXMgYSBub3JtYWwgRXRoZXJuZXQgaW50ZXJmYWNlLFxcbiAgMjg6XFx0XFx0ICB0eXBpY2FsbHkgb24gZXRoMCwgaWYgaXQgaXMgdGhlIG9ubHkgZXRoZXJuZXQgZGV2aWNlLCBvciBwZXJoYXBzIG9uXFxuICAyOTpcXHRcXHQgIGV0aDEsIGlmIHlvdSBoYXZlIGEgUENJIG9yIElTQSBldGhlcm5ldCBjYXJkIGluc3RhbGxlZC5cXG4gIDMwOlxcdFxcbiAgMzE6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcXG4gIDMyOlxcdFxcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGNhdGMuXFxuICAzMzpcXHRcXG4gIDM0OlxcdGNvbmZpZyBVU0JfS0FXRVRIXFxuICAzNTpcXHRcXHR0cmlzdGF0ZSBcXFwiVVNCIEtMU0kgS0w1VVNCMTAxLWJhc2VkIGV0aGVybmV0IGRldmljZSBzdXBwb3J0XFxcIlxcbiAgMzY6XFx0XFx0aGVscFxcbiAgMzc6XFx0XFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSBvbmUgb2YgdGhlIGZvbGxvd2luZyAxME1icHMgb25seVxcbiAgMzg6XFx0XFx0ICBVU0IgRXRoZXJuZXQgYWRhcHRlcnMgYmFzZWQgb24gdGhlIEtMU0kgS0w1S1VTQjEwMUIgY2hpcHNldDpcXG4gIDM5OlxcdFxcdCAgM0NvbSAzQzE5MjUwXFxuICA0MDpcXHRcXHQgIEFEUyBVU0ItMTBCVFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMToxNjo1NS4wMjEwOTY2MDdaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzA2ODkyMjgyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoJ3MgSW1wYWN0IGFuZCBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIHBhdGNoIGFuZCBmaWd1cmUgb3V0IGlmIGl0J3MgZXZlbiB3b3J0aCBjb25zaWRlcmluZyBmb3IgZnV6emluZy4gU3BlY2lmaWNhbGx5LCBJJ20gZm9jdXNpbmcgb24gYGN4ODIzMTBfcnhfZml4dXBgLiBMb29raW5nIGF0IHRoZSBjb2RlLCBpdCBzZWVtcyB0aGUgY2hhbmdlIGFkZHJlc3NlcyBhIHNwZWNpZmljIGNvbmRpdGlvbjogYGxlbiA9PSAweGZmZmZgLlxuXG5CZWZvcmUgdGhlIHBhdGNoLCBpZiBgbGVuYCB3YXMgZXF1YWwgdG8gMHhmZmZmLCB0aGUgY29kZSB3b3VsZCBwcmludCBhIFwicm91dGVyIHdhcyByZWJvb3RlZFwiIG1lc3NhZ2UsIHNjaGVkdWxlIHNvbWUgd29yaywgYW5kIHRoZW4uLi4gKmZhbGwgdGhyb3VnaCogdG8gdGhlIGluY29tcGxldGUgcGFja2V0IGhhbmRsaW5nIGxvZ2ljLiBUaGF0J3MgYSBiaXQgb2RkLiBUaGUgZm9sbG93aW5nIGNvZGUgZGVhbHMgd2l0aCB3aGF0IGFwcGVhcnMgdG8gYmUgaW5jb21wbGV0ZSBwYWNrZXRzIGFuZCBhdHRlbXB0cyB0byBzYXZlIHRoZW0gZm9yIHJlYXNzZW1ibHkgbGF0ZXIuXG5cblRoZW4gaXQgaGl0cyBtZTogYGxlbiA9IDB4ZmZmZmAgd2hpY2ggaXMgNjU1MzUsIGEgc3VycHJpc2luZ2x5IGxhcmdlIHZhbHVlISBOb3cgdGhlIHF1ZXN0aW9uIHRoYXQgYXJpc2VzOiBXaGF0J3MgdGhlIHNpemUgYW5kIHR5cGUgb2YgYGRldi1cdTAwM2VwYXJ0aWFsX2RhdGFgPyBJcyBpdCBhIGZpeGVkIGJ1ZmZlciwgb3IgaXMgaXQgcGFydCBvZiBhbiBgc2tiYCBidWZmZXIgd2l0aGluIHRoZSBgdXNibmV0YCBzdHJ1Y3R1cmU/IFRoYXQncyB0aGUgY3JpdGljYWwgcGllY2UgaGVyZSwgd2hldGhlciBpdCdzIHN0YXRpY2FsbHkgYWxsb2NhdGVkIG9yIGR5bmFtaWNhbGx5IG1hbmFnZWQuXG5cbkkgbmVlZCB0byB0cmFjZSBiYWNrIHdoZXJlIGBkZXYtXHUwMDNlcGFydGlhbF9kYXRhYCBpcyBkZWZpbmVkIGFuZCBob3cgaXRzIHNpemUgaXMgZGV0ZXJtaW5lZC4gRWl0aGVyIGluIGBjeDgyMzEwX2JpbmRgIG9yIHRoZSBwYXJlbnQgYHVzYm5ldGAgc3RydWN0dXJlLiBUaGlzIGNvdWxkIGJlIGludGVyZXN0aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDM5NywiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwNiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAxOjE2OjU4LjA5MDAyMjM5N1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg4MzA2MTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGFydGlhbF9kYXRhXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3VzYlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYz0xMzA9c3RhdGljIHZvaWQgY3g4MjMxMF9yZWVuYWJsZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTEzOC0jZGVmaW5lIHBhcnRpYWxfcmVtXFx0ZGF0YVsxXVxcdFxcdC8qIHJlbWFpbmluZyAobWlzc2luZykgZGF0YSBsZW5ndGggKi9cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzoxMzk6I2RlZmluZSBwYXJ0aWFsX2RhdGFcXHRkYXRhWzJdXFx0XFx0LyogcGFydGlhbCBwYWNrZXQgZGF0YSAqL1xcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTE0MC1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYz0xNDE9c3RhdGljIGludCBjeDgyMzEwX2JpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTE3MS1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzoxNzI6XFx0ZGV2LVxcdTAwM2VwYXJ0aWFsX2RhdGEgPSAodW5zaWduZWQgbG9uZykga21hbGxvYyhkZXYtXFx1MDAzZWhhcmRfbXR1LCBHRlBfS0VSTkVMKTtcXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzoxNzM6XFx0aWYgKCFkZXYtXFx1MDAzZXBhcnRpYWxfZGF0YSlcXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0xNzQtXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0yMjEtZXJyX3BhcnRpYWw6XFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MjIyOlxcdGtmcmVlKCh2b2lkICopZGV2LVxcdTAwM2VwYXJ0aWFsX2RhdGEpO1xcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTIyMy1cXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM9MjI2PXN0YXRpYyB2b2lkIGN4ODIzMTBfdW5iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0yMjktXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MjMwOlxcdGtmcmVlKCh2b2lkICopZGV2LVxcdTAwM2VwYXJ0aWFsX2RhdGEpO1xcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTIzMS1cXHRjYW5jZWxfd29ya19zeW5jKFxcdTAwMjZwcml2LVxcdTAwM2VyZWVuYWJsZV93b3JrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jPTI0Mz1zdGF0aWMgaW50IGN4ODIzMTBfcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMjU4LVxcdFxcdHNrYl9wdXQoc2tiMiwgbGVuKTtcXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzoyNTk6XFx0XFx0bWVtY3B5KHNrYjItXFx1MDAzZWRhdGEsICh2b2lkICopZGV2LVxcdTAwM2VwYXJ0aWFsX2RhdGEsXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMjYwLVxcdFxcdCAgICAgICBkZXYtXFx1MDAzZXBhcnRpYWxfbGVuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTI5NC1cXHRcXHRcXHRkZXYtXFx1MDAzZXBhcnRpYWxfcmVtID0gbGVuIC0gc2tiLVxcdTAwM2VsZW47XFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6Mjk1OlxcdFxcdFxcdG1lbWNweSgodm9pZCAqKWRldi1cXHUwMDNlcGFydGlhbF9kYXRhLCBza2ItXFx1MDAzZWRhdGEsXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMjk2LVxcdFxcdFxcdCAgICAgICBkZXYtXFx1MDAzZXBhcnRpYWxfbGVuKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDE6MTY6NTguMTM4ODYxMTQ0WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjc0Mjk0Njc1MzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBXb3J0aCBvZiBGdXp6aW5nIGBjeDgyMzEwX3J4X2ZpeHVwYCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBvYnNlcnZhdGlvbiBpcyBmb2N1c2VkIG9uIGBjeDgyMzEwX3J4X2ZpeHVwYC4gU3BlY2lmaWNhbGx5LCB0aGUgY2FzZSB3aGVyZSB0aGUgbGVuZ3RoIGBsZW5gIGVxdWFscyBgMHhmZmZmYC4gSXQncyBjbGVhciB0aGVyZSdzIGEgcG90ZW50aWFsIG92ZXJmbG93IGNvbmRpdGlvbiBoZXJlLCBzdGVtbWluZyBmcm9tIGhvdyB0aGUgY29kZSBoYW5kbGVzIHBhcnRpYWwgcGFja2V0cyB3aGVuIGBsZW5gIGhpdHMgdGhpcyBtYXhpbXVtIHZhbHVlLiBQcmV2aW91c2x5LCB0aGUgbG9naWMgZmxvd2VkIGludG8gYSBwcm9ibGVtYXRpYyBgaWYgKGxlbiBcdTAwM2Ugc2tiLVx1MDAzZWxlbilgIGNvbmRpdGlvbiB3aGljaCBzZXRzIGBkZXYtXHUwMDNlcGFydGlhbF9yZW0gPSAweGZmZmYgLSBza2ItXHUwMDNlbGVuO2AuIFRoaXMsIGNvdXBsZWQgd2l0aCBob3cgdGhlIG5leHQgcGFja2V0J3MgbGVuZ3RoIGlzIGNhbGN1bGF0ZWQsIGNvdWxkIGxlYWQgdG8gYWxsb2NhdGluZyBhIG1hc3NpdmUgU0tCIGJ1ZmZlciwgb3IgZXZlbiBhbiBvdmVyZmxvdy4gVGhlIGZpeCwgcmV0dXJuaW5nIDAsIGluZGljYXRlcyBhIFJYIGZhaWx1cmUvcGFja2V0IGRyb3AuXG5cbk5vdywgSSBuZWVkIHRvIGV2YWx1YXRlIGlmIGZ1enppbmcgdGhpcyBpcyB3b3J0aHdoaWxlLiBMZXQncyBzZWUgaWYgaXQgaGl0cyBteSBjcml0ZXJpYS5cblxuRmlyc3QsICpyZWFjaGFiaWxpdHkqLiBDYW4gYGN4ODIzMTBgIGJlIHRyaWdnZXJlZCBpbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIHdpdGggc3l6a2FsbGVyPyBZZXMsIGFic29sdXRlbHkuIFVTQiBkcml2ZXJzIGFyZSBlbXVsYXRhYmxlIHZpYSBVU0IgUmF3IEdhZGdldCwgc3l6a2FsbGVyIFVTQiBmdXp6aW5nLCBhbmQgdG9vbHMgbGlrZSBkdW1teV9oY2QuIFN5emthbGxlciByZWd1bGFybHkgdGFja2xlcyBVU0IgZGV2aWNlIGRyaXZlcnMsIGluY2x1ZGluZyB0aGUgYHVzYm5ldGAgbWluaWRyaXZlcnMuIFRoaXMgaXMgcHJvbWlzaW5nLlxuXG5OZXh0LCBkb2VzIHRoaXMgcGF0Y2ggKm1vZGlmeSBjb3JlIGtlcm5lbCBsb2dpYyogb3Igc2lnbmlmaWNhbnQgZHJpdmVycy9hcmNoaXRlY3R1cmVzPyBJdCBkaXJlY3RseSBhbHRlcnMgdGhlIGNvbnRyb2wgZmxvdyB3aXRoaW4gYGN4ODIzMTBfcnhfZml4dXBgLCBzcGVjaWZpY2FsbHkgdGhlIFJYIHBhY2tldCBoYW5kbGluZyB3aGVuIGBsZW4gPT0gMHhmZmZmYC4gVGhpcyBpcyBhIHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgY2hhbmdlLlxuXG5GaW5hbGx5LCBkb2VzIGl0IGZhbGwgaW50byB0aGUgKmV4Y2x1c2lvbnMqIGZvciBmdXp6aW5nPyBMZXQncyBjaGVjayBhZ2FpbnN0IHRoZSBydWxlcy4gVGhpcyBpc24ndCBqdXN0IGRvY3VtZW50YXRpb24gb3IgbG9nZ2luZywgaXNuJ3QgYSBzaW1wbGUgY29uc3RhbnQgY2hhbmdlLCBpcyByZWFjaGFibGUgdmlhIHZpcnR1YWxpemF0aW9uLCBhbmQgaXNuJ3QgYSB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrLiBJbiBmYWN0LCBpdCBjaGFuZ2VzIGFuIFJYIHBhdGggd2l0aGluIGEgVVNCIG5ldHdvcmsgZHJpdmVyIChgY3g4MjMxMF9ldGhgKSwgbW9kaWZ5aW5nIGl0cyBleGVjdXRpb24gcGF0aC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLlxuXG5UaGVyZWZvcmUsIGdpdmVuIHRoZSBzZXZlcml0eSBvZiB0aGUgcG90ZW50aWFsIG92ZXJmbG93IGFuZCBpdHMgcmVhY2hhYmlsaXR5LCBgV29ydGhGdXp6aW5nID0gdHJ1ZWAuXG5cbk5leHQsIEkgbmVlZCB0byBpZGVudGlmeSB0aGUgKkZvY3VzU3ltYm9scyouIFRoZSBjcml0aWNhbCBvbmVzIGFyZSB3aXRoaW4gYGN4ODIzMTBfcnhfZml4dXBgIGFuZCBpdHMgY2FsbGVycy4gVGhlIGtleSBpcyBub3cgdG8gcGlucG9pbnQgZXhhY3RseSBob3cgYGN4ODIzMTBfcnhfZml4dXBgIGlzIGludm9rZWQgZnJvbSBgdXNibmV0YC4gSSBuZWVkIHRvIGRldGVybWluZSBpZiBgY3g4MjMxMF9yeF9maXh1cGAgb3IgaXRzIGNhbGxlciBmdW5jdGlvbnMgd2l0aGluIGB1c2JuZXRgIG9yIGBjeDgyMzEwYCBhcmUgZXhwb3J0ZWQvbm9uLXN0YXRpYy9zdGF0aWMsIHRvIGZpZ3VyZSBvdXQgdGhlIHJpZ2h0IHN5bWJvbHMuIEEgcXVpY2sgYGdyZXBgIGZvciBcInJ4X2ZpeHVwXCIgd2l0aGluIGBkcml2ZXJzL25ldC91c2IvdXNibmV0LmNgIHNob3VsZCBkbyB0aGUgdHJpY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExOTU1LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjY4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAxOjE3OjA1LjU2ODMzMTUyN1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTAwODk1MTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnhfZml4dXBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdXNiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNjU4IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM9MTA1Nz1zdGF0aWMgdm9pZCBhcWMxMTFfcnhfY2hlY2tzdW0oc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTY0IHBrdF9kZXNjKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTEwNzEtXFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jOjEwNzI6c3RhdGljIGludCBhcWMxMTFfcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0xMDczLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYz0xMjQyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gYXFjMTExX2luZm8gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmMtMTI1MS1cXHRcXHRcXHQgIEZMQUdfQVZPSURfVU5MSU5LX1VSQlMgfCBGTEFHX01VTFRJX1BBQ0tFVCxcXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM6MTI1MjpcXHQucnhfZml4dXBcXHQ9IGFxYzExMV9yeF9maXh1cCxcXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmMtMTI1My1cXHQudHhfZml4dXBcXHQ9IGFxYzExMV90eF9maXh1cCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYz0xMjU5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gYXNpeDExMV9pbmZvID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTEyNjgtXFx0XFx0XFx0ICBGTEFHX0FWT0lEX1VOTElOS19VUkJTIHwgRkxBR19NVUxUSV9QQUNLRVQsXFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jOjEyNjk6XFx0LnJ4X2ZpeHVwXFx0PSBhcWMxMTFfcnhfZml4dXAsXFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTEyNzAtXFx0LnR4X2ZpeHVwXFx0PSBhcWMxMTFfdHhfZml4dXAsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM9MTI3OD1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIGFzaXgxMTJfaW5mbyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0xMjg3LVxcdFxcdFxcdCAgRkxBR19BVk9JRF9VTkxJTktfVVJCUyB8IEZMQUdfTVVMVElfUEFDS0VULFxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzoxMjg4OlxcdC5yeF9maXh1cFxcdD0gYXFjMTExX3J4X2ZpeHVwLFxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0xMjg5LVxcdC50eF9maXh1cFxcdD0gYXFjMTExX3R4X2ZpeHVwLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jPTEyOTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mbyB0cmVuZG5ldF9pbmZvID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTEzMDMtXFx0XFx0XFx0ICBGTEFHX0FWT0lEX1VOTElOS19VUkJTIHwgRkxBR19NVUxUSV9QQUNLRVQsXFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jOjEzMDQ6XFx0LnJ4X2ZpeHVwXFx0PSBhcWMxMTFfcnhfZml4dXAsXFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTEzMDUtXFx0LnR4X2ZpeHVwXFx0PSBhcWMxMTFfdHhfZml4dXAsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM9MTMwOD1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIHFuYXBfaW5mbyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0xMzE3LVxcdFxcdFxcdCAgRkxBR19BVk9JRF9VTkxJTktfVVJCUyB8IEZMQUdfTVVMVElfUEFDS0VULFxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzoxMzE4OlxcdC5yeF9maXh1cFxcdD0gYXFjMTExX3J4X2ZpeHVwLFxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0xMzE5LVxcdC50eF9maXh1cFxcdD0gYXFjMTExX3R4X2ZpeHVwLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXguaD0xNjM9c3RydWN0IGFzaXhfZGF0YSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oLTE3MC1cXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oOjE3MTpzdHJ1Y3QgYXNpeF9yeF9maXh1cF9pbmZvIHtcXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oLTE3Mi1cXHRzdHJ1Y3Qgc2tfYnVmZiAqYXhfc2tiO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXguaD0xNzg9c3RydWN0IGFzaXhfY29tbW9uX3ByaXZhdGUge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXguaC0xODMtXFx0dTE2IHByZXN2ZF9waHlfYm1jcjtcXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oOjE4NDpcXHRzdHJ1Y3QgYXNpeF9yeF9maXh1cF9pbmZvIHJ4X2ZpeHVwX2luZm87XFxuZHJpdmVycy9uZXQvdXNiL2FzaXguaC0xODUtXFx0c3RydWN0IG1paV9idXMgKm1kaW87XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oPTIwNj12b2lkIGFzaXhfd3JpdGVfY21kX2FzeW5jKHN0cnVjdCB1c2JuZXQgKmRldiwgdTggY21kLCB1MTYgdmFsdWUsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oLTIwOC1cXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oOjIwOTppbnQgYXNpeF9yeF9maXh1cF9pbnRlcm5hbChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXguaDoyMTA6XFx0XFx0XFx0ICAgc3RydWN0IGFzaXhfcnhfZml4dXBfaW5mbyAqcngpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4Lmg6MjExOmludCBhc2l4X3J4X2ZpeHVwX2NvbW1vbihzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4Lmg6MjEyOnZvaWQgYXNpeF9yeF9maXh1cF9jb21tb25fZnJlZShzdHJ1Y3QgYXNpeF9jb21tb25fcHJpdmF0ZSAqZHApO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4LmgtMjEzLVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM9OTI9c3RhdGljIGludCBhc2l4X2NoZWNrX2hvc3RfZW5hYmxlKHN0cnVjdCB1c2JuZXQgKmRldiwgaW50IGluX3BtKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtMTE0LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjExNTpzdGF0aWMgdm9pZCByZXNldF9hc2l4X3J4X2ZpeHVwX2luZm8oc3RydWN0IGFzaXhfcnhfZml4dXBfaW5mbyAqcngpXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtMTE2LXtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy0xMTctXFx0LyogUmVzZXQgdGhlIHZhcmlhYmxlcyB0aGF0IGhhdmUgYSBsaWZldGltZSBvdXRzaWRlIG9mXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6MTE4OlxcdCAqIGFzaXhfcnhfZml4dXBfaW50ZXJuYWwoKSBzbyB0aGF0IGZ1dHVyZSBwcm9jZXNzaW5nIHN0YXJ0cyBmcm9tIGFcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy0xMTktXFx0ICoga25vd24gc2V0IG9mIGluaXRpYWwgY29uZGl0aW9ucy5cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTEzNS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzoxMzY6aW50IGFzaXhfcnhfZml4dXBfaW50ZXJuYWwoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjEzNzpcXHRcXHRcXHQgICBzdHJ1Y3QgYXNpeF9yeF9maXh1cF9pbmZvICpyeClcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy0xMzgte1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtMTU3LVxcdFxcdGlmIChzaXplICE9ICgofnJ4LVxcdTAwM2VoZWFkZXIgXFx1MDAzZVxcdTAwM2UgMTYpIFxcdTAwMjYgMHg3ZmYpKSB7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6MTU4OlxcdFxcdFxcdG5ldGRldl9lcnIoZGV2LVxcdTAwM2VuZXQsIFxcXCJhc2l4X3J4X2ZpeHVwKCkgRGF0YSBIZWFkZXIgc3luY2hyb25pc2F0aW9uIHdhcyBsb3N0LCByZW1haW5pbmcgJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtMTU5LVxcdFxcdFxcdFxcdCAgIHJ4LVxcdTAwM2VyZW1haW5pbmcpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjE2MDpcXHRcXHRcXHRyZXNldF9hc2l4X3J4X2ZpeHVwX2luZm8ocngpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTE2MS1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy0xODktXFx0XFx0XFx0aWYgKHNpemUgIT0gKCh+cngtXFx1MDAzZWhlYWRlciBcXHUwMDNlXFx1MDAzZSAxNikgXFx1MDAyNiAweDdmZikpIHtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzoxOTA6XFx0XFx0XFx0XFx0bmV0ZGV2X2VycihkZXYtXFx1MDAzZW5ldCwgXFxcImFzaXhfcnhfZml4dXAoKSBCYWQgSGVhZGVyIExlbmd0aCAweCV4LCBvZmZzZXQgJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtMTkxLVxcdFxcdFxcdFxcdFxcdCAgIHJ4LVxcdTAwM2VoZWFkZXIsIG9mZnNldCk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6MTkyOlxcdFxcdFxcdFxcdHJlc2V0X2FzaXhfcnhfZml4dXBfaW5mbyhyeCk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtMTkzLVxcdFxcdFxcdFxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtMTk1LVxcdFxcdFxcdGlmIChzaXplIFxcdTAwM2UgZGV2LVxcdTAwM2VuZXQtXFx1MDAzZW10dSArIEVUSF9ITEVOICsgVkxBTl9ITEVOKSB7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6MTk2OlxcdFxcdFxcdFxcdG5ldGRldl9kYmcoZGV2LVxcdTAwM2VuZXQsIFxcXCJhc2l4X3J4X2ZpeHVwKCkgQmFkIFJYIExlbmd0aCAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy0xOTctXFx0XFx0XFx0XFx0XFx0ICAgc2l6ZSk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6MTk4OlxcdFxcdFxcdFxcdHJlc2V0X2FzaXhfcnhfZml4dXBfaW5mbyhyeCk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtMTk5LVxcdFxcdFxcdFxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtMjMyLVxcdGlmIChza2ItXFx1MDAzZWxlbiAhPSBvZmZzZXQpIHtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzoyMzM6XFx0XFx0bmV0ZGV2X2VycihkZXYtXFx1MDAzZW5ldCwgXFxcImFzaXhfcnhfZml4dXAoKSBCYWQgU0tCIExlbmd0aCAlZCwgJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtMjM0LVxcdFxcdFxcdCAgIHNrYi1cXHUwMDNlbGVuLCBvZmZzZXQpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjIzNTpcXHRcXHRyZXNldF9hc2l4X3J4X2ZpeHVwX2luZm8ocngpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTIzNi1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTI0MS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzoyNDI6aW50IGFzaXhfcnhfZml4dXBfY29tbW9uKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy0yNDMte1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTI0NC1cXHRzdHJ1Y3QgYXNpeF9jb21tb25fcHJpdmF0ZSAqZHAgPSBkZXYtXFx1MDAzZWRyaXZlcl9wcml2O1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjI0NTpcXHRzdHJ1Y3QgYXNpeF9yeF9maXh1cF9pbmZvICpyeCA9IFxcdTAwMjZkcC1cXHUwMDNlcnhfZml4dXBfaW5mbztcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy0yNDYtXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6MjQ3OlxcdHJldHVybiBhc2l4X3J4X2ZpeHVwX2ludGVybmFsKGRldiwgc2tiLCByeCk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtMjQ4LX1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy0yNDktXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6MjUwOnZvaWQgYXNpeF9yeF9maXh1cF9jb21tb25fZnJlZShzdHJ1Y3QgYXNpeF9jb21tb25fcHJpdmF0ZSAqZHApXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtMjUxLXtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzoyNTI6XFx0c3RydWN0IGFzaXhfcnhfZml4dXBfaW5mbyAqcng7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtMjUzLVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtMjU2LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjI1NzpcXHRyeCA9IFxcdTAwMjZkcC1cXHUwMDNlcnhfZml4dXBfaW5mbztcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy0yNTgtXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9OTU1PXN0YXRpYyB2b2lkIGF4ODg3NzJfdW5iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTYzLVxcdGF4ODg3NzJfbWRpb191bnJlZ2lzdGVyKHByaXYpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo5NjQ6XFx0YXNpeF9yeF9maXh1cF9jb21tb25fZnJlZShkZXYtXFx1MDAzZWRyaXZlcl9wcml2KTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTY1LVxcdC8qIERyb3AgdGhlIFBNIHVzYWdlIHJlZiB0YWtlbiBpbiBiaW5kKCkgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz05Njk9c3RhdGljIHZvaWQgYXg4ODE3OF91bmJpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTcwLXtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTcxOlxcdGFzaXhfcnhfZml4dXBfY29tbW9uX2ZyZWUoZGV2LVxcdTAwM2Vkcml2ZXJfcHJpdik7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTk3Mi1cXHRrZnJlZShkZXYtXFx1MDAzZWRyaXZlcl9wcml2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0xMzY2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gYXg4ODc3Ml9pbmZvID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEzNzItXFx0LmZsYWdzID0gRkxBR19FVEhFUiB8IEZMQUdfRlJBTUlOR19BWCB8IEZMQUdfTVVMVElfUEFDS0VULFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMzczOlxcdC5yeF9maXh1cCA9IGFzaXhfcnhfZml4dXBfY29tbW9uLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMzc0LVxcdC50eF9maXh1cCA9IGFzaXhfdHhfZml4dXAsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MTM3Nz1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIGF4ODg3NzJiX2luZm8gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTM4My1cXHQuZmxhZ3MgPSBGTEFHX0VUSEVSIHwgRkxBR19GUkFNSU5HX0FYIHwgRkxBR19NVUxUSV9QQUNLRVQsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEzODQ6XFx0LnJ4X2ZpeHVwID0gYXNpeF9yeF9maXh1cF9jb21tb24sXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEzODUtXFx0LnR4X2ZpeHVwID0gYXNpeF90eF9maXh1cCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0xMzg5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gbHhhdXNiX3QxbF9pbmZvID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEzOTUtXFx0LmZsYWdzID0gRkxBR19FVEhFUiB8IEZMQUdfRlJBTUlOR19BWCB8IEZMQUdfTVVMVElfUEFDS0VULFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMzk2OlxcdC5yeF9maXh1cCA9IGFzaXhfcnhfZml4dXBfY29tbW9uLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMzk3LVxcdC50eF9maXh1cCA9IGFzaXhfdHhfZml4dXAsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MTQwMT1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIGF4ODgxNzhfaW5mbyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xNDA5LVxcdFxcdCBGTEFHX01VTFRJX1BBQ0tFVCxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTQxMDpcXHQucnhfZml4dXAgPSBhc2l4X3J4X2ZpeHVwX2NvbW1vbixcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTQxMS1cXHQudHhfZml4dXAgPSBhc2l4X3R4X2ZpeHVwLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTE0MjM9c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mbyBoZzIwZjlfaW5mbyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xNDI4LVxcdC5mbGFncyA9IEZMQUdfRVRIRVIgfCBGTEFHX0ZSQU1JTkdfQVggfCBGTEFHX01VTFRJX1BBQ0tFVCxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTQyOTpcXHQucnhfZml4dXAgPSBhc2l4X3J4X2ZpeHVwX2NvbW1vbixcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTQzMC1cXHQudHhfZml4dXAgPSBhc2l4X3R4X2ZpeHVwLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTE0MzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mbyBseWNvbnN5c19maWJlcmdlY2tvMTAwX2luZm8gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTQ0MS1cXHRcXHQgRkxBR19NVUxUSV9QQUNLRVQsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjE0NDI6XFx0LnJ4X2ZpeHVwID0gYXNpeF9yeF9maXh1cF9jb21tb24sXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTE0NDMtXFx0LnR4X2ZpeHVwID0gYXNpeF90eF9maXh1cCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jPTE4PXN0cnVjdCBheDg4MTcyYV9wcml2YXRlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jLTI0LVxcdGludCB1c2VfZW1iZHBoeTtcXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYzoyNTpcXHRzdHJ1Y3QgYXNpeF9yeF9maXh1cF9pbmZvIHJ4X2ZpeHVwX2luZm87XFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtMjYtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jPTI2MT1zdGF0aWMgaW50IGF4ODgxNzJhX3Jlc2V0KHN0cnVjdCB1c2JuZXQgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jLTMzOC1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYzozMzk6c3RhdGljIGludCBheDg4MTcyYV9yeF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtMzQwLXtcXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy0zNDEtXFx0c3RydWN0IGF4ODgxNzJhX3ByaXZhdGUgKmRwID0gZGV2LVxcdTAwM2Vkcml2ZXJfcHJpdjtcXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYzozNDI6XFx0c3RydWN0IGFzaXhfcnhfZml4dXBfaW5mbyAqcnggPSBcXHUwMDI2ZHAtXFx1MDAzZXJ4X2ZpeHVwX2luZm87XFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtMzQzLVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jOjM0NDpcXHRyZXR1cm4gYXNpeF9yeF9maXh1cF9pbnRlcm5hbChkZXYsIHNrYiwgcngpO1xcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jLTM0NS19XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYz0zNDc9Y29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIGF4ODgxNzJhX2luZm8gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy0zNTUtXFx0XFx0IEZMQUdfTVVMVElfUEFDS0VULFxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jOjM1NjpcXHQucnhfZml4dXAgPSBheDg4MTcyYV9yeF9maXh1cCxcXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy0zNTctXFx0LnR4X2ZpeHVwID0gYXNpeF90eF9maXh1cCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYz0xMzQyPWF4ODgxNzlfcnhfY2hlY2tzdW0oc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyICpwa3RfaGRyKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jLTEzNTYtXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jOjEzNTc6c3RhdGljIGludCBheDg4MTc5X3J4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMtMTM1OC17XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmM9MTcxMj1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIGF4ODgxNzlfaW5mbyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYy0xNzIwLVxcdC5mbGFncyA9IEZMQUdfRVRIRVIgfCBGTEFHX0ZSQU1JTkdfQVgsXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jOjE3MjE6XFx0LnJ4X2ZpeHVwID0gYXg4ODE3OV9yeF9maXh1cCxcXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMtMTcyMi1cXHQudHhfZml4dXAgPSBheDg4MTc5X3R4X2ZpeHVwLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jPTE3MjU9c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mbyBheDg4MTc4YV9pbmZvID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jLTE3MzMtXFx0LmZsYWdzID0gRkxBR19FVEhFUiB8IEZMQUdfRlJBTUlOR19BWCxcXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmM6MTczNDpcXHQucnhfZml4dXAgPSBheDg4MTc5X3J4X2ZpeHVwLFxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYy0xNzM1LVxcdC50eF9maXh1cCA9IGF4ODgxNzlfdHhfZml4dXAsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmM9MTczOD1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIGN5cHJlc3NfR1gzX2luZm8gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMtMTc0Ni1cXHQuZmxhZ3MgPSBGTEFHX0VUSEVSIHwgRkxBR19GUkFNSU5HX0FYLFxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYzoxNzQ3OlxcdC5yeF9maXh1cCA9IGF4ODgxNzlfcnhfZml4dXAsXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jLTE3NDgtXFx0LnR4X2ZpeHVwID0gYXg4ODE3OV90eF9maXh1cCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYz0xNzUxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gZGxpbmtfZHViMTMxMl9pbmZvID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jLTE3NTktXFx0LmZsYWdzID0gRkxBR19FVEhFUiB8IEZMQUdfRlJBTUlOR19BWCxcXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmM6MTc2MDpcXHQucnhfZml4dXAgPSBheDg4MTc5X3J4X2ZpeHVwLFxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYy0xNzYxLVxcdC50eF9maXh1cCA9IGF4ODgxNzlfdHhfZml4dXAsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmM9MTc2ND1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIHNpdGVjb21faW5mbyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYy0xNzcyLVxcdC5mbGFncyA9IEZMQUdfRVRIRVIgfCBGTEFHX0ZSQU1JTkdfQVgsXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jOjE3NzM6XFx0LnJ4X2ZpeHVwID0gYXg4ODE3OV9yeF9maXh1cCxcXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMtMTc3NC1cXHQudHhfZml4dXAgPSBheDg4MTc5X3R4X2ZpeHVwLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jPTE3Nzc9c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mbyBzYW1zdW5nX2luZm8gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMtMTc4NS1cXHQuZmxhZ3MgPSBGTEFHX0VUSEVSIHwgRkxBR19GUkFNSU5HX0FYLFxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYzoxNzg2OlxcdC5yeF9maXh1cCA9IGF4ODgxNzlfcnhfZml4dXAsXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jLTE3ODctXFx0LnR4X2ZpeHVwID0gYXg4ODE3OV90eF9maXh1cCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYz0xNzkwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gbGVub3ZvX2luZm8gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMtMTc5OC1cXHQuZmxhZ3MgPSBGTEFHX0VUSEVSIHwgRkxBR19GUkFNSU5HX0FYLFxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYzoxNzk5OlxcdC5yeF9maXh1cCA9IGF4ODgxNzlfcnhfZml4dXAsXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jLTE4MDAtXFx0LnR4X2ZpeHVwID0gYXg4ODE3OV90eF9maXh1cCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYz0xODAzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gYmVsa2luX2luZm8gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMtMTgxMS1cXHQuZmxhZ3NcXHQ9IEZMQUdfRVRIRVIgfCBGTEFHX0ZSQU1JTkdfQVgsXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jOjE4MTI6XFx0LnJ4X2ZpeHVwID0gYXg4ODE3OV9yeF9maXh1cCxcXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMtMTgxMy1cXHQudHhfZml4dXAgPSBheDg4MTc5X3R4X2ZpeHVwLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jPTE4MTY9c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mbyB0b3NoaWJhX2luZm8gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMtMTgyNC1cXHQuZmxhZ3NcXHQ9IEZMQUdfRVRIRVIgfCBGTEFHX0ZSQU1JTkdfQVgsXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jOjE4MjU6XFx0LnJ4X2ZpeHVwID0gYXg4ODE3OV9yeF9maXh1cCxcXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMtMTgyNi1cXHQudHhfZml4dXAgPSBheDg4MTc5X3R4X2ZpeHVwLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jPTE4Mjk9c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mbyBtY3RfaW5mbyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYy0xODM3LVxcdC5mbGFnc1xcdD0gRkxBR19FVEhFUiB8IEZMQUdfRlJBTUlOR19BWCxcXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmM6MTgzODpcXHQucnhfZml4dXAgPSBheDg4MTc5X3J4X2ZpeHVwLFxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYy0xODM5LVxcdC50eF9maXh1cCA9IGF4ODgxNzlfdHhfZml4dXAsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmM9MTg0Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIGF0X3VtYzIwMDBfaW5mbyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYy0xODUwLVxcdC5mbGFncyAgPSBGTEFHX0VUSEVSIHwgRkxBR19GUkFNSU5HX0FYLFxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYzoxODUxOlxcdC5yeF9maXh1cCA9IGF4ODgxNzlfcnhfZml4dXAsXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jLTE4NTItXFx0LnR4X2ZpeHVwID0gYXg4ODE3OV90eF9maXh1cCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYz0xODU1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gYXRfdW1jMjAwX2luZm8gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMtMTg2My1cXHQuZmxhZ3MgID0gRkxBR19FVEhFUiB8IEZMQUdfRlJBTUlOR19BWCxcXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmM6MTg2NDpcXHQucnhfZml4dXAgPSBheDg4MTc5X3J4X2ZpeHVwLFxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYy0xODY1LVxcdC50eF9maXh1cCA9IGF4ODgxNzlfdHhfZml4dXAsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmM9MTg2OD1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIGF0X3VtYzIwMDBzcF9pbmZvID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jLTE4NzYtXFx0LmZsYWdzICA9IEZMQUdfRVRIRVIgfCBGTEFHX0ZSQU1JTkdfQVgsXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jOjE4Nzc6XFx0LnJ4X2ZpeHVwID0gYXg4ODE3OV9yeF9maXh1cCxcXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMtMTg3OC1cXHQudHhfZml4dXAgPSBheDg4MTc5X3R4X2ZpeHVwLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19lZW0uYz04OT1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmVlbV90eF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX2VlbS5jLTE1My1cXG5kcml2ZXJzL25ldC91c2IvY2RjX2VlbS5jOjE1NDpzdGF0aWMgaW50IGVlbV9yeF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvdXNiL2NkY19lZW0uYy0xNTUte1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19lZW0uYz0zMzA9c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mbyBlZW1faW5mbyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfZWVtLmMtMzMzLVxcdC5iaW5kID1cXHRcXHRlZW1fYmluZCxcXG5kcml2ZXJzL25ldC91c2IvY2RjX2VlbS5jOjMzNDpcXHQucnhfZml4dXAgPVxcdGVlbV9yeF9maXh1cCxcXG5kcml2ZXJzL25ldC91c2IvY2RjX2VlbS5jLTMzNS1cXHQudHhfZml4dXAgPVxcdGVlbV90eF9maXh1cCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYz00NzI9c3RhdGljIGludCB1c2JuZXRfY2RjX3p0ZV9iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX2V0aGVyLmMtNDg4LSAqL1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYzo0ODk6aW50IHVzYm5ldF9jZGNfenRlX3J4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC91c2IvY2RjX2V0aGVyLmMtNDkwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYy00OTgtfVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYzo0OTk6RVhQT1JUX1NZTUJPTF9HUEwodXNibmV0X2NkY196dGVfcnhfZml4dXApO1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYy01MDAtXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX2V0aGVyLmM9NTUxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm9cXHR6dGVfY2RjX2luZm8gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX2V0aGVyLmMtNTU4LVxcdC5tYW5hZ2VfcG93ZXIgPVxcdHVzYm5ldF9tYW5hZ2VfcG93ZXIsXFxuZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jOjU1OTpcXHQucnhfZml4dXAgPSB1c2JuZXRfY2RjX3p0ZV9yeF9maXh1cCxcXG5kcml2ZXJzL25ldC91c2IvY2RjX2V0aGVyLmMtNTYwLX07XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYz0zNjY9c3RhdGljIHN0cnVjdCBza19idWZmICpjZGNfbWJpbV9wcm9jZXNzX2RncmFtKHN0cnVjdCB1c2JuZXQgKmRldiwgdTggKmJ1Ziwgc2l6ZV90IGxlbiwgdTE2IHRjaSlcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTQxMS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYzo0MTI6c3RhdGljIGludCBjZGNfbWJpbV9yeF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2JfaW4pXFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtNDEzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jPTU1Mz1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIGNkY19tYmltX2luZm8gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy01NTgtXFx0Lm1hbmFnZV9wb3dlciA9IGNkY19tYmltX21hbmFnZV9wb3dlcixcXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYzo1NTk6XFx0LnJ4X2ZpeHVwID0gY2RjX21iaW1fcnhfZml4dXAsXFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtNTYwLVxcdC50eF9maXh1cCA9IGNkY19tYmltX3R4X2ZpeHVwLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM9NTc3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gY2RjX21iaW1faW5mb196bHAgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy01ODItXFx0Lm1hbmFnZV9wb3dlciA9IGNkY19tYmltX21hbmFnZV9wb3dlcixcXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYzo1ODM6XFx0LnJ4X2ZpeHVwID0gY2RjX21iaW1fcnhfZml4dXAsXFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtNTg0LVxcdC50eF9maXh1cCA9IGNkY19tYmltX3R4X2ZpeHVwLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM9NTk2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gY2RjX21iaW1faW5mb19uZHBfdG9fZW5kID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtNjAxLVxcdC5tYW5hZ2VfcG93ZXIgPSBjZGNfbWJpbV9tYW5hZ2VfcG93ZXIsXFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM6NjAyOlxcdC5yeF9maXh1cCA9IGNkY19tYmltX3J4X2ZpeHVwLFxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTYwMy1cXHQudHhfZml4dXAgPSBjZGNfbWJpbV90eF9maXh1cCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jPTYxMT1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIGNkY19tYmltX2luZm9fYXZvaWRfYWx0c2V0dGluZ190b2dnbGUgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy02MTYtXFx0Lm1hbmFnZV9wb3dlciA9IGNkY19tYmltX21hbmFnZV9wb3dlcixcXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYzo2MTc6XFx0LnJ4X2ZpeHVwID0gY2RjX21iaW1fcnhfZml4dXAsXFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtNjE4LVxcdC50eF9maXh1cCA9IGNkY19tYmltX3R4X2ZpeHVwLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYz0xNzI1PUVYUE9SVF9TWU1CT0xfR1BMKGNkY19uY21fcnhfdmVyaWZ5X25kcDMyKTtcXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTE3MjYtXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYzoxNzI3OmludCBjZGNfbmNtX3J4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYl9pbilcXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTE3Mjgte1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0xODQ4LX1cXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jOjE4NDk6RVhQT1JUX1NZTUJPTF9HUEwoY2RjX25jbV9yeF9maXh1cCk7XFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0xODUwLVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYz0xOTE1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gY2RjX25jbV9pbmZvID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0xOTIyLVxcdC5zdGF0dXMgPSBjZGNfbmNtX3N0YXR1cyxcXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jOjE5MjM6XFx0LnJ4X2ZpeHVwID0gY2RjX25jbV9yeF9maXh1cCxcXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTE5MjQtXFx0LnR4X2ZpeHVwID0gY2RjX25jbV90eF9maXh1cCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM9MTkyOT1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIGNkY19uY21femxwX2luZm8gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTE5MzYtXFx0LnN0YXR1cyA9IGNkY19uY21fc3RhdHVzLFxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM6MTkzNzpcXHQucnhfZml4dXAgPSBjZGNfbmNtX3J4X2ZpeHVwLFxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMTkzOC1cXHQudHhfZml4dXAgPSBjZGNfbmNtX3R4X2ZpeHVwLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYz0xOTQzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gYXBwbGVfdGV0aGVyaW5nX2ludGVyZmFjZV9pbmZvID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0xOTUwLVxcdC5zdGF0dXMgPSBjZGNfbmNtX3N0YXR1cyxcXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jOjE5NTE6XFx0LnJ4X2ZpeHVwID0gY2RjX25jbV9yeF9maXh1cCxcXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTE5NTItXFx0LnR4X2ZpeHVwID0gY2RjX25jbV90eF9maXh1cCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM9MTk1Nz1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIGFwcGxlX3ByaXZhdGVfaW50ZXJmYWNlX2luZm8gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTE5NjQtXFx0LnN0YXR1cyA9IGNkY19uY21fc3RhdHVzLFxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM6MTk2NTpcXHQucnhfZml4dXAgPSBjZGNfbmNtX3J4X2ZpeHVwLFxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMTk2Ni1cXHQudHhfZml4dXAgPSBjZGNfbmNtX3R4X2ZpeHVwLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYz0xOTcxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gd3dhbl9pbmZvID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0xOTc4LVxcdC5zdGF0dXMgPSBjZGNfbmNtX3N0YXR1cyxcXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jOjE5Nzk6XFx0LnJ4X2ZpeHVwID0gY2RjX25jbV9yeF9maXh1cCxcXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTE5ODAtXFx0LnR4X2ZpeHVwID0gY2RjX25jbV90eF9maXh1cCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM9MTk4NT1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIHd3YW5fbm9hcnBfaW5mbyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMTk5Mi1cXHQuc3RhdHVzID0gY2RjX25jbV9zdGF0dXMsXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYzoxOTkzOlxcdC5yeF9maXh1cCA9IGNkY19uY21fcnhfZml4dXAsXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0xOTk0LVxcdC50eF9maXh1cCA9IGNkY19uY21fdHhfZml4dXAsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2g5MjAwLmM9MjQ4PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqY2g5MjAwX3R4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jaDkyMDAuYy0yODgtXFxuZHJpdmVycy9uZXQvdXNiL2NoOTIwMC5jOjI4OTpzdGF0aWMgaW50IGNoOTIwMF9yeF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvdXNiL2NoOTIwMC5jLTI5MC17XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2g5MjAwLmM9Mzk2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gY2g5MjAwX2luZm8gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2g5MjAwLmMtMzk5LVxcdC5iaW5kID0gY2g5MjAwX2JpbmQsXFxuZHJpdmVycy9uZXQvdXNiL2NoOTIwMC5jOjQwMDpcXHQucnhfZml4dXAgPSBjaDkyMDBfcnhfZml4dXAsXFxuZHJpdmVycy9uZXQvdXNiL2NoOTIwMC5jLTQwMS1cXHQudHhfZml4dXAgPSBjaDkyMDBfdHhfZml4dXAsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYz0yMjY9c3RhdGljIHZvaWQgY3g4MjMxMF91bmJpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTI0Mi0gKi9cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzoyNDM6c3RhdGljIGludCBjeDgyMzEwX3J4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0yNDQte1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM9MzM1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm9cXHRjeDgyMzEwX2luZm8gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0zMzktXFx0LnVuYmluZFxcdFxcdD0gY3g4MjMxMF91bmJpbmQsXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MzQwOlxcdC5yeF9maXh1cFxcdD0gY3g4MjMxMF9yeF9maXh1cCxcXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0zNDEtXFx0LnR4X2ZpeHVwXFx0PSBjeDgyMzEwX3R4X2ZpeHVwLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2RtOTYwMS5jPTMzOD1zdGF0aWMgaW50IGRtOTYwMV9iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvZG05NjAxLmMtNDIwLVxcbmRyaXZlcnMvbmV0L3VzYi9kbTk2MDEuYzo0MjE6c3RhdGljIGludCBkbTk2MDFfcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3VzYi9kbTk2MDEuYy00MjIte1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2RtOTYwMS5jPTU0NT1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIGRtOTYwMV9pbmZvID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2RtOTYwMS5jLTU0OC1cXHQuYmluZFxcdFxcdD0gZG05NjAxX2JpbmQsXFxuZHJpdmVycy9uZXQvdXNiL2RtOTYwMS5jOjU0OTpcXHQucnhfZml4dXBcXHQ9IGRtOTYwMV9yeF9maXh1cCxcXG5kcml2ZXJzL25ldC91c2IvZG05NjAxLmMtNTUwLVxcdC50eF9maXh1cFxcdD0gZG05NjAxX3R4X2ZpeHVwLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2dsNjIwYS5jPTYyPXN0cnVjdCBnbF9oZWFkZXIge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2dsNjIwYS5jLTY2LVxcbmRyaXZlcnMvbmV0L3VzYi9nbDYyMGEuYzo2NzpzdGF0aWMgaW50IGdlbmVsaW5rX3J4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC91c2IvZ2w2MjBhLmMtNjgte1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2dsNjIwYS5jPTE4NT1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvXFx0Z2VuZWxpbmtfaW5mbyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9nbDYyMGEuYy0xODgtXFx0LmJpbmQgPVxcdFxcdGdlbmVsaW5rX2JpbmQsXFxuZHJpdmVycy9uZXQvdXNiL2dsNjIwYS5jOjE4OTpcXHQucnhfZml4dXAgPVxcdGdlbmVsaW5rX3J4X2ZpeHVwLFxcbmRyaXZlcnMvbmV0L3VzYi9nbDYyMGEuYy0xOTAtXFx0LnR4X2ZpeHVwID1cXHRnZW5lbGlua190eF9maXh1cCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9odWF3ZWlfY2RjX25jbS5jPTE4Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIGh1YXdlaV9jZGNfbmNtX2luZm8gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvaHVhd2VpX2NkY19uY20uYy0xODctXFx0Lm1hbmFnZV9wb3dlciA9IGh1YXdlaV9jZGNfbmNtX21hbmFnZV9wb3dlcixcXG5kcml2ZXJzL25ldC91c2IvaHVhd2VpX2NkY19uY20uYzoxODg6XFx0LnJ4X2ZpeHVwID0gY2RjX25jbV9yeF9maXh1cCxcXG5kcml2ZXJzL25ldC91c2IvaHVhd2VpX2NkY19uY20uYy0xODktXFx0LnR4X2ZpeHVwID0gY2RjX25jbV90eF9maXh1cCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9pbnQ1MXgxLmMtMjYtXFxuZHJpdmVycy9uZXQvdXNiL2ludDUxeDEuYzoyNzpzdGF0aWMgaW50IGludDUxeDFfcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3VzYi9pbnQ1MXgxLmMtMjgte1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2ludDUxeDEuYz0xMjI9c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mbyBpbnQ1MXgxX2luZm8gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvaW50NTF4MS5jLTEyNC1cXHQuYmluZCAgICAgICAgPSBpbnQ1MXgxX2JpbmQsXFxuZHJpdmVycy9uZXQvdXNiL2ludDUxeDEuYzoxMjU6XFx0LnJ4X2ZpeHVwICAgID0gaW50NTF4MV9yeF9maXh1cCxcXG5kcml2ZXJzL25ldC91c2IvaW50NTF4MS5jLTEyNi1cXHQudHhfZml4dXAgICAgPSBpbnQ1MXgxX3R4X2ZpeHVwLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2thbG1pYS5jPTIyOT1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvdXNiL2thbG1pYS5jOjIzMDprYWxtaWFfcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3VzYi9rYWxtaWEuYy0yMzEte1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2thbG1pYS5jPTM0MD1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIGthbG1pYV9pbmZvID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2thbG1pYS5jLTM0My1cXHQuYmluZCA9IGthbG1pYV9iaW5kLFxcbmRyaXZlcnMvbmV0L3VzYi9rYWxtaWEuYzozNDQ6XFx0LnJ4X2ZpeHVwID0ga2FsbWlhX3J4X2ZpeHVwLFxcbmRyaXZlcnMvbmV0L3VzYi9rYWxtaWEuYy0zNDUtXFx0LnR4X2ZpeHVwID0ga2FsbWlhX3R4X2ZpeHVwXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGctdmw2MDAuYz04Nj1zdGF0aWMgdm9pZCB2bDYwMF91bmJpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sZy12bDYwMC5jLTk1LVxcbmRyaXZlcnMvbmV0L3VzYi9sZy12bDYwMC5jOjk2OnN0YXRpYyBpbnQgdmw2MDBfcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3VzYi9sZy12bDYwMC5jLTk3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sZy12bDYwMC5jPTMwMT1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvXFx0dmw2MDBfaW5mbyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sZy12bDYwMC5jLTMwNi1cXHQuc3RhdHVzXFx0XFx0PSB1c2JuZXRfY2RjX3N0YXR1cyxcXG5kcml2ZXJzL25ldC91c2IvbGctdmw2MDAuYzozMDc6XFx0LnJ4X2ZpeHVwXFx0PSB2bDYwMF9yeF9maXh1cCxcXG5kcml2ZXJzL25ldC91c2IvbGctdmw2MDAuYy0zMDgtXFx0LnR4X2ZpeHVwXFx0PSB2bDYwMF90eF9maXh1cCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9tY3M3ODMwLmM9NDcwPXN0YXRpYyBpbnQgbWNzNzgzMF9iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbWNzNzgzMC5jLTUxMS0vKiBUaGUgY2hpcCBhbHdheXMgYXBwZW5kcyBhIHN0YXR1cyBieXRlIHRoYXQgd2UgbmVlZCB0byBzdHJpcCAqL1xcbmRyaXZlcnMvbmV0L3VzYi9tY3M3ODMwLmM6NTEyOnN0YXRpYyBpbnQgbWNzNzgzMF9yeF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvdXNiL21jczc4MzAuYy01MTMte1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL21jczc4MzAuYz01NjE9c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mbyBtb3NjaGlwX2luZm8gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbWNzNzgzMC5jLTU2My1cXHQuYmluZFxcdFxcdD0gbWNzNzgzMF9iaW5kLFxcbmRyaXZlcnMvbmV0L3VzYi9tY3M3ODMwLmM6NTY0OlxcdC5yeF9maXh1cFxcdD0gbWNzNzgzMF9yeF9maXh1cCxcXG5kcml2ZXJzL25ldC91c2IvbWNzNzgzMC5jLTU2NS1cXHQuZmxhZ3NcXHRcXHQ9IEZMQUdfRVRIRVIgfCBGTEFHX0xJTktfSU5UUixcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9tY3M3ODMwLmM9NTcxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gc2l0ZWNvbV9pbmZvID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL21jczc4MzAuYy01NzMtXFx0LmJpbmRcXHRcXHQ9IG1jczc4MzBfYmluZCxcXG5kcml2ZXJzL25ldC91c2IvbWNzNzgzMC5jOjU3NDpcXHQucnhfZml4dXBcXHQ9IG1jczc4MzBfcnhfZml4dXAsXFxuZHJpdmVycy9uZXQvdXNiL21jczc4MzAuYy01NzUtXFx0LmZsYWdzXFx0XFx0PSBGTEFHX0VUSEVSIHwgRkxBR19MSU5LX0lOVFIsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbmV0MTA4MC5jPTMyMT1zdGF0aWMgdm9pZCBuY19lbnN1cmVfc3luYyhzdHJ1Y3QgdXNibmV0ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbmV0MTA4MC5jLTMzOC1cXG5kcml2ZXJzL25ldC91c2IvbmV0MTA4MC5jOjMzOTpzdGF0aWMgaW50IG5ldDEwODBfcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3VzYi9uZXQxMDgwLmMtMzQwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9uZXQxMDgwLmM9NDg2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm9cXHRuZXQxMDgwX2luZm8gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbmV0MTA4MC5jLTQ5MS1cXHQuY2hlY2tfY29ubmVjdCA9IG5ldDEwODBfY2hlY2tfY29ubmVjdCxcXG5kcml2ZXJzL25ldC91c2IvbmV0MTA4MC5jOjQ5MjpcXHQucnhfZml4dXAgPVxcdG5ldDEwODBfcnhfZml4dXAsXFxuZHJpdmVycy9uZXQvdXNiL25ldDEwODAuYy00OTMtXFx0LnR4X2ZpeHVwID1cXHRuZXQxMDgwX3R4X2ZpeHVwLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3BlZ2FzdXMuYz00NTc9c3RhdGljIHZvaWQgcmVhZF9idWxrX2NhbGxiYWNrKHN0cnVjdCB1cmIgKnVyYilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9wZWdhc3VzLmMtNTY2LVxcbmRyaXZlcnMvbmV0L3VzYi9wZWdhc3VzLmM6NTY3OnN0YXRpYyB2b2lkIHJ4X2ZpeHVwKHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdClcXG5kcml2ZXJzL25ldC91c2IvcGVnYXN1cy5jLTU2OC17XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcGVnYXN1cy5jPTExNDI9c3RhdGljIGludCBwZWdhc3VzX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3BlZ2FzdXMuYy0xMTgwLVxcbmRyaXZlcnMvbmV0L3VzYi9wZWdhc3VzLmM6MTE4MTpcXHR0YXNrbGV0X3NldHVwKFxcdTAwMjZwZWdhc3VzLVxcdTAwM2VyeF90bCwgcnhfZml4dXApO1xcbmRyaXZlcnMvbmV0L3VzYi9wZWdhc3VzLmMtMTE4Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTE1Nz1zdGF0aWMgYm9vbCBxbWltdXhfaGFzX3NsYXZlcyhzdHJ1Y3QgdXNibmV0ICpkZXYpXFxuLS1cXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDE6MTc6MDUuNjE4NDI4OTg0WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIyNDk3MzE3ODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipOYXZpZ2F0aW5nIHRoZSBgdXNibmV0LmNgIFNvdXJjZSoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByb2xlIGFuZCB1c2FnZSBvZiB0aGUgYHJ4X2ZpeHVwYCBmdW5jdGlvbiB3aXRoaW4gYHVzYm5ldC5jYC4gTXkgZmlyc3Qgc3RlcCBpcyB0byB0cmFjZSB3aGVyZSBpdCdzIGFjdHVhbGx5ICpjYWxsZWQqIHdpdGhpbiB0aGF0IGZpbGUuIEknbSBnb2luZyB0byBxdWlja2x5IHNjYW4gdGhyb3VnaCB0aGUgY29kZSwgbG9va2luZyBmb3IgZGlyZWN0IGludm9jYXRpb25zIG9mIGByeF9maXh1cGAuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBnb29kIG92ZXJ2aWV3IG9mIHRoZSBjb250ZXh0cyBpbiB3aGljaCB0aGlzIGZ1bmN0aW9uIGlzIHJlbGV2YW50IOKAkyB3aGljaCBwYXJ0cyBvZiB0aGUgVVNCIG5ldHdvcmsgZHJpdmVyIGFyZSBpbnRlcmFjdGluZyB3aXRoIGl0LiBJJ2xsIGJlIGxvb2tpbmcgZm9yIGNsdWVzIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlIHJlZ2FyZGluZyB0aGUgbmF0dXJlIG9mIHRoZSBkYXRhIGJlaW5nIHByb2Nlc3NlZCBhbmQgdGhlIHN0YWdlIG9mIHRoZSByZWNlaXZlIHByb2Nlc3MgaW4gd2hpY2ggYHJ4X2ZpeHVwYCBpcyBpbnZvbHZlZC4gVW5kZXJzdGFuZGluZyB0aGUgY2FsbCBzaXRlcyBpcyBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgcHVycG9zZSBvZiB0aGlzIGZ1bmN0aW9uIGFuZCBpdHMgaW50ZW5kZWQgdXNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTUzMCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAxOjE3OjA3Ljg2ODE2MzQ3NVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDgwMDY5ODYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnhfZml4dXBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYz0zMTI9c3RhdGljIHZvaWQgX191c2JuZXRfc3RhdHVzX3N0b3BfZm9yY2Uoc3RydWN0IHVzYm5ldCAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jLTMyMi0vKiBQYXNzZXMgdGhpcyBwYWNrZXQgdXAgdGhlIHN0YWNrLCB1cGRhdGluZyBpdHMgYWNjb3VudGluZy5cXG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmM6MzIzOiAqIFNvbWUgbGluayBwcm90b2NvbHMgYmF0Y2ggcGFja2V0cywgc28gdGhlaXIgcnhfZml4dXAgcGF0aHNcXG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmMtMzI0LSAqIGNhbiByZXR1cm4gY2xvbmVzIGFzIHdlbGwgYXMganVzdCBtb2RpZnkgdGhlIG9yaWdpbmFsIHNrYi5cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYz0zMjY9dm9pZCB1c2JuZXRfc2tiX3JldHVybihzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmMtMzM2LVxcbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYzozMzc6XFx0Lyogb25seSB1cGRhdGUgaWYgdW5zZXQgdG8gYWxsb3cgbWluaWRyaXZlciByeF9maXh1cCBvdmVycmlkZSAqL1xcbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYy0zMzgtXFx0aWYgKHNrYi1cXHUwMDNlcHJvdG9jb2wgPT0gMClcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYz01Njk9c3RhdGljIGlubGluZSBpbnQgcnhfcHJvY2VzcyhzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jLTU3MC17XFxuZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jOjU3MTpcXHRpZiAoZGV2LVxcdTAwM2Vkcml2ZXJfaW5mby1cXHUwMDNlcnhfZml4dXAgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmM6NTcyOlxcdCAgICAhZGV2LVxcdTAwM2Vkcml2ZXJfaW5mby1cXHUwMDNlcnhfZml4dXAoZGV2LCBza2IpKSB7XFxuZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jOjU3MzpcXHRcXHQvKiBXaXRoIFJYX0FTU0VNQkxFLCByeF9maXh1cCgpIG11c3QgdXBkYXRlIGNvdW50ZXJzICovXFxuZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jLTU3NC1cXHRcXHRpZiAoIShkZXYtXFx1MDAzZWRyaXZlcl9pbmZvLVxcdTAwM2VmbGFncyBcXHUwMDI2IEZMQUdfUlhfQVNTRU1CTEUpKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMToxNzowNy45MTYxNzQ2MzFaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDIxMTY1MjY3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIENvbmV4YW50IENYODIzMTAgVVNCIEV0aGVybmV0IERyaXZlcidzIFJYIFBhdGgqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoZSBgcnhfcHJvY2Vzc2AgZnVuY3Rpb24gd2l0aGluIGBkcml2ZXJzL25ldC91c2IvdXNibmV0LmNgIGlzIHRoZSBrZXkg4oCTIGl0IGNhbGxzIGBkZXYtXHUwMDNlZHJpdmVyX2luZm8tXHUwMDNlcnhfZml4dXAoZGV2LCBza2IpYC4gVGhlIG1vZGlmaWNhdGlvbiBJJ20gaW50ZXJlc3RlZCBpbiBpcyBgY3g4MjMxMF9yeF9maXh1cGAsIHdoaWNoIHJlc2lkZXMgaW4gYGN4ODIzMTBfZXRoLmNgLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIGRldGVybWluZSBob3cgYWNjZXNzaWJsZSBgY3g4MjMxMF9yeF9maXh1cGAgaXM6IGlzIGl0IGFuIGVudHJ5IHBvaW50LCBhbiBleHBvcnRlZCBzeW1ib2wsIG5vbi1zdGF0aWMsIG9yIGlzIGl0IHN0YXRpYz9cblxuQSBxdWljayBjaGVjayBjb25maXJtcyBpdCdzIGRlY2xhcmVkIGFzIGBzdGF0aWMgaW50IGN4ODIzMTBfcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKWAuIFNvLCBpdCdzICpzdXBwb3NlZCogdG8gYmUgbGltaXRlZCBpbiBzY29wZS4gQnV0IHRoZSBjcnVjaWFsIHF1ZXN0aW9uIGlzIHdoZXRoZXIgaXRzIGFkZHJlc3MgaXMgdGFrZW4gYW55d2hlcmUuIEFoLCBoZXJlIGl0IGlzOiBgY3g4MjMxMF9yeF9maXh1cGAgKmlzKiBwYXNzZWQgYnkgcG9pbnRlciB0byBgY3g4MjMxMF9pbmZvYC5cblxuYGBgY1xuc3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mb1x0Y3g4MjMxMF9pbmZvID0ge1xuXHQuZGVzY3JpcHRpb25cdD0gXCJDb25leGFudCBDWDgyMzEwIFVTQiBldGhlcm5ldFwiLFxuXHQuZmxhZ3NcdFx0PSBGTEFHX0VUSEVSLFxuXHQuYmluZFx0XHQ9IGN4ODIzMTBfYmluZCxcblx0LnVuYmluZFx0XHQ9IGN4ODIzMTBfdW5iaW5kLFxuXHQucnhfZml4dXBcdD0gY3g4MjMxMF9yeF9maXh1cCxcblx0LnR4X2ZpeHVwXHQ9IGN4ODIzMTBfdHhfZml4dXAsXG59O1xuYGBgXG5cbkJlY2F1c2UgaXRzIGFkZHJlc3MgaXMgYXNzaWduZWQgdG8gYGN4ODIzMTBfaW5mby5yeF9maXh1cGAsIHRoZSBjb21waWxlciAqY2Fubm90KiBpbmxpbmUgYGN4ODIzMTBfcnhfZml4dXBgIGludG8gYW55IGNhbGxlci4gU2luY2UgYHJ4X3Byb2Nlc3NgIGluIGB1c2JuZXQuY2AgY2FsbHMgaXQgdGhyb3VnaCBhIGZ1bmN0aW9uIHBvaW50ZXIsIHRoZSBgY3g4MjMxMF9yeF9maXh1cGAgd2lsbCBuZWNlc3NhcmlseSBleGlzdCBhcyBhIGRpc3RpbmN0IGZ1bmN0aW9uIHN5bWJvbCBpbiB0aGUgb2JqZWN0IGZpbGUuIFRoYXQncyBnb29kIHRvIGtub3cgZm9yIGZ1cnRoZXIgYW5hbHlzaXMuXG5cbldoaWxlIEknbSBoZXJlLCBJIHNob3VsZCB0YWtlIGEgbG9vayBhdCB0aGUgb3RoZXIgc3ltYm9scyBpbiBgY3g4MjMxMF9ldGguY2AgYW5kIGNoZWNrIG91dCB0aGUgZnVuY3Rpb25zIGBjeDgyMzEwX3JlZW5hYmxlX3dvcmtgIGFuZCBgY3g4MjMxMF9iaW5kYC4gSnVzdCBjb3ZlcmluZyBhbGwgdGhlIGJhc2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjIwNiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMToxNzoxMi4xMjc4MzAwOTZaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MDQyNzA2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5zdGF0aWMgXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jPTQzPXN0cnVjdCBjeDgyMzEwX3ByaXYge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtNTMtICovXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6NTQ6c3RhdGljIGludCBjeDgyMzEwX2NtZChzdHJ1Y3QgdXNibmV0ICpkZXYsIGVudW0gY3g4MjMxMF9jbWQgY21kLCBib29sIHJlcGx5LFxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTU1LVxcdFxcdCAgICAgICB1OCAqd2RhdGEsIGludCB3bGVuLCB1OCAqcmRhdGEsIGludCBybGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMTE5LVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjEyMDpzdGF0aWMgaW50IGN4ODIzMTBfZW5hYmxlX2V0aGVybmV0KHN0cnVjdCB1c2JuZXQgKmRldilcXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0xMjEte1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMTI5LVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjEzMDpzdGF0aWMgdm9pZCBjeDgyMzEwX3JlZW5hYmxlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTEzMS17XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0xNDAtXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MTQxOnN0YXRpYyBpbnQgY3g4MjMxMF9iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMTQyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTIyNS1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzoyMjY6c3RhdGljIHZvaWQgY3g4MjMxMF91bmJpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0yMjcte1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMjQyLSAqL1xcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjI0MzpzdGF0aWMgaW50IGN4ODIzMTBfcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTI0NC17XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0zMTYtLyogVFggaXMgZWFzeSwganVzdCBhZGQgMiBieXRlcyBvZiBsZW5ndGggYXQgdGhlIGJlZ2lubmluZyAqL1xcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjMxNzpzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmN4ODIzMTBfdHhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTMxOC1cXHRcXHRcXHRcXHQgICAgICAgZ2ZwX3QgZmxhZ3MpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0zMzQtXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MzM1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm9cXHRjeDgyMzEwX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMzM2LVxcdC5kZXNjcmlwdGlvblxcdD0gXFxcIkNvbmV4YW50IENYODIzMTAgVVNCIGV0aGVybmV0XFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTM1Mi1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzozNTM6c3RhdGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkIHByb2R1Y3RzW10gPSB7XFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMzU0LVxcdHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jPTM2MD1NT0RVTEVfREVWSUNFX1RBQkxFKHVzYiwgcHJvZHVjdHMpO1xcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTM2MS1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzozNjI6c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIGN4ODIzMTBfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTM2My1cXHQubmFtZVxcdFxcdD0gXFxcImN4ODIzMTBfZXRoXFxcIixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDE6MTc6MTIuMTczODc3NDQyWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU4MjA2MzE5NDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgdGhlIENYODIzMTAgRXRoZXJuZXQgRHJpdmVyIGZvciBGdXp6aW5nKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBmb2N1cyBpcyBvbiBwcmVwYXJpbmcgdGhpcyBkcml2ZXIgZm9yIGZ1enppbmcuIEZpcnN0LCBJIG5lZWQgdG8gaWRlbnRpZnkgdGhlIGtleSBhcmVhcyBhbmQgY29uZmlndXJhdGlvbnMuIEknbSBzdGFydGluZyB3aXRoIGBtb2R1bGVfdXNiX2RyaXZlcihjeDgyMzEwX2RyaXZlcilgIGluIGBjeDgyMzEwX2V0aC5jYC4gVGhlIGBjeDgyMzEwX2RyaXZlcmAgc3RydWN0dXJlIGlzIGNyaXRpY2FsIGhlcmUuIEl0J3MgcmVnaXN0ZXJlZCBhbmQgaW5jbHVkZXMgc3RhbmRhcmQgVVNCIGRyaXZlciBvcGVyYXRpb25zOiBwcm9iZSwgZGlzY29ubmVjdCwgc3VzcGVuZCwgYW5kIHJlc3VtZSwgYWxsIGhhbmRsZWQgdGhyb3VnaCBgdXNibmV0YCBmdW5jdGlvbnMuIFNwZWNpZmljYWxseSwgdGhlIG1vZGlmaWVkIGZ1bmN0aW9uIGBjeDgyMzEwX3J4X2ZpeHVwYCBpcyBpbXBvcnRhbnQuIFRoaXMgc3VnZ2VzdHMgYSBwb3RlbnRpYWwgYXJlYSBmb3IgZnV6emluZy5cblxuTm93LCBsZXQncyB2ZXJpZnkgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSSd2ZSBjb25maXJtZWQgdGhhdCBgVVNCX05FVF9DWDgyMzEwX0VUSGAgaW4gYGRyaXZlcnMvbmV0L3VzYi9LY29uZmlnYCBkZXBlbmRzIG9uIGBVU0JfVVNCTkVUYC4gRnVydGhlcm1vcmUsIGBVU0JfVVNCTkVUYCBkZXBlbmRzIG9uIGBNSUlgIGFuZCBgVVNCX05FVF9EUklWRVJTYC4gYFVTQl9ORVRfRFJJVkVSU2AgaW4gdHVybiBkZXBlbmRzIG9uIGBVU0JgIGFuZCBgTkVUYC4gVGhlcmVmb3JlLCB0byBidWlsZCB0aGUgZHJpdmVyLCBJJ2xsIG5lZWQgYFVTQl9ORVRfQ1g4MjMxMF9FVEhgIGFuZCBgVVNCX1VTQk5FVGAgKG9yIGp1c3QgYFVTQl9ORVRfQ1g4MjMxMF9FVEhgLCBzaW5jZSB0aGUgbGF0dGVyIGlzIGltcGxpZWQpLiBJJ2xsIGFkZCB0aGVzZSB0byB0aGUgYEVuYWJsZUNvbmZpZ3NgIGxpc3QuXG5cbkxvb2tpbmcgYXQgYGRyaXZlcnMvbmV0L3VzYi9NYWtlZmlsZWAsIHRoZSBvYmplY3QgZmlsZSBgY3g4MjMxMF9ldGgub2AgaXMgYnVpbHQgaWYgYENPTkZJR19VU0JfTkVUX0NYODIzMTBfRVRIYCBpcyBlbmFibGVkLCBhbmQgYHVzYm5ldC5vYCBpZiBgQ09ORklHX1VTQl9VU0JORVRgIGlzIGVuYWJsZWQuXG5cbkluIHRlcm1zIG9mIGZ1enppbmcsIHRoZSBndWlkYW5jZSBzYXlzIHRvIGlkZW50aWZ5IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMsIHByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMuIFNpbmNlIGBjeDgyMzEwX3J4X2ZpeHVwYCBpcyBjYWxsZWQgdGhyb3VnaCBhIGZ1bmN0aW9uIHBvaW50ZXIsIGl0IGlzIGluZGVlZCBhbiBhcHByb3ByaWF0ZSBmdW5jdGlvbiB0byBmb2N1cyBvbi4gU28sIEkgd2lsbCBpbmNsdWRlIGBcImN4ODIzMTBfcnhfZml4dXBcImAgaW4gdGhlIGBGb2N1c1N5bWJvbHNgIGxpc3QuXG5cbkZpbmFsbHksIEknbGwgbWFrZSBzdXJlIGFsbCB0aGUgZ3VpZGFuY2UgaXMgZm9sbG93ZWQsIGVzcGVjaWFsbHkgdGhlIGNhbGwgdG8gYHNldC1yZXN1bHRzYC4gXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4MzQzLCJPdXRwdXRUb2tlbnMiOjE4MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMToxNzoxNy45OTQ1MTE4MjZaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NzQyMTkwNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVVNCX05FVF9DWDgyMzEwX0VUSFwiLFxuICAgIFwiVVNCX1VTQk5FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImN4ODIzMTBfcnhfZml4dXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGZ1bmN0aW9uYWwgZmxvdyBidWcgaW4gdGhlIFJYIHBhY2tldCBwcm9jZXNzaW5nIGxvZ2ljIG9mIHRoZSBjeDgyMzEwX2V0aCBVU0IgbmV0d29yayBkcml2ZXIuIFByZXZpb3VzbHksIHdoZW4gYW4gUlggcGFja2V0IGhhZCBsZW5ndGggMHhmZmZmIChzaWduYWxpbmcgcm91dGVyIHJlYm9vdCksIHRoZSBmdW5jdGlvbiBzY2hlZHVsZWQgYSByZS1lbmFibGUgd29ya2VyIGJ1dCBmZWxsIHRocm91Z2ggaW50byBwYXJ0aWFsIHBhY2tldCBoYW5kbGluZywgd2hpY2ggY291bGQgbGVhZCB0byBtYWxmb3JtZWQgcGFja2V0IHByb2Nlc3Npbmcgb3Igb3V0LW9mLWJvdW5kcy9vdmVyZmxvdyBpc3N1ZXMuIFRoZSBwYXRjaCByZXR1cm5zIDAgdG8gcHJvcGVybHkgZHJvcCB0aGUgcGFja2V0LiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBVU0IgZW11bGF0aW9uL2Z1enppbmcgKGUuZy4gUmF3IEdhZGdldCAvIGR1bW15X2hjZCkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVVNCX05FVF9DWDgyMzEwX0VUSFwiLFxuICAgIFwiVVNCX1VTQk5FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImN4ODIzMTBfcnhfZml4dXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGZ1bmN0aW9uYWwgZmxvdyBidWcgaW4gdGhlIFJYIHBhY2tldCBwcm9jZXNzaW5nIGxvZ2ljIG9mIHRoZSBjeDgyMzEwX2V0aCBVU0IgbmV0d29yayBkcml2ZXIuIFByZXZpb3VzbHksIHdoZW4gYW4gUlggcGFja2V0IGhhZCBsZW5ndGggMHhmZmZmIChzaWduYWxpbmcgcm91dGVyIHJlYm9vdCksIHRoZSBmdW5jdGlvbiBzY2hlZHVsZWQgYSByZS1lbmFibGUgd29ya2VyIGJ1dCBmZWxsIHRocm91Z2ggaW50byBwYXJ0aWFsIHBhY2tldCBoYW5kbGluZywgd2hpY2ggY291bGQgbGVhZCB0byBtYWxmb3JtZWQgcGFja2V0IHByb2Nlc3Npbmcgb3Igb3V0LW9mLWJvdW5kcy9vdmVyZmxvdyBpc3N1ZXMuIFRoZSBwYXRjaCByZXR1cm5zIDAgdG8gcHJvcGVybHkgZHJvcCB0aGUgcGFja2V0LiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBVU0IgZW11bGF0aW9uL2Z1enppbmcgKGUuZy4gUmF3IEdhZGdldCAvIGR1bW15X2hjZCkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAxOjE3OjE4LjA4MTk0MTY3WiIsIlNlcSI6MjgsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTM1MDQyNTgxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAxOjE3OjE4LjA4MjUzMzE1WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MTEzNDk4MzAyNTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYW4gZWFybHkgJ3JldHVybiAwOycgd2hlbiAnbGVuID09IDB4ZmZmZicgaW4gY3g4MjMxMF9yeF9maXh1cCgpIHRvIGFib3J0IHByb2Nlc3Npbmcgd2hlbiB0aGUgcm91dGVyIHJlYm9vdHMgYW5kIHJlLWVuYWJsaW5nIHdvcmsgaXMgc2NoZWR1bGVkLiBQcmV2aW91c2x5LCBleGVjdXRpb24gZmVsbCB0aHJvdWdoIGludG8gcGFydGlhbCBwYWNrZXQgaGFuZGxpbmcsIHdoaWNoIGNvdWxkIGxlYWQgdG8gb3V0LW9mLWJvdW5kcyByZWFkcyBvbiBzdWJzZXF1ZW50IHBhY2tldHMuIFxcblxcblRoZSBmaXggb25seSBtb2RpZmllcyBjb250cm9sIGZsb3cgdG8gZGlzY2FyZCB0aGUgc2tiIGFuZCBkb2VzIG5vdCBhbGxvY2F0ZSwgaW5pdGlhbGl6ZSwgcmVhZCwgb3IgY29weSBhbnkgdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSBvciBrZXJuZWwgc3RydWN0dXJlcyB0byB1c2VyIHNwYWNlLiBBbnkgbWVtb3J5IHNhZmV0eSBpc3N1ZXMgcHJldmVudGVkIG9yIHRvdWNoZWQgYnkgdGhpcyBjb2RlIGFyZSBvdXQtb2YtYm91bmRzIGFjY2VzcyAvIGludmFsaWQgc3RhdGUgYnVncyBjYXVnaHQgYnkgS0FTQU4sIG5vdCB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZXMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWVkZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYTdkNjFkNjQwZDY3ZjI0ZGM5ZTYyZWQ2YjE3ZTNmZTA2YWM4NzQ2ZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgU2VwIDMgMDE6MTY6MjUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYyBiL2RyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jXG5pbmRleCAwNjhhY2IwNTJhZGIwLi41ZGY2NTdhY2YzZDU1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmNcbisrKyBiL2RyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jXG5AQCAtMjgyLDYgKzI4Miw3IEBAIHN0YXRpYyBpbnQgY3g4MjMxMF9yeF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRcdGlmIChsZW4gPT0gMHhmZmZmKSB7XG4gXHRcdFx0bmV0ZGV2X2luZm8oZGV2LVx1MDAzZW5ldCwgXCJyb3V0ZXIgd2FzIHJlYm9vdGVkLCByZS1lbmFibGluZyBldGhlcm5ldCBtb2RlXCIpO1xuIFx0XHRcdHNjaGVkdWxlX3dvcmsoXHUwMDI2cHJpdi1cdTAwM2VyZWVuYWJsZV93b3JrKTtcbitcdFx0XHRyZXR1cm4gMDtcbiBcdFx0fSBlbHNlIGlmIChsZW4gXHUwMDNlIENYODIzMTBfTVRVKSB7XG4gXHRcdFx0bmV0ZGV2X2VycihkZXYtXHUwMDNlbmV0LCBcIlJYIHBhY2tldCB0b28gbG9uZzogJWQgQlxcblwiLCBsZW4pO1xuIFx0XHRcdHJldHVybiAwO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDE6MTc6MTguMDgyNTM0MTVaIiwiU2VxIjozMCwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTQzODc4NDc2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoYXQgc25pcHBldDpcblxuKipEaXZpbmcgaW50byB0aGUgY3g4MjMxMCBFdGhlcm5ldCBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoaXMgcGF0Y2guIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gdGhlIGBkcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguY2AgZmlsZS4gVGhhdCdzIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50LCB0aGUgY29yZSBvZiB0aGUgZHJpdmVyIGluIHF1ZXN0aW9uLiBJJ2xsIG5lZWQgdG8gdXNlIGByZWFkLWZpbGVgIHRvIGdldCB0aGUgY29udGV4dCByaWdodC4gSSdtIGZvY3VzaW5nIG9uIGBjeDgyMzEwX3J4X2ZpeHVwYCByaWdodCBub3cuIFRoaXMgc3Ryb25nbHkgc3VnZ2VzdHMgdGhhdCBJIHNob3VsZCBzcGVjaWZpY2FsbHkgbG9vayBmb3IgUlgtcmVsYXRlZCBjb2RlLiBXaXRoIGByZWFkLWZpbGVgIEkgY2FuIHF1aWNrbHkgY2hlY2sgdGhhdCBwaWVjZSBvZiBjb2RlIGFuZCBpZGVudGlmeSBwb3RlbnRpYWwgaXNzdWVzLiBJJ2xsIG5lZWQgdG8gbG9vayBhdCB0aGUgc3Vycm91bmRpbmcgY29kZSBhcyB3ZWxsIHRvIGJ1aWxkIHRoZSBjb3JyZWN0IG1lbnRhbCBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTMwLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMToxNzoyMy41MjEzMjM0MTJaIiwiU2VxIjozMSwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEzMDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI1MCxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDI1MDpcXHRcXHQgKiBJZiB0aGUgbGFzdCBza2IgZW5kZWQgd2l0aCBhbiBpbmNvbXBsZXRlIHBhY2tldCwgdGhpcyBza2IgY29udGFpbnNcXG4gMjUxOlxcdFxcdCAqIGVuZCBvZiB0aGF0IHBhY2tldCBhdCB0aGUgYmVnaW5uaW5nLlxcbiAyNTI6XFx0XFx0ICovXFxuIDI1MzpcXHRcXHRpZiAoZGV2LVxcdTAwM2VwYXJ0aWFsX3JlbSkge1xcbiAyNTQ6XFx0XFx0XFx0bGVuID0gZGV2LVxcdTAwM2VwYXJ0aWFsX2xlbiArIGRldi1cXHUwMDNlcGFydGlhbF9yZW07XFxuIDI1NTpcXHRcXHRcXHRza2IyID0gYWxsb2Nfc2tiKGxlbiwgR0ZQX0FUT01JQyk7XFxuIDI1NjpcXHRcXHRcXHRpZiAoIXNrYjIpXFxuIDI1NzpcXHRcXHRcXHRcXHRyZXR1cm4gMDtcXG4gMjU4OlxcdFxcdFxcdHNrYl9wdXQoc2tiMiwgbGVuKTtcXG4gMjU5OlxcdFxcdFxcdG1lbWNweShza2IyLVxcdTAwM2VkYXRhLCAodm9pZCAqKWRldi1cXHUwMDNlcGFydGlhbF9kYXRhLFxcbiAyNjA6XFx0XFx0XFx0ICAgICAgIGRldi1cXHUwMDNlcGFydGlhbF9sZW4pO1xcbiAyNjE6XFx0XFx0XFx0bWVtY3B5KHNrYjItXFx1MDAzZWRhdGEgKyBkZXYtXFx1MDAzZXBhcnRpYWxfbGVuLCBza2ItXFx1MDAzZWRhdGEsXFxuIDI2MjpcXHRcXHRcXHQgICAgICAgZGV2LVxcdTAwM2VwYXJ0aWFsX3JlbSk7XFxuIDI2MzpcXHRcXHRcXHR1c2JuZXRfc2tiX3JldHVybihkZXYsIHNrYjIpO1xcbiAyNjQ6XFx0XFx0XFx0c2tiX3B1bGwoc2tiLCAoZGV2LVxcdTAwM2VwYXJ0aWFsX3JlbSArIDEpIFxcdTAwMjYgfjEpO1xcbiAyNjU6XFx0XFx0XFx0ZGV2LVxcdTAwM2VwYXJ0aWFsX3JlbSA9IDA7XFxuIDI2NjpcXHRcXHRcXHRpZiAoc2tiLVxcdTAwM2VsZW4gXFx1MDAzYyAyKVxcbiAyNjc6XFx0XFx0XFx0XFx0cmV0dXJuIDE7XFxuIDI2ODpcXHRcXHR9XFxuIDI2OTpcXHRcXG4gMjcwOlxcdFxcdC8qIGEgc2tiIGNhbiBjb250YWluIG11bHRpcGxlIHBhY2tldHMgKi9cXG4gMjcxOlxcdFxcdHdoaWxlIChza2ItXFx1MDAzZWxlbiBcXHUwMDNlIDEpIHtcXG4gMjcyOlxcdFxcdFxcdC8qIGZpcnN0IHR3byBieXRlcyBhcmUgcGFja2V0IGxlbmd0aCAqL1xcbiAyNzM6XFx0XFx0XFx0bGVuID0gc2tiLVxcdTAwM2VkYXRhWzBdIHwgKHNrYi1cXHUwMDNlZGF0YVsxXSBcXHUwMDNjXFx1MDAzYyA4KTtcXG4gMjc0OlxcdFxcdFxcdHNrYl9wdWxsKHNrYiwgMik7XFxuIDI3NTpcXHRcXG4gMjc2OlxcdFxcdFxcdC8qIGlmIGxhc3QgcGFja2V0IGluIHRoZSBza2IsIGxldCB1c2JuZXQgdG8gcHJvY2VzcyBpdCAqL1xcbiAyNzc6XFx0XFx0XFx0aWYgKGxlbiA9PSBza2ItXFx1MDAzZWxlbiB8fCBsZW4gKyAxID09IHNrYi1cXHUwMDNlbGVuKSB7XFxuIDI3ODpcXHRcXHRcXHRcXHRza2JfdHJpbShza2IsIGxlbik7XFxuIDI3OTpcXHRcXHRcXHRcXHRicmVhaztcXG4gMjgwOlxcdFxcdFxcdH1cXG4gMjgxOlxcdFxcbiAyODI6XFx0XFx0XFx0aWYgKGxlbiA9PSAweGZmZmYpIHtcXG4gMjgzOlxcdFxcdFxcdFxcdG5ldGRldl9pbmZvKGRldi1cXHUwMDNlbmV0LCBcXFwicm91dGVyIHdhcyByZWJvb3RlZCwgcmUtZW5hYmxpbmcgZXRoZXJuZXQgbW9kZVxcXCIpO1xcbiAyODQ6XFx0XFx0XFx0XFx0c2NoZWR1bGVfd29yayhcXHUwMDI2cHJpdi1cXHUwMDNlcmVlbmFibGVfd29yayk7XFxuIDI4NTpcXHRcXHRcXHRcXHRyZXR1cm4gMDtcXG4gMjg2OlxcdFxcdFxcdH0gZWxzZSBpZiAobGVuIFxcdTAwM2UgQ1g4MjMxMF9NVFUpIHtcXG4gMjg3OlxcdFxcdFxcdFxcdG5ldGRldl9lcnIoZGV2LVxcdTAwM2VuZXQsIFxcXCJSWCBwYWNrZXQgdG9vIGxvbmc6ICVkIEJcXFxcblxcXCIsIGxlbik7XFxuIDI4ODpcXHRcXHRcXHRcXHRyZXR1cm4gMDtcXG4gMjg5OlxcdFxcdFxcdH1cXG4gMjkwOlxcdFxcbiAyOTE6XFx0XFx0XFx0LyogaW5jb21wbGV0ZSBwYWNrZXQsIHNhdmUgaXQgZm9yIHRoZSBuZXh0IHNrYiAqL1xcbiAyOTI6XFx0XFx0XFx0aWYgKGxlbiBcXHUwMDNlIHNrYi1cXHUwMDNlbGVuKSB7XFxuIDI5MzpcXHRcXHRcXHRcXHRkZXYtXFx1MDAzZXBhcnRpYWxfbGVuID0gc2tiLVxcdTAwM2VsZW47XFxuIDI5NDpcXHRcXHRcXHRcXHRkZXYtXFx1MDAzZXBhcnRpYWxfcmVtID0gbGVuIC0gc2tiLVxcdTAwM2VsZW47XFxuIDI5NTpcXHRcXHRcXHRcXHRtZW1jcHkoKHZvaWQgKilkZXYtXFx1MDAzZXBhcnRpYWxfZGF0YSwgc2tiLVxcdTAwM2VkYXRhLFxcbiAyOTY6XFx0XFx0XFx0XFx0ICAgICAgIGRldi1cXHUwMDNlcGFydGlhbF9sZW4pO1xcbiAyOTc6XFx0XFx0XFx0XFx0c2tiX3B1bGwoc2tiLCBza2ItXFx1MDAzZWxlbik7XFxuIDI5ODpcXHRcXHRcXHRcXHRicmVhaztcXG4gMjk5OlxcdFxcdFxcdH1cXG4gMzAwOlxcdFxcbiAzMDE6XFx0XFx0XFx0c2tiMiA9IGFsbG9jX3NrYihsZW4sIEdGUF9BVE9NSUMpO1xcbiAzMDI6XFx0XFx0XFx0aWYgKCFza2IyKVxcbiAzMDM6XFx0XFx0XFx0XFx0cmV0dXJuIDA7XFxuIDMwNDpcXHRcXHRcXHRza2JfcHV0KHNrYjIsIGxlbik7XFxuIDMwNTpcXHRcXHRcXHRtZW1jcHkoc2tiMi1cXHUwMDNlZGF0YSwgc2tiLVxcdTAwM2VkYXRhLCBsZW4pO1xcbiAzMDY6XFx0XFx0XFx0LyogcHJvY2VzcyB0aGUgcGFja2V0ICovXFxuIDMwNzpcXHRcXHRcXHR1c2JuZXRfc2tiX3JldHVybihkZXYsIHNrYjIpO1xcbiAzMDg6XFx0XFxuIDMwOTpcXHRcXHRcXHRza2JfcHVsbChza2IsIChsZW4gKyAxKSBcXHUwMDI2IH4xKTtcXG4gMzEwOlxcdFxcdH1cXG4gMzExOlxcdFxcbiAzMTI6XFx0XFx0LyogbGV0IHVzYm5ldCBwcm9jZXNzIHRoZSBsYXN0IHBhY2tldCAqL1xcbiAzMTM6XFx0XFx0cmV0dXJuIDE7XFxuIDMxNDpcXHR9XFxuIDMxNTpcXHRcXG4gMzE2OlxcdC8qIFRYIGlzIGVhc3ksIGp1c3QgYWRkIDIgYnl0ZXMgb2YgbGVuZ3RoIGF0IHRoZSBiZWdpbm5pbmcgKi9cXG4gMzE3OlxcdHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqY3g4MjMxMF90eF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IsXFxuIDMxODpcXHRcXHRcXHRcXHRcXHQgICAgICAgZ2ZwX3QgZmxhZ3MpXFxuIDMxOTpcXHR7XFxuIDMyMDpcXHRcXHRpbnQgbGVuID0gc2tiLVxcdTAwM2VsZW47XFxuIDMyMTpcXHRcXG4gMzIyOlxcdFxcdGlmIChza2JfY293X2hlYWQoc2tiLCAyKSkge1xcbiAzMjM6XFx0XFx0XFx0ZGV2X2tmcmVlX3NrYl9hbnkoc2tiKTtcXG4gMzI0OlxcdFxcdFxcdHJldHVybiBOVUxMO1xcbiAzMjU6XFx0XFx0fVxcbiAzMjY6XFx0XFx0c2tiX3B1c2goc2tiLCAyKTtcXG4gMzI3OlxcdFxcbiAzMjg6XFx0XFx0c2tiLVxcdTAwM2VkYXRhWzBdID0gbGVuO1xcbiAzMjk6XFx0XFx0c2tiLVxcdTAwM2VkYXRhWzFdID0gbGVuIFxcdTAwM2VcXHUwMDNlIDg7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAxOjE3OjIzLjUyMTQzODU2M1oiLCJTZXEiOjMyLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1OTEwOTAzMTY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIHRoZSBjeDgyMzEwIERyaXZlcioqXG5cbk9rYXksIGxldCdzIGJyZWFrIGRvd24gdGhpcyBwYXRjaCBmb3IgdGhlIGBjeDgyMzEwYCBkcml2ZXIuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHRoZSBjb3JlIGNoYW5nZSBhbmQgcG90ZW50aWFsIGltcGxpY2F0aW9ucy4gSXQgbG9va3MgbGlrZSB0aGUgcHJpbWFyeSBmb2N1cyBpcyB3aXRoaW4gdGhlIGBjeDgyMzEwX3J4X2ZpeHVwYCBmdW5jdGlvbi4gVGhlIGNvZGUgYWRkcmVzc2VzIGEgc3BlY2lmaWMgc2NlbmFyaW86IGBsZW4gPT0gMHhmZmZmYC4gQmVmb3JlIHRoaXMgcGF0Y2gsIGlmIHRoZSBwYWNrZXQgbGVuZ3RoIHdhcyB0aGlzIG1heGltdW0gdmFsdWUsIHRoZSBjb2RlIHdvdWxkIHByb2NlZWQgcGFzdCB0aGF0IGNvbmRpdGlvbmFsIGNoZWNrIHdpdGhvdXQgcmV0dXJuaW5nLCBsZWFkaW5nIHRvIHNvbWUgcG90ZW50aWFsbHkgbmFzdHkgY29uc2VxdWVuY2VzIGRvd24gdGhlIGxpbmUuXG5cblRoZSB2dWxuZXJhYmlsaXR5IHN0ZW1zIGZyb20gdGhlIGxvZ2ljIHRoYXQgZm9sbG93cyB3aGVuIGBsZW5gIGlzIGAweGZmZmZgLiBUaGUgcHJldmlvdXMgY29kZSB3b3VsZCBlbmQgdXAgZG9pbmcgc29tZSBkYW5nZXJvdXMgY2FsY3VsYXRpb25zOiBhc3NpZ25pbmcgYGRldi1cdTAwM2VwYXJ0aWFsX2xlbmAgYXMgYHNrYi1cdTAwM2VsZW5gLCB0aGVuIGNhbGN1bGF0aW5nIGBkZXYtXHUwMDNlcGFydGlhbF9yZW1gIGFzIGEgbWFzc2l2ZSBkaWZmZXJlbmNlIChgMHhmZmZmIC0gc2tiLVx1MDAzZWxlbmApLiBOZXh0LCBpdCBjb3BpZXMgZGF0YSBiYXNlZCBvbiBgZGV2LVx1MDAzZXBhcnRpYWxfbGVuYC4gVGhlbiwgb24gYSBzdWJzZXF1ZW50IHBhY2tldCwgYmVjYXVzZSBgZGV2LVx1MDAzZXBhcnRpYWxfcmVtYCB3b3VsZCBiZSBub24temVybywgaXQgZG9lcyBhbiBhbGxvY2F0aW9uLCB1c2luZyBhIGxlbmd0aCB0aGF0IHdvdWxkIGluY2x1ZGUgdGhpcyBlbm9ybW91cyBgZGV2LVx1MDAzZXBhcnRpYWxfcmVtYCwgYW5kIHRyaWVzIHRvIGNvcHkgbWVtb3J5IGJhc2VkIG9uIGBkZXYtXHUwMDNlcGFydGlhbF9yZW1gIGZyb20gYHNrYi1cdTAwM2VkYXRhYCB0byB0aGUgbmV3bHkgYWxsb2NhdGVkIHNrYjIuIFRoaXMgaXMgd2hlcmUgaXQgYnJlYWtzOiBJdCBsb29rcyBsaWtlIGl0IGNvdWxkIGhhdmUgcmVzdWx0ZWQgaW4gYSAqc2lnbmlmaWNhbnQqIG91dC1vZi1ib3VuZHMgcmVhZCBmcm9tIGBza2ItXHUwMDNlZGF0YWAgYmVjYXVzZSBgc2tiLVx1MDAzZWxlbmAgaXMgZ29pbmcgdG8gYmUgZmFyIHNtYWxsZXIgdGhhbiBgZGV2LVx1MDAzZXBhcnRpYWxfcmVtYC4gQmlnIHByb2JsZW0hIFRoaXMgcGF0Y2ggbmVhdGx5IGZpeGVzIHRoaXMgYnkgYWRkaW5nIGEgYHJldHVybiAwO2AgYWZ0ZXIgYHNjaGVkdWxlX3dvcmsoKWAuXG5cbk15IGZpcnN0IGNvbmNlcm4gaXMgYWx3YXlzLCBcIkRvZXMgdGhpcyBwYXRjaCBpbnRyb2R1Y2UgYW55IG5ldyByaXNrcz9cIiBJdCBzZWVtcyBub3QuIEl0J3MgZXNzZW50aWFsbHkgYWRkaW5nIGFuIGVhcmx5IHJldHVybiB0byBzdG9wIHByb2Nlc3NpbmcgdGhlIHBhY2tldCBpbiBhbiBlcnJvciBvciBzcGVjaWFsIHJlYm9vdCBjb25kaXRpb24sIHByZXZlbnRpbmcgdGhpcyBvdXQtb2YtYm91bmRzIGFjY2Vzcy4gSSd2ZSBzcGVjaWZpY2FsbHkgY29uc2lkZXJlZCB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcy4gVGhlcmUgYXJlIG5vIG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIG5vIHVuaW5pdGlhbGl6ZWQgc3RydWN0IGZpZWxkcywgbm8gbmV3IGJ1ZmZlcnMgdG8gcmVhZC9jb3B5IHVuaW5pdGlhbGl6ZWQgZGF0YS4gVGhlcmUgYXJlIG5vIGxlYWtzIHRvIHVzZXIgc3BhY2UuIEl0IGRvZXNuJ3QgbW9kaWZ5IGJvdW5kcy1jaGVja2luZyBsb2dpYyB0aGF0IGNvdWxkIGFsbG93IHVuaW5pdGlhbGl6ZWQgYnl0ZXMgdG8gYmUgZXhwb3NlZC4gVGhlIGNoYW5nZSBpcyBzaW1wbHkgYSBtb3JlIGNvcnJlY3QgZXJyb3IgaGFuZGxpbmcgcHJvY2VkdXJlLlxuXG5LQVNBTiwgaWYgdGhlIGJ1ZyB3ZXJlIHRvIGJlIHJlcHJvZHVjZWQgYnkgYW4gYXR0YWNrZXIsIHdvdWxkIGxpa2VseSBjYXRjaCB0aGUgaGVhcCBvdXQtb2YtYm91bmRzIHJlYWQuIEtNU0FOLCB3aGljaCBJIGFtIHZlcnkgZmFtaWxpYXIgd2l0aCwgdGFyZ2V0cyB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBhbmQga2VybmVsLXRvLXVzZXIgaW5mb3JtYXRpb24gbGVha3MuIEkgZG9uJ3Qgc2VlIGFueSBpbnRyb2R1Y3Rpb24gb3IgcmVhZGluZyBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBoZXJlLlxuXG5XaXRoIHRoaXMgYW5hbHlzaXMgY29tcGxldGUsIEknbSBjb25maWRlbnQgaW4gdGhlIGNvcnJlY3RuZXNzIG9mIHRoaXMgcGF0Y2guIE5vdyBJJ2xsIHByZXBhcmUgdGhlIGBzZXQtcmVzdWx0c2AgdG9vbCBjYWxsLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjkxLCJPdXRwdXRUb2tlbnMiOjE4MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYxMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAxOjE3OjI5LjQzMjM0NDk0WiIsIlNlcSI6MzMsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY2NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGFuIGVhcmx5ICdyZXR1cm4gMDsnIHdoZW4gJ2xlbiA9PSAweGZmZmYnIGluIGN4ODIzMTBfcnhfZml4dXAoKSB0byBhYm9ydCBwcm9jZXNzaW5nIHdoZW4gdGhlIHJvdXRlciByZWJvb3RzIGFuZCByZS1lbmFibGluZyB3b3JrIGlzIHNjaGVkdWxlZC4gUHJldmlvdXNseSwgZXhlY3V0aW9uIGZlbGwgdGhyb3VnaCBpbnRvIHBhcnRpYWwgcGFja2V0IGhhbmRsaW5nLCB3aGljaCBjb3VsZCBsZWFkIHRvIG91dC1vZi1ib3VuZHMgcmVhZHMgb24gc3Vic2VxdWVudCBwYWNrZXRzLiBcXG5cXG5UaGUgZml4IG9ubHkgbW9kaWZpZXMgY29udHJvbCBmbG93IHRvIGRpc2NhcmQgdGhlIHNrYiBhbmQgZG9lcyBub3QgYWxsb2NhdGUsIGluaXRpYWxpemUsIHJlYWQsIG9yIGNvcHkgYW55IHVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgb3Iga2VybmVsIHN0cnVjdHVyZXMgdG8gdXNlciBzcGFjZS4gQW55IG1lbW9yeSBzYWZldHkgaXNzdWVzIHByZXZlbnRlZCBvciB0b3VjaGVkIGJ5IHRoaXMgY29kZSBhcmUgb3V0LW9mLWJvdW5kcyBhY2Nlc3MgLyBpbnZhbGlkIHN0YXRlIGJ1Z3MgY2F1Z2h0IGJ5IEtBU0FOLCBub3QgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWVzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVlZGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYW4gZWFybHkgJ3JldHVybiAwOycgd2hlbiAnbGVuID09IDB4ZmZmZicgaW4gY3g4MjMxMF9yeF9maXh1cCgpIHRvIGFib3J0IHByb2Nlc3Npbmcgd2hlbiB0aGUgcm91dGVyIHJlYm9vdHMgYW5kIHJlLWVuYWJsaW5nIHdvcmsgaXMgc2NoZWR1bGVkLiBQcmV2aW91c2x5LCBleGVjdXRpb24gZmVsbCB0aHJvdWdoIGludG8gcGFydGlhbCBwYWNrZXQgaGFuZGxpbmcsIHdoaWNoIGNvdWxkIGxlYWQgdG8gb3V0LW9mLWJvdW5kcyByZWFkcyBvbiBzdWJzZXF1ZW50IHBhY2tldHMuIFxcblxcblRoZSBmaXggb25seSBtb2RpZmllcyBjb250cm9sIGZsb3cgdG8gZGlzY2FyZCB0aGUgc2tiIGFuZCBkb2VzIG5vdCBhbGxvY2F0ZSwgaW5pdGlhbGl6ZSwgcmVhZCwgb3IgY29weSBhbnkgdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSBvciBrZXJuZWwgc3RydWN0dXJlcyB0byB1c2VyIHNwYWNlLiBBbnkgbWVtb3J5IHNhZmV0eSBpc3N1ZXMgcHJldmVudGVkIG9yIHRvdWNoZWQgYnkgdGhpcyBjb2RlIGFyZSBvdXQtb2YtYm91bmRzIGFjY2VzcyAvIGludmFsaWQgc3RhdGUgYnVncyBjYXVnaHQgYnkgS0FTQU4sIG5vdCB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZXMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWVkZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowz6lwj[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-03 00:36:38 +0000 UTC FinishedAt: 2026-09-03 01:17:30 +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": "d0ec95a8a4e79f2fd6063fc8932415db8c227689", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "USB_NET_CX82310_ETH", "USB_USBNET" ], "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": "d0ec95a8a4e79f2fd6063fc8932415db8c227689", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "USB_NET_CX82310_ETH", "USB_USBNET" ], "series_id": "73225c68-e980-48cc-9afe-be610c4fcddf" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "cx82310_rx_fixup" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAxOjE2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTQl9ORVRfQ1g4MjMxMF9FVEgmIzM0OywKICAgICYjMzQ7VVNCX1VTQk5FVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2N4ODIzMTBfcnhfZml4dXAmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGFuIGVhcmx5ICYjMzk7cmV0dXJuIDA7JiMzOTsgd2hlbiAmIzM5O2xlbiA9PSAweGZmZmYmIzM5OyBpbiBjeDgyMzEwX3J4X2ZpeHVwKCkgdG8gYWJvcnQgcHJvY2Vzc2luZyB3aGVuIHRoZSByb3V0ZXIgcmVib290cyBhbmQgcmUtZW5hYmxpbmcgd29yayBpcyBzY2hlZHVsZWQuIFByZXZpb3VzbHksIGV4ZWN1dGlvbiBmZWxsIHRocm91Z2ggaW50byBwYXJ0aWFsIHBhY2tldCBoYW5kbGluZywgd2hpY2ggY291bGQgbGVhZCB0byBvdXQtb2YtYm91bmRzIHJlYWRzIG9uIHN1YnNlcXVlbnQgcGFja2V0cy4gXG5cblRoZSBmaXggb25seSBtb2RpZmllcyBjb250cm9sIGZsb3cgdG8gZGlzY2FyZCB0aGUgc2tiIGFuZCBkb2VzIG5vdCBhbGxvY2F0ZSwgaW5pdGlhbGl6ZSwgcmVhZCwgb3IgY29weSBhbnkgdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSBvciBrZXJuZWwgc3RydWN0dXJlcyB0byB1c2VyIHNwYWNlLiBBbnkgbWVtb3J5IHNhZmV0eSBpc3N1ZXMgcHJldmVudGVkIG9yIHRvdWNoZWQgYnkgdGhpcyBjb2RlIGFyZSBvdXQtb2YtYm91bmRzIGFjY2VzcyAvIGludmFsaWQgc3RhdGUgYnVncyBjYXVnaHQgYnkgS0FTQU4sIG5vdCB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZXMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWVkZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgZnVuY3Rpb25hbCBmbG93IGJ1ZyBpbiB0aGUgUlggcGFja2V0IHByb2Nlc3NpbmcgbG9naWMgb2YgdGhlIGN4ODIzMTBfZXRoIFVTQiBuZXR3b3JrIGRyaXZlci4gUHJldmlvdXNseSwgd2hlbiBhbiBSWCBwYWNrZXQgaGFkIGxlbmd0aCAweGZmZmYgKHNpZ25hbGluZyByb3V0ZXIgcmVib290KSwgdGhlIGZ1bmN0aW9uIHNjaGVkdWxlZCBhIHJlLWVuYWJsZSB3b3JrZXIgYnV0IGZlbGwgdGhyb3VnaCBpbnRvIHBhcnRpYWwgcGFja2V0IGhhbmRsaW5nLCB3aGljaCBjb3VsZCBsZWFkIHRvIG1hbGZvcm1lZCBwYWNrZXQgcHJvY2Vzc2luZyBvciBvdXQtb2YtYm91bmRzL292ZXJmbG93IGlzc3Vlcy4gVGhlIHBhdGNoIHJldHVybnMgMCB0byBwcm9wZXJseSBkcm9wIHRoZSBwYWNrZXQuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgdmlhIFVTQiBlbXVsYXRpb24vZnV6emluZyAoZS5nLiBSYXcgR2FkZ2V0IC8gZHVtbXlfaGNkKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMToxNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGE3ZDYxZDY0MGQ2N2YyNGRjOWU2MmVkNmIxN2UzZmUwNmFjODc0NmRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IFNlcCAzIDAxOjE2OjI1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jIGIvZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmNcbmluZGV4IDA2OGFjYjA1MmFkYjAuLjVkZjY1N2FjZjNkNTUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmNcbkBAIC0yODIsNiAmIzQzOzI4Miw3IEBAIHN0YXRpYyBpbnQgY3g4MjMxMF9yeF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRcdGlmIChsZW4gPT0gMHhmZmZmKSB7XG4gXHRcdFx0bmV0ZGV2X2luZm8oZGV2LVx1MDAzZW5ldCwgXCYjMzQ7cm91dGVyIHdhcyByZWJvb3RlZCwgcmUtZW5hYmxpbmcgZXRoZXJuZXQgbW9kZVwmIzM0Oyk7XG4gXHRcdFx0c2NoZWR1bGVfd29yayhcdTAwMjZwcml2LVx1MDAzZXJlZW5hYmxlX3dvcmspO1xuJiM0MztcdFx0XHRyZXR1cm4gMDtcbiBcdFx0fSBlbHNlIGlmIChsZW4gXHUwMDNlIENYODIzMTBfTVRVKSB7XG4gXHRcdFx0bmV0ZGV2X2VycihkZXYtXHUwMDNlbmV0LCBcJiMzNDtSWCBwYWNrZXQgdG9vIGxvbmc6ICVkIEJcXG5cJiMzNDssIGxlbik7XG4gXHRcdFx0cmV0dXJuIDA7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMDE6MTY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VVNCX05FVF9DWDgyMzEwX0VUSCYjMzQ7LAogICAgJiMzNDtVU0JfVVNCTkVUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y3g4MjMxMF9yeF9maXh1cCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGZ1bmN0aW9uYWwgZmxvdyBidWcgaW4gdGhlIFJYIHBhY2tldCBwcm9jZXNzaW5nIGxvZ2ljIG9mIHRoZSBjeDgyMzEwX2V0aCBVU0IgbmV0d29yayBkcml2ZXIuIFByZXZpb3VzbHksIHdoZW4gYW4gUlggcGFja2V0IGhhZCBsZW5ndGggMHhmZmZmIChzaWduYWxpbmcgcm91dGVyIHJlYm9vdCksIHRoZSBmdW5jdGlvbiBzY2hlZHVsZWQgYSByZS1lbmFibGUgd29ya2VyIGJ1dCBmZWxsIHRocm91Z2ggaW50byBwYXJ0aWFsIHBhY2tldCBoYW5kbGluZywgd2hpY2ggY291bGQgbGVhZCB0byBtYWxmb3JtZWQgcGFja2V0IHByb2Nlc3Npbmcgb3Igb3V0LW9mLWJvdW5kcy9vdmVyZmxvdyBpc3N1ZXMuIFRoZSBwYXRjaCByZXR1cm5zIDAgdG8gcHJvcGVybHkgZHJvcCB0aGUgcGFja2V0LiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBVU0IgZW11bGF0aW9uL2Z1enppbmcgKGUuZy4gUmF3IEdhZGdldCAvIGR1bW15X2hjZCkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBhN2Q2MWQ2NDBkNjdmMjRkYzllNjJlZDZiMTdlM2ZlMDZhYzg3NDZkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBTZXAgMyAwMToxNjoyNSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jIGIvZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMKaW5kZXggMDY4YWNiMDUyYWRiMC4uNWRmNjU3YWNmM2Q1NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMKQEAgLTI4Miw2ICYjNDM7MjgyLDcgQEAgc3RhdGljIGludCBjeDgyMzEwX3J4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAkJaWYgKGxlbiA9PSAweGZmZmYpIHsKIAkJCW5ldGRldl9pbmZvKGRldi0mZ3Q7bmV0LCAmIzM0O3JvdXRlciB3YXMgcmVib290ZWQsIHJlLWVuYWJsaW5nIGV0aGVybmV0IG1vZGUmIzM0Oyk7CiAJCQlzY2hlZHVsZV93b3JrKCZhbXA7cHJpdi0mZ3Q7cmVlbmFibGVfd29yayk7CiYjNDM7CQkJcmV0dXJuIDA7CiAJCX0gZWxzZSBpZiAobGVuICZndDsgQ1g4MjMxMF9NVFUpIHsKIAkJCW5ldGRldl9lcnIoZGV2LSZndDtuZXQsICYjMzQ7UlggcGFja2V0IHRvbyBsb25nOiAlZCBCXG4mIzM0OywgbGVuKTsKIAkJCXJldHVybiAwOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMToxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTMzCgkJCQkJCQlvdXRwdXQ6IDc1CgkJCQkJCQl0aG91Z2h0czogMjgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE5ldHdvcmsgRHJpdmVyIENoYW5nZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBkaWZmLCBzcGVjaWZpY2FsbHkgdGhlIGNoYW5nZSBpbiBgZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmNgLiBUaGUgbW9kaWZpY2F0aW9uIHRvIGBjeDgyMzEwX3J4X2ZpeHVwYCBhdCBsaW5lIDI4MiBpcyBpbnRlcmVzdGluZy4gSXQgbG9va3MgbGlrZSBpdCBoYW5kbGVzIHNvbWUga2luZCBvZiBlcnJvciBjb25kaXRpb24gcmVsYXRlZCB0byBwYWNrZXQgbGVuZ3RoIG9yIHBvdGVudGlhbGx5IGEgcm91dGVyIHJlYm9vdCwgYW5kIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBleGFjdCBjb250ZXh0LiBMZXQgbWUgZGl2ZSBpbnRvIHRoZSBzdXJyb3VuZGluZyBjb2RlIGluIHRoYXQgZmlsZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGBjeDgyMzEwX3J4X2ZpeHVwYCB3b3JrcyB3aXRoaW4gdGhlIGB1c2JuZXRgIGZyYW1ld29yay4gSSB3YW50IHRvIHRyYWNlIHRoZSBkYXRhIGZsb3cgdG8gc2VlIGlmIFVTQiBkcml2ZXJzLCB0aGUgYHVzYm5ldGAgYWJzdHJhY3Rpb24gbGF5ZXIsIG9yIGV2ZW4gc29tZXRoaW5nIHJlbGF0ZWQgdG8gVVNCIGVtdWxhdGlvbiBvciBmdXp6aW5nIHRlY2huaXF1ZXMgbGlrZSBzeXprYWxsZXIgY291bGQgcG90ZW50aWFsbHkgdHJpZ2dlciB0aGlzLiBJJiMzOTtsbCBuZWVkIHRvIGtub3cgdGhlIGNvbmZpZyBkZXBlbmRlbmNpZXMuIExldCBtZSBjYWxsIGByZWFkLWZpbGVgIGFuZCBjaGVjayBLY29uZmlnIHRvIHNlZSB3aGF0JiMzOTtzIG5lZWRlZC4gSSYjMzk7bGwgZm9jdXMgb24gd2hldGhlciB0aGlzIGNvdWxkIGJlIGhpdCBieSBVU0IgdHJhZmZpYy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMToxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjUwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDcwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyNTA6XHRcdCAqIElmIHRoZSBsYXN0IHNrYiBlbmRlZCB3aXRoIGFuIGluY29tcGxldGUgcGFja2V0LCB0aGlzIHNrYiBjb250YWluc1xuIDI1MTpcdFx0ICogZW5kIG9mIHRoYXQgcGFja2V0IGF0IHRoZSBiZWdpbm5pbmcuXG4gMjUyOlx0XHQgKi9cbiAyNTM6XHRcdGlmIChkZXYtXHUwMDNlcGFydGlhbF9yZW0pIHtcbiAyNTQ6XHRcdFx0bGVuID0gZGV2LVx1MDAzZXBhcnRpYWxfbGVuICYjNDM7IGRldi1cdTAwM2VwYXJ0aWFsX3JlbTtcbiAyNTU6XHRcdFx0c2tiMiA9IGFsbG9jX3NrYihsZW4sIEdGUF9BVE9NSUMpO1xuIDI1NjpcdFx0XHRpZiAoIXNrYjIpXG4gMjU3Olx0XHRcdFx0cmV0dXJuIDA7XG4gMjU4Olx0XHRcdHNrYl9wdXQoc2tiMiwgbGVuKTtcbiAyNTk6XHRcdFx0bWVtY3B5KHNrYjItXHUwMDNlZGF0YSwgKHZvaWQgKilkZXYtXHUwMDNlcGFydGlhbF9kYXRhLFxuIDI2MDpcdFx0XHQgICAgICAgZGV2LVx1MDAzZXBhcnRpYWxfbGVuKTtcbiAyNjE6XHRcdFx0bWVtY3B5KHNrYjItXHUwMDNlZGF0YSAmIzQzOyBkZXYtXHUwMDNlcGFydGlhbF9sZW4sIHNrYi1cdTAwM2VkYXRhLFxuIDI2MjpcdFx0XHQgICAgICAgZGV2LVx1MDAzZXBhcnRpYWxfcmVtKTtcbiAyNjM6XHRcdFx0dXNibmV0X3NrYl9yZXR1cm4oZGV2LCBza2IyKTtcbiAyNjQ6XHRcdFx0c2tiX3B1bGwoc2tiLCAoZGV2LVx1MDAzZXBhcnRpYWxfcmVtICYjNDM7IDEpIFx1MDAyNiB+MSk7XG4gMjY1Olx0XHRcdGRldi1cdTAwM2VwYXJ0aWFsX3JlbSA9IDA7XG4gMjY2Olx0XHRcdGlmIChza2ItXHUwMDNlbGVuIFx1MDAzYyAyKVxuIDI2NzpcdFx0XHRcdHJldHVybiAxO1xuIDI2ODpcdFx0fVxuIDI2OTpcdFxuIDI3MDpcdFx0LyogYSBza2IgY2FuIGNvbnRhaW4gbXVsdGlwbGUgcGFja2V0cyAqL1xuIDI3MTpcdFx0d2hpbGUgKHNrYi1cdTAwM2VsZW4gXHUwMDNlIDEpIHtcbiAyNzI6XHRcdFx0LyogZmlyc3QgdHdvIGJ5dGVzIGFyZSBwYWNrZXQgbGVuZ3RoICovXG4gMjczOlx0XHRcdGxlbiA9IHNrYi1cdTAwM2VkYXRhWzBdIHwgKHNrYi1cdTAwM2VkYXRhWzFdIFx1MDAzY1x1MDAzYyA4KTtcbiAyNzQ6XHRcdFx0c2tiX3B1bGwoc2tiLCAyKTtcbiAyNzU6XHRcbiAyNzY6XHRcdFx0LyogaWYgbGFzdCBwYWNrZXQgaW4gdGhlIHNrYiwgbGV0IHVzYm5ldCB0byBwcm9jZXNzIGl0ICovXG4gMjc3Olx0XHRcdGlmIChsZW4gPT0gc2tiLVx1MDAzZWxlbiB8fCBsZW4gJiM0MzsgMSA9PSBza2ItXHUwMDNlbGVuKSB7XG4gMjc4Olx0XHRcdFx0c2tiX3RyaW0oc2tiLCBsZW4pO1xuIDI3OTpcdFx0XHRcdGJyZWFrO1xuIDI4MDpcdFx0XHR9XG4gMjgxOlx0XG4gMjgyOlx0XHRcdGlmIChsZW4gPT0gMHhmZmZmKSB7XG4gMjgzOlx0XHRcdFx0bmV0ZGV2X2luZm8oZGV2LVx1MDAzZW5ldCwgXCYjMzQ7cm91dGVyIHdhcyByZWJvb3RlZCwgcmUtZW5hYmxpbmcgZXRoZXJuZXQgbW9kZVwmIzM0Oyk7XG4gMjg0Olx0XHRcdFx0c2NoZWR1bGVfd29yayhcdTAwMjZwcml2LVx1MDAzZXJlZW5hYmxlX3dvcmspO1xuIDI4NTpcdFx0XHRcdHJldHVybiAwO1xuIDI4NjpcdFx0XHR9IGVsc2UgaWYgKGxlbiBcdTAwM2UgQ1g4MjMxMF9NVFUpIHtcbiAyODc6XHRcdFx0XHRuZXRkZXZfZXJyKGRldi1cdTAwM2VuZXQsIFwmIzM0O1JYIHBhY2tldCB0b28gbG9uZzogJWQgQlxcblwmIzM0OywgbGVuKTtcbiAyODg6XHRcdFx0XHRyZXR1cm4gMDtcbiAyODk6XHRcdFx0fVxuIDI5MDpcdFxuIDI5MTpcdFx0XHQvKiBpbmNvbXBsZXRlIHBhY2tldCwgc2F2ZSBpdCBmb3IgdGhlIG5leHQgc2tiICovXG4gMjkyOlx0XHRcdGlmIChsZW4gXHUwMDNlIHNrYi1cdTAwM2VsZW4pIHtcbiAyOTM6XHRcdFx0XHRkZXYtXHUwMDNlcGFydGlhbF9sZW4gPSBza2ItXHUwMDNlbGVuO1xuIDI5NDpcdFx0XHRcdGRldi1cdTAwM2VwYXJ0aWFsX3JlbSA9IGxlbiAtIHNrYi1cdTAwM2VsZW47XG4gMjk1Olx0XHRcdFx0bWVtY3B5KCh2b2lkICopZGV2LVx1MDAzZXBhcnRpYWxfZGF0YSwgc2tiLVx1MDAzZWRhdGEsXG4gMjk2Olx0XHRcdFx0ICAgICAgIGRldi1cdTAwM2VwYXJ0aWFsX2xlbik7XG4gMjk3Olx0XHRcdFx0c2tiX3B1bGwoc2tiLCBza2ItXHUwMDNlbGVuKTtcbiAyOTg6XHRcdFx0XHRicmVhaztcbiAyOTk6XHRcdFx0fVxuIDMwMDpcdFxuIDMwMTpcdFx0XHRza2IyID0gYWxsb2Nfc2tiKGxlbiwgR0ZQX0FUT01JQyk7XG4gMzAyOlx0XHRcdGlmICghc2tiMilcbiAzMDM6XHRcdFx0XHRyZXR1cm4gMDtcbiAzMDQ6XHRcdFx0c2tiX3B1dChza2IyLCBsZW4pO1xuIDMwNTpcdFx0XHRtZW1jcHkoc2tiMi1cdTAwM2VkYXRhLCBza2ItXHUwMDNlZGF0YSwgbGVuKTtcbiAzMDY6XHRcdFx0LyogcHJvY2VzcyB0aGUgcGFja2V0ICovXG4gMzA3Olx0XHRcdHVzYm5ldF9za2JfcmV0dXJuKGRldiwgc2tiMik7XG4gMzA4Olx0XG4gMzA5Olx0XHRcdHNrYl9wdWxsKHNrYiwgKGxlbiAmIzQzOyAxKSBcdTAwMjYgfjEpO1xuIDMxMDpcdFx0fVxuIDMxMTpcdFxuIDMxMjpcdFx0LyogbGV0IHVzYm5ldCBwcm9jZXNzIHRoZSBsYXN0IHBhY2tldCAqL1xuIDMxMzpcdFx0cmV0dXJuIDE7XG4gMzE0Olx0fVxuIDMxNTpcdFxuIDMxNjpcdC8qIFRYIGlzIGVhc3ksIGp1c3QgYWRkIDIgYnl0ZXMgb2YgbGVuZ3RoIGF0IHRoZSBiZWdpbm5pbmcgKi9cbiAzMTc6XHRzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmN4ODIzMTBfdHhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIDMxODpcdFx0XHRcdFx0ICAgICAgIGdmcF90IGZsYWdzKVxuIDMxOTpcdHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMToxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjeDgyMzEwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9NYWtlZmlsZT0zNT1vYmotJChDT05GSUdfVVNCX1NJRVJSQV9ORVQpXHQmIzQzOz0gc2llcnJhX25ldC5vXG5kcml2ZXJzL25ldC91c2IvTWFrZWZpbGU6MzY6b2JqLSQoQ09ORklHX1VTQl9ORVRfQ1g4MjMxMF9FVEgpXHQmIzQzOz0gY3g4MjMxMF9ldGgub1xuZHJpdmVycy9uZXQvdXNiL01ha2VmaWxlLTM3LW9iai0kKENPTkZJR19VU0JfTkVUX0NEQ19OQ00pXHQmIzQzOz0gY2RjX25jbS5vXG4tLVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMTYtXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzoxNzplbnVtIGN4ODIzMTBfY21kIHtcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTE4LVx0Q01EX1NUQVJUXHRcdD0gMHg4NCxcdC8qIG5vIGVmZmVjdD8gKi9cbi0tXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0yNS1cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjI2OmVudW0gY3g4MjMxMF9zdGF0dXMge1xuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMjctXHRTVEFUVVNfVU5ERUZJTkVELFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTQyLVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6NDM6c3RydWN0IGN4ODIzMTBfcHJpdiB7XG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy00NC1cdHN0cnVjdCB3b3JrX3N0cnVjdCByZWVuYWJsZV93b3JrO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTUzLSAqL1xuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6NTQ6c3RhdGljIGludCBjeDgyMzEwX2NtZChzdHJ1Y3QgdXNibmV0ICpkZXYsIGVudW0gY3g4MjMxMF9jbWQgY21kLCBib29sIHJlcGx5LFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtNTUtXHRcdCAgICAgICB1OCAqd2RhdGEsIGludCB3bGVuLCB1OCAqcmRhdGEsIGludCBybGVuKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTExOS1cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjEyMDpzdGF0aWMgaW50IGN4ODIzMTBfZW5hYmxlX2V0aGVybmV0KHN0cnVjdCB1c2JuZXQgKmRldilcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTEyMS17XG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzoxMjI6XHRpbnQgcmV0ID0gY3g4MjMxMF9jbWQoZGV2LCBDTURfRVRIRVJORVRfTU9ERSwgdHJ1ZSwgXCYjMzQ7XFx4MDFcJiMzNDssIDEsIE5VTEwsIDApO1xuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMTIzLVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTEyOS1cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjEzMDpzdGF0aWMgdm9pZCBjeDgyMzEwX3JlZW5hYmxlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMTMxLXtcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjEzMjpcdHN0cnVjdCBjeDgyMzEwX3ByaXYgKnByaXYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IGN4ODIzMTBfcHJpdixcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTEzMy1cdFx0XHRcdFx0XHQgcmVlbmFibGVfd29yayk7XG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzoxMzQ6XHRjeDgyMzEwX2VuYWJsZV9ldGhlcm5ldChwcml2LVx1MDAzZWRldik7XG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0xMzUtfVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTE0MC1cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjE0MTpzdGF0aWMgaW50IGN4ODIzMTBfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMTQyLXtcbi0tXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0xNDctXHRpbnQgdGltZW91dCA9IDUwO1xuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MTQ4Olx0c3RydWN0IGN4ODIzMTBfcHJpdiAqcHJpdjtcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTE0OS1cdHU4IGFkZHJbRVRIX0FMRU5dO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTE4MS1cdGRldi1cdTAwM2Vkcml2ZXJfcHJpdiA9IHByaXY7XG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzoxODI6XHRJTklUX1dPUksoXHUwMDI2cHJpdi1cdTAwM2VyZWVuYWJsZV93b3JrLCBjeDgyMzEwX3JlZW5hYmxlX3dvcmspO1xuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMTgzLVx0cHJpdi1cdTAwM2VkZXYgPSBkZXY7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMTg2LVx0d2hpbGUgKC0tdGltZW91dCkge1xuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MTg3Olx0XHRyZXQgPSBjeDgyMzEwX2NtZChkZXYsIENNRF9HRVRfTElOS19TVEFUVVMsIHRydWUsIE5VTEwsIDAsXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0xODgtXHRcdFx0XHQgIGxpbmssIHNpemVvZihsaW5rKSk7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMjAwLVx0LyogZW5hYmxlIGV0aGVybmV0IG1vZGUgKD8pICovXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzoyMDE6XHRyZXQgPSBjeDgyMzEwX2VuYWJsZV9ldGhlcm5ldChkZXYpO1xuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMjAyLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0yMDUtXHQvKiBnZXQgdGhlIE1BQyBhZGRyZXNzICovXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzoyMDY6XHRyZXQgPSBjeDgyMzEwX2NtZChkZXYsIENNRF9HRVRfTUFDX0FERFIsIHRydWUsIE5VTEwsIDAsIGFkZHIsIEVUSF9BTEVOKTtcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTIwNy1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0yMTMtXHQvKiBzdGFydCAoZG9lcyBub3Qgc2VlbSB0byBoYXZlIGFueSBlZmZlY3Q/KSAqL1xuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MjE0Olx0cmV0ID0gY3g4MjMxMF9jbWQoZGV2LCBDTURfU1RBUlQsIGZhbHNlLCBOVUxMLCAwLCBOVUxMLCAwKTtcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTIxNS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMjI1LVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MjI2OnN0YXRpYyB2b2lkIGN4ODIzMTBfdW5iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0yMjcte1xuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MjI4Olx0c3RydWN0IGN4ODIzMTBfcHJpdiAqcHJpdiA9IGRldi1cdTAwM2Vkcml2ZXJfcHJpdjtcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTIyOS1cbi0tXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0yNDItICovXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzoyNDM6c3RhdGljIGludCBjeDgyMzEwX3J4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTI0NC17XG4tLVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMjQ2LVx0c3RydWN0IHNrX2J1ZmYgKnNrYjI7XG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzoyNDc6XHRzdHJ1Y3QgY3g4MjMxMF9wcml2ICpwcml2ID0gZGV2LVx1MDAzZWRyaXZlcl9wcml2O1xuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMjQ4LVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTMxNi0vKiBUWCBpcyBlYXN5LCBqdXN0IGFkZCAyIGJ5dGVzIG9mIGxlbmd0aCBhdCB0aGUgYmVnaW5uaW5nICovXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzozMTc6c3RhdGljIHN0cnVjdCBza19idWZmICpjeDgyMzEwX3R4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTMxOC1cdFx0XHRcdCAgICAgICBnZnBfdCBmbGFncylcbi0tXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0zMzQtXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzozMzU6c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mb1x0Y3g4MjMxMF9pbmZvID0ge1xuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMzM2LVx0LmRlc2NyaXB0aW9uXHQ9IFwmIzM0O0NvbmV4YW50IENYODIzMTAgVVNCIGV0aGVybmV0XCYjMzQ7LFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMzM3LVx0LmZsYWdzXHRcdD0gRkxBR19FVEhFUixcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjMzODpcdC5iaW5kXHRcdD0gY3g4MjMxMF9iaW5kLFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MzM5Olx0LnVuYmluZFx0XHQ9IGN4ODIzMTBfdW5iaW5kLFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MzQwOlx0LnJ4X2ZpeHVwXHQ9IGN4ODIzMTBfcnhfZml4dXAsXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzozNDE6XHQudHhfZml4dXBcdD0gY3g4MjMxMF90eF9maXh1cCxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTM0Mi19O1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jPTM1Mz1zdGF0aWMgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgcHJvZHVjdHNbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0zNTUtXHRcdFVTQl9ERVZJQ0VfQ0xBU1MoMHgwNTcyLCAweGNiMDEsIDB4ZmYsIDAsIDApLFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MzU2Olx0XHQuZHJpdmVyX2luZm8gPSAodW5zaWduZWQgbG9uZykgXHUwMDI2Y3g4MjMxMF9pbmZvXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0zNTctXHR9LFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jPTM2MD1NT0RVTEVfREVWSUNFX1RBQkxFKHVzYiwgcHJvZHVjdHMpO1xuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMzYxLVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MzYyOnN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBjeDgyMzEwX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjM2MzpcdC5uYW1lXHRcdD0gXCYjMzQ7Y3g4MjMxMF9ldGhcJiMzNDssXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0zNjQtXHQuaWRfdGFibGVcdD0gcHJvZHVjdHMsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMzcxLVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MzcyOm1vZHVsZV91c2JfZHJpdmVyKGN4ODIzMTBfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTM3My1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMToxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2Njc3CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IGltbWVkaWF0ZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKktjb25maWcgRGl2ZSBmb3IgQ1g4MjMxMCBFdGhlcm5ldCoqCgpBbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBzb3VyY2UuIEkgbmVlZCB0byB2ZXJpZnkgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGZvciB0aGUgQ1g4MjMxMCBFdGhlcm5ldCBkcml2ZXIsIHNwZWNpZmljYWxseSBgQ09ORklHX1VTQl9ORVRfQ1g4MjMxMF9FVEhgLiBJJiMzOTttIHN0YXJ0aW5nIHdpdGggS2NvbmZpZyBiZWNhdXNlIHRoYXQmIzM5O3MgdGhlIGNlbnRyYWwgcmVwb3NpdG9yeSBmb3IgYnVpbGQgY29uZmlndXJhdGlvbi4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3Igd2hlcmUgdGhpcyBvcHRpb24gaXMgZGVmaW5lZCwgYW55IGRlcGVuZGVuY2llcyBpdCBoYXMgKG90aGVyIFVTQiBuZXR3b3JrIHN0YWNrIGZlYXR1cmVzLCBwZXJoYXBzIHNwZWNpZmljIFVTQiBjb250cm9sbGVycyksIGl0cyBkZWZhdWx0IHN0YXRlLCBhbmQgYW55IGhlbHAgdGV4dCBhc3NvY2lhdGVkIHdpdGggaXQuIFRoaXMmIzM5O2xsIHF1aWNrbHkgdGVsbCBtZSBpZiB0aGUgZHJpdmVyIGlzIGV2ZW4gKmludGVuZGVkKiB0byBiZSBpbmNsdWRlZCwgYW5kIHdoYXQgcHJlY29uZGl0aW9ucyBuZWVkIHRvIGJlIG1ldCBmb3IgaXQgdG8gYmUgY29tcGlsZWQgaW50byB0aGUgaW1hZ2UuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiBpdCYjMzk7cyBtb2R1bGFyIG9yIGJ1aWx0LWluLCBhbmQgaG93IHRvIGNoYW5nZSBpdHMgYnVpbGQgc3RhdHVzLiBUaGVuIEkgd2lsbCBzZWUgd2hhdCB0aGUgYnVpbGQgc2NyaXB0cyBkbyB3aXRoIGl0LiBUaGlzIGluZm9ybWF0aW9uIHdpbGwgaW5mb3JtIG15IG5leHQgc3RlcHMgaW4gZWl0aGVyIGVuYWJsaW5nIGl0IG9yIHRyb3VibGVzaG9vdGluZyBpdHMgYWJzZW5jZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMToxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtVU0JfTkVUX0NYODIzMTBfRVRIJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTQ5ND1jb25maWcgVVNCX05FVF9aQVVSVVNcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy01MTEtXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo1MTI6Y29uZmlnIFVTQl9ORVRfQ1g4MjMxMF9FVEhcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTUxMy1cdHRyaXN0YXRlIFwmIzM0O0NvbmV4YW50IENYODIzMTAgVVNCIGV0aGVybmV0IHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC91c2IvTWFrZWZpbGU9MzU9b2JqLSQoQ09ORklHX1VTQl9TSUVSUkFfTkVUKVx0JiM0Mzs9IHNpZXJyYV9uZXQub1xuZHJpdmVycy9uZXQvdXNiL01ha2VmaWxlOjM2Om9iai0kKENPTkZJR19VU0JfTkVUX0NYODIzMTBfRVRIKVx0JiM0Mzs9IGN4ODIzMTBfZXRoLm9cbmRyaXZlcnMvbmV0L3VzYi9NYWtlZmlsZS0zNy1vYmotJChDT05GSUdfVVNCX05FVF9DRENfTkNNKVx0JiM0Mzs9IGNkY19uY20ub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAxOjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcxNzgKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHRoZSBVU0IgTmV0d29ya2luZyBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBwdWxsIHVwIHRoYXQgYGRyaXZlcnMvbmV0L3VzYi9LY29uZmlnYCBmaWxlLiBJJiMzOTttIHNwZWNpZmljYWxseSBpbnRlcmVzdGVkIGluLCBzYXksIGFyb3VuZCBsaW5lIDUxMi4gTXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBhICpzcGVjaWZpYyogVVNCIG5ldHdvcmsgZGV2aWNlLCBwcm9iYWJseSByZWxhdGVkIHRvIGEgcGFydGljdWxhciBkcml2ZXIgaW1wbGVtZW50YXRpb24uIEkgZXhwZWN0IHRvIHNlZSB0aGUgdHlwaWNhbCBLY29uZmlnIHN0cnVjdHVyZSDigJMgYGNvbmZpZ2AgYmxvY2tzLCBtYXliZSBzb21lIGBkZXBlbmRzIG9uYCBzdGF0ZW1lbnRzLCBhIGBzZWxlY3RgIG9yIHR3byBpZiB3ZSYjMzk7cmUgbHVja3kuIEkgd2FudCB0byBxdWlja2x5IGFzY2VydGFpbiB3aGF0IHRoZSBkZXBlbmRlbmNpZXMgYXJlLCBhbmQgd2hhdCB0aGUgZGVmYXVsdCBzZXR0aW5ncyBtaWdodCBiZS4gQXJlIHRoZXJlIG11bHRpcGxlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBncm91cGVkIHRvZ2V0aGVyIGF0IHRoaXMgbG9jYXRpb24sIG9yIGEgc2luZ2xlIGNvbXBsZXggb3B0aW9uPyBJdCB3aWxsIGJlIGludGVyZXN0aW5nIHRvIHNlZSBpZiBhbnkgb2YgdGhlIGRlcGVuZGVuY2llcyBhcmUgcG9vcmx5IGV4cGxhaW5lZCBvciBpZiB0aGVyZSBhcmUgdW5leHBlY3RlZCBpbnRlcmFjdGlvbnMuIFVsdGltYXRlbHksIEkmIzM5O20gdHJ5aW5nIHRvIHF1aWNrbHkgYnVpbGQgYSBtZW50YWwgbWFwIG9mIHRoaXMgc2VjdGlvbiB0byBpZGVudGlmeSBwb3RlbnRpYWwgYXJlYXMgZm9yIGN1c3RvbWl6YXRpb24sIG9yIGlmIEkgc3BvdCBhIGNvbmZpZ3VyYXRpb24gdGhhdCBJIGFscmVhZHkgdXNlIHRoYXQgbWF5IGJlIGludGVyYWN0aW5nIHdpdGggYW5vdGhlciBwYXJ0IG9mIHRoZSBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMDE6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDUwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNTAwOlx0XHRoZWxwXG4gNTAxOlx0XHQgIENob29zZSB0aGlzIG9wdGlvbiB0byBzdXBwb3J0IHRoZSB1c2IgbmV0d29ya2luZyBsaW5rcyB1c2VkIGJ5XG4gNTAyOlx0XHQgIFphdXJ1cyBtb2RlbHMgbGlrZSB0aGUgU0wtNTAwMEQsIFNMLTU1MDAsIFNMLTU2MDAsIEEtMzAwLCBCLTUwMC5cbiA1MDM6XHRcdCAgVGhpcyBhbHNvIHN1cHBvcnRzIHNvbWUgcmVsYXRlZCBkZXZpY2UgZmlybXdhcmUsIGFzIHVzZWQgaW4gc29tZVxuIDUwNDpcdFx0ICBQREFzIGZyb20gT2x5bXB1cyBhbmQgc29tZSBjZWxsIHBob25lcyBmcm9tIE1vdG9yb2xhLlxuIDUwNTpcdFxuIDUwNjpcdFx0ICBJZiB5b3UgaW5zdGFsbCBhbiBhbHRlcm5hdGUgaW1hZ2UsIHN1Y2ggYXMgdGhlIExpbnV4IDIuNiBiYXNlZFxuIDUwNzpcdFx0ICB2ZXJzaW9ucyBvZiBPcGVuWmF1cnVzLCB5b3Ugc2hvdWxkIG5vIGxvbmdlciBuZWVkIHRvIHN1cHBvcnQgdGhpc1xuIDUwODpcdFx0ICBwcm90b2NvbC4gIE9ubHkgdGhlIFwmIzM0O2V0aC1mZFwmIzM0OyBvciBcJiMzNDtuZXRfZmRcJiMzNDsgZHJpdmVycyBpbiB0aGVzZSBkZXZpY2VzXG4gNTA5Olx0XHQgIHJlYWxseSBuZWVkIHRoaXMgbm9uLWNvbmZvcm1hbnQgdmFyaWFudCBvZiBDREMgRXRoZXJuZXQgKG9yIGluXG4gNTEwOlx0XHQgIHNvbWUgY2FzZXMgQ0RDIE1ETE0pIHByb3RvY29sLCBub3QgXCYjMzQ7Z19ldGhlclwmIzM0Oy5cbiA1MTE6XHRcbiA1MTI6XHRjb25maWcgVVNCX05FVF9DWDgyMzEwX0VUSFxuIDUxMzpcdFx0dHJpc3RhdGUgXCYjMzQ7Q29uZXhhbnQgQ1g4MjMxMCBVU0IgZXRoZXJuZXQgcG9ydFwmIzM0O1xuIDUxNDpcdFx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXG4gNTE1Olx0XHRoZWxwXG4gNTE2Olx0XHQgIENob29zZSB0aGlzIG9wdGlvbiBpZiB5b3UmIzM5O3JlIHVzaW5nIGEgQ29uZXhhbnQgQ1g4MjMxMC1iYXNlZCBBRFNMXG4gNTE3Olx0XHQgIHJvdXRlciB3aXRoIFVTQiBldGhlcm5ldCBwb3J0LiBUaGlzIGRyaXZlciBpcyBmb3Igcm91dGVycyBvbmx5LFxuIDUxODpcdFx0ICBpdCB3aWxsIG5vdCB3b3JrIHdpdGggQURTTCBtb2RlbXMgKHVzZSBjeGFjcnUgZHJpdmVyIGluc3RlYWQpLlxuIDUxOTpcdFxuIDUyMDpcdGNvbmZpZyBVU0JfTkVUX0tBTE1JQVxuIDUyMTpcdFx0dHJpc3RhdGUgXCYjMzQ7U2Ftc3VuZyBLYWxtaWEgYmFzZWQgTFRFIFVTQiBtb2RlbVwmIzM0O1xuIDUyMjpcdFx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXG4gNTIzOlx0XHRoZWxwXG4gNTI0Olx0XHQgIENob29zZSB0aGlzIG9wdGlvbiBpZiB5b3UgaGF2ZSBhIFNhbXN1bmcgS2FsbWlhIGJhc2VkIFVTQiBtb2RlbVxuIDUyNTpcdFx0ICBhcyBTYW1zdW5nIEdULUIzNzMwLlxuIDUyNjpcdFxuIDUyNzpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcbiA1Mjg6XHRcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGthbG1pYS5cbiA1Mjk6XHRcbiA1MzA6XHRjb25maWcgVVNCX05FVF9RTUlfV1dBTlxuIDUzMTpcdFx0dHJpc3RhdGUgXCYjMzQ7UU1JIFdXQU4gZHJpdmVyIGZvciBRdWFsY29tbSBNU00gYmFzZWQgM0cgYW5kIExURSBtb2RlbXNcJiMzNDtcbiA1MzI6XHRcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxuIDUzMzpcdFx0c2VsZWN0IFVTQl9XRE1cbiA1MzQ6XHRcdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMDE6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODA5NAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkludmVzdGlnYXRpbmcgVVNCIE5ldHdvcmsgRHJpdmVyIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZGlnIGludG8gdGhlIGRlcGVuZGVuY2llcyBvZiB0aGUgYFVTQl9VU0JORVRgIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3VzYi9LY29uZmlnYCBmaWxlLiBUaGlzIGlzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoaXMgc3BlY2lmaWMgVVNCIG5ldHdvcmtpbmcgZHJpdmVyIHJlbGF0ZXMgdG8gb3RoZXIgY29tcG9uZW50cyBpbiB0aGUga2VybmVsLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IG90aGVyIG1vZHVsZXMgb3IgZmVhdHVyZXMgKm11c3QqIGJlIGVuYWJsZWQgb3IgYXJlIGxvZ2ljYWxseSBsaW5rZWQgZm9yIGBVU0JfVVNCTkVUYCB0byBmdW5jdGlvbiBjb3JyZWN0bHkuIEFyZSB0aGVyZSBhbnkgc3BlY2lmaWMgVVNCIGNvcmUgZmVhdHVyZXMsIG5ldHdvcmtpbmcgc3Vic3lzdGVtcywgb3IgZXZlbiBoYXJkd2FyZSBkcml2ZXJzIHRoYXQgYXJlIHByZXJlcXVpc2l0ZXM/IEkgbmVlZCB0byBrbm93IHRoZSBlbnRpcmUgZGVwZW5kZW5jeSBjaGFpbiB0byBtYWtlIGluZm9ybWVkIGRlY2lzaW9ucyBhYm91dCBteSBrZXJuZWwgY29uZmlndXJhdGlvbi4gVGhpcyBpbmZvcm1hdGlvbiB3aWxsIHByZXZlbnQgYnVpbGQgZXJyb3JzIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3VyIGRvd24gdGhlIGxpbmUuIEkgd2FudCB0byBidWlsZCBhIHNlY3VyZSBrZXJuZWwhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAxOjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBVU0JfVVNCTkVUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTExMz1jb25maWcgVVNCX0xBTjc4WFhcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xMzEtXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzoxMzI6Y29uZmlnIFVTQl9VU0JORVRcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTEzMy1cdHRyaXN0YXRlIFwmIzM0O011bHRpLXB1cnBvc2UgVVNCIE5ldHdvcmtpbmcgRnJhbWV3b3JrXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAxOjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg0MDgKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqTmF2aWdhdGluZyB0aGUgVVNCIE5ldHdvcmsgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgYGRyaXZlcnMvbmV0L3VzYi9LY29uZmlnYCBmaWxlLiBJJiMzOTttIGZvY3VzaW5nIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSAxMzIuIE15IGluaXRpYWwgZ29hbCBoZXJlIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gYSBzcGVjaWZpYyBVU0IgbmV0d29yayBkcml2ZXIg4oCTIGxpa2VseSBvbmUgdGhhdCBJJiMzOTttIHdvcmtpbmcgd2l0aCBvciB0cm91Ymxlc2hvb3RpbmcuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBob3cgdGhpcyBwYXJ0aWN1bGFyIGRyaXZlciBpcyBleHBvc2VkIHRvIHRoZSBidWlsZCBzeXN0ZW0sIHdoYXQgc2V0dGluZ3MgaW5mbHVlbmNlIGl0cyBpbmNsdXNpb24sIGFuZCBwZXJoYXBzIGFsc28gcmV2aWV3IGFueSBidWlsZC10aW1lIG9yIHJ1bi10aW1lIHZhcmlhYmxlcyB0aGF0IGNhbiBiZSBhZmZlY3RlZCwgY29uZmlndXJlZCwgb3IgaW5mbHVlbmNlZC4gSSYjMzk7bSBob3BpbmcgdG8gcXVpY2tseSBncmFzcCB0aGUgbG9naWNhbCBmbG93IG9mIHRoZSBgS2NvbmZpZ2Agc3RydWN0dXJlLCBsb29raW5nIGZvciBjbHVlcyB0aGF0IG1pZ2h0IHByb3ZpZGUgaW5zaWdodHMgaW50byBidWlsZCBjb25maWd1cmF0aW9ucyBJIG1pZ2h0IGJlIG1pc3NpbmcsIG9yIHBlcmhhcHMgaWRlbnRpZnkgdGhlIHBhcmFtZXRlcnMgdGhhdCBhcmUgcmVsZXZhbnQgdG8gc29sdmUgbXkgcGFydGljdWxhciBwcm9ibGVtLiBUaGUgbGluZSBudW1iZXIgaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LCBhcyBJJiMzOTt2ZSBwcm9iYWJseSBnb3Qgc29tZSBwcmlvciBjb250ZXh0IGFib3V0IHRoZSBmaWxlJiMzOTtzIGdlbmVyYWwgc3RydWN0dXJlLCBzbyBsZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgdGhlcmUgYW5kIHdoYXQgdGhpcyBwYXJ0IGNvbnRyb2xzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMToxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTI1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDM1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxMjU6XHRcdCAgTEFONzgwMSA6IFVTQiAzIHRvIDEwLzEwMC8xMDAwIEV0aGVybmV0IGFkYXB0ZXIgKE1BQyBvbmx5KVxuIDEyNjpcdFxuIDEyNzpcdFx0ICBQcm9wZXIgUEhZIGRyaXZlciBpcyByZXF1aXJlZCBmb3IgTEFONzgwMS5cbiAxMjg6XHRcbiAxMjk6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXG4gMTMwOlx0XHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBsYW43OHh4LlxuIDEzMTpcdFxuIDEzMjpcdGNvbmZpZyBVU0JfVVNCTkVUXG4gMTMzOlx0XHR0cmlzdGF0ZSBcJiMzNDtNdWx0aS1wdXJwb3NlIFVTQiBOZXR3b3JraW5nIEZyYW1ld29ya1wmIzM0O1xuIDEzNDpcdFx0c2VsZWN0IE1JSVxuIDEzNTpcdFx0aGVscFxuIDEzNjpcdFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBzZXZlcmFsIGtpbmRzIG9mIG5ldHdvcmsgbGlua3Mgb3ZlciBVU0IsXG4gMTM3Olx0XHQgIHdpdGggXCYjMzQ7bWluaWRyaXZlcnNcJiMzNDsgYnVpbHQgYXJvdW5kIGEgY29tbW9uIG5ldHdvcmsgZHJpdmVyIGNvcmVcbiAxMzg6XHRcdCAgdGhhdCBzdXBwb3J0cyBkZWVwIHF1ZXVlcyBmb3IgZWZmaWNpZW50IHRyYW5zZmVycy4gIChUaGlzIGdpdmVzXG4gMTM5Olx0XHQgIGJldHRlciBwZXJmb3JtYW5jZSB3aXRoIHNtYWxsIHBhY2tldHMgYW5kIGF0IGhpZ2ggc3BlZWRzKS5cbiAxNDA6XHRcbiAxNDE6XHRcdCAgVGhlIFVTQiBob3N0IHJ1bnMgXCYjMzQ7dXNibmV0XCYjMzQ7LCBhbmQgdGhlIG90aGVyIGVuZCBvZiB0aGUgbGluayBtaWdodCBiZTpcbiAxNDI6XHRcbiAxNDM6XHRcdCAgLSBBbm90aGVyIFVTQiBob3N0LCB3aGVuIHVzaW5nIFVTQiBcJiMzNDtuZXR3b3JrXCYjMzQ7IG9yIFwmIzM0O2RhdGEgdHJhbnNmZXJcJiMzNDtcbiAxNDQ6XHRcdCAgICBjYWJsZXMuICBUaGVzZSBhcmUgb2Z0ZW4gdXNlZCB0byBuZXR3b3JrIGxhcHRvcHMgdG8gUENzLCBsaWtlXG4gMTQ1Olx0XHQgICAgXCYjMzQ7TGFwbGlua1wmIzM0OyBwYXJhbGxlbCBjYWJsZXMgb3Igc29tZSBtb3RoZXJib2FyZHMuICBUaGVzZSByZWx5XG4gMTQ2Olx0XHQgICAgb24gc3BlY2lhbGl6ZWQgY2hpcHMgZnJvbSBtYW55IHN1cHBsaWVycy5cbiAxNDc6XHRcbiAxNDg6XHRcdCAgLSBBbiBpbnRlbGxpZ2VudCBVU0IgZ2FkZ2V0LCBwZXJoYXBzIGVtYmVkZGluZyBhIExpbnV4IHN5c3RlbS5cbiAxNDk6XHRcdCAgICBUaGVzZSBpbmNsdWRlIFBEQXMgcnVubmluZyBMaW51eCAoaVBhcSwgWW9weSwgWmF1cnVzLCBhbmRcbiAxNTA6XHRcdCAgICBvdGhlcnMpLCBhbmQgZGV2aWNlcyB0aGF0IGludGVyb3BlcmF0ZSB1c2luZyB0aGUgc3RhbmRhcmRcbiAxNTE6XHRcdCAgICBDREMtRXRoZXJuZXQgc3BlY2lmaWNhdGlvbiAoaW5jbHVkaW5nIG1hbnkgY2FibGUgbW9kZW1zKS5cbiAxNTI6XHRcbiAxNTM6XHRcdCAgLSBOZXR3b3JrIGFkYXB0ZXIgaGFyZHdhcmUgKGxpa2UgdGhvc2UgZm9yIDEwLzEwMCBFdGhlcm5ldCkgd2hpY2hcbiAxNTQ6XHRcdCAgICB1c2VzIHRoaXMgZHJpdmVyIGZyYW1ld29yay5cbiAxNTU6XHRcbiAxNTY6XHRcdCAgVGhlIGxpbmsgd2lsbCBhcHBlYXIgd2l0aCBhIG5hbWUgbGlrZSBcJiMzNDt1c2IwXCYjMzQ7LCB3aGVuIHRoZSBsaW5rIGlzXG4gMTU3Olx0XHQgIGEgdHdvLW5vZGUgbGluaywgb3IgXCYjMzQ7ZXRoMFwmIzM0OyBmb3IgbW9zdCBDREMtRXRoZXJuZXQgZGV2aWNlcy4gIFRob3NlXG4gMTU4Olx0XHQgIHR3by1ub2RlIGxpbmtzIGFyZSBtb3N0IGVhc2lseSBtYW5hZ2VkIHdpdGggRXRoZXJuZXQgQnJpZGdpbmdcbiAxNTk6XHRcdCAgKENPTkZJR19CUklER0UpIGluc3RlYWQgb2Ygcm91dGluZy5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMDE6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTMxMQoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkludmVzdGlnYXRpbmcgTmV0d29yayBEcml2ZXIgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzIGZvciB0aGVzZSBuZXR3b3JrIGRyaXZlcnMsIHNwZWNpZmljYWxseSB0aGUgb25lcyByZWxhdGVkIHRvIFVTQi4gSSYjMzk7bSB0aGlua2luZyB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludCBpcyB0byBkaXZlIGludG8gdGhlIEtjb25maWcgZmlsZXMuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgYGRyaXZlcnMvbmV0L0tjb25maWdgIGFuZCwgc2luY2Ugd2UmIzM5O3JlIGludGVyZXN0ZWQgaW4gVVNCLCBhbHNvIGBkcml2ZXJzL25ldC91c2IvS2NvbmZpZ2AuIFRoaXMgd2lsbCBhbGxvdyBtZSB0byB0cmFjZSB3aGF0IG9wdGlvbnMgbmVlZCB0byBiZSBlbmFibGVkIGZvciB2YXJpb3VzIG5ldHdvcmsgZHJpdmVyIGZlYXR1cmVzIHRvIGJlY29tZSBhdmFpbGFibGUuIEtub3dpbmcgdGhlIHBhcmVudCBkZXBlbmRlbmNpZXMgaXMgY3JpdGljYWwgZm9yIHRyb3VibGVzaG9vdGluZywgcG9ydGluZywgb3IgZ2VuZXJhbGx5IHVuZGVyc3RhbmRpbmcgaG93IGFsbCB0aGVzZSBwaWVjZXMgZml0IHRvZ2V0aGVyIGluIHRoZSBuZXR3b3JrIHN0YWNrLiBJdCYjMzk7cyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGNvbmRpdGlvbmFsIGxvZ2ljIHRoYXQgY29udHJvbHMgd2hpY2ggZHJpdmVycyBnZXQgYnVpbHQuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgS2NvbmZpZyBmaWxlcyByZXZlYWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAxOjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NvdXJjZS4qZHJpdmVycy9uZXQvdXNiJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnPTUzMj1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9zMzkwL25ldC9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnLTUzMy1cbmRyaXZlcnMvbmV0L0tjb25maWc6NTM0OnNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC91c2IvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZy01MzUtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAxOjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk2MTYKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6CgoqKkFuYWx5emluZyB0aGUgVVNCIE5ldHdvcmsgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgVVNCIG5ldHdvcmtpbmcgZHJpdmVyIGNvbmZpZ3VyYXRpb24uIE15IGZpcnN0IHN0ZXAgaXMgdG8gemVybyBpbiBvbiB0aGUgYEtjb25maWdgIG1lbnUsIHNwZWNpZmljYWxseSB0aGUgb25lIGxvY2F0ZWQgdW5kZXIgYGRyaXZlcnMvbmV0L3VzYi9gLiBJIGtub3cgdGhhdCYjMzk7cyB3aGVyZSB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVzaWRlIGZvciB0aGlzIHBhcnQgb2YgdGhlIGtlcm5lbC4gSSYjMzk7bSBnb2luZyB0byBzY2FuIHRoZSB2ZXJ5IHRvcCBvZiB0aGF0IGZpbGUsIGZvY3VzaW5nIG9uIHRoZSBjb25kaXRpb25hbCBsaW5lcyAodXNpbmcgYGlmYCkuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW5pdGlhbCBjb25kaXRpb25zIG9yIGRlcGVuZGVuY2llcyB0aGF0IGRpY3RhdGUgd2hldGhlciB0aGUgcmVzdCBvZiB0aGUgb3B0aW9ucyBpbiB0aGF0IG1lbnUgYXJlIGV2ZW4gKnZpc2libGUqIG9yIHNlbGVjdGFibGUuIFRoaXMgZmlyc3QgYGlmYCBzdGF0ZW1lbnQgb2Z0ZW4gc2V0cyB0aGUgc3RhZ2UgZm9yIHRoZSBlbnRpcmUgVVNCIG5ldHdvcmtpbmcgY29uZmlndXJhdGlvbiBicmFuY2gsIHNvIGl0JiMzOTtzIGEgY3JpdGljYWwgc3RhcnRpbmcgcG9pbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAxOjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHQjXG4gICAzOlx0IyBVU0IgTmV0d29yayBkZXZpY2VzIGNvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0Y29tbWVudCBcJiMzNDtIb3N0LXNpZGUgVVNCIHN1cHBvcnQgaXMgbmVlZGVkIGZvciBVU0IgTmV0d29yayBBZGFwdGVyIHN1cHBvcnRcJiMzNDtcbiAgIDY6XHRcdGRlcGVuZHMgb24gIVVTQiBcdTAwMjZcdTAwMjYgTkVUXG4gICA3Olx0XG4gICA4Olx0bWVudWNvbmZpZyBVU0JfTkVUX0RSSVZFUlNcbiAgIDk6XHRcdHRyaXN0YXRlIFwmIzM0O1VTQiBOZXR3b3JrIEFkYXB0ZXJzXCYjMzQ7XG4gIDEwOlx0XHRkZWZhdWx0IFVTQiBpZiBVU0JcbiAgMTE6XHRcdGRlcGVuZHMgb24gVVNCIFx1MDAyNlx1MDAyNiBORVRcbiAgMTI6XHRcbiAgMTM6XHRpZiBVU0JfTkVUX0RSSVZFUlNcbiAgMTQ6XHRcbiAgMTU6XHRjb25maWcgVVNCX0NBVENcbiAgMTY6XHRcdHRyaXN0YXRlIFwmIzM0O1VTQiBDQVRDIE5ldE1hdGUtYmFzZWQgRXRoZXJuZXQgZGV2aWNlIHN1cHBvcnRcJiMzNDtcbiAgMTc6XHRcdHNlbGVjdCBDUkMzMlxuICAxODpcdFx0aGVscFxuICAxOTpcdFx0ICBTYXkgWSBpZiB5b3Ugd2FudCB0byB1c2Ugb25lIG9mIHRoZSBmb2xsb3dpbmcgMTBNYnBzIFVTQiBFdGhlcm5ldFxuICAyMDpcdFx0ICBkZXZpY2UgYmFzZWQgb24gdGhlIEVMMTIxMEEgY2hpcC4gU3VwcG9ydGVkIGRldmljZXMgYXJlOlxuICAyMTpcdFx0ICBCZWxraW4gRjVVMDExXG4gIDIyOlx0XHQgIEJlbGtpbiBGNVUxMTFcbiAgMjM6XHRcdCAgQ0FUQyBOZXRNYXRlXG4gIDI0Olx0XHQgIENBVEMgTmV0TWF0ZSBJSVxuICAyNTpcdFx0ICBzbWFydEJyaWRnZXMgc21hcnROSUNcbiAgMjY6XHRcbiAgMjc6XHRcdCAgVGhpcyBkcml2ZXIgbWFrZXMgdGhlIGFkYXB0ZXIgYXBwZWFyIGFzIGEgbm9ybWFsIEV0aGVybmV0IGludGVyZmFjZSxcbiAgMjg6XHRcdCAgdHlwaWNhbGx5IG9uIGV0aDAsIGlmIGl0IGlzIHRoZSBvbmx5IGV0aGVybmV0IGRldmljZSwgb3IgcGVyaGFwcyBvblxuICAyOTpcdFx0ICBldGgxLCBpZiB5b3UgaGF2ZSBhIFBDSSBvciBJU0EgZXRoZXJuZXQgY2FyZCBpbnN0YWxsZWQuXG4gIDMwOlx0XG4gIDMxOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxuICAzMjpcdFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgY2F0Yy5cbiAgMzM6XHRcbiAgMzQ6XHRjb25maWcgVVNCX0tBV0VUSFxuICAzNTpcdFx0dHJpc3RhdGUgXCYjMzQ7VVNCIEtMU0kgS0w1VVNCMTAxLWJhc2VkIGV0aGVybmV0IGRldmljZSBzdXBwb3J0XCYjMzQ7XG4gIDM2Olx0XHRoZWxwXG4gIDM3Olx0XHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIG9uZSBvZiB0aGUgZm9sbG93aW5nIDEwTWJwcyBvbmx5XG4gIDM4Olx0XHQgIFVTQiBFdGhlcm5ldCBhZGFwdGVycyBiYXNlZCBvbiB0aGUgS0xTSSBLTDVLVVNCMTAxQiBjaGlwc2V0OlxuICAzOTpcdFx0ICAzQ29tIDNDMTkyNTBcbiAgNDA6XHRcdCAgQURTIFVTQi0xMEJUXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAxOjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMzk3CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogNDA2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGF0Y2gmIzM5O3MgSW1wYWN0IGFuZCBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2ggYW5kIGZpZ3VyZSBvdXQgaWYgaXQmIzM5O3MgZXZlbiB3b3J0aCBjb25zaWRlcmluZyBmb3IgZnV6emluZy4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGZvY3VzaW5nIG9uIGBjeDgyMzEwX3J4X2ZpeHVwYC4gTG9va2luZyBhdCB0aGUgY29kZSwgaXQgc2VlbXMgdGhlIGNoYW5nZSBhZGRyZXNzZXMgYSBzcGVjaWZpYyBjb25kaXRpb246IGBsZW4gPT0gMHhmZmZmYC4KCkJlZm9yZSB0aGUgcGF0Y2gsIGlmIGBsZW5gIHdhcyBlcXVhbCB0byAweGZmZmYsIHRoZSBjb2RlIHdvdWxkIHByaW50IGEgJiMzNDtyb3V0ZXIgd2FzIHJlYm9vdGVkJiMzNDsgbWVzc2FnZSwgc2NoZWR1bGUgc29tZSB3b3JrLCBhbmQgdGhlbi4uLiAqZmFsbCB0aHJvdWdoKiB0byB0aGUgaW5jb21wbGV0ZSBwYWNrZXQgaGFuZGxpbmcgbG9naWMuIFRoYXQmIzM5O3MgYSBiaXQgb2RkLiBUaGUgZm9sbG93aW5nIGNvZGUgZGVhbHMgd2l0aCB3aGF0IGFwcGVhcnMgdG8gYmUgaW5jb21wbGV0ZSBwYWNrZXRzIGFuZCBhdHRlbXB0cyB0byBzYXZlIHRoZW0gZm9yIHJlYXNzZW1ibHkgbGF0ZXIuCgpUaGVuIGl0IGhpdHMgbWU6IGBsZW4gPSAweGZmZmZgIHdoaWNoIGlzIDY1NTM1LCBhIHN1cnByaXNpbmdseSBsYXJnZSB2YWx1ZSEgTm93IHRoZSBxdWVzdGlvbiB0aGF0IGFyaXNlczogV2hhdCYjMzk7cyB0aGUgc2l6ZSBhbmQgdHlwZSBvZiBgZGV2LSZndDtwYXJ0aWFsX2RhdGFgPyBJcyBpdCBhIGZpeGVkIGJ1ZmZlciwgb3IgaXMgaXQgcGFydCBvZiBhbiBgc2tiYCBidWZmZXIgd2l0aGluIHRoZSBgdXNibmV0YCBzdHJ1Y3R1cmU/IFRoYXQmIzM5O3MgdGhlIGNyaXRpY2FsIHBpZWNlIGhlcmUsIHdoZXRoZXIgaXQmIzM5O3Mgc3RhdGljYWxseSBhbGxvY2F0ZWQgb3IgZHluYW1pY2FsbHkgbWFuYWdlZC4KCkkgbmVlZCB0byB0cmFjZSBiYWNrIHdoZXJlIGBkZXYtJmd0O3BhcnRpYWxfZGF0YWAgaXMgZGVmaW5lZCBhbmQgaG93IGl0cyBzaXplIGlzIGRldGVybWluZWQuIEVpdGhlciBpbiBgY3g4MjMxMF9iaW5kYCBvciB0aGUgcGFyZW50IGB1c2JuZXRgIHN0cnVjdHVyZS4gVGhpcyBjb3VsZCBiZSBpbnRlcmVzdGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMDE6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGFydGlhbF9kYXRhJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jPTEzMD1zdGF0aWMgdm9pZCBjeDgyMzEwX3JlZW5hYmxlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTEzOC0jZGVmaW5lIHBhcnRpYWxfcmVtXHRkYXRhWzFdXHRcdC8qIHJlbWFpbmluZyAobWlzc2luZykgZGF0YSBsZW5ndGggKi9cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjEzOTojZGVmaW5lIHBhcnRpYWxfZGF0YVx0ZGF0YVsyXVx0XHQvKiBwYXJ0aWFsIHBhY2tldCBkYXRhICovXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0xNDAtXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYz0xNDE9c3RhdGljIGludCBjeDgyMzEwX2JpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0xNzEtXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzoxNzI6XHRkZXYtXHUwMDNlcGFydGlhbF9kYXRhID0gKHVuc2lnbmVkIGxvbmcpIGttYWxsb2MoZGV2LVx1MDAzZWhhcmRfbXR1LCBHRlBfS0VSTkVMKTtcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjE3MzpcdGlmICghZGV2LVx1MDAzZXBhcnRpYWxfZGF0YSlcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTE3NC1cdFx0cmV0dXJuIC1FTk9NRU07XG4tLVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMjIxLWVycl9wYXJ0aWFsOlxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MjIyOlx0a2ZyZWUoKHZvaWQgKilkZXYtXHUwMDNlcGFydGlhbF9kYXRhKTtcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTIyMy1cdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM9MjI2PXN0YXRpYyB2b2lkIGN4ODIzMTBfdW5iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMjI5LVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MjMwOlx0a2ZyZWUoKHZvaWQgKilkZXYtXHUwMDNlcGFydGlhbF9kYXRhKTtcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTIzMS1cdGNhbmNlbF93b3JrX3N5bmMoXHUwMDI2cHJpdi1cdTAwM2VyZWVuYWJsZV93b3JrKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYz0yNDM9c3RhdGljIGludCBjeDgyMzEwX3J4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0yNTgtXHRcdHNrYl9wdXQoc2tiMiwgbGVuKTtcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjI1OTpcdFx0bWVtY3B5KHNrYjItXHUwMDNlZGF0YSwgKHZvaWQgKilkZXYtXHUwMDNlcGFydGlhbF9kYXRhLFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMjYwLVx0XHQgICAgICAgZGV2LVx1MDAzZXBhcnRpYWxfbGVuKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0yOTQtXHRcdFx0ZGV2LVx1MDAzZXBhcnRpYWxfcmVtID0gbGVuIC0gc2tiLVx1MDAzZWxlbjtcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjI5NTpcdFx0XHRtZW1jcHkoKHZvaWQgKilkZXYtXHUwMDNlcGFydGlhbF9kYXRhLCBza2ItXHUwMDNlZGF0YSxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTI5Ni1cdFx0XHQgICAgICAgZGV2LVx1MDAzZXBhcnRpYWxfbGVuKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMDE6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE5NTUKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA2NjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBXb3J0aCBvZiBGdXp6aW5nIGBjeDgyMzEwX3J4X2ZpeHVwYCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIG9ic2VydmF0aW9uIGlzIGZvY3VzZWQgb24gYGN4ODIzMTBfcnhfZml4dXBgLiBTcGVjaWZpY2FsbHksIHRoZSBjYXNlIHdoZXJlIHRoZSBsZW5ndGggYGxlbmAgZXF1YWxzIGAweGZmZmZgLiBJdCYjMzk7cyBjbGVhciB0aGVyZSYjMzk7cyBhIHBvdGVudGlhbCBvdmVyZmxvdyBjb25kaXRpb24gaGVyZSwgc3RlbW1pbmcgZnJvbSBob3cgdGhlIGNvZGUgaGFuZGxlcyBwYXJ0aWFsIHBhY2tldHMgd2hlbiBgbGVuYCBoaXRzIHRoaXMgbWF4aW11bSB2YWx1ZS4gUHJldmlvdXNseSwgdGhlIGxvZ2ljIGZsb3dlZCBpbnRvIGEgcHJvYmxlbWF0aWMgYGlmIChsZW4gJmd0OyBza2ItJmd0O2xlbilgIGNvbmRpdGlvbiB3aGljaCBzZXRzIGBkZXYtJmd0O3BhcnRpYWxfcmVtID0gMHhmZmZmIC0gc2tiLSZndDtsZW47YC4gVGhpcywgY291cGxlZCB3aXRoIGhvdyB0aGUgbmV4dCBwYWNrZXQmIzM5O3MgbGVuZ3RoIGlzIGNhbGN1bGF0ZWQsIGNvdWxkIGxlYWQgdG8gYWxsb2NhdGluZyBhIG1hc3NpdmUgU0tCIGJ1ZmZlciwgb3IgZXZlbiBhbiBvdmVyZmxvdy4gVGhlIGZpeCwgcmV0dXJuaW5nIDAsIGluZGljYXRlcyBhIFJYIGZhaWx1cmUvcGFja2V0IGRyb3AuCgpOb3csIEkgbmVlZCB0byBldmFsdWF0ZSBpZiBmdXp6aW5nIHRoaXMgaXMgd29ydGh3aGlsZS4gTGV0JiMzOTtzIHNlZSBpZiBpdCBoaXRzIG15IGNyaXRlcmlhLgoKRmlyc3QsICpyZWFjaGFiaWxpdHkqLiBDYW4gYGN4ODIzMTBgIGJlIHRyaWdnZXJlZCBpbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIHdpdGggc3l6a2FsbGVyPyBZZXMsIGFic29sdXRlbHkuIFVTQiBkcml2ZXJzIGFyZSBlbXVsYXRhYmxlIHZpYSBVU0IgUmF3IEdhZGdldCwgc3l6a2FsbGVyIFVTQiBmdXp6aW5nLCBhbmQgdG9vbHMgbGlrZSBkdW1teV9oY2QuIFN5emthbGxlciByZWd1bGFybHkgdGFja2xlcyBVU0IgZGV2aWNlIGRyaXZlcnMsIGluY2x1ZGluZyB0aGUgYHVzYm5ldGAgbWluaWRyaXZlcnMuIFRoaXMgaXMgcHJvbWlzaW5nLgoKTmV4dCwgZG9lcyB0aGlzIHBhdGNoICptb2RpZnkgY29yZSBrZXJuZWwgbG9naWMqIG9yIHNpZ25pZmljYW50IGRyaXZlcnMvYXJjaGl0ZWN0dXJlcz8gSXQgZGlyZWN0bHkgYWx0ZXJzIHRoZSBjb250cm9sIGZsb3cgd2l0aGluIGBjeDgyMzEwX3J4X2ZpeHVwYCwgc3BlY2lmaWNhbGx5IHRoZSBSWCBwYWNrZXQgaGFuZGxpbmcgd2hlbiBgbGVuID09IDB4ZmZmZmAuIFRoaXMgaXMgYSBzaWduaWZpY2FudCBmdW5jdGlvbmFsIGNoYW5nZS4KCkZpbmFsbHksIGRvZXMgaXQgZmFsbCBpbnRvIHRoZSAqZXhjbHVzaW9ucyogZm9yIGZ1enppbmc/IExldCYjMzk7cyBjaGVjayBhZ2FpbnN0IHRoZSBydWxlcy4gVGhpcyBpc24mIzM5O3QganVzdCBkb2N1bWVudGF0aW9uIG9yIGxvZ2dpbmcsIGlzbiYjMzk7dCBhIHNpbXBsZSBjb25zdGFudCBjaGFuZ2UsIGlzIHJlYWNoYWJsZSB2aWEgdmlydHVhbGl6YXRpb24sIGFuZCBpc24mIzM5O3QgYSB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrLiBJbiBmYWN0LCBpdCBjaGFuZ2VzIGFuIFJYIHBhdGggd2l0aGluIGEgVVNCIG5ldHdvcmsgZHJpdmVyIChgY3g4MjMxMF9ldGhgKSwgbW9kaWZ5aW5nIGl0cyBleGVjdXRpb24gcGF0aC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLgoKVGhlcmVmb3JlLCBnaXZlbiB0aGUgc2V2ZXJpdHkgb2YgdGhlIHBvdGVudGlhbCBvdmVyZmxvdyBhbmQgaXRzIHJlYWNoYWJpbGl0eSwgYFdvcnRoRnV6emluZyA9IHRydWVgLgoKTmV4dCwgSSBuZWVkIHRvIGlkZW50aWZ5IHRoZSAqRm9jdXNTeW1ib2xzKi4gVGhlIGNyaXRpY2FsIG9uZXMgYXJlIHdpdGhpbiBgY3g4MjMxMF9yeF9maXh1cGAgYW5kIGl0cyBjYWxsZXJzLiBUaGUga2V5IGlzIG5vdyB0byBwaW5wb2ludCBleGFjdGx5IGhvdyBgY3g4MjMxMF9yeF9maXh1cGAgaXMgaW52b2tlZCBmcm9tIGB1c2JuZXRgLiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIGBjeDgyMzEwX3J4X2ZpeHVwYCBvciBpdHMgY2FsbGVyIGZ1bmN0aW9ucyB3aXRoaW4gYHVzYm5ldGAgb3IgYGN4ODIzMTBgIGFyZSBleHBvcnRlZC9ub24tc3RhdGljL3N0YXRpYywgdG8gZmlndXJlIG91dCB0aGUgcmlnaHQgc3ltYm9scy4gQSBxdWljayBgZ3JlcGAgZm9yICYjMzQ7cnhfZml4dXAmIzM0OyB3aXRoaW4gYGRyaXZlcnMvbmV0L3VzYi91c2JuZXQuY2Agc2hvdWxkIGRvIHRoZSB0cmljay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMDE6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnhfZml4dXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2ImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDY1OCBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jPTEwNTc9c3RhdGljIHZvaWQgYXFjMTExX3J4X2NoZWNrc3VtKHN0cnVjdCBza19idWZmICpza2IsIHU2NCBwa3RfZGVzYylcbi0tXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmMtMTA3MS1cbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzoxMDcyOnN0YXRpYyBpbnQgYXFjMTExX3J4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0xMDczLXtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM9MTI0Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIGFxYzExMV9pbmZvID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0xMjUxLVx0XHRcdCAgRkxBR19BVk9JRF9VTkxJTktfVVJCUyB8IEZMQUdfTVVMVElfUEFDS0VULFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jOjEyNTI6XHQucnhfZml4dXBcdD0gYXFjMTExX3J4X2ZpeHVwLFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTEyNTMtXHQudHhfZml4dXBcdD0gYXFjMTExX3R4X2ZpeHVwLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYz0xMjU5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gYXNpeDExMV9pbmZvID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0xMjY4LVx0XHRcdCAgRkxBR19BVk9JRF9VTkxJTktfVVJCUyB8IEZMQUdfTVVMVElfUEFDS0VULFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jOjEyNjk6XHQucnhfZml4dXBcdD0gYXFjMTExX3J4X2ZpeHVwLFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTEyNzAtXHQudHhfZml4dXBcdD0gYXFjMTExX3R4X2ZpeHVwLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYz0xMjc4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gYXNpeDExMl9pbmZvID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0xMjg3LVx0XHRcdCAgRkxBR19BVk9JRF9VTkxJTktfVVJCUyB8IEZMQUdfTVVMVElfUEFDS0VULFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jOjEyODg6XHQucnhfZml4dXBcdD0gYXFjMTExX3J4X2ZpeHVwLFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTEyODktXHQudHhfZml4dXBcdD0gYXFjMTExX3R4X2ZpeHVwLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYz0xMjk0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gdHJlbmRuZXRfaW5mbyA9IHtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmMtMTMwMy1cdFx0XHQgIEZMQUdfQVZPSURfVU5MSU5LX1VSQlMgfCBGTEFHX01VTFRJX1BBQ0tFVCxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzoxMzA0Olx0LnJ4X2ZpeHVwXHQ9IGFxYzExMV9yeF9maXh1cCxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0xMzA1LVx0LnR4X2ZpeHVwXHQ9IGFxYzExMV90eF9maXh1cCxcbi0tXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM9MTMwOD1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIHFuYXBfaW5mbyA9IHtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmMtMTMxNy1cdFx0XHQgIEZMQUdfQVZPSURfVU5MSU5LX1VSQlMgfCBGTEFHX01VTFRJX1BBQ0tFVCxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzoxMzE4Olx0LnJ4X2ZpeHVwXHQ9IGFxYzExMV9yeF9maXh1cCxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0xMzE5LVx0LnR4X2ZpeHVwXHQ9IGFxYzExMV90eF9maXh1cCxcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oPTE2Mz1zdHJ1Y3QgYXNpeF9kYXRhIHtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oLTE3MC1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4Lmg6MTcxOnN0cnVjdCBhc2l4X3J4X2ZpeHVwX2luZm8ge1xuZHJpdmVycy9uZXQvdXNiL2FzaXguaC0xNzItXHRzdHJ1Y3Qgc2tfYnVmZiAqYXhfc2tiO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4Lmg9MTc4PXN0cnVjdCBhc2l4X2NvbW1vbl9wcml2YXRlIHtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oLTE4My1cdHUxNiBwcmVzdmRfcGh5X2JtY3I7XG5kcml2ZXJzL25ldC91c2IvYXNpeC5oOjE4NDpcdHN0cnVjdCBhc2l4X3J4X2ZpeHVwX2luZm8gcnhfZml4dXBfaW5mbztcbmRyaXZlcnMvbmV0L3VzYi9hc2l4LmgtMTg1LVx0c3RydWN0IG1paV9idXMgKm1kaW87XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXguaD0yMDY9dm9pZCBhc2l4X3dyaXRlX2NtZF9hc3luYyhzdHJ1Y3QgdXNibmV0ICpkZXYsIHU4IGNtZCwgdTE2IHZhbHVlLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4LmgtMjA4LVxuZHJpdmVycy9uZXQvdXNiL2FzaXguaDoyMDk6aW50IGFzaXhfcnhfZml4dXBfaW50ZXJuYWwoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuZHJpdmVycy9uZXQvdXNiL2FzaXguaDoyMTA6XHRcdFx0ICAgc3RydWN0IGFzaXhfcnhfZml4dXBfaW5mbyAqcngpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXguaDoyMTE6aW50IGFzaXhfcnhfZml4dXBfY29tbW9uKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG5kcml2ZXJzL25ldC91c2IvYXNpeC5oOjIxMjp2b2lkIGFzaXhfcnhfZml4dXBfY29tbW9uX2ZyZWUoc3RydWN0IGFzaXhfY29tbW9uX3ByaXZhdGUgKmRwKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4LmgtMjEzLVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jPTkyPXN0YXRpYyBpbnQgYXNpeF9jaGVja19ob3N0X2VuYWJsZShzdHJ1Y3QgdXNibmV0ICpkZXYsIGludCBpbl9wbSlcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy0xMTQtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzoxMTU6c3RhdGljIHZvaWQgcmVzZXRfYXNpeF9yeF9maXh1cF9pbmZvKHN0cnVjdCBhc2l4X3J4X2ZpeHVwX2luZm8gKnJ4KVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtMTE2LXtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTExNy1cdC8qIFJlc2V0IHRoZSB2YXJpYWJsZXMgdGhhdCBoYXZlIGEgbGlmZXRpbWUgb3V0c2lkZSBvZlxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6MTE4Olx0ICogYXNpeF9yeF9maXh1cF9pbnRlcm5hbCgpIHNvIHRoYXQgZnV0dXJlIHByb2Nlc3Npbmcgc3RhcnRzIGZyb20gYVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtMTE5LVx0ICoga25vd24gc2V0IG9mIGluaXRpYWwgY29uZGl0aW9ucy5cbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy0xMzUtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzoxMzY6aW50IGFzaXhfcnhfZml4dXBfaW50ZXJuYWwoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6MTM3Olx0XHRcdCAgIHN0cnVjdCBhc2l4X3J4X2ZpeHVwX2luZm8gKnJ4KVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtMTM4LXtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy0xNTctXHRcdGlmIChzaXplICE9ICgofnJ4LVx1MDAzZWhlYWRlciBcdTAwM2VcdTAwM2UgMTYpIFx1MDAyNiAweDdmZikpIHtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjE1ODpcdFx0XHRuZXRkZXZfZXJyKGRldi1cdTAwM2VuZXQsIFwmIzM0O2FzaXhfcnhfZml4dXAoKSBEYXRhIEhlYWRlciBzeW5jaHJvbmlzYXRpb24gd2FzIGxvc3QsIHJlbWFpbmluZyAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTE1OS1cdFx0XHRcdCAgIHJ4LVx1MDAzZXJlbWFpbmluZyk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzoxNjA6XHRcdFx0cmVzZXRfYXNpeF9yeF9maXh1cF9pbmZvKHJ4KTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTE2MS1cdFx0fVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTE4OS1cdFx0XHRpZiAoc2l6ZSAhPSAoKH5yeC1cdTAwM2VoZWFkZXIgXHUwMDNlXHUwMDNlIDE2KSBcdTAwMjYgMHg3ZmYpKSB7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzoxOTA6XHRcdFx0XHRuZXRkZXZfZXJyKGRldi1cdTAwM2VuZXQsIFwmIzM0O2FzaXhfcnhfZml4dXAoKSBCYWQgSGVhZGVyIExlbmd0aCAweCV4LCBvZmZzZXQgJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy0xOTEtXHRcdFx0XHRcdCAgIHJ4LVx1MDAzZWhlYWRlciwgb2Zmc2V0KTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjE5MjpcdFx0XHRcdHJlc2V0X2FzaXhfcnhfZml4dXBfaW5mbyhyeCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy0xOTMtXHRcdFx0XHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy0xOTUtXHRcdFx0aWYgKHNpemUgXHUwMDNlIGRldi1cdTAwM2VuZXQtXHUwMDNlbXR1ICYjNDM7IEVUSF9ITEVOICYjNDM7IFZMQU5fSExFTikge1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6MTk2Olx0XHRcdFx0bmV0ZGV2X2RiZyhkZXYtXHUwMDNlbmV0LCBcJiMzNDthc2l4X3J4X2ZpeHVwKCkgQmFkIFJYIExlbmd0aCAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTE5Ny1cdFx0XHRcdFx0ICAgc2l6ZSk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzoxOTg6XHRcdFx0XHRyZXNldF9hc2l4X3J4X2ZpeHVwX2luZm8ocngpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtMTk5LVx0XHRcdFx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtMjMyLVx0aWYgKHNrYi1cdTAwM2VsZW4gIT0gb2Zmc2V0KSB7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzoyMzM6XHRcdG5ldGRldl9lcnIoZGV2LVx1MDAzZW5ldCwgXCYjMzQ7YXNpeF9yeF9maXh1cCgpIEJhZCBTS0IgTGVuZ3RoICVkLCAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTIzNC1cdFx0XHQgICBza2ItXHUwMDNlbGVuLCBvZmZzZXQpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6MjM1Olx0XHRyZXNldF9hc2l4X3J4X2ZpeHVwX2luZm8ocngpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtMjM2LVx0XHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy0yNDEtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzoyNDI6aW50IGFzaXhfcnhfZml4dXBfY29tbW9uKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTI0My17XG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy0yNDQtXHRzdHJ1Y3QgYXNpeF9jb21tb25fcHJpdmF0ZSAqZHAgPSBkZXYtXHUwMDNlZHJpdmVyX3ByaXY7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzoyNDU6XHRzdHJ1Y3QgYXNpeF9yeF9maXh1cF9pbmZvICpyeCA9IFx1MDAyNmRwLVx1MDAzZXJ4X2ZpeHVwX2luZm87XG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy0yNDYtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzoyNDc6XHRyZXR1cm4gYXNpeF9yeF9maXh1cF9pbnRlcm5hbChkZXYsIHNrYiwgcngpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtMjQ4LX1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTI0OS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjI1MDp2b2lkIGFzaXhfcnhfZml4dXBfY29tbW9uX2ZyZWUoc3RydWN0IGFzaXhfY29tbW9uX3ByaXZhdGUgKmRwKVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtMjUxLXtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjI1MjpcdHN0cnVjdCBhc2l4X3J4X2ZpeHVwX2luZm8gKnJ4O1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtMjUzLVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTI1Ni1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjI1NzpcdHJ4ID0gXHUwMDI2ZHAtXHUwMDNlcnhfZml4dXBfaW5mbztcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTI1OC1cbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9OTU1PXN0YXRpYyB2b2lkIGF4ODg3NzJfdW5iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTk2My1cdGF4ODg3NzJfbWRpb191bnJlZ2lzdGVyKHByaXYpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjk2NDpcdGFzaXhfcnhfZml4dXBfY29tbW9uX2ZyZWUoZGV2LVx1MDAzZWRyaXZlcl9wcml2KTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05NjUtXHQvKiBEcm9wIHRoZSBQTSB1c2FnZSByZWYgdGFrZW4gaW4gYmluZCgpICovXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTk2OT1zdGF0aWMgdm9pZCBheDg4MTc4X3VuYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTk3MC17XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTcxOlx0YXNpeF9yeF9maXh1cF9jb21tb25fZnJlZShkZXYtXHUwMDNlZHJpdmVyX3ByaXYpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTk3Mi1cdGtmcmVlKGRldi1cdTAwM2Vkcml2ZXJfcHJpdik7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTEzNjY9c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mbyBheDg4NzcyX2luZm8gPSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEzNzItXHQuZmxhZ3MgPSBGTEFHX0VUSEVSIHwgRkxBR19GUkFNSU5HX0FYIHwgRkxBR19NVUxUSV9QQUNLRVQsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTM3MzpcdC5yeF9maXh1cCA9IGFzaXhfcnhfZml4dXBfY29tbW9uLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEzNzQtXHQudHhfZml4dXAgPSBhc2l4X3R4X2ZpeHVwLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0xMzc3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gYXg4ODc3MmJfaW5mbyA9IHtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTM4My1cdC5mbGFncyA9IEZMQUdfRVRIRVIgfCBGTEFHX0ZSQU1JTkdfQVggfCBGTEFHX01VTFRJX1BBQ0tFVCxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMzg0Olx0LnJ4X2ZpeHVwID0gYXNpeF9yeF9maXh1cF9jb21tb24sXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTM4NS1cdC50eF9maXh1cCA9IGFzaXhfdHhfZml4dXAsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTEzODk9c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mbyBseGF1c2JfdDFsX2luZm8gPSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEzOTUtXHQuZmxhZ3MgPSBGTEFHX0VUSEVSIHwgRkxBR19GUkFNSU5HX0FYIHwgRkxBR19NVUxUSV9QQUNLRVQsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTM5NjpcdC5yeF9maXh1cCA9IGFzaXhfcnhfZml4dXBfY29tbW9uLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEzOTctXHQudHhfZml4dXAgPSBhc2l4X3R4X2ZpeHVwLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0xNDAxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gYXg4ODE3OF9pbmZvID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xNDA5LVx0XHQgRkxBR19NVUxUSV9QQUNLRVQsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTQxMDpcdC5yeF9maXh1cCA9IGFzaXhfcnhfZml4dXBfY29tbW9uLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTE0MTEtXHQudHhfZml4dXAgPSBhc2l4X3R4X2ZpeHVwLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0xNDIzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gaGcyMGY5X2luZm8gPSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTE0MjgtXHQuZmxhZ3MgPSBGTEFHX0VUSEVSIHwgRkxBR19GUkFNSU5HX0FYIHwgRkxBR19NVUxUSV9QQUNLRVQsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTQyOTpcdC5yeF9maXh1cCA9IGFzaXhfcnhfZml4dXBfY29tbW9uLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTE0MzAtXHQudHhfZml4dXAgPSBhc2l4X3R4X2ZpeHVwLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0xNDM0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gbHljb25zeXNfZmliZXJnZWNrbzEwMF9pbmZvID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xNDQxLVx0XHQgRkxBR19NVUxUSV9QQUNLRVQsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTQ0MjpcdC5yeF9maXh1cCA9IGFzaXhfcnhfZml4dXBfY29tbW9uLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTE0NDMtXHQudHhfZml4dXAgPSBhc2l4X3R4X2ZpeHVwLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jPTE4PXN0cnVjdCBheDg4MTcyYV9wcml2YXRlIHtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy0yNC1cdGludCB1c2VfZW1iZHBoeTtcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jOjI1Olx0c3RydWN0IGFzaXhfcnhfZml4dXBfaW5mbyByeF9maXh1cF9pbmZvO1xuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtMjYtfTtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYz0yNjE9c3RhdGljIGludCBheDg4MTcyYV9yZXNldChzdHJ1Y3QgdXNibmV0ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtMzM4LVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmM6MzM5OnN0YXRpYyBpbnQgYXg4ODE3MmFfcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtMzQwLXtcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jLTM0MS1cdHN0cnVjdCBheDg4MTcyYV9wcml2YXRlICpkcCA9IGRldi1cdTAwM2Vkcml2ZXJfcHJpdjtcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jOjM0MjpcdHN0cnVjdCBhc2l4X3J4X2ZpeHVwX2luZm8gKnJ4ID0gXHUwMDI2ZHAtXHUwMDNlcnhfZml4dXBfaW5mbztcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jLTM0My1cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jOjM0NDpcdHJldHVybiBhc2l4X3J4X2ZpeHVwX2ludGVybmFsKGRldiwgc2tiLCByeCk7XG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy0zNDUtfVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jPTM0Nz1jb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gYXg4ODE3MmFfaW5mbyA9IHtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy0zNTUtXHRcdCBGTEFHX01VTFRJX1BBQ0tFVCxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jOjM1NjpcdC5yeF9maXh1cCA9IGF4ODgxNzJhX3J4X2ZpeHVwLFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtMzU3LVx0LnR4X2ZpeHVwID0gYXNpeF90eF9maXh1cCxcbi0tXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmM9MTM0Mj1heDg4MTc5X3J4X2NoZWNrc3VtKHN0cnVjdCBza19idWZmICpza2IsIHUzMiAqcGt0X2hkcilcbi0tXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMtMTM1Ni1cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYzoxMzU3OnN0YXRpYyBpbnQgYXg4ODE3OV9yeF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMtMTM1OC17XG4tLVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jPTE3MTI9c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mbyBheDg4MTc5X2luZm8gPSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jLTE3MjAtXHQuZmxhZ3MgPSBGTEFHX0VUSEVSIHwgRkxBR19GUkFNSU5HX0FYLFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jOjE3MjE6XHQucnhfZml4dXAgPSBheDg4MTc5X3J4X2ZpeHVwLFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jLTE3MjItXHQudHhfZml4dXAgPSBheDg4MTc5X3R4X2ZpeHVwLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYz0xNzI1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gYXg4ODE3OGFfaW5mbyA9IHtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMtMTczMy1cdC5mbGFncyA9IEZMQUdfRVRIRVIgfCBGTEFHX0ZSQU1JTkdfQVgsXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmM6MTczNDpcdC5yeF9maXh1cCA9IGF4ODgxNzlfcnhfZml4dXAsXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMtMTczNS1cdC50eF9maXh1cCA9IGF4ODgxNzlfdHhfZml4dXAsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jPTE3Mzg9c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mbyBjeXByZXNzX0dYM19pbmZvID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYy0xNzQ2LVx0LmZsYWdzID0gRkxBR19FVEhFUiB8IEZMQUdfRlJBTUlOR19BWCxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYzoxNzQ3Olx0LnJ4X2ZpeHVwID0gYXg4ODE3OV9yeF9maXh1cCxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYy0xNzQ4LVx0LnR4X2ZpeHVwID0gYXg4ODE3OV90eF9maXh1cCxcbi0tXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmM9MTc1MT1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIGRsaW5rX2R1YjEzMTJfaW5mbyA9IHtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMtMTc1OS1cdC5mbGFncyA9IEZMQUdfRVRIRVIgfCBGTEFHX0ZSQU1JTkdfQVgsXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmM6MTc2MDpcdC5yeF9maXh1cCA9IGF4ODgxNzlfcnhfZml4dXAsXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMtMTc2MS1cdC50eF9maXh1cCA9IGF4ODgxNzlfdHhfZml4dXAsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jPTE3NjQ9c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mbyBzaXRlY29tX2luZm8gPSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jLTE3NzItXHQuZmxhZ3MgPSBGTEFHX0VUSEVSIHwgRkxBR19GUkFNSU5HX0FYLFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jOjE3NzM6XHQucnhfZml4dXAgPSBheDg4MTc5X3J4X2ZpeHVwLFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jLTE3NzQtXHQudHhfZml4dXAgPSBheDg4MTc5X3R4X2ZpeHVwLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYz0xNzc3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gc2Ftc3VuZ19pbmZvID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYy0xNzg1LVx0LmZsYWdzID0gRkxBR19FVEhFUiB8IEZMQUdfRlJBTUlOR19BWCxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYzoxNzg2Olx0LnJ4X2ZpeHVwID0gYXg4ODE3OV9yeF9maXh1cCxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYy0xNzg3LVx0LnR4X2ZpeHVwID0gYXg4ODE3OV90eF9maXh1cCxcbi0tXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmM9MTc5MD1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIGxlbm92b19pbmZvID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYy0xNzk4LVx0LmZsYWdzID0gRkxBR19FVEhFUiB8IEZMQUdfRlJBTUlOR19BWCxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYzoxNzk5Olx0LnJ4X2ZpeHVwID0gYXg4ODE3OV9yeF9maXh1cCxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYy0xODAwLVx0LnR4X2ZpeHVwID0gYXg4ODE3OV90eF9maXh1cCxcbi0tXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmM9MTgwMz1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIGJlbGtpbl9pbmZvID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYy0xODExLVx0LmZsYWdzXHQ9IEZMQUdfRVRIRVIgfCBGTEFHX0ZSQU1JTkdfQVgsXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmM6MTgxMjpcdC5yeF9maXh1cCA9IGF4ODgxNzlfcnhfZml4dXAsXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMtMTgxMy1cdC50eF9maXh1cCA9IGF4ODgxNzlfdHhfZml4dXAsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jPTE4MTY9c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mbyB0b3NoaWJhX2luZm8gPSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jLTE4MjQtXHQuZmxhZ3NcdD0gRkxBR19FVEhFUiB8IEZMQUdfRlJBTUlOR19BWCxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYzoxODI1Olx0LnJ4X2ZpeHVwID0gYXg4ODE3OV9yeF9maXh1cCxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYy0xODI2LVx0LnR4X2ZpeHVwID0gYXg4ODE3OV90eF9maXh1cCxcbi0tXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmM9MTgyOT1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIG1jdF9pbmZvID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYy0xODM3LVx0LmZsYWdzXHQ9IEZMQUdfRVRIRVIgfCBGTEFHX0ZSQU1JTkdfQVgsXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmM6MTgzODpcdC5yeF9maXh1cCA9IGF4ODgxNzlfcnhfZml4dXAsXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMtMTgzOS1cdC50eF9maXh1cCA9IGF4ODgxNzlfdHhfZml4dXAsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jPTE4NDI9c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mbyBhdF91bWMyMDAwX2luZm8gPSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jLTE4NTAtXHQuZmxhZ3MgID0gRkxBR19FVEhFUiB8IEZMQUdfRlJBTUlOR19BWCxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYzoxODUxOlx0LnJ4X2ZpeHVwID0gYXg4ODE3OV9yeF9maXh1cCxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYy0xODUyLVx0LnR4X2ZpeHVwID0gYXg4ODE3OV90eF9maXh1cCxcbi0tXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmM9MTg1NT1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIGF0X3VtYzIwMF9pbmZvID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYy0xODYzLVx0LmZsYWdzICA9IEZMQUdfRVRIRVIgfCBGTEFHX0ZSQU1JTkdfQVgsXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmM6MTg2NDpcdC5yeF9maXh1cCA9IGF4ODgxNzlfcnhfZml4dXAsXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMtMTg2NS1cdC50eF9maXh1cCA9IGF4ODgxNzlfdHhfZml4dXAsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jPTE4Njg9c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mbyBhdF91bWMyMDAwc3BfaW5mbyA9IHtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMtMTg3Ni1cdC5mbGFncyAgPSBGTEFHX0VUSEVSIHwgRkxBR19GUkFNSU5HX0FYLFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jOjE4Nzc6XHQucnhfZml4dXAgPSBheDg4MTc5X3J4X2ZpeHVwLFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jLTE4NzgtXHQudHhfZml4dXAgPSBheDg4MTc5X3R4X2ZpeHVwLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfZWVtLmM9ODk9c3RhdGljIHN0cnVjdCBza19idWZmICplZW1fdHhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfZWVtLmMtMTUzLVxuZHJpdmVycy9uZXQvdXNiL2NkY19lZW0uYzoxNTQ6c3RhdGljIGludCBlZW1fcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvdXNiL2NkY19lZW0uYy0xNTUte1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfZWVtLmM9MzMwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gZWVtX2luZm8gPSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19lZW0uYy0zMzMtXHQuYmluZCA9XHRcdGVlbV9iaW5kLFxuZHJpdmVycy9uZXQvdXNiL2NkY19lZW0uYzozMzQ6XHQucnhfZml4dXAgPVx0ZWVtX3J4X2ZpeHVwLFxuZHJpdmVycy9uZXQvdXNiL2NkY19lZW0uYy0zMzUtXHQudHhfZml4dXAgPVx0ZWVtX3R4X2ZpeHVwLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYz00NzI9c3RhdGljIGludCB1c2JuZXRfY2RjX3p0ZV9iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jLTQ4OC0gKi9cbmRyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYzo0ODk6aW50IHVzYm5ldF9jZGNfenRlX3J4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYy00OTAte1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYy00OTgtfVxuZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jOjQ5OTpFWFBPUlRfU1lNQk9MX0dQTCh1c2JuZXRfY2RjX3p0ZV9yeF9maXh1cCk7XG5kcml2ZXJzL25ldC91c2IvY2RjX2V0aGVyLmMtNTAwLVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYz01NTE9c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mb1x0enRlX2NkY19pbmZvID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYy01NTgtXHQubWFuYWdlX3Bvd2VyID1cdHVzYm5ldF9tYW5hZ2VfcG93ZXIsXG5kcml2ZXJzL25ldC91c2IvY2RjX2V0aGVyLmM6NTU5Olx0LnJ4X2ZpeHVwID0gdXNibmV0X2NkY196dGVfcnhfZml4dXAsXG5kcml2ZXJzL25ldC91c2IvY2RjX2V0aGVyLmMtNTYwLX07XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM9MzY2PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqY2RjX21iaW1fcHJvY2Vzc19kZ3JhbShzdHJ1Y3QgdXNibmV0ICpkZXYsIHU4ICpidWYsIHNpemVfdCBsZW4sIHUxNiB0Y2kpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtNDExLVxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM6NDEyOnN0YXRpYyBpbnQgY2RjX21iaW1fcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiX2luKVxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtNDEzLXtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYz01NTM9c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mbyBjZGNfbWJpbV9pbmZvID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTU1OC1cdC5tYW5hZ2VfcG93ZXIgPSBjZGNfbWJpbV9tYW5hZ2VfcG93ZXIsXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYzo1NTk6XHQucnhfZml4dXAgPSBjZGNfbWJpbV9yeF9maXh1cCxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTU2MC1cdC50eF9maXh1cCA9IGNkY19tYmltX3R4X2ZpeHVwLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jPTU3Nz1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIGNkY19tYmltX2luZm9femxwID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTU4Mi1cdC5tYW5hZ2VfcG93ZXIgPSBjZGNfbWJpbV9tYW5hZ2VfcG93ZXIsXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYzo1ODM6XHQucnhfZml4dXAgPSBjZGNfbWJpbV9yeF9maXh1cCxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTU4NC1cdC50eF9maXh1cCA9IGNkY19tYmltX3R4X2ZpeHVwLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jPTU5Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIGNkY19tYmltX2luZm9fbmRwX3RvX2VuZCA9IHtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy02MDEtXHQubWFuYWdlX3Bvd2VyID0gY2RjX21iaW1fbWFuYWdlX3Bvd2VyLFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM6NjAyOlx0LnJ4X2ZpeHVwID0gY2RjX21iaW1fcnhfZml4dXAsXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy02MDMtXHQudHhfZml4dXAgPSBjZGNfbWJpbV90eF9maXh1cCxcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYz02MTE9c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mbyBjZGNfbWJpbV9pbmZvX2F2b2lkX2FsdHNldHRpbmdfdG9nZ2xlID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTYxNi1cdC5tYW5hZ2VfcG93ZXIgPSBjZGNfbWJpbV9tYW5hZ2VfcG93ZXIsXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYzo2MTc6XHQucnhfZml4dXAgPSBjZGNfbWJpbV9yeF9maXh1cCxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTYxOC1cdC50eF9maXh1cCA9IGNkY19tYmltX3R4X2ZpeHVwLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM9MTcyNT1FWFBPUlRfU1lNQk9MX0dQTChjZGNfbmNtX3J4X3ZlcmlmeV9uZHAzMik7XG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTE3MjYtXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jOjE3Mjc6aW50IGNkY19uY21fcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiX2luKVxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0xNzI4LXtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTE4NDgtfVxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYzoxODQ5OkVYUE9SVF9TWU1CT0xfR1BMKGNkY19uY21fcnhfZml4dXApO1xuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0xODUwLVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM9MTkxNT1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIGNkY19uY21faW5mbyA9IHtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTE5MjItXHQuc3RhdHVzID0gY2RjX25jbV9zdGF0dXMsXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jOjE5MjM6XHQucnhfZml4dXAgPSBjZGNfbmNtX3J4X2ZpeHVwLFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0xOTI0LVx0LnR4X2ZpeHVwID0gY2RjX25jbV90eF9maXh1cCxcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jPTE5Mjk9c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mbyBjZGNfbmNtX3pscF9pbmZvID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMTkzNi1cdC5zdGF0dXMgPSBjZGNfbmNtX3N0YXR1cyxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM6MTkzNzpcdC5yeF9maXh1cCA9IGNkY19uY21fcnhfZml4dXAsXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTE5MzgtXHQudHhfZml4dXAgPSBjZGNfbmNtX3R4X2ZpeHVwLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM9MTk0Mz1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIGFwcGxlX3RldGhlcmluZ19pbnRlcmZhY2VfaW5mbyA9IHtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTE5NTAtXHQuc3RhdHVzID0gY2RjX25jbV9zdGF0dXMsXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jOjE5NTE6XHQucnhfZml4dXAgPSBjZGNfbmNtX3J4X2ZpeHVwLFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0xOTUyLVx0LnR4X2ZpeHVwID0gY2RjX25jbV90eF9maXh1cCxcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jPTE5NTc9c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mbyBhcHBsZV9wcml2YXRlX2ludGVyZmFjZV9pbmZvID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMTk2NC1cdC5zdGF0dXMgPSBjZGNfbmNtX3N0YXR1cyxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM6MTk2NTpcdC5yeF9maXh1cCA9IGNkY19uY21fcnhfZml4dXAsXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTE5NjYtXHQudHhfZml4dXAgPSBjZGNfbmNtX3R4X2ZpeHVwLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM9MTk3MT1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIHd3YW5faW5mbyA9IHtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTE5NzgtXHQuc3RhdHVzID0gY2RjX25jbV9zdGF0dXMsXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jOjE5Nzk6XHQucnhfZml4dXAgPSBjZGNfbmNtX3J4X2ZpeHVwLFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0xOTgwLVx0LnR4X2ZpeHVwID0gY2RjX25jbV90eF9maXh1cCxcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jPTE5ODU9c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mbyB3d2FuX25vYXJwX2luZm8gPSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0xOTkyLVx0LnN0YXR1cyA9IGNkY19uY21fc3RhdHVzLFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYzoxOTkzOlx0LnJ4X2ZpeHVwID0gY2RjX25jbV9yeF9maXh1cCxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMTk5NC1cdC50eF9maXh1cCA9IGNkY19uY21fdHhfZml4dXAsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2NoOTIwMC5jPTI0OD1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmNoOTIwMF90eF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2NoOTIwMC5jLTI4OC1cbmRyaXZlcnMvbmV0L3VzYi9jaDkyMDAuYzoyODk6c3RhdGljIGludCBjaDkyMDBfcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvdXNiL2NoOTIwMC5jLTI5MC17XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NoOTIwMC5jPTM5Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIGNoOTIwMF9pbmZvID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jaDkyMDAuYy0zOTktXHQuYmluZCA9IGNoOTIwMF9iaW5kLFxuZHJpdmVycy9uZXQvdXNiL2NoOTIwMC5jOjQwMDpcdC5yeF9maXh1cCA9IGNoOTIwMF9yeF9maXh1cCxcbmRyaXZlcnMvbmV0L3VzYi9jaDkyMDAuYy00MDEtXHQudHhfZml4dXAgPSBjaDkyMDBfdHhfZml4dXAsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM9MjI2PXN0YXRpYyB2b2lkIGN4ODIzMTBfdW5iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMjQyLSAqL1xuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MjQzOnN0YXRpYyBpbnQgY3g4MjMxMF9yeF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0yNDQte1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jPTMzNT1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvXHRjeDgyMzEwX2luZm8gPSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMzM5LVx0LnVuYmluZFx0XHQ9IGN4ODIzMTBfdW5iaW5kLFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MzQwOlx0LnJ4X2ZpeHVwXHQ9IGN4ODIzMTBfcnhfZml4dXAsXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0zNDEtXHQudHhfZml4dXBcdD0gY3g4MjMxMF90eF9maXh1cCxcbi0tXG5kcml2ZXJzL25ldC91c2IvZG05NjAxLmM9MzM4PXN0YXRpYyBpbnQgZG05NjAxX2JpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC91c2IvZG05NjAxLmMtNDIwLVxuZHJpdmVycy9uZXQvdXNiL2RtOTYwMS5jOjQyMTpzdGF0aWMgaW50IGRtOTYwMV9yeF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC91c2IvZG05NjAxLmMtNDIyLXtcbi0tXG5kcml2ZXJzL25ldC91c2IvZG05NjAxLmM9NTQ1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gZG05NjAxX2luZm8gPSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2RtOTYwMS5jLTU0OC1cdC5iaW5kXHRcdD0gZG05NjAxX2JpbmQsXG5kcml2ZXJzL25ldC91c2IvZG05NjAxLmM6NTQ5Olx0LnJ4X2ZpeHVwXHQ9IGRtOTYwMV9yeF9maXh1cCxcbmRyaXZlcnMvbmV0L3VzYi9kbTk2MDEuYy01NTAtXHQudHhfZml4dXBcdD0gZG05NjAxX3R4X2ZpeHVwLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9nbDYyMGEuYz02Mj1zdHJ1Y3QgZ2xfaGVhZGVyIHtcbi0tXG5kcml2ZXJzL25ldC91c2IvZ2w2MjBhLmMtNjYtXG5kcml2ZXJzL25ldC91c2IvZ2w2MjBhLmM6Njc6c3RhdGljIGludCBnZW5lbGlua19yeF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC91c2IvZ2w2MjBhLmMtNjgte1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9nbDYyMGEuYz0xODU9c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mb1x0Z2VuZWxpbmtfaW5mbyA9IHtcbi0tXG5kcml2ZXJzL25ldC91c2IvZ2w2MjBhLmMtMTg4LVx0LmJpbmQgPVx0XHRnZW5lbGlua19iaW5kLFxuZHJpdmVycy9uZXQvdXNiL2dsNjIwYS5jOjE4OTpcdC5yeF9maXh1cCA9XHRnZW5lbGlua19yeF9maXh1cCxcbmRyaXZlcnMvbmV0L3VzYi9nbDYyMGEuYy0xOTAtXHQudHhfZml4dXAgPVx0Z2VuZWxpbmtfdHhfZml4dXAsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2h1YXdlaV9jZGNfbmNtLmM9MTgyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gaHVhd2VpX2NkY19uY21faW5mbyA9IHtcbi0tXG5kcml2ZXJzL25ldC91c2IvaHVhd2VpX2NkY19uY20uYy0xODctXHQubWFuYWdlX3Bvd2VyID0gaHVhd2VpX2NkY19uY21fbWFuYWdlX3Bvd2VyLFxuZHJpdmVycy9uZXQvdXNiL2h1YXdlaV9jZGNfbmNtLmM6MTg4Olx0LnJ4X2ZpeHVwID0gY2RjX25jbV9yeF9maXh1cCxcbmRyaXZlcnMvbmV0L3VzYi9odWF3ZWlfY2RjX25jbS5jLTE4OS1cdC50eF9maXh1cCA9IGNkY19uY21fdHhfZml4dXAsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2ludDUxeDEuYy0yNi1cbmRyaXZlcnMvbmV0L3VzYi9pbnQ1MXgxLmM6Mjc6c3RhdGljIGludCBpbnQ1MXgxX3J4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3VzYi9pbnQ1MXgxLmMtMjgte1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9pbnQ1MXgxLmM9MTIyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gaW50NTF4MV9pbmZvID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9pbnQ1MXgxLmMtMTI0LVx0LmJpbmQgICAgICAgID0gaW50NTF4MV9iaW5kLFxuZHJpdmVycy9uZXQvdXNiL2ludDUxeDEuYzoxMjU6XHQucnhfZml4dXAgICAgPSBpbnQ1MXgxX3J4X2ZpeHVwLFxuZHJpdmVycy9uZXQvdXNiL2ludDUxeDEuYy0xMjYtXHQudHhfZml4dXAgICAgPSBpbnQ1MXgxX3R4X2ZpeHVwLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9rYWxtaWEuYz0yMjk9c3RhdGljIGludFxuZHJpdmVycy9uZXQvdXNiL2thbG1pYS5jOjIzMDprYWxtaWFfcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvdXNiL2thbG1pYS5jLTIzMS17XG4tLVxuZHJpdmVycy9uZXQvdXNiL2thbG1pYS5jPTM0MD1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIGthbG1pYV9pbmZvID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9rYWxtaWEuYy0zNDMtXHQuYmluZCA9IGthbG1pYV9iaW5kLFxuZHJpdmVycy9uZXQvdXNiL2thbG1pYS5jOjM0NDpcdC5yeF9maXh1cCA9IGthbG1pYV9yeF9maXh1cCxcbmRyaXZlcnMvbmV0L3VzYi9rYWxtaWEuYy0zNDUtXHQudHhfZml4dXAgPSBrYWxtaWFfdHhfZml4dXBcbi0tXG5kcml2ZXJzL25ldC91c2IvbGctdmw2MDAuYz04Nj1zdGF0aWMgdm9pZCB2bDYwMF91bmJpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC91c2IvbGctdmw2MDAuYy05NS1cbmRyaXZlcnMvbmV0L3VzYi9sZy12bDYwMC5jOjk2OnN0YXRpYyBpbnQgdmw2MDBfcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvdXNiL2xnLXZsNjAwLmMtOTcte1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9sZy12bDYwMC5jPTMwMT1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvXHR2bDYwMF9pbmZvID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9sZy12bDYwMC5jLTMwNi1cdC5zdGF0dXNcdFx0PSB1c2JuZXRfY2RjX3N0YXR1cyxcbmRyaXZlcnMvbmV0L3VzYi9sZy12bDYwMC5jOjMwNzpcdC5yeF9maXh1cFx0PSB2bDYwMF9yeF9maXh1cCxcbmRyaXZlcnMvbmV0L3VzYi9sZy12bDYwMC5jLTMwOC1cdC50eF9maXh1cFx0PSB2bDYwMF90eF9maXh1cCxcbi0tXG5kcml2ZXJzL25ldC91c2IvbWNzNzgzMC5jPTQ3MD1zdGF0aWMgaW50IG1jczc4MzBfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9tY3M3ODMwLmMtNTExLS8qIFRoZSBjaGlwIGFsd2F5cyBhcHBlbmRzIGEgc3RhdHVzIGJ5dGUgdGhhdCB3ZSBuZWVkIHRvIHN0cmlwICovXG5kcml2ZXJzL25ldC91c2IvbWNzNzgzMC5jOjUxMjpzdGF0aWMgaW50IG1jczc4MzBfcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvdXNiL21jczc4MzAuYy01MTMte1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9tY3M3ODMwLmM9NTYxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gbW9zY2hpcF9pbmZvID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9tY3M3ODMwLmMtNTYzLVx0LmJpbmRcdFx0PSBtY3M3ODMwX2JpbmQsXG5kcml2ZXJzL25ldC91c2IvbWNzNzgzMC5jOjU2NDpcdC5yeF9maXh1cFx0PSBtY3M3ODMwX3J4X2ZpeHVwLFxuZHJpdmVycy9uZXQvdXNiL21jczc4MzAuYy01NjUtXHQuZmxhZ3NcdFx0PSBGTEFHX0VUSEVSIHwgRkxBR19MSU5LX0lOVFIsXG4tLVxuZHJpdmVycy9uZXQvdXNiL21jczc4MzAuYz01NzE9c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mbyBzaXRlY29tX2luZm8gPSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL21jczc4MzAuYy01NzMtXHQuYmluZFx0XHQ9IG1jczc4MzBfYmluZCxcbmRyaXZlcnMvbmV0L3VzYi9tY3M3ODMwLmM6NTc0Olx0LnJ4X2ZpeHVwXHQ9IG1jczc4MzBfcnhfZml4dXAsXG5kcml2ZXJzL25ldC91c2IvbWNzNzgzMC5jLTU3NS1cdC5mbGFnc1x0XHQ9IEZMQUdfRVRIRVIgfCBGTEFHX0xJTktfSU5UUixcbi0tXG5kcml2ZXJzL25ldC91c2IvbmV0MTA4MC5jPTMyMT1zdGF0aWMgdm9pZCBuY19lbnN1cmVfc3luYyhzdHJ1Y3QgdXNibmV0ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL25ldDEwODAuYy0zMzgtXG5kcml2ZXJzL25ldC91c2IvbmV0MTA4MC5jOjMzOTpzdGF0aWMgaW50IG5ldDEwODBfcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvdXNiL25ldDEwODAuYy0zNDAte1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9uZXQxMDgwLmM9NDg2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm9cdG5ldDEwODBfaW5mbyA9IHtcbi0tXG5kcml2ZXJzL25ldC91c2IvbmV0MTA4MC5jLTQ5MS1cdC5jaGVja19jb25uZWN0ID0gbmV0MTA4MF9jaGVja19jb25uZWN0LFxuZHJpdmVycy9uZXQvdXNiL25ldDEwODAuYzo0OTI6XHQucnhfZml4dXAgPVx0bmV0MTA4MF9yeF9maXh1cCxcbmRyaXZlcnMvbmV0L3VzYi9uZXQxMDgwLmMtNDkzLVx0LnR4X2ZpeHVwID1cdG5ldDEwODBfdHhfZml4dXAsXG4tLVxuZHJpdmVycy9uZXQvdXNiL3BlZ2FzdXMuYz00NTc9c3RhdGljIHZvaWQgcmVhZF9idWxrX2NhbGxiYWNrKHN0cnVjdCB1cmIgKnVyYilcbi0tXG5kcml2ZXJzL25ldC91c2IvcGVnYXN1cy5jLTU2Ni1cbmRyaXZlcnMvbmV0L3VzYi9wZWdhc3VzLmM6NTY3OnN0YXRpYyB2b2lkIHJ4X2ZpeHVwKHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdClcbmRyaXZlcnMvbmV0L3VzYi9wZWdhc3VzLmMtNTY4LXtcbi0tXG5kcml2ZXJzL25ldC91c2IvcGVnYXN1cy5jPTExNDI9c3RhdGljIGludCBwZWdhc3VzX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9wZWdhc3VzLmMtMTE4MC1cbmRyaXZlcnMvbmV0L3VzYi9wZWdhc3VzLmM6MTE4MTpcdHRhc2tsZXRfc2V0dXAoXHUwMDI2cGVnYXN1cy1cdTAwM2VyeF90bCwgcnhfZml4dXApO1xuZHJpdmVycy9uZXQvdXNiL3BlZ2FzdXMuYy0xMTgyLVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTE1Nz1zdGF0aWMgYm9vbCBxbWltdXhfaGFzX3NsYXZlcyhzdHJ1Y3QgdXNibmV0ICpkZXYpXG4tLVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAxOjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1NTMwCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKk5hdmlnYXRpbmcgdGhlIGB1c2JuZXQuY2AgU291cmNlKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByb2xlIGFuZCB1c2FnZSBvZiB0aGUgYHJ4X2ZpeHVwYCBmdW5jdGlvbiB3aXRoaW4gYHVzYm5ldC5jYC4gTXkgZmlyc3Qgc3RlcCBpcyB0byB0cmFjZSB3aGVyZSBpdCYjMzk7cyBhY3R1YWxseSAqY2FsbGVkKiB3aXRoaW4gdGhhdCBmaWxlLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgc2NhbiB0aHJvdWdoIHRoZSBjb2RlLCBsb29raW5nIGZvciBkaXJlY3QgaW52b2NhdGlvbnMgb2YgYHJ4X2ZpeHVwYC4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGdvb2Qgb3ZlcnZpZXcgb2YgdGhlIGNvbnRleHRzIGluIHdoaWNoIHRoaXMgZnVuY3Rpb24gaXMgcmVsZXZhbnQg4oCTIHdoaWNoIHBhcnRzIG9mIHRoZSBVU0IgbmV0d29yayBkcml2ZXIgYXJlIGludGVyYWN0aW5nIHdpdGggaXQuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGNsdWVzIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlIHJlZ2FyZGluZyB0aGUgbmF0dXJlIG9mIHRoZSBkYXRhIGJlaW5nIHByb2Nlc3NlZCBhbmQgdGhlIHN0YWdlIG9mIHRoZSByZWNlaXZlIHByb2Nlc3MgaW4gd2hpY2ggYHJ4X2ZpeHVwYCBpcyBpbnZvbHZlZC4gVW5kZXJzdGFuZGluZyB0aGUgY2FsbCBzaXRlcyBpcyBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgcHVycG9zZSBvZiB0aGlzIGZ1bmN0aW9uIGFuZCBpdHMgaW50ZW5kZWQgdXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyeF9maXh1cCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi91c2JuZXQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvdXNibmV0LmM9MzEyPXN0YXRpYyB2b2lkIF9fdXNibmV0X3N0YXR1c19zdG9wX2ZvcmNlKHN0cnVjdCB1c2JuZXQgKmRldilcbi0tXG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmMtMzIyLS8qIFBhc3NlcyB0aGlzIHBhY2tldCB1cCB0aGUgc3RhY2ssIHVwZGF0aW5nIGl0cyBhY2NvdW50aW5nLlxuZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jOjMyMzogKiBTb21lIGxpbmsgcHJvdG9jb2xzIGJhdGNoIHBhY2tldHMsIHNvIHRoZWlyIHJ4X2ZpeHVwIHBhdGhzXG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmMtMzI0LSAqIGNhbiByZXR1cm4gY2xvbmVzIGFzIHdlbGwgYXMganVzdCBtb2RpZnkgdGhlIG9yaWdpbmFsIHNrYi5cbi0tXG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmM9MzI2PXZvaWQgdXNibmV0X3NrYl9yZXR1cm4oc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYy0zMzYtXG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmM6MzM3Olx0Lyogb25seSB1cGRhdGUgaWYgdW5zZXQgdG8gYWxsb3cgbWluaWRyaXZlciByeF9maXh1cCBvdmVycmlkZSAqL1xuZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jLTMzOC1cdGlmIChza2ItXHUwMDNlcHJvdG9jb2wgPT0gMClcbi0tXG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmM9NTY5PXN0YXRpYyBpbmxpbmUgaW50IHJ4X3Byb2Nlc3Moc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jLTU3MC17XG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmM6NTcxOlx0aWYgKGRldi1cdTAwM2Vkcml2ZXJfaW5mby1cdTAwM2VyeF9maXh1cCBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYzo1NzI6XHQgICAgIWRldi1cdTAwM2Vkcml2ZXJfaW5mby1cdTAwM2VyeF9maXh1cChkZXYsIHNrYikpIHtcbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYzo1NzM6XHRcdC8qIFdpdGggUlhfQVNTRU1CTEUsIHJ4X2ZpeHVwKCkgbXVzdCB1cGRhdGUgY291bnRlcnMgKi9cbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYy01NzQtXHRcdGlmICghKGRldi1cdTAwM2Vkcml2ZXJfaW5mby1cdTAwM2VmbGFncyBcdTAwMjYgRkxBR19SWF9BU1NFTUJMRSkpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAxOjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2MjA2CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNDg5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQ29uZXhhbnQgQ1g4MjMxMCBVU0IgRXRoZXJuZXQgRHJpdmVyJiMzOTtzIFJYIFBhdGgqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gVGhlIGByeF9wcm9jZXNzYCBmdW5jdGlvbiB3aXRoaW4gYGRyaXZlcnMvbmV0L3VzYi91c2JuZXQuY2AgaXMgdGhlIGtleSDigJMgaXQgY2FsbHMgYGRldi0mZ3Q7ZHJpdmVyX2luZm8tJmd0O3J4X2ZpeHVwKGRldiwgc2tiKWAuIFRoZSBtb2RpZmljYXRpb24gSSYjMzk7bSBpbnRlcmVzdGVkIGluIGlzIGBjeDgyMzEwX3J4X2ZpeHVwYCwgd2hpY2ggcmVzaWRlcyBpbiBgY3g4MjMxMF9ldGguY2AuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gZGV0ZXJtaW5lIGhvdyBhY2Nlc3NpYmxlIGBjeDgyMzEwX3J4X2ZpeHVwYCBpczogaXMgaXQgYW4gZW50cnkgcG9pbnQsIGFuIGV4cG9ydGVkIHN5bWJvbCwgbm9uLXN0YXRpYywgb3IgaXMgaXQgc3RhdGljPwoKQSBxdWljayBjaGVjayBjb25maXJtcyBpdCYjMzk7cyBkZWNsYXJlZCBhcyBgc3RhdGljIGludCBjeDgyMzEwX3J4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilgLiBTbywgaXQmIzM5O3MgKnN1cHBvc2VkKiB0byBiZSBsaW1pdGVkIGluIHNjb3BlLiBCdXQgdGhlIGNydWNpYWwgcXVlc3Rpb24gaXMgd2hldGhlciBpdHMgYWRkcmVzcyBpcyB0YWtlbiBhbnl3aGVyZS4gQWgsIGhlcmUgaXQgaXM6IGBjeDgyMzEwX3J4X2ZpeHVwYCAqaXMqIHBhc3NlZCBieSBwb2ludGVyIHRvIGBjeDgyMzEwX2luZm9gLgoKYGBgYwpzdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvCWN4ODIzMTBfaW5mbyA9IHsKCS5kZXNjcmlwdGlvbgk9ICYjMzQ7Q29uZXhhbnQgQ1g4MjMxMCBVU0IgZXRoZXJuZXQmIzM0OywKCS5mbGFncwkJPSBGTEFHX0VUSEVSLAoJLmJpbmQJCT0gY3g4MjMxMF9iaW5kLAoJLnVuYmluZAkJPSBjeDgyMzEwX3VuYmluZCwKCS5yeF9maXh1cAk9IGN4ODIzMTBfcnhfZml4dXAsCgkudHhfZml4dXAJPSBjeDgyMzEwX3R4X2ZpeHVwLAp9OwpgYGAKCkJlY2F1c2UgaXRzIGFkZHJlc3MgaXMgYXNzaWduZWQgdG8gYGN4ODIzMTBfaW5mby5yeF9maXh1cGAsIHRoZSBjb21waWxlciAqY2Fubm90KiBpbmxpbmUgYGN4ODIzMTBfcnhfZml4dXBgIGludG8gYW55IGNhbGxlci4gU2luY2UgYHJ4X3Byb2Nlc3NgIGluIGB1c2JuZXQuY2AgY2FsbHMgaXQgdGhyb3VnaCBhIGZ1bmN0aW9uIHBvaW50ZXIsIHRoZSBgY3g4MjMxMF9yeF9maXh1cGAgd2lsbCBuZWNlc3NhcmlseSBleGlzdCBhcyBhIGRpc3RpbmN0IGZ1bmN0aW9uIHN5bWJvbCBpbiB0aGUgb2JqZWN0IGZpbGUuIFRoYXQmIzM5O3MgZ29vZCB0byBrbm93IGZvciBmdXJ0aGVyIGFuYWx5c2lzLgoKV2hpbGUgSSYjMzk7bSBoZXJlLCBJIHNob3VsZCB0YWtlIGEgbG9vayBhdCB0aGUgb3RoZXIgc3ltYm9scyBpbiBgY3g4MjMxMF9ldGguY2AgYW5kIGNoZWNrIG91dCB0aGUgZnVuY3Rpb25zIGBjeDgyMzEwX3JlZW5hYmxlX3dvcmtgIGFuZCBgY3g4MjMxMF9iaW5kYC4gSnVzdCBjb3ZlcmluZyBhbGwgdGhlIGJhc2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtec3RhdGljICYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jPTQzPXN0cnVjdCBjeDgyMzEwX3ByaXYge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTUzLSAqL1xuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6NTQ6c3RhdGljIGludCBjeDgyMzEwX2NtZChzdHJ1Y3QgdXNibmV0ICpkZXYsIGVudW0gY3g4MjMxMF9jbWQgY21kLCBib29sIHJlcGx5LFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtNTUtXHRcdCAgICAgICB1OCAqd2RhdGEsIGludCB3bGVuLCB1OCAqcmRhdGEsIGludCBybGVuKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTExOS1cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjEyMDpzdGF0aWMgaW50IGN4ODIzMTBfZW5hYmxlX2V0aGVybmV0KHN0cnVjdCB1c2JuZXQgKmRldilcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTEyMS17XG4tLVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMTI5LVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MTMwOnN0YXRpYyB2b2lkIGN4ODIzMTBfcmVlbmFibGVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0xMzEte1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTE0MC1cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjE0MTpzdGF0aWMgaW50IGN4ODIzMTBfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMTQyLXtcbi0tXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0yMjUtXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzoyMjY6c3RhdGljIHZvaWQgY3g4MjMxMF91bmJpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTIyNy17XG4tLVxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMjQyLSAqL1xuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MjQzOnN0YXRpYyBpbnQgY3g4MjMxMF9yeF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0yNDQte1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTMxNi0vKiBUWCBpcyBlYXN5LCBqdXN0IGFkZCAyIGJ5dGVzIG9mIGxlbmd0aCBhdCB0aGUgYmVnaW5uaW5nICovXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzozMTc6c3RhdGljIHN0cnVjdCBza19idWZmICpjeDgyMzEwX3R4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTMxOC1cdFx0XHRcdCAgICAgICBnZnBfdCBmbGFncylcbi0tXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0zMzQtXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzozMzU6c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mb1x0Y3g4MjMxMF9pbmZvID0ge1xuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMzM2LVx0LmRlc2NyaXB0aW9uXHQ9IFwmIzM0O0NvbmV4YW50IENYODIzMTAgVVNCIGV0aGVybmV0XCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTM1Mi1cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjM1MzpzdGF0aWMgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgcHJvZHVjdHNbXSA9IHtcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTM1NC1cdHtcbi0tXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYz0zNjA9TU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIHByb2R1Y3RzKTtcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTM2MS1cbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjM2MjpzdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgY3g4MjMxMF9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0zNjMtXHQubmFtZVx0XHQ9IFwmIzM0O2N4ODIzMTBfZXRoXCYjMzQ7LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMToxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODM0MwoJCQkJCQkJb3V0cHV0OiAxODAKCQkJCQkJCXRob3VnaHRzOiA5MjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgdGhlIENYODIzMTAgRXRoZXJuZXQgRHJpdmVyIGZvciBGdXp6aW5nKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGZvY3VzIGlzIG9uIHByZXBhcmluZyB0aGlzIGRyaXZlciBmb3IgZnV6emluZy4gRmlyc3QsIEkgbmVlZCB0byBpZGVudGlmeSB0aGUga2V5IGFyZWFzIGFuZCBjb25maWd1cmF0aW9ucy4gSSYjMzk7bSBzdGFydGluZyB3aXRoIGBtb2R1bGVfdXNiX2RyaXZlcihjeDgyMzEwX2RyaXZlcilgIGluIGBjeDgyMzEwX2V0aC5jYC4gVGhlIGBjeDgyMzEwX2RyaXZlcmAgc3RydWN0dXJlIGlzIGNyaXRpY2FsIGhlcmUuIEl0JiMzOTtzIHJlZ2lzdGVyZWQgYW5kIGluY2x1ZGVzIHN0YW5kYXJkIFVTQiBkcml2ZXIgb3BlcmF0aW9uczogcHJvYmUsIGRpc2Nvbm5lY3QsIHN1c3BlbmQsIGFuZCByZXN1bWUsIGFsbCBoYW5kbGVkIHRocm91Z2ggYHVzYm5ldGAgZnVuY3Rpb25zLiBTcGVjaWZpY2FsbHksIHRoZSBtb2RpZmllZCBmdW5jdGlvbiBgY3g4MjMxMF9yeF9maXh1cGAgaXMgaW1wb3J0YW50LiBUaGlzIHN1Z2dlc3RzIGEgcG90ZW50aWFsIGFyZWEgZm9yIGZ1enppbmcuCgpOb3csIGxldCYjMzk7cyB2ZXJpZnkgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSSYjMzk7dmUgY29uZmlybWVkIHRoYXQgYFVTQl9ORVRfQ1g4MjMxMF9FVEhgIGluIGBkcml2ZXJzL25ldC91c2IvS2NvbmZpZ2AgZGVwZW5kcyBvbiBgVVNCX1VTQk5FVGAuIEZ1cnRoZXJtb3JlLCBgVVNCX1VTQk5FVGAgZGVwZW5kcyBvbiBgTUlJYCBhbmQgYFVTQl9ORVRfRFJJVkVSU2AuIGBVU0JfTkVUX0RSSVZFUlNgIGluIHR1cm4gZGVwZW5kcyBvbiBgVVNCYCBhbmQgYE5FVGAuIFRoZXJlZm9yZSwgdG8gYnVpbGQgdGhlIGRyaXZlciwgSSYjMzk7bGwgbmVlZCBgVVNCX05FVF9DWDgyMzEwX0VUSGAgYW5kIGBVU0JfVVNCTkVUYCAob3IganVzdCBgVVNCX05FVF9DWDgyMzEwX0VUSGAsIHNpbmNlIHRoZSBsYXR0ZXIgaXMgaW1wbGllZCkuIEkmIzM5O2xsIGFkZCB0aGVzZSB0byB0aGUgYEVuYWJsZUNvbmZpZ3NgIGxpc3QuCgpMb29raW5nIGF0IGBkcml2ZXJzL25ldC91c2IvTWFrZWZpbGVgLCB0aGUgb2JqZWN0IGZpbGUgYGN4ODIzMTBfZXRoLm9gIGlzIGJ1aWx0IGlmIGBDT05GSUdfVVNCX05FVF9DWDgyMzEwX0VUSGAgaXMgZW5hYmxlZCwgYW5kIGB1c2JuZXQub2AgaWYgYENPTkZJR19VU0JfVVNCTkVUYCBpcyBlbmFibGVkLgoKSW4gdGVybXMgb2YgZnV6emluZywgdGhlIGd1aWRhbmNlIHNheXMgdG8gaWRlbnRpZnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucywgcHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucy4gU2luY2UgYGN4ODIzMTBfcnhfZml4dXBgIGlzIGNhbGxlZCB0aHJvdWdoIGEgZnVuY3Rpb24gcG9pbnRlciwgaXQgaXMgaW5kZWVkIGFuIGFwcHJvcHJpYXRlIGZ1bmN0aW9uIHRvIGZvY3VzIG9uLiBTbywgSSB3aWxsIGluY2x1ZGUgYCYjMzQ7Y3g4MjMxMF9yeF9maXh1cCYjMzQ7YCBpbiB0aGUgYEZvY3VzU3ltYm9sc2AgbGlzdC4KCkZpbmFsbHksIEkmIzM5O2xsIG1ha2Ugc3VyZSBhbGwgdGhlIGd1aWRhbmNlIGlzIGZvbGxvd2VkLCBlc3BlY2lhbGx5IHRoZSBjYWxsIHRvIGBzZXQtcmVzdWx0c2AuIAoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VVNCX05FVF9DWDgyMzEwX0VUSCYjMzQ7LAogICAgJiMzNDtVU0JfVVNCTkVUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y3g4MjMxMF9yeF9maXh1cCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGZ1bmN0aW9uYWwgZmxvdyBidWcgaW4gdGhlIFJYIHBhY2tldCBwcm9jZXNzaW5nIGxvZ2ljIG9mIHRoZSBjeDgyMzEwX2V0aCBVU0IgbmV0d29yayBkcml2ZXIuIFByZXZpb3VzbHksIHdoZW4gYW4gUlggcGFja2V0IGhhZCBsZW5ndGggMHhmZmZmIChzaWduYWxpbmcgcm91dGVyIHJlYm9vdCksIHRoZSBmdW5jdGlvbiBzY2hlZHVsZWQgYSByZS1lbmFibGUgd29ya2VyIGJ1dCBmZWxsIHRocm91Z2ggaW50byBwYXJ0aWFsIHBhY2tldCBoYW5kbGluZywgd2hpY2ggY291bGQgbGVhZCB0byBtYWxmb3JtZWQgcGFja2V0IHByb2Nlc3Npbmcgb3Igb3V0LW9mLWJvdW5kcy9vdmVyZmxvdyBpc3N1ZXMuIFRoZSBwYXRjaCByZXR1cm5zIDAgdG8gcHJvcGVybHkgZHJvcCB0aGUgcGFja2V0LiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBVU0IgZW11bGF0aW9uL2Z1enppbmcgKGUuZy4gUmF3IEdhZGdldCAvIGR1bW15X2hjZCkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTQl9ORVRfQ1g4MjMxMF9FVEgmIzM0OywKICAgICYjMzQ7VVNCX1VTQk5FVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2N4ODIzMTBfcnhfZml4dXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBmdW5jdGlvbmFsIGZsb3cgYnVnIGluIHRoZSBSWCBwYWNrZXQgcHJvY2Vzc2luZyBsb2dpYyBvZiB0aGUgY3g4MjMxMF9ldGggVVNCIG5ldHdvcmsgZHJpdmVyLiBQcmV2aW91c2x5LCB3aGVuIGFuIFJYIHBhY2tldCBoYWQgbGVuZ3RoIDB4ZmZmZiAoc2lnbmFsaW5nIHJvdXRlciByZWJvb3QpLCB0aGUgZnVuY3Rpb24gc2NoZWR1bGVkIGEgcmUtZW5hYmxlIHdvcmtlciBidXQgZmVsbCB0aHJvdWdoIGludG8gcGFydGlhbCBwYWNrZXQgaGFuZGxpbmcsIHdoaWNoIGNvdWxkIGxlYWQgdG8gbWFsZm9ybWVkIHBhY2tldCBwcm9jZXNzaW5nIG9yIG91dC1vZi1ib3VuZHMvb3ZlcmZsb3cgaXNzdWVzLiBUaGUgcGF0Y2ggcmV0dXJucyAwIHRvIHByb3Blcmx5IGRyb3AgdGhlIHBhY2tldC4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgVVNCIGVtdWxhdGlvbi9mdXp6aW5nIChlLmcuIFJhdyBHYWRnZXQgLyBkdW1teV9oY2QpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMToxNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAxOjE3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhbiBlYXJseSAmIzM5O3JldHVybiAwOyYjMzk7IHdoZW4gJiMzOTtsZW4gPT0gMHhmZmZmJiMzOTsgaW4gY3g4MjMxMF9yeF9maXh1cCgpIHRvIGFib3J0IHByb2Nlc3Npbmcgd2hlbiB0aGUgcm91dGVyIHJlYm9vdHMgYW5kIHJlLWVuYWJsaW5nIHdvcmsgaXMgc2NoZWR1bGVkLiBQcmV2aW91c2x5LCBleGVjdXRpb24gZmVsbCB0aHJvdWdoIGludG8gcGFydGlhbCBwYWNrZXQgaGFuZGxpbmcsIHdoaWNoIGNvdWxkIGxlYWQgdG8gb3V0LW9mLWJvdW5kcyByZWFkcyBvbiBzdWJzZXF1ZW50IHBhY2tldHMuIFxuXG5UaGUgZml4IG9ubHkgbW9kaWZpZXMgY29udHJvbCBmbG93IHRvIGRpc2NhcmQgdGhlIHNrYiBhbmQgZG9lcyBub3QgYWxsb2NhdGUsIGluaXRpYWxpemUsIHJlYWQsIG9yIGNvcHkgYW55IHVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgb3Iga2VybmVsIHN0cnVjdHVyZXMgdG8gdXNlciBzcGFjZS4gQW55IG1lbW9yeSBzYWZldHkgaXNzdWVzIHByZXZlbnRlZCBvciB0b3VjaGVkIGJ5IHRoaXMgY29kZSBhcmUgb3V0LW9mLWJvdW5kcyBhY2Nlc3MgLyBpbnZhbGlkIHN0YXRlIGJ1Z3MgY2F1Z2h0IGJ5IEtBU0FOLCBub3QgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWVzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVlZGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBhN2Q2MWQ2NDBkNjdmMjRkYzllNjJlZDZiMTdlM2ZlMDZhYzg3NDZkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBTZXAgMyAwMToxNjoyNSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jIGIvZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMKaW5kZXggMDY4YWNiMDUyYWRiMC4uNWRmNjU3YWNmM2Q1NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMKQEAgLTI4Miw2ICYjNDM7MjgyLDcgQEAgc3RhdGljIGludCBjeDgyMzEwX3J4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAkJaWYgKGxlbiA9PSAweGZmZmYpIHsKIAkJCW5ldGRldl9pbmZvKGRldi0mZ3Q7bmV0LCAmIzM0O3JvdXRlciB3YXMgcmVib290ZWQsIHJlLWVuYWJsaW5nIGV0aGVybmV0IG1vZGUmIzM0Oyk7CiAJCQlzY2hlZHVsZV93b3JrKCZhbXA7cHJpdi0mZ3Q7cmVlbmFibGVfd29yayk7CiYjNDM7CQkJcmV0dXJuIDA7CiAJCX0gZWxzZSBpZiAobGVuICZndDsgQ1g4MjMxMF9NVFUpIHsKIAkJCW5ldGRldl9lcnIoZGV2LSZndDtuZXQsICYjMzQ7UlggcGFja2V0IHRvbyBsb25nOiAlZCBCXG4mIzM0OywgbGVuKTsKIAkJCXJldHVybiAwOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMDE6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjEzMAoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoYXQgc25pcHBldDoKCioqRGl2aW5nIGludG8gdGhlIGN4ODIzMTAgRXRoZXJuZXQgRHJpdmVyKioKCk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhpcyBwYXRjaC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB0aGUgYGRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jYCBmaWxlLiBUaGF0JiMzOTtzIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50LCB0aGUgY29yZSBvZiB0aGUgZHJpdmVyIGluIHF1ZXN0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIHVzZSBgcmVhZC1maWxlYCB0byBnZXQgdGhlIGNvbnRleHQgcmlnaHQuIEkmIzM5O20gZm9jdXNpbmcgb24gYGN4ODIzMTBfcnhfZml4dXBgIHJpZ2h0IG5vdy4gVGhpcyBzdHJvbmdseSBzdWdnZXN0cyB0aGF0IEkgc2hvdWxkIHNwZWNpZmljYWxseSBsb29rIGZvciBSWC1yZWxhdGVkIGNvZGUuIFdpdGggYHJlYWQtZmlsZWAgSSBjYW4gcXVpY2tseSBjaGVjayB0aGF0IHBpZWNlIG9mIGNvZGUgYW5kIGlkZW50aWZ5IHBvdGVudGlhbCBpc3N1ZXMuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBhdCB0aGUgc3Vycm91bmRpbmcgY29kZSBhcyB3ZWxsIHRvIGJ1aWxkIHRoZSBjb3JyZWN0IG1lbnRhbCBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjUwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDgwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyNTA6XHRcdCAqIElmIHRoZSBsYXN0IHNrYiBlbmRlZCB3aXRoIGFuIGluY29tcGxldGUgcGFja2V0LCB0aGlzIHNrYiBjb250YWluc1xuIDI1MTpcdFx0ICogZW5kIG9mIHRoYXQgcGFja2V0IGF0IHRoZSBiZWdpbm5pbmcuXG4gMjUyOlx0XHQgKi9cbiAyNTM6XHRcdGlmIChkZXYtXHUwMDNlcGFydGlhbF9yZW0pIHtcbiAyNTQ6XHRcdFx0bGVuID0gZGV2LVx1MDAzZXBhcnRpYWxfbGVuICYjNDM7IGRldi1cdTAwM2VwYXJ0aWFsX3JlbTtcbiAyNTU6XHRcdFx0c2tiMiA9IGFsbG9jX3NrYihsZW4sIEdGUF9BVE9NSUMpO1xuIDI1NjpcdFx0XHRpZiAoIXNrYjIpXG4gMjU3Olx0XHRcdFx0cmV0dXJuIDA7XG4gMjU4Olx0XHRcdHNrYl9wdXQoc2tiMiwgbGVuKTtcbiAyNTk6XHRcdFx0bWVtY3B5KHNrYjItXHUwMDNlZGF0YSwgKHZvaWQgKilkZXYtXHUwMDNlcGFydGlhbF9kYXRhLFxuIDI2MDpcdFx0XHQgICAgICAgZGV2LVx1MDAzZXBhcnRpYWxfbGVuKTtcbiAyNjE6XHRcdFx0bWVtY3B5KHNrYjItXHUwMDNlZGF0YSAmIzQzOyBkZXYtXHUwMDNlcGFydGlhbF9sZW4sIHNrYi1cdTAwM2VkYXRhLFxuIDI2MjpcdFx0XHQgICAgICAgZGV2LVx1MDAzZXBhcnRpYWxfcmVtKTtcbiAyNjM6XHRcdFx0dXNibmV0X3NrYl9yZXR1cm4oZGV2LCBza2IyKTtcbiAyNjQ6XHRcdFx0c2tiX3B1bGwoc2tiLCAoZGV2LVx1MDAzZXBhcnRpYWxfcmVtICYjNDM7IDEpIFx1MDAyNiB+MSk7XG4gMjY1Olx0XHRcdGRldi1cdTAwM2VwYXJ0aWFsX3JlbSA9IDA7XG4gMjY2Olx0XHRcdGlmIChza2ItXHUwMDNlbGVuIFx1MDAzYyAyKVxuIDI2NzpcdFx0XHRcdHJldHVybiAxO1xuIDI2ODpcdFx0fVxuIDI2OTpcdFxuIDI3MDpcdFx0LyogYSBza2IgY2FuIGNvbnRhaW4gbXVsdGlwbGUgcGFja2V0cyAqL1xuIDI3MTpcdFx0d2hpbGUgKHNrYi1cdTAwM2VsZW4gXHUwMDNlIDEpIHtcbiAyNzI6XHRcdFx0LyogZmlyc3QgdHdvIGJ5dGVzIGFyZSBwYWNrZXQgbGVuZ3RoICovXG4gMjczOlx0XHRcdGxlbiA9IHNrYi1cdTAwM2VkYXRhWzBdIHwgKHNrYi1cdTAwM2VkYXRhWzFdIFx1MDAzY1x1MDAzYyA4KTtcbiAyNzQ6XHRcdFx0c2tiX3B1bGwoc2tiLCAyKTtcbiAyNzU6XHRcbiAyNzY6XHRcdFx0LyogaWYgbGFzdCBwYWNrZXQgaW4gdGhlIHNrYiwgbGV0IHVzYm5ldCB0byBwcm9jZXNzIGl0ICovXG4gMjc3Olx0XHRcdGlmIChsZW4gPT0gc2tiLVx1MDAzZWxlbiB8fCBsZW4gJiM0MzsgMSA9PSBza2ItXHUwMDNlbGVuKSB7XG4gMjc4Olx0XHRcdFx0c2tiX3RyaW0oc2tiLCBsZW4pO1xuIDI3OTpcdFx0XHRcdGJyZWFrO1xuIDI4MDpcdFx0XHR9XG4gMjgxOlx0XG4gMjgyOlx0XHRcdGlmIChsZW4gPT0gMHhmZmZmKSB7XG4gMjgzOlx0XHRcdFx0bmV0ZGV2X2luZm8oZGV2LVx1MDAzZW5ldCwgXCYjMzQ7cm91dGVyIHdhcyByZWJvb3RlZCwgcmUtZW5hYmxpbmcgZXRoZXJuZXQgbW9kZVwmIzM0Oyk7XG4gMjg0Olx0XHRcdFx0c2NoZWR1bGVfd29yayhcdTAwMjZwcml2LVx1MDAzZXJlZW5hYmxlX3dvcmspO1xuIDI4NTpcdFx0XHRcdHJldHVybiAwO1xuIDI4NjpcdFx0XHR9IGVsc2UgaWYgKGxlbiBcdTAwM2UgQ1g4MjMxMF9NVFUpIHtcbiAyODc6XHRcdFx0XHRuZXRkZXZfZXJyKGRldi1cdTAwM2VuZXQsIFwmIzM0O1JYIHBhY2tldCB0b28gbG9uZzogJWQgQlxcblwmIzM0OywgbGVuKTtcbiAyODg6XHRcdFx0XHRyZXR1cm4gMDtcbiAyODk6XHRcdFx0fVxuIDI5MDpcdFxuIDI5MTpcdFx0XHQvKiBpbmNvbXBsZXRlIHBhY2tldCwgc2F2ZSBpdCBmb3IgdGhlIG5leHQgc2tiICovXG4gMjkyOlx0XHRcdGlmIChsZW4gXHUwMDNlIHNrYi1cdTAwM2VsZW4pIHtcbiAyOTM6XHRcdFx0XHRkZXYtXHUwMDNlcGFydGlhbF9sZW4gPSBza2ItXHUwMDNlbGVuO1xuIDI5NDpcdFx0XHRcdGRldi1cdTAwM2VwYXJ0aWFsX3JlbSA9IGxlbiAtIHNrYi1cdTAwM2VsZW47XG4gMjk1Olx0XHRcdFx0bWVtY3B5KCh2b2lkICopZGV2LVx1MDAzZXBhcnRpYWxfZGF0YSwgc2tiLVx1MDAzZWRhdGEsXG4gMjk2Olx0XHRcdFx0ICAgICAgIGRldi1cdTAwM2VwYXJ0aWFsX2xlbik7XG4gMjk3Olx0XHRcdFx0c2tiX3B1bGwoc2tiLCBza2ItXHUwMDNlbGVuKTtcbiAyOTg6XHRcdFx0XHRicmVhaztcbiAyOTk6XHRcdFx0fVxuIDMwMDpcdFxuIDMwMTpcdFx0XHRza2IyID0gYWxsb2Nfc2tiKGxlbiwgR0ZQX0FUT01JQyk7XG4gMzAyOlx0XHRcdGlmICghc2tiMilcbiAzMDM6XHRcdFx0XHRyZXR1cm4gMDtcbiAzMDQ6XHRcdFx0c2tiX3B1dChza2IyLCBsZW4pO1xuIDMwNTpcdFx0XHRtZW1jcHkoc2tiMi1cdTAwM2VkYXRhLCBza2ItXHUwMDNlZGF0YSwgbGVuKTtcbiAzMDY6XHRcdFx0LyogcHJvY2VzcyB0aGUgcGFja2V0ICovXG4gMzA3Olx0XHRcdHVzYm5ldF9za2JfcmV0dXJuKGRldiwgc2tiMik7XG4gMzA4Olx0XG4gMzA5Olx0XHRcdHNrYl9wdWxsKHNrYiwgKGxlbiAmIzQzOyAxKSBcdTAwMjYgfjEpO1xuIDMxMDpcdFx0fVxuIDMxMTpcdFxuIDMxMjpcdFx0LyogbGV0IHVzYm5ldCBwcm9jZXNzIHRoZSBsYXN0IHBhY2tldCAqL1xuIDMxMzpcdFx0cmV0dXJuIDE7XG4gMzE0Olx0fVxuIDMxNTpcdFxuIDMxNjpcdC8qIFRYIGlzIGVhc3ksIGp1c3QgYWRkIDIgYnl0ZXMgb2YgbGVuZ3RoIGF0IHRoZSBiZWdpbm5pbmcgKi9cbiAzMTc6XHRzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmN4ODIzMTBfdHhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIDMxODpcdFx0XHRcdFx0ICAgICAgIGdmcF90IGZsYWdzKVxuIDMxOTpcdHtcbiAzMjA6XHRcdGludCBsZW4gPSBza2ItXHUwMDNlbGVuO1xuIDMyMTpcdFxuIDMyMjpcdFx0aWYgKHNrYl9jb3dfaGVhZChza2IsIDIpKSB7XG4gMzIzOlx0XHRcdGRldl9rZnJlZV9za2JfYW55KHNrYik7XG4gMzI0Olx0XHRcdHJldHVybiBOVUxMO1xuIDMyNTpcdFx0fVxuIDMyNjpcdFx0c2tiX3B1c2goc2tiLCAyKTtcbiAzMjc6XHRcbiAzMjg6XHRcdHNrYi1cdTAwM2VkYXRhWzBdID0gbGVuO1xuIDMyOTpcdFx0c2tiLVx1MDAzZWRhdGFbMV0gPSBsZW4gXHUwMDNlXHUwMDNlIDg7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAxOjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2OTEKCQkJCQkJCW91dHB1dDogMTgyCgkJCQkJCQl0aG91Z2h0czogNjEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIHRoZSBjeDgyMzEwIERyaXZlcioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgZG93biB0aGlzIHBhdGNoIGZvciB0aGUgYGN4ODIzMTBgIGRyaXZlci4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvcmUgY2hhbmdlIGFuZCBwb3RlbnRpYWwgaW1wbGljYXRpb25zLiBJdCBsb29rcyBsaWtlIHRoZSBwcmltYXJ5IGZvY3VzIGlzIHdpdGhpbiB0aGUgYGN4ODIzMTBfcnhfZml4dXBgIGZ1bmN0aW9uLiBUaGUgY29kZSBhZGRyZXNzZXMgYSBzcGVjaWZpYyBzY2VuYXJpbzogYGxlbiA9PSAweGZmZmZgLiBCZWZvcmUgdGhpcyBwYXRjaCwgaWYgdGhlIHBhY2tldCBsZW5ndGggd2FzIHRoaXMgbWF4aW11bSB2YWx1ZSwgdGhlIGNvZGUgd291bGQgcHJvY2VlZCBwYXN0IHRoYXQgY29uZGl0aW9uYWwgY2hlY2sgd2l0aG91dCByZXR1cm5pbmcsIGxlYWRpbmcgdG8gc29tZSBwb3RlbnRpYWxseSBuYXN0eSBjb25zZXF1ZW5jZXMgZG93biB0aGUgbGluZS4KClRoZSB2dWxuZXJhYmlsaXR5IHN0ZW1zIGZyb20gdGhlIGxvZ2ljIHRoYXQgZm9sbG93cyB3aGVuIGBsZW5gIGlzIGAweGZmZmZgLiBUaGUgcHJldmlvdXMgY29kZSB3b3VsZCBlbmQgdXAgZG9pbmcgc29tZSBkYW5nZXJvdXMgY2FsY3VsYXRpb25zOiBhc3NpZ25pbmcgYGRldi0mZ3Q7cGFydGlhbF9sZW5gIGFzIGBza2ItJmd0O2xlbmAsIHRoZW4gY2FsY3VsYXRpbmcgYGRldi0mZ3Q7cGFydGlhbF9yZW1gIGFzIGEgbWFzc2l2ZSBkaWZmZXJlbmNlIChgMHhmZmZmIC0gc2tiLSZndDtsZW5gKS4gTmV4dCwgaXQgY29waWVzIGRhdGEgYmFzZWQgb24gYGRldi0mZ3Q7cGFydGlhbF9sZW5gLiBUaGVuLCBvbiBhIHN1YnNlcXVlbnQgcGFja2V0LCBiZWNhdXNlIGBkZXYtJmd0O3BhcnRpYWxfcmVtYCB3b3VsZCBiZSBub24temVybywgaXQgZG9lcyBhbiBhbGxvY2F0aW9uLCB1c2luZyBhIGxlbmd0aCB0aGF0IHdvdWxkIGluY2x1ZGUgdGhpcyBlbm9ybW91cyBgZGV2LSZndDtwYXJ0aWFsX3JlbWAsIGFuZCB0cmllcyB0byBjb3B5IG1lbW9yeSBiYXNlZCBvbiBgZGV2LSZndDtwYXJ0aWFsX3JlbWAgZnJvbSBgc2tiLSZndDtkYXRhYCB0byB0aGUgbmV3bHkgYWxsb2NhdGVkIHNrYjIuIFRoaXMgaXMgd2hlcmUgaXQgYnJlYWtzOiBJdCBsb29rcyBsaWtlIGl0IGNvdWxkIGhhdmUgcmVzdWx0ZWQgaW4gYSAqc2lnbmlmaWNhbnQqIG91dC1vZi1ib3VuZHMgcmVhZCBmcm9tIGBza2ItJmd0O2RhdGFgIGJlY2F1c2UgYHNrYi0mZ3Q7bGVuYCBpcyBnb2luZyB0byBiZSBmYXIgc21hbGxlciB0aGFuIGBkZXYtJmd0O3BhcnRpYWxfcmVtYC4gQmlnIHByb2JsZW0hIFRoaXMgcGF0Y2ggbmVhdGx5IGZpeGVzIHRoaXMgYnkgYWRkaW5nIGEgYHJldHVybiAwO2AgYWZ0ZXIgYHNjaGVkdWxlX3dvcmsoKWAuCgpNeSBmaXJzdCBjb25jZXJuIGlzIGFsd2F5cywgJiMzNDtEb2VzIHRoaXMgcGF0Y2ggaW50cm9kdWNlIGFueSBuZXcgcmlza3M/JiMzNDsgSXQgc2VlbXMgbm90LiBJdCYjMzk7cyBlc3NlbnRpYWxseSBhZGRpbmcgYW4gZWFybHkgcmV0dXJuIHRvIHN0b3AgcHJvY2Vzc2luZyB0aGUgcGFja2V0IGluIGFuIGVycm9yIG9yIHNwZWNpYWwgcmVib290IGNvbmRpdGlvbiwgcHJldmVudGluZyB0aGlzIG91dC1vZi1ib3VuZHMgYWNjZXNzLiBJJiMzOTt2ZSBzcGVjaWZpY2FsbHkgY29uc2lkZXJlZCB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcy4gVGhlcmUgYXJlIG5vIG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIG5vIHVuaW5pdGlhbGl6ZWQgc3RydWN0IGZpZWxkcywgbm8gbmV3IGJ1ZmZlcnMgdG8gcmVhZC9jb3B5IHVuaW5pdGlhbGl6ZWQgZGF0YS4gVGhlcmUgYXJlIG5vIGxlYWtzIHRvIHVzZXIgc3BhY2UuIEl0IGRvZXNuJiMzOTt0IG1vZGlmeSBib3VuZHMtY2hlY2tpbmcgbG9naWMgdGhhdCBjb3VsZCBhbGxvdyB1bmluaXRpYWxpemVkIGJ5dGVzIHRvIGJlIGV4cG9zZWQuIFRoZSBjaGFuZ2UgaXMgc2ltcGx5IGEgbW9yZSBjb3JyZWN0IGVycm9yIGhhbmRsaW5nIHByb2NlZHVyZS4KCktBU0FOLCBpZiB0aGUgYnVnIHdlcmUgdG8gYmUgcmVwcm9kdWNlZCBieSBhbiBhdHRhY2tlciwgd291bGQgbGlrZWx5IGNhdGNoIHRoZSBoZWFwIG91dC1vZi1ib3VuZHMgcmVhZC4gS01TQU4sIHdoaWNoIEkgYW0gdmVyeSBmYW1pbGlhciB3aXRoLCB0YXJnZXRzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIGFuZCBrZXJuZWwtdG8tdXNlciBpbmZvcm1hdGlvbiBsZWFrcy4gSSBkb24mIzM5O3Qgc2VlIGFueSBpbnRyb2R1Y3Rpb24gb3IgcmVhZGluZyBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBoZXJlLgoKV2l0aCB0aGlzIGFuYWx5c2lzIGNvbXBsZXRlLCBJJiMzOTttIGNvbmZpZGVudCBpbiB0aGUgY29ycmVjdG5lc3Mgb2YgdGhpcyBwYXRjaC4gTm93IEkmIzM5O2xsIHByZXBhcmUgdGhlIGBzZXQtcmVzdWx0c2AgdG9vbCBjYWxsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGFuIGVhcmx5ICYjMzk7cmV0dXJuIDA7JiMzOTsgd2hlbiAmIzM5O2xlbiA9PSAweGZmZmYmIzM5OyBpbiBjeDgyMzEwX3J4X2ZpeHVwKCkgdG8gYWJvcnQgcHJvY2Vzc2luZyB3aGVuIHRoZSByb3V0ZXIgcmVib290cyBhbmQgcmUtZW5hYmxpbmcgd29yayBpcyBzY2hlZHVsZWQuIFByZXZpb3VzbHksIGV4ZWN1dGlvbiBmZWxsIHRocm91Z2ggaW50byBwYXJ0aWFsIHBhY2tldCBoYW5kbGluZywgd2hpY2ggY291bGQgbGVhZCB0byBvdXQtb2YtYm91bmRzIHJlYWRzIG9uIHN1YnNlcXVlbnQgcGFja2V0cy4gXG5cblRoZSBmaXggb25seSBtb2RpZmllcyBjb250cm9sIGZsb3cgdG8gZGlzY2FyZCB0aGUgc2tiIGFuZCBkb2VzIG5vdCBhbGxvY2F0ZSwgaW5pdGlhbGl6ZSwgcmVhZCwgb3IgY29weSBhbnkgdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSBvciBrZXJuZWwgc3RydWN0dXJlcyB0byB1c2VyIHNwYWNlLiBBbnkgbWVtb3J5IHNhZmV0eSBpc3N1ZXMgcHJldmVudGVkIG9yIHRvdWNoZWQgYnkgdGhpcyBjb2RlIGFyZSBvdXQtb2YtYm91bmRzIGFjY2VzcyAvIGludmFsaWQgc3RhdGUgYnVncyBjYXVnaHQgYnkgS0FTQU4sIG5vdCB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZXMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWVkZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGFuIGVhcmx5ICYjMzk7cmV0dXJuIDA7JiMzOTsgd2hlbiAmIzM5O2xlbiA9PSAweGZmZmYmIzM5OyBpbiBjeDgyMzEwX3J4X2ZpeHVwKCkgdG8gYWJvcnQgcHJvY2Vzc2luZyB3aGVuIHRoZSByb3V0ZXIgcmVib290cyBhbmQgcmUtZW5hYmxpbmcgd29yayBpcyBzY2hlZHVsZWQuIFByZXZpb3VzbHksIGV4ZWN1dGlvbiBmZWxsIHRocm91Z2ggaW50byBwYXJ0aWFsIHBhY2tldCBoYW5kbGluZywgd2hpY2ggY291bGQgbGVhZCB0byBvdXQtb2YtYm91bmRzIHJlYWRzIG9uIHN1YnNlcXVlbnQgcGFja2V0cy4gXG5cblRoZSBmaXggb25seSBtb2RpZmllcyBjb250cm9sIGZsb3cgdG8gZGlzY2FyZCB0aGUgc2tiIGFuZCBkb2VzIG5vdCBhbGxvY2F0ZSwgaW5pdGlhbGl6ZSwgcmVhZCwgb3IgY29weSBhbnkgdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSBvciBrZXJuZWwgc3RydWN0dXJlcyB0byB1c2VyIHNwYWNlLiBBbnkgbWVtb3J5IHNhZmV0eSBpc3N1ZXMgcHJldmVudGVkIG9yIHRvdWNoZWQgYnkgdGhpcyBjb2RlIGFyZSBvdXQtb2YtYm91bmRzIGFjY2VzcyAvIGludmFsaWQgc3RhdGUgYnVncyBjYXVnaHQgYnkgS0FTQU4sIG5vdCB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZXMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWVkZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAxOjE2OjI2LjY2NjY1MjYzMVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyNzY1NzI1OTg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlVTQl9ORVRfQ1g4MjMxMF9FVEhcIixcbiAgICBcIlVTQl9VU0JORVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjeDgyMzEwX3J4X2ZpeHVwXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGFuIGVhcmx5ICdyZXR1cm4gMDsnIHdoZW4gJ2xlbiA9PSAweGZmZmYnIGluIGN4ODIzMTBfcnhfZml4dXAoKSB0byBhYm9ydCBwcm9jZXNzaW5nIHdoZW4gdGhlIHJvdXRlciByZWJvb3RzIGFuZCByZS1lbmFibGluZyB3b3JrIGlzIHNjaGVkdWxlZC4gUHJldmlvdXNseSwgZXhlY3V0aW9uIGZlbGwgdGhyb3VnaCBpbnRvIHBhcnRpYWwgcGFja2V0IGhhbmRsaW5nLCB3aGljaCBjb3VsZCBsZWFkIHRvIG91dC1vZi1ib3VuZHMgcmVhZHMgb24gc3Vic2VxdWVudCBwYWNrZXRzLiBcXG5cXG5UaGUgZml4IG9ubHkgbW9kaWZpZXMgY29udHJvbCBmbG93IHRvIGRpc2NhcmQgdGhlIHNrYiBhbmQgZG9lcyBub3QgYWxsb2NhdGUsIGluaXRpYWxpemUsIHJlYWQsIG9yIGNvcHkgYW55IHVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgb3Iga2VybmVsIHN0cnVjdHVyZXMgdG8gdXNlciBzcGFjZS4gQW55IG1lbW9yeSBzYWZldHkgaXNzdWVzIHByZXZlbnRlZCBvciB0b3VjaGVkIGJ5IHRoaXMgY29kZSBhcmUgb3V0LW9mLWJvdW5kcyBhY2Nlc3MgLyBpbnZhbGlkIHN0YXRlIGJ1Z3MgY2F1Z2h0IGJ5IEtBU0FOLCBub3QgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWVzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVlZGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgZnVuY3Rpb25hbCBmbG93IGJ1ZyBpbiB0aGUgUlggcGFja2V0IHByb2Nlc3NpbmcgbG9naWMgb2YgdGhlIGN4ODIzMTBfZXRoIFVTQiBuZXR3b3JrIGRyaXZlci4gUHJldmlvdXNseSwgd2hlbiBhbiBSWCBwYWNrZXQgaGFkIGxlbmd0aCAweGZmZmYgKHNpZ25hbGluZyByb3V0ZXIgcmVib290KSwgdGhlIGZ1bmN0aW9uIHNjaGVkdWxlZCBhIHJlLWVuYWJsZSB3b3JrZXIgYnV0IGZlbGwgdGhyb3VnaCBpbnRvIHBhcnRpYWwgcGFja2V0IGhhbmRsaW5nLCB3aGljaCBjb3VsZCBsZWFkIHRvIG1hbGZvcm1lZCBwYWNrZXQgcHJvY2Vzc2luZyBvciBvdXQtb2YtYm91bmRzL292ZXJmbG93IGlzc3Vlcy4gVGhlIHBhdGNoIHJldHVybnMgMCB0byBwcm9wZXJseSBkcm9wIHRoZSBwYWNrZXQuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgdmlhIFVTQiBlbXVsYXRpb24vZnV6emluZyAoZS5nLiBSYXcgR2FkZ2V0IC8gZHVtbXlfaGNkKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDE6MTY6MjYuNjY2NjU5NDQxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTg2Mjc5MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBhN2Q2MWQ2NDBkNjdmMjRkYzllNjJlZDZiMTdlM2ZlMDZhYzg3NDZkXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgU2VwIDMgMDE6MTY6MjUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMgYi9kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguY1xcbmluZGV4IDA2OGFjYjA1MmFkYjAuLjVkZjY1N2FjZjNkNTUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmNcXG4rKysgYi9kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguY1xcbkBAIC0yODIsNiArMjgyLDcgQEAgc3RhdGljIGludCBjeDgyMzEwX3J4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gXFx0XFx0aWYgKGxlbiA9PSAweGZmZmYpIHtcXG4gXFx0XFx0XFx0bmV0ZGV2X2luZm8oZGV2LVxcdTAwM2VuZXQsIFxcXCJyb3V0ZXIgd2FzIHJlYm9vdGVkLCByZS1lbmFibGluZyBldGhlcm5ldCBtb2RlXFxcIik7XFxuIFxcdFxcdFxcdHNjaGVkdWxlX3dvcmsoXFx1MDAyNnByaXYtXFx1MDAzZXJlZW5hYmxlX3dvcmspO1xcbitcXHRcXHRcXHRyZXR1cm4gMDtcXG4gXFx0XFx0fSBlbHNlIGlmIChsZW4gXFx1MDAzZSBDWDgyMzEwX01UVSkge1xcbiBcXHRcXHRcXHRuZXRkZXZfZXJyKGRldi1cXHUwMDNlbmV0LCBcXFwiUlggcGFja2V0IHRvbyBsb25nOiAlZCBCXFxcXG5cXFwiLCBsZW4pO1xcbiBcXHRcXHRcXHRyZXR1cm4gMDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDE6MTY6MjcuMDg1OTAwN1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6NTA5OTYwMzcwNDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVVNCX05FVF9DWDgyMzEwX0VUSFwiLFxuICAgIFwiVVNCX1VTQk5FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImN4ODIzMTBfcnhfZml4dXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGZ1bmN0aW9uYWwgZmxvdyBidWcgaW4gdGhlIFJYIHBhY2tldCBwcm9jZXNzaW5nIGxvZ2ljIG9mIHRoZSBjeDgyMzEwX2V0aCBVU0IgbmV0d29yayBkcml2ZXIuIFByZXZpb3VzbHksIHdoZW4gYW4gUlggcGFja2V0IGhhZCBsZW5ndGggMHhmZmZmIChzaWduYWxpbmcgcm91dGVyIHJlYm9vdCksIHRoZSBmdW5jdGlvbiBzY2hlZHVsZWQgYSByZS1lbmFibGUgd29ya2VyIGJ1dCBmZWxsIHRocm91Z2ggaW50byBwYXJ0aWFsIHBhY2tldCBoYW5kbGluZywgd2hpY2ggY291bGQgbGVhZCB0byBtYWxmb3JtZWQgcGFja2V0IHByb2Nlc3Npbmcgb3Igb3V0LW9mLWJvdW5kcy9vdmVyZmxvdyBpc3N1ZXMuIFRoZSBwYXRjaCByZXR1cm5zIDAgdG8gcHJvcGVybHkgZHJvcCB0aGUgcGFja2V0LiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBVU0IgZW11bGF0aW9uL2Z1enppbmcgKGUuZy4gUmF3IEdhZGdldCAvIGR1bW15X2hjZCkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGE3ZDYxZDY0MGQ2N2YyNGRjOWU2MmVkNmIxN2UzZmUwNmFjODc0NmRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IFNlcCAzIDAxOjE2OjI1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMgYi9kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguY1xuaW5kZXggMDY4YWNiMDUyYWRiMC4uNWRmNjU3YWNmM2Q1NSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jXG4rKysgYi9kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguY1xuQEAgLTI4Miw2ICsyODIsNyBAQCBzdGF0aWMgaW50IGN4ODIzMTBfcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0XHRpZiAobGVuID09IDB4ZmZmZikge1xuIFx0XHRcdG5ldGRldl9pbmZvKGRldi1cdTAwM2VuZXQsIFwicm91dGVyIHdhcyByZWJvb3RlZCwgcmUtZW5hYmxpbmcgZXRoZXJuZXQgbW9kZVwiKTtcbiBcdFx0XHRzY2hlZHVsZV93b3JrKFx1MDAyNnByaXYtXHUwMDNlcmVlbmFibGVfd29yayk7XG4rXHRcdFx0cmV0dXJuIDA7XG4gXHRcdH0gZWxzZSBpZiAobGVuIFx1MDAzZSBDWDgyMzEwX01UVSkge1xuIFx0XHRcdG5ldGRldl9lcnIoZGV2LVx1MDAzZW5ldCwgXCJSWCBwYWNrZXQgdG9vIGxvbmc6ICVkIEJcXG5cIiwgbGVuKTtcbiBcdFx0XHRyZXR1cm4gMDtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAxOjE2OjI3LjA4NTkwMjY2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTc1OTc1NTQzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBOZXR3b3JrIERyaXZlciBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGRpZmYsIHNwZWNpZmljYWxseSB0aGUgY2hhbmdlIGluIGBkcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguY2AuIFRoZSBtb2RpZmljYXRpb24gdG8gYGN4ODIzMTBfcnhfZml4dXBgIGF0IGxpbmUgMjgyIGlzIGludGVyZXN0aW5nLiBJdCBsb29rcyBsaWtlIGl0IGhhbmRsZXMgc29tZSBraW5kIG9mIGVycm9yIGNvbmRpdGlvbiByZWxhdGVkIHRvIHBhY2tldCBsZW5ndGggb3IgcG90ZW50aWFsbHkgYSByb3V0ZXIgcmVib290LCBhbmQgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGV4YWN0IGNvbnRleHQuIExldCBtZSBkaXZlIGludG8gdGhlIHN1cnJvdW5kaW5nIGNvZGUgaW4gdGhhdCBmaWxlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgYGN4ODIzMTBfcnhfZml4dXBgIHdvcmtzIHdpdGhpbiB0aGUgYHVzYm5ldGAgZnJhbWV3b3JrLiBJIHdhbnQgdG8gdHJhY2UgdGhlIGRhdGEgZmxvdyB0byBzZWUgaWYgVVNCIGRyaXZlcnMsIHRoZSBgdXNibmV0YCBhYnN0cmFjdGlvbiBsYXllciwgb3IgZXZlbiBzb21ldGhpbmcgcmVsYXRlZCB0byBVU0IgZW11bGF0aW9uIG9yIGZ1enppbmcgdGVjaG5pcXVlcyBsaWtlIHN5emthbGxlciBjb3VsZCBwb3RlbnRpYWxseSB0cmlnZ2VyIHRoaXMuIEknbGwgbmVlZCB0byBrbm93IHRoZSBjb25maWcgZGVwZW5kZW5jaWVzLiBMZXQgbWUgY2FsbCBgcmVhZC1maWxlYCBhbmQgY2hlY2sgS2NvbmZpZyB0byBzZWUgd2hhdCdzIG5lZWRlZC4gSSdsbCBmb2N1cyBvbiB3aGV0aGVyIHRoaXMgY291bGQgYmUgaGl0IGJ5IFVTQiB0cmFmZmljLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTMzLCJPdXRwdXRUb2tlbnMiOjc1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDE6MTY6MzIuODQ1NjU5ODg4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjY5ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjUwLFxuICBcIkxpbmVDb3VudFwiOiA3MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjUwOlxcdFxcdCAqIElmIHRoZSBsYXN0IHNrYiBlbmRlZCB3aXRoIGFuIGluY29tcGxldGUgcGFja2V0LCB0aGlzIHNrYiBjb250YWluc1xcbiAyNTE6XFx0XFx0ICogZW5kIG9mIHRoYXQgcGFja2V0IGF0IHRoZSBiZWdpbm5pbmcuXFxuIDI1MjpcXHRcXHQgKi9cXG4gMjUzOlxcdFxcdGlmIChkZXYtXFx1MDAzZXBhcnRpYWxfcmVtKSB7XFxuIDI1NDpcXHRcXHRcXHRsZW4gPSBkZXYtXFx1MDAzZXBhcnRpYWxfbGVuICsgZGV2LVxcdTAwM2VwYXJ0aWFsX3JlbTtcXG4gMjU1OlxcdFxcdFxcdHNrYjIgPSBhbGxvY19za2IobGVuLCBHRlBfQVRPTUlDKTtcXG4gMjU2OlxcdFxcdFxcdGlmICghc2tiMilcXG4gMjU3OlxcdFxcdFxcdFxcdHJldHVybiAwO1xcbiAyNTg6XFx0XFx0XFx0c2tiX3B1dChza2IyLCBsZW4pO1xcbiAyNTk6XFx0XFx0XFx0bWVtY3B5KHNrYjItXFx1MDAzZWRhdGEsICh2b2lkICopZGV2LVxcdTAwM2VwYXJ0aWFsX2RhdGEsXFxuIDI2MDpcXHRcXHRcXHQgICAgICAgZGV2LVxcdTAwM2VwYXJ0aWFsX2xlbik7XFxuIDI2MTpcXHRcXHRcXHRtZW1jcHkoc2tiMi1cXHUwMDNlZGF0YSArIGRldi1cXHUwMDNlcGFydGlhbF9sZW4sIHNrYi1cXHUwMDNlZGF0YSxcXG4gMjYyOlxcdFxcdFxcdCAgICAgICBkZXYtXFx1MDAzZXBhcnRpYWxfcmVtKTtcXG4gMjYzOlxcdFxcdFxcdHVzYm5ldF9za2JfcmV0dXJuKGRldiwgc2tiMik7XFxuIDI2NDpcXHRcXHRcXHRza2JfcHVsbChza2IsIChkZXYtXFx1MDAzZXBhcnRpYWxfcmVtICsgMSkgXFx1MDAyNiB+MSk7XFxuIDI2NTpcXHRcXHRcXHRkZXYtXFx1MDAzZXBhcnRpYWxfcmVtID0gMDtcXG4gMjY2OlxcdFxcdFxcdGlmIChza2ItXFx1MDAzZWxlbiBcXHUwMDNjIDIpXFxuIDI2NzpcXHRcXHRcXHRcXHRyZXR1cm4gMTtcXG4gMjY4OlxcdFxcdH1cXG4gMjY5OlxcdFxcbiAyNzA6XFx0XFx0LyogYSBza2IgY2FuIGNvbnRhaW4gbXVsdGlwbGUgcGFja2V0cyAqL1xcbiAyNzE6XFx0XFx0d2hpbGUgKHNrYi1cXHUwMDNlbGVuIFxcdTAwM2UgMSkge1xcbiAyNzI6XFx0XFx0XFx0LyogZmlyc3QgdHdvIGJ5dGVzIGFyZSBwYWNrZXQgbGVuZ3RoICovXFxuIDI3MzpcXHRcXHRcXHRsZW4gPSBza2ItXFx1MDAzZWRhdGFbMF0gfCAoc2tiLVxcdTAwM2VkYXRhWzFdIFxcdTAwM2NcXHUwMDNjIDgpO1xcbiAyNzQ6XFx0XFx0XFx0c2tiX3B1bGwoc2tiLCAyKTtcXG4gMjc1OlxcdFxcbiAyNzY6XFx0XFx0XFx0LyogaWYgbGFzdCBwYWNrZXQgaW4gdGhlIHNrYiwgbGV0IHVzYm5ldCB0byBwcm9jZXNzIGl0ICovXFxuIDI3NzpcXHRcXHRcXHRpZiAobGVuID09IHNrYi1cXHUwMDNlbGVuIHx8IGxlbiArIDEgPT0gc2tiLVxcdTAwM2VsZW4pIHtcXG4gMjc4OlxcdFxcdFxcdFxcdHNrYl90cmltKHNrYiwgbGVuKTtcXG4gMjc5OlxcdFxcdFxcdFxcdGJyZWFrO1xcbiAyODA6XFx0XFx0XFx0fVxcbiAyODE6XFx0XFxuIDI4MjpcXHRcXHRcXHRpZiAobGVuID09IDB4ZmZmZikge1xcbiAyODM6XFx0XFx0XFx0XFx0bmV0ZGV2X2luZm8oZGV2LVxcdTAwM2VuZXQsIFxcXCJyb3V0ZXIgd2FzIHJlYm9vdGVkLCByZS1lbmFibGluZyBldGhlcm5ldCBtb2RlXFxcIik7XFxuIDI4NDpcXHRcXHRcXHRcXHRzY2hlZHVsZV93b3JrKFxcdTAwMjZwcml2LVxcdTAwM2VyZWVuYWJsZV93b3JrKTtcXG4gMjg1OlxcdFxcdFxcdFxcdHJldHVybiAwO1xcbiAyODY6XFx0XFx0XFx0fSBlbHNlIGlmIChsZW4gXFx1MDAzZSBDWDgyMzEwX01UVSkge1xcbiAyODc6XFx0XFx0XFx0XFx0bmV0ZGV2X2VycihkZXYtXFx1MDAzZW5ldCwgXFxcIlJYIHBhY2tldCB0b28gbG9uZzogJWQgQlxcXFxuXFxcIiwgbGVuKTtcXG4gMjg4OlxcdFxcdFxcdFxcdHJldHVybiAwO1xcbiAyODk6XFx0XFx0XFx0fVxcbiAyOTA6XFx0XFxuIDI5MTpcXHRcXHRcXHQvKiBpbmNvbXBsZXRlIHBhY2tldCwgc2F2ZSBpdCBmb3IgdGhlIG5leHQgc2tiICovXFxuIDI5MjpcXHRcXHRcXHRpZiAobGVuIFxcdTAwM2Ugc2tiLVxcdTAwM2VsZW4pIHtcXG4gMjkzOlxcdFxcdFxcdFxcdGRldi1cXHUwMDNlcGFydGlhbF9sZW4gPSBza2ItXFx1MDAzZWxlbjtcXG4gMjk0OlxcdFxcdFxcdFxcdGRldi1cXHUwMDNlcGFydGlhbF9yZW0gPSBsZW4gLSBza2ItXFx1MDAzZWxlbjtcXG4gMjk1OlxcdFxcdFxcdFxcdG1lbWNweSgodm9pZCAqKWRldi1cXHUwMDNlcGFydGlhbF9kYXRhLCBza2ItXFx1MDAzZWRhdGEsXFxuIDI5NjpcXHRcXHRcXHRcXHQgICAgICAgZGV2LVxcdTAwM2VwYXJ0aWFsX2xlbik7XFxuIDI5NzpcXHRcXHRcXHRcXHRza2JfcHVsbChza2IsIHNrYi1cXHUwMDNlbGVuKTtcXG4gMjk4OlxcdFxcdFxcdFxcdGJyZWFrO1xcbiAyOTk6XFx0XFx0XFx0fVxcbiAzMDA6XFx0XFxuIDMwMTpcXHRcXHRcXHRza2IyID0gYWxsb2Nfc2tiKGxlbiwgR0ZQX0FUT01JQyk7XFxuIDMwMjpcXHRcXHRcXHRpZiAoIXNrYjIpXFxuIDMwMzpcXHRcXHRcXHRcXHRyZXR1cm4gMDtcXG4gMzA0OlxcdFxcdFxcdHNrYl9wdXQoc2tiMiwgbGVuKTtcXG4gMzA1OlxcdFxcdFxcdG1lbWNweShza2IyLVxcdTAwM2VkYXRhLCBza2ItXFx1MDAzZWRhdGEsIGxlbik7XFxuIDMwNjpcXHRcXHRcXHQvKiBwcm9jZXNzIHRoZSBwYWNrZXQgKi9cXG4gMzA3OlxcdFxcdFxcdHVzYm5ldF9za2JfcmV0dXJuKGRldiwgc2tiMik7XFxuIDMwODpcXHRcXG4gMzA5OlxcdFxcdFxcdHNrYl9wdWxsKHNrYiwgKGxlbiArIDEpIFxcdTAwMjYgfjEpO1xcbiAzMTA6XFx0XFx0fVxcbiAzMTE6XFx0XFxuIDMxMjpcXHRcXHQvKiBsZXQgdXNibmV0IHByb2Nlc3MgdGhlIGxhc3QgcGFja2V0ICovXFxuIDMxMzpcXHRcXHRyZXR1cm4gMTtcXG4gMzE0OlxcdH1cXG4gMzE1OlxcdFxcbiAzMTY6XFx0LyogVFggaXMgZWFzeSwganVzdCBhZGQgMiBieXRlcyBvZiBsZW5ndGggYXQgdGhlIGJlZ2lubmluZyAqL1xcbiAzMTc6XFx0c3RhdGljIHN0cnVjdCBza19idWZmICpjeDgyMzEwX3R4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gMzE4OlxcdFxcdFxcdFxcdFxcdCAgICAgICBnZnBfdCBmbGFncylcXG4gMzE5OlxcdHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDE6MTY6MzIuODQ1NzI3ODI4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2ODY2Nzc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImN4ODIzMTBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdXNiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3VzYi9NYWtlZmlsZT0zNT1vYmotJChDT05GSUdfVVNCX1NJRVJSQV9ORVQpXFx0Kz0gc2llcnJhX25ldC5vXFxuZHJpdmVycy9uZXQvdXNiL01ha2VmaWxlOjM2Om9iai0kKENPTkZJR19VU0JfTkVUX0NYODIzMTBfRVRIKVxcdCs9IGN4ODIzMTBfZXRoLm9cXG5kcml2ZXJzL25ldC91c2IvTWFrZWZpbGUtMzctb2JqLSQoQ09ORklHX1VTQl9ORVRfQ0RDX05DTSlcXHQrPSBjZGNfbmNtLm9cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTE2LVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjE3OmVudW0gY3g4MjMxMF9jbWQge1xcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTE4LVxcdENNRF9TVEFSVFxcdFxcdD0gMHg4NCxcXHQvKiBubyBlZmZlY3Q/ICovXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0yNS1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzoyNjplbnVtIGN4ODIzMTBfc3RhdHVzIHtcXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0yNy1cXHRTVEFUVVNfVU5ERUZJTkVELFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtNDItXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6NDM6c3RydWN0IGN4ODIzMTBfcHJpdiB7XFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtNDQtXFx0c3RydWN0IHdvcmtfc3RydWN0IHJlZW5hYmxlX3dvcms7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy01My0gKi9cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzo1NDpzdGF0aWMgaW50IGN4ODIzMTBfY21kKHN0cnVjdCB1c2JuZXQgKmRldiwgZW51bSBjeDgyMzEwX2NtZCBjbWQsIGJvb2wgcmVwbHksXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtNTUtXFx0XFx0ICAgICAgIHU4ICp3ZGF0YSwgaW50IHdsZW4sIHU4ICpyZGF0YSwgaW50IHJsZW4pXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0xMTktXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MTIwOnN0YXRpYyBpbnQgY3g4MjMxMF9lbmFibGVfZXRoZXJuZXQoc3RydWN0IHVzYm5ldCAqZGV2KVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTEyMS17XFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MTIyOlxcdGludCByZXQgPSBjeDgyMzEwX2NtZChkZXYsIENNRF9FVEhFUk5FVF9NT0RFLCB0cnVlLCBcXFwiXFxcXHgwMVxcXCIsIDEsIE5VTEwsIDApO1xcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTEyMy1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTEyOS1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzoxMzA6c3RhdGljIHZvaWQgY3g4MjMxMF9yZWVuYWJsZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0xMzEte1xcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjEzMjpcXHRzdHJ1Y3QgY3g4MjMxMF9wcml2ICpwcml2ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBjeDgyMzEwX3ByaXYsXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMTMzLVxcdFxcdFxcdFxcdFxcdFxcdCByZWVuYWJsZV93b3JrKTtcXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzoxMzQ6XFx0Y3g4MjMxMF9lbmFibGVfZXRoZXJuZXQocHJpdi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0xMzUtfVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMTQwLVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjE0MTpzdGF0aWMgaW50IGN4ODIzMTBfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTE0Mi17XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0xNDctXFx0aW50IHRpbWVvdXQgPSA1MDtcXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzoxNDg6XFx0c3RydWN0IGN4ODIzMTBfcHJpdiAqcHJpdjtcXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0xNDktXFx0dTggYWRkcltFVEhfQUxFTl07XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0xODEtXFx0ZGV2LVxcdTAwM2Vkcml2ZXJfcHJpdiA9IHByaXY7XFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MTgyOlxcdElOSVRfV09SSyhcXHUwMDI2cHJpdi1cXHUwMDNlcmVlbmFibGVfd29yaywgY3g4MjMxMF9yZWVuYWJsZV93b3JrKTtcXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0xODMtXFx0cHJpdi1cXHUwMDNlZGV2ID0gZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMTg2LVxcdHdoaWxlICgtLXRpbWVvdXQpIHtcXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzoxODc6XFx0XFx0cmV0ID0gY3g4MjMxMF9jbWQoZGV2LCBDTURfR0VUX0xJTktfU1RBVFVTLCB0cnVlLCBOVUxMLCAwLFxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTE4OC1cXHRcXHRcXHRcXHQgIGxpbmssIHNpemVvZihsaW5rKSk7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0yMDAtXFx0LyogZW5hYmxlIGV0aGVybmV0IG1vZGUgKD8pICovXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MjAxOlxcdHJldCA9IGN4ODIzMTBfZW5hYmxlX2V0aGVybmV0KGRldik7XFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMjAyLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0yMDUtXFx0LyogZ2V0IHRoZSBNQUMgYWRkcmVzcyAqL1xcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjIwNjpcXHRyZXQgPSBjeDgyMzEwX2NtZChkZXYsIENNRF9HRVRfTUFDX0FERFIsIHRydWUsIE5VTEwsIDAsIGFkZHIsIEVUSF9BTEVOKTtcXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0yMDctXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMjEzLVxcdC8qIHN0YXJ0IChkb2VzIG5vdCBzZWVtIHRvIGhhdmUgYW55IGVmZmVjdD8pICovXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MjE0OlxcdHJldCA9IGN4ODIzMTBfY21kKGRldiwgQ01EX1NUQVJULCBmYWxzZSwgTlVMTCwgMCwgTlVMTCwgMCk7XFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMjE1LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0yMjUtXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MjI2OnN0YXRpYyB2b2lkIGN4ODIzMTBfdW5iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMjI3LXtcXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzoyMjg6XFx0c3RydWN0IGN4ODIzMTBfcHJpdiAqcHJpdiA9IGRldi1cXHUwMDNlZHJpdmVyX3ByaXY7XFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMjI5LVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMjQyLSAqL1xcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjI0MzpzdGF0aWMgaW50IGN4ODIzMTBfcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTI0NC17XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0yNDYtXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjI7XFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MjQ3OlxcdHN0cnVjdCBjeDgyMzEwX3ByaXYgKnByaXYgPSBkZXYtXFx1MDAzZWRyaXZlcl9wcml2O1xcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTI0OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTMxNi0vKiBUWCBpcyBlYXN5LCBqdXN0IGFkZCAyIGJ5dGVzIG9mIGxlbmd0aCBhdCB0aGUgYmVnaW5uaW5nICovXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MzE3OnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqY3g4MjMxMF90eF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IsXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMzE4LVxcdFxcdFxcdFxcdCAgICAgICBnZnBfdCBmbGFncylcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTMzNC1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzozMzU6c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mb1xcdGN4ODIzMTBfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0zMzYtXFx0LmRlc2NyaXB0aW9uXFx0PSBcXFwiQ29uZXhhbnQgQ1g4MjMxMCBVU0IgZXRoZXJuZXRcXFwiLFxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTMzNy1cXHQuZmxhZ3NcXHRcXHQ9IEZMQUdfRVRIRVIsXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MzM4OlxcdC5iaW5kXFx0XFx0PSBjeDgyMzEwX2JpbmQsXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MzM5OlxcdC51bmJpbmRcXHRcXHQ9IGN4ODIzMTBfdW5iaW5kLFxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjM0MDpcXHQucnhfZml4dXBcXHQ9IGN4ODIzMTBfcnhfZml4dXAsXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MzQxOlxcdC50eF9maXh1cFxcdD0gY3g4MjMxMF90eF9maXh1cCxcXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0zNDItfTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jPTM1Mz1zdGF0aWMgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgcHJvZHVjdHNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTM1NS1cXHRcXHRVU0JfREVWSUNFX0NMQVNTKDB4MDU3MiwgMHhjYjAxLCAweGZmLCAwLCAwKSxcXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzozNTY6XFx0XFx0LmRyaXZlcl9pbmZvID0gKHVuc2lnbmVkIGxvbmcpIFxcdTAwMjZjeDgyMzEwX2luZm9cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0zNTctXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jPTM2MD1NT0RVTEVfREVWSUNFX1RBQkxFKHVzYiwgcHJvZHVjdHMpO1xcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTM2MS1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzozNjI6c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIGN4ODIzMTBfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjM2MzpcXHQubmFtZVxcdFxcdD0gXFxcImN4ODIzMTBfZXRoXFxcIixcXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0zNjQtXFx0LmlkX3RhYmxlXFx0PSBwcm9kdWN0cyxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTM3MS1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzozNzI6bW9kdWxlX3VzYl9kcml2ZXIoY3g4MjMxMF9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTM3My1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDE6MTY6MzIuODkyNjAwNDU1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzEyMTQ2NjM4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSBpbW1lZGlhdGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKktjb25maWcgRGl2ZSBmb3IgQ1g4MjMxMCBFdGhlcm5ldCoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZGlnIGludG8gdGhlIHNvdXJjZS4gSSBuZWVkIHRvIHZlcmlmeSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb24gZm9yIHRoZSBDWDgyMzEwIEV0aGVybmV0IGRyaXZlciwgc3BlY2lmaWNhbGx5IGBDT05GSUdfVVNCX05FVF9DWDgyMzEwX0VUSGAuIEknbSBzdGFydGluZyB3aXRoIEtjb25maWcgYmVjYXVzZSB0aGF0J3MgdGhlIGNlbnRyYWwgcmVwb3NpdG9yeSBmb3IgYnVpbGQgY29uZmlndXJhdGlvbi4gSSdsbCBiZSBsb29raW5nIGZvciB3aGVyZSB0aGlzIG9wdGlvbiBpcyBkZWZpbmVkLCBhbnkgZGVwZW5kZW5jaWVzIGl0IGhhcyAob3RoZXIgVVNCIG5ldHdvcmsgc3RhY2sgZmVhdHVyZXMsIHBlcmhhcHMgc3BlY2lmaWMgVVNCIGNvbnRyb2xsZXJzKSwgaXRzIGRlZmF1bHQgc3RhdGUsIGFuZCBhbnkgaGVscCB0ZXh0IGFzc29jaWF0ZWQgd2l0aCBpdC4gVGhpcydsbCBxdWlja2x5IHRlbGwgbWUgaWYgdGhlIGRyaXZlciBpcyBldmVuICppbnRlbmRlZCogdG8gYmUgaW5jbHVkZWQsIGFuZCB3aGF0IHByZWNvbmRpdGlvbnMgbmVlZCB0byBiZSBtZXQgZm9yIGl0IHRvIGJlIGNvbXBpbGVkIGludG8gdGhlIGltYWdlLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiBpdCdzIG1vZHVsYXIgb3IgYnVpbHQtaW4sIGFuZCBob3cgdG8gY2hhbmdlIGl0cyBidWlsZCBzdGF0dXMuIFRoZW4gSSB3aWxsIHNlZSB3aGF0IHRoZSBidWlsZCBzY3JpcHRzIGRvIHdpdGggaXQuIFRoaXMgaW5mb3JtYXRpb24gd2lsbCBpbmZvcm0gbXkgbmV4dCBzdGVwcyBpbiBlaXRoZXIgZW5hYmxpbmcgaXQgb3IgdHJvdWJsZXNob290aW5nIGl0cyBhYnNlbmNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2Njc3LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiLCJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDE6MTY6MzYuMDE0MDY5NjgxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MTMxMTc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlVTQl9ORVRfQ1g4MjMxMF9FVEhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdXNiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTQ5ND1jb25maWcgVVNCX05FVF9aQVVSVVNcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTUxMS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo1MTI6Y29uZmlnIFVTQl9ORVRfQ1g4MjMxMF9FVEhcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy01MTMtXFx0dHJpc3RhdGUgXFxcIkNvbmV4YW50IENYODIzMTAgVVNCIGV0aGVybmV0IHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvTWFrZWZpbGU9MzU9b2JqLSQoQ09ORklHX1VTQl9TSUVSUkFfTkVUKVxcdCs9IHNpZXJyYV9uZXQub1xcbmRyaXZlcnMvbmV0L3VzYi9NYWtlZmlsZTozNjpvYmotJChDT05GSUdfVVNCX05FVF9DWDgyMzEwX0VUSClcXHQrPSBjeDgyMzEwX2V0aC5vXFxuZHJpdmVycy9uZXQvdXNiL01ha2VmaWxlLTM3LW9iai0kKENPTkZJR19VU0JfTkVUX0NEQ19OQ00pXFx0Kz0gY2RjX25jbS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAxOjE2OjM2LjA2MDIwODcwN1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMxOTg1NDg2OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIFVTQiBOZXR3b3JraW5nIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBsZXQncyBwdWxsIHVwIHRoYXQgYGRyaXZlcnMvbmV0L3VzYi9LY29uZmlnYCBmaWxlLiBJJ20gc3BlY2lmaWNhbGx5IGludGVyZXN0ZWQgaW4sIHNheSwgYXJvdW5kIGxpbmUgNTEyLiBNeSBpbml0aWFsIGh1bmNoIGlzIHRoYXQgd2UncmUgZGVhbGluZyB3aXRoIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgYSAqc3BlY2lmaWMqIFVTQiBuZXR3b3JrIGRldmljZSwgcHJvYmFibHkgcmVsYXRlZCB0byBhIHBhcnRpY3VsYXIgZHJpdmVyIGltcGxlbWVudGF0aW9uLiBJIGV4cGVjdCB0byBzZWUgdGhlIHR5cGljYWwgS2NvbmZpZyBzdHJ1Y3R1cmUg4oCTIGBjb25maWdgIGJsb2NrcywgbWF5YmUgc29tZSBgZGVwZW5kcyBvbmAgc3RhdGVtZW50cywgYSBgc2VsZWN0YCBvciB0d28gaWYgd2UncmUgbHVja3kuIEkgd2FudCB0byBxdWlja2x5IGFzY2VydGFpbiB3aGF0IHRoZSBkZXBlbmRlbmNpZXMgYXJlLCBhbmQgd2hhdCB0aGUgZGVmYXVsdCBzZXR0aW5ncyBtaWdodCBiZS4gQXJlIHRoZXJlIG11bHRpcGxlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBncm91cGVkIHRvZ2V0aGVyIGF0IHRoaXMgbG9jYXRpb24sIG9yIGEgc2luZ2xlIGNvbXBsZXggb3B0aW9uPyBJdCB3aWxsIGJlIGludGVyZXN0aW5nIHRvIHNlZSBpZiBhbnkgb2YgdGhlIGRlcGVuZGVuY2llcyBhcmUgcG9vcmx5IGV4cGxhaW5lZCBvciBpZiB0aGVyZSBhcmUgdW5leHBlY3RlZCBpbnRlcmFjdGlvbnMuIFVsdGltYXRlbHksIEknbSB0cnlpbmcgdG8gcXVpY2tseSBidWlsZCBhIG1lbnRhbCBtYXAgb2YgdGhpcyBzZWN0aW9uIHRvIGlkZW50aWZ5IHBvdGVudGlhbCBhcmVhcyBmb3IgY3VzdG9taXphdGlvbiwgb3IgaWYgSSBzcG90IGEgY29uZmlndXJhdGlvbiB0aGF0IEkgYWxyZWFkeSB1c2UgdGhhdCBtYXkgYmUgaW50ZXJhY3Rpbmcgd2l0aCBhbm90aGVyIHBhcnQgb2YgdGhlIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzE3OCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAxOjE2OjM5LjI1ODc2MDM1OFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg5NDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3VzYi9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDUwMCxcbiAgXCJMaW5lQ291bnRcIjogMzVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDUwMDpcXHRcXHRoZWxwXFxuIDUwMTpcXHRcXHQgIENob29zZSB0aGlzIG9wdGlvbiB0byBzdXBwb3J0IHRoZSB1c2IgbmV0d29ya2luZyBsaW5rcyB1c2VkIGJ5XFxuIDUwMjpcXHRcXHQgIFphdXJ1cyBtb2RlbHMgbGlrZSB0aGUgU0wtNTAwMEQsIFNMLTU1MDAsIFNMLTU2MDAsIEEtMzAwLCBCLTUwMC5cXG4gNTAzOlxcdFxcdCAgVGhpcyBhbHNvIHN1cHBvcnRzIHNvbWUgcmVsYXRlZCBkZXZpY2UgZmlybXdhcmUsIGFzIHVzZWQgaW4gc29tZVxcbiA1MDQ6XFx0XFx0ICBQREFzIGZyb20gT2x5bXB1cyBhbmQgc29tZSBjZWxsIHBob25lcyBmcm9tIE1vdG9yb2xhLlxcbiA1MDU6XFx0XFxuIDUwNjpcXHRcXHQgIElmIHlvdSBpbnN0YWxsIGFuIGFsdGVybmF0ZSBpbWFnZSwgc3VjaCBhcyB0aGUgTGludXggMi42IGJhc2VkXFxuIDUwNzpcXHRcXHQgIHZlcnNpb25zIG9mIE9wZW5aYXVydXMsIHlvdSBzaG91bGQgbm8gbG9uZ2VyIG5lZWQgdG8gc3VwcG9ydCB0aGlzXFxuIDUwODpcXHRcXHQgIHByb3RvY29sLiAgT25seSB0aGUgXFxcImV0aC1mZFxcXCIgb3IgXFxcIm5ldF9mZFxcXCIgZHJpdmVycyBpbiB0aGVzZSBkZXZpY2VzXFxuIDUwOTpcXHRcXHQgIHJlYWxseSBuZWVkIHRoaXMgbm9uLWNvbmZvcm1hbnQgdmFyaWFudCBvZiBDREMgRXRoZXJuZXQgKG9yIGluXFxuIDUxMDpcXHRcXHQgIHNvbWUgY2FzZXMgQ0RDIE1ETE0pIHByb3RvY29sLCBub3QgXFxcImdfZXRoZXJcXFwiLlxcbiA1MTE6XFx0XFxuIDUxMjpcXHRjb25maWcgVVNCX05FVF9DWDgyMzEwX0VUSFxcbiA1MTM6XFx0XFx0dHJpc3RhdGUgXFxcIkNvbmV4YW50IENYODIzMTAgVVNCIGV0aGVybmV0IHBvcnRcXFwiXFxuIDUxNDpcXHRcXHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcXG4gNTE1OlxcdFxcdGhlbHBcXG4gNTE2OlxcdFxcdCAgQ2hvb3NlIHRoaXMgb3B0aW9uIGlmIHlvdSdyZSB1c2luZyBhIENvbmV4YW50IENYODIzMTAtYmFzZWQgQURTTFxcbiA1MTc6XFx0XFx0ICByb3V0ZXIgd2l0aCBVU0IgZXRoZXJuZXQgcG9ydC4gVGhpcyBkcml2ZXIgaXMgZm9yIHJvdXRlcnMgb25seSxcXG4gNTE4OlxcdFxcdCAgaXQgd2lsbCBub3Qgd29yayB3aXRoIEFEU0wgbW9kZW1zICh1c2UgY3hhY3J1IGRyaXZlciBpbnN0ZWFkKS5cXG4gNTE5OlxcdFxcbiA1MjA6XFx0Y29uZmlnIFVTQl9ORVRfS0FMTUlBXFxuIDUyMTpcXHRcXHR0cmlzdGF0ZSBcXFwiU2Ftc3VuZyBLYWxtaWEgYmFzZWQgTFRFIFVTQiBtb2RlbVxcXCJcXG4gNTIyOlxcdFxcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxcbiA1MjM6XFx0XFx0aGVscFxcbiA1MjQ6XFx0XFx0ICBDaG9vc2UgdGhpcyBvcHRpb24gaWYgeW91IGhhdmUgYSBTYW1zdW5nIEthbG1pYSBiYXNlZCBVU0IgbW9kZW1cXG4gNTI1OlxcdFxcdCAgYXMgU2Ftc3VuZyBHVC1CMzczMC5cXG4gNTI2OlxcdFxcbiA1Mjc6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcXG4gNTI4OlxcdFxcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGthbG1pYS5cXG4gNTI5OlxcdFxcbiA1MzA6XFx0Y29uZmlnIFVTQl9ORVRfUU1JX1dXQU5cXG4gNTMxOlxcdFxcdHRyaXN0YXRlIFxcXCJRTUkgV1dBTiBkcml2ZXIgZm9yIFF1YWxjb21tIE1TTSBiYXNlZCAzRyBhbmQgTFRFIG1vZGVtc1xcXCJcXG4gNTMyOlxcdFxcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxcbiA1MzM6XFx0XFx0c2VsZWN0IFVTQl9XRE1cXG4gNTM0OlxcdFxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDE6MTY6MzkuMjU4ODUxNTU4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE4NDU3NTg5NDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkludmVzdGlnYXRpbmcgVVNCIE5ldHdvcmsgRHJpdmVyIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBkaWcgaW50byB0aGUgZGVwZW5kZW5jaWVzIG9mIHRoZSBgVVNCX1VTQk5FVGAgY29uZmlndXJhdGlvbiBvcHRpb24gd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvdXNiL0tjb25maWdgIGZpbGUuIFRoaXMgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhpcyBzcGVjaWZpYyBVU0IgbmV0d29ya2luZyBkcml2ZXIgcmVsYXRlcyB0byBvdGhlciBjb21wb25lbnRzIGluIHRoZSBrZXJuZWwuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgb3RoZXIgbW9kdWxlcyBvciBmZWF0dXJlcyAqbXVzdCogYmUgZW5hYmxlZCBvciBhcmUgbG9naWNhbGx5IGxpbmtlZCBmb3IgYFVTQl9VU0JORVRgIHRvIGZ1bmN0aW9uIGNvcnJlY3RseS4gQXJlIHRoZXJlIGFueSBzcGVjaWZpYyBVU0IgY29yZSBmZWF0dXJlcywgbmV0d29ya2luZyBzdWJzeXN0ZW1zLCBvciBldmVuIGhhcmR3YXJlIGRyaXZlcnMgdGhhdCBhcmUgcHJlcmVxdWlzaXRlcz8gSSBuZWVkIHRvIGtub3cgdGhlIGVudGlyZSBkZXBlbmRlbmN5IGNoYWluIHRvIG1ha2UgaW5mb3JtZWQgZGVjaXNpb25zIGFib3V0IG15IGtlcm5lbCBjb25maWd1cmF0aW9uLiBUaGlzIGluZm9ybWF0aW9uIHdpbGwgcHJldmVudCBidWlsZCBlcnJvcnMgb3IgdW5leHBlY3RlZCBiZWhhdmlvdXIgZG93biB0aGUgbGluZS4gSSB3YW50IHRvIGJ1aWxkIGEgc2VjdXJlIGtlcm5lbCFcblxuXG4iLCJJbnB1dFRva2VucyI6ODA5NCwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDE6MTY6NDEuMTA0NjEzODJaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5Mjc1ODM2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBVU0JfVVNCTkVUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3VzYlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC91c2IvS2NvbmZpZz0xMTM9Y29uZmlnIFVTQl9MQU43OFhYXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xMzEtXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MTMyOmNvbmZpZyBVU0JfVVNCTkVUXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTMzLVxcdHRyaXN0YXRlIFxcXCJNdWx0aS1wdXJwb3NlIFVTQiBOZXR3b3JraW5nIEZyYW1ld29ya1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDE6MTY6NDEuMTUzODk3NTY2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjgwMDE1NDEyMTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipOYXZpZ2F0aW5nIHRoZSBVU0IgTmV0d29yayBEcml2ZXIgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGUgYGRyaXZlcnMvbmV0L3VzYi9LY29uZmlnYCBmaWxlLiBJJ20gZm9jdXNpbmcgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDEzMi4gTXkgaW5pdGlhbCBnb2FsIGhlcmUgaXMgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBhIHNwZWNpZmljIFVTQiBuZXR3b3JrIGRyaXZlciDigJMgbGlrZWx5IG9uZSB0aGF0IEknbSB3b3JraW5nIHdpdGggb3IgdHJvdWJsZXNob290aW5nLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gaG93IHRoaXMgcGFydGljdWxhciBkcml2ZXIgaXMgZXhwb3NlZCB0byB0aGUgYnVpbGQgc3lzdGVtLCB3aGF0IHNldHRpbmdzIGluZmx1ZW5jZSBpdHMgaW5jbHVzaW9uLCBhbmQgcGVyaGFwcyBhbHNvIHJldmlldyBhbnkgYnVpbGQtdGltZSBvciBydW4tdGltZSB2YXJpYWJsZXMgdGhhdCBjYW4gYmUgYWZmZWN0ZWQsIGNvbmZpZ3VyZWQsIG9yIGluZmx1ZW5jZWQuIEknbSBob3BpbmcgdG8gcXVpY2tseSBncmFzcCB0aGUgbG9naWNhbCBmbG93IG9mIHRoZSBgS2NvbmZpZ2Agc3RydWN0dXJlLCBsb29raW5nIGZvciBjbHVlcyB0aGF0IG1pZ2h0IHByb3ZpZGUgaW5zaWdodHMgaW50byBidWlsZCBjb25maWd1cmF0aW9ucyBJIG1pZ2h0IGJlIG1pc3NpbmcsIG9yIHBlcmhhcHMgaWRlbnRpZnkgdGhlIHBhcmFtZXRlcnMgdGhhdCBhcmUgcmVsZXZhbnQgdG8gc29sdmUgbXkgcGFydGljdWxhciBwcm9ibGVtLiBUaGUgbGluZSBudW1iZXIgaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LCBhcyBJJ3ZlIHByb2JhYmx5IGdvdCBzb21lIHByaW9yIGNvbnRleHQgYWJvdXQgdGhlIGZpbGUncyBnZW5lcmFsIHN0cnVjdHVyZSwgc28gbGV0J3Mgc2VlIHdoYXQncyB0aGVyZSBhbmQgd2hhdCB0aGlzIHBhcnQgY29udHJvbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg0MDgsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMToxNjo0OS4xNTU0NDEzNzdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTg5NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvdXNiL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMTI1LFxuICBcIkxpbmVDb3VudFwiOiAzNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTI1OlxcdFxcdCAgTEFONzgwMSA6IFVTQiAzIHRvIDEwLzEwMC8xMDAwIEV0aGVybmV0IGFkYXB0ZXIgKE1BQyBvbmx5KVxcbiAxMjY6XFx0XFxuIDEyNzpcXHRcXHQgIFByb3BlciBQSFkgZHJpdmVyIGlzIHJlcXVpcmVkIGZvciBMQU43ODAxLlxcbiAxMjg6XFx0XFxuIDEyOTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbiAxMzA6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgbGFuNzh4eC5cXG4gMTMxOlxcdFxcbiAxMzI6XFx0Y29uZmlnIFVTQl9VU0JORVRcXG4gMTMzOlxcdFxcdHRyaXN0YXRlIFxcXCJNdWx0aS1wdXJwb3NlIFVTQiBOZXR3b3JraW5nIEZyYW1ld29ya1xcXCJcXG4gMTM0OlxcdFxcdHNlbGVjdCBNSUlcXG4gMTM1OlxcdFxcdGhlbHBcXG4gMTM2OlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgc2V2ZXJhbCBraW5kcyBvZiBuZXR3b3JrIGxpbmtzIG92ZXIgVVNCLFxcbiAxMzc6XFx0XFx0ICB3aXRoIFxcXCJtaW5pZHJpdmVyc1xcXCIgYnVpbHQgYXJvdW5kIGEgY29tbW9uIG5ldHdvcmsgZHJpdmVyIGNvcmVcXG4gMTM4OlxcdFxcdCAgdGhhdCBzdXBwb3J0cyBkZWVwIHF1ZXVlcyBmb3IgZWZmaWNpZW50IHRyYW5zZmVycy4gIChUaGlzIGdpdmVzXFxuIDEzOTpcXHRcXHQgIGJldHRlciBwZXJmb3JtYW5jZSB3aXRoIHNtYWxsIHBhY2tldHMgYW5kIGF0IGhpZ2ggc3BlZWRzKS5cXG4gMTQwOlxcdFxcbiAxNDE6XFx0XFx0ICBUaGUgVVNCIGhvc3QgcnVucyBcXFwidXNibmV0XFxcIiwgYW5kIHRoZSBvdGhlciBlbmQgb2YgdGhlIGxpbmsgbWlnaHQgYmU6XFxuIDE0MjpcXHRcXG4gMTQzOlxcdFxcdCAgLSBBbm90aGVyIFVTQiBob3N0LCB3aGVuIHVzaW5nIFVTQiBcXFwibmV0d29ya1xcXCIgb3IgXFxcImRhdGEgdHJhbnNmZXJcXFwiXFxuIDE0NDpcXHRcXHQgICAgY2FibGVzLiAgVGhlc2UgYXJlIG9mdGVuIHVzZWQgdG8gbmV0d29yayBsYXB0b3BzIHRvIFBDcywgbGlrZVxcbiAxNDU6XFx0XFx0ICAgIFxcXCJMYXBsaW5rXFxcIiBwYXJhbGxlbCBjYWJsZXMgb3Igc29tZSBtb3RoZXJib2FyZHMuICBUaGVzZSByZWx5XFxuIDE0NjpcXHRcXHQgICAgb24gc3BlY2lhbGl6ZWQgY2hpcHMgZnJvbSBtYW55IHN1cHBsaWVycy5cXG4gMTQ3OlxcdFxcbiAxNDg6XFx0XFx0ICAtIEFuIGludGVsbGlnZW50IFVTQiBnYWRnZXQsIHBlcmhhcHMgZW1iZWRkaW5nIGEgTGludXggc3lzdGVtLlxcbiAxNDk6XFx0XFx0ICAgIFRoZXNlIGluY2x1ZGUgUERBcyBydW5uaW5nIExpbnV4IChpUGFxLCBZb3B5LCBaYXVydXMsIGFuZFxcbiAxNTA6XFx0XFx0ICAgIG90aGVycyksIGFuZCBkZXZpY2VzIHRoYXQgaW50ZXJvcGVyYXRlIHVzaW5nIHRoZSBzdGFuZGFyZFxcbiAxNTE6XFx0XFx0ICAgIENEQy1FdGhlcm5ldCBzcGVjaWZpY2F0aW9uIChpbmNsdWRpbmcgbWFueSBjYWJsZSBtb2RlbXMpLlxcbiAxNTI6XFx0XFxuIDE1MzpcXHRcXHQgIC0gTmV0d29yayBhZGFwdGVyIGhhcmR3YXJlIChsaWtlIHRob3NlIGZvciAxMC8xMDAgRXRoZXJuZXQpIHdoaWNoXFxuIDE1NDpcXHRcXHQgICAgdXNlcyB0aGlzIGRyaXZlciBmcmFtZXdvcmsuXFxuIDE1NTpcXHRcXG4gMTU2OlxcdFxcdCAgVGhlIGxpbmsgd2lsbCBhcHBlYXIgd2l0aCBhIG5hbWUgbGlrZSBcXFwidXNiMFxcXCIsIHdoZW4gdGhlIGxpbmsgaXNcXG4gMTU3OlxcdFxcdCAgYSB0d28tbm9kZSBsaW5rLCBvciBcXFwiZXRoMFxcXCIgZm9yIG1vc3QgQ0RDLUV0aGVybmV0IGRldmljZXMuICBUaG9zZVxcbiAxNTg6XFx0XFx0ICB0d28tbm9kZSBsaW5rcyBhcmUgbW9zdCBlYXNpbHkgbWFuYWdlZCB3aXRoIEV0aGVybmV0IEJyaWRnaW5nXFxuIDE1OTpcXHRcXHQgIChDT05GSUdfQlJJREdFKSBpbnN0ZWFkIG9mIHJvdXRpbmcuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAxOjE2OjQ5LjE1NTU0MjQ4NloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMjM2MjkyNjMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipJbnZlc3RpZ2F0aW5nIE5ldHdvcmsgRHJpdmVyIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzIGZvciB0aGVzZSBuZXR3b3JrIGRyaXZlcnMsIHNwZWNpZmljYWxseSB0aGUgb25lcyByZWxhdGVkIHRvIFVTQi4gSSdtIHRoaW5raW5nIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGlzIHRvIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmaWxlcy4gSSdsbCBuZWVkIHRvIGNoZWNrIGBkcml2ZXJzL25ldC9LY29uZmlnYCBhbmQsIHNpbmNlIHdlJ3JlIGludGVyZXN0ZWQgaW4gVVNCLCBhbHNvIGBkcml2ZXJzL25ldC91c2IvS2NvbmZpZ2AuIFRoaXMgd2lsbCBhbGxvdyBtZSB0byB0cmFjZSB3aGF0IG9wdGlvbnMgbmVlZCB0byBiZSBlbmFibGVkIGZvciB2YXJpb3VzIG5ldHdvcmsgZHJpdmVyIGZlYXR1cmVzIHRvIGJlY29tZSBhdmFpbGFibGUuIEtub3dpbmcgdGhlIHBhcmVudCBkZXBlbmRlbmNpZXMgaXMgY3JpdGljYWwgZm9yIHRyb3VibGVzaG9vdGluZywgcG9ydGluZywgb3IgZ2VuZXJhbGx5IHVuZGVyc3RhbmRpbmcgaG93IGFsbCB0aGVzZSBwaWVjZXMgZml0IHRvZ2V0aGVyIGluIHRoZSBuZXR3b3JrIHN0YWNrLiBJdCdzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgY29uZGl0aW9uYWwgbG9naWMgdGhhdCBjb250cm9scyB3aGljaCBkcml2ZXJzIGdldCBidWlsdC4gTGV0J3Mgc2VlIHdoYXQgdGhlIEtjb25maWcgZmlsZXMgcmV2ZWFsLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MzExLCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMToxNjo1MS4zOTE4MzgwODlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MzYwMTM3NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic291cmNlLipkcml2ZXJzL25ldC91c2JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVyc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnPTUzMj1zb3VyY2UgXFxcImRyaXZlcnMvczM5MC9uZXQvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnLTUzMy1cXG5kcml2ZXJzL25ldC9LY29uZmlnOjUzNDpzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3VzYi9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWctNTM1LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMToxNjo1My4xMjc4NTgxNDlaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTg5MzA5Mzk1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czpcblxuKipBbmFseXppbmcgdGhlIFVTQiBOZXR3b3JrIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgVVNCIG5ldHdvcmtpbmcgZHJpdmVyIGNvbmZpZ3VyYXRpb24uIE15IGZpcnN0IHN0ZXAgaXMgdG8gemVybyBpbiBvbiB0aGUgYEtjb25maWdgIG1lbnUsIHNwZWNpZmljYWxseSB0aGUgb25lIGxvY2F0ZWQgdW5kZXIgYGRyaXZlcnMvbmV0L3VzYi9gLiBJIGtub3cgdGhhdCdzIHdoZXJlIHRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZXNpZGUgZm9yIHRoaXMgcGFydCBvZiB0aGUga2VybmVsLiBJJ20gZ29pbmcgdG8gc2NhbiB0aGUgdmVyeSB0b3Agb2YgdGhhdCBmaWxlLCBmb2N1c2luZyBvbiB0aGUgY29uZGl0aW9uYWwgbGluZXMgKHVzaW5nIGBpZmApLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW5pdGlhbCBjb25kaXRpb25zIG9yIGRlcGVuZGVuY2llcyB0aGF0IGRpY3RhdGUgd2hldGhlciB0aGUgcmVzdCBvZiB0aGUgb3B0aW9ucyBpbiB0aGF0IG1lbnUgYXJlIGV2ZW4gKnZpc2libGUqIG9yIHNlbGVjdGFibGUuIFRoaXMgZmlyc3QgYGlmYCBzdGF0ZW1lbnQgb2Z0ZW4gc2V0cyB0aGUgc3RhZ2UgZm9yIHRoZSBlbnRpcmUgVVNCIG5ldHdvcmtpbmcgY29uZmlndXJhdGlvbiBicmFuY2gsIHNvIGl0J3MgYSBjcml0aWNhbCBzdGFydGluZyBwb2ludC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTYxNiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAxOjE2OjU1LjAyMDk1NjE1N1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzcwNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvdXNiL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgVVNCIE5ldHdvcmsgZGV2aWNlcyBjb25maWd1cmF0aW9uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRjb21tZW50IFxcXCJIb3N0LXNpZGUgVVNCIHN1cHBvcnQgaXMgbmVlZGVkIGZvciBVU0IgTmV0d29yayBBZGFwdGVyIHN1cHBvcnRcXFwiXFxuICAgNjpcXHRcXHRkZXBlbmRzIG9uICFVU0IgXFx1MDAyNlxcdTAwMjYgTkVUXFxuICAgNzpcXHRcXG4gICA4OlxcdG1lbnVjb25maWcgVVNCX05FVF9EUklWRVJTXFxuICAgOTpcXHRcXHR0cmlzdGF0ZSBcXFwiVVNCIE5ldHdvcmsgQWRhcHRlcnNcXFwiXFxuICAxMDpcXHRcXHRkZWZhdWx0IFVTQiBpZiBVU0JcXG4gIDExOlxcdFxcdGRlcGVuZHMgb24gVVNCIFxcdTAwMjZcXHUwMDI2IE5FVFxcbiAgMTI6XFx0XFxuICAxMzpcXHRpZiBVU0JfTkVUX0RSSVZFUlNcXG4gIDE0OlxcdFxcbiAgMTU6XFx0Y29uZmlnIFVTQl9DQVRDXFxuICAxNjpcXHRcXHR0cmlzdGF0ZSBcXFwiVVNCIENBVEMgTmV0TWF0ZS1iYXNlZCBFdGhlcm5ldCBkZXZpY2Ugc3VwcG9ydFxcXCJcXG4gIDE3OlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAgMTg6XFx0XFx0aGVscFxcbiAgMTk6XFx0XFx0ICBTYXkgWSBpZiB5b3Ugd2FudCB0byB1c2Ugb25lIG9mIHRoZSBmb2xsb3dpbmcgMTBNYnBzIFVTQiBFdGhlcm5ldFxcbiAgMjA6XFx0XFx0ICBkZXZpY2UgYmFzZWQgb24gdGhlIEVMMTIxMEEgY2hpcC4gU3VwcG9ydGVkIGRldmljZXMgYXJlOlxcbiAgMjE6XFx0XFx0ICBCZWxraW4gRjVVMDExXFxuICAyMjpcXHRcXHQgIEJlbGtpbiBGNVUxMTFcXG4gIDIzOlxcdFxcdCAgQ0FUQyBOZXRNYXRlXFxuICAyNDpcXHRcXHQgIENBVEMgTmV0TWF0ZSBJSVxcbiAgMjU6XFx0XFx0ICBzbWFydEJyaWRnZXMgc21hcnROSUNcXG4gIDI2OlxcdFxcbiAgMjc6XFx0XFx0ICBUaGlzIGRyaXZlciBtYWtlcyB0aGUgYWRhcHRlciBhcHBlYXIgYXMgYSBub3JtYWwgRXRoZXJuZXQgaW50ZXJmYWNlLFxcbiAgMjg6XFx0XFx0ICB0eXBpY2FsbHkgb24gZXRoMCwgaWYgaXQgaXMgdGhlIG9ubHkgZXRoZXJuZXQgZGV2aWNlLCBvciBwZXJoYXBzIG9uXFxuICAyOTpcXHRcXHQgIGV0aDEsIGlmIHlvdSBoYXZlIGEgUENJIG9yIElTQSBldGhlcm5ldCBjYXJkIGluc3RhbGxlZC5cXG4gIDMwOlxcdFxcbiAgMzE6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcXG4gIDMyOlxcdFxcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGNhdGMuXFxuICAzMzpcXHRcXG4gIDM0OlxcdGNvbmZpZyBVU0JfS0FXRVRIXFxuICAzNTpcXHRcXHR0cmlzdGF0ZSBcXFwiVVNCIEtMU0kgS0w1VVNCMTAxLWJhc2VkIGV0aGVybmV0IGRldmljZSBzdXBwb3J0XFxcIlxcbiAgMzY6XFx0XFx0aGVscFxcbiAgMzc6XFx0XFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSBvbmUgb2YgdGhlIGZvbGxvd2luZyAxME1icHMgb25seVxcbiAgMzg6XFx0XFx0ICBVU0IgRXRoZXJuZXQgYWRhcHRlcnMgYmFzZWQgb24gdGhlIEtMU0kgS0w1S1VTQjEwMUIgY2hpcHNldDpcXG4gIDM5OlxcdFxcdCAgM0NvbSAzQzE5MjUwXFxuICA0MDpcXHRcXHQgIEFEUyBVU0ItMTBCVFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMToxNjo1NS4wMjEwOTY2MDdaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzA2ODkyMjgyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoJ3MgSW1wYWN0IGFuZCBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIHBhdGNoIGFuZCBmaWd1cmUgb3V0IGlmIGl0J3MgZXZlbiB3b3J0aCBjb25zaWRlcmluZyBmb3IgZnV6emluZy4gU3BlY2lmaWNhbGx5LCBJJ20gZm9jdXNpbmcgb24gYGN4ODIzMTBfcnhfZml4dXBgLiBMb29raW5nIGF0IHRoZSBjb2RlLCBpdCBzZWVtcyB0aGUgY2hhbmdlIGFkZHJlc3NlcyBhIHNwZWNpZmljIGNvbmRpdGlvbjogYGxlbiA9PSAweGZmZmZgLlxuXG5CZWZvcmUgdGhlIHBhdGNoLCBpZiBgbGVuYCB3YXMgZXF1YWwgdG8gMHhmZmZmLCB0aGUgY29kZSB3b3VsZCBwcmludCBhIFwicm91dGVyIHdhcyByZWJvb3RlZFwiIG1lc3NhZ2UsIHNjaGVkdWxlIHNvbWUgd29yaywgYW5kIHRoZW4uLi4gKmZhbGwgdGhyb3VnaCogdG8gdGhlIGluY29tcGxldGUgcGFja2V0IGhhbmRsaW5nIGxvZ2ljLiBUaGF0J3MgYSBiaXQgb2RkLiBUaGUgZm9sbG93aW5nIGNvZGUgZGVhbHMgd2l0aCB3aGF0IGFwcGVhcnMgdG8gYmUgaW5jb21wbGV0ZSBwYWNrZXRzIGFuZCBhdHRlbXB0cyB0byBzYXZlIHRoZW0gZm9yIHJlYXNzZW1ibHkgbGF0ZXIuXG5cblRoZW4gaXQgaGl0cyBtZTogYGxlbiA9IDB4ZmZmZmAgd2hpY2ggaXMgNjU1MzUsIGEgc3VycHJpc2luZ2x5IGxhcmdlIHZhbHVlISBOb3cgdGhlIHF1ZXN0aW9uIHRoYXQgYXJpc2VzOiBXaGF0J3MgdGhlIHNpemUgYW5kIHR5cGUgb2YgYGRldi1cdTAwM2VwYXJ0aWFsX2RhdGFgPyBJcyBpdCBhIGZpeGVkIGJ1ZmZlciwgb3IgaXMgaXQgcGFydCBvZiBhbiBgc2tiYCBidWZmZXIgd2l0aGluIHRoZSBgdXNibmV0YCBzdHJ1Y3R1cmU/IFRoYXQncyB0aGUgY3JpdGljYWwgcGllY2UgaGVyZSwgd2hldGhlciBpdCdzIHN0YXRpY2FsbHkgYWxsb2NhdGVkIG9yIGR5bmFtaWNhbGx5IG1hbmFnZWQuXG5cbkkgbmVlZCB0byB0cmFjZSBiYWNrIHdoZXJlIGBkZXYtXHUwMDNlcGFydGlhbF9kYXRhYCBpcyBkZWZpbmVkIGFuZCBob3cgaXRzIHNpemUgaXMgZGV0ZXJtaW5lZC4gRWl0aGVyIGluIGBjeDgyMzEwX2JpbmRgIG9yIHRoZSBwYXJlbnQgYHVzYm5ldGAgc3RydWN0dXJlLiBUaGlzIGNvdWxkIGJlIGludGVyZXN0aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDM5NywiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwNiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAxOjE2OjU4LjA5MDAyMjM5N1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg4MzA2MTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGFydGlhbF9kYXRhXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3VzYlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYz0xMzA9c3RhdGljIHZvaWQgY3g4MjMxMF9yZWVuYWJsZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTEzOC0jZGVmaW5lIHBhcnRpYWxfcmVtXFx0ZGF0YVsxXVxcdFxcdC8qIHJlbWFpbmluZyAobWlzc2luZykgZGF0YSBsZW5ndGggKi9cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzoxMzk6I2RlZmluZSBwYXJ0aWFsX2RhdGFcXHRkYXRhWzJdXFx0XFx0LyogcGFydGlhbCBwYWNrZXQgZGF0YSAqL1xcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTE0MC1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYz0xNDE9c3RhdGljIGludCBjeDgyMzEwX2JpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTE3MS1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzoxNzI6XFx0ZGV2LVxcdTAwM2VwYXJ0aWFsX2RhdGEgPSAodW5zaWduZWQgbG9uZykga21hbGxvYyhkZXYtXFx1MDAzZWhhcmRfbXR1LCBHRlBfS0VSTkVMKTtcXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzoxNzM6XFx0aWYgKCFkZXYtXFx1MDAzZXBhcnRpYWxfZGF0YSlcXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0xNzQtXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0yMjEtZXJyX3BhcnRpYWw6XFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MjIyOlxcdGtmcmVlKCh2b2lkICopZGV2LVxcdTAwM2VwYXJ0aWFsX2RhdGEpO1xcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTIyMy1cXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM9MjI2PXN0YXRpYyB2b2lkIGN4ODIzMTBfdW5iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0yMjktXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MjMwOlxcdGtmcmVlKCh2b2lkICopZGV2LVxcdTAwM2VwYXJ0aWFsX2RhdGEpO1xcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTIzMS1cXHRjYW5jZWxfd29ya19zeW5jKFxcdTAwMjZwcml2LVxcdTAwM2VyZWVuYWJsZV93b3JrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jPTI0Mz1zdGF0aWMgaW50IGN4ODIzMTBfcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMjU4LVxcdFxcdHNrYl9wdXQoc2tiMiwgbGVuKTtcXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzoyNTk6XFx0XFx0bWVtY3B5KHNrYjItXFx1MDAzZWRhdGEsICh2b2lkICopZGV2LVxcdTAwM2VwYXJ0aWFsX2RhdGEsXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMjYwLVxcdFxcdCAgICAgICBkZXYtXFx1MDAzZXBhcnRpYWxfbGVuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTI5NC1cXHRcXHRcXHRkZXYtXFx1MDAzZXBhcnRpYWxfcmVtID0gbGVuIC0gc2tiLVxcdTAwM2VsZW47XFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6Mjk1OlxcdFxcdFxcdG1lbWNweSgodm9pZCAqKWRldi1cXHUwMDNlcGFydGlhbF9kYXRhLCBza2ItXFx1MDAzZWRhdGEsXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMjk2LVxcdFxcdFxcdCAgICAgICBkZXYtXFx1MDAzZXBhcnRpYWxfbGVuKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDE6MTY6NTguMTM4ODYxMTQ0WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjc0Mjk0Njc1MzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBXb3J0aCBvZiBGdXp6aW5nIGBjeDgyMzEwX3J4X2ZpeHVwYCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBvYnNlcnZhdGlvbiBpcyBmb2N1c2VkIG9uIGBjeDgyMzEwX3J4X2ZpeHVwYC4gU3BlY2lmaWNhbGx5LCB0aGUgY2FzZSB3aGVyZSB0aGUgbGVuZ3RoIGBsZW5gIGVxdWFscyBgMHhmZmZmYC4gSXQncyBjbGVhciB0aGVyZSdzIGEgcG90ZW50aWFsIG92ZXJmbG93IGNvbmRpdGlvbiBoZXJlLCBzdGVtbWluZyBmcm9tIGhvdyB0aGUgY29kZSBoYW5kbGVzIHBhcnRpYWwgcGFja2V0cyB3aGVuIGBsZW5gIGhpdHMgdGhpcyBtYXhpbXVtIHZhbHVlLiBQcmV2aW91c2x5LCB0aGUgbG9naWMgZmxvd2VkIGludG8gYSBwcm9ibGVtYXRpYyBgaWYgKGxlbiBcdTAwM2Ugc2tiLVx1MDAzZWxlbilgIGNvbmRpdGlvbiB3aGljaCBzZXRzIGBkZXYtXHUwMDNlcGFydGlhbF9yZW0gPSAweGZmZmYgLSBza2ItXHUwMDNlbGVuO2AuIFRoaXMsIGNvdXBsZWQgd2l0aCBob3cgdGhlIG5leHQgcGFja2V0J3MgbGVuZ3RoIGlzIGNhbGN1bGF0ZWQsIGNvdWxkIGxlYWQgdG8gYWxsb2NhdGluZyBhIG1hc3NpdmUgU0tCIGJ1ZmZlciwgb3IgZXZlbiBhbiBvdmVyZmxvdy4gVGhlIGZpeCwgcmV0dXJuaW5nIDAsIGluZGljYXRlcyBhIFJYIGZhaWx1cmUvcGFja2V0IGRyb3AuXG5cbk5vdywgSSBuZWVkIHRvIGV2YWx1YXRlIGlmIGZ1enppbmcgdGhpcyBpcyB3b3J0aHdoaWxlLiBMZXQncyBzZWUgaWYgaXQgaGl0cyBteSBjcml0ZXJpYS5cblxuRmlyc3QsICpyZWFjaGFiaWxpdHkqLiBDYW4gYGN4ODIzMTBgIGJlIHRyaWdnZXJlZCBpbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIHdpdGggc3l6a2FsbGVyPyBZZXMsIGFic29sdXRlbHkuIFVTQiBkcml2ZXJzIGFyZSBlbXVsYXRhYmxlIHZpYSBVU0IgUmF3IEdhZGdldCwgc3l6a2FsbGVyIFVTQiBmdXp6aW5nLCBhbmQgdG9vbHMgbGlrZSBkdW1teV9oY2QuIFN5emthbGxlciByZWd1bGFybHkgdGFja2xlcyBVU0IgZGV2aWNlIGRyaXZlcnMsIGluY2x1ZGluZyB0aGUgYHVzYm5ldGAgbWluaWRyaXZlcnMuIFRoaXMgaXMgcHJvbWlzaW5nLlxuXG5OZXh0LCBkb2VzIHRoaXMgcGF0Y2ggKm1vZGlmeSBjb3JlIGtlcm5lbCBsb2dpYyogb3Igc2lnbmlmaWNhbnQgZHJpdmVycy9hcmNoaXRlY3R1cmVzPyBJdCBkaXJlY3RseSBhbHRlcnMgdGhlIGNvbnRyb2wgZmxvdyB3aXRoaW4gYGN4ODIzMTBfcnhfZml4dXBgLCBzcGVjaWZpY2FsbHkgdGhlIFJYIHBhY2tldCBoYW5kbGluZyB3aGVuIGBsZW4gPT0gMHhmZmZmYC4gVGhpcyBpcyBhIHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgY2hhbmdlLlxuXG5GaW5hbGx5LCBkb2VzIGl0IGZhbGwgaW50byB0aGUgKmV4Y2x1c2lvbnMqIGZvciBmdXp6aW5nPyBMZXQncyBjaGVjayBhZ2FpbnN0IHRoZSBydWxlcy4gVGhpcyBpc24ndCBqdXN0IGRvY3VtZW50YXRpb24gb3IgbG9nZ2luZywgaXNuJ3QgYSBzaW1wbGUgY29uc3RhbnQgY2hhbmdlLCBpcyByZWFjaGFibGUgdmlhIHZpcnR1YWxpemF0aW9uLCBhbmQgaXNuJ3QgYSB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrLiBJbiBmYWN0LCBpdCBjaGFuZ2VzIGFuIFJYIHBhdGggd2l0aGluIGEgVVNCIG5ldHdvcmsgZHJpdmVyIChgY3g4MjMxMF9ldGhgKSwgbW9kaWZ5aW5nIGl0cyBleGVjdXRpb24gcGF0aC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLlxuXG5UaGVyZWZvcmUsIGdpdmVuIHRoZSBzZXZlcml0eSBvZiB0aGUgcG90ZW50aWFsIG92ZXJmbG93IGFuZCBpdHMgcmVhY2hhYmlsaXR5LCBgV29ydGhGdXp6aW5nID0gdHJ1ZWAuXG5cbk5leHQsIEkgbmVlZCB0byBpZGVudGlmeSB0aGUgKkZvY3VzU3ltYm9scyouIFRoZSBjcml0aWNhbCBvbmVzIGFyZSB3aXRoaW4gYGN4ODIzMTBfcnhfZml4dXBgIGFuZCBpdHMgY2FsbGVycy4gVGhlIGtleSBpcyBub3cgdG8gcGlucG9pbnQgZXhhY3RseSBob3cgYGN4ODIzMTBfcnhfZml4dXBgIGlzIGludm9rZWQgZnJvbSBgdXNibmV0YC4gSSBuZWVkIHRvIGRldGVybWluZSBpZiBgY3g4MjMxMF9yeF9maXh1cGAgb3IgaXRzIGNhbGxlciBmdW5jdGlvbnMgd2l0aGluIGB1c2JuZXRgIG9yIGBjeDgyMzEwYCBhcmUgZXhwb3J0ZWQvbm9uLXN0YXRpYy9zdGF0aWMsIHRvIGZpZ3VyZSBvdXQgdGhlIHJpZ2h0IHN5bWJvbHMuIEEgcXVpY2sgYGdyZXBgIGZvciBcInJ4X2ZpeHVwXCIgd2l0aGluIGBkcml2ZXJzL25ldC91c2IvdXNibmV0LmNgIHNob3VsZCBkbyB0aGUgdHJpY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExOTU1LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjY4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAxOjE3OjA1LjU2ODMzMTUyN1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTAwODk1MTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnhfZml4dXBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdXNiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNjU4IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM9MTA1Nz1zdGF0aWMgdm9pZCBhcWMxMTFfcnhfY2hlY2tzdW0oc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTY0IHBrdF9kZXNjKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTEwNzEtXFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jOjEwNzI6c3RhdGljIGludCBhcWMxMTFfcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0xMDczLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYz0xMjQyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gYXFjMTExX2luZm8gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmMtMTI1MS1cXHRcXHRcXHQgIEZMQUdfQVZPSURfVU5MSU5LX1VSQlMgfCBGTEFHX01VTFRJX1BBQ0tFVCxcXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM6MTI1MjpcXHQucnhfZml4dXBcXHQ9IGFxYzExMV9yeF9maXh1cCxcXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmMtMTI1My1cXHQudHhfZml4dXBcXHQ9IGFxYzExMV90eF9maXh1cCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYz0xMjU5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gYXNpeDExMV9pbmZvID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTEyNjgtXFx0XFx0XFx0ICBGTEFHX0FWT0lEX1VOTElOS19VUkJTIHwgRkxBR19NVUxUSV9QQUNLRVQsXFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jOjEyNjk6XFx0LnJ4X2ZpeHVwXFx0PSBhcWMxMTFfcnhfZml4dXAsXFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTEyNzAtXFx0LnR4X2ZpeHVwXFx0PSBhcWMxMTFfdHhfZml4dXAsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM9MTI3OD1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIGFzaXgxMTJfaW5mbyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0xMjg3LVxcdFxcdFxcdCAgRkxBR19BVk9JRF9VTkxJTktfVVJCUyB8IEZMQUdfTVVMVElfUEFDS0VULFxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzoxMjg4OlxcdC5yeF9maXh1cFxcdD0gYXFjMTExX3J4X2ZpeHVwLFxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0xMjg5LVxcdC50eF9maXh1cFxcdD0gYXFjMTExX3R4X2ZpeHVwLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jPTEyOTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mbyB0cmVuZG5ldF9pbmZvID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTEzMDMtXFx0XFx0XFx0ICBGTEFHX0FWT0lEX1VOTElOS19VUkJTIHwgRkxBR19NVUxUSV9QQUNLRVQsXFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jOjEzMDQ6XFx0LnJ4X2ZpeHVwXFx0PSBhcWMxMTFfcnhfZml4dXAsXFxuZHJpdmVycy9uZXQvdXNiL2FxYzExMS5jLTEzMDUtXFx0LnR4X2ZpeHVwXFx0PSBhcWMxMTFfdHhfZml4dXAsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXFjMTExLmM9MTMwOD1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIHFuYXBfaW5mbyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0xMzE3LVxcdFxcdFxcdCAgRkxBR19BVk9JRF9VTkxJTktfVVJCUyB8IEZMQUdfTVVMVElfUEFDS0VULFxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYzoxMzE4OlxcdC5yeF9maXh1cFxcdD0gYXFjMTExX3J4X2ZpeHVwLFxcbmRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYy0xMzE5LVxcdC50eF9maXh1cFxcdD0gYXFjMTExX3R4X2ZpeHVwLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXguaD0xNjM9c3RydWN0IGFzaXhfZGF0YSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oLTE3MC1cXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oOjE3MTpzdHJ1Y3QgYXNpeF9yeF9maXh1cF9pbmZvIHtcXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oLTE3Mi1cXHRzdHJ1Y3Qgc2tfYnVmZiAqYXhfc2tiO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXguaD0xNzg9c3RydWN0IGFzaXhfY29tbW9uX3ByaXZhdGUge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXguaC0xODMtXFx0dTE2IHByZXN2ZF9waHlfYm1jcjtcXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oOjE4NDpcXHRzdHJ1Y3QgYXNpeF9yeF9maXh1cF9pbmZvIHJ4X2ZpeHVwX2luZm87XFxuZHJpdmVycy9uZXQvdXNiL2FzaXguaC0xODUtXFx0c3RydWN0IG1paV9idXMgKm1kaW87XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oPTIwNj12b2lkIGFzaXhfd3JpdGVfY21kX2FzeW5jKHN0cnVjdCB1c2JuZXQgKmRldiwgdTggY21kLCB1MTYgdmFsdWUsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oLTIwOC1cXG5kcml2ZXJzL25ldC91c2IvYXNpeC5oOjIwOTppbnQgYXNpeF9yeF9maXh1cF9pbnRlcm5hbChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXguaDoyMTA6XFx0XFx0XFx0ICAgc3RydWN0IGFzaXhfcnhfZml4dXBfaW5mbyAqcngpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4Lmg6MjExOmludCBhc2l4X3J4X2ZpeHVwX2NvbW1vbihzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4Lmg6MjEyOnZvaWQgYXNpeF9yeF9maXh1cF9jb21tb25fZnJlZShzdHJ1Y3QgYXNpeF9jb21tb25fcHJpdmF0ZSAqZHApO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4LmgtMjEzLVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM9OTI9c3RhdGljIGludCBhc2l4X2NoZWNrX2hvc3RfZW5hYmxlKHN0cnVjdCB1c2JuZXQgKmRldiwgaW50IGluX3BtKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtMTE0LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjExNTpzdGF0aWMgdm9pZCByZXNldF9hc2l4X3J4X2ZpeHVwX2luZm8oc3RydWN0IGFzaXhfcnhfZml4dXBfaW5mbyAqcngpXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtMTE2LXtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy0xMTctXFx0LyogUmVzZXQgdGhlIHZhcmlhYmxlcyB0aGF0IGhhdmUgYSBsaWZldGltZSBvdXRzaWRlIG9mXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6MTE4OlxcdCAqIGFzaXhfcnhfZml4dXBfaW50ZXJuYWwoKSBzbyB0aGF0IGZ1dHVyZSBwcm9jZXNzaW5nIHN0YXJ0cyBmcm9tIGFcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy0xMTktXFx0ICoga25vd24gc2V0IG9mIGluaXRpYWwgY29uZGl0aW9ucy5cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTEzNS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzoxMzY6aW50IGFzaXhfcnhfZml4dXBfaW50ZXJuYWwoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjEzNzpcXHRcXHRcXHQgICBzdHJ1Y3QgYXNpeF9yeF9maXh1cF9pbmZvICpyeClcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy0xMzgte1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtMTU3LVxcdFxcdGlmIChzaXplICE9ICgofnJ4LVxcdTAwM2VoZWFkZXIgXFx1MDAzZVxcdTAwM2UgMTYpIFxcdTAwMjYgMHg3ZmYpKSB7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6MTU4OlxcdFxcdFxcdG5ldGRldl9lcnIoZGV2LVxcdTAwM2VuZXQsIFxcXCJhc2l4X3J4X2ZpeHVwKCkgRGF0YSBIZWFkZXIgc3luY2hyb25pc2F0aW9uIHdhcyBsb3N0LCByZW1haW5pbmcgJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtMTU5LVxcdFxcdFxcdFxcdCAgIHJ4LVxcdTAwM2VyZW1haW5pbmcpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjE2MDpcXHRcXHRcXHRyZXNldF9hc2l4X3J4X2ZpeHVwX2luZm8ocngpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTE2MS1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy0xODktXFx0XFx0XFx0aWYgKHNpemUgIT0gKCh+cngtXFx1MDAzZWhlYWRlciBcXHUwMDNlXFx1MDAzZSAxNikgXFx1MDAyNiAweDdmZikpIHtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzoxOTA6XFx0XFx0XFx0XFx0bmV0ZGV2X2VycihkZXYtXFx1MDAzZW5ldCwgXFxcImFzaXhfcnhfZml4dXAoKSBCYWQgSGVhZGVyIExlbmd0aCAweCV4LCBvZmZzZXQgJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtMTkxLVxcdFxcdFxcdFxcdFxcdCAgIHJ4LVxcdTAwM2VoZWFkZXIsIG9mZnNldCk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6MTkyOlxcdFxcdFxcdFxcdHJlc2V0X2FzaXhfcnhfZml4dXBfaW5mbyhyeCk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtMTkzLVxcdFxcdFxcdFxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtMTk1LVxcdFxcdFxcdGlmIChzaXplIFxcdTAwM2UgZGV2LVxcdTAwM2VuZXQtXFx1MDAzZW10dSArIEVUSF9ITEVOICsgVkxBTl9ITEVOKSB7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6MTk2OlxcdFxcdFxcdFxcdG5ldGRldl9kYmcoZGV2LVxcdTAwM2VuZXQsIFxcXCJhc2l4X3J4X2ZpeHVwKCkgQmFkIFJYIExlbmd0aCAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy0xOTctXFx0XFx0XFx0XFx0XFx0ICAgc2l6ZSk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6MTk4OlxcdFxcdFxcdFxcdHJlc2V0X2FzaXhfcnhfZml4dXBfaW5mbyhyeCk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtMTk5LVxcdFxcdFxcdFxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtMjMyLVxcdGlmIChza2ItXFx1MDAzZWxlbiAhPSBvZmZzZXQpIHtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzoyMzM6XFx0XFx0bmV0ZGV2X2VycihkZXYtXFx1MDAzZW5ldCwgXFxcImFzaXhfcnhfZml4dXAoKSBCYWQgU0tCIExlbmd0aCAlZCwgJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtMjM0LVxcdFxcdFxcdCAgIHNrYi1cXHUwMDNlbGVuLCBvZmZzZXQpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjIzNTpcXHRcXHRyZXNldF9hc2l4X3J4X2ZpeHVwX2luZm8ocngpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTIzNi1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTI0MS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzoyNDI6aW50IGFzaXhfcnhfZml4dXBfY29tbW9uKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy0yNDMte1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTI0NC1cXHRzdHJ1Y3QgYXNpeF9jb21tb25fcHJpdmF0ZSAqZHAgPSBkZXYtXFx1MDAzZWRyaXZlcl9wcml2O1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjI0NTpcXHRzdHJ1Y3QgYXNpeF9yeF9maXh1cF9pbmZvICpyeCA9IFxcdTAwMjZkcC1cXHUwMDNlcnhfZml4dXBfaW5mbztcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy0yNDYtXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6MjQ3OlxcdHJldHVybiBhc2l4X3J4X2ZpeHVwX2ludGVybmFsKGRldiwgc2tiLCByeCk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtMjQ4LX1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy0yNDktXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6MjUwOnZvaWQgYXNpeF9yeF9maXh1cF9jb21tb25fZnJlZShzdHJ1Y3QgYXNpeF9jb21tb25fcHJpdmF0ZSAqZHApXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtMjUxLXtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzoyNTI6XFx0c3RydWN0IGFzaXhfcnhfZml4dXBfaW5mbyAqcng7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtMjUzLVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtMjU2LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjI1NzpcXHRyeCA9IFxcdTAwMjZkcC1cXHUwMDNlcnhfZml4dXBfaW5mbztcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy0yNTgtXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9OTU1PXN0YXRpYyB2b2lkIGF4ODg3NzJfdW5iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTYzLVxcdGF4ODg3NzJfbWRpb191bnJlZ2lzdGVyKHByaXYpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo5NjQ6XFx0YXNpeF9yeF9maXh1cF9jb21tb25fZnJlZShkZXYtXFx1MDAzZWRyaXZlcl9wcml2KTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTY1LVxcdC8qIERyb3AgdGhlIFBNIHVzYWdlIHJlZiB0YWtlbiBpbiBiaW5kKCkgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz05Njk9c3RhdGljIHZvaWQgYXg4ODE3OF91bmJpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTcwLXtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTcxOlxcdGFzaXhfcnhfZml4dXBfY29tbW9uX2ZyZWUoZGV2LVxcdTAwM2Vkcml2ZXJfcHJpdik7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTk3Mi1cXHRrZnJlZShkZXYtXFx1MDAzZWRyaXZlcl9wcml2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0xMzY2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gYXg4ODc3Ml9pbmZvID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEzNzItXFx0LmZsYWdzID0gRkxBR19FVEhFUiB8IEZMQUdfRlJBTUlOR19BWCB8IEZMQUdfTVVMVElfUEFDS0VULFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMzczOlxcdC5yeF9maXh1cCA9IGFzaXhfcnhfZml4dXBfY29tbW9uLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMzc0LVxcdC50eF9maXh1cCA9IGFzaXhfdHhfZml4dXAsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MTM3Nz1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIGF4ODg3NzJiX2luZm8gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTM4My1cXHQuZmxhZ3MgPSBGTEFHX0VUSEVSIHwgRkxBR19GUkFNSU5HX0FYIHwgRkxBR19NVUxUSV9QQUNLRVQsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEzODQ6XFx0LnJ4X2ZpeHVwID0gYXNpeF9yeF9maXh1cF9jb21tb24sXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEzODUtXFx0LnR4X2ZpeHVwID0gYXNpeF90eF9maXh1cCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0xMzg5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gbHhhdXNiX3QxbF9pbmZvID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEzOTUtXFx0LmZsYWdzID0gRkxBR19FVEhFUiB8IEZMQUdfRlJBTUlOR19BWCB8IEZMQUdfTVVMVElfUEFDS0VULFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMzk2OlxcdC5yeF9maXh1cCA9IGFzaXhfcnhfZml4dXBfY29tbW9uLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMzk3LVxcdC50eF9maXh1cCA9IGFzaXhfdHhfZml4dXAsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MTQwMT1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIGF4ODgxNzhfaW5mbyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xNDA5LVxcdFxcdCBGTEFHX01VTFRJX1BBQ0tFVCxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTQxMDpcXHQucnhfZml4dXAgPSBhc2l4X3J4X2ZpeHVwX2NvbW1vbixcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTQxMS1cXHQudHhfZml4dXAgPSBhc2l4X3R4X2ZpeHVwLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTE0MjM9c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mbyBoZzIwZjlfaW5mbyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xNDI4LVxcdC5mbGFncyA9IEZMQUdfRVRIRVIgfCBGTEFHX0ZSQU1JTkdfQVggfCBGTEFHX01VTFRJX1BBQ0tFVCxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTQyOTpcXHQucnhfZml4dXAgPSBhc2l4X3J4X2ZpeHVwX2NvbW1vbixcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTQzMC1cXHQudHhfZml4dXAgPSBhc2l4X3R4X2ZpeHVwLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTE0MzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mbyBseWNvbnN5c19maWJlcmdlY2tvMTAwX2luZm8gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTQ0MS1cXHRcXHQgRkxBR19NVUxUSV9QQUNLRVQsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjE0NDI6XFx0LnJ4X2ZpeHVwID0gYXNpeF9yeF9maXh1cF9jb21tb24sXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTE0NDMtXFx0LnR4X2ZpeHVwID0gYXNpeF90eF9maXh1cCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jPTE4PXN0cnVjdCBheDg4MTcyYV9wcml2YXRlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jLTI0LVxcdGludCB1c2VfZW1iZHBoeTtcXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYzoyNTpcXHRzdHJ1Y3QgYXNpeF9yeF9maXh1cF9pbmZvIHJ4X2ZpeHVwX2luZm87XFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtMjYtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jPTI2MT1zdGF0aWMgaW50IGF4ODgxNzJhX3Jlc2V0KHN0cnVjdCB1c2JuZXQgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jLTMzOC1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYzozMzk6c3RhdGljIGludCBheDg4MTcyYV9yeF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtMzQwLXtcXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy0zNDEtXFx0c3RydWN0IGF4ODgxNzJhX3ByaXZhdGUgKmRwID0gZGV2LVxcdTAwM2Vkcml2ZXJfcHJpdjtcXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYzozNDI6XFx0c3RydWN0IGFzaXhfcnhfZml4dXBfaW5mbyAqcnggPSBcXHUwMDI2ZHAtXFx1MDAzZXJ4X2ZpeHVwX2luZm87XFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtMzQzLVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jOjM0NDpcXHRyZXR1cm4gYXNpeF9yeF9maXh1cF9pbnRlcm5hbChkZXYsIHNrYiwgcngpO1xcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jLTM0NS19XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYz0zNDc9Y29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIGF4ODgxNzJhX2luZm8gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy0zNTUtXFx0XFx0IEZMQUdfTVVMVElfUEFDS0VULFxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jOjM1NjpcXHQucnhfZml4dXAgPSBheDg4MTcyYV9yeF9maXh1cCxcXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy0zNTctXFx0LnR4X2ZpeHVwID0gYXNpeF90eF9maXh1cCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYz0xMzQyPWF4ODgxNzlfcnhfY2hlY2tzdW0oc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyICpwa3RfaGRyKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jLTEzNTYtXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jOjEzNTc6c3RhdGljIGludCBheDg4MTc5X3J4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMtMTM1OC17XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmM9MTcxMj1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIGF4ODgxNzlfaW5mbyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYy0xNzIwLVxcdC5mbGFncyA9IEZMQUdfRVRIRVIgfCBGTEFHX0ZSQU1JTkdfQVgsXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jOjE3MjE6XFx0LnJ4X2ZpeHVwID0gYXg4ODE3OV9yeF9maXh1cCxcXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMtMTcyMi1cXHQudHhfZml4dXAgPSBheDg4MTc5X3R4X2ZpeHVwLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jPTE3MjU9c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mbyBheDg4MTc4YV9pbmZvID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jLTE3MzMtXFx0LmZsYWdzID0gRkxBR19FVEhFUiB8IEZMQUdfRlJBTUlOR19BWCxcXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmM6MTczNDpcXHQucnhfZml4dXAgPSBheDg4MTc5X3J4X2ZpeHVwLFxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYy0xNzM1LVxcdC50eF9maXh1cCA9IGF4ODgxNzlfdHhfZml4dXAsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmM9MTczOD1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIGN5cHJlc3NfR1gzX2luZm8gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMtMTc0Ni1cXHQuZmxhZ3MgPSBGTEFHX0VUSEVSIHwgRkxBR19GUkFNSU5HX0FYLFxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYzoxNzQ3OlxcdC5yeF9maXh1cCA9IGF4ODgxNzlfcnhfZml4dXAsXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jLTE3NDgtXFx0LnR4X2ZpeHVwID0gYXg4ODE3OV90eF9maXh1cCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYz0xNzUxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gZGxpbmtfZHViMTMxMl9pbmZvID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jLTE3NTktXFx0LmZsYWdzID0gRkxBR19FVEhFUiB8IEZMQUdfRlJBTUlOR19BWCxcXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmM6MTc2MDpcXHQucnhfZml4dXAgPSBheDg4MTc5X3J4X2ZpeHVwLFxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYy0xNzYxLVxcdC50eF9maXh1cCA9IGF4ODgxNzlfdHhfZml4dXAsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmM9MTc2ND1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIHNpdGVjb21faW5mbyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYy0xNzcyLVxcdC5mbGFncyA9IEZMQUdfRVRIRVIgfCBGTEFHX0ZSQU1JTkdfQVgsXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jOjE3NzM6XFx0LnJ4X2ZpeHVwID0gYXg4ODE3OV9yeF9maXh1cCxcXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMtMTc3NC1cXHQudHhfZml4dXAgPSBheDg4MTc5X3R4X2ZpeHVwLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jPTE3Nzc9c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mbyBzYW1zdW5nX2luZm8gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMtMTc4NS1cXHQuZmxhZ3MgPSBGTEFHX0VUSEVSIHwgRkxBR19GUkFNSU5HX0FYLFxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYzoxNzg2OlxcdC5yeF9maXh1cCA9IGF4ODgxNzlfcnhfZml4dXAsXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jLTE3ODctXFx0LnR4X2ZpeHVwID0gYXg4ODE3OV90eF9maXh1cCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYz0xNzkwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gbGVub3ZvX2luZm8gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMtMTc5OC1cXHQuZmxhZ3MgPSBGTEFHX0VUSEVSIHwgRkxBR19GUkFNSU5HX0FYLFxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYzoxNzk5OlxcdC5yeF9maXh1cCA9IGF4ODgxNzlfcnhfZml4dXAsXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jLTE4MDAtXFx0LnR4X2ZpeHVwID0gYXg4ODE3OV90eF9maXh1cCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYz0xODAzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gYmVsa2luX2luZm8gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMtMTgxMS1cXHQuZmxhZ3NcXHQ9IEZMQUdfRVRIRVIgfCBGTEFHX0ZSQU1JTkdfQVgsXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jOjE4MTI6XFx0LnJ4X2ZpeHVwID0gYXg4ODE3OV9yeF9maXh1cCxcXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMtMTgxMy1cXHQudHhfZml4dXAgPSBheDg4MTc5X3R4X2ZpeHVwLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jPTE4MTY9c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mbyB0b3NoaWJhX2luZm8gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMtMTgyNC1cXHQuZmxhZ3NcXHQ9IEZMQUdfRVRIRVIgfCBGTEFHX0ZSQU1JTkdfQVgsXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jOjE4MjU6XFx0LnJ4X2ZpeHVwID0gYXg4ODE3OV9yeF9maXh1cCxcXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMtMTgyNi1cXHQudHhfZml4dXAgPSBheDg4MTc5X3R4X2ZpeHVwLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jPTE4Mjk9c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mbyBtY3RfaW5mbyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYy0xODM3LVxcdC5mbGFnc1xcdD0gRkxBR19FVEhFUiB8IEZMQUdfRlJBTUlOR19BWCxcXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmM6MTgzODpcXHQucnhfZml4dXAgPSBheDg4MTc5X3J4X2ZpeHVwLFxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYy0xODM5LVxcdC50eF9maXh1cCA9IGF4ODgxNzlfdHhfZml4dXAsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmM9MTg0Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIGF0X3VtYzIwMDBfaW5mbyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYy0xODUwLVxcdC5mbGFncyAgPSBGTEFHX0VUSEVSIHwgRkxBR19GUkFNSU5HX0FYLFxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYzoxODUxOlxcdC5yeF9maXh1cCA9IGF4ODgxNzlfcnhfZml4dXAsXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jLTE4NTItXFx0LnR4X2ZpeHVwID0gYXg4ODE3OV90eF9maXh1cCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYz0xODU1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gYXRfdW1jMjAwX2luZm8gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMtMTg2My1cXHQuZmxhZ3MgID0gRkxBR19FVEhFUiB8IEZMQUdfRlJBTUlOR19BWCxcXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmM6MTg2NDpcXHQucnhfZml4dXAgPSBheDg4MTc5X3J4X2ZpeHVwLFxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYy0xODY1LVxcdC50eF9maXh1cCA9IGF4ODgxNzlfdHhfZml4dXAsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmM9MTg2OD1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIGF0X3VtYzIwMDBzcF9pbmZvID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jLTE4NzYtXFx0LmZsYWdzICA9IEZMQUdfRVRIRVIgfCBGTEFHX0ZSQU1JTkdfQVgsXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jOjE4Nzc6XFx0LnJ4X2ZpeHVwID0gYXg4ODE3OV9yeF9maXh1cCxcXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMtMTg3OC1cXHQudHhfZml4dXAgPSBheDg4MTc5X3R4X2ZpeHVwLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19lZW0uYz04OT1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmVlbV90eF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX2VlbS5jLTE1My1cXG5kcml2ZXJzL25ldC91c2IvY2RjX2VlbS5jOjE1NDpzdGF0aWMgaW50IGVlbV9yeF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvdXNiL2NkY19lZW0uYy0xNTUte1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19lZW0uYz0zMzA9c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mbyBlZW1faW5mbyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfZWVtLmMtMzMzLVxcdC5iaW5kID1cXHRcXHRlZW1fYmluZCxcXG5kcml2ZXJzL25ldC91c2IvY2RjX2VlbS5jOjMzNDpcXHQucnhfZml4dXAgPVxcdGVlbV9yeF9maXh1cCxcXG5kcml2ZXJzL25ldC91c2IvY2RjX2VlbS5jLTMzNS1cXHQudHhfZml4dXAgPVxcdGVlbV90eF9maXh1cCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYz00NzI9c3RhdGljIGludCB1c2JuZXRfY2RjX3p0ZV9iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX2V0aGVyLmMtNDg4LSAqL1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYzo0ODk6aW50IHVzYm5ldF9jZGNfenRlX3J4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC91c2IvY2RjX2V0aGVyLmMtNDkwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYy00OTgtfVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYzo0OTk6RVhQT1JUX1NZTUJPTF9HUEwodXNibmV0X2NkY196dGVfcnhfZml4dXApO1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYy01MDAtXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX2V0aGVyLmM9NTUxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm9cXHR6dGVfY2RjX2luZm8gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX2V0aGVyLmMtNTU4LVxcdC5tYW5hZ2VfcG93ZXIgPVxcdHVzYm5ldF9tYW5hZ2VfcG93ZXIsXFxuZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jOjU1OTpcXHQucnhfZml4dXAgPSB1c2JuZXRfY2RjX3p0ZV9yeF9maXh1cCxcXG5kcml2ZXJzL25ldC91c2IvY2RjX2V0aGVyLmMtNTYwLX07XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYz0zNjY9c3RhdGljIHN0cnVjdCBza19idWZmICpjZGNfbWJpbV9wcm9jZXNzX2RncmFtKHN0cnVjdCB1c2JuZXQgKmRldiwgdTggKmJ1Ziwgc2l6ZV90IGxlbiwgdTE2IHRjaSlcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTQxMS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYzo0MTI6c3RhdGljIGludCBjZGNfbWJpbV9yeF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2JfaW4pXFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtNDEzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jPTU1Mz1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIGNkY19tYmltX2luZm8gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy01NTgtXFx0Lm1hbmFnZV9wb3dlciA9IGNkY19tYmltX21hbmFnZV9wb3dlcixcXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYzo1NTk6XFx0LnJ4X2ZpeHVwID0gY2RjX21iaW1fcnhfZml4dXAsXFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtNTYwLVxcdC50eF9maXh1cCA9IGNkY19tYmltX3R4X2ZpeHVwLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM9NTc3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gY2RjX21iaW1faW5mb196bHAgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy01ODItXFx0Lm1hbmFnZV9wb3dlciA9IGNkY19tYmltX21hbmFnZV9wb3dlcixcXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYzo1ODM6XFx0LnJ4X2ZpeHVwID0gY2RjX21iaW1fcnhfZml4dXAsXFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtNTg0LVxcdC50eF9maXh1cCA9IGNkY19tYmltX3R4X2ZpeHVwLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM9NTk2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gY2RjX21iaW1faW5mb19uZHBfdG9fZW5kID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtNjAxLVxcdC5tYW5hZ2VfcG93ZXIgPSBjZGNfbWJpbV9tYW5hZ2VfcG93ZXIsXFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM6NjAyOlxcdC5yeF9maXh1cCA9IGNkY19tYmltX3J4X2ZpeHVwLFxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTYwMy1cXHQudHhfZml4dXAgPSBjZGNfbWJpbV90eF9maXh1cCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jPTYxMT1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIGNkY19tYmltX2luZm9fYXZvaWRfYWx0c2V0dGluZ190b2dnbGUgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy02MTYtXFx0Lm1hbmFnZV9wb3dlciA9IGNkY19tYmltX21hbmFnZV9wb3dlcixcXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYzo2MTc6XFx0LnJ4X2ZpeHVwID0gY2RjX21iaW1fcnhfZml4dXAsXFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtNjE4LVxcdC50eF9maXh1cCA9IGNkY19tYmltX3R4X2ZpeHVwLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYz0xNzI1PUVYUE9SVF9TWU1CT0xfR1BMKGNkY19uY21fcnhfdmVyaWZ5X25kcDMyKTtcXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTE3MjYtXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYzoxNzI3OmludCBjZGNfbmNtX3J4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYl9pbilcXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTE3Mjgte1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0xODQ4LX1cXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jOjE4NDk6RVhQT1JUX1NZTUJPTF9HUEwoY2RjX25jbV9yeF9maXh1cCk7XFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0xODUwLVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYz0xOTE1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gY2RjX25jbV9pbmZvID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0xOTIyLVxcdC5zdGF0dXMgPSBjZGNfbmNtX3N0YXR1cyxcXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jOjE5MjM6XFx0LnJ4X2ZpeHVwID0gY2RjX25jbV9yeF9maXh1cCxcXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTE5MjQtXFx0LnR4X2ZpeHVwID0gY2RjX25jbV90eF9maXh1cCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM9MTkyOT1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIGNkY19uY21femxwX2luZm8gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTE5MzYtXFx0LnN0YXR1cyA9IGNkY19uY21fc3RhdHVzLFxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM6MTkzNzpcXHQucnhfZml4dXAgPSBjZGNfbmNtX3J4X2ZpeHVwLFxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMTkzOC1cXHQudHhfZml4dXAgPSBjZGNfbmNtX3R4X2ZpeHVwLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYz0xOTQzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gYXBwbGVfdGV0aGVyaW5nX2ludGVyZmFjZV9pbmZvID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0xOTUwLVxcdC5zdGF0dXMgPSBjZGNfbmNtX3N0YXR1cyxcXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jOjE5NTE6XFx0LnJ4X2ZpeHVwID0gY2RjX25jbV9yeF9maXh1cCxcXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTE5NTItXFx0LnR4X2ZpeHVwID0gY2RjX25jbV90eF9maXh1cCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM9MTk1Nz1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIGFwcGxlX3ByaXZhdGVfaW50ZXJmYWNlX2luZm8gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTE5NjQtXFx0LnN0YXR1cyA9IGNkY19uY21fc3RhdHVzLFxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM6MTk2NTpcXHQucnhfZml4dXAgPSBjZGNfbmNtX3J4X2ZpeHVwLFxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMTk2Ni1cXHQudHhfZml4dXAgPSBjZGNfbmNtX3R4X2ZpeHVwLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYz0xOTcxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gd3dhbl9pbmZvID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0xOTc4LVxcdC5zdGF0dXMgPSBjZGNfbmNtX3N0YXR1cyxcXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jOjE5Nzk6XFx0LnJ4X2ZpeHVwID0gY2RjX25jbV9yeF9maXh1cCxcXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTE5ODAtXFx0LnR4X2ZpeHVwID0gY2RjX25jbV90eF9maXh1cCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM9MTk4NT1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIHd3YW5fbm9hcnBfaW5mbyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMTk5Mi1cXHQuc3RhdHVzID0gY2RjX25jbV9zdGF0dXMsXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYzoxOTkzOlxcdC5yeF9maXh1cCA9IGNkY19uY21fcnhfZml4dXAsXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0xOTk0LVxcdC50eF9maXh1cCA9IGNkY19uY21fdHhfZml4dXAsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2g5MjAwLmM9MjQ4PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqY2g5MjAwX3R4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jaDkyMDAuYy0yODgtXFxuZHJpdmVycy9uZXQvdXNiL2NoOTIwMC5jOjI4OTpzdGF0aWMgaW50IGNoOTIwMF9yeF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvdXNiL2NoOTIwMC5jLTI5MC17XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2g5MjAwLmM9Mzk2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gY2g5MjAwX2luZm8gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2g5MjAwLmMtMzk5LVxcdC5iaW5kID0gY2g5MjAwX2JpbmQsXFxuZHJpdmVycy9uZXQvdXNiL2NoOTIwMC5jOjQwMDpcXHQucnhfZml4dXAgPSBjaDkyMDBfcnhfZml4dXAsXFxuZHJpdmVycy9uZXQvdXNiL2NoOTIwMC5jLTQwMS1cXHQudHhfZml4dXAgPSBjaDkyMDBfdHhfZml4dXAsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYz0yMjY9c3RhdGljIHZvaWQgY3g4MjMxMF91bmJpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTI0Mi0gKi9cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzoyNDM6c3RhdGljIGludCBjeDgyMzEwX3J4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0yNDQte1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM9MzM1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm9cXHRjeDgyMzEwX2luZm8gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0zMzktXFx0LnVuYmluZFxcdFxcdD0gY3g4MjMxMF91bmJpbmQsXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MzQwOlxcdC5yeF9maXh1cFxcdD0gY3g4MjMxMF9yeF9maXh1cCxcXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0zNDEtXFx0LnR4X2ZpeHVwXFx0PSBjeDgyMzEwX3R4X2ZpeHVwLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2RtOTYwMS5jPTMzOD1zdGF0aWMgaW50IGRtOTYwMV9iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvZG05NjAxLmMtNDIwLVxcbmRyaXZlcnMvbmV0L3VzYi9kbTk2MDEuYzo0MjE6c3RhdGljIGludCBkbTk2MDFfcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3VzYi9kbTk2MDEuYy00MjIte1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2RtOTYwMS5jPTU0NT1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIGRtOTYwMV9pbmZvID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2RtOTYwMS5jLTU0OC1cXHQuYmluZFxcdFxcdD0gZG05NjAxX2JpbmQsXFxuZHJpdmVycy9uZXQvdXNiL2RtOTYwMS5jOjU0OTpcXHQucnhfZml4dXBcXHQ9IGRtOTYwMV9yeF9maXh1cCxcXG5kcml2ZXJzL25ldC91c2IvZG05NjAxLmMtNTUwLVxcdC50eF9maXh1cFxcdD0gZG05NjAxX3R4X2ZpeHVwLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2dsNjIwYS5jPTYyPXN0cnVjdCBnbF9oZWFkZXIge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2dsNjIwYS5jLTY2LVxcbmRyaXZlcnMvbmV0L3VzYi9nbDYyMGEuYzo2NzpzdGF0aWMgaW50IGdlbmVsaW5rX3J4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC91c2IvZ2w2MjBhLmMtNjgte1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2dsNjIwYS5jPTE4NT1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvXFx0Z2VuZWxpbmtfaW5mbyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9nbDYyMGEuYy0xODgtXFx0LmJpbmQgPVxcdFxcdGdlbmVsaW5rX2JpbmQsXFxuZHJpdmVycy9uZXQvdXNiL2dsNjIwYS5jOjE4OTpcXHQucnhfZml4dXAgPVxcdGdlbmVsaW5rX3J4X2ZpeHVwLFxcbmRyaXZlcnMvbmV0L3VzYi9nbDYyMGEuYy0xOTAtXFx0LnR4X2ZpeHVwID1cXHRnZW5lbGlua190eF9maXh1cCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9odWF3ZWlfY2RjX25jbS5jPTE4Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIGh1YXdlaV9jZGNfbmNtX2luZm8gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvaHVhd2VpX2NkY19uY20uYy0xODctXFx0Lm1hbmFnZV9wb3dlciA9IGh1YXdlaV9jZGNfbmNtX21hbmFnZV9wb3dlcixcXG5kcml2ZXJzL25ldC91c2IvaHVhd2VpX2NkY19uY20uYzoxODg6XFx0LnJ4X2ZpeHVwID0gY2RjX25jbV9yeF9maXh1cCxcXG5kcml2ZXJzL25ldC91c2IvaHVhd2VpX2NkY19uY20uYy0xODktXFx0LnR4X2ZpeHVwID0gY2RjX25jbV90eF9maXh1cCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9pbnQ1MXgxLmMtMjYtXFxuZHJpdmVycy9uZXQvdXNiL2ludDUxeDEuYzoyNzpzdGF0aWMgaW50IGludDUxeDFfcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3VzYi9pbnQ1MXgxLmMtMjgte1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2ludDUxeDEuYz0xMjI9c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mbyBpbnQ1MXgxX2luZm8gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvaW50NTF4MS5jLTEyNC1cXHQuYmluZCAgICAgICAgPSBpbnQ1MXgxX2JpbmQsXFxuZHJpdmVycy9uZXQvdXNiL2ludDUxeDEuYzoxMjU6XFx0LnJ4X2ZpeHVwICAgID0gaW50NTF4MV9yeF9maXh1cCxcXG5kcml2ZXJzL25ldC91c2IvaW50NTF4MS5jLTEyNi1cXHQudHhfZml4dXAgICAgPSBpbnQ1MXgxX3R4X2ZpeHVwLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2thbG1pYS5jPTIyOT1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvdXNiL2thbG1pYS5jOjIzMDprYWxtaWFfcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3VzYi9rYWxtaWEuYy0yMzEte1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2thbG1pYS5jPTM0MD1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIGthbG1pYV9pbmZvID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2thbG1pYS5jLTM0My1cXHQuYmluZCA9IGthbG1pYV9iaW5kLFxcbmRyaXZlcnMvbmV0L3VzYi9rYWxtaWEuYzozNDQ6XFx0LnJ4X2ZpeHVwID0ga2FsbWlhX3J4X2ZpeHVwLFxcbmRyaXZlcnMvbmV0L3VzYi9rYWxtaWEuYy0zNDUtXFx0LnR4X2ZpeHVwID0ga2FsbWlhX3R4X2ZpeHVwXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGctdmw2MDAuYz04Nj1zdGF0aWMgdm9pZCB2bDYwMF91bmJpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sZy12bDYwMC5jLTk1LVxcbmRyaXZlcnMvbmV0L3VzYi9sZy12bDYwMC5jOjk2OnN0YXRpYyBpbnQgdmw2MDBfcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3VzYi9sZy12bDYwMC5jLTk3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sZy12bDYwMC5jPTMwMT1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvXFx0dmw2MDBfaW5mbyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sZy12bDYwMC5jLTMwNi1cXHQuc3RhdHVzXFx0XFx0PSB1c2JuZXRfY2RjX3N0YXR1cyxcXG5kcml2ZXJzL25ldC91c2IvbGctdmw2MDAuYzozMDc6XFx0LnJ4X2ZpeHVwXFx0PSB2bDYwMF9yeF9maXh1cCxcXG5kcml2ZXJzL25ldC91c2IvbGctdmw2MDAuYy0zMDgtXFx0LnR4X2ZpeHVwXFx0PSB2bDYwMF90eF9maXh1cCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9tY3M3ODMwLmM9NDcwPXN0YXRpYyBpbnQgbWNzNzgzMF9iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbWNzNzgzMC5jLTUxMS0vKiBUaGUgY2hpcCBhbHdheXMgYXBwZW5kcyBhIHN0YXR1cyBieXRlIHRoYXQgd2UgbmVlZCB0byBzdHJpcCAqL1xcbmRyaXZlcnMvbmV0L3VzYi9tY3M3ODMwLmM6NTEyOnN0YXRpYyBpbnQgbWNzNzgzMF9yeF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvdXNiL21jczc4MzAuYy01MTMte1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL21jczc4MzAuYz01NjE9c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mbyBtb3NjaGlwX2luZm8gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbWNzNzgzMC5jLTU2My1cXHQuYmluZFxcdFxcdD0gbWNzNzgzMF9iaW5kLFxcbmRyaXZlcnMvbmV0L3VzYi9tY3M3ODMwLmM6NTY0OlxcdC5yeF9maXh1cFxcdD0gbWNzNzgzMF9yeF9maXh1cCxcXG5kcml2ZXJzL25ldC91c2IvbWNzNzgzMC5jLTU2NS1cXHQuZmxhZ3NcXHRcXHQ9IEZMQUdfRVRIRVIgfCBGTEFHX0xJTktfSU5UUixcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9tY3M3ODMwLmM9NTcxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gc2l0ZWNvbV9pbmZvID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL21jczc4MzAuYy01NzMtXFx0LmJpbmRcXHRcXHQ9IG1jczc4MzBfYmluZCxcXG5kcml2ZXJzL25ldC91c2IvbWNzNzgzMC5jOjU3NDpcXHQucnhfZml4dXBcXHQ9IG1jczc4MzBfcnhfZml4dXAsXFxuZHJpdmVycy9uZXQvdXNiL21jczc4MzAuYy01NzUtXFx0LmZsYWdzXFx0XFx0PSBGTEFHX0VUSEVSIHwgRkxBR19MSU5LX0lOVFIsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbmV0MTA4MC5jPTMyMT1zdGF0aWMgdm9pZCBuY19lbnN1cmVfc3luYyhzdHJ1Y3QgdXNibmV0ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbmV0MTA4MC5jLTMzOC1cXG5kcml2ZXJzL25ldC91c2IvbmV0MTA4MC5jOjMzOTpzdGF0aWMgaW50IG5ldDEwODBfcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3VzYi9uZXQxMDgwLmMtMzQwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9uZXQxMDgwLmM9NDg2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm9cXHRuZXQxMDgwX2luZm8gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbmV0MTA4MC5jLTQ5MS1cXHQuY2hlY2tfY29ubmVjdCA9IG5ldDEwODBfY2hlY2tfY29ubmVjdCxcXG5kcml2ZXJzL25ldC91c2IvbmV0MTA4MC5jOjQ5MjpcXHQucnhfZml4dXAgPVxcdG5ldDEwODBfcnhfZml4dXAsXFxuZHJpdmVycy9uZXQvdXNiL25ldDEwODAuYy00OTMtXFx0LnR4X2ZpeHVwID1cXHRuZXQxMDgwX3R4X2ZpeHVwLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3BlZ2FzdXMuYz00NTc9c3RhdGljIHZvaWQgcmVhZF9idWxrX2NhbGxiYWNrKHN0cnVjdCB1cmIgKnVyYilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9wZWdhc3VzLmMtNTY2LVxcbmRyaXZlcnMvbmV0L3VzYi9wZWdhc3VzLmM6NTY3OnN0YXRpYyB2b2lkIHJ4X2ZpeHVwKHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdClcXG5kcml2ZXJzL25ldC91c2IvcGVnYXN1cy5jLTU2OC17XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcGVnYXN1cy5jPTExNDI9c3RhdGljIGludCBwZWdhc3VzX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3BlZ2FzdXMuYy0xMTgwLVxcbmRyaXZlcnMvbmV0L3VzYi9wZWdhc3VzLmM6MTE4MTpcXHR0YXNrbGV0X3NldHVwKFxcdTAwMjZwZWdhc3VzLVxcdTAwM2VyeF90bCwgcnhfZml4dXApO1xcbmRyaXZlcnMvbmV0L3VzYi9wZWdhc3VzLmMtMTE4Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTE1Nz1zdGF0aWMgYm9vbCBxbWltdXhfaGFzX3NsYXZlcyhzdHJ1Y3QgdXNibmV0ICpkZXYpXFxuLS1cXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDE6MTc6MDUuNjE4NDI4OTg0WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIyNDk3MzE3ODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipOYXZpZ2F0aW5nIHRoZSBgdXNibmV0LmNgIFNvdXJjZSoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByb2xlIGFuZCB1c2FnZSBvZiB0aGUgYHJ4X2ZpeHVwYCBmdW5jdGlvbiB3aXRoaW4gYHVzYm5ldC5jYC4gTXkgZmlyc3Qgc3RlcCBpcyB0byB0cmFjZSB3aGVyZSBpdCdzIGFjdHVhbGx5ICpjYWxsZWQqIHdpdGhpbiB0aGF0IGZpbGUuIEknbSBnb2luZyB0byBxdWlja2x5IHNjYW4gdGhyb3VnaCB0aGUgY29kZSwgbG9va2luZyBmb3IgZGlyZWN0IGludm9jYXRpb25zIG9mIGByeF9maXh1cGAuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBnb29kIG92ZXJ2aWV3IG9mIHRoZSBjb250ZXh0cyBpbiB3aGljaCB0aGlzIGZ1bmN0aW9uIGlzIHJlbGV2YW50IOKAkyB3aGljaCBwYXJ0cyBvZiB0aGUgVVNCIG5ldHdvcmsgZHJpdmVyIGFyZSBpbnRlcmFjdGluZyB3aXRoIGl0LiBJJ2xsIGJlIGxvb2tpbmcgZm9yIGNsdWVzIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlIHJlZ2FyZGluZyB0aGUgbmF0dXJlIG9mIHRoZSBkYXRhIGJlaW5nIHByb2Nlc3NlZCBhbmQgdGhlIHN0YWdlIG9mIHRoZSByZWNlaXZlIHByb2Nlc3MgaW4gd2hpY2ggYHJ4X2ZpeHVwYCBpcyBpbnZvbHZlZC4gVW5kZXJzdGFuZGluZyB0aGUgY2FsbCBzaXRlcyBpcyBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgcHVycG9zZSBvZiB0aGlzIGZ1bmN0aW9uIGFuZCBpdHMgaW50ZW5kZWQgdXNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTUzMCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAxOjE3OjA3Ljg2ODE2MzQ3NVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDgwMDY5ODYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnhfZml4dXBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYz0zMTI9c3RhdGljIHZvaWQgX191c2JuZXRfc3RhdHVzX3N0b3BfZm9yY2Uoc3RydWN0IHVzYm5ldCAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jLTMyMi0vKiBQYXNzZXMgdGhpcyBwYWNrZXQgdXAgdGhlIHN0YWNrLCB1cGRhdGluZyBpdHMgYWNjb3VudGluZy5cXG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmM6MzIzOiAqIFNvbWUgbGluayBwcm90b2NvbHMgYmF0Y2ggcGFja2V0cywgc28gdGhlaXIgcnhfZml4dXAgcGF0aHNcXG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmMtMzI0LSAqIGNhbiByZXR1cm4gY2xvbmVzIGFzIHdlbGwgYXMganVzdCBtb2RpZnkgdGhlIG9yaWdpbmFsIHNrYi5cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYz0zMjY9dm9pZCB1c2JuZXRfc2tiX3JldHVybihzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmMtMzM2LVxcbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYzozMzc6XFx0Lyogb25seSB1cGRhdGUgaWYgdW5zZXQgdG8gYWxsb3cgbWluaWRyaXZlciByeF9maXh1cCBvdmVycmlkZSAqL1xcbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYy0zMzgtXFx0aWYgKHNrYi1cXHUwMDNlcHJvdG9jb2wgPT0gMClcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYz01Njk9c3RhdGljIGlubGluZSBpbnQgcnhfcHJvY2VzcyhzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jLTU3MC17XFxuZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jOjU3MTpcXHRpZiAoZGV2LVxcdTAwM2Vkcml2ZXJfaW5mby1cXHUwMDNlcnhfZml4dXAgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmM6NTcyOlxcdCAgICAhZGV2LVxcdTAwM2Vkcml2ZXJfaW5mby1cXHUwMDNlcnhfZml4dXAoZGV2LCBza2IpKSB7XFxuZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jOjU3MzpcXHRcXHQvKiBXaXRoIFJYX0FTU0VNQkxFLCByeF9maXh1cCgpIG11c3QgdXBkYXRlIGNvdW50ZXJzICovXFxuZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jLTU3NC1cXHRcXHRpZiAoIShkZXYtXFx1MDAzZWRyaXZlcl9pbmZvLVxcdTAwM2VmbGFncyBcXHUwMDI2IEZMQUdfUlhfQVNTRU1CTEUpKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMToxNzowNy45MTYxNzQ2MzFaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDIxMTY1MjY3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIENvbmV4YW50IENYODIzMTAgVVNCIEV0aGVybmV0IERyaXZlcidzIFJYIFBhdGgqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoZSBgcnhfcHJvY2Vzc2AgZnVuY3Rpb24gd2l0aGluIGBkcml2ZXJzL25ldC91c2IvdXNibmV0LmNgIGlzIHRoZSBrZXkg4oCTIGl0IGNhbGxzIGBkZXYtXHUwMDNlZHJpdmVyX2luZm8tXHUwMDNlcnhfZml4dXAoZGV2LCBza2IpYC4gVGhlIG1vZGlmaWNhdGlvbiBJJ20gaW50ZXJlc3RlZCBpbiBpcyBgY3g4MjMxMF9yeF9maXh1cGAsIHdoaWNoIHJlc2lkZXMgaW4gYGN4ODIzMTBfZXRoLmNgLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIGRldGVybWluZSBob3cgYWNjZXNzaWJsZSBgY3g4MjMxMF9yeF9maXh1cGAgaXM6IGlzIGl0IGFuIGVudHJ5IHBvaW50LCBhbiBleHBvcnRlZCBzeW1ib2wsIG5vbi1zdGF0aWMsIG9yIGlzIGl0IHN0YXRpYz9cblxuQSBxdWljayBjaGVjayBjb25maXJtcyBpdCdzIGRlY2xhcmVkIGFzIGBzdGF0aWMgaW50IGN4ODIzMTBfcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKWAuIFNvLCBpdCdzICpzdXBwb3NlZCogdG8gYmUgbGltaXRlZCBpbiBzY29wZS4gQnV0IHRoZSBjcnVjaWFsIHF1ZXN0aW9uIGlzIHdoZXRoZXIgaXRzIGFkZHJlc3MgaXMgdGFrZW4gYW55d2hlcmUuIEFoLCBoZXJlIGl0IGlzOiBgY3g4MjMxMF9yeF9maXh1cGAgKmlzKiBwYXNzZWQgYnkgcG9pbnRlciB0byBgY3g4MjMxMF9pbmZvYC5cblxuYGBgY1xuc3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mb1x0Y3g4MjMxMF9pbmZvID0ge1xuXHQuZGVzY3JpcHRpb25cdD0gXCJDb25leGFudCBDWDgyMzEwIFVTQiBldGhlcm5ldFwiLFxuXHQuZmxhZ3NcdFx0PSBGTEFHX0VUSEVSLFxuXHQuYmluZFx0XHQ9IGN4ODIzMTBfYmluZCxcblx0LnVuYmluZFx0XHQ9IGN4ODIzMTBfdW5iaW5kLFxuXHQucnhfZml4dXBcdD0gY3g4MjMxMF9yeF9maXh1cCxcblx0LnR4X2ZpeHVwXHQ9IGN4ODIzMTBfdHhfZml4dXAsXG59O1xuYGBgXG5cbkJlY2F1c2UgaXRzIGFkZHJlc3MgaXMgYXNzaWduZWQgdG8gYGN4ODIzMTBfaW5mby5yeF9maXh1cGAsIHRoZSBjb21waWxlciAqY2Fubm90KiBpbmxpbmUgYGN4ODIzMTBfcnhfZml4dXBgIGludG8gYW55IGNhbGxlci4gU2luY2UgYHJ4X3Byb2Nlc3NgIGluIGB1c2JuZXQuY2AgY2FsbHMgaXQgdGhyb3VnaCBhIGZ1bmN0aW9uIHBvaW50ZXIsIHRoZSBgY3g4MjMxMF9yeF9maXh1cGAgd2lsbCBuZWNlc3NhcmlseSBleGlzdCBhcyBhIGRpc3RpbmN0IGZ1bmN0aW9uIHN5bWJvbCBpbiB0aGUgb2JqZWN0IGZpbGUuIFRoYXQncyBnb29kIHRvIGtub3cgZm9yIGZ1cnRoZXIgYW5hbHlzaXMuXG5cbldoaWxlIEknbSBoZXJlLCBJIHNob3VsZCB0YWtlIGEgbG9vayBhdCB0aGUgb3RoZXIgc3ltYm9scyBpbiBgY3g4MjMxMF9ldGguY2AgYW5kIGNoZWNrIG91dCB0aGUgZnVuY3Rpb25zIGBjeDgyMzEwX3JlZW5hYmxlX3dvcmtgIGFuZCBgY3g4MjMxMF9iaW5kYC4gSnVzdCBjb3ZlcmluZyBhbGwgdGhlIGJhc2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjIwNiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMToxNzoxMi4xMjc4MzAwOTZaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MDQyNzA2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5zdGF0aWMgXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jPTQzPXN0cnVjdCBjeDgyMzEwX3ByaXYge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtNTMtICovXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6NTQ6c3RhdGljIGludCBjeDgyMzEwX2NtZChzdHJ1Y3QgdXNibmV0ICpkZXYsIGVudW0gY3g4MjMxMF9jbWQgY21kLCBib29sIHJlcGx5LFxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTU1LVxcdFxcdCAgICAgICB1OCAqd2RhdGEsIGludCB3bGVuLCB1OCAqcmRhdGEsIGludCBybGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMTE5LVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjEyMDpzdGF0aWMgaW50IGN4ODIzMTBfZW5hYmxlX2V0aGVybmV0KHN0cnVjdCB1c2JuZXQgKmRldilcXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0xMjEte1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMTI5LVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjEzMDpzdGF0aWMgdm9pZCBjeDgyMzEwX3JlZW5hYmxlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTEzMS17XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0xNDAtXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MTQxOnN0YXRpYyBpbnQgY3g4MjMxMF9iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMTQyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTIyNS1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzoyMjY6c3RhdGljIHZvaWQgY3g4MjMxMF91bmJpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0yMjcte1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMjQyLSAqL1xcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjI0MzpzdGF0aWMgaW50IGN4ODIzMTBfcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTI0NC17XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0zMTYtLyogVFggaXMgZWFzeSwganVzdCBhZGQgMiBieXRlcyBvZiBsZW5ndGggYXQgdGhlIGJlZ2lubmluZyAqL1xcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jOjMxNzpzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmN4ODIzMTBfdHhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTMxOC1cXHRcXHRcXHRcXHQgICAgICAgZ2ZwX3QgZmxhZ3MpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYy0zMzQtXFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmM6MzM1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm9cXHRjeDgyMzEwX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMzM2LVxcdC5kZXNjcmlwdGlvblxcdD0gXFxcIkNvbmV4YW50IENYODIzMTAgVVNCIGV0aGVybmV0XFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTM1Mi1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzozNTM6c3RhdGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkIHByb2R1Y3RzW10gPSB7XFxuZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmMtMzU0LVxcdHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jPTM2MD1NT0RVTEVfREVWSUNFX1RBQkxFKHVzYiwgcHJvZHVjdHMpO1xcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTM2MS1cXG5kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYzozNjI6c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIGN4ODIzMTBfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jLTM2My1cXHQubmFtZVxcdFxcdD0gXFxcImN4ODIzMTBfZXRoXFxcIixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDE6MTc6MTIuMTczODc3NDQyWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU4MjA2MzE5NDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgdGhlIENYODIzMTAgRXRoZXJuZXQgRHJpdmVyIGZvciBGdXp6aW5nKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBmb2N1cyBpcyBvbiBwcmVwYXJpbmcgdGhpcyBkcml2ZXIgZm9yIGZ1enppbmcuIEZpcnN0LCBJIG5lZWQgdG8gaWRlbnRpZnkgdGhlIGtleSBhcmVhcyBhbmQgY29uZmlndXJhdGlvbnMuIEknbSBzdGFydGluZyB3aXRoIGBtb2R1bGVfdXNiX2RyaXZlcihjeDgyMzEwX2RyaXZlcilgIGluIGBjeDgyMzEwX2V0aC5jYC4gVGhlIGBjeDgyMzEwX2RyaXZlcmAgc3RydWN0dXJlIGlzIGNyaXRpY2FsIGhlcmUuIEl0J3MgcmVnaXN0ZXJlZCBhbmQgaW5jbHVkZXMgc3RhbmRhcmQgVVNCIGRyaXZlciBvcGVyYXRpb25zOiBwcm9iZSwgZGlzY29ubmVjdCwgc3VzcGVuZCwgYW5kIHJlc3VtZSwgYWxsIGhhbmRsZWQgdGhyb3VnaCBgdXNibmV0YCBmdW5jdGlvbnMuIFNwZWNpZmljYWxseSwgdGhlIG1vZGlmaWVkIGZ1bmN0aW9uIGBjeDgyMzEwX3J4X2ZpeHVwYCBpcyBpbXBvcnRhbnQuIFRoaXMgc3VnZ2VzdHMgYSBwb3RlbnRpYWwgYXJlYSBmb3IgZnV6emluZy5cblxuTm93LCBsZXQncyB2ZXJpZnkgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSSd2ZSBjb25maXJtZWQgdGhhdCBgVVNCX05FVF9DWDgyMzEwX0VUSGAgaW4gYGRyaXZlcnMvbmV0L3VzYi9LY29uZmlnYCBkZXBlbmRzIG9uIGBVU0JfVVNCTkVUYC4gRnVydGhlcm1vcmUsIGBVU0JfVVNCTkVUYCBkZXBlbmRzIG9uIGBNSUlgIGFuZCBgVVNCX05FVF9EUklWRVJTYC4gYFVTQl9ORVRfRFJJVkVSU2AgaW4gdHVybiBkZXBlbmRzIG9uIGBVU0JgIGFuZCBgTkVUYC4gVGhlcmVmb3JlLCB0byBidWlsZCB0aGUgZHJpdmVyLCBJJ2xsIG5lZWQgYFVTQl9ORVRfQ1g4MjMxMF9FVEhgIGFuZCBgVVNCX1VTQk5FVGAgKG9yIGp1c3QgYFVTQl9ORVRfQ1g4MjMxMF9FVEhgLCBzaW5jZSB0aGUgbGF0dGVyIGlzIGltcGxpZWQpLiBJJ2xsIGFkZCB0aGVzZSB0byB0aGUgYEVuYWJsZUNvbmZpZ3NgIGxpc3QuXG5cbkxvb2tpbmcgYXQgYGRyaXZlcnMvbmV0L3VzYi9NYWtlZmlsZWAsIHRoZSBvYmplY3QgZmlsZSBgY3g4MjMxMF9ldGgub2AgaXMgYnVpbHQgaWYgYENPTkZJR19VU0JfTkVUX0NYODIzMTBfRVRIYCBpcyBlbmFibGVkLCBhbmQgYHVzYm5ldC5vYCBpZiBgQ09ORklHX1VTQl9VU0JORVRgIGlzIGVuYWJsZWQuXG5cbkluIHRlcm1zIG9mIGZ1enppbmcsIHRoZSBndWlkYW5jZSBzYXlzIHRvIGlkZW50aWZ5IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMsIHByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMuIFNpbmNlIGBjeDgyMzEwX3J4X2ZpeHVwYCBpcyBjYWxsZWQgdGhyb3VnaCBhIGZ1bmN0aW9uIHBvaW50ZXIsIGl0IGlzIGluZGVlZCBhbiBhcHByb3ByaWF0ZSBmdW5jdGlvbiB0byBmb2N1cyBvbi4gU28sIEkgd2lsbCBpbmNsdWRlIGBcImN4ODIzMTBfcnhfZml4dXBcImAgaW4gdGhlIGBGb2N1c1N5bWJvbHNgIGxpc3QuXG5cbkZpbmFsbHksIEknbGwgbWFrZSBzdXJlIGFsbCB0aGUgZ3VpZGFuY2UgaXMgZm9sbG93ZWQsIGVzcGVjaWFsbHkgdGhlIGNhbGwgdG8gYHNldC1yZXN1bHRzYC4gXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4MzQzLCJPdXRwdXRUb2tlbnMiOjE4MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMToxNzoxNy45OTQ1MTE4MjZaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NzQyMTkwNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVVNCX05FVF9DWDgyMzEwX0VUSFwiLFxuICAgIFwiVVNCX1VTQk5FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImN4ODIzMTBfcnhfZml4dXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGZ1bmN0aW9uYWwgZmxvdyBidWcgaW4gdGhlIFJYIHBhY2tldCBwcm9jZXNzaW5nIGxvZ2ljIG9mIHRoZSBjeDgyMzEwX2V0aCBVU0IgbmV0d29yayBkcml2ZXIuIFByZXZpb3VzbHksIHdoZW4gYW4gUlggcGFja2V0IGhhZCBsZW5ndGggMHhmZmZmIChzaWduYWxpbmcgcm91dGVyIHJlYm9vdCksIHRoZSBmdW5jdGlvbiBzY2hlZHVsZWQgYSByZS1lbmFibGUgd29ya2VyIGJ1dCBmZWxsIHRocm91Z2ggaW50byBwYXJ0aWFsIHBhY2tldCBoYW5kbGluZywgd2hpY2ggY291bGQgbGVhZCB0byBtYWxmb3JtZWQgcGFja2V0IHByb2Nlc3Npbmcgb3Igb3V0LW9mLWJvdW5kcy9vdmVyZmxvdyBpc3N1ZXMuIFRoZSBwYXRjaCByZXR1cm5zIDAgdG8gcHJvcGVybHkgZHJvcCB0aGUgcGFja2V0LiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBVU0IgZW11bGF0aW9uL2Z1enppbmcgKGUuZy4gUmF3IEdhZGdldCAvIGR1bW15X2hjZCkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVVNCX05FVF9DWDgyMzEwX0VUSFwiLFxuICAgIFwiVVNCX1VTQk5FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImN4ODIzMTBfcnhfZml4dXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGZ1bmN0aW9uYWwgZmxvdyBidWcgaW4gdGhlIFJYIHBhY2tldCBwcm9jZXNzaW5nIGxvZ2ljIG9mIHRoZSBjeDgyMzEwX2V0aCBVU0IgbmV0d29yayBkcml2ZXIuIFByZXZpb3VzbHksIHdoZW4gYW4gUlggcGFja2V0IGhhZCBsZW5ndGggMHhmZmZmIChzaWduYWxpbmcgcm91dGVyIHJlYm9vdCksIHRoZSBmdW5jdGlvbiBzY2hlZHVsZWQgYSByZS1lbmFibGUgd29ya2VyIGJ1dCBmZWxsIHRocm91Z2ggaW50byBwYXJ0aWFsIHBhY2tldCBoYW5kbGluZywgd2hpY2ggY291bGQgbGVhZCB0byBtYWxmb3JtZWQgcGFja2V0IHByb2Nlc3Npbmcgb3Igb3V0LW9mLWJvdW5kcy9vdmVyZmxvdyBpc3N1ZXMuIFRoZSBwYXRjaCByZXR1cm5zIDAgdG8gcHJvcGVybHkgZHJvcCB0aGUgcGFja2V0LiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBVU0IgZW11bGF0aW9uL2Z1enppbmcgKGUuZy4gUmF3IEdhZGdldCAvIGR1bW15X2hjZCkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAxOjE3OjE4LjA4MTk0MTY3WiIsIlNlcSI6MjgsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTM1MDQyNTgxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAxOjE3OjE4LjA4MjUzMzE1WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MTEzNDk4MzAyNTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYW4gZWFybHkgJ3JldHVybiAwOycgd2hlbiAnbGVuID09IDB4ZmZmZicgaW4gY3g4MjMxMF9yeF9maXh1cCgpIHRvIGFib3J0IHByb2Nlc3Npbmcgd2hlbiB0aGUgcm91dGVyIHJlYm9vdHMgYW5kIHJlLWVuYWJsaW5nIHdvcmsgaXMgc2NoZWR1bGVkLiBQcmV2aW91c2x5LCBleGVjdXRpb24gZmVsbCB0aHJvdWdoIGludG8gcGFydGlhbCBwYWNrZXQgaGFuZGxpbmcsIHdoaWNoIGNvdWxkIGxlYWQgdG8gb3V0LW9mLWJvdW5kcyByZWFkcyBvbiBzdWJzZXF1ZW50IHBhY2tldHMuIFxcblxcblRoZSBmaXggb25seSBtb2RpZmllcyBjb250cm9sIGZsb3cgdG8gZGlzY2FyZCB0aGUgc2tiIGFuZCBkb2VzIG5vdCBhbGxvY2F0ZSwgaW5pdGlhbGl6ZSwgcmVhZCwgb3IgY29weSBhbnkgdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSBvciBrZXJuZWwgc3RydWN0dXJlcyB0byB1c2VyIHNwYWNlLiBBbnkgbWVtb3J5IHNhZmV0eSBpc3N1ZXMgcHJldmVudGVkIG9yIHRvdWNoZWQgYnkgdGhpcyBjb2RlIGFyZSBvdXQtb2YtYm91bmRzIGFjY2VzcyAvIGludmFsaWQgc3RhdGUgYnVncyBjYXVnaHQgYnkgS0FTQU4sIG5vdCB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZXMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWVkZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYTdkNjFkNjQwZDY3ZjI0ZGM5ZTYyZWQ2YjE3ZTNmZTA2YWM4NzQ2ZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgU2VwIDMgMDE6MTY6MjUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguYyBiL2RyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jXG5pbmRleCAwNjhhY2IwNTJhZGIwLi41ZGY2NTdhY2YzZDU1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvdXNiL2N4ODIzMTBfZXRoLmNcbisrKyBiL2RyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jXG5AQCAtMjgyLDYgKzI4Miw3IEBAIHN0YXRpYyBpbnQgY3g4MjMxMF9yeF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRcdGlmIChsZW4gPT0gMHhmZmZmKSB7XG4gXHRcdFx0bmV0ZGV2X2luZm8oZGV2LVx1MDAzZW5ldCwgXCJyb3V0ZXIgd2FzIHJlYm9vdGVkLCByZS1lbmFibGluZyBldGhlcm5ldCBtb2RlXCIpO1xuIFx0XHRcdHNjaGVkdWxlX3dvcmsoXHUwMDI2cHJpdi1cdTAwM2VyZWVuYWJsZV93b3JrKTtcbitcdFx0XHRyZXR1cm4gMDtcbiBcdFx0fSBlbHNlIGlmIChsZW4gXHUwMDNlIENYODIzMTBfTVRVKSB7XG4gXHRcdFx0bmV0ZGV2X2VycihkZXYtXHUwMDNlbmV0LCBcIlJYIHBhY2tldCB0b28gbG9uZzogJWQgQlxcblwiLCBsZW4pO1xuIFx0XHRcdHJldHVybiAwO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDE6MTc6MTguMDgyNTM0MTVaIiwiU2VxIjozMCwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTQzODc4NDc2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoYXQgc25pcHBldDpcblxuKipEaXZpbmcgaW50byB0aGUgY3g4MjMxMCBFdGhlcm5ldCBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoaXMgcGF0Y2guIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gdGhlIGBkcml2ZXJzL25ldC91c2IvY3g4MjMxMF9ldGguY2AgZmlsZS4gVGhhdCdzIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50LCB0aGUgY29yZSBvZiB0aGUgZHJpdmVyIGluIHF1ZXN0aW9uLiBJJ2xsIG5lZWQgdG8gdXNlIGByZWFkLWZpbGVgIHRvIGdldCB0aGUgY29udGV4dCByaWdodC4gSSdtIGZvY3VzaW5nIG9uIGBjeDgyMzEwX3J4X2ZpeHVwYCByaWdodCBub3cuIFRoaXMgc3Ryb25nbHkgc3VnZ2VzdHMgdGhhdCBJIHNob3VsZCBzcGVjaWZpY2FsbHkgbG9vayBmb3IgUlgtcmVsYXRlZCBjb2RlLiBXaXRoIGByZWFkLWZpbGVgIEkgY2FuIHF1aWNrbHkgY2hlY2sgdGhhdCBwaWVjZSBvZiBjb2RlIGFuZCBpZGVudGlmeSBwb3RlbnRpYWwgaXNzdWVzLiBJJ2xsIG5lZWQgdG8gbG9vayBhdCB0aGUgc3Vycm91bmRpbmcgY29kZSBhcyB3ZWxsIHRvIGJ1aWxkIHRoZSBjb3JyZWN0IG1lbnRhbCBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTMwLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMToxNzoyMy41MjEzMjM0MTJaIiwiU2VxIjozMSwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEzMDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3VzYi9jeDgyMzEwX2V0aC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI1MCxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDI1MDpcXHRcXHQgKiBJZiB0aGUgbGFzdCBza2IgZW5kZWQgd2l0aCBhbiBpbmNvbXBsZXRlIHBhY2tldCwgdGhpcyBza2IgY29udGFpbnNcXG4gMjUxOlxcdFxcdCAqIGVuZCBvZiB0aGF0IHBhY2tldCBhdCB0aGUgYmVnaW5uaW5nLlxcbiAyNTI6XFx0XFx0ICovXFxuIDI1MzpcXHRcXHRpZiAoZGV2LVxcdTAwM2VwYXJ0aWFsX3JlbSkge1xcbiAyNTQ6XFx0XFx0XFx0bGVuID0gZGV2LVxcdTAwM2VwYXJ0aWFsX2xlbiArIGRldi1cXHUwMDNlcGFydGlhbF9yZW07XFxuIDI1NTpcXHRcXHRcXHRza2IyID0gYWxsb2Nfc2tiKGxlbiwgR0ZQX0FUT01JQyk7XFxuIDI1NjpcXHRcXHRcXHRpZiAoIXNrYjIpXFxuIDI1NzpcXHRcXHRcXHRcXHRyZXR1cm4gMDtcXG4gMjU4OlxcdFxcdFxcdHNrYl9wdXQoc2tiMiwgbGVuKTtcXG4gMjU5OlxcdFxcdFxcdG1lbWNweShza2IyLVxcdTAwM2VkYXRhLCAodm9pZCAqKWRldi1cXHUwMDNlcGFydGlhbF9kYXRhLFxcbiAyNjA6XFx0XFx0XFx0ICAgICAgIGRldi1cXHUwMDNlcGFydGlhbF9sZW4pO1xcbiAyNjE6XFx0XFx0XFx0bWVtY3B5KHNrYjItXFx1MDAzZWRhdGEgKyBkZXYtXFx1MDAzZXBhcnRpYWxfbGVuLCBza2ItXFx1MDAzZWRhdGEsXFxuIDI2MjpcXHRcXHRcXHQgICAgICAgZGV2LVxcdTAwM2VwYXJ0aWFsX3JlbSk7XFxuIDI2MzpcXHRcXHRcXHR1c2JuZXRfc2tiX3JldHVybihkZXYsIHNrYjIpO1xcbiAyNjQ6XFx0XFx0XFx0c2tiX3B1bGwoc2tiLCAoZGV2LVxcdTAwM2VwYXJ0aWFsX3JlbSArIDEpIFxcdTAwMjYgfjEpO1xcbiAyNjU6XFx0XFx0XFx0ZGV2LVxcdTAwM2VwYXJ0aWFsX3JlbSA9IDA7XFxuIDI2NjpcXHRcXHRcXHRpZiAoc2tiLVxcdTAwM2VsZW4gXFx1MDAzYyAyKVxcbiAyNjc6XFx0XFx0XFx0XFx0cmV0dXJuIDE7XFxuIDI2ODpcXHRcXHR9XFxuIDI2OTpcXHRcXG4gMjcwOlxcdFxcdC8qIGEgc2tiIGNhbiBjb250YWluIG11bHRpcGxlIHBhY2tldHMgKi9cXG4gMjcxOlxcdFxcdHdoaWxlIChza2ItXFx1MDAzZWxlbiBcXHUwMDNlIDEpIHtcXG4gMjcyOlxcdFxcdFxcdC8qIGZpcnN0IHR3byBieXRlcyBhcmUgcGFja2V0IGxlbmd0aCAqL1xcbiAyNzM6XFx0XFx0XFx0bGVuID0gc2tiLVxcdTAwM2VkYXRhWzBdIHwgKHNrYi1cXHUwMDNlZGF0YVsxXSBcXHUwMDNjXFx1MDAzYyA4KTtcXG4gMjc0OlxcdFxcdFxcdHNrYl9wdWxsKHNrYiwgMik7XFxuIDI3NTpcXHRcXG4gMjc2OlxcdFxcdFxcdC8qIGlmIGxhc3QgcGFja2V0IGluIHRoZSBza2IsIGxldCB1c2JuZXQgdG8gcHJvY2VzcyBpdCAqL1xcbiAyNzc6XFx0XFx0XFx0aWYgKGxlbiA9PSBza2ItXFx1MDAzZWxlbiB8fCBsZW4gKyAxID09IHNrYi1cXHUwMDNlbGVuKSB7XFxuIDI3ODpcXHRcXHRcXHRcXHRza2JfdHJpbShza2IsIGxlbik7XFxuIDI3OTpcXHRcXHRcXHRcXHRicmVhaztcXG4gMjgwOlxcdFxcdFxcdH1cXG4gMjgxOlxcdFxcbiAyODI6XFx0XFx0XFx0aWYgKGxlbiA9PSAweGZmZmYpIHtcXG4gMjgzOlxcdFxcdFxcdFxcdG5ldGRldl9pbmZvKGRldi1cXHUwMDNlbmV0LCBcXFwicm91dGVyIHdhcyByZWJvb3RlZCwgcmUtZW5hYmxpbmcgZXRoZXJuZXQgbW9kZVxcXCIpO1xcbiAyODQ6XFx0XFx0XFx0XFx0c2NoZWR1bGVfd29yayhcXHUwMDI2cHJpdi1cXHUwMDNlcmVlbmFibGVfd29yayk7XFxuIDI4NTpcXHRcXHRcXHRcXHRyZXR1cm4gMDtcXG4gMjg2OlxcdFxcdFxcdH0gZWxzZSBpZiAobGVuIFxcdTAwM2UgQ1g4MjMxMF9NVFUpIHtcXG4gMjg3OlxcdFxcdFxcdFxcdG5ldGRldl9lcnIoZGV2LVxcdTAwM2VuZXQsIFxcXCJSWCBwYWNrZXQgdG9vIGxvbmc6ICVkIEJcXFxcblxcXCIsIGxlbik7XFxuIDI4ODpcXHRcXHRcXHRcXHRyZXR1cm4gMDtcXG4gMjg5OlxcdFxcdFxcdH1cXG4gMjkwOlxcdFxcbiAyOTE6XFx0XFx0XFx0LyogaW5jb21wbGV0ZSBwYWNrZXQsIHNhdmUgaXQgZm9yIHRoZSBuZXh0IHNrYiAqL1xcbiAyOTI6XFx0XFx0XFx0aWYgKGxlbiBcXHUwMDNlIHNrYi1cXHUwMDNlbGVuKSB7XFxuIDI5MzpcXHRcXHRcXHRcXHRkZXYtXFx1MDAzZXBhcnRpYWxfbGVuID0gc2tiLVxcdTAwM2VsZW47XFxuIDI5NDpcXHRcXHRcXHRcXHRkZXYtXFx1MDAzZXBhcnRpYWxfcmVtID0gbGVuIC0gc2tiLVxcdTAwM2VsZW47XFxuIDI5NTpcXHRcXHRcXHRcXHRtZW1jcHkoKHZvaWQgKilkZXYtXFx1MDAzZXBhcnRpYWxfZGF0YSwgc2tiLVxcdTAwM2VkYXRhLFxcbiAyOTY6XFx0XFx0XFx0XFx0ICAgICAgIGRldi1cXHUwMDNlcGFydGlhbF9sZW4pO1xcbiAyOTc6XFx0XFx0XFx0XFx0c2tiX3B1bGwoc2tiLCBza2ItXFx1MDAzZWxlbik7XFxuIDI5ODpcXHRcXHRcXHRcXHRicmVhaztcXG4gMjk5OlxcdFxcdFxcdH1cXG4gMzAwOlxcdFxcbiAzMDE6XFx0XFx0XFx0c2tiMiA9IGFsbG9jX3NrYihsZW4sIEdGUF9BVE9NSUMpO1xcbiAzMDI6XFx0XFx0XFx0aWYgKCFza2IyKVxcbiAzMDM6XFx0XFx0XFx0XFx0cmV0dXJuIDA7XFxuIDMwNDpcXHRcXHRcXHRza2JfcHV0KHNrYjIsIGxlbik7XFxuIDMwNTpcXHRcXHRcXHRtZW1jcHkoc2tiMi1cXHUwMDNlZGF0YSwgc2tiLVxcdTAwM2VkYXRhLCBsZW4pO1xcbiAzMDY6XFx0XFx0XFx0LyogcHJvY2VzcyB0aGUgcGFja2V0ICovXFxuIDMwNzpcXHRcXHRcXHR1c2JuZXRfc2tiX3JldHVybihkZXYsIHNrYjIpO1xcbiAzMDg6XFx0XFxuIDMwOTpcXHRcXHRcXHRza2JfcHVsbChza2IsIChsZW4gKyAxKSBcXHUwMDI2IH4xKTtcXG4gMzEwOlxcdFxcdH1cXG4gMzExOlxcdFxcbiAzMTI6XFx0XFx0LyogbGV0IHVzYm5ldCBwcm9jZXNzIHRoZSBsYXN0IHBhY2tldCAqL1xcbiAzMTM6XFx0XFx0cmV0dXJuIDE7XFxuIDMxNDpcXHR9XFxuIDMxNTpcXHRcXG4gMzE2OlxcdC8qIFRYIGlzIGVhc3ksIGp1c3QgYWRkIDIgYnl0ZXMgb2YgbGVuZ3RoIGF0IHRoZSBiZWdpbm5pbmcgKi9cXG4gMzE3OlxcdHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqY3g4MjMxMF90eF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IsXFxuIDMxODpcXHRcXHRcXHRcXHRcXHQgICAgICAgZ2ZwX3QgZmxhZ3MpXFxuIDMxOTpcXHR7XFxuIDMyMDpcXHRcXHRpbnQgbGVuID0gc2tiLVxcdTAwM2VsZW47XFxuIDMyMTpcXHRcXG4gMzIyOlxcdFxcdGlmIChza2JfY293X2hlYWQoc2tiLCAyKSkge1xcbiAzMjM6XFx0XFx0XFx0ZGV2X2tmcmVlX3NrYl9hbnkoc2tiKTtcXG4gMzI0OlxcdFxcdFxcdHJldHVybiBOVUxMO1xcbiAzMjU6XFx0XFx0fVxcbiAzMjY6XFx0XFx0c2tiX3B1c2goc2tiLCAyKTtcXG4gMzI3OlxcdFxcbiAzMjg6XFx0XFx0c2tiLVxcdTAwM2VkYXRhWzBdID0gbGVuO1xcbiAzMjk6XFx0XFx0c2tiLVxcdTAwM2VkYXRhWzFdID0gbGVuIFxcdTAwM2VcXHUwMDNlIDg7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAxOjE3OjIzLjUyMTQzODU2M1oiLCJTZXEiOjMyLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1OTEwOTAzMTY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIHRoZSBjeDgyMzEwIERyaXZlcioqXG5cbk9rYXksIGxldCdzIGJyZWFrIGRvd24gdGhpcyBwYXRjaCBmb3IgdGhlIGBjeDgyMzEwYCBkcml2ZXIuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHRoZSBjb3JlIGNoYW5nZSBhbmQgcG90ZW50aWFsIGltcGxpY2F0aW9ucy4gSXQgbG9va3MgbGlrZSB0aGUgcHJpbWFyeSBmb2N1cyBpcyB3aXRoaW4gdGhlIGBjeDgyMzEwX3J4X2ZpeHVwYCBmdW5jdGlvbi4gVGhlIGNvZGUgYWRkcmVzc2VzIGEgc3BlY2lmaWMgc2NlbmFyaW86IGBsZW4gPT0gMHhmZmZmYC4gQmVmb3JlIHRoaXMgcGF0Y2gsIGlmIHRoZSBwYWNrZXQgbGVuZ3RoIHdhcyB0aGlzIG1heGltdW0gdmFsdWUsIHRoZSBjb2RlIHdvdWxkIHByb2NlZWQgcGFzdCB0aGF0IGNvbmRpdGlvbmFsIGNoZWNrIHdpdGhvdXQgcmV0dXJuaW5nLCBsZWFkaW5nIHRvIHNvbWUgcG90ZW50aWFsbHkgbmFzdHkgY29uc2VxdWVuY2VzIGRvd24gdGhlIGxpbmUuXG5cblRoZSB2dWxuZXJhYmlsaXR5IHN0ZW1zIGZyb20gdGhlIGxvZ2ljIHRoYXQgZm9sbG93cyB3aGVuIGBsZW5gIGlzIGAweGZmZmZgLiBUaGUgcHJldmlvdXMgY29kZSB3b3VsZCBlbmQgdXAgZG9pbmcgc29tZSBkYW5nZXJvdXMgY2FsY3VsYXRpb25zOiBhc3NpZ25pbmcgYGRldi1cdTAwM2VwYXJ0aWFsX2xlbmAgYXMgYHNrYi1cdTAwM2VsZW5gLCB0aGVuIGNhbGN1bGF0aW5nIGBkZXYtXHUwMDNlcGFydGlhbF9yZW1gIGFzIGEgbWFzc2l2ZSBkaWZmZXJlbmNlIChgMHhmZmZmIC0gc2tiLVx1MDAzZWxlbmApLiBOZXh0LCBpdCBjb3BpZXMgZGF0YSBiYXNlZCBvbiBgZGV2LVx1MDAzZXBhcnRpYWxfbGVuYC4gVGhlbiwgb24gYSBzdWJzZXF1ZW50IHBhY2tldCwgYmVjYXVzZSBgZGV2LVx1MDAzZXBhcnRpYWxfcmVtYCB3b3VsZCBiZSBub24temVybywgaXQgZG9lcyBhbiBhbGxvY2F0aW9uLCB1c2luZyBhIGxlbmd0aCB0aGF0IHdvdWxkIGluY2x1ZGUgdGhpcyBlbm9ybW91cyBgZGV2LVx1MDAzZXBhcnRpYWxfcmVtYCwgYW5kIHRyaWVzIHRvIGNvcHkgbWVtb3J5IGJhc2VkIG9uIGBkZXYtXHUwMDNlcGFydGlhbF9yZW1gIGZyb20gYHNrYi1cdTAwM2VkYXRhYCB0byB0aGUgbmV3bHkgYWxsb2NhdGVkIHNrYjIuIFRoaXMgaXMgd2hlcmUgaXQgYnJlYWtzOiBJdCBsb29rcyBsaWtlIGl0IGNvdWxkIGhhdmUgcmVzdWx0ZWQgaW4gYSAqc2lnbmlmaWNhbnQqIG91dC1vZi1ib3VuZHMgcmVhZCBmcm9tIGBza2ItXHUwMDNlZGF0YWAgYmVjYXVzZSBgc2tiLVx1MDAzZWxlbmAgaXMgZ29pbmcgdG8gYmUgZmFyIHNtYWxsZXIgdGhhbiBgZGV2LVx1MDAzZXBhcnRpYWxfcmVtYC4gQmlnIHByb2JsZW0hIFRoaXMgcGF0Y2ggbmVhdGx5IGZpeGVzIHRoaXMgYnkgYWRkaW5nIGEgYHJldHVybiAwO2AgYWZ0ZXIgYHNjaGVkdWxlX3dvcmsoKWAuXG5cbk15IGZpcnN0IGNvbmNlcm4gaXMgYWx3YXlzLCBcIkRvZXMgdGhpcyBwYXRjaCBpbnRyb2R1Y2UgYW55IG5ldyByaXNrcz9cIiBJdCBzZWVtcyBub3QuIEl0J3MgZXNzZW50aWFsbHkgYWRkaW5nIGFuIGVhcmx5IHJldHVybiB0byBzdG9wIHByb2Nlc3NpbmcgdGhlIHBhY2tldCBpbiBhbiBlcnJvciBvciBzcGVjaWFsIHJlYm9vdCBjb25kaXRpb24sIHByZXZlbnRpbmcgdGhpcyBvdXQtb2YtYm91bmRzIGFjY2Vzcy4gSSd2ZSBzcGVjaWZpY2FsbHkgY29uc2lkZXJlZCB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcy4gVGhlcmUgYXJlIG5vIG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIG5vIHVuaW5pdGlhbGl6ZWQgc3RydWN0IGZpZWxkcywgbm8gbmV3IGJ1ZmZlcnMgdG8gcmVhZC9jb3B5IHVuaW5pdGlhbGl6ZWQgZGF0YS4gVGhlcmUgYXJlIG5vIGxlYWtzIHRvIHVzZXIgc3BhY2UuIEl0IGRvZXNuJ3QgbW9kaWZ5IGJvdW5kcy1jaGVja2luZyBsb2dpYyB0aGF0IGNvdWxkIGFsbG93IHVuaW5pdGlhbGl6ZWQgYnl0ZXMgdG8gYmUgZXhwb3NlZC4gVGhlIGNoYW5nZSBpcyBzaW1wbHkgYSBtb3JlIGNvcnJlY3QgZXJyb3IgaGFuZGxpbmcgcHJvY2VkdXJlLlxuXG5LQVNBTiwgaWYgdGhlIGJ1ZyB3ZXJlIHRvIGJlIHJlcHJvZHVjZWQgYnkgYW4gYXR0YWNrZXIsIHdvdWxkIGxpa2VseSBjYXRjaCB0aGUgaGVhcCBvdXQtb2YtYm91bmRzIHJlYWQuIEtNU0FOLCB3aGljaCBJIGFtIHZlcnkgZmFtaWxpYXIgd2l0aCwgdGFyZ2V0cyB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBhbmQga2VybmVsLXRvLXVzZXIgaW5mb3JtYXRpb24gbGVha3MuIEkgZG9uJ3Qgc2VlIGFueSBpbnRyb2R1Y3Rpb24gb3IgcmVhZGluZyBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBoZXJlLlxuXG5XaXRoIHRoaXMgYW5hbHlzaXMgY29tcGxldGUsIEknbSBjb25maWRlbnQgaW4gdGhlIGNvcnJlY3RuZXNzIG9mIHRoaXMgcGF0Y2guIE5vdyBJJ2xsIHByZXBhcmUgdGhlIGBzZXQtcmVzdWx0c2AgdG9vbCBjYWxsLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjkxLCJPdXRwdXRUb2tlbnMiOjE4MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYxMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAxOjE3OjI5LjQzMjM0NDk0WiIsIlNlcSI6MzMsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY2NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGFuIGVhcmx5ICdyZXR1cm4gMDsnIHdoZW4gJ2xlbiA9PSAweGZmZmYnIGluIGN4ODIzMTBfcnhfZml4dXAoKSB0byBhYm9ydCBwcm9jZXNzaW5nIHdoZW4gdGhlIHJvdXRlciByZWJvb3RzIGFuZCByZS1lbmFibGluZyB3b3JrIGlzIHNjaGVkdWxlZC4gUHJldmlvdXNseSwgZXhlY3V0aW9uIGZlbGwgdGhyb3VnaCBpbnRvIHBhcnRpYWwgcGFja2V0IGhhbmRsaW5nLCB3aGljaCBjb3VsZCBsZWFkIHRvIG91dC1vZi1ib3VuZHMgcmVhZHMgb24gc3Vic2VxdWVudCBwYWNrZXRzLiBcXG5cXG5UaGUgZml4IG9ubHkgbW9kaWZpZXMgY29udHJvbCBmbG93IHRvIGRpc2NhcmQgdGhlIHNrYiBhbmQgZG9lcyBub3QgYWxsb2NhdGUsIGluaXRpYWxpemUsIHJlYWQsIG9yIGNvcHkgYW55IHVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgb3Iga2VybmVsIHN0cnVjdHVyZXMgdG8gdXNlciBzcGFjZS4gQW55IG1lbW9yeSBzYWZldHkgaXNzdWVzIHByZXZlbnRlZCBvciB0b3VjaGVkIGJ5IHRoaXMgY29kZSBhcmUgb3V0LW9mLWJvdW5kcyBhY2Nlc3MgLyBpbnZhbGlkIHN0YXRlIGJ1Z3MgY2F1Z2h0IGJ5IEtBU0FOLCBub3QgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWVzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVlZGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYW4gZWFybHkgJ3JldHVybiAwOycgd2hlbiAnbGVuID09IDB4ZmZmZicgaW4gY3g4MjMxMF9yeF9maXh1cCgpIHRvIGFib3J0IHByb2Nlc3Npbmcgd2hlbiB0aGUgcm91dGVyIHJlYm9vdHMgYW5kIHJlLWVuYWJsaW5nIHdvcmsgaXMgc2NoZWR1bGVkLiBQcmV2aW91c2x5LCBleGVjdXRpb24gZmVsbCB0aHJvdWdoIGludG8gcGFydGlhbCBwYWNrZXQgaGFuZGxpbmcsIHdoaWNoIGNvdWxkIGxlYWQgdG8gb3V0LW9mLWJvdW5kcyByZWFkcyBvbiBzdWJzZXF1ZW50IHBhY2tldHMuIFxcblxcblRoZSBmaXggb25seSBtb2RpZmllcyBjb250cm9sIGZsb3cgdG8gZGlzY2FyZCB0aGUgc2tiIGFuZCBkb2VzIG5vdCBhbGxvY2F0ZSwgaW5pdGlhbGl6ZSwgcmVhZCwgb3IgY29weSBhbnkgdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSBvciBrZXJuZWwgc3RydWN0dXJlcyB0byB1c2VyIHNwYWNlLiBBbnkgbWVtb3J5IHNhZmV0eSBpc3N1ZXMgcHJldmVudGVkIG9yIHRvdWNoZWQgYnkgdGhpcyBjb2RlIGFyZSBvdXQtb2YtYm91bmRzIGFjY2VzcyAvIGludmFsaWQgc3RhdGUgYnVncyBjYXVnaHQgYnkgS0FTQU4sIG5vdCB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZXMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWVkZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowz6lwj[1] Phase: Succeeded StartedAt: 2026-09-03 01:17:40 +0000 UTC FinishedAt: 2026-09-03 01:17:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz6lwj[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-09-03 01:17:40 +0000 UTC FinishedAt: 2026-09-03 01:17:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz6lwj[2] Phase: Succeeded StartedAt: 2026-09-03 01:17:40 +0000 UTC FinishedAt: 2026-09-03 02:49:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz6lwj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0ec95a8a4e79f2fd6063fc8932415db8c227689","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_CX82310_ETH","USB_USBNET"],"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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0ec95a8a4e79f2fd6063fc8932415db8c227689","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_CX82310_ETH","USB_USBNET"],"series_id":"73225c68-e980-48cc-9afe-be610c4fcddf","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-09-03 01:17:40 +0000 UTC FinishedAt: 2026-09-03 02:49:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"d0ec95a8a4e79f2fd6063fc8932415db8c227689","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_CX82310_ETH","USB_USBNET"],"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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"d0ec95a8a4e79f2fd6063fc8932415db8c227689","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_CX82310_ETH","USB_USBNET"],"series_id":"73225c68-e980-48cc-9afe-be610c4fcddf","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-workflowz6lwj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0ec95a8a4e79f2fd6063fc8932415db8c227689","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_CX82310_ETH","USB_USBNET"],"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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0ec95a8a4e79f2fd6063fc8932415db8c227689","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_CX82310_ETH","USB_USBNET"],"series_id":"73225c68-e980-48cc-9afe-be610c4fcddf","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-09-03 01:17:40 +0000 UTC FinishedAt: 2026-09-03 01:17:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz6lwj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0ec95a8a4e79f2fd6063fc8932415db8c227689","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_CX82310_ETH","USB_USBNET"],"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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0ec95a8a4e79f2fd6063fc8932415db8c227689","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_CX82310_ETH","USB_USBNET"],"series_id":"73225c68-e980-48cc-9afe-be610c4fcddf","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-09-03 01:17:40 +0000 UTC FinishedAt: 2026-09-03 01:17:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"d0ec95a8a4e79f2fd6063fc8932415db8c227689","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_CX82310_ETH","USB_USBNET"],"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-workflowz6lwj/series-workflowz6lwj-convert-artifact-224352250/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz6lwj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0ec95a8a4e79f2fd6063fc8932415db8c227689","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_CX82310_ETH","USB_USBNET"],"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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0ec95a8a4e79f2fd6063fc8932415db8c227689","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_CX82310_ETH","USB_USBNET"],"series_id":"73225c68-e980-48cc-9afe-be610c4fcddf","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-09-03 01:17:50 +0000 UTC FinishedAt: 2026-09-03 01:34:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz6lwj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0ec95a8a4e79f2fd6063fc8932415db8c227689","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_CX82310_ETH","USB_USBNET"],"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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0ec95a8a4e79f2fd6063fc8932415db8c227689","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_CX82310_ETH","USB_USBNET"],"series_id":"73225c68-e980-48cc-9afe-be610c4fcddf","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-09-03 01:17:50 +0000 UTC FinishedAt: 2026-09-03 01:34:57 +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:*585ff355-cd18-4e89-9cfc-f39cd89bb3cd,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-workflowz6lwj/series-workflowz6lwj-convert-artifact-224352250/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": "7d0d0995-0602-498b-9cab-bb6e43f7018e", "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-workflowz6lwj/series-workflowz6lwj-build-action-2559125672/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz6lwj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0ec95a8a4e79f2fd6063fc8932415db8c227689","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_CX82310_ETH","USB_USBNET"],"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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0ec95a8a4e79f2fd6063fc8932415db8c227689","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_CX82310_ETH","USB_USBNET"],"series_id":"73225c68-e980-48cc-9afe-be610c4fcddf","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-09-03 01:17:50 +0000 UTC FinishedAt: 2026-09-03 01:34:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*585ff355-cd18-4e89-9cfc-f39cd89bb3cd,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-workflowz6lwj/series-workflowz6lwj-convert-artifact-224352250/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": "7d0d0995-0602-498b-9cab-bb6e43f7018e", "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-workflowz6lwj/series-workflowz6lwj-build-action-2559125672/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz6lwj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0ec95a8a4e79f2fd6063fc8932415db8c227689","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_CX82310_ETH","USB_USBNET"],"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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0ec95a8a4e79f2fd6063fc8932415db8c227689","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_CX82310_ETH","USB_USBNET"],"series_id":"73225c68-e980-48cc-9afe-be610c4fcddf","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-09-03 01:34:57 +0000 UTC FinishedAt: 2026-09-03 01:34:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz6lwj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0ec95a8a4e79f2fd6063fc8932415db8c227689","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_CX82310_ETH","USB_USBNET"],"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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0ec95a8a4e79f2fd6063fc8932415db8c227689","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_CX82310_ETH","USB_USBNET"],"series_id":"73225c68-e980-48cc-9afe-be610c4fcddf","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-09-03 01:34:57 +0000 UTC FinishedAt: 2026-09-03 01:34:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz6lwj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0ec95a8a4e79f2fd6063fc8932415db8c227689","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_CX82310_ETH","USB_USBNET"],"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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0ec95a8a4e79f2fd6063fc8932415db8c227689","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_CX82310_ETH","USB_USBNET"],"series_id":"73225c68-e980-48cc-9afe-be610c4fcddf","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-09-03 01:34:57 +0000 UTC FinishedAt: 2026-09-03 01:35:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz6lwj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0ec95a8a4e79f2fd6063fc8932415db8c227689","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_CX82310_ETH","USB_USBNET"],"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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0ec95a8a4e79f2fd6063fc8932415db8c227689","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_CX82310_ETH","USB_USBNET"],"series_id":"73225c68-e980-48cc-9afe-be610c4fcddf","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-09-03 01:34:57 +0000 UTC FinishedAt: 2026-09-03 01:35:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"d0ec95a8a4e79f2fd6063fc8932415db8c227689","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_CX82310_ETH","USB_USBNET"],"series_id":"73225c68-e980-48cc-9afe-be610c4fcddf","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-workflowz6lwj/series-workflowz6lwj-convert-artifact-4212118613/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz6lwj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0ec95a8a4e79f2fd6063fc8932415db8c227689","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_CX82310_ETH","USB_USBNET"],"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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0ec95a8a4e79f2fd6063fc8932415db8c227689","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_CX82310_ETH","USB_USBNET"],"series_id":"73225c68-e980-48cc-9afe-be610c4fcddf","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-09-03 01:35:08 +0000 UTC FinishedAt: 2026-09-03 01:37:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz6lwj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0ec95a8a4e79f2fd6063fc8932415db8c227689","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_CX82310_ETH","USB_USBNET"],"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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0ec95a8a4e79f2fd6063fc8932415db8c227689","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_CX82310_ETH","USB_USBNET"],"series_id":"73225c68-e980-48cc-9afe-be610c4fcddf","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-09-03 01:35:08 +0000 UTC FinishedAt: 2026-09-03 01:36:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7d0d0995-0602-498b-9cab-bb6e43f7018e,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-workflowz6lwj/series-workflowz6lwj-build-action-2559125672/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-workflowz6lwj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0ec95a8a4e79f2fd6063fc8932415db8c227689","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_CX82310_ETH","USB_USBNET"],"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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0ec95a8a4e79f2fd6063fc8932415db8c227689","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_CX82310_ETH","USB_USBNET"],"series_id":"73225c68-e980-48cc-9afe-be610c4fcddf","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-09-03 01:37:06 +0000 UTC FinishedAt: 2026-09-03 01:37:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz6lwj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0ec95a8a4e79f2fd6063fc8932415db8c227689","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_CX82310_ETH","USB_USBNET"],"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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0ec95a8a4e79f2fd6063fc8932415db8c227689","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_CX82310_ETH","USB_USBNET"],"series_id":"73225c68-e980-48cc-9afe-be610c4fcddf","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-09-03 01:37:06 +0000 UTC FinishedAt: 2026-09-03 01:37:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz6lwj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0ec95a8a4e79f2fd6063fc8932415db8c227689","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_CX82310_ETH","USB_USBNET"],"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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0ec95a8a4e79f2fd6063fc8932415db8c227689","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_CX82310_ETH","USB_USBNET"],"series_id":"73225c68-e980-48cc-9afe-be610c4fcddf","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-09-03 01:37:06 +0000 UTC FinishedAt: 2026-09-03 01:54:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz6lwj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0ec95a8a4e79f2fd6063fc8932415db8c227689","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_CX82310_ETH","USB_USBNET"],"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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0ec95a8a4e79f2fd6063fc8932415db8c227689","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_CX82310_ETH","USB_USBNET"],"series_id":"73225c68-e980-48cc-9afe-be610c4fcddf","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-09-03 01:37:06 +0000 UTC FinishedAt: 2026-09-03 01:54:07 +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:*585ff355-cd18-4e89-9cfc-f39cd89bb3cd,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-workflowz6lwj/series-workflowz6lwj-convert-artifact-4212118613/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": "91a18a98-33ba-4902-8eb6-1327a4aa2a51", "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-workflowz6lwj/series-workflowz6lwj-build-action-1493235169/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz6lwj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0ec95a8a4e79f2fd6063fc8932415db8c227689","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_CX82310_ETH","USB_USBNET"],"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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0ec95a8a4e79f2fd6063fc8932415db8c227689","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_CX82310_ETH","USB_USBNET"],"series_id":"73225c68-e980-48cc-9afe-be610c4fcddf","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-09-03 01:37:06 +0000 UTC FinishedAt: 2026-09-03 01:54:04 +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:*585ff355-cd18-4e89-9cfc-f39cd89bb3cd,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-workflowz6lwj/series-workflowz6lwj-convert-artifact-4212118613/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": "91a18a98-33ba-4902-8eb6-1327a4aa2a51", "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-workflowz6lwj/series-workflowz6lwj-build-action-1493235169/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz6lwj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0ec95a8a4e79f2fd6063fc8932415db8c227689","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_CX82310_ETH","USB_USBNET"],"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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0ec95a8a4e79f2fd6063fc8932415db8c227689","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_CX82310_ETH","USB_USBNET"],"series_id":"73225c68-e980-48cc-9afe-be610c4fcddf","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-09-03 01:54:07 +0000 UTC FinishedAt: 2026-09-03 01:54:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz6lwj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0ec95a8a4e79f2fd6063fc8932415db8c227689","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_CX82310_ETH","USB_USBNET"],"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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0ec95a8a4e79f2fd6063fc8932415db8c227689","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_CX82310_ETH","USB_USBNET"],"series_id":"73225c68-e980-48cc-9afe-be610c4fcddf","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-09-03 01:54:07 +0000 UTC FinishedAt: 2026-09-03 01:54:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz6lwj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0ec95a8a4e79f2fd6063fc8932415db8c227689","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_CX82310_ETH","USB_USBNET"],"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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0ec95a8a4e79f2fd6063fc8932415db8c227689","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_CX82310_ETH","USB_USBNET"],"series_id":"73225c68-e980-48cc-9afe-be610c4fcddf","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-09-03 01:54:07 +0000 UTC FinishedAt: 2026-09-03 01:56:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz6lwj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0ec95a8a4e79f2fd6063fc8932415db8c227689","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_CX82310_ETH","USB_USBNET"],"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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0ec95a8a4e79f2fd6063fc8932415db8c227689","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_CX82310_ETH","USB_USBNET"],"series_id":"73225c68-e980-48cc-9afe-be610c4fcddf","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-09-03 01:54:07 +0000 UTC FinishedAt: 2026-09-03 01:55:55 +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:*91a18a98-33ba-4902-8eb6-1327a4aa2a51,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-workflowz6lwj/series-workflowz6lwj-build-action-1493235169/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-workflowz6lwj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0ec95a8a4e79f2fd6063fc8932415db8c227689","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_CX82310_ETH","USB_USBNET"],"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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0ec95a8a4e79f2fd6063fc8932415db8c227689","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_CX82310_ETH","USB_USBNET"],"series_id":"73225c68-e980-48cc-9afe-be610c4fcddf","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: Succeeded StartedAt: 2026-09-03 01:56:05 +0000 UTC FinishedAt: 2026-09-03 02:49:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz6lwj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0ec95a8a4e79f2fd6063fc8932415db8c227689","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_CX82310_ETH","USB_USBNET"],"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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0ec95a8a4e79f2fd6063fc8932415db8c227689","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_CX82310_ETH","USB_USBNET"],"series_id":"73225c68-e980-48cc-9afe-be610c4fcddf","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: Succeeded StartedAt: 2026-09-03 01:56:05 +0000 UTC FinishedAt: 2026-09-03 02:49:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"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:*7d0d0995-0602-498b-9cab-bb6e43f7018e,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*91a18a98-33ba-4902-8eb6-1327a4aa2a51,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-workflowz6lwj/series-workflowz6lwj-build-action-2559125672/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-workflowz6lwj/series-workflowz6lwj-build-action-1493235169/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowz6lwj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0ec95a8a4e79f2fd6063fc8932415db8c227689","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_CX82310_ETH","USB_USBNET"],"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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0ec95a8a4e79f2fd6063fc8932415db8c227689","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_CX82310_ETH","USB_USBNET"],"series_id":"73225c68-e980-48cc-9afe-be610c4fcddf","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-09-03 01:56:05 +0000 UTC FinishedAt: 2026-09-03 01:56:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz6lwj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0ec95a8a4e79f2fd6063fc8932415db8c227689","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_CX82310_ETH","USB_USBNET"],"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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0ec95a8a4e79f2fd6063fc8932415db8c227689","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_CX82310_ETH","USB_USBNET"],"series_id":"73225c68-e980-48cc-9afe-be610c4fcddf","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-09-03 01:56:05 +0000 UTC FinishedAt: 2026-09-03 01:56:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"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-workflowz6lwj/series-workflowz6lwj-convert-artifact-640932922/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz6lwj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0ec95a8a4e79f2fd6063fc8932415db8c227689","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_CX82310_ETH","USB_USBNET"],"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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0ec95a8a4e79f2fd6063fc8932415db8c227689","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_CX82310_ETH","USB_USBNET"],"series_id":"73225c68-e980-48cc-9afe-be610c4fcddf","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-09-03 01:56:05 +0000 UTC FinishedAt: 2026-09-03 01:56:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz6lwj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0ec95a8a4e79f2fd6063fc8932415db8c227689","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_CX82310_ETH","USB_USBNET"],"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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0ec95a8a4e79f2fd6063fc8932415db8c227689","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_CX82310_ETH","USB_USBNET"],"series_id":"73225c68-e980-48cc-9afe-be610c4fcddf","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-09-03 01:56:05 +0000 UTC FinishedAt: 2026-09-03 01:56:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz6lwj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0ec95a8a4e79f2fd6063fc8932415db8c227689","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_CX82310_ETH","USB_USBNET"],"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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0ec95a8a4e79f2fd6063fc8932415db8c227689","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_CX82310_ETH","USB_USBNET"],"series_id":"73225c68-e980-48cc-9afe-be610c4fcddf","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-09-03 01:56:05 +0000 UTC FinishedAt: 2026-09-03 01:56:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz6lwj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0ec95a8a4e79f2fd6063fc8932415db8c227689","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_CX82310_ETH","USB_USBNET"],"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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0ec95a8a4e79f2fd6063fc8932415db8c227689","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_CX82310_ETH","USB_USBNET"],"series_id":"73225c68-e980-48cc-9afe-be610c4fcddf","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: Succeeded StartedAt: 2026-09-03 01:56:16 +0000 UTC FinishedAt: 2026-09-03 02:49:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz6lwj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d0ec95a8a4e79f2fd6063fc8932415db8c227689","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_CX82310_ETH","USB_USBNET"],"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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cx82310_rx_fixup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d0ec95a8a4e79f2fd6063fc8932415db8c227689","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_NET_CX82310_ETH","USB_USBNET"],"series_id":"73225c68-e980-48cc-9afe-be610c4fcddf","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: Succeeded StartedAt: 2026-09-03 01:56:16 +0000 UTC FinishedAt: 2026-09-03 02:48:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7d0d0995-0602-498b-9cab-bb6e43f7018e,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*91a18a98-33ba-4902-8eb6-1327a4aa2a51,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-workflowz6lwj/series-workflowz6lwj-build-action-2559125672/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-workflowz6lwj/series-workflowz6lwj-build-action-1493235169/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-workflowz6lwj/series-workflowz6lwj-convert-artifact-640932922/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}