Name: series-workflowzrp6b Phase: Succeeded StartedAt: 2026-07-02 15:20:12 +0000 UTC FinishedAt: 2026-07-02 17:47:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzrp6b[0] Phase: Succeeded StartedAt: 2026-07-02 15:20:12 +0000 UTC FinishedAt: 2026-07-02 15:36:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzrp6b[0].run-triage Phase: Succeeded StartedAt: 2026-07-02 15:20:12 +0000 UTC FinishedAt: 2026-07-02 15:36:04 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "bb09d0e64ecaa0aa0f7d1133a1696ed74dead295", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_VS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "bb09d0e64ecaa0aa0f7d1133a1696ed74dead295", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_VS" ], "series_id": "8b6d23b5-58a4-408a-8763-2ea596fdf018" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ip_vs_conn_new" ], "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+CgkJCTx0ZD4yMDI2LzA3LzAyIDE1OjM1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXBfdnNfY29ubl9uZXcmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUgaW4gYGlwX3ZzX2Nvbm5fbmV3YCBieSB6ZXJvaW5nIG91dCB0aGUgZW50aXJlIGBpcF92c19zZXFgIHN0cnVjdHMgaW5zdGVhZCBvZiBqdXN0IHRoZSBgZGVsdGFgIGZpZWxkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIElQVlMgY29yZSBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIHdoZW4gZXN0YWJsaXNoaW5nIG5ldyBJUFZTIGNvbm5lY3Rpb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE1OjM1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZjA5ZWY3MDAyYjhiMzE2MTM0MzcyM2FiZmNiYmEwZmZlNzk2NzliMFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDIgMTU6MzU6MDYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmNcbmluZGV4IGNiMzY2NDFmOGQxY2MxLi42ZWQyNjIyMzYzZjBkNiAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmNcbkBAIC0xNDIwLDggJiM0MzsxNDIwLDggQEAgaXBfdnNfY29ubl9uZXcoY29uc3Qgc3RydWN0IGlwX3ZzX2Nvbm5fcGFyYW0gKnAsIGludCBkZXN0X2FmLFxuIFx0Y3AtXHUwMDNlYXBwID0gTlVMTDtcbiBcdGNwLVx1MDAzZWFwcF9kYXRhID0gTlVMTDtcbiBcdC8qIHJlc2V0IHN0cnVjdCBpcF92c19zZXEgKi9cbi1cdGNwLVx1MDAzZWluX3NlcS5kZWx0YSA9IDA7XG4tXHRjcC1cdTAwM2VvdXRfc2VxLmRlbHRhID0gMDtcbiYjNDM7XHRtZW1zZXQoXHUwMDI2Y3AtXHUwMDNlaW5fc2VxLCAwLCBzaXplb2YoY3AtXHUwMDNlaW5fc2VxKSk7XG4mIzQzO1x0bWVtc2V0KFx1MDAyNmNwLVx1MDAzZW91dF9zZXEsIDAsIHNpemVvZihjcC1cdTAwM2VvdXRfc2VxKSk7XG4gXG4gXHRpZiAodW5saWtlbHkoZmxhZ3MgXHUwMDI2IElQX1ZTX0NPTk5fRl9OT19DUE9SVCkpIHtcbiBcdFx0aW50IGFmX2lkID0gaXBfdnNfYWZfaW5kZXgoY3AtXHUwMDNlYWYpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE1OjM1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXBfdnNfY29ubl9uZXcmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUgaW4gYGlwX3ZzX2Nvbm5fbmV3YCBieSB6ZXJvaW5nIG91dCB0aGUgZW50aXJlIGBpcF92c19zZXFgIHN0cnVjdHMgaW5zdGVhZCBvZiBqdXN0IHRoZSBgZGVsdGFgIGZpZWxkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIElQVlMgY29yZSBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIHdoZW4gZXN0YWJsaXNoaW5nIG5ldyBJUFZTIGNvbm5lY3Rpb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBmMDllZjcwMDJiOGIzMTYxMzQzNzIzYWJmY2JiYTBmZmU3OTY3OWIwCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdWwgMiAxNTozNTowNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jCmluZGV4IGNiMzY2NDFmOGQxY2MxLi42ZWQyNjIyMzYzZjBkNiAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jCkBAIC0xNDIwLDggJiM0MzsxNDIwLDggQEAgaXBfdnNfY29ubl9uZXcoY29uc3Qgc3RydWN0IGlwX3ZzX2Nvbm5fcGFyYW0gKnAsIGludCBkZXN0X2FmLAogCWNwLSZndDthcHAgPSBOVUxMOwogCWNwLSZndDthcHBfZGF0YSA9IE5VTEw7CiAJLyogcmVzZXQgc3RydWN0IGlwX3ZzX3NlcSAqLwotCWNwLSZndDtpbl9zZXEuZGVsdGEgPSAwOwotCWNwLSZndDtvdXRfc2VxLmRlbHRhID0gMDsKJiM0MzsJbWVtc2V0KCZhbXA7Y3AtJmd0O2luX3NlcSwgMCwgc2l6ZW9mKGNwLSZndDtpbl9zZXEpKTsKJiM0MzsJbWVtc2V0KCZhbXA7Y3AtJmd0O291dF9zZXEsIDAsIHNpemVvZihjcC0mZ3Q7b3V0X3NlcSkpOwogCiAJaWYgKHVubGlrZWx5KGZsYWdzICZhbXA7IElQX1ZTX0NPTk5fRl9OT19DUE9SVCkpIHsKIAkJaW50IGFmX2lkID0gaXBfdnNfYWZfaW5kZXgoY3AtJmd0O2FmKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTU6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkyMwoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDk5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFJlY2VudCBJUFZTIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY2AuIEl0IHNlZW1zIHRvIGJlIG1vZGlmeWluZyB0aGUgaW5pdGlhbGl6YXRpb24gb2Ygc2VxdWVuY2UgbnVtYmVycywgc3BlY2lmaWNhbGx5IGBjcC0mZ3Q7aW5fc2VxYCBhbmQgYGNwLSZndDtvdXRfc2VxYCwgd2l0aGluIHRoZSBgaXBfdnNfY29ubl9uZXdgIGZ1bmN0aW9uLiBJbnRlcmVzdGluZy4gSW5zdGVhZCBvZiB0aGUgc3RyYWlnaHRmb3J3YXJkIGBkZWx0YSA9IDBgIGFzc2lnbm1lbnQgZm9yIGp1c3QgdGhlIHNlcXVlbmNlIG51bWJlcnMsIHRoZSBwYXRjaCBub3cgdXNlcyBgbWVtc2V0YCB0byB6ZXJvIG91dCB0aGUgZW50aXJlIHN0cnVjdHVyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5LiBDbGVhcmx5IHRoZXJlJiMzOTtzIGEgcGVyY2VpdmVkIGJlbmVmaXQgdG8gemVyb2luZyB0aGUgKmVudGlyZSogc3RydWN0LCBub3QganVzdCB0aGVzZSB0d28gbWVtYmVycy4gSSB3b25kZXIgd2hhdCBlbHNlIGlzIGluIHRoYXQgYHN0cnVjdCBpcF92c19zZXFgIHRoYXQgdGhleSYjMzk7cmUgbm93IG51bGxpZnlpbmc/IFRoYXQmIzM5O3MgdGhlIGtleS4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IHRoZSBzdHJ1Y3QgZGVmaW5pdGlvbiB0byBmaWd1cmUgb3V0IHdoYXQgb3RoZXIgZmllbGRzIGFyZSBiZWluZyBhZmZlY3RlZCBieSB0aGlzIGNoYW5nZSBhbmQgd2hhdCB0aGUgaW1wbGljYXRpb25zIGFyZSBmb3IgSVBWUyYjMzk7cyBjb25uZWN0aW9uIHRyYWNraW5nIGJlaGF2aW9yLiBMZXQgbWUgY2hlY2sgdGhlIGRlZmluaXRpb24gb2YgYHN0cnVjdCBpcF92c19zZXFgIGFuZCBzZWUgd2hhdCYjMzk7cyBiZWluZyBjbGVhcmVkIGJlc2lkZXMgdGhlIG9idmlvdXMgc2VxdWVuY2UgbnVtYmVyIGZpZWxkcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdHJ1Y3QgaXBfdnNfc2VxIFxceyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL25ldC9pcF92cy5oPTM0ND1lbnVtIGlwX3ZzX3NjdHBfc3RhdGVzIHtcbi0tXG5pbmNsdWRlL25ldC9pcF92cy5oLTM3MC0gKi9cbmluY2x1ZGUvbmV0L2lwX3ZzLmg6MzcxOnN0cnVjdCBpcF92c19zZXEge1xuaW5jbHVkZS9uZXQvaXBfdnMuaC0zNzItXHRfX3UzMlx0XHRcdGluaXRfc2VxO1x0LyogQWRkIGRlbHRhIGZyb20gdGhpcyBzZXEgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzg2CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBJIG5lZWQgdG8gZ2V0IGEgcmVhbGx5IHNvbGlkIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGNvbnRleHQgaGVyZS4gSSBuZWVkIHRvIGV4YW1pbmUgdGhlIGZ1bGwgc3RydWN0IGRlZmluaXRpb24gdG8gbWFrZSBhbnkgbWVhbmluZ2Z1bCBqdWRnbWVudC4gSSBjYW4mIzM5O3QganVzdCBvcGVyYXRlIGluIHRoZSBhYnN0cmFjdDsgSSBuZWVkIHRvIHNlZSB0aGUgc3BlY2lmaWNzLiBMZXQmIzM5O3MgZ2V0IHRoZSBmdWxsIHBpY3R1cmUgYmVmb3JlIEkgbWFrZSBhbnkgYXNzdW1wdGlvbnMuIEkmIzM5O2xsIG5lZWQgdG8ga25vdyB0aGUgY29tcG9uZW50cywgdGhlaXIgdHlwZXMsIHRoZWlyIHJlbGF0aW9uc2hpcHMgdG8gZWFjaCBvdGhlciDigJMgZXZlcnl0aGluZy4gVGhpcyBpcyBjcnVjaWFsIGZvciBhIGNvbXBsZXRlIHVuZGVyc3RhbmRpbmcuIFRpbWUgdG8gcm9sbCB1cCBteSBzbGVldmVzIGFuZCBnZXQgdGhlIGZ1bGwgZGVmaW5pdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L2lwX3ZzLmgmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzNzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDM3MDpcdCAqL1xuIDM3MTpcdHN0cnVjdCBpcF92c19zZXEge1xuIDM3MjpcdFx0X191MzJcdFx0XHRpbml0X3NlcTtcdC8qIEFkZCBkZWx0YSBmcm9tIHRoaXMgc2VxICovXG4gMzczOlx0XHRfX3UzMlx0XHRcdGRlbHRhO1x0XHQvKiBEZWx0YSBpbiBzZXF1ZW5jZSBudW1iZXJzICovXG4gMzc0Olx0XHRfX3UzMlx0XHRcdHByZXZpb3VzX2RlbHRhO1x0LyogRGVsdGEgaW4gc2VxdWVuY2UgbnVtYmVyc1xuIDM3NTpcdFx0XHRcdFx0XHRcdCAqIGJlZm9yZSBsYXN0IHJlc2l6ZWQgcGt0ICovXG4gMzc2Olx0fTtcbiAzNzc6XHRcbiAzNzg6XHQvKiBjb3VudGVycyBwZXIgY3B1ICovXG4gMzc5Olx0c3RydWN0IGlwX3ZzX2NvdW50ZXJzIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjk1CgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogNjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJUFZTIFN0cnVjdCBNb2RpZmljYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgc3RydWN0LCBhbmQgSSBzZWUgaXQgaGFzIGBpbml0X3NlcWAsIGBkZWx0YWAsIGFuZCBgcHJldmlvdXNfZGVsdGFgLiBOb3csIGl0IHNlZW1zIGxpa2UgdGhlIHJlY2VudCBjaGFuZ2UgemVyb2VzIG91dCBhbGwgdGhyZWUgb2YgdGhlc2UgZmllbGRzLCBub3QganVzdCBgZGVsdGFgLiBIbW0sIHRoYXQmIzM5O3MgaW50ZXJlc3RpbmcuIEkgaW1tZWRpYXRlbHkgcmVhbGl6ZSB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYmVjYXVzZSwgcHJldmlvdXNseSwgaXQgY291bGQgaGF2ZSBiZWVuIHJlbHlpbmcgb24gdW5pbml0aWFsaXplZCBtZW1vcnkgZm9yIHRob3NlIGZpZWxkcy4gVGhhdCYjMzk7cyBhIHBvdGVudGlhbCBidWcgd2FpdGluZyB0byBoYXBwZW4sIGFuZCB0aGlzIGlzIGEgY2xlYW4gZml4LiBOb3cgdGhlIG5leHQgdGhpbmcgSSBuZWVkIHRvIGRvIGlzIGxvb2sgZm9yIHdoZXJlIHRoZSBJUFZTIGNvbmZpZyBpcywgc28gSSBjYW4gc2VlIHdoYXQgZnVuY3Rpb25hbGl0eSBpcyBnb2luZyB0byBiZSBhZmZlY3RlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBhY3R1YWxseSBiZWluZyB6ZXJvZWQgb3V0IG5vdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVBfVlMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctNC0jXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo1Om1lbnVjb25maWcgSVBfVlNcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTYtXHR0cmlzdGF0ZSBcJiMzNDtJUCB2aXJ0dWFsIHNlcnZlciBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Mjg2PWNvbW1lbnQgJiMzOTtJUFZTIFNIIHNjaGVkdWxlciYjMzk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODctXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyODg6Y29uZmlnIElQX1ZTX1NIX1RBQl9CSVRTXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODktXHRpbnQgXCYjMzQ7SVBWUyBzb3VyY2UgaGFzaGluZyB0YWJsZSBzaXplICh0aGUgTnRoIHBvd2VyIG9mIDIpXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzAxPWNvbW1lbnQgJiMzOTtJUFZTIE1IIHNjaGVkdWxlciYjMzk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDItXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMDM6Y29uZmlnIElQX1ZTX01IX1RBQl9JTkRFWFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzA0LVx0aW50IFwmIzM0O0lQVlMgbWFnbGV2IGhhc2hpbmcgdGFibGUgaW5kZXggb2Ygc2l6ZSAodGhlIHByaW1lIG51bWJlcnMpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTU6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzE5NwoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCYjMzk7cyBwZXJzcGVjdGl2ZToKCioqRGl2aW5nIGludG8gdGhlIElQVlMgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCB0aGUgY29udGV4dCBpcyBjbGVhcmx5IGNlbnRlcmVkIGFyb3VuZCBgSVBfVlNgLiBUaGF0IHRlbGxzIG1lIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggSVAgVmlydHVhbCBTZXJ2ZXIsIGxpa2VseSBpbiBhIExpbnV4IGtlcm5lbCBjb250ZXh0LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gY29uZmlybSB0aGF0IHRoaXMgaXMgdGhlIHByaW1hcnkgZm9jdXMuCgpOb3csIHRoZSBtZW50aW9uIG9mIGBpcF92c19jb25uX25ld2AgaXMgc2lnbmlmaWNhbnQuIFRoYXQmIzM5O3MgYSBsb3ctbGV2ZWwgZnVuY3Rpb24gcmVsYXRlZCB0byBjb25uZWN0aW9uIHRyYWNraW5nIHdpdGhpbiB0aGUgSVBWUyBmcmFtZXdvcmsuICBNeSBwcmltYXJ5IHF1ZXN0aW9uIGJlY29tZXM6IGFyZSB0aGVyZSBvdGhlciwgKm5lY2Vzc2FyeSoga2VybmVsIGNvbmZpZ3MgSSBuZWVkIHRvIHZlcmlmeSAqYWxvbmdzaWRlKiBgSVBfVlNgIHRvIGVuc3VyZSB0aGF0IGBpcF92c19jb25uX25ld2AgZnVuY3Rpb25zIGNvcnJlY3RseSBhbmQgbXkgb3ZlcmFsbCBJUFZTIHNldHVwIGlzIHNvdW5kPyBJJiMzOTttIG5vdCBqdXN0IGxvb2tpbmcgZm9yICYjMzQ7cmVjb21tZW5kZWQmIzM0OyBjb25maWdzIGhlcmU7IEkmIzM5O20gdHJ5aW5nIHRvIGlkZW50aWZ5ICpjcml0aWNhbCBkZXBlbmRlbmNpZXMqLiBGb3IgZXhhbXBsZSwgZG8gSSBuZWVkIGNlcnRhaW4gb3B0aW9ucyBlbmFibGVkIHdpdGhpbiBgSVBfVlNgIGl0c2VsZj8gT3IgcGVyaGFwcyByZWxhdGVkIG5ldHdvcmtpbmcgbW9kdWxlcz8gVGhhdCYjMzk7cyB0aGUgcmVhbCBjaGFsbGVuZ2UsIHRvIGZpbmQgZGVwZW5kZW5jaWVzIG9yIGNvbmZsaWN0cywgbm90IGp1c3QgdGhlIGJhc2UgZmVhdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTU6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXBfdnNfY29ubl9uZXcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvaXBfdnMuaD0xNjg4PWlwX3ZzX2huX3RvX2Nvbm4oc3RydWN0IGlwX3ZzX2Nvbm5faG5vZGUgKmhuKVxuLS1cbmluY2x1ZGUvbmV0L2lwX3ZzLmgtMTY5My1cbmluY2x1ZGUvbmV0L2lwX3ZzLmg6MTY5NDpzdHJ1Y3QgaXBfdnNfY29ubiAqaXBfdnNfY29ubl9uZXcoY29uc3Qgc3RydWN0IGlwX3ZzX2Nvbm5fcGFyYW0gKnAsIGludCBkZXN0X2FmLFxuaW5jbHVkZS9uZXQvaXBfdnMuaC0xNjk1LVx0XHRcdFx0ICBjb25zdCB1bmlvbiBuZl9pbmV0X2FkZHIgKmRhZGRyLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM9ODAwPXN0YXRpYyB2b2lkIGNvbm5fcmVzaXplX3dvcmtfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy05MjQtICpcdEJpbmQgYSBjb25uZWN0aW9uIGVudHJ5IHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgcGFja2V0X3htaXQuXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjkyNTogKlx0Q2FsbGVkIGJ5IGlwX3ZzX2Nvbm5fbmV3LlxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy05MjYtICovXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYz0xMzUyPXN0cnVjdCBpcF92c19jb25uICpcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTM1MzppcF92c19jb25uX25ldyhjb25zdCBzdHJ1Y3QgaXBfdnNfY29ubl9wYXJhbSAqcCwgaW50IGRlc3RfYWYsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTEzNTQtXHQgICAgICAgY29uc3QgdW5pb24gbmZfaW5ldF9hZGRyICpkYWRkciwgX19iZTE2IGRwb3J0LCB1bnNpZ25lZCBpbnQgZmxhZ3MsXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYz01Nz1FWFBPUlRfU1lNQk9MKGlwX3ZzX3Byb3RvX25hbWUpO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzo1ODpFWFBPUlRfU1lNQk9MKGlwX3ZzX2Nvbm5fbmV3KTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtNTktRVhQT1JUX1NZTUJPTChpcF92c19jb25uX2luX2dldCk7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYz00MzE9aXBfdnNfc2NoZWRfcGVyc2lzdChzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtNTQ4LVx0XHQgKiB3aGVuIHRoZSB0ZW1wbGF0ZSBleHBpcmVzICovXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjU0OTpcdFx0Y3QgPSBpcF92c19jb25uX25ldyhcdTAwMjZwYXJhbSwgZGVzdC1cdTAwM2VhZiwgXHUwMDI2ZGVzdC1cdTAwM2VhZGRyLCBkcG9ydCxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtNTUwLVx0XHRcdFx0ICAgIElQX1ZTX0NPTk5fRl9URU1QTEFURSwgZGVzdCwgc2tiLVx1MDAzZW1hcmspO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtNTc3LVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzo1Nzg6XHRjcCA9IGlwX3ZzX2Nvbm5fbmV3KFx1MDAyNnBhcmFtLCBkZXN0LVx1MDAzZWFmLCBcdTAwMjZkZXN0LVx1MDAzZWFkZHIsIGRwb3J0LCBmbGFncywgZGVzdCxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtNTc5LVx0XHRcdCAgICBza2ItXHUwMDNlbWFyayk7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy02MTItICogLTEgOiAgc2NoZWR1bGVyIHRyaWVkIHRvIHNjaGVkdWxlIGJ1dCBmYXRhbCBlcnJvciBvY2N1cnJlZCwgZWcuXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjYxMzogKiAgICAgICBpcF92c19jb25uX25ldyBmYWlsdXJlIChFTk9NRU0pIG9yIGlwX3ZzX3NpcF9maWxsX3BhcmFtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTYxNC0gKiAgICAgICBmYWlsdXJlIHN1Y2ggYXMgbWlzc2luZyBDYWxsLUlELCBFTk9NRU0gb24gc2tiX2xpbmVhcml6ZVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM9NjE5PWlwX3ZzX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy03MjYtXHRcdFx0XHQgICAgICBjYWRkciwgY3BvcnQsIHZhZGRyLCB2cG9ydCwgXHUwMDI2cCk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjcyNzpcdFx0Y3AgPSBpcF92c19jb25uX25ldyhcdTAwMjZwLCBkZXN0LVx1MDAzZWFmLCBcdTAwMjZkZXN0LVx1MDAzZWFkZHIsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTcyOC1cdFx0XHRcdCAgICBkZXN0LVx1MDAzZXBvcnQgPyBkZXN0LVx1MDAzZXBvcnQgOiB2cG9ydCxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTc2Mz1pbnQgaXBfdnNfbGVhdmUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2Yywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTc5NC1cdFx0XHRcdFx0ICAgICAgXHUwMDI2aXBoLVx1MDAzZWRhZGRyLCBwcHRyWzFdLCBcdTAwMjZwKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6Nzk1Olx0XHRcdGNwID0gaXBfdnNfY29ubl9uZXcoXHUwMDI2cCwgc3ZjLVx1MDAzZWFmLCBcdTAwMjZkYWRkciwgMCxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtNzk2LVx0XHRcdFx0XHQgICAgSVBfVlNfQ09OTl9GX0JZUEFTUyB8IGZsYWdzLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM9MTMwNz1zdHJ1Y3QgaXBfdnNfY29ubiAqaXBfdnNfbmV3X2Nvbm5fb3V0KHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0xMzQ5LVx0XHRpZiAoIWN0IHx8ICFpcF92c19jaGVja190ZW1wbGF0ZShjdCwgZGVzdCkpIHtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MTM1MDpcdFx0XHRjdCA9IGlwX3ZzX2Nvbm5fbmV3KFx1MDAyNnBhcmFtLCBkZXN0LVx1MDAzZWFmLCBkYWRkciwgZHBvcnQsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTEzNTEtXHRcdFx0XHRcdCAgICBJUF9WU19DT05OX0ZfVEVNUExBVEUsIGRlc3QsIDApO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMTM2Ny1cdFx0XHQgICAgICBjYWRkciwgY3BvcnQsIHZhZGRyLCB2cG9ydCwgXHUwMDI2cGFyYW0pO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoxMzY4Olx0Y3AgPSBpcF92c19jb25uX25ldyhcdTAwMjZwYXJhbSwgZGVzdC1cdTAwM2VhZiwgZGFkZHIsIGRwb3J0LCBmbGFncywgZGVzdCwgMCk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTEzNjktXHRpZiAoIWNwKSB7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Z0cC5jPTI0OD1zdGF0aWMgaW50IGlwX3ZzX2Z0cF9vdXQoc3RydWN0IGlwX3ZzX2FwcCAqYXBwLCBzdHJ1Y3QgaXBfdnNfY29ubiAqY3AsXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Z0cC5jLTMzMC1cdFx0XHRcdCAgICAgIDAsIFx1MDAyNmNwLVx1MDAzZXZhZGRyLCBwb3J0LCBcdTAwMjZwKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19mdHAuYzozMzE6XHRcdG5fY3AgPSBpcF92c19jb25uX25ldyhcdTAwMjZwLCBjcC1cdTAwM2VhZiwgXHUwMDI2ZnJvbSwgcG9ydCxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19mdHAuYy0zMzItXHRcdFx0XHQgICAgICBJUF9WU19DT05OX0ZfTk9fQ1BPUlQgfFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19mdHAuYz00MTg9c3RhdGljIGludCBpcF92c19mdHBfaW4oc3RydWN0IGlwX3ZzX2FwcCAqYXBwLCBzdHJ1Y3QgaXBfdnNfY29ubiAqY3AsXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Z0cC5jLTUzNS1cdFx0aWYgKCFuX2NwKSB7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZnRwLmM6NTM2Olx0XHRcdG5fY3AgPSBpcF92c19jb25uX25ldyhcdTAwMjZwLCBjcC1cdTAwM2VhZiwgXHUwMDI2Y3AtXHUwMDNlZGFkZHIsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZnRwLmMtNTM3LVx0XHRcdFx0XHQgICAgICBodG9ucyhudG9ocyhjcC1cdTAwM2VkcG9ydCktMSksXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3N5bmMuYz04NDE9c3RhdGljIHZvaWQgaXBfdnNfcHJvY19jb25uKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3QgaXBfdnNfY29ubl9wYXJhbSAqcGFyYW0sXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3N5bmMuYy05MTAtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc3luYy5jOjkxMTpcdFx0Y3AgPSBpcF92c19jb25uX25ldyhwYXJhbSwgdHlwZSwgZGFkZHIsIGRwb3J0LCBmbGFncywgZGVzdCxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zeW5jLmMtOTEyLVx0XHRcdFx0ICAgIGZ3bWFyayk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE1OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU0NzAKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJUFZTIENvbm5lY3Rpb24gQ3JlYXRpb24gUGF0Y2gqKgoKT2theSwgc28gdGhlIGZ1bmN0aW9uIGBpcF92c19jb25uX25ld2AgaXMgY2FsbGVkIGFsbCBvdmVyIHRoZSBwbGFjZS4gVGhhdCBpbW1lZGlhdGVseSBmbGFncyB0aGlzIGFzIGltcG9ydGFudCBiZWNhdXNlIGl0JiMzOTtzIHBhcnQgb2YgdGhlIElQVlMgY29yZSwgYW5kIGEgYnVnIGhlcmUgY291bGQgYmUgd2lkZXNwcmVhZC4gVGhlIHBhdGNoIHRhcmdldHMgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUgd2l0aGluIGBpcF92c19jb25uX25ld2AgZHVyaW5nIGNvbm5lY3Rpb24gYWxsb2NhdGlvbi4gR2l2ZW4gdGhlIHBvdGVudGlhbCBpbXBhY3QsIHRoaXMgaXMgc2NyZWFtaW5nIGZvciBzb21lIHNlcmlvdXMgZnV6emluZy4KCkJlZm9yZSBJIGRpdmUgaW4sIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBlbnZpcm9ubWVudC4gV2hhdCBjb25maWd1cmF0aW9ucyBhcmUgcmVsZXZhbnQgaGVyZT8gYElQX1ZTYCBpcyB0aGUgb2J2aW91cyBvbmUsIGJ1dCBhcmUgdGhlcmUgYW55IG90aGVycyB0aGF0IG1pZ2h0IGltcGFjdCB0aGlzIHNwZWNpZmljIGNvZGUgcGF0aD8gTGV0IG1lIGNoZWNrIHRoZSBrZXJuZWwgY29uZmlnIGZvciBhbnkgaGlkZGVuIGRlcGVuZGVuY2llcy4KClRoZSBwYXRjaCBpdHNlbGYgaXMgbG9jYXRlZCBpbiBgbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY2AsIHNvIEkgc2hvdWxkIGJlIGFibGUgdG8gY3Jvc3MtcmVmZXJlbmNlIHRvIHRoZSBNYWtlZmlsZSBmb3IgdGhlIG1vZHVsZS4gQSBxdWljayBsb29rIGluIGBuZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGVgIHNob3VsZCB0ZWxsIG1lIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgcHJlLXJlcXVpc2l0ZXMgZm9yIGdldHRpbmcgdGhpcyBydW5uaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZSYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0I1xuICAgMzpcdCMgTWFrZWZpbGUgZm9yIHRoZSBJUFZTIG1vZHVsZXMgb24gdG9wIG9mIElQdjQuXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdCMgSVBWUyB0cmFuc3BvcnQgcHJvdG9jb2wgbG9hZCBiYWxhbmNpbmcgc3VwcG9ydFxuICAgNzpcdGlwX3ZzX3Byb3RvLW9ianMteSA6PVxuICAgODpcdGlwX3ZzX3Byb3RvLW9ianMtJChDT05GSUdfSVBfVlNfUFJPVE9fVENQKSAmIzQzOz0gaXBfdnNfcHJvdG9fdGNwLm9cbiAgIDk6XHRpcF92c19wcm90by1vYmpzLSQoQ09ORklHX0lQX1ZTX1BST1RPX1VEUCkgJiM0Mzs9IGlwX3ZzX3Byb3RvX3VkcC5vXG4gIDEwOlx0aXBfdnNfcHJvdG8tb2Jqcy0kKENPTkZJR19JUF9WU19QUk9UT19BSF9FU1ApICYjNDM7PSBpcF92c19wcm90b19haF9lc3Aub1xuICAxMTpcdGlwX3ZzX3Byb3RvLW9ianMtJChDT05GSUdfSVBfVlNfUFJPVE9fU0NUUCkgJiM0Mzs9IGlwX3ZzX3Byb3RvX3NjdHAub1xuICAxMjpcdFxuICAxMzpcdGlwX3ZzLWV4dHJhX29ianMteSA6PVxuICAxNDpcdGlwX3ZzLWV4dHJhX29ianMtJChDT05GSUdfSVBfVlNfTkZDVCkgJiM0Mzs9IGlwX3ZzX25mY3Qub1xuICAxNTpcdFxuICAxNjpcdGlwX3ZzLW9ianMgOj1cdGlwX3ZzX2Nvbm4ubyBpcF92c19jb3JlLm8gaXBfdnNfY3RsLm8gaXBfdnNfc2NoZWQub1x0ICAgXFxcbiAgMTc6XHRcdFx0aXBfdnNfeG1pdC5vIGlwX3ZzX2FwcC5vIGlwX3ZzX3N5bmMub1x0ICAgXHRcdCAgIFxcXG4gIDE4Olx0XHRcdGlwX3ZzX2VzdC5vIGlwX3ZzX3Byb3RvLm8gaXBfdnNfcGUub1x0XHRcdCAgIFxcXG4gIDE5Olx0XHRcdCQoaXBfdnNfcHJvdG8tb2Jqcy15KSAkKGlwX3ZzLWV4dHJhX29ianMteSlcbiAgMjA6XHRcbiAgMjE6XHRcbiAgMjI6XHQjIElQVlMgY29yZVxuICAyMzpcdG9iai0kKENPTkZJR19JUF9WUykgJiM0Mzs9IGlwX3ZzLm9cbiAgMjQ6XHRcbiAgMjU6XHQjIElQVlMgc2NoZWR1bGVyc1xuICAyNjpcdG9iai0kKENPTkZJR19JUF9WU19SUikgJiM0Mzs9IGlwX3ZzX3JyLm9cbiAgMjc6XHRvYmotJChDT05GSUdfSVBfVlNfV1JSKSAmIzQzOz0gaXBfdnNfd3JyLm9cbiAgMjg6XHRvYmotJChDT05GSUdfSVBfVlNfTEMpICYjNDM7PSBpcF92c19sYy5vXG4gIDI5Olx0b2JqLSQoQ09ORklHX0lQX1ZTX1dMQykgJiM0Mzs9IGlwX3ZzX3dsYy5vXG4gIDMwOlx0b2JqLSQoQ09ORklHX0lQX1ZTX0ZPKSAmIzQzOz0gaXBfdnNfZm8ub1xuICAzMTpcdG9iai0kKENPTkZJR19JUF9WU19PVkYpICYjNDM7PSBpcF92c19vdmYub1xuICAzMjpcdG9iai0kKENPTkZJR19JUF9WU19MQkxDKSAmIzQzOz0gaXBfdnNfbGJsYy5vXG4gIDMzOlx0b2JqLSQoQ09ORklHX0lQX1ZTX0xCTENSKSAmIzQzOz0gaXBfdnNfbGJsY3Iub1xuICAzNDpcdG9iai0kKENPTkZJR19JUF9WU19ESCkgJiM0Mzs9IGlwX3ZzX2RoLm9cbiAgMzU6XHRvYmotJChDT05GSUdfSVBfVlNfU0gpICYjNDM7PSBpcF92c19zaC5vXG4gIDM2Olx0b2JqLSQoQ09ORklHX0lQX1ZTX01IKSAmIzQzOz0gaXBfdnNfbWgub1xuICAzNzpcdG9iai0kKENPTkZJR19JUF9WU19TRUQpICYjNDM7PSBpcF92c19zZWQub1xuICAzODpcdG9iai0kKENPTkZJR19JUF9WU19OUSkgJiM0Mzs9IGlwX3ZzX25xLm9cbiAgMzk6XHRvYmotJChDT05GSUdfSVBfVlNfVFdPUykgJiM0Mzs9IGlwX3ZzX3R3b3Mub1xuICA0MDpcdFxuICA0MTpcdCMgSVBWUyBhcHBsaWNhdGlvbiBoZWxwZXJzXG4gIDQyOlx0b2JqLSQoQ09ORklHX0lQX1ZTX0ZUUCkgJiM0Mzs9IGlwX3ZzX2Z0cC5vXG4gIDQzOlx0XG4gIDQ0Olx0IyBJUFZTIGNvbm5lY3Rpb24gdGVtcGxhdGUgcmV0cmlldmVyc1xuICA0NTpcdG9iai0kKENPTkZJR19JUF9WU19QRV9TSVApICYjNDM7PSBpcF92c19wZV9zaXAub1xuICA0NjpcdGlmZGVmIENPTkZJR19HQ09WX1BST0ZJTEVfSVBWU1xuICA0NzpcdEdDT1ZfUFJPRklMRSA6PSB5XG4gIDQ4Olx0ZW5kaWZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTU6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjg0MAoJCQkJCQkJb3V0cHV0OiAxMDgKCQkJCQkJCXRob3VnaHRzOiA0MTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIElQVlMgQ29ubmVjdGlvbiBNb2R1bGUqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93biBmcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZS4gRmlyc3QsIEkmIzM5O20gbm90aW5nIHRoYXQgYGlwX3ZzX2Nvbm4ub2AgaXMgcGFydCBvZiB0aGUgYnJvYWRlciBgaXBfdnMtb2Jqc2AgbW9kdWxlLCBhbmQgdGhhdCB0aGUgYElQX1ZTYCBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyB0aGUgb25seSBkZXBlbmRlbmN5IGhlcmUuIE5vIHN1cnByaXNlcyB0aGVyZTsgc3RhbmRhcmQgc3R1ZmYuCgpOb3csIG9udG8gdGhlIG1lYXQgb2YgaXQsIGBGb2N1c1N5bWJvbHNgLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb24gaXMgYGlwX3ZzX2Nvbm5fbmV3YC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgYXNzZXNzIGlmIGBpcF92c19jb25uX25ld2AgaXMgYSBob3QtcGF0aCBmdW5jdGlvbiwgd2hpY2ggaXQgaXMsIGFzIGl0IGNyZWF0ZXMgYSBuZXcgY29ubmVjdGlvbiB3aGVuIG9uZSBpcyBlc3RhYmxpc2hlZC4gVGhpcyBtYWtlcyBpdCBhIHBvdGVudGlhbCB0YXJnZXQuIEhvd2V2ZXIsIEkgd2FudCB0byBzZWUgaWYgb3RoZXIgZnVuY3Rpb25zIGNhbGxpbmcgYGlwX3ZzX2Nvbm5fbmV3YCBtaWdodCBvZmZlciBiZXR0ZXIgZW50cnkgcG9pbnRzLiBJIGNoZWNrZWQgdGhlIGNhbGwgc2l0ZXM6IGBpcF92c19zY2hlZHVsZWAsIGBpcF92c19uZXdfY29ubl9vdXRgLCBgaXBfdnNfZnRwX291dGAsIGBpcF92c19mdHBfaW5gLCBhbmQgYGlwX3ZzX3Byb2NfY29ubmAgKHNwZWNpZmljYWxseSBmcm9tIHRoZSBzeW5jIHByb2Nlc3MpIGFsbCBsZWFkIGhlcmUuIEhvd2V2ZXIsIGBpcF92c19jb25uX25ld2AgaXRzZWxmIGlzIGFsc28gbG9va2luZyBnb29kLgoKQSBxdWljayBjaGVjayB0byBzZWUgaWYgYGlwX3ZzX2Nvbm5fbmV3YCBpcyBzdGF0aWMgb3IgZXhwb3J0ZWQgcmV2ZWFsZWQgdGhlIGxhdHRlcjogYEVYUE9SVF9TWU1CT0woaXBfdnNfY29ubl9uZXcpO2AgVGhhdCYjMzk7cyBpbXBvcnRhbnQhIEl0IG1lYW5zIHRoaXMgZnVuY3Rpb24gY2FuIGJlIGNhbGxlZCBmcm9tIG90aGVyIG1vZHVsZXMsIGV4cGFuZGluZyB0aGUgYXR0YWNrIHN1cmZhY2UuIFRoaXMgY29uZmlybXMgbXkgaW5pdGlhbCBhc3Nlc3NtZW50LCBzbyBJJiMzOTtsbCBhZGQgYGlwX3ZzX2Nvbm5fbmV3YCB0byB0aGUgYEZvY3VzU3ltYm9sc2AgbGlzdC4KCkp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBJIHJlLXJldmlld2VkIHRoZSBwYXRjaCwgYW5kIHRoZSBvbmx5IG1vZGlmaWNhdGlvbiBpcyBpbmRlZWQgdG8gYGlwX3ZzX2Nvbm5fbmV3YC4KClRoZXJlZm9yZSwgbXkgZmluYWwgc3VtbWFyeSBpczogSSYjMzk7bSBtYXJraW5nIHRoaXMgYXMgYFdvcnRoRnV6emluZzogdHJ1ZWAgZ2l2ZW4gdGhhdCB0aGUgcGF0Y2ggdGFyZ2V0cyBhIGtleSBjb25uZWN0aW9uIGNyZWF0aW9uIGZ1bmN0aW9uLiBUaGUgdGFyZ2V0IGZ1bmN0aW9uIGZvciBmdXp6aW5nIGlzIGBGb2N1c1N5bWJvbHM6IFsmIzM0O2lwX3ZzX2Nvbm5fbmV3JiMzNDtdYC4gVGhlIG1pbmltYWwgcmVxdWlyZWQgY29uZmlndXJhdGlvbiBpcyBgRW5hYmxlQ29uZmlnczogWyYjMzQ7SVBfVlMmIzM0O11gLiBNeSByZWFzb25pbmcgaXMgdGhlIHBhdGNoIGZpeGVzIGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHZ1bG5lcmFiaWxpdHkgd2l0aGluIGBpcF92c19jb25uX25ld2AsIHNwZWNpZmljYWxseSB6ZXJvaW5nIG91dCB0aGUgYGlwX3ZzX3NlcWAgc3RydWN0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIHRoZSBJUFZTIGNvcmUgbG9naWMgYW5kIGlzIHRyaWdnZXJlZCB3aGVuIG5ldyBJUFZTIGNvbm5lY3Rpb25zIGFyZSBlc3RhYmxpc2hlZC4gVGhpcyBzZWVtcyBhIHdvcnRod2hpbGUgdGFyZ2V0IGZvciBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVBfVlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpcF92c19jb25uX25ldyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZSBpbiBgaXBfdnNfY29ubl9uZXdgIGJ5IHplcm9pbmcgb3V0IHRoZSBlbnRpcmUgYGlwX3ZzX3NlcWAgc3RydWN0cyBpbnN0ZWFkIG9mIGp1c3QgdGhlIGBkZWx0YWAgZmllbGQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgSVBWUyBjb3JlIGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgd2hlbiBlc3RhYmxpc2hpbmcgbmV3IElQVlMgY29ubmVjdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXBfdnNfY29ubl9uZXcmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUgaW4gYGlwX3ZzX2Nvbm5fbmV3YCBieSB6ZXJvaW5nIG91dCB0aGUgZW50aXJlIGBpcF92c19zZXFgIHN0cnVjdHMgaW5zdGVhZCBvZiBqdXN0IHRoZSBgZGVsdGFgIGZpZWxkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIElQVlMgY29yZSBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIHdoZW4gZXN0YWJsaXNoaW5nIG5ldyBJUFZTIGNvbm5lY3Rpb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDJUMTU6MzU6MDguMTg3NzczMDE1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQxODM2Mzg3NjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBfVlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcF92c19jb25uX25ld1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3VlIGluIGBpcF92c19jb25uX25ld2AgYnkgemVyb2luZyBvdXQgdGhlIGVudGlyZSBgaXBfdnNfc2VxYCBzdHJ1Y3RzIGluc3RlYWQgb2YganVzdCB0aGUgYGRlbHRhYCBmaWVsZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBJUFZTIGNvcmUgbG9naWMgdGhhdCBjYW4gYmUgcmVhY2hlZCB3aGVuIGVzdGFibGlzaGluZyBuZXcgSVBWUyBjb25uZWN0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTU6MzU6MDguMTg3Nzc5NzU1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODk3MjAwNTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBmMDllZjcwMDJiOGIzMTYxMzQzNzIzYWJmY2JiYTBmZmU3OTY3OWIwXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDIgMTU6MzU6MDYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmNcXG5pbmRleCBjYjM2NjQxZjhkMWNjMS4uNmVkMjYyMjM2M2YwZDYgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmNcXG5AQCAtMTQyMCw4ICsxNDIwLDggQEAgaXBfdnNfY29ubl9uZXcoY29uc3Qgc3RydWN0IGlwX3ZzX2Nvbm5fcGFyYW0gKnAsIGludCBkZXN0X2FmLFxcbiBcXHRjcC1cXHUwMDNlYXBwID0gTlVMTDtcXG4gXFx0Y3AtXFx1MDAzZWFwcF9kYXRhID0gTlVMTDtcXG4gXFx0LyogcmVzZXQgc3RydWN0IGlwX3ZzX3NlcSAqL1xcbi1cXHRjcC1cXHUwMDNlaW5fc2VxLmRlbHRhID0gMDtcXG4tXFx0Y3AtXFx1MDAzZW91dF9zZXEuZGVsdGEgPSAwO1xcbitcXHRtZW1zZXQoXFx1MDAyNmNwLVxcdTAwM2Vpbl9zZXEsIDAsIHNpemVvZihjcC1cXHUwMDNlaW5fc2VxKSk7XFxuK1xcdG1lbXNldChcXHUwMDI2Y3AtXFx1MDAzZW91dF9zZXEsIDAsIHNpemVvZihjcC1cXHUwMDNlb3V0X3NlcSkpO1xcbiBcXG4gXFx0aWYgKHVubGlrZWx5KGZsYWdzIFxcdTAwMjYgSVBfVlNfQ09OTl9GX05PX0NQT1JUKSkge1xcbiBcXHRcXHRpbnQgYWZfaWQgPSBpcF92c19hZl9pbmRleChjcC1cXHUwMDNlYWYpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNTozNTowOC42NzgyMzM3MTdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzNjkzMTY3ODIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX1ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaXBfdnNfY29ubl9uZXdcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZSBpbiBgaXBfdnNfY29ubl9uZXdgIGJ5IHplcm9pbmcgb3V0IHRoZSBlbnRpcmUgYGlwX3ZzX3NlcWAgc3RydWN0cyBpbnN0ZWFkIG9mIGp1c3QgdGhlIGBkZWx0YWAgZmllbGQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgSVBWUyBjb3JlIGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgd2hlbiBlc3RhYmxpc2hpbmcgbmV3IElQVlMgY29ubmVjdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZjA5ZWY3MDAyYjhiMzE2MTM0MzcyM2FiZmNiYmEwZmZlNzk2NzliMFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDIgMTU6MzU6MDYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xuaW5kZXggY2IzNjY0MWY4ZDFjYzEuLjZlZDI2MjIzNjNmMGQ2IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xuQEAgLTE0MjAsOCArMTQyMCw4IEBAIGlwX3ZzX2Nvbm5fbmV3KGNvbnN0IHN0cnVjdCBpcF92c19jb25uX3BhcmFtICpwLCBpbnQgZGVzdF9hZixcbiBcdGNwLVx1MDAzZWFwcCA9IE5VTEw7XG4gXHRjcC1cdTAwM2VhcHBfZGF0YSA9IE5VTEw7XG4gXHQvKiByZXNldCBzdHJ1Y3QgaXBfdnNfc2VxICovXG4tXHRjcC1cdTAwM2Vpbl9zZXEuZGVsdGEgPSAwO1xuLVx0Y3AtXHUwMDNlb3V0X3NlcS5kZWx0YSA9IDA7XG4rXHRtZW1zZXQoXHUwMDI2Y3AtXHUwMDNlaW5fc2VxLCAwLCBzaXplb2YoY3AtXHUwMDNlaW5fc2VxKSk7XG4rXHRtZW1zZXQoXHUwMDI2Y3AtXHUwMDNlb3V0X3NlcSwgMCwgc2l6ZW9mKGNwLVx1MDAzZW91dF9zZXEpKTtcbiBcbiBcdGlmICh1bmxpa2VseShmbGFncyBcdTAwMjYgSVBfVlNfQ09OTl9GX05PX0NQT1JUKSkge1xuIFx0XHRpbnQgYWZfaWQgPSBpcF92c19hZl9pbmRleChjcC1cdTAwM2VhZik7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNTozNTowOC42NzgyMzUwMzdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODcwNjU2OTg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFJlY2VudCBJUFZTIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmNgLiBJdCBzZWVtcyB0byBiZSBtb2RpZnlpbmcgdGhlIGluaXRpYWxpemF0aW9uIG9mIHNlcXVlbmNlIG51bWJlcnMsIHNwZWNpZmljYWxseSBgY3AtXHUwMDNlaW5fc2VxYCBhbmQgYGNwLVx1MDAzZW91dF9zZXFgLCB3aXRoaW4gdGhlIGBpcF92c19jb25uX25ld2AgZnVuY3Rpb24uIEludGVyZXN0aW5nLiBJbnN0ZWFkIG9mIHRoZSBzdHJhaWdodGZvcndhcmQgYGRlbHRhID0gMGAgYXNzaWdubWVudCBmb3IganVzdCB0aGUgc2VxdWVuY2UgbnVtYmVycywgdGhlIHBhdGNoIG5vdyB1c2VzIGBtZW1zZXRgIHRvIHplcm8gb3V0IHRoZSBlbnRpcmUgc3RydWN0dXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aHkuIENsZWFybHkgdGhlcmUncyBhIHBlcmNlaXZlZCBiZW5lZml0IHRvIHplcm9pbmcgdGhlICplbnRpcmUqIHN0cnVjdCwgbm90IGp1c3QgdGhlc2UgdHdvIG1lbWJlcnMuIEkgd29uZGVyIHdoYXQgZWxzZSBpcyBpbiB0aGF0IGBzdHJ1Y3QgaXBfdnNfc2VxYCB0aGF0IHRoZXkncmUgbm93IG51bGxpZnlpbmc/IFRoYXQncyB0aGUga2V5LiBJIG5lZWQgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIHN0cnVjdCBkZWZpbml0aW9uIHRvIGZpZ3VyZSBvdXQgd2hhdCBvdGhlciBmaWVsZHMgYXJlIGJlaW5nIGFmZmVjdGVkIGJ5IHRoaXMgY2hhbmdlIGFuZCB3aGF0IHRoZSBpbXBsaWNhdGlvbnMgYXJlIGZvciBJUFZTJ3MgY29ubmVjdGlvbiB0cmFja2luZyBiZWhhdmlvci4gTGV0IG1lIGNoZWNrIHRoZSBkZWZpbml0aW9uIG9mIGBzdHJ1Y3QgaXBfdnNfc2VxYCBhbmQgc2VlIHdoYXQncyBiZWluZyBjbGVhcmVkIGJlc2lkZXMgdGhlIG9idmlvdXMgc2VxdWVuY2UgbnVtYmVyIGZpZWxkcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkyMywiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTU6MzU6MTIuNTQ4ODk0NDIzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxNDQwMTI2MDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RydWN0IGlwX3ZzX3NlcSBcXFxce1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL25ldC9pcF92cy5oPTM0ND1lbnVtIGlwX3ZzX3NjdHBfc3RhdGVzIHtcXG4tLVxcbmluY2x1ZGUvbmV0L2lwX3ZzLmgtMzcwLSAqL1xcbmluY2x1ZGUvbmV0L2lwX3ZzLmg6MzcxOnN0cnVjdCBpcF92c19zZXEge1xcbmluY2x1ZGUvbmV0L2lwX3ZzLmgtMzcyLVxcdF9fdTMyXFx0XFx0XFx0aW5pdF9zZXE7XFx0LyogQWRkIGRlbHRhIGZyb20gdGhpcyBzZXEgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTU6MzU6MTYuNjkyOTEyMzQ4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjc1ODkwODE4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEkgbmVlZCB0byBnZXQgYSByZWFsbHkgc29saWQgdW5kZXJzdGFuZGluZyBvZiB0aGUgY29udGV4dCBoZXJlLiBJIG5lZWQgdG8gZXhhbWluZSB0aGUgZnVsbCBzdHJ1Y3QgZGVmaW5pdGlvbiB0byBtYWtlIGFueSBtZWFuaW5nZnVsIGp1ZGdtZW50LiBJIGNhbid0IGp1c3Qgb3BlcmF0ZSBpbiB0aGUgYWJzdHJhY3Q7IEkgbmVlZCB0byBzZWUgdGhlIHNwZWNpZmljcy4gTGV0J3MgZ2V0IHRoZSBmdWxsIHBpY3R1cmUgYmVmb3JlIEkgbWFrZSBhbnkgYXNzdW1wdGlvbnMuIEknbGwgbmVlZCB0byBrbm93IHRoZSBjb21wb25lbnRzLCB0aGVpciB0eXBlcywgdGhlaXIgcmVsYXRpb25zaGlwcyB0byBlYWNoIG90aGVyIOKAkyBldmVyeXRoaW5nLiBUaGlzIGlzIGNydWNpYWwgZm9yIGEgY29tcGxldGUgdW5kZXJzdGFuZGluZy4gVGltZSB0byByb2xsIHVwIG15IHNsZWV2ZXMgYW5kIGdldCB0aGUgZnVsbCBkZWZpbml0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzg2LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNTozNToxOS40NTE4MjI2MTZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjQzMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiaW5jbHVkZS9uZXQvaXBfdnMuaFwiLFxuICBcIkZpcnN0TGluZVwiOiAzNzAsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAzNzA6XFx0ICovXFxuIDM3MTpcXHRzdHJ1Y3QgaXBfdnNfc2VxIHtcXG4gMzcyOlxcdFxcdF9fdTMyXFx0XFx0XFx0aW5pdF9zZXE7XFx0LyogQWRkIGRlbHRhIGZyb20gdGhpcyBzZXEgKi9cXG4gMzczOlxcdFxcdF9fdTMyXFx0XFx0XFx0ZGVsdGE7XFx0XFx0LyogRGVsdGEgaW4gc2VxdWVuY2UgbnVtYmVycyAqL1xcbiAzNzQ6XFx0XFx0X191MzJcXHRcXHRcXHRwcmV2aW91c19kZWx0YTtcXHQvKiBEZWx0YSBpbiBzZXF1ZW5jZSBudW1iZXJzXFxuIDM3NTpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgKiBiZWZvcmUgbGFzdCByZXNpemVkIHBrdCAqL1xcbiAzNzY6XFx0fTtcXG4gMzc3OlxcdFxcbiAzNzg6XFx0LyogY291bnRlcnMgcGVyIGNwdSAqL1xcbiAzNzk6XFx0c3RydWN0IGlwX3ZzX2NvdW50ZXJzIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTU6MzU6MTkuNDUxOTkwNTQ2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzAxNTE5NDQyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIElQVlMgU3RydWN0IE1vZGlmaWNhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgc3RydWN0LCBhbmQgSSBzZWUgaXQgaGFzIGBpbml0X3NlcWAsIGBkZWx0YWAsIGFuZCBgcHJldmlvdXNfZGVsdGFgLiBOb3csIGl0IHNlZW1zIGxpa2UgdGhlIHJlY2VudCBjaGFuZ2UgemVyb2VzIG91dCBhbGwgdGhyZWUgb2YgdGhlc2UgZmllbGRzLCBub3QganVzdCBgZGVsdGFgLiBIbW0sIHRoYXQncyBpbnRlcmVzdGluZy4gSSBpbW1lZGlhdGVseSByZWFsaXplIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBiZWNhdXNlLCBwcmV2aW91c2x5LCBpdCBjb3VsZCBoYXZlIGJlZW4gcmVseWluZyBvbiB1bmluaXRpYWxpemVkIG1lbW9yeSBmb3IgdGhvc2UgZmllbGRzLiBUaGF0J3MgYSBwb3RlbnRpYWwgYnVnIHdhaXRpbmcgdG8gaGFwcGVuLCBhbmQgdGhpcyBpcyBhIGNsZWFuIGZpeC4gTm93IHRoZSBuZXh0IHRoaW5nIEkgbmVlZCB0byBkbyBpcyBsb29rIGZvciB3aGVyZSB0aGUgSVBWUyBjb25maWcgaXMsIHNvIEkgY2FuIHNlZSB3aGF0IGZ1bmN0aW9uYWxpdHkgaXMgZ29pbmcgdG8gYmUgYWZmZWN0ZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBhY3R1YWxseSBiZWluZyB6ZXJvZWQgb3V0IG5vdy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY5NSwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTU6MzU6MjIuNDY3MTg2ODQ0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3NDMzODY0NDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElQX1ZTXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTQtI1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjU6bWVudWNvbmZpZyBJUF9WU1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTYtXFx0dHJpc3RhdGUgXFxcIklQIHZpcnR1YWwgc2VydmVyIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0yODY9Y29tbWVudCAnSVBWUyBTSCBzY2hlZHVsZXInXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg3LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjI4ODpjb25maWcgSVBfVlNfU0hfVEFCX0JJVFNcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODktXFx0aW50IFxcXCJJUFZTIHNvdXJjZSBoYXNoaW5nIHRhYmxlIHNpemUgKHRoZSBOdGggcG93ZXIgb2YgMilcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0zMDE9Y29tbWVudCAnSVBWUyBNSCBzY2hlZHVsZXInXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzAyLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjMwMzpjb25maWcgSVBfVlNfTUhfVEFCX0lOREVYXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzA0LVxcdGludCBcXFwiSVBWUyBtYWdsZXYgaGFzaGluZyB0YWJsZSBpbmRleCBvZiBzaXplICh0aGUgcHJpbWUgbnVtYmVycylcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDE1OjM1OjI1LjIxMDU3ODU4MloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExNjMwNTQzNDk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0J3MgcGVyc3BlY3RpdmU6XG5cbioqRGl2aW5nIGludG8gdGhlIElQVlMgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIHRoZSBjb250ZXh0IGlzIGNsZWFybHkgY2VudGVyZWQgYXJvdW5kIGBJUF9WU2AuIFRoYXQgdGVsbHMgbWUgd2UncmUgZGVhbGluZyB3aXRoIElQIFZpcnR1YWwgU2VydmVyLCBsaWtlbHkgaW4gYSBMaW51eCBrZXJuZWwgY29udGV4dC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGNvbmZpcm0gdGhhdCB0aGlzIGlzIHRoZSBwcmltYXJ5IGZvY3VzLlxuXG5Ob3csIHRoZSBtZW50aW9uIG9mIGBpcF92c19jb25uX25ld2AgaXMgc2lnbmlmaWNhbnQuIFRoYXQncyBhIGxvdy1sZXZlbCBmdW5jdGlvbiByZWxhdGVkIHRvIGNvbm5lY3Rpb24gdHJhY2tpbmcgd2l0aGluIHRoZSBJUFZTIGZyYW1ld29yay4gIE15IHByaW1hcnkgcXVlc3Rpb24gYmVjb21lczogYXJlIHRoZXJlIG90aGVyLCAqbmVjZXNzYXJ5KiBrZXJuZWwgY29uZmlncyBJIG5lZWQgdG8gdmVyaWZ5ICphbG9uZ3NpZGUqIGBJUF9WU2AgdG8gZW5zdXJlIHRoYXQgYGlwX3ZzX2Nvbm5fbmV3YCBmdW5jdGlvbnMgY29ycmVjdGx5IGFuZCBteSBvdmVyYWxsIElQVlMgc2V0dXAgaXMgc291bmQ/IEknbSBub3QganVzdCBsb29raW5nIGZvciBcInJlY29tbWVuZGVkXCIgY29uZmlncyBoZXJlOyBJJ20gdHJ5aW5nIHRvIGlkZW50aWZ5ICpjcml0aWNhbCBkZXBlbmRlbmNpZXMqLiBGb3IgZXhhbXBsZSwgZG8gSSBuZWVkIGNlcnRhaW4gb3B0aW9ucyBlbmFibGVkIHdpdGhpbiBgSVBfVlNgIGl0c2VsZj8gT3IgcGVyaGFwcyByZWxhdGVkIG5ldHdvcmtpbmcgbW9kdWxlcz8gVGhhdCdzIHRoZSByZWFsIGNoYWxsZW5nZSwgdG8gZmluZCBkZXBlbmRlbmNpZXMgb3IgY29uZmxpY3RzLCBub3QganVzdCB0aGUgYmFzZSBmZWF0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTk3LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTU6MzU6MzYuODQxMTI1MTQ5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDcyNDgwMDY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwX3ZzX2Nvbm5fbmV3XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L2lwX3ZzLmg9MTY4OD1pcF92c19obl90b19jb25uKHN0cnVjdCBpcF92c19jb25uX2hub2RlICpobilcXG4tLVxcbmluY2x1ZGUvbmV0L2lwX3ZzLmgtMTY5My1cXG5pbmNsdWRlL25ldC9pcF92cy5oOjE2OTQ6c3RydWN0IGlwX3ZzX2Nvbm4gKmlwX3ZzX2Nvbm5fbmV3KGNvbnN0IHN0cnVjdCBpcF92c19jb25uX3BhcmFtICpwLCBpbnQgZGVzdF9hZixcXG5pbmNsdWRlL25ldC9pcF92cy5oLTE2OTUtXFx0XFx0XFx0XFx0ICBjb25zdCB1bmlvbiBuZl9pbmV0X2FkZHIgKmRhZGRyLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYz04MDA9c3RhdGljIHZvaWQgY29ubl9yZXNpemVfd29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtOTI0LSAqXFx0QmluZCBhIGNvbm5lY3Rpb24gZW50cnkgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBwYWNrZXRfeG1pdC5cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjkyNTogKlxcdENhbGxlZCBieSBpcF92c19jb25uX25ldy5cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTkyNi0gKi9cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM9MTM1Mj1zdHJ1Y3QgaXBfdnNfY29ubiAqXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzoxMzUzOmlwX3ZzX2Nvbm5fbmV3KGNvbnN0IHN0cnVjdCBpcF92c19jb25uX3BhcmFtICpwLCBpbnQgZGVzdF9hZixcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTEzNTQtXFx0ICAgICAgIGNvbnN0IHVuaW9uIG5mX2luZXRfYWRkciAqZGFkZHIsIF9fYmUxNiBkcG9ydCwgdW5zaWduZWQgaW50IGZsYWdzLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYz01Nz1FWFBPUlRfU1lNQk9MKGlwX3ZzX3Byb3RvX25hbWUpO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6NTg6RVhQT1JUX1NZTUJPTChpcF92c19jb25uX25ldyk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy01OS1FWFBPUlRfU1lNQk9MKGlwX3ZzX2Nvbm5faW5fZ2V0KTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM9NDMxPWlwX3ZzX3NjaGVkX3BlcnNpc3Qoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YyxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtNTQ4LVxcdFxcdCAqIHdoZW4gdGhlIHRlbXBsYXRlIGV4cGlyZXMgKi9cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjU0OTpcXHRcXHRjdCA9IGlwX3ZzX2Nvbm5fbmV3KFxcdTAwMjZwYXJhbSwgZGVzdC1cXHUwMDNlYWYsIFxcdTAwMjZkZXN0LVxcdTAwM2VhZGRyLCBkcG9ydCxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTU1MC1cXHRcXHRcXHRcXHQgICAgSVBfVlNfQ09OTl9GX1RFTVBMQVRFLCBkZXN0LCBza2ItXFx1MDAzZW1hcmspO1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy01NzctXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzo1Nzg6XFx0Y3AgPSBpcF92c19jb25uX25ldyhcXHUwMDI2cGFyYW0sIGRlc3QtXFx1MDAzZWFmLCBcXHUwMDI2ZGVzdC1cXHUwMDNlYWRkciwgZHBvcnQsIGZsYWdzLCBkZXN0LFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtNTc5LVxcdFxcdFxcdCAgICBza2ItXFx1MDAzZW1hcmspO1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy02MTItICogLTEgOiAgc2NoZWR1bGVyIHRyaWVkIHRvIHNjaGVkdWxlIGJ1dCBmYXRhbCBlcnJvciBvY2N1cnJlZCwgZWcuXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzo2MTM6ICogICAgICAgaXBfdnNfY29ubl9uZXcgZmFpbHVyZSAoRU5PTUVNKSBvciBpcF92c19zaXBfZmlsbF9wYXJhbVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtNjE0LSAqICAgICAgIGZhaWx1cmUgc3VjaCBhcyBtaXNzaW5nIENhbGwtSUQsIEVOT01FTSBvbiBza2JfbGluZWFyaXplXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTYxOT1pcF92c19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy03MjYtXFx0XFx0XFx0XFx0ICAgICAgY2FkZHIsIGNwb3J0LCB2YWRkciwgdnBvcnQsIFxcdTAwMjZwKTtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjcyNzpcXHRcXHRjcCA9IGlwX3ZzX2Nvbm5fbmV3KFxcdTAwMjZwLCBkZXN0LVxcdTAwM2VhZiwgXFx1MDAyNmRlc3QtXFx1MDAzZWFkZHIsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy03MjgtXFx0XFx0XFx0XFx0ICAgIGRlc3QtXFx1MDAzZXBvcnQgPyBkZXN0LVxcdTAwM2Vwb3J0IDogdnBvcnQsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTc2Mz1pbnQgaXBfdnNfbGVhdmUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2Yywgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtNzk0LVxcdFxcdFxcdFxcdFxcdCAgICAgIFxcdTAwMjZpcGgtXFx1MDAzZWRhZGRyLCBwcHRyWzFdLCBcXHUwMDI2cCk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzo3OTU6XFx0XFx0XFx0Y3AgPSBpcF92c19jb25uX25ldyhcXHUwMDI2cCwgc3ZjLVxcdTAwM2VhZiwgXFx1MDAyNmRhZGRyLCAwLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtNzk2LVxcdFxcdFxcdFxcdFxcdCAgICBJUF9WU19DT05OX0ZfQllQQVNTIHwgZmxhZ3MsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTEzMDc9c3RydWN0IGlwX3ZzX2Nvbm4gKmlwX3ZzX25ld19jb25uX291dChzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0xMzQ5LVxcdFxcdGlmICghY3QgfHwgIWlwX3ZzX2NoZWNrX3RlbXBsYXRlKGN0LCBkZXN0KSkge1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MTM1MDpcXHRcXHRcXHRjdCA9IGlwX3ZzX2Nvbm5fbmV3KFxcdTAwMjZwYXJhbSwgZGVzdC1cXHUwMDNlYWYsIGRhZGRyLCBkcG9ydCxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTEzNTEtXFx0XFx0XFx0XFx0XFx0ICAgIElQX1ZTX0NPTk5fRl9URU1QTEFURSwgZGVzdCwgMCk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTEzNjctXFx0XFx0XFx0ICAgICAgY2FkZHIsIGNwb3J0LCB2YWRkciwgdnBvcnQsIFxcdTAwMjZwYXJhbSk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoxMzY4OlxcdGNwID0gaXBfdnNfY29ubl9uZXcoXFx1MDAyNnBhcmFtLCBkZXN0LVxcdTAwM2VhZiwgZGFkZHIsIGRwb3J0LCBmbGFncywgZGVzdCwgMCk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0xMzY5LVxcdGlmICghY3ApIHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19mdHAuYz0yNDg9c3RhdGljIGludCBpcF92c19mdHBfb3V0KHN0cnVjdCBpcF92c19hcHAgKmFwcCwgc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Z0cC5jLTMzMC1cXHRcXHRcXHRcXHQgICAgICAwLCBcXHUwMDI2Y3AtXFx1MDAzZXZhZGRyLCBwb3J0LCBcXHUwMDI2cCk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Z0cC5jOjMzMTpcXHRcXHRuX2NwID0gaXBfdnNfY29ubl9uZXcoXFx1MDAyNnAsIGNwLVxcdTAwM2VhZiwgXFx1MDAyNmZyb20sIHBvcnQsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Z0cC5jLTMzMi1cXHRcXHRcXHRcXHQgICAgICBJUF9WU19DT05OX0ZfTk9fQ1BPUlQgfFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Z0cC5jPTQxOD1zdGF0aWMgaW50IGlwX3ZzX2Z0cF9pbihzdHJ1Y3QgaXBfdnNfYXBwICphcHAsIHN0cnVjdCBpcF92c19jb25uICpjcCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19mdHAuYy01MzUtXFx0XFx0aWYgKCFuX2NwKSB7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Z0cC5jOjUzNjpcXHRcXHRcXHRuX2NwID0gaXBfdnNfY29ubl9uZXcoXFx1MDAyNnAsIGNwLVxcdTAwM2VhZiwgXFx1MDAyNmNwLVxcdTAwM2VkYWRkcixcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZnRwLmMtNTM3LVxcdFxcdFxcdFxcdFxcdCAgICAgIGh0b25zKG50b2hzKGNwLVxcdTAwM2VkcG9ydCktMSksXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc3luYy5jPTg0MT1zdGF0aWMgdm9pZCBpcF92c19wcm9jX2Nvbm4oc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIHN0cnVjdCBpcF92c19jb25uX3BhcmFtICpwYXJhbSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zeW5jLmMtOTEwLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zeW5jLmM6OTExOlxcdFxcdGNwID0gaXBfdnNfY29ubl9uZXcocGFyYW0sIHR5cGUsIGRhZGRyLCBkcG9ydCwgZmxhZ3MsIGRlc3QsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3N5bmMuYy05MTItXFx0XFx0XFx0XFx0ICAgIGZ3bWFyayk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDE1OjM1OjM5LjMxMzYxMjAxN1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Nzc2MjkyNTYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSVBWUyBDb25uZWN0aW9uIENyZWF0aW9uIFBhdGNoKipcblxuT2theSwgc28gdGhlIGZ1bmN0aW9uIGBpcF92c19jb25uX25ld2AgaXMgY2FsbGVkIGFsbCBvdmVyIHRoZSBwbGFjZS4gVGhhdCBpbW1lZGlhdGVseSBmbGFncyB0aGlzIGFzIGltcG9ydGFudCBiZWNhdXNlIGl0J3MgcGFydCBvZiB0aGUgSVBWUyBjb3JlLCBhbmQgYSBidWcgaGVyZSBjb3VsZCBiZSB3aWRlc3ByZWFkLiBUaGUgcGF0Y2ggdGFyZ2V0cyBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZSB3aXRoaW4gYGlwX3ZzX2Nvbm5fbmV3YCBkdXJpbmcgY29ubmVjdGlvbiBhbGxvY2F0aW9uLiBHaXZlbiB0aGUgcG90ZW50aWFsIGltcGFjdCwgdGhpcyBpcyBzY3JlYW1pbmcgZm9yIHNvbWUgc2VyaW91cyBmdXp6aW5nLlxuXG5CZWZvcmUgSSBkaXZlIGluLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZW52aXJvbm1lbnQuIFdoYXQgY29uZmlndXJhdGlvbnMgYXJlIHJlbGV2YW50IGhlcmU/IGBJUF9WU2AgaXMgdGhlIG9idmlvdXMgb25lLCBidXQgYXJlIHRoZXJlIGFueSBvdGhlcnMgdGhhdCBtaWdodCBpbXBhY3QgdGhpcyBzcGVjaWZpYyBjb2RlIHBhdGg/IExldCBtZSBjaGVjayB0aGUga2VybmVsIGNvbmZpZyBmb3IgYW55IGhpZGRlbiBkZXBlbmRlbmNpZXMuXG5cblRoZSBwYXRjaCBpdHNlbGYgaXMgbG9jYXRlZCBpbiBgbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY2AsIHNvIEkgc2hvdWxkIGJlIGFibGUgdG8gY3Jvc3MtcmVmZXJlbmNlIHRvIHRoZSBNYWtlZmlsZSBmb3IgdGhlIG1vZHVsZS4gQSBxdWljayBsb29rIGluIGBuZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGVgIHNob3VsZCB0ZWxsIG1lIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgcHJlLXJlcXVpc2l0ZXMgZm9yIGdldHRpbmcgdGhpcyBydW5uaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NDcwLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDE1OjM1OjQ0LjA4OTkwNjYxOVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NjM2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGVcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBNYWtlZmlsZSBmb3IgdGhlIElQVlMgbW9kdWxlcyBvbiB0b3Agb2YgSVB2NC5cXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0IyBJUFZTIHRyYW5zcG9ydCBwcm90b2NvbCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XFxuICAgNzpcXHRpcF92c19wcm90by1vYmpzLXkgOj1cXG4gICA4OlxcdGlwX3ZzX3Byb3RvLW9ianMtJChDT05GSUdfSVBfVlNfUFJPVE9fVENQKSArPSBpcF92c19wcm90b190Y3Aub1xcbiAgIDk6XFx0aXBfdnNfcHJvdG8tb2Jqcy0kKENPTkZJR19JUF9WU19QUk9UT19VRFApICs9IGlwX3ZzX3Byb3RvX3VkcC5vXFxuICAxMDpcXHRpcF92c19wcm90by1vYmpzLSQoQ09ORklHX0lQX1ZTX1BST1RPX0FIX0VTUCkgKz0gaXBfdnNfcHJvdG9fYWhfZXNwLm9cXG4gIDExOlxcdGlwX3ZzX3Byb3RvLW9ianMtJChDT05GSUdfSVBfVlNfUFJPVE9fU0NUUCkgKz0gaXBfdnNfcHJvdG9fc2N0cC5vXFxuICAxMjpcXHRcXG4gIDEzOlxcdGlwX3ZzLWV4dHJhX29ianMteSA6PVxcbiAgMTQ6XFx0aXBfdnMtZXh0cmFfb2Jqcy0kKENPTkZJR19JUF9WU19ORkNUKSArPSBpcF92c19uZmN0Lm9cXG4gIDE1OlxcdFxcbiAgMTY6XFx0aXBfdnMtb2JqcyA6PVxcdGlwX3ZzX2Nvbm4ubyBpcF92c19jb3JlLm8gaXBfdnNfY3RsLm8gaXBfdnNfc2NoZWQub1xcdCAgIFxcXFxcXG4gIDE3OlxcdFxcdFxcdGlwX3ZzX3htaXQubyBpcF92c19hcHAubyBpcF92c19zeW5jLm9cXHQgICBcXHRcXHQgICBcXFxcXFxuICAxODpcXHRcXHRcXHRpcF92c19lc3QubyBpcF92c19wcm90by5vIGlwX3ZzX3BlLm9cXHRcXHRcXHQgICBcXFxcXFxuICAxOTpcXHRcXHRcXHQkKGlwX3ZzX3Byb3RvLW9ianMteSkgJChpcF92cy1leHRyYV9vYmpzLXkpXFxuICAyMDpcXHRcXG4gIDIxOlxcdFxcbiAgMjI6XFx0IyBJUFZTIGNvcmVcXG4gIDIzOlxcdG9iai0kKENPTkZJR19JUF9WUykgKz0gaXBfdnMub1xcbiAgMjQ6XFx0XFxuICAyNTpcXHQjIElQVlMgc2NoZWR1bGVyc1xcbiAgMjY6XFx0b2JqLSQoQ09ORklHX0lQX1ZTX1JSKSArPSBpcF92c19yci5vXFxuICAyNzpcXHRvYmotJChDT05GSUdfSVBfVlNfV1JSKSArPSBpcF92c193cnIub1xcbiAgMjg6XFx0b2JqLSQoQ09ORklHX0lQX1ZTX0xDKSArPSBpcF92c19sYy5vXFxuICAyOTpcXHRvYmotJChDT05GSUdfSVBfVlNfV0xDKSArPSBpcF92c193bGMub1xcbiAgMzA6XFx0b2JqLSQoQ09ORklHX0lQX1ZTX0ZPKSArPSBpcF92c19mby5vXFxuICAzMTpcXHRvYmotJChDT05GSUdfSVBfVlNfT1ZGKSArPSBpcF92c19vdmYub1xcbiAgMzI6XFx0b2JqLSQoQ09ORklHX0lQX1ZTX0xCTEMpICs9IGlwX3ZzX2xibGMub1xcbiAgMzM6XFx0b2JqLSQoQ09ORklHX0lQX1ZTX0xCTENSKSArPSBpcF92c19sYmxjci5vXFxuICAzNDpcXHRvYmotJChDT05GSUdfSVBfVlNfREgpICs9IGlwX3ZzX2RoLm9cXG4gIDM1OlxcdG9iai0kKENPTkZJR19JUF9WU19TSCkgKz0gaXBfdnNfc2gub1xcbiAgMzY6XFx0b2JqLSQoQ09ORklHX0lQX1ZTX01IKSArPSBpcF92c19taC5vXFxuICAzNzpcXHRvYmotJChDT05GSUdfSVBfVlNfU0VEKSArPSBpcF92c19zZWQub1xcbiAgMzg6XFx0b2JqLSQoQ09ORklHX0lQX1ZTX05RKSArPSBpcF92c19ucS5vXFxuICAzOTpcXHRvYmotJChDT05GSUdfSVBfVlNfVFdPUykgKz0gaXBfdnNfdHdvcy5vXFxuICA0MDpcXHRcXG4gIDQxOlxcdCMgSVBWUyBhcHBsaWNhdGlvbiBoZWxwZXJzXFxuICA0MjpcXHRvYmotJChDT05GSUdfSVBfVlNfRlRQKSArPSBpcF92c19mdHAub1xcbiAgNDM6XFx0XFxuICA0NDpcXHQjIElQVlMgY29ubmVjdGlvbiB0ZW1wbGF0ZSByZXRyaWV2ZXJzXFxuICA0NTpcXHRvYmotJChDT05GSUdfSVBfVlNfUEVfU0lQKSArPSBpcF92c19wZV9zaXAub1xcbiAgNDY6XFx0aWZkZWYgQ09ORklHX0dDT1ZfUFJPRklMRV9JUFZTXFxuICA0NzpcXHRHQ09WX1BST0ZJTEUgOj0geVxcbiAgNDg6XFx0ZW5kaWZcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTU6MzU6NDQuMDg5OTc0MjQ5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgxMzUzMjkyMzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIElQVlMgQ29ubmVjdGlvbiBNb2R1bGUqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24gZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUuIEZpcnN0LCBJJ20gbm90aW5nIHRoYXQgYGlwX3ZzX2Nvbm4ub2AgaXMgcGFydCBvZiB0aGUgYnJvYWRlciBgaXBfdnMtb2Jqc2AgbW9kdWxlLCBhbmQgdGhhdCB0aGUgYElQX1ZTYCBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyB0aGUgb25seSBkZXBlbmRlbmN5IGhlcmUuIE5vIHN1cnByaXNlcyB0aGVyZTsgc3RhbmRhcmQgc3R1ZmYuXG5cbk5vdywgb250byB0aGUgbWVhdCBvZiBpdCwgYEZvY3VzU3ltYm9sc2AuIFRoZSBtb2RpZmllZCBmdW5jdGlvbiBpcyBgaXBfdnNfY29ubl9uZXdgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSBhc3Nlc3MgaWYgYGlwX3ZzX2Nvbm5fbmV3YCBpcyBhIGhvdC1wYXRoIGZ1bmN0aW9uLCB3aGljaCBpdCBpcywgYXMgaXQgY3JlYXRlcyBhIG5ldyBjb25uZWN0aW9uIHdoZW4gb25lIGlzIGVzdGFibGlzaGVkLiBUaGlzIG1ha2VzIGl0IGEgcG90ZW50aWFsIHRhcmdldC4gSG93ZXZlciwgSSB3YW50IHRvIHNlZSBpZiBvdGhlciBmdW5jdGlvbnMgY2FsbGluZyBgaXBfdnNfY29ubl9uZXdgIG1pZ2h0IG9mZmVyIGJldHRlciBlbnRyeSBwb2ludHMuIEkgY2hlY2tlZCB0aGUgY2FsbCBzaXRlczogYGlwX3ZzX3NjaGVkdWxlYCwgYGlwX3ZzX25ld19jb25uX291dGAsIGBpcF92c19mdHBfb3V0YCwgYGlwX3ZzX2Z0cF9pbmAsIGFuZCBgaXBfdnNfcHJvY19jb25uYCAoc3BlY2lmaWNhbGx5IGZyb20gdGhlIHN5bmMgcHJvY2VzcykgYWxsIGxlYWQgaGVyZS4gSG93ZXZlciwgYGlwX3ZzX2Nvbm5fbmV3YCBpdHNlbGYgaXMgYWxzbyBsb29raW5nIGdvb2QuXG5cbkEgcXVpY2sgY2hlY2sgdG8gc2VlIGlmIGBpcF92c19jb25uX25ld2AgaXMgc3RhdGljIG9yIGV4cG9ydGVkIHJldmVhbGVkIHRoZSBsYXR0ZXI6IGBFWFBPUlRfU1lNQk9MKGlwX3ZzX2Nvbm5fbmV3KTtgIFRoYXQncyBpbXBvcnRhbnQhIEl0IG1lYW5zIHRoaXMgZnVuY3Rpb24gY2FuIGJlIGNhbGxlZCBmcm9tIG90aGVyIG1vZHVsZXMsIGV4cGFuZGluZyB0aGUgYXR0YWNrIHN1cmZhY2UuIFRoaXMgY29uZmlybXMgbXkgaW5pdGlhbCBhc3Nlc3NtZW50LCBzbyBJJ2xsIGFkZCBgaXBfdnNfY29ubl9uZXdgIHRvIHRoZSBgRm9jdXNTeW1ib2xzYCBsaXN0LlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSByZS1yZXZpZXdlZCB0aGUgcGF0Y2gsIGFuZCB0aGUgb25seSBtb2RpZmljYXRpb24gaXMgaW5kZWVkIHRvIGBpcF92c19jb25uX25ld2AuXG5cblRoZXJlZm9yZSwgbXkgZmluYWwgc3VtbWFyeSBpczogSSdtIG1hcmtpbmcgdGhpcyBhcyBgV29ydGhGdXp6aW5nOiB0cnVlYCBnaXZlbiB0aGF0IHRoZSBwYXRjaCB0YXJnZXRzIGEga2V5IGNvbm5lY3Rpb24gY3JlYXRpb24gZnVuY3Rpb24uIFRoZSB0YXJnZXQgZnVuY3Rpb24gZm9yIGZ1enppbmcgaXMgYEZvY3VzU3ltYm9sczogW1wiaXBfdnNfY29ubl9uZXdcIl1gLiBUaGUgbWluaW1hbCByZXF1aXJlZCBjb25maWd1cmF0aW9uIGlzIGBFbmFibGVDb25maWdzOiBbXCJJUF9WU1wiXWAuIE15IHJlYXNvbmluZyBpcyB0aGUgcGF0Y2ggZml4ZXMgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgdnVsbmVyYWJpbGl0eSB3aXRoaW4gYGlwX3ZzX2Nvbm5fbmV3YCwgc3BlY2lmaWNhbGx5IHplcm9pbmcgb3V0IHRoZSBgaXBfdnNfc2VxYCBzdHJ1Y3QuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIElQVlMgY29yZSBsb2dpYyBhbmQgaXMgdHJpZ2dlcmVkIHdoZW4gbmV3IElQVlMgY29ubmVjdGlvbnMgYXJlIGVzdGFibGlzaGVkLiBUaGlzIHNlZW1zIGEgd29ydGh3aGlsZSB0YXJnZXQgZm9yIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY4NDAsIk91dHB1dFRva2VucyI6MTA4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDE3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTU6MzU6NTIuMjI1MzA2MDU2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ2MDkwNDY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUF9WU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwX3ZzX2Nvbm5fbmV3XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUgaW4gYGlwX3ZzX2Nvbm5fbmV3YCBieSB6ZXJvaW5nIG91dCB0aGUgZW50aXJlIGBpcF92c19zZXFgIHN0cnVjdHMgaW5zdGVhZCBvZiBqdXN0IHRoZSBgZGVsdGFgIGZpZWxkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIElQVlMgY29yZSBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIHdoZW4gZXN0YWJsaXNoaW5nIG5ldyBJUFZTIGNvbm5lY3Rpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX1ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaXBfdnNfY29ubl9uZXdcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZSBpbiBgaXBfdnNfY29ubl9uZXdgIGJ5IHplcm9pbmcgb3V0IHRoZSBlbnRpcmUgYGlwX3ZzX3NlcWAgc3RydWN0cyBpbnN0ZWFkIG9mIGp1c3QgdGhlIGBkZWx0YWAgZmllbGQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgSVBWUyBjb3JlIGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgd2hlbiBlc3RhYmxpc2hpbmcgbmV3IElQVlMgY29ubmVjdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowzrp6b[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-02 15:20:12 +0000 UTC FinishedAt: 2026-07-02 15:35:54 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "bb09d0e64ecaa0aa0f7d1133a1696ed74dead295", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_VS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "bb09d0e64ecaa0aa0f7d1133a1696ed74dead295", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_VS" ], "series_id": "8b6d23b5-58a4-408a-8763-2ea596fdf018" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ip_vs_conn_new" ], "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+CgkJCTx0ZD4yMDI2LzA3LzAyIDE1OjM1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXBfdnNfY29ubl9uZXcmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUgaW4gYGlwX3ZzX2Nvbm5fbmV3YCBieSB6ZXJvaW5nIG91dCB0aGUgZW50aXJlIGBpcF92c19zZXFgIHN0cnVjdHMgaW5zdGVhZCBvZiBqdXN0IHRoZSBgZGVsdGFgIGZpZWxkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIElQVlMgY29yZSBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIHdoZW4gZXN0YWJsaXNoaW5nIG5ldyBJUFZTIGNvbm5lY3Rpb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE1OjM1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZjA5ZWY3MDAyYjhiMzE2MTM0MzcyM2FiZmNiYmEwZmZlNzk2NzliMFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDIgMTU6MzU6MDYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmNcbmluZGV4IGNiMzY2NDFmOGQxY2MxLi42ZWQyNjIyMzYzZjBkNiAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmNcbkBAIC0xNDIwLDggJiM0MzsxNDIwLDggQEAgaXBfdnNfY29ubl9uZXcoY29uc3Qgc3RydWN0IGlwX3ZzX2Nvbm5fcGFyYW0gKnAsIGludCBkZXN0X2FmLFxuIFx0Y3AtXHUwMDNlYXBwID0gTlVMTDtcbiBcdGNwLVx1MDAzZWFwcF9kYXRhID0gTlVMTDtcbiBcdC8qIHJlc2V0IHN0cnVjdCBpcF92c19zZXEgKi9cbi1cdGNwLVx1MDAzZWluX3NlcS5kZWx0YSA9IDA7XG4tXHRjcC1cdTAwM2VvdXRfc2VxLmRlbHRhID0gMDtcbiYjNDM7XHRtZW1zZXQoXHUwMDI2Y3AtXHUwMDNlaW5fc2VxLCAwLCBzaXplb2YoY3AtXHUwMDNlaW5fc2VxKSk7XG4mIzQzO1x0bWVtc2V0KFx1MDAyNmNwLVx1MDAzZW91dF9zZXEsIDAsIHNpemVvZihjcC1cdTAwM2VvdXRfc2VxKSk7XG4gXG4gXHRpZiAodW5saWtlbHkoZmxhZ3MgXHUwMDI2IElQX1ZTX0NPTk5fRl9OT19DUE9SVCkpIHtcbiBcdFx0aW50IGFmX2lkID0gaXBfdnNfYWZfaW5kZXgoY3AtXHUwMDNlYWYpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE1OjM1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXBfdnNfY29ubl9uZXcmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUgaW4gYGlwX3ZzX2Nvbm5fbmV3YCBieSB6ZXJvaW5nIG91dCB0aGUgZW50aXJlIGBpcF92c19zZXFgIHN0cnVjdHMgaW5zdGVhZCBvZiBqdXN0IHRoZSBgZGVsdGFgIGZpZWxkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIElQVlMgY29yZSBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIHdoZW4gZXN0YWJsaXNoaW5nIG5ldyBJUFZTIGNvbm5lY3Rpb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBmMDllZjcwMDJiOGIzMTYxMzQzNzIzYWJmY2JiYTBmZmU3OTY3OWIwCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdWwgMiAxNTozNTowNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jCmluZGV4IGNiMzY2NDFmOGQxY2MxLi42ZWQyNjIyMzYzZjBkNiAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jCkBAIC0xNDIwLDggJiM0MzsxNDIwLDggQEAgaXBfdnNfY29ubl9uZXcoY29uc3Qgc3RydWN0IGlwX3ZzX2Nvbm5fcGFyYW0gKnAsIGludCBkZXN0X2FmLAogCWNwLSZndDthcHAgPSBOVUxMOwogCWNwLSZndDthcHBfZGF0YSA9IE5VTEw7CiAJLyogcmVzZXQgc3RydWN0IGlwX3ZzX3NlcSAqLwotCWNwLSZndDtpbl9zZXEuZGVsdGEgPSAwOwotCWNwLSZndDtvdXRfc2VxLmRlbHRhID0gMDsKJiM0MzsJbWVtc2V0KCZhbXA7Y3AtJmd0O2luX3NlcSwgMCwgc2l6ZW9mKGNwLSZndDtpbl9zZXEpKTsKJiM0MzsJbWVtc2V0KCZhbXA7Y3AtJmd0O291dF9zZXEsIDAsIHNpemVvZihjcC0mZ3Q7b3V0X3NlcSkpOwogCiAJaWYgKHVubGlrZWx5KGZsYWdzICZhbXA7IElQX1ZTX0NPTk5fRl9OT19DUE9SVCkpIHsKIAkJaW50IGFmX2lkID0gaXBfdnNfYWZfaW5kZXgoY3AtJmd0O2FmKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTU6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkyMwoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDk5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFJlY2VudCBJUFZTIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY2AuIEl0IHNlZW1zIHRvIGJlIG1vZGlmeWluZyB0aGUgaW5pdGlhbGl6YXRpb24gb2Ygc2VxdWVuY2UgbnVtYmVycywgc3BlY2lmaWNhbGx5IGBjcC0mZ3Q7aW5fc2VxYCBhbmQgYGNwLSZndDtvdXRfc2VxYCwgd2l0aGluIHRoZSBgaXBfdnNfY29ubl9uZXdgIGZ1bmN0aW9uLiBJbnRlcmVzdGluZy4gSW5zdGVhZCBvZiB0aGUgc3RyYWlnaHRmb3J3YXJkIGBkZWx0YSA9IDBgIGFzc2lnbm1lbnQgZm9yIGp1c3QgdGhlIHNlcXVlbmNlIG51bWJlcnMsIHRoZSBwYXRjaCBub3cgdXNlcyBgbWVtc2V0YCB0byB6ZXJvIG91dCB0aGUgZW50aXJlIHN0cnVjdHVyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5LiBDbGVhcmx5IHRoZXJlJiMzOTtzIGEgcGVyY2VpdmVkIGJlbmVmaXQgdG8gemVyb2luZyB0aGUgKmVudGlyZSogc3RydWN0LCBub3QganVzdCB0aGVzZSB0d28gbWVtYmVycy4gSSB3b25kZXIgd2hhdCBlbHNlIGlzIGluIHRoYXQgYHN0cnVjdCBpcF92c19zZXFgIHRoYXQgdGhleSYjMzk7cmUgbm93IG51bGxpZnlpbmc/IFRoYXQmIzM5O3MgdGhlIGtleS4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IHRoZSBzdHJ1Y3QgZGVmaW5pdGlvbiB0byBmaWd1cmUgb3V0IHdoYXQgb3RoZXIgZmllbGRzIGFyZSBiZWluZyBhZmZlY3RlZCBieSB0aGlzIGNoYW5nZSBhbmQgd2hhdCB0aGUgaW1wbGljYXRpb25zIGFyZSBmb3IgSVBWUyYjMzk7cyBjb25uZWN0aW9uIHRyYWNraW5nIGJlaGF2aW9yLiBMZXQgbWUgY2hlY2sgdGhlIGRlZmluaXRpb24gb2YgYHN0cnVjdCBpcF92c19zZXFgIGFuZCBzZWUgd2hhdCYjMzk7cyBiZWluZyBjbGVhcmVkIGJlc2lkZXMgdGhlIG9idmlvdXMgc2VxdWVuY2UgbnVtYmVyIGZpZWxkcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdHJ1Y3QgaXBfdnNfc2VxIFxceyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL25ldC9pcF92cy5oPTM0ND1lbnVtIGlwX3ZzX3NjdHBfc3RhdGVzIHtcbi0tXG5pbmNsdWRlL25ldC9pcF92cy5oLTM3MC0gKi9cbmluY2x1ZGUvbmV0L2lwX3ZzLmg6MzcxOnN0cnVjdCBpcF92c19zZXEge1xuaW5jbHVkZS9uZXQvaXBfdnMuaC0zNzItXHRfX3UzMlx0XHRcdGluaXRfc2VxO1x0LyogQWRkIGRlbHRhIGZyb20gdGhpcyBzZXEgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzg2CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBJIG5lZWQgdG8gZ2V0IGEgcmVhbGx5IHNvbGlkIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGNvbnRleHQgaGVyZS4gSSBuZWVkIHRvIGV4YW1pbmUgdGhlIGZ1bGwgc3RydWN0IGRlZmluaXRpb24gdG8gbWFrZSBhbnkgbWVhbmluZ2Z1bCBqdWRnbWVudC4gSSBjYW4mIzM5O3QganVzdCBvcGVyYXRlIGluIHRoZSBhYnN0cmFjdDsgSSBuZWVkIHRvIHNlZSB0aGUgc3BlY2lmaWNzLiBMZXQmIzM5O3MgZ2V0IHRoZSBmdWxsIHBpY3R1cmUgYmVmb3JlIEkgbWFrZSBhbnkgYXNzdW1wdGlvbnMuIEkmIzM5O2xsIG5lZWQgdG8ga25vdyB0aGUgY29tcG9uZW50cywgdGhlaXIgdHlwZXMsIHRoZWlyIHJlbGF0aW9uc2hpcHMgdG8gZWFjaCBvdGhlciDigJMgZXZlcnl0aGluZy4gVGhpcyBpcyBjcnVjaWFsIGZvciBhIGNvbXBsZXRlIHVuZGVyc3RhbmRpbmcuIFRpbWUgdG8gcm9sbCB1cCBteSBzbGVldmVzIGFuZCBnZXQgdGhlIGZ1bGwgZGVmaW5pdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L2lwX3ZzLmgmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzNzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDM3MDpcdCAqL1xuIDM3MTpcdHN0cnVjdCBpcF92c19zZXEge1xuIDM3MjpcdFx0X191MzJcdFx0XHRpbml0X3NlcTtcdC8qIEFkZCBkZWx0YSBmcm9tIHRoaXMgc2VxICovXG4gMzczOlx0XHRfX3UzMlx0XHRcdGRlbHRhO1x0XHQvKiBEZWx0YSBpbiBzZXF1ZW5jZSBudW1iZXJzICovXG4gMzc0Olx0XHRfX3UzMlx0XHRcdHByZXZpb3VzX2RlbHRhO1x0LyogRGVsdGEgaW4gc2VxdWVuY2UgbnVtYmVyc1xuIDM3NTpcdFx0XHRcdFx0XHRcdCAqIGJlZm9yZSBsYXN0IHJlc2l6ZWQgcGt0ICovXG4gMzc2Olx0fTtcbiAzNzc6XHRcbiAzNzg6XHQvKiBjb3VudGVycyBwZXIgY3B1ICovXG4gMzc5Olx0c3RydWN0IGlwX3ZzX2NvdW50ZXJzIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjk1CgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogNjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJUFZTIFN0cnVjdCBNb2RpZmljYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgc3RydWN0LCBhbmQgSSBzZWUgaXQgaGFzIGBpbml0X3NlcWAsIGBkZWx0YWAsIGFuZCBgcHJldmlvdXNfZGVsdGFgLiBOb3csIGl0IHNlZW1zIGxpa2UgdGhlIHJlY2VudCBjaGFuZ2UgemVyb2VzIG91dCBhbGwgdGhyZWUgb2YgdGhlc2UgZmllbGRzLCBub3QganVzdCBgZGVsdGFgLiBIbW0sIHRoYXQmIzM5O3MgaW50ZXJlc3RpbmcuIEkgaW1tZWRpYXRlbHkgcmVhbGl6ZSB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYmVjYXVzZSwgcHJldmlvdXNseSwgaXQgY291bGQgaGF2ZSBiZWVuIHJlbHlpbmcgb24gdW5pbml0aWFsaXplZCBtZW1vcnkgZm9yIHRob3NlIGZpZWxkcy4gVGhhdCYjMzk7cyBhIHBvdGVudGlhbCBidWcgd2FpdGluZyB0byBoYXBwZW4sIGFuZCB0aGlzIGlzIGEgY2xlYW4gZml4LiBOb3cgdGhlIG5leHQgdGhpbmcgSSBuZWVkIHRvIGRvIGlzIGxvb2sgZm9yIHdoZXJlIHRoZSBJUFZTIGNvbmZpZyBpcywgc28gSSBjYW4gc2VlIHdoYXQgZnVuY3Rpb25hbGl0eSBpcyBnb2luZyB0byBiZSBhZmZlY3RlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBhY3R1YWxseSBiZWluZyB6ZXJvZWQgb3V0IG5vdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVBfVlMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctNC0jXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo1Om1lbnVjb25maWcgSVBfVlNcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTYtXHR0cmlzdGF0ZSBcJiMzNDtJUCB2aXJ0dWFsIHNlcnZlciBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Mjg2PWNvbW1lbnQgJiMzOTtJUFZTIFNIIHNjaGVkdWxlciYjMzk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODctXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyODg6Y29uZmlnIElQX1ZTX1NIX1RBQl9CSVRTXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODktXHRpbnQgXCYjMzQ7SVBWUyBzb3VyY2UgaGFzaGluZyB0YWJsZSBzaXplICh0aGUgTnRoIHBvd2VyIG9mIDIpXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzAxPWNvbW1lbnQgJiMzOTtJUFZTIE1IIHNjaGVkdWxlciYjMzk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDItXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMDM6Y29uZmlnIElQX1ZTX01IX1RBQl9JTkRFWFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzA0LVx0aW50IFwmIzM0O0lQVlMgbWFnbGV2IGhhc2hpbmcgdGFibGUgaW5kZXggb2Ygc2l6ZSAodGhlIHByaW1lIG51bWJlcnMpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTU6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzE5NwoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCYjMzk7cyBwZXJzcGVjdGl2ZToKCioqRGl2aW5nIGludG8gdGhlIElQVlMgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCB0aGUgY29udGV4dCBpcyBjbGVhcmx5IGNlbnRlcmVkIGFyb3VuZCBgSVBfVlNgLiBUaGF0IHRlbGxzIG1lIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggSVAgVmlydHVhbCBTZXJ2ZXIsIGxpa2VseSBpbiBhIExpbnV4IGtlcm5lbCBjb250ZXh0LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gY29uZmlybSB0aGF0IHRoaXMgaXMgdGhlIHByaW1hcnkgZm9jdXMuCgpOb3csIHRoZSBtZW50aW9uIG9mIGBpcF92c19jb25uX25ld2AgaXMgc2lnbmlmaWNhbnQuIFRoYXQmIzM5O3MgYSBsb3ctbGV2ZWwgZnVuY3Rpb24gcmVsYXRlZCB0byBjb25uZWN0aW9uIHRyYWNraW5nIHdpdGhpbiB0aGUgSVBWUyBmcmFtZXdvcmsuICBNeSBwcmltYXJ5IHF1ZXN0aW9uIGJlY29tZXM6IGFyZSB0aGVyZSBvdGhlciwgKm5lY2Vzc2FyeSoga2VybmVsIGNvbmZpZ3MgSSBuZWVkIHRvIHZlcmlmeSAqYWxvbmdzaWRlKiBgSVBfVlNgIHRvIGVuc3VyZSB0aGF0IGBpcF92c19jb25uX25ld2AgZnVuY3Rpb25zIGNvcnJlY3RseSBhbmQgbXkgb3ZlcmFsbCBJUFZTIHNldHVwIGlzIHNvdW5kPyBJJiMzOTttIG5vdCBqdXN0IGxvb2tpbmcgZm9yICYjMzQ7cmVjb21tZW5kZWQmIzM0OyBjb25maWdzIGhlcmU7IEkmIzM5O20gdHJ5aW5nIHRvIGlkZW50aWZ5ICpjcml0aWNhbCBkZXBlbmRlbmNpZXMqLiBGb3IgZXhhbXBsZSwgZG8gSSBuZWVkIGNlcnRhaW4gb3B0aW9ucyBlbmFibGVkIHdpdGhpbiBgSVBfVlNgIGl0c2VsZj8gT3IgcGVyaGFwcyByZWxhdGVkIG5ldHdvcmtpbmcgbW9kdWxlcz8gVGhhdCYjMzk7cyB0aGUgcmVhbCBjaGFsbGVuZ2UsIHRvIGZpbmQgZGVwZW5kZW5jaWVzIG9yIGNvbmZsaWN0cywgbm90IGp1c3QgdGhlIGJhc2UgZmVhdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTU6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXBfdnNfY29ubl9uZXcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvaXBfdnMuaD0xNjg4PWlwX3ZzX2huX3RvX2Nvbm4oc3RydWN0IGlwX3ZzX2Nvbm5faG5vZGUgKmhuKVxuLS1cbmluY2x1ZGUvbmV0L2lwX3ZzLmgtMTY5My1cbmluY2x1ZGUvbmV0L2lwX3ZzLmg6MTY5NDpzdHJ1Y3QgaXBfdnNfY29ubiAqaXBfdnNfY29ubl9uZXcoY29uc3Qgc3RydWN0IGlwX3ZzX2Nvbm5fcGFyYW0gKnAsIGludCBkZXN0X2FmLFxuaW5jbHVkZS9uZXQvaXBfdnMuaC0xNjk1LVx0XHRcdFx0ICBjb25zdCB1bmlvbiBuZl9pbmV0X2FkZHIgKmRhZGRyLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM9ODAwPXN0YXRpYyB2b2lkIGNvbm5fcmVzaXplX3dvcmtfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy05MjQtICpcdEJpbmQgYSBjb25uZWN0aW9uIGVudHJ5IHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgcGFja2V0X3htaXQuXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjkyNTogKlx0Q2FsbGVkIGJ5IGlwX3ZzX2Nvbm5fbmV3LlxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy05MjYtICovXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYz0xMzUyPXN0cnVjdCBpcF92c19jb25uICpcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTM1MzppcF92c19jb25uX25ldyhjb25zdCBzdHJ1Y3QgaXBfdnNfY29ubl9wYXJhbSAqcCwgaW50IGRlc3RfYWYsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTEzNTQtXHQgICAgICAgY29uc3QgdW5pb24gbmZfaW5ldF9hZGRyICpkYWRkciwgX19iZTE2IGRwb3J0LCB1bnNpZ25lZCBpbnQgZmxhZ3MsXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYz01Nz1FWFBPUlRfU1lNQk9MKGlwX3ZzX3Byb3RvX25hbWUpO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzo1ODpFWFBPUlRfU1lNQk9MKGlwX3ZzX2Nvbm5fbmV3KTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtNTktRVhQT1JUX1NZTUJPTChpcF92c19jb25uX2luX2dldCk7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYz00MzE9aXBfdnNfc2NoZWRfcGVyc2lzdChzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtNTQ4LVx0XHQgKiB3aGVuIHRoZSB0ZW1wbGF0ZSBleHBpcmVzICovXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjU0OTpcdFx0Y3QgPSBpcF92c19jb25uX25ldyhcdTAwMjZwYXJhbSwgZGVzdC1cdTAwM2VhZiwgXHUwMDI2ZGVzdC1cdTAwM2VhZGRyLCBkcG9ydCxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtNTUwLVx0XHRcdFx0ICAgIElQX1ZTX0NPTk5fRl9URU1QTEFURSwgZGVzdCwgc2tiLVx1MDAzZW1hcmspO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtNTc3LVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzo1Nzg6XHRjcCA9IGlwX3ZzX2Nvbm5fbmV3KFx1MDAyNnBhcmFtLCBkZXN0LVx1MDAzZWFmLCBcdTAwMjZkZXN0LVx1MDAzZWFkZHIsIGRwb3J0LCBmbGFncywgZGVzdCxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtNTc5LVx0XHRcdCAgICBza2ItXHUwMDNlbWFyayk7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy02MTItICogLTEgOiAgc2NoZWR1bGVyIHRyaWVkIHRvIHNjaGVkdWxlIGJ1dCBmYXRhbCBlcnJvciBvY2N1cnJlZCwgZWcuXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjYxMzogKiAgICAgICBpcF92c19jb25uX25ldyBmYWlsdXJlIChFTk9NRU0pIG9yIGlwX3ZzX3NpcF9maWxsX3BhcmFtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTYxNC0gKiAgICAgICBmYWlsdXJlIHN1Y2ggYXMgbWlzc2luZyBDYWxsLUlELCBFTk9NRU0gb24gc2tiX2xpbmVhcml6ZVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM9NjE5PWlwX3ZzX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy03MjYtXHRcdFx0XHQgICAgICBjYWRkciwgY3BvcnQsIHZhZGRyLCB2cG9ydCwgXHUwMDI2cCk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjcyNzpcdFx0Y3AgPSBpcF92c19jb25uX25ldyhcdTAwMjZwLCBkZXN0LVx1MDAzZWFmLCBcdTAwMjZkZXN0LVx1MDAzZWFkZHIsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTcyOC1cdFx0XHRcdCAgICBkZXN0LVx1MDAzZXBvcnQgPyBkZXN0LVx1MDAzZXBvcnQgOiB2cG9ydCxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTc2Mz1pbnQgaXBfdnNfbGVhdmUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2Yywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTc5NC1cdFx0XHRcdFx0ICAgICAgXHUwMDI2aXBoLVx1MDAzZWRhZGRyLCBwcHRyWzFdLCBcdTAwMjZwKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6Nzk1Olx0XHRcdGNwID0gaXBfdnNfY29ubl9uZXcoXHUwMDI2cCwgc3ZjLVx1MDAzZWFmLCBcdTAwMjZkYWRkciwgMCxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtNzk2LVx0XHRcdFx0XHQgICAgSVBfVlNfQ09OTl9GX0JZUEFTUyB8IGZsYWdzLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM9MTMwNz1zdHJ1Y3QgaXBfdnNfY29ubiAqaXBfdnNfbmV3X2Nvbm5fb3V0KHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0xMzQ5LVx0XHRpZiAoIWN0IHx8ICFpcF92c19jaGVja190ZW1wbGF0ZShjdCwgZGVzdCkpIHtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MTM1MDpcdFx0XHRjdCA9IGlwX3ZzX2Nvbm5fbmV3KFx1MDAyNnBhcmFtLCBkZXN0LVx1MDAzZWFmLCBkYWRkciwgZHBvcnQsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTEzNTEtXHRcdFx0XHRcdCAgICBJUF9WU19DT05OX0ZfVEVNUExBVEUsIGRlc3QsIDApO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMTM2Ny1cdFx0XHQgICAgICBjYWRkciwgY3BvcnQsIHZhZGRyLCB2cG9ydCwgXHUwMDI2cGFyYW0pO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoxMzY4Olx0Y3AgPSBpcF92c19jb25uX25ldyhcdTAwMjZwYXJhbSwgZGVzdC1cdTAwM2VhZiwgZGFkZHIsIGRwb3J0LCBmbGFncywgZGVzdCwgMCk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTEzNjktXHRpZiAoIWNwKSB7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Z0cC5jPTI0OD1zdGF0aWMgaW50IGlwX3ZzX2Z0cF9vdXQoc3RydWN0IGlwX3ZzX2FwcCAqYXBwLCBzdHJ1Y3QgaXBfdnNfY29ubiAqY3AsXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Z0cC5jLTMzMC1cdFx0XHRcdCAgICAgIDAsIFx1MDAyNmNwLVx1MDAzZXZhZGRyLCBwb3J0LCBcdTAwMjZwKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19mdHAuYzozMzE6XHRcdG5fY3AgPSBpcF92c19jb25uX25ldyhcdTAwMjZwLCBjcC1cdTAwM2VhZiwgXHUwMDI2ZnJvbSwgcG9ydCxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19mdHAuYy0zMzItXHRcdFx0XHQgICAgICBJUF9WU19DT05OX0ZfTk9fQ1BPUlQgfFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19mdHAuYz00MTg9c3RhdGljIGludCBpcF92c19mdHBfaW4oc3RydWN0IGlwX3ZzX2FwcCAqYXBwLCBzdHJ1Y3QgaXBfdnNfY29ubiAqY3AsXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Z0cC5jLTUzNS1cdFx0aWYgKCFuX2NwKSB7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZnRwLmM6NTM2Olx0XHRcdG5fY3AgPSBpcF92c19jb25uX25ldyhcdTAwMjZwLCBjcC1cdTAwM2VhZiwgXHUwMDI2Y3AtXHUwMDNlZGFkZHIsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZnRwLmMtNTM3LVx0XHRcdFx0XHQgICAgICBodG9ucyhudG9ocyhjcC1cdTAwM2VkcG9ydCktMSksXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3N5bmMuYz04NDE9c3RhdGljIHZvaWQgaXBfdnNfcHJvY19jb25uKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3QgaXBfdnNfY29ubl9wYXJhbSAqcGFyYW0sXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3N5bmMuYy05MTAtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc3luYy5jOjkxMTpcdFx0Y3AgPSBpcF92c19jb25uX25ldyhwYXJhbSwgdHlwZSwgZGFkZHIsIGRwb3J0LCBmbGFncywgZGVzdCxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zeW5jLmMtOTEyLVx0XHRcdFx0ICAgIGZ3bWFyayk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE1OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU0NzAKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJUFZTIENvbm5lY3Rpb24gQ3JlYXRpb24gUGF0Y2gqKgoKT2theSwgc28gdGhlIGZ1bmN0aW9uIGBpcF92c19jb25uX25ld2AgaXMgY2FsbGVkIGFsbCBvdmVyIHRoZSBwbGFjZS4gVGhhdCBpbW1lZGlhdGVseSBmbGFncyB0aGlzIGFzIGltcG9ydGFudCBiZWNhdXNlIGl0JiMzOTtzIHBhcnQgb2YgdGhlIElQVlMgY29yZSwgYW5kIGEgYnVnIGhlcmUgY291bGQgYmUgd2lkZXNwcmVhZC4gVGhlIHBhdGNoIHRhcmdldHMgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUgd2l0aGluIGBpcF92c19jb25uX25ld2AgZHVyaW5nIGNvbm5lY3Rpb24gYWxsb2NhdGlvbi4gR2l2ZW4gdGhlIHBvdGVudGlhbCBpbXBhY3QsIHRoaXMgaXMgc2NyZWFtaW5nIGZvciBzb21lIHNlcmlvdXMgZnV6emluZy4KCkJlZm9yZSBJIGRpdmUgaW4sIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBlbnZpcm9ubWVudC4gV2hhdCBjb25maWd1cmF0aW9ucyBhcmUgcmVsZXZhbnQgaGVyZT8gYElQX1ZTYCBpcyB0aGUgb2J2aW91cyBvbmUsIGJ1dCBhcmUgdGhlcmUgYW55IG90aGVycyB0aGF0IG1pZ2h0IGltcGFjdCB0aGlzIHNwZWNpZmljIGNvZGUgcGF0aD8gTGV0IG1lIGNoZWNrIHRoZSBrZXJuZWwgY29uZmlnIGZvciBhbnkgaGlkZGVuIGRlcGVuZGVuY2llcy4KClRoZSBwYXRjaCBpdHNlbGYgaXMgbG9jYXRlZCBpbiBgbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY2AsIHNvIEkgc2hvdWxkIGJlIGFibGUgdG8gY3Jvc3MtcmVmZXJlbmNlIHRvIHRoZSBNYWtlZmlsZSBmb3IgdGhlIG1vZHVsZS4gQSBxdWljayBsb29rIGluIGBuZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGVgIHNob3VsZCB0ZWxsIG1lIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgcHJlLXJlcXVpc2l0ZXMgZm9yIGdldHRpbmcgdGhpcyBydW5uaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZSYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0I1xuICAgMzpcdCMgTWFrZWZpbGUgZm9yIHRoZSBJUFZTIG1vZHVsZXMgb24gdG9wIG9mIElQdjQuXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdCMgSVBWUyB0cmFuc3BvcnQgcHJvdG9jb2wgbG9hZCBiYWxhbmNpbmcgc3VwcG9ydFxuICAgNzpcdGlwX3ZzX3Byb3RvLW9ianMteSA6PVxuICAgODpcdGlwX3ZzX3Byb3RvLW9ianMtJChDT05GSUdfSVBfVlNfUFJPVE9fVENQKSAmIzQzOz0gaXBfdnNfcHJvdG9fdGNwLm9cbiAgIDk6XHRpcF92c19wcm90by1vYmpzLSQoQ09ORklHX0lQX1ZTX1BST1RPX1VEUCkgJiM0Mzs9IGlwX3ZzX3Byb3RvX3VkcC5vXG4gIDEwOlx0aXBfdnNfcHJvdG8tb2Jqcy0kKENPTkZJR19JUF9WU19QUk9UT19BSF9FU1ApICYjNDM7PSBpcF92c19wcm90b19haF9lc3Aub1xuICAxMTpcdGlwX3ZzX3Byb3RvLW9ianMtJChDT05GSUdfSVBfVlNfUFJPVE9fU0NUUCkgJiM0Mzs9IGlwX3ZzX3Byb3RvX3NjdHAub1xuICAxMjpcdFxuICAxMzpcdGlwX3ZzLWV4dHJhX29ianMteSA6PVxuICAxNDpcdGlwX3ZzLWV4dHJhX29ianMtJChDT05GSUdfSVBfVlNfTkZDVCkgJiM0Mzs9IGlwX3ZzX25mY3Qub1xuICAxNTpcdFxuICAxNjpcdGlwX3ZzLW9ianMgOj1cdGlwX3ZzX2Nvbm4ubyBpcF92c19jb3JlLm8gaXBfdnNfY3RsLm8gaXBfdnNfc2NoZWQub1x0ICAgXFxcbiAgMTc6XHRcdFx0aXBfdnNfeG1pdC5vIGlwX3ZzX2FwcC5vIGlwX3ZzX3N5bmMub1x0ICAgXHRcdCAgIFxcXG4gIDE4Olx0XHRcdGlwX3ZzX2VzdC5vIGlwX3ZzX3Byb3RvLm8gaXBfdnNfcGUub1x0XHRcdCAgIFxcXG4gIDE5Olx0XHRcdCQoaXBfdnNfcHJvdG8tb2Jqcy15KSAkKGlwX3ZzLWV4dHJhX29ianMteSlcbiAgMjA6XHRcbiAgMjE6XHRcbiAgMjI6XHQjIElQVlMgY29yZVxuICAyMzpcdG9iai0kKENPTkZJR19JUF9WUykgJiM0Mzs9IGlwX3ZzLm9cbiAgMjQ6XHRcbiAgMjU6XHQjIElQVlMgc2NoZWR1bGVyc1xuICAyNjpcdG9iai0kKENPTkZJR19JUF9WU19SUikgJiM0Mzs9IGlwX3ZzX3JyLm9cbiAgMjc6XHRvYmotJChDT05GSUdfSVBfVlNfV1JSKSAmIzQzOz0gaXBfdnNfd3JyLm9cbiAgMjg6XHRvYmotJChDT05GSUdfSVBfVlNfTEMpICYjNDM7PSBpcF92c19sYy5vXG4gIDI5Olx0b2JqLSQoQ09ORklHX0lQX1ZTX1dMQykgJiM0Mzs9IGlwX3ZzX3dsYy5vXG4gIDMwOlx0b2JqLSQoQ09ORklHX0lQX1ZTX0ZPKSAmIzQzOz0gaXBfdnNfZm8ub1xuICAzMTpcdG9iai0kKENPTkZJR19JUF9WU19PVkYpICYjNDM7PSBpcF92c19vdmYub1xuICAzMjpcdG9iai0kKENPTkZJR19JUF9WU19MQkxDKSAmIzQzOz0gaXBfdnNfbGJsYy5vXG4gIDMzOlx0b2JqLSQoQ09ORklHX0lQX1ZTX0xCTENSKSAmIzQzOz0gaXBfdnNfbGJsY3Iub1xuICAzNDpcdG9iai0kKENPTkZJR19JUF9WU19ESCkgJiM0Mzs9IGlwX3ZzX2RoLm9cbiAgMzU6XHRvYmotJChDT05GSUdfSVBfVlNfU0gpICYjNDM7PSBpcF92c19zaC5vXG4gIDM2Olx0b2JqLSQoQ09ORklHX0lQX1ZTX01IKSAmIzQzOz0gaXBfdnNfbWgub1xuICAzNzpcdG9iai0kKENPTkZJR19JUF9WU19TRUQpICYjNDM7PSBpcF92c19zZWQub1xuICAzODpcdG9iai0kKENPTkZJR19JUF9WU19OUSkgJiM0Mzs9IGlwX3ZzX25xLm9cbiAgMzk6XHRvYmotJChDT05GSUdfSVBfVlNfVFdPUykgJiM0Mzs9IGlwX3ZzX3R3b3Mub1xuICA0MDpcdFxuICA0MTpcdCMgSVBWUyBhcHBsaWNhdGlvbiBoZWxwZXJzXG4gIDQyOlx0b2JqLSQoQ09ORklHX0lQX1ZTX0ZUUCkgJiM0Mzs9IGlwX3ZzX2Z0cC5vXG4gIDQzOlx0XG4gIDQ0Olx0IyBJUFZTIGNvbm5lY3Rpb24gdGVtcGxhdGUgcmV0cmlldmVyc1xuICA0NTpcdG9iai0kKENPTkZJR19JUF9WU19QRV9TSVApICYjNDM7PSBpcF92c19wZV9zaXAub1xuICA0NjpcdGlmZGVmIENPTkZJR19HQ09WX1BST0ZJTEVfSVBWU1xuICA0NzpcdEdDT1ZfUFJPRklMRSA6PSB5XG4gIDQ4Olx0ZW5kaWZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTU6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjg0MAoJCQkJCQkJb3V0cHV0OiAxMDgKCQkJCQkJCXRob3VnaHRzOiA0MTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIElQVlMgQ29ubmVjdGlvbiBNb2R1bGUqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93biBmcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZS4gRmlyc3QsIEkmIzM5O20gbm90aW5nIHRoYXQgYGlwX3ZzX2Nvbm4ub2AgaXMgcGFydCBvZiB0aGUgYnJvYWRlciBgaXBfdnMtb2Jqc2AgbW9kdWxlLCBhbmQgdGhhdCB0aGUgYElQX1ZTYCBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyB0aGUgb25seSBkZXBlbmRlbmN5IGhlcmUuIE5vIHN1cnByaXNlcyB0aGVyZTsgc3RhbmRhcmQgc3R1ZmYuCgpOb3csIG9udG8gdGhlIG1lYXQgb2YgaXQsIGBGb2N1c1N5bWJvbHNgLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb24gaXMgYGlwX3ZzX2Nvbm5fbmV3YC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgYXNzZXNzIGlmIGBpcF92c19jb25uX25ld2AgaXMgYSBob3QtcGF0aCBmdW5jdGlvbiwgd2hpY2ggaXQgaXMsIGFzIGl0IGNyZWF0ZXMgYSBuZXcgY29ubmVjdGlvbiB3aGVuIG9uZSBpcyBlc3RhYmxpc2hlZC4gVGhpcyBtYWtlcyBpdCBhIHBvdGVudGlhbCB0YXJnZXQuIEhvd2V2ZXIsIEkgd2FudCB0byBzZWUgaWYgb3RoZXIgZnVuY3Rpb25zIGNhbGxpbmcgYGlwX3ZzX2Nvbm5fbmV3YCBtaWdodCBvZmZlciBiZXR0ZXIgZW50cnkgcG9pbnRzLiBJIGNoZWNrZWQgdGhlIGNhbGwgc2l0ZXM6IGBpcF92c19zY2hlZHVsZWAsIGBpcF92c19uZXdfY29ubl9vdXRgLCBgaXBfdnNfZnRwX291dGAsIGBpcF92c19mdHBfaW5gLCBhbmQgYGlwX3ZzX3Byb2NfY29ubmAgKHNwZWNpZmljYWxseSBmcm9tIHRoZSBzeW5jIHByb2Nlc3MpIGFsbCBsZWFkIGhlcmUuIEhvd2V2ZXIsIGBpcF92c19jb25uX25ld2AgaXRzZWxmIGlzIGFsc28gbG9va2luZyBnb29kLgoKQSBxdWljayBjaGVjayB0byBzZWUgaWYgYGlwX3ZzX2Nvbm5fbmV3YCBpcyBzdGF0aWMgb3IgZXhwb3J0ZWQgcmV2ZWFsZWQgdGhlIGxhdHRlcjogYEVYUE9SVF9TWU1CT0woaXBfdnNfY29ubl9uZXcpO2AgVGhhdCYjMzk7cyBpbXBvcnRhbnQhIEl0IG1lYW5zIHRoaXMgZnVuY3Rpb24gY2FuIGJlIGNhbGxlZCBmcm9tIG90aGVyIG1vZHVsZXMsIGV4cGFuZGluZyB0aGUgYXR0YWNrIHN1cmZhY2UuIFRoaXMgY29uZmlybXMgbXkgaW5pdGlhbCBhc3Nlc3NtZW50LCBzbyBJJiMzOTtsbCBhZGQgYGlwX3ZzX2Nvbm5fbmV3YCB0byB0aGUgYEZvY3VzU3ltYm9sc2AgbGlzdC4KCkp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBJIHJlLXJldmlld2VkIHRoZSBwYXRjaCwgYW5kIHRoZSBvbmx5IG1vZGlmaWNhdGlvbiBpcyBpbmRlZWQgdG8gYGlwX3ZzX2Nvbm5fbmV3YC4KClRoZXJlZm9yZSwgbXkgZmluYWwgc3VtbWFyeSBpczogSSYjMzk7bSBtYXJraW5nIHRoaXMgYXMgYFdvcnRoRnV6emluZzogdHJ1ZWAgZ2l2ZW4gdGhhdCB0aGUgcGF0Y2ggdGFyZ2V0cyBhIGtleSBjb25uZWN0aW9uIGNyZWF0aW9uIGZ1bmN0aW9uLiBUaGUgdGFyZ2V0IGZ1bmN0aW9uIGZvciBmdXp6aW5nIGlzIGBGb2N1c1N5bWJvbHM6IFsmIzM0O2lwX3ZzX2Nvbm5fbmV3JiMzNDtdYC4gVGhlIG1pbmltYWwgcmVxdWlyZWQgY29uZmlndXJhdGlvbiBpcyBgRW5hYmxlQ29uZmlnczogWyYjMzQ7SVBfVlMmIzM0O11gLiBNeSByZWFzb25pbmcgaXMgdGhlIHBhdGNoIGZpeGVzIGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHZ1bG5lcmFiaWxpdHkgd2l0aGluIGBpcF92c19jb25uX25ld2AsIHNwZWNpZmljYWxseSB6ZXJvaW5nIG91dCB0aGUgYGlwX3ZzX3NlcWAgc3RydWN0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIHRoZSBJUFZTIGNvcmUgbG9naWMgYW5kIGlzIHRyaWdnZXJlZCB3aGVuIG5ldyBJUFZTIGNvbm5lY3Rpb25zIGFyZSBlc3RhYmxpc2hlZC4gVGhpcyBzZWVtcyBhIHdvcnRod2hpbGUgdGFyZ2V0IGZvciBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVBfVlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpcF92c19jb25uX25ldyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZSBpbiBgaXBfdnNfY29ubl9uZXdgIGJ5IHplcm9pbmcgb3V0IHRoZSBlbnRpcmUgYGlwX3ZzX3NlcWAgc3RydWN0cyBpbnN0ZWFkIG9mIGp1c3QgdGhlIGBkZWx0YWAgZmllbGQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgSVBWUyBjb3JlIGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgd2hlbiBlc3RhYmxpc2hpbmcgbmV3IElQVlMgY29ubmVjdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXBfdnNfY29ubl9uZXcmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUgaW4gYGlwX3ZzX2Nvbm5fbmV3YCBieSB6ZXJvaW5nIG91dCB0aGUgZW50aXJlIGBpcF92c19zZXFgIHN0cnVjdHMgaW5zdGVhZCBvZiBqdXN0IHRoZSBgZGVsdGFgIGZpZWxkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIElQVlMgY29yZSBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIHdoZW4gZXN0YWJsaXNoaW5nIG5ldyBJUFZTIGNvbm5lY3Rpb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDJUMTU6MzU6MDguMTg3NzczMDE1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQxODM2Mzg3NjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBfVlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcF92c19jb25uX25ld1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3VlIGluIGBpcF92c19jb25uX25ld2AgYnkgemVyb2luZyBvdXQgdGhlIGVudGlyZSBgaXBfdnNfc2VxYCBzdHJ1Y3RzIGluc3RlYWQgb2YganVzdCB0aGUgYGRlbHRhYCBmaWVsZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBJUFZTIGNvcmUgbG9naWMgdGhhdCBjYW4gYmUgcmVhY2hlZCB3aGVuIGVzdGFibGlzaGluZyBuZXcgSVBWUyBjb25uZWN0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTU6MzU6MDguMTg3Nzc5NzU1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODk3MjAwNTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBmMDllZjcwMDJiOGIzMTYxMzQzNzIzYWJmY2JiYTBmZmU3OTY3OWIwXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDIgMTU6MzU6MDYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmNcXG5pbmRleCBjYjM2NjQxZjhkMWNjMS4uNmVkMjYyMjM2M2YwZDYgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmNcXG5AQCAtMTQyMCw4ICsxNDIwLDggQEAgaXBfdnNfY29ubl9uZXcoY29uc3Qgc3RydWN0IGlwX3ZzX2Nvbm5fcGFyYW0gKnAsIGludCBkZXN0X2FmLFxcbiBcXHRjcC1cXHUwMDNlYXBwID0gTlVMTDtcXG4gXFx0Y3AtXFx1MDAzZWFwcF9kYXRhID0gTlVMTDtcXG4gXFx0LyogcmVzZXQgc3RydWN0IGlwX3ZzX3NlcSAqL1xcbi1cXHRjcC1cXHUwMDNlaW5fc2VxLmRlbHRhID0gMDtcXG4tXFx0Y3AtXFx1MDAzZW91dF9zZXEuZGVsdGEgPSAwO1xcbitcXHRtZW1zZXQoXFx1MDAyNmNwLVxcdTAwM2Vpbl9zZXEsIDAsIHNpemVvZihjcC1cXHUwMDNlaW5fc2VxKSk7XFxuK1xcdG1lbXNldChcXHUwMDI2Y3AtXFx1MDAzZW91dF9zZXEsIDAsIHNpemVvZihjcC1cXHUwMDNlb3V0X3NlcSkpO1xcbiBcXG4gXFx0aWYgKHVubGlrZWx5KGZsYWdzIFxcdTAwMjYgSVBfVlNfQ09OTl9GX05PX0NQT1JUKSkge1xcbiBcXHRcXHRpbnQgYWZfaWQgPSBpcF92c19hZl9pbmRleChjcC1cXHUwMDNlYWYpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNTozNTowOC42NzgyMzM3MTdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzNjkzMTY3ODIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX1ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaXBfdnNfY29ubl9uZXdcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZSBpbiBgaXBfdnNfY29ubl9uZXdgIGJ5IHplcm9pbmcgb3V0IHRoZSBlbnRpcmUgYGlwX3ZzX3NlcWAgc3RydWN0cyBpbnN0ZWFkIG9mIGp1c3QgdGhlIGBkZWx0YWAgZmllbGQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgSVBWUyBjb3JlIGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgd2hlbiBlc3RhYmxpc2hpbmcgbmV3IElQVlMgY29ubmVjdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZjA5ZWY3MDAyYjhiMzE2MTM0MzcyM2FiZmNiYmEwZmZlNzk2NzliMFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDIgMTU6MzU6MDYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xuaW5kZXggY2IzNjY0MWY4ZDFjYzEuLjZlZDI2MjIzNjNmMGQ2IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xuQEAgLTE0MjAsOCArMTQyMCw4IEBAIGlwX3ZzX2Nvbm5fbmV3KGNvbnN0IHN0cnVjdCBpcF92c19jb25uX3BhcmFtICpwLCBpbnQgZGVzdF9hZixcbiBcdGNwLVx1MDAzZWFwcCA9IE5VTEw7XG4gXHRjcC1cdTAwM2VhcHBfZGF0YSA9IE5VTEw7XG4gXHQvKiByZXNldCBzdHJ1Y3QgaXBfdnNfc2VxICovXG4tXHRjcC1cdTAwM2Vpbl9zZXEuZGVsdGEgPSAwO1xuLVx0Y3AtXHUwMDNlb3V0X3NlcS5kZWx0YSA9IDA7XG4rXHRtZW1zZXQoXHUwMDI2Y3AtXHUwMDNlaW5fc2VxLCAwLCBzaXplb2YoY3AtXHUwMDNlaW5fc2VxKSk7XG4rXHRtZW1zZXQoXHUwMDI2Y3AtXHUwMDNlb3V0X3NlcSwgMCwgc2l6ZW9mKGNwLVx1MDAzZW91dF9zZXEpKTtcbiBcbiBcdGlmICh1bmxpa2VseShmbGFncyBcdTAwMjYgSVBfVlNfQ09OTl9GX05PX0NQT1JUKSkge1xuIFx0XHRpbnQgYWZfaWQgPSBpcF92c19hZl9pbmRleChjcC1cdTAwM2VhZik7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNTozNTowOC42NzgyMzUwMzdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODcwNjU2OTg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFJlY2VudCBJUFZTIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmNgLiBJdCBzZWVtcyB0byBiZSBtb2RpZnlpbmcgdGhlIGluaXRpYWxpemF0aW9uIG9mIHNlcXVlbmNlIG51bWJlcnMsIHNwZWNpZmljYWxseSBgY3AtXHUwMDNlaW5fc2VxYCBhbmQgYGNwLVx1MDAzZW91dF9zZXFgLCB3aXRoaW4gdGhlIGBpcF92c19jb25uX25ld2AgZnVuY3Rpb24uIEludGVyZXN0aW5nLiBJbnN0ZWFkIG9mIHRoZSBzdHJhaWdodGZvcndhcmQgYGRlbHRhID0gMGAgYXNzaWdubWVudCBmb3IganVzdCB0aGUgc2VxdWVuY2UgbnVtYmVycywgdGhlIHBhdGNoIG5vdyB1c2VzIGBtZW1zZXRgIHRvIHplcm8gb3V0IHRoZSBlbnRpcmUgc3RydWN0dXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aHkuIENsZWFybHkgdGhlcmUncyBhIHBlcmNlaXZlZCBiZW5lZml0IHRvIHplcm9pbmcgdGhlICplbnRpcmUqIHN0cnVjdCwgbm90IGp1c3QgdGhlc2UgdHdvIG1lbWJlcnMuIEkgd29uZGVyIHdoYXQgZWxzZSBpcyBpbiB0aGF0IGBzdHJ1Y3QgaXBfdnNfc2VxYCB0aGF0IHRoZXkncmUgbm93IG51bGxpZnlpbmc/IFRoYXQncyB0aGUga2V5LiBJIG5lZWQgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIHN0cnVjdCBkZWZpbml0aW9uIHRvIGZpZ3VyZSBvdXQgd2hhdCBvdGhlciBmaWVsZHMgYXJlIGJlaW5nIGFmZmVjdGVkIGJ5IHRoaXMgY2hhbmdlIGFuZCB3aGF0IHRoZSBpbXBsaWNhdGlvbnMgYXJlIGZvciBJUFZTJ3MgY29ubmVjdGlvbiB0cmFja2luZyBiZWhhdmlvci4gTGV0IG1lIGNoZWNrIHRoZSBkZWZpbml0aW9uIG9mIGBzdHJ1Y3QgaXBfdnNfc2VxYCBhbmQgc2VlIHdoYXQncyBiZWluZyBjbGVhcmVkIGJlc2lkZXMgdGhlIG9idmlvdXMgc2VxdWVuY2UgbnVtYmVyIGZpZWxkcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkyMywiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTU6MzU6MTIuNTQ4ODk0NDIzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxNDQwMTI2MDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RydWN0IGlwX3ZzX3NlcSBcXFxce1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL25ldC9pcF92cy5oPTM0ND1lbnVtIGlwX3ZzX3NjdHBfc3RhdGVzIHtcXG4tLVxcbmluY2x1ZGUvbmV0L2lwX3ZzLmgtMzcwLSAqL1xcbmluY2x1ZGUvbmV0L2lwX3ZzLmg6MzcxOnN0cnVjdCBpcF92c19zZXEge1xcbmluY2x1ZGUvbmV0L2lwX3ZzLmgtMzcyLVxcdF9fdTMyXFx0XFx0XFx0aW5pdF9zZXE7XFx0LyogQWRkIGRlbHRhIGZyb20gdGhpcyBzZXEgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTU6MzU6MTYuNjkyOTEyMzQ4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjc1ODkwODE4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEkgbmVlZCB0byBnZXQgYSByZWFsbHkgc29saWQgdW5kZXJzdGFuZGluZyBvZiB0aGUgY29udGV4dCBoZXJlLiBJIG5lZWQgdG8gZXhhbWluZSB0aGUgZnVsbCBzdHJ1Y3QgZGVmaW5pdGlvbiB0byBtYWtlIGFueSBtZWFuaW5nZnVsIGp1ZGdtZW50LiBJIGNhbid0IGp1c3Qgb3BlcmF0ZSBpbiB0aGUgYWJzdHJhY3Q7IEkgbmVlZCB0byBzZWUgdGhlIHNwZWNpZmljcy4gTGV0J3MgZ2V0IHRoZSBmdWxsIHBpY3R1cmUgYmVmb3JlIEkgbWFrZSBhbnkgYXNzdW1wdGlvbnMuIEknbGwgbmVlZCB0byBrbm93IHRoZSBjb21wb25lbnRzLCB0aGVpciB0eXBlcywgdGhlaXIgcmVsYXRpb25zaGlwcyB0byBlYWNoIG90aGVyIOKAkyBldmVyeXRoaW5nLiBUaGlzIGlzIGNydWNpYWwgZm9yIGEgY29tcGxldGUgdW5kZXJzdGFuZGluZy4gVGltZSB0byByb2xsIHVwIG15IHNsZWV2ZXMgYW5kIGdldCB0aGUgZnVsbCBkZWZpbml0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzg2LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNTozNToxOS40NTE4MjI2MTZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjQzMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiaW5jbHVkZS9uZXQvaXBfdnMuaFwiLFxuICBcIkZpcnN0TGluZVwiOiAzNzAsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAzNzA6XFx0ICovXFxuIDM3MTpcXHRzdHJ1Y3QgaXBfdnNfc2VxIHtcXG4gMzcyOlxcdFxcdF9fdTMyXFx0XFx0XFx0aW5pdF9zZXE7XFx0LyogQWRkIGRlbHRhIGZyb20gdGhpcyBzZXEgKi9cXG4gMzczOlxcdFxcdF9fdTMyXFx0XFx0XFx0ZGVsdGE7XFx0XFx0LyogRGVsdGEgaW4gc2VxdWVuY2UgbnVtYmVycyAqL1xcbiAzNzQ6XFx0XFx0X191MzJcXHRcXHRcXHRwcmV2aW91c19kZWx0YTtcXHQvKiBEZWx0YSBpbiBzZXF1ZW5jZSBudW1iZXJzXFxuIDM3NTpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgKiBiZWZvcmUgbGFzdCByZXNpemVkIHBrdCAqL1xcbiAzNzY6XFx0fTtcXG4gMzc3OlxcdFxcbiAzNzg6XFx0LyogY291bnRlcnMgcGVyIGNwdSAqL1xcbiAzNzk6XFx0c3RydWN0IGlwX3ZzX2NvdW50ZXJzIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTU6MzU6MTkuNDUxOTkwNTQ2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzAxNTE5NDQyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIElQVlMgU3RydWN0IE1vZGlmaWNhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgc3RydWN0LCBhbmQgSSBzZWUgaXQgaGFzIGBpbml0X3NlcWAsIGBkZWx0YWAsIGFuZCBgcHJldmlvdXNfZGVsdGFgLiBOb3csIGl0IHNlZW1zIGxpa2UgdGhlIHJlY2VudCBjaGFuZ2UgemVyb2VzIG91dCBhbGwgdGhyZWUgb2YgdGhlc2UgZmllbGRzLCBub3QganVzdCBgZGVsdGFgLiBIbW0sIHRoYXQncyBpbnRlcmVzdGluZy4gSSBpbW1lZGlhdGVseSByZWFsaXplIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBiZWNhdXNlLCBwcmV2aW91c2x5LCBpdCBjb3VsZCBoYXZlIGJlZW4gcmVseWluZyBvbiB1bmluaXRpYWxpemVkIG1lbW9yeSBmb3IgdGhvc2UgZmllbGRzLiBUaGF0J3MgYSBwb3RlbnRpYWwgYnVnIHdhaXRpbmcgdG8gaGFwcGVuLCBhbmQgdGhpcyBpcyBhIGNsZWFuIGZpeC4gTm93IHRoZSBuZXh0IHRoaW5nIEkgbmVlZCB0byBkbyBpcyBsb29rIGZvciB3aGVyZSB0aGUgSVBWUyBjb25maWcgaXMsIHNvIEkgY2FuIHNlZSB3aGF0IGZ1bmN0aW9uYWxpdHkgaXMgZ29pbmcgdG8gYmUgYWZmZWN0ZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBhY3R1YWxseSBiZWluZyB6ZXJvZWQgb3V0IG5vdy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY5NSwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTU6MzU6MjIuNDY3MTg2ODQ0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3NDMzODY0NDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElQX1ZTXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTQtI1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjU6bWVudWNvbmZpZyBJUF9WU1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTYtXFx0dHJpc3RhdGUgXFxcIklQIHZpcnR1YWwgc2VydmVyIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0yODY9Y29tbWVudCAnSVBWUyBTSCBzY2hlZHVsZXInXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg3LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjI4ODpjb25maWcgSVBfVlNfU0hfVEFCX0JJVFNcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODktXFx0aW50IFxcXCJJUFZTIHNvdXJjZSBoYXNoaW5nIHRhYmxlIHNpemUgKHRoZSBOdGggcG93ZXIgb2YgMilcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0zMDE9Y29tbWVudCAnSVBWUyBNSCBzY2hlZHVsZXInXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzAyLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjMwMzpjb25maWcgSVBfVlNfTUhfVEFCX0lOREVYXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzA0LVxcdGludCBcXFwiSVBWUyBtYWdsZXYgaGFzaGluZyB0YWJsZSBpbmRleCBvZiBzaXplICh0aGUgcHJpbWUgbnVtYmVycylcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDE1OjM1OjI1LjIxMDU3ODU4MloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExNjMwNTQzNDk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0J3MgcGVyc3BlY3RpdmU6XG5cbioqRGl2aW5nIGludG8gdGhlIElQVlMgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIHRoZSBjb250ZXh0IGlzIGNsZWFybHkgY2VudGVyZWQgYXJvdW5kIGBJUF9WU2AuIFRoYXQgdGVsbHMgbWUgd2UncmUgZGVhbGluZyB3aXRoIElQIFZpcnR1YWwgU2VydmVyLCBsaWtlbHkgaW4gYSBMaW51eCBrZXJuZWwgY29udGV4dC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGNvbmZpcm0gdGhhdCB0aGlzIGlzIHRoZSBwcmltYXJ5IGZvY3VzLlxuXG5Ob3csIHRoZSBtZW50aW9uIG9mIGBpcF92c19jb25uX25ld2AgaXMgc2lnbmlmaWNhbnQuIFRoYXQncyBhIGxvdy1sZXZlbCBmdW5jdGlvbiByZWxhdGVkIHRvIGNvbm5lY3Rpb24gdHJhY2tpbmcgd2l0aGluIHRoZSBJUFZTIGZyYW1ld29yay4gIE15IHByaW1hcnkgcXVlc3Rpb24gYmVjb21lczogYXJlIHRoZXJlIG90aGVyLCAqbmVjZXNzYXJ5KiBrZXJuZWwgY29uZmlncyBJIG5lZWQgdG8gdmVyaWZ5ICphbG9uZ3NpZGUqIGBJUF9WU2AgdG8gZW5zdXJlIHRoYXQgYGlwX3ZzX2Nvbm5fbmV3YCBmdW5jdGlvbnMgY29ycmVjdGx5IGFuZCBteSBvdmVyYWxsIElQVlMgc2V0dXAgaXMgc291bmQ/IEknbSBub3QganVzdCBsb29raW5nIGZvciBcInJlY29tbWVuZGVkXCIgY29uZmlncyBoZXJlOyBJJ20gdHJ5aW5nIHRvIGlkZW50aWZ5ICpjcml0aWNhbCBkZXBlbmRlbmNpZXMqLiBGb3IgZXhhbXBsZSwgZG8gSSBuZWVkIGNlcnRhaW4gb3B0aW9ucyBlbmFibGVkIHdpdGhpbiBgSVBfVlNgIGl0c2VsZj8gT3IgcGVyaGFwcyByZWxhdGVkIG5ldHdvcmtpbmcgbW9kdWxlcz8gVGhhdCdzIHRoZSByZWFsIGNoYWxsZW5nZSwgdG8gZmluZCBkZXBlbmRlbmNpZXMgb3IgY29uZmxpY3RzLCBub3QganVzdCB0aGUgYmFzZSBmZWF0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTk3LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTU6MzU6MzYuODQxMTI1MTQ5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDcyNDgwMDY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwX3ZzX2Nvbm5fbmV3XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L2lwX3ZzLmg9MTY4OD1pcF92c19obl90b19jb25uKHN0cnVjdCBpcF92c19jb25uX2hub2RlICpobilcXG4tLVxcbmluY2x1ZGUvbmV0L2lwX3ZzLmgtMTY5My1cXG5pbmNsdWRlL25ldC9pcF92cy5oOjE2OTQ6c3RydWN0IGlwX3ZzX2Nvbm4gKmlwX3ZzX2Nvbm5fbmV3KGNvbnN0IHN0cnVjdCBpcF92c19jb25uX3BhcmFtICpwLCBpbnQgZGVzdF9hZixcXG5pbmNsdWRlL25ldC9pcF92cy5oLTE2OTUtXFx0XFx0XFx0XFx0ICBjb25zdCB1bmlvbiBuZl9pbmV0X2FkZHIgKmRhZGRyLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYz04MDA9c3RhdGljIHZvaWQgY29ubl9yZXNpemVfd29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtOTI0LSAqXFx0QmluZCBhIGNvbm5lY3Rpb24gZW50cnkgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBwYWNrZXRfeG1pdC5cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjkyNTogKlxcdENhbGxlZCBieSBpcF92c19jb25uX25ldy5cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTkyNi0gKi9cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM9MTM1Mj1zdHJ1Y3QgaXBfdnNfY29ubiAqXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzoxMzUzOmlwX3ZzX2Nvbm5fbmV3KGNvbnN0IHN0cnVjdCBpcF92c19jb25uX3BhcmFtICpwLCBpbnQgZGVzdF9hZixcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTEzNTQtXFx0ICAgICAgIGNvbnN0IHVuaW9uIG5mX2luZXRfYWRkciAqZGFkZHIsIF9fYmUxNiBkcG9ydCwgdW5zaWduZWQgaW50IGZsYWdzLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYz01Nz1FWFBPUlRfU1lNQk9MKGlwX3ZzX3Byb3RvX25hbWUpO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6NTg6RVhQT1JUX1NZTUJPTChpcF92c19jb25uX25ldyk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy01OS1FWFBPUlRfU1lNQk9MKGlwX3ZzX2Nvbm5faW5fZ2V0KTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM9NDMxPWlwX3ZzX3NjaGVkX3BlcnNpc3Qoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YyxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtNTQ4LVxcdFxcdCAqIHdoZW4gdGhlIHRlbXBsYXRlIGV4cGlyZXMgKi9cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjU0OTpcXHRcXHRjdCA9IGlwX3ZzX2Nvbm5fbmV3KFxcdTAwMjZwYXJhbSwgZGVzdC1cXHUwMDNlYWYsIFxcdTAwMjZkZXN0LVxcdTAwM2VhZGRyLCBkcG9ydCxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTU1MC1cXHRcXHRcXHRcXHQgICAgSVBfVlNfQ09OTl9GX1RFTVBMQVRFLCBkZXN0LCBza2ItXFx1MDAzZW1hcmspO1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy01NzctXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzo1Nzg6XFx0Y3AgPSBpcF92c19jb25uX25ldyhcXHUwMDI2cGFyYW0sIGRlc3QtXFx1MDAzZWFmLCBcXHUwMDI2ZGVzdC1cXHUwMDNlYWRkciwgZHBvcnQsIGZsYWdzLCBkZXN0LFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtNTc5LVxcdFxcdFxcdCAgICBza2ItXFx1MDAzZW1hcmspO1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy02MTItICogLTEgOiAgc2NoZWR1bGVyIHRyaWVkIHRvIHNjaGVkdWxlIGJ1dCBmYXRhbCBlcnJvciBvY2N1cnJlZCwgZWcuXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzo2MTM6ICogICAgICAgaXBfdnNfY29ubl9uZXcgZmFpbHVyZSAoRU5PTUVNKSBvciBpcF92c19zaXBfZmlsbF9wYXJhbVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtNjE0LSAqICAgICAgIGZhaWx1cmUgc3VjaCBhcyBtaXNzaW5nIENhbGwtSUQsIEVOT01FTSBvbiBza2JfbGluZWFyaXplXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTYxOT1pcF92c19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy03MjYtXFx0XFx0XFx0XFx0ICAgICAgY2FkZHIsIGNwb3J0LCB2YWRkciwgdnBvcnQsIFxcdTAwMjZwKTtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjcyNzpcXHRcXHRjcCA9IGlwX3ZzX2Nvbm5fbmV3KFxcdTAwMjZwLCBkZXN0LVxcdTAwM2VhZiwgXFx1MDAyNmRlc3QtXFx1MDAzZWFkZHIsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy03MjgtXFx0XFx0XFx0XFx0ICAgIGRlc3QtXFx1MDAzZXBvcnQgPyBkZXN0LVxcdTAwM2Vwb3J0IDogdnBvcnQsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTc2Mz1pbnQgaXBfdnNfbGVhdmUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2Yywgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtNzk0LVxcdFxcdFxcdFxcdFxcdCAgICAgIFxcdTAwMjZpcGgtXFx1MDAzZWRhZGRyLCBwcHRyWzFdLCBcXHUwMDI2cCk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzo3OTU6XFx0XFx0XFx0Y3AgPSBpcF92c19jb25uX25ldyhcXHUwMDI2cCwgc3ZjLVxcdTAwM2VhZiwgXFx1MDAyNmRhZGRyLCAwLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtNzk2LVxcdFxcdFxcdFxcdFxcdCAgICBJUF9WU19DT05OX0ZfQllQQVNTIHwgZmxhZ3MsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTEzMDc9c3RydWN0IGlwX3ZzX2Nvbm4gKmlwX3ZzX25ld19jb25uX291dChzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0xMzQ5LVxcdFxcdGlmICghY3QgfHwgIWlwX3ZzX2NoZWNrX3RlbXBsYXRlKGN0LCBkZXN0KSkge1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MTM1MDpcXHRcXHRcXHRjdCA9IGlwX3ZzX2Nvbm5fbmV3KFxcdTAwMjZwYXJhbSwgZGVzdC1cXHUwMDNlYWYsIGRhZGRyLCBkcG9ydCxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTEzNTEtXFx0XFx0XFx0XFx0XFx0ICAgIElQX1ZTX0NPTk5fRl9URU1QTEFURSwgZGVzdCwgMCk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTEzNjctXFx0XFx0XFx0ICAgICAgY2FkZHIsIGNwb3J0LCB2YWRkciwgdnBvcnQsIFxcdTAwMjZwYXJhbSk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoxMzY4OlxcdGNwID0gaXBfdnNfY29ubl9uZXcoXFx1MDAyNnBhcmFtLCBkZXN0LVxcdTAwM2VhZiwgZGFkZHIsIGRwb3J0LCBmbGFncywgZGVzdCwgMCk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0xMzY5LVxcdGlmICghY3ApIHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19mdHAuYz0yNDg9c3RhdGljIGludCBpcF92c19mdHBfb3V0KHN0cnVjdCBpcF92c19hcHAgKmFwcCwgc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Z0cC5jLTMzMC1cXHRcXHRcXHRcXHQgICAgICAwLCBcXHUwMDI2Y3AtXFx1MDAzZXZhZGRyLCBwb3J0LCBcXHUwMDI2cCk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Z0cC5jOjMzMTpcXHRcXHRuX2NwID0gaXBfdnNfY29ubl9uZXcoXFx1MDAyNnAsIGNwLVxcdTAwM2VhZiwgXFx1MDAyNmZyb20sIHBvcnQsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Z0cC5jLTMzMi1cXHRcXHRcXHRcXHQgICAgICBJUF9WU19DT05OX0ZfTk9fQ1BPUlQgfFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Z0cC5jPTQxOD1zdGF0aWMgaW50IGlwX3ZzX2Z0cF9pbihzdHJ1Y3QgaXBfdnNfYXBwICphcHAsIHN0cnVjdCBpcF92c19jb25uICpjcCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19mdHAuYy01MzUtXFx0XFx0aWYgKCFuX2NwKSB7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Z0cC5jOjUzNjpcXHRcXHRcXHRuX2NwID0gaXBfdnNfY29ubl9uZXcoXFx1MDAyNnAsIGNwLVxcdTAwM2VhZiwgXFx1MDAyNmNwLVxcdTAwM2VkYWRkcixcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZnRwLmMtNTM3LVxcdFxcdFxcdFxcdFxcdCAgICAgIGh0b25zKG50b2hzKGNwLVxcdTAwM2VkcG9ydCktMSksXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc3luYy5jPTg0MT1zdGF0aWMgdm9pZCBpcF92c19wcm9jX2Nvbm4oc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIHN0cnVjdCBpcF92c19jb25uX3BhcmFtICpwYXJhbSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zeW5jLmMtOTEwLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zeW5jLmM6OTExOlxcdFxcdGNwID0gaXBfdnNfY29ubl9uZXcocGFyYW0sIHR5cGUsIGRhZGRyLCBkcG9ydCwgZmxhZ3MsIGRlc3QsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3N5bmMuYy05MTItXFx0XFx0XFx0XFx0ICAgIGZ3bWFyayk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDE1OjM1OjM5LjMxMzYxMjAxN1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Nzc2MjkyNTYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSVBWUyBDb25uZWN0aW9uIENyZWF0aW9uIFBhdGNoKipcblxuT2theSwgc28gdGhlIGZ1bmN0aW9uIGBpcF92c19jb25uX25ld2AgaXMgY2FsbGVkIGFsbCBvdmVyIHRoZSBwbGFjZS4gVGhhdCBpbW1lZGlhdGVseSBmbGFncyB0aGlzIGFzIGltcG9ydGFudCBiZWNhdXNlIGl0J3MgcGFydCBvZiB0aGUgSVBWUyBjb3JlLCBhbmQgYSBidWcgaGVyZSBjb3VsZCBiZSB3aWRlc3ByZWFkLiBUaGUgcGF0Y2ggdGFyZ2V0cyBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZSB3aXRoaW4gYGlwX3ZzX2Nvbm5fbmV3YCBkdXJpbmcgY29ubmVjdGlvbiBhbGxvY2F0aW9uLiBHaXZlbiB0aGUgcG90ZW50aWFsIGltcGFjdCwgdGhpcyBpcyBzY3JlYW1pbmcgZm9yIHNvbWUgc2VyaW91cyBmdXp6aW5nLlxuXG5CZWZvcmUgSSBkaXZlIGluLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZW52aXJvbm1lbnQuIFdoYXQgY29uZmlndXJhdGlvbnMgYXJlIHJlbGV2YW50IGhlcmU/IGBJUF9WU2AgaXMgdGhlIG9idmlvdXMgb25lLCBidXQgYXJlIHRoZXJlIGFueSBvdGhlcnMgdGhhdCBtaWdodCBpbXBhY3QgdGhpcyBzcGVjaWZpYyBjb2RlIHBhdGg/IExldCBtZSBjaGVjayB0aGUga2VybmVsIGNvbmZpZyBmb3IgYW55IGhpZGRlbiBkZXBlbmRlbmNpZXMuXG5cblRoZSBwYXRjaCBpdHNlbGYgaXMgbG9jYXRlZCBpbiBgbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY2AsIHNvIEkgc2hvdWxkIGJlIGFibGUgdG8gY3Jvc3MtcmVmZXJlbmNlIHRvIHRoZSBNYWtlZmlsZSBmb3IgdGhlIG1vZHVsZS4gQSBxdWljayBsb29rIGluIGBuZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGVgIHNob3VsZCB0ZWxsIG1lIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgcHJlLXJlcXVpc2l0ZXMgZm9yIGdldHRpbmcgdGhpcyBydW5uaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NDcwLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDE1OjM1OjQ0LjA4OTkwNjYxOVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NjM2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGVcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBNYWtlZmlsZSBmb3IgdGhlIElQVlMgbW9kdWxlcyBvbiB0b3Agb2YgSVB2NC5cXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0IyBJUFZTIHRyYW5zcG9ydCBwcm90b2NvbCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XFxuICAgNzpcXHRpcF92c19wcm90by1vYmpzLXkgOj1cXG4gICA4OlxcdGlwX3ZzX3Byb3RvLW9ianMtJChDT05GSUdfSVBfVlNfUFJPVE9fVENQKSArPSBpcF92c19wcm90b190Y3Aub1xcbiAgIDk6XFx0aXBfdnNfcHJvdG8tb2Jqcy0kKENPTkZJR19JUF9WU19QUk9UT19VRFApICs9IGlwX3ZzX3Byb3RvX3VkcC5vXFxuICAxMDpcXHRpcF92c19wcm90by1vYmpzLSQoQ09ORklHX0lQX1ZTX1BST1RPX0FIX0VTUCkgKz0gaXBfdnNfcHJvdG9fYWhfZXNwLm9cXG4gIDExOlxcdGlwX3ZzX3Byb3RvLW9ianMtJChDT05GSUdfSVBfVlNfUFJPVE9fU0NUUCkgKz0gaXBfdnNfcHJvdG9fc2N0cC5vXFxuICAxMjpcXHRcXG4gIDEzOlxcdGlwX3ZzLWV4dHJhX29ianMteSA6PVxcbiAgMTQ6XFx0aXBfdnMtZXh0cmFfb2Jqcy0kKENPTkZJR19JUF9WU19ORkNUKSArPSBpcF92c19uZmN0Lm9cXG4gIDE1OlxcdFxcbiAgMTY6XFx0aXBfdnMtb2JqcyA6PVxcdGlwX3ZzX2Nvbm4ubyBpcF92c19jb3JlLm8gaXBfdnNfY3RsLm8gaXBfdnNfc2NoZWQub1xcdCAgIFxcXFxcXG4gIDE3OlxcdFxcdFxcdGlwX3ZzX3htaXQubyBpcF92c19hcHAubyBpcF92c19zeW5jLm9cXHQgICBcXHRcXHQgICBcXFxcXFxuICAxODpcXHRcXHRcXHRpcF92c19lc3QubyBpcF92c19wcm90by5vIGlwX3ZzX3BlLm9cXHRcXHRcXHQgICBcXFxcXFxuICAxOTpcXHRcXHRcXHQkKGlwX3ZzX3Byb3RvLW9ianMteSkgJChpcF92cy1leHRyYV9vYmpzLXkpXFxuICAyMDpcXHRcXG4gIDIxOlxcdFxcbiAgMjI6XFx0IyBJUFZTIGNvcmVcXG4gIDIzOlxcdG9iai0kKENPTkZJR19JUF9WUykgKz0gaXBfdnMub1xcbiAgMjQ6XFx0XFxuICAyNTpcXHQjIElQVlMgc2NoZWR1bGVyc1xcbiAgMjY6XFx0b2JqLSQoQ09ORklHX0lQX1ZTX1JSKSArPSBpcF92c19yci5vXFxuICAyNzpcXHRvYmotJChDT05GSUdfSVBfVlNfV1JSKSArPSBpcF92c193cnIub1xcbiAgMjg6XFx0b2JqLSQoQ09ORklHX0lQX1ZTX0xDKSArPSBpcF92c19sYy5vXFxuICAyOTpcXHRvYmotJChDT05GSUdfSVBfVlNfV0xDKSArPSBpcF92c193bGMub1xcbiAgMzA6XFx0b2JqLSQoQ09ORklHX0lQX1ZTX0ZPKSArPSBpcF92c19mby5vXFxuICAzMTpcXHRvYmotJChDT05GSUdfSVBfVlNfT1ZGKSArPSBpcF92c19vdmYub1xcbiAgMzI6XFx0b2JqLSQoQ09ORklHX0lQX1ZTX0xCTEMpICs9IGlwX3ZzX2xibGMub1xcbiAgMzM6XFx0b2JqLSQoQ09ORklHX0lQX1ZTX0xCTENSKSArPSBpcF92c19sYmxjci5vXFxuICAzNDpcXHRvYmotJChDT05GSUdfSVBfVlNfREgpICs9IGlwX3ZzX2RoLm9cXG4gIDM1OlxcdG9iai0kKENPTkZJR19JUF9WU19TSCkgKz0gaXBfdnNfc2gub1xcbiAgMzY6XFx0b2JqLSQoQ09ORklHX0lQX1ZTX01IKSArPSBpcF92c19taC5vXFxuICAzNzpcXHRvYmotJChDT05GSUdfSVBfVlNfU0VEKSArPSBpcF92c19zZWQub1xcbiAgMzg6XFx0b2JqLSQoQ09ORklHX0lQX1ZTX05RKSArPSBpcF92c19ucS5vXFxuICAzOTpcXHRvYmotJChDT05GSUdfSVBfVlNfVFdPUykgKz0gaXBfdnNfdHdvcy5vXFxuICA0MDpcXHRcXG4gIDQxOlxcdCMgSVBWUyBhcHBsaWNhdGlvbiBoZWxwZXJzXFxuICA0MjpcXHRvYmotJChDT05GSUdfSVBfVlNfRlRQKSArPSBpcF92c19mdHAub1xcbiAgNDM6XFx0XFxuICA0NDpcXHQjIElQVlMgY29ubmVjdGlvbiB0ZW1wbGF0ZSByZXRyaWV2ZXJzXFxuICA0NTpcXHRvYmotJChDT05GSUdfSVBfVlNfUEVfU0lQKSArPSBpcF92c19wZV9zaXAub1xcbiAgNDY6XFx0aWZkZWYgQ09ORklHX0dDT1ZfUFJPRklMRV9JUFZTXFxuICA0NzpcXHRHQ09WX1BST0ZJTEUgOj0geVxcbiAgNDg6XFx0ZW5kaWZcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTU6MzU6NDQuMDg5OTc0MjQ5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgxMzUzMjkyMzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIElQVlMgQ29ubmVjdGlvbiBNb2R1bGUqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24gZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUuIEZpcnN0LCBJJ20gbm90aW5nIHRoYXQgYGlwX3ZzX2Nvbm4ub2AgaXMgcGFydCBvZiB0aGUgYnJvYWRlciBgaXBfdnMtb2Jqc2AgbW9kdWxlLCBhbmQgdGhhdCB0aGUgYElQX1ZTYCBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyB0aGUgb25seSBkZXBlbmRlbmN5IGhlcmUuIE5vIHN1cnByaXNlcyB0aGVyZTsgc3RhbmRhcmQgc3R1ZmYuXG5cbk5vdywgb250byB0aGUgbWVhdCBvZiBpdCwgYEZvY3VzU3ltYm9sc2AuIFRoZSBtb2RpZmllZCBmdW5jdGlvbiBpcyBgaXBfdnNfY29ubl9uZXdgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSBhc3Nlc3MgaWYgYGlwX3ZzX2Nvbm5fbmV3YCBpcyBhIGhvdC1wYXRoIGZ1bmN0aW9uLCB3aGljaCBpdCBpcywgYXMgaXQgY3JlYXRlcyBhIG5ldyBjb25uZWN0aW9uIHdoZW4gb25lIGlzIGVzdGFibGlzaGVkLiBUaGlzIG1ha2VzIGl0IGEgcG90ZW50aWFsIHRhcmdldC4gSG93ZXZlciwgSSB3YW50IHRvIHNlZSBpZiBvdGhlciBmdW5jdGlvbnMgY2FsbGluZyBgaXBfdnNfY29ubl9uZXdgIG1pZ2h0IG9mZmVyIGJldHRlciBlbnRyeSBwb2ludHMuIEkgY2hlY2tlZCB0aGUgY2FsbCBzaXRlczogYGlwX3ZzX3NjaGVkdWxlYCwgYGlwX3ZzX25ld19jb25uX291dGAsIGBpcF92c19mdHBfb3V0YCwgYGlwX3ZzX2Z0cF9pbmAsIGFuZCBgaXBfdnNfcHJvY19jb25uYCAoc3BlY2lmaWNhbGx5IGZyb20gdGhlIHN5bmMgcHJvY2VzcykgYWxsIGxlYWQgaGVyZS4gSG93ZXZlciwgYGlwX3ZzX2Nvbm5fbmV3YCBpdHNlbGYgaXMgYWxzbyBsb29raW5nIGdvb2QuXG5cbkEgcXVpY2sgY2hlY2sgdG8gc2VlIGlmIGBpcF92c19jb25uX25ld2AgaXMgc3RhdGljIG9yIGV4cG9ydGVkIHJldmVhbGVkIHRoZSBsYXR0ZXI6IGBFWFBPUlRfU1lNQk9MKGlwX3ZzX2Nvbm5fbmV3KTtgIFRoYXQncyBpbXBvcnRhbnQhIEl0IG1lYW5zIHRoaXMgZnVuY3Rpb24gY2FuIGJlIGNhbGxlZCBmcm9tIG90aGVyIG1vZHVsZXMsIGV4cGFuZGluZyB0aGUgYXR0YWNrIHN1cmZhY2UuIFRoaXMgY29uZmlybXMgbXkgaW5pdGlhbCBhc3Nlc3NtZW50LCBzbyBJJ2xsIGFkZCBgaXBfdnNfY29ubl9uZXdgIHRvIHRoZSBgRm9jdXNTeW1ib2xzYCBsaXN0LlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSByZS1yZXZpZXdlZCB0aGUgcGF0Y2gsIGFuZCB0aGUgb25seSBtb2RpZmljYXRpb24gaXMgaW5kZWVkIHRvIGBpcF92c19jb25uX25ld2AuXG5cblRoZXJlZm9yZSwgbXkgZmluYWwgc3VtbWFyeSBpczogSSdtIG1hcmtpbmcgdGhpcyBhcyBgV29ydGhGdXp6aW5nOiB0cnVlYCBnaXZlbiB0aGF0IHRoZSBwYXRjaCB0YXJnZXRzIGEga2V5IGNvbm5lY3Rpb24gY3JlYXRpb24gZnVuY3Rpb24uIFRoZSB0YXJnZXQgZnVuY3Rpb24gZm9yIGZ1enppbmcgaXMgYEZvY3VzU3ltYm9sczogW1wiaXBfdnNfY29ubl9uZXdcIl1gLiBUaGUgbWluaW1hbCByZXF1aXJlZCBjb25maWd1cmF0aW9uIGlzIGBFbmFibGVDb25maWdzOiBbXCJJUF9WU1wiXWAuIE15IHJlYXNvbmluZyBpcyB0aGUgcGF0Y2ggZml4ZXMgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgdnVsbmVyYWJpbGl0eSB3aXRoaW4gYGlwX3ZzX2Nvbm5fbmV3YCwgc3BlY2lmaWNhbGx5IHplcm9pbmcgb3V0IHRoZSBgaXBfdnNfc2VxYCBzdHJ1Y3QuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIElQVlMgY29yZSBsb2dpYyBhbmQgaXMgdHJpZ2dlcmVkIHdoZW4gbmV3IElQVlMgY29ubmVjdGlvbnMgYXJlIGVzdGFibGlzaGVkLiBUaGlzIHNlZW1zIGEgd29ydGh3aGlsZSB0YXJnZXQgZm9yIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY4NDAsIk91dHB1dFRva2VucyI6MTA4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDE3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTU6MzU6NTIuMjI1MzA2MDU2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ2MDkwNDY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUF9WU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwX3ZzX2Nvbm5fbmV3XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUgaW4gYGlwX3ZzX2Nvbm5fbmV3YCBieSB6ZXJvaW5nIG91dCB0aGUgZW50aXJlIGBpcF92c19zZXFgIHN0cnVjdHMgaW5zdGVhZCBvZiBqdXN0IHRoZSBgZGVsdGFgIGZpZWxkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIElQVlMgY29yZSBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIHdoZW4gZXN0YWJsaXNoaW5nIG5ldyBJUFZTIGNvbm5lY3Rpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX1ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaXBfdnNfY29ubl9uZXdcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZSBpbiBgaXBfdnNfY29ubl9uZXdgIGJ5IHplcm9pbmcgb3V0IHRoZSBlbnRpcmUgYGlwX3ZzX3NlcWAgc3RydWN0cyBpbnN0ZWFkIG9mIGp1c3QgdGhlIGBkZWx0YWAgZmllbGQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgSVBWUyBjb3JlIGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgd2hlbiBlc3RhYmxpc2hpbmcgbmV3IElQVlMgY29ubmVjdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowzrp6b[1] Phase: Succeeded StartedAt: 2026-07-02 15:36:04 +0000 UTC FinishedAt: 2026-07-02 15:36:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzrp6b[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-02 15:36:04 +0000 UTC FinishedAt: 2026-07-02 15:36:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzrp6b[2] Phase: Succeeded StartedAt: 2026-07-02 15:36:04 +0000 UTC FinishedAt: 2026-07-02 17:47:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzrp6b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_conn_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"8b6d23b5-58a4-408a-8763-2ea596fdf018","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Failed StartedAt: 2026-07-02 15:36:04 +0000 UTC FinishedAt: 2026-07-02 17:47:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_conn_new"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"8b6d23b5-58a4-408a-8763-2ea596fdf018","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowzrp6b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_conn_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"8b6d23b5-58a4-408a-8763-2ea596fdf018","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-02 15:36:04 +0000 UTC FinishedAt: 2026-07-02 15:36:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzrp6b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_conn_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"8b6d23b5-58a4-408a-8763-2ea596fdf018","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-02 15:36:04 +0000 UTC FinishedAt: 2026-07-02 15:36:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowzrp6b/series-workflowzrp6b-convert-artifact-507588192/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzrp6b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_conn_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"8b6d23b5-58a4-408a-8763-2ea596fdf018","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-02 15:36:14 +0000 UTC FinishedAt: 2026-07-02 16:03:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzrp6b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_conn_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"8b6d23b5-58a4-408a-8763-2ea596fdf018","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-02 15:36:14 +0000 UTC FinishedAt: 2026-07-02 16:03:04 +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:*876bdc4d-7db2-4553-a402-cca77f616d10,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-workflowzrp6b/series-workflowzrp6b-convert-artifact-507588192/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": "b3014479-d6c5-47e4-987c-37b065856965", "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-workflowzrp6b/series-workflowzrp6b-build-action-573152550/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzrp6b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_conn_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"8b6d23b5-58a4-408a-8763-2ea596fdf018","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-02 15:36:14 +0000 UTC FinishedAt: 2026-07-02 16:01:01 +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:*876bdc4d-7db2-4553-a402-cca77f616d10,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-workflowzrp6b/series-workflowzrp6b-convert-artifact-507588192/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": "b3014479-d6c5-47e4-987c-37b065856965", "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-workflowzrp6b/series-workflowzrp6b-build-action-573152550/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzrp6b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_conn_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"8b6d23b5-58a4-408a-8763-2ea596fdf018","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-02 16:03:04 +0000 UTC FinishedAt: 2026-07-02 16:03:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzrp6b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_conn_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"8b6d23b5-58a4-408a-8763-2ea596fdf018","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-02 16:03:04 +0000 UTC FinishedAt: 2026-07-02 16:03:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzrp6b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_conn_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"8b6d23b5-58a4-408a-8763-2ea596fdf018","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-02 16:03:04 +0000 UTC FinishedAt: 2026-07-02 16:03:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzrp6b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_conn_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"8b6d23b5-58a4-408a-8763-2ea596fdf018","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-02 16:03:04 +0000 UTC FinishedAt: 2026-07-02 16:03:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"8b6d23b5-58a4-408a-8763-2ea596fdf018","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowzrp6b/series-workflowzrp6b-convert-artifact-1334246023/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzrp6b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_conn_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"8b6d23b5-58a4-408a-8763-2ea596fdf018","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-02 16:03:29 +0000 UTC FinishedAt: 2026-07-02 16:05:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzrp6b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_conn_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"8b6d23b5-58a4-408a-8763-2ea596fdf018","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-02 16:03:29 +0000 UTC FinishedAt: 2026-07-02 16:05:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*b3014479-d6c5-47e4-987c-37b065856965,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-workflowzrp6b/series-workflowzrp6b-build-action-573152550/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-workflowzrp6b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_conn_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"8b6d23b5-58a4-408a-8763-2ea596fdf018","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-02 16:05:43 +0000 UTC FinishedAt: 2026-07-02 16:05:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzrp6b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_conn_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"8b6d23b5-58a4-408a-8763-2ea596fdf018","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-02 16:05:43 +0000 UTC FinishedAt: 2026-07-02 16:05:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzrp6b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_conn_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"8b6d23b5-58a4-408a-8763-2ea596fdf018","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-02 16:05:43 +0000 UTC FinishedAt: 2026-07-02 16:32:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzrp6b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_conn_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"8b6d23b5-58a4-408a-8763-2ea596fdf018","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-02 16:05:43 +0000 UTC FinishedAt: 2026-07-02 16:32:08 +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:*876bdc4d-7db2-4553-a402-cca77f616d10,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-workflowzrp6b/series-workflowzrp6b-convert-artifact-1334246023/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": "b648d31c-0169-4823-bf8a-1eb06c7fd606", "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-workflowzrp6b/series-workflowzrp6b-build-action-3726699531/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzrp6b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_conn_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"8b6d23b5-58a4-408a-8763-2ea596fdf018","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-02 16:05:43 +0000 UTC FinishedAt: 2026-07-02 16:31:58 +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:*876bdc4d-7db2-4553-a402-cca77f616d10,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-workflowzrp6b/series-workflowzrp6b-convert-artifact-1334246023/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": "b648d31c-0169-4823-bf8a-1eb06c7fd606", "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-workflowzrp6b/series-workflowzrp6b-build-action-3726699531/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzrp6b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_conn_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"8b6d23b5-58a4-408a-8763-2ea596fdf018","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-02 16:32:08 +0000 UTC FinishedAt: 2026-07-02 16:32:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzrp6b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_conn_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"8b6d23b5-58a4-408a-8763-2ea596fdf018","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-02 16:32:08 +0000 UTC FinishedAt: 2026-07-02 16:32:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzrp6b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_conn_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"8b6d23b5-58a4-408a-8763-2ea596fdf018","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-02 16:32:08 +0000 UTC FinishedAt: 2026-07-02 16:34:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzrp6b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_conn_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"8b6d23b5-58a4-408a-8763-2ea596fdf018","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-02 16:32:08 +0000 UTC FinishedAt: 2026-07-02 16:34:11 +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:*b648d31c-0169-4823-bf8a-1eb06c7fd606,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-workflowzrp6b/series-workflowzrp6b-build-action-3726699531/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-workflowzrp6b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_conn_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"8b6d23b5-58a4-408a-8763-2ea596fdf018","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Failed StartedAt: 2026-07-02 16:34:21 +0000 UTC FinishedAt: 2026-07-02 17:47:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzrp6b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_conn_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"8b6d23b5-58a4-408a-8763-2ea596fdf018","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Failed StartedAt: 2026-07-02 16:34:21 +0000 UTC FinishedAt: 2026-07-02 17:47:25 +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":["ip_vs_conn_new"],"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:*b3014479-d6c5-47e4-987c-37b065856965,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b648d31c-0169-4823-bf8a-1eb06c7fd606,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-workflowzrp6b/series-workflowzrp6b-build-action-573152550/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-workflowzrp6b/series-workflowzrp6b-build-action-3726699531/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowzrp6b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_conn_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"8b6d23b5-58a4-408a-8763-2ea596fdf018","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-02 16:34:21 +0000 UTC FinishedAt: 2026-07-02 16:35:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzrp6b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_conn_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"8b6d23b5-58a4-408a-8763-2ea596fdf018","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-02 16:34:21 +0000 UTC FinishedAt: 2026-07-02 16:35:11 +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":["ip_vs_conn_new"],"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-workflowzrp6b/series-workflowzrp6b-convert-artifact-612296032/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzrp6b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_conn_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"8b6d23b5-58a4-408a-8763-2ea596fdf018","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-02 16:34:21 +0000 UTC FinishedAt: 2026-07-02 16:34:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzrp6b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_conn_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"8b6d23b5-58a4-408a-8763-2ea596fdf018","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-02 16:34:21 +0000 UTC FinishedAt: 2026-07-02 16:34:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzrp6b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_conn_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"8b6d23b5-58a4-408a-8763-2ea596fdf018","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-02 16:34:22 +0000 UTC FinishedAt: 2026-07-02 16:34:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzrp6b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_conn_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"8b6d23b5-58a4-408a-8763-2ea596fdf018","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Failed StartedAt: 2026-07-02 16:35:52 +0000 UTC FinishedAt: 2026-07-02 17:47:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzrp6b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_conn_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bb09d0e64ecaa0aa0f7d1133a1696ed74dead295","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"8b6d23b5-58a4-408a-8763-2ea596fdf018","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Error StartedAt: 2026-07-02 16:35:52 +0000 UTC FinishedAt: 2026-07-02 17:47:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*b3014479-d6c5-47e4-987c-37b065856965,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b648d31c-0169-4823-bf8a-1eb06c7fd606,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-workflowzrp6b/series-workflowzrp6b-build-action-573152550/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-workflowzrp6b/series-workflowzrp6b-build-action-3726699531/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-workflowzrp6b/series-workflowzrp6b-convert-artifact-612296032/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil