Name: series-workflowhxlfp Phase: Succeeded StartedAt: 2026-07-25 02:24:08 +0000 UTC FinishedAt: 2026-07-25 05:34:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhxlfp[0] Phase: Succeeded StartedAt: 2026-07-25 02:24:08 +0000 UTC FinishedAt: 2026-07-25 03:07:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhxlfp[0].run-triage Phase: Succeeded StartedAt: 2026-07-25 02:24:08 +0000 UTC FinishedAt: 2026-07-25 03:07:30 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "90883c513ca01e77c56b8d94be7de11420c1dacf", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "WLAN", "WLAN_VENDOR_MARVELL", "MWIFIEX", "MWIFIEX_USB", "CFG80211", "USB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "90883c513ca01e77c56b8d94be7de11420c1dacf", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "WLAN", "WLAN_VENDOR_MARVELL", "MWIFIEX", "MWIFIEX_USB", "CFG80211", "USB" ], "series_id": "e538d511-b63e-4870-8c0b-e768124f54f1" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mwifiex_process_mgmt_packet", "mwifiex_process_sta_rx_packet", "mwifiex_process_uap_rx_packet", "mwifiex_handle_rx_packet" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI1IDAzOjA1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1dMQU4mIzM0OywKICAgICYjMzQ7V0xBTl9WRU5ET1JfTUFSVkVMTCYjMzQ7LAogICAgJiMzNDtNV0lGSUVYJiMzNDssCiAgICAmIzM0O01XSUZJRVhfVVNCJiMzNDssCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O213aWZpZXhfcHJvY2Vzc19tZ210X3BhY2tldCYjMzQ7LAogICAgJiMzNDttd2lmaWV4X3Byb2Nlc3Nfc3RhX3J4X3BhY2tldCYjMzQ7LAogICAgJiMzNDttd2lmaWV4X3Byb2Nlc3NfdWFwX3J4X3BhY2tldCYjMzQ7LAogICAgJiMzNDttd2lmaWV4X2hhbmRsZV9yeF9wYWNrZXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gYG13aWZpZXhfcGFyc2VfbWdtdF9wYWNrZXRgIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyB3aGVuIHBhcnNpbmcgbWFuYWdlbWVudCBwYWNrZXRzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIE1hcnZlbGwgV2lGaS1FeCBkcml2ZXIuIFRoZSBkcml2ZXIgc3VwcG9ydHMgVVNCIGludGVyZmFjZXMgKGBNV0lGSUVYX1VTQmApLCB3aGljaCBjYW4gYmUgZnV6emVkIHVzaW5nIFVTQiBkdW1teV9oY2QuIFRoZSBtb2RpZmllZCBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIHRoZSBtYWluIFJYIHByb2Nlc3NpbmcgcGF0aC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwMzowNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDY1MWFiNWQ0ZWRkYTA3NmZhNDlkMTBhMGE5MWJhZDcxMDk4ZWUwNzdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAyNSAwMzowNTo1OCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuY1xuaW5kZXggN2QzNjMxZDIxMjIzNmMuLmU1NGE4NmVjYWEzM2FmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuY1xuQEAgLTMxNyw5ICYjNDM7MzE3LDE1IEBAIG13aWZpZXhfcGFyc2VfbWdtdF9wYWNrZXQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgdTggKnBheWxvYWQsIHUxNiBsZW4sXG4gXG4gXHRzd2l0Y2ggKHN0eXBlKSB7XG4gXHRjYXNlIElFRUU4MDIxMV9TVFlQRV9BQ1RJT046XG4mIzQzO1x0XHRpZiAobGVuIFx1MDAzYyBJRUVFODAyMTFfTUlOX0FDVElPTl9TSVpFKGNhdGVnb3J5KSAmIzQzOyBFVEhfQUxFTilcbiYjNDM7XHRcdFx0cmV0dXJuIC0xO1xuJiM0MztcbiBcdFx0Y2F0ZWdvcnkgPSAqKHBheWxvYWQgJiM0Mzsgc2l6ZW9mKHN0cnVjdCBpZWVlODAyMTFfaGRyKSk7XG4gXHRcdHN3aXRjaCAoY2F0ZWdvcnkpIHtcbiBcdFx0Y2FzZSBXTEFOX0NBVEVHT1JZX1BVQkxJQzpcbiYjNDM7XHRcdFx0aWYgKGxlbiBcdTAwM2MgSUVFRTgwMjExX01JTl9BQ1RJT05fU0laRShhY3Rpb25fY29kZSkgJiM0MzsgRVRIX0FMRU4pXG4mIzQzO1x0XHRcdFx0cmV0dXJuIC0xO1xuJiM0MztcbiBcdFx0XHRhY3Rpb25fY29kZSA9ICoocGF5bG9hZCAmIzQzOyBzaXplb2Yoc3RydWN0IGllZWU4MDIxMV9oZHIpXG4gXHRcdFx0XHRcdCYjNDM7IDEpO1xuIFx0XHRcdGlmIChhY3Rpb25fY29kZSA9PSBXTEFOX1BVQl9BQ1RJT05fVERMU19ESVNDT1ZFUl9SRVMpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwMzowNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7V0xBTiYjMzQ7LAogICAgJiMzNDtXTEFOX1ZFTkRPUl9NQVJWRUxMJiMzNDssCiAgICAmIzM0O01XSUZJRVgmIzM0OywKICAgICYjMzQ7TVdJRklFWF9VU0ImIzM0OywKICAgICYjMzQ7Q0ZHODAyMTEmIzM0OywKICAgICYjMzQ7VVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXdpZmlleF9wcm9jZXNzX21nbXRfcGFja2V0JiMzNDssCiAgICAmIzM0O213aWZpZXhfcHJvY2Vzc19zdGFfcnhfcGFja2V0JiMzNDssCiAgICAmIzM0O213aWZpZXhfcHJvY2Vzc191YXBfcnhfcGFja2V0JiMzNDssCiAgICAmIzM0O213aWZpZXhfaGFuZGxlX3J4X3BhY2tldCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byBgbXdpZmlleF9wYXJzZV9tZ210X3BhY2tldGAgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzIHdoZW4gcGFyc2luZyBtYW5hZ2VtZW50IHBhY2tldHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgTWFydmVsbCBXaUZpLUV4IGRyaXZlci4gVGhlIGRyaXZlciBzdXBwb3J0cyBVU0IgaW50ZXJmYWNlcyAoYE1XSUZJRVhfVVNCYCksIHdoaWNoIGNhbiBiZSBmdXp6ZWQgdXNpbmcgVVNCIGR1bW15X2hjZC4gVGhlIG1vZGlmaWVkIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB2aWEgdGhlIG1haW4gUlggcHJvY2Vzc2luZyBwYXRoLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNjUxYWI1ZDRlZGRhMDc2ZmE0OWQxMGEwYTkxYmFkNzEwOThlZTA3NwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgSnVsIDI1IDAzOjA1OjU4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmMKaW5kZXggN2QzNjMxZDIxMjIzNmMuLmU1NGE4NmVjYWEzM2FmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmMKQEAgLTMxNyw5ICYjNDM7MzE3LDE1IEBAIG13aWZpZXhfcGFyc2VfbWdtdF9wYWNrZXQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgdTggKnBheWxvYWQsIHUxNiBsZW4sCiAKIAlzd2l0Y2ggKHN0eXBlKSB7CiAJY2FzZSBJRUVFODAyMTFfU1RZUEVfQUNUSU9OOgomIzQzOwkJaWYgKGxlbiAmbHQ7IElFRUU4MDIxMV9NSU5fQUNUSU9OX1NJWkUoY2F0ZWdvcnkpICYjNDM7IEVUSF9BTEVOKQomIzQzOwkJCXJldHVybiAtMTsKJiM0MzsKIAkJY2F0ZWdvcnkgPSAqKHBheWxvYWQgJiM0Mzsgc2l6ZW9mKHN0cnVjdCBpZWVlODAyMTFfaGRyKSk7CiAJCXN3aXRjaCAoY2F0ZWdvcnkpIHsKIAkJY2FzZSBXTEFOX0NBVEVHT1JZX1BVQkxJQzoKJiM0MzsJCQlpZiAobGVuICZsdDsgSUVFRTgwMjExX01JTl9BQ1RJT05fU0laRShhY3Rpb25fY29kZSkgJiM0MzsgRVRIX0FMRU4pCiYjNDM7CQkJCXJldHVybiAtMTsKJiM0MzsKIAkJCWFjdGlvbl9jb2RlID0gKihwYXlsb2FkICYjNDM7IHNpemVvZihzdHJ1Y3QgaWVlZTgwMjExX2hkcikKIAkJCQkJJiM0MzsgMSk7CiAJCQlpZiAoYWN0aW9uX2NvZGUgPT0gV0xBTl9QVUJfQUNUSU9OX1RETFNfRElTQ09WRVJfUkVTKSB7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDAzOjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxOTQKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAxNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUmVhY2hpbmcgVGhhdCBQYXRjaCoqCgpPa2F5LCBzbyB0aGVyZSYjMzk7cyBhIHBhdGNoIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jYC4gQXBwYXJlbnRseSwgaXQmIzM5O3MgYWRkaW5nIHNvbWUgYm91bmRzIGNoZWNraW5nIHRvIGBtd2lmaWV4X3BhcnNlX21nbXRfcGFja2V0YC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7Q2FuIHdlICpnZXQqIHRvIHRoaXMgY29kZT8gSXMgaXQgZXZlbiByZWFjaGFibGUgaW4gYSByZWFsLXdvcmxkIHNjZW5hcmlvPyYjMzQ7IGBtd2lmaWV4YCBpcyB0aGUgTWFydmVsbCBXaUZpIGRyaXZlciwgcmlnaHQ/IFNvLCB0aGUgbmV4dCBxdWVzdGlvbiBpcyBvYnZpb3VzOiBjYW4gd2UgZnV6eiBpdD8KClR5cGljYWxseSwgSSYjMzk7ZCByZWFjaCBmb3Igc29tZXRoaW5nIGxpa2UgYG1hYzgwMjExX2h3c2ltYCBmb3IgV2lGaSBkcml2ZXIgZnV6emluZy4gVGhhdCYjMzk7cyB1c3VhbGx5IHRoZSBnby10by4gQnV0LCBob2xkIG9uIGEgc2Vjb25kLi4uIGBtd2lmaWV4YCBpcyBhICpoYXJkd2FyZSogZHJpdmVyLCBub3QgYSBnZW5lcmljIG9uZS4gVGhhdCBjb21wbGljYXRlcyB0aGluZ3MgYSBsaXR0bGUuCgpBaCwgcmlnaHQhIEkgbmVlZCB0byByZW1lbWJlciB0aGUgYXJjaGl0ZWN0dXJhbCBkZXRhaWxzIG9mIHRoaXMgZHJpdmVyLiBJdCBzdXBwb3J0cyBTRElPLCBQQ0llLCBhbmQgVVNCLiBUaGF0JiMzOTtzIHRoZSBrZXkhIEFuZCB3YWl0IGEgc2Vjb25kLCBVU0IgaXMgaW50ZXJlc3RpbmcsIFVTQiBkcml2ZXJzICpjYW4qIGJlIGZ1enplZCB1c2luZyBVU0IgZ2FkZ2V0L2R1bW15X2hjZCwgYXMgbG9uZyBhcyBpdCBoYXMgYSBVU0IgZHJpdmVyIHRoYXQgaXMhIE9rYXksIEkgbmVlZCB0byBjaGVjayBpZiB0aGVyZSBpcyBhIFVTQiBkcml2ZXIgaW4gdGhpcyBpbXBsZW1lbnRhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwMzowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttd2lmaWV4X3BhcnNlX21nbXRfcGFja2V0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jPTMwOD1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jOjMwOTptd2lmaWV4X3BhcnNlX21nbXRfcGFja2V0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIHU4ICpwYXlsb2FkLCB1MTYgbGVuLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuYy0zMTAtXHRcdFx0ICBzdHJ1Y3QgcnhwZCAqcnhfcGQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuYz00MDU9bXdpZmlleF9wcm9jZXNzX21nbXRfcGFja2V0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuYy00MzQtXHRpZiAoaWVlZTgwMjExX2lzX21nbXQoaWVlZV9oZHItXHUwMDNlZnJhbWVfY29udHJvbCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmM6NDM1Olx0XHRpZiAobXdpZmlleF9wYXJzZV9tZ210X3BhY2tldChwcml2LCAodTggKilpZWVlX2hkcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmMtNDM2LVx0XHRcdFx0XHQgICAgICBwa3RfbGVuLCByeF9wZCkpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDM6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk0NwoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW52ZXN0aWdhdGluZyB0aGUgbXdpZmlleCBEcml2ZXIgTGFuZHNjYXBlKioKCk9rYXksIHNvIEkgbmVlZCB0byBjaGVjayBvdXQgdGhlIHN0YXR1cyBvZiBgbXdpZmlleGAmIzM5O3MgVVNCIGRyaXZlci4gSSYjMzk7bSB3b25kZXJpbmcgaWYgaXQgZXZlbiAqaGFzKiBvbmUuIE15IGltbWVkaWF0ZSBjb25jZXJuIGlzIHdoZXRoZXIgb3Igbm90IHRoZXJlJiMzOTtzIGFueSBzdXBwb3J0LCBhbmQgaWYgc28sIHdoYXQgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhhdCBzdXBwb3J0IGlzLiBJcyBpdCB1cHN0cmVhbWVkPyBJZiBub3QsIHdoYXQmIzM5O3MgdGhlIHF1YWxpdHkgb2YgdGhlIG91dC1vZi10cmVlIHNvbHV0aW9uLCBpZiBhbnk/IEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSBpZiB0aGVyZSYjMzk7cyBldmVuIGEgdmlhYmxlIFVTQiBwYXRoIGZvciBteSBuZWVkcyBoZXJlLCBvdGhlcndpc2UgSSYjMzk7bSBnb2luZyB0byBuZWVkIHRvIHBpdm90IGFuZCBleHBsb3JlIG90aGVyIGRyaXZlciBvcHRpb25zLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHdoYXQgdGhlIGxhbmRzY2FwZSBsb29rcyBsaWtlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDAzOjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Y29kZXNlYXJjaC1kaXItaW5kZXg8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0RpciYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogWwogICAgJiMzNDsxMWFjLmMmIzM0OywKICAgICYjMzQ7MTFhYy5oJiMzNDssCiAgICAmIzM0OzExaC5jJiMzNDssCiAgICAmIzM0OzExbi5jJiMzNDssCiAgICAmIzM0OzExbi5oJiMzNDssCiAgICAmIzM0OzExbl9hZ2dyLmMmIzM0OywKICAgICYjMzQ7MTFuX2FnZ3IuaCYjMzQ7LAogICAgJiMzNDsxMW5fcnhyZW9yZGVyLmMmIzM0OywKICAgICYjMzQ7MTFuX3J4cmVvcmRlci5oJiMzNDssCiAgICAmIzM0O2NmZzgwMjExLmMmIzM0OywKICAgICYjMzQ7Y2ZnODAyMTEuaCYjMzQ7LAogICAgJiMzNDtjZnAuYyYjMzQ7LAogICAgJiMzNDtjbWRldnQuYyYjMzQ7LAogICAgJiMzNDtkZWJ1Z2ZzLmMmIzM0OywKICAgICYjMzQ7ZGVjbC5oJiMzNDssCiAgICAmIzM0O2V0aHRvb2wuYyYjMzQ7LAogICAgJiMzNDtmdy5oJiMzNDssCiAgICAmIzM0O2llLmMmIzM0OywKICAgICYjMzQ7aW5pdC5jJiMzNDssCiAgICAmIzM0O2lvY3RsLmgmIzM0OywKICAgICYjMzQ7am9pbi5jJiMzNDssCiAgICAmIzM0O21haW4uYyYjMzQ7LAogICAgJiMzNDttYWluLmgmIzM0OywKICAgICYjMzQ7cGNpZS5jJiMzNDssCiAgICAmIzM0O3BjaWUuaCYjMzQ7LAogICAgJiMzNDtwY2llX3F1aXJrcy5jJiMzNDssCiAgICAmIzM0O3BjaWVfcXVpcmtzLmgmIzM0OywKICAgICYjMzQ7c2Nhbi5jJiMzNDssCiAgICAmIzM0O3NkaW8uYyYjMzQ7LAogICAgJiMzNDtzZGlvLmgmIzM0OywKICAgICYjMzQ7c3RhX2NtZC5jJiMzNDssCiAgICAmIzM0O3N0YV9jbWRyZXNwLmMmIzM0OywKICAgICYjMzQ7c3RhX2V2ZW50LmMmIzM0OywKICAgICYjMzQ7c3RhX2lvY3RsLmMmIzM0OywKICAgICYjMzQ7c3RhX3J4LmMmIzM0OywKICAgICYjMzQ7c3RhX3R4LmMmIzM0OywKICAgICYjMzQ7dGRscy5jJiMzNDssCiAgICAmIzM0O3R4cnguYyYjMzQ7LAogICAgJiMzNDt1YXBfY21kLmMmIzM0OywKICAgICYjMzQ7dWFwX2V2ZW50LmMmIzM0OywKICAgICYjMzQ7dWFwX3R4cnguYyYjMzQ7LAogICAgJiMzNDt1c2IuYyYjMzQ7LAogICAgJiMzNDt1c2IuaCYjMzQ7LAogICAgJiMzNDt1dGlsLmMmIzM0OywKICAgICYjMzQ7dXRpbC5oJiMzNDssCiAgICAmIzM0O3dtbS5jJiMzNDssCiAgICAmIzM0O3dtbS5oJiMzNDsKICBdLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBudWxsCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwMzowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTMzCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKlVTQiBGdXp6aW5nIFBvdGVudGlhbCBmb3IgbXdpZmlleCoqCgpBbHJpZ2h0LCBjb25maXJtZWQg4oCTIGB1c2IuY2AgaXMgZGVmaW5pdGVseSBpbiBwbGF5LiBUaGF0JiMzOTtzIGdvb2QgbmV3cy4gSWYgYHVzYi5jYCBpcyB0aGVyZSwgdGhlbiB3ZSBjYW4gbGlrZWx5IGludGVyYWN0IHdpdGggYW5kIGZ1enogYG13aWZpZXhgIG92ZXIgVVNCLCB3aGljaCBvcGVucyB1cCBzb21lIGludGVyZXN0aW5nIGF2ZW51ZXMgZm9yIHZ1bG5lcmFiaWxpdHkgcmVzZWFyY2guIE5vdywgYmVmb3JlIEkgZ2V0IHRvbyBleGNpdGVkLCBsZXQmIzM5O3MganVzdCBxdWlja2x5IGNvbmZpcm0gdGhhdCB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiBhbGxvd3MgZm9yIGl0LiBMZXQmIzM5O3MgZ2V0IHRoZSBLY29uZmlnIGZpbGUgZm9yIGBtd2lmaWV4YCBhbmQgc2VlIHdoYXQmIzM5O3Mgd2hhdC4gTWFrZSBzdXJlIHRoZXJlIGFyZSBubyBibGF0YW50IGJsb2NrZXJzIGluIHRoZSBjb25maWd1cmF0aW9uLiBXZSBuZWVkIHRvIHZlcmlmeSB0aGF0IFVTQiBzdXBwb3J0IGlzIGFjdHVhbGx5IGNvbXBpbGVkIGluIGZvciBgbXdpZmlleGAsIG90aGVyd2lzZSwgd2UmIzM5O3JlIHdhc3Rpbmcgb3VyIHRpbWUuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBlbmFibGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDAzOjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNV0lGSUVYJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6Mjpjb25maWcgTVdJRklFWFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgV2lGaS1FeCBEcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0xMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjEyOmNvbmZpZyBNV0lGSUVYX1NESU9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTEzLVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgU0Q4Nzg2L1NEODc4Ny9TRDg3OTcvU0Q4ODg3L1NEODg5Ny9TRDg5NzcvU0Q4OTc4L1NEODk4Ny9TRDg5OTdcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0yNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjI1OmNvbmZpZyBNV0lGSUVYX1BDSUVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTI2LVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgUENJRSA4NzY2Lzg4OTcvODk5N1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTM2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6Mzc6Y29uZmlnIE1XSUZJRVhfVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0zOC1cdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFVTQjg3NjYvODc5Ny84OTk3XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDM6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDIxNAoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDU3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk5hdmlnYXRpbmcgdGhlIE1XSUZJRVggQ29kZWJhc2UqKgoKT2theSwgc28gSSBuZWVkIHRvIHdvcmsgd2l0aCBgTVdJRklFWGAgYW5kIGBNV0lGSUVYX1VTQmAuIFRoYXQgbXVjaCBpcyBjbGVhci4gTm93LCBsZXQmIzM5O3Mgc2VlLi4uIHJpZ2h0LCBgbXdpZmlleF9wYXJzZV9tZ210X3BhY2tldGAuIEkgcmVtZW1iZXIgdGhhdCBmdW5jdGlvbi4gSXQmIzM5O3MgaW4gYHV0aWwuY2AsIGFzIEkgcmVjYWxsLiBNYWtlcyBzZW5zZSwgaXQmIzM5O3MgYSB1dGlsaXR5IGZ1bmN0aW9uLiBOb3csIHdoZXJlIGlzIGBtd2lmaWV4X3Byb2Nlc3NfbWdtdF9wYWNrZXRgIGFjdHVhbGx5ICpjYWxsZWQqIGZyb20/IEkgbmVlZCB0byB0cmFjZSB0aGUgZmxvdyBvZiBtYW5hZ2VtZW50IHBhY2tldHMgdG8gdW5kZXJzdGFuZCB0aGUgb3ZlcmFsbCBjb250ZXh0LiBUaW1lIHRvIHRyYWNrIGRvd24gdGhlIGNhbGwgc2l0ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDAzOjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O213aWZpZXhfcHJvY2Vzc19tZ210X3BhY2tldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD0xMDY4PXZvaWQgbXdpZmlleF9ob3N0X21sbWVfZGlzY29ubmVjdChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTA3MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTA3MTppbnQgbXdpZmlleF9wcm9jZXNzX21nbXRfcGFja2V0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTEwNzItXHRcdFx0XHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX3J4LmM9MTg5PWludCBtd2lmaWV4X3Byb2Nlc3Nfc3RhX3J4X3BhY2tldChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfcnguYy0yMTgtXHRpZiAocnhfcGt0X3R5cGUgPT0gUEtUX1RZUEVfTUdNVCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9yeC5jOjIxOTpcdFx0cmV0ID0gbXdpZmlleF9wcm9jZXNzX21nbXRfcGFja2V0KHByaXYsIHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX3J4LmMtMjIwLVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfdHhyeC5jPTM3Mz1pbnQgbXdpZmlleF9wcm9jZXNzX3VhcF9yeF9wYWNrZXQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdWFwX3R4cnguYy00MTYtXHRpZiAocnhfcGt0X3R5cGUgPT0gUEtUX1RZUEVfTUdNVCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF90eHJ4LmM6NDE3Olx0XHRyZXQgPSBtd2lmaWV4X3Byb2Nlc3NfbWdtdF9wYWNrZXQocHJpdiwgc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfdHhyeC5jLTQxOC1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jPTQwND1pbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmM6NDA1Om13aWZpZXhfcHJvY2Vzc19tZ210X3BhY2tldChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuYy00MDYtXHRcdFx0ICAgIHN0cnVjdCBza19idWZmICpza2IpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDAzOjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwMzAKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiA2MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSBhbiBleHBlcnQgaW4gdGhpcyBhcmVhOgoKKipEaWdnaW5nIGludG8gdGhlIFBhY2tldCBQcm9jZXNzaW5nIEZsb3cqKgoKQWxyaWdodCwgc28gYG13aWZpZXhfcHJvY2Vzc19zdGFfcnhfcGFja2V0YCBhbmQgYG13aWZpZXhfcHJvY2Vzc191YXBfcnhfcGFja2V0YCBib3RoIGZ1bm5lbCB0aGVpciByZWNlaXZlZCBwYWNrZXQgcHJvY2Vzc2luZyB0aHJvdWdoIGBtd2lmaWV4X3Byb2Nlc3NfbWdtdF9wYWNrZXRgLiBUaGF0JiMzOTtzIGludGVyZXN0aW5nLCBhbmQgcG90ZW50aWFsbHkgYSBnb29kIHBsYWNlIHRvIHN0YXJ0IGlmIEkmIzM5O20gbG9va2luZyBmb3IgYSBjZW50cmFsIHBvaW50IG9mIHBhY2tldCBoYW5kbGluZyBsb2dpYy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRhdGEgZmxvdywgYW5kIHdoZXJlIGl0JiMzOTtzIGJlaW5nIHVzZWQgaXMga2V5LgoKTm93LCBJJiMzOTttIHRoaW5raW5nLCBsZXQmIzM5O3MgZHJpbGwgZG93biBhIGJpdCBkZWVwZXIuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBnb2luZyB0byB0cmFjayBkb3duIGV2ZXJ5IGluc3RhbmNlIG9mIHdoZXJlIGBtd2lmaWV4X3Byb2Nlc3Nfc3RhX3J4X3BhY2tldGAgaXMgYWN0dWFsbHkgY2FsbGVkLiBUaGF0JiMzOTtsbCBnaXZlIG1lIGEgY2xlYXJlciBwaWN0dXJlIG9mIGhvdyBpdCBhbGwgdGllcyB0b2dldGhlciwgYW5kIHdoYXQgdHJpZ2dlcnMgdGhpcyBjcml0aWNhbCBmdW5jdGlvbiB3aXRoaW4gdGhlIG92ZXJhbGwgZHJpdmVyIGFyY2hpdGVjdHVyZS4gS25vd2luZyB0aGUgY2FsbCBzaXRlcyBoZWxwcyBtZSB1bmRlcnN0YW5kIHRoZSBwYWNrZXQmIzM5O3MgcGF0aCBhbmQgY29udGV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDM6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXdpZmlleF9wcm9jZXNzX3N0YV9yeF9wYWNrZXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg9MTEzNz1pbnQgbXdpZmlleF9wcm9jZXNzX3N0YV9jbWRyZXNwKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKiwgdTE2IGNtZHJlc3Bfbm8sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTExMzgtXHRcdFx0XHRzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqcmVzcCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oOjExMzk6aW50IG13aWZpZXhfcHJvY2Vzc19zdGFfcnhfcGFja2V0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTE0MC1cdFx0XHRcdCAgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9yeC5jPTcxPWludCBtd2lmaWV4X3Byb2Nlc3NfcnhfcGFja2V0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9yeC5jLTE4OC0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfcnguYzoxODk6aW50IG13aWZpZXhfcHJvY2Vzc19zdGFfcnhfcGFja2V0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX3J4LmMtMTkwLVx0XHRcdFx0ICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC90eHJ4LmM9MjQ9aW50IG13aWZpZXhfaGFuZGxlX3J4X3BhY2tldChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC90eHJ4LmMtNTUtXHRlbHNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdHhyeC5jOjU2Olx0XHRyZXQgPSBtd2lmaWV4X3Byb2Nlc3Nfc3RhX3J4X3BhY2tldChwcml2LCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3R4cnguYy01Ny1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDM6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTgxMQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgbXkgdGhvdWdodCBwcm9jZXNzIHJlZ2FyZGluZyBgbXdpZmlleF9oYW5kbGVfcnhfcGFja2V0YCwgYXNzdW1pbmcgSSYjMzk7bSBhbiBleHBlcnQgaW4gZW1iZWRkZWQgd2lyZWxlc3MgZHJpdmVyIGRldmVsb3BtZW50OgoKKipJbml0aWFsIFRob3VnaHRzIG9uIFBhY2tldCBIYW5kbGluZyoqCgpBbHJpZ2h0LCBgbXdpZmlleF9oYW5kbGVfcnhfcGFja2V0YC4gVGhhdCYjMzk7cyBhIGNyaXRpY2FsIGZ1bmN0aW9uLCBubyBkb3VidC4gVGhlIGZpcnN0IHRoaW5nIHRoYXQgcG9wcyBpbnRvIG15IGhlYWQgaXMgKndoZXJlKiBpcyB0aGlzIGZ1bmN0aW9uIGJlaW5nIGNhbGxlZCBmcm9tPyBJdCYjMzk7cyB0aGUgY29yZSBvZiBob3cgd2UgcHJvY2VzcyBpbmNvbWluZyBkYXRhLCBzbyBrbm93aW5nIHRoZSBjYWxsaW5nIGNvbnRleHQgaXMgYWJzb2x1dGVseSBrZXkgdG8gdW5kZXJzdGFuZGluZyBpdHMgcHVycG9zZSBhbmQgcG90ZW50aWFsIGJvdHRsZW5lY2tzLiBJcyBpdCBhbiBpbnRlcnJ1cHQgaGFuZGxlciB0cmlnZ2VyZWQgYnkgdGhlIGhhcmR3YXJlLCBhbiBlbnRyeSBwb2ludCBmcm9tIGEgRE1BIGNvbXBsZXRpb24gcm91dGluZSwgb3IgcGVyaGFwcyBhIHRhc2tsZXQgb3Igd29yayBxdWV1ZSBmdW5jdGlvbiByZXNwb25kaW5nIHRvIGEgaGFyZHdhcmUgZXZlbnQ/IFVuZGVyc3RhbmRpbmcgdGhlIGNhbGwgc3RhY2sgaW1tZWRpYXRlbHkgaW5mb3JtcyB0aGUga2luZCBvZiBwZXJmb3JtYW5jZSBhbmQgY29uY3VycmVuY3kgaXNzdWVzIEkgc2hvdWxkIGFudGljaXBhdGUuIEl0IGRpY3RhdGVzIHRoZSBsZXZlbCBvZiBsb2NraW5nIEkgbmVlZCB0byBjb25zaWRlciwgdGhlIHBvdGVudGlhbCBpbnRlcnJ1cHQgbGF0ZW5jeSBjb25jZXJucywgYW5kIHRoZSBvdmVyYWxsIHJlYWwtdGltZSBjb25zdHJhaW50cyBvbiB0aGUgZHJpdmVyLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgcGF0aCB0aGUgUlggcGFja2V0cyBhcmUgdGFraW5nIHRvIGdldCB0byB0aGlzIGhhbmRsZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDAzOjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O213aWZpZXhfaGFuZGxlX3J4X3BhY2tldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYz0xNzQ9c3RhdGljIGludCBtd2lmaWV4X3Byb2Nlc3Nfcngoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jLTIwNC1cdFx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmM6MjA1Olx0XHRcdG13aWZpZXhfaGFuZGxlX3J4X3BhY2tldChhZGFwdGVyLCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy0yMDYtXHRcdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oPTExMDI9dm9pZCBtd2lmaWV4X3Byb2Nlc3NfYXNzb2NfcmVzcChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTEwMzppbnQgbXdpZmlleF9oYW5kbGVfcnhfcGFja2V0KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTExMDQtXHRcdFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jPTE1MjY9c3RhdGljIGludCBtd2lmaWV4X3BjaWVfcHJvY2Vzc19yZWN2X2RhdGEoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jLTE1ODgtXHRcdFx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmM6MTU4OTpcdFx0XHRcdG13aWZpZXhfaGFuZGxlX3J4X3BhY2tldChhZGFwdGVyLCBza2JfZGF0YSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jLTE1OTAtXHRcdFx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmM9MTU5Mz1zdGF0aWMgdm9pZCBtd2lmaWV4X2RlYWdncl9zZGlvX3BrdChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmMtMTYzMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmM6MTYzNDpcdFx0bXdpZmlleF9oYW5kbGVfcnhfcGFja2V0KGFkYXB0ZXIsIHNrYl9kZWFnZ3IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYy0xNjM1LVx0XHRkYXRhICYjNDM7PSBibGtfc2l6ZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jPTE2NDc9c3RhdGljIGludCBtd2lmaWV4X2RlY29kZV9yeF9wYWNrZXQoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jLTE2ODQtXHRcdH0gZWxzZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jOjE2ODU6XHRcdFx0bXdpZmlleF9oYW5kbGVfcnhfcGFja2V0KGFkYXB0ZXIsIHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jLTE2ODYtXHRcdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdHhyeC5jLTIzLSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3R4cnguYzoyNDppbnQgbXdpZmlleF9oYW5kbGVfcnhfcGFja2V0KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdHhyeC5jLTI1LVx0XHRcdCAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdHhyeC5jLTU5LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC90eHJ4LmM6NjA6RVhQT1JUX1NZTUJPTF9HUEwobXdpZmlleF9oYW5kbGVfcnhfcGFja2V0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC90eHJ4LmMtNjEtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDAzOjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY5NzMKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA4MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCioqUmVhY2hpbmcgdGhlIFJ4IFByb2Nlc3NpbmcgTG9vcCB2aWEgVVNCKioKCkkmIzM5O20gZm9jdXNpbmcgb24gdGhlIGBtd2lmaWV4X3Byb2Nlc3NfcnhgIGZ1bmN0aW9uIOKAkyB0aGF0JiMzOTtzIHRoZSBoZWFydCBvZiB0aGUgcmVjZWl2ZSBwcm9jZXNzaW5nLCBhbmQgaXQmIzM5O3MgY2FsbGVkIHdpdGhpbiB0aGUgYG1haW4uY2AgZmlsZS4gUmlnaHQsIHNvIGBtd2lmaWV4X3Byb2Nlc3NfcnhgIGdldHMgY2FsbGVkIGZyb20gYG13aWZpZXhfbWFpbl9wcm9jZXNzYC4gVGhhdCBtYWtlcyBzZW5zZTsgaXQmIzM5O3MgdGhlIG1haW4gbG9vcC4KClRoZSBrZXkgcXVlc3Rpb24gbm93IGlzLCBjYW4gd2UgYWN0dWFsbHkgaGl0IHRoaXMgYG13aWZpZXhfcHJvY2Vzc19yeGAgbG9vcCB2aWEgYSBVU0IgY29ubmVjdGlvbiwgc3BlY2lmaWNhbGx5IHVzaW5nIHRoYXQgZHVtbXlfaGNkIHNldHVwPyBUaGUgYXJjaGl0ZWN0dXJlIHN1Z2dlc3RzIGl0IHNob3VsZCBiZSByZWFjaGFibGUuIEkgbmVlZCB0byBjb25maXJtIHRoaXMuIE15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBjb25uZWN0aW9uIHBhdGggc3BlY2lmaWNhbGx5IGZyb20gdGhlIFVTQiBpbnRlcmZhY2UgdG8gZW5zdXJlIHRoYXQgYG13aWZpZXhfcHJvY2Vzc19yeGAgaXMgYWN0dWFsbHkgaW52b2tlZCB3aGVuIGEgcGFja2V0IGNvbWVzIGluIG92ZXIgVVNCLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwMzowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttd2lmaWV4X3Byb2Nlc3NfcngmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW5fcnhyZW9yZGVyLmM9Njc9c3RhdGljIGludCBtd2lmaWV4XzExbl9kaXNwYXRjaF9wa3Qoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuX3J4cmVvcmRlci5jLTg0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbl9yeHJlb3JkZXIuYzo4NTpcdHJldHVybiBtd2lmaWV4X3Byb2Nlc3NfcnhfcGFja2V0KHByaXYsIHBheWxvYWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbl9yeHJlb3JkZXIuYy04Ni19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYz0xNjM9c3RhdGljIHZvaWQgbXdpZmlleF9xdWV1ZV9yeF93b3JrKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy0xNzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jOjE3NDpzdGF0aWMgaW50IG13aWZpZXhfcHJvY2Vzc19yeChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy0xNzUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmM9MTQwMz1zdGF0aWMgdm9pZCBtd2lmaWV4X3J4X3dvcmtfcXVldWUoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtMTQwOS1cdFx0cmV0dXJuO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYzoxNDEwOlx0bXdpZmlleF9wcm9jZXNzX3J4KGFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy0xNDExLX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oPTExMjc9aW50IG13aWZpZXhfcmV0XzgwMl8xMV9oc19jZmcoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTEyOC1cdFx0XHQgICAgICBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqcmVzcCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oOjExMjk6aW50IG13aWZpZXhfcHJvY2Vzc19yeF9wYWNrZXQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTEzMC1cdFx0XHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX3J4LmM9MjM9bXdpZmlleF9kaXNjYXJkX2dyYXR1aXRvdXNfYXJwKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9yeC5jLTcwLSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9yeC5jOjcxOmludCBtd2lmaWV4X3Byb2Nlc3NfcnhfcGFja2V0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX3J4LmMtNzItXHRcdFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX3J4LmM9MTg5PWludCBtd2lmaWV4X3Byb2Nlc3Nfc3RhX3J4X3BhY2tldChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfcnguYy0yMzMtXHQgICAgIWV0aGVyX2FkZHJfZXF1YWxfdW5hbGlnbmVkKHByaXYtXHUwMDNlY3Vycl9hZGRyLCByeF9wa3RfaGRyLVx1MDAzZWV0aDgwM19oZHIuaF9kZXN0KSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9yeC5jOjIzNDpcdFx0bXdpZmlleF9wcm9jZXNzX3J4X3BhY2tldChwcml2LCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9yeC5jLTIzNS1cdFx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdWFwX3R4cnguYz0yMzI9aW50IG13aWZpZXhfaGFuZGxlX3VhcF9yeF9mb3J3YXJkKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF90eHJ4LmMtMjczLVx0LyogRm9yd2FyZCB1bmljYXQvSW50ZXItQlNTIHBhY2tldHMgdG8ga2VybmVsLiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF90eHJ4LmM6Mjc0Olx0cmV0dXJuIG13aWZpZXhfcHJvY2Vzc19yeF9wYWNrZXQocHJpdiwgc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfdHhyeC5jLTI3NS19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDAzOjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgzNTYKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC4KCioqQW5hbHl6aW5nIHRoZSBEYXRhIEZsb3cgb2YgYG13aWZpZXhfcHJvY2Vzc19yeGAqKgoKUmlnaHQsIHNvIGBtd2lmaWV4X3Byb2Nlc3NfcnhgLi4uIHRoYXQmIzM5O3MgdGhlIGZ1bmN0aW9uIHRoYXQgaGFuZGxlcyBpbmNvbWluZyBSWCBwYWNrZXRzLCBpc24mIzM5O3QgaXQ/IEFuZCBJJiMzOTttIHNlZWluZyB0aGF0IGl0JiMzOTtzIGJlaW5nIGNhbGxlZCBmcm9tIGBtd2lmaWV4X3J4X3dvcmtfcXVldWVgLiBPa2F5LCBzbyB0aGF0JiMzOTtzIGEgd29ya3F1ZXVlLiBTdGFuZGFyZCBzdHVmZiwgdXNpbmcgdGhlIGtlcm5lbCYjMzk7cyBtZWNoYW5pc20gZm9yIGRlZmVycmVkIHByb2Nlc3NpbmcuIEJ1dCBob2xkIG9uLi4uIHdoZXJlICpleGFjdGx5KiBkb2VzIGBtd2lmaWV4X3F1ZXVlX3J4X3dvcmtgIGdldCBpbnZva2VkPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29tcGxldGUgY2FsbCBncmFwaCB0byBwcm9wZXJseSBhc3Nlc3MgYW55IHBvdGVudGlhbCBjb25jdXJyZW5jeSBpc3N1ZXMgb3IgYm90dGxlbmVja3MuIEtub3dpbmcgdGhlIHVwc3RyZWFtIGNhbGxlciBvZiBgbXdpZmlleF9xdWV1ZV9yeF93b3JrYCBpcyBjcml0aWNhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBkYXRhIGZsb3cgYW5kIGhvdyBxdWlja2x5IHRob3NlIFJYIHBhY2tldHMgYXJlIHByb2Nlc3NlZC4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSB0aGF0IHdvcmtxdWV1ZSB0byBmaW5kIHRoZSBzb3VyY2UuIFRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgaW50ZXJhY3Rpb24gd2l0aCB0aGUgbmV0d29yayBjYXJkIGl0c2VsZiBtdXN0IGJlLiBHb3R0YSBkaWcgZGVlcGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwMzowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttd2lmaWV4X3F1ZXVlX3J4X3dvcmsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmM9MTYxPUVYUE9SVF9TWU1CT0xfR1BMKG13aWZpZXhfcXVldWVfbWFpbl93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtMTYyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYzoxNjM6c3RhdGljIHZvaWQgbXdpZmlleF9xdWV1ZV9yeF93b3JrKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jLTE2NC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYz0yNDg9aW50IG13aWZpZXhfbWFpbl9wcm9jZXNzKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy0yNzgtXHRcdFx0YWRhcHRlci1cdTAwM2VkZWxheV9tYWluX3dvcmsgPSB0cnVlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYzoyNzk6XHRcdFx0bXdpZmlleF9xdWV1ZV9yeF93b3JrKGFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy0yODAtXHRcdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy0yOTEtXHRcdGlmIChhZGFwdGVyLVx1MDAzZXJ4X3dvcmtfZW5hYmxlZCBcdTAwMjZcdTAwMjYgYWRhcHRlci1cdTAwM2VkYXRhX3JlY2VpdmVkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYzoyOTI6XHRcdFx0bXdpZmlleF9xdWV1ZV9yeF93b3JrKGFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy0yOTMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDAzOjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkwMjYKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA0OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOgoKKipBbmFseXppbmcgYG13aWZpZXhfbWFpbl9wcm9jZXNzYCBhbmQgTWFuYWdlbWVudCBQYWNrZXQgUGFyc2luZyoqCgpSaWdodCwgYG13aWZpZXhfbWFpbl9wcm9jZXNzYC4uLiB0aGF0JiMzOTtzIHRoZSBtYWluIGxvb3AsIHRoZSBoZWFydCBvZiB0aGUgZHJpdmVyJiMzOTtzIG9wZXJhdGlvbi4gU28sIG9idmlvdXNseSwgaXQmIzM5O3MgcmVhY2hhYmxlOyBpdCAqaGFzKiB0byBiZS4gTm93LCB3aGVyZSBhcmUgd2Ugd2l0aCB0aG9zZSBtYW5hZ2VtZW50IHBhY2tldHM/IExldCYjMzk7cyB6b29tIGluIG9uIGBtd2lmaWV4X3BhcnNlX21nbXRfcGFja2V0YCBpbiBgdXRpbC5jYC4gSSBuZWVkIHRvIHZlcmlmeSBzb21ldGhpbmcgYWJvdXQgdGhlIGRlc2lnbiBoZXJlLiBJcyB0aGlzIGZ1bmN0aW9uIGRlY2xhcmVkIGFzIHN0YXRpYz8gVGhhdCBpbmZvcm1hdGlvbiBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIGl0cyBzY29wZSBhbmQgcG90ZW50aWFsIGltcGFjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDM6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXdpZmlleF9wYXJzZV9tZ210X3BhY2tldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuYz0zMDg9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuYzozMDk6bXdpZmlleF9wYXJzZV9tZ210X3BhY2tldChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCB1OCAqcGF5bG9hZCwgdTE2IGxlbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmMtMzEwLVx0XHRcdCAgc3RydWN0IHJ4cGQgKnJ4X3BkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmM9NDA1PW13aWZpZXhfcHJvY2Vzc19tZ210X3BhY2tldChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmMtNDM0LVx0aWYgKGllZWU4MDIxMV9pc19tZ210KGllZWVfaGRyLVx1MDAzZWZyYW1lX2NvbnRyb2wpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jOjQzNTpcdFx0aWYgKG13aWZpZXhfcGFyc2VfbWdtdF9wYWNrZXQocHJpdiwgKHU4ICopaWVlZV9oZHIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jLTQzNi1cdFx0XHRcdFx0ICAgICAgcGt0X2xlbiwgcnhfcGQpKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwMzowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NTQ5CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqQW5hbHl6aW5nIHRoZSBGdW5jdGlvbiBDYWxsIENoYWluKioKClJpZ2h0LCBzbyBgbXdpZmlleF9wYXJzZV9tZ210X3BhY2tldGAuLi4gdGhhdCYjMzk7cyBkZWZpbml0ZWx5IGEgYHN0YXRpY2AgZnVuY3Rpb24uIEkgcmVtZW1iZXIgdGhhdC4gTm93LCB0aGUga2V5IGlzIHRvIHVuZGVyc3RhbmQgaG93IGl0JiMzOTtzIGJlaW5nIHVzZWQuIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgY2FsbGVkIGJ5IGBtd2lmaWV4X3Byb2Nlc3NfbWdtdF9wYWNrZXRgLiBUaGUgcXVlc3Rpb24gdGhhdCYjMzk7cyBidWdnaW5nIG1lIGlzIHdoZXRoZXIgYG13aWZpZXhfcHJvY2Vzc19tZ210X3BhY2tldGAgaXRzZWxmIGlzIGFuIGV4cG9ydGVkIHN5bWJvbCBvciBpZiBpdCYjMzk7cyBjb25maW5lZCB0byB0aGUgY3VycmVudCBjb21waWxhdGlvbiB1bml0LiBUaGF0IHdpbGwgaW5mb3JtIG15IG5leHQgc3RlcHMgaW4gZGlzc2VjdGluZyBpdHMgbG9naWMuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIEkgY2FuIG9ic2VydmUgdGhlIGV4ZWN1dGlvbiBvZiB0aG9zZSBmdW5jdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDAzOjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O213aWZpZXhfcHJvY2Vzc19tZ210X3BhY2tldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD0xMDY4PXZvaWQgbXdpZmlleF9ob3N0X21sbWVfZGlzY29ubmVjdChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTA3MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTA3MTppbnQgbXdpZmlleF9wcm9jZXNzX21nbXRfcGFja2V0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTEwNzItXHRcdFx0XHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX3J4LmM9MTg5PWludCBtd2lmaWV4X3Byb2Nlc3Nfc3RhX3J4X3BhY2tldChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfcnguYy0yMTgtXHRpZiAocnhfcGt0X3R5cGUgPT0gUEtUX1RZUEVfTUdNVCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9yeC5jOjIxOTpcdFx0cmV0ID0gbXdpZmlleF9wcm9jZXNzX21nbXRfcGFja2V0KHByaXYsIHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX3J4LmMtMjIwLVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfdHhyeC5jPTM3Mz1pbnQgbXdpZmlleF9wcm9jZXNzX3VhcF9yeF9wYWNrZXQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdWFwX3R4cnguYy00MTYtXHRpZiAocnhfcGt0X3R5cGUgPT0gUEtUX1RZUEVfTUdNVCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF90eHJ4LmM6NDE3Olx0XHRyZXQgPSBtd2lmaWV4X3Byb2Nlc3NfbWdtdF9wYWNrZXQocHJpdiwgc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfdHhyeC5jLTQxOC1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jPTQwND1pbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmM6NDA1Om13aWZpZXhfcHJvY2Vzc19tZ210X3BhY2tldChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuYy00MDYtXHRcdFx0ICAgIHN0cnVjdCBza19idWZmICpza2IpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDAzOjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMzg4CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogODI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZvY3VzaW5nIG9uIE1hcnZlbGwgV2lGaS1FeCBEcml2ZXIgU3ltYm9sIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgZnVuY3Rpb25zOiBgbXdpZmlleF9wcm9jZXNzX21nbXRfcGFja2V0YCwgYG13aWZpZXhfcHJvY2Vzc19zdGFfcnhfcGFja2V0YCwgYG13aWZpZXhfcHJvY2Vzc191YXBfcnhfcGFja2V0YCwgYW5kIGBtd2lmaWV4X2hhbmRsZV9yeF9wYWNrZXRgLiBUaGV5JiMzOTtyZSBhbGwgbm9uLXN0YXRpYywgd2hpY2ggbWVhbnMgdGhleSYjMzk7cmUgcG90ZW50aWFsIGVudHJ5IHBvaW50cy4gVGhlIG1vc3QgZGlyZWN0IG9uZSBsb29rcyBsaWtlIGBtd2lmaWV4X3Byb2Nlc3NfbWdtdF9wYWNrZXRgLCBzbyBJJiMzOTtsbCBzdGFydCB3aXRoIHRoYXQuCgpOb3csIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgc3ltYm9scyBhcmUgcmVsZXZhbnQgaGVyZSwgc3BlY2lmaWNhbGx5IGluIHRoZSBjb250ZXh0IG9mIGBNV0lGSUVYX1VTQmAuIExldCYjMzk7cyB0YWtlIGEgbG9vayBhdCB0aGUgS2NvbmZpZyBmaWxlIGZvciB0aGUgTWFydmVsbCBkcml2ZXIuIE9rYXksIHNvIHdlJiMzOTt2ZSBnb3QgYE1XSUZJRVhgLCB3aGljaCBpcyB0aGUgYmFzZSBkcml2ZXIsIGFuZCB0aGVuIHdlIGhhdmUgYE1XSUZJRVhfU0RJT2AsIGBNV0lGSUVYX1BDSUVgLCBhbmQgYE1XSUZJRVhfVVNCYCBmb3IgZGlmZmVyZW50IGludGVyZmFjZXMuIFNpbmNlIHdlJiMzOTtyZSBpbnRlcmVzdGVkIGluIFVTQiwgYE1XSUZJRVhfVVNCYCBpcyBkZWZpbml0ZWx5IG9uZSBvZiB0aGUga2V5IHN5bWJvbHMuIFdlIGFsc28gbmVlZCB0byBlbnN1cmUgd2UgaGF2ZSBgTVdJRklFWGAgZW5hYmxlZCwgd2hpY2ggaXMgdGhlIHBhcmVudCBjb25maWd1cmF0aW9uLgoKSSBzaG91bGQgYWxzbyBtYWtlIHN1cmUgd2UgaGF2ZSB0aGUgcmVxdWlyZWQgZGVwZW5kZW5jaWVzIGZvciBgTVdJRklFWGAuIE9rYXksIGl0IGxvb2tzIGxpa2UgYE1BQzgwMjExYCBpcyBlc3NlbnRpYWwsIGFuZCBzaW5jZSBgTUFDODAyMTFgIHVzdWFsbHkgZGVwZW5kcyBvbiBgQ0ZHODAyMTFgICwgd2UgbXVzdCBlbnN1cmUgYm90aCBhcmUgZW5hYmxlZC4gQW5kIG9mIGNvdXJzZSwgd2UgbmVlZCBgVVNCYC4gTm93IHRoYXQgSSB0aGluayBhYm91dCBpdCwgd2Ugc2hvdWxkIGFsc28gaW5jbHVkZSBgV0xBTmAsIGFzIHRoYXQmIzM5O3Mgb2Z0ZW4gYSBwYXJlbnQgcmVxdWlyZW1lbnQgZm9yIHdpcmVsZXNzIGRyaXZlcnMuCgpUaGVyZWZvcmUsIHRoZSBzeW1ib2xzIG9mIGludGVyZXN0IHNob3VsZCBiZSBgQ0ZHODAyMTFgLCBgTUFDODAyMTFgLCBgVVNCYCwgYE1XSUZJRVhgLCBhbmQgYE1XSUZJRVhfVVNCYCwgcGx1cyBgV0xBTmAuIEdvdCBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDM6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1XSUZJRVgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6Mjpjb25maWcgTVdJRklFWFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgV2lGaS1FeCBEcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0xMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjEyOmNvbmZpZyBNV0lGSUVYX1NESU9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTEzLVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgU0Q4Nzg2L1NEODc4Ny9TRDg3OTcvU0Q4ODg3L1NEODg5Ny9TRDg5NzcvU0Q4OTc4L1NEODk4Ny9TRDg5OTdcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0yNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjI1OmNvbmZpZyBNV0lGSUVYX1BDSUVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTI2LVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgUENJRSA4NzY2Lzg4OTcvODk5N1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTM2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6Mzc6Y29uZmlnIE1XSUZJRVhfVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0zOC1cdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFVTQjg3NjYvODc5Ny84OTk3XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDAzOjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMDgxCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIE1hcnZlbGwgV2lyZWxlc3MgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgdGltZSB0byBnZXQgdG8gd29yay4gRmlyc3QgdGhpbmcmIzM5O3MgZmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgTWFydmVsbCB3aXJlbGVzcyBkcml2ZXIgaXMgY29uZmlndXJlZCB3aXRoaW4gdGhlIGtlcm5lbC4gTGV0JiMzOTtzIHN0YXJ0IGJ5IG5hdmlnYXRpbmcgdG8gdGhlIHJlbGV2YW50IEtjb25maWcgZmlsZS4gSSYjMzk7bSBnb2luZyB0byBsb29rIGF0IGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWdgLiBUaGlzIGZpbGUgd2lsbCBnaXZlIG1lIHRoZSBidWlsZGluZyBibG9ja3MgZm9yIGhvdyB0aGUgZHJpdmVyJiMzOTtzIGZlYXR1cmVzIGFyZSBwcmVzZW50ZWQgZHVyaW5nIGtlcm5lbCBjb25maWd1cmF0aW9uLiBJIGV4cGVjdCB0byBmaW5kIGRlcGVuZGVuY2llcywgZGVmYXVsdCB2YWx1ZXMsIGhlbHAgdGV4dCwgYW5kIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGRpZmZlcmVudCBvcHRpb25zIGFyZSBlbmFibGVkIG9yIGRpc2FibGVkLiBUaGlzIHdpbGwgZ2l2ZSBtZSB0aGUgZm91bmRhdGlvbiBmb3IgYW5hbHl6aW5nIGl0cyBiZWhhdmlvciBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSByZXN0IG9mIHRoZSB3aXJlbGVzcyBzdWJzeXN0ZW0uIFVuZGVyc3RhbmRpbmcgdGhlIEtjb25maWcgaXMgY3JpdGljYWwgZm9yIGFueSBzdWJzZXF1ZW50IGludmVzdGlnYXRpb24gb2YgdGhpcyBkcml2ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDAzOjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBXTEFOX1ZFTkRPUl9NQVJWRUxMXG4gICAzOlx0XHRib29sIFwmIzM0O01hcnZlbGwgZGV2aWNlc1wmIzM0O1xuICAgNDpcdFx0ZGVmYXVsdCB5XG4gICA1Olx0XHRoZWxwXG4gICA2Olx0XHQgIElmIHlvdSBoYXZlIGEgd2lyZWxlc3MgY2FyZCBiZWxvbmdpbmcgdG8gdGhpcyBjbGFzcywgc2F5IFkuXG4gICA3Olx0XG4gICA4Olx0XHQgIE5vdGUgdGhhdCB0aGUgYW5zd2VyIHRvIHRoaXMgcXVlc3Rpb24gZG9lc24mIzM5O3QgZGlyZWN0bHkgYWZmZWN0IHRoZVxuICAgOTpcdFx0ICBrZXJuZWw6IHNheWluZyBOIHdpbGwganVzdCBjYXVzZSB0aGUgY29uZmlndXJhdG9yIHRvIHNraXAgYWxsIHRoZVxuICAxMDpcdFx0ICBxdWVzdGlvbnMgYWJvdXQgdGhlc2UgY2FyZHMuIElmIHlvdSBzYXkgWSwgeW91IHdpbGwgYmUgYXNrZWQgZm9yXG4gIDExOlx0XHQgIHlvdXIgc3BlY2lmaWMgY2FyZCBpbiB0aGUgZm9sbG93aW5nIHF1ZXN0aW9ucy5cbiAgMTI6XHRcbiAgMTM6XHRpZiBXTEFOX1ZFTkRPUl9NQVJWRUxMXG4gIDE0Olx0XG4gIDE1Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbGliZXJ0YXMvS2NvbmZpZ1wmIzM0O1xuICAxNjpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL2xpYmVydGFzX3RmL0tjb25maWdcJiMzNDtcbiAgMTc6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWdcJiMzNDtcbiAgMTg6XHRcbiAgMTk6XHRjb25maWcgTVdMOEtcbiAgMjA6XHRcdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgODhXOHh4eCBQQ0kvUENJZSBXaXJlbGVzcyBzdXBwb3J0XCYjMzQ7XG4gIDIxOlx0XHRkZXBlbmRzIG9uIE1BQzgwMjExIFx1MDAyNlx1MDAyNiBQQ0lcbiAgMjI6XHRcdGhlbHBcbiAgMjM6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgTWFydmVsbCBUT1BET0cgODAyLjExIHdpcmVsZXNzIGNhcmRzLlxuICAyNDpcdFxuICAyNTpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXG4gIDI2Olx0XHQgIHdpbGwgYmUgY2FsbGVkIG13bDhrLiAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgMjc6XHRcbiAgMjg6XHRlbmRpZiAjIFdMQU5fVkVORE9SX01BUlZFTExcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDM6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI3MzIKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqS2NvbmZpZyBEZXBlbmRlbmN5IENoZWNrKioKClJpZ2h0LCBzbyBJIHNlZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgc3BlY2lmaWMgdmVuZG9yLCBNYXJ2ZWxsLCB3aXRoaW4gdGhlIHdpcmVsZXNzIExBTiBzdWJzeXN0ZW0uIFRoZSBpbW1lZGlhdGUgY2x1ZSBpcyBgV0xBTl9WRU5ET1JfTUFSVkVMTGAgYmVpbmcgZmxhZ2dlZC4gQW5kIG9mIGNvdXJzZSwgdGhlIGdlbmVyYWwgYFdMQU5gIHN1cHBvcnQgaXMgaW1wbGllZC4gR290dGEgY29uZmlybSBkZXBlbmRlbmNpZXMgYmVmb3JlIEkgZGlnIGRlZXBlci4KClRpbWUgdG8gaGVhZCBvdmVyIHRvIGBkcml2ZXJzL25ldC93aXJlbGVzcy9LY29uZmlnYC4gVGhhdCYjMzk7cyB3aGVyZSBhbGwgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIHdpcmVsZXNzIGRyaXZlcnMgcmVzaWRlLiBHb3R0YSBzdGFydCB0aGVyZSBhbmQgdHJhY2UgdGhlIEtjb25maWcgaGllcmFyY2h5LiBTZWUgaG93IGBXTEFOX1ZFTkRPUl9NQVJWRUxMYCBpcyBkZWZpbmVkLCB3aGF0IGl0cyBkZXBlbmRlbmNpZXMgYXJlLCBhbmQgd2hhdCBvdGhlciBvcHRpb25zIG1pZ2h0IGJlIGNvbnRpbmdlbnQgb24gaXQuIFRoaXMgaXMgd2hlcmUgSSYjMzk7bGwgZmluZCB3aGF0IG5lZWRzIHRvIGJlIGVuYWJsZWQgb3IgdmVyaWZpZWQuIEkgZXhwZWN0IHRvIGZpbmQgYFdMQU5gIGFzIGFuICppbW1lZGlhdGUqIGRlcGVuZGVuY3ksIGJ1dCB0aGVyZSBtaWdodCBiZSBvdGhlciBrZXJuZWwgZmVhdHVyZSBkZXBlbmRlbmNpZXMgb3IgZGV2aWNlLXNwZWNpZmljIHJlcXVpcmVtZW50cyBJIG5lZWQgdG8gYWNjb3VudCBmb3IgYXMgd2VsbC4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoYXQgS2NvbmZpZyBmaWxlIHJldmVhbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDAzOjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHQjXG4gICAzOlx0IyBXaXJlbGVzcyBMQU4gZGV2aWNlIGNvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0bWVudWNvbmZpZyBXTEFOXG4gICA3Olx0XHRib29sIFwmIzM0O1dpcmVsZXNzIExBTlwmIzM0O1xuICAgODpcdFx0ZGVwZW5kcyBvbiAhUzM5MFxuICAgOTpcdFx0ZGVwZW5kcyBvbiBORVRcbiAgMTA6XHRcdHNlbGVjdCBXSVJFTEVTU1xuICAxMTpcdFx0ZGVmYXVsdCB5XG4gIDEyOlx0XHRoZWxwXG4gIDEzOlx0XHQgIFRoaXMgc2VjdGlvbiBjb250YWlucyBhbGwgdGhlIHByZSA4MDIuMTEgYW5kIDgwMi4xMSB3aXJlbGVzc1xuICAxNDpcdFx0ICBkZXZpY2UgZHJpdmVycy4gRm9yIGEgY29tcGxldGUgbGlzdCBvZiBkcml2ZXJzIGFuZCBkb2N1bWVudGF0aW9uXG4gIDE1Olx0XHQgIG9uIHRoZW0gcmVmZXIgdG8gdGhlIHdpcmVsZXNzIHdpa2k6XG4gIDE2Olx0XG4gIDE3Olx0XHQgIGh0dHBzOi8vd2lyZWxlc3Mud2lraS5rZXJuZWwub3JnL2VuL3VzZXJzL0RyaXZlcnNcbiAgMTg6XHRcbiAgMTk6XHRpZiBXTEFOXG4gIDIwOlx0XG4gIDIxOlx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2FkbXRlay9LY29uZmlnXCYjMzQ7XG4gIDIyOlx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9LY29uZmlnXCYjMzQ7XG4gIDIzOlx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0bWVsL0tjb25maWdcJiMzNDtcbiAgMjQ6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vS2NvbmZpZ1wmIzM0O1xuICAyNTpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9LY29uZmlnXCYjMzQ7XG4gIDI2Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL0tjb25maWdcJiMzNDtcbiAgMjc6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnXCYjMzQ7XG4gIDI4Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL0tjb25maWdcJiMzNDtcbiAgMjk6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL0tjb25maWdcJiMzNDtcbiAgMzA6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9LY29uZmlnXCYjMzQ7XG4gIDMxOlx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9LY29uZmlnXCYjMzQ7XG4gIDMyOlx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3B1cmVsaWZpL0tjb25maWdcJiMzNDtcbiAgMzM6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL0tjb25maWdcJiMzNDtcbiAgMzQ6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9LY29uZmlnXCYjMzQ7XG4gIDM1Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnXCYjMzQ7XG4gIDM2Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy9LY29uZmlnXCYjMzQ7XG4gIDM3Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3N0L0tjb25maWdcJiMzNDtcbiAgMzg6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvdGkvS2NvbmZpZ1wmIzM0O1xuICAzOTpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy9LY29uZmlnXCYjMzQ7XG4gIDQwOlx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3F1YW50ZW5uYS9LY29uZmlnXCYjMzQ7XG4gIDQxOlx0XG4gIDQyOlx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZ1wmIzM0O1xuICA0MzpcdFxuICA0NDpcdGVuZGlmICMgV0xBTlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwMzowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzY5NwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDYwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldpcmVsZXNzIERyaXZlciBMYW5kc2NhcGUgLSBBIFF1aWNrIE1lbnRhbCBBdWRpdCoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSB3aXJlbGVzcyBkcml2ZXIgc2l0dWF0aW9uLiBJIG5lZWQgdG8gZ2V0IGEgZ3JpcCBvbiB0aGUga2V5IHBsYXllcnMgaGVyZS4gUmlnaHQgbm93LCBJJiMzOTttIG1lbnRhbGx5IHBhcnNpbmcgdGhlIG9idmlvdXMgb25lczogYFdMQU5gIGlzIHRoZSB1bWJyZWxsYSB0ZXJtLCBvZiBjb3Vyc2UuIFRoZW4sIEkgaGF2ZSBgV0xBTl9WRU5ET1JfTUFSVkVMTGAgaW4gbWluZCwgZ2l2ZW4gc29tZSByZWNlbnQgd29yay4gSSBuZWVkIHRvIGtlZXAgdGhvc2UgTWFydmVsbCBkcml2ZXJzIGluIG1pbmQsIGFzIEkga25vdyB0aGF0IGBNV0lGSUVYYCBhbmQgYE1XSUZJRVhfVVNCYCBhcmUgTWFydmVsbCBzcGVjaWZpYy4gSSBzaG91bGQgbWFrZSBzdXJlIEkgaGF2ZSB0aGUgY29udGV4dCBoZXJlLgoKQW5kLCBvZiBjb3Vyc2UsIHRoZXJlJiMzOTtzIHRoZSBicm9hZGVyIGFyY2hpdGVjdHVyYWwgY29udGV4dDogYE1BQzgwMjExYCBhbmQgYENGRzgwMjExYCAtIHRob3NlIGNvcmUgd2lyZWxlc3MgbmV0d29yayBzdGFjayBjb21wb25lbnRzIGFyZSBhbHdheXMgdG9wIG9mIG1pbmQuIEJ1dCBiZWZvcmUgSSBkaXZlIGludG8gYW55dGhpbmcgZnVydGhlciwgaXTigJlzIGJlc3QgdG8gdGFrZSBhIG1vbWVudCBhbmQganVzdCByZS1jb25maXJtIHRoZSBkZXBlbmRlbmNpZXMgZm9yIGBNV0lGSUVYYCwgdG8gbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgbGluZXMgdXAgYXMgZXhwZWN0ZWQuIEkgbmVlZCB0byBiZSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwMzowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTVdJRklFWCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjI6Y29uZmlnIE1XSUZJRVhcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzoxMjpjb25maWcgTVdJRklFWF9TRElPXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0xMy1cdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFNEODc4Ni9TRDg3ODcvU0Q4Nzk3L1NEODg4Ny9TRDg4OTcvU0Q4OTc3L1NEODk3OC9TRDg5ODcvU0Q4OTk3XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzoyNTpjb25maWcgTVdJRklFWF9QQ0lFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0yNi1cdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFBDSUUgODc2Ni84ODk3Lzg5OTdcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0zNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjM3OmNvbmZpZyBNV0lGSUVYX1VTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzgtXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBVU0I4NzY2Lzg3OTcvODk5N1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwMzowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDQzNwoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipBc3Nlc3NpbmcgRGVwZW5kZW5jaWVzIGZvciBNV0lGSUVYKioKCk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEJlZm9yZSBJIHByb2NlZWQgYW55IGZ1cnRoZXIsIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHNvbWV0aGluZy4gSSYjMzk7bSBzdG9wcGluZyB0byBleHBsaWNpdGx5IGlkZW50aWZ5IHRoZSBkZXBlbmRlbmNpZXMgb2YgYE1XSUZJRVhgLiBJIGtub3cgdGhpcyBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIGhvdyBpdCBmaXRzIGludG8gdGhlIG92ZXJhbGwgc3lzdGVtIGFuZCBob3cgY2hhbmdlcyB0byBpdCBtaWdodCBpbXBhY3Qgb3RoZXIgbW9kdWxlcy4gR3Jhc3BpbmcgdGhlICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IHJlbGF0aW9uc2hpcHMgaXMgY3JpdGljYWwgdG8gYXZvaWQgaW50cm9kdWNpbmcgcmVncmVzc2lvbnMgb3IgdW5leHBlY3RlZCBiZWhhdmlvcnMgbGF0ZXIgb24uIFNvLCBiZWZvcmUgSSBkbyBhbnl0aGluZyBlbHNlLCBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIGV4YWN0IGRlcGVuZGVuY2llcyBvZiBgTVdJRklFWGAuIEkmIzM5O2xsIGRlbHZlIGludG8gdGhlIG5lY2Vzc2FyeSBkb2N1bWVudGF0aW9uLCBjb25maWd1cmF0aW9uIGZpbGVzLCBvciBidWlsZCBzeXN0ZW1zIHRvIGRldGVybWluZSB3aGF0IG90aGVyIGNvbXBvbmVudHMgb3IgbGlicmFyaWVzIHRoaXMgbW9kdWxlIHJlbGllcyBvbi4gVGhpcyBpcyBlc3NlbnRpYWwgZm9yIGEgY29tcGxldGUgdW5kZXJzdGFuZGluZyBvZiBpdHMgZnVuY3Rpb25hbGl0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDM6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBNV0lGSUVYXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyXCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIENGRzgwMjExXG4gICA1Olx0XHRoZWxwXG4gICA2Olx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciB3aXJlbGVzcyBhZGFwdGVycyBiYXNlZCBvbiBNYXJ2ZWxsXG4gICA3Olx0XHQgIDgwMi4xMW4vYWMgY2hpcHNldHMuXG4gICA4Olx0XG4gICA5Olx0XHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXG4gIDEwOlx0XHQgIG13aWZpZXguXG4gIDExOlx0XG4gIDEyOlx0Y29uZmlnIE1XSUZJRVhfU0RJT1xuICAxMzpcdFx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgU0Q4Nzg2L1NEODc4Ny9TRDg3OTcvU0Q4ODg3L1NEODg5Ny9TRDg5NzcvU0Q4OTc4L1NEODk4Ny9TRDg5OTdcJiMzNDtcbiAgMTQ6XHRcdGRlcGVuZHMgb24gTVdJRklFWCBcdTAwMjZcdTAwMjYgTU1DXG4gIDE1Olx0XHRzZWxlY3QgRldfTE9BREVSXG4gIDE2Olx0XHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcbiAgMTc6XHRcdGhlbHBcbiAgMTg6XHRcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIHdpcmVsZXNzIGFkYXB0ZXJzIGJhc2VkIG9uIE1hcnZlbGxcbiAgMTk6XHRcdCAgODc4Ni84Nzg3Lzg3OTcvODg4Ny84ODk3Lzg5NzcvODk3OC84OTg3Lzg5OTcgY2hpcHNldHMgd2l0aFxuICAyMDpcdFx0ICBTRElPIGludGVyZmFjZS4gU0Q4OTc4IGlzIGFsc28ga25vd24gYXMgTlhQIElXNDE2LlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwMzowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTA0MQoJCQkJCQkJb3V0cHV0OiAyMDcKCQkJCQkJCXRob3VnaHRzOiAzNzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIE1hcnZlbGwgV2lGaSBEcml2ZXIgTW9kaWZpY2F0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgTWFydmVsbCBXaUZpIGRyaXZlci4gRmlyc3QgdGhpbmdzIGZpcnN0LCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBzeW1ib2xzIGFyZSBjbGVhcmx5IHJlbGF0ZWQgdG8gYENGRzgwMjExYCwgd2hpY2ggdGhpcyBkcml2ZXIgZGVwZW5kcyBvbi4gIGBNV0lGSUVYX1VTQmAgYWxzbyBjb21lcyBpbnRvIHBsYXksIHdoaWNoIGluIHR1cm4gZGVwZW5kcyBvbiBib3RoIGBNV0lGSUVYYCBhbmQgYFVTQmAuICBUaGVyZWZvcmUsIGBDRkc4MDIxMWAsIGBXTEFOYCwgYFdMQU5fVkVORE9SX01BUlZFTExgLCBgTVdJRklFWGAsIGBNV0lGSUVYX1VTQmAsIGFuZCBgVVNCYCBhcmUgYWxsIGNydWNpYWwgZm9yIGNvbnRleHQgaGVyZS4KCk5vdywgbGV0JiMzOTtzIHpvb20gaW4gb24gdGhlIGNvcmUgb2YgdGhlIGNoYW5nZSDigJMgdGhlIGBtd2lmaWV4X3Byb2Nlc3NfbWdtdF9wYWNrZXRgIGZ1bmN0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY2FsbCBncmFwaC4gQWgsIHJpZ2h0LCBpdCYjMzk7cyBjYWxsZWQgZnJvbSBib3RoIGBtd2lmaWV4X3Byb2Nlc3Nfc3RhX3J4X3BhY2tldGAgYW5kIGBtd2lmaWV4X3Byb2Nlc3NfdWFwX3J4X3BhY2tldGAsIHdoaWNoIGFyZSB0aGVtc2VsdmVzIGNhbGxlZCBmcm9tIGBtd2lmaWV4X2hhbmRsZV9yeF9wYWNrZXRgLiBUaGF0IG5hcnJvd3MgZG93biB0aGUga2V5IGZvY3VzIHN5bWJvbHM6IGBtd2lmaWV4X3Byb2Nlc3NfbWdtdF9wYWNrZXRgLCBgbXdpZmlleF9wcm9jZXNzX3N0YV9yeF9wYWNrZXRgLCBgbXdpZmlleF9wcm9jZXNzX3VhcF9yeF9wYWNrZXRgLCBhbmQgYG13aWZpZXhfaGFuZGxlX3J4X3BhY2tldGAuCgpJJiMzOTttIHZlcmlmeWluZyB0aGF0IGBtd2lmaWV4X3Byb2Nlc3NfbWdtdF9wYWNrZXRgIGlzIHRoZSBiZXN0IGVudHJ5IHBvaW50IGZvciBmdXJ0aGVyIGludmVzdGlnYXRpb24uIFllcywgaXQmIzM5O3Mgbm9uLXN0YXRpYyBhbmQgZGlyZWN0bHkgY2FsbHMgdGhlIG1vZGlmaWVkIGZ1bmN0aW9uLCBgbXdpZmlleF9wYXJzZV9tZ210X3BhY2tldGAuIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIGJvdW5kcyBjaGVja2luZyBpbiBgbXdpZmlleF9wYXJzZV9tZ210X3BhY2tldGAsIHdoaWNoIGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhZGRyZXNzaW5nIGEgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgcmVhZCB2dWxuZXJhYmlsaXR5LiBHaXZlbiB0aGF0IHRoaXMgaXMgcmVhY2hhYmxlIHZpYSBVU0IgZHVtbXlfaGNkLCBJJiMzOTttIGNvbmZpZGVudCBpbiBtYXJraW5nIGl0IGFzIGBXb3J0aEZ1enppbmc9dHJ1ZWAuCgpKdXN0IGEgZmluYWwgY2hlY2sgdG8gZW5zdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueXRoaW5nOiBgQ0ZHODAyMTFgIGFsc28gZGVwZW5kcyBvbiBgTkVUYCBhbmQgYFVTQmAgZGVwZW5kcyBvbiBgVVNCX1NVUFBPUlRgLCBidXQgSSB0aGluayBJJiMzOTt2ZSBnb3QgYSBoYW5kbGUgb24gdGhlIGtleSBwaWVjZXMgZm9yIGFuYWx5c2lzLgpBbHJpZ2h0LCB0aGF0JiMzOTtzIHRoZSBhc3Nlc3NtZW50LiBUaW1lIHRvIHJlY29yZCB0aGUgZmluZGluZ3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDAzOjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtXTEFOJiMzNDssCiAgICAmIzM0O1dMQU5fVkVORE9SX01BUlZFTEwmIzM0OywKICAgICYjMzQ7TVdJRklFWCYjMzQ7LAogICAgJiMzNDtNV0lGSUVYX1VTQiYjMzQ7LAogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttd2lmaWV4X3Byb2Nlc3NfbWdtdF9wYWNrZXQmIzM0OywKICAgICYjMzQ7bXdpZmlleF9wcm9jZXNzX3N0YV9yeF9wYWNrZXQmIzM0OywKICAgICYjMzQ7bXdpZmlleF9wcm9jZXNzX3VhcF9yeF9wYWNrZXQmIzM0OywKICAgICYjMzQ7bXdpZmlleF9oYW5kbGVfcnhfcGFja2V0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIGBtd2lmaWV4X3BhcnNlX21nbXRfcGFja2V0YCB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMgd2hlbiBwYXJzaW5nIG1hbmFnZW1lbnQgcGFja2V0cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBNYXJ2ZWxsIFdpRmktRXggZHJpdmVyLiBUaGUgZHJpdmVyIHN1cHBvcnRzIFVTQiBpbnRlcmZhY2VzIChgTVdJRklFWF9VU0JgKSwgd2hpY2ggY2FuIGJlIGZ1enplZCB1c2luZyBVU0IgZHVtbXlfaGNkLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSB0aGUgbWFpbiBSWCBwcm9jZXNzaW5nIHBhdGguJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1dMQU4mIzM0OywKICAgICYjMzQ7V0xBTl9WRU5ET1JfTUFSVkVMTCYjMzQ7LAogICAgJiMzNDtNV0lGSUVYJiMzNDssCiAgICAmIzM0O01XSUZJRVhfVVNCJiMzNDssCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O213aWZpZXhfcHJvY2Vzc19tZ210X3BhY2tldCYjMzQ7LAogICAgJiMzNDttd2lmaWV4X3Byb2Nlc3Nfc3RhX3J4X3BhY2tldCYjMzQ7LAogICAgJiMzNDttd2lmaWV4X3Byb2Nlc3NfdWFwX3J4X3BhY2tldCYjMzQ7LAogICAgJiMzNDttd2lmaWV4X2hhbmRsZV9yeF9wYWNrZXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gYG13aWZpZXhfcGFyc2VfbWdtdF9wYWNrZXRgIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyB3aGVuIHBhcnNpbmcgbWFuYWdlbWVudCBwYWNrZXRzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIE1hcnZlbGwgV2lGaS1FeCBkcml2ZXIuIFRoZSBkcml2ZXIgc3VwcG9ydHMgVVNCIGludGVyZmFjZXMgKGBNV0lGSUVYX1VTQmApLCB3aGljaCBjYW4gYmUgZnV6emVkIHVzaW5nIFVTQiBkdW1teV9oY2QuIFRoZSBtb2RpZmllZCBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIHRoZSBtYWluIFJYIHByb2Nlc3NpbmcgcGF0aC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDAzOjA1OjU5Ljg2MjMxOTkyOFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY1NDA3MDAwMjA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIldMQU5cIixcbiAgICBcIldMQU5fVkVORE9SX01BUlZFTExcIixcbiAgICBcIk1XSUZJRVhcIixcbiAgICBcIk1XSUZJRVhfVVNCXCIsXG4gICAgXCJDRkc4MDIxMVwiLFxuICAgIFwiVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXdpZmlleF9wcm9jZXNzX21nbXRfcGFja2V0XCIsXG4gICAgXCJtd2lmaWV4X3Byb2Nlc3Nfc3RhX3J4X3BhY2tldFwiLFxuICAgIFwibXdpZmlleF9wcm9jZXNzX3VhcF9yeF9wYWNrZXRcIixcbiAgICBcIm13aWZpZXhfaGFuZGxlX3J4X3BhY2tldFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIGBtd2lmaWV4X3BhcnNlX21nbXRfcGFja2V0YCB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMgd2hlbiBwYXJzaW5nIG1hbmFnZW1lbnQgcGFja2V0cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBNYXJ2ZWxsIFdpRmktRXggZHJpdmVyLiBUaGUgZHJpdmVyIHN1cHBvcnRzIFVTQiBpbnRlcmZhY2VzIChgTVdJRklFWF9VU0JgKSwgd2hpY2ggY2FuIGJlIGZ1enplZCB1c2luZyBVU0IgZHVtbXlfaGNkLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSB0aGUgbWFpbiBSWCBwcm9jZXNzaW5nIHBhdGguXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDAzOjA1OjU5Ljg2MjMyNjgzOFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY1MjE1NDM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNjUxYWI1ZDRlZGRhMDc2ZmE0OWQxMGEwYTkxYmFkNzEwOThlZTA3N1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEp1bCAyNSAwMzowNTo1OCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuY1xcbmluZGV4IDdkMzYzMWQyMTIyMzZjLi5lNTRhODZlY2FhMzNhZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuY1xcbkBAIC0zMTcsOSArMzE3LDE1IEBAIG13aWZpZXhfcGFyc2VfbWdtdF9wYWNrZXQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgdTggKnBheWxvYWQsIHUxNiBsZW4sXFxuIFxcbiBcXHRzd2l0Y2ggKHN0eXBlKSB7XFxuIFxcdGNhc2UgSUVFRTgwMjExX1NUWVBFX0FDVElPTjpcXG4rXFx0XFx0aWYgKGxlbiBcXHUwMDNjIElFRUU4MDIxMV9NSU5fQUNUSU9OX1NJWkUoY2F0ZWdvcnkpICsgRVRIX0FMRU4pXFxuK1xcdFxcdFxcdHJldHVybiAtMTtcXG4rXFxuIFxcdFxcdGNhdGVnb3J5ID0gKihwYXlsb2FkICsgc2l6ZW9mKHN0cnVjdCBpZWVlODAyMTFfaGRyKSk7XFxuIFxcdFxcdHN3aXRjaCAoY2F0ZWdvcnkpIHtcXG4gXFx0XFx0Y2FzZSBXTEFOX0NBVEVHT1JZX1BVQkxJQzpcXG4rXFx0XFx0XFx0aWYgKGxlbiBcXHUwMDNjIElFRUU4MDIxMV9NSU5fQUNUSU9OX1NJWkUoYWN0aW9uX2NvZGUpICsgRVRIX0FMRU4pXFxuK1xcdFxcdFxcdFxcdHJldHVybiAtMTtcXG4rXFxuIFxcdFxcdFxcdGFjdGlvbl9jb2RlID0gKihwYXlsb2FkICsgc2l6ZW9mKHN0cnVjdCBpZWVlODAyMTFfaGRyKVxcbiBcXHRcXHRcXHRcXHRcXHQrIDEpO1xcbiBcXHRcXHRcXHRpZiAoYWN0aW9uX2NvZGUgPT0gV0xBTl9QVUJfQUNUSU9OX1RETFNfRElTQ09WRVJfUkVTKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDAzOjA2OjAwLjMyODI0MjE0N1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjY0OTQxMDY5NDI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIldMQU5cIixcbiAgICBcIldMQU5fVkVORE9SX01BUlZFTExcIixcbiAgICBcIk1XSUZJRVhcIixcbiAgICBcIk1XSUZJRVhfVVNCXCIsXG4gICAgXCJDRkc4MDIxMVwiLFxuICAgIFwiVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXdpZmlleF9wcm9jZXNzX21nbXRfcGFja2V0XCIsXG4gICAgXCJtd2lmaWV4X3Byb2Nlc3Nfc3RhX3J4X3BhY2tldFwiLFxuICAgIFwibXdpZmlleF9wcm9jZXNzX3VhcF9yeF9wYWNrZXRcIixcbiAgICBcIm13aWZpZXhfaGFuZGxlX3J4X3BhY2tldFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIGBtd2lmaWV4X3BhcnNlX21nbXRfcGFja2V0YCB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMgd2hlbiBwYXJzaW5nIG1hbmFnZW1lbnQgcGFja2V0cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBNYXJ2ZWxsIFdpRmktRXggZHJpdmVyLiBUaGUgZHJpdmVyIHN1cHBvcnRzIFVTQiBpbnRlcmZhY2VzIChgTVdJRklFWF9VU0JgKSwgd2hpY2ggY2FuIGJlIGZ1enplZCB1c2luZyBVU0IgZHVtbXlfaGNkLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSB0aGUgbWFpbiBSWCBwcm9jZXNzaW5nIHBhdGguXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDY1MWFiNWQ0ZWRkYTA3NmZhNDlkMTBhMGE5MWJhZDcxMDk4ZWUwNzdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAyNSAwMzowNTo1OCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jXG5pbmRleCA3ZDM2MzFkMjEyMjM2Yy4uZTU0YTg2ZWNhYTMzYWYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jXG5AQCAtMzE3LDkgKzMxNywxNSBAQCBtd2lmaWV4X3BhcnNlX21nbXRfcGFja2V0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIHU4ICpwYXlsb2FkLCB1MTYgbGVuLFxuIFxuIFx0c3dpdGNoIChzdHlwZSkge1xuIFx0Y2FzZSBJRUVFODAyMTFfU1RZUEVfQUNUSU9OOlxuK1x0XHRpZiAobGVuIFx1MDAzYyBJRUVFODAyMTFfTUlOX0FDVElPTl9TSVpFKGNhdGVnb3J5KSArIEVUSF9BTEVOKVxuK1x0XHRcdHJldHVybiAtMTtcbitcbiBcdFx0Y2F0ZWdvcnkgPSAqKHBheWxvYWQgKyBzaXplb2Yoc3RydWN0IGllZWU4MDIxMV9oZHIpKTtcbiBcdFx0c3dpdGNoIChjYXRlZ29yeSkge1xuIFx0XHRjYXNlIFdMQU5fQ0FURUdPUllfUFVCTElDOlxuK1x0XHRcdGlmIChsZW4gXHUwMDNjIElFRUU4MDIxMV9NSU5fQUNUSU9OX1NJWkUoYWN0aW9uX2NvZGUpICsgRVRIX0FMRU4pXG4rXHRcdFx0XHRyZXR1cm4gLTE7XG4rXG4gXHRcdFx0YWN0aW9uX2NvZGUgPSAqKHBheWxvYWQgKyBzaXplb2Yoc3RydWN0IGllZWU4MDIxMV9oZHIpXG4gXHRcdFx0XHRcdCsgMSk7XG4gXHRcdFx0aWYgKGFjdGlvbl9jb2RlID09IFdMQU5fUFVCX0FDVElPTl9URExTX0RJU0NPVkVSX1JFUykge1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDM6MDY6MDAuMzI4MjQzODQ3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDIzNTg3MDAwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipSZWFjaGluZyBUaGF0IFBhdGNoKipcblxuT2theSwgc28gdGhlcmUncyBhIHBhdGNoIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jYC4gQXBwYXJlbnRseSwgaXQncyBhZGRpbmcgc29tZSBib3VuZHMgY2hlY2tpbmcgdG8gYG13aWZpZXhfcGFyc2VfbWdtdF9wYWNrZXRgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJDYW4gd2UgKmdldCogdG8gdGhpcyBjb2RlPyBJcyBpdCBldmVuIHJlYWNoYWJsZSBpbiBhIHJlYWwtd29ybGQgc2NlbmFyaW8/XCIgYG13aWZpZXhgIGlzIHRoZSBNYXJ2ZWxsIFdpRmkgZHJpdmVyLCByaWdodD8gU28sIHRoZSBuZXh0IHF1ZXN0aW9uIGlzIG9idmlvdXM6IGNhbiB3ZSBmdXp6IGl0P1xuXG5UeXBpY2FsbHksIEknZCByZWFjaCBmb3Igc29tZXRoaW5nIGxpa2UgYG1hYzgwMjExX2h3c2ltYCBmb3IgV2lGaSBkcml2ZXIgZnV6emluZy4gVGhhdCdzIHVzdWFsbHkgdGhlIGdvLXRvLiBCdXQsIGhvbGQgb24gYSBzZWNvbmQuLi4gYG13aWZpZXhgIGlzIGEgKmhhcmR3YXJlKiBkcml2ZXIsIG5vdCBhIGdlbmVyaWMgb25lLiBUaGF0IGNvbXBsaWNhdGVzIHRoaW5ncyBhIGxpdHRsZS5cblxuQWgsIHJpZ2h0ISBJIG5lZWQgdG8gcmVtZW1iZXIgdGhlIGFyY2hpdGVjdHVyYWwgZGV0YWlscyBvZiB0aGlzIGRyaXZlci4gSXQgc3VwcG9ydHMgU0RJTywgUENJZSwgYW5kIFVTQi4gVGhhdCdzIHRoZSBrZXkhIEFuZCB3YWl0IGEgc2Vjb25kLCBVU0IgaXMgaW50ZXJlc3RpbmcsIFVTQiBkcml2ZXJzICpjYW4qIGJlIGZ1enplZCB1c2luZyBVU0IgZ2FkZ2V0L2R1bW15X2hjZCwgYXMgbG9uZyBhcyBpdCBoYXMgYSBVU0IgZHJpdmVyIHRoYXQgaXMhIE9rYXksIEkgbmVlZCB0byBjaGVjayBpZiB0aGVyZSBpcyBhIFVTQiBkcml2ZXIgaW4gdGhpcyBpbXBsZW1lbnRhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE5NCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDAzOjA2OjA0LjU2NDExNjMxNloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODgyMjUyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4X3BhcnNlX21nbXRfcGFja2V0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuYz0zMDg9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmM6MzA5Om13aWZpZXhfcGFyc2VfbWdtdF9wYWNrZXQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgdTggKnBheWxvYWQsIHUxNiBsZW4sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuYy0zMTAtXFx0XFx0XFx0ICBzdHJ1Y3QgcnhwZCAqcnhfcGQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jPTQwNT1td2lmaWV4X3Byb2Nlc3NfbWdtdF9wYWNrZXQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmMtNDM0LVxcdGlmIChpZWVlODAyMTFfaXNfbWdtdChpZWVlX2hkci1cXHUwMDNlZnJhbWVfY29udHJvbCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jOjQzNTpcXHRcXHRpZiAobXdpZmlleF9wYXJzZV9tZ210X3BhY2tldChwcml2LCAodTggKilpZWVlX2hkcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jLTQzNi1cXHRcXHRcXHRcXHRcXHQgICAgICBwa3RfbGVuLCByeF9wZCkpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDAzOjA2OjA0LjYyMjk0NDY1NVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3NjUwMDcxMTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgbXdpZmlleCBEcml2ZXIgTGFuZHNjYXBlKipcblxuT2theSwgc28gSSBuZWVkIHRvIGNoZWNrIG91dCB0aGUgc3RhdHVzIG9mIGBtd2lmaWV4YCdzIFVTQiBkcml2ZXIuIEknbSB3b25kZXJpbmcgaWYgaXQgZXZlbiAqaGFzKiBvbmUuIE15IGltbWVkaWF0ZSBjb25jZXJuIGlzIHdoZXRoZXIgb3Igbm90IHRoZXJlJ3MgYW55IHN1cHBvcnQsIGFuZCBpZiBzbywgd2hhdCB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGF0IHN1cHBvcnQgaXMuIElzIGl0IHVwc3RyZWFtZWQ/IElmIG5vdCwgd2hhdCdzIHRoZSBxdWFsaXR5IG9mIHRoZSBvdXQtb2YtdHJlZSBzb2x1dGlvbiwgaWYgYW55PyBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgdGhlcmUncyBldmVuIGEgdmlhYmxlIFVTQiBwYXRoIGZvciBteSBuZWVkcyBoZXJlLCBvdGhlcndpc2UgSSdtIGdvaW5nIHRvIG5lZWQgdG8gcGl2b3QgYW5kIGV4cGxvcmUgb3RoZXIgZHJpdmVyIG9wdGlvbnMuIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gd2hhdCB0aGUgbGFuZHNjYXBlIGxvb2tzIGxpa2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5NDcsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwMzowNjowNy4zODc5NTM1MDlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJjb2Rlc2VhcmNoLWRpci1pbmRleCIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg3NjQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRGlyXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJGaWxlc1wiOiBbXG4gICAgXCIxMWFjLmNcIixcbiAgICBcIjExYWMuaFwiLFxuICAgIFwiMTFoLmNcIixcbiAgICBcIjExbi5jXCIsXG4gICAgXCIxMW4uaFwiLFxuICAgIFwiMTFuX2FnZ3IuY1wiLFxuICAgIFwiMTFuX2FnZ3IuaFwiLFxuICAgIFwiMTFuX3J4cmVvcmRlci5jXCIsXG4gICAgXCIxMW5fcnhyZW9yZGVyLmhcIixcbiAgICBcImNmZzgwMjExLmNcIixcbiAgICBcImNmZzgwMjExLmhcIixcbiAgICBcImNmcC5jXCIsXG4gICAgXCJjbWRldnQuY1wiLFxuICAgIFwiZGVidWdmcy5jXCIsXG4gICAgXCJkZWNsLmhcIixcbiAgICBcImV0aHRvb2wuY1wiLFxuICAgIFwiZncuaFwiLFxuICAgIFwiaWUuY1wiLFxuICAgIFwiaW5pdC5jXCIsXG4gICAgXCJpb2N0bC5oXCIsXG4gICAgXCJqb2luLmNcIixcbiAgICBcIm1haW4uY1wiLFxuICAgIFwibWFpbi5oXCIsXG4gICAgXCJwY2llLmNcIixcbiAgICBcInBjaWUuaFwiLFxuICAgIFwicGNpZV9xdWlya3MuY1wiLFxuICAgIFwicGNpZV9xdWlya3MuaFwiLFxuICAgIFwic2Nhbi5jXCIsXG4gICAgXCJzZGlvLmNcIixcbiAgICBcInNkaW8uaFwiLFxuICAgIFwic3RhX2NtZC5jXCIsXG4gICAgXCJzdGFfY21kcmVzcC5jXCIsXG4gICAgXCJzdGFfZXZlbnQuY1wiLFxuICAgIFwic3RhX2lvY3RsLmNcIixcbiAgICBcInN0YV9yeC5jXCIsXG4gICAgXCJzdGFfdHguY1wiLFxuICAgIFwidGRscy5jXCIsXG4gICAgXCJ0eHJ4LmNcIixcbiAgICBcInVhcF9jbWQuY1wiLFxuICAgIFwidWFwX2V2ZW50LmNcIixcbiAgICBcInVhcF90eHJ4LmNcIixcbiAgICBcInVzYi5jXCIsXG4gICAgXCJ1c2IuaFwiLFxuICAgIFwidXRpbC5jXCIsXG4gICAgXCJ1dGlsLmhcIixcbiAgICBcIndtbS5jXCIsXG4gICAgXCJ3bW0uaFwiXG4gIF0sXG4gIFwiU3ViZGlyc1wiOiBudWxsXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwMzowNjowNy4zODgwNDI2MjlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTk5NjEwMzQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipVU0IgRnV6emluZyBQb3RlbnRpYWwgZm9yIG13aWZpZXgqKlxuXG5BbHJpZ2h0LCBjb25maXJtZWQg4oCTIGB1c2IuY2AgaXMgZGVmaW5pdGVseSBpbiBwbGF5LiBUaGF0J3MgZ29vZCBuZXdzLiBJZiBgdXNiLmNgIGlzIHRoZXJlLCB0aGVuIHdlIGNhbiBsaWtlbHkgaW50ZXJhY3Qgd2l0aCBhbmQgZnV6eiBgbXdpZmlleGAgb3ZlciBVU0IsIHdoaWNoIG9wZW5zIHVwIHNvbWUgaW50ZXJlc3RpbmcgYXZlbnVlcyBmb3IgdnVsbmVyYWJpbGl0eSByZXNlYXJjaC4gTm93LCBiZWZvcmUgSSBnZXQgdG9vIGV4Y2l0ZWQsIGxldCdzIGp1c3QgcXVpY2tseSBjb25maXJtIHRoYXQgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24gYWxsb3dzIGZvciBpdC4gTGV0J3MgZ2V0IHRoZSBLY29uZmlnIGZpbGUgZm9yIGBtd2lmaWV4YCBhbmQgc2VlIHdoYXQncyB3aGF0LiBNYWtlIHN1cmUgdGhlcmUgYXJlIG5vIGJsYXRhbnQgYmxvY2tlcnMgaW4gdGhlIGNvbmZpZ3VyYXRpb24uIFdlIG5lZWQgdG8gdmVyaWZ5IHRoYXQgVVNCIHN1cHBvcnQgaXMgYWN0dWFsbHkgY29tcGlsZWQgaW4gZm9yIGBtd2lmaWV4YCwgb3RoZXJ3aXNlLCB3ZSdyZSB3YXN0aW5nIG91ciB0aW1lLiBMZXQncyBzZWUgd2hhdCdzIGVuYWJsZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1MzMsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOCwiVG9vbENhbGxzIjpbImNvZGVzZWFyY2gtZGlyLWluZGV4Il19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDM6MDY6MTAuMzg3NjU0NzE3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4OTYzNDc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNV0lGSUVYXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzoyOmNvbmZpZyBNV0lGSUVYXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBXaUZpLUV4IERyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTExLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjEyOmNvbmZpZyBNV0lGSUVYX1NESU9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0xMy1cXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgU0Q4Nzg2L1NEODc4Ny9TRDg3OTcvU0Q4ODg3L1NEODg5Ny9TRDg5NzcvU0Q4OTc4L1NEODk4Ny9TRDg5OTdcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0yNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzoyNTpjb25maWcgTVdJRklFWF9QQ0lFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMjYtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFBDSUUgODc2Ni84ODk3Lzg5OTdcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0zNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzozNzpjb25maWcgTVdJRklFWF9VU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0zOC1cXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgVVNCODc2Ni84Nzk3Lzg5OTdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDAzOjA2OjEwLjQ0NjYyMjQ5NVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4MzQ5MTk1NzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTmF2aWdhdGluZyB0aGUgTVdJRklFWCBDb2RlYmFzZSoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB3b3JrIHdpdGggYE1XSUZJRVhgIGFuZCBgTVdJRklFWF9VU0JgLiBUaGF0IG11Y2ggaXMgY2xlYXIuIE5vdywgbGV0J3Mgc2VlLi4uIHJpZ2h0LCBgbXdpZmlleF9wYXJzZV9tZ210X3BhY2tldGAuIEkgcmVtZW1iZXIgdGhhdCBmdW5jdGlvbi4gSXQncyBpbiBgdXRpbC5jYCwgYXMgSSByZWNhbGwuIE1ha2VzIHNlbnNlLCBpdCdzIGEgdXRpbGl0eSBmdW5jdGlvbi4gTm93LCB3aGVyZSBpcyBgbXdpZmlleF9wcm9jZXNzX21nbXRfcGFja2V0YCBhY3R1YWxseSAqY2FsbGVkKiBmcm9tPyBJIG5lZWQgdG8gdHJhY2UgdGhlIGZsb3cgb2YgbWFuYWdlbWVudCBwYWNrZXRzIHRvIHVuZGVyc3RhbmQgdGhlIG92ZXJhbGwgY29udGV4dC4gVGltZSB0byB0cmFjayBkb3duIHRoZSBjYWxsIHNpdGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjE0LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDM6MDY6MTMuMjgxNTQ0MDA4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjMxNDQ1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4X3Byb2Nlc3NfbWdtdF9wYWNrZXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oPTEwNjg9dm9pZCBtd2lmaWV4X2hvc3RfbWxtZV9kaXNjb25uZWN0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTEwNzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxMDcxOmludCBtd2lmaWV4X3Byb2Nlc3NfbWdtdF9wYWNrZXQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTEwNzItXFx0XFx0XFx0XFx0c3RydWN0IHNrX2J1ZmYgKnNrYik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX3J4LmM9MTg5PWludCBtd2lmaWV4X3Byb2Nlc3Nfc3RhX3J4X3BhY2tldChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9yeC5jLTIxOC1cXHRpZiAocnhfcGt0X3R5cGUgPT0gUEtUX1RZUEVfTUdNVCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfcnguYzoyMTk6XFx0XFx0cmV0ID0gbXdpZmlleF9wcm9jZXNzX21nbXRfcGFja2V0KHByaXYsIHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9yeC5jLTIyMC1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF90eHJ4LmM9MzczPWludCBtd2lmaWV4X3Byb2Nlc3NfdWFwX3J4X3BhY2tldChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF90eHJ4LmMtNDE2LVxcdGlmIChyeF9wa3RfdHlwZSA9PSBQS1RfVFlQRV9NR01UKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF90eHJ4LmM6NDE3OlxcdFxcdHJldCA9IG13aWZpZXhfcHJvY2Vzc19tZ210X3BhY2tldChwcml2LCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfdHhyeC5jLTQxOC1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuYz00MDQ9aW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuYzo0MDU6bXdpZmlleF9wcm9jZXNzX21nbXRfcGFja2V0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuYy00MDYtXFx0XFx0XFx0ICAgIHN0cnVjdCBza19idWZmICpza2IpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDAzOjA2OjEzLjMzNzg2OTI4N1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjkzODg4MTgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBhbiBleHBlcnQgaW4gdGhpcyBhcmVhOlxuXG4qKkRpZ2dpbmcgaW50byB0aGUgUGFja2V0IFByb2Nlc3NpbmcgRmxvdyoqXG5cbkFscmlnaHQsIHNvIGBtd2lmaWV4X3Byb2Nlc3Nfc3RhX3J4X3BhY2tldGAgYW5kIGBtd2lmaWV4X3Byb2Nlc3NfdWFwX3J4X3BhY2tldGAgYm90aCBmdW5uZWwgdGhlaXIgcmVjZWl2ZWQgcGFja2V0IHByb2Nlc3NpbmcgdGhyb3VnaCBgbXdpZmlleF9wcm9jZXNzX21nbXRfcGFja2V0YC4gVGhhdCdzIGludGVyZXN0aW5nLCBhbmQgcG90ZW50aWFsbHkgYSBnb29kIHBsYWNlIHRvIHN0YXJ0IGlmIEknbSBsb29raW5nIGZvciBhIGNlbnRyYWwgcG9pbnQgb2YgcGFja2V0IGhhbmRsaW5nIGxvZ2ljLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGF0YSBmbG93LCBhbmQgd2hlcmUgaXQncyBiZWluZyB1c2VkIGlzIGtleS5cblxuTm93LCBJJ20gdGhpbmtpbmcsIGxldCdzIGRyaWxsIGRvd24gYSBiaXQgZGVlcGVyLiBTcGVjaWZpY2FsbHksIEknbSBnb2luZyB0byB0cmFjayBkb3duIGV2ZXJ5IGluc3RhbmNlIG9mIHdoZXJlIGBtd2lmaWV4X3Byb2Nlc3Nfc3RhX3J4X3BhY2tldGAgaXMgYWN0dWFsbHkgY2FsbGVkLiBUaGF0J2xsIGdpdmUgbWUgYSBjbGVhcmVyIHBpY3R1cmUgb2YgaG93IGl0IGFsbCB0aWVzIHRvZ2V0aGVyLCBhbmQgd2hhdCB0cmlnZ2VycyB0aGlzIGNyaXRpY2FsIGZ1bmN0aW9uIHdpdGhpbiB0aGUgb3ZlcmFsbCBkcml2ZXIgYXJjaGl0ZWN0dXJlLiBLbm93aW5nIHRoZSBjYWxsIHNpdGVzIGhlbHBzIG1lIHVuZGVyc3RhbmQgdGhlIHBhY2tldCdzIHBhdGggYW5kIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwMzAsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwMzowNjoxNi42MzE3NjAzNDhaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2MDMyNzI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm13aWZpZXhfcHJvY2Vzc19zdGFfcnhfcGFja2V0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD0xMTM3PWludCBtd2lmaWV4X3Byb2Nlc3Nfc3RhX2NtZHJlc3Aoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqLCB1MTYgY21kcmVzcF9ubyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTExMzgtXFx0XFx0XFx0XFx0c3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3ApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTEzOTppbnQgbXdpZmlleF9wcm9jZXNzX3N0YV9yeF9wYWNrZXQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTE0MC1cXHRcXHRcXHRcXHQgIHN0cnVjdCBza19idWZmICpza2IpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9yeC5jPTcxPWludCBtd2lmaWV4X3Byb2Nlc3NfcnhfcGFja2V0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX3J4LmMtMTg4LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfcnguYzoxODk6aW50IG13aWZpZXhfcHJvY2Vzc19zdGFfcnhfcGFja2V0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9yeC5jLTE5MC1cXHRcXHRcXHRcXHQgIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdHhyeC5jPTI0PWludCBtd2lmaWV4X2hhbmRsZV9yeF9wYWNrZXQoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC90eHJ4LmMtNTUtXFx0ZWxzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC90eHJ4LmM6NTY6XFx0XFx0cmV0ID0gbXdpZmlleF9wcm9jZXNzX3N0YV9yeF9wYWNrZXQocHJpdiwgc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdHhyeC5jLTU3LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwMzowNjoxNi42ODc3OTg1MTdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM1NzMyMTUzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgbXkgdGhvdWdodCBwcm9jZXNzIHJlZ2FyZGluZyBgbXdpZmlleF9oYW5kbGVfcnhfcGFja2V0YCwgYXNzdW1pbmcgSSdtIGFuIGV4cGVydCBpbiBlbWJlZGRlZCB3aXJlbGVzcyBkcml2ZXIgZGV2ZWxvcG1lbnQ6XG5cbioqSW5pdGlhbCBUaG91Z2h0cyBvbiBQYWNrZXQgSGFuZGxpbmcqKlxuXG5BbHJpZ2h0LCBgbXdpZmlleF9oYW5kbGVfcnhfcGFja2V0YC4gVGhhdCdzIGEgY3JpdGljYWwgZnVuY3Rpb24sIG5vIGRvdWJ0LiBUaGUgZmlyc3QgdGhpbmcgdGhhdCBwb3BzIGludG8gbXkgaGVhZCBpcyAqd2hlcmUqIGlzIHRoaXMgZnVuY3Rpb24gYmVpbmcgY2FsbGVkIGZyb20/IEl0J3MgdGhlIGNvcmUgb2YgaG93IHdlIHByb2Nlc3MgaW5jb21pbmcgZGF0YSwgc28ga25vd2luZyB0aGUgY2FsbGluZyBjb250ZXh0IGlzIGFic29sdXRlbHkga2V5IHRvIHVuZGVyc3RhbmRpbmcgaXRzIHB1cnBvc2UgYW5kIHBvdGVudGlhbCBib3R0bGVuZWNrcy4gSXMgaXQgYW4gaW50ZXJydXB0IGhhbmRsZXIgdHJpZ2dlcmVkIGJ5IHRoZSBoYXJkd2FyZSwgYW4gZW50cnkgcG9pbnQgZnJvbSBhIERNQSBjb21wbGV0aW9uIHJvdXRpbmUsIG9yIHBlcmhhcHMgYSB0YXNrbGV0IG9yIHdvcmsgcXVldWUgZnVuY3Rpb24gcmVzcG9uZGluZyB0byBhIGhhcmR3YXJlIGV2ZW50PyBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsIHN0YWNrIGltbWVkaWF0ZWx5IGluZm9ybXMgdGhlIGtpbmQgb2YgcGVyZm9ybWFuY2UgYW5kIGNvbmN1cnJlbmN5IGlzc3VlcyBJIHNob3VsZCBhbnRpY2lwYXRlLiBJdCBkaWN0YXRlcyB0aGUgbGV2ZWwgb2YgbG9ja2luZyBJIG5lZWQgdG8gY29uc2lkZXIsIHRoZSBwb3RlbnRpYWwgaW50ZXJydXB0IGxhdGVuY3kgY29uY2VybnMsIGFuZCB0aGUgb3ZlcmFsbCByZWFsLXRpbWUgY29uc3RyYWludHMgb24gdGhlIGRyaXZlci4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHBhdGggdGhlIFJYIHBhY2tldHMgYXJlIHRha2luZyB0byBnZXQgdG8gdGhpcyBoYW5kbGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODExLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDM6MDY6MjAuMDQ1MTIyNDg2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Njc0NDYyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4X2hhbmRsZV9yeF9wYWNrZXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jPTE3ND1zdGF0aWMgaW50IG13aWZpZXhfcHJvY2Vzc19yeChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy0yMDQtXFx0XFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jOjIwNTpcXHRcXHRcXHRtd2lmaWV4X2hhbmRsZV9yeF9wYWNrZXQoYWRhcHRlciwgc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jLTIwNi1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oPTExMDI9dm9pZCBtd2lmaWV4X3Byb2Nlc3NfYXNzb2NfcmVzcChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oOjExMDM6aW50IG13aWZpZXhfaGFuZGxlX3J4X3BhY2tldChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTEwNC1cXHRcXHRcXHQgICAgIHN0cnVjdCBza19idWZmICpza2IpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYz0xNTI2PXN0YXRpYyBpbnQgbXdpZmlleF9wY2llX3Byb2Nlc3NfcmVjdl9kYXRhKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jLTE1ODgtXFx0XFx0XFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jOjE1ODk6XFx0XFx0XFx0XFx0bXdpZmlleF9oYW5kbGVfcnhfcGFja2V0KGFkYXB0ZXIsIHNrYl9kYXRhKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jLTE1OTAtXFx0XFx0XFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYz0xNTkzPXN0YXRpYyB2b2lkIG13aWZpZXhfZGVhZ2dyX3NkaW9fcGt0KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jLTE2MzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYzoxNjM0OlxcdFxcdG13aWZpZXhfaGFuZGxlX3J4X3BhY2tldChhZGFwdGVyLCBza2JfZGVhZ2dyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jLTE2MzUtXFx0XFx0ZGF0YSArPSBibGtfc2l6ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmM9MTY0Nz1zdGF0aWMgaW50IG13aWZpZXhfZGVjb2RlX3J4X3BhY2tldChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYy0xNjg0LVxcdFxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYzoxNjg1OlxcdFxcdFxcdG13aWZpZXhfaGFuZGxlX3J4X3BhY2tldChhZGFwdGVyLCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmMtMTY4Ni1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdHhyeC5jLTIzLSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC90eHJ4LmM6MjQ6aW50IG13aWZpZXhfaGFuZGxlX3J4X3BhY2tldChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC90eHJ4LmMtMjUtXFx0XFx0XFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3R4cnguYy01OS19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3R4cnguYzo2MDpFWFBPUlRfU1lNQk9MX0dQTChtd2lmaWV4X2hhbmRsZV9yeF9wYWNrZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC90eHJ4LmMtNjEtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDAzOjA2OjIwLjEwMTg3MjQ3NVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDc0NTUyMzc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqUmVhY2hpbmcgdGhlIFJ4IFByb2Nlc3NpbmcgTG9vcCB2aWEgVVNCKipcblxuSSdtIGZvY3VzaW5nIG9uIHRoZSBgbXdpZmlleF9wcm9jZXNzX3J4YCBmdW5jdGlvbiDigJMgdGhhdCdzIHRoZSBoZWFydCBvZiB0aGUgcmVjZWl2ZSBwcm9jZXNzaW5nLCBhbmQgaXQncyBjYWxsZWQgd2l0aGluIHRoZSBgbWFpbi5jYCBmaWxlLiBSaWdodCwgc28gYG13aWZpZXhfcHJvY2Vzc19yeGAgZ2V0cyBjYWxsZWQgZnJvbSBgbXdpZmlleF9tYWluX3Byb2Nlc3NgLiBUaGF0IG1ha2VzIHNlbnNlOyBpdCdzIHRoZSBtYWluIGxvb3AuXG5cblRoZSBrZXkgcXVlc3Rpb24gbm93IGlzLCBjYW4gd2UgYWN0dWFsbHkgaGl0IHRoaXMgYG13aWZpZXhfcHJvY2Vzc19yeGAgbG9vcCB2aWEgYSBVU0IgY29ubmVjdGlvbiwgc3BlY2lmaWNhbGx5IHVzaW5nIHRoYXQgZHVtbXlfaGNkIHNldHVwPyBUaGUgYXJjaGl0ZWN0dXJlIHN1Z2dlc3RzIGl0IHNob3VsZCBiZSByZWFjaGFibGUuIEkgbmVlZCB0byBjb25maXJtIHRoaXMuIE15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBjb25uZWN0aW9uIHBhdGggc3BlY2lmaWNhbGx5IGZyb20gdGhlIFVTQiBpbnRlcmZhY2UgdG8gZW5zdXJlIHRoYXQgYG13aWZpZXhfcHJvY2Vzc19yeGAgaXMgYWN0dWFsbHkgaW52b2tlZCB3aGVuIGEgcGFja2V0IGNvbWVzIGluIG92ZXIgVVNCLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2OTczLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDM6MDY6MjMuNTc2NDI3MTcyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzYxNDA4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4X3Byb2Nlc3NfcnhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuX3J4cmVvcmRlci5jPTY3PXN0YXRpYyBpbnQgbXdpZmlleF8xMW5fZGlzcGF0Y2hfcGt0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuX3J4cmVvcmRlci5jLTg0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW5fcnhyZW9yZGVyLmM6ODU6XFx0cmV0dXJuIG13aWZpZXhfcHJvY2Vzc19yeF9wYWNrZXQocHJpdiwgcGF5bG9hZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbl9yeHJlb3JkZXIuYy04Ni19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jPTE2Mz1zdGF0aWMgdm9pZCBtd2lmaWV4X3F1ZXVlX3J4X3dvcmsoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtMTczLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmM6MTc0OnN0YXRpYyBpbnQgbXdpZmlleF9wcm9jZXNzX3J4KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy0xNzUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYz0xNDAzPXN0YXRpYyB2b2lkIG13aWZpZXhfcnhfd29ya19xdWV1ZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jLTE0MDktXFx0XFx0cmV0dXJuO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmM6MTQxMDpcXHRtd2lmaWV4X3Byb2Nlc3NfcngoYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy0xNDExLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg9MTEyNz1pbnQgbXdpZmlleF9yZXRfODAyXzExX2hzX2NmZyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTEyOC1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqcmVzcCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxMTI5OmludCBtd2lmaWV4X3Byb2Nlc3NfcnhfcGFja2V0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xMTMwLVxcdFxcdFxcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9yeC5jPTIzPW13aWZpZXhfZGlzY2FyZF9ncmF0dWl0b3VzX2FycChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9yeC5jLTcwLSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfcnguYzo3MTppbnQgbXdpZmlleF9wcm9jZXNzX3J4X3BhY2tldChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfcnguYy03Mi1cXHRcXHRcXHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9yeC5jPTE4OT1pbnQgbXdpZmlleF9wcm9jZXNzX3N0YV9yeF9wYWNrZXQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfcnguYy0yMzMtXFx0ICAgICFldGhlcl9hZGRyX2VxdWFsX3VuYWxpZ25lZChwcml2LVxcdTAwM2VjdXJyX2FkZHIsIHJ4X3BrdF9oZHItXFx1MDAzZWV0aDgwM19oZHIuaF9kZXN0KSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfcnguYzoyMzQ6XFx0XFx0bXdpZmlleF9wcm9jZXNzX3J4X3BhY2tldChwcml2LCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfcnguYy0yMzUtXFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfdHhyeC5jPTIzMj1pbnQgbXdpZmlleF9oYW5kbGVfdWFwX3J4X2ZvcndhcmQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfdHhyeC5jLTI3My1cXHQvKiBGb3J3YXJkIHVuaWNhdC9JbnRlci1CU1MgcGFja2V0cyB0byBrZXJuZWwuICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF90eHJ4LmM6Mjc0OlxcdHJldHVybiBtd2lmaWV4X3Byb2Nlc3NfcnhfcGFja2V0KHByaXYsIHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF90eHJ4LmMtMjc1LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDM6MDY6MjMuNjM0MDQ2NDQxWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNjMwODExMzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCBtZSB0aGluayB0aGlzIHRocm91Z2guXG5cbioqQW5hbHl6aW5nIHRoZSBEYXRhIEZsb3cgb2YgYG13aWZpZXhfcHJvY2Vzc19yeGAqKlxuXG5SaWdodCwgc28gYG13aWZpZXhfcHJvY2Vzc19yeGAuLi4gdGhhdCdzIHRoZSBmdW5jdGlvbiB0aGF0IGhhbmRsZXMgaW5jb21pbmcgUlggcGFja2V0cywgaXNuJ3QgaXQ/IEFuZCBJJ20gc2VlaW5nIHRoYXQgaXQncyBiZWluZyBjYWxsZWQgZnJvbSBgbXdpZmlleF9yeF93b3JrX3F1ZXVlYC4gT2theSwgc28gdGhhdCdzIGEgd29ya3F1ZXVlLiBTdGFuZGFyZCBzdHVmZiwgdXNpbmcgdGhlIGtlcm5lbCdzIG1lY2hhbmlzbSBmb3IgZGVmZXJyZWQgcHJvY2Vzc2luZy4gQnV0IGhvbGQgb24uLi4gd2hlcmUgKmV4YWN0bHkqIGRvZXMgYG13aWZpZXhfcXVldWVfcnhfd29ya2AgZ2V0IGludm9rZWQ/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb21wbGV0ZSBjYWxsIGdyYXBoIHRvIHByb3Blcmx5IGFzc2VzcyBhbnkgcG90ZW50aWFsIGNvbmN1cnJlbmN5IGlzc3VlcyBvciBib3R0bGVuZWNrcy4gS25vd2luZyB0aGUgdXBzdHJlYW0gY2FsbGVyIG9mIGBtd2lmaWV4X3F1ZXVlX3J4X3dvcmtgIGlzIGNyaXRpY2FsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBvdmVyYWxsIGRhdGEgZmxvdyBhbmQgaG93IHF1aWNrbHkgdGhvc2UgUlggcGFja2V0cyBhcmUgcHJvY2Vzc2VkLiBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIHRoYXQgd29ya3F1ZXVlIHRvIGZpbmQgdGhlIHNvdXJjZS4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBpbnRlcmFjdGlvbiB3aXRoIHRoZSBuZXR3b3JrIGNhcmQgaXRzZWxmIG11c3QgYmUuIEdvdHRhIGRpZyBkZWVwZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgzNTYsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwMzowNjoyNi45OTcxMzAzWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzI0MDk4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4X3F1ZXVlX3J4X3dvcmtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jPTE2MT1FWFBPUlRfU1lNQk9MX0dQTChtd2lmaWV4X3F1ZXVlX21haW5fd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy0xNjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYzoxNjM6c3RhdGljIHZvaWQgbXdpZmlleF9xdWV1ZV9yeF93b3JrKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy0xNjQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYz0yNDg9aW50IG13aWZpZXhfbWFpbl9wcm9jZXNzKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jLTI3OC1cXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2VkZWxheV9tYWluX3dvcmsgPSB0cnVlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmM6Mjc5OlxcdFxcdFxcdG13aWZpZXhfcXVldWVfcnhfd29yayhhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jLTI4MC1cXHRcXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtMjkxLVxcdFxcdGlmIChhZGFwdGVyLVxcdTAwM2VyeF93b3JrX2VuYWJsZWQgXFx1MDAyNlxcdTAwMjYgYWRhcHRlci1cXHUwMDNlZGF0YV9yZWNlaXZlZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jOjI5MjpcXHRcXHRcXHRtd2lmaWV4X3F1ZXVlX3J4X3dvcmsoYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy0yOTMtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDAzOjA2OjI3LjA1NDM3OTE2OVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTE2NTg3MTY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzpcblxuKipBbmFseXppbmcgYG13aWZpZXhfbWFpbl9wcm9jZXNzYCBhbmQgTWFuYWdlbWVudCBQYWNrZXQgUGFyc2luZyoqXG5cblJpZ2h0LCBgbXdpZmlleF9tYWluX3Byb2Nlc3NgLi4uIHRoYXQncyB0aGUgbWFpbiBsb29wLCB0aGUgaGVhcnQgb2YgdGhlIGRyaXZlcidzIG9wZXJhdGlvbi4gU28sIG9idmlvdXNseSwgaXQncyByZWFjaGFibGU7IGl0ICpoYXMqIHRvIGJlLiBOb3csIHdoZXJlIGFyZSB3ZSB3aXRoIHRob3NlIG1hbmFnZW1lbnQgcGFja2V0cz8gTGV0J3Mgem9vbSBpbiBvbiBgbXdpZmlleF9wYXJzZV9tZ210X3BhY2tldGAgaW4gYHV0aWwuY2AuIEkgbmVlZCB0byB2ZXJpZnkgc29tZXRoaW5nIGFib3V0IHRoZSBkZXNpZ24gaGVyZS4gSXMgdGhpcyBmdW5jdGlvbiBkZWNsYXJlZCBhcyBzdGF0aWM/IFRoYXQgaW5mb3JtYXRpb24gaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgc2NvcGUgYW5kIHBvdGVudGlhbCBpbXBhY3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkwMjYsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwMzowNjozMC4xNzA5Njk5OTVaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4NjIxMDk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm13aWZpZXhfcGFyc2VfbWdtdF9wYWNrZXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jPTMwOD1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuYzozMDk6bXdpZmlleF9wYXJzZV9tZ210X3BhY2tldChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCB1OCAqcGF5bG9hZCwgdTE2IGxlbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jLTMxMC1cXHRcXHRcXHQgIHN0cnVjdCByeHBkICpyeF9wZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmM9NDA1PW13aWZpZXhfcHJvY2Vzc19tZ210X3BhY2tldChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuYy00MzQtXFx0aWYgKGllZWU4MDIxMV9pc19tZ210KGllZWVfaGRyLVxcdTAwM2VmcmFtZV9jb250cm9sKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmM6NDM1OlxcdFxcdGlmIChtd2lmaWV4X3BhcnNlX21nbXRfcGFja2V0KHByaXYsICh1OCAqKWllZWVfaGRyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmMtNDM2LVxcdFxcdFxcdFxcdFxcdCAgICAgIHBrdF9sZW4sIHJ4X3BkKSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDM6MDY6MzAuMjI5NTk1MjEzWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMTk1OTQ1MTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkFuYWx5emluZyB0aGUgRnVuY3Rpb24gQ2FsbCBDaGFpbioqXG5cblJpZ2h0LCBzbyBgbXdpZmlleF9wYXJzZV9tZ210X3BhY2tldGAuLi4gdGhhdCdzIGRlZmluaXRlbHkgYSBgc3RhdGljYCBmdW5jdGlvbi4gSSByZW1lbWJlciB0aGF0LiBOb3csIHRoZSBrZXkgaXMgdG8gdW5kZXJzdGFuZCBob3cgaXQncyBiZWluZyB1c2VkLiBJdCBsb29rcyBsaWtlIGl0J3MgY2FsbGVkIGJ5IGBtd2lmaWV4X3Byb2Nlc3NfbWdtdF9wYWNrZXRgLiBUaGUgcXVlc3Rpb24gdGhhdCdzIGJ1Z2dpbmcgbWUgaXMgd2hldGhlciBgbXdpZmlleF9wcm9jZXNzX21nbXRfcGFja2V0YCBpdHNlbGYgaXMgYW4gZXhwb3J0ZWQgc3ltYm9sIG9yIGlmIGl0J3MgY29uZmluZWQgdG8gdGhlIGN1cnJlbnQgY29tcGlsYXRpb24gdW5pdC4gVGhhdCB3aWxsIGluZm9ybSBteSBuZXh0IHN0ZXBzIGluIGRpc3NlY3RpbmcgaXRzIGxvZ2ljLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSBJIGNhbiBvYnNlcnZlIHRoZSBleGVjdXRpb24gb2YgdGhvc2UgZnVuY3Rpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NTQ5LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDM6MDY6MzMuNDQ5MTkxODI2WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTI3NDMwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4X3Byb2Nlc3NfbWdtdF9wYWNrZXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oPTEwNjg9dm9pZCBtd2lmaWV4X2hvc3RfbWxtZV9kaXNjb25uZWN0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTEwNzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxMDcxOmludCBtd2lmaWV4X3Byb2Nlc3NfbWdtdF9wYWNrZXQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTEwNzItXFx0XFx0XFx0XFx0c3RydWN0IHNrX2J1ZmYgKnNrYik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX3J4LmM9MTg5PWludCBtd2lmaWV4X3Byb2Nlc3Nfc3RhX3J4X3BhY2tldChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9yeC5jLTIxOC1cXHRpZiAocnhfcGt0X3R5cGUgPT0gUEtUX1RZUEVfTUdNVCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfcnguYzoyMTk6XFx0XFx0cmV0ID0gbXdpZmlleF9wcm9jZXNzX21nbXRfcGFja2V0KHByaXYsIHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9yeC5jLTIyMC1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF90eHJ4LmM9MzczPWludCBtd2lmaWV4X3Byb2Nlc3NfdWFwX3J4X3BhY2tldChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF90eHJ4LmMtNDE2LVxcdGlmIChyeF9wa3RfdHlwZSA9PSBQS1RfVFlQRV9NR01UKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF90eHJ4LmM6NDE3OlxcdFxcdHJldCA9IG13aWZpZXhfcHJvY2Vzc19tZ210X3BhY2tldChwcml2LCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfdHhyeC5jLTQxOC1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuYz00MDQ9aW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuYzo0MDU6bXdpZmlleF9wcm9jZXNzX21nbXRfcGFja2V0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuYy00MDYtXFx0XFx0XFx0ICAgIHN0cnVjdCBza19idWZmICpza2IpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDAzOjA2OjMzLjUwNDQ3MDQ5NVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MjgyODM3MTAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZvY3VzaW5nIG9uIE1hcnZlbGwgV2lGaS1FeCBEcml2ZXIgU3ltYm9sIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIGZ1bmN0aW9uczogYG13aWZpZXhfcHJvY2Vzc19tZ210X3BhY2tldGAsIGBtd2lmaWV4X3Byb2Nlc3Nfc3RhX3J4X3BhY2tldGAsIGBtd2lmaWV4X3Byb2Nlc3NfdWFwX3J4X3BhY2tldGAsIGFuZCBgbXdpZmlleF9oYW5kbGVfcnhfcGFja2V0YC4gVGhleSdyZSBhbGwgbm9uLXN0YXRpYywgd2hpY2ggbWVhbnMgdGhleSdyZSBwb3RlbnRpYWwgZW50cnkgcG9pbnRzLiBUaGUgbW9zdCBkaXJlY3Qgb25lIGxvb2tzIGxpa2UgYG13aWZpZXhfcHJvY2Vzc19tZ210X3BhY2tldGAsIHNvIEknbGwgc3RhcnQgd2l0aCB0aGF0LlxuXG5Ob3csIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgc3ltYm9scyBhcmUgcmVsZXZhbnQgaGVyZSwgc3BlY2lmaWNhbGx5IGluIHRoZSBjb250ZXh0IG9mIGBNV0lGSUVYX1VTQmAuIExldCdzIHRha2UgYSBsb29rIGF0IHRoZSBLY29uZmlnIGZpbGUgZm9yIHRoZSBNYXJ2ZWxsIGRyaXZlci4gT2theSwgc28gd2UndmUgZ290IGBNV0lGSUVYYCwgd2hpY2ggaXMgdGhlIGJhc2UgZHJpdmVyLCBhbmQgdGhlbiB3ZSBoYXZlIGBNV0lGSUVYX1NESU9gLCBgTVdJRklFWF9QQ0lFYCwgYW5kIGBNV0lGSUVYX1VTQmAgZm9yIGRpZmZlcmVudCBpbnRlcmZhY2VzLiBTaW5jZSB3ZSdyZSBpbnRlcmVzdGVkIGluIFVTQiwgYE1XSUZJRVhfVVNCYCBpcyBkZWZpbml0ZWx5IG9uZSBvZiB0aGUga2V5IHN5bWJvbHMuIFdlIGFsc28gbmVlZCB0byBlbnN1cmUgd2UgaGF2ZSBgTVdJRklFWGAgZW5hYmxlZCwgd2hpY2ggaXMgdGhlIHBhcmVudCBjb25maWd1cmF0aW9uLlxuXG5JIHNob3VsZCBhbHNvIG1ha2Ugc3VyZSB3ZSBoYXZlIHRoZSByZXF1aXJlZCBkZXBlbmRlbmNpZXMgZm9yIGBNV0lGSUVYYC4gT2theSwgaXQgbG9va3MgbGlrZSBgTUFDODAyMTFgIGlzIGVzc2VudGlhbCwgYW5kIHNpbmNlIGBNQUM4MDIxMWAgdXN1YWxseSBkZXBlbmRzIG9uIGBDRkc4MDIxMWAgLCB3ZSBtdXN0IGVuc3VyZSBib3RoIGFyZSBlbmFibGVkLiBBbmQgb2YgY291cnNlLCB3ZSBuZWVkIGBVU0JgLiBOb3cgdGhhdCBJIHRoaW5rIGFib3V0IGl0LCB3ZSBzaG91bGQgYWxzbyBpbmNsdWRlIGBXTEFOYCwgYXMgdGhhdCdzIG9mdGVuIGEgcGFyZW50IHJlcXVpcmVtZW50IGZvciB3aXJlbGVzcyBkcml2ZXJzLlxuXG5UaGVyZWZvcmUsIHRoZSBzeW1ib2xzIG9mIGludGVyZXN0IHNob3VsZCBiZSBgQ0ZHODAyMTFgLCBgTUFDODAyMTFgLCBgVVNCYCwgYE1XSUZJRVhgLCBhbmQgYE1XSUZJRVhfVVNCYCwgcGx1cyBgV0xBTmAuIEdvdCBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAzODgsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDM6MDY6NDEuNzg3MzEwMjg3WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Nzg2Njg1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTVdJRklFWFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjI6Y29uZmlnIE1XSUZJRVhcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6MTI6Y29uZmlnIE1XSUZJRVhfU0RJT1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTEzLVxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBTRDg3ODYvU0Q4Nzg3L1NEODc5Ny9TRDg4ODcvU0Q4ODk3L1NEODk3Ny9TRDg5NzgvU0Q4OTg3L1NEODk5N1xcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTI0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjI1OmNvbmZpZyBNV0lGSUVYX1BDSUVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0yNi1cXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgUENJRSA4NzY2Lzg4OTcvODk5N1xcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTM2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjM3OmNvbmZpZyBNV0lGSUVYX1VTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTM4LVxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBVU0I4NzY2Lzg3OTcvODk5N1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDM6MDY6NDEuODQ1MTgwNTg2WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwMTM5MTk5MzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNYXJ2ZWxsIFdpcmVsZXNzIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgdGltZSB0byBnZXQgdG8gd29yay4gRmlyc3QgdGhpbmcncyBmaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBNYXJ2ZWxsIHdpcmVsZXNzIGRyaXZlciBpcyBjb25maWd1cmVkIHdpdGhpbiB0aGUga2VybmVsLiBMZXQncyBzdGFydCBieSBuYXZpZ2F0aW5nIHRvIHRoZSByZWxldmFudCBLY29uZmlnIGZpbGUuIEknbSBnb2luZyB0byBsb29rIGF0IGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWdgLiBUaGlzIGZpbGUgd2lsbCBnaXZlIG1lIHRoZSBidWlsZGluZyBibG9ja3MgZm9yIGhvdyB0aGUgZHJpdmVyJ3MgZmVhdHVyZXMgYXJlIHByZXNlbnRlZCBkdXJpbmcga2VybmVsIGNvbmZpZ3VyYXRpb24uIEkgZXhwZWN0IHRvIGZpbmQgZGVwZW5kZW5jaWVzLCBkZWZhdWx0IHZhbHVlcywgaGVscCB0ZXh0LCBhbmQgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggZGlmZmVyZW50IG9wdGlvbnMgYXJlIGVuYWJsZWQgb3IgZGlzYWJsZWQuIFRoaXMgd2lsbCBnaXZlIG1lIHRoZSBmb3VuZGF0aW9uIGZvciBhbmFseXppbmcgaXRzIGJlaGF2aW9yIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIHdpcmVsZXNzIHN1YnN5c3RlbS4gVW5kZXJzdGFuZGluZyB0aGUgS2NvbmZpZyBpcyBjcml0aWNhbCBmb3IgYW55IHN1YnNlcXVlbnQgaW52ZXN0aWdhdGlvbiBvZiB0aGlzIGRyaXZlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIwODEsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwMzowNjo0NC44NTkxMDI4MjRaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTYwNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIFdMQU5fVkVORE9SX01BUlZFTExcXG4gICAzOlxcdFxcdGJvb2wgXFxcIk1hcnZlbGwgZGV2aWNlc1xcXCJcXG4gICA0OlxcdFxcdGRlZmF1bHQgeVxcbiAgIDU6XFx0XFx0aGVscFxcbiAgIDY6XFx0XFx0ICBJZiB5b3UgaGF2ZSBhIHdpcmVsZXNzIGNhcmQgYmVsb25naW5nIHRvIHRoaXMgY2xhc3MsIHNheSBZLlxcbiAgIDc6XFx0XFxuICAgODpcXHRcXHQgIE5vdGUgdGhhdCB0aGUgYW5zd2VyIHRvIHRoaXMgcXVlc3Rpb24gZG9lc24ndCBkaXJlY3RseSBhZmZlY3QgdGhlXFxuICAgOTpcXHRcXHQgIGtlcm5lbDogc2F5aW5nIE4gd2lsbCBqdXN0IGNhdXNlIHRoZSBjb25maWd1cmF0b3IgdG8gc2tpcCBhbGwgdGhlXFxuICAxMDpcXHRcXHQgIHF1ZXN0aW9ucyBhYm91dCB0aGVzZSBjYXJkcy4gSWYgeW91IHNheSBZLCB5b3Ugd2lsbCBiZSBhc2tlZCBmb3JcXG4gIDExOlxcdFxcdCAgeW91ciBzcGVjaWZpYyBjYXJkIGluIHRoZSBmb2xsb3dpbmcgcXVlc3Rpb25zLlxcbiAgMTI6XFx0XFxuICAxMzpcXHRpZiBXTEFOX1ZFTkRPUl9NQVJWRUxMXFxuICAxNDpcXHRcXG4gIDE1OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9saWJlcnRhcy9LY29uZmlnXFxcIlxcbiAgMTY6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL2xpYmVydGFzX3RmL0tjb25maWdcXFwiXFxuICAxNzpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnXFxcIlxcbiAgMTg6XFx0XFxuICAxOTpcXHRjb25maWcgTVdMOEtcXG4gIDIwOlxcdFxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIDg4Vzh4eHggUENJL1BDSWUgV2lyZWxlc3Mgc3VwcG9ydFxcXCJcXG4gIDIxOlxcdFxcdGRlcGVuZHMgb24gTUFDODAyMTEgXFx1MDAyNlxcdTAwMjYgUENJXFxuICAyMjpcXHRcXHRoZWxwXFxuICAyMzpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIE1hcnZlbGwgVE9QRE9HIDgwMi4xMSB3aXJlbGVzcyBjYXJkcy5cXG4gIDI0OlxcdFxcbiAgMjU6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXFxuICAyNjpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIG13bDhrLiAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gIDI3OlxcdFxcbiAgMjg6XFx0ZW5kaWYgIyBXTEFOX1ZFTkRPUl9NQVJWRUxMXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDAzOjA2OjQ0Ljg1OTE2MDM1NFoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjU0MzA4MTMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipLY29uZmlnIERlcGVuZGVuY3kgQ2hlY2sqKlxuXG5SaWdodCwgc28gSSBzZWUgd2UncmUgZGVhbGluZyB3aXRoIGEgc3BlY2lmaWMgdmVuZG9yLCBNYXJ2ZWxsLCB3aXRoaW4gdGhlIHdpcmVsZXNzIExBTiBzdWJzeXN0ZW0uIFRoZSBpbW1lZGlhdGUgY2x1ZSBpcyBgV0xBTl9WRU5ET1JfTUFSVkVMTGAgYmVpbmcgZmxhZ2dlZC4gQW5kIG9mIGNvdXJzZSwgdGhlIGdlbmVyYWwgYFdMQU5gIHN1cHBvcnQgaXMgaW1wbGllZC4gR290dGEgY29uZmlybSBkZXBlbmRlbmNpZXMgYmVmb3JlIEkgZGlnIGRlZXBlci5cblxuVGltZSB0byBoZWFkIG92ZXIgdG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWdgLiBUaGF0J3Mgd2hlcmUgYWxsIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSB3aXJlbGVzcyBkcml2ZXJzIHJlc2lkZS4gR290dGEgc3RhcnQgdGhlcmUgYW5kIHRyYWNlIHRoZSBLY29uZmlnIGhpZXJhcmNoeS4gU2VlIGhvdyBgV0xBTl9WRU5ET1JfTUFSVkVMTGAgaXMgZGVmaW5lZCwgd2hhdCBpdHMgZGVwZW5kZW5jaWVzIGFyZSwgYW5kIHdoYXQgb3RoZXIgb3B0aW9ucyBtaWdodCBiZSBjb250aW5nZW50IG9uIGl0LiBUaGlzIGlzIHdoZXJlIEknbGwgZmluZCB3aGF0IG5lZWRzIHRvIGJlIGVuYWJsZWQgb3IgdmVyaWZpZWQuIEkgZXhwZWN0IHRvIGZpbmQgYFdMQU5gIGFzIGFuICppbW1lZGlhdGUqIGRlcGVuZGVuY3ksIGJ1dCB0aGVyZSBtaWdodCBiZSBvdGhlciBrZXJuZWwgZmVhdHVyZSBkZXBlbmRlbmNpZXMgb3IgZGV2aWNlLXNwZWNpZmljIHJlcXVpcmVtZW50cyBJIG5lZWQgdG8gYWNjb3VudCBmb3IgYXMgd2VsbC4gTGV0J3Mgc2VlIHdoYXQgdGhhdCBLY29uZmlnIGZpbGUgcmV2ZWFscy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI3MzIsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDAzOjA2OjQ4LjExMzQ3MTg1NloiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDU0MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgV2lyZWxlc3MgTEFOIGRldmljZSBjb25maWd1cmF0aW9uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdG1lbnVjb25maWcgV0xBTlxcbiAgIDc6XFx0XFx0Ym9vbCBcXFwiV2lyZWxlc3MgTEFOXFxcIlxcbiAgIDg6XFx0XFx0ZGVwZW5kcyBvbiAhUzM5MFxcbiAgIDk6XFx0XFx0ZGVwZW5kcyBvbiBORVRcXG4gIDEwOlxcdFxcdHNlbGVjdCBXSVJFTEVTU1xcbiAgMTE6XFx0XFx0ZGVmYXVsdCB5XFxuICAxMjpcXHRcXHRoZWxwXFxuICAxMzpcXHRcXHQgIFRoaXMgc2VjdGlvbiBjb250YWlucyBhbGwgdGhlIHByZSA4MDIuMTEgYW5kIDgwMi4xMSB3aXJlbGVzc1xcbiAgMTQ6XFx0XFx0ICBkZXZpY2UgZHJpdmVycy4gRm9yIGEgY29tcGxldGUgbGlzdCBvZiBkcml2ZXJzIGFuZCBkb2N1bWVudGF0aW9uXFxuICAxNTpcXHRcXHQgIG9uIHRoZW0gcmVmZXIgdG8gdGhlIHdpcmVsZXNzIHdpa2k6XFxuICAxNjpcXHRcXG4gIDE3OlxcdFxcdCAgaHR0cHM6Ly93aXJlbGVzcy53aWtpLmtlcm5lbC5vcmcvZW4vdXNlcnMvRHJpdmVyc1xcbiAgMTg6XFx0XFxuICAxOTpcXHRpZiBXTEFOXFxuICAyMDpcXHRcXG4gIDIxOlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYWRtdGVrL0tjb25maWdcXFwiXFxuICAyMjpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9LY29uZmlnXFxcIlxcbiAgMjM6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdG1lbC9LY29uZmlnXFxcIlxcbiAgMjQ6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9LY29uZmlnXFxcIlxcbiAgMjU6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9LY29uZmlnXFxcIlxcbiAgMjY6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9LY29uZmlnXFxcIlxcbiAgMjc6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWdcXFwiXFxuICAyODpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL0tjb25maWdcXFwiXFxuICAyOTpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC9LY29uZmlnXFxcIlxcbiAgMzA6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL0tjb25maWdcXFwiXFxuICAzMTpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9LY29uZmlnXFxcIlxcbiAgMzI6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9wdXJlbGlmaS9LY29uZmlnXFxcIlxcbiAgMzM6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvS2NvbmZpZ1xcXCJcXG4gIDM0OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9LY29uZmlnXFxcIlxcbiAgMzU6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZ1xcXCJcXG4gIDM2OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL0tjb25maWdcXFwiXFxuICAzNzpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3N0L0tjb25maWdcXFwiXFxuICAzODpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3RpL0tjb25maWdcXFwiXFxuICAzOTpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL0tjb25maWdcXFwiXFxuICA0MDpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3F1YW50ZW5uYS9LY29uZmlnXFxcIlxcbiAgNDE6XFx0XFxuICA0MjpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZ1xcXCJcXG4gIDQzOlxcdFxcbiAgNDQ6XFx0ZW5kaWYgIyBXTEFOXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDAzOjA2OjQ4LjExMzU3ODczNloiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzEyMjk3MDg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKldpcmVsZXNzIERyaXZlciBMYW5kc2NhcGUgLSBBIFF1aWNrIE1lbnRhbCBBdWRpdCoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCB0aGUgd2lyZWxlc3MgZHJpdmVyIHNpdHVhdGlvbi4gSSBuZWVkIHRvIGdldCBhIGdyaXAgb24gdGhlIGtleSBwbGF5ZXJzIGhlcmUuIFJpZ2h0IG5vdywgSSdtIG1lbnRhbGx5IHBhcnNpbmcgdGhlIG9idmlvdXMgb25lczogYFdMQU5gIGlzIHRoZSB1bWJyZWxsYSB0ZXJtLCBvZiBjb3Vyc2UuIFRoZW4sIEkgaGF2ZSBgV0xBTl9WRU5ET1JfTUFSVkVMTGAgaW4gbWluZCwgZ2l2ZW4gc29tZSByZWNlbnQgd29yay4gSSBuZWVkIHRvIGtlZXAgdGhvc2UgTWFydmVsbCBkcml2ZXJzIGluIG1pbmQsIGFzIEkga25vdyB0aGF0IGBNV0lGSUVYYCBhbmQgYE1XSUZJRVhfVVNCYCBhcmUgTWFydmVsbCBzcGVjaWZpYy4gSSBzaG91bGQgbWFrZSBzdXJlIEkgaGF2ZSB0aGUgY29udGV4dCBoZXJlLlxuXG5BbmQsIG9mIGNvdXJzZSwgdGhlcmUncyB0aGUgYnJvYWRlciBhcmNoaXRlY3R1cmFsIGNvbnRleHQ6IGBNQUM4MDIxMWAgYW5kIGBDRkc4MDIxMWAgLSB0aG9zZSBjb3JlIHdpcmVsZXNzIG5ldHdvcmsgc3RhY2sgY29tcG9uZW50cyBhcmUgYWx3YXlzIHRvcCBvZiBtaW5kLiBCdXQgYmVmb3JlIEkgZGl2ZSBpbnRvIGFueXRoaW5nIGZ1cnRoZXIsIGl04oCZcyBiZXN0IHRvIHRha2UgYSBtb21lbnQgYW5kIGp1c3QgcmUtY29uZmlybSB0aGUgZGVwZW5kZW5jaWVzIGZvciBgTVdJRklFWGAsIHRvIG1ha2Ugc3VyZSBldmVyeXRoaW5nIGxpbmVzIHVwIGFzIGV4cGVjdGVkLiBJIG5lZWQgdG8gYmUgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM2OTcsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDAzOjA2OjUzLjgyNTg3OTUzWiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzkxNDA1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTVdJRklFWFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6Mjpjb25maWcgTVdJRklFWFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgV2lGaS1FeCBEcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0xMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzoxMjpjb25maWcgTVdJRklFWF9TRElPXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMTMtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFNEODc4Ni9TRDg3ODcvU0Q4Nzk3L1NEODg4Ny9TRDg4OTcvU0Q4OTc3L1NEODk3OC9TRDg5ODcvU0Q4OTk3XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6MjU6Y29uZmlnIE1XSUZJRVhfUENJRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTI2LVxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBQQ0lFIDg3NjYvODg5Ny84OTk3XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6Mzc6Y29uZmlnIE1XSUZJRVhfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzgtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFVTQjg3NjYvODc5Ny84OTk3XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwMzowNjo1My44ODM3OTc3NzhaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMyNjk4MTIyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKkFzc2Vzc2luZyBEZXBlbmRlbmNpZXMgZm9yIE1XSUZJRVgqKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBCZWZvcmUgSSBwcm9jZWVkIGFueSBmdXJ0aGVyLCBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBzb21ldGhpbmcuIEknbSBzdG9wcGluZyB0byBleHBsaWNpdGx5IGlkZW50aWZ5IHRoZSBkZXBlbmRlbmNpZXMgb2YgYE1XSUZJRVhgLiBJIGtub3cgdGhpcyBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIGhvdyBpdCBmaXRzIGludG8gdGhlIG92ZXJhbGwgc3lzdGVtIGFuZCBob3cgY2hhbmdlcyB0byBpdCBtaWdodCBpbXBhY3Qgb3RoZXIgbW9kdWxlcy4gR3Jhc3BpbmcgdGhlIFwiZGVwZW5kcyBvblwiIHJlbGF0aW9uc2hpcHMgaXMgY3JpdGljYWwgdG8gYXZvaWQgaW50cm9kdWNpbmcgcmVncmVzc2lvbnMgb3IgdW5leHBlY3RlZCBiZWhhdmlvcnMgbGF0ZXIgb24uIFNvLCBiZWZvcmUgSSBkbyBhbnl0aGluZyBlbHNlLCBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIGV4YWN0IGRlcGVuZGVuY2llcyBvZiBgTVdJRklFWGAuIEknbGwgZGVsdmUgaW50byB0aGUgbmVjZXNzYXJ5IGRvY3VtZW50YXRpb24sIGNvbmZpZ3VyYXRpb24gZmlsZXMsIG9yIGJ1aWxkIHN5c3RlbXMgdG8gZGV0ZXJtaW5lIHdoYXQgb3RoZXIgY29tcG9uZW50cyBvciBsaWJyYXJpZXMgdGhpcyBtb2R1bGUgcmVsaWVzIG9uLiBUaGlzIGlzIGVzc2VudGlhbCBmb3IgYSBjb21wbGV0ZSB1bmRlcnN0YW5kaW5nIG9mIGl0cyBmdW5jdGlvbmFsaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDQzNywiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDAzOjA2OjU3LjIxMDc4MTQ2OVoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODI5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIE1XSUZJRVhcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyXFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxcbiAgIDU6XFx0XFx0aGVscFxcbiAgIDY6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTWFydmVsbFxcbiAgIDc6XFx0XFx0ICA4MDIuMTFuL2FjIGNoaXBzZXRzLlxcbiAgIDg6XFx0XFxuICAgOTpcXHRcXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXFxuICAxMDpcXHRcXHQgIG13aWZpZXguXFxuICAxMTpcXHRcXG4gIDEyOlxcdGNvbmZpZyBNV0lGSUVYX1NESU9cXG4gIDEzOlxcdFxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBTRDg3ODYvU0Q4Nzg3L1NEODc5Ny9TRDg4ODcvU0Q4ODk3L1NEODk3Ny9TRDg5NzgvU0Q4OTg3L1NEODk5N1xcXCJcXG4gIDE0OlxcdFxcdGRlcGVuZHMgb24gTVdJRklFWCBcXHUwMDI2XFx1MDAyNiBNTUNcXG4gIDE1OlxcdFxcdHNlbGVjdCBGV19MT0FERVJcXG4gIDE2OlxcdFxcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxcbiAgMTc6XFx0XFx0aGVscFxcbiAgMTg6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTWFydmVsbFxcbiAgMTk6XFx0XFx0ICA4Nzg2Lzg3ODcvODc5Ny84ODg3Lzg4OTcvODk3Ny84OTc4Lzg5ODcvODk5NyBjaGlwc2V0cyB3aXRoXFxuICAyMDpcXHRcXHQgIFNESU8gaW50ZXJmYWNlLiBTRDg5NzggaXMgYWxzbyBrbm93biBhcyBOWFAgSVc0MTYuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDAzOjA2OjU3LjIxMDg0MDg4OVoiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3OTc4MjIwODg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBNYXJ2ZWxsIFdpRmkgRHJpdmVyIE1vZGlmaWNhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBNYXJ2ZWxsIFdpRmkgZHJpdmVyLiBGaXJzdCB0aGluZ3MgZmlyc3QsIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIHN5bWJvbHMgYXJlIGNsZWFybHkgcmVsYXRlZCB0byBgQ0ZHODAyMTFgLCB3aGljaCB0aGlzIGRyaXZlciBkZXBlbmRzIG9uLiAgYE1XSUZJRVhfVVNCYCBhbHNvIGNvbWVzIGludG8gcGxheSwgd2hpY2ggaW4gdHVybiBkZXBlbmRzIG9uIGJvdGggYE1XSUZJRVhgIGFuZCBgVVNCYC4gIFRoZXJlZm9yZSwgYENGRzgwMjExYCwgYFdMQU5gLCBgV0xBTl9WRU5ET1JfTUFSVkVMTGAsIGBNV0lGSUVYYCwgYE1XSUZJRVhfVVNCYCwgYW5kIGBVU0JgIGFyZSBhbGwgY3J1Y2lhbCBmb3IgY29udGV4dCBoZXJlLlxuXG5Ob3csIGxldCdzIHpvb20gaW4gb24gdGhlIGNvcmUgb2YgdGhlIGNoYW5nZSDigJMgdGhlIGBtd2lmaWV4X3Byb2Nlc3NfbWdtdF9wYWNrZXRgIGZ1bmN0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY2FsbCBncmFwaC4gQWgsIHJpZ2h0LCBpdCdzIGNhbGxlZCBmcm9tIGJvdGggYG13aWZpZXhfcHJvY2Vzc19zdGFfcnhfcGFja2V0YCBhbmQgYG13aWZpZXhfcHJvY2Vzc191YXBfcnhfcGFja2V0YCwgd2hpY2ggYXJlIHRoZW1zZWx2ZXMgY2FsbGVkIGZyb20gYG13aWZpZXhfaGFuZGxlX3J4X3BhY2tldGAuIFRoYXQgbmFycm93cyBkb3duIHRoZSBrZXkgZm9jdXMgc3ltYm9sczogYG13aWZpZXhfcHJvY2Vzc19tZ210X3BhY2tldGAsIGBtd2lmaWV4X3Byb2Nlc3Nfc3RhX3J4X3BhY2tldGAsIGBtd2lmaWV4X3Byb2Nlc3NfdWFwX3J4X3BhY2tldGAsIGFuZCBgbXdpZmlleF9oYW5kbGVfcnhfcGFja2V0YC5cblxuSSdtIHZlcmlmeWluZyB0aGF0IGBtd2lmaWV4X3Byb2Nlc3NfbWdtdF9wYWNrZXRgIGlzIHRoZSBiZXN0IGVudHJ5IHBvaW50IGZvciBmdXJ0aGVyIGludmVzdGlnYXRpb24uIFllcywgaXQncyBub24tc3RhdGljIGFuZCBkaXJlY3RseSBjYWxscyB0aGUgbW9kaWZpZWQgZnVuY3Rpb24sIGBtd2lmaWV4X3BhcnNlX21nbXRfcGFja2V0YC4gVGhlIHBhdGNoIGludHJvZHVjZXMgYm91bmRzIGNoZWNraW5nIGluIGBtd2lmaWV4X3BhcnNlX21nbXRfcGFja2V0YCwgd2hpY2ggaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkIHZ1bG5lcmFiaWxpdHkuIEdpdmVuIHRoYXQgdGhpcyBpcyByZWFjaGFibGUgdmlhIFVTQiBkdW1teV9oY2QsIEknbSBjb25maWRlbnQgaW4gbWFya2luZyBpdCBhcyBgV29ydGhGdXp6aW5nPXRydWVgLlxuXG5KdXN0IGEgZmluYWwgY2hlY2sgdG8gZW5zdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmc6IGBDRkc4MDIxMWAgYWxzbyBkZXBlbmRzIG9uIGBORVRgIGFuZCBgVVNCYCBkZXBlbmRzIG9uIGBVU0JfU1VQUE9SVGAsIGJ1dCBJIHRoaW5rIEkndmUgZ290IGEgaGFuZGxlIG9uIHRoZSBrZXkgcGllY2VzIGZvciBhbmFseXNpcy5cbkFscmlnaHQsIHRoYXQncyB0aGUgYXNzZXNzbWVudC4gVGltZSB0byByZWNvcmQgdGhlIGZpbmRpbmdzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTA0MSwiT3V0cHV0VG9rZW5zIjoyMDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNzUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwMzowNzowNS4xODkwNjM3MDhaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDI0NDMyOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiV0xBTlwiLFxuICAgIFwiV0xBTl9WRU5ET1JfTUFSVkVMTFwiLFxuICAgIFwiTVdJRklFWFwiLFxuICAgIFwiTVdJRklFWF9VU0JcIixcbiAgICBcIkNGRzgwMjExXCIsXG4gICAgXCJVU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtd2lmaWV4X3Byb2Nlc3NfbWdtdF9wYWNrZXRcIixcbiAgICBcIm13aWZpZXhfcHJvY2Vzc19zdGFfcnhfcGFja2V0XCIsXG4gICAgXCJtd2lmaWV4X3Byb2Nlc3NfdWFwX3J4X3BhY2tldFwiLFxuICAgIFwibXdpZmlleF9oYW5kbGVfcnhfcGFja2V0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gYG13aWZpZXhfcGFyc2VfbWdtdF9wYWNrZXRgIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyB3aGVuIHBhcnNpbmcgbWFuYWdlbWVudCBwYWNrZXRzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIE1hcnZlbGwgV2lGaS1FeCBkcml2ZXIuIFRoZSBkcml2ZXIgc3VwcG9ydHMgVVNCIGludGVyZmFjZXMgKGBNV0lGSUVYX1VTQmApLCB3aGljaCBjYW4gYmUgZnV6emVkIHVzaW5nIFVTQiBkdW1teV9oY2QuIFRoZSBtb2RpZmllZCBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIHRoZSBtYWluIFJYIHByb2Nlc3NpbmcgcGF0aC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJXTEFOXCIsXG4gICAgXCJXTEFOX1ZFTkRPUl9NQVJWRUxMXCIsXG4gICAgXCJNV0lGSUVYXCIsXG4gICAgXCJNV0lGSUVYX1VTQlwiLFxuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIlVTQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm13aWZpZXhfcHJvY2Vzc19tZ210X3BhY2tldFwiLFxuICAgIFwibXdpZmlleF9wcm9jZXNzX3N0YV9yeF9wYWNrZXRcIixcbiAgICBcIm13aWZpZXhfcHJvY2Vzc191YXBfcnhfcGFja2V0XCIsXG4gICAgXCJtd2lmaWV4X2hhbmRsZV9yeF9wYWNrZXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byBgbXdpZmlleF9wYXJzZV9tZ210X3BhY2tldGAgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzIHdoZW4gcGFyc2luZyBtYW5hZ2VtZW50IHBhY2tldHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgTWFydmVsbCBXaUZpLUV4IGRyaXZlci4gVGhlIGRyaXZlciBzdXBwb3J0cyBVU0IgaW50ZXJmYWNlcyAoYE1XSUZJRVhfVVNCYCksIHdoaWNoIGNhbiBiZSBmdXp6ZWQgdXNpbmcgVVNCIGR1bW15X2hjZC4gVGhlIG1vZGlmaWVkIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB2aWEgdGhlIG1haW4gUlggcHJvY2Vzc2luZyBwYXRoLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowhxlfp[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-25 02:24:08 +0000 UTC FinishedAt: 2026-07-25 03:07:07 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "90883c513ca01e77c56b8d94be7de11420c1dacf", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "WLAN", "WLAN_VENDOR_MARVELL", "MWIFIEX", "MWIFIEX_USB", "CFG80211", "USB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "90883c513ca01e77c56b8d94be7de11420c1dacf", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "WLAN", "WLAN_VENDOR_MARVELL", "MWIFIEX", "MWIFIEX_USB", "CFG80211", "USB" ], "series_id": "e538d511-b63e-4870-8c0b-e768124f54f1" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mwifiex_process_mgmt_packet", "mwifiex_process_sta_rx_packet", "mwifiex_process_uap_rx_packet", "mwifiex_handle_rx_packet" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI1IDAzOjA1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1dMQU4mIzM0OywKICAgICYjMzQ7V0xBTl9WRU5ET1JfTUFSVkVMTCYjMzQ7LAogICAgJiMzNDtNV0lGSUVYJiMzNDssCiAgICAmIzM0O01XSUZJRVhfVVNCJiMzNDssCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O213aWZpZXhfcHJvY2Vzc19tZ210X3BhY2tldCYjMzQ7LAogICAgJiMzNDttd2lmaWV4X3Byb2Nlc3Nfc3RhX3J4X3BhY2tldCYjMzQ7LAogICAgJiMzNDttd2lmaWV4X3Byb2Nlc3NfdWFwX3J4X3BhY2tldCYjMzQ7LAogICAgJiMzNDttd2lmaWV4X2hhbmRsZV9yeF9wYWNrZXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gYG13aWZpZXhfcGFyc2VfbWdtdF9wYWNrZXRgIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyB3aGVuIHBhcnNpbmcgbWFuYWdlbWVudCBwYWNrZXRzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIE1hcnZlbGwgV2lGaS1FeCBkcml2ZXIuIFRoZSBkcml2ZXIgc3VwcG9ydHMgVVNCIGludGVyZmFjZXMgKGBNV0lGSUVYX1VTQmApLCB3aGljaCBjYW4gYmUgZnV6emVkIHVzaW5nIFVTQiBkdW1teV9oY2QuIFRoZSBtb2RpZmllZCBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIHRoZSBtYWluIFJYIHByb2Nlc3NpbmcgcGF0aC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwMzowNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDY1MWFiNWQ0ZWRkYTA3NmZhNDlkMTBhMGE5MWJhZDcxMDk4ZWUwNzdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAyNSAwMzowNTo1OCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuY1xuaW5kZXggN2QzNjMxZDIxMjIzNmMuLmU1NGE4NmVjYWEzM2FmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuY1xuQEAgLTMxNyw5ICYjNDM7MzE3LDE1IEBAIG13aWZpZXhfcGFyc2VfbWdtdF9wYWNrZXQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgdTggKnBheWxvYWQsIHUxNiBsZW4sXG4gXG4gXHRzd2l0Y2ggKHN0eXBlKSB7XG4gXHRjYXNlIElFRUU4MDIxMV9TVFlQRV9BQ1RJT046XG4mIzQzO1x0XHRpZiAobGVuIFx1MDAzYyBJRUVFODAyMTFfTUlOX0FDVElPTl9TSVpFKGNhdGVnb3J5KSAmIzQzOyBFVEhfQUxFTilcbiYjNDM7XHRcdFx0cmV0dXJuIC0xO1xuJiM0MztcbiBcdFx0Y2F0ZWdvcnkgPSAqKHBheWxvYWQgJiM0Mzsgc2l6ZW9mKHN0cnVjdCBpZWVlODAyMTFfaGRyKSk7XG4gXHRcdHN3aXRjaCAoY2F0ZWdvcnkpIHtcbiBcdFx0Y2FzZSBXTEFOX0NBVEVHT1JZX1BVQkxJQzpcbiYjNDM7XHRcdFx0aWYgKGxlbiBcdTAwM2MgSUVFRTgwMjExX01JTl9BQ1RJT05fU0laRShhY3Rpb25fY29kZSkgJiM0MzsgRVRIX0FMRU4pXG4mIzQzO1x0XHRcdFx0cmV0dXJuIC0xO1xuJiM0MztcbiBcdFx0XHRhY3Rpb25fY29kZSA9ICoocGF5bG9hZCAmIzQzOyBzaXplb2Yoc3RydWN0IGllZWU4MDIxMV9oZHIpXG4gXHRcdFx0XHRcdCYjNDM7IDEpO1xuIFx0XHRcdGlmIChhY3Rpb25fY29kZSA9PSBXTEFOX1BVQl9BQ1RJT05fVERMU19ESVNDT1ZFUl9SRVMpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwMzowNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7V0xBTiYjMzQ7LAogICAgJiMzNDtXTEFOX1ZFTkRPUl9NQVJWRUxMJiMzNDssCiAgICAmIzM0O01XSUZJRVgmIzM0OywKICAgICYjMzQ7TVdJRklFWF9VU0ImIzM0OywKICAgICYjMzQ7Q0ZHODAyMTEmIzM0OywKICAgICYjMzQ7VVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXdpZmlleF9wcm9jZXNzX21nbXRfcGFja2V0JiMzNDssCiAgICAmIzM0O213aWZpZXhfcHJvY2Vzc19zdGFfcnhfcGFja2V0JiMzNDssCiAgICAmIzM0O213aWZpZXhfcHJvY2Vzc191YXBfcnhfcGFja2V0JiMzNDssCiAgICAmIzM0O213aWZpZXhfaGFuZGxlX3J4X3BhY2tldCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byBgbXdpZmlleF9wYXJzZV9tZ210X3BhY2tldGAgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzIHdoZW4gcGFyc2luZyBtYW5hZ2VtZW50IHBhY2tldHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgTWFydmVsbCBXaUZpLUV4IGRyaXZlci4gVGhlIGRyaXZlciBzdXBwb3J0cyBVU0IgaW50ZXJmYWNlcyAoYE1XSUZJRVhfVVNCYCksIHdoaWNoIGNhbiBiZSBmdXp6ZWQgdXNpbmcgVVNCIGR1bW15X2hjZC4gVGhlIG1vZGlmaWVkIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB2aWEgdGhlIG1haW4gUlggcHJvY2Vzc2luZyBwYXRoLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNjUxYWI1ZDRlZGRhMDc2ZmE0OWQxMGEwYTkxYmFkNzEwOThlZTA3NwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgSnVsIDI1IDAzOjA1OjU4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmMKaW5kZXggN2QzNjMxZDIxMjIzNmMuLmU1NGE4NmVjYWEzM2FmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmMKQEAgLTMxNyw5ICYjNDM7MzE3LDE1IEBAIG13aWZpZXhfcGFyc2VfbWdtdF9wYWNrZXQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgdTggKnBheWxvYWQsIHUxNiBsZW4sCiAKIAlzd2l0Y2ggKHN0eXBlKSB7CiAJY2FzZSBJRUVFODAyMTFfU1RZUEVfQUNUSU9OOgomIzQzOwkJaWYgKGxlbiAmbHQ7IElFRUU4MDIxMV9NSU5fQUNUSU9OX1NJWkUoY2F0ZWdvcnkpICYjNDM7IEVUSF9BTEVOKQomIzQzOwkJCXJldHVybiAtMTsKJiM0MzsKIAkJY2F0ZWdvcnkgPSAqKHBheWxvYWQgJiM0Mzsgc2l6ZW9mKHN0cnVjdCBpZWVlODAyMTFfaGRyKSk7CiAJCXN3aXRjaCAoY2F0ZWdvcnkpIHsKIAkJY2FzZSBXTEFOX0NBVEVHT1JZX1BVQkxJQzoKJiM0MzsJCQlpZiAobGVuICZsdDsgSUVFRTgwMjExX01JTl9BQ1RJT05fU0laRShhY3Rpb25fY29kZSkgJiM0MzsgRVRIX0FMRU4pCiYjNDM7CQkJCXJldHVybiAtMTsKJiM0MzsKIAkJCWFjdGlvbl9jb2RlID0gKihwYXlsb2FkICYjNDM7IHNpemVvZihzdHJ1Y3QgaWVlZTgwMjExX2hkcikKIAkJCQkJJiM0MzsgMSk7CiAJCQlpZiAoYWN0aW9uX2NvZGUgPT0gV0xBTl9QVUJfQUNUSU9OX1RETFNfRElTQ09WRVJfUkVTKSB7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDAzOjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxOTQKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAxNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUmVhY2hpbmcgVGhhdCBQYXRjaCoqCgpPa2F5LCBzbyB0aGVyZSYjMzk7cyBhIHBhdGNoIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jYC4gQXBwYXJlbnRseSwgaXQmIzM5O3MgYWRkaW5nIHNvbWUgYm91bmRzIGNoZWNraW5nIHRvIGBtd2lmaWV4X3BhcnNlX21nbXRfcGFja2V0YC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7Q2FuIHdlICpnZXQqIHRvIHRoaXMgY29kZT8gSXMgaXQgZXZlbiByZWFjaGFibGUgaW4gYSByZWFsLXdvcmxkIHNjZW5hcmlvPyYjMzQ7IGBtd2lmaWV4YCBpcyB0aGUgTWFydmVsbCBXaUZpIGRyaXZlciwgcmlnaHQ/IFNvLCB0aGUgbmV4dCBxdWVzdGlvbiBpcyBvYnZpb3VzOiBjYW4gd2UgZnV6eiBpdD8KClR5cGljYWxseSwgSSYjMzk7ZCByZWFjaCBmb3Igc29tZXRoaW5nIGxpa2UgYG1hYzgwMjExX2h3c2ltYCBmb3IgV2lGaSBkcml2ZXIgZnV6emluZy4gVGhhdCYjMzk7cyB1c3VhbGx5IHRoZSBnby10by4gQnV0LCBob2xkIG9uIGEgc2Vjb25kLi4uIGBtd2lmaWV4YCBpcyBhICpoYXJkd2FyZSogZHJpdmVyLCBub3QgYSBnZW5lcmljIG9uZS4gVGhhdCBjb21wbGljYXRlcyB0aGluZ3MgYSBsaXR0bGUuCgpBaCwgcmlnaHQhIEkgbmVlZCB0byByZW1lbWJlciB0aGUgYXJjaGl0ZWN0dXJhbCBkZXRhaWxzIG9mIHRoaXMgZHJpdmVyLiBJdCBzdXBwb3J0cyBTRElPLCBQQ0llLCBhbmQgVVNCLiBUaGF0JiMzOTtzIHRoZSBrZXkhIEFuZCB3YWl0IGEgc2Vjb25kLCBVU0IgaXMgaW50ZXJlc3RpbmcsIFVTQiBkcml2ZXJzICpjYW4qIGJlIGZ1enplZCB1c2luZyBVU0IgZ2FkZ2V0L2R1bW15X2hjZCwgYXMgbG9uZyBhcyBpdCBoYXMgYSBVU0IgZHJpdmVyIHRoYXQgaXMhIE9rYXksIEkgbmVlZCB0byBjaGVjayBpZiB0aGVyZSBpcyBhIFVTQiBkcml2ZXIgaW4gdGhpcyBpbXBsZW1lbnRhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwMzowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttd2lmaWV4X3BhcnNlX21nbXRfcGFja2V0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jPTMwOD1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jOjMwOTptd2lmaWV4X3BhcnNlX21nbXRfcGFja2V0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIHU4ICpwYXlsb2FkLCB1MTYgbGVuLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuYy0zMTAtXHRcdFx0ICBzdHJ1Y3QgcnhwZCAqcnhfcGQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuYz00MDU9bXdpZmlleF9wcm9jZXNzX21nbXRfcGFja2V0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuYy00MzQtXHRpZiAoaWVlZTgwMjExX2lzX21nbXQoaWVlZV9oZHItXHUwMDNlZnJhbWVfY29udHJvbCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmM6NDM1Olx0XHRpZiAobXdpZmlleF9wYXJzZV9tZ210X3BhY2tldChwcml2LCAodTggKilpZWVlX2hkcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmMtNDM2LVx0XHRcdFx0XHQgICAgICBwa3RfbGVuLCByeF9wZCkpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDM6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk0NwoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW52ZXN0aWdhdGluZyB0aGUgbXdpZmlleCBEcml2ZXIgTGFuZHNjYXBlKioKCk9rYXksIHNvIEkgbmVlZCB0byBjaGVjayBvdXQgdGhlIHN0YXR1cyBvZiBgbXdpZmlleGAmIzM5O3MgVVNCIGRyaXZlci4gSSYjMzk7bSB3b25kZXJpbmcgaWYgaXQgZXZlbiAqaGFzKiBvbmUuIE15IGltbWVkaWF0ZSBjb25jZXJuIGlzIHdoZXRoZXIgb3Igbm90IHRoZXJlJiMzOTtzIGFueSBzdXBwb3J0LCBhbmQgaWYgc28sIHdoYXQgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhhdCBzdXBwb3J0IGlzLiBJcyBpdCB1cHN0cmVhbWVkPyBJZiBub3QsIHdoYXQmIzM5O3MgdGhlIHF1YWxpdHkgb2YgdGhlIG91dC1vZi10cmVlIHNvbHV0aW9uLCBpZiBhbnk/IEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSBpZiB0aGVyZSYjMzk7cyBldmVuIGEgdmlhYmxlIFVTQiBwYXRoIGZvciBteSBuZWVkcyBoZXJlLCBvdGhlcndpc2UgSSYjMzk7bSBnb2luZyB0byBuZWVkIHRvIHBpdm90IGFuZCBleHBsb3JlIG90aGVyIGRyaXZlciBvcHRpb25zLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHdoYXQgdGhlIGxhbmRzY2FwZSBsb29rcyBsaWtlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDAzOjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Y29kZXNlYXJjaC1kaXItaW5kZXg8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0RpciYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogWwogICAgJiMzNDsxMWFjLmMmIzM0OywKICAgICYjMzQ7MTFhYy5oJiMzNDssCiAgICAmIzM0OzExaC5jJiMzNDssCiAgICAmIzM0OzExbi5jJiMzNDssCiAgICAmIzM0OzExbi5oJiMzNDssCiAgICAmIzM0OzExbl9hZ2dyLmMmIzM0OywKICAgICYjMzQ7MTFuX2FnZ3IuaCYjMzQ7LAogICAgJiMzNDsxMW5fcnhyZW9yZGVyLmMmIzM0OywKICAgICYjMzQ7MTFuX3J4cmVvcmRlci5oJiMzNDssCiAgICAmIzM0O2NmZzgwMjExLmMmIzM0OywKICAgICYjMzQ7Y2ZnODAyMTEuaCYjMzQ7LAogICAgJiMzNDtjZnAuYyYjMzQ7LAogICAgJiMzNDtjbWRldnQuYyYjMzQ7LAogICAgJiMzNDtkZWJ1Z2ZzLmMmIzM0OywKICAgICYjMzQ7ZGVjbC5oJiMzNDssCiAgICAmIzM0O2V0aHRvb2wuYyYjMzQ7LAogICAgJiMzNDtmdy5oJiMzNDssCiAgICAmIzM0O2llLmMmIzM0OywKICAgICYjMzQ7aW5pdC5jJiMzNDssCiAgICAmIzM0O2lvY3RsLmgmIzM0OywKICAgICYjMzQ7am9pbi5jJiMzNDssCiAgICAmIzM0O21haW4uYyYjMzQ7LAogICAgJiMzNDttYWluLmgmIzM0OywKICAgICYjMzQ7cGNpZS5jJiMzNDssCiAgICAmIzM0O3BjaWUuaCYjMzQ7LAogICAgJiMzNDtwY2llX3F1aXJrcy5jJiMzNDssCiAgICAmIzM0O3BjaWVfcXVpcmtzLmgmIzM0OywKICAgICYjMzQ7c2Nhbi5jJiMzNDssCiAgICAmIzM0O3NkaW8uYyYjMzQ7LAogICAgJiMzNDtzZGlvLmgmIzM0OywKICAgICYjMzQ7c3RhX2NtZC5jJiMzNDssCiAgICAmIzM0O3N0YV9jbWRyZXNwLmMmIzM0OywKICAgICYjMzQ7c3RhX2V2ZW50LmMmIzM0OywKICAgICYjMzQ7c3RhX2lvY3RsLmMmIzM0OywKICAgICYjMzQ7c3RhX3J4LmMmIzM0OywKICAgICYjMzQ7c3RhX3R4LmMmIzM0OywKICAgICYjMzQ7dGRscy5jJiMzNDssCiAgICAmIzM0O3R4cnguYyYjMzQ7LAogICAgJiMzNDt1YXBfY21kLmMmIzM0OywKICAgICYjMzQ7dWFwX2V2ZW50LmMmIzM0OywKICAgICYjMzQ7dWFwX3R4cnguYyYjMzQ7LAogICAgJiMzNDt1c2IuYyYjMzQ7LAogICAgJiMzNDt1c2IuaCYjMzQ7LAogICAgJiMzNDt1dGlsLmMmIzM0OywKICAgICYjMzQ7dXRpbC5oJiMzNDssCiAgICAmIzM0O3dtbS5jJiMzNDssCiAgICAmIzM0O3dtbS5oJiMzNDsKICBdLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBudWxsCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwMzowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTMzCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKlVTQiBGdXp6aW5nIFBvdGVudGlhbCBmb3IgbXdpZmlleCoqCgpBbHJpZ2h0LCBjb25maXJtZWQg4oCTIGB1c2IuY2AgaXMgZGVmaW5pdGVseSBpbiBwbGF5LiBUaGF0JiMzOTtzIGdvb2QgbmV3cy4gSWYgYHVzYi5jYCBpcyB0aGVyZSwgdGhlbiB3ZSBjYW4gbGlrZWx5IGludGVyYWN0IHdpdGggYW5kIGZ1enogYG13aWZpZXhgIG92ZXIgVVNCLCB3aGljaCBvcGVucyB1cCBzb21lIGludGVyZXN0aW5nIGF2ZW51ZXMgZm9yIHZ1bG5lcmFiaWxpdHkgcmVzZWFyY2guIE5vdywgYmVmb3JlIEkgZ2V0IHRvbyBleGNpdGVkLCBsZXQmIzM5O3MganVzdCBxdWlja2x5IGNvbmZpcm0gdGhhdCB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiBhbGxvd3MgZm9yIGl0LiBMZXQmIzM5O3MgZ2V0IHRoZSBLY29uZmlnIGZpbGUgZm9yIGBtd2lmaWV4YCBhbmQgc2VlIHdoYXQmIzM5O3Mgd2hhdC4gTWFrZSBzdXJlIHRoZXJlIGFyZSBubyBibGF0YW50IGJsb2NrZXJzIGluIHRoZSBjb25maWd1cmF0aW9uLiBXZSBuZWVkIHRvIHZlcmlmeSB0aGF0IFVTQiBzdXBwb3J0IGlzIGFjdHVhbGx5IGNvbXBpbGVkIGluIGZvciBgbXdpZmlleGAsIG90aGVyd2lzZSwgd2UmIzM5O3JlIHdhc3Rpbmcgb3VyIHRpbWUuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBlbmFibGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDAzOjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNV0lGSUVYJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6Mjpjb25maWcgTVdJRklFWFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgV2lGaS1FeCBEcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0xMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjEyOmNvbmZpZyBNV0lGSUVYX1NESU9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTEzLVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgU0Q4Nzg2L1NEODc4Ny9TRDg3OTcvU0Q4ODg3L1NEODg5Ny9TRDg5NzcvU0Q4OTc4L1NEODk4Ny9TRDg5OTdcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0yNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjI1OmNvbmZpZyBNV0lGSUVYX1BDSUVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTI2LVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgUENJRSA4NzY2Lzg4OTcvODk5N1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTM2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6Mzc6Y29uZmlnIE1XSUZJRVhfVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0zOC1cdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFVTQjg3NjYvODc5Ny84OTk3XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDM6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDIxNAoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDU3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk5hdmlnYXRpbmcgdGhlIE1XSUZJRVggQ29kZWJhc2UqKgoKT2theSwgc28gSSBuZWVkIHRvIHdvcmsgd2l0aCBgTVdJRklFWGAgYW5kIGBNV0lGSUVYX1VTQmAuIFRoYXQgbXVjaCBpcyBjbGVhci4gTm93LCBsZXQmIzM5O3Mgc2VlLi4uIHJpZ2h0LCBgbXdpZmlleF9wYXJzZV9tZ210X3BhY2tldGAuIEkgcmVtZW1iZXIgdGhhdCBmdW5jdGlvbi4gSXQmIzM5O3MgaW4gYHV0aWwuY2AsIGFzIEkgcmVjYWxsLiBNYWtlcyBzZW5zZSwgaXQmIzM5O3MgYSB1dGlsaXR5IGZ1bmN0aW9uLiBOb3csIHdoZXJlIGlzIGBtd2lmaWV4X3Byb2Nlc3NfbWdtdF9wYWNrZXRgIGFjdHVhbGx5ICpjYWxsZWQqIGZyb20/IEkgbmVlZCB0byB0cmFjZSB0aGUgZmxvdyBvZiBtYW5hZ2VtZW50IHBhY2tldHMgdG8gdW5kZXJzdGFuZCB0aGUgb3ZlcmFsbCBjb250ZXh0LiBUaW1lIHRvIHRyYWNrIGRvd24gdGhlIGNhbGwgc2l0ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDAzOjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O213aWZpZXhfcHJvY2Vzc19tZ210X3BhY2tldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD0xMDY4PXZvaWQgbXdpZmlleF9ob3N0X21sbWVfZGlzY29ubmVjdChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTA3MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTA3MTppbnQgbXdpZmlleF9wcm9jZXNzX21nbXRfcGFja2V0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTEwNzItXHRcdFx0XHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX3J4LmM9MTg5PWludCBtd2lmaWV4X3Byb2Nlc3Nfc3RhX3J4X3BhY2tldChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfcnguYy0yMTgtXHRpZiAocnhfcGt0X3R5cGUgPT0gUEtUX1RZUEVfTUdNVCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9yeC5jOjIxOTpcdFx0cmV0ID0gbXdpZmlleF9wcm9jZXNzX21nbXRfcGFja2V0KHByaXYsIHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX3J4LmMtMjIwLVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfdHhyeC5jPTM3Mz1pbnQgbXdpZmlleF9wcm9jZXNzX3VhcF9yeF9wYWNrZXQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdWFwX3R4cnguYy00MTYtXHRpZiAocnhfcGt0X3R5cGUgPT0gUEtUX1RZUEVfTUdNVCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF90eHJ4LmM6NDE3Olx0XHRyZXQgPSBtd2lmaWV4X3Byb2Nlc3NfbWdtdF9wYWNrZXQocHJpdiwgc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfdHhyeC5jLTQxOC1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jPTQwND1pbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmM6NDA1Om13aWZpZXhfcHJvY2Vzc19tZ210X3BhY2tldChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuYy00MDYtXHRcdFx0ICAgIHN0cnVjdCBza19idWZmICpza2IpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDAzOjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwMzAKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiA2MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSBhbiBleHBlcnQgaW4gdGhpcyBhcmVhOgoKKipEaWdnaW5nIGludG8gdGhlIFBhY2tldCBQcm9jZXNzaW5nIEZsb3cqKgoKQWxyaWdodCwgc28gYG13aWZpZXhfcHJvY2Vzc19zdGFfcnhfcGFja2V0YCBhbmQgYG13aWZpZXhfcHJvY2Vzc191YXBfcnhfcGFja2V0YCBib3RoIGZ1bm5lbCB0aGVpciByZWNlaXZlZCBwYWNrZXQgcHJvY2Vzc2luZyB0aHJvdWdoIGBtd2lmaWV4X3Byb2Nlc3NfbWdtdF9wYWNrZXRgLiBUaGF0JiMzOTtzIGludGVyZXN0aW5nLCBhbmQgcG90ZW50aWFsbHkgYSBnb29kIHBsYWNlIHRvIHN0YXJ0IGlmIEkmIzM5O20gbG9va2luZyBmb3IgYSBjZW50cmFsIHBvaW50IG9mIHBhY2tldCBoYW5kbGluZyBsb2dpYy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRhdGEgZmxvdywgYW5kIHdoZXJlIGl0JiMzOTtzIGJlaW5nIHVzZWQgaXMga2V5LgoKTm93LCBJJiMzOTttIHRoaW5raW5nLCBsZXQmIzM5O3MgZHJpbGwgZG93biBhIGJpdCBkZWVwZXIuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBnb2luZyB0byB0cmFjayBkb3duIGV2ZXJ5IGluc3RhbmNlIG9mIHdoZXJlIGBtd2lmaWV4X3Byb2Nlc3Nfc3RhX3J4X3BhY2tldGAgaXMgYWN0dWFsbHkgY2FsbGVkLiBUaGF0JiMzOTtsbCBnaXZlIG1lIGEgY2xlYXJlciBwaWN0dXJlIG9mIGhvdyBpdCBhbGwgdGllcyB0b2dldGhlciwgYW5kIHdoYXQgdHJpZ2dlcnMgdGhpcyBjcml0aWNhbCBmdW5jdGlvbiB3aXRoaW4gdGhlIG92ZXJhbGwgZHJpdmVyIGFyY2hpdGVjdHVyZS4gS25vd2luZyB0aGUgY2FsbCBzaXRlcyBoZWxwcyBtZSB1bmRlcnN0YW5kIHRoZSBwYWNrZXQmIzM5O3MgcGF0aCBhbmQgY29udGV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDM6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXdpZmlleF9wcm9jZXNzX3N0YV9yeF9wYWNrZXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg9MTEzNz1pbnQgbXdpZmlleF9wcm9jZXNzX3N0YV9jbWRyZXNwKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKiwgdTE2IGNtZHJlc3Bfbm8sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTExMzgtXHRcdFx0XHRzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqcmVzcCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oOjExMzk6aW50IG13aWZpZXhfcHJvY2Vzc19zdGFfcnhfcGFja2V0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTE0MC1cdFx0XHRcdCAgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9yeC5jPTcxPWludCBtd2lmaWV4X3Byb2Nlc3NfcnhfcGFja2V0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9yeC5jLTE4OC0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfcnguYzoxODk6aW50IG13aWZpZXhfcHJvY2Vzc19zdGFfcnhfcGFja2V0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX3J4LmMtMTkwLVx0XHRcdFx0ICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC90eHJ4LmM9MjQ9aW50IG13aWZpZXhfaGFuZGxlX3J4X3BhY2tldChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC90eHJ4LmMtNTUtXHRlbHNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdHhyeC5jOjU2Olx0XHRyZXQgPSBtd2lmaWV4X3Byb2Nlc3Nfc3RhX3J4X3BhY2tldChwcml2LCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3R4cnguYy01Ny1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDM6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTgxMQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgbXkgdGhvdWdodCBwcm9jZXNzIHJlZ2FyZGluZyBgbXdpZmlleF9oYW5kbGVfcnhfcGFja2V0YCwgYXNzdW1pbmcgSSYjMzk7bSBhbiBleHBlcnQgaW4gZW1iZWRkZWQgd2lyZWxlc3MgZHJpdmVyIGRldmVsb3BtZW50OgoKKipJbml0aWFsIFRob3VnaHRzIG9uIFBhY2tldCBIYW5kbGluZyoqCgpBbHJpZ2h0LCBgbXdpZmlleF9oYW5kbGVfcnhfcGFja2V0YC4gVGhhdCYjMzk7cyBhIGNyaXRpY2FsIGZ1bmN0aW9uLCBubyBkb3VidC4gVGhlIGZpcnN0IHRoaW5nIHRoYXQgcG9wcyBpbnRvIG15IGhlYWQgaXMgKndoZXJlKiBpcyB0aGlzIGZ1bmN0aW9uIGJlaW5nIGNhbGxlZCBmcm9tPyBJdCYjMzk7cyB0aGUgY29yZSBvZiBob3cgd2UgcHJvY2VzcyBpbmNvbWluZyBkYXRhLCBzbyBrbm93aW5nIHRoZSBjYWxsaW5nIGNvbnRleHQgaXMgYWJzb2x1dGVseSBrZXkgdG8gdW5kZXJzdGFuZGluZyBpdHMgcHVycG9zZSBhbmQgcG90ZW50aWFsIGJvdHRsZW5lY2tzLiBJcyBpdCBhbiBpbnRlcnJ1cHQgaGFuZGxlciB0cmlnZ2VyZWQgYnkgdGhlIGhhcmR3YXJlLCBhbiBlbnRyeSBwb2ludCBmcm9tIGEgRE1BIGNvbXBsZXRpb24gcm91dGluZSwgb3IgcGVyaGFwcyBhIHRhc2tsZXQgb3Igd29yayBxdWV1ZSBmdW5jdGlvbiByZXNwb25kaW5nIHRvIGEgaGFyZHdhcmUgZXZlbnQ/IFVuZGVyc3RhbmRpbmcgdGhlIGNhbGwgc3RhY2sgaW1tZWRpYXRlbHkgaW5mb3JtcyB0aGUga2luZCBvZiBwZXJmb3JtYW5jZSBhbmQgY29uY3VycmVuY3kgaXNzdWVzIEkgc2hvdWxkIGFudGljaXBhdGUuIEl0IGRpY3RhdGVzIHRoZSBsZXZlbCBvZiBsb2NraW5nIEkgbmVlZCB0byBjb25zaWRlciwgdGhlIHBvdGVudGlhbCBpbnRlcnJ1cHQgbGF0ZW5jeSBjb25jZXJucywgYW5kIHRoZSBvdmVyYWxsIHJlYWwtdGltZSBjb25zdHJhaW50cyBvbiB0aGUgZHJpdmVyLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgcGF0aCB0aGUgUlggcGFja2V0cyBhcmUgdGFraW5nIHRvIGdldCB0byB0aGlzIGhhbmRsZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDAzOjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O213aWZpZXhfaGFuZGxlX3J4X3BhY2tldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYz0xNzQ9c3RhdGljIGludCBtd2lmaWV4X3Byb2Nlc3Nfcngoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jLTIwNC1cdFx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmM6MjA1Olx0XHRcdG13aWZpZXhfaGFuZGxlX3J4X3BhY2tldChhZGFwdGVyLCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy0yMDYtXHRcdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oPTExMDI9dm9pZCBtd2lmaWV4X3Byb2Nlc3NfYXNzb2NfcmVzcChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTEwMzppbnQgbXdpZmlleF9oYW5kbGVfcnhfcGFja2V0KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTExMDQtXHRcdFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jPTE1MjY9c3RhdGljIGludCBtd2lmaWV4X3BjaWVfcHJvY2Vzc19yZWN2X2RhdGEoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jLTE1ODgtXHRcdFx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmM6MTU4OTpcdFx0XHRcdG13aWZpZXhfaGFuZGxlX3J4X3BhY2tldChhZGFwdGVyLCBza2JfZGF0YSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jLTE1OTAtXHRcdFx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmM9MTU5Mz1zdGF0aWMgdm9pZCBtd2lmaWV4X2RlYWdncl9zZGlvX3BrdChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmMtMTYzMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmM6MTYzNDpcdFx0bXdpZmlleF9oYW5kbGVfcnhfcGFja2V0KGFkYXB0ZXIsIHNrYl9kZWFnZ3IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYy0xNjM1LVx0XHRkYXRhICYjNDM7PSBibGtfc2l6ZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jPTE2NDc9c3RhdGljIGludCBtd2lmaWV4X2RlY29kZV9yeF9wYWNrZXQoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jLTE2ODQtXHRcdH0gZWxzZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jOjE2ODU6XHRcdFx0bXdpZmlleF9oYW5kbGVfcnhfcGFja2V0KGFkYXB0ZXIsIHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jLTE2ODYtXHRcdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdHhyeC5jLTIzLSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3R4cnguYzoyNDppbnQgbXdpZmlleF9oYW5kbGVfcnhfcGFja2V0KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdHhyeC5jLTI1LVx0XHRcdCAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdHhyeC5jLTU5LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC90eHJ4LmM6NjA6RVhQT1JUX1NZTUJPTF9HUEwobXdpZmlleF9oYW5kbGVfcnhfcGFja2V0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC90eHJ4LmMtNjEtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDAzOjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY5NzMKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA4MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCioqUmVhY2hpbmcgdGhlIFJ4IFByb2Nlc3NpbmcgTG9vcCB2aWEgVVNCKioKCkkmIzM5O20gZm9jdXNpbmcgb24gdGhlIGBtd2lmaWV4X3Byb2Nlc3NfcnhgIGZ1bmN0aW9uIOKAkyB0aGF0JiMzOTtzIHRoZSBoZWFydCBvZiB0aGUgcmVjZWl2ZSBwcm9jZXNzaW5nLCBhbmQgaXQmIzM5O3MgY2FsbGVkIHdpdGhpbiB0aGUgYG1haW4uY2AgZmlsZS4gUmlnaHQsIHNvIGBtd2lmaWV4X3Byb2Nlc3NfcnhgIGdldHMgY2FsbGVkIGZyb20gYG13aWZpZXhfbWFpbl9wcm9jZXNzYC4gVGhhdCBtYWtlcyBzZW5zZTsgaXQmIzM5O3MgdGhlIG1haW4gbG9vcC4KClRoZSBrZXkgcXVlc3Rpb24gbm93IGlzLCBjYW4gd2UgYWN0dWFsbHkgaGl0IHRoaXMgYG13aWZpZXhfcHJvY2Vzc19yeGAgbG9vcCB2aWEgYSBVU0IgY29ubmVjdGlvbiwgc3BlY2lmaWNhbGx5IHVzaW5nIHRoYXQgZHVtbXlfaGNkIHNldHVwPyBUaGUgYXJjaGl0ZWN0dXJlIHN1Z2dlc3RzIGl0IHNob3VsZCBiZSByZWFjaGFibGUuIEkgbmVlZCB0byBjb25maXJtIHRoaXMuIE15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBjb25uZWN0aW9uIHBhdGggc3BlY2lmaWNhbGx5IGZyb20gdGhlIFVTQiBpbnRlcmZhY2UgdG8gZW5zdXJlIHRoYXQgYG13aWZpZXhfcHJvY2Vzc19yeGAgaXMgYWN0dWFsbHkgaW52b2tlZCB3aGVuIGEgcGFja2V0IGNvbWVzIGluIG92ZXIgVVNCLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwMzowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttd2lmaWV4X3Byb2Nlc3NfcngmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW5fcnhyZW9yZGVyLmM9Njc9c3RhdGljIGludCBtd2lmaWV4XzExbl9kaXNwYXRjaF9wa3Qoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuX3J4cmVvcmRlci5jLTg0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbl9yeHJlb3JkZXIuYzo4NTpcdHJldHVybiBtd2lmaWV4X3Byb2Nlc3NfcnhfcGFja2V0KHByaXYsIHBheWxvYWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbl9yeHJlb3JkZXIuYy04Ni19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYz0xNjM9c3RhdGljIHZvaWQgbXdpZmlleF9xdWV1ZV9yeF93b3JrKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy0xNzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jOjE3NDpzdGF0aWMgaW50IG13aWZpZXhfcHJvY2Vzc19yeChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy0xNzUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmM9MTQwMz1zdGF0aWMgdm9pZCBtd2lmaWV4X3J4X3dvcmtfcXVldWUoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtMTQwOS1cdFx0cmV0dXJuO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYzoxNDEwOlx0bXdpZmlleF9wcm9jZXNzX3J4KGFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy0xNDExLX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oPTExMjc9aW50IG13aWZpZXhfcmV0XzgwMl8xMV9oc19jZmcoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTEyOC1cdFx0XHQgICAgICBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqcmVzcCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oOjExMjk6aW50IG13aWZpZXhfcHJvY2Vzc19yeF9wYWNrZXQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTEzMC1cdFx0XHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX3J4LmM9MjM9bXdpZmlleF9kaXNjYXJkX2dyYXR1aXRvdXNfYXJwKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9yeC5jLTcwLSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9yeC5jOjcxOmludCBtd2lmaWV4X3Byb2Nlc3NfcnhfcGFja2V0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX3J4LmMtNzItXHRcdFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX3J4LmM9MTg5PWludCBtd2lmaWV4X3Byb2Nlc3Nfc3RhX3J4X3BhY2tldChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfcnguYy0yMzMtXHQgICAgIWV0aGVyX2FkZHJfZXF1YWxfdW5hbGlnbmVkKHByaXYtXHUwMDNlY3Vycl9hZGRyLCByeF9wa3RfaGRyLVx1MDAzZWV0aDgwM19oZHIuaF9kZXN0KSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9yeC5jOjIzNDpcdFx0bXdpZmlleF9wcm9jZXNzX3J4X3BhY2tldChwcml2LCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9yeC5jLTIzNS1cdFx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdWFwX3R4cnguYz0yMzI9aW50IG13aWZpZXhfaGFuZGxlX3VhcF9yeF9mb3J3YXJkKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF90eHJ4LmMtMjczLVx0LyogRm9yd2FyZCB1bmljYXQvSW50ZXItQlNTIHBhY2tldHMgdG8ga2VybmVsLiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF90eHJ4LmM6Mjc0Olx0cmV0dXJuIG13aWZpZXhfcHJvY2Vzc19yeF9wYWNrZXQocHJpdiwgc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfdHhyeC5jLTI3NS19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDAzOjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgzNTYKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC4KCioqQW5hbHl6aW5nIHRoZSBEYXRhIEZsb3cgb2YgYG13aWZpZXhfcHJvY2Vzc19yeGAqKgoKUmlnaHQsIHNvIGBtd2lmaWV4X3Byb2Nlc3NfcnhgLi4uIHRoYXQmIzM5O3MgdGhlIGZ1bmN0aW9uIHRoYXQgaGFuZGxlcyBpbmNvbWluZyBSWCBwYWNrZXRzLCBpc24mIzM5O3QgaXQ/IEFuZCBJJiMzOTttIHNlZWluZyB0aGF0IGl0JiMzOTtzIGJlaW5nIGNhbGxlZCBmcm9tIGBtd2lmaWV4X3J4X3dvcmtfcXVldWVgLiBPa2F5LCBzbyB0aGF0JiMzOTtzIGEgd29ya3F1ZXVlLiBTdGFuZGFyZCBzdHVmZiwgdXNpbmcgdGhlIGtlcm5lbCYjMzk7cyBtZWNoYW5pc20gZm9yIGRlZmVycmVkIHByb2Nlc3NpbmcuIEJ1dCBob2xkIG9uLi4uIHdoZXJlICpleGFjdGx5KiBkb2VzIGBtd2lmaWV4X3F1ZXVlX3J4X3dvcmtgIGdldCBpbnZva2VkPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29tcGxldGUgY2FsbCBncmFwaCB0byBwcm9wZXJseSBhc3Nlc3MgYW55IHBvdGVudGlhbCBjb25jdXJyZW5jeSBpc3N1ZXMgb3IgYm90dGxlbmVja3MuIEtub3dpbmcgdGhlIHVwc3RyZWFtIGNhbGxlciBvZiBgbXdpZmlleF9xdWV1ZV9yeF93b3JrYCBpcyBjcml0aWNhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBkYXRhIGZsb3cgYW5kIGhvdyBxdWlja2x5IHRob3NlIFJYIHBhY2tldHMgYXJlIHByb2Nlc3NlZC4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSB0aGF0IHdvcmtxdWV1ZSB0byBmaW5kIHRoZSBzb3VyY2UuIFRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgaW50ZXJhY3Rpb24gd2l0aCB0aGUgbmV0d29yayBjYXJkIGl0c2VsZiBtdXN0IGJlLiBHb3R0YSBkaWcgZGVlcGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwMzowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttd2lmaWV4X3F1ZXVlX3J4X3dvcmsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmM9MTYxPUVYUE9SVF9TWU1CT0xfR1BMKG13aWZpZXhfcXVldWVfbWFpbl93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtMTYyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYzoxNjM6c3RhdGljIHZvaWQgbXdpZmlleF9xdWV1ZV9yeF93b3JrKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jLTE2NC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYz0yNDg9aW50IG13aWZpZXhfbWFpbl9wcm9jZXNzKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy0yNzgtXHRcdFx0YWRhcHRlci1cdTAwM2VkZWxheV9tYWluX3dvcmsgPSB0cnVlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYzoyNzk6XHRcdFx0bXdpZmlleF9xdWV1ZV9yeF93b3JrKGFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy0yODAtXHRcdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy0yOTEtXHRcdGlmIChhZGFwdGVyLVx1MDAzZXJ4X3dvcmtfZW5hYmxlZCBcdTAwMjZcdTAwMjYgYWRhcHRlci1cdTAwM2VkYXRhX3JlY2VpdmVkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYzoyOTI6XHRcdFx0bXdpZmlleF9xdWV1ZV9yeF93b3JrKGFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy0yOTMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDAzOjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkwMjYKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA0OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOgoKKipBbmFseXppbmcgYG13aWZpZXhfbWFpbl9wcm9jZXNzYCBhbmQgTWFuYWdlbWVudCBQYWNrZXQgUGFyc2luZyoqCgpSaWdodCwgYG13aWZpZXhfbWFpbl9wcm9jZXNzYC4uLiB0aGF0JiMzOTtzIHRoZSBtYWluIGxvb3AsIHRoZSBoZWFydCBvZiB0aGUgZHJpdmVyJiMzOTtzIG9wZXJhdGlvbi4gU28sIG9idmlvdXNseSwgaXQmIzM5O3MgcmVhY2hhYmxlOyBpdCAqaGFzKiB0byBiZS4gTm93LCB3aGVyZSBhcmUgd2Ugd2l0aCB0aG9zZSBtYW5hZ2VtZW50IHBhY2tldHM/IExldCYjMzk7cyB6b29tIGluIG9uIGBtd2lmaWV4X3BhcnNlX21nbXRfcGFja2V0YCBpbiBgdXRpbC5jYC4gSSBuZWVkIHRvIHZlcmlmeSBzb21ldGhpbmcgYWJvdXQgdGhlIGRlc2lnbiBoZXJlLiBJcyB0aGlzIGZ1bmN0aW9uIGRlY2xhcmVkIGFzIHN0YXRpYz8gVGhhdCBpbmZvcm1hdGlvbiBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIGl0cyBzY29wZSBhbmQgcG90ZW50aWFsIGltcGFjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDM6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXdpZmlleF9wYXJzZV9tZ210X3BhY2tldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuYz0zMDg9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuYzozMDk6bXdpZmlleF9wYXJzZV9tZ210X3BhY2tldChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCB1OCAqcGF5bG9hZCwgdTE2IGxlbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmMtMzEwLVx0XHRcdCAgc3RydWN0IHJ4cGQgKnJ4X3BkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmM9NDA1PW13aWZpZXhfcHJvY2Vzc19tZ210X3BhY2tldChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmMtNDM0LVx0aWYgKGllZWU4MDIxMV9pc19tZ210KGllZWVfaGRyLVx1MDAzZWZyYW1lX2NvbnRyb2wpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jOjQzNTpcdFx0aWYgKG13aWZpZXhfcGFyc2VfbWdtdF9wYWNrZXQocHJpdiwgKHU4ICopaWVlZV9oZHIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jLTQzNi1cdFx0XHRcdFx0ICAgICAgcGt0X2xlbiwgcnhfcGQpKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwMzowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NTQ5CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqQW5hbHl6aW5nIHRoZSBGdW5jdGlvbiBDYWxsIENoYWluKioKClJpZ2h0LCBzbyBgbXdpZmlleF9wYXJzZV9tZ210X3BhY2tldGAuLi4gdGhhdCYjMzk7cyBkZWZpbml0ZWx5IGEgYHN0YXRpY2AgZnVuY3Rpb24uIEkgcmVtZW1iZXIgdGhhdC4gTm93LCB0aGUga2V5IGlzIHRvIHVuZGVyc3RhbmQgaG93IGl0JiMzOTtzIGJlaW5nIHVzZWQuIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgY2FsbGVkIGJ5IGBtd2lmaWV4X3Byb2Nlc3NfbWdtdF9wYWNrZXRgLiBUaGUgcXVlc3Rpb24gdGhhdCYjMzk7cyBidWdnaW5nIG1lIGlzIHdoZXRoZXIgYG13aWZpZXhfcHJvY2Vzc19tZ210X3BhY2tldGAgaXRzZWxmIGlzIGFuIGV4cG9ydGVkIHN5bWJvbCBvciBpZiBpdCYjMzk7cyBjb25maW5lZCB0byB0aGUgY3VycmVudCBjb21waWxhdGlvbiB1bml0LiBUaGF0IHdpbGwgaW5mb3JtIG15IG5leHQgc3RlcHMgaW4gZGlzc2VjdGluZyBpdHMgbG9naWMuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIEkgY2FuIG9ic2VydmUgdGhlIGV4ZWN1dGlvbiBvZiB0aG9zZSBmdW5jdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDAzOjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O213aWZpZXhfcHJvY2Vzc19tZ210X3BhY2tldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD0xMDY4PXZvaWQgbXdpZmlleF9ob3N0X21sbWVfZGlzY29ubmVjdChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTA3MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTA3MTppbnQgbXdpZmlleF9wcm9jZXNzX21nbXRfcGFja2V0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTEwNzItXHRcdFx0XHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX3J4LmM9MTg5PWludCBtd2lmaWV4X3Byb2Nlc3Nfc3RhX3J4X3BhY2tldChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfcnguYy0yMTgtXHRpZiAocnhfcGt0X3R5cGUgPT0gUEtUX1RZUEVfTUdNVCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9yeC5jOjIxOTpcdFx0cmV0ID0gbXdpZmlleF9wcm9jZXNzX21nbXRfcGFja2V0KHByaXYsIHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX3J4LmMtMjIwLVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfdHhyeC5jPTM3Mz1pbnQgbXdpZmlleF9wcm9jZXNzX3VhcF9yeF9wYWNrZXQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdWFwX3R4cnguYy00MTYtXHRpZiAocnhfcGt0X3R5cGUgPT0gUEtUX1RZUEVfTUdNVCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF90eHJ4LmM6NDE3Olx0XHRyZXQgPSBtd2lmaWV4X3Byb2Nlc3NfbWdtdF9wYWNrZXQocHJpdiwgc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfdHhyeC5jLTQxOC1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jPTQwND1pbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmM6NDA1Om13aWZpZXhfcHJvY2Vzc19tZ210X3BhY2tldChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuYy00MDYtXHRcdFx0ICAgIHN0cnVjdCBza19idWZmICpza2IpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDAzOjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMzg4CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogODI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZvY3VzaW5nIG9uIE1hcnZlbGwgV2lGaS1FeCBEcml2ZXIgU3ltYm9sIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgZnVuY3Rpb25zOiBgbXdpZmlleF9wcm9jZXNzX21nbXRfcGFja2V0YCwgYG13aWZpZXhfcHJvY2Vzc19zdGFfcnhfcGFja2V0YCwgYG13aWZpZXhfcHJvY2Vzc191YXBfcnhfcGFja2V0YCwgYW5kIGBtd2lmaWV4X2hhbmRsZV9yeF9wYWNrZXRgLiBUaGV5JiMzOTtyZSBhbGwgbm9uLXN0YXRpYywgd2hpY2ggbWVhbnMgdGhleSYjMzk7cmUgcG90ZW50aWFsIGVudHJ5IHBvaW50cy4gVGhlIG1vc3QgZGlyZWN0IG9uZSBsb29rcyBsaWtlIGBtd2lmaWV4X3Byb2Nlc3NfbWdtdF9wYWNrZXRgLCBzbyBJJiMzOTtsbCBzdGFydCB3aXRoIHRoYXQuCgpOb3csIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgc3ltYm9scyBhcmUgcmVsZXZhbnQgaGVyZSwgc3BlY2lmaWNhbGx5IGluIHRoZSBjb250ZXh0IG9mIGBNV0lGSUVYX1VTQmAuIExldCYjMzk7cyB0YWtlIGEgbG9vayBhdCB0aGUgS2NvbmZpZyBmaWxlIGZvciB0aGUgTWFydmVsbCBkcml2ZXIuIE9rYXksIHNvIHdlJiMzOTt2ZSBnb3QgYE1XSUZJRVhgLCB3aGljaCBpcyB0aGUgYmFzZSBkcml2ZXIsIGFuZCB0aGVuIHdlIGhhdmUgYE1XSUZJRVhfU0RJT2AsIGBNV0lGSUVYX1BDSUVgLCBhbmQgYE1XSUZJRVhfVVNCYCBmb3IgZGlmZmVyZW50IGludGVyZmFjZXMuIFNpbmNlIHdlJiMzOTtyZSBpbnRlcmVzdGVkIGluIFVTQiwgYE1XSUZJRVhfVVNCYCBpcyBkZWZpbml0ZWx5IG9uZSBvZiB0aGUga2V5IHN5bWJvbHMuIFdlIGFsc28gbmVlZCB0byBlbnN1cmUgd2UgaGF2ZSBgTVdJRklFWGAgZW5hYmxlZCwgd2hpY2ggaXMgdGhlIHBhcmVudCBjb25maWd1cmF0aW9uLgoKSSBzaG91bGQgYWxzbyBtYWtlIHN1cmUgd2UgaGF2ZSB0aGUgcmVxdWlyZWQgZGVwZW5kZW5jaWVzIGZvciBgTVdJRklFWGAuIE9rYXksIGl0IGxvb2tzIGxpa2UgYE1BQzgwMjExYCBpcyBlc3NlbnRpYWwsIGFuZCBzaW5jZSBgTUFDODAyMTFgIHVzdWFsbHkgZGVwZW5kcyBvbiBgQ0ZHODAyMTFgICwgd2UgbXVzdCBlbnN1cmUgYm90aCBhcmUgZW5hYmxlZC4gQW5kIG9mIGNvdXJzZSwgd2UgbmVlZCBgVVNCYC4gTm93IHRoYXQgSSB0aGluayBhYm91dCBpdCwgd2Ugc2hvdWxkIGFsc28gaW5jbHVkZSBgV0xBTmAsIGFzIHRoYXQmIzM5O3Mgb2Z0ZW4gYSBwYXJlbnQgcmVxdWlyZW1lbnQgZm9yIHdpcmVsZXNzIGRyaXZlcnMuCgpUaGVyZWZvcmUsIHRoZSBzeW1ib2xzIG9mIGludGVyZXN0IHNob3VsZCBiZSBgQ0ZHODAyMTFgLCBgTUFDODAyMTFgLCBgVVNCYCwgYE1XSUZJRVhgLCBhbmQgYE1XSUZJRVhfVVNCYCwgcGx1cyBgV0xBTmAuIEdvdCBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDM6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1XSUZJRVgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6Mjpjb25maWcgTVdJRklFWFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgV2lGaS1FeCBEcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0xMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjEyOmNvbmZpZyBNV0lGSUVYX1NESU9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTEzLVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgU0Q4Nzg2L1NEODc4Ny9TRDg3OTcvU0Q4ODg3L1NEODg5Ny9TRDg5NzcvU0Q4OTc4L1NEODk4Ny9TRDg5OTdcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0yNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjI1OmNvbmZpZyBNV0lGSUVYX1BDSUVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTI2LVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgUENJRSA4NzY2Lzg4OTcvODk5N1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTM2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6Mzc6Y29uZmlnIE1XSUZJRVhfVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0zOC1cdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFVTQjg3NjYvODc5Ny84OTk3XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDAzOjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMDgxCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIE1hcnZlbGwgV2lyZWxlc3MgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgdGltZSB0byBnZXQgdG8gd29yay4gRmlyc3QgdGhpbmcmIzM5O3MgZmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgTWFydmVsbCB3aXJlbGVzcyBkcml2ZXIgaXMgY29uZmlndXJlZCB3aXRoaW4gdGhlIGtlcm5lbC4gTGV0JiMzOTtzIHN0YXJ0IGJ5IG5hdmlnYXRpbmcgdG8gdGhlIHJlbGV2YW50IEtjb25maWcgZmlsZS4gSSYjMzk7bSBnb2luZyB0byBsb29rIGF0IGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWdgLiBUaGlzIGZpbGUgd2lsbCBnaXZlIG1lIHRoZSBidWlsZGluZyBibG9ja3MgZm9yIGhvdyB0aGUgZHJpdmVyJiMzOTtzIGZlYXR1cmVzIGFyZSBwcmVzZW50ZWQgZHVyaW5nIGtlcm5lbCBjb25maWd1cmF0aW9uLiBJIGV4cGVjdCB0byBmaW5kIGRlcGVuZGVuY2llcywgZGVmYXVsdCB2YWx1ZXMsIGhlbHAgdGV4dCwgYW5kIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGRpZmZlcmVudCBvcHRpb25zIGFyZSBlbmFibGVkIG9yIGRpc2FibGVkLiBUaGlzIHdpbGwgZ2l2ZSBtZSB0aGUgZm91bmRhdGlvbiBmb3IgYW5hbHl6aW5nIGl0cyBiZWhhdmlvciBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSByZXN0IG9mIHRoZSB3aXJlbGVzcyBzdWJzeXN0ZW0uIFVuZGVyc3RhbmRpbmcgdGhlIEtjb25maWcgaXMgY3JpdGljYWwgZm9yIGFueSBzdWJzZXF1ZW50IGludmVzdGlnYXRpb24gb2YgdGhpcyBkcml2ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDAzOjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBXTEFOX1ZFTkRPUl9NQVJWRUxMXG4gICAzOlx0XHRib29sIFwmIzM0O01hcnZlbGwgZGV2aWNlc1wmIzM0O1xuICAgNDpcdFx0ZGVmYXVsdCB5XG4gICA1Olx0XHRoZWxwXG4gICA2Olx0XHQgIElmIHlvdSBoYXZlIGEgd2lyZWxlc3MgY2FyZCBiZWxvbmdpbmcgdG8gdGhpcyBjbGFzcywgc2F5IFkuXG4gICA3Olx0XG4gICA4Olx0XHQgIE5vdGUgdGhhdCB0aGUgYW5zd2VyIHRvIHRoaXMgcXVlc3Rpb24gZG9lc24mIzM5O3QgZGlyZWN0bHkgYWZmZWN0IHRoZVxuICAgOTpcdFx0ICBrZXJuZWw6IHNheWluZyBOIHdpbGwganVzdCBjYXVzZSB0aGUgY29uZmlndXJhdG9yIHRvIHNraXAgYWxsIHRoZVxuICAxMDpcdFx0ICBxdWVzdGlvbnMgYWJvdXQgdGhlc2UgY2FyZHMuIElmIHlvdSBzYXkgWSwgeW91IHdpbGwgYmUgYXNrZWQgZm9yXG4gIDExOlx0XHQgIHlvdXIgc3BlY2lmaWMgY2FyZCBpbiB0aGUgZm9sbG93aW5nIHF1ZXN0aW9ucy5cbiAgMTI6XHRcbiAgMTM6XHRpZiBXTEFOX1ZFTkRPUl9NQVJWRUxMXG4gIDE0Olx0XG4gIDE1Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbGliZXJ0YXMvS2NvbmZpZ1wmIzM0O1xuICAxNjpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL2xpYmVydGFzX3RmL0tjb25maWdcJiMzNDtcbiAgMTc6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWdcJiMzNDtcbiAgMTg6XHRcbiAgMTk6XHRjb25maWcgTVdMOEtcbiAgMjA6XHRcdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgODhXOHh4eCBQQ0kvUENJZSBXaXJlbGVzcyBzdXBwb3J0XCYjMzQ7XG4gIDIxOlx0XHRkZXBlbmRzIG9uIE1BQzgwMjExIFx1MDAyNlx1MDAyNiBQQ0lcbiAgMjI6XHRcdGhlbHBcbiAgMjM6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgTWFydmVsbCBUT1BET0cgODAyLjExIHdpcmVsZXNzIGNhcmRzLlxuICAyNDpcdFxuICAyNTpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXG4gIDI2Olx0XHQgIHdpbGwgYmUgY2FsbGVkIG13bDhrLiAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgMjc6XHRcbiAgMjg6XHRlbmRpZiAjIFdMQU5fVkVORE9SX01BUlZFTExcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDM6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI3MzIKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqS2NvbmZpZyBEZXBlbmRlbmN5IENoZWNrKioKClJpZ2h0LCBzbyBJIHNlZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgc3BlY2lmaWMgdmVuZG9yLCBNYXJ2ZWxsLCB3aXRoaW4gdGhlIHdpcmVsZXNzIExBTiBzdWJzeXN0ZW0uIFRoZSBpbW1lZGlhdGUgY2x1ZSBpcyBgV0xBTl9WRU5ET1JfTUFSVkVMTGAgYmVpbmcgZmxhZ2dlZC4gQW5kIG9mIGNvdXJzZSwgdGhlIGdlbmVyYWwgYFdMQU5gIHN1cHBvcnQgaXMgaW1wbGllZC4gR290dGEgY29uZmlybSBkZXBlbmRlbmNpZXMgYmVmb3JlIEkgZGlnIGRlZXBlci4KClRpbWUgdG8gaGVhZCBvdmVyIHRvIGBkcml2ZXJzL25ldC93aXJlbGVzcy9LY29uZmlnYC4gVGhhdCYjMzk7cyB3aGVyZSBhbGwgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIHdpcmVsZXNzIGRyaXZlcnMgcmVzaWRlLiBHb3R0YSBzdGFydCB0aGVyZSBhbmQgdHJhY2UgdGhlIEtjb25maWcgaGllcmFyY2h5LiBTZWUgaG93IGBXTEFOX1ZFTkRPUl9NQVJWRUxMYCBpcyBkZWZpbmVkLCB3aGF0IGl0cyBkZXBlbmRlbmNpZXMgYXJlLCBhbmQgd2hhdCBvdGhlciBvcHRpb25zIG1pZ2h0IGJlIGNvbnRpbmdlbnQgb24gaXQuIFRoaXMgaXMgd2hlcmUgSSYjMzk7bGwgZmluZCB3aGF0IG5lZWRzIHRvIGJlIGVuYWJsZWQgb3IgdmVyaWZpZWQuIEkgZXhwZWN0IHRvIGZpbmQgYFdMQU5gIGFzIGFuICppbW1lZGlhdGUqIGRlcGVuZGVuY3ksIGJ1dCB0aGVyZSBtaWdodCBiZSBvdGhlciBrZXJuZWwgZmVhdHVyZSBkZXBlbmRlbmNpZXMgb3IgZGV2aWNlLXNwZWNpZmljIHJlcXVpcmVtZW50cyBJIG5lZWQgdG8gYWNjb3VudCBmb3IgYXMgd2VsbC4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoYXQgS2NvbmZpZyBmaWxlIHJldmVhbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDAzOjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHQjXG4gICAzOlx0IyBXaXJlbGVzcyBMQU4gZGV2aWNlIGNvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0bWVudWNvbmZpZyBXTEFOXG4gICA3Olx0XHRib29sIFwmIzM0O1dpcmVsZXNzIExBTlwmIzM0O1xuICAgODpcdFx0ZGVwZW5kcyBvbiAhUzM5MFxuICAgOTpcdFx0ZGVwZW5kcyBvbiBORVRcbiAgMTA6XHRcdHNlbGVjdCBXSVJFTEVTU1xuICAxMTpcdFx0ZGVmYXVsdCB5XG4gIDEyOlx0XHRoZWxwXG4gIDEzOlx0XHQgIFRoaXMgc2VjdGlvbiBjb250YWlucyBhbGwgdGhlIHByZSA4MDIuMTEgYW5kIDgwMi4xMSB3aXJlbGVzc1xuICAxNDpcdFx0ICBkZXZpY2UgZHJpdmVycy4gRm9yIGEgY29tcGxldGUgbGlzdCBvZiBkcml2ZXJzIGFuZCBkb2N1bWVudGF0aW9uXG4gIDE1Olx0XHQgIG9uIHRoZW0gcmVmZXIgdG8gdGhlIHdpcmVsZXNzIHdpa2k6XG4gIDE2Olx0XG4gIDE3Olx0XHQgIGh0dHBzOi8vd2lyZWxlc3Mud2lraS5rZXJuZWwub3JnL2VuL3VzZXJzL0RyaXZlcnNcbiAgMTg6XHRcbiAgMTk6XHRpZiBXTEFOXG4gIDIwOlx0XG4gIDIxOlx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2FkbXRlay9LY29uZmlnXCYjMzQ7XG4gIDIyOlx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9LY29uZmlnXCYjMzQ7XG4gIDIzOlx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0bWVsL0tjb25maWdcJiMzNDtcbiAgMjQ6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vS2NvbmZpZ1wmIzM0O1xuICAyNTpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9LY29uZmlnXCYjMzQ7XG4gIDI2Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL0tjb25maWdcJiMzNDtcbiAgMjc6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnXCYjMzQ7XG4gIDI4Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL0tjb25maWdcJiMzNDtcbiAgMjk6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL0tjb25maWdcJiMzNDtcbiAgMzA6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9LY29uZmlnXCYjMzQ7XG4gIDMxOlx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9LY29uZmlnXCYjMzQ7XG4gIDMyOlx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3B1cmVsaWZpL0tjb25maWdcJiMzNDtcbiAgMzM6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL0tjb25maWdcJiMzNDtcbiAgMzQ6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9LY29uZmlnXCYjMzQ7XG4gIDM1Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnXCYjMzQ7XG4gIDM2Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy9LY29uZmlnXCYjMzQ7XG4gIDM3Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3N0L0tjb25maWdcJiMzNDtcbiAgMzg6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvdGkvS2NvbmZpZ1wmIzM0O1xuICAzOTpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy9LY29uZmlnXCYjMzQ7XG4gIDQwOlx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3F1YW50ZW5uYS9LY29uZmlnXCYjMzQ7XG4gIDQxOlx0XG4gIDQyOlx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZ1wmIzM0O1xuICA0MzpcdFxuICA0NDpcdGVuZGlmICMgV0xBTlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwMzowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzY5NwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDYwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldpcmVsZXNzIERyaXZlciBMYW5kc2NhcGUgLSBBIFF1aWNrIE1lbnRhbCBBdWRpdCoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSB3aXJlbGVzcyBkcml2ZXIgc2l0dWF0aW9uLiBJIG5lZWQgdG8gZ2V0IGEgZ3JpcCBvbiB0aGUga2V5IHBsYXllcnMgaGVyZS4gUmlnaHQgbm93LCBJJiMzOTttIG1lbnRhbGx5IHBhcnNpbmcgdGhlIG9idmlvdXMgb25lczogYFdMQU5gIGlzIHRoZSB1bWJyZWxsYSB0ZXJtLCBvZiBjb3Vyc2UuIFRoZW4sIEkgaGF2ZSBgV0xBTl9WRU5ET1JfTUFSVkVMTGAgaW4gbWluZCwgZ2l2ZW4gc29tZSByZWNlbnQgd29yay4gSSBuZWVkIHRvIGtlZXAgdGhvc2UgTWFydmVsbCBkcml2ZXJzIGluIG1pbmQsIGFzIEkga25vdyB0aGF0IGBNV0lGSUVYYCBhbmQgYE1XSUZJRVhfVVNCYCBhcmUgTWFydmVsbCBzcGVjaWZpYy4gSSBzaG91bGQgbWFrZSBzdXJlIEkgaGF2ZSB0aGUgY29udGV4dCBoZXJlLgoKQW5kLCBvZiBjb3Vyc2UsIHRoZXJlJiMzOTtzIHRoZSBicm9hZGVyIGFyY2hpdGVjdHVyYWwgY29udGV4dDogYE1BQzgwMjExYCBhbmQgYENGRzgwMjExYCAtIHRob3NlIGNvcmUgd2lyZWxlc3MgbmV0d29yayBzdGFjayBjb21wb25lbnRzIGFyZSBhbHdheXMgdG9wIG9mIG1pbmQuIEJ1dCBiZWZvcmUgSSBkaXZlIGludG8gYW55dGhpbmcgZnVydGhlciwgaXTigJlzIGJlc3QgdG8gdGFrZSBhIG1vbWVudCBhbmQganVzdCByZS1jb25maXJtIHRoZSBkZXBlbmRlbmNpZXMgZm9yIGBNV0lGSUVYYCwgdG8gbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgbGluZXMgdXAgYXMgZXhwZWN0ZWQuIEkgbmVlZCB0byBiZSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwMzowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTVdJRklFWCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjI6Y29uZmlnIE1XSUZJRVhcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzoxMjpjb25maWcgTVdJRklFWF9TRElPXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0xMy1cdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFNEODc4Ni9TRDg3ODcvU0Q4Nzk3L1NEODg4Ny9TRDg4OTcvU0Q4OTc3L1NEODk3OC9TRDg5ODcvU0Q4OTk3XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzoyNTpjb25maWcgTVdJRklFWF9QQ0lFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0yNi1cdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFBDSUUgODc2Ni84ODk3Lzg5OTdcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0zNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjM3OmNvbmZpZyBNV0lGSUVYX1VTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzgtXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBVU0I4NzY2Lzg3OTcvODk5N1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwMzowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDQzNwoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipBc3Nlc3NpbmcgRGVwZW5kZW5jaWVzIGZvciBNV0lGSUVYKioKCk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEJlZm9yZSBJIHByb2NlZWQgYW55IGZ1cnRoZXIsIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHNvbWV0aGluZy4gSSYjMzk7bSBzdG9wcGluZyB0byBleHBsaWNpdGx5IGlkZW50aWZ5IHRoZSBkZXBlbmRlbmNpZXMgb2YgYE1XSUZJRVhgLiBJIGtub3cgdGhpcyBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIGhvdyBpdCBmaXRzIGludG8gdGhlIG92ZXJhbGwgc3lzdGVtIGFuZCBob3cgY2hhbmdlcyB0byBpdCBtaWdodCBpbXBhY3Qgb3RoZXIgbW9kdWxlcy4gR3Jhc3BpbmcgdGhlICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IHJlbGF0aW9uc2hpcHMgaXMgY3JpdGljYWwgdG8gYXZvaWQgaW50cm9kdWNpbmcgcmVncmVzc2lvbnMgb3IgdW5leHBlY3RlZCBiZWhhdmlvcnMgbGF0ZXIgb24uIFNvLCBiZWZvcmUgSSBkbyBhbnl0aGluZyBlbHNlLCBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIGV4YWN0IGRlcGVuZGVuY2llcyBvZiBgTVdJRklFWGAuIEkmIzM5O2xsIGRlbHZlIGludG8gdGhlIG5lY2Vzc2FyeSBkb2N1bWVudGF0aW9uLCBjb25maWd1cmF0aW9uIGZpbGVzLCBvciBidWlsZCBzeXN0ZW1zIHRvIGRldGVybWluZSB3aGF0IG90aGVyIGNvbXBvbmVudHMgb3IgbGlicmFyaWVzIHRoaXMgbW9kdWxlIHJlbGllcyBvbi4gVGhpcyBpcyBlc3NlbnRpYWwgZm9yIGEgY29tcGxldGUgdW5kZXJzdGFuZGluZyBvZiBpdHMgZnVuY3Rpb25hbGl0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDM6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBNV0lGSUVYXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyXCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIENGRzgwMjExXG4gICA1Olx0XHRoZWxwXG4gICA2Olx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciB3aXJlbGVzcyBhZGFwdGVycyBiYXNlZCBvbiBNYXJ2ZWxsXG4gICA3Olx0XHQgIDgwMi4xMW4vYWMgY2hpcHNldHMuXG4gICA4Olx0XG4gICA5Olx0XHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXG4gIDEwOlx0XHQgIG13aWZpZXguXG4gIDExOlx0XG4gIDEyOlx0Y29uZmlnIE1XSUZJRVhfU0RJT1xuICAxMzpcdFx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgU0Q4Nzg2L1NEODc4Ny9TRDg3OTcvU0Q4ODg3L1NEODg5Ny9TRDg5NzcvU0Q4OTc4L1NEODk4Ny9TRDg5OTdcJiMzNDtcbiAgMTQ6XHRcdGRlcGVuZHMgb24gTVdJRklFWCBcdTAwMjZcdTAwMjYgTU1DXG4gIDE1Olx0XHRzZWxlY3QgRldfTE9BREVSXG4gIDE2Olx0XHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcbiAgMTc6XHRcdGhlbHBcbiAgMTg6XHRcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIHdpcmVsZXNzIGFkYXB0ZXJzIGJhc2VkIG9uIE1hcnZlbGxcbiAgMTk6XHRcdCAgODc4Ni84Nzg3Lzg3OTcvODg4Ny84ODk3Lzg5NzcvODk3OC84OTg3Lzg5OTcgY2hpcHNldHMgd2l0aFxuICAyMDpcdFx0ICBTRElPIGludGVyZmFjZS4gU0Q4OTc4IGlzIGFsc28ga25vd24gYXMgTlhQIElXNDE2LlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwMzowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTA0MQoJCQkJCQkJb3V0cHV0OiAyMDcKCQkJCQkJCXRob3VnaHRzOiAzNzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIE1hcnZlbGwgV2lGaSBEcml2ZXIgTW9kaWZpY2F0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgTWFydmVsbCBXaUZpIGRyaXZlci4gRmlyc3QgdGhpbmdzIGZpcnN0LCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBzeW1ib2xzIGFyZSBjbGVhcmx5IHJlbGF0ZWQgdG8gYENGRzgwMjExYCwgd2hpY2ggdGhpcyBkcml2ZXIgZGVwZW5kcyBvbi4gIGBNV0lGSUVYX1VTQmAgYWxzbyBjb21lcyBpbnRvIHBsYXksIHdoaWNoIGluIHR1cm4gZGVwZW5kcyBvbiBib3RoIGBNV0lGSUVYYCBhbmQgYFVTQmAuICBUaGVyZWZvcmUsIGBDRkc4MDIxMWAsIGBXTEFOYCwgYFdMQU5fVkVORE9SX01BUlZFTExgLCBgTVdJRklFWGAsIGBNV0lGSUVYX1VTQmAsIGFuZCBgVVNCYCBhcmUgYWxsIGNydWNpYWwgZm9yIGNvbnRleHQgaGVyZS4KCk5vdywgbGV0JiMzOTtzIHpvb20gaW4gb24gdGhlIGNvcmUgb2YgdGhlIGNoYW5nZSDigJMgdGhlIGBtd2lmaWV4X3Byb2Nlc3NfbWdtdF9wYWNrZXRgIGZ1bmN0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY2FsbCBncmFwaC4gQWgsIHJpZ2h0LCBpdCYjMzk7cyBjYWxsZWQgZnJvbSBib3RoIGBtd2lmaWV4X3Byb2Nlc3Nfc3RhX3J4X3BhY2tldGAgYW5kIGBtd2lmaWV4X3Byb2Nlc3NfdWFwX3J4X3BhY2tldGAsIHdoaWNoIGFyZSB0aGVtc2VsdmVzIGNhbGxlZCBmcm9tIGBtd2lmaWV4X2hhbmRsZV9yeF9wYWNrZXRgLiBUaGF0IG5hcnJvd3MgZG93biB0aGUga2V5IGZvY3VzIHN5bWJvbHM6IGBtd2lmaWV4X3Byb2Nlc3NfbWdtdF9wYWNrZXRgLCBgbXdpZmlleF9wcm9jZXNzX3N0YV9yeF9wYWNrZXRgLCBgbXdpZmlleF9wcm9jZXNzX3VhcF9yeF9wYWNrZXRgLCBhbmQgYG13aWZpZXhfaGFuZGxlX3J4X3BhY2tldGAuCgpJJiMzOTttIHZlcmlmeWluZyB0aGF0IGBtd2lmaWV4X3Byb2Nlc3NfbWdtdF9wYWNrZXRgIGlzIHRoZSBiZXN0IGVudHJ5IHBvaW50IGZvciBmdXJ0aGVyIGludmVzdGlnYXRpb24uIFllcywgaXQmIzM5O3Mgbm9uLXN0YXRpYyBhbmQgZGlyZWN0bHkgY2FsbHMgdGhlIG1vZGlmaWVkIGZ1bmN0aW9uLCBgbXdpZmlleF9wYXJzZV9tZ210X3BhY2tldGAuIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIGJvdW5kcyBjaGVja2luZyBpbiBgbXdpZmlleF9wYXJzZV9tZ210X3BhY2tldGAsIHdoaWNoIGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhZGRyZXNzaW5nIGEgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgcmVhZCB2dWxuZXJhYmlsaXR5LiBHaXZlbiB0aGF0IHRoaXMgaXMgcmVhY2hhYmxlIHZpYSBVU0IgZHVtbXlfaGNkLCBJJiMzOTttIGNvbmZpZGVudCBpbiBtYXJraW5nIGl0IGFzIGBXb3J0aEZ1enppbmc9dHJ1ZWAuCgpKdXN0IGEgZmluYWwgY2hlY2sgdG8gZW5zdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueXRoaW5nOiBgQ0ZHODAyMTFgIGFsc28gZGVwZW5kcyBvbiBgTkVUYCBhbmQgYFVTQmAgZGVwZW5kcyBvbiBgVVNCX1NVUFBPUlRgLCBidXQgSSB0aGluayBJJiMzOTt2ZSBnb3QgYSBoYW5kbGUgb24gdGhlIGtleSBwaWVjZXMgZm9yIGFuYWx5c2lzLgpBbHJpZ2h0LCB0aGF0JiMzOTtzIHRoZSBhc3Nlc3NtZW50LiBUaW1lIHRvIHJlY29yZCB0aGUgZmluZGluZ3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDAzOjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtXTEFOJiMzNDssCiAgICAmIzM0O1dMQU5fVkVORE9SX01BUlZFTEwmIzM0OywKICAgICYjMzQ7TVdJRklFWCYjMzQ7LAogICAgJiMzNDtNV0lGSUVYX1VTQiYjMzQ7LAogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttd2lmaWV4X3Byb2Nlc3NfbWdtdF9wYWNrZXQmIzM0OywKICAgICYjMzQ7bXdpZmlleF9wcm9jZXNzX3N0YV9yeF9wYWNrZXQmIzM0OywKICAgICYjMzQ7bXdpZmlleF9wcm9jZXNzX3VhcF9yeF9wYWNrZXQmIzM0OywKICAgICYjMzQ7bXdpZmlleF9oYW5kbGVfcnhfcGFja2V0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIGBtd2lmaWV4X3BhcnNlX21nbXRfcGFja2V0YCB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMgd2hlbiBwYXJzaW5nIG1hbmFnZW1lbnQgcGFja2V0cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBNYXJ2ZWxsIFdpRmktRXggZHJpdmVyLiBUaGUgZHJpdmVyIHN1cHBvcnRzIFVTQiBpbnRlcmZhY2VzIChgTVdJRklFWF9VU0JgKSwgd2hpY2ggY2FuIGJlIGZ1enplZCB1c2luZyBVU0IgZHVtbXlfaGNkLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSB0aGUgbWFpbiBSWCBwcm9jZXNzaW5nIHBhdGguJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1dMQU4mIzM0OywKICAgICYjMzQ7V0xBTl9WRU5ET1JfTUFSVkVMTCYjMzQ7LAogICAgJiMzNDtNV0lGSUVYJiMzNDssCiAgICAmIzM0O01XSUZJRVhfVVNCJiMzNDssCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O213aWZpZXhfcHJvY2Vzc19tZ210X3BhY2tldCYjMzQ7LAogICAgJiMzNDttd2lmaWV4X3Byb2Nlc3Nfc3RhX3J4X3BhY2tldCYjMzQ7LAogICAgJiMzNDttd2lmaWV4X3Byb2Nlc3NfdWFwX3J4X3BhY2tldCYjMzQ7LAogICAgJiMzNDttd2lmaWV4X2hhbmRsZV9yeF9wYWNrZXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gYG13aWZpZXhfcGFyc2VfbWdtdF9wYWNrZXRgIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyB3aGVuIHBhcnNpbmcgbWFuYWdlbWVudCBwYWNrZXRzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIE1hcnZlbGwgV2lGaS1FeCBkcml2ZXIuIFRoZSBkcml2ZXIgc3VwcG9ydHMgVVNCIGludGVyZmFjZXMgKGBNV0lGSUVYX1VTQmApLCB3aGljaCBjYW4gYmUgZnV6emVkIHVzaW5nIFVTQiBkdW1teV9oY2QuIFRoZSBtb2RpZmllZCBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIHRoZSBtYWluIFJYIHByb2Nlc3NpbmcgcGF0aC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDAzOjA1OjU5Ljg2MjMxOTkyOFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY1NDA3MDAwMjA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIldMQU5cIixcbiAgICBcIldMQU5fVkVORE9SX01BUlZFTExcIixcbiAgICBcIk1XSUZJRVhcIixcbiAgICBcIk1XSUZJRVhfVVNCXCIsXG4gICAgXCJDRkc4MDIxMVwiLFxuICAgIFwiVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXdpZmlleF9wcm9jZXNzX21nbXRfcGFja2V0XCIsXG4gICAgXCJtd2lmaWV4X3Byb2Nlc3Nfc3RhX3J4X3BhY2tldFwiLFxuICAgIFwibXdpZmlleF9wcm9jZXNzX3VhcF9yeF9wYWNrZXRcIixcbiAgICBcIm13aWZpZXhfaGFuZGxlX3J4X3BhY2tldFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIGBtd2lmaWV4X3BhcnNlX21nbXRfcGFja2V0YCB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMgd2hlbiBwYXJzaW5nIG1hbmFnZW1lbnQgcGFja2V0cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBNYXJ2ZWxsIFdpRmktRXggZHJpdmVyLiBUaGUgZHJpdmVyIHN1cHBvcnRzIFVTQiBpbnRlcmZhY2VzIChgTVdJRklFWF9VU0JgKSwgd2hpY2ggY2FuIGJlIGZ1enplZCB1c2luZyBVU0IgZHVtbXlfaGNkLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSB0aGUgbWFpbiBSWCBwcm9jZXNzaW5nIHBhdGguXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDAzOjA1OjU5Ljg2MjMyNjgzOFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY1MjE1NDM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNjUxYWI1ZDRlZGRhMDc2ZmE0OWQxMGEwYTkxYmFkNzEwOThlZTA3N1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEp1bCAyNSAwMzowNTo1OCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuY1xcbmluZGV4IDdkMzYzMWQyMTIyMzZjLi5lNTRhODZlY2FhMzNhZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuY1xcbkBAIC0zMTcsOSArMzE3LDE1IEBAIG13aWZpZXhfcGFyc2VfbWdtdF9wYWNrZXQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgdTggKnBheWxvYWQsIHUxNiBsZW4sXFxuIFxcbiBcXHRzd2l0Y2ggKHN0eXBlKSB7XFxuIFxcdGNhc2UgSUVFRTgwMjExX1NUWVBFX0FDVElPTjpcXG4rXFx0XFx0aWYgKGxlbiBcXHUwMDNjIElFRUU4MDIxMV9NSU5fQUNUSU9OX1NJWkUoY2F0ZWdvcnkpICsgRVRIX0FMRU4pXFxuK1xcdFxcdFxcdHJldHVybiAtMTtcXG4rXFxuIFxcdFxcdGNhdGVnb3J5ID0gKihwYXlsb2FkICsgc2l6ZW9mKHN0cnVjdCBpZWVlODAyMTFfaGRyKSk7XFxuIFxcdFxcdHN3aXRjaCAoY2F0ZWdvcnkpIHtcXG4gXFx0XFx0Y2FzZSBXTEFOX0NBVEVHT1JZX1BVQkxJQzpcXG4rXFx0XFx0XFx0aWYgKGxlbiBcXHUwMDNjIElFRUU4MDIxMV9NSU5fQUNUSU9OX1NJWkUoYWN0aW9uX2NvZGUpICsgRVRIX0FMRU4pXFxuK1xcdFxcdFxcdFxcdHJldHVybiAtMTtcXG4rXFxuIFxcdFxcdFxcdGFjdGlvbl9jb2RlID0gKihwYXlsb2FkICsgc2l6ZW9mKHN0cnVjdCBpZWVlODAyMTFfaGRyKVxcbiBcXHRcXHRcXHRcXHRcXHQrIDEpO1xcbiBcXHRcXHRcXHRpZiAoYWN0aW9uX2NvZGUgPT0gV0xBTl9QVUJfQUNUSU9OX1RETFNfRElTQ09WRVJfUkVTKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDAzOjA2OjAwLjMyODI0MjE0N1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjY0OTQxMDY5NDI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIldMQU5cIixcbiAgICBcIldMQU5fVkVORE9SX01BUlZFTExcIixcbiAgICBcIk1XSUZJRVhcIixcbiAgICBcIk1XSUZJRVhfVVNCXCIsXG4gICAgXCJDRkc4MDIxMVwiLFxuICAgIFwiVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXdpZmlleF9wcm9jZXNzX21nbXRfcGFja2V0XCIsXG4gICAgXCJtd2lmaWV4X3Byb2Nlc3Nfc3RhX3J4X3BhY2tldFwiLFxuICAgIFwibXdpZmlleF9wcm9jZXNzX3VhcF9yeF9wYWNrZXRcIixcbiAgICBcIm13aWZpZXhfaGFuZGxlX3J4X3BhY2tldFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIGBtd2lmaWV4X3BhcnNlX21nbXRfcGFja2V0YCB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMgd2hlbiBwYXJzaW5nIG1hbmFnZW1lbnQgcGFja2V0cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBNYXJ2ZWxsIFdpRmktRXggZHJpdmVyLiBUaGUgZHJpdmVyIHN1cHBvcnRzIFVTQiBpbnRlcmZhY2VzIChgTVdJRklFWF9VU0JgKSwgd2hpY2ggY2FuIGJlIGZ1enplZCB1c2luZyBVU0IgZHVtbXlfaGNkLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSB0aGUgbWFpbiBSWCBwcm9jZXNzaW5nIHBhdGguXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDY1MWFiNWQ0ZWRkYTA3NmZhNDlkMTBhMGE5MWJhZDcxMDk4ZWUwNzdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAyNSAwMzowNTo1OCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jXG5pbmRleCA3ZDM2MzFkMjEyMjM2Yy4uZTU0YTg2ZWNhYTMzYWYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jXG5AQCAtMzE3LDkgKzMxNywxNSBAQCBtd2lmaWV4X3BhcnNlX21nbXRfcGFja2V0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIHU4ICpwYXlsb2FkLCB1MTYgbGVuLFxuIFxuIFx0c3dpdGNoIChzdHlwZSkge1xuIFx0Y2FzZSBJRUVFODAyMTFfU1RZUEVfQUNUSU9OOlxuK1x0XHRpZiAobGVuIFx1MDAzYyBJRUVFODAyMTFfTUlOX0FDVElPTl9TSVpFKGNhdGVnb3J5KSArIEVUSF9BTEVOKVxuK1x0XHRcdHJldHVybiAtMTtcbitcbiBcdFx0Y2F0ZWdvcnkgPSAqKHBheWxvYWQgKyBzaXplb2Yoc3RydWN0IGllZWU4MDIxMV9oZHIpKTtcbiBcdFx0c3dpdGNoIChjYXRlZ29yeSkge1xuIFx0XHRjYXNlIFdMQU5fQ0FURUdPUllfUFVCTElDOlxuK1x0XHRcdGlmIChsZW4gXHUwMDNjIElFRUU4MDIxMV9NSU5fQUNUSU9OX1NJWkUoYWN0aW9uX2NvZGUpICsgRVRIX0FMRU4pXG4rXHRcdFx0XHRyZXR1cm4gLTE7XG4rXG4gXHRcdFx0YWN0aW9uX2NvZGUgPSAqKHBheWxvYWQgKyBzaXplb2Yoc3RydWN0IGllZWU4MDIxMV9oZHIpXG4gXHRcdFx0XHRcdCsgMSk7XG4gXHRcdFx0aWYgKGFjdGlvbl9jb2RlID09IFdMQU5fUFVCX0FDVElPTl9URExTX0RJU0NPVkVSX1JFUykge1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDM6MDY6MDAuMzI4MjQzODQ3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDIzNTg3MDAwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipSZWFjaGluZyBUaGF0IFBhdGNoKipcblxuT2theSwgc28gdGhlcmUncyBhIHBhdGNoIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jYC4gQXBwYXJlbnRseSwgaXQncyBhZGRpbmcgc29tZSBib3VuZHMgY2hlY2tpbmcgdG8gYG13aWZpZXhfcGFyc2VfbWdtdF9wYWNrZXRgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJDYW4gd2UgKmdldCogdG8gdGhpcyBjb2RlPyBJcyBpdCBldmVuIHJlYWNoYWJsZSBpbiBhIHJlYWwtd29ybGQgc2NlbmFyaW8/XCIgYG13aWZpZXhgIGlzIHRoZSBNYXJ2ZWxsIFdpRmkgZHJpdmVyLCByaWdodD8gU28sIHRoZSBuZXh0IHF1ZXN0aW9uIGlzIG9idmlvdXM6IGNhbiB3ZSBmdXp6IGl0P1xuXG5UeXBpY2FsbHksIEknZCByZWFjaCBmb3Igc29tZXRoaW5nIGxpa2UgYG1hYzgwMjExX2h3c2ltYCBmb3IgV2lGaSBkcml2ZXIgZnV6emluZy4gVGhhdCdzIHVzdWFsbHkgdGhlIGdvLXRvLiBCdXQsIGhvbGQgb24gYSBzZWNvbmQuLi4gYG13aWZpZXhgIGlzIGEgKmhhcmR3YXJlKiBkcml2ZXIsIG5vdCBhIGdlbmVyaWMgb25lLiBUaGF0IGNvbXBsaWNhdGVzIHRoaW5ncyBhIGxpdHRsZS5cblxuQWgsIHJpZ2h0ISBJIG5lZWQgdG8gcmVtZW1iZXIgdGhlIGFyY2hpdGVjdHVyYWwgZGV0YWlscyBvZiB0aGlzIGRyaXZlci4gSXQgc3VwcG9ydHMgU0RJTywgUENJZSwgYW5kIFVTQi4gVGhhdCdzIHRoZSBrZXkhIEFuZCB3YWl0IGEgc2Vjb25kLCBVU0IgaXMgaW50ZXJlc3RpbmcsIFVTQiBkcml2ZXJzICpjYW4qIGJlIGZ1enplZCB1c2luZyBVU0IgZ2FkZ2V0L2R1bW15X2hjZCwgYXMgbG9uZyBhcyBpdCBoYXMgYSBVU0IgZHJpdmVyIHRoYXQgaXMhIE9rYXksIEkgbmVlZCB0byBjaGVjayBpZiB0aGVyZSBpcyBhIFVTQiBkcml2ZXIgaW4gdGhpcyBpbXBsZW1lbnRhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE5NCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDAzOjA2OjA0LjU2NDExNjMxNloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODgyMjUyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4X3BhcnNlX21nbXRfcGFja2V0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuYz0zMDg9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmM6MzA5Om13aWZpZXhfcGFyc2VfbWdtdF9wYWNrZXQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgdTggKnBheWxvYWQsIHUxNiBsZW4sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuYy0zMTAtXFx0XFx0XFx0ICBzdHJ1Y3QgcnhwZCAqcnhfcGQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jPTQwNT1td2lmaWV4X3Byb2Nlc3NfbWdtdF9wYWNrZXQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmMtNDM0LVxcdGlmIChpZWVlODAyMTFfaXNfbWdtdChpZWVlX2hkci1cXHUwMDNlZnJhbWVfY29udHJvbCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jOjQzNTpcXHRcXHRpZiAobXdpZmlleF9wYXJzZV9tZ210X3BhY2tldChwcml2LCAodTggKilpZWVlX2hkcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jLTQzNi1cXHRcXHRcXHRcXHRcXHQgICAgICBwa3RfbGVuLCByeF9wZCkpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDAzOjA2OjA0LjYyMjk0NDY1NVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3NjUwMDcxMTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgbXdpZmlleCBEcml2ZXIgTGFuZHNjYXBlKipcblxuT2theSwgc28gSSBuZWVkIHRvIGNoZWNrIG91dCB0aGUgc3RhdHVzIG9mIGBtd2lmaWV4YCdzIFVTQiBkcml2ZXIuIEknbSB3b25kZXJpbmcgaWYgaXQgZXZlbiAqaGFzKiBvbmUuIE15IGltbWVkaWF0ZSBjb25jZXJuIGlzIHdoZXRoZXIgb3Igbm90IHRoZXJlJ3MgYW55IHN1cHBvcnQsIGFuZCBpZiBzbywgd2hhdCB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGF0IHN1cHBvcnQgaXMuIElzIGl0IHVwc3RyZWFtZWQ/IElmIG5vdCwgd2hhdCdzIHRoZSBxdWFsaXR5IG9mIHRoZSBvdXQtb2YtdHJlZSBzb2x1dGlvbiwgaWYgYW55PyBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgdGhlcmUncyBldmVuIGEgdmlhYmxlIFVTQiBwYXRoIGZvciBteSBuZWVkcyBoZXJlLCBvdGhlcndpc2UgSSdtIGdvaW5nIHRvIG5lZWQgdG8gcGl2b3QgYW5kIGV4cGxvcmUgb3RoZXIgZHJpdmVyIG9wdGlvbnMuIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gd2hhdCB0aGUgbGFuZHNjYXBlIGxvb2tzIGxpa2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5NDcsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwMzowNjowNy4zODc5NTM1MDlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJjb2Rlc2VhcmNoLWRpci1pbmRleCIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg3NjQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRGlyXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJGaWxlc1wiOiBbXG4gICAgXCIxMWFjLmNcIixcbiAgICBcIjExYWMuaFwiLFxuICAgIFwiMTFoLmNcIixcbiAgICBcIjExbi5jXCIsXG4gICAgXCIxMW4uaFwiLFxuICAgIFwiMTFuX2FnZ3IuY1wiLFxuICAgIFwiMTFuX2FnZ3IuaFwiLFxuICAgIFwiMTFuX3J4cmVvcmRlci5jXCIsXG4gICAgXCIxMW5fcnhyZW9yZGVyLmhcIixcbiAgICBcImNmZzgwMjExLmNcIixcbiAgICBcImNmZzgwMjExLmhcIixcbiAgICBcImNmcC5jXCIsXG4gICAgXCJjbWRldnQuY1wiLFxuICAgIFwiZGVidWdmcy5jXCIsXG4gICAgXCJkZWNsLmhcIixcbiAgICBcImV0aHRvb2wuY1wiLFxuICAgIFwiZncuaFwiLFxuICAgIFwiaWUuY1wiLFxuICAgIFwiaW5pdC5jXCIsXG4gICAgXCJpb2N0bC5oXCIsXG4gICAgXCJqb2luLmNcIixcbiAgICBcIm1haW4uY1wiLFxuICAgIFwibWFpbi5oXCIsXG4gICAgXCJwY2llLmNcIixcbiAgICBcInBjaWUuaFwiLFxuICAgIFwicGNpZV9xdWlya3MuY1wiLFxuICAgIFwicGNpZV9xdWlya3MuaFwiLFxuICAgIFwic2Nhbi5jXCIsXG4gICAgXCJzZGlvLmNcIixcbiAgICBcInNkaW8uaFwiLFxuICAgIFwic3RhX2NtZC5jXCIsXG4gICAgXCJzdGFfY21kcmVzcC5jXCIsXG4gICAgXCJzdGFfZXZlbnQuY1wiLFxuICAgIFwic3RhX2lvY3RsLmNcIixcbiAgICBcInN0YV9yeC5jXCIsXG4gICAgXCJzdGFfdHguY1wiLFxuICAgIFwidGRscy5jXCIsXG4gICAgXCJ0eHJ4LmNcIixcbiAgICBcInVhcF9jbWQuY1wiLFxuICAgIFwidWFwX2V2ZW50LmNcIixcbiAgICBcInVhcF90eHJ4LmNcIixcbiAgICBcInVzYi5jXCIsXG4gICAgXCJ1c2IuaFwiLFxuICAgIFwidXRpbC5jXCIsXG4gICAgXCJ1dGlsLmhcIixcbiAgICBcIndtbS5jXCIsXG4gICAgXCJ3bW0uaFwiXG4gIF0sXG4gIFwiU3ViZGlyc1wiOiBudWxsXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwMzowNjowNy4zODgwNDI2MjlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTk5NjEwMzQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipVU0IgRnV6emluZyBQb3RlbnRpYWwgZm9yIG13aWZpZXgqKlxuXG5BbHJpZ2h0LCBjb25maXJtZWQg4oCTIGB1c2IuY2AgaXMgZGVmaW5pdGVseSBpbiBwbGF5LiBUaGF0J3MgZ29vZCBuZXdzLiBJZiBgdXNiLmNgIGlzIHRoZXJlLCB0aGVuIHdlIGNhbiBsaWtlbHkgaW50ZXJhY3Qgd2l0aCBhbmQgZnV6eiBgbXdpZmlleGAgb3ZlciBVU0IsIHdoaWNoIG9wZW5zIHVwIHNvbWUgaW50ZXJlc3RpbmcgYXZlbnVlcyBmb3IgdnVsbmVyYWJpbGl0eSByZXNlYXJjaC4gTm93LCBiZWZvcmUgSSBnZXQgdG9vIGV4Y2l0ZWQsIGxldCdzIGp1c3QgcXVpY2tseSBjb25maXJtIHRoYXQgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24gYWxsb3dzIGZvciBpdC4gTGV0J3MgZ2V0IHRoZSBLY29uZmlnIGZpbGUgZm9yIGBtd2lmaWV4YCBhbmQgc2VlIHdoYXQncyB3aGF0LiBNYWtlIHN1cmUgdGhlcmUgYXJlIG5vIGJsYXRhbnQgYmxvY2tlcnMgaW4gdGhlIGNvbmZpZ3VyYXRpb24uIFdlIG5lZWQgdG8gdmVyaWZ5IHRoYXQgVVNCIHN1cHBvcnQgaXMgYWN0dWFsbHkgY29tcGlsZWQgaW4gZm9yIGBtd2lmaWV4YCwgb3RoZXJ3aXNlLCB3ZSdyZSB3YXN0aW5nIG91ciB0aW1lLiBMZXQncyBzZWUgd2hhdCdzIGVuYWJsZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1MzMsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOCwiVG9vbENhbGxzIjpbImNvZGVzZWFyY2gtZGlyLWluZGV4Il19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDM6MDY6MTAuMzg3NjU0NzE3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4OTYzNDc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNV0lGSUVYXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzoyOmNvbmZpZyBNV0lGSUVYXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBXaUZpLUV4IERyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTExLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjEyOmNvbmZpZyBNV0lGSUVYX1NESU9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0xMy1cXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgU0Q4Nzg2L1NEODc4Ny9TRDg3OTcvU0Q4ODg3L1NEODg5Ny9TRDg5NzcvU0Q4OTc4L1NEODk4Ny9TRDg5OTdcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0yNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzoyNTpjb25maWcgTVdJRklFWF9QQ0lFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMjYtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFBDSUUgODc2Ni84ODk3Lzg5OTdcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0zNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzozNzpjb25maWcgTVdJRklFWF9VU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0zOC1cXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgVVNCODc2Ni84Nzk3Lzg5OTdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDAzOjA2OjEwLjQ0NjYyMjQ5NVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4MzQ5MTk1NzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTmF2aWdhdGluZyB0aGUgTVdJRklFWCBDb2RlYmFzZSoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB3b3JrIHdpdGggYE1XSUZJRVhgIGFuZCBgTVdJRklFWF9VU0JgLiBUaGF0IG11Y2ggaXMgY2xlYXIuIE5vdywgbGV0J3Mgc2VlLi4uIHJpZ2h0LCBgbXdpZmlleF9wYXJzZV9tZ210X3BhY2tldGAuIEkgcmVtZW1iZXIgdGhhdCBmdW5jdGlvbi4gSXQncyBpbiBgdXRpbC5jYCwgYXMgSSByZWNhbGwuIE1ha2VzIHNlbnNlLCBpdCdzIGEgdXRpbGl0eSBmdW5jdGlvbi4gTm93LCB3aGVyZSBpcyBgbXdpZmlleF9wcm9jZXNzX21nbXRfcGFja2V0YCBhY3R1YWxseSAqY2FsbGVkKiBmcm9tPyBJIG5lZWQgdG8gdHJhY2UgdGhlIGZsb3cgb2YgbWFuYWdlbWVudCBwYWNrZXRzIHRvIHVuZGVyc3RhbmQgdGhlIG92ZXJhbGwgY29udGV4dC4gVGltZSB0byB0cmFjayBkb3duIHRoZSBjYWxsIHNpdGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjE0LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDM6MDY6MTMuMjgxNTQ0MDA4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjMxNDQ1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4X3Byb2Nlc3NfbWdtdF9wYWNrZXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oPTEwNjg9dm9pZCBtd2lmaWV4X2hvc3RfbWxtZV9kaXNjb25uZWN0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTEwNzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxMDcxOmludCBtd2lmaWV4X3Byb2Nlc3NfbWdtdF9wYWNrZXQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTEwNzItXFx0XFx0XFx0XFx0c3RydWN0IHNrX2J1ZmYgKnNrYik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX3J4LmM9MTg5PWludCBtd2lmaWV4X3Byb2Nlc3Nfc3RhX3J4X3BhY2tldChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9yeC5jLTIxOC1cXHRpZiAocnhfcGt0X3R5cGUgPT0gUEtUX1RZUEVfTUdNVCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfcnguYzoyMTk6XFx0XFx0cmV0ID0gbXdpZmlleF9wcm9jZXNzX21nbXRfcGFja2V0KHByaXYsIHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9yeC5jLTIyMC1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF90eHJ4LmM9MzczPWludCBtd2lmaWV4X3Byb2Nlc3NfdWFwX3J4X3BhY2tldChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF90eHJ4LmMtNDE2LVxcdGlmIChyeF9wa3RfdHlwZSA9PSBQS1RfVFlQRV9NR01UKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF90eHJ4LmM6NDE3OlxcdFxcdHJldCA9IG13aWZpZXhfcHJvY2Vzc19tZ210X3BhY2tldChwcml2LCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfdHhyeC5jLTQxOC1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuYz00MDQ9aW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuYzo0MDU6bXdpZmlleF9wcm9jZXNzX21nbXRfcGFja2V0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuYy00MDYtXFx0XFx0XFx0ICAgIHN0cnVjdCBza19idWZmICpza2IpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDAzOjA2OjEzLjMzNzg2OTI4N1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjkzODg4MTgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBhbiBleHBlcnQgaW4gdGhpcyBhcmVhOlxuXG4qKkRpZ2dpbmcgaW50byB0aGUgUGFja2V0IFByb2Nlc3NpbmcgRmxvdyoqXG5cbkFscmlnaHQsIHNvIGBtd2lmaWV4X3Byb2Nlc3Nfc3RhX3J4X3BhY2tldGAgYW5kIGBtd2lmaWV4X3Byb2Nlc3NfdWFwX3J4X3BhY2tldGAgYm90aCBmdW5uZWwgdGhlaXIgcmVjZWl2ZWQgcGFja2V0IHByb2Nlc3NpbmcgdGhyb3VnaCBgbXdpZmlleF9wcm9jZXNzX21nbXRfcGFja2V0YC4gVGhhdCdzIGludGVyZXN0aW5nLCBhbmQgcG90ZW50aWFsbHkgYSBnb29kIHBsYWNlIHRvIHN0YXJ0IGlmIEknbSBsb29raW5nIGZvciBhIGNlbnRyYWwgcG9pbnQgb2YgcGFja2V0IGhhbmRsaW5nIGxvZ2ljLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGF0YSBmbG93LCBhbmQgd2hlcmUgaXQncyBiZWluZyB1c2VkIGlzIGtleS5cblxuTm93LCBJJ20gdGhpbmtpbmcsIGxldCdzIGRyaWxsIGRvd24gYSBiaXQgZGVlcGVyLiBTcGVjaWZpY2FsbHksIEknbSBnb2luZyB0byB0cmFjayBkb3duIGV2ZXJ5IGluc3RhbmNlIG9mIHdoZXJlIGBtd2lmaWV4X3Byb2Nlc3Nfc3RhX3J4X3BhY2tldGAgaXMgYWN0dWFsbHkgY2FsbGVkLiBUaGF0J2xsIGdpdmUgbWUgYSBjbGVhcmVyIHBpY3R1cmUgb2YgaG93IGl0IGFsbCB0aWVzIHRvZ2V0aGVyLCBhbmQgd2hhdCB0cmlnZ2VycyB0aGlzIGNyaXRpY2FsIGZ1bmN0aW9uIHdpdGhpbiB0aGUgb3ZlcmFsbCBkcml2ZXIgYXJjaGl0ZWN0dXJlLiBLbm93aW5nIHRoZSBjYWxsIHNpdGVzIGhlbHBzIG1lIHVuZGVyc3RhbmQgdGhlIHBhY2tldCdzIHBhdGggYW5kIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwMzAsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwMzowNjoxNi42MzE3NjAzNDhaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2MDMyNzI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm13aWZpZXhfcHJvY2Vzc19zdGFfcnhfcGFja2V0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD0xMTM3PWludCBtd2lmaWV4X3Byb2Nlc3Nfc3RhX2NtZHJlc3Aoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqLCB1MTYgY21kcmVzcF9ubyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTExMzgtXFx0XFx0XFx0XFx0c3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3ApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTEzOTppbnQgbXdpZmlleF9wcm9jZXNzX3N0YV9yeF9wYWNrZXQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTE0MC1cXHRcXHRcXHRcXHQgIHN0cnVjdCBza19idWZmICpza2IpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9yeC5jPTcxPWludCBtd2lmaWV4X3Byb2Nlc3NfcnhfcGFja2V0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX3J4LmMtMTg4LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfcnguYzoxODk6aW50IG13aWZpZXhfcHJvY2Vzc19zdGFfcnhfcGFja2V0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9yeC5jLTE5MC1cXHRcXHRcXHRcXHQgIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdHhyeC5jPTI0PWludCBtd2lmaWV4X2hhbmRsZV9yeF9wYWNrZXQoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC90eHJ4LmMtNTUtXFx0ZWxzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC90eHJ4LmM6NTY6XFx0XFx0cmV0ID0gbXdpZmlleF9wcm9jZXNzX3N0YV9yeF9wYWNrZXQocHJpdiwgc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdHhyeC5jLTU3LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwMzowNjoxNi42ODc3OTg1MTdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM1NzMyMTUzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgbXkgdGhvdWdodCBwcm9jZXNzIHJlZ2FyZGluZyBgbXdpZmlleF9oYW5kbGVfcnhfcGFja2V0YCwgYXNzdW1pbmcgSSdtIGFuIGV4cGVydCBpbiBlbWJlZGRlZCB3aXJlbGVzcyBkcml2ZXIgZGV2ZWxvcG1lbnQ6XG5cbioqSW5pdGlhbCBUaG91Z2h0cyBvbiBQYWNrZXQgSGFuZGxpbmcqKlxuXG5BbHJpZ2h0LCBgbXdpZmlleF9oYW5kbGVfcnhfcGFja2V0YC4gVGhhdCdzIGEgY3JpdGljYWwgZnVuY3Rpb24sIG5vIGRvdWJ0LiBUaGUgZmlyc3QgdGhpbmcgdGhhdCBwb3BzIGludG8gbXkgaGVhZCBpcyAqd2hlcmUqIGlzIHRoaXMgZnVuY3Rpb24gYmVpbmcgY2FsbGVkIGZyb20/IEl0J3MgdGhlIGNvcmUgb2YgaG93IHdlIHByb2Nlc3MgaW5jb21pbmcgZGF0YSwgc28ga25vd2luZyB0aGUgY2FsbGluZyBjb250ZXh0IGlzIGFic29sdXRlbHkga2V5IHRvIHVuZGVyc3RhbmRpbmcgaXRzIHB1cnBvc2UgYW5kIHBvdGVudGlhbCBib3R0bGVuZWNrcy4gSXMgaXQgYW4gaW50ZXJydXB0IGhhbmRsZXIgdHJpZ2dlcmVkIGJ5IHRoZSBoYXJkd2FyZSwgYW4gZW50cnkgcG9pbnQgZnJvbSBhIERNQSBjb21wbGV0aW9uIHJvdXRpbmUsIG9yIHBlcmhhcHMgYSB0YXNrbGV0IG9yIHdvcmsgcXVldWUgZnVuY3Rpb24gcmVzcG9uZGluZyB0byBhIGhhcmR3YXJlIGV2ZW50PyBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsIHN0YWNrIGltbWVkaWF0ZWx5IGluZm9ybXMgdGhlIGtpbmQgb2YgcGVyZm9ybWFuY2UgYW5kIGNvbmN1cnJlbmN5IGlzc3VlcyBJIHNob3VsZCBhbnRpY2lwYXRlLiBJdCBkaWN0YXRlcyB0aGUgbGV2ZWwgb2YgbG9ja2luZyBJIG5lZWQgdG8gY29uc2lkZXIsIHRoZSBwb3RlbnRpYWwgaW50ZXJydXB0IGxhdGVuY3kgY29uY2VybnMsIGFuZCB0aGUgb3ZlcmFsbCByZWFsLXRpbWUgY29uc3RyYWludHMgb24gdGhlIGRyaXZlci4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHBhdGggdGhlIFJYIHBhY2tldHMgYXJlIHRha2luZyB0byBnZXQgdG8gdGhpcyBoYW5kbGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODExLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDM6MDY6MjAuMDQ1MTIyNDg2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Njc0NDYyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4X2hhbmRsZV9yeF9wYWNrZXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jPTE3ND1zdGF0aWMgaW50IG13aWZpZXhfcHJvY2Vzc19yeChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy0yMDQtXFx0XFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jOjIwNTpcXHRcXHRcXHRtd2lmaWV4X2hhbmRsZV9yeF9wYWNrZXQoYWRhcHRlciwgc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jLTIwNi1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oPTExMDI9dm9pZCBtd2lmaWV4X3Byb2Nlc3NfYXNzb2NfcmVzcChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oOjExMDM6aW50IG13aWZpZXhfaGFuZGxlX3J4X3BhY2tldChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTEwNC1cXHRcXHRcXHQgICAgIHN0cnVjdCBza19idWZmICpza2IpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYz0xNTI2PXN0YXRpYyBpbnQgbXdpZmlleF9wY2llX3Byb2Nlc3NfcmVjdl9kYXRhKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jLTE1ODgtXFx0XFx0XFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jOjE1ODk6XFx0XFx0XFx0XFx0bXdpZmlleF9oYW5kbGVfcnhfcGFja2V0KGFkYXB0ZXIsIHNrYl9kYXRhKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jLTE1OTAtXFx0XFx0XFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYz0xNTkzPXN0YXRpYyB2b2lkIG13aWZpZXhfZGVhZ2dyX3NkaW9fcGt0KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jLTE2MzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYzoxNjM0OlxcdFxcdG13aWZpZXhfaGFuZGxlX3J4X3BhY2tldChhZGFwdGVyLCBza2JfZGVhZ2dyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jLTE2MzUtXFx0XFx0ZGF0YSArPSBibGtfc2l6ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmM9MTY0Nz1zdGF0aWMgaW50IG13aWZpZXhfZGVjb2RlX3J4X3BhY2tldChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYy0xNjg0LVxcdFxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYzoxNjg1OlxcdFxcdFxcdG13aWZpZXhfaGFuZGxlX3J4X3BhY2tldChhZGFwdGVyLCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmMtMTY4Ni1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdHhyeC5jLTIzLSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC90eHJ4LmM6MjQ6aW50IG13aWZpZXhfaGFuZGxlX3J4X3BhY2tldChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC90eHJ4LmMtMjUtXFx0XFx0XFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3R4cnguYy01OS19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3R4cnguYzo2MDpFWFBPUlRfU1lNQk9MX0dQTChtd2lmaWV4X2hhbmRsZV9yeF9wYWNrZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC90eHJ4LmMtNjEtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDAzOjA2OjIwLjEwMTg3MjQ3NVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDc0NTUyMzc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqUmVhY2hpbmcgdGhlIFJ4IFByb2Nlc3NpbmcgTG9vcCB2aWEgVVNCKipcblxuSSdtIGZvY3VzaW5nIG9uIHRoZSBgbXdpZmlleF9wcm9jZXNzX3J4YCBmdW5jdGlvbiDigJMgdGhhdCdzIHRoZSBoZWFydCBvZiB0aGUgcmVjZWl2ZSBwcm9jZXNzaW5nLCBhbmQgaXQncyBjYWxsZWQgd2l0aGluIHRoZSBgbWFpbi5jYCBmaWxlLiBSaWdodCwgc28gYG13aWZpZXhfcHJvY2Vzc19yeGAgZ2V0cyBjYWxsZWQgZnJvbSBgbXdpZmlleF9tYWluX3Byb2Nlc3NgLiBUaGF0IG1ha2VzIHNlbnNlOyBpdCdzIHRoZSBtYWluIGxvb3AuXG5cblRoZSBrZXkgcXVlc3Rpb24gbm93IGlzLCBjYW4gd2UgYWN0dWFsbHkgaGl0IHRoaXMgYG13aWZpZXhfcHJvY2Vzc19yeGAgbG9vcCB2aWEgYSBVU0IgY29ubmVjdGlvbiwgc3BlY2lmaWNhbGx5IHVzaW5nIHRoYXQgZHVtbXlfaGNkIHNldHVwPyBUaGUgYXJjaGl0ZWN0dXJlIHN1Z2dlc3RzIGl0IHNob3VsZCBiZSByZWFjaGFibGUuIEkgbmVlZCB0byBjb25maXJtIHRoaXMuIE15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBjb25uZWN0aW9uIHBhdGggc3BlY2lmaWNhbGx5IGZyb20gdGhlIFVTQiBpbnRlcmZhY2UgdG8gZW5zdXJlIHRoYXQgYG13aWZpZXhfcHJvY2Vzc19yeGAgaXMgYWN0dWFsbHkgaW52b2tlZCB3aGVuIGEgcGFja2V0IGNvbWVzIGluIG92ZXIgVVNCLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2OTczLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDM6MDY6MjMuNTc2NDI3MTcyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzYxNDA4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4X3Byb2Nlc3NfcnhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuX3J4cmVvcmRlci5jPTY3PXN0YXRpYyBpbnQgbXdpZmlleF8xMW5fZGlzcGF0Y2hfcGt0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvMTFuX3J4cmVvcmRlci5jLTg0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8xMW5fcnhyZW9yZGVyLmM6ODU6XFx0cmV0dXJuIG13aWZpZXhfcHJvY2Vzc19yeF9wYWNrZXQocHJpdiwgcGF5bG9hZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LzExbl9yeHJlb3JkZXIuYy04Ni19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jPTE2Mz1zdGF0aWMgdm9pZCBtd2lmaWV4X3F1ZXVlX3J4X3dvcmsoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtMTczLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmM6MTc0OnN0YXRpYyBpbnQgbXdpZmlleF9wcm9jZXNzX3J4KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy0xNzUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYz0xNDAzPXN0YXRpYyB2b2lkIG13aWZpZXhfcnhfd29ya19xdWV1ZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jLTE0MDktXFx0XFx0cmV0dXJuO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmM6MTQxMDpcXHRtd2lmaWV4X3Byb2Nlc3NfcngoYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy0xNDExLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg9MTEyNz1pbnQgbXdpZmlleF9yZXRfODAyXzExX2hzX2NmZyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTEyOC1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqcmVzcCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxMTI5OmludCBtd2lmaWV4X3Byb2Nlc3NfcnhfcGFja2V0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xMTMwLVxcdFxcdFxcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9yeC5jPTIzPW13aWZpZXhfZGlzY2FyZF9ncmF0dWl0b3VzX2FycChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9yeC5jLTcwLSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfcnguYzo3MTppbnQgbXdpZmlleF9wcm9jZXNzX3J4X3BhY2tldChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfcnguYy03Mi1cXHRcXHRcXHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9yeC5jPTE4OT1pbnQgbXdpZmlleF9wcm9jZXNzX3N0YV9yeF9wYWNrZXQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfcnguYy0yMzMtXFx0ICAgICFldGhlcl9hZGRyX2VxdWFsX3VuYWxpZ25lZChwcml2LVxcdTAwM2VjdXJyX2FkZHIsIHJ4X3BrdF9oZHItXFx1MDAzZWV0aDgwM19oZHIuaF9kZXN0KSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfcnguYzoyMzQ6XFx0XFx0bXdpZmlleF9wcm9jZXNzX3J4X3BhY2tldChwcml2LCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfcnguYy0yMzUtXFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfdHhyeC5jPTIzMj1pbnQgbXdpZmlleF9oYW5kbGVfdWFwX3J4X2ZvcndhcmQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfdHhyeC5jLTI3My1cXHQvKiBGb3J3YXJkIHVuaWNhdC9JbnRlci1CU1MgcGFja2V0cyB0byBrZXJuZWwuICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF90eHJ4LmM6Mjc0OlxcdHJldHVybiBtd2lmaWV4X3Byb2Nlc3NfcnhfcGFja2V0KHByaXYsIHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF90eHJ4LmMtMjc1LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDM6MDY6MjMuNjM0MDQ2NDQxWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNjMwODExMzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCBtZSB0aGluayB0aGlzIHRocm91Z2guXG5cbioqQW5hbHl6aW5nIHRoZSBEYXRhIEZsb3cgb2YgYG13aWZpZXhfcHJvY2Vzc19yeGAqKlxuXG5SaWdodCwgc28gYG13aWZpZXhfcHJvY2Vzc19yeGAuLi4gdGhhdCdzIHRoZSBmdW5jdGlvbiB0aGF0IGhhbmRsZXMgaW5jb21pbmcgUlggcGFja2V0cywgaXNuJ3QgaXQ/IEFuZCBJJ20gc2VlaW5nIHRoYXQgaXQncyBiZWluZyBjYWxsZWQgZnJvbSBgbXdpZmlleF9yeF93b3JrX3F1ZXVlYC4gT2theSwgc28gdGhhdCdzIGEgd29ya3F1ZXVlLiBTdGFuZGFyZCBzdHVmZiwgdXNpbmcgdGhlIGtlcm5lbCdzIG1lY2hhbmlzbSBmb3IgZGVmZXJyZWQgcHJvY2Vzc2luZy4gQnV0IGhvbGQgb24uLi4gd2hlcmUgKmV4YWN0bHkqIGRvZXMgYG13aWZpZXhfcXVldWVfcnhfd29ya2AgZ2V0IGludm9rZWQ/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb21wbGV0ZSBjYWxsIGdyYXBoIHRvIHByb3Blcmx5IGFzc2VzcyBhbnkgcG90ZW50aWFsIGNvbmN1cnJlbmN5IGlzc3VlcyBvciBib3R0bGVuZWNrcy4gS25vd2luZyB0aGUgdXBzdHJlYW0gY2FsbGVyIG9mIGBtd2lmaWV4X3F1ZXVlX3J4X3dvcmtgIGlzIGNyaXRpY2FsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBvdmVyYWxsIGRhdGEgZmxvdyBhbmQgaG93IHF1aWNrbHkgdGhvc2UgUlggcGFja2V0cyBhcmUgcHJvY2Vzc2VkLiBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIHRoYXQgd29ya3F1ZXVlIHRvIGZpbmQgdGhlIHNvdXJjZS4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBpbnRlcmFjdGlvbiB3aXRoIHRoZSBuZXR3b3JrIGNhcmQgaXRzZWxmIG11c3QgYmUuIEdvdHRhIGRpZyBkZWVwZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgzNTYsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwMzowNjoyNi45OTcxMzAzWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzI0MDk4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4X3F1ZXVlX3J4X3dvcmtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jPTE2MT1FWFBPUlRfU1lNQk9MX0dQTChtd2lmaWV4X3F1ZXVlX21haW5fd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy0xNjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYzoxNjM6c3RhdGljIHZvaWQgbXdpZmlleF9xdWV1ZV9yeF93b3JrKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy0xNjQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYz0yNDg9aW50IG13aWZpZXhfbWFpbl9wcm9jZXNzKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jLTI3OC1cXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2VkZWxheV9tYWluX3dvcmsgPSB0cnVlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmM6Mjc5OlxcdFxcdFxcdG13aWZpZXhfcXVldWVfcnhfd29yayhhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jLTI4MC1cXHRcXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtMjkxLVxcdFxcdGlmIChhZGFwdGVyLVxcdTAwM2VyeF93b3JrX2VuYWJsZWQgXFx1MDAyNlxcdTAwMjYgYWRhcHRlci1cXHUwMDNlZGF0YV9yZWNlaXZlZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jOjI5MjpcXHRcXHRcXHRtd2lmaWV4X3F1ZXVlX3J4X3dvcmsoYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy0yOTMtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDAzOjA2OjI3LjA1NDM3OTE2OVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTE2NTg3MTY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzpcblxuKipBbmFseXppbmcgYG13aWZpZXhfbWFpbl9wcm9jZXNzYCBhbmQgTWFuYWdlbWVudCBQYWNrZXQgUGFyc2luZyoqXG5cblJpZ2h0LCBgbXdpZmlleF9tYWluX3Byb2Nlc3NgLi4uIHRoYXQncyB0aGUgbWFpbiBsb29wLCB0aGUgaGVhcnQgb2YgdGhlIGRyaXZlcidzIG9wZXJhdGlvbi4gU28sIG9idmlvdXNseSwgaXQncyByZWFjaGFibGU7IGl0ICpoYXMqIHRvIGJlLiBOb3csIHdoZXJlIGFyZSB3ZSB3aXRoIHRob3NlIG1hbmFnZW1lbnQgcGFja2V0cz8gTGV0J3Mgem9vbSBpbiBvbiBgbXdpZmlleF9wYXJzZV9tZ210X3BhY2tldGAgaW4gYHV0aWwuY2AuIEkgbmVlZCB0byB2ZXJpZnkgc29tZXRoaW5nIGFib3V0IHRoZSBkZXNpZ24gaGVyZS4gSXMgdGhpcyBmdW5jdGlvbiBkZWNsYXJlZCBhcyBzdGF0aWM/IFRoYXQgaW5mb3JtYXRpb24gaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgc2NvcGUgYW5kIHBvdGVudGlhbCBpbXBhY3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkwMjYsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwMzowNjozMC4xNzA5Njk5OTVaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4NjIxMDk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm13aWZpZXhfcGFyc2VfbWdtdF9wYWNrZXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jPTMwOD1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuYzozMDk6bXdpZmlleF9wYXJzZV9tZ210X3BhY2tldChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCB1OCAqcGF5bG9hZCwgdTE2IGxlbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jLTMxMC1cXHRcXHRcXHQgIHN0cnVjdCByeHBkICpyeF9wZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmM9NDA1PW13aWZpZXhfcHJvY2Vzc19tZ210X3BhY2tldChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuYy00MzQtXFx0aWYgKGllZWU4MDIxMV9pc19tZ210KGllZWVfaGRyLVxcdTAwM2VmcmFtZV9jb250cm9sKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmM6NDM1OlxcdFxcdGlmIChtd2lmaWV4X3BhcnNlX21nbXRfcGFja2V0KHByaXYsICh1OCAqKWllZWVfaGRyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmMtNDM2LVxcdFxcdFxcdFxcdFxcdCAgICAgIHBrdF9sZW4sIHJ4X3BkKSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDM6MDY6MzAuMjI5NTk1MjEzWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMTk1OTQ1MTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkFuYWx5emluZyB0aGUgRnVuY3Rpb24gQ2FsbCBDaGFpbioqXG5cblJpZ2h0LCBzbyBgbXdpZmlleF9wYXJzZV9tZ210X3BhY2tldGAuLi4gdGhhdCdzIGRlZmluaXRlbHkgYSBgc3RhdGljYCBmdW5jdGlvbi4gSSByZW1lbWJlciB0aGF0LiBOb3csIHRoZSBrZXkgaXMgdG8gdW5kZXJzdGFuZCBob3cgaXQncyBiZWluZyB1c2VkLiBJdCBsb29rcyBsaWtlIGl0J3MgY2FsbGVkIGJ5IGBtd2lmaWV4X3Byb2Nlc3NfbWdtdF9wYWNrZXRgLiBUaGUgcXVlc3Rpb24gdGhhdCdzIGJ1Z2dpbmcgbWUgaXMgd2hldGhlciBgbXdpZmlleF9wcm9jZXNzX21nbXRfcGFja2V0YCBpdHNlbGYgaXMgYW4gZXhwb3J0ZWQgc3ltYm9sIG9yIGlmIGl0J3MgY29uZmluZWQgdG8gdGhlIGN1cnJlbnQgY29tcGlsYXRpb24gdW5pdC4gVGhhdCB3aWxsIGluZm9ybSBteSBuZXh0IHN0ZXBzIGluIGRpc3NlY3RpbmcgaXRzIGxvZ2ljLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSBJIGNhbiBvYnNlcnZlIHRoZSBleGVjdXRpb24gb2YgdGhvc2UgZnVuY3Rpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NTQ5LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDM6MDY6MzMuNDQ5MTkxODI2WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTI3NDMwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4X3Byb2Nlc3NfbWdtdF9wYWNrZXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oPTEwNjg9dm9pZCBtd2lmaWV4X2hvc3RfbWxtZV9kaXNjb25uZWN0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTEwNzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxMDcxOmludCBtd2lmaWV4X3Byb2Nlc3NfbWdtdF9wYWNrZXQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTEwNzItXFx0XFx0XFx0XFx0c3RydWN0IHNrX2J1ZmYgKnNrYik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX3J4LmM9MTg5PWludCBtd2lmaWV4X3Byb2Nlc3Nfc3RhX3J4X3BhY2tldChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9yeC5jLTIxOC1cXHRpZiAocnhfcGt0X3R5cGUgPT0gUEtUX1RZUEVfTUdNVCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfcnguYzoyMTk6XFx0XFx0cmV0ID0gbXdpZmlleF9wcm9jZXNzX21nbXRfcGFja2V0KHByaXYsIHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9yeC5jLTIyMC1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF90eHJ4LmM9MzczPWludCBtd2lmaWV4X3Byb2Nlc3NfdWFwX3J4X3BhY2tldChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF90eHJ4LmMtNDE2LVxcdGlmIChyeF9wa3RfdHlwZSA9PSBQS1RfVFlQRV9NR01UKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF90eHJ4LmM6NDE3OlxcdFxcdHJldCA9IG13aWZpZXhfcHJvY2Vzc19tZ210X3BhY2tldChwcml2LCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfdHhyeC5jLTQxOC1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuYz00MDQ9aW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuYzo0MDU6bXdpZmlleF9wcm9jZXNzX21nbXRfcGFja2V0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuYy00MDYtXFx0XFx0XFx0ICAgIHN0cnVjdCBza19idWZmICpza2IpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDAzOjA2OjMzLjUwNDQ3MDQ5NVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MjgyODM3MTAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZvY3VzaW5nIG9uIE1hcnZlbGwgV2lGaS1FeCBEcml2ZXIgU3ltYm9sIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIGZ1bmN0aW9uczogYG13aWZpZXhfcHJvY2Vzc19tZ210X3BhY2tldGAsIGBtd2lmaWV4X3Byb2Nlc3Nfc3RhX3J4X3BhY2tldGAsIGBtd2lmaWV4X3Byb2Nlc3NfdWFwX3J4X3BhY2tldGAsIGFuZCBgbXdpZmlleF9oYW5kbGVfcnhfcGFja2V0YC4gVGhleSdyZSBhbGwgbm9uLXN0YXRpYywgd2hpY2ggbWVhbnMgdGhleSdyZSBwb3RlbnRpYWwgZW50cnkgcG9pbnRzLiBUaGUgbW9zdCBkaXJlY3Qgb25lIGxvb2tzIGxpa2UgYG13aWZpZXhfcHJvY2Vzc19tZ210X3BhY2tldGAsIHNvIEknbGwgc3RhcnQgd2l0aCB0aGF0LlxuXG5Ob3csIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgc3ltYm9scyBhcmUgcmVsZXZhbnQgaGVyZSwgc3BlY2lmaWNhbGx5IGluIHRoZSBjb250ZXh0IG9mIGBNV0lGSUVYX1VTQmAuIExldCdzIHRha2UgYSBsb29rIGF0IHRoZSBLY29uZmlnIGZpbGUgZm9yIHRoZSBNYXJ2ZWxsIGRyaXZlci4gT2theSwgc28gd2UndmUgZ290IGBNV0lGSUVYYCwgd2hpY2ggaXMgdGhlIGJhc2UgZHJpdmVyLCBhbmQgdGhlbiB3ZSBoYXZlIGBNV0lGSUVYX1NESU9gLCBgTVdJRklFWF9QQ0lFYCwgYW5kIGBNV0lGSUVYX1VTQmAgZm9yIGRpZmZlcmVudCBpbnRlcmZhY2VzLiBTaW5jZSB3ZSdyZSBpbnRlcmVzdGVkIGluIFVTQiwgYE1XSUZJRVhfVVNCYCBpcyBkZWZpbml0ZWx5IG9uZSBvZiB0aGUga2V5IHN5bWJvbHMuIFdlIGFsc28gbmVlZCB0byBlbnN1cmUgd2UgaGF2ZSBgTVdJRklFWGAgZW5hYmxlZCwgd2hpY2ggaXMgdGhlIHBhcmVudCBjb25maWd1cmF0aW9uLlxuXG5JIHNob3VsZCBhbHNvIG1ha2Ugc3VyZSB3ZSBoYXZlIHRoZSByZXF1aXJlZCBkZXBlbmRlbmNpZXMgZm9yIGBNV0lGSUVYYC4gT2theSwgaXQgbG9va3MgbGlrZSBgTUFDODAyMTFgIGlzIGVzc2VudGlhbCwgYW5kIHNpbmNlIGBNQUM4MDIxMWAgdXN1YWxseSBkZXBlbmRzIG9uIGBDRkc4MDIxMWAgLCB3ZSBtdXN0IGVuc3VyZSBib3RoIGFyZSBlbmFibGVkLiBBbmQgb2YgY291cnNlLCB3ZSBuZWVkIGBVU0JgLiBOb3cgdGhhdCBJIHRoaW5rIGFib3V0IGl0LCB3ZSBzaG91bGQgYWxzbyBpbmNsdWRlIGBXTEFOYCwgYXMgdGhhdCdzIG9mdGVuIGEgcGFyZW50IHJlcXVpcmVtZW50IGZvciB3aXJlbGVzcyBkcml2ZXJzLlxuXG5UaGVyZWZvcmUsIHRoZSBzeW1ib2xzIG9mIGludGVyZXN0IHNob3VsZCBiZSBgQ0ZHODAyMTFgLCBgTUFDODAyMTFgLCBgVVNCYCwgYE1XSUZJRVhgLCBhbmQgYE1XSUZJRVhfVVNCYCwgcGx1cyBgV0xBTmAuIEdvdCBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAzODgsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDM6MDY6NDEuNzg3MzEwMjg3WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Nzg2Njg1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTVdJRklFWFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjI6Y29uZmlnIE1XSUZJRVhcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6MTI6Y29uZmlnIE1XSUZJRVhfU0RJT1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTEzLVxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBTRDg3ODYvU0Q4Nzg3L1NEODc5Ny9TRDg4ODcvU0Q4ODk3L1NEODk3Ny9TRDg5NzgvU0Q4OTg3L1NEODk5N1xcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTI0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjI1OmNvbmZpZyBNV0lGSUVYX1BDSUVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0yNi1cXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgUENJRSA4NzY2Lzg4OTcvODk5N1xcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTM2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjM3OmNvbmZpZyBNV0lGSUVYX1VTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTM4LVxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBVU0I4NzY2Lzg3OTcvODk5N1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDM6MDY6NDEuODQ1MTgwNTg2WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwMTM5MTk5MzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNYXJ2ZWxsIFdpcmVsZXNzIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgdGltZSB0byBnZXQgdG8gd29yay4gRmlyc3QgdGhpbmcncyBmaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBNYXJ2ZWxsIHdpcmVsZXNzIGRyaXZlciBpcyBjb25maWd1cmVkIHdpdGhpbiB0aGUga2VybmVsLiBMZXQncyBzdGFydCBieSBuYXZpZ2F0aW5nIHRvIHRoZSByZWxldmFudCBLY29uZmlnIGZpbGUuIEknbSBnb2luZyB0byBsb29rIGF0IGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWdgLiBUaGlzIGZpbGUgd2lsbCBnaXZlIG1lIHRoZSBidWlsZGluZyBibG9ja3MgZm9yIGhvdyB0aGUgZHJpdmVyJ3MgZmVhdHVyZXMgYXJlIHByZXNlbnRlZCBkdXJpbmcga2VybmVsIGNvbmZpZ3VyYXRpb24uIEkgZXhwZWN0IHRvIGZpbmQgZGVwZW5kZW5jaWVzLCBkZWZhdWx0IHZhbHVlcywgaGVscCB0ZXh0LCBhbmQgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggZGlmZmVyZW50IG9wdGlvbnMgYXJlIGVuYWJsZWQgb3IgZGlzYWJsZWQuIFRoaXMgd2lsbCBnaXZlIG1lIHRoZSBmb3VuZGF0aW9uIGZvciBhbmFseXppbmcgaXRzIGJlaGF2aW9yIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIHdpcmVsZXNzIHN1YnN5c3RlbS4gVW5kZXJzdGFuZGluZyB0aGUgS2NvbmZpZyBpcyBjcml0aWNhbCBmb3IgYW55IHN1YnNlcXVlbnQgaW52ZXN0aWdhdGlvbiBvZiB0aGlzIGRyaXZlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIwODEsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwMzowNjo0NC44NTkxMDI4MjRaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTYwNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIFdMQU5fVkVORE9SX01BUlZFTExcXG4gICAzOlxcdFxcdGJvb2wgXFxcIk1hcnZlbGwgZGV2aWNlc1xcXCJcXG4gICA0OlxcdFxcdGRlZmF1bHQgeVxcbiAgIDU6XFx0XFx0aGVscFxcbiAgIDY6XFx0XFx0ICBJZiB5b3UgaGF2ZSBhIHdpcmVsZXNzIGNhcmQgYmVsb25naW5nIHRvIHRoaXMgY2xhc3MsIHNheSBZLlxcbiAgIDc6XFx0XFxuICAgODpcXHRcXHQgIE5vdGUgdGhhdCB0aGUgYW5zd2VyIHRvIHRoaXMgcXVlc3Rpb24gZG9lc24ndCBkaXJlY3RseSBhZmZlY3QgdGhlXFxuICAgOTpcXHRcXHQgIGtlcm5lbDogc2F5aW5nIE4gd2lsbCBqdXN0IGNhdXNlIHRoZSBjb25maWd1cmF0b3IgdG8gc2tpcCBhbGwgdGhlXFxuICAxMDpcXHRcXHQgIHF1ZXN0aW9ucyBhYm91dCB0aGVzZSBjYXJkcy4gSWYgeW91IHNheSBZLCB5b3Ugd2lsbCBiZSBhc2tlZCBmb3JcXG4gIDExOlxcdFxcdCAgeW91ciBzcGVjaWZpYyBjYXJkIGluIHRoZSBmb2xsb3dpbmcgcXVlc3Rpb25zLlxcbiAgMTI6XFx0XFxuICAxMzpcXHRpZiBXTEFOX1ZFTkRPUl9NQVJWRUxMXFxuICAxNDpcXHRcXG4gIDE1OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9saWJlcnRhcy9LY29uZmlnXFxcIlxcbiAgMTY6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL2xpYmVydGFzX3RmL0tjb25maWdcXFwiXFxuICAxNzpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnXFxcIlxcbiAgMTg6XFx0XFxuICAxOTpcXHRjb25maWcgTVdMOEtcXG4gIDIwOlxcdFxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIDg4Vzh4eHggUENJL1BDSWUgV2lyZWxlc3Mgc3VwcG9ydFxcXCJcXG4gIDIxOlxcdFxcdGRlcGVuZHMgb24gTUFDODAyMTEgXFx1MDAyNlxcdTAwMjYgUENJXFxuICAyMjpcXHRcXHRoZWxwXFxuICAyMzpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIE1hcnZlbGwgVE9QRE9HIDgwMi4xMSB3aXJlbGVzcyBjYXJkcy5cXG4gIDI0OlxcdFxcbiAgMjU6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXFxuICAyNjpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIG13bDhrLiAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gIDI3OlxcdFxcbiAgMjg6XFx0ZW5kaWYgIyBXTEFOX1ZFTkRPUl9NQVJWRUxMXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDAzOjA2OjQ0Ljg1OTE2MDM1NFoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjU0MzA4MTMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipLY29uZmlnIERlcGVuZGVuY3kgQ2hlY2sqKlxuXG5SaWdodCwgc28gSSBzZWUgd2UncmUgZGVhbGluZyB3aXRoIGEgc3BlY2lmaWMgdmVuZG9yLCBNYXJ2ZWxsLCB3aXRoaW4gdGhlIHdpcmVsZXNzIExBTiBzdWJzeXN0ZW0uIFRoZSBpbW1lZGlhdGUgY2x1ZSBpcyBgV0xBTl9WRU5ET1JfTUFSVkVMTGAgYmVpbmcgZmxhZ2dlZC4gQW5kIG9mIGNvdXJzZSwgdGhlIGdlbmVyYWwgYFdMQU5gIHN1cHBvcnQgaXMgaW1wbGllZC4gR290dGEgY29uZmlybSBkZXBlbmRlbmNpZXMgYmVmb3JlIEkgZGlnIGRlZXBlci5cblxuVGltZSB0byBoZWFkIG92ZXIgdG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWdgLiBUaGF0J3Mgd2hlcmUgYWxsIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSB3aXJlbGVzcyBkcml2ZXJzIHJlc2lkZS4gR290dGEgc3RhcnQgdGhlcmUgYW5kIHRyYWNlIHRoZSBLY29uZmlnIGhpZXJhcmNoeS4gU2VlIGhvdyBgV0xBTl9WRU5ET1JfTUFSVkVMTGAgaXMgZGVmaW5lZCwgd2hhdCBpdHMgZGVwZW5kZW5jaWVzIGFyZSwgYW5kIHdoYXQgb3RoZXIgb3B0aW9ucyBtaWdodCBiZSBjb250aW5nZW50IG9uIGl0LiBUaGlzIGlzIHdoZXJlIEknbGwgZmluZCB3aGF0IG5lZWRzIHRvIGJlIGVuYWJsZWQgb3IgdmVyaWZpZWQuIEkgZXhwZWN0IHRvIGZpbmQgYFdMQU5gIGFzIGFuICppbW1lZGlhdGUqIGRlcGVuZGVuY3ksIGJ1dCB0aGVyZSBtaWdodCBiZSBvdGhlciBrZXJuZWwgZmVhdHVyZSBkZXBlbmRlbmNpZXMgb3IgZGV2aWNlLXNwZWNpZmljIHJlcXVpcmVtZW50cyBJIG5lZWQgdG8gYWNjb3VudCBmb3IgYXMgd2VsbC4gTGV0J3Mgc2VlIHdoYXQgdGhhdCBLY29uZmlnIGZpbGUgcmV2ZWFscy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI3MzIsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDAzOjA2OjQ4LjExMzQ3MTg1NloiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDU0MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgV2lyZWxlc3MgTEFOIGRldmljZSBjb25maWd1cmF0aW9uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdG1lbnVjb25maWcgV0xBTlxcbiAgIDc6XFx0XFx0Ym9vbCBcXFwiV2lyZWxlc3MgTEFOXFxcIlxcbiAgIDg6XFx0XFx0ZGVwZW5kcyBvbiAhUzM5MFxcbiAgIDk6XFx0XFx0ZGVwZW5kcyBvbiBORVRcXG4gIDEwOlxcdFxcdHNlbGVjdCBXSVJFTEVTU1xcbiAgMTE6XFx0XFx0ZGVmYXVsdCB5XFxuICAxMjpcXHRcXHRoZWxwXFxuICAxMzpcXHRcXHQgIFRoaXMgc2VjdGlvbiBjb250YWlucyBhbGwgdGhlIHByZSA4MDIuMTEgYW5kIDgwMi4xMSB3aXJlbGVzc1xcbiAgMTQ6XFx0XFx0ICBkZXZpY2UgZHJpdmVycy4gRm9yIGEgY29tcGxldGUgbGlzdCBvZiBkcml2ZXJzIGFuZCBkb2N1bWVudGF0aW9uXFxuICAxNTpcXHRcXHQgIG9uIHRoZW0gcmVmZXIgdG8gdGhlIHdpcmVsZXNzIHdpa2k6XFxuICAxNjpcXHRcXG4gIDE3OlxcdFxcdCAgaHR0cHM6Ly93aXJlbGVzcy53aWtpLmtlcm5lbC5vcmcvZW4vdXNlcnMvRHJpdmVyc1xcbiAgMTg6XFx0XFxuICAxOTpcXHRpZiBXTEFOXFxuICAyMDpcXHRcXG4gIDIxOlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYWRtdGVrL0tjb25maWdcXFwiXFxuICAyMjpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9LY29uZmlnXFxcIlxcbiAgMjM6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdG1lbC9LY29uZmlnXFxcIlxcbiAgMjQ6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9LY29uZmlnXFxcIlxcbiAgMjU6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9LY29uZmlnXFxcIlxcbiAgMjY6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9LY29uZmlnXFxcIlxcbiAgMjc6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWdcXFwiXFxuICAyODpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL0tjb25maWdcXFwiXFxuICAyOTpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC9LY29uZmlnXFxcIlxcbiAgMzA6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL0tjb25maWdcXFwiXFxuICAzMTpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9LY29uZmlnXFxcIlxcbiAgMzI6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9wdXJlbGlmaS9LY29uZmlnXFxcIlxcbiAgMzM6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvS2NvbmZpZ1xcXCJcXG4gIDM0OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9LY29uZmlnXFxcIlxcbiAgMzU6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZ1xcXCJcXG4gIDM2OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL0tjb25maWdcXFwiXFxuICAzNzpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3N0L0tjb25maWdcXFwiXFxuICAzODpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3RpL0tjb25maWdcXFwiXFxuICAzOTpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL0tjb25maWdcXFwiXFxuICA0MDpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3F1YW50ZW5uYS9LY29uZmlnXFxcIlxcbiAgNDE6XFx0XFxuICA0MjpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZ1xcXCJcXG4gIDQzOlxcdFxcbiAgNDQ6XFx0ZW5kaWYgIyBXTEFOXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDAzOjA2OjQ4LjExMzU3ODczNloiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzEyMjk3MDg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKldpcmVsZXNzIERyaXZlciBMYW5kc2NhcGUgLSBBIFF1aWNrIE1lbnRhbCBBdWRpdCoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCB0aGUgd2lyZWxlc3MgZHJpdmVyIHNpdHVhdGlvbi4gSSBuZWVkIHRvIGdldCBhIGdyaXAgb24gdGhlIGtleSBwbGF5ZXJzIGhlcmUuIFJpZ2h0IG5vdywgSSdtIG1lbnRhbGx5IHBhcnNpbmcgdGhlIG9idmlvdXMgb25lczogYFdMQU5gIGlzIHRoZSB1bWJyZWxsYSB0ZXJtLCBvZiBjb3Vyc2UuIFRoZW4sIEkgaGF2ZSBgV0xBTl9WRU5ET1JfTUFSVkVMTGAgaW4gbWluZCwgZ2l2ZW4gc29tZSByZWNlbnQgd29yay4gSSBuZWVkIHRvIGtlZXAgdGhvc2UgTWFydmVsbCBkcml2ZXJzIGluIG1pbmQsIGFzIEkga25vdyB0aGF0IGBNV0lGSUVYYCBhbmQgYE1XSUZJRVhfVVNCYCBhcmUgTWFydmVsbCBzcGVjaWZpYy4gSSBzaG91bGQgbWFrZSBzdXJlIEkgaGF2ZSB0aGUgY29udGV4dCBoZXJlLlxuXG5BbmQsIG9mIGNvdXJzZSwgdGhlcmUncyB0aGUgYnJvYWRlciBhcmNoaXRlY3R1cmFsIGNvbnRleHQ6IGBNQUM4MDIxMWAgYW5kIGBDRkc4MDIxMWAgLSB0aG9zZSBjb3JlIHdpcmVsZXNzIG5ldHdvcmsgc3RhY2sgY29tcG9uZW50cyBhcmUgYWx3YXlzIHRvcCBvZiBtaW5kLiBCdXQgYmVmb3JlIEkgZGl2ZSBpbnRvIGFueXRoaW5nIGZ1cnRoZXIsIGl04oCZcyBiZXN0IHRvIHRha2UgYSBtb21lbnQgYW5kIGp1c3QgcmUtY29uZmlybSB0aGUgZGVwZW5kZW5jaWVzIGZvciBgTVdJRklFWGAsIHRvIG1ha2Ugc3VyZSBldmVyeXRoaW5nIGxpbmVzIHVwIGFzIGV4cGVjdGVkLiBJIG5lZWQgdG8gYmUgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM2OTcsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDAzOjA2OjUzLjgyNTg3OTUzWiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzkxNDA1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTVdJRklFWFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6Mjpjb25maWcgTVdJRklFWFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgV2lGaS1FeCBEcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0xMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzoxMjpjb25maWcgTVdJRklFWF9TRElPXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMTMtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFNEODc4Ni9TRDg3ODcvU0Q4Nzk3L1NEODg4Ny9TRDg4OTcvU0Q4OTc3L1NEODk3OC9TRDg5ODcvU0Q4OTk3XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6MjU6Y29uZmlnIE1XSUZJRVhfUENJRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTI2LVxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBQQ0lFIDg3NjYvODg5Ny84OTk3XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6Mzc6Y29uZmlnIE1XSUZJRVhfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzgtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFVTQjg3NjYvODc5Ny84OTk3XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwMzowNjo1My44ODM3OTc3NzhaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMyNjk4MTIyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKkFzc2Vzc2luZyBEZXBlbmRlbmNpZXMgZm9yIE1XSUZJRVgqKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBCZWZvcmUgSSBwcm9jZWVkIGFueSBmdXJ0aGVyLCBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBzb21ldGhpbmcuIEknbSBzdG9wcGluZyB0byBleHBsaWNpdGx5IGlkZW50aWZ5IHRoZSBkZXBlbmRlbmNpZXMgb2YgYE1XSUZJRVhgLiBJIGtub3cgdGhpcyBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIGhvdyBpdCBmaXRzIGludG8gdGhlIG92ZXJhbGwgc3lzdGVtIGFuZCBob3cgY2hhbmdlcyB0byBpdCBtaWdodCBpbXBhY3Qgb3RoZXIgbW9kdWxlcy4gR3Jhc3BpbmcgdGhlIFwiZGVwZW5kcyBvblwiIHJlbGF0aW9uc2hpcHMgaXMgY3JpdGljYWwgdG8gYXZvaWQgaW50cm9kdWNpbmcgcmVncmVzc2lvbnMgb3IgdW5leHBlY3RlZCBiZWhhdmlvcnMgbGF0ZXIgb24uIFNvLCBiZWZvcmUgSSBkbyBhbnl0aGluZyBlbHNlLCBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIGV4YWN0IGRlcGVuZGVuY2llcyBvZiBgTVdJRklFWGAuIEknbGwgZGVsdmUgaW50byB0aGUgbmVjZXNzYXJ5IGRvY3VtZW50YXRpb24sIGNvbmZpZ3VyYXRpb24gZmlsZXMsIG9yIGJ1aWxkIHN5c3RlbXMgdG8gZGV0ZXJtaW5lIHdoYXQgb3RoZXIgY29tcG9uZW50cyBvciBsaWJyYXJpZXMgdGhpcyBtb2R1bGUgcmVsaWVzIG9uLiBUaGlzIGlzIGVzc2VudGlhbCBmb3IgYSBjb21wbGV0ZSB1bmRlcnN0YW5kaW5nIG9mIGl0cyBmdW5jdGlvbmFsaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDQzNywiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDAzOjA2OjU3LjIxMDc4MTQ2OVoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODI5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIE1XSUZJRVhcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyXFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxcbiAgIDU6XFx0XFx0aGVscFxcbiAgIDY6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTWFydmVsbFxcbiAgIDc6XFx0XFx0ICA4MDIuMTFuL2FjIGNoaXBzZXRzLlxcbiAgIDg6XFx0XFxuICAgOTpcXHRcXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXFxuICAxMDpcXHRcXHQgIG13aWZpZXguXFxuICAxMTpcXHRcXG4gIDEyOlxcdGNvbmZpZyBNV0lGSUVYX1NESU9cXG4gIDEzOlxcdFxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBTRDg3ODYvU0Q4Nzg3L1NEODc5Ny9TRDg4ODcvU0Q4ODk3L1NEODk3Ny9TRDg5NzgvU0Q4OTg3L1NEODk5N1xcXCJcXG4gIDE0OlxcdFxcdGRlcGVuZHMgb24gTVdJRklFWCBcXHUwMDI2XFx1MDAyNiBNTUNcXG4gIDE1OlxcdFxcdHNlbGVjdCBGV19MT0FERVJcXG4gIDE2OlxcdFxcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxcbiAgMTc6XFx0XFx0aGVscFxcbiAgMTg6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTWFydmVsbFxcbiAgMTk6XFx0XFx0ICA4Nzg2Lzg3ODcvODc5Ny84ODg3Lzg4OTcvODk3Ny84OTc4Lzg5ODcvODk5NyBjaGlwc2V0cyB3aXRoXFxuICAyMDpcXHRcXHQgIFNESU8gaW50ZXJmYWNlLiBTRDg5NzggaXMgYWxzbyBrbm93biBhcyBOWFAgSVc0MTYuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDAzOjA2OjU3LjIxMDg0MDg4OVoiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3OTc4MjIwODg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBNYXJ2ZWxsIFdpRmkgRHJpdmVyIE1vZGlmaWNhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBNYXJ2ZWxsIFdpRmkgZHJpdmVyLiBGaXJzdCB0aGluZ3MgZmlyc3QsIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIHN5bWJvbHMgYXJlIGNsZWFybHkgcmVsYXRlZCB0byBgQ0ZHODAyMTFgLCB3aGljaCB0aGlzIGRyaXZlciBkZXBlbmRzIG9uLiAgYE1XSUZJRVhfVVNCYCBhbHNvIGNvbWVzIGludG8gcGxheSwgd2hpY2ggaW4gdHVybiBkZXBlbmRzIG9uIGJvdGggYE1XSUZJRVhgIGFuZCBgVVNCYC4gIFRoZXJlZm9yZSwgYENGRzgwMjExYCwgYFdMQU5gLCBgV0xBTl9WRU5ET1JfTUFSVkVMTGAsIGBNV0lGSUVYYCwgYE1XSUZJRVhfVVNCYCwgYW5kIGBVU0JgIGFyZSBhbGwgY3J1Y2lhbCBmb3IgY29udGV4dCBoZXJlLlxuXG5Ob3csIGxldCdzIHpvb20gaW4gb24gdGhlIGNvcmUgb2YgdGhlIGNoYW5nZSDigJMgdGhlIGBtd2lmaWV4X3Byb2Nlc3NfbWdtdF9wYWNrZXRgIGZ1bmN0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY2FsbCBncmFwaC4gQWgsIHJpZ2h0LCBpdCdzIGNhbGxlZCBmcm9tIGJvdGggYG13aWZpZXhfcHJvY2Vzc19zdGFfcnhfcGFja2V0YCBhbmQgYG13aWZpZXhfcHJvY2Vzc191YXBfcnhfcGFja2V0YCwgd2hpY2ggYXJlIHRoZW1zZWx2ZXMgY2FsbGVkIGZyb20gYG13aWZpZXhfaGFuZGxlX3J4X3BhY2tldGAuIFRoYXQgbmFycm93cyBkb3duIHRoZSBrZXkgZm9jdXMgc3ltYm9sczogYG13aWZpZXhfcHJvY2Vzc19tZ210X3BhY2tldGAsIGBtd2lmaWV4X3Byb2Nlc3Nfc3RhX3J4X3BhY2tldGAsIGBtd2lmaWV4X3Byb2Nlc3NfdWFwX3J4X3BhY2tldGAsIGFuZCBgbXdpZmlleF9oYW5kbGVfcnhfcGFja2V0YC5cblxuSSdtIHZlcmlmeWluZyB0aGF0IGBtd2lmaWV4X3Byb2Nlc3NfbWdtdF9wYWNrZXRgIGlzIHRoZSBiZXN0IGVudHJ5IHBvaW50IGZvciBmdXJ0aGVyIGludmVzdGlnYXRpb24uIFllcywgaXQncyBub24tc3RhdGljIGFuZCBkaXJlY3RseSBjYWxscyB0aGUgbW9kaWZpZWQgZnVuY3Rpb24sIGBtd2lmaWV4X3BhcnNlX21nbXRfcGFja2V0YC4gVGhlIHBhdGNoIGludHJvZHVjZXMgYm91bmRzIGNoZWNraW5nIGluIGBtd2lmaWV4X3BhcnNlX21nbXRfcGFja2V0YCwgd2hpY2ggaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkIHZ1bG5lcmFiaWxpdHkuIEdpdmVuIHRoYXQgdGhpcyBpcyByZWFjaGFibGUgdmlhIFVTQiBkdW1teV9oY2QsIEknbSBjb25maWRlbnQgaW4gbWFya2luZyBpdCBhcyBgV29ydGhGdXp6aW5nPXRydWVgLlxuXG5KdXN0IGEgZmluYWwgY2hlY2sgdG8gZW5zdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmc6IGBDRkc4MDIxMWAgYWxzbyBkZXBlbmRzIG9uIGBORVRgIGFuZCBgVVNCYCBkZXBlbmRzIG9uIGBVU0JfU1VQUE9SVGAsIGJ1dCBJIHRoaW5rIEkndmUgZ290IGEgaGFuZGxlIG9uIHRoZSBrZXkgcGllY2VzIGZvciBhbmFseXNpcy5cbkFscmlnaHQsIHRoYXQncyB0aGUgYXNzZXNzbWVudC4gVGltZSB0byByZWNvcmQgdGhlIGZpbmRpbmdzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTA0MSwiT3V0cHV0VG9rZW5zIjoyMDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNzUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwMzowNzowNS4xODkwNjM3MDhaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDI0NDMyOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiV0xBTlwiLFxuICAgIFwiV0xBTl9WRU5ET1JfTUFSVkVMTFwiLFxuICAgIFwiTVdJRklFWFwiLFxuICAgIFwiTVdJRklFWF9VU0JcIixcbiAgICBcIkNGRzgwMjExXCIsXG4gICAgXCJVU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtd2lmaWV4X3Byb2Nlc3NfbWdtdF9wYWNrZXRcIixcbiAgICBcIm13aWZpZXhfcHJvY2Vzc19zdGFfcnhfcGFja2V0XCIsXG4gICAgXCJtd2lmaWV4X3Byb2Nlc3NfdWFwX3J4X3BhY2tldFwiLFxuICAgIFwibXdpZmlleF9oYW5kbGVfcnhfcGFja2V0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gYG13aWZpZXhfcGFyc2VfbWdtdF9wYWNrZXRgIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyB3aGVuIHBhcnNpbmcgbWFuYWdlbWVudCBwYWNrZXRzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIE1hcnZlbGwgV2lGaS1FeCBkcml2ZXIuIFRoZSBkcml2ZXIgc3VwcG9ydHMgVVNCIGludGVyZmFjZXMgKGBNV0lGSUVYX1VTQmApLCB3aGljaCBjYW4gYmUgZnV6emVkIHVzaW5nIFVTQiBkdW1teV9oY2QuIFRoZSBtb2RpZmllZCBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIHRoZSBtYWluIFJYIHByb2Nlc3NpbmcgcGF0aC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJXTEFOXCIsXG4gICAgXCJXTEFOX1ZFTkRPUl9NQVJWRUxMXCIsXG4gICAgXCJNV0lGSUVYXCIsXG4gICAgXCJNV0lGSUVYX1VTQlwiLFxuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIlVTQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm13aWZpZXhfcHJvY2Vzc19tZ210X3BhY2tldFwiLFxuICAgIFwibXdpZmlleF9wcm9jZXNzX3N0YV9yeF9wYWNrZXRcIixcbiAgICBcIm13aWZpZXhfcHJvY2Vzc191YXBfcnhfcGFja2V0XCIsXG4gICAgXCJtd2lmaWV4X2hhbmRsZV9yeF9wYWNrZXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byBgbXdpZmlleF9wYXJzZV9tZ210X3BhY2tldGAgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzIHdoZW4gcGFyc2luZyBtYW5hZ2VtZW50IHBhY2tldHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgTWFydmVsbCBXaUZpLUV4IGRyaXZlci4gVGhlIGRyaXZlciBzdXBwb3J0cyBVU0IgaW50ZXJmYWNlcyAoYE1XSUZJRVhfVVNCYCksIHdoaWNoIGNhbiBiZSBmdXp6ZWQgdXNpbmcgVVNCIGR1bW15X2hjZC4gVGhlIG1vZGlmaWVkIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB2aWEgdGhlIG1haW4gUlggcHJvY2Vzc2luZyBwYXRoLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowhxlfp[1] Phase: Succeeded StartedAt: 2026-07-25 03:07:30 +0000 UTC FinishedAt: 2026-07-25 03:07:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhxlfp[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-25 03:07:30 +0000 UTC FinishedAt: 2026-07-25 03:07:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhxlfp[2] Phase: Succeeded StartedAt: 2026-07-25 03:07:30 +0000 UTC FinishedAt: 2026-07-25 05:34:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhxlfp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_process_mgmt_packet","mwifiex_process_sta_rx_packet","mwifiex_process_uap_rx_packet","mwifiex_handle_rx_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"e538d511-b63e-4870-8c0b-e768124f54f1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-25 03:07:30 +0000 UTC FinishedAt: 2026-07-25 05:34:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_process_mgmt_packet","mwifiex_process_sta_rx_packet","mwifiex_process_uap_rx_packet","mwifiex_handle_rx_packet"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"e538d511-b63e-4870-8c0b-e768124f54f1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowhxlfp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_process_mgmt_packet","mwifiex_process_sta_rx_packet","mwifiex_process_uap_rx_packet","mwifiex_handle_rx_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"e538d511-b63e-4870-8c0b-e768124f54f1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-25 03:07:30 +0000 UTC FinishedAt: 2026-07-25 03:07:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhxlfp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_process_mgmt_packet","mwifiex_process_sta_rx_packet","mwifiex_process_uap_rx_packet","mwifiex_handle_rx_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"e538d511-b63e-4870-8c0b-e768124f54f1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-25 03:07:30 +0000 UTC FinishedAt: 2026-07-25 03:07:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhxlfp/series-workflowhxlfp-convert-artifact-1148787362/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhxlfp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_process_mgmt_packet","mwifiex_process_sta_rx_packet","mwifiex_process_uap_rx_packet","mwifiex_handle_rx_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"e538d511-b63e-4870-8c0b-e768124f54f1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-25 03:07:51 +0000 UTC FinishedAt: 2026-07-25 03:37:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhxlfp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_process_mgmt_packet","mwifiex_process_sta_rx_packet","mwifiex_process_uap_rx_packet","mwifiex_handle_rx_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"e538d511-b63e-4870-8c0b-e768124f54f1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-25 03:07:51 +0000 UTC FinishedAt: 2026-07-25 03:37:33 +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:*62b6b1ee-a870-421a-bae5-d9f0cf529b7a,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-workflowhxlfp/series-workflowhxlfp-convert-artifact-1148787362/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": "492a8dcb-6858-4af0-9acf-12a0a3719ed3", "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-workflowhxlfp/series-workflowhxlfp-build-action-4034305120/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhxlfp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_process_mgmt_packet","mwifiex_process_sta_rx_packet","mwifiex_process_uap_rx_packet","mwifiex_handle_rx_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"e538d511-b63e-4870-8c0b-e768124f54f1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-25 03:07:51 +0000 UTC FinishedAt: 2026-07-25 03:37:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*62b6b1ee-a870-421a-bae5-d9f0cf529b7a,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-workflowhxlfp/series-workflowhxlfp-convert-artifact-1148787362/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": "492a8dcb-6858-4af0-9acf-12a0a3719ed3", "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-workflowhxlfp/series-workflowhxlfp-build-action-4034305120/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhxlfp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_process_mgmt_packet","mwifiex_process_sta_rx_packet","mwifiex_process_uap_rx_packet","mwifiex_handle_rx_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"e538d511-b63e-4870-8c0b-e768124f54f1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-25 03:37:33 +0000 UTC FinishedAt: 2026-07-25 03:37:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhxlfp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_process_mgmt_packet","mwifiex_process_sta_rx_packet","mwifiex_process_uap_rx_packet","mwifiex_handle_rx_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"e538d511-b63e-4870-8c0b-e768124f54f1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-25 03:37:33 +0000 UTC FinishedAt: 2026-07-25 03:37:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhxlfp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_process_mgmt_packet","mwifiex_process_sta_rx_packet","mwifiex_process_uap_rx_packet","mwifiex_handle_rx_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"e538d511-b63e-4870-8c0b-e768124f54f1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-25 03:37:33 +0000 UTC FinishedAt: 2026-07-25 03:37:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhxlfp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_process_mgmt_packet","mwifiex_process_sta_rx_packet","mwifiex_process_uap_rx_packet","mwifiex_handle_rx_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"e538d511-b63e-4870-8c0b-e768124f54f1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-25 03:37:33 +0000 UTC FinishedAt: 2026-07-25 03:37:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"e538d511-b63e-4870-8c0b-e768124f54f1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhxlfp/series-workflowhxlfp-convert-artifact-4144803325/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhxlfp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_process_mgmt_packet","mwifiex_process_sta_rx_packet","mwifiex_process_uap_rx_packet","mwifiex_handle_rx_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"e538d511-b63e-4870-8c0b-e768124f54f1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-25 03:37:54 +0000 UTC FinishedAt: 2026-07-25 03:40:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhxlfp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_process_mgmt_packet","mwifiex_process_sta_rx_packet","mwifiex_process_uap_rx_packet","mwifiex_handle_rx_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"e538d511-b63e-4870-8c0b-e768124f54f1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-25 03:37:54 +0000 UTC FinishedAt: 2026-07-25 03:40:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*492a8dcb-6858-4af0-9acf-12a0a3719ed3,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-workflowhxlfp/series-workflowhxlfp-build-action-4034305120/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-workflowhxlfp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_process_mgmt_packet","mwifiex_process_sta_rx_packet","mwifiex_process_uap_rx_packet","mwifiex_handle_rx_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"e538d511-b63e-4870-8c0b-e768124f54f1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-25 03:40:32 +0000 UTC FinishedAt: 2026-07-25 03:40:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhxlfp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_process_mgmt_packet","mwifiex_process_sta_rx_packet","mwifiex_process_uap_rx_packet","mwifiex_handle_rx_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"e538d511-b63e-4870-8c0b-e768124f54f1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-25 03:40:32 +0000 UTC FinishedAt: 2026-07-25 03:40:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhxlfp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_process_mgmt_packet","mwifiex_process_sta_rx_packet","mwifiex_process_uap_rx_packet","mwifiex_handle_rx_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"e538d511-b63e-4870-8c0b-e768124f54f1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-25 03:40:32 +0000 UTC FinishedAt: 2026-07-25 04:40:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhxlfp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_process_mgmt_packet","mwifiex_process_sta_rx_packet","mwifiex_process_uap_rx_packet","mwifiex_handle_rx_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"e538d511-b63e-4870-8c0b-e768124f54f1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-25 03:40:32 +0000 UTC FinishedAt: 2026-07-25 04:40:48 +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:*62b6b1ee-a870-421a-bae5-d9f0cf529b7a,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-workflowhxlfp/series-workflowhxlfp-convert-artifact-4144803325/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": "deec59a6-5d80-416b-9228-7025025c2558", "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-workflowhxlfp/series-workflowhxlfp-build-action-1066167897/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhxlfp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_process_mgmt_packet","mwifiex_process_sta_rx_packet","mwifiex_process_uap_rx_packet","mwifiex_handle_rx_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"e538d511-b63e-4870-8c0b-e768124f54f1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-25 03:40:32 +0000 UTC FinishedAt: 2026-07-25 04:40:38 +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:*62b6b1ee-a870-421a-bae5-d9f0cf529b7a,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-workflowhxlfp/series-workflowhxlfp-convert-artifact-4144803325/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": "deec59a6-5d80-416b-9228-7025025c2558", "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-workflowhxlfp/series-workflowhxlfp-build-action-1066167897/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhxlfp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_process_mgmt_packet","mwifiex_process_sta_rx_packet","mwifiex_process_uap_rx_packet","mwifiex_handle_rx_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"e538d511-b63e-4870-8c0b-e768124f54f1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-25 04:40:48 +0000 UTC FinishedAt: 2026-07-25 04:40:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhxlfp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_process_mgmt_packet","mwifiex_process_sta_rx_packet","mwifiex_process_uap_rx_packet","mwifiex_handle_rx_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"e538d511-b63e-4870-8c0b-e768124f54f1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-25 04:40:48 +0000 UTC FinishedAt: 2026-07-25 04:40:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhxlfp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_process_mgmt_packet","mwifiex_process_sta_rx_packet","mwifiex_process_uap_rx_packet","mwifiex_handle_rx_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"e538d511-b63e-4870-8c0b-e768124f54f1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-25 04:40:48 +0000 UTC FinishedAt: 2026-07-25 04:44:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhxlfp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_process_mgmt_packet","mwifiex_process_sta_rx_packet","mwifiex_process_uap_rx_packet","mwifiex_handle_rx_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"e538d511-b63e-4870-8c0b-e768124f54f1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-25 04:40:48 +0000 UTC FinishedAt: 2026-07-25 04:43:56 +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:*deec59a6-5d80-416b-9228-7025025c2558,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-workflowhxlfp/series-workflowhxlfp-build-action-1066167897/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-workflowhxlfp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_process_mgmt_packet","mwifiex_process_sta_rx_packet","mwifiex_process_uap_rx_packet","mwifiex_handle_rx_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"e538d511-b63e-4870-8c0b-e768124f54f1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-25 04:44:06 +0000 UTC FinishedAt: 2026-07-25 05:34:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhxlfp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_process_mgmt_packet","mwifiex_process_sta_rx_packet","mwifiex_process_uap_rx_packet","mwifiex_handle_rx_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"e538d511-b63e-4870-8c0b-e768124f54f1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-25 04:44:06 +0000 UTC FinishedAt: 2026-07-25 05:34:31 +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":["mwifiex_process_mgmt_packet","mwifiex_process_sta_rx_packet","mwifiex_process_uap_rx_packet","mwifiex_handle_rx_packet"],"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:*492a8dcb-6858-4af0-9acf-12a0a3719ed3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*deec59a6-5d80-416b-9228-7025025c2558,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-workflowhxlfp/series-workflowhxlfp-build-action-4034305120/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-workflowhxlfp/series-workflowhxlfp-build-action-1066167897/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowhxlfp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_process_mgmt_packet","mwifiex_process_sta_rx_packet","mwifiex_process_uap_rx_packet","mwifiex_handle_rx_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"e538d511-b63e-4870-8c0b-e768124f54f1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-25 04:44:06 +0000 UTC FinishedAt: 2026-07-25 04:44:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhxlfp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_process_mgmt_packet","mwifiex_process_sta_rx_packet","mwifiex_process_uap_rx_packet","mwifiex_handle_rx_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"e538d511-b63e-4870-8c0b-e768124f54f1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-25 04:44:06 +0000 UTC FinishedAt: 2026-07-25 04:44:13 +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":["mwifiex_process_mgmt_packet","mwifiex_process_sta_rx_packet","mwifiex_process_uap_rx_packet","mwifiex_handle_rx_packet"],"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-workflowhxlfp/series-workflowhxlfp-convert-artifact-1189964930/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhxlfp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_process_mgmt_packet","mwifiex_process_sta_rx_packet","mwifiex_process_uap_rx_packet","mwifiex_handle_rx_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"e538d511-b63e-4870-8c0b-e768124f54f1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-25 04:44:06 +0000 UTC FinishedAt: 2026-07-25 04:44:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhxlfp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_process_mgmt_packet","mwifiex_process_sta_rx_packet","mwifiex_process_uap_rx_packet","mwifiex_handle_rx_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"e538d511-b63e-4870-8c0b-e768124f54f1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-25 04:44:06 +0000 UTC FinishedAt: 2026-07-25 04:44:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhxlfp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_process_mgmt_packet","mwifiex_process_sta_rx_packet","mwifiex_process_uap_rx_packet","mwifiex_handle_rx_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"e538d511-b63e-4870-8c0b-e768124f54f1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-25 04:44:06 +0000 UTC FinishedAt: 2026-07-25 04:44:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhxlfp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_process_mgmt_packet","mwifiex_process_sta_rx_packet","mwifiex_process_uap_rx_packet","mwifiex_handle_rx_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"e538d511-b63e-4870-8c0b-e768124f54f1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-25 04:44:16 +0000 UTC FinishedAt: 2026-07-25 05:34:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhxlfp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_process_mgmt_packet","mwifiex_process_sta_rx_packet","mwifiex_process_uap_rx_packet","mwifiex_handle_rx_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB","CFG80211","USB"],"series_id":"e538d511-b63e-4870-8c0b-e768124f54f1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-25 04:44:16 +0000 UTC FinishedAt: 2026-07-25 05:34:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*492a8dcb-6858-4af0-9acf-12a0a3719ed3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*deec59a6-5d80-416b-9228-7025025c2558,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-workflowhxlfp/series-workflowhxlfp-build-action-4034305120/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-workflowhxlfp/series-workflowhxlfp-build-action-1066167897/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-workflowhxlfp/series-workflowhxlfp-convert-artifact-1189964930/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}