Name: series-workflowwpvsb Phase: Succeeded StartedAt: 2026-08-05 15:34:50 +0000 UTC FinishedAt: 2026-08-05 20:13:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwpvsb[0] Phase: Succeeded StartedAt: 2026-08-05 15:34:50 +0000 UTC FinishedAt: 2026-08-05 16:32:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwpvsb[0].run-triage Phase: Succeeded StartedAt: 2026-08-05 15:34:50 +0000 UTC FinishedAt: 2026-08-05 16:32:31 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ATM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ATM" ], "series_id": "dacc405b-33d3-44ef-a65c-77cd5e161f1e" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "vcc_setsockopt" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA1IDE2OjMwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ZjY19zZXRzb2Nrb3B0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBBVE0gc29ja2V0IG9wdGlvbiBoYW5kbGluZyBpbiB2Y2Nfc2V0c29ja29wdCwgY2hhbmdpbmcgdGhlIHR5cGUgb2YgYSB2YXJpYWJsZSBhbmQgdXNpbmcgY29weV9zYWZlX2Zyb21fc29ja3B0ci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmsgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxNjozMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGE0OWY4OTAxMzViOTRkZWQxMDA2MmI5ZWFiYWE5ZWVjYzQ1NzkxYzRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyA1IDE2OjMwOjM0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9hdG0vY29tbW9uLmMgYi9uZXQvYXRtL2NvbW1vbi5jXG5pbmRleCBjN2Y5MjQwNWRhZjA1Li44MTE5NTcyN2ZhMThiIDEwMDY0NFxuLS0tIGEvbmV0L2F0bS9jb21tb24uY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2F0bS9jb21tb24uY1xuQEAgLTcxMCw3ICYjNDM7NzEwLDcgQEAgaW50IHZjY19zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXG4gXHRcdCAgIHNvY2twdHJfdCBvcHR2YWwsIHVuc2lnbmVkIGludCBvcHRsZW4pXG4ge1xuIFx0c3RydWN0IGF0bV92Y2MgKnZjYztcbi1cdHVuc2lnbmVkIGxvbmcgdmFsdWU7XG4mIzQzO1x0aW50IHZhbHVlO1xuIFx0aW50IGVycm9yO1xuIFxuIFx0aWYgKF9fU09fTEVWRUxfTUFUQ0gob3B0bmFtZSwgbGV2ZWwpIFx1MDAyNlx1MDAyNiBvcHRsZW4gIT0gX19TT19TSVpFKG9wdG5hbWUpKVxuQEAgLTcyMiw4ICYjNDM7NzIyLDEwIEBAIGludCB2Y2Nfc2V0c29ja29wdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLFxuIFx0e1xuIFx0XHRzdHJ1Y3QgYXRtX3FvcyBxb3M7XG4gXG4tXHRcdGlmIChjb3B5X2Zyb21fc29ja3B0cihcdTAwMjZxb3MsIG9wdHZhbCwgc2l6ZW9mKHFvcykpKVxuLVx0XHRcdHJldHVybiAtRUZBVUxUO1xuJiM0MztcdFx0ZXJyb3IgPSBjb3B5X3NhZmVfZnJvbV9zb2NrcHRyKFx1MDAyNnFvcywgc2l6ZW9mKHFvcyksIG9wdHZhbCxcbiYjNDM7XHRcdFx0XHRcdCAgICAgICBvcHRsZW4pO1xuJiM0MztcdFx0aWYgKGVycm9yKVxuJiM0MztcdFx0XHRyZXR1cm4gZXJyb3I7XG4gXHRcdGVycm9yID0gY2hlY2tfcW9zKFx1MDAyNnFvcyk7XG4gXHRcdGlmIChlcnJvcilcbiBcdFx0XHRyZXR1cm4gZXJyb3I7XG5AQCAtNzM3LDggJiM0Mzs3MzksMTAgQEAgaW50IHZjY19zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXG4gXHRcdHJldHVybiAwO1xuIFx0fVxuIFx0Y2FzZSBTT19TRVRDTFA6XG4tXHRcdGlmIChjb3B5X2Zyb21fc29ja3B0cihcdTAwMjZ2YWx1ZSwgb3B0dmFsLCBzaXplb2YodmFsdWUpKSlcbi1cdFx0XHRyZXR1cm4gLUVGQVVMVDtcbiYjNDM7XHRcdGVycm9yID0gY29weV9zYWZlX2Zyb21fc29ja3B0cihcdTAwMjZ2YWx1ZSwgc2l6ZW9mKHZhbHVlKSwgb3B0dmFsLFxuJiM0MztcdFx0XHRcdFx0ICAgICAgIG9wdGxlbik7XG4mIzQzO1x0XHRpZiAoZXJyb3IpXG4mIzQzO1x0XHRcdHJldHVybiBlcnJvcjtcbiBcdFx0aWYgKHZhbHVlKVxuIFx0XHRcdHZjYy1cdTAwM2VhdG1fb3B0aW9ucyB8PSBBVE1fQVRNT1BUX0NMUDtcbiBcdFx0ZWxzZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE2OjMwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtBVE0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2Y2Nfc2V0c29ja29wdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQVRNIHNvY2tldCBvcHRpb24gaGFuZGxpbmcgaW4gdmNjX3NldHNvY2tvcHQsIGNoYW5naW5nIHRoZSB0eXBlIG9mIGEgdmFyaWFibGUgYW5kIHVzaW5nIGNvcHlfc2FmZV9mcm9tX3NvY2twdHIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBuZXR3b3JrIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBhNDlmODkwMTM1Yjk0ZGVkMTAwNjJiOWVhYmFhOWVlY2M0NTc5MWM0CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBBdWcgNSAxNjozMDozNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9hdG0vY29tbW9uLmMgYi9uZXQvYXRtL2NvbW1vbi5jCmluZGV4IGM3ZjkyNDA1ZGFmMDUuLjgxMTk1NzI3ZmExOGIgMTAwNjQ0Ci0tLSBhL25ldC9hdG0vY29tbW9uLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2F0bS9jb21tb24uYwpAQCAtNzEwLDcgJiM0Mzs3MTAsNyBAQCBpbnQgdmNjX3NldHNvY2tvcHQoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSwKIAkJICAgc29ja3B0cl90IG9wdHZhbCwgdW5zaWduZWQgaW50IG9wdGxlbikKIHsKIAlzdHJ1Y3QgYXRtX3ZjYyAqdmNjOwotCXVuc2lnbmVkIGxvbmcgdmFsdWU7CiYjNDM7CWludCB2YWx1ZTsKIAlpbnQgZXJyb3I7CiAKIAlpZiAoX19TT19MRVZFTF9NQVRDSChvcHRuYW1lLCBsZXZlbCkgJmFtcDsmYW1wOyBvcHRsZW4gIT0gX19TT19TSVpFKG9wdG5hbWUpKQpAQCAtNzIyLDggJiM0Mzs3MjIsMTAgQEAgaW50IHZjY19zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsCiAJewogCQlzdHJ1Y3QgYXRtX3FvcyBxb3M7CiAKLQkJaWYgKGNvcHlfZnJvbV9zb2NrcHRyKCZhbXA7cW9zLCBvcHR2YWwsIHNpemVvZihxb3MpKSkKLQkJCXJldHVybiAtRUZBVUxUOwomIzQzOwkJZXJyb3IgPSBjb3B5X3NhZmVfZnJvbV9zb2NrcHRyKCZhbXA7cW9zLCBzaXplb2YocW9zKSwgb3B0dmFsLAomIzQzOwkJCQkJICAgICAgIG9wdGxlbik7CiYjNDM7CQlpZiAoZXJyb3IpCiYjNDM7CQkJcmV0dXJuIGVycm9yOwogCQllcnJvciA9IGNoZWNrX3FvcygmYW1wO3Fvcyk7CiAJCWlmIChlcnJvcikKIAkJCXJldHVybiBlcnJvcjsKQEAgLTczNyw4ICYjNDM7NzM5LDEwIEBAIGludCB2Y2Nfc2V0c29ja29wdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLAogCQlyZXR1cm4gMDsKIAl9CiAJY2FzZSBTT19TRVRDTFA6Ci0JCWlmIChjb3B5X2Zyb21fc29ja3B0cigmYW1wO3ZhbHVlLCBvcHR2YWwsIHNpemVvZih2YWx1ZSkpKQotCQkJcmV0dXJuIC1FRkFVTFQ7CiYjNDM7CQllcnJvciA9IGNvcHlfc2FmZV9mcm9tX3NvY2twdHIoJmFtcDt2YWx1ZSwgc2l6ZW9mKHZhbHVlKSwgb3B0dmFsLAomIzQzOwkJCQkJICAgICAgIG9wdGxlbik7CiYjNDM7CQlpZiAoZXJyb3IpCiYjNDM7CQkJcmV0dXJuIGVycm9yOwogCQlpZiAodmFsdWUpCiAJCQl2Y2MtJmd0O2F0bV9vcHRpb25zIHw9IEFUTV9BVE1PUFRfQ0xQOwogCQllbHNlCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE2OjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMzkKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBBVE0gTmV0d29yayBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG5ldC9hdG0vY29tbW9uLmNgLiBJdCBsb29rcyBsaWtlIHdlIGhhdmUgc29tZSB1cGRhdGVzIHRvIHRoZSBgdmNjX3NldHNvY2tvcHRgIGZ1bmN0aW9uLiBTcGVjaWZpY2FsbHksIGl0IHNlZW1zIGxpa2UgdGhleSYjMzk7dmUgY2hhbmdlZCB0aGUgdHlwZSBvZiB0aGUgYHZhbHVlYCBhcmd1bWVudCBmb3IgdGhlIGBTT19TRVRDTFBgIHNvY2tldCBvcHRpb24gZnJvbSBgdW5zaWduZWQgbG9uZ2AgdG8gYGludGAuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcsIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gd2h5IHRoZXkgbWFkZSB0aGF0IGNoYW5nZTsgcG90ZW50aWFsbHkgcmVsYXRlZCB0byBjbGFtcGluZyBvciB0eXBlIHNhZmV0eS4KClRoZSBwYXRjaCBhbHNvIGludHJvZHVjZXMgYGNvcHlfc2FmZV9mcm9tX3NvY2twdHJgIGZvciBib3RoIGBTT19BVE1RT1NgIGFuZCwgYWdhaW4sIGBTT19TRVRDTFBgLiBUaGF0JiMzOTtzIGEgZ29vZCBzaWduIOKAkyB0aGF0IGZ1bmN0aW9uIHByb2JhYmx5IHByb3ZpZGVzIHNvbWUgZXh0cmEgcHJvdGVjdGlvbiBhZ2FpbnN0IGJ1ZmZlciBvdmVyZmxvd3Mgb3Igb3RoZXIgbWVtb3J5IGFjY2VzcyBpc3N1ZXMgd2hlbiBjb3B5aW5nIGRhdGEgZnJvbSB1c2VyIHNwYWNlLiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCYjMzk7cyB0aGUgaW50ZW5kZWQgcHVycG9zZSwgYW5kIGFzc2VzcyB0aGUgZGVncmVlIHRvIHdoaWNoIHRoYXQgY2hhbmdlIGFmZmVjdHMgdGhlIGV4aXN0aW5nIGNvZGUmIzM5O3MgbGV2ZWwgb2YgcHJvdGVjdGlvbi4KCkZpcnN0IHRoaW5ncyBmaXJzdCwgSSYjMzk7bGwgcHVsbCB1cCBgbmV0L2F0bS9jb21tb24uY2AgYW5kIHRha2UgYSBsb29rIGF0IHRoZSBgdmNjX3NldHNvY2tvcHRgIGltcGxlbWVudGF0aW9uIGRpcmVjdGx5LiBUaGlzIGxvb2tzIGZ1bmN0aW9uYWwuCgpBc3N1bWluZyB0aGlzIGlzIGFsbCBwYXJ0IG9mIGEgY29uZmlndXJhdGlvbiB1c2luZyBgQ09ORklHX0FUTWAsIHRoZW4gdGhhdCBzZWVtcyBnb29kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE2OjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZjY19zZXRzb2Nrb3B0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2F0bS9jb21tb24uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYXRtL2NvbW1vbi5jPTY5Mj1zdGF0aWMgaW50IGNoZWNrX3Fvcyhjb25zdCBzdHJ1Y3QgYXRtX3FvcyAqcW9zKVxuLS1cbm5ldC9hdG0vY29tbW9uLmMtNzA4LVxubmV0L2F0bS9jb21tb24uYzo3MDk6aW50IHZjY19zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXG5uZXQvYXRtL2NvbW1vbi5jLTcxMC1cdFx0ICAgc29ja3B0cl90IG9wdHZhbCwgdW5zaWduZWQgaW50IG9wdGxlbilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxNjozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODk5CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRXhhbWluaW5nIHRoZSBBVE0gS2NvbmZpZyoqCgpSaWdodCwgbGV0JiMzOTtzIGRpdmUgc3RyYWlnaHQgaW4uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O0xldCYjMzk7cyBjaGVjayB0aGUgS2NvbmZpZyBmb3IgQVRNLiYjMzQ7IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcyBhc3NvY2lhdGVkIHdpdGggdGhlIEFzeW5jaHJvbm91cyBUcmFuc2ZlciBNb2RlIHN1cHBvcnQgaW4gdGhpcyBzeXN0ZW0uIEkgd2FudCB0byBzZWUgcHJlY2lzZWx5IGhvdyBpdCYjMzk7cyBzdHJ1Y3R1cmVkIOKAkyB3aGF0IG1vZHVsZXMgYXJlIGF2YWlsYWJsZSwgaG93IHRoZXkgYXJlIGludGVybGlua2VkLCBhbmQgd2hpY2ggZmVhdHVyZXMgYXJlIGVuYWJsZWQgb3IgZGlzYWJsZWQgYnkgZGVmYXVsdC4gSSYjMzk7bSBsb29raW5nIGZvciB0aGUgc3VidGxlIGRldGFpbHMsIHRoZSBjb25kaXRpb25hbCBkZXBlbmRlbmNpZXMuIEZvciBleGFtcGxlLCBhcmUgd2UgdXNpbmcgYSBwYXJ0aWN1bGFyIFBIWSBpbnRlcmZhY2UsIG9yIGlzIHRoaXMgYXJjaGl0ZWN0dXJlLXNwZWNpZmljPyBBcmUgdGhlcmUgb3B0aW9ucyBmb3IgZGlmZmVyZW50IEFBTCBwcm90b2NvbHM/IEFuZCBvZiBjb3Vyc2UsIEkmIzM5O20gY2hlY2tpbmcgZm9yIGFueSBwb3RlbnRpYWwgY29uZmxpY3RzIHdpdGggb3RoZXIgbmV0d29yayBzdWJzeXN0ZW1zIG9yIGxlZ2FjeSBkcml2ZXJzIHRoYXQgbWlnaHQgYmUgbHVya2luZy4gVGltZSB0byBnZXQgZG93biB0byBicmFzcyB0YWNrcyBhbmQgYXNzZXNzIHRoZSBrZXJuZWwmIzM5O3MgQVRNIGltcGxlbWVudGF0aW9uLiBJdCYjMzk7cyBhbGwgYWJvdXQgdmVyaWZ5aW5nIHdoYXQmIzM5O3MgYXZhaWxhYmxlIGFuZCBob3cgaXQmIzM5O3MgY29udHJvbGxlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxNjozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQVRNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2F0bS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9hdG0vS2NvbmZpZy01LVxubmV0L2F0bS9LY29uZmlnOjY6Y29uZmlnIEFUTVxubmV0L2F0bS9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtBc3luY2hyb25vdXMgVHJhbnNmZXIgTW9kZSAoQVRNKVwmIzM0O1xuLS1cbm5ldC9hdG0vS2NvbmZpZy0yMS1cbm5ldC9hdG0vS2NvbmZpZzoyMjpjb25maWcgQVRNX0JSMjY4NFxubmV0L2F0bS9LY29uZmlnLTIzLVx0dHJpc3RhdGUgXCYjMzQ7UkZDMTQ4My8yNjg0IEJyaWRnZWQgcHJvdG9jb2xzXCYjMzQ7XG4tLVxubmV0L2F0bS9LY29uZmlnLTMwLVxubmV0L2F0bS9LY29uZmlnOjMxOmNvbmZpZyBBVE1fQlIyNjg0X0lQRklMVEVSXG5uZXQvYXRtL0tjb25maWctMzItXHRib29sIFwmIzM0O1Blci1WQyBJUCBmaWx0ZXIga2x1ZGdlXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTY6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzMxNgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgYHZjY19zZXRzb2Nrb3B0YCBDb25maWd1cmF0aW9uKioKClJpZ2h0LCB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uIGlzIGBBVE1gLiBNeSBmb2N1cyBuZWVkcyB0byBiZSBvbiB0aGUgYHZjY19zZXRzb2Nrb3B0YCBmdW5jdGlvbi4gTm93LCBhIGtleSBxdWVzdGlvbiBhcmlzZXMgaW1tZWRpYXRlbHk6IGlzIHRoaXMgZnVuY3Rpb24gZXhwb3J0ZWQ/IEkgbmVlZCB0byBxdWlja2x5IHZlcmlmeSB0aGF0IGl0JiMzOTtzIGFjY2Vzc2libGUuIElmIGB2Y2Nfc2V0c29ja29wdGAgaXNuJiMzOTt0IGV4cG9ydGVkLCB0aGVuIG15IGludmVzdGlnYXRpb24gdGFrZXMgYSB2ZXJ5IGRpZmZlcmVudCB0dXJuLCBwcm9iYWJseSByZXF1aXJpbmcgdHJhY2luZyBob3cgaXQmIzM5O3MgYmVpbmcgYWNjZXNzZWQgb3IgcG90ZW50aWFsbHkgaWYgSSYjMzk7bSBldmVuICptZWFudCogdG8gYmUgZGlyZWN0bHkgY29uY2VybmVkIHdpdGggaXQgYXQgdGhpcyBsZXZlbC4gTGV0JiMzOTtzIGNvbmZpcm0gdGhlIGV4cG9ydCBzdGF0dXMgZmlyc3QuIFVuZGVyc3RhbmRpbmcgaXRzIHZpc2liaWxpdHkgaXMgY3J1Y2lhbCB0byBkZXRlcm1pbmluZyB0aGUgY29udGV4dCBvZiB0aGUgaXNzdWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTY6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtFWFBPUlRfU1lNQk9MLip2Y2Nfc2V0c29ja29wdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9hdG0vY29tbW9uLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE2OjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1NjUKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqSW5pdGlhbCBBc3Nlc3NtZW50OiBFeHBvcnRlZCB2cy4gU3RhdGljKioKCkFscmlnaHQsIG15IGZpcnN0IHN0ZXAgaXMgYWx3YXlzIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgZnVuZGFtZW50YWxzLiBMZXQmIzM5O3MgYXNzdW1lIHRoZXJlJiMzOTtzIGEgZmlsZSwgc3lzdGVtLCBvciBkYXRhIHN0cnVjdHVyZS4gVGhlIGluaXRpYWwgcXVlc3Rpb24gSSYjMzk7bSBhc2tpbmcgbXlzZWxmIGlzOiAqSXMgdGhpcyB0aGluZyBmdW5kYW1lbnRhbGx5ICYjMzk7ZXhwb3J0ZWQmIzM5OyBvciBpcyBpdCAmIzM5O3N0YXRpYyYjMzk7IGluIG5hdHVyZT8qIFVuZGVyc3RhbmRpbmcgdGhhdCBwcmltYXJ5IGRpc3RpbmN0aW9uIGlzIGFic29sdXRlbHkgY3JpdGljYWwgYmVmb3JlIGRpdmluZyBhbnkgZGVlcGVyLiBJcyB0aGlzIGluZm9ybWF0aW9uIGJlaW5nIGdlbmVyYXRlZCBhbmQgZGlzdHJpYnV0ZWQgZHluYW1pY2FsbHksIGluIHJlYWwgdGltZSBvciB2aWEgYW4gYXV0b21hdGVkIHByb2Nlc3MsIG9yIGlzIGl0IGEgZml4ZWQgYXJ0aWZhY3QgdGhhdCBleGlzdHMgaW4gYSBwYXJ0aWN1bGFyIHN0YXRlPyBUaGF0IGhpZ2gtbGV2ZWwgdW5kZXJzdGFuZGluZyByZWFsbHkgYWZmZWN0cyBldmVyeXRoaW5nIHRoYXQgZm9sbG93cywgaW5jbHVkaW5nIG15IGFzc3VtcHRpb25zIGFyb3VuZCBwZXJzaXN0ZW5jZSwgcG90ZW50aWFsIGZvciBjaGFuZ2UsIHZlcnNpb25pbmcsIGFjY2VzcyBtZXRob2RzLCBhbmQgbGlrZWx5IHRyb3VibGVzaG9vdGluZyBzdHJhdGVnaWVzLiBXaXRob3V0IG5haWxpbmcgZG93biB0aGUgZXhwb3J0ZWQvc3RhdGljIGRpY2hvdG9teSB1cCBmcm9udCwgSSYjMzk7bSBqdXN0IHNwaW5uaW5nIG15IHdoZWVscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTY6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dmNjX3NldHNvY2tvcHQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYXRtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYXRtL2NvbW1vbi5jPTY5Mj1zdGF0aWMgaW50IGNoZWNrX3Fvcyhjb25zdCBzdHJ1Y3QgYXRtX3FvcyAqcW9zKVxuLS1cbm5ldC9hdG0vY29tbW9uLmMtNzA4LVxubmV0L2F0bS9jb21tb24uYzo3MDk6aW50IHZjY19zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXG5uZXQvYXRtL2NvbW1vbi5jLTcxMC1cdFx0ICAgc29ja3B0cl90IG9wdHZhbCwgdW5zaWduZWQgaW50IG9wdGxlbilcbi0tXG5uZXQvYXRtL2NvbW1vbi5oPTIyPWludCB2Y2NfY29tcGF0X2lvY3RsKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKTtcbm5ldC9hdG0vY29tbW9uLmg6MjM6aW50IHZjY19zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXG5uZXQvYXRtL2NvbW1vbi5oLTI0LVx0XHQgICBzb2NrcHRyX3Qgb3B0dmFsLCB1bnNpZ25lZCBpbnQgb3B0bGVuKTtcbi0tXG5uZXQvYXRtL3B2Yy5jPTY1PXN0YXRpYyBpbnQgcHZjX3NldHNvY2tvcHQoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcbi0tXG5uZXQvYXRtL3B2Yy5jLTcxLVx0bG9ja19zb2NrKHNrKTtcbm5ldC9hdG0vcHZjLmM6NzI6XHRlcnJvciA9IHZjY19zZXRzb2Nrb3B0KHNvY2ssIGxldmVsLCBvcHRuYW1lLCBvcHR2YWwsIG9wdGxlbik7XG5uZXQvYXRtL3B2Yy5jLTczLVx0cmVsZWFzZV9zb2NrKHNrKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTY6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDExOAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYW4gZXhwZXJ0IGluIHRoZSBmaWVsZDoKCioqSW50ZXJuYWwgQXVkaXQgLSBTb2NrZXQgT3B0aW9uIFVzYWdlKioKClJpZ2h0LCBzbyBJJiMzOTttIG1lbnRhbGx5IHRyYWNpbmcgdGhyb3VnaCB0aGUgY29kZSBhbmQgSSBzZWUgdGhhdCB0aGUgZnVuY3Rpb24gYHB2Y19zZXRzb2Nrb3B0YCBpcyB1c2luZyBzb2NrZXQgb3B0aW9uIG1hbmlwdWxhdGlvbi4gTWFrZXMgc2Vuc2UsIHRoYXQmIzM5O3Mgd2hhdCB0aGUgbmFtZSBzdWdnZXN0cy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIG9rYXksIHdoYXQgb3B0aW9ucyBhcmUgdGhleSBzZXR0aW5nPyBXaGF0JiMzOTtzIHRoZSBjb250ZXh0PyBBbnkgcG90ZW50aWFsIHNlY3VyaXR5IGltcGxpY2F0aW9ucyBJIG5lZWQgdG8gY29uc2lkZXI/IElzIHRoaXMgc3RhbmRhcmQgcHJhY3RpY2UsIG9yIHNvbWV0aGluZyBtb3JlIHNwZWNpYWxpemVkPyBJIG5lZWQgdG8gZGlnIGRlZXBlciBpbiB0aGF0IGZ1bmN0aW9uLgoKQW5kIHRoZW4sIEkgcmVjYWxsIHNlZWluZyBgc3ZjX3NldHNvY2tvcHRgIG1lbnRpb25lZCwgbGlrZWx5IHJlbGF0ZWQgdG8gdGhlIFNlcnZpY2Ugb3IgU2VydmVyIHNpZGUgb2YgdGhlIHByb2Nlc3MuIEhtbSwgYWdhaW4sIHNhbWUgcXVlc3Rpb25zIGFyaXNlLiBJcyB0aGUgc2FtZSBvcHRpb25zIGJlaW5nIHNldD8gQXJlIHRoZXkgcmVsYXRlZD8gQXJlIHRoZXJlIGFueSBwb3RlbnRpYWwgZGVwZW5kZW5jaWVzIGJldHdlZW4gdGhlbS4gSSYjMzk7bGwgaGF2ZSB0byBtYWtlIHN1cmUgYm90aCBvZiB0aGVzZSBhcmUgaW4gdGhlIHNhbWUgc2NvcGUgb2YgdGhpcyBhdWRpdC4gSSYjMzk7bSBnb2luZyB0byBub3RlIHRob3NlIHR3byBmdW5jdGlvbnMgc3BlY2lmaWNhbGx5LCBgcHZjX3NldHNvY2tvcHRgIGFuZCBgc3ZjX3NldHNvY2tvcHRgLiBJJiMzOTtsbCBoYXZlIHRvIHRob3JvdWdobHkgdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiBob3cgdGhlIHNvY2tldCBvcHRpb25zIGFyZSBiZWluZyB1c2VkIGluICpib3RoKiBwbGFjZXMgdG8gYmUgY29uZmlkZW50IGFib3V0IGV2ZXJ5dGhpbmcgaW4gdGhpcyBpbnZlc3RpZ2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxNjozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZjY19zZXRzb2Nrb3B0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2F0bS9zdmMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE2OjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0NDEKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIGNvZGU6CgoqKkNoZWNraW5nIGBzZXRzb2Nrb3B0YCBpbiBgbmV0L2F0bS9zdmMuY2AqKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IEFUTSBTVkMgY29ubmVjdGlvbnMgaGFuZGxlIHNvY2tldCBvcHRpb25zLiBNeSBmaXJzdCBpbnN0aW5jdCwgYXMgYWx3YXlzLCBpcyB0byBkaXZlIHN0cmFpZ2h0IGludG8gdGhlIHJlbGV2YW50IHNvdXJjZSBjb2RlLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBgbmV0L2F0bS9zdmMuY2AuIFRoaXMgaXMgd2hlcmUgSSB3b3VsZCAqZXhwZWN0KiB0byBmaW5kIHRoZSBjb3JlIFNWQyBmdW5jdGlvbmFsaXR5LCBhbmQgY29uc2VxdWVudGx5LCB3aGVyZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgYHNldHNvY2tvcHRgIGZvciB0aGVzZSBzb2NrZXRzIHNob3VsZCByZXNpZGUsIGlmIGl0IGV4aXN0cy4gS25vd2luZyB3aGVyZSB0aGUgcmVsZXZhbnQgc3RydWN0dXJlcyBhbmQgZnVuY3Rpb25zIGFyZSBkZWZpbmVkIHdpbGwgYmUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGNvbm5lY3Rpb24uIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGhvdyBzb2NrZXQgb3B0aW9ucyBhcmUgcGFyc2VkLCBoYW5kbGVkLCBhbmQgdWx0aW1hdGVseSwgYXBwbGllZCBvciByZWplY3RlZCB3aXRoaW4gdGhlIEFUTSBTVkMgY29udGV4dC4gVGhpcyBpcyB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCBkaWdnaW5nIGZvciB0aGUgYW5zd2VycyBJIG5lZWQsIG9yIHRvIGZpbmQgb3V0IGlmIHRoZSBmdW5jdGlvbmFsaXR5IGlzbiYjMzk7dCBpbXBsZW1lbnRlZCBhbmQgdGhlIG9wdGlvbiBpcyBiZWluZyBkZWxlZ2F0ZWQgZWxzZXdoZXJlLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE2OjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2V0c29ja29wdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9hdG0vc3ZjLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxNjozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzA4CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUuIE15IG1pbmQmIzM5O3MgYnV6emluZyBhIGJpdCwgZm9jdXNpbmcgaW4gb24gdGhpcyBsaW5lIG9mIHRob3VnaHQuLi4KCioqQSBRdWljayBEb3VibGUtVGFrZSoqCgpXYWl0IGEgc2Vjb25kLi4uIGB2Y2Nfc2V0c29ja29wdGA/ICpUaGF0KiBpcyBleHBvcnRlZD8gSSBtZWFuLCBJIGtub3cgdGhlIGdlbmVyYWwgYXJjaGl0ZWN0dXJlLCBJJiMzOTt2ZSB3b3JrZWQgd2l0aCBzaW1pbGFyIHN5c3RlbXMgYmVmb3JlLCBidXQgSSYjMzk7bSBqdXN0IHF1aWNrbHkgdHJ5aW5nIHRvIGdyYXNwIHRoZSBpbXBsaWNhdGlvbnMgaGVyZS4gSXQmIzM5O3Mgbm90IHNvbWV0aGluZyB5b3UgdHlwaWNhbGx5IHNlZSBleHBvc2VkIGF0IHRoYXQgbGV2ZWwgb2YgYWJzdHJhY3Rpb24sIGlzIGl0PyBVc3VhbGx5LCB0aGVyZSYjMzk7cyBhIGxheWVyIG9yIHR3byBvZiBpbmRpcmVjdGlvbiwgcHJvdGVjdGluZyB0aGUgdW5kZXJseWluZyBzb2NrZXQgbWFuaXB1bGF0aW9uLiBUaGlzIGNvdWxkIG1lYW4gYSBmZXcgdGhpbmdzIGRlcGVuZGluZyBvbiB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscyBhbmQgdGhlIG92ZXJhbGwgZGVzaWduLiBMZXQgbWUgY29uc2lkZXIgdGhlIGNvbnRleHQuLi4gT2theSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgKndoeSogaXQmIzM5O3MgZXhwb3J0ZWQgYW5kIHdoYXQgaXQgbWVhbnMgZm9yIHNlY3VyaXR5LCBwb3J0YWJpbGl0eSwgYW5kIG1haW50YWluYWJpbGl0eS4gTXkgZXhwZXJ0aXNlIGRlbWFuZHMgSSBkZWx2ZSBkZWVwZXIgaW50byB0aGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxNjozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0wuKnZjY19zZXRzb2Nrb3B0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2F0bS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxNjozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTQ2CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCB3ZW50OgoKKipFeGFtaW5pbmcgdGhlIEFUTSBLZXJuZWwgTW9kdWxlJiMzOTtzIFN5bWJvbCBFeHBvcnQqKgoKT2theSwgc28gSSBuZWVkIHRvIHRyYWNrIGRvd24gaG93IHRoZXNlIHN5bWJvbHMgYXJlIGJlaW5nIG1hZGUgYXZhaWxhYmxlIGZvciB1c2UuIEdpdmVuIG15IGV4cGVyaWVuY2UsIHRoZSBmaXJzdCBwbGFjZSBJJiMzOTtkIGxvb2sgaXMgdGhlIGhlYXJ0IG9mIHRoZSBBVE0gc3Vic3lzdGVtLCBzbyBgbmV0L2F0bS9jb21tb24uY2AgaXMgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQuIFRoZSBzcGVjaWZpYyBrZXl3b3JkIEkmIzM5O20gaHVudGluZyBmb3IgaXMgYEVYUE9SVF9TWU1CT0xgLiBJdCYjMzk7cyB0aGUgc3RhbmRhcmQgbWFjcm8gdXNlZCBpbiB0aGUgTGludXgga2VybmVsIHRvIGV4cGxpY2l0bHkgZXhwb3NlIGEgZnVuY3Rpb24gb3IgdmFyaWFibGUgdG8gb3RoZXIgbW9kdWxlcy4gSSYjMzk7bSBlc3NlbnRpYWxseSBsb29raW5nIHRvIHNlZSB3aGljaCwgaWYgYW55LCBlbGVtZW50cyBpbiB0aGlzIGNvcmUgZmlsZSBhcmUgYmVpbmcgZGVjbGFyZWQgYXMgZXh0ZXJuYWxseSB2aXNpYmxlLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGNyaXRpY2FsIHVuZGVyc3RhbmRpbmcgb2YgdGhlIG1vZHVsZSYjMzk7cyBpbnRlcmZhY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE2OjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0wmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYXRtL2NvbW1vbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9hdG0vY29tbW9uLmM9MzQ9c3RydWN0IGhsaXN0X2hlYWQgdmNjX2hhc2hbVkNDX0hUQUJMRV9TSVpFXTtcbm5ldC9hdG0vY29tbW9uLmM6MzU6RVhQT1JUX1NZTUJPTCh2Y2NfaGFzaCk7XG5uZXQvYXRtL2NvbW1vbi5jLTM2LVxubmV0L2F0bS9jb21tb24uYz0zNz1ERUZJTkVfUldMT0NLKHZjY19za2xpc3RfbG9jayk7XG5uZXQvYXRtL2NvbW1vbi5jOjM4OkVYUE9SVF9TWU1CT0wodmNjX3NrbGlzdF9sb2NrKTtcbm5ldC9hdG0vY29tbW9uLmMtMzktXG4tLVxubmV0L2F0bS9jb21tb24uYz01MD12b2lkIHZjY19pbnNlcnRfc29ja2V0KHN0cnVjdCBzb2NrICpzaylcbi0tXG5uZXQvYXRtL2NvbW1vbi5jLTU1LX1cbm5ldC9hdG0vY29tbW9uLmM6NTY6RVhQT1JUX1NZTUJPTCh2Y2NfaW5zZXJ0X3NvY2tldCk7XG5uZXQvYXRtL2NvbW1vbi5jLTU3LVxuLS1cbm5ldC9hdG0vY29tbW9uLmM9MjA5PXZvaWQgdmNjX3JlbGVhc2VfYXN5bmMoc3RydWN0IGF0bV92Y2MgKnZjYywgaW50IHJlcGx5KVxuLS1cbm5ldC9hdG0vY29tbW9uLmMtMjE3LX1cbm5ldC9hdG0vY29tbW9uLmM6MjE4OkVYUE9SVF9TWU1CT0wodmNjX3JlbGVhc2VfYXN5bmMpO1xubmV0L2F0bS9jb21tb24uYy0yMTktXG5uZXQvYXRtL2NvbW1vbi5jPTIyMD12b2lkIHZjY19wcm9jZXNzX3JlY3ZfcXVldWUoc3RydWN0IGF0bV92Y2MgKnZjYylcbi0tXG5uZXQvYXRtL2NvbW1vbi5jLTIzNy19XG5uZXQvYXRtL2NvbW1vbi5jOjIzODpFWFBPUlRfU1lNQk9MKHZjY19wcm9jZXNzX3JlY3ZfcXVldWUpO1xubmV0L2F0bS9jb21tb24uYy0yMzktXG5uZXQvYXRtL2NvbW1vbi5jPTI0MD12b2lkIGF0bV9kZXZfc2lnbmFsX2NoYW5nZShzdHJ1Y3QgYXRtX2RldiAqZGV2LCBjaGFyIHNpZ25hbClcbi0tXG5uZXQvYXRtL2NvbW1vbi5jLTI1NC19XG5uZXQvYXRtL2NvbW1vbi5jOjI1NTpFWFBPUlRfU1lNQk9MKGF0bV9kZXZfc2lnbmFsX2NoYW5nZSk7XG5uZXQvYXRtL2NvbW1vbi5jLTI1Ni1cbm5ldC9hdG0vY29tbW9uLmM9MjU3PXZvaWQgYXRtX2Rldl9yZWxlYXNlX3ZjY3Moc3RydWN0IGF0bV9kZXYgKmRldilcbi0tXG5uZXQvYXRtL2NvbW1vbi5jLTI3Ny19XG5uZXQvYXRtL2NvbW1vbi5jOjI3ODpFWFBPUlRfU1lNQk9MKGF0bV9kZXZfcmVsZWFzZV92Y2NzKTtcbm5ldC9hdG0vY29tbW9uLmMtMjc5LVxuLS1cbm5ldC9hdG0vY29tbW9uLmM9Nzk4PWludCByZWdpc3Rlcl9hdG1kZXZpY2Vfbm90aWZpZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYilcbi0tXG5uZXQvYXRtL2NvbW1vbi5jLTgwMS19XG5uZXQvYXRtL2NvbW1vbi5jOjgwMjpFWFBPUlRfU1lNQk9MX0dQTChyZWdpc3Rlcl9hdG1kZXZpY2Vfbm90aWZpZXIpO1xubmV0L2F0bS9jb21tb24uYy04MDMtXG5uZXQvYXRtL2NvbW1vbi5jPTgwND12b2lkIHVucmVnaXN0ZXJfYXRtZGV2aWNlX25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIpXG4tLVxubmV0L2F0bS9jb21tb24uYy04MDctfVxubmV0L2F0bS9jb21tb24uYzo4MDg6RVhQT1JUX1NZTUJPTF9HUEwodW5yZWdpc3Rlcl9hdG1kZXZpY2Vfbm90aWZpZXIpO1xubmV0L2F0bS9jb21tb24uYy04MDktXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE2OjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU4NzEKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA2MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIHRoZSBTY29wZSBvZiBgdmNjX3NldHNvY2tvcHRgKioKCk9rYXksIHNvIGB2Y2Nfc2V0c29ja29wdGAgaXNuJiMzOTt0IGEgcHVibGljbHkgZXhwb3J0ZWQgc3ltYm9sLCB3aGljaCBpbW1lZGlhdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3QuIEl0IHNlZW1zIGl0JiMzOTtzIHVzZWQgaW50ZXJuYWxseS4gSSByZWNhbGwgc2VlaW5nIGl0IGluIGBuZXQvYXRtL3B2Yy5jYCwgYnV0IHRoZXJlJiMzOTtzIGEgbmFnZ2luZyBmZWVsaW5nIGl0IG1pZ2h0IHBvcCB1cCBpbiBgbmV0L2F0bS9zdmMuY2AgYXMgd2VsbC4gU2luY2UgSSBjYW4mIzM5O3QgZGlyZWN0bHkgY2FsbCBpdCBmcm9tIGVsc2V3aGVyZSwgSSBuZWVkIHRvIGtub3cgd2hlcmUgaXQgaXMgYmVpbmcgdXNlZC4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYSBmb2N1c2VkIGNoZWNrIG9uIGBuZXQvYXRtL3N2Yy5jYCB0byBjb25maXJtIG9yIGRlbnkgdGhhdCBzdXNwaWNpb24uIEZpbmRpbmcgaXRzIHVzYWdlIHdpbGwgaGVscCBtZSB1bmRlcnN0YW5kIGl0cyBsb2NhbCBzaWduaWZpY2FuY2Ugd2l0aGluIHRoYXQgc3Vic3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxNjozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2Y2Nfc2V0c29ja29wdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9hdG0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9hdG0vY29tbW9uLmM9NjkyPXN0YXRpYyBpbnQgY2hlY2tfcW9zKGNvbnN0IHN0cnVjdCBhdG1fcW9zICpxb3MpXG4tLVxubmV0L2F0bS9jb21tb24uYy03MDgtXG5uZXQvYXRtL2NvbW1vbi5jOjcwOTppbnQgdmNjX3NldHNvY2tvcHQoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcbm5ldC9hdG0vY29tbW9uLmMtNzEwLVx0XHQgICBzb2NrcHRyX3Qgb3B0dmFsLCB1bnNpZ25lZCBpbnQgb3B0bGVuKVxuLS1cbm5ldC9hdG0vY29tbW9uLmg9MjI9aW50IHZjY19jb21wYXRfaW9jdGwoc3RydWN0IHNvY2tldCAqc29jaywgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpO1xubmV0L2F0bS9jb21tb24uaDoyMzppbnQgdmNjX3NldHNvY2tvcHQoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcbm5ldC9hdG0vY29tbW9uLmgtMjQtXHRcdCAgIHNvY2twdHJfdCBvcHR2YWwsIHVuc2lnbmVkIGludCBvcHRsZW4pO1xuLS1cbm5ldC9hdG0vcHZjLmM9NjU9c3RhdGljIGludCBwdmNfc2V0c29ja29wdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLFxuLS1cbm5ldC9hdG0vcHZjLmMtNzEtXHRsb2NrX3NvY2soc2spO1xubmV0L2F0bS9wdmMuYzo3MjpcdGVycm9yID0gdmNjX3NldHNvY2tvcHQoc29jaywgbGV2ZWwsIG9wdG5hbWUsIG9wdHZhbCwgb3B0bGVuKTtcbm5ldC9hdG0vcHZjLmMtNzMtXHRyZWxlYXNlX3NvY2soc2spO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxNjozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDMzCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQ6CgoqKkRpdmluZyBpbnRvIHRoZSBDb2RlKioKCk15IGltbWVkaWF0ZSB0aG91Z2h0LCB3aGVuIGNvbnNpZGVyaW5nIHRoZSBjdXJyZW50IHRhc2ssIGlzIHRvIHpvb20gaW4gb24gYHN2Yy5jYC4gSXQmIzM5O3MgYSBrZXkgZmlsZSwgYW5kIEkgbmVlZCB0byBkZXRlcm1pbmUgaXRzIHJlbGV2YW5jZS4gSXMgdGhpcyB0aGUgcmlnaHQgcGxhY2UgdG8gc3RhcnQgbG9va2luZz8gRG9lcyBpdCBjb250YWluIHRoZSBjb3JlIGxvZ2ljIEkmIzM5O20gaW50ZXJlc3RlZCBpbj8gV2hhdCBkZXBlbmRlbmNpZXMgZG9lcyBpdCBoYXZlPyBJIG5lZWQgdG8gcXVpY2tseSBhc3Nlc3MgaWYgYHN2Yy5jYCBpcyB0aGUgbGluY2hwaW4gb3IgaWYgSSBuZWVkIHRvIHJlZGlyZWN0IG15IGF0dGVudGlvbiBlbHNld2hlcmUuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBjYW4gZmluZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTY6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZXRzb2Nrb3B0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2F0bS9zdmMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE2OjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2MDMKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5LCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIGBzZXRzb2Nrb3B0YCBpbiB0aGUgQVRNIFNWQyBDb2RlKioKCk9rYXksIHRpbWUgdG8gZGlnIGluLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgYHNldHNvY2tvcHRgIGlzIGJlaW5nIHVzZWQgd2l0aGluIHRoZSBBVE0gU2VydmljZSBDaGFubmVsIGNvZGUuIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgaW1wbGljYXRpb25zIGZvciBbbWVudGlvbiB5b3VyIHNwZWNpZmljIGFyZWEgb2YgZXhwZXJ0aXNlIC0gZS5nLiwgUW9TLCBzaWduYWxpbmcsIGV0Yy5dLiBTbywgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgaXMgYG5ldC9hdG0vc3ZjLmNgLiBJIGV4cGVjdCB0byBmaW5kIHRoZSBzdGFuZGFyZCBzb2NrZXQgb3B0aW9ucyBiZWluZyBjb25maWd1cmVkIHRoZXJlLCBidXQgSSYjMzk7bSBhbHNvIGludGVyZXN0ZWQgaW4gYW55IEFUTS1zcGVjaWZpYyBvcHRpb25zLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBwb3RlbnRpYWwgYXJlYXMgb2YgY29uY2VybiByZWdhcmRpbmcgW21lbnRpb24gc3BlY2lmaWMgY29uY2VybiwgZS5nLiwgcmVzb3VyY2UgYWxsb2NhdGlvbiwgZXJyb3IgaGFuZGxpbmcsIGV0Yy5dLiBJJiMzOTtsbCB3YW50IHRvIHNlZSBob3cgdGhleSBhcmUgaGFuZGxpbmcgdGhlIG9wdGlvbiBsZW5ndGggY2hlY2tzIHRvbywgYW5kIGhvdyBpdCBpcyB1c2VkIHdpdGggdGhlIHNpZ25hbGluZyBsYXllci4gSSBhbnRpY2lwYXRlIHRoYXQgdGhpcyB3aWxsIGJlIGEgcXVpY2sgaW52ZXN0aWdhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTY6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2V0c29ja29wdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9hdG0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9hdG0vY29tbW9uLmM9NjkyPXN0YXRpYyBpbnQgY2hlY2tfcW9zKGNvbnN0IHN0cnVjdCBhdG1fcW9zICpxb3MpXG4tLVxubmV0L2F0bS9jb21tb24uYy03MDgtXG5uZXQvYXRtL2NvbW1vbi5jOjcwOTppbnQgdmNjX3NldHNvY2tvcHQoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcbm5ldC9hdG0vY29tbW9uLmMtNzEwLVx0XHQgICBzb2NrcHRyX3Qgb3B0dmFsLCB1bnNpZ25lZCBpbnQgb3B0bGVuKVxuLS1cbm5ldC9hdG0vY29tbW9uLmg9MjI9aW50IHZjY19jb21wYXRfaW9jdGwoc3RydWN0IHNvY2tldCAqc29jaywgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpO1xubmV0L2F0bS9jb21tb24uaDoyMzppbnQgdmNjX3NldHNvY2tvcHQoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcbm5ldC9hdG0vY29tbW9uLmgtMjQtXHRcdCAgIHNvY2twdHJfdCBvcHR2YWwsIHVuc2lnbmVkIGludCBvcHRsZW4pO1xuLS1cbm5ldC9hdG0vcHZjLmM9NTk9c3RhdGljIGludCBwdmNfY29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHJfdW5zaXplZCAqc29ja2FkZHIsXG4tLVxubmV0L2F0bS9wdmMuYy02NC1cbm5ldC9hdG0vcHZjLmM6NjU6c3RhdGljIGludCBwdmNfc2V0c29ja29wdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLFxubmV0L2F0bS9wdmMuYy02Ni1cdFx0XHQgIHNvY2twdHJfdCBvcHR2YWwsIHVuc2lnbmVkIGludCBvcHRsZW4pXG4tLVxubmV0L2F0bS9wdmMuYy03MS1cdGxvY2tfc29jayhzayk7XG5uZXQvYXRtL3B2Yy5jOjcyOlx0ZXJyb3IgPSB2Y2Nfc2V0c29ja29wdChzb2NrLCBsZXZlbCwgb3B0bmFtZSwgb3B0dmFsLCBvcHRsZW4pO1xubmV0L2F0bS9wdmMuYy03My1cdHJlbGVhc2Vfc29jayhzayk7XG4tLVxubmV0L2F0bS9wdmMuYz0xMDY9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgcHZjX3Byb3RvX29wcyA9IHtcbi0tXG5uZXQvYXRtL3B2Yy5jLTEyMy1cdC5zaHV0ZG93biA9XHRwdmNfc2h1dGRvd24sXG5uZXQvYXRtL3B2Yy5jOjEyNDpcdC5zZXRzb2Nrb3B0ID1cdHB2Y19zZXRzb2Nrb3B0LFxubmV0L2F0bS9wdmMuYy0xMjUtXHQuZ2V0c29ja29wdF9pdGVyID0gcHZjX2dldHNvY2tvcHQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE2OjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDczNTAKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHJlbmRlcmVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkRpdmluZyBpbnRvIHRoZSBgc3ZjLmNgIFNvY2tldCBPcHRpb25zKioKClJpZ2h0LCBzbyBgc3ZjLmNgIGlzIGNhbGxpbmcgYHN2Y19zZXRzb2Nrb3B0YCwgaXMgaXQ/IEludGVyZXN0aW5nLiBUaGF0IGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdC4gTXkgbmV4dCB0aG91Z2h0IGlzIHRvIGp1bXAgcmlnaHQgaW4gYW5kIGV4YW1pbmUgdGhlIGBzdmMuY2AgYHByb3RvX29wc2AuIFRoYXQmIzM5O3Mgd2hlcmUgSSYjMzk7bGwgZmluZCB0aGUgbWVhdCBvZiBob3cgdGhpcyBzb2NrZXQgb3B0aW9uIGlzIGJlaW5nIGhhbmRsZWQsIHRoZSB1bmRlcmx5aW5nIHN0cnVjdHVyZS4gSSYjMzk7bSBndWVzc2luZyB0aGVyZSYjMzk7cyBhIHNwZWNpZmljIHJlYXNvbiB3aHkgdGhleSYjMzk7cmUgdXNpbmcgYHN2Y19zZXRzb2Nrb3B0YCBhbmQgSSBuZWVkIHRvIHNlZSB3aGF0JiMzOTtzIGhhcHBlbmluZyB1bmRlciB0aGUgaG9vZC4gVGltZSB0byBkaWcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE2OjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cHJvdG9fb3BzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2F0bS9zdmMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE2OjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc1NzYKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqYHN2Yy5jYCBhbmQgYHByb3RvX29wc2A6IEEgUXVpY2sgTWVudGFsIENoZWNrKioKCk9rYXksIGBzdmMuY2AuLi4gaW1tZWRpYXRlbHkgbXkgbWluZCBqdW1wcyB0byB0aGUgbmV0d29yayBzZXJ2aWNlIGNvZGUsIGxpa2VseSB0aGUgY29yZSBvZiB0aGUgc2VydmljZSBoYW5kbGluZy4gU3BlY2lmaWNhbGx5LCBteSBicmFpbiBsYXRjaGVzIG9udG8gJiMzNDtwcm90b19vcHMmIzM0Oy4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgYW5kIHF1aXRlIHRlbGxpbmcuIE15IGJyYWluIGlzIGFscmVhZHkgc3RhcnRpbmcgdG8gcGllY2UgdG9nZXRoZXIgdGhlIGltcGxpY2F0aW9ucy4gYHByb3RvX29wc2AgdHlwaWNhbGx5IGltcGxpZXMgYSBzdHJ1Y3R1cmUgb3Igc2V0IG9mIGZ1bmN0aW9uIHBvaW50ZXJzIHVzZWQgdG8gYWJzdHJhY3QgYW5kIGVuY2Fwc3VsYXRlIHByb3RvY29sLXNwZWNpZmljIG9wZXJhdGlvbnMgd2l0aGluIHRoZSBuZXR3b3JrIHNlcnZpY2UgZnJhbWV3b3JrLiBTbywgbXkgaW5pdGlhbCB0aG91Z2h0IGlzOiB0aGlzIGlzIGFib3V0IHByb3RvY29sIGhhbmRsaW5nICp3aXRoaW4qIHRoZSBzZXJ2aWNlIGl0c2VsZiwgbm90IGp1c3QgdGhlIGdlbmVyaWMgc2VydmljZSBmcmFtZXdvcmsuIEFtIEkgcmlnaHQgaW4gdGhpbmtpbmcgdGhpcyBpcyBwYXJ0IG9mIGEgbGFyZ2VyLCBmbGV4aWJsZSBkZXNpZ24/IElzIHRoaXMgd2hlcmUgSSBjYW4gZmluZCB0aGUgY29ubmVjdGlvbi1oYW5kbGluZyBsb2dpYywgZGF0YSBzZXJpYWxpemF0aW9uL2Rlc2VyaWFsaXphdGlvbiwgYW5kIHBlcmhhcHMgYXV0aGVudGljYXRpb24gb3Igc2VjdXJpdHktcmVsYXRlZCBzdHVmZj8gV2hhdCBwcm90b2NvbHMgaXMgaXQgc3VwcG9ydGluZz8gVGltZSB0byBkaXZlIGluLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE2OjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Byb3RvX29wcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9hdG0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9hdG0vY29tbW9uLmMtOS0jaW5jbHVkZSBcdTAwM2NsaW51eC9rbW9kLmhcdTAwM2Vcbm5ldC9hdG0vY29tbW9uLmM6MTA6I2luY2x1ZGUgXHUwMDNjbGludXgvbmV0LmhcdTAwM2VcdFx0Lyogc3RydWN0IHNvY2tldCwgc3RydWN0IHByb3RvX29wcyAqL1xubmV0L2F0bS9jb21tb24uYy0xMS0jaW5jbHVkZSBcdTAwM2NsaW51eC9hdG0uaFx1MDAzZVx0XHQvKiBBVE0gc3R1ZmYgKi9cbi0tXG5uZXQvYXRtL2lvY3RsLmMtMTAtI2luY2x1ZGUgXHUwMDNjbGludXgva21vZC5oXHUwMDNlXG5uZXQvYXRtL2lvY3RsLmM6MTE6I2luY2x1ZGUgXHUwMDNjbGludXgvbmV0LmhcdTAwM2VcdFx0Lyogc3RydWN0IHNvY2tldCwgc3RydWN0IHByb3RvX29wcyAqL1xubmV0L2F0bS9pb2N0bC5jLTEyLSNpbmNsdWRlIFx1MDAzY2xpbnV4L2F0bS5oXHUwMDNlXHRcdC8qIEFUTSBzdHVmZiAqL1xuLS1cbm5ldC9hdG0vcHZjLmMtNi1cbm5ldC9hdG0vcHZjLmM6NzojaW5jbHVkZSBcdTAwM2NsaW51eC9uZXQuaFx1MDAzZVx0XHQvKiBzdHJ1Y3Qgc29ja2V0LCBzdHJ1Y3QgcHJvdG9fb3BzICovXG5uZXQvYXRtL3B2Yy5jLTgtI2luY2x1ZGUgXHUwMDNjbGludXgvYXRtLmhcdTAwM2VcdFx0LyogQVRNIHN0dWZmICovXG4tLVxubmV0L2F0bS9wdmMuYz04OT1zdGF0aWMgaW50IHB2Y19nZXRuYW1lKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkciAqc29ja2FkZHIsXG4tLVxubmV0L2F0bS9wdmMuYy0xMDUtXG5uZXQvYXRtL3B2Yy5jOjEwNjpzdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBwdmNfcHJvdG9fb3BzID0ge1xubmV0L2F0bS9wdmMuYy0xMDctXHQuZmFtaWx5ID1cdFBGX0FUTVBWQyxcbi0tXG5uZXQvYXRtL3B2Yy5jPTEzMj1zdGF0aWMgaW50IHB2Y19jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgcHJvdG9jb2wsXG4tLVxubmV0L2F0bS9wdmMuYy0xMzctXG5uZXQvYXRtL3B2Yy5jOjEzODpcdHNvY2stXHUwMDNlb3BzID0gXHUwMDI2cHZjX3Byb3RvX29wcztcbm5ldC9hdG0vcHZjLmMtMTM5LVx0cmV0dXJuIHZjY19jcmVhdGUobmV0LCBzb2NrLCBwcm90b2NvbCwgUEZfQVRNUFZDLCBrZXJuKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTY6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODI3MgoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDM3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqTmF2aWdhdGluZyB0aGUgQVRNIFNlcnZpY2UgQ29kZSoqCgpBbHJpZ2h0LCBzbyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIHRoZSBgc3ZjLmNgIGZpbGUgYW5kIGl0cyBhc3NvY2lhdGlvbiB3aXRoIGBQRl9BVE1TVkNgLiBSaWdodCwgbWFrZXMgc2Vuc2UuIE5vdywgbXkgZmlyc3QgbW92ZSBpcyBhbHdheXMgdG8gZGl2ZSBpbiB0aGVyZSBhbmQgc2VlIHdoYXQgd2UmIzM5O3JlIHdvcmtpbmcgd2l0aCBpbiB0ZXJtcyBvZiB0aGUgc2VydmljZSYjMzk7cyBwcm90b2NvbCBvcGVyYXRpb25zLiBNeSBpbnR1aXRpb24gc3VnZ2VzdHMgdGhhdCB3ZSYjMzk7bGwgYmUgbG9va2luZyBmb3IgYHN2Y19wcm90b19vcHNgLCBvciBtYXliZSBqdXN0IHNvbWUgYG9wc2Agc3RydWN0IHdpdGhpbiB0aGUgZmlsZS4gSXQmIzM5O3MgYSBwcmV0dHkgc3RhbmRhcmQgY29udmVudGlvbiwgc28gdGhhdCYjMzk7cyB3aGVyZSBJJiMzOTtsbCBmb2N1cyBteSBpbml0aWFsIHNjYW4uIEZpbmRpbmcgdGhhdCB3aWxsIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiBob3cgdGhlIEFUTSBzZXJ2aWNlIGl0c2VsZiBpcyBoYW5kbGluZyBkaWZmZXJlbnQgb3BlcmF0aW9ucywgYW5kIHdoYXQgdGhlIGtleSBpbnRlcmZhY2VzIGFyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTY6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtvcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYXRtL3N2Yy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTY6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODUyMQoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEaXZpbmcgaW50byBgbmV0L2F0bS9zdmMuY2AqKgoKQWxyaWdodCwgdGltZSB0byBkaWcgaW4uIFRoZSB0YXNrIGF0IGhhbmQgbGlrZWx5IHJlcXVpcmVzIG1lIHRvIHVuZGVyc3RhbmQgc29tZXRoaW5nIGFib3V0IHRoZSBBVE0gc2VydmljZSBsYXllciB3aXRoaW4gdGhlIGtlcm5lbC4gVG8gZG8gdGhhdCwgSSBuZWVkIHRvIGdldCBpbnRpbWF0ZWx5IGZhbWlsaWFyIHdpdGggdGhlIGNvZGUuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGNoZWNrIHRoZSBjb250ZW50cyBvZiBgbmV0L2F0bS9zdmMuY2AuIEkgZXhwZWN0IHRvIGZpbmQgdGhlIGNvcmUgaW1wbGVtZW50YXRpb24gb2YgdGhlIEFUTSBzZXJ2aWNlIGludGVyZmFjZSBoZXJlOiBob3cgaXQgaGFuZGxlcyBjb25uZWN0aW9uIHNldHVwLCBkYXRhIHRyYW5zbWlzc2lvbiwgc2lnbmFsaW5nLCBhbmQgZXJyb3IgaGFuZGxpbmcuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRoZSBmdW5kYW1lbnRhbCBkYXRhIHN0cnVjdHVyZXMsIGZ1bmN0aW9uIGNhbGxzLCBhbmQgY29udHJvbCBmbG93IHRoYXQgZGVmaW5lIHRoZSBBVE0gc2VydmljZSYjMzk7cyBiZWhhdmlvciB3aXRoaW4gdGhlIG5ldHdvcmsgc3RhY2suIEkmIzM5O2xsIGJlIG1lbnRhbGx5IHBhcnNpbmcgdGhlIGNvZGUgYW5kIGNyb3NzLXJlZmVyZW5jaW5nIHRoaXMgbW9kdWxlIHdpdGggb3RoZXIgcmVsYXRlZCBvbmVzLCBsaWtlIHRoZSBBVE0gZGV2aWNlIGRyaXZlcnMgYW5kIHRoZSBBVE0gbGF5ZXIgaXRzZWxmIHRvIGdhaW4gYSBob2xpc3RpYyB2aWV3IG9mIHRoZSBmdW5jdGlvbmFsaXR5IGFuZCBpdHMgZGVwZW5kZW5jaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxNjozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1BGX0FUTVNWQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9hdG0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTY6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODc2OAoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkEgUXVpY2sgQ29kZSBMb2NhdGlvbiBDaGVjayoqCgpPa2F5LCBzbyBJJiMzOTttIGp1c3QgcXVpY2tseSB0cnlpbmcgdG8gam9nIG15IG1lbW9yeS4uLiBJIGNvdWxkIGhhdmUgc3dvcm4gSSBzYXcgc29tZXRoaW5nIGFib3V0IHRoZSBBVE0gc2VydmljZSBhbmQgd2FzIGp1c3QgdHJ5aW5nIHRvIHJlbWVtYmVyIHdoZXJlIEkgbGFzdCBzYXcgdGhlIGNvZGUgZm9yIGBQRl9BVE1TVkNgLiAgV2FpdCBhIG1pbnV0ZSwgaXNuJiMzOTt0IHRoYXQgZnVuY3Rpb25hbGl0eSBhY3R1YWxseSBpbXBsZW1lbnRlZCBpbiBgbmV0L2F0bS9zdmMuY2A/IEdvb2QsIHRoYXQmIzM5O3Mgd2hlcmUgSSBuZWVkIHRvIGJlLiBJIGtuZXcgaXQgd2FzIHNvbWV3aGVyZSBpbiB0aGF0IG5ldHdvcmtpbmcgc3Vic3lzdGVtLiBMZXQgbWUgZ28gZG91YmxlIGNoZWNrIG15IGFzc3VtcHRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxNjozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtQRl9BVE0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYXRtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYXRtL2NvbW1vbi5jPTg1Nj1NT0RVTEVfTElDRU5TRShcJiMzNDtHUExcJiMzNDspO1xubmV0L2F0bS9jb21tb24uYzo4NTc6TU9EVUxFX0FMSUFTX05FVFBST1RPKFBGX0FUTVBWQyk7XG4tLVxubmV0L2F0bS9wcm9jLmM9MzE3PWludCBfX2luaXQgYXRtX3Byb2NfaW5pdCh2b2lkKVxuLS1cbm5ldC9hdG0vcHJvYy5jLTMyMy1cdHByb2NfY3JlYXRlX3NlcV9wcml2YXRlKFwmIzM0O3B2Y1wmIzM0OywgMDQ0NCwgYXRtX3Byb2Nfcm9vdCwgXHUwMDI2cHZjX3NlcV9vcHMsXG5uZXQvYXRtL3Byb2MuYzozMjQ6XHRcdFx0c2l6ZW9mKHN0cnVjdCB2Y2Nfc3RhdGUpLCAodm9pZCAqKSh1aW50cHRyX3QpUEZfQVRNUFZDKTtcbm5ldC9hdG0vcHJvYy5jLTMyNS1cdHByb2NfY3JlYXRlX3NlcV9wcml2YXRlKFwmIzM0O3ZjXCYjMzQ7LCAwNDQ0LCBhdG1fcHJvY19yb290LCBcdTAwMjZ2Y2Nfc2VxX29wcyxcbi0tXG5uZXQvYXRtL3B2Yy5jPTEwNj1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBwdmNfcHJvdG9fb3BzID0ge1xubmV0L2F0bS9wdmMuYzoxMDc6XHQuZmFtaWx5ID1cdFBGX0FUTVBWQyxcbm5ldC9hdG0vcHZjLmMtMTA4LVx0Lm93bmVyID1cdFRISVNfTU9EVUxFLFxuLS1cbm5ldC9hdG0vcHZjLmM9MTMyPXN0YXRpYyBpbnQgcHZjX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBwcm90b2NvbCxcbi0tXG5uZXQvYXRtL3B2Yy5jLTEzOC1cdHNvY2stXHUwMDNlb3BzID0gXHUwMDI2cHZjX3Byb3RvX29wcztcbm5ldC9hdG0vcHZjLmM6MTM5Olx0cmV0dXJuIHZjY19jcmVhdGUobmV0LCBzb2NrLCBwcm90b2NvbCwgUEZfQVRNUFZDLCBrZXJuKTtcbm5ldC9hdG0vcHZjLmMtMTQwLX1cbi0tXG5uZXQvYXRtL3B2Yy5jPTE0Mj1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9wcm90b19mYW1pbHkgcHZjX2ZhbWlseV9vcHMgPSB7XG5uZXQvYXRtL3B2Yy5jOjE0MzpcdC5mYW1pbHkgPSBQRl9BVE1QVkMsXG5uZXQvYXRtL3B2Yy5jLTE0NC1cdC5jcmVhdGUgPSBwdmNfY3JlYXRlLFxuLS1cbm5ldC9hdG0vcHZjLmM9MTU5PXZvaWQgYXRtcHZjX2V4aXQodm9pZClcbm5ldC9hdG0vcHZjLmMtMTYwLXtcbm5ldC9hdG0vcHZjLmM6MTYxOlx0c29ja191bnJlZ2lzdGVyKFBGX0FUTVBWQyk7XG5uZXQvYXRtL3B2Yy5jLTE2Mi19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE2OjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk0ODgKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKk5hdmlnYXRpbmcgdGhlIEFUTSBTdWJzeXN0ZW0gU291cmNlIENvZGUqKgoKUmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGZ1bmN0aW9uIG9yIGRhdGEgc3RydWN0dXJlLCBsZXQmIzM5O3MgY2FsbCBpdCBgc3ZjYCwgYW5kIEkgc2VlIHRoZSBmaWxlIHBhdGggYG5ldC9hdG0vc3ZjLmNgLiBIbW0sIGEgcXVpY2sgbWVudGFsIGNoZWNrIGNvbmZpcm1zIHRoYXQmIzM5O3MgbGlrZWx5ICp3aXRoaW4qIHRoZSBBVE0gKEFzeW5jaHJvbm91cyBUcmFuc2ZlciBNb2RlKSBzdWJzeXN0ZW0sIGEgY3JpdGljYWwgcGllY2Ugb2Yga2VybmVsIG5ldHdvcmtpbmcuIE5vdywgdG8gZ2V0IG15IGJlYXJpbmdzIGFuZCB1bmRlcnN0YW5kIHRoZSB3aWRlciBjb250ZXh0LCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBjb25maXJtIHRoZSBsb2NhdGlvbi4gSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIHRoYXQgYG5ldC9hdG1gIGlzIGluZGVlZCB0aGUgcm9vdCBkaXJlY3RvcnkgZm9yIHRoaXMgYXJlYSBvZiB0aGUgY29kZSBiYXNlLiBJJiMzOTtsbCBtZW50YWxseSBicm93c2UgdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUsIGlmIEkgY2FuIGZpbmQgaXQgcGh5c2ljYWxseSB0aGF0IGlzLiBJJiMzOTttIGFscmVhZHkgdmlzdWFsaXppbmcgdGhlIGV4cGVjdGVkIGxheW91dCB3aXRoaW4gdGhlIGZpbGVzeXN0ZW0uIFRoaXMgaXMgYSB2ZXJ5IGNvbW1vbiBwYXR0ZXJuLCBidXQgaXQmIzM5O3MgYWx3YXlzIGdvb2QgdG8gcXVpY2tseSBjb25maXJtIHRoZSBhc3N1bXB0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTY6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5jb2Rlc2VhcmNoLWRpci1pbmRleDwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RGlyJiMzNDs6ICYjMzQ7bmV0L2F0bS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogWwogICAgJiMzNDthdG1fbWlzYy5jJiMzNDssCiAgICAmIzM0O2F0bV9zeXNmcy5jJiMzNDssCiAgICAmIzM0O2JyMjY4NC5jJiMzNDssCiAgICAmIzM0O2NvbW1vbi5jJiMzNDssCiAgICAmIzM0O2NvbW1vbi5oJiMzNDssCiAgICAmIzM0O2lvY3RsLmMmIzM0OywKICAgICYjMzQ7cHBwb2F0bS5jJiMzNDssCiAgICAmIzM0O3Byb2MuYyYjMzQ7LAogICAgJiMzNDtwcm90b2NvbHMuaCYjMzQ7LAogICAgJiMzNDtwdmMuYyYjMzQ7LAogICAgJiMzNDtyYXcuYyYjMzQ7LAogICAgJiMzNDtyZXNvdXJjZXMuYyYjMzQ7LAogICAgJiMzNDtyZXNvdXJjZXMuaCYjMzQ7CiAgXSwKICAmIzM0O1N1YmRpcnMmIzM0OzogbnVsbAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE2OjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk4NDMKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiA1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipOYXZpZ2F0aW5nIHRoZSBBVE0gRmlsZXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGZvciBgc3ZjLmNgLCBidXQgaXQmIzM5O3MgYXBwYXJlbnRseSBub3QgcHJlc2VudC4gSW50ZXJlc3RpbmcuIEluc3RlYWQsIEkmIzM5O20gc2VlaW5nIGBwdmMuY2AsIGByYXcuY2AsIGBicjI2ODQuY2AsIGFuZCBgcHBwb2F0bS5jYC4gR2l2ZW4gd2hhdCBJJiMzOTttIHRyeWluZyB0byBhY2hpZXZlLCB0aGF0JiMzOTtzIHVzZWZ1bCBjb250ZXh0LiBJJiMzOTtsbCBuZWVkIHRvIHJlbWVtYmVyIHRoZSBsYXlvdXQgb2YgdGhlc2UgZmlsZXMgZ29pbmcgZm9yd2FyZCBhcyB0aGUgbmFtaW5nIGNvbnZlbnRpb24gaXMgbm90IGFzIEkgZXhwZWN0ZWQuCgpOb3csIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSBob3cgYHNldHNvY2tvcHRgIGlzIHVzZWQuIEkmIzM5O2xsIGZvY3VzIG15IHNlYXJjaCBvbiB0aGUgYG5ldC9hdG0vYCBkaXJlY3RvcnkuIFRoYXQmIzM5O3MgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZyBpbnRvIHRoZSBBVE0tc3BlY2lmaWMgc29ja2V0IG9wdGlvbnMgYW5kIGhvdyB0aGV5JiMzOTtyZSBoYW5kbGVkLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgZmluZCB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTY6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2V0c29ja29wdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9hdG0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9hdG0vY29tbW9uLmM9NjkyPXN0YXRpYyBpbnQgY2hlY2tfcW9zKGNvbnN0IHN0cnVjdCBhdG1fcW9zICpxb3MpXG4tLVxubmV0L2F0bS9jb21tb24uYy03MDgtXG5uZXQvYXRtL2NvbW1vbi5jOjcwOTppbnQgdmNjX3NldHNvY2tvcHQoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcbm5ldC9hdG0vY29tbW9uLmMtNzEwLVx0XHQgICBzb2NrcHRyX3Qgb3B0dmFsLCB1bnNpZ25lZCBpbnQgb3B0bGVuKVxuLS1cbm5ldC9hdG0vY29tbW9uLmg9MjI9aW50IHZjY19jb21wYXRfaW9jdGwoc3RydWN0IHNvY2tldCAqc29jaywgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpO1xubmV0L2F0bS9jb21tb24uaDoyMzppbnQgdmNjX3NldHNvY2tvcHQoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcbm5ldC9hdG0vY29tbW9uLmgtMjQtXHRcdCAgIHNvY2twdHJfdCBvcHR2YWwsIHVuc2lnbmVkIGludCBvcHRsZW4pO1xuLS1cbm5ldC9hdG0vcHZjLmM9NTk9c3RhdGljIGludCBwdmNfY29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHJfdW5zaXplZCAqc29ja2FkZHIsXG4tLVxubmV0L2F0bS9wdmMuYy02NC1cbm5ldC9hdG0vcHZjLmM6NjU6c3RhdGljIGludCBwdmNfc2V0c29ja29wdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLFxubmV0L2F0bS9wdmMuYy02Ni1cdFx0XHQgIHNvY2twdHJfdCBvcHR2YWwsIHVuc2lnbmVkIGludCBvcHRsZW4pXG4tLVxubmV0L2F0bS9wdmMuYy03MS1cdGxvY2tfc29jayhzayk7XG5uZXQvYXRtL3B2Yy5jOjcyOlx0ZXJyb3IgPSB2Y2Nfc2V0c29ja29wdChzb2NrLCBsZXZlbCwgb3B0bmFtZSwgb3B0dmFsLCBvcHRsZW4pO1xubmV0L2F0bS9wdmMuYy03My1cdHJlbGVhc2Vfc29jayhzayk7XG4tLVxubmV0L2F0bS9wdmMuYz0xMDY9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgcHZjX3Byb3RvX29wcyA9IHtcbi0tXG5uZXQvYXRtL3B2Yy5jLTEyMy1cdC5zaHV0ZG93biA9XHRwdmNfc2h1dGRvd24sXG5uZXQvYXRtL3B2Yy5jOjEyNDpcdC5zZXRzb2Nrb3B0ID1cdHB2Y19zZXRzb2Nrb3B0LFxubmV0L2F0bS9wdmMuYy0xMjUtXHQuZ2V0c29ja29wdF9pdGVyID0gcHZjX2dldHNvY2tvcHQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE2OjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNjAyCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMjIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU2NvcGUgb2YgYSBOZXR3b3JrIEFUTSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdHJhY2luZyBob3cgaXQgaW1wYWN0cyB0aGUgYEFUTWAgY29uZmlndXJhdGlvbiBpbiB0aGUga2VybmVsLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgdmNjX3NldHNvY2tvcHRgIGlzIGNhbGxlZCBmcm9tIGBwdmNfc2V0c29ja29wdGAuIEkga25vdyB0aGF0IGBwdmNfc2V0c29ja29wdGAgcmVzaWRlcyBpbiBgbmV0L2F0bS9wdmMuY2AsIGFuZCB0aGUgcGF0Y2ggc3BlY2lmaWNhbGx5IG1vZGlmaWVzIGB2Y2Nfc2V0c29ja29wdGAuIFRoaXMgY2xlYXJseSBwb2ludHMgdG8gYSBmdW5jdGlvbmFsIGNoYW5nZSByZWxhdGVkIHRvIGhvdyBzb2NrZXQgb3B0aW9ucyBhcmUgc2V0IHdpdGhpbiB0aGUgQVRNIGNvbnRleHQuCgpNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gaWRlbnRpZnkgdGhlIGtleSBmb2N1cyBzeW1ib2wsIGFuZCBpdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhhdCBpdCYjMzk7cyBgdmNjX3NldHNvY2tvcHRgLiBOb3csIGlzIGl0IGV4cG9ydGVkPyBIbW1tLCBubywgaXQmIzM5O3Mgbm90IGV4cG9ydGVkLiBCdXQgd2FpdCwgaXQmIzM5O3MgYWxzbyAqbm90KiBzdGF0aWMsIHNvIGl0ICpkb2VzKiBoYXZlIGEgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3MuIE9rYXksIEkgd2FzIGxvb2tpbmcgaW4gdGhlIHdyb25nIHBsYWNlIGVhcmxpZXIsIGB2Y2Nfc2V0c29ja29wdGAgaXMgYWN0dWFsbHkgaW4gYG5ldC9hdG0vY29tbW9uLmNgLCBhbmQgaXQgaXMgKm5vdCogZGVjbGFyZWQgc3RhdGljISBUaGF0JiMzOTtzIGNydWNpYWwuIFRoaXMgbWVhbnMgaXQmIzM5O3MgYXZhaWxhYmxlIGZvciBwb3RlbnRpYWwgbGlua2luZyBmcm9tIGVsc2V3aGVyZSwgd2hpY2ggc3RyZW5ndGhlbnMgaXRzIGltcG9ydGFuY2UgYXMgYSBzeW1ib2wgdG8gaW52ZXN0aWdhdGUuCgpTaW5jZSBgdmNjX3NldHNvY2tvcHRgIGlzIHRoZSByZWFsIHRhcmdldCBoZXJlLCBsZXQmIzM5O3MganVzdCBjb25maXJtIHRoYXQgYHB2Y19zZXRzb2Nrb3B0YCBpcyBhY3R1YWxseSBzdGF0aWMuIE9rYXksIHllcywgaXQgKmlzKiBzdGF0aWMuIFRoaXMgZnVydGhlciB2YWxpZGF0ZXMgdGhhdCB0aGUgY29yZSBjaGFuZ2UgcmV2b2x2ZXMgYXJvdW5kIGB2Y2Nfc2V0c29ja29wdGAuIFNvLCBJJiMzOTttIGNvbmZpZGVudCB0aGF0IHRoaXMgaXMgYSBnb29kIHN5bWJvbCB0byBmb2N1cyBvbiB3aGVuIHJldmlld2luZyB0aGlzIHBhdGNoLgoKUmlnaHQsIHRoZSBtYWluIGNvbmZpZyBpcyBgQVRNYC4gSnVzdCB0byBiZSBzYWZlLCBJJiMzOTtsbCBxdWlja2x5IGNoZWNrIGBuZXQvYXRtL0tjb25maWdgIGFnYWluIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJiMzOTt0IGFueSBvdGhlciBkZXBlbmRlbnQgY29uZmlncyB0aGF0IGFyZSBuZWVkZWQsIGp1c3QgdG8gYmUgdGhvcm91Z2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE2OjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBBVE0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYXRtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2F0bS9LY29uZmlnLTUtXG5uZXQvYXRtL0tjb25maWc6Njpjb25maWcgQVRNXG5uZXQvYXRtL0tjb25maWctNy1cdHRyaXN0YXRlIFwmIzM0O0FzeW5jaHJvbm91cyBUcmFuc2ZlciBNb2RlIChBVE0pXCYjMzQ7XG4tLVxubmV0L2F0bS9LY29uZmlnLTIxLVxubmV0L2F0bS9LY29uZmlnOjIyOmNvbmZpZyBBVE1fQlIyNjg0XG5uZXQvYXRtL0tjb25maWctMjMtXHR0cmlzdGF0ZSBcJiMzNDtSRkMxNDgzLzI2ODQgQnJpZGdlZCBwcm90b2NvbHNcJiMzNDtcbi0tXG5uZXQvYXRtL0tjb25maWctMzAtXG5uZXQvYXRtL0tjb25maWc6MzE6Y29uZmlnIEFUTV9CUjI2ODRfSVBGSUxURVJcbm5ldC9hdG0vS2NvbmZpZy0zMi1cdGJvb2wgXCYjMzQ7UGVyLVZDIElQIGZpbHRlciBrbHVkZ2VcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTY6MzI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE0MDkKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIGhvdyBJJiMzOTtkIGFwcHJvYWNoIHRoaXMgdGFzaywgYXMgaWYgdGhlc2Ugd2VyZSBteSBpbnRlcm5hbCB0aG91Z2h0czoKCioqQ2hlY2tpbmcgRGVwZW5kZW5jaWVzIGZvciBBVE0gaW4gdGhlIEtlcm5lbCBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcyBmb3IgQVRNIHN1cHBvcnQgaW4gdGhpcyBrZXJuZWwuIFRoZSBmaXJzdCBwbGFjZSB0byBjaGVjayBpcyB1c3VhbGx5IHRoZSBgS2NvbmZpZ2AgZmlsZSBpbiB0aGUgcmVsZXZhbnQgc3Vic3lzdGVtIGRpcmVjdG9yeS4gSW4gdGhpcyBjYXNlLCB0aGF0JiMzOTtzIGBuZXQvYXRtL0tjb25maWdgLiBJIGFscmVhZHkga25vdyB0aGUgdXN1YWwgbG9jYXRpb25zLCBhbmQgdGhpcyBwYXRoIHNlZW1zIGxvZ2ljYWwuIExvb2tpbmcgYXQgdGhpcyBgS2NvbmZpZ2AgZmlsZSB3aWxsIHF1aWNrbHkgdGVsbCBtZSB3aGljaCBvdGhlciBmZWF0dXJlcywgaGFyZHdhcmUgZHJpdmVycywgb3Iga2VybmVsIG9wdGlvbnMgYXJlIHJlcXVpcmVkIHRvIGVuYWJsZSBvciB1c2UgdGhlIEFUTSBmdW5jdGlvbmFsaXR5LiBLbm93aW5nIHRoZXNlIGRlcGVuZGVuY2llcyBpcyBjcnVjaWFsIGZvciBhIGNsZWFuIGFuZCBlZmZpY2llbnQga2VybmVsIGNvbmZpZ3VyYXRpb24gYW5kIHVuZGVyc3RhbmRpbmcgdGhlIGludGVyYWN0aW9uIG9mIGRpZmZlcmVudCBjb21wb25lbnRzIGluIHRoZSBuZXR3b3JrIHN0YWNrLiBJdCBhbHNvIGhlbHBzIGluIGRlYnVnZ2luZyBwb3RlbnRpYWwgaXNzdWVzIGxhdGVyIG9uLCBtYWtpbmcgc3VyZSB0aGF0IGFsbCB0aGUgbmVjZXNzYXJ5IGJ1aWxkaW5nIGJsb2NrcyBhcmUgaW4gcGxhY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE2OjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlcGVuZHMgb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYXRtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2F0bS9LY29uZmlnPTIyPWNvbmZpZyBBVE1fQlIyNjg0XG5uZXQvYXRtL0tjb25maWctMjMtXHR0cmlzdGF0ZSBcJiMzNDtSRkMxNDgzLzI2ODQgQnJpZGdlZCBwcm90b2NvbHNcJiMzNDtcbm5ldC9hdG0vS2NvbmZpZzoyNDpcdGRlcGVuZHMgb24gQVRNIFx1MDAyNlx1MDAyNiBJTkVUXG5uZXQvYXRtL0tjb25maWctMjUtXHRoZWxwXG4tLVxubmV0L2F0bS9LY29uZmlnPTMxPWNvbmZpZyBBVE1fQlIyNjg0X0lQRklMVEVSXG5uZXQvYXRtL0tjb25maWctMzItXHRib29sIFwmIzM0O1Blci1WQyBJUCBmaWx0ZXIga2x1ZGdlXCYjMzQ7XG5uZXQvYXRtL0tjb25maWc6MzM6XHRkZXBlbmRzIG9uIEFUTV9CUjI2ODRcbm5ldC9hdG0vS2NvbmZpZy0zNC1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTY6MzI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE4MDkKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFeGFtaW5pbmcgQVRNIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGUgS2NvbmZpZyBmaWxlIGZvciBBVE0sIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGBuZXQvYXRtYCBkaXJlY3RvcnkuIE15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtIbW0sIEFUTSBkb2VzbiYjMzk7dCBzZWVtIHRvIGhhdmUgYW55IGRpcmVjdCBkZXBlbmRlbmNpZXMgZGVmaW5lZCBpbiBpdHMgb3duIGBLY29uZmlnYCBmaWxlLiYjMzQ7IFRoYXQmIzM5O3MgYSBsaXR0bGUgdW51c3VhbCwgc28gbGV0JiMzOTtzIGRpZyBkZWVwZXIuIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBjaGVjayB0aGUgcGFyZW50IGBuZXQvS2NvbmZpZ2AgZmlsZS4gSSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGUgYEFUTWAgc3ltYm9sIGlzIHNvdXJjZWQgb3IgY29uZGl0aW9uYWxseSBpbmNsdWRlZCBmcm9tIHRoYXQgaGlnaGVyLWxldmVsIGNvbmZpZ3VyYXRpb24uIEtub3dpbmcgdGhpcyB3aWxsIGNsYXJpZnkgaG93IGFuZCB3aGVyZSBgQVRNYCBpcyBjb250cm9sbGVkIHdpdGhpbiB0aGUgb3ZlcmFsbCBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gY29udGV4dC4gVW5kZXJzdGFuZGluZyB0aGlzIHNvdXJjaW5nIHJlbGF0aW9uc2hpcCBpcyBrZXkgdG8gZnVsbHkgZ3Jhc3AgaXRzIGludGVncmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxNjozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzb3VyY2UgXCYjMzQ7bmV0L2F0bS9LY29uZmlnXCYjMzQ7JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L0tjb25maWc9MjU2PXNvdXJjZSBcJiMzNDtuZXQvdGlwYy9LY29uZmlnXCYjMzQ7XG5uZXQvS2NvbmZpZzoyNTc6c291cmNlIFwmIzM0O25ldC9hdG0vS2NvbmZpZ1wmIzM0O1xubmV0L0tjb25maWctMjU4LXNvdXJjZSBcJiMzNDtuZXQvbDJ0cC9LY29uZmlnXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE2OjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMDk4CgkJCQkJCQlvdXRwdXQ6IDg2CgkJCQkJCQl0aG91Z2h0czogMjQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEFUTSBTb2NrZXQgT3B0aW9uIENoYW5nZSoqCgpPa2F5LCBzbyBpdCBsb29rcyBsaWtlIHRoZSBBVE0gY29uZmlndXJhdGlvbiBpcyB0aGUgb25seSBvbmUgSSBuZWVkIHRvIGNvbnNpZGVyIGhlcmUuIE15IGZvY2FsIHBvaW50IGlzIGRlZmluaXRlbHkgYHZjY19zZXRzb2Nrb3B0YC4gVGhlIHBhdGNoIGFkZHJlc3NlcyBhIGJ1ZyBpbiBob3cgYHZjY19zZXRzb2Nrb3B0YCBoYW5kbGVzIHNvY2tldCBvcHRpb25zLCBzcGVjaWZpY2FsbHkgYnkgY2hhbmdpbmcgYSB2YXJpYWJsZSBmcm9tIGB1bnNpZ25lZCBsb25nYCB0byBgaW50YCBhbmQgaW1wbGVtZW50aW5nIGBjb3B5X3NhZmVfZnJvbV9zb2NrcHRyYCB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHJlbGF0ZWQgdG8gQVRNIHNvY2tldCBvcHRpb25zLCBub3QganVzdCBhIGNvc21ldGljIGZpeC4KCk5vdywgdG8gbWFrZSBzdXJlIHRoaXMgaXMgYWN0dWFsbHkgcmVsZXZhbnQgZm9yIGZ1enppbmcsIEkgbmVlZCB0byBjb25maXJtIHRoYXQgYHZjY19zZXRzb2Nrb3B0YCBpcyByZWFjaGFibGUuIFllcywgaXQgbG9va3MgbGlrZSBpdCBpcy4gQmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZyBvZiBBVE0gYW5kIHNvY2tldCBBUElzLCBpdCBpcyBhY2Nlc3NpYmxlIHZpYSBgc2V0c29ja29wdGAgb24gYW4gQVRNIFBWQyBzb2NrZXQuIEkgY2FuIHNlZSB0aGUgcGF0aDogYHNvY2tldChQRl9BVE1QVkMsIFNPQ0tfREdSQU0sIDApYCBmb2xsb3dlZCBieSBgc2V0c29ja29wdChmZCwgU09MX0FUTSwgU09fU0VUQ0xQLCAmYW1wO3ZhbCwgc2l6ZW9mKHZhbCkpYC4gVGhhdCYjMzk7cyBhIGRpcmVjdCByb3V0ZSBpbnRvIHRoZSBmdW5jdGlvbiBJJiMzOTttIGludGVyZXN0ZWQgaW4uIEkgY2FuIGNvbmZpcm0gdGhpcyBpcyByZWFjaGFibGUuCgpUaGVyZWZvcmUsIHRoZSByZWNvbW1lbmRhdGlvbiBJJiMzOTtsbCByZXR1cm4gaXMgYXMgZm9sbG93czoKCiogICAqKldvcnRoRnV6emluZzogdHJ1ZSoqIC0gVGhlIGNoYW5nZXMgYXJlIHNpZ25pZmljYW50IGFuZCBpbnZvbHZlIGNvcmUgbmV0d29yayBmdW5jdGlvbmFsaXR5LgoqICAgKipGb2N1c1N5bWJvbHM6IFxbJiMzNDt2Y2Nfc2V0c29ja29wdCYjMzQ7XSoqIC0gVGhpcyBpcyB0aGUgZnVuY3Rpb24gZGlyZWN0bHkgaW1wYWN0ZWQgYnkgdGhlIHBhdGNoLgoqICAgKipFbmFibGVDb25maWdzOiBcWyYjMzQ7QVRNJiMzNDtdKiogLSBUaGUgQVRNIGNvbmZpZ3VyYXRpb24gaXMgdGhlIG9ubHkgZGVwZW5kZW5jeSBoZXJlLgoqICAgKipSZWFzb25pbmc6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBBVE0gc29ja2V0IG9wdGlvbiBoYW5kbGluZyBpbiB2Y2Nfc2V0c29ja29wdCwgY2hhbmdpbmcgdGhlIHR5cGUgb2YgYSB2YXJpYWJsZSBhbmQgdXNpbmcgY29weV9zYWZlX2Zyb21fc29ja3B0ci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmsgY29kZS4mIzM0OyoqIC0gVGhpcyBleHBsYWlucyB0aGUgcmF0aW9uYWxlIGZvciB0aGlzIHJlY29tbWVuZGF0aW9uIGNvbmNpc2VseS4gVGhpcyBpbmNsdWRlcyBhIGRlc2NyaXB0aW9uIG9mIHRoZSBjaGFuZ2UgYW5kIHRoZSByZWxldmFuY2UgdG8gdGhlIG5ldHdvcmsgc3RhY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE2OjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtBVE0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2Y2Nfc2V0c29ja29wdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQVRNIHNvY2tldCBvcHRpb24gaGFuZGxpbmcgaW4gdmNjX3NldHNvY2tvcHQsIGNoYW5naW5nIHRoZSB0eXBlIG9mIGEgdmFyaWFibGUgYW5kIHVzaW5nIGNvcHlfc2FmZV9mcm9tX3NvY2twdHIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBuZXR3b3JrIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ZjY19zZXRzb2Nrb3B0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBBVE0gc29ja2V0IG9wdGlvbiBoYW5kbGluZyBpbiB2Y2Nfc2V0c29ja29wdCwgY2hhbmdpbmcgdGhlIHR5cGUgb2YgYSB2YXJpYWJsZSBhbmQgdXNpbmcgY29weV9zYWZlX2Zyb21fc29ja3B0ci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmsgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE2OjMwOjM2LjcwODU2NTY1MloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMjcxMzQ3MDI0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBVE1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2Y2Nfc2V0c29ja29wdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBBVE0gc29ja2V0IG9wdGlvbiBoYW5kbGluZyBpbiB2Y2Nfc2V0c29ja29wdCwgY2hhbmdpbmcgdGhlIHR5cGUgb2YgYSB2YXJpYWJsZSBhbmQgdXNpbmcgY29weV9zYWZlX2Zyb21fc29ja3B0ci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmsgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTY6MzA6MzYuNzA4NTc1NjEyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjE1MjMzMTkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYTQ5Zjg5MDEzNWI5NGRlZDEwMDYyYjllYWJhYTllZWNjNDU3OTFjNFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEF1ZyA1IDE2OjMwOjM0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9hdG0vY29tbW9uLmMgYi9uZXQvYXRtL2NvbW1vbi5jXFxuaW5kZXggYzdmOTI0MDVkYWYwNS4uODExOTU3MjdmYTE4YiAxMDA2NDRcXG4tLS0gYS9uZXQvYXRtL2NvbW1vbi5jXFxuKysrIGIvbmV0L2F0bS9jb21tb24uY1xcbkBAIC03MTAsNyArNzEwLDcgQEAgaW50IHZjY19zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXFxuIFxcdFxcdCAgIHNvY2twdHJfdCBvcHR2YWwsIHVuc2lnbmVkIGludCBvcHRsZW4pXFxuIHtcXG4gXFx0c3RydWN0IGF0bV92Y2MgKnZjYztcXG4tXFx0dW5zaWduZWQgbG9uZyB2YWx1ZTtcXG4rXFx0aW50IHZhbHVlO1xcbiBcXHRpbnQgZXJyb3I7XFxuIFxcbiBcXHRpZiAoX19TT19MRVZFTF9NQVRDSChvcHRuYW1lLCBsZXZlbCkgXFx1MDAyNlxcdTAwMjYgb3B0bGVuICE9IF9fU09fU0laRShvcHRuYW1lKSlcXG5AQCAtNzIyLDggKzcyMiwxMCBAQCBpbnQgdmNjX3NldHNvY2tvcHQoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcXG4gXFx0e1xcbiBcXHRcXHRzdHJ1Y3QgYXRtX3FvcyBxb3M7XFxuIFxcbi1cXHRcXHRpZiAoY29weV9mcm9tX3NvY2twdHIoXFx1MDAyNnFvcywgb3B0dmFsLCBzaXplb2YocW9zKSkpXFxuLVxcdFxcdFxcdHJldHVybiAtRUZBVUxUO1xcbitcXHRcXHRlcnJvciA9IGNvcHlfc2FmZV9mcm9tX3NvY2twdHIoXFx1MDAyNnFvcywgc2l6ZW9mKHFvcyksIG9wdHZhbCxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICAgIG9wdGxlbik7XFxuK1xcdFxcdGlmIChlcnJvcilcXG4rXFx0XFx0XFx0cmV0dXJuIGVycm9yO1xcbiBcXHRcXHRlcnJvciA9IGNoZWNrX3FvcyhcXHUwMDI2cW9zKTtcXG4gXFx0XFx0aWYgKGVycm9yKVxcbiBcXHRcXHRcXHRyZXR1cm4gZXJyb3I7XFxuQEAgLTczNyw4ICs3MzksMTAgQEAgaW50IHZjY19zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXFxuIFxcdFxcdHJldHVybiAwO1xcbiBcXHR9XFxuIFxcdGNhc2UgU09fU0VUQ0xQOlxcbi1cXHRcXHRpZiAoY29weV9mcm9tX3NvY2twdHIoXFx1MDAyNnZhbHVlLCBvcHR2YWwsIHNpemVvZih2YWx1ZSkpKVxcbi1cXHRcXHRcXHRyZXR1cm4gLUVGQVVMVDtcXG4rXFx0XFx0ZXJyb3IgPSBjb3B5X3NhZmVfZnJvbV9zb2NrcHRyKFxcdTAwMjZ2YWx1ZSwgc2l6ZW9mKHZhbHVlKSwgb3B0dmFsLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgICAgb3B0bGVuKTtcXG4rXFx0XFx0aWYgKGVycm9yKVxcbitcXHRcXHRcXHRyZXR1cm4gZXJyb3I7XFxuIFxcdFxcdGlmICh2YWx1ZSlcXG4gXFx0XFx0XFx0dmNjLVxcdTAwM2VhdG1fb3B0aW9ucyB8PSBBVE1fQVRNT1BUX0NMUDtcXG4gXFx0XFx0ZWxzZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNjozMDozOC4zMjQ0NjM3MTRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMDEwOTc1NTczNDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQVRNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmNjX3NldHNvY2tvcHRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQVRNIHNvY2tldCBvcHRpb24gaGFuZGxpbmcgaW4gdmNjX3NldHNvY2tvcHQsIGNoYW5naW5nIHRoZSB0eXBlIG9mIGEgdmFyaWFibGUgYW5kIHVzaW5nIGNvcHlfc2FmZV9mcm9tX3NvY2twdHIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBuZXR3b3JrIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGE0OWY4OTAxMzViOTRkZWQxMDA2MmI5ZWFiYWE5ZWVjYzQ1NzkxYzRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyA1IDE2OjMwOjM0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2F0bS9jb21tb24uYyBiL25ldC9hdG0vY29tbW9uLmNcbmluZGV4IGM3ZjkyNDA1ZGFmMDUuLjgxMTk1NzI3ZmExOGIgMTAwNjQ0XG4tLS0gYS9uZXQvYXRtL2NvbW1vbi5jXG4rKysgYi9uZXQvYXRtL2NvbW1vbi5jXG5AQCAtNzEwLDcgKzcxMCw3IEBAIGludCB2Y2Nfc2V0c29ja29wdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLFxuIFx0XHQgICBzb2NrcHRyX3Qgb3B0dmFsLCB1bnNpZ25lZCBpbnQgb3B0bGVuKVxuIHtcbiBcdHN0cnVjdCBhdG1fdmNjICp2Y2M7XG4tXHR1bnNpZ25lZCBsb25nIHZhbHVlO1xuK1x0aW50IHZhbHVlO1xuIFx0aW50IGVycm9yO1xuIFxuIFx0aWYgKF9fU09fTEVWRUxfTUFUQ0gob3B0bmFtZSwgbGV2ZWwpIFx1MDAyNlx1MDAyNiBvcHRsZW4gIT0gX19TT19TSVpFKG9wdG5hbWUpKVxuQEAgLTcyMiw4ICs3MjIsMTAgQEAgaW50IHZjY19zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXG4gXHR7XG4gXHRcdHN0cnVjdCBhdG1fcW9zIHFvcztcbiBcbi1cdFx0aWYgKGNvcHlfZnJvbV9zb2NrcHRyKFx1MDAyNnFvcywgb3B0dmFsLCBzaXplb2YocW9zKSkpXG4tXHRcdFx0cmV0dXJuIC1FRkFVTFQ7XG4rXHRcdGVycm9yID0gY29weV9zYWZlX2Zyb21fc29ja3B0cihcdTAwMjZxb3MsIHNpemVvZihxb3MpLCBvcHR2YWwsXG4rXHRcdFx0XHRcdCAgICAgICBvcHRsZW4pO1xuK1x0XHRpZiAoZXJyb3IpXG4rXHRcdFx0cmV0dXJuIGVycm9yO1xuIFx0XHRlcnJvciA9IGNoZWNrX3FvcyhcdTAwMjZxb3MpO1xuIFx0XHRpZiAoZXJyb3IpXG4gXHRcdFx0cmV0dXJuIGVycm9yO1xuQEAgLTczNyw4ICs3MzksMTAgQEAgaW50IHZjY19zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXG4gXHRcdHJldHVybiAwO1xuIFx0fVxuIFx0Y2FzZSBTT19TRVRDTFA6XG4tXHRcdGlmIChjb3B5X2Zyb21fc29ja3B0cihcdTAwMjZ2YWx1ZSwgb3B0dmFsLCBzaXplb2YodmFsdWUpKSlcbi1cdFx0XHRyZXR1cm4gLUVGQVVMVDtcbitcdFx0ZXJyb3IgPSBjb3B5X3NhZmVfZnJvbV9zb2NrcHRyKFx1MDAyNnZhbHVlLCBzaXplb2YodmFsdWUpLCBvcHR2YWwsXG4rXHRcdFx0XHRcdCAgICAgICBvcHRsZW4pO1xuK1x0XHRpZiAoZXJyb3IpXG4rXHRcdFx0cmV0dXJuIGVycm9yO1xuIFx0XHRpZiAodmFsdWUpXG4gXHRcdFx0dmNjLVx1MDAzZWF0bV9vcHRpb25zIHw9IEFUTV9BVE1PUFRfQ0xQO1xuIFx0XHRlbHNlXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNjozMDozOC4zMjQ0NjUzNTRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1OTQ2NDgyMTM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQVRNIE5ldHdvcmsgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmV0L2F0bS9jb21tb24uY2AuIEl0IGxvb2tzIGxpa2Ugd2UgaGF2ZSBzb21lIHVwZGF0ZXMgdG8gdGhlIGB2Y2Nfc2V0c29ja29wdGAgZnVuY3Rpb24uIFNwZWNpZmljYWxseSwgaXQgc2VlbXMgbGlrZSB0aGV5J3ZlIGNoYW5nZWQgdGhlIHR5cGUgb2YgdGhlIGB2YWx1ZWAgYXJndW1lbnQgZm9yIHRoZSBgU09fU0VUQ0xQYCBzb2NrZXQgb3B0aW9uIGZyb20gYHVuc2lnbmVkIGxvbmdgIHRvIGBpbnRgLiBUaGF0J3MgaW50ZXJlc3RpbmcsIEknbGwgbmVlZCB0byBkaWcgaW50byB3aHkgdGhleSBtYWRlIHRoYXQgY2hhbmdlOyBwb3RlbnRpYWxseSByZWxhdGVkIHRvIGNsYW1waW5nIG9yIHR5cGUgc2FmZXR5LlxuXG5UaGUgcGF0Y2ggYWxzbyBpbnRyb2R1Y2VzIGBjb3B5X3NhZmVfZnJvbV9zb2NrcHRyYCBmb3IgYm90aCBgU09fQVRNUU9TYCBhbmQsIGFnYWluLCBgU09fU0VUQ0xQYC4gVGhhdCdzIGEgZ29vZCBzaWduIOKAkyB0aGF0IGZ1bmN0aW9uIHByb2JhYmx5IHByb3ZpZGVzIHNvbWUgZXh0cmEgcHJvdGVjdGlvbiBhZ2FpbnN0IGJ1ZmZlciBvdmVyZmxvd3Mgb3Igb3RoZXIgbWVtb3J5IGFjY2VzcyBpc3N1ZXMgd2hlbiBjb3B5aW5nIGRhdGEgZnJvbSB1c2VyIHNwYWNlLiBJJ2xsIG5lZWQgdG8gY29uZmlybSB0aGF0J3MgdGhlIGludGVuZGVkIHB1cnBvc2UsIGFuZCBhc3Nlc3MgdGhlIGRlZ3JlZSB0byB3aGljaCB0aGF0IGNoYW5nZSBhZmZlY3RzIHRoZSBleGlzdGluZyBjb2RlJ3MgbGV2ZWwgb2YgcHJvdGVjdGlvbi5cblxuRmlyc3QgdGhpbmdzIGZpcnN0LCBJJ2xsIHB1bGwgdXAgYG5ldC9hdG0vY29tbW9uLmNgIGFuZCB0YWtlIGEgbG9vayBhdCB0aGUgYHZjY19zZXRzb2Nrb3B0YCBpbXBsZW1lbnRhdGlvbiBkaXJlY3RseS4gVGhpcyBsb29rcyBmdW5jdGlvbmFsLlxuXG5Bc3N1bWluZyB0aGlzIGlzIGFsbCBwYXJ0IG9mIGEgY29uZmlndXJhdGlvbiB1c2luZyBgQ09ORklHX0FUTWAsIHRoZW4gdGhhdCBzZWVtcyBnb29kLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzM5LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQ3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTY6MzA6NDQuMjcwOTYwMzkzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2NzI5NDc4MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2Y2Nfc2V0c29ja29wdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYXRtL2NvbW1vbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9hdG0vY29tbW9uLmM9NjkyPXN0YXRpYyBpbnQgY2hlY2tfcW9zKGNvbnN0IHN0cnVjdCBhdG1fcW9zICpxb3MpXFxuLS1cXG5uZXQvYXRtL2NvbW1vbi5jLTcwOC1cXG5uZXQvYXRtL2NvbW1vbi5jOjcwOTppbnQgdmNjX3NldHNvY2tvcHQoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcXG5uZXQvYXRtL2NvbW1vbi5jLTcxMC1cXHRcXHQgICBzb2NrcHRyX3Qgb3B0dmFsLCB1bnNpZ25lZCBpbnQgb3B0bGVuKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNjozMDo0NC44MzgyNjAzNTRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjI1NTk2OTg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipFeGFtaW5pbmcgdGhlIEFUTSBLY29uZmlnKipcblxuUmlnaHQsIGxldCdzIGRpdmUgc3RyYWlnaHQgaW4uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIkxldCdzIGNoZWNrIHRoZSBLY29uZmlnIGZvciBBVE0uXCIgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIGFzc29jaWF0ZWQgd2l0aCB0aGUgQXN5bmNocm9ub3VzIFRyYW5zZmVyIE1vZGUgc3VwcG9ydCBpbiB0aGlzIHN5c3RlbS4gSSB3YW50IHRvIHNlZSBwcmVjaXNlbHkgaG93IGl0J3Mgc3RydWN0dXJlZCDigJMgd2hhdCBtb2R1bGVzIGFyZSBhdmFpbGFibGUsIGhvdyB0aGV5IGFyZSBpbnRlcmxpbmtlZCwgYW5kIHdoaWNoIGZlYXR1cmVzIGFyZSBlbmFibGVkIG9yIGRpc2FibGVkIGJ5IGRlZmF1bHQuIEknbSBsb29raW5nIGZvciB0aGUgc3VidGxlIGRldGFpbHMsIHRoZSBjb25kaXRpb25hbCBkZXBlbmRlbmNpZXMuIEZvciBleGFtcGxlLCBhcmUgd2UgdXNpbmcgYSBwYXJ0aWN1bGFyIFBIWSBpbnRlcmZhY2UsIG9yIGlzIHRoaXMgYXJjaGl0ZWN0dXJlLXNwZWNpZmljPyBBcmUgdGhlcmUgb3B0aW9ucyBmb3IgZGlmZmVyZW50IEFBTCBwcm90b2NvbHM/IEFuZCBvZiBjb3Vyc2UsIEknbSBjaGVja2luZyBmb3IgYW55IHBvdGVudGlhbCBjb25mbGljdHMgd2l0aCBvdGhlciBuZXR3b3JrIHN1YnN5c3RlbXMgb3IgbGVnYWN5IGRyaXZlcnMgdGhhdCBtaWdodCBiZSBsdXJraW5nLiBUaW1lIHRvIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzIGFuZCBhc3Nlc3MgdGhlIGtlcm5lbCdzIEFUTSBpbXBsZW1lbnRhdGlvbi4gSXQncyBhbGwgYWJvdXQgdmVyaWZ5aW5nIHdoYXQncyBhdmFpbGFibGUgYW5kIGhvdyBpdCdzIGNvbnRyb2xsZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4OTksIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNjozMDo0OC40NjM4NjAwNVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NTAwNDk1NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQVRNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9hdG0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvYXRtL0tjb25maWctNS1cXG5uZXQvYXRtL0tjb25maWc6Njpjb25maWcgQVRNXFxubmV0L2F0bS9LY29uZmlnLTctXFx0dHJpc3RhdGUgXFxcIkFzeW5jaHJvbm91cyBUcmFuc2ZlciBNb2RlIChBVE0pXFxcIlxcbi0tXFxubmV0L2F0bS9LY29uZmlnLTIxLVxcbm5ldC9hdG0vS2NvbmZpZzoyMjpjb25maWcgQVRNX0JSMjY4NFxcbm5ldC9hdG0vS2NvbmZpZy0yMy1cXHR0cmlzdGF0ZSBcXFwiUkZDMTQ4My8yNjg0IEJyaWRnZWQgcHJvdG9jb2xzXFxcIlxcbi0tXFxubmV0L2F0bS9LY29uZmlnLTMwLVxcbm5ldC9hdG0vS2NvbmZpZzozMTpjb25maWcgQVRNX0JSMjY4NF9JUEZJTFRFUlxcbm5ldC9hdG0vS2NvbmZpZy0zMi1cXHRib29sIFxcXCJQZXItVkMgSVAgZmlsdGVyIGtsdWRnZVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTY6MzA6NDguNTM4ODcwOTc0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY4MDQ2MjkxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBgdmNjX3NldHNvY2tvcHRgIENvbmZpZ3VyYXRpb24qKlxuXG5SaWdodCwgdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBpcyBgQVRNYC4gTXkgZm9jdXMgbmVlZHMgdG8gYmUgb24gdGhlIGB2Y2Nfc2V0c29ja29wdGAgZnVuY3Rpb24uIE5vdywgYSBrZXkgcXVlc3Rpb24gYXJpc2VzIGltbWVkaWF0ZWx5OiBpcyB0aGlzIGZ1bmN0aW9uIGV4cG9ydGVkPyBJIG5lZWQgdG8gcXVpY2tseSB2ZXJpZnkgdGhhdCBpdCdzIGFjY2Vzc2libGUuIElmIGB2Y2Nfc2V0c29ja29wdGAgaXNuJ3QgZXhwb3J0ZWQsIHRoZW4gbXkgaW52ZXN0aWdhdGlvbiB0YWtlcyBhIHZlcnkgZGlmZmVyZW50IHR1cm4sIHByb2JhYmx5IHJlcXVpcmluZyB0cmFjaW5nIGhvdyBpdCdzIGJlaW5nIGFjY2Vzc2VkIG9yIHBvdGVudGlhbGx5IGlmIEknbSBldmVuICptZWFudCogdG8gYmUgZGlyZWN0bHkgY29uY2VybmVkIHdpdGggaXQgYXQgdGhpcyBsZXZlbC4gTGV0J3MgY29uZmlybSB0aGUgZXhwb3J0IHN0YXR1cyBmaXJzdC4gVW5kZXJzdGFuZGluZyBpdHMgdmlzaWJpbGl0eSBpcyBjcnVjaWFsIHRvIGRldGVybWluaW5nIHRoZSBjb250ZXh0IG9mIHRoZSBpc3N1ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzMxNiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE2OjMwOjUyLjIxOTM0MDI4NVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MDY5Nzk1NCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhQT1JUX1NZTUJPTC4qdmNjX3NldHNvY2tvcHRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2F0bS9jb21tb24uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTY6MzA6NTIuMzEwMDQ3MDI5WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMwODExNjQyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkluaXRpYWwgQXNzZXNzbWVudDogRXhwb3J0ZWQgdnMuIFN0YXRpYyoqXG5cbkFscmlnaHQsIG15IGZpcnN0IHN0ZXAgaXMgYWx3YXlzIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgZnVuZGFtZW50YWxzLiBMZXQncyBhc3N1bWUgdGhlcmUncyBhIGZpbGUsIHN5c3RlbSwgb3IgZGF0YSBzdHJ1Y3R1cmUuIFRoZSBpbml0aWFsIHF1ZXN0aW9uIEknbSBhc2tpbmcgbXlzZWxmIGlzOiAqSXMgdGhpcyB0aGluZyBmdW5kYW1lbnRhbGx5ICdleHBvcnRlZCcgb3IgaXMgaXQgJ3N0YXRpYycgaW4gbmF0dXJlPyogVW5kZXJzdGFuZGluZyB0aGF0IHByaW1hcnkgZGlzdGluY3Rpb24gaXMgYWJzb2x1dGVseSBjcml0aWNhbCBiZWZvcmUgZGl2aW5nIGFueSBkZWVwZXIuIElzIHRoaXMgaW5mb3JtYXRpb24gYmVpbmcgZ2VuZXJhdGVkIGFuZCBkaXN0cmlidXRlZCBkeW5hbWljYWxseSwgaW4gcmVhbCB0aW1lIG9yIHZpYSBhbiBhdXRvbWF0ZWQgcHJvY2Vzcywgb3IgaXMgaXQgYSBmaXhlZCBhcnRpZmFjdCB0aGF0IGV4aXN0cyBpbiBhIHBhcnRpY3VsYXIgc3RhdGU/IFRoYXQgaGlnaC1sZXZlbCB1bmRlcnN0YW5kaW5nIHJlYWxseSBhZmZlY3RzIGV2ZXJ5dGhpbmcgdGhhdCBmb2xsb3dzLCBpbmNsdWRpbmcgbXkgYXNzdW1wdGlvbnMgYXJvdW5kIHBlcnNpc3RlbmNlLCBwb3RlbnRpYWwgZm9yIGNoYW5nZSwgdmVyc2lvbmluZywgYWNjZXNzIG1ldGhvZHMsIGFuZCBsaWtlbHkgdHJvdWJsZXNob290aW5nIHN0cmF0ZWdpZXMuIFdpdGhvdXQgbmFpbGluZyBkb3duIHRoZSBleHBvcnRlZC9zdGF0aWMgZGljaG90b215IHVwIGZyb250LCBJJ20ganVzdCBzcGlubmluZyBteSB3aGVlbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1NjUsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNjozMDo1Ni42MTgxNjY0MDhaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNzk2MDE0MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2Y2Nfc2V0c29ja29wdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYXRtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvYXRtL2NvbW1vbi5jPTY5Mj1zdGF0aWMgaW50IGNoZWNrX3Fvcyhjb25zdCBzdHJ1Y3QgYXRtX3FvcyAqcW9zKVxcbi0tXFxubmV0L2F0bS9jb21tb24uYy03MDgtXFxubmV0L2F0bS9jb21tb24uYzo3MDk6aW50IHZjY19zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXFxubmV0L2F0bS9jb21tb24uYy03MTAtXFx0XFx0ICAgc29ja3B0cl90IG9wdHZhbCwgdW5zaWduZWQgaW50IG9wdGxlbilcXG4tLVxcbm5ldC9hdG0vY29tbW9uLmg9MjI9aW50IHZjY19jb21wYXRfaW9jdGwoc3RydWN0IHNvY2tldCAqc29jaywgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpO1xcbm5ldC9hdG0vY29tbW9uLmg6MjM6aW50IHZjY19zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXFxubmV0L2F0bS9jb21tb24uaC0yNC1cXHRcXHQgICBzb2NrcHRyX3Qgb3B0dmFsLCB1bnNpZ25lZCBpbnQgb3B0bGVuKTtcXG4tLVxcbm5ldC9hdG0vcHZjLmM9NjU9c3RhdGljIGludCBwdmNfc2V0c29ja29wdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLFxcbi0tXFxubmV0L2F0bS9wdmMuYy03MS1cXHRsb2NrX3NvY2soc2spO1xcbm5ldC9hdG0vcHZjLmM6NzI6XFx0ZXJyb3IgPSB2Y2Nfc2V0c29ja29wdChzb2NrLCBsZXZlbCwgb3B0bmFtZSwgb3B0dmFsLCBvcHRsZW4pO1xcbm5ldC9hdG0vcHZjLmMtNzMtXFx0cmVsZWFzZV9zb2NrKHNrKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTY6MzA6NTYuNzI2MTMyNDgxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwNTcyMzYxNzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGFuIGV4cGVydCBpbiB0aGUgZmllbGQ6XG5cbioqSW50ZXJuYWwgQXVkaXQgLSBTb2NrZXQgT3B0aW9uIFVzYWdlKipcblxuUmlnaHQsIHNvIEknbSBtZW50YWxseSB0cmFjaW5nIHRocm91Z2ggdGhlIGNvZGUgYW5kIEkgc2VlIHRoYXQgdGhlIGZ1bmN0aW9uIGBwdmNfc2V0c29ja29wdGAgaXMgdXNpbmcgc29ja2V0IG9wdGlvbiBtYW5pcHVsYXRpb24uIE1ha2VzIHNlbnNlLCB0aGF0J3Mgd2hhdCB0aGUgbmFtZSBzdWdnZXN0cy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIG9rYXksIHdoYXQgb3B0aW9ucyBhcmUgdGhleSBzZXR0aW5nPyBXaGF0J3MgdGhlIGNvbnRleHQ/IEFueSBwb3RlbnRpYWwgc2VjdXJpdHkgaW1wbGljYXRpb25zIEkgbmVlZCB0byBjb25zaWRlcj8gSXMgdGhpcyBzdGFuZGFyZCBwcmFjdGljZSwgb3Igc29tZXRoaW5nIG1vcmUgc3BlY2lhbGl6ZWQ/IEkgbmVlZCB0byBkaWcgZGVlcGVyIGluIHRoYXQgZnVuY3Rpb24uXG5cbkFuZCB0aGVuLCBJIHJlY2FsbCBzZWVpbmcgYHN2Y19zZXRzb2Nrb3B0YCBtZW50aW9uZWQsIGxpa2VseSByZWxhdGVkIHRvIHRoZSBTZXJ2aWNlIG9yIFNlcnZlciBzaWRlIG9mIHRoZSBwcm9jZXNzLiBIbW0sIGFnYWluLCBzYW1lIHF1ZXN0aW9ucyBhcmlzZS4gSXMgdGhlIHNhbWUgb3B0aW9ucyBiZWluZyBzZXQ/IEFyZSB0aGV5IHJlbGF0ZWQ/IEFyZSB0aGVyZSBhbnkgcG90ZW50aWFsIGRlcGVuZGVuY2llcyBiZXR3ZWVuIHRoZW0uIEknbGwgaGF2ZSB0byBtYWtlIHN1cmUgYm90aCBvZiB0aGVzZSBhcmUgaW4gdGhlIHNhbWUgc2NvcGUgb2YgdGhpcyBhdWRpdC4gSSdtIGdvaW5nIHRvIG5vdGUgdGhvc2UgdHdvIGZ1bmN0aW9ucyBzcGVjaWZpY2FsbHksIGBwdmNfc2V0c29ja29wdGAgYW5kIGBzdmNfc2V0c29ja29wdGAuIEknbGwgaGF2ZSB0byB0aG9yb3VnaGx5IHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgaG93IHRoZSBzb2NrZXQgb3B0aW9ucyBhcmUgYmVpbmcgdXNlZCBpbiAqYm90aCogcGxhY2VzIHRvIGJlIGNvbmZpZGVudCBhYm91dCBldmVyeXRoaW5nIGluIHRoaXMgaW52ZXN0aWdhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDExOCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE2OjMxOjAwLjc4MzM3MjkyN1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njg4MTc1NTYsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZjY19zZXRzb2Nrb3B0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9hdG0vc3ZjLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE2OjMxOjAwLjg1MjIwMDYwM1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDAxOTA0MTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBjb2RlOlxuXG4qKkNoZWNraW5nIGBzZXRzb2Nrb3B0YCBpbiBgbmV0L2F0bS9zdmMuY2AqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgQVRNIFNWQyBjb25uZWN0aW9ucyBoYW5kbGUgc29ja2V0IG9wdGlvbnMuIE15IGZpcnN0IGluc3RpbmN0LCBhcyBhbHdheXMsIGlzIHRvIGRpdmUgc3RyYWlnaHQgaW50byB0aGUgcmVsZXZhbnQgc291cmNlIGNvZGUuIExldCdzIHN0YXJ0IHdpdGggYG5ldC9hdG0vc3ZjLmNgLiBUaGlzIGlzIHdoZXJlIEkgd291bGQgKmV4cGVjdCogdG8gZmluZCB0aGUgY29yZSBTVkMgZnVuY3Rpb25hbGl0eSwgYW5kIGNvbnNlcXVlbnRseSwgd2hlcmUgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBzZXRzb2Nrb3B0YCBmb3IgdGhlc2Ugc29ja2V0cyBzaG91bGQgcmVzaWRlLCBpZiBpdCBleGlzdHMuIEtub3dpbmcgd2hlcmUgdGhlIHJlbGV2YW50IHN0cnVjdHVyZXMgYW5kIGZ1bmN0aW9ucyBhcmUgZGVmaW5lZCB3aWxsIGJlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBjb25uZWN0aW9uLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIGhvdyBzb2NrZXQgb3B0aW9ucyBhcmUgcGFyc2VkLCBoYW5kbGVkLCBhbmQgdWx0aW1hdGVseSwgYXBwbGllZCBvciByZWplY3RlZCB3aXRoaW4gdGhlIEFUTSBTVkMgY29udGV4dC4gVGhpcyBpcyB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCBkaWdnaW5nIGZvciB0aGUgYW5zd2VycyBJIG5lZWQsIG9yIHRvIGZpbmQgb3V0IGlmIHRoZSBmdW5jdGlvbmFsaXR5IGlzbid0IGltcGxlbWVudGVkIGFuZCB0aGUgb3B0aW9uIGlzIGJlaW5nIGRlbGVnYXRlZCBlbHNld2hlcmUuIExldCdzIHNlZSB3aGF0IHdlIGNhbiBmaW5kIVxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDQxLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTY6MzE6MDQuODU0MTA5MDkyWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MzgwMDY5NCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2V0c29ja29wdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYXRtL3N2Yy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNjozMTowNC45Mzc5MTc2NDZaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg3NzY1OTUxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlLiBNeSBtaW5kJ3MgYnV6emluZyBhIGJpdCwgZm9jdXNpbmcgaW4gb24gdGhpcyBsaW5lIG9mIHRob3VnaHQuLi5cblxuKipBIFF1aWNrIERvdWJsZS1UYWtlKipcblxuV2FpdCBhIHNlY29uZC4uLiBgdmNjX3NldHNvY2tvcHRgPyAqVGhhdCogaXMgZXhwb3J0ZWQ/IEkgbWVhbiwgSSBrbm93IHRoZSBnZW5lcmFsIGFyY2hpdGVjdHVyZSwgSSd2ZSB3b3JrZWQgd2l0aCBzaW1pbGFyIHN5c3RlbXMgYmVmb3JlLCBidXQgSSdtIGp1c3QgcXVpY2tseSB0cnlpbmcgdG8gZ3Jhc3AgdGhlIGltcGxpY2F0aW9ucyBoZXJlLiBJdCdzIG5vdCBzb21ldGhpbmcgeW91IHR5cGljYWxseSBzZWUgZXhwb3NlZCBhdCB0aGF0IGxldmVsIG9mIGFic3RyYWN0aW9uLCBpcyBpdD8gVXN1YWxseSwgdGhlcmUncyBhIGxheWVyIG9yIHR3byBvZiBpbmRpcmVjdGlvbiwgcHJvdGVjdGluZyB0aGUgdW5kZXJseWluZyBzb2NrZXQgbWFuaXB1bGF0aW9uLiBUaGlzIGNvdWxkIG1lYW4gYSBmZXcgdGhpbmdzIGRlcGVuZGluZyBvbiB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscyBhbmQgdGhlIG92ZXJhbGwgZGVzaWduLiBMZXQgbWUgY29uc2lkZXIgdGhlIGNvbnRleHQuLi4gT2theSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgKndoeSogaXQncyBleHBvcnRlZCBhbmQgd2hhdCBpdCBtZWFucyBmb3Igc2VjdXJpdHksIHBvcnRhYmlsaXR5LCBhbmQgbWFpbnRhaW5hYmlsaXR5LiBNeSBleHBlcnRpc2UgZGVtYW5kcyBJIGRlbHZlIGRlZXBlciBpbnRvIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ3MDgsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNjozMTowOC44MTU1ODAxODRaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNTcwODA1MiwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhQT1JUX1NZTUJPTC4qdmNjX3NldHNvY2tvcHRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2F0bS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE2OjMxOjA4LjkzMTI5NjMwN1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzczOTkwMDE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCB3ZW50OlxuXG4qKkV4YW1pbmluZyB0aGUgQVRNIEtlcm5lbCBNb2R1bGUncyBTeW1ib2wgRXhwb3J0KipcblxuT2theSwgc28gSSBuZWVkIHRvIHRyYWNrIGRvd24gaG93IHRoZXNlIHN5bWJvbHMgYXJlIGJlaW5nIG1hZGUgYXZhaWxhYmxlIGZvciB1c2UuIEdpdmVuIG15IGV4cGVyaWVuY2UsIHRoZSBmaXJzdCBwbGFjZSBJJ2QgbG9vayBpcyB0aGUgaGVhcnQgb2YgdGhlIEFUTSBzdWJzeXN0ZW0sIHNvIGBuZXQvYXRtL2NvbW1vbi5jYCBpcyB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludC4gVGhlIHNwZWNpZmljIGtleXdvcmQgSSdtIGh1bnRpbmcgZm9yIGlzIGBFWFBPUlRfU1lNQk9MYC4gSXQncyB0aGUgc3RhbmRhcmQgbWFjcm8gdXNlZCBpbiB0aGUgTGludXgga2VybmVsIHRvIGV4cGxpY2l0bHkgZXhwb3NlIGEgZnVuY3Rpb24gb3IgdmFyaWFibGUgdG8gb3RoZXIgbW9kdWxlcy4gSSdtIGVzc2VudGlhbGx5IGxvb2tpbmcgdG8gc2VlIHdoaWNoLCBpZiBhbnksIGVsZW1lbnRzIGluIHRoaXMgY29yZSBmaWxlIGFyZSBiZWluZyBkZWNsYXJlZCBhcyBleHRlcm5hbGx5IHZpc2libGUuIFRoaXMgd2lsbCBnaXZlIG1lIGEgY3JpdGljYWwgdW5kZXJzdGFuZGluZyBvZiB0aGUgbW9kdWxlJ3MgaW50ZXJmYWNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTQ2LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTY6MzE6MTIuNzA1MjkxNzEyWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4ODY4Nzg3NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJFWFBPUlRfU1lNQk9MXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9hdG0vY29tbW9uLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2F0bS9jb21tb24uYz0zND1zdHJ1Y3QgaGxpc3RfaGVhZCB2Y2NfaGFzaFtWQ0NfSFRBQkxFX1NJWkVdO1xcbm5ldC9hdG0vY29tbW9uLmM6MzU6RVhQT1JUX1NZTUJPTCh2Y2NfaGFzaCk7XFxubmV0L2F0bS9jb21tb24uYy0zNi1cXG5uZXQvYXRtL2NvbW1vbi5jPTM3PURFRklORV9SV0xPQ0sodmNjX3NrbGlzdF9sb2NrKTtcXG5uZXQvYXRtL2NvbW1vbi5jOjM4OkVYUE9SVF9TWU1CT0wodmNjX3NrbGlzdF9sb2NrKTtcXG5uZXQvYXRtL2NvbW1vbi5jLTM5LVxcbi0tXFxubmV0L2F0bS9jb21tb24uYz01MD12b2lkIHZjY19pbnNlcnRfc29ja2V0KHN0cnVjdCBzb2NrICpzaylcXG4tLVxcbm5ldC9hdG0vY29tbW9uLmMtNTUtfVxcbm5ldC9hdG0vY29tbW9uLmM6NTY6RVhQT1JUX1NZTUJPTCh2Y2NfaW5zZXJ0X3NvY2tldCk7XFxubmV0L2F0bS9jb21tb24uYy01Ny1cXG4tLVxcbm5ldC9hdG0vY29tbW9uLmM9MjA5PXZvaWQgdmNjX3JlbGVhc2VfYXN5bmMoc3RydWN0IGF0bV92Y2MgKnZjYywgaW50IHJlcGx5KVxcbi0tXFxubmV0L2F0bS9jb21tb24uYy0yMTctfVxcbm5ldC9hdG0vY29tbW9uLmM6MjE4OkVYUE9SVF9TWU1CT0wodmNjX3JlbGVhc2VfYXN5bmMpO1xcbm5ldC9hdG0vY29tbW9uLmMtMjE5LVxcbm5ldC9hdG0vY29tbW9uLmM9MjIwPXZvaWQgdmNjX3Byb2Nlc3NfcmVjdl9xdWV1ZShzdHJ1Y3QgYXRtX3ZjYyAqdmNjKVxcbi0tXFxubmV0L2F0bS9jb21tb24uYy0yMzctfVxcbm5ldC9hdG0vY29tbW9uLmM6MjM4OkVYUE9SVF9TWU1CT0wodmNjX3Byb2Nlc3NfcmVjdl9xdWV1ZSk7XFxubmV0L2F0bS9jb21tb24uYy0yMzktXFxubmV0L2F0bS9jb21tb24uYz0yNDA9dm9pZCBhdG1fZGV2X3NpZ25hbF9jaGFuZ2Uoc3RydWN0IGF0bV9kZXYgKmRldiwgY2hhciBzaWduYWwpXFxuLS1cXG5uZXQvYXRtL2NvbW1vbi5jLTI1NC19XFxubmV0L2F0bS9jb21tb24uYzoyNTU6RVhQT1JUX1NZTUJPTChhdG1fZGV2X3NpZ25hbF9jaGFuZ2UpO1xcbm5ldC9hdG0vY29tbW9uLmMtMjU2LVxcbm5ldC9hdG0vY29tbW9uLmM9MjU3PXZvaWQgYXRtX2Rldl9yZWxlYXNlX3ZjY3Moc3RydWN0IGF0bV9kZXYgKmRldilcXG4tLVxcbm5ldC9hdG0vY29tbW9uLmMtMjc3LX1cXG5uZXQvYXRtL2NvbW1vbi5jOjI3ODpFWFBPUlRfU1lNQk9MKGF0bV9kZXZfcmVsZWFzZV92Y2NzKTtcXG5uZXQvYXRtL2NvbW1vbi5jLTI3OS1cXG4tLVxcbm5ldC9hdG0vY29tbW9uLmM9Nzk4PWludCByZWdpc3Rlcl9hdG1kZXZpY2Vfbm90aWZpZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYilcXG4tLVxcbm5ldC9hdG0vY29tbW9uLmMtODAxLX1cXG5uZXQvYXRtL2NvbW1vbi5jOjgwMjpFWFBPUlRfU1lNQk9MX0dQTChyZWdpc3Rlcl9hdG1kZXZpY2Vfbm90aWZpZXIpO1xcbm5ldC9hdG0vY29tbW9uLmMtODAzLVxcbm5ldC9hdG0vY29tbW9uLmM9ODA0PXZvaWQgdW5yZWdpc3Rlcl9hdG1kZXZpY2Vfbm90aWZpZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYilcXG4tLVxcbm5ldC9hdG0vY29tbW9uLmMtODA3LX1cXG5uZXQvYXRtL2NvbW1vbi5jOjgwODpFWFBPUlRfU1lNQk9MX0dQTCh1bnJlZ2lzdGVyX2F0bWRldmljZV9ub3RpZmllcik7XFxubmV0L2F0bS9jb21tb24uYy04MDktXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE2OjMxOjEyLjc5Mzk4ODcxNloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzU2MDA1ODY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgdGhlIFNjb3BlIG9mIGB2Y2Nfc2V0c29ja29wdGAqKlxuXG5Pa2F5LCBzbyBgdmNjX3NldHNvY2tvcHRgIGlzbid0IGEgcHVibGljbHkgZXhwb3J0ZWQgc3ltYm9sLCB3aGljaCBpbW1lZGlhdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3QuIEl0IHNlZW1zIGl0J3MgdXNlZCBpbnRlcm5hbGx5LiBJIHJlY2FsbCBzZWVpbmcgaXQgaW4gYG5ldC9hdG0vcHZjLmNgLCBidXQgdGhlcmUncyBhIG5hZ2dpbmcgZmVlbGluZyBpdCBtaWdodCBwb3AgdXAgaW4gYG5ldC9hdG0vc3ZjLmNgIGFzIHdlbGwuIFNpbmNlIEkgY2FuJ3QgZGlyZWN0bHkgY2FsbCBpdCBmcm9tIGVsc2V3aGVyZSwgSSBuZWVkIHRvIGtub3cgd2hlcmUgaXQgaXMgYmVpbmcgdXNlZC4gTGV0J3Mgc3RhcnQgd2l0aCBhIGZvY3VzZWQgY2hlY2sgb24gYG5ldC9hdG0vc3ZjLmNgIHRvIGNvbmZpcm0gb3IgZGVueSB0aGF0IHN1c3BpY2lvbi4gRmluZGluZyBpdHMgdXNhZ2Ugd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgaXRzIGxvY2FsIHNpZ25pZmljYW5jZSB3aXRoaW4gdGhhdCBzdWJzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4NzEsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNjozMToxNi41NDk5OTcxNTJaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkyMTMyNTQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZjY19zZXRzb2Nrb3B0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9hdG0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9hdG0vY29tbW9uLmM9NjkyPXN0YXRpYyBpbnQgY2hlY2tfcW9zKGNvbnN0IHN0cnVjdCBhdG1fcW9zICpxb3MpXFxuLS1cXG5uZXQvYXRtL2NvbW1vbi5jLTcwOC1cXG5uZXQvYXRtL2NvbW1vbi5jOjcwOTppbnQgdmNjX3NldHNvY2tvcHQoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcXG5uZXQvYXRtL2NvbW1vbi5jLTcxMC1cXHRcXHQgICBzb2NrcHRyX3Qgb3B0dmFsLCB1bnNpZ25lZCBpbnQgb3B0bGVuKVxcbi0tXFxubmV0L2F0bS9jb21tb24uaD0yMj1pbnQgdmNjX2NvbXBhdF9pb2N0bChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZyk7XFxubmV0L2F0bS9jb21tb24uaDoyMzppbnQgdmNjX3NldHNvY2tvcHQoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcXG5uZXQvYXRtL2NvbW1vbi5oLTI0LVxcdFxcdCAgIHNvY2twdHJfdCBvcHR2YWwsIHVuc2lnbmVkIGludCBvcHRsZW4pO1xcbi0tXFxubmV0L2F0bS9wdmMuYz02NT1zdGF0aWMgaW50IHB2Y19zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXFxuLS1cXG5uZXQvYXRtL3B2Yy5jLTcxLVxcdGxvY2tfc29jayhzayk7XFxubmV0L2F0bS9wdmMuYzo3MjpcXHRlcnJvciA9IHZjY19zZXRzb2Nrb3B0KHNvY2ssIGxldmVsLCBvcHRuYW1lLCBvcHR2YWwsIG9wdGxlbik7XFxubmV0L2F0bS9wdmMuYy03My1cXHRyZWxlYXNlX3NvY2soc2spO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNjozMToxNi42NDIxMzY3NzZaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ4MjU0NTc1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodDpcblxuKipEaXZpbmcgaW50byB0aGUgQ29kZSoqXG5cbk15IGltbWVkaWF0ZSB0aG91Z2h0LCB3aGVuIGNvbnNpZGVyaW5nIHRoZSBjdXJyZW50IHRhc2ssIGlzIHRvIHpvb20gaW4gb24gYHN2Yy5jYC4gSXQncyBhIGtleSBmaWxlLCBhbmQgSSBuZWVkIHRvIGRldGVybWluZSBpdHMgcmVsZXZhbmNlLiBJcyB0aGlzIHRoZSByaWdodCBwbGFjZSB0byBzdGFydCBsb29raW5nPyBEb2VzIGl0IGNvbnRhaW4gdGhlIGNvcmUgbG9naWMgSSdtIGludGVyZXN0ZWQgaW4/IFdoYXQgZGVwZW5kZW5jaWVzIGRvZXMgaXQgaGF2ZT8gSSBuZWVkIHRvIHF1aWNrbHkgYXNzZXNzIGlmIGBzdmMuY2AgaXMgdGhlIGxpbmNocGluIG9yIGlmIEkgbmVlZCB0byByZWRpcmVjdCBteSBhdHRlbnRpb24gZWxzZXdoZXJlLiBMZXQncyBzZWUgd2hhdCB3ZSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjQzMywiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTY6MzE6MjAuMTI0Njg1MTQxWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NTQ4NjM3NCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2V0c29ja29wdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYXRtL3N2Yy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNjozMToyMC4yMjAxODA5NTVaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc3OTY3MjIyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnksIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBgc2V0c29ja29wdGAgaW4gdGhlIEFUTSBTVkMgQ29kZSoqXG5cbk9rYXksIHRpbWUgdG8gZGlnIGluLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgYHNldHNvY2tvcHRgIGlzIGJlaW5nIHVzZWQgd2l0aGluIHRoZSBBVE0gU2VydmljZSBDaGFubmVsIGNvZGUuIFNwZWNpZmljYWxseSwgSSdtIHRoaW5raW5nIGFib3V0IHRoZSBpbXBsaWNhdGlvbnMgZm9yIFttZW50aW9uIHlvdXIgc3BlY2lmaWMgYXJlYSBvZiBleHBlcnRpc2UgLSBlLmcuLCBRb1MsIHNpZ25hbGluZywgZXRjLl0uIFNvLCB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCBpcyBgbmV0L2F0bS9zdmMuY2AuIEkgZXhwZWN0IHRvIGZpbmQgdGhlIHN0YW5kYXJkIHNvY2tldCBvcHRpb25zIGJlaW5nIGNvbmZpZ3VyZWQgdGhlcmUsIGJ1dCBJJ20gYWxzbyBpbnRlcmVzdGVkIGluIGFueSBBVE0tc3BlY2lmaWMgb3B0aW9ucy4gSSdsbCBiZSBsb29raW5nIGZvciBwb3RlbnRpYWwgYXJlYXMgb2YgY29uY2VybiByZWdhcmRpbmcgW21lbnRpb24gc3BlY2lmaWMgY29uY2VybiwgZS5nLiwgcmVzb3VyY2UgYWxsb2NhdGlvbiwgZXJyb3IgaGFuZGxpbmcsIGV0Yy5dLiBJJ2xsIHdhbnQgdG8gc2VlIGhvdyB0aGV5IGFyZSBoYW5kbGluZyB0aGUgb3B0aW9uIGxlbmd0aCBjaGVja3MgdG9vLCBhbmQgaG93IGl0IGlzIHVzZWQgd2l0aCB0aGUgc2lnbmFsaW5nIGxheWVyLiBJIGFudGljaXBhdGUgdGhhdCB0aGlzIHdpbGwgYmUgYSBxdWljayBpbnZlc3RpZ2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NjAzLCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTY6MzE6MjMuOTk5ODU3MTU5WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTIzNzE4NjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2V0c29ja29wdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYXRtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvYXRtL2NvbW1vbi5jPTY5Mj1zdGF0aWMgaW50IGNoZWNrX3Fvcyhjb25zdCBzdHJ1Y3QgYXRtX3FvcyAqcW9zKVxcbi0tXFxubmV0L2F0bS9jb21tb24uYy03MDgtXFxubmV0L2F0bS9jb21tb24uYzo3MDk6aW50IHZjY19zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXFxubmV0L2F0bS9jb21tb24uYy03MTAtXFx0XFx0ICAgc29ja3B0cl90IG9wdHZhbCwgdW5zaWduZWQgaW50IG9wdGxlbilcXG4tLVxcbm5ldC9hdG0vY29tbW9uLmg9MjI9aW50IHZjY19jb21wYXRfaW9jdGwoc3RydWN0IHNvY2tldCAqc29jaywgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpO1xcbm5ldC9hdG0vY29tbW9uLmg6MjM6aW50IHZjY19zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXFxubmV0L2F0bS9jb21tb24uaC0yNC1cXHRcXHQgICBzb2NrcHRyX3Qgb3B0dmFsLCB1bnNpZ25lZCBpbnQgb3B0bGVuKTtcXG4tLVxcbm5ldC9hdG0vcHZjLmM9NTk9c3RhdGljIGludCBwdmNfY29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHJfdW5zaXplZCAqc29ja2FkZHIsXFxuLS1cXG5uZXQvYXRtL3B2Yy5jLTY0LVxcbm5ldC9hdG0vcHZjLmM6NjU6c3RhdGljIGludCBwdmNfc2V0c29ja29wdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLFxcbm5ldC9hdG0vcHZjLmMtNjYtXFx0XFx0XFx0ICBzb2NrcHRyX3Qgb3B0dmFsLCB1bnNpZ25lZCBpbnQgb3B0bGVuKVxcbi0tXFxubmV0L2F0bS9wdmMuYy03MS1cXHRsb2NrX3NvY2soc2spO1xcbm5ldC9hdG0vcHZjLmM6NzI6XFx0ZXJyb3IgPSB2Y2Nfc2V0c29ja29wdChzb2NrLCBsZXZlbCwgb3B0bmFtZSwgb3B0dmFsLCBvcHRsZW4pO1xcbm5ldC9hdG0vcHZjLmMtNzMtXFx0cmVsZWFzZV9zb2NrKHNrKTtcXG4tLVxcbm5ldC9hdG0vcHZjLmM9MTA2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHB2Y19wcm90b19vcHMgPSB7XFxuLS1cXG5uZXQvYXRtL3B2Yy5jLTEyMy1cXHQuc2h1dGRvd24gPVxcdHB2Y19zaHV0ZG93bixcXG5uZXQvYXRtL3B2Yy5jOjEyNDpcXHQuc2V0c29ja29wdCA9XFx0cHZjX3NldHNvY2tvcHQsXFxubmV0L2F0bS9wdmMuYy0xMjUtXFx0LmdldHNvY2tvcHRfaXRlciA9IHB2Y19nZXRzb2Nrb3B0LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNjozMToyNC4xMTIyMzY2MjJaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUxODE1NTQ1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgcmVuZGVyZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipEaXZpbmcgaW50byB0aGUgYHN2Yy5jYCBTb2NrZXQgT3B0aW9ucyoqXG5cblJpZ2h0LCBzbyBgc3ZjLmNgIGlzIGNhbGxpbmcgYHN2Y19zZXRzb2Nrb3B0YCwgaXMgaXQ/IEludGVyZXN0aW5nLiBUaGF0IGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdC4gTXkgbmV4dCB0aG91Z2h0IGlzIHRvIGp1bXAgcmlnaHQgaW4gYW5kIGV4YW1pbmUgdGhlIGBzdmMuY2AgYHByb3RvX29wc2AuIFRoYXQncyB3aGVyZSBJJ2xsIGZpbmQgdGhlIG1lYXQgb2YgaG93IHRoaXMgc29ja2V0IG9wdGlvbiBpcyBiZWluZyBoYW5kbGVkLCB0aGUgdW5kZXJseWluZyBzdHJ1Y3R1cmUuIEknbSBndWVzc2luZyB0aGVyZSdzIGEgc3BlY2lmaWMgcmVhc29uIHdoeSB0aGV5J3JlIHVzaW5nIGBzdmNfc2V0c29ja29wdGAgYW5kIEkgbmVlZCB0byBzZWUgd2hhdCdzIGhhcHBlbmluZyB1bmRlciB0aGUgaG9vZC4gVGltZSB0byBkaWcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjczNTAsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNjozMToyNy42MzAzOTQwNjNaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY4MTg2NzQ2LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwcm90b19vcHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2F0bS9zdmMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTY6MzE6MjcuNjk4NTg5Njk5WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxNDU3MDk1NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipgc3ZjLmNgIGFuZCBgcHJvdG9fb3BzYDogQSBRdWljayBNZW50YWwgQ2hlY2sqKlxuXG5Pa2F5LCBgc3ZjLmNgLi4uIGltbWVkaWF0ZWx5IG15IG1pbmQganVtcHMgdG8gdGhlIG5ldHdvcmsgc2VydmljZSBjb2RlLCBsaWtlbHkgdGhlIGNvcmUgb2YgdGhlIHNlcnZpY2UgaGFuZGxpbmcuIFNwZWNpZmljYWxseSwgbXkgYnJhaW4gbGF0Y2hlcyBvbnRvIFwicHJvdG9fb3BzXCIuIFRoYXQncyBpbnRlcmVzdGluZywgYW5kIHF1aXRlIHRlbGxpbmcuIE15IGJyYWluIGlzIGFscmVhZHkgc3RhcnRpbmcgdG8gcGllY2UgdG9nZXRoZXIgdGhlIGltcGxpY2F0aW9ucy4gYHByb3RvX29wc2AgdHlwaWNhbGx5IGltcGxpZXMgYSBzdHJ1Y3R1cmUgb3Igc2V0IG9mIGZ1bmN0aW9uIHBvaW50ZXJzIHVzZWQgdG8gYWJzdHJhY3QgYW5kIGVuY2Fwc3VsYXRlIHByb3RvY29sLXNwZWNpZmljIG9wZXJhdGlvbnMgd2l0aGluIHRoZSBuZXR3b3JrIHNlcnZpY2UgZnJhbWV3b3JrLiBTbywgbXkgaW5pdGlhbCB0aG91Z2h0IGlzOiB0aGlzIGlzIGFib3V0IHByb3RvY29sIGhhbmRsaW5nICp3aXRoaW4qIHRoZSBzZXJ2aWNlIGl0c2VsZiwgbm90IGp1c3QgdGhlIGdlbmVyaWMgc2VydmljZSBmcmFtZXdvcmsuIEFtIEkgcmlnaHQgaW4gdGhpbmtpbmcgdGhpcyBpcyBwYXJ0IG9mIGEgbGFyZ2VyLCBmbGV4aWJsZSBkZXNpZ24/IElzIHRoaXMgd2hlcmUgSSBjYW4gZmluZCB0aGUgY29ubmVjdGlvbi1oYW5kbGluZyBsb2dpYywgZGF0YSBzZXJpYWxpemF0aW9uL2Rlc2VyaWFsaXphdGlvbiwgYW5kIHBlcmhhcHMgYXV0aGVudGljYXRpb24gb3Igc2VjdXJpdHktcmVsYXRlZCBzdHVmZj8gV2hhdCBwcm90b2NvbHMgaXMgaXQgc3VwcG9ydGluZz8gVGltZSB0byBkaXZlIGluLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc1NzYsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNjozMTozMS44NDQzMDE3NzlaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1MDExMDM5MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwcm90b19vcHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2F0bS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2F0bS9jb21tb24uYy05LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9rbW9kLmhcXHUwMDNlXFxubmV0L2F0bS9jb21tb24uYzoxMDojaW5jbHVkZSBcXHUwMDNjbGludXgvbmV0LmhcXHUwMDNlXFx0XFx0Lyogc3RydWN0IHNvY2tldCwgc3RydWN0IHByb3RvX29wcyAqL1xcbm5ldC9hdG0vY29tbW9uLmMtMTEtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2F0bS5oXFx1MDAzZVxcdFxcdC8qIEFUTSBzdHVmZiAqL1xcbi0tXFxubmV0L2F0bS9pb2N0bC5jLTEwLSNpbmNsdWRlIFxcdTAwM2NsaW51eC9rbW9kLmhcXHUwMDNlXFxubmV0L2F0bS9pb2N0bC5jOjExOiNpbmNsdWRlIFxcdTAwM2NsaW51eC9uZXQuaFxcdTAwM2VcXHRcXHQvKiBzdHJ1Y3Qgc29ja2V0LCBzdHJ1Y3QgcHJvdG9fb3BzICovXFxubmV0L2F0bS9pb2N0bC5jLTEyLSNpbmNsdWRlIFxcdTAwM2NsaW51eC9hdG0uaFxcdTAwM2VcXHRcXHQvKiBBVE0gc3R1ZmYgKi9cXG4tLVxcbm5ldC9hdG0vcHZjLmMtNi1cXG5uZXQvYXRtL3B2Yy5jOjc6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L25ldC5oXFx1MDAzZVxcdFxcdC8qIHN0cnVjdCBzb2NrZXQsIHN0cnVjdCBwcm90b19vcHMgKi9cXG5uZXQvYXRtL3B2Yy5jLTgtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2F0bS5oXFx1MDAzZVxcdFxcdC8qIEFUTSBzdHVmZiAqL1xcbi0tXFxubmV0L2F0bS9wdmMuYz04OT1zdGF0aWMgaW50IHB2Y19nZXRuYW1lKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkciAqc29ja2FkZHIsXFxuLS1cXG5uZXQvYXRtL3B2Yy5jLTEwNS1cXG5uZXQvYXRtL3B2Yy5jOjEwNjpzdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBwdmNfcHJvdG9fb3BzID0ge1xcbm5ldC9hdG0vcHZjLmMtMTA3LVxcdC5mYW1pbHkgPVxcdFBGX0FUTVBWQyxcXG4tLVxcbm5ldC9hdG0vcHZjLmM9MTMyPXN0YXRpYyBpbnQgcHZjX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBwcm90b2NvbCxcXG4tLVxcbm5ldC9hdG0vcHZjLmMtMTM3LVxcbm5ldC9hdG0vcHZjLmM6MTM4OlxcdHNvY2stXFx1MDAzZW9wcyA9IFxcdTAwMjZwdmNfcHJvdG9fb3BzO1xcbm5ldC9hdG0vcHZjLmMtMTM5LVxcdHJldHVybiB2Y2NfY3JlYXRlKG5ldCwgc29jaywgcHJvdG9jb2wsIFBGX0FUTVBWQywga2Vybik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE2OjMxOjMyLjM5NDQxNzcxMloiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTM1NjI0MDk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKk5hdmlnYXRpbmcgdGhlIEFUTSBTZXJ2aWNlIENvZGUqKlxuXG5BbHJpZ2h0LCBzbyB3ZSdyZSBkZWFsaW5nIHdpdGggdGhlIGBzdmMuY2AgZmlsZSBhbmQgaXRzIGFzc29jaWF0aW9uIHdpdGggYFBGX0FUTVNWQ2AuIFJpZ2h0LCBtYWtlcyBzZW5zZS4gTm93LCBteSBmaXJzdCBtb3ZlIGlzIGFsd2F5cyB0byBkaXZlIGluIHRoZXJlIGFuZCBzZWUgd2hhdCB3ZSdyZSB3b3JraW5nIHdpdGggaW4gdGVybXMgb2YgdGhlIHNlcnZpY2UncyBwcm90b2NvbCBvcGVyYXRpb25zLiBNeSBpbnR1aXRpb24gc3VnZ2VzdHMgdGhhdCB3ZSdsbCBiZSBsb29raW5nIGZvciBgc3ZjX3Byb3RvX29wc2AsIG9yIG1heWJlIGp1c3Qgc29tZSBgb3BzYCBzdHJ1Y3Qgd2l0aGluIHRoZSBmaWxlLiBJdCdzIGEgcHJldHR5IHN0YW5kYXJkIGNvbnZlbnRpb24sIHNvIHRoYXQncyB3aGVyZSBJJ2xsIGZvY3VzIG15IGluaXRpYWwgc2Nhbi4gRmluZGluZyB0aGF0IHdpbGwgZ2l2ZSBtZSBhIGdvb2QgaGFuZGxlIG9uIGhvdyB0aGUgQVRNIHNlcnZpY2UgaXRzZWxmIGlzIGhhbmRsaW5nIGRpZmZlcmVudCBvcGVyYXRpb25zLCBhbmQgd2hhdCB0aGUga2V5IGludGVyZmFjZXMgYXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MjcyLCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTY6MzE6MzUuOTMwMDQ5MDExWiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDc1ODgyNjksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm9wc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYXRtL3N2Yy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNjozMTozNi4yMzc2NDU3MDFaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDk5NDUyNTAzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkRpdmluZyBpbnRvIGBuZXQvYXRtL3N2Yy5jYCoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZGlnIGluLiBUaGUgdGFzayBhdCBoYW5kIGxpa2VseSByZXF1aXJlcyBtZSB0byB1bmRlcnN0YW5kIHNvbWV0aGluZyBhYm91dCB0aGUgQVRNIHNlcnZpY2UgbGF5ZXIgd2l0aGluIHRoZSBrZXJuZWwuIFRvIGRvIHRoYXQsIEkgbmVlZCB0byBnZXQgaW50aW1hdGVseSBmYW1pbGlhciB3aXRoIHRoZSBjb2RlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBjaGVjayB0aGUgY29udGVudHMgb2YgYG5ldC9hdG0vc3ZjLmNgLiBJIGV4cGVjdCB0byBmaW5kIHRoZSBjb3JlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBBVE0gc2VydmljZSBpbnRlcmZhY2UgaGVyZTogaG93IGl0IGhhbmRsZXMgY29ubmVjdGlvbiBzZXR1cCwgZGF0YSB0cmFuc21pc3Npb24sIHNpZ25hbGluZywgYW5kIGVycm9yIGhhbmRsaW5nLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRoZSBmdW5kYW1lbnRhbCBkYXRhIHN0cnVjdHVyZXMsIGZ1bmN0aW9uIGNhbGxzLCBhbmQgY29udHJvbCBmbG93IHRoYXQgZGVmaW5lIHRoZSBBVE0gc2VydmljZSdzIGJlaGF2aW9yIHdpdGhpbiB0aGUgbmV0d29yayBzdGFjay4gSSdsbCBiZSBtZW50YWxseSBwYXJzaW5nIHRoZSBjb2RlIGFuZCBjcm9zcy1yZWZlcmVuY2luZyB0aGlzIG1vZHVsZSB3aXRoIG90aGVyIHJlbGF0ZWQgb25lcywgbGlrZSB0aGUgQVRNIGRldmljZSBkcml2ZXJzIGFuZCB0aGUgQVRNIGxheWVyIGl0c2VsZiB0byBnYWluIGEgaG9saXN0aWMgdmlldyBvZiB0aGUgZnVuY3Rpb25hbGl0eSBhbmQgaXRzIGRlcGVuZGVuY2llcy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODUyMSwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE2OjMxOjQxLjIzMjE3NDEyM1oiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjAzMjI0ODE2LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJQRl9BVE1TVkNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2F0bS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE2OjMxOjQxLjQzNTQwNjcwOVoiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzk2MTM0NzkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipBIFF1aWNrIENvZGUgTG9jYXRpb24gQ2hlY2sqKlxuXG5Pa2F5LCBzbyBJJ20ganVzdCBxdWlja2x5IHRyeWluZyB0byBqb2cgbXkgbWVtb3J5Li4uIEkgY291bGQgaGF2ZSBzd29ybiBJIHNhdyBzb21ldGhpbmcgYWJvdXQgdGhlIEFUTSBzZXJ2aWNlIGFuZCB3YXMganVzdCB0cnlpbmcgdG8gcmVtZW1iZXIgd2hlcmUgSSBsYXN0IHNhdyB0aGUgY29kZSBmb3IgYFBGX0FUTVNWQ2AuICBXYWl0IGEgbWludXRlLCBpc24ndCB0aGF0IGZ1bmN0aW9uYWxpdHkgYWN0dWFsbHkgaW1wbGVtZW50ZWQgaW4gYG5ldC9hdG0vc3ZjLmNgPyBHb29kLCB0aGF0J3Mgd2hlcmUgSSBuZWVkIHRvIGJlLiBJIGtuZXcgaXQgd2FzIHNvbWV3aGVyZSBpbiB0aGF0IG5ldHdvcmtpbmcgc3Vic3lzdGVtLiBMZXQgbWUgZ28gZG91YmxlIGNoZWNrIG15IGFzc3VtcHRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NzY4LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTY6MzE6NDQuODMxNTQzNzIxWiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTQ5MzYyMTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiUEZfQVRNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9hdG0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9hdG0vY29tbW9uLmM9ODU2PU1PRFVMRV9MSUNFTlNFKFxcXCJHUExcXFwiKTtcXG5uZXQvYXRtL2NvbW1vbi5jOjg1NzpNT0RVTEVfQUxJQVNfTkVUUFJPVE8oUEZfQVRNUFZDKTtcXG4tLVxcbm5ldC9hdG0vcHJvYy5jPTMxNz1pbnQgX19pbml0IGF0bV9wcm9jX2luaXQodm9pZClcXG4tLVxcbm5ldC9hdG0vcHJvYy5jLTMyMy1cXHRwcm9jX2NyZWF0ZV9zZXFfcHJpdmF0ZShcXFwicHZjXFxcIiwgMDQ0NCwgYXRtX3Byb2Nfcm9vdCwgXFx1MDAyNnB2Y19zZXFfb3BzLFxcbm5ldC9hdG0vcHJvYy5jOjMyNDpcXHRcXHRcXHRzaXplb2Yoc3RydWN0IHZjY19zdGF0ZSksICh2b2lkICopKHVpbnRwdHJfdClQRl9BVE1QVkMpO1xcbm5ldC9hdG0vcHJvYy5jLTMyNS1cXHRwcm9jX2NyZWF0ZV9zZXFfcHJpdmF0ZShcXFwidmNcXFwiLCAwNDQ0LCBhdG1fcHJvY19yb290LCBcXHUwMDI2dmNjX3NlcV9vcHMsXFxuLS1cXG5uZXQvYXRtL3B2Yy5jPTEwNj1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBwdmNfcHJvdG9fb3BzID0ge1xcbm5ldC9hdG0vcHZjLmM6MTA3OlxcdC5mYW1pbHkgPVxcdFBGX0FUTVBWQyxcXG5uZXQvYXRtL3B2Yy5jLTEwOC1cXHQub3duZXIgPVxcdFRISVNfTU9EVUxFLFxcbi0tXFxubmV0L2F0bS9wdmMuYz0xMzI9c3RhdGljIGludCBwdmNfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2tldCAqc29jaywgaW50IHByb3RvY29sLFxcbi0tXFxubmV0L2F0bS9wdmMuYy0xMzgtXFx0c29jay1cXHUwMDNlb3BzID0gXFx1MDAyNnB2Y19wcm90b19vcHM7XFxubmV0L2F0bS9wdmMuYzoxMzk6XFx0cmV0dXJuIHZjY19jcmVhdGUobmV0LCBzb2NrLCBwcm90b2NvbCwgUEZfQVRNUFZDLCBrZXJuKTtcXG5uZXQvYXRtL3B2Yy5jLTE0MC19XFxuLS1cXG5uZXQvYXRtL3B2Yy5jPTE0Mj1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9wcm90b19mYW1pbHkgcHZjX2ZhbWlseV9vcHMgPSB7XFxubmV0L2F0bS9wdmMuYzoxNDM6XFx0LmZhbWlseSA9IFBGX0FUTVBWQyxcXG5uZXQvYXRtL3B2Yy5jLTE0NC1cXHQuY3JlYXRlID0gcHZjX2NyZWF0ZSxcXG4tLVxcbm5ldC9hdG0vcHZjLmM9MTU5PXZvaWQgYXRtcHZjX2V4aXQodm9pZClcXG5uZXQvYXRtL3B2Yy5jLTE2MC17XFxubmV0L2F0bS9wdmMuYzoxNjE6XFx0c29ja191bnJlZ2lzdGVyKFBGX0FUTVBWQyk7XFxubmV0L2F0bS9wdmMuYy0xNjItfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNjozMTo0NS4zMjY0ODU5NTdaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTMzMDc4MDk3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipOYXZpZ2F0aW5nIHRoZSBBVE0gU3Vic3lzdGVtIFNvdXJjZSBDb2RlKipcblxuUmlnaHQsIHNvIEknbSBsb29raW5nIGF0IHRoaXMgZnVuY3Rpb24gb3IgZGF0YSBzdHJ1Y3R1cmUsIGxldCdzIGNhbGwgaXQgYHN2Y2AsIGFuZCBJIHNlZSB0aGUgZmlsZSBwYXRoIGBuZXQvYXRtL3N2Yy5jYC4gSG1tLCBhIHF1aWNrIG1lbnRhbCBjaGVjayBjb25maXJtcyB0aGF0J3MgbGlrZWx5ICp3aXRoaW4qIHRoZSBBVE0gKEFzeW5jaHJvbm91cyBUcmFuc2ZlciBNb2RlKSBzdWJzeXN0ZW0sIGEgY3JpdGljYWwgcGllY2Ugb2Yga2VybmVsIG5ldHdvcmtpbmcuIE5vdywgdG8gZ2V0IG15IGJlYXJpbmdzIGFuZCB1bmRlcnN0YW5kIHRoZSB3aWRlciBjb250ZXh0LCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBjb25maXJtIHRoZSBsb2NhdGlvbi4gSSdsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgbmV0L2F0bWAgaXMgaW5kZWVkIHRoZSByb290IGRpcmVjdG9yeSBmb3IgdGhpcyBhcmVhIG9mIHRoZSBjb2RlIGJhc2UuIEknbGwgbWVudGFsbHkgYnJvd3NlIHRoZSBkaXJlY3Rvcnkgc3RydWN0dXJlLCBpZiBJIGNhbiBmaW5kIGl0IHBoeXNpY2FsbHkgdGhhdCBpcy4gSSdtIGFscmVhZHkgdmlzdWFsaXppbmcgdGhlIGV4cGVjdGVkIGxheW91dCB3aXRoaW4gdGhlIGZpbGVzeXN0ZW0uIFRoaXMgaXMgYSB2ZXJ5IGNvbW1vbiBwYXR0ZXJuLCBidXQgaXQncyBhbHdheXMgZ29vZCB0byBxdWlja2x5IGNvbmZpcm0gdGhlIGFzc3VtcHRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NDg4LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTY6MzE6NTAuNjU3MjcxMTQ3WiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImNvZGVzZWFyY2gtZGlyLWluZGV4IiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTE1MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJEaXJcIjogXCJuZXQvYXRtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJGaWxlc1wiOiBbXG4gICAgXCJhdG1fbWlzYy5jXCIsXG4gICAgXCJhdG1fc3lzZnMuY1wiLFxuICAgIFwiYnIyNjg0LmNcIixcbiAgICBcImNvbW1vbi5jXCIsXG4gICAgXCJjb21tb24uaFwiLFxuICAgIFwiaW9jdGwuY1wiLFxuICAgIFwicHBwb2F0bS5jXCIsXG4gICAgXCJwcm9jLmNcIixcbiAgICBcInByb3RvY29scy5oXCIsXG4gICAgXCJwdmMuY1wiLFxuICAgIFwicmF3LmNcIixcbiAgICBcInJlc291cmNlcy5jXCIsXG4gICAgXCJyZXNvdXJjZXMuaFwiXG4gIF0sXG4gIFwiU3ViZGlyc1wiOiBudWxsXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNjozMTo1MC42NTczNjQ4MzdaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDIzMDk4NTM1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipOYXZpZ2F0aW5nIHRoZSBBVE0gRmlsZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBmb3IgYHN2Yy5jYCwgYnV0IGl0J3MgYXBwYXJlbnRseSBub3QgcHJlc2VudC4gSW50ZXJlc3RpbmcuIEluc3RlYWQsIEknbSBzZWVpbmcgYHB2Yy5jYCwgYHJhdy5jYCwgYGJyMjY4NC5jYCwgYW5kIGBwcHBvYXRtLmNgLiBHaXZlbiB3aGF0IEknbSB0cnlpbmcgdG8gYWNoaWV2ZSwgdGhhdCdzIHVzZWZ1bCBjb250ZXh0LiBJJ2xsIG5lZWQgdG8gcmVtZW1iZXIgdGhlIGxheW91dCBvZiB0aGVzZSBmaWxlcyBnb2luZyBmb3J3YXJkIGFzIHRoZSBuYW1pbmcgY29udmVudGlvbiBpcyBub3QgYXMgSSBleHBlY3RlZC5cblxuTm93LCBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgaG93IGBzZXRzb2Nrb3B0YCBpcyB1c2VkLiBJJ2xsIGZvY3VzIG15IHNlYXJjaCBvbiB0aGUgYG5ldC9hdG0vYCBkaXJlY3RvcnkuIFRoYXQncyB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCBkaWdnaW5nIGludG8gdGhlIEFUTS1zcGVjaWZpYyBzb2NrZXQgb3B0aW9ucyBhbmQgaG93IHRoZXkncmUgaGFuZGxlZC4gTGV0J3Mgc2VlIHdoYXQgd2UgZmluZCB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6OTg0MywiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU4LCJUb29sQ2FsbHMiOlsiY29kZXNlYXJjaC1kaXItaW5kZXgiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNjozMTo1NC44ODgzNTUzNzFaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcxNjgwOTI1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNldHNvY2tvcHRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2F0bS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2F0bS9jb21tb24uYz02OTI9c3RhdGljIGludCBjaGVja19xb3MoY29uc3Qgc3RydWN0IGF0bV9xb3MgKnFvcylcXG4tLVxcbm5ldC9hdG0vY29tbW9uLmMtNzA4LVxcbm5ldC9hdG0vY29tbW9uLmM6NzA5OmludCB2Y2Nfc2V0c29ja29wdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLFxcbm5ldC9hdG0vY29tbW9uLmMtNzEwLVxcdFxcdCAgIHNvY2twdHJfdCBvcHR2YWwsIHVuc2lnbmVkIGludCBvcHRsZW4pXFxuLS1cXG5uZXQvYXRtL2NvbW1vbi5oPTIyPWludCB2Y2NfY29tcGF0X2lvY3RsKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKTtcXG5uZXQvYXRtL2NvbW1vbi5oOjIzOmludCB2Y2Nfc2V0c29ja29wdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLFxcbm5ldC9hdG0vY29tbW9uLmgtMjQtXFx0XFx0ICAgc29ja3B0cl90IG9wdHZhbCwgdW5zaWduZWQgaW50IG9wdGxlbik7XFxuLS1cXG5uZXQvYXRtL3B2Yy5jPTU5PXN0YXRpYyBpbnQgcHZjX2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyX3Vuc2l6ZWQgKnNvY2thZGRyLFxcbi0tXFxubmV0L2F0bS9wdmMuYy02NC1cXG5uZXQvYXRtL3B2Yy5jOjY1OnN0YXRpYyBpbnQgcHZjX3NldHNvY2tvcHQoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcXG5uZXQvYXRtL3B2Yy5jLTY2LVxcdFxcdFxcdCAgc29ja3B0cl90IG9wdHZhbCwgdW5zaWduZWQgaW50IG9wdGxlbilcXG4tLVxcbm5ldC9hdG0vcHZjLmMtNzEtXFx0bG9ja19zb2NrKHNrKTtcXG5uZXQvYXRtL3B2Yy5jOjcyOlxcdGVycm9yID0gdmNjX3NldHNvY2tvcHQoc29jaywgbGV2ZWwsIG9wdG5hbWUsIG9wdHZhbCwgb3B0bGVuKTtcXG5uZXQvYXRtL3B2Yy5jLTczLVxcdHJlbGVhc2Vfc29jayhzayk7XFxuLS1cXG5uZXQvYXRtL3B2Yy5jPTEwNj1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBwdmNfcHJvdG9fb3BzID0ge1xcbi0tXFxubmV0L2F0bS9wdmMuYy0xMjMtXFx0LnNodXRkb3duID1cXHRwdmNfc2h1dGRvd24sXFxubmV0L2F0bS9wdmMuYzoxMjQ6XFx0LnNldHNvY2tvcHQgPVxcdHB2Y19zZXRzb2Nrb3B0LFxcbm5ldC9hdG0vcHZjLmMtMTI1LVxcdC5nZXRzb2Nrb3B0X2l0ZXIgPSBwdmNfZ2V0c29ja29wdCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTY6MzE6NTQuOTYwMDQyNTM2WiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgxMTk0NzkxOTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBTY29wZSBvZiBhIE5ldHdvcmsgQVRNIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdHJhY2luZyBob3cgaXQgaW1wYWN0cyB0aGUgYEFUTWAgY29uZmlndXJhdGlvbiBpbiB0aGUga2VybmVsLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgdmNjX3NldHNvY2tvcHRgIGlzIGNhbGxlZCBmcm9tIGBwdmNfc2V0c29ja29wdGAuIEkga25vdyB0aGF0IGBwdmNfc2V0c29ja29wdGAgcmVzaWRlcyBpbiBgbmV0L2F0bS9wdmMuY2AsIGFuZCB0aGUgcGF0Y2ggc3BlY2lmaWNhbGx5IG1vZGlmaWVzIGB2Y2Nfc2V0c29ja29wdGAuIFRoaXMgY2xlYXJseSBwb2ludHMgdG8gYSBmdW5jdGlvbmFsIGNoYW5nZSByZWxhdGVkIHRvIGhvdyBzb2NrZXQgb3B0aW9ucyBhcmUgc2V0IHdpdGhpbiB0aGUgQVRNIGNvbnRleHQuXG5cbk15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBpZGVudGlmeSB0aGUga2V5IGZvY3VzIHN5bWJvbCwgYW5kIGl0J3MgcHJldHR5IGNsZWFyIHRoYXQgaXQncyBgdmNjX3NldHNvY2tvcHRgLiBOb3csIGlzIGl0IGV4cG9ydGVkPyBIbW1tLCBubywgaXQncyBub3QgZXhwb3J0ZWQuIEJ1dCB3YWl0LCBpdCdzIGFsc28gKm5vdCogc3RhdGljLCBzbyBpdCAqZG9lcyogaGF2ZSBhIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzLiBPa2F5LCBJIHdhcyBsb29raW5nIGluIHRoZSB3cm9uZyBwbGFjZSBlYXJsaWVyLCBgdmNjX3NldHNvY2tvcHRgIGlzIGFjdHVhbGx5IGluIGBuZXQvYXRtL2NvbW1vbi5jYCwgYW5kIGl0IGlzICpub3QqIGRlY2xhcmVkIHN0YXRpYyEgVGhhdCdzIGNydWNpYWwuIFRoaXMgbWVhbnMgaXQncyBhdmFpbGFibGUgZm9yIHBvdGVudGlhbCBsaW5raW5nIGZyb20gZWxzZXdoZXJlLCB3aGljaCBzdHJlbmd0aGVucyBpdHMgaW1wb3J0YW5jZSBhcyBhIHN5bWJvbCB0byBpbnZlc3RpZ2F0ZS5cblxuU2luY2UgYHZjY19zZXRzb2Nrb3B0YCBpcyB0aGUgcmVhbCB0YXJnZXQgaGVyZSwgbGV0J3MganVzdCBjb25maXJtIHRoYXQgYHB2Y19zZXRzb2Nrb3B0YCBpcyBhY3R1YWxseSBzdGF0aWMuIE9rYXksIHllcywgaXQgKmlzKiBzdGF0aWMuIFRoaXMgZnVydGhlciB2YWxpZGF0ZXMgdGhhdCB0aGUgY29yZSBjaGFuZ2UgcmV2b2x2ZXMgYXJvdW5kIGB2Y2Nfc2V0c29ja29wdGAuIFNvLCBJJ20gY29uZmlkZW50IHRoYXQgdGhpcyBpcyBhIGdvb2Qgc3ltYm9sIHRvIGZvY3VzIG9uIHdoZW4gcmV2aWV3aW5nIHRoaXMgcGF0Y2guXG5cblJpZ2h0LCB0aGUgbWFpbiBjb25maWcgaXMgYEFUTWAuIEp1c3QgdG8gYmUgc2FmZSwgSSdsbCBxdWlja2x5IGNoZWNrIGBuZXQvYXRtL0tjb25maWdgIGFnYWluIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJ3QgYW55IG90aGVyIGRlcGVuZGVudCBjb25maWdzIHRoYXQgYXJlIG5lZWRlZCwganVzdCB0byBiZSB0aG9yb3VnaC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA2MDIsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTY6MzI6MDMuMDc5NTI1Mjc4WiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODA4Mjk1NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQVRNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9hdG0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvYXRtL0tjb25maWctNS1cXG5uZXQvYXRtL0tjb25maWc6Njpjb25maWcgQVRNXFxubmV0L2F0bS9LY29uZmlnLTctXFx0dHJpc3RhdGUgXFxcIkFzeW5jaHJvbm91cyBUcmFuc2ZlciBNb2RlIChBVE0pXFxcIlxcbi0tXFxubmV0L2F0bS9LY29uZmlnLTIxLVxcbm5ldC9hdG0vS2NvbmZpZzoyMjpjb25maWcgQVRNX0JSMjY4NFxcbm5ldC9hdG0vS2NvbmZpZy0yMy1cXHR0cmlzdGF0ZSBcXFwiUkZDMTQ4My8yNjg0IEJyaWRnZWQgcHJvdG9jb2xzXFxcIlxcbi0tXFxubmV0L2F0bS9LY29uZmlnLTMwLVxcbm5ldC9hdG0vS2NvbmZpZzozMTpjb25maWcgQVRNX0JSMjY4NF9JUEZJTFRFUlxcbm5ldC9hdG0vS2NvbmZpZy0zMi1cXHRib29sIFxcXCJQZXItVkMgSVAgZmlsdGVyIGtsdWRnZVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTY6MzI6MDMuMTQ3NjEyNjYzWiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMzI5MzAxNjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgaG93IEknZCBhcHByb2FjaCB0aGlzIHRhc2ssIGFzIGlmIHRoZXNlIHdlcmUgbXkgaW50ZXJuYWwgdGhvdWdodHM6XG5cbioqQ2hlY2tpbmcgRGVwZW5kZW5jaWVzIGZvciBBVE0gaW4gdGhlIEtlcm5lbCBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzIGZvciBBVE0gc3VwcG9ydCBpbiB0aGlzIGtlcm5lbC4gVGhlIGZpcnN0IHBsYWNlIHRvIGNoZWNrIGlzIHVzdWFsbHkgdGhlIGBLY29uZmlnYCBmaWxlIGluIHRoZSByZWxldmFudCBzdWJzeXN0ZW0gZGlyZWN0b3J5LiBJbiB0aGlzIGNhc2UsIHRoYXQncyBgbmV0L2F0bS9LY29uZmlnYC4gSSBhbHJlYWR5IGtub3cgdGhlIHVzdWFsIGxvY2F0aW9ucywgYW5kIHRoaXMgcGF0aCBzZWVtcyBsb2dpY2FsLiBMb29raW5nIGF0IHRoaXMgYEtjb25maWdgIGZpbGUgd2lsbCBxdWlja2x5IHRlbGwgbWUgd2hpY2ggb3RoZXIgZmVhdHVyZXMsIGhhcmR3YXJlIGRyaXZlcnMsIG9yIGtlcm5lbCBvcHRpb25zIGFyZSByZXF1aXJlZCB0byBlbmFibGUgb3IgdXNlIHRoZSBBVE0gZnVuY3Rpb25hbGl0eS4gS25vd2luZyB0aGVzZSBkZXBlbmRlbmNpZXMgaXMgY3J1Y2lhbCBmb3IgYSBjbGVhbiBhbmQgZWZmaWNpZW50IGtlcm5lbCBjb25maWd1cmF0aW9uIGFuZCB1bmRlcnN0YW5kaW5nIHRoZSBpbnRlcmFjdGlvbiBvZiBkaWZmZXJlbnQgY29tcG9uZW50cyBpbiB0aGUgbmV0d29yayBzdGFjay4gSXQgYWxzbyBoZWxwcyBpbiBkZWJ1Z2dpbmcgcG90ZW50aWFsIGlzc3VlcyBsYXRlciBvbiwgbWFraW5nIHN1cmUgdGhhdCBhbGwgdGhlIG5lY2Vzc2FyeSBidWlsZGluZyBibG9ja3MgYXJlIGluIHBsYWNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTQwOSwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE2OjMyOjA3LjI4MDU0NjU2NVoiLCJTZXEiOjQyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjY0MTU4NDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVwZW5kcyBvblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYXRtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2F0bS9LY29uZmlnPTIyPWNvbmZpZyBBVE1fQlIyNjg0XFxubmV0L2F0bS9LY29uZmlnLTIzLVxcdHRyaXN0YXRlIFxcXCJSRkMxNDgzLzI2ODQgQnJpZGdlZCBwcm90b2NvbHNcXFwiXFxubmV0L2F0bS9LY29uZmlnOjI0OlxcdGRlcGVuZHMgb24gQVRNIFxcdTAwMjZcXHUwMDI2IElORVRcXG5uZXQvYXRtL0tjb25maWctMjUtXFx0aGVscFxcbi0tXFxubmV0L2F0bS9LY29uZmlnPTMxPWNvbmZpZyBBVE1fQlIyNjg0X0lQRklMVEVSXFxubmV0L2F0bS9LY29uZmlnLTMyLVxcdGJvb2wgXFxcIlBlci1WQyBJUCBmaWx0ZXIga2x1ZGdlXFxcIlxcbm5ldC9hdG0vS2NvbmZpZzozMzpcXHRkZXBlbmRzIG9uIEFUTV9CUjI2ODRcXG5uZXQvYXRtL0tjb25maWctMzQtXFx0aGVscFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNjozMjowNy4zNDY5NjcxM1oiLCJTZXEiOjQzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTM1Njc3OTM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyBBVE0gQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGUgS2NvbmZpZyBmaWxlIGZvciBBVE0sIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGBuZXQvYXRtYCBkaXJlY3RvcnkuIE15IGluaXRpYWwgdGhvdWdodCBpcywgXCJIbW0sIEFUTSBkb2Vzbid0IHNlZW0gdG8gaGF2ZSBhbnkgZGlyZWN0IGRlcGVuZGVuY2llcyBkZWZpbmVkIGluIGl0cyBvd24gYEtjb25maWdgIGZpbGUuXCIgVGhhdCdzIGEgbGl0dGxlIHVudXN1YWwsIHNvIGxldCdzIGRpZyBkZWVwZXIuIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBjaGVjayB0aGUgcGFyZW50IGBuZXQvS2NvbmZpZ2AgZmlsZS4gSSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGUgYEFUTWAgc3ltYm9sIGlzIHNvdXJjZWQgb3IgY29uZGl0aW9uYWxseSBpbmNsdWRlZCBmcm9tIHRoYXQgaGlnaGVyLWxldmVsIGNvbmZpZ3VyYXRpb24uIEtub3dpbmcgdGhpcyB3aWxsIGNsYXJpZnkgaG93IGFuZCB3aGVyZSBgQVRNYCBpcyBjb250cm9sbGVkIHdpdGhpbiB0aGUgb3ZlcmFsbCBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gY29udGV4dC4gVW5kZXJzdGFuZGluZyB0aGlzIHNvdXJjaW5nIHJlbGF0aW9uc2hpcCBpcyBrZXkgdG8gZnVsbHkgZ3Jhc3AgaXRzIGludGVncmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTgwOSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE2OjMyOjEyLjI4MjY0ODUwNloiLCJTZXEiOjQ0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njc0NjMyMzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic291cmNlIFxcXCJuZXQvYXRtL0tjb25maWdcXFwiXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9LY29uZmlnPTI1Nj1zb3VyY2UgXFxcIm5ldC90aXBjL0tjb25maWdcXFwiXFxubmV0L0tjb25maWc6MjU3OnNvdXJjZSBcXFwibmV0L2F0bS9LY29uZmlnXFxcIlxcbm5ldC9LY29uZmlnLTI1OC1zb3VyY2UgXFxcIm5ldC9sMnRwL0tjb25maWdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE2OjMyOjEyLjM1MDExOTM0MVoiLCJTZXEiOjQ1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2OTA5MjU2MTIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEFUTSBTb2NrZXQgT3B0aW9uIENoYW5nZSoqXG5cbk9rYXksIHNvIGl0IGxvb2tzIGxpa2UgdGhlIEFUTSBjb25maWd1cmF0aW9uIGlzIHRoZSBvbmx5IG9uZSBJIG5lZWQgdG8gY29uc2lkZXIgaGVyZS4gTXkgZm9jYWwgcG9pbnQgaXMgZGVmaW5pdGVseSBgdmNjX3NldHNvY2tvcHRgLiBUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgYnVnIGluIGhvdyBgdmNjX3NldHNvY2tvcHRgIGhhbmRsZXMgc29ja2V0IG9wdGlvbnMsIHNwZWNpZmljYWxseSBieSBjaGFuZ2luZyBhIHZhcmlhYmxlIGZyb20gYHVuc2lnbmVkIGxvbmdgIHRvIGBpbnRgIGFuZCBpbXBsZW1lbnRpbmcgYGNvcHlfc2FmZV9mcm9tX3NvY2twdHJgIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgcmVsYXRlZCB0byBBVE0gc29ja2V0IG9wdGlvbnMsIG5vdCBqdXN0IGEgY29zbWV0aWMgZml4LlxuXG5Ob3csIHRvIG1ha2Ugc3VyZSB0aGlzIGlzIGFjdHVhbGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLCBJIG5lZWQgdG8gY29uZmlybSB0aGF0IGB2Y2Nfc2V0c29ja29wdGAgaXMgcmVhY2hhYmxlLiBZZXMsIGl0IGxvb2tzIGxpa2UgaXQgaXMuIEJhc2VkIG9uIG15IHVuZGVyc3RhbmRpbmcgb2YgQVRNIGFuZCBzb2NrZXQgQVBJcywgaXQgaXMgYWNjZXNzaWJsZSB2aWEgYHNldHNvY2tvcHRgIG9uIGFuIEFUTSBQVkMgc29ja2V0LiBJIGNhbiBzZWUgdGhlIHBhdGg6IGBzb2NrZXQoUEZfQVRNUFZDLCBTT0NLX0RHUkFNLCAwKWAgZm9sbG93ZWQgYnkgYHNldHNvY2tvcHQoZmQsIFNPTF9BVE0sIFNPX1NFVENMUCwgXHUwMDI2dmFsLCBzaXplb2YodmFsKSlgLiBUaGF0J3MgYSBkaXJlY3Qgcm91dGUgaW50byB0aGUgZnVuY3Rpb24gSSdtIGludGVyZXN0ZWQgaW4uIEkgY2FuIGNvbmZpcm0gdGhpcyBpcyByZWFjaGFibGUuXG5cblRoZXJlZm9yZSwgdGhlIHJlY29tbWVuZGF0aW9uIEknbGwgcmV0dXJuIGlzIGFzIGZvbGxvd3M6XG5cbiogICAqKldvcnRoRnV6emluZzogdHJ1ZSoqIC0gVGhlIGNoYW5nZXMgYXJlIHNpZ25pZmljYW50IGFuZCBpbnZvbHZlIGNvcmUgbmV0d29yayBmdW5jdGlvbmFsaXR5LlxuKiAgICoqRm9jdXNTeW1ib2xzOiBcXFtcInZjY19zZXRzb2Nrb3B0XCJdKiogLSBUaGlzIGlzIHRoZSBmdW5jdGlvbiBkaXJlY3RseSBpbXBhY3RlZCBieSB0aGUgcGF0Y2guXG4qICAgKipFbmFibGVDb25maWdzOiBcXFtcIkFUTVwiXSoqIC0gVGhlIEFUTSBjb25maWd1cmF0aW9uIGlzIHRoZSBvbmx5IGRlcGVuZGVuY3kgaGVyZS5cbiogICAqKlJlYXNvbmluZzogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEFUTSBzb2NrZXQgb3B0aW9uIGhhbmRsaW5nIGluIHZjY19zZXRzb2Nrb3B0LCBjaGFuZ2luZyB0aGUgdHlwZSBvZiBhIHZhcmlhYmxlIGFuZCB1c2luZyBjb3B5X3NhZmVfZnJvbV9zb2NrcHRyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUgbmV0d29yayBjb2RlLlwiKiogLSBUaGlzIGV4cGxhaW5zIHRoZSByYXRpb25hbGUgZm9yIHRoaXMgcmVjb21tZW5kYXRpb24gY29uY2lzZWx5LiBUaGlzIGluY2x1ZGVzIGEgZGVzY3JpcHRpb24gb2YgdGhlIGNoYW5nZSBhbmQgdGhlIHJlbGV2YW5jZSB0byB0aGUgbmV0d29yayBzdGFjay5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIwOTgsIk91dHB1dFRva2VucyI6ODYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTY6MzI6MTkuMjU5MzgwMTI0WiIsIlNlcSI6NDYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYyNjM3Mjk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBVE1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2Y2Nfc2V0c29ja29wdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBBVE0gc29ja2V0IG9wdGlvbiBoYW5kbGluZyBpbiB2Y2Nfc2V0c29ja29wdCwgY2hhbmdpbmcgdGhlIHR5cGUgb2YgYSB2YXJpYWJsZSBhbmQgdXNpbmcgY29weV9zYWZlX2Zyb21fc29ja3B0ci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmsgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBVE1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2Y2Nfc2V0c29ja29wdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBBVE0gc29ja2V0IG9wdGlvbiBoYW5kbGluZyBpbiB2Y2Nfc2V0c29ja29wdCwgY2hhbmdpbmcgdGhlIHR5cGUgb2YgYSB2YXJpYWJsZSBhbmQgdXNpbmcgY29weV9zYWZlX2Zyb21fc29ja3B0ci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmsgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowwpvsb[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-05 15:34:51 +0000 UTC FinishedAt: 2026-08-05 16:32:21 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ATM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ATM" ], "series_id": "dacc405b-33d3-44ef-a65c-77cd5e161f1e" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "vcc_setsockopt" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA1IDE2OjMwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ZjY19zZXRzb2Nrb3B0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBBVE0gc29ja2V0IG9wdGlvbiBoYW5kbGluZyBpbiB2Y2Nfc2V0c29ja29wdCwgY2hhbmdpbmcgdGhlIHR5cGUgb2YgYSB2YXJpYWJsZSBhbmQgdXNpbmcgY29weV9zYWZlX2Zyb21fc29ja3B0ci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmsgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxNjozMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGE0OWY4OTAxMzViOTRkZWQxMDA2MmI5ZWFiYWE5ZWVjYzQ1NzkxYzRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyA1IDE2OjMwOjM0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9hdG0vY29tbW9uLmMgYi9uZXQvYXRtL2NvbW1vbi5jXG5pbmRleCBjN2Y5MjQwNWRhZjA1Li44MTE5NTcyN2ZhMThiIDEwMDY0NFxuLS0tIGEvbmV0L2F0bS9jb21tb24uY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2F0bS9jb21tb24uY1xuQEAgLTcxMCw3ICYjNDM7NzEwLDcgQEAgaW50IHZjY19zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXG4gXHRcdCAgIHNvY2twdHJfdCBvcHR2YWwsIHVuc2lnbmVkIGludCBvcHRsZW4pXG4ge1xuIFx0c3RydWN0IGF0bV92Y2MgKnZjYztcbi1cdHVuc2lnbmVkIGxvbmcgdmFsdWU7XG4mIzQzO1x0aW50IHZhbHVlO1xuIFx0aW50IGVycm9yO1xuIFxuIFx0aWYgKF9fU09fTEVWRUxfTUFUQ0gob3B0bmFtZSwgbGV2ZWwpIFx1MDAyNlx1MDAyNiBvcHRsZW4gIT0gX19TT19TSVpFKG9wdG5hbWUpKVxuQEAgLTcyMiw4ICYjNDM7NzIyLDEwIEBAIGludCB2Y2Nfc2V0c29ja29wdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLFxuIFx0e1xuIFx0XHRzdHJ1Y3QgYXRtX3FvcyBxb3M7XG4gXG4tXHRcdGlmIChjb3B5X2Zyb21fc29ja3B0cihcdTAwMjZxb3MsIG9wdHZhbCwgc2l6ZW9mKHFvcykpKVxuLVx0XHRcdHJldHVybiAtRUZBVUxUO1xuJiM0MztcdFx0ZXJyb3IgPSBjb3B5X3NhZmVfZnJvbV9zb2NrcHRyKFx1MDAyNnFvcywgc2l6ZW9mKHFvcyksIG9wdHZhbCxcbiYjNDM7XHRcdFx0XHRcdCAgICAgICBvcHRsZW4pO1xuJiM0MztcdFx0aWYgKGVycm9yKVxuJiM0MztcdFx0XHRyZXR1cm4gZXJyb3I7XG4gXHRcdGVycm9yID0gY2hlY2tfcW9zKFx1MDAyNnFvcyk7XG4gXHRcdGlmIChlcnJvcilcbiBcdFx0XHRyZXR1cm4gZXJyb3I7XG5AQCAtNzM3LDggJiM0Mzs3MzksMTAgQEAgaW50IHZjY19zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXG4gXHRcdHJldHVybiAwO1xuIFx0fVxuIFx0Y2FzZSBTT19TRVRDTFA6XG4tXHRcdGlmIChjb3B5X2Zyb21fc29ja3B0cihcdTAwMjZ2YWx1ZSwgb3B0dmFsLCBzaXplb2YodmFsdWUpKSlcbi1cdFx0XHRyZXR1cm4gLUVGQVVMVDtcbiYjNDM7XHRcdGVycm9yID0gY29weV9zYWZlX2Zyb21fc29ja3B0cihcdTAwMjZ2YWx1ZSwgc2l6ZW9mKHZhbHVlKSwgb3B0dmFsLFxuJiM0MztcdFx0XHRcdFx0ICAgICAgIG9wdGxlbik7XG4mIzQzO1x0XHRpZiAoZXJyb3IpXG4mIzQzO1x0XHRcdHJldHVybiBlcnJvcjtcbiBcdFx0aWYgKHZhbHVlKVxuIFx0XHRcdHZjYy1cdTAwM2VhdG1fb3B0aW9ucyB8PSBBVE1fQVRNT1BUX0NMUDtcbiBcdFx0ZWxzZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE2OjMwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtBVE0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2Y2Nfc2V0c29ja29wdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQVRNIHNvY2tldCBvcHRpb24gaGFuZGxpbmcgaW4gdmNjX3NldHNvY2tvcHQsIGNoYW5naW5nIHRoZSB0eXBlIG9mIGEgdmFyaWFibGUgYW5kIHVzaW5nIGNvcHlfc2FmZV9mcm9tX3NvY2twdHIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBuZXR3b3JrIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBhNDlmODkwMTM1Yjk0ZGVkMTAwNjJiOWVhYmFhOWVlY2M0NTc5MWM0CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBBdWcgNSAxNjozMDozNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9hdG0vY29tbW9uLmMgYi9uZXQvYXRtL2NvbW1vbi5jCmluZGV4IGM3ZjkyNDA1ZGFmMDUuLjgxMTk1NzI3ZmExOGIgMTAwNjQ0Ci0tLSBhL25ldC9hdG0vY29tbW9uLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2F0bS9jb21tb24uYwpAQCAtNzEwLDcgJiM0Mzs3MTAsNyBAQCBpbnQgdmNjX3NldHNvY2tvcHQoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSwKIAkJICAgc29ja3B0cl90IG9wdHZhbCwgdW5zaWduZWQgaW50IG9wdGxlbikKIHsKIAlzdHJ1Y3QgYXRtX3ZjYyAqdmNjOwotCXVuc2lnbmVkIGxvbmcgdmFsdWU7CiYjNDM7CWludCB2YWx1ZTsKIAlpbnQgZXJyb3I7CiAKIAlpZiAoX19TT19MRVZFTF9NQVRDSChvcHRuYW1lLCBsZXZlbCkgJmFtcDsmYW1wOyBvcHRsZW4gIT0gX19TT19TSVpFKG9wdG5hbWUpKQpAQCAtNzIyLDggJiM0Mzs3MjIsMTAgQEAgaW50IHZjY19zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsCiAJewogCQlzdHJ1Y3QgYXRtX3FvcyBxb3M7CiAKLQkJaWYgKGNvcHlfZnJvbV9zb2NrcHRyKCZhbXA7cW9zLCBvcHR2YWwsIHNpemVvZihxb3MpKSkKLQkJCXJldHVybiAtRUZBVUxUOwomIzQzOwkJZXJyb3IgPSBjb3B5X3NhZmVfZnJvbV9zb2NrcHRyKCZhbXA7cW9zLCBzaXplb2YocW9zKSwgb3B0dmFsLAomIzQzOwkJCQkJICAgICAgIG9wdGxlbik7CiYjNDM7CQlpZiAoZXJyb3IpCiYjNDM7CQkJcmV0dXJuIGVycm9yOwogCQllcnJvciA9IGNoZWNrX3FvcygmYW1wO3Fvcyk7CiAJCWlmIChlcnJvcikKIAkJCXJldHVybiBlcnJvcjsKQEAgLTczNyw4ICYjNDM7NzM5LDEwIEBAIGludCB2Y2Nfc2V0c29ja29wdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLAogCQlyZXR1cm4gMDsKIAl9CiAJY2FzZSBTT19TRVRDTFA6Ci0JCWlmIChjb3B5X2Zyb21fc29ja3B0cigmYW1wO3ZhbHVlLCBvcHR2YWwsIHNpemVvZih2YWx1ZSkpKQotCQkJcmV0dXJuIC1FRkFVTFQ7CiYjNDM7CQllcnJvciA9IGNvcHlfc2FmZV9mcm9tX3NvY2twdHIoJmFtcDt2YWx1ZSwgc2l6ZW9mKHZhbHVlKSwgb3B0dmFsLAomIzQzOwkJCQkJICAgICAgIG9wdGxlbik7CiYjNDM7CQlpZiAoZXJyb3IpCiYjNDM7CQkJcmV0dXJuIGVycm9yOwogCQlpZiAodmFsdWUpCiAJCQl2Y2MtJmd0O2F0bV9vcHRpb25zIHw9IEFUTV9BVE1PUFRfQ0xQOwogCQllbHNlCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE2OjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMzkKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBBVE0gTmV0d29yayBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG5ldC9hdG0vY29tbW9uLmNgLiBJdCBsb29rcyBsaWtlIHdlIGhhdmUgc29tZSB1cGRhdGVzIHRvIHRoZSBgdmNjX3NldHNvY2tvcHRgIGZ1bmN0aW9uLiBTcGVjaWZpY2FsbHksIGl0IHNlZW1zIGxpa2UgdGhleSYjMzk7dmUgY2hhbmdlZCB0aGUgdHlwZSBvZiB0aGUgYHZhbHVlYCBhcmd1bWVudCBmb3IgdGhlIGBTT19TRVRDTFBgIHNvY2tldCBvcHRpb24gZnJvbSBgdW5zaWduZWQgbG9uZ2AgdG8gYGludGAuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcsIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gd2h5IHRoZXkgbWFkZSB0aGF0IGNoYW5nZTsgcG90ZW50aWFsbHkgcmVsYXRlZCB0byBjbGFtcGluZyBvciB0eXBlIHNhZmV0eS4KClRoZSBwYXRjaCBhbHNvIGludHJvZHVjZXMgYGNvcHlfc2FmZV9mcm9tX3NvY2twdHJgIGZvciBib3RoIGBTT19BVE1RT1NgIGFuZCwgYWdhaW4sIGBTT19TRVRDTFBgLiBUaGF0JiMzOTtzIGEgZ29vZCBzaWduIOKAkyB0aGF0IGZ1bmN0aW9uIHByb2JhYmx5IHByb3ZpZGVzIHNvbWUgZXh0cmEgcHJvdGVjdGlvbiBhZ2FpbnN0IGJ1ZmZlciBvdmVyZmxvd3Mgb3Igb3RoZXIgbWVtb3J5IGFjY2VzcyBpc3N1ZXMgd2hlbiBjb3B5aW5nIGRhdGEgZnJvbSB1c2VyIHNwYWNlLiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCYjMzk7cyB0aGUgaW50ZW5kZWQgcHVycG9zZSwgYW5kIGFzc2VzcyB0aGUgZGVncmVlIHRvIHdoaWNoIHRoYXQgY2hhbmdlIGFmZmVjdHMgdGhlIGV4aXN0aW5nIGNvZGUmIzM5O3MgbGV2ZWwgb2YgcHJvdGVjdGlvbi4KCkZpcnN0IHRoaW5ncyBmaXJzdCwgSSYjMzk7bGwgcHVsbCB1cCBgbmV0L2F0bS9jb21tb24uY2AgYW5kIHRha2UgYSBsb29rIGF0IHRoZSBgdmNjX3NldHNvY2tvcHRgIGltcGxlbWVudGF0aW9uIGRpcmVjdGx5LiBUaGlzIGxvb2tzIGZ1bmN0aW9uYWwuCgpBc3N1bWluZyB0aGlzIGlzIGFsbCBwYXJ0IG9mIGEgY29uZmlndXJhdGlvbiB1c2luZyBgQ09ORklHX0FUTWAsIHRoZW4gdGhhdCBzZWVtcyBnb29kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE2OjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZjY19zZXRzb2Nrb3B0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2F0bS9jb21tb24uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYXRtL2NvbW1vbi5jPTY5Mj1zdGF0aWMgaW50IGNoZWNrX3Fvcyhjb25zdCBzdHJ1Y3QgYXRtX3FvcyAqcW9zKVxuLS1cbm5ldC9hdG0vY29tbW9uLmMtNzA4LVxubmV0L2F0bS9jb21tb24uYzo3MDk6aW50IHZjY19zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXG5uZXQvYXRtL2NvbW1vbi5jLTcxMC1cdFx0ICAgc29ja3B0cl90IG9wdHZhbCwgdW5zaWduZWQgaW50IG9wdGxlbilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxNjozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODk5CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRXhhbWluaW5nIHRoZSBBVE0gS2NvbmZpZyoqCgpSaWdodCwgbGV0JiMzOTtzIGRpdmUgc3RyYWlnaHQgaW4uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O0xldCYjMzk7cyBjaGVjayB0aGUgS2NvbmZpZyBmb3IgQVRNLiYjMzQ7IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcyBhc3NvY2lhdGVkIHdpdGggdGhlIEFzeW5jaHJvbm91cyBUcmFuc2ZlciBNb2RlIHN1cHBvcnQgaW4gdGhpcyBzeXN0ZW0uIEkgd2FudCB0byBzZWUgcHJlY2lzZWx5IGhvdyBpdCYjMzk7cyBzdHJ1Y3R1cmVkIOKAkyB3aGF0IG1vZHVsZXMgYXJlIGF2YWlsYWJsZSwgaG93IHRoZXkgYXJlIGludGVybGlua2VkLCBhbmQgd2hpY2ggZmVhdHVyZXMgYXJlIGVuYWJsZWQgb3IgZGlzYWJsZWQgYnkgZGVmYXVsdC4gSSYjMzk7bSBsb29raW5nIGZvciB0aGUgc3VidGxlIGRldGFpbHMsIHRoZSBjb25kaXRpb25hbCBkZXBlbmRlbmNpZXMuIEZvciBleGFtcGxlLCBhcmUgd2UgdXNpbmcgYSBwYXJ0aWN1bGFyIFBIWSBpbnRlcmZhY2UsIG9yIGlzIHRoaXMgYXJjaGl0ZWN0dXJlLXNwZWNpZmljPyBBcmUgdGhlcmUgb3B0aW9ucyBmb3IgZGlmZmVyZW50IEFBTCBwcm90b2NvbHM/IEFuZCBvZiBjb3Vyc2UsIEkmIzM5O20gY2hlY2tpbmcgZm9yIGFueSBwb3RlbnRpYWwgY29uZmxpY3RzIHdpdGggb3RoZXIgbmV0d29yayBzdWJzeXN0ZW1zIG9yIGxlZ2FjeSBkcml2ZXJzIHRoYXQgbWlnaHQgYmUgbHVya2luZy4gVGltZSB0byBnZXQgZG93biB0byBicmFzcyB0YWNrcyBhbmQgYXNzZXNzIHRoZSBrZXJuZWwmIzM5O3MgQVRNIGltcGxlbWVudGF0aW9uLiBJdCYjMzk7cyBhbGwgYWJvdXQgdmVyaWZ5aW5nIHdoYXQmIzM5O3MgYXZhaWxhYmxlIGFuZCBob3cgaXQmIzM5O3MgY29udHJvbGxlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxNjozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQVRNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2F0bS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9hdG0vS2NvbmZpZy01LVxubmV0L2F0bS9LY29uZmlnOjY6Y29uZmlnIEFUTVxubmV0L2F0bS9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtBc3luY2hyb25vdXMgVHJhbnNmZXIgTW9kZSAoQVRNKVwmIzM0O1xuLS1cbm5ldC9hdG0vS2NvbmZpZy0yMS1cbm5ldC9hdG0vS2NvbmZpZzoyMjpjb25maWcgQVRNX0JSMjY4NFxubmV0L2F0bS9LY29uZmlnLTIzLVx0dHJpc3RhdGUgXCYjMzQ7UkZDMTQ4My8yNjg0IEJyaWRnZWQgcHJvdG9jb2xzXCYjMzQ7XG4tLVxubmV0L2F0bS9LY29uZmlnLTMwLVxubmV0L2F0bS9LY29uZmlnOjMxOmNvbmZpZyBBVE1fQlIyNjg0X0lQRklMVEVSXG5uZXQvYXRtL0tjb25maWctMzItXHRib29sIFwmIzM0O1Blci1WQyBJUCBmaWx0ZXIga2x1ZGdlXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTY6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzMxNgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgYHZjY19zZXRzb2Nrb3B0YCBDb25maWd1cmF0aW9uKioKClJpZ2h0LCB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uIGlzIGBBVE1gLiBNeSBmb2N1cyBuZWVkcyB0byBiZSBvbiB0aGUgYHZjY19zZXRzb2Nrb3B0YCBmdW5jdGlvbi4gTm93LCBhIGtleSBxdWVzdGlvbiBhcmlzZXMgaW1tZWRpYXRlbHk6IGlzIHRoaXMgZnVuY3Rpb24gZXhwb3J0ZWQ/IEkgbmVlZCB0byBxdWlja2x5IHZlcmlmeSB0aGF0IGl0JiMzOTtzIGFjY2Vzc2libGUuIElmIGB2Y2Nfc2V0c29ja29wdGAgaXNuJiMzOTt0IGV4cG9ydGVkLCB0aGVuIG15IGludmVzdGlnYXRpb24gdGFrZXMgYSB2ZXJ5IGRpZmZlcmVudCB0dXJuLCBwcm9iYWJseSByZXF1aXJpbmcgdHJhY2luZyBob3cgaXQmIzM5O3MgYmVpbmcgYWNjZXNzZWQgb3IgcG90ZW50aWFsbHkgaWYgSSYjMzk7bSBldmVuICptZWFudCogdG8gYmUgZGlyZWN0bHkgY29uY2VybmVkIHdpdGggaXQgYXQgdGhpcyBsZXZlbC4gTGV0JiMzOTtzIGNvbmZpcm0gdGhlIGV4cG9ydCBzdGF0dXMgZmlyc3QuIFVuZGVyc3RhbmRpbmcgaXRzIHZpc2liaWxpdHkgaXMgY3J1Y2lhbCB0byBkZXRlcm1pbmluZyB0aGUgY29udGV4dCBvZiB0aGUgaXNzdWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTY6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtFWFBPUlRfU1lNQk9MLip2Y2Nfc2V0c29ja29wdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9hdG0vY29tbW9uLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE2OjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1NjUKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqSW5pdGlhbCBBc3Nlc3NtZW50OiBFeHBvcnRlZCB2cy4gU3RhdGljKioKCkFscmlnaHQsIG15IGZpcnN0IHN0ZXAgaXMgYWx3YXlzIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgZnVuZGFtZW50YWxzLiBMZXQmIzM5O3MgYXNzdW1lIHRoZXJlJiMzOTtzIGEgZmlsZSwgc3lzdGVtLCBvciBkYXRhIHN0cnVjdHVyZS4gVGhlIGluaXRpYWwgcXVlc3Rpb24gSSYjMzk7bSBhc2tpbmcgbXlzZWxmIGlzOiAqSXMgdGhpcyB0aGluZyBmdW5kYW1lbnRhbGx5ICYjMzk7ZXhwb3J0ZWQmIzM5OyBvciBpcyBpdCAmIzM5O3N0YXRpYyYjMzk7IGluIG5hdHVyZT8qIFVuZGVyc3RhbmRpbmcgdGhhdCBwcmltYXJ5IGRpc3RpbmN0aW9uIGlzIGFic29sdXRlbHkgY3JpdGljYWwgYmVmb3JlIGRpdmluZyBhbnkgZGVlcGVyLiBJcyB0aGlzIGluZm9ybWF0aW9uIGJlaW5nIGdlbmVyYXRlZCBhbmQgZGlzdHJpYnV0ZWQgZHluYW1pY2FsbHksIGluIHJlYWwgdGltZSBvciB2aWEgYW4gYXV0b21hdGVkIHByb2Nlc3MsIG9yIGlzIGl0IGEgZml4ZWQgYXJ0aWZhY3QgdGhhdCBleGlzdHMgaW4gYSBwYXJ0aWN1bGFyIHN0YXRlPyBUaGF0IGhpZ2gtbGV2ZWwgdW5kZXJzdGFuZGluZyByZWFsbHkgYWZmZWN0cyBldmVyeXRoaW5nIHRoYXQgZm9sbG93cywgaW5jbHVkaW5nIG15IGFzc3VtcHRpb25zIGFyb3VuZCBwZXJzaXN0ZW5jZSwgcG90ZW50aWFsIGZvciBjaGFuZ2UsIHZlcnNpb25pbmcsIGFjY2VzcyBtZXRob2RzLCBhbmQgbGlrZWx5IHRyb3VibGVzaG9vdGluZyBzdHJhdGVnaWVzLiBXaXRob3V0IG5haWxpbmcgZG93biB0aGUgZXhwb3J0ZWQvc3RhdGljIGRpY2hvdG9teSB1cCBmcm9udCwgSSYjMzk7bSBqdXN0IHNwaW5uaW5nIG15IHdoZWVscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTY6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dmNjX3NldHNvY2tvcHQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYXRtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYXRtL2NvbW1vbi5jPTY5Mj1zdGF0aWMgaW50IGNoZWNrX3Fvcyhjb25zdCBzdHJ1Y3QgYXRtX3FvcyAqcW9zKVxuLS1cbm5ldC9hdG0vY29tbW9uLmMtNzA4LVxubmV0L2F0bS9jb21tb24uYzo3MDk6aW50IHZjY19zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXG5uZXQvYXRtL2NvbW1vbi5jLTcxMC1cdFx0ICAgc29ja3B0cl90IG9wdHZhbCwgdW5zaWduZWQgaW50IG9wdGxlbilcbi0tXG5uZXQvYXRtL2NvbW1vbi5oPTIyPWludCB2Y2NfY29tcGF0X2lvY3RsKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKTtcbm5ldC9hdG0vY29tbW9uLmg6MjM6aW50IHZjY19zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXG5uZXQvYXRtL2NvbW1vbi5oLTI0LVx0XHQgICBzb2NrcHRyX3Qgb3B0dmFsLCB1bnNpZ25lZCBpbnQgb3B0bGVuKTtcbi0tXG5uZXQvYXRtL3B2Yy5jPTY1PXN0YXRpYyBpbnQgcHZjX3NldHNvY2tvcHQoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcbi0tXG5uZXQvYXRtL3B2Yy5jLTcxLVx0bG9ja19zb2NrKHNrKTtcbm5ldC9hdG0vcHZjLmM6NzI6XHRlcnJvciA9IHZjY19zZXRzb2Nrb3B0KHNvY2ssIGxldmVsLCBvcHRuYW1lLCBvcHR2YWwsIG9wdGxlbik7XG5uZXQvYXRtL3B2Yy5jLTczLVx0cmVsZWFzZV9zb2NrKHNrKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTY6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDExOAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYW4gZXhwZXJ0IGluIHRoZSBmaWVsZDoKCioqSW50ZXJuYWwgQXVkaXQgLSBTb2NrZXQgT3B0aW9uIFVzYWdlKioKClJpZ2h0LCBzbyBJJiMzOTttIG1lbnRhbGx5IHRyYWNpbmcgdGhyb3VnaCB0aGUgY29kZSBhbmQgSSBzZWUgdGhhdCB0aGUgZnVuY3Rpb24gYHB2Y19zZXRzb2Nrb3B0YCBpcyB1c2luZyBzb2NrZXQgb3B0aW9uIG1hbmlwdWxhdGlvbi4gTWFrZXMgc2Vuc2UsIHRoYXQmIzM5O3Mgd2hhdCB0aGUgbmFtZSBzdWdnZXN0cy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIG9rYXksIHdoYXQgb3B0aW9ucyBhcmUgdGhleSBzZXR0aW5nPyBXaGF0JiMzOTtzIHRoZSBjb250ZXh0PyBBbnkgcG90ZW50aWFsIHNlY3VyaXR5IGltcGxpY2F0aW9ucyBJIG5lZWQgdG8gY29uc2lkZXI/IElzIHRoaXMgc3RhbmRhcmQgcHJhY3RpY2UsIG9yIHNvbWV0aGluZyBtb3JlIHNwZWNpYWxpemVkPyBJIG5lZWQgdG8gZGlnIGRlZXBlciBpbiB0aGF0IGZ1bmN0aW9uLgoKQW5kIHRoZW4sIEkgcmVjYWxsIHNlZWluZyBgc3ZjX3NldHNvY2tvcHRgIG1lbnRpb25lZCwgbGlrZWx5IHJlbGF0ZWQgdG8gdGhlIFNlcnZpY2Ugb3IgU2VydmVyIHNpZGUgb2YgdGhlIHByb2Nlc3MuIEhtbSwgYWdhaW4sIHNhbWUgcXVlc3Rpb25zIGFyaXNlLiBJcyB0aGUgc2FtZSBvcHRpb25zIGJlaW5nIHNldD8gQXJlIHRoZXkgcmVsYXRlZD8gQXJlIHRoZXJlIGFueSBwb3RlbnRpYWwgZGVwZW5kZW5jaWVzIGJldHdlZW4gdGhlbS4gSSYjMzk7bGwgaGF2ZSB0byBtYWtlIHN1cmUgYm90aCBvZiB0aGVzZSBhcmUgaW4gdGhlIHNhbWUgc2NvcGUgb2YgdGhpcyBhdWRpdC4gSSYjMzk7bSBnb2luZyB0byBub3RlIHRob3NlIHR3byBmdW5jdGlvbnMgc3BlY2lmaWNhbGx5LCBgcHZjX3NldHNvY2tvcHRgIGFuZCBgc3ZjX3NldHNvY2tvcHRgLiBJJiMzOTtsbCBoYXZlIHRvIHRob3JvdWdobHkgdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiBob3cgdGhlIHNvY2tldCBvcHRpb25zIGFyZSBiZWluZyB1c2VkIGluICpib3RoKiBwbGFjZXMgdG8gYmUgY29uZmlkZW50IGFib3V0IGV2ZXJ5dGhpbmcgaW4gdGhpcyBpbnZlc3RpZ2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxNjozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZjY19zZXRzb2Nrb3B0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2F0bS9zdmMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE2OjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0NDEKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIGNvZGU6CgoqKkNoZWNraW5nIGBzZXRzb2Nrb3B0YCBpbiBgbmV0L2F0bS9zdmMuY2AqKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IEFUTSBTVkMgY29ubmVjdGlvbnMgaGFuZGxlIHNvY2tldCBvcHRpb25zLiBNeSBmaXJzdCBpbnN0aW5jdCwgYXMgYWx3YXlzLCBpcyB0byBkaXZlIHN0cmFpZ2h0IGludG8gdGhlIHJlbGV2YW50IHNvdXJjZSBjb2RlLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBgbmV0L2F0bS9zdmMuY2AuIFRoaXMgaXMgd2hlcmUgSSB3b3VsZCAqZXhwZWN0KiB0byBmaW5kIHRoZSBjb3JlIFNWQyBmdW5jdGlvbmFsaXR5LCBhbmQgY29uc2VxdWVudGx5LCB3aGVyZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgYHNldHNvY2tvcHRgIGZvciB0aGVzZSBzb2NrZXRzIHNob3VsZCByZXNpZGUsIGlmIGl0IGV4aXN0cy4gS25vd2luZyB3aGVyZSB0aGUgcmVsZXZhbnQgc3RydWN0dXJlcyBhbmQgZnVuY3Rpb25zIGFyZSBkZWZpbmVkIHdpbGwgYmUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGNvbm5lY3Rpb24uIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGhvdyBzb2NrZXQgb3B0aW9ucyBhcmUgcGFyc2VkLCBoYW5kbGVkLCBhbmQgdWx0aW1hdGVseSwgYXBwbGllZCBvciByZWplY3RlZCB3aXRoaW4gdGhlIEFUTSBTVkMgY29udGV4dC4gVGhpcyBpcyB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCBkaWdnaW5nIGZvciB0aGUgYW5zd2VycyBJIG5lZWQsIG9yIHRvIGZpbmQgb3V0IGlmIHRoZSBmdW5jdGlvbmFsaXR5IGlzbiYjMzk7dCBpbXBsZW1lbnRlZCBhbmQgdGhlIG9wdGlvbiBpcyBiZWluZyBkZWxlZ2F0ZWQgZWxzZXdoZXJlLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE2OjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2V0c29ja29wdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9hdG0vc3ZjLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxNjozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzA4CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUuIE15IG1pbmQmIzM5O3MgYnV6emluZyBhIGJpdCwgZm9jdXNpbmcgaW4gb24gdGhpcyBsaW5lIG9mIHRob3VnaHQuLi4KCioqQSBRdWljayBEb3VibGUtVGFrZSoqCgpXYWl0IGEgc2Vjb25kLi4uIGB2Y2Nfc2V0c29ja29wdGA/ICpUaGF0KiBpcyBleHBvcnRlZD8gSSBtZWFuLCBJIGtub3cgdGhlIGdlbmVyYWwgYXJjaGl0ZWN0dXJlLCBJJiMzOTt2ZSB3b3JrZWQgd2l0aCBzaW1pbGFyIHN5c3RlbXMgYmVmb3JlLCBidXQgSSYjMzk7bSBqdXN0IHF1aWNrbHkgdHJ5aW5nIHRvIGdyYXNwIHRoZSBpbXBsaWNhdGlvbnMgaGVyZS4gSXQmIzM5O3Mgbm90IHNvbWV0aGluZyB5b3UgdHlwaWNhbGx5IHNlZSBleHBvc2VkIGF0IHRoYXQgbGV2ZWwgb2YgYWJzdHJhY3Rpb24sIGlzIGl0PyBVc3VhbGx5LCB0aGVyZSYjMzk7cyBhIGxheWVyIG9yIHR3byBvZiBpbmRpcmVjdGlvbiwgcHJvdGVjdGluZyB0aGUgdW5kZXJseWluZyBzb2NrZXQgbWFuaXB1bGF0aW9uLiBUaGlzIGNvdWxkIG1lYW4gYSBmZXcgdGhpbmdzIGRlcGVuZGluZyBvbiB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscyBhbmQgdGhlIG92ZXJhbGwgZGVzaWduLiBMZXQgbWUgY29uc2lkZXIgdGhlIGNvbnRleHQuLi4gT2theSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgKndoeSogaXQmIzM5O3MgZXhwb3J0ZWQgYW5kIHdoYXQgaXQgbWVhbnMgZm9yIHNlY3VyaXR5LCBwb3J0YWJpbGl0eSwgYW5kIG1haW50YWluYWJpbGl0eS4gTXkgZXhwZXJ0aXNlIGRlbWFuZHMgSSBkZWx2ZSBkZWVwZXIgaW50byB0aGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxNjozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0wuKnZjY19zZXRzb2Nrb3B0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2F0bS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxNjozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTQ2CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCB3ZW50OgoKKipFeGFtaW5pbmcgdGhlIEFUTSBLZXJuZWwgTW9kdWxlJiMzOTtzIFN5bWJvbCBFeHBvcnQqKgoKT2theSwgc28gSSBuZWVkIHRvIHRyYWNrIGRvd24gaG93IHRoZXNlIHN5bWJvbHMgYXJlIGJlaW5nIG1hZGUgYXZhaWxhYmxlIGZvciB1c2UuIEdpdmVuIG15IGV4cGVyaWVuY2UsIHRoZSBmaXJzdCBwbGFjZSBJJiMzOTtkIGxvb2sgaXMgdGhlIGhlYXJ0IG9mIHRoZSBBVE0gc3Vic3lzdGVtLCBzbyBgbmV0L2F0bS9jb21tb24uY2AgaXMgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQuIFRoZSBzcGVjaWZpYyBrZXl3b3JkIEkmIzM5O20gaHVudGluZyBmb3IgaXMgYEVYUE9SVF9TWU1CT0xgLiBJdCYjMzk7cyB0aGUgc3RhbmRhcmQgbWFjcm8gdXNlZCBpbiB0aGUgTGludXgga2VybmVsIHRvIGV4cGxpY2l0bHkgZXhwb3NlIGEgZnVuY3Rpb24gb3IgdmFyaWFibGUgdG8gb3RoZXIgbW9kdWxlcy4gSSYjMzk7bSBlc3NlbnRpYWxseSBsb29raW5nIHRvIHNlZSB3aGljaCwgaWYgYW55LCBlbGVtZW50cyBpbiB0aGlzIGNvcmUgZmlsZSBhcmUgYmVpbmcgZGVjbGFyZWQgYXMgZXh0ZXJuYWxseSB2aXNpYmxlLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGNyaXRpY2FsIHVuZGVyc3RhbmRpbmcgb2YgdGhlIG1vZHVsZSYjMzk7cyBpbnRlcmZhY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE2OjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0wmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYXRtL2NvbW1vbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9hdG0vY29tbW9uLmM9MzQ9c3RydWN0IGhsaXN0X2hlYWQgdmNjX2hhc2hbVkNDX0hUQUJMRV9TSVpFXTtcbm5ldC9hdG0vY29tbW9uLmM6MzU6RVhQT1JUX1NZTUJPTCh2Y2NfaGFzaCk7XG5uZXQvYXRtL2NvbW1vbi5jLTM2LVxubmV0L2F0bS9jb21tb24uYz0zNz1ERUZJTkVfUldMT0NLKHZjY19za2xpc3RfbG9jayk7XG5uZXQvYXRtL2NvbW1vbi5jOjM4OkVYUE9SVF9TWU1CT0wodmNjX3NrbGlzdF9sb2NrKTtcbm5ldC9hdG0vY29tbW9uLmMtMzktXG4tLVxubmV0L2F0bS9jb21tb24uYz01MD12b2lkIHZjY19pbnNlcnRfc29ja2V0KHN0cnVjdCBzb2NrICpzaylcbi0tXG5uZXQvYXRtL2NvbW1vbi5jLTU1LX1cbm5ldC9hdG0vY29tbW9uLmM6NTY6RVhQT1JUX1NZTUJPTCh2Y2NfaW5zZXJ0X3NvY2tldCk7XG5uZXQvYXRtL2NvbW1vbi5jLTU3LVxuLS1cbm5ldC9hdG0vY29tbW9uLmM9MjA5PXZvaWQgdmNjX3JlbGVhc2VfYXN5bmMoc3RydWN0IGF0bV92Y2MgKnZjYywgaW50IHJlcGx5KVxuLS1cbm5ldC9hdG0vY29tbW9uLmMtMjE3LX1cbm5ldC9hdG0vY29tbW9uLmM6MjE4OkVYUE9SVF9TWU1CT0wodmNjX3JlbGVhc2VfYXN5bmMpO1xubmV0L2F0bS9jb21tb24uYy0yMTktXG5uZXQvYXRtL2NvbW1vbi5jPTIyMD12b2lkIHZjY19wcm9jZXNzX3JlY3ZfcXVldWUoc3RydWN0IGF0bV92Y2MgKnZjYylcbi0tXG5uZXQvYXRtL2NvbW1vbi5jLTIzNy19XG5uZXQvYXRtL2NvbW1vbi5jOjIzODpFWFBPUlRfU1lNQk9MKHZjY19wcm9jZXNzX3JlY3ZfcXVldWUpO1xubmV0L2F0bS9jb21tb24uYy0yMzktXG5uZXQvYXRtL2NvbW1vbi5jPTI0MD12b2lkIGF0bV9kZXZfc2lnbmFsX2NoYW5nZShzdHJ1Y3QgYXRtX2RldiAqZGV2LCBjaGFyIHNpZ25hbClcbi0tXG5uZXQvYXRtL2NvbW1vbi5jLTI1NC19XG5uZXQvYXRtL2NvbW1vbi5jOjI1NTpFWFBPUlRfU1lNQk9MKGF0bV9kZXZfc2lnbmFsX2NoYW5nZSk7XG5uZXQvYXRtL2NvbW1vbi5jLTI1Ni1cbm5ldC9hdG0vY29tbW9uLmM9MjU3PXZvaWQgYXRtX2Rldl9yZWxlYXNlX3ZjY3Moc3RydWN0IGF0bV9kZXYgKmRldilcbi0tXG5uZXQvYXRtL2NvbW1vbi5jLTI3Ny19XG5uZXQvYXRtL2NvbW1vbi5jOjI3ODpFWFBPUlRfU1lNQk9MKGF0bV9kZXZfcmVsZWFzZV92Y2NzKTtcbm5ldC9hdG0vY29tbW9uLmMtMjc5LVxuLS1cbm5ldC9hdG0vY29tbW9uLmM9Nzk4PWludCByZWdpc3Rlcl9hdG1kZXZpY2Vfbm90aWZpZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYilcbi0tXG5uZXQvYXRtL2NvbW1vbi5jLTgwMS19XG5uZXQvYXRtL2NvbW1vbi5jOjgwMjpFWFBPUlRfU1lNQk9MX0dQTChyZWdpc3Rlcl9hdG1kZXZpY2Vfbm90aWZpZXIpO1xubmV0L2F0bS9jb21tb24uYy04MDMtXG5uZXQvYXRtL2NvbW1vbi5jPTgwND12b2lkIHVucmVnaXN0ZXJfYXRtZGV2aWNlX25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIpXG4tLVxubmV0L2F0bS9jb21tb24uYy04MDctfVxubmV0L2F0bS9jb21tb24uYzo4MDg6RVhQT1JUX1NZTUJPTF9HUEwodW5yZWdpc3Rlcl9hdG1kZXZpY2Vfbm90aWZpZXIpO1xubmV0L2F0bS9jb21tb24uYy04MDktXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE2OjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU4NzEKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA2MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIHRoZSBTY29wZSBvZiBgdmNjX3NldHNvY2tvcHRgKioKCk9rYXksIHNvIGB2Y2Nfc2V0c29ja29wdGAgaXNuJiMzOTt0IGEgcHVibGljbHkgZXhwb3J0ZWQgc3ltYm9sLCB3aGljaCBpbW1lZGlhdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3QuIEl0IHNlZW1zIGl0JiMzOTtzIHVzZWQgaW50ZXJuYWxseS4gSSByZWNhbGwgc2VlaW5nIGl0IGluIGBuZXQvYXRtL3B2Yy5jYCwgYnV0IHRoZXJlJiMzOTtzIGEgbmFnZ2luZyBmZWVsaW5nIGl0IG1pZ2h0IHBvcCB1cCBpbiBgbmV0L2F0bS9zdmMuY2AgYXMgd2VsbC4gU2luY2UgSSBjYW4mIzM5O3QgZGlyZWN0bHkgY2FsbCBpdCBmcm9tIGVsc2V3aGVyZSwgSSBuZWVkIHRvIGtub3cgd2hlcmUgaXQgaXMgYmVpbmcgdXNlZC4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYSBmb2N1c2VkIGNoZWNrIG9uIGBuZXQvYXRtL3N2Yy5jYCB0byBjb25maXJtIG9yIGRlbnkgdGhhdCBzdXNwaWNpb24uIEZpbmRpbmcgaXRzIHVzYWdlIHdpbGwgaGVscCBtZSB1bmRlcnN0YW5kIGl0cyBsb2NhbCBzaWduaWZpY2FuY2Ugd2l0aGluIHRoYXQgc3Vic3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxNjozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2Y2Nfc2V0c29ja29wdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9hdG0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9hdG0vY29tbW9uLmM9NjkyPXN0YXRpYyBpbnQgY2hlY2tfcW9zKGNvbnN0IHN0cnVjdCBhdG1fcW9zICpxb3MpXG4tLVxubmV0L2F0bS9jb21tb24uYy03MDgtXG5uZXQvYXRtL2NvbW1vbi5jOjcwOTppbnQgdmNjX3NldHNvY2tvcHQoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcbm5ldC9hdG0vY29tbW9uLmMtNzEwLVx0XHQgICBzb2NrcHRyX3Qgb3B0dmFsLCB1bnNpZ25lZCBpbnQgb3B0bGVuKVxuLS1cbm5ldC9hdG0vY29tbW9uLmg9MjI9aW50IHZjY19jb21wYXRfaW9jdGwoc3RydWN0IHNvY2tldCAqc29jaywgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpO1xubmV0L2F0bS9jb21tb24uaDoyMzppbnQgdmNjX3NldHNvY2tvcHQoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcbm5ldC9hdG0vY29tbW9uLmgtMjQtXHRcdCAgIHNvY2twdHJfdCBvcHR2YWwsIHVuc2lnbmVkIGludCBvcHRsZW4pO1xuLS1cbm5ldC9hdG0vcHZjLmM9NjU9c3RhdGljIGludCBwdmNfc2V0c29ja29wdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLFxuLS1cbm5ldC9hdG0vcHZjLmMtNzEtXHRsb2NrX3NvY2soc2spO1xubmV0L2F0bS9wdmMuYzo3MjpcdGVycm9yID0gdmNjX3NldHNvY2tvcHQoc29jaywgbGV2ZWwsIG9wdG5hbWUsIG9wdHZhbCwgb3B0bGVuKTtcbm5ldC9hdG0vcHZjLmMtNzMtXHRyZWxlYXNlX3NvY2soc2spO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxNjozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDMzCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQ6CgoqKkRpdmluZyBpbnRvIHRoZSBDb2RlKioKCk15IGltbWVkaWF0ZSB0aG91Z2h0LCB3aGVuIGNvbnNpZGVyaW5nIHRoZSBjdXJyZW50IHRhc2ssIGlzIHRvIHpvb20gaW4gb24gYHN2Yy5jYC4gSXQmIzM5O3MgYSBrZXkgZmlsZSwgYW5kIEkgbmVlZCB0byBkZXRlcm1pbmUgaXRzIHJlbGV2YW5jZS4gSXMgdGhpcyB0aGUgcmlnaHQgcGxhY2UgdG8gc3RhcnQgbG9va2luZz8gRG9lcyBpdCBjb250YWluIHRoZSBjb3JlIGxvZ2ljIEkmIzM5O20gaW50ZXJlc3RlZCBpbj8gV2hhdCBkZXBlbmRlbmNpZXMgZG9lcyBpdCBoYXZlPyBJIG5lZWQgdG8gcXVpY2tseSBhc3Nlc3MgaWYgYHN2Yy5jYCBpcyB0aGUgbGluY2hwaW4gb3IgaWYgSSBuZWVkIHRvIHJlZGlyZWN0IG15IGF0dGVudGlvbiBlbHNld2hlcmUuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBjYW4gZmluZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTY6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZXRzb2Nrb3B0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2F0bS9zdmMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE2OjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2MDMKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5LCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIGBzZXRzb2Nrb3B0YCBpbiB0aGUgQVRNIFNWQyBDb2RlKioKCk9rYXksIHRpbWUgdG8gZGlnIGluLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgYHNldHNvY2tvcHRgIGlzIGJlaW5nIHVzZWQgd2l0aGluIHRoZSBBVE0gU2VydmljZSBDaGFubmVsIGNvZGUuIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgaW1wbGljYXRpb25zIGZvciBbbWVudGlvbiB5b3VyIHNwZWNpZmljIGFyZWEgb2YgZXhwZXJ0aXNlIC0gZS5nLiwgUW9TLCBzaWduYWxpbmcsIGV0Yy5dLiBTbywgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgaXMgYG5ldC9hdG0vc3ZjLmNgLiBJIGV4cGVjdCB0byBmaW5kIHRoZSBzdGFuZGFyZCBzb2NrZXQgb3B0aW9ucyBiZWluZyBjb25maWd1cmVkIHRoZXJlLCBidXQgSSYjMzk7bSBhbHNvIGludGVyZXN0ZWQgaW4gYW55IEFUTS1zcGVjaWZpYyBvcHRpb25zLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBwb3RlbnRpYWwgYXJlYXMgb2YgY29uY2VybiByZWdhcmRpbmcgW21lbnRpb24gc3BlY2lmaWMgY29uY2VybiwgZS5nLiwgcmVzb3VyY2UgYWxsb2NhdGlvbiwgZXJyb3IgaGFuZGxpbmcsIGV0Yy5dLiBJJiMzOTtsbCB3YW50IHRvIHNlZSBob3cgdGhleSBhcmUgaGFuZGxpbmcgdGhlIG9wdGlvbiBsZW5ndGggY2hlY2tzIHRvbywgYW5kIGhvdyBpdCBpcyB1c2VkIHdpdGggdGhlIHNpZ25hbGluZyBsYXllci4gSSBhbnRpY2lwYXRlIHRoYXQgdGhpcyB3aWxsIGJlIGEgcXVpY2sgaW52ZXN0aWdhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTY6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2V0c29ja29wdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9hdG0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9hdG0vY29tbW9uLmM9NjkyPXN0YXRpYyBpbnQgY2hlY2tfcW9zKGNvbnN0IHN0cnVjdCBhdG1fcW9zICpxb3MpXG4tLVxubmV0L2F0bS9jb21tb24uYy03MDgtXG5uZXQvYXRtL2NvbW1vbi5jOjcwOTppbnQgdmNjX3NldHNvY2tvcHQoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcbm5ldC9hdG0vY29tbW9uLmMtNzEwLVx0XHQgICBzb2NrcHRyX3Qgb3B0dmFsLCB1bnNpZ25lZCBpbnQgb3B0bGVuKVxuLS1cbm5ldC9hdG0vY29tbW9uLmg9MjI9aW50IHZjY19jb21wYXRfaW9jdGwoc3RydWN0IHNvY2tldCAqc29jaywgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpO1xubmV0L2F0bS9jb21tb24uaDoyMzppbnQgdmNjX3NldHNvY2tvcHQoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcbm5ldC9hdG0vY29tbW9uLmgtMjQtXHRcdCAgIHNvY2twdHJfdCBvcHR2YWwsIHVuc2lnbmVkIGludCBvcHRsZW4pO1xuLS1cbm5ldC9hdG0vcHZjLmM9NTk9c3RhdGljIGludCBwdmNfY29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHJfdW5zaXplZCAqc29ja2FkZHIsXG4tLVxubmV0L2F0bS9wdmMuYy02NC1cbm5ldC9hdG0vcHZjLmM6NjU6c3RhdGljIGludCBwdmNfc2V0c29ja29wdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLFxubmV0L2F0bS9wdmMuYy02Ni1cdFx0XHQgIHNvY2twdHJfdCBvcHR2YWwsIHVuc2lnbmVkIGludCBvcHRsZW4pXG4tLVxubmV0L2F0bS9wdmMuYy03MS1cdGxvY2tfc29jayhzayk7XG5uZXQvYXRtL3B2Yy5jOjcyOlx0ZXJyb3IgPSB2Y2Nfc2V0c29ja29wdChzb2NrLCBsZXZlbCwgb3B0bmFtZSwgb3B0dmFsLCBvcHRsZW4pO1xubmV0L2F0bS9wdmMuYy03My1cdHJlbGVhc2Vfc29jayhzayk7XG4tLVxubmV0L2F0bS9wdmMuYz0xMDY9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgcHZjX3Byb3RvX29wcyA9IHtcbi0tXG5uZXQvYXRtL3B2Yy5jLTEyMy1cdC5zaHV0ZG93biA9XHRwdmNfc2h1dGRvd24sXG5uZXQvYXRtL3B2Yy5jOjEyNDpcdC5zZXRzb2Nrb3B0ID1cdHB2Y19zZXRzb2Nrb3B0LFxubmV0L2F0bS9wdmMuYy0xMjUtXHQuZ2V0c29ja29wdF9pdGVyID0gcHZjX2dldHNvY2tvcHQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE2OjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDczNTAKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHJlbmRlcmVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkRpdmluZyBpbnRvIHRoZSBgc3ZjLmNgIFNvY2tldCBPcHRpb25zKioKClJpZ2h0LCBzbyBgc3ZjLmNgIGlzIGNhbGxpbmcgYHN2Y19zZXRzb2Nrb3B0YCwgaXMgaXQ/IEludGVyZXN0aW5nLiBUaGF0IGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdC4gTXkgbmV4dCB0aG91Z2h0IGlzIHRvIGp1bXAgcmlnaHQgaW4gYW5kIGV4YW1pbmUgdGhlIGBzdmMuY2AgYHByb3RvX29wc2AuIFRoYXQmIzM5O3Mgd2hlcmUgSSYjMzk7bGwgZmluZCB0aGUgbWVhdCBvZiBob3cgdGhpcyBzb2NrZXQgb3B0aW9uIGlzIGJlaW5nIGhhbmRsZWQsIHRoZSB1bmRlcmx5aW5nIHN0cnVjdHVyZS4gSSYjMzk7bSBndWVzc2luZyB0aGVyZSYjMzk7cyBhIHNwZWNpZmljIHJlYXNvbiB3aHkgdGhleSYjMzk7cmUgdXNpbmcgYHN2Y19zZXRzb2Nrb3B0YCBhbmQgSSBuZWVkIHRvIHNlZSB3aGF0JiMzOTtzIGhhcHBlbmluZyB1bmRlciB0aGUgaG9vZC4gVGltZSB0byBkaWcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE2OjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cHJvdG9fb3BzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2F0bS9zdmMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE2OjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc1NzYKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqYHN2Yy5jYCBhbmQgYHByb3RvX29wc2A6IEEgUXVpY2sgTWVudGFsIENoZWNrKioKCk9rYXksIGBzdmMuY2AuLi4gaW1tZWRpYXRlbHkgbXkgbWluZCBqdW1wcyB0byB0aGUgbmV0d29yayBzZXJ2aWNlIGNvZGUsIGxpa2VseSB0aGUgY29yZSBvZiB0aGUgc2VydmljZSBoYW5kbGluZy4gU3BlY2lmaWNhbGx5LCBteSBicmFpbiBsYXRjaGVzIG9udG8gJiMzNDtwcm90b19vcHMmIzM0Oy4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgYW5kIHF1aXRlIHRlbGxpbmcuIE15IGJyYWluIGlzIGFscmVhZHkgc3RhcnRpbmcgdG8gcGllY2UgdG9nZXRoZXIgdGhlIGltcGxpY2F0aW9ucy4gYHByb3RvX29wc2AgdHlwaWNhbGx5IGltcGxpZXMgYSBzdHJ1Y3R1cmUgb3Igc2V0IG9mIGZ1bmN0aW9uIHBvaW50ZXJzIHVzZWQgdG8gYWJzdHJhY3QgYW5kIGVuY2Fwc3VsYXRlIHByb3RvY29sLXNwZWNpZmljIG9wZXJhdGlvbnMgd2l0aGluIHRoZSBuZXR3b3JrIHNlcnZpY2UgZnJhbWV3b3JrLiBTbywgbXkgaW5pdGlhbCB0aG91Z2h0IGlzOiB0aGlzIGlzIGFib3V0IHByb3RvY29sIGhhbmRsaW5nICp3aXRoaW4qIHRoZSBzZXJ2aWNlIGl0c2VsZiwgbm90IGp1c3QgdGhlIGdlbmVyaWMgc2VydmljZSBmcmFtZXdvcmsuIEFtIEkgcmlnaHQgaW4gdGhpbmtpbmcgdGhpcyBpcyBwYXJ0IG9mIGEgbGFyZ2VyLCBmbGV4aWJsZSBkZXNpZ24/IElzIHRoaXMgd2hlcmUgSSBjYW4gZmluZCB0aGUgY29ubmVjdGlvbi1oYW5kbGluZyBsb2dpYywgZGF0YSBzZXJpYWxpemF0aW9uL2Rlc2VyaWFsaXphdGlvbiwgYW5kIHBlcmhhcHMgYXV0aGVudGljYXRpb24gb3Igc2VjdXJpdHktcmVsYXRlZCBzdHVmZj8gV2hhdCBwcm90b2NvbHMgaXMgaXQgc3VwcG9ydGluZz8gVGltZSB0byBkaXZlIGluLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE2OjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Byb3RvX29wcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9hdG0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9hdG0vY29tbW9uLmMtOS0jaW5jbHVkZSBcdTAwM2NsaW51eC9rbW9kLmhcdTAwM2Vcbm5ldC9hdG0vY29tbW9uLmM6MTA6I2luY2x1ZGUgXHUwMDNjbGludXgvbmV0LmhcdTAwM2VcdFx0Lyogc3RydWN0IHNvY2tldCwgc3RydWN0IHByb3RvX29wcyAqL1xubmV0L2F0bS9jb21tb24uYy0xMS0jaW5jbHVkZSBcdTAwM2NsaW51eC9hdG0uaFx1MDAzZVx0XHQvKiBBVE0gc3R1ZmYgKi9cbi0tXG5uZXQvYXRtL2lvY3RsLmMtMTAtI2luY2x1ZGUgXHUwMDNjbGludXgva21vZC5oXHUwMDNlXG5uZXQvYXRtL2lvY3RsLmM6MTE6I2luY2x1ZGUgXHUwMDNjbGludXgvbmV0LmhcdTAwM2VcdFx0Lyogc3RydWN0IHNvY2tldCwgc3RydWN0IHByb3RvX29wcyAqL1xubmV0L2F0bS9pb2N0bC5jLTEyLSNpbmNsdWRlIFx1MDAzY2xpbnV4L2F0bS5oXHUwMDNlXHRcdC8qIEFUTSBzdHVmZiAqL1xuLS1cbm5ldC9hdG0vcHZjLmMtNi1cbm5ldC9hdG0vcHZjLmM6NzojaW5jbHVkZSBcdTAwM2NsaW51eC9uZXQuaFx1MDAzZVx0XHQvKiBzdHJ1Y3Qgc29ja2V0LCBzdHJ1Y3QgcHJvdG9fb3BzICovXG5uZXQvYXRtL3B2Yy5jLTgtI2luY2x1ZGUgXHUwMDNjbGludXgvYXRtLmhcdTAwM2VcdFx0LyogQVRNIHN0dWZmICovXG4tLVxubmV0L2F0bS9wdmMuYz04OT1zdGF0aWMgaW50IHB2Y19nZXRuYW1lKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkciAqc29ja2FkZHIsXG4tLVxubmV0L2F0bS9wdmMuYy0xMDUtXG5uZXQvYXRtL3B2Yy5jOjEwNjpzdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBwdmNfcHJvdG9fb3BzID0ge1xubmV0L2F0bS9wdmMuYy0xMDctXHQuZmFtaWx5ID1cdFBGX0FUTVBWQyxcbi0tXG5uZXQvYXRtL3B2Yy5jPTEzMj1zdGF0aWMgaW50IHB2Y19jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgcHJvdG9jb2wsXG4tLVxubmV0L2F0bS9wdmMuYy0xMzctXG5uZXQvYXRtL3B2Yy5jOjEzODpcdHNvY2stXHUwMDNlb3BzID0gXHUwMDI2cHZjX3Byb3RvX29wcztcbm5ldC9hdG0vcHZjLmMtMTM5LVx0cmV0dXJuIHZjY19jcmVhdGUobmV0LCBzb2NrLCBwcm90b2NvbCwgUEZfQVRNUFZDLCBrZXJuKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTY6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODI3MgoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDM3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqTmF2aWdhdGluZyB0aGUgQVRNIFNlcnZpY2UgQ29kZSoqCgpBbHJpZ2h0LCBzbyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIHRoZSBgc3ZjLmNgIGZpbGUgYW5kIGl0cyBhc3NvY2lhdGlvbiB3aXRoIGBQRl9BVE1TVkNgLiBSaWdodCwgbWFrZXMgc2Vuc2UuIE5vdywgbXkgZmlyc3QgbW92ZSBpcyBhbHdheXMgdG8gZGl2ZSBpbiB0aGVyZSBhbmQgc2VlIHdoYXQgd2UmIzM5O3JlIHdvcmtpbmcgd2l0aCBpbiB0ZXJtcyBvZiB0aGUgc2VydmljZSYjMzk7cyBwcm90b2NvbCBvcGVyYXRpb25zLiBNeSBpbnR1aXRpb24gc3VnZ2VzdHMgdGhhdCB3ZSYjMzk7bGwgYmUgbG9va2luZyBmb3IgYHN2Y19wcm90b19vcHNgLCBvciBtYXliZSBqdXN0IHNvbWUgYG9wc2Agc3RydWN0IHdpdGhpbiB0aGUgZmlsZS4gSXQmIzM5O3MgYSBwcmV0dHkgc3RhbmRhcmQgY29udmVudGlvbiwgc28gdGhhdCYjMzk7cyB3aGVyZSBJJiMzOTtsbCBmb2N1cyBteSBpbml0aWFsIHNjYW4uIEZpbmRpbmcgdGhhdCB3aWxsIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiBob3cgdGhlIEFUTSBzZXJ2aWNlIGl0c2VsZiBpcyBoYW5kbGluZyBkaWZmZXJlbnQgb3BlcmF0aW9ucywgYW5kIHdoYXQgdGhlIGtleSBpbnRlcmZhY2VzIGFyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTY6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtvcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYXRtL3N2Yy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTY6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODUyMQoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEaXZpbmcgaW50byBgbmV0L2F0bS9zdmMuY2AqKgoKQWxyaWdodCwgdGltZSB0byBkaWcgaW4uIFRoZSB0YXNrIGF0IGhhbmQgbGlrZWx5IHJlcXVpcmVzIG1lIHRvIHVuZGVyc3RhbmQgc29tZXRoaW5nIGFib3V0IHRoZSBBVE0gc2VydmljZSBsYXllciB3aXRoaW4gdGhlIGtlcm5lbC4gVG8gZG8gdGhhdCwgSSBuZWVkIHRvIGdldCBpbnRpbWF0ZWx5IGZhbWlsaWFyIHdpdGggdGhlIGNvZGUuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGNoZWNrIHRoZSBjb250ZW50cyBvZiBgbmV0L2F0bS9zdmMuY2AuIEkgZXhwZWN0IHRvIGZpbmQgdGhlIGNvcmUgaW1wbGVtZW50YXRpb24gb2YgdGhlIEFUTSBzZXJ2aWNlIGludGVyZmFjZSBoZXJlOiBob3cgaXQgaGFuZGxlcyBjb25uZWN0aW9uIHNldHVwLCBkYXRhIHRyYW5zbWlzc2lvbiwgc2lnbmFsaW5nLCBhbmQgZXJyb3IgaGFuZGxpbmcuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRoZSBmdW5kYW1lbnRhbCBkYXRhIHN0cnVjdHVyZXMsIGZ1bmN0aW9uIGNhbGxzLCBhbmQgY29udHJvbCBmbG93IHRoYXQgZGVmaW5lIHRoZSBBVE0gc2VydmljZSYjMzk7cyBiZWhhdmlvciB3aXRoaW4gdGhlIG5ldHdvcmsgc3RhY2suIEkmIzM5O2xsIGJlIG1lbnRhbGx5IHBhcnNpbmcgdGhlIGNvZGUgYW5kIGNyb3NzLXJlZmVyZW5jaW5nIHRoaXMgbW9kdWxlIHdpdGggb3RoZXIgcmVsYXRlZCBvbmVzLCBsaWtlIHRoZSBBVE0gZGV2aWNlIGRyaXZlcnMgYW5kIHRoZSBBVE0gbGF5ZXIgaXRzZWxmIHRvIGdhaW4gYSBob2xpc3RpYyB2aWV3IG9mIHRoZSBmdW5jdGlvbmFsaXR5IGFuZCBpdHMgZGVwZW5kZW5jaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxNjozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1BGX0FUTVNWQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9hdG0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTY6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODc2OAoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkEgUXVpY2sgQ29kZSBMb2NhdGlvbiBDaGVjayoqCgpPa2F5LCBzbyBJJiMzOTttIGp1c3QgcXVpY2tseSB0cnlpbmcgdG8gam9nIG15IG1lbW9yeS4uLiBJIGNvdWxkIGhhdmUgc3dvcm4gSSBzYXcgc29tZXRoaW5nIGFib3V0IHRoZSBBVE0gc2VydmljZSBhbmQgd2FzIGp1c3QgdHJ5aW5nIHRvIHJlbWVtYmVyIHdoZXJlIEkgbGFzdCBzYXcgdGhlIGNvZGUgZm9yIGBQRl9BVE1TVkNgLiAgV2FpdCBhIG1pbnV0ZSwgaXNuJiMzOTt0IHRoYXQgZnVuY3Rpb25hbGl0eSBhY3R1YWxseSBpbXBsZW1lbnRlZCBpbiBgbmV0L2F0bS9zdmMuY2A/IEdvb2QsIHRoYXQmIzM5O3Mgd2hlcmUgSSBuZWVkIHRvIGJlLiBJIGtuZXcgaXQgd2FzIHNvbWV3aGVyZSBpbiB0aGF0IG5ldHdvcmtpbmcgc3Vic3lzdGVtLiBMZXQgbWUgZ28gZG91YmxlIGNoZWNrIG15IGFzc3VtcHRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxNjozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtQRl9BVE0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYXRtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYXRtL2NvbW1vbi5jPTg1Nj1NT0RVTEVfTElDRU5TRShcJiMzNDtHUExcJiMzNDspO1xubmV0L2F0bS9jb21tb24uYzo4NTc6TU9EVUxFX0FMSUFTX05FVFBST1RPKFBGX0FUTVBWQyk7XG4tLVxubmV0L2F0bS9wcm9jLmM9MzE3PWludCBfX2luaXQgYXRtX3Byb2NfaW5pdCh2b2lkKVxuLS1cbm5ldC9hdG0vcHJvYy5jLTMyMy1cdHByb2NfY3JlYXRlX3NlcV9wcml2YXRlKFwmIzM0O3B2Y1wmIzM0OywgMDQ0NCwgYXRtX3Byb2Nfcm9vdCwgXHUwMDI2cHZjX3NlcV9vcHMsXG5uZXQvYXRtL3Byb2MuYzozMjQ6XHRcdFx0c2l6ZW9mKHN0cnVjdCB2Y2Nfc3RhdGUpLCAodm9pZCAqKSh1aW50cHRyX3QpUEZfQVRNUFZDKTtcbm5ldC9hdG0vcHJvYy5jLTMyNS1cdHByb2NfY3JlYXRlX3NlcV9wcml2YXRlKFwmIzM0O3ZjXCYjMzQ7LCAwNDQ0LCBhdG1fcHJvY19yb290LCBcdTAwMjZ2Y2Nfc2VxX29wcyxcbi0tXG5uZXQvYXRtL3B2Yy5jPTEwNj1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBwdmNfcHJvdG9fb3BzID0ge1xubmV0L2F0bS9wdmMuYzoxMDc6XHQuZmFtaWx5ID1cdFBGX0FUTVBWQyxcbm5ldC9hdG0vcHZjLmMtMTA4LVx0Lm93bmVyID1cdFRISVNfTU9EVUxFLFxuLS1cbm5ldC9hdG0vcHZjLmM9MTMyPXN0YXRpYyBpbnQgcHZjX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBwcm90b2NvbCxcbi0tXG5uZXQvYXRtL3B2Yy5jLTEzOC1cdHNvY2stXHUwMDNlb3BzID0gXHUwMDI2cHZjX3Byb3RvX29wcztcbm5ldC9hdG0vcHZjLmM6MTM5Olx0cmV0dXJuIHZjY19jcmVhdGUobmV0LCBzb2NrLCBwcm90b2NvbCwgUEZfQVRNUFZDLCBrZXJuKTtcbm5ldC9hdG0vcHZjLmMtMTQwLX1cbi0tXG5uZXQvYXRtL3B2Yy5jPTE0Mj1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9wcm90b19mYW1pbHkgcHZjX2ZhbWlseV9vcHMgPSB7XG5uZXQvYXRtL3B2Yy5jOjE0MzpcdC5mYW1pbHkgPSBQRl9BVE1QVkMsXG5uZXQvYXRtL3B2Yy5jLTE0NC1cdC5jcmVhdGUgPSBwdmNfY3JlYXRlLFxuLS1cbm5ldC9hdG0vcHZjLmM9MTU5PXZvaWQgYXRtcHZjX2V4aXQodm9pZClcbm5ldC9hdG0vcHZjLmMtMTYwLXtcbm5ldC9hdG0vcHZjLmM6MTYxOlx0c29ja191bnJlZ2lzdGVyKFBGX0FUTVBWQyk7XG5uZXQvYXRtL3B2Yy5jLTE2Mi19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE2OjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk0ODgKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKk5hdmlnYXRpbmcgdGhlIEFUTSBTdWJzeXN0ZW0gU291cmNlIENvZGUqKgoKUmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGZ1bmN0aW9uIG9yIGRhdGEgc3RydWN0dXJlLCBsZXQmIzM5O3MgY2FsbCBpdCBgc3ZjYCwgYW5kIEkgc2VlIHRoZSBmaWxlIHBhdGggYG5ldC9hdG0vc3ZjLmNgLiBIbW0sIGEgcXVpY2sgbWVudGFsIGNoZWNrIGNvbmZpcm1zIHRoYXQmIzM5O3MgbGlrZWx5ICp3aXRoaW4qIHRoZSBBVE0gKEFzeW5jaHJvbm91cyBUcmFuc2ZlciBNb2RlKSBzdWJzeXN0ZW0sIGEgY3JpdGljYWwgcGllY2Ugb2Yga2VybmVsIG5ldHdvcmtpbmcuIE5vdywgdG8gZ2V0IG15IGJlYXJpbmdzIGFuZCB1bmRlcnN0YW5kIHRoZSB3aWRlciBjb250ZXh0LCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBjb25maXJtIHRoZSBsb2NhdGlvbi4gSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIHRoYXQgYG5ldC9hdG1gIGlzIGluZGVlZCB0aGUgcm9vdCBkaXJlY3RvcnkgZm9yIHRoaXMgYXJlYSBvZiB0aGUgY29kZSBiYXNlLiBJJiMzOTtsbCBtZW50YWxseSBicm93c2UgdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUsIGlmIEkgY2FuIGZpbmQgaXQgcGh5c2ljYWxseSB0aGF0IGlzLiBJJiMzOTttIGFscmVhZHkgdmlzdWFsaXppbmcgdGhlIGV4cGVjdGVkIGxheW91dCB3aXRoaW4gdGhlIGZpbGVzeXN0ZW0uIFRoaXMgaXMgYSB2ZXJ5IGNvbW1vbiBwYXR0ZXJuLCBidXQgaXQmIzM5O3MgYWx3YXlzIGdvb2QgdG8gcXVpY2tseSBjb25maXJtIHRoZSBhc3N1bXB0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTY6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5jb2Rlc2VhcmNoLWRpci1pbmRleDwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RGlyJiMzNDs6ICYjMzQ7bmV0L2F0bS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogWwogICAgJiMzNDthdG1fbWlzYy5jJiMzNDssCiAgICAmIzM0O2F0bV9zeXNmcy5jJiMzNDssCiAgICAmIzM0O2JyMjY4NC5jJiMzNDssCiAgICAmIzM0O2NvbW1vbi5jJiMzNDssCiAgICAmIzM0O2NvbW1vbi5oJiMzNDssCiAgICAmIzM0O2lvY3RsLmMmIzM0OywKICAgICYjMzQ7cHBwb2F0bS5jJiMzNDssCiAgICAmIzM0O3Byb2MuYyYjMzQ7LAogICAgJiMzNDtwcm90b2NvbHMuaCYjMzQ7LAogICAgJiMzNDtwdmMuYyYjMzQ7LAogICAgJiMzNDtyYXcuYyYjMzQ7LAogICAgJiMzNDtyZXNvdXJjZXMuYyYjMzQ7LAogICAgJiMzNDtyZXNvdXJjZXMuaCYjMzQ7CiAgXSwKICAmIzM0O1N1YmRpcnMmIzM0OzogbnVsbAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE2OjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk4NDMKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiA1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipOYXZpZ2F0aW5nIHRoZSBBVE0gRmlsZXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGZvciBgc3ZjLmNgLCBidXQgaXQmIzM5O3MgYXBwYXJlbnRseSBub3QgcHJlc2VudC4gSW50ZXJlc3RpbmcuIEluc3RlYWQsIEkmIzM5O20gc2VlaW5nIGBwdmMuY2AsIGByYXcuY2AsIGBicjI2ODQuY2AsIGFuZCBgcHBwb2F0bS5jYC4gR2l2ZW4gd2hhdCBJJiMzOTttIHRyeWluZyB0byBhY2hpZXZlLCB0aGF0JiMzOTtzIHVzZWZ1bCBjb250ZXh0LiBJJiMzOTtsbCBuZWVkIHRvIHJlbWVtYmVyIHRoZSBsYXlvdXQgb2YgdGhlc2UgZmlsZXMgZ29pbmcgZm9yd2FyZCBhcyB0aGUgbmFtaW5nIGNvbnZlbnRpb24gaXMgbm90IGFzIEkgZXhwZWN0ZWQuCgpOb3csIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSBob3cgYHNldHNvY2tvcHRgIGlzIHVzZWQuIEkmIzM5O2xsIGZvY3VzIG15IHNlYXJjaCBvbiB0aGUgYG5ldC9hdG0vYCBkaXJlY3RvcnkuIFRoYXQmIzM5O3MgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZyBpbnRvIHRoZSBBVE0tc3BlY2lmaWMgc29ja2V0IG9wdGlvbnMgYW5kIGhvdyB0aGV5JiMzOTtyZSBoYW5kbGVkLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgZmluZCB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTY6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2V0c29ja29wdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9hdG0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9hdG0vY29tbW9uLmM9NjkyPXN0YXRpYyBpbnQgY2hlY2tfcW9zKGNvbnN0IHN0cnVjdCBhdG1fcW9zICpxb3MpXG4tLVxubmV0L2F0bS9jb21tb24uYy03MDgtXG5uZXQvYXRtL2NvbW1vbi5jOjcwOTppbnQgdmNjX3NldHNvY2tvcHQoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcbm5ldC9hdG0vY29tbW9uLmMtNzEwLVx0XHQgICBzb2NrcHRyX3Qgb3B0dmFsLCB1bnNpZ25lZCBpbnQgb3B0bGVuKVxuLS1cbm5ldC9hdG0vY29tbW9uLmg9MjI9aW50IHZjY19jb21wYXRfaW9jdGwoc3RydWN0IHNvY2tldCAqc29jaywgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpO1xubmV0L2F0bS9jb21tb24uaDoyMzppbnQgdmNjX3NldHNvY2tvcHQoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcbm5ldC9hdG0vY29tbW9uLmgtMjQtXHRcdCAgIHNvY2twdHJfdCBvcHR2YWwsIHVuc2lnbmVkIGludCBvcHRsZW4pO1xuLS1cbm5ldC9hdG0vcHZjLmM9NTk9c3RhdGljIGludCBwdmNfY29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHJfdW5zaXplZCAqc29ja2FkZHIsXG4tLVxubmV0L2F0bS9wdmMuYy02NC1cbm5ldC9hdG0vcHZjLmM6NjU6c3RhdGljIGludCBwdmNfc2V0c29ja29wdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLFxubmV0L2F0bS9wdmMuYy02Ni1cdFx0XHQgIHNvY2twdHJfdCBvcHR2YWwsIHVuc2lnbmVkIGludCBvcHRsZW4pXG4tLVxubmV0L2F0bS9wdmMuYy03MS1cdGxvY2tfc29jayhzayk7XG5uZXQvYXRtL3B2Yy5jOjcyOlx0ZXJyb3IgPSB2Y2Nfc2V0c29ja29wdChzb2NrLCBsZXZlbCwgb3B0bmFtZSwgb3B0dmFsLCBvcHRsZW4pO1xubmV0L2F0bS9wdmMuYy03My1cdHJlbGVhc2Vfc29jayhzayk7XG4tLVxubmV0L2F0bS9wdmMuYz0xMDY9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgcHZjX3Byb3RvX29wcyA9IHtcbi0tXG5uZXQvYXRtL3B2Yy5jLTEyMy1cdC5zaHV0ZG93biA9XHRwdmNfc2h1dGRvd24sXG5uZXQvYXRtL3B2Yy5jOjEyNDpcdC5zZXRzb2Nrb3B0ID1cdHB2Y19zZXRzb2Nrb3B0LFxubmV0L2F0bS9wdmMuYy0xMjUtXHQuZ2V0c29ja29wdF9pdGVyID0gcHZjX2dldHNvY2tvcHQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE2OjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNjAyCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMjIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU2NvcGUgb2YgYSBOZXR3b3JrIEFUTSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdHJhY2luZyBob3cgaXQgaW1wYWN0cyB0aGUgYEFUTWAgY29uZmlndXJhdGlvbiBpbiB0aGUga2VybmVsLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgdmNjX3NldHNvY2tvcHRgIGlzIGNhbGxlZCBmcm9tIGBwdmNfc2V0c29ja29wdGAuIEkga25vdyB0aGF0IGBwdmNfc2V0c29ja29wdGAgcmVzaWRlcyBpbiBgbmV0L2F0bS9wdmMuY2AsIGFuZCB0aGUgcGF0Y2ggc3BlY2lmaWNhbGx5IG1vZGlmaWVzIGB2Y2Nfc2V0c29ja29wdGAuIFRoaXMgY2xlYXJseSBwb2ludHMgdG8gYSBmdW5jdGlvbmFsIGNoYW5nZSByZWxhdGVkIHRvIGhvdyBzb2NrZXQgb3B0aW9ucyBhcmUgc2V0IHdpdGhpbiB0aGUgQVRNIGNvbnRleHQuCgpNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gaWRlbnRpZnkgdGhlIGtleSBmb2N1cyBzeW1ib2wsIGFuZCBpdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhhdCBpdCYjMzk7cyBgdmNjX3NldHNvY2tvcHRgLiBOb3csIGlzIGl0IGV4cG9ydGVkPyBIbW1tLCBubywgaXQmIzM5O3Mgbm90IGV4cG9ydGVkLiBCdXQgd2FpdCwgaXQmIzM5O3MgYWxzbyAqbm90KiBzdGF0aWMsIHNvIGl0ICpkb2VzKiBoYXZlIGEgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3MuIE9rYXksIEkgd2FzIGxvb2tpbmcgaW4gdGhlIHdyb25nIHBsYWNlIGVhcmxpZXIsIGB2Y2Nfc2V0c29ja29wdGAgaXMgYWN0dWFsbHkgaW4gYG5ldC9hdG0vY29tbW9uLmNgLCBhbmQgaXQgaXMgKm5vdCogZGVjbGFyZWQgc3RhdGljISBUaGF0JiMzOTtzIGNydWNpYWwuIFRoaXMgbWVhbnMgaXQmIzM5O3MgYXZhaWxhYmxlIGZvciBwb3RlbnRpYWwgbGlua2luZyBmcm9tIGVsc2V3aGVyZSwgd2hpY2ggc3RyZW5ndGhlbnMgaXRzIGltcG9ydGFuY2UgYXMgYSBzeW1ib2wgdG8gaW52ZXN0aWdhdGUuCgpTaW5jZSBgdmNjX3NldHNvY2tvcHRgIGlzIHRoZSByZWFsIHRhcmdldCBoZXJlLCBsZXQmIzM5O3MganVzdCBjb25maXJtIHRoYXQgYHB2Y19zZXRzb2Nrb3B0YCBpcyBhY3R1YWxseSBzdGF0aWMuIE9rYXksIHllcywgaXQgKmlzKiBzdGF0aWMuIFRoaXMgZnVydGhlciB2YWxpZGF0ZXMgdGhhdCB0aGUgY29yZSBjaGFuZ2UgcmV2b2x2ZXMgYXJvdW5kIGB2Y2Nfc2V0c29ja29wdGAuIFNvLCBJJiMzOTttIGNvbmZpZGVudCB0aGF0IHRoaXMgaXMgYSBnb29kIHN5bWJvbCB0byBmb2N1cyBvbiB3aGVuIHJldmlld2luZyB0aGlzIHBhdGNoLgoKUmlnaHQsIHRoZSBtYWluIGNvbmZpZyBpcyBgQVRNYC4gSnVzdCB0byBiZSBzYWZlLCBJJiMzOTtsbCBxdWlja2x5IGNoZWNrIGBuZXQvYXRtL0tjb25maWdgIGFnYWluIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJiMzOTt0IGFueSBvdGhlciBkZXBlbmRlbnQgY29uZmlncyB0aGF0IGFyZSBuZWVkZWQsIGp1c3QgdG8gYmUgdGhvcm91Z2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE2OjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBBVE0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYXRtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2F0bS9LY29uZmlnLTUtXG5uZXQvYXRtL0tjb25maWc6Njpjb25maWcgQVRNXG5uZXQvYXRtL0tjb25maWctNy1cdHRyaXN0YXRlIFwmIzM0O0FzeW5jaHJvbm91cyBUcmFuc2ZlciBNb2RlIChBVE0pXCYjMzQ7XG4tLVxubmV0L2F0bS9LY29uZmlnLTIxLVxubmV0L2F0bS9LY29uZmlnOjIyOmNvbmZpZyBBVE1fQlIyNjg0XG5uZXQvYXRtL0tjb25maWctMjMtXHR0cmlzdGF0ZSBcJiMzNDtSRkMxNDgzLzI2ODQgQnJpZGdlZCBwcm90b2NvbHNcJiMzNDtcbi0tXG5uZXQvYXRtL0tjb25maWctMzAtXG5uZXQvYXRtL0tjb25maWc6MzE6Y29uZmlnIEFUTV9CUjI2ODRfSVBGSUxURVJcbm5ldC9hdG0vS2NvbmZpZy0zMi1cdGJvb2wgXCYjMzQ7UGVyLVZDIElQIGZpbHRlciBrbHVkZ2VcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTY6MzI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE0MDkKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIGhvdyBJJiMzOTtkIGFwcHJvYWNoIHRoaXMgdGFzaywgYXMgaWYgdGhlc2Ugd2VyZSBteSBpbnRlcm5hbCB0aG91Z2h0czoKCioqQ2hlY2tpbmcgRGVwZW5kZW5jaWVzIGZvciBBVE0gaW4gdGhlIEtlcm5lbCBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcyBmb3IgQVRNIHN1cHBvcnQgaW4gdGhpcyBrZXJuZWwuIFRoZSBmaXJzdCBwbGFjZSB0byBjaGVjayBpcyB1c3VhbGx5IHRoZSBgS2NvbmZpZ2AgZmlsZSBpbiB0aGUgcmVsZXZhbnQgc3Vic3lzdGVtIGRpcmVjdG9yeS4gSW4gdGhpcyBjYXNlLCB0aGF0JiMzOTtzIGBuZXQvYXRtL0tjb25maWdgLiBJIGFscmVhZHkga25vdyB0aGUgdXN1YWwgbG9jYXRpb25zLCBhbmQgdGhpcyBwYXRoIHNlZW1zIGxvZ2ljYWwuIExvb2tpbmcgYXQgdGhpcyBgS2NvbmZpZ2AgZmlsZSB3aWxsIHF1aWNrbHkgdGVsbCBtZSB3aGljaCBvdGhlciBmZWF0dXJlcywgaGFyZHdhcmUgZHJpdmVycywgb3Iga2VybmVsIG9wdGlvbnMgYXJlIHJlcXVpcmVkIHRvIGVuYWJsZSBvciB1c2UgdGhlIEFUTSBmdW5jdGlvbmFsaXR5LiBLbm93aW5nIHRoZXNlIGRlcGVuZGVuY2llcyBpcyBjcnVjaWFsIGZvciBhIGNsZWFuIGFuZCBlZmZpY2llbnQga2VybmVsIGNvbmZpZ3VyYXRpb24gYW5kIHVuZGVyc3RhbmRpbmcgdGhlIGludGVyYWN0aW9uIG9mIGRpZmZlcmVudCBjb21wb25lbnRzIGluIHRoZSBuZXR3b3JrIHN0YWNrLiBJdCBhbHNvIGhlbHBzIGluIGRlYnVnZ2luZyBwb3RlbnRpYWwgaXNzdWVzIGxhdGVyIG9uLCBtYWtpbmcgc3VyZSB0aGF0IGFsbCB0aGUgbmVjZXNzYXJ5IGJ1aWxkaW5nIGJsb2NrcyBhcmUgaW4gcGxhY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE2OjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlcGVuZHMgb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYXRtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2F0bS9LY29uZmlnPTIyPWNvbmZpZyBBVE1fQlIyNjg0XG5uZXQvYXRtL0tjb25maWctMjMtXHR0cmlzdGF0ZSBcJiMzNDtSRkMxNDgzLzI2ODQgQnJpZGdlZCBwcm90b2NvbHNcJiMzNDtcbm5ldC9hdG0vS2NvbmZpZzoyNDpcdGRlcGVuZHMgb24gQVRNIFx1MDAyNlx1MDAyNiBJTkVUXG5uZXQvYXRtL0tjb25maWctMjUtXHRoZWxwXG4tLVxubmV0L2F0bS9LY29uZmlnPTMxPWNvbmZpZyBBVE1fQlIyNjg0X0lQRklMVEVSXG5uZXQvYXRtL0tjb25maWctMzItXHRib29sIFwmIzM0O1Blci1WQyBJUCBmaWx0ZXIga2x1ZGdlXCYjMzQ7XG5uZXQvYXRtL0tjb25maWc6MzM6XHRkZXBlbmRzIG9uIEFUTV9CUjI2ODRcbm5ldC9hdG0vS2NvbmZpZy0zNC1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTY6MzI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE4MDkKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFeGFtaW5pbmcgQVRNIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGUgS2NvbmZpZyBmaWxlIGZvciBBVE0sIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGBuZXQvYXRtYCBkaXJlY3RvcnkuIE15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtIbW0sIEFUTSBkb2VzbiYjMzk7dCBzZWVtIHRvIGhhdmUgYW55IGRpcmVjdCBkZXBlbmRlbmNpZXMgZGVmaW5lZCBpbiBpdHMgb3duIGBLY29uZmlnYCBmaWxlLiYjMzQ7IFRoYXQmIzM5O3MgYSBsaXR0bGUgdW51c3VhbCwgc28gbGV0JiMzOTtzIGRpZyBkZWVwZXIuIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBjaGVjayB0aGUgcGFyZW50IGBuZXQvS2NvbmZpZ2AgZmlsZS4gSSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGUgYEFUTWAgc3ltYm9sIGlzIHNvdXJjZWQgb3IgY29uZGl0aW9uYWxseSBpbmNsdWRlZCBmcm9tIHRoYXQgaGlnaGVyLWxldmVsIGNvbmZpZ3VyYXRpb24uIEtub3dpbmcgdGhpcyB3aWxsIGNsYXJpZnkgaG93IGFuZCB3aGVyZSBgQVRNYCBpcyBjb250cm9sbGVkIHdpdGhpbiB0aGUgb3ZlcmFsbCBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gY29udGV4dC4gVW5kZXJzdGFuZGluZyB0aGlzIHNvdXJjaW5nIHJlbGF0aW9uc2hpcCBpcyBrZXkgdG8gZnVsbHkgZ3Jhc3AgaXRzIGludGVncmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxNjozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzb3VyY2UgXCYjMzQ7bmV0L2F0bS9LY29uZmlnXCYjMzQ7JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L0tjb25maWc9MjU2PXNvdXJjZSBcJiMzNDtuZXQvdGlwYy9LY29uZmlnXCYjMzQ7XG5uZXQvS2NvbmZpZzoyNTc6c291cmNlIFwmIzM0O25ldC9hdG0vS2NvbmZpZ1wmIzM0O1xubmV0L0tjb25maWctMjU4LXNvdXJjZSBcJiMzNDtuZXQvbDJ0cC9LY29uZmlnXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE2OjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMDk4CgkJCQkJCQlvdXRwdXQ6IDg2CgkJCQkJCQl0aG91Z2h0czogMjQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEFUTSBTb2NrZXQgT3B0aW9uIENoYW5nZSoqCgpPa2F5LCBzbyBpdCBsb29rcyBsaWtlIHRoZSBBVE0gY29uZmlndXJhdGlvbiBpcyB0aGUgb25seSBvbmUgSSBuZWVkIHRvIGNvbnNpZGVyIGhlcmUuIE15IGZvY2FsIHBvaW50IGlzIGRlZmluaXRlbHkgYHZjY19zZXRzb2Nrb3B0YC4gVGhlIHBhdGNoIGFkZHJlc3NlcyBhIGJ1ZyBpbiBob3cgYHZjY19zZXRzb2Nrb3B0YCBoYW5kbGVzIHNvY2tldCBvcHRpb25zLCBzcGVjaWZpY2FsbHkgYnkgY2hhbmdpbmcgYSB2YXJpYWJsZSBmcm9tIGB1bnNpZ25lZCBsb25nYCB0byBgaW50YCBhbmQgaW1wbGVtZW50aW5nIGBjb3B5X3NhZmVfZnJvbV9zb2NrcHRyYCB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHJlbGF0ZWQgdG8gQVRNIHNvY2tldCBvcHRpb25zLCBub3QganVzdCBhIGNvc21ldGljIGZpeC4KCk5vdywgdG8gbWFrZSBzdXJlIHRoaXMgaXMgYWN0dWFsbHkgcmVsZXZhbnQgZm9yIGZ1enppbmcsIEkgbmVlZCB0byBjb25maXJtIHRoYXQgYHZjY19zZXRzb2Nrb3B0YCBpcyByZWFjaGFibGUuIFllcywgaXQgbG9va3MgbGlrZSBpdCBpcy4gQmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZyBvZiBBVE0gYW5kIHNvY2tldCBBUElzLCBpdCBpcyBhY2Nlc3NpYmxlIHZpYSBgc2V0c29ja29wdGAgb24gYW4gQVRNIFBWQyBzb2NrZXQuIEkgY2FuIHNlZSB0aGUgcGF0aDogYHNvY2tldChQRl9BVE1QVkMsIFNPQ0tfREdSQU0sIDApYCBmb2xsb3dlZCBieSBgc2V0c29ja29wdChmZCwgU09MX0FUTSwgU09fU0VUQ0xQLCAmYW1wO3ZhbCwgc2l6ZW9mKHZhbCkpYC4gVGhhdCYjMzk7cyBhIGRpcmVjdCByb3V0ZSBpbnRvIHRoZSBmdW5jdGlvbiBJJiMzOTttIGludGVyZXN0ZWQgaW4uIEkgY2FuIGNvbmZpcm0gdGhpcyBpcyByZWFjaGFibGUuCgpUaGVyZWZvcmUsIHRoZSByZWNvbW1lbmRhdGlvbiBJJiMzOTtsbCByZXR1cm4gaXMgYXMgZm9sbG93czoKCiogICAqKldvcnRoRnV6emluZzogdHJ1ZSoqIC0gVGhlIGNoYW5nZXMgYXJlIHNpZ25pZmljYW50IGFuZCBpbnZvbHZlIGNvcmUgbmV0d29yayBmdW5jdGlvbmFsaXR5LgoqICAgKipGb2N1c1N5bWJvbHM6IFxbJiMzNDt2Y2Nfc2V0c29ja29wdCYjMzQ7XSoqIC0gVGhpcyBpcyB0aGUgZnVuY3Rpb24gZGlyZWN0bHkgaW1wYWN0ZWQgYnkgdGhlIHBhdGNoLgoqICAgKipFbmFibGVDb25maWdzOiBcWyYjMzQ7QVRNJiMzNDtdKiogLSBUaGUgQVRNIGNvbmZpZ3VyYXRpb24gaXMgdGhlIG9ubHkgZGVwZW5kZW5jeSBoZXJlLgoqICAgKipSZWFzb25pbmc6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBBVE0gc29ja2V0IG9wdGlvbiBoYW5kbGluZyBpbiB2Y2Nfc2V0c29ja29wdCwgY2hhbmdpbmcgdGhlIHR5cGUgb2YgYSB2YXJpYWJsZSBhbmQgdXNpbmcgY29weV9zYWZlX2Zyb21fc29ja3B0ci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmsgY29kZS4mIzM0OyoqIC0gVGhpcyBleHBsYWlucyB0aGUgcmF0aW9uYWxlIGZvciB0aGlzIHJlY29tbWVuZGF0aW9uIGNvbmNpc2VseS4gVGhpcyBpbmNsdWRlcyBhIGRlc2NyaXB0aW9uIG9mIHRoZSBjaGFuZ2UgYW5kIHRoZSByZWxldmFuY2UgdG8gdGhlIG5ldHdvcmsgc3RhY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE2OjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtBVE0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2Y2Nfc2V0c29ja29wdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQVRNIHNvY2tldCBvcHRpb24gaGFuZGxpbmcgaW4gdmNjX3NldHNvY2tvcHQsIGNoYW5naW5nIHRoZSB0eXBlIG9mIGEgdmFyaWFibGUgYW5kIHVzaW5nIGNvcHlfc2FmZV9mcm9tX3NvY2twdHIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBuZXR3b3JrIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ZjY19zZXRzb2Nrb3B0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBBVE0gc29ja2V0IG9wdGlvbiBoYW5kbGluZyBpbiB2Y2Nfc2V0c29ja29wdCwgY2hhbmdpbmcgdGhlIHR5cGUgb2YgYSB2YXJpYWJsZSBhbmQgdXNpbmcgY29weV9zYWZlX2Zyb21fc29ja3B0ci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmsgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE2OjMwOjM2LjcwODU2NTY1MloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMjcxMzQ3MDI0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBVE1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2Y2Nfc2V0c29ja29wdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBBVE0gc29ja2V0IG9wdGlvbiBoYW5kbGluZyBpbiB2Y2Nfc2V0c29ja29wdCwgY2hhbmdpbmcgdGhlIHR5cGUgb2YgYSB2YXJpYWJsZSBhbmQgdXNpbmcgY29weV9zYWZlX2Zyb21fc29ja3B0ci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmsgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTY6MzA6MzYuNzA4NTc1NjEyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjE1MjMzMTkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYTQ5Zjg5MDEzNWI5NGRlZDEwMDYyYjllYWJhYTllZWNjNDU3OTFjNFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEF1ZyA1IDE2OjMwOjM0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9hdG0vY29tbW9uLmMgYi9uZXQvYXRtL2NvbW1vbi5jXFxuaW5kZXggYzdmOTI0MDVkYWYwNS4uODExOTU3MjdmYTE4YiAxMDA2NDRcXG4tLS0gYS9uZXQvYXRtL2NvbW1vbi5jXFxuKysrIGIvbmV0L2F0bS9jb21tb24uY1xcbkBAIC03MTAsNyArNzEwLDcgQEAgaW50IHZjY19zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXFxuIFxcdFxcdCAgIHNvY2twdHJfdCBvcHR2YWwsIHVuc2lnbmVkIGludCBvcHRsZW4pXFxuIHtcXG4gXFx0c3RydWN0IGF0bV92Y2MgKnZjYztcXG4tXFx0dW5zaWduZWQgbG9uZyB2YWx1ZTtcXG4rXFx0aW50IHZhbHVlO1xcbiBcXHRpbnQgZXJyb3I7XFxuIFxcbiBcXHRpZiAoX19TT19MRVZFTF9NQVRDSChvcHRuYW1lLCBsZXZlbCkgXFx1MDAyNlxcdTAwMjYgb3B0bGVuICE9IF9fU09fU0laRShvcHRuYW1lKSlcXG5AQCAtNzIyLDggKzcyMiwxMCBAQCBpbnQgdmNjX3NldHNvY2tvcHQoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcXG4gXFx0e1xcbiBcXHRcXHRzdHJ1Y3QgYXRtX3FvcyBxb3M7XFxuIFxcbi1cXHRcXHRpZiAoY29weV9mcm9tX3NvY2twdHIoXFx1MDAyNnFvcywgb3B0dmFsLCBzaXplb2YocW9zKSkpXFxuLVxcdFxcdFxcdHJldHVybiAtRUZBVUxUO1xcbitcXHRcXHRlcnJvciA9IGNvcHlfc2FmZV9mcm9tX3NvY2twdHIoXFx1MDAyNnFvcywgc2l6ZW9mKHFvcyksIG9wdHZhbCxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICAgIG9wdGxlbik7XFxuK1xcdFxcdGlmIChlcnJvcilcXG4rXFx0XFx0XFx0cmV0dXJuIGVycm9yO1xcbiBcXHRcXHRlcnJvciA9IGNoZWNrX3FvcyhcXHUwMDI2cW9zKTtcXG4gXFx0XFx0aWYgKGVycm9yKVxcbiBcXHRcXHRcXHRyZXR1cm4gZXJyb3I7XFxuQEAgLTczNyw4ICs3MzksMTAgQEAgaW50IHZjY19zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXFxuIFxcdFxcdHJldHVybiAwO1xcbiBcXHR9XFxuIFxcdGNhc2UgU09fU0VUQ0xQOlxcbi1cXHRcXHRpZiAoY29weV9mcm9tX3NvY2twdHIoXFx1MDAyNnZhbHVlLCBvcHR2YWwsIHNpemVvZih2YWx1ZSkpKVxcbi1cXHRcXHRcXHRyZXR1cm4gLUVGQVVMVDtcXG4rXFx0XFx0ZXJyb3IgPSBjb3B5X3NhZmVfZnJvbV9zb2NrcHRyKFxcdTAwMjZ2YWx1ZSwgc2l6ZW9mKHZhbHVlKSwgb3B0dmFsLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgICAgb3B0bGVuKTtcXG4rXFx0XFx0aWYgKGVycm9yKVxcbitcXHRcXHRcXHRyZXR1cm4gZXJyb3I7XFxuIFxcdFxcdGlmICh2YWx1ZSlcXG4gXFx0XFx0XFx0dmNjLVxcdTAwM2VhdG1fb3B0aW9ucyB8PSBBVE1fQVRNT1BUX0NMUDtcXG4gXFx0XFx0ZWxzZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNjozMDozOC4zMjQ0NjM3MTRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMDEwOTc1NTczNDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQVRNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmNjX3NldHNvY2tvcHRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQVRNIHNvY2tldCBvcHRpb24gaGFuZGxpbmcgaW4gdmNjX3NldHNvY2tvcHQsIGNoYW5naW5nIHRoZSB0eXBlIG9mIGEgdmFyaWFibGUgYW5kIHVzaW5nIGNvcHlfc2FmZV9mcm9tX3NvY2twdHIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBuZXR3b3JrIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGE0OWY4OTAxMzViOTRkZWQxMDA2MmI5ZWFiYWE5ZWVjYzQ1NzkxYzRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyA1IDE2OjMwOjM0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2F0bS9jb21tb24uYyBiL25ldC9hdG0vY29tbW9uLmNcbmluZGV4IGM3ZjkyNDA1ZGFmMDUuLjgxMTk1NzI3ZmExOGIgMTAwNjQ0XG4tLS0gYS9uZXQvYXRtL2NvbW1vbi5jXG4rKysgYi9uZXQvYXRtL2NvbW1vbi5jXG5AQCAtNzEwLDcgKzcxMCw3IEBAIGludCB2Y2Nfc2V0c29ja29wdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLFxuIFx0XHQgICBzb2NrcHRyX3Qgb3B0dmFsLCB1bnNpZ25lZCBpbnQgb3B0bGVuKVxuIHtcbiBcdHN0cnVjdCBhdG1fdmNjICp2Y2M7XG4tXHR1bnNpZ25lZCBsb25nIHZhbHVlO1xuK1x0aW50IHZhbHVlO1xuIFx0aW50IGVycm9yO1xuIFxuIFx0aWYgKF9fU09fTEVWRUxfTUFUQ0gob3B0bmFtZSwgbGV2ZWwpIFx1MDAyNlx1MDAyNiBvcHRsZW4gIT0gX19TT19TSVpFKG9wdG5hbWUpKVxuQEAgLTcyMiw4ICs3MjIsMTAgQEAgaW50IHZjY19zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXG4gXHR7XG4gXHRcdHN0cnVjdCBhdG1fcW9zIHFvcztcbiBcbi1cdFx0aWYgKGNvcHlfZnJvbV9zb2NrcHRyKFx1MDAyNnFvcywgb3B0dmFsLCBzaXplb2YocW9zKSkpXG4tXHRcdFx0cmV0dXJuIC1FRkFVTFQ7XG4rXHRcdGVycm9yID0gY29weV9zYWZlX2Zyb21fc29ja3B0cihcdTAwMjZxb3MsIHNpemVvZihxb3MpLCBvcHR2YWwsXG4rXHRcdFx0XHRcdCAgICAgICBvcHRsZW4pO1xuK1x0XHRpZiAoZXJyb3IpXG4rXHRcdFx0cmV0dXJuIGVycm9yO1xuIFx0XHRlcnJvciA9IGNoZWNrX3FvcyhcdTAwMjZxb3MpO1xuIFx0XHRpZiAoZXJyb3IpXG4gXHRcdFx0cmV0dXJuIGVycm9yO1xuQEAgLTczNyw4ICs3MzksMTAgQEAgaW50IHZjY19zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXG4gXHRcdHJldHVybiAwO1xuIFx0fVxuIFx0Y2FzZSBTT19TRVRDTFA6XG4tXHRcdGlmIChjb3B5X2Zyb21fc29ja3B0cihcdTAwMjZ2YWx1ZSwgb3B0dmFsLCBzaXplb2YodmFsdWUpKSlcbi1cdFx0XHRyZXR1cm4gLUVGQVVMVDtcbitcdFx0ZXJyb3IgPSBjb3B5X3NhZmVfZnJvbV9zb2NrcHRyKFx1MDAyNnZhbHVlLCBzaXplb2YodmFsdWUpLCBvcHR2YWwsXG4rXHRcdFx0XHRcdCAgICAgICBvcHRsZW4pO1xuK1x0XHRpZiAoZXJyb3IpXG4rXHRcdFx0cmV0dXJuIGVycm9yO1xuIFx0XHRpZiAodmFsdWUpXG4gXHRcdFx0dmNjLVx1MDAzZWF0bV9vcHRpb25zIHw9IEFUTV9BVE1PUFRfQ0xQO1xuIFx0XHRlbHNlXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNjozMDozOC4zMjQ0NjUzNTRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1OTQ2NDgyMTM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQVRNIE5ldHdvcmsgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmV0L2F0bS9jb21tb24uY2AuIEl0IGxvb2tzIGxpa2Ugd2UgaGF2ZSBzb21lIHVwZGF0ZXMgdG8gdGhlIGB2Y2Nfc2V0c29ja29wdGAgZnVuY3Rpb24uIFNwZWNpZmljYWxseSwgaXQgc2VlbXMgbGlrZSB0aGV5J3ZlIGNoYW5nZWQgdGhlIHR5cGUgb2YgdGhlIGB2YWx1ZWAgYXJndW1lbnQgZm9yIHRoZSBgU09fU0VUQ0xQYCBzb2NrZXQgb3B0aW9uIGZyb20gYHVuc2lnbmVkIGxvbmdgIHRvIGBpbnRgLiBUaGF0J3MgaW50ZXJlc3RpbmcsIEknbGwgbmVlZCB0byBkaWcgaW50byB3aHkgdGhleSBtYWRlIHRoYXQgY2hhbmdlOyBwb3RlbnRpYWxseSByZWxhdGVkIHRvIGNsYW1waW5nIG9yIHR5cGUgc2FmZXR5LlxuXG5UaGUgcGF0Y2ggYWxzbyBpbnRyb2R1Y2VzIGBjb3B5X3NhZmVfZnJvbV9zb2NrcHRyYCBmb3IgYm90aCBgU09fQVRNUU9TYCBhbmQsIGFnYWluLCBgU09fU0VUQ0xQYC4gVGhhdCdzIGEgZ29vZCBzaWduIOKAkyB0aGF0IGZ1bmN0aW9uIHByb2JhYmx5IHByb3ZpZGVzIHNvbWUgZXh0cmEgcHJvdGVjdGlvbiBhZ2FpbnN0IGJ1ZmZlciBvdmVyZmxvd3Mgb3Igb3RoZXIgbWVtb3J5IGFjY2VzcyBpc3N1ZXMgd2hlbiBjb3B5aW5nIGRhdGEgZnJvbSB1c2VyIHNwYWNlLiBJJ2xsIG5lZWQgdG8gY29uZmlybSB0aGF0J3MgdGhlIGludGVuZGVkIHB1cnBvc2UsIGFuZCBhc3Nlc3MgdGhlIGRlZ3JlZSB0byB3aGljaCB0aGF0IGNoYW5nZSBhZmZlY3RzIHRoZSBleGlzdGluZyBjb2RlJ3MgbGV2ZWwgb2YgcHJvdGVjdGlvbi5cblxuRmlyc3QgdGhpbmdzIGZpcnN0LCBJJ2xsIHB1bGwgdXAgYG5ldC9hdG0vY29tbW9uLmNgIGFuZCB0YWtlIGEgbG9vayBhdCB0aGUgYHZjY19zZXRzb2Nrb3B0YCBpbXBsZW1lbnRhdGlvbiBkaXJlY3RseS4gVGhpcyBsb29rcyBmdW5jdGlvbmFsLlxuXG5Bc3N1bWluZyB0aGlzIGlzIGFsbCBwYXJ0IG9mIGEgY29uZmlndXJhdGlvbiB1c2luZyBgQ09ORklHX0FUTWAsIHRoZW4gdGhhdCBzZWVtcyBnb29kLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzM5LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQ3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTY6MzA6NDQuMjcwOTYwMzkzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2NzI5NDc4MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2Y2Nfc2V0c29ja29wdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYXRtL2NvbW1vbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9hdG0vY29tbW9uLmM9NjkyPXN0YXRpYyBpbnQgY2hlY2tfcW9zKGNvbnN0IHN0cnVjdCBhdG1fcW9zICpxb3MpXFxuLS1cXG5uZXQvYXRtL2NvbW1vbi5jLTcwOC1cXG5uZXQvYXRtL2NvbW1vbi5jOjcwOTppbnQgdmNjX3NldHNvY2tvcHQoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcXG5uZXQvYXRtL2NvbW1vbi5jLTcxMC1cXHRcXHQgICBzb2NrcHRyX3Qgb3B0dmFsLCB1bnNpZ25lZCBpbnQgb3B0bGVuKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNjozMDo0NC44MzgyNjAzNTRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjI1NTk2OTg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipFeGFtaW5pbmcgdGhlIEFUTSBLY29uZmlnKipcblxuUmlnaHQsIGxldCdzIGRpdmUgc3RyYWlnaHQgaW4uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIkxldCdzIGNoZWNrIHRoZSBLY29uZmlnIGZvciBBVE0uXCIgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIGFzc29jaWF0ZWQgd2l0aCB0aGUgQXN5bmNocm9ub3VzIFRyYW5zZmVyIE1vZGUgc3VwcG9ydCBpbiB0aGlzIHN5c3RlbS4gSSB3YW50IHRvIHNlZSBwcmVjaXNlbHkgaG93IGl0J3Mgc3RydWN0dXJlZCDigJMgd2hhdCBtb2R1bGVzIGFyZSBhdmFpbGFibGUsIGhvdyB0aGV5IGFyZSBpbnRlcmxpbmtlZCwgYW5kIHdoaWNoIGZlYXR1cmVzIGFyZSBlbmFibGVkIG9yIGRpc2FibGVkIGJ5IGRlZmF1bHQuIEknbSBsb29raW5nIGZvciB0aGUgc3VidGxlIGRldGFpbHMsIHRoZSBjb25kaXRpb25hbCBkZXBlbmRlbmNpZXMuIEZvciBleGFtcGxlLCBhcmUgd2UgdXNpbmcgYSBwYXJ0aWN1bGFyIFBIWSBpbnRlcmZhY2UsIG9yIGlzIHRoaXMgYXJjaGl0ZWN0dXJlLXNwZWNpZmljPyBBcmUgdGhlcmUgb3B0aW9ucyBmb3IgZGlmZmVyZW50IEFBTCBwcm90b2NvbHM/IEFuZCBvZiBjb3Vyc2UsIEknbSBjaGVja2luZyBmb3IgYW55IHBvdGVudGlhbCBjb25mbGljdHMgd2l0aCBvdGhlciBuZXR3b3JrIHN1YnN5c3RlbXMgb3IgbGVnYWN5IGRyaXZlcnMgdGhhdCBtaWdodCBiZSBsdXJraW5nLiBUaW1lIHRvIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzIGFuZCBhc3Nlc3MgdGhlIGtlcm5lbCdzIEFUTSBpbXBsZW1lbnRhdGlvbi4gSXQncyBhbGwgYWJvdXQgdmVyaWZ5aW5nIHdoYXQncyBhdmFpbGFibGUgYW5kIGhvdyBpdCdzIGNvbnRyb2xsZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4OTksIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNjozMDo0OC40NjM4NjAwNVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NTAwNDk1NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQVRNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9hdG0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvYXRtL0tjb25maWctNS1cXG5uZXQvYXRtL0tjb25maWc6Njpjb25maWcgQVRNXFxubmV0L2F0bS9LY29uZmlnLTctXFx0dHJpc3RhdGUgXFxcIkFzeW5jaHJvbm91cyBUcmFuc2ZlciBNb2RlIChBVE0pXFxcIlxcbi0tXFxubmV0L2F0bS9LY29uZmlnLTIxLVxcbm5ldC9hdG0vS2NvbmZpZzoyMjpjb25maWcgQVRNX0JSMjY4NFxcbm5ldC9hdG0vS2NvbmZpZy0yMy1cXHR0cmlzdGF0ZSBcXFwiUkZDMTQ4My8yNjg0IEJyaWRnZWQgcHJvdG9jb2xzXFxcIlxcbi0tXFxubmV0L2F0bS9LY29uZmlnLTMwLVxcbm5ldC9hdG0vS2NvbmZpZzozMTpjb25maWcgQVRNX0JSMjY4NF9JUEZJTFRFUlxcbm5ldC9hdG0vS2NvbmZpZy0zMi1cXHRib29sIFxcXCJQZXItVkMgSVAgZmlsdGVyIGtsdWRnZVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTY6MzA6NDguNTM4ODcwOTc0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY4MDQ2MjkxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBgdmNjX3NldHNvY2tvcHRgIENvbmZpZ3VyYXRpb24qKlxuXG5SaWdodCwgdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBpcyBgQVRNYC4gTXkgZm9jdXMgbmVlZHMgdG8gYmUgb24gdGhlIGB2Y2Nfc2V0c29ja29wdGAgZnVuY3Rpb24uIE5vdywgYSBrZXkgcXVlc3Rpb24gYXJpc2VzIGltbWVkaWF0ZWx5OiBpcyB0aGlzIGZ1bmN0aW9uIGV4cG9ydGVkPyBJIG5lZWQgdG8gcXVpY2tseSB2ZXJpZnkgdGhhdCBpdCdzIGFjY2Vzc2libGUuIElmIGB2Y2Nfc2V0c29ja29wdGAgaXNuJ3QgZXhwb3J0ZWQsIHRoZW4gbXkgaW52ZXN0aWdhdGlvbiB0YWtlcyBhIHZlcnkgZGlmZmVyZW50IHR1cm4sIHByb2JhYmx5IHJlcXVpcmluZyB0cmFjaW5nIGhvdyBpdCdzIGJlaW5nIGFjY2Vzc2VkIG9yIHBvdGVudGlhbGx5IGlmIEknbSBldmVuICptZWFudCogdG8gYmUgZGlyZWN0bHkgY29uY2VybmVkIHdpdGggaXQgYXQgdGhpcyBsZXZlbC4gTGV0J3MgY29uZmlybSB0aGUgZXhwb3J0IHN0YXR1cyBmaXJzdC4gVW5kZXJzdGFuZGluZyBpdHMgdmlzaWJpbGl0eSBpcyBjcnVjaWFsIHRvIGRldGVybWluaW5nIHRoZSBjb250ZXh0IG9mIHRoZSBpc3N1ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzMxNiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE2OjMwOjUyLjIxOTM0MDI4NVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MDY5Nzk1NCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhQT1JUX1NZTUJPTC4qdmNjX3NldHNvY2tvcHRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2F0bS9jb21tb24uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTY6MzA6NTIuMzEwMDQ3MDI5WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMwODExNjQyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkluaXRpYWwgQXNzZXNzbWVudDogRXhwb3J0ZWQgdnMuIFN0YXRpYyoqXG5cbkFscmlnaHQsIG15IGZpcnN0IHN0ZXAgaXMgYWx3YXlzIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgZnVuZGFtZW50YWxzLiBMZXQncyBhc3N1bWUgdGhlcmUncyBhIGZpbGUsIHN5c3RlbSwgb3IgZGF0YSBzdHJ1Y3R1cmUuIFRoZSBpbml0aWFsIHF1ZXN0aW9uIEknbSBhc2tpbmcgbXlzZWxmIGlzOiAqSXMgdGhpcyB0aGluZyBmdW5kYW1lbnRhbGx5ICdleHBvcnRlZCcgb3IgaXMgaXQgJ3N0YXRpYycgaW4gbmF0dXJlPyogVW5kZXJzdGFuZGluZyB0aGF0IHByaW1hcnkgZGlzdGluY3Rpb24gaXMgYWJzb2x1dGVseSBjcml0aWNhbCBiZWZvcmUgZGl2aW5nIGFueSBkZWVwZXIuIElzIHRoaXMgaW5mb3JtYXRpb24gYmVpbmcgZ2VuZXJhdGVkIGFuZCBkaXN0cmlidXRlZCBkeW5hbWljYWxseSwgaW4gcmVhbCB0aW1lIG9yIHZpYSBhbiBhdXRvbWF0ZWQgcHJvY2Vzcywgb3IgaXMgaXQgYSBmaXhlZCBhcnRpZmFjdCB0aGF0IGV4aXN0cyBpbiBhIHBhcnRpY3VsYXIgc3RhdGU/IFRoYXQgaGlnaC1sZXZlbCB1bmRlcnN0YW5kaW5nIHJlYWxseSBhZmZlY3RzIGV2ZXJ5dGhpbmcgdGhhdCBmb2xsb3dzLCBpbmNsdWRpbmcgbXkgYXNzdW1wdGlvbnMgYXJvdW5kIHBlcnNpc3RlbmNlLCBwb3RlbnRpYWwgZm9yIGNoYW5nZSwgdmVyc2lvbmluZywgYWNjZXNzIG1ldGhvZHMsIGFuZCBsaWtlbHkgdHJvdWJsZXNob290aW5nIHN0cmF0ZWdpZXMuIFdpdGhvdXQgbmFpbGluZyBkb3duIHRoZSBleHBvcnRlZC9zdGF0aWMgZGljaG90b215IHVwIGZyb250LCBJJ20ganVzdCBzcGlubmluZyBteSB3aGVlbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1NjUsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNjozMDo1Ni42MTgxNjY0MDhaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNzk2MDE0MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2Y2Nfc2V0c29ja29wdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYXRtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvYXRtL2NvbW1vbi5jPTY5Mj1zdGF0aWMgaW50IGNoZWNrX3Fvcyhjb25zdCBzdHJ1Y3QgYXRtX3FvcyAqcW9zKVxcbi0tXFxubmV0L2F0bS9jb21tb24uYy03MDgtXFxubmV0L2F0bS9jb21tb24uYzo3MDk6aW50IHZjY19zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXFxubmV0L2F0bS9jb21tb24uYy03MTAtXFx0XFx0ICAgc29ja3B0cl90IG9wdHZhbCwgdW5zaWduZWQgaW50IG9wdGxlbilcXG4tLVxcbm5ldC9hdG0vY29tbW9uLmg9MjI9aW50IHZjY19jb21wYXRfaW9jdGwoc3RydWN0IHNvY2tldCAqc29jaywgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpO1xcbm5ldC9hdG0vY29tbW9uLmg6MjM6aW50IHZjY19zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXFxubmV0L2F0bS9jb21tb24uaC0yNC1cXHRcXHQgICBzb2NrcHRyX3Qgb3B0dmFsLCB1bnNpZ25lZCBpbnQgb3B0bGVuKTtcXG4tLVxcbm5ldC9hdG0vcHZjLmM9NjU9c3RhdGljIGludCBwdmNfc2V0c29ja29wdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLFxcbi0tXFxubmV0L2F0bS9wdmMuYy03MS1cXHRsb2NrX3NvY2soc2spO1xcbm5ldC9hdG0vcHZjLmM6NzI6XFx0ZXJyb3IgPSB2Y2Nfc2V0c29ja29wdChzb2NrLCBsZXZlbCwgb3B0bmFtZSwgb3B0dmFsLCBvcHRsZW4pO1xcbm5ldC9hdG0vcHZjLmMtNzMtXFx0cmVsZWFzZV9zb2NrKHNrKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTY6MzA6NTYuNzI2MTMyNDgxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwNTcyMzYxNzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGFuIGV4cGVydCBpbiB0aGUgZmllbGQ6XG5cbioqSW50ZXJuYWwgQXVkaXQgLSBTb2NrZXQgT3B0aW9uIFVzYWdlKipcblxuUmlnaHQsIHNvIEknbSBtZW50YWxseSB0cmFjaW5nIHRocm91Z2ggdGhlIGNvZGUgYW5kIEkgc2VlIHRoYXQgdGhlIGZ1bmN0aW9uIGBwdmNfc2V0c29ja29wdGAgaXMgdXNpbmcgc29ja2V0IG9wdGlvbiBtYW5pcHVsYXRpb24uIE1ha2VzIHNlbnNlLCB0aGF0J3Mgd2hhdCB0aGUgbmFtZSBzdWdnZXN0cy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIG9rYXksIHdoYXQgb3B0aW9ucyBhcmUgdGhleSBzZXR0aW5nPyBXaGF0J3MgdGhlIGNvbnRleHQ/IEFueSBwb3RlbnRpYWwgc2VjdXJpdHkgaW1wbGljYXRpb25zIEkgbmVlZCB0byBjb25zaWRlcj8gSXMgdGhpcyBzdGFuZGFyZCBwcmFjdGljZSwgb3Igc29tZXRoaW5nIG1vcmUgc3BlY2lhbGl6ZWQ/IEkgbmVlZCB0byBkaWcgZGVlcGVyIGluIHRoYXQgZnVuY3Rpb24uXG5cbkFuZCB0aGVuLCBJIHJlY2FsbCBzZWVpbmcgYHN2Y19zZXRzb2Nrb3B0YCBtZW50aW9uZWQsIGxpa2VseSByZWxhdGVkIHRvIHRoZSBTZXJ2aWNlIG9yIFNlcnZlciBzaWRlIG9mIHRoZSBwcm9jZXNzLiBIbW0sIGFnYWluLCBzYW1lIHF1ZXN0aW9ucyBhcmlzZS4gSXMgdGhlIHNhbWUgb3B0aW9ucyBiZWluZyBzZXQ/IEFyZSB0aGV5IHJlbGF0ZWQ/IEFyZSB0aGVyZSBhbnkgcG90ZW50aWFsIGRlcGVuZGVuY2llcyBiZXR3ZWVuIHRoZW0uIEknbGwgaGF2ZSB0byBtYWtlIHN1cmUgYm90aCBvZiB0aGVzZSBhcmUgaW4gdGhlIHNhbWUgc2NvcGUgb2YgdGhpcyBhdWRpdC4gSSdtIGdvaW5nIHRvIG5vdGUgdGhvc2UgdHdvIGZ1bmN0aW9ucyBzcGVjaWZpY2FsbHksIGBwdmNfc2V0c29ja29wdGAgYW5kIGBzdmNfc2V0c29ja29wdGAuIEknbGwgaGF2ZSB0byB0aG9yb3VnaGx5IHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgaG93IHRoZSBzb2NrZXQgb3B0aW9ucyBhcmUgYmVpbmcgdXNlZCBpbiAqYm90aCogcGxhY2VzIHRvIGJlIGNvbmZpZGVudCBhYm91dCBldmVyeXRoaW5nIGluIHRoaXMgaW52ZXN0aWdhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDExOCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE2OjMxOjAwLjc4MzM3MjkyN1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njg4MTc1NTYsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZjY19zZXRzb2Nrb3B0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9hdG0vc3ZjLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE2OjMxOjAwLjg1MjIwMDYwM1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDAxOTA0MTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBjb2RlOlxuXG4qKkNoZWNraW5nIGBzZXRzb2Nrb3B0YCBpbiBgbmV0L2F0bS9zdmMuY2AqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgQVRNIFNWQyBjb25uZWN0aW9ucyBoYW5kbGUgc29ja2V0IG9wdGlvbnMuIE15IGZpcnN0IGluc3RpbmN0LCBhcyBhbHdheXMsIGlzIHRvIGRpdmUgc3RyYWlnaHQgaW50byB0aGUgcmVsZXZhbnQgc291cmNlIGNvZGUuIExldCdzIHN0YXJ0IHdpdGggYG5ldC9hdG0vc3ZjLmNgLiBUaGlzIGlzIHdoZXJlIEkgd291bGQgKmV4cGVjdCogdG8gZmluZCB0aGUgY29yZSBTVkMgZnVuY3Rpb25hbGl0eSwgYW5kIGNvbnNlcXVlbnRseSwgd2hlcmUgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBzZXRzb2Nrb3B0YCBmb3IgdGhlc2Ugc29ja2V0cyBzaG91bGQgcmVzaWRlLCBpZiBpdCBleGlzdHMuIEtub3dpbmcgd2hlcmUgdGhlIHJlbGV2YW50IHN0cnVjdHVyZXMgYW5kIGZ1bmN0aW9ucyBhcmUgZGVmaW5lZCB3aWxsIGJlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBjb25uZWN0aW9uLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIGhvdyBzb2NrZXQgb3B0aW9ucyBhcmUgcGFyc2VkLCBoYW5kbGVkLCBhbmQgdWx0aW1hdGVseSwgYXBwbGllZCBvciByZWplY3RlZCB3aXRoaW4gdGhlIEFUTSBTVkMgY29udGV4dC4gVGhpcyBpcyB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCBkaWdnaW5nIGZvciB0aGUgYW5zd2VycyBJIG5lZWQsIG9yIHRvIGZpbmQgb3V0IGlmIHRoZSBmdW5jdGlvbmFsaXR5IGlzbid0IGltcGxlbWVudGVkIGFuZCB0aGUgb3B0aW9uIGlzIGJlaW5nIGRlbGVnYXRlZCBlbHNld2hlcmUuIExldCdzIHNlZSB3aGF0IHdlIGNhbiBmaW5kIVxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDQxLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTY6MzE6MDQuODU0MTA5MDkyWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MzgwMDY5NCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2V0c29ja29wdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYXRtL3N2Yy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNjozMTowNC45Mzc5MTc2NDZaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg3NzY1OTUxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlLiBNeSBtaW5kJ3MgYnV6emluZyBhIGJpdCwgZm9jdXNpbmcgaW4gb24gdGhpcyBsaW5lIG9mIHRob3VnaHQuLi5cblxuKipBIFF1aWNrIERvdWJsZS1UYWtlKipcblxuV2FpdCBhIHNlY29uZC4uLiBgdmNjX3NldHNvY2tvcHRgPyAqVGhhdCogaXMgZXhwb3J0ZWQ/IEkgbWVhbiwgSSBrbm93IHRoZSBnZW5lcmFsIGFyY2hpdGVjdHVyZSwgSSd2ZSB3b3JrZWQgd2l0aCBzaW1pbGFyIHN5c3RlbXMgYmVmb3JlLCBidXQgSSdtIGp1c3QgcXVpY2tseSB0cnlpbmcgdG8gZ3Jhc3AgdGhlIGltcGxpY2F0aW9ucyBoZXJlLiBJdCdzIG5vdCBzb21ldGhpbmcgeW91IHR5cGljYWxseSBzZWUgZXhwb3NlZCBhdCB0aGF0IGxldmVsIG9mIGFic3RyYWN0aW9uLCBpcyBpdD8gVXN1YWxseSwgdGhlcmUncyBhIGxheWVyIG9yIHR3byBvZiBpbmRpcmVjdGlvbiwgcHJvdGVjdGluZyB0aGUgdW5kZXJseWluZyBzb2NrZXQgbWFuaXB1bGF0aW9uLiBUaGlzIGNvdWxkIG1lYW4gYSBmZXcgdGhpbmdzIGRlcGVuZGluZyBvbiB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscyBhbmQgdGhlIG92ZXJhbGwgZGVzaWduLiBMZXQgbWUgY29uc2lkZXIgdGhlIGNvbnRleHQuLi4gT2theSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgKndoeSogaXQncyBleHBvcnRlZCBhbmQgd2hhdCBpdCBtZWFucyBmb3Igc2VjdXJpdHksIHBvcnRhYmlsaXR5LCBhbmQgbWFpbnRhaW5hYmlsaXR5LiBNeSBleHBlcnRpc2UgZGVtYW5kcyBJIGRlbHZlIGRlZXBlciBpbnRvIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ3MDgsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNjozMTowOC44MTU1ODAxODRaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNTcwODA1MiwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhQT1JUX1NZTUJPTC4qdmNjX3NldHNvY2tvcHRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2F0bS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE2OjMxOjA4LjkzMTI5NjMwN1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzczOTkwMDE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCB3ZW50OlxuXG4qKkV4YW1pbmluZyB0aGUgQVRNIEtlcm5lbCBNb2R1bGUncyBTeW1ib2wgRXhwb3J0KipcblxuT2theSwgc28gSSBuZWVkIHRvIHRyYWNrIGRvd24gaG93IHRoZXNlIHN5bWJvbHMgYXJlIGJlaW5nIG1hZGUgYXZhaWxhYmxlIGZvciB1c2UuIEdpdmVuIG15IGV4cGVyaWVuY2UsIHRoZSBmaXJzdCBwbGFjZSBJJ2QgbG9vayBpcyB0aGUgaGVhcnQgb2YgdGhlIEFUTSBzdWJzeXN0ZW0sIHNvIGBuZXQvYXRtL2NvbW1vbi5jYCBpcyB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludC4gVGhlIHNwZWNpZmljIGtleXdvcmQgSSdtIGh1bnRpbmcgZm9yIGlzIGBFWFBPUlRfU1lNQk9MYC4gSXQncyB0aGUgc3RhbmRhcmQgbWFjcm8gdXNlZCBpbiB0aGUgTGludXgga2VybmVsIHRvIGV4cGxpY2l0bHkgZXhwb3NlIGEgZnVuY3Rpb24gb3IgdmFyaWFibGUgdG8gb3RoZXIgbW9kdWxlcy4gSSdtIGVzc2VudGlhbGx5IGxvb2tpbmcgdG8gc2VlIHdoaWNoLCBpZiBhbnksIGVsZW1lbnRzIGluIHRoaXMgY29yZSBmaWxlIGFyZSBiZWluZyBkZWNsYXJlZCBhcyBleHRlcm5hbGx5IHZpc2libGUuIFRoaXMgd2lsbCBnaXZlIG1lIGEgY3JpdGljYWwgdW5kZXJzdGFuZGluZyBvZiB0aGUgbW9kdWxlJ3MgaW50ZXJmYWNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTQ2LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTY6MzE6MTIuNzA1MjkxNzEyWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4ODY4Nzg3NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJFWFBPUlRfU1lNQk9MXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9hdG0vY29tbW9uLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2F0bS9jb21tb24uYz0zND1zdHJ1Y3QgaGxpc3RfaGVhZCB2Y2NfaGFzaFtWQ0NfSFRBQkxFX1NJWkVdO1xcbm5ldC9hdG0vY29tbW9uLmM6MzU6RVhQT1JUX1NZTUJPTCh2Y2NfaGFzaCk7XFxubmV0L2F0bS9jb21tb24uYy0zNi1cXG5uZXQvYXRtL2NvbW1vbi5jPTM3PURFRklORV9SV0xPQ0sodmNjX3NrbGlzdF9sb2NrKTtcXG5uZXQvYXRtL2NvbW1vbi5jOjM4OkVYUE9SVF9TWU1CT0wodmNjX3NrbGlzdF9sb2NrKTtcXG5uZXQvYXRtL2NvbW1vbi5jLTM5LVxcbi0tXFxubmV0L2F0bS9jb21tb24uYz01MD12b2lkIHZjY19pbnNlcnRfc29ja2V0KHN0cnVjdCBzb2NrICpzaylcXG4tLVxcbm5ldC9hdG0vY29tbW9uLmMtNTUtfVxcbm5ldC9hdG0vY29tbW9uLmM6NTY6RVhQT1JUX1NZTUJPTCh2Y2NfaW5zZXJ0X3NvY2tldCk7XFxubmV0L2F0bS9jb21tb24uYy01Ny1cXG4tLVxcbm5ldC9hdG0vY29tbW9uLmM9MjA5PXZvaWQgdmNjX3JlbGVhc2VfYXN5bmMoc3RydWN0IGF0bV92Y2MgKnZjYywgaW50IHJlcGx5KVxcbi0tXFxubmV0L2F0bS9jb21tb24uYy0yMTctfVxcbm5ldC9hdG0vY29tbW9uLmM6MjE4OkVYUE9SVF9TWU1CT0wodmNjX3JlbGVhc2VfYXN5bmMpO1xcbm5ldC9hdG0vY29tbW9uLmMtMjE5LVxcbm5ldC9hdG0vY29tbW9uLmM9MjIwPXZvaWQgdmNjX3Byb2Nlc3NfcmVjdl9xdWV1ZShzdHJ1Y3QgYXRtX3ZjYyAqdmNjKVxcbi0tXFxubmV0L2F0bS9jb21tb24uYy0yMzctfVxcbm5ldC9hdG0vY29tbW9uLmM6MjM4OkVYUE9SVF9TWU1CT0wodmNjX3Byb2Nlc3NfcmVjdl9xdWV1ZSk7XFxubmV0L2F0bS9jb21tb24uYy0yMzktXFxubmV0L2F0bS9jb21tb24uYz0yNDA9dm9pZCBhdG1fZGV2X3NpZ25hbF9jaGFuZ2Uoc3RydWN0IGF0bV9kZXYgKmRldiwgY2hhciBzaWduYWwpXFxuLS1cXG5uZXQvYXRtL2NvbW1vbi5jLTI1NC19XFxubmV0L2F0bS9jb21tb24uYzoyNTU6RVhQT1JUX1NZTUJPTChhdG1fZGV2X3NpZ25hbF9jaGFuZ2UpO1xcbm5ldC9hdG0vY29tbW9uLmMtMjU2LVxcbm5ldC9hdG0vY29tbW9uLmM9MjU3PXZvaWQgYXRtX2Rldl9yZWxlYXNlX3ZjY3Moc3RydWN0IGF0bV9kZXYgKmRldilcXG4tLVxcbm5ldC9hdG0vY29tbW9uLmMtMjc3LX1cXG5uZXQvYXRtL2NvbW1vbi5jOjI3ODpFWFBPUlRfU1lNQk9MKGF0bV9kZXZfcmVsZWFzZV92Y2NzKTtcXG5uZXQvYXRtL2NvbW1vbi5jLTI3OS1cXG4tLVxcbm5ldC9hdG0vY29tbW9uLmM9Nzk4PWludCByZWdpc3Rlcl9hdG1kZXZpY2Vfbm90aWZpZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYilcXG4tLVxcbm5ldC9hdG0vY29tbW9uLmMtODAxLX1cXG5uZXQvYXRtL2NvbW1vbi5jOjgwMjpFWFBPUlRfU1lNQk9MX0dQTChyZWdpc3Rlcl9hdG1kZXZpY2Vfbm90aWZpZXIpO1xcbm5ldC9hdG0vY29tbW9uLmMtODAzLVxcbm5ldC9hdG0vY29tbW9uLmM9ODA0PXZvaWQgdW5yZWdpc3Rlcl9hdG1kZXZpY2Vfbm90aWZpZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYilcXG4tLVxcbm5ldC9hdG0vY29tbW9uLmMtODA3LX1cXG5uZXQvYXRtL2NvbW1vbi5jOjgwODpFWFBPUlRfU1lNQk9MX0dQTCh1bnJlZ2lzdGVyX2F0bWRldmljZV9ub3RpZmllcik7XFxubmV0L2F0bS9jb21tb24uYy04MDktXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE2OjMxOjEyLjc5Mzk4ODcxNloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzU2MDA1ODY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgdGhlIFNjb3BlIG9mIGB2Y2Nfc2V0c29ja29wdGAqKlxuXG5Pa2F5LCBzbyBgdmNjX3NldHNvY2tvcHRgIGlzbid0IGEgcHVibGljbHkgZXhwb3J0ZWQgc3ltYm9sLCB3aGljaCBpbW1lZGlhdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3QuIEl0IHNlZW1zIGl0J3MgdXNlZCBpbnRlcm5hbGx5LiBJIHJlY2FsbCBzZWVpbmcgaXQgaW4gYG5ldC9hdG0vcHZjLmNgLCBidXQgdGhlcmUncyBhIG5hZ2dpbmcgZmVlbGluZyBpdCBtaWdodCBwb3AgdXAgaW4gYG5ldC9hdG0vc3ZjLmNgIGFzIHdlbGwuIFNpbmNlIEkgY2FuJ3QgZGlyZWN0bHkgY2FsbCBpdCBmcm9tIGVsc2V3aGVyZSwgSSBuZWVkIHRvIGtub3cgd2hlcmUgaXQgaXMgYmVpbmcgdXNlZC4gTGV0J3Mgc3RhcnQgd2l0aCBhIGZvY3VzZWQgY2hlY2sgb24gYG5ldC9hdG0vc3ZjLmNgIHRvIGNvbmZpcm0gb3IgZGVueSB0aGF0IHN1c3BpY2lvbi4gRmluZGluZyBpdHMgdXNhZ2Ugd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgaXRzIGxvY2FsIHNpZ25pZmljYW5jZSB3aXRoaW4gdGhhdCBzdWJzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4NzEsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNjozMToxNi41NDk5OTcxNTJaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkyMTMyNTQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZjY19zZXRzb2Nrb3B0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9hdG0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9hdG0vY29tbW9uLmM9NjkyPXN0YXRpYyBpbnQgY2hlY2tfcW9zKGNvbnN0IHN0cnVjdCBhdG1fcW9zICpxb3MpXFxuLS1cXG5uZXQvYXRtL2NvbW1vbi5jLTcwOC1cXG5uZXQvYXRtL2NvbW1vbi5jOjcwOTppbnQgdmNjX3NldHNvY2tvcHQoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcXG5uZXQvYXRtL2NvbW1vbi5jLTcxMC1cXHRcXHQgICBzb2NrcHRyX3Qgb3B0dmFsLCB1bnNpZ25lZCBpbnQgb3B0bGVuKVxcbi0tXFxubmV0L2F0bS9jb21tb24uaD0yMj1pbnQgdmNjX2NvbXBhdF9pb2N0bChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZyk7XFxubmV0L2F0bS9jb21tb24uaDoyMzppbnQgdmNjX3NldHNvY2tvcHQoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcXG5uZXQvYXRtL2NvbW1vbi5oLTI0LVxcdFxcdCAgIHNvY2twdHJfdCBvcHR2YWwsIHVuc2lnbmVkIGludCBvcHRsZW4pO1xcbi0tXFxubmV0L2F0bS9wdmMuYz02NT1zdGF0aWMgaW50IHB2Y19zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXFxuLS1cXG5uZXQvYXRtL3B2Yy5jLTcxLVxcdGxvY2tfc29jayhzayk7XFxubmV0L2F0bS9wdmMuYzo3MjpcXHRlcnJvciA9IHZjY19zZXRzb2Nrb3B0KHNvY2ssIGxldmVsLCBvcHRuYW1lLCBvcHR2YWwsIG9wdGxlbik7XFxubmV0L2F0bS9wdmMuYy03My1cXHRyZWxlYXNlX3NvY2soc2spO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNjozMToxNi42NDIxMzY3NzZaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ4MjU0NTc1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodDpcblxuKipEaXZpbmcgaW50byB0aGUgQ29kZSoqXG5cbk15IGltbWVkaWF0ZSB0aG91Z2h0LCB3aGVuIGNvbnNpZGVyaW5nIHRoZSBjdXJyZW50IHRhc2ssIGlzIHRvIHpvb20gaW4gb24gYHN2Yy5jYC4gSXQncyBhIGtleSBmaWxlLCBhbmQgSSBuZWVkIHRvIGRldGVybWluZSBpdHMgcmVsZXZhbmNlLiBJcyB0aGlzIHRoZSByaWdodCBwbGFjZSB0byBzdGFydCBsb29raW5nPyBEb2VzIGl0IGNvbnRhaW4gdGhlIGNvcmUgbG9naWMgSSdtIGludGVyZXN0ZWQgaW4/IFdoYXQgZGVwZW5kZW5jaWVzIGRvZXMgaXQgaGF2ZT8gSSBuZWVkIHRvIHF1aWNrbHkgYXNzZXNzIGlmIGBzdmMuY2AgaXMgdGhlIGxpbmNocGluIG9yIGlmIEkgbmVlZCB0byByZWRpcmVjdCBteSBhdHRlbnRpb24gZWxzZXdoZXJlLiBMZXQncyBzZWUgd2hhdCB3ZSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjQzMywiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTY6MzE6MjAuMTI0Njg1MTQxWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NTQ4NjM3NCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2V0c29ja29wdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYXRtL3N2Yy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNjozMToyMC4yMjAxODA5NTVaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc3OTY3MjIyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnksIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBgc2V0c29ja29wdGAgaW4gdGhlIEFUTSBTVkMgQ29kZSoqXG5cbk9rYXksIHRpbWUgdG8gZGlnIGluLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgYHNldHNvY2tvcHRgIGlzIGJlaW5nIHVzZWQgd2l0aGluIHRoZSBBVE0gU2VydmljZSBDaGFubmVsIGNvZGUuIFNwZWNpZmljYWxseSwgSSdtIHRoaW5raW5nIGFib3V0IHRoZSBpbXBsaWNhdGlvbnMgZm9yIFttZW50aW9uIHlvdXIgc3BlY2lmaWMgYXJlYSBvZiBleHBlcnRpc2UgLSBlLmcuLCBRb1MsIHNpZ25hbGluZywgZXRjLl0uIFNvLCB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCBpcyBgbmV0L2F0bS9zdmMuY2AuIEkgZXhwZWN0IHRvIGZpbmQgdGhlIHN0YW5kYXJkIHNvY2tldCBvcHRpb25zIGJlaW5nIGNvbmZpZ3VyZWQgdGhlcmUsIGJ1dCBJJ20gYWxzbyBpbnRlcmVzdGVkIGluIGFueSBBVE0tc3BlY2lmaWMgb3B0aW9ucy4gSSdsbCBiZSBsb29raW5nIGZvciBwb3RlbnRpYWwgYXJlYXMgb2YgY29uY2VybiByZWdhcmRpbmcgW21lbnRpb24gc3BlY2lmaWMgY29uY2VybiwgZS5nLiwgcmVzb3VyY2UgYWxsb2NhdGlvbiwgZXJyb3IgaGFuZGxpbmcsIGV0Yy5dLiBJJ2xsIHdhbnQgdG8gc2VlIGhvdyB0aGV5IGFyZSBoYW5kbGluZyB0aGUgb3B0aW9uIGxlbmd0aCBjaGVja3MgdG9vLCBhbmQgaG93IGl0IGlzIHVzZWQgd2l0aCB0aGUgc2lnbmFsaW5nIGxheWVyLiBJIGFudGljaXBhdGUgdGhhdCB0aGlzIHdpbGwgYmUgYSBxdWljayBpbnZlc3RpZ2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NjAzLCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTY6MzE6MjMuOTk5ODU3MTU5WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTIzNzE4NjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2V0c29ja29wdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYXRtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvYXRtL2NvbW1vbi5jPTY5Mj1zdGF0aWMgaW50IGNoZWNrX3Fvcyhjb25zdCBzdHJ1Y3QgYXRtX3FvcyAqcW9zKVxcbi0tXFxubmV0L2F0bS9jb21tb24uYy03MDgtXFxubmV0L2F0bS9jb21tb24uYzo3MDk6aW50IHZjY19zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXFxubmV0L2F0bS9jb21tb24uYy03MTAtXFx0XFx0ICAgc29ja3B0cl90IG9wdHZhbCwgdW5zaWduZWQgaW50IG9wdGxlbilcXG4tLVxcbm5ldC9hdG0vY29tbW9uLmg9MjI9aW50IHZjY19jb21wYXRfaW9jdGwoc3RydWN0IHNvY2tldCAqc29jaywgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpO1xcbm5ldC9hdG0vY29tbW9uLmg6MjM6aW50IHZjY19zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXFxubmV0L2F0bS9jb21tb24uaC0yNC1cXHRcXHQgICBzb2NrcHRyX3Qgb3B0dmFsLCB1bnNpZ25lZCBpbnQgb3B0bGVuKTtcXG4tLVxcbm5ldC9hdG0vcHZjLmM9NTk9c3RhdGljIGludCBwdmNfY29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHJfdW5zaXplZCAqc29ja2FkZHIsXFxuLS1cXG5uZXQvYXRtL3B2Yy5jLTY0LVxcbm5ldC9hdG0vcHZjLmM6NjU6c3RhdGljIGludCBwdmNfc2V0c29ja29wdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLFxcbm5ldC9hdG0vcHZjLmMtNjYtXFx0XFx0XFx0ICBzb2NrcHRyX3Qgb3B0dmFsLCB1bnNpZ25lZCBpbnQgb3B0bGVuKVxcbi0tXFxubmV0L2F0bS9wdmMuYy03MS1cXHRsb2NrX3NvY2soc2spO1xcbm5ldC9hdG0vcHZjLmM6NzI6XFx0ZXJyb3IgPSB2Y2Nfc2V0c29ja29wdChzb2NrLCBsZXZlbCwgb3B0bmFtZSwgb3B0dmFsLCBvcHRsZW4pO1xcbm5ldC9hdG0vcHZjLmMtNzMtXFx0cmVsZWFzZV9zb2NrKHNrKTtcXG4tLVxcbm5ldC9hdG0vcHZjLmM9MTA2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHB2Y19wcm90b19vcHMgPSB7XFxuLS1cXG5uZXQvYXRtL3B2Yy5jLTEyMy1cXHQuc2h1dGRvd24gPVxcdHB2Y19zaHV0ZG93bixcXG5uZXQvYXRtL3B2Yy5jOjEyNDpcXHQuc2V0c29ja29wdCA9XFx0cHZjX3NldHNvY2tvcHQsXFxubmV0L2F0bS9wdmMuYy0xMjUtXFx0LmdldHNvY2tvcHRfaXRlciA9IHB2Y19nZXRzb2Nrb3B0LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNjozMToyNC4xMTIyMzY2MjJaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUxODE1NTQ1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgcmVuZGVyZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipEaXZpbmcgaW50byB0aGUgYHN2Yy5jYCBTb2NrZXQgT3B0aW9ucyoqXG5cblJpZ2h0LCBzbyBgc3ZjLmNgIGlzIGNhbGxpbmcgYHN2Y19zZXRzb2Nrb3B0YCwgaXMgaXQ/IEludGVyZXN0aW5nLiBUaGF0IGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdC4gTXkgbmV4dCB0aG91Z2h0IGlzIHRvIGp1bXAgcmlnaHQgaW4gYW5kIGV4YW1pbmUgdGhlIGBzdmMuY2AgYHByb3RvX29wc2AuIFRoYXQncyB3aGVyZSBJJ2xsIGZpbmQgdGhlIG1lYXQgb2YgaG93IHRoaXMgc29ja2V0IG9wdGlvbiBpcyBiZWluZyBoYW5kbGVkLCB0aGUgdW5kZXJseWluZyBzdHJ1Y3R1cmUuIEknbSBndWVzc2luZyB0aGVyZSdzIGEgc3BlY2lmaWMgcmVhc29uIHdoeSB0aGV5J3JlIHVzaW5nIGBzdmNfc2V0c29ja29wdGAgYW5kIEkgbmVlZCB0byBzZWUgd2hhdCdzIGhhcHBlbmluZyB1bmRlciB0aGUgaG9vZC4gVGltZSB0byBkaWcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjczNTAsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNjozMToyNy42MzAzOTQwNjNaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY4MTg2NzQ2LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwcm90b19vcHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2F0bS9zdmMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTY6MzE6MjcuNjk4NTg5Njk5WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxNDU3MDk1NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipgc3ZjLmNgIGFuZCBgcHJvdG9fb3BzYDogQSBRdWljayBNZW50YWwgQ2hlY2sqKlxuXG5Pa2F5LCBgc3ZjLmNgLi4uIGltbWVkaWF0ZWx5IG15IG1pbmQganVtcHMgdG8gdGhlIG5ldHdvcmsgc2VydmljZSBjb2RlLCBsaWtlbHkgdGhlIGNvcmUgb2YgdGhlIHNlcnZpY2UgaGFuZGxpbmcuIFNwZWNpZmljYWxseSwgbXkgYnJhaW4gbGF0Y2hlcyBvbnRvIFwicHJvdG9fb3BzXCIuIFRoYXQncyBpbnRlcmVzdGluZywgYW5kIHF1aXRlIHRlbGxpbmcuIE15IGJyYWluIGlzIGFscmVhZHkgc3RhcnRpbmcgdG8gcGllY2UgdG9nZXRoZXIgdGhlIGltcGxpY2F0aW9ucy4gYHByb3RvX29wc2AgdHlwaWNhbGx5IGltcGxpZXMgYSBzdHJ1Y3R1cmUgb3Igc2V0IG9mIGZ1bmN0aW9uIHBvaW50ZXJzIHVzZWQgdG8gYWJzdHJhY3QgYW5kIGVuY2Fwc3VsYXRlIHByb3RvY29sLXNwZWNpZmljIG9wZXJhdGlvbnMgd2l0aGluIHRoZSBuZXR3b3JrIHNlcnZpY2UgZnJhbWV3b3JrLiBTbywgbXkgaW5pdGlhbCB0aG91Z2h0IGlzOiB0aGlzIGlzIGFib3V0IHByb3RvY29sIGhhbmRsaW5nICp3aXRoaW4qIHRoZSBzZXJ2aWNlIGl0c2VsZiwgbm90IGp1c3QgdGhlIGdlbmVyaWMgc2VydmljZSBmcmFtZXdvcmsuIEFtIEkgcmlnaHQgaW4gdGhpbmtpbmcgdGhpcyBpcyBwYXJ0IG9mIGEgbGFyZ2VyLCBmbGV4aWJsZSBkZXNpZ24/IElzIHRoaXMgd2hlcmUgSSBjYW4gZmluZCB0aGUgY29ubmVjdGlvbi1oYW5kbGluZyBsb2dpYywgZGF0YSBzZXJpYWxpemF0aW9uL2Rlc2VyaWFsaXphdGlvbiwgYW5kIHBlcmhhcHMgYXV0aGVudGljYXRpb24gb3Igc2VjdXJpdHktcmVsYXRlZCBzdHVmZj8gV2hhdCBwcm90b2NvbHMgaXMgaXQgc3VwcG9ydGluZz8gVGltZSB0byBkaXZlIGluLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc1NzYsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNjozMTozMS44NDQzMDE3NzlaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1MDExMDM5MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwcm90b19vcHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2F0bS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2F0bS9jb21tb24uYy05LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9rbW9kLmhcXHUwMDNlXFxubmV0L2F0bS9jb21tb24uYzoxMDojaW5jbHVkZSBcXHUwMDNjbGludXgvbmV0LmhcXHUwMDNlXFx0XFx0Lyogc3RydWN0IHNvY2tldCwgc3RydWN0IHByb3RvX29wcyAqL1xcbm5ldC9hdG0vY29tbW9uLmMtMTEtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2F0bS5oXFx1MDAzZVxcdFxcdC8qIEFUTSBzdHVmZiAqL1xcbi0tXFxubmV0L2F0bS9pb2N0bC5jLTEwLSNpbmNsdWRlIFxcdTAwM2NsaW51eC9rbW9kLmhcXHUwMDNlXFxubmV0L2F0bS9pb2N0bC5jOjExOiNpbmNsdWRlIFxcdTAwM2NsaW51eC9uZXQuaFxcdTAwM2VcXHRcXHQvKiBzdHJ1Y3Qgc29ja2V0LCBzdHJ1Y3QgcHJvdG9fb3BzICovXFxubmV0L2F0bS9pb2N0bC5jLTEyLSNpbmNsdWRlIFxcdTAwM2NsaW51eC9hdG0uaFxcdTAwM2VcXHRcXHQvKiBBVE0gc3R1ZmYgKi9cXG4tLVxcbm5ldC9hdG0vcHZjLmMtNi1cXG5uZXQvYXRtL3B2Yy5jOjc6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L25ldC5oXFx1MDAzZVxcdFxcdC8qIHN0cnVjdCBzb2NrZXQsIHN0cnVjdCBwcm90b19vcHMgKi9cXG5uZXQvYXRtL3B2Yy5jLTgtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2F0bS5oXFx1MDAzZVxcdFxcdC8qIEFUTSBzdHVmZiAqL1xcbi0tXFxubmV0L2F0bS9wdmMuYz04OT1zdGF0aWMgaW50IHB2Y19nZXRuYW1lKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkciAqc29ja2FkZHIsXFxuLS1cXG5uZXQvYXRtL3B2Yy5jLTEwNS1cXG5uZXQvYXRtL3B2Yy5jOjEwNjpzdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBwdmNfcHJvdG9fb3BzID0ge1xcbm5ldC9hdG0vcHZjLmMtMTA3LVxcdC5mYW1pbHkgPVxcdFBGX0FUTVBWQyxcXG4tLVxcbm5ldC9hdG0vcHZjLmM9MTMyPXN0YXRpYyBpbnQgcHZjX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBwcm90b2NvbCxcXG4tLVxcbm5ldC9hdG0vcHZjLmMtMTM3LVxcbm5ldC9hdG0vcHZjLmM6MTM4OlxcdHNvY2stXFx1MDAzZW9wcyA9IFxcdTAwMjZwdmNfcHJvdG9fb3BzO1xcbm5ldC9hdG0vcHZjLmMtMTM5LVxcdHJldHVybiB2Y2NfY3JlYXRlKG5ldCwgc29jaywgcHJvdG9jb2wsIFBGX0FUTVBWQywga2Vybik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE2OjMxOjMyLjM5NDQxNzcxMloiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTM1NjI0MDk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKk5hdmlnYXRpbmcgdGhlIEFUTSBTZXJ2aWNlIENvZGUqKlxuXG5BbHJpZ2h0LCBzbyB3ZSdyZSBkZWFsaW5nIHdpdGggdGhlIGBzdmMuY2AgZmlsZSBhbmQgaXRzIGFzc29jaWF0aW9uIHdpdGggYFBGX0FUTVNWQ2AuIFJpZ2h0LCBtYWtlcyBzZW5zZS4gTm93LCBteSBmaXJzdCBtb3ZlIGlzIGFsd2F5cyB0byBkaXZlIGluIHRoZXJlIGFuZCBzZWUgd2hhdCB3ZSdyZSB3b3JraW5nIHdpdGggaW4gdGVybXMgb2YgdGhlIHNlcnZpY2UncyBwcm90b2NvbCBvcGVyYXRpb25zLiBNeSBpbnR1aXRpb24gc3VnZ2VzdHMgdGhhdCB3ZSdsbCBiZSBsb29raW5nIGZvciBgc3ZjX3Byb3RvX29wc2AsIG9yIG1heWJlIGp1c3Qgc29tZSBgb3BzYCBzdHJ1Y3Qgd2l0aGluIHRoZSBmaWxlLiBJdCdzIGEgcHJldHR5IHN0YW5kYXJkIGNvbnZlbnRpb24sIHNvIHRoYXQncyB3aGVyZSBJJ2xsIGZvY3VzIG15IGluaXRpYWwgc2Nhbi4gRmluZGluZyB0aGF0IHdpbGwgZ2l2ZSBtZSBhIGdvb2QgaGFuZGxlIG9uIGhvdyB0aGUgQVRNIHNlcnZpY2UgaXRzZWxmIGlzIGhhbmRsaW5nIGRpZmZlcmVudCBvcGVyYXRpb25zLCBhbmQgd2hhdCB0aGUga2V5IGludGVyZmFjZXMgYXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MjcyLCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTY6MzE6MzUuOTMwMDQ5MDExWiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDc1ODgyNjksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm9wc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYXRtL3N2Yy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNjozMTozNi4yMzc2NDU3MDFaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDk5NDUyNTAzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkRpdmluZyBpbnRvIGBuZXQvYXRtL3N2Yy5jYCoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZGlnIGluLiBUaGUgdGFzayBhdCBoYW5kIGxpa2VseSByZXF1aXJlcyBtZSB0byB1bmRlcnN0YW5kIHNvbWV0aGluZyBhYm91dCB0aGUgQVRNIHNlcnZpY2UgbGF5ZXIgd2l0aGluIHRoZSBrZXJuZWwuIFRvIGRvIHRoYXQsIEkgbmVlZCB0byBnZXQgaW50aW1hdGVseSBmYW1pbGlhciB3aXRoIHRoZSBjb2RlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBjaGVjayB0aGUgY29udGVudHMgb2YgYG5ldC9hdG0vc3ZjLmNgLiBJIGV4cGVjdCB0byBmaW5kIHRoZSBjb3JlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBBVE0gc2VydmljZSBpbnRlcmZhY2UgaGVyZTogaG93IGl0IGhhbmRsZXMgY29ubmVjdGlvbiBzZXR1cCwgZGF0YSB0cmFuc21pc3Npb24sIHNpZ25hbGluZywgYW5kIGVycm9yIGhhbmRsaW5nLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRoZSBmdW5kYW1lbnRhbCBkYXRhIHN0cnVjdHVyZXMsIGZ1bmN0aW9uIGNhbGxzLCBhbmQgY29udHJvbCBmbG93IHRoYXQgZGVmaW5lIHRoZSBBVE0gc2VydmljZSdzIGJlaGF2aW9yIHdpdGhpbiB0aGUgbmV0d29yayBzdGFjay4gSSdsbCBiZSBtZW50YWxseSBwYXJzaW5nIHRoZSBjb2RlIGFuZCBjcm9zcy1yZWZlcmVuY2luZyB0aGlzIG1vZHVsZSB3aXRoIG90aGVyIHJlbGF0ZWQgb25lcywgbGlrZSB0aGUgQVRNIGRldmljZSBkcml2ZXJzIGFuZCB0aGUgQVRNIGxheWVyIGl0c2VsZiB0byBnYWluIGEgaG9saXN0aWMgdmlldyBvZiB0aGUgZnVuY3Rpb25hbGl0eSBhbmQgaXRzIGRlcGVuZGVuY2llcy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODUyMSwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE2OjMxOjQxLjIzMjE3NDEyM1oiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjAzMjI0ODE2LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJQRl9BVE1TVkNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2F0bS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE2OjMxOjQxLjQzNTQwNjcwOVoiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzk2MTM0NzkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipBIFF1aWNrIENvZGUgTG9jYXRpb24gQ2hlY2sqKlxuXG5Pa2F5LCBzbyBJJ20ganVzdCBxdWlja2x5IHRyeWluZyB0byBqb2cgbXkgbWVtb3J5Li4uIEkgY291bGQgaGF2ZSBzd29ybiBJIHNhdyBzb21ldGhpbmcgYWJvdXQgdGhlIEFUTSBzZXJ2aWNlIGFuZCB3YXMganVzdCB0cnlpbmcgdG8gcmVtZW1iZXIgd2hlcmUgSSBsYXN0IHNhdyB0aGUgY29kZSBmb3IgYFBGX0FUTVNWQ2AuICBXYWl0IGEgbWludXRlLCBpc24ndCB0aGF0IGZ1bmN0aW9uYWxpdHkgYWN0dWFsbHkgaW1wbGVtZW50ZWQgaW4gYG5ldC9hdG0vc3ZjLmNgPyBHb29kLCB0aGF0J3Mgd2hlcmUgSSBuZWVkIHRvIGJlLiBJIGtuZXcgaXQgd2FzIHNvbWV3aGVyZSBpbiB0aGF0IG5ldHdvcmtpbmcgc3Vic3lzdGVtLiBMZXQgbWUgZ28gZG91YmxlIGNoZWNrIG15IGFzc3VtcHRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NzY4LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTY6MzE6NDQuODMxNTQzNzIxWiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTQ5MzYyMTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiUEZfQVRNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9hdG0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9hdG0vY29tbW9uLmM9ODU2PU1PRFVMRV9MSUNFTlNFKFxcXCJHUExcXFwiKTtcXG5uZXQvYXRtL2NvbW1vbi5jOjg1NzpNT0RVTEVfQUxJQVNfTkVUUFJPVE8oUEZfQVRNUFZDKTtcXG4tLVxcbm5ldC9hdG0vcHJvYy5jPTMxNz1pbnQgX19pbml0IGF0bV9wcm9jX2luaXQodm9pZClcXG4tLVxcbm5ldC9hdG0vcHJvYy5jLTMyMy1cXHRwcm9jX2NyZWF0ZV9zZXFfcHJpdmF0ZShcXFwicHZjXFxcIiwgMDQ0NCwgYXRtX3Byb2Nfcm9vdCwgXFx1MDAyNnB2Y19zZXFfb3BzLFxcbm5ldC9hdG0vcHJvYy5jOjMyNDpcXHRcXHRcXHRzaXplb2Yoc3RydWN0IHZjY19zdGF0ZSksICh2b2lkICopKHVpbnRwdHJfdClQRl9BVE1QVkMpO1xcbm5ldC9hdG0vcHJvYy5jLTMyNS1cXHRwcm9jX2NyZWF0ZV9zZXFfcHJpdmF0ZShcXFwidmNcXFwiLCAwNDQ0LCBhdG1fcHJvY19yb290LCBcXHUwMDI2dmNjX3NlcV9vcHMsXFxuLS1cXG5uZXQvYXRtL3B2Yy5jPTEwNj1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBwdmNfcHJvdG9fb3BzID0ge1xcbm5ldC9hdG0vcHZjLmM6MTA3OlxcdC5mYW1pbHkgPVxcdFBGX0FUTVBWQyxcXG5uZXQvYXRtL3B2Yy5jLTEwOC1cXHQub3duZXIgPVxcdFRISVNfTU9EVUxFLFxcbi0tXFxubmV0L2F0bS9wdmMuYz0xMzI9c3RhdGljIGludCBwdmNfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2tldCAqc29jaywgaW50IHByb3RvY29sLFxcbi0tXFxubmV0L2F0bS9wdmMuYy0xMzgtXFx0c29jay1cXHUwMDNlb3BzID0gXFx1MDAyNnB2Y19wcm90b19vcHM7XFxubmV0L2F0bS9wdmMuYzoxMzk6XFx0cmV0dXJuIHZjY19jcmVhdGUobmV0LCBzb2NrLCBwcm90b2NvbCwgUEZfQVRNUFZDLCBrZXJuKTtcXG5uZXQvYXRtL3B2Yy5jLTE0MC19XFxuLS1cXG5uZXQvYXRtL3B2Yy5jPTE0Mj1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9wcm90b19mYW1pbHkgcHZjX2ZhbWlseV9vcHMgPSB7XFxubmV0L2F0bS9wdmMuYzoxNDM6XFx0LmZhbWlseSA9IFBGX0FUTVBWQyxcXG5uZXQvYXRtL3B2Yy5jLTE0NC1cXHQuY3JlYXRlID0gcHZjX2NyZWF0ZSxcXG4tLVxcbm5ldC9hdG0vcHZjLmM9MTU5PXZvaWQgYXRtcHZjX2V4aXQodm9pZClcXG5uZXQvYXRtL3B2Yy5jLTE2MC17XFxubmV0L2F0bS9wdmMuYzoxNjE6XFx0c29ja191bnJlZ2lzdGVyKFBGX0FUTVBWQyk7XFxubmV0L2F0bS9wdmMuYy0xNjItfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNjozMTo0NS4zMjY0ODU5NTdaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTMzMDc4MDk3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipOYXZpZ2F0aW5nIHRoZSBBVE0gU3Vic3lzdGVtIFNvdXJjZSBDb2RlKipcblxuUmlnaHQsIHNvIEknbSBsb29raW5nIGF0IHRoaXMgZnVuY3Rpb24gb3IgZGF0YSBzdHJ1Y3R1cmUsIGxldCdzIGNhbGwgaXQgYHN2Y2AsIGFuZCBJIHNlZSB0aGUgZmlsZSBwYXRoIGBuZXQvYXRtL3N2Yy5jYC4gSG1tLCBhIHF1aWNrIG1lbnRhbCBjaGVjayBjb25maXJtcyB0aGF0J3MgbGlrZWx5ICp3aXRoaW4qIHRoZSBBVE0gKEFzeW5jaHJvbm91cyBUcmFuc2ZlciBNb2RlKSBzdWJzeXN0ZW0sIGEgY3JpdGljYWwgcGllY2Ugb2Yga2VybmVsIG5ldHdvcmtpbmcuIE5vdywgdG8gZ2V0IG15IGJlYXJpbmdzIGFuZCB1bmRlcnN0YW5kIHRoZSB3aWRlciBjb250ZXh0LCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBjb25maXJtIHRoZSBsb2NhdGlvbi4gSSdsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgbmV0L2F0bWAgaXMgaW5kZWVkIHRoZSByb290IGRpcmVjdG9yeSBmb3IgdGhpcyBhcmVhIG9mIHRoZSBjb2RlIGJhc2UuIEknbGwgbWVudGFsbHkgYnJvd3NlIHRoZSBkaXJlY3Rvcnkgc3RydWN0dXJlLCBpZiBJIGNhbiBmaW5kIGl0IHBoeXNpY2FsbHkgdGhhdCBpcy4gSSdtIGFscmVhZHkgdmlzdWFsaXppbmcgdGhlIGV4cGVjdGVkIGxheW91dCB3aXRoaW4gdGhlIGZpbGVzeXN0ZW0uIFRoaXMgaXMgYSB2ZXJ5IGNvbW1vbiBwYXR0ZXJuLCBidXQgaXQncyBhbHdheXMgZ29vZCB0byBxdWlja2x5IGNvbmZpcm0gdGhlIGFzc3VtcHRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NDg4LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTY6MzE6NTAuNjU3MjcxMTQ3WiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImNvZGVzZWFyY2gtZGlyLWluZGV4IiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTE1MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJEaXJcIjogXCJuZXQvYXRtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJGaWxlc1wiOiBbXG4gICAgXCJhdG1fbWlzYy5jXCIsXG4gICAgXCJhdG1fc3lzZnMuY1wiLFxuICAgIFwiYnIyNjg0LmNcIixcbiAgICBcImNvbW1vbi5jXCIsXG4gICAgXCJjb21tb24uaFwiLFxuICAgIFwiaW9jdGwuY1wiLFxuICAgIFwicHBwb2F0bS5jXCIsXG4gICAgXCJwcm9jLmNcIixcbiAgICBcInByb3RvY29scy5oXCIsXG4gICAgXCJwdmMuY1wiLFxuICAgIFwicmF3LmNcIixcbiAgICBcInJlc291cmNlcy5jXCIsXG4gICAgXCJyZXNvdXJjZXMuaFwiXG4gIF0sXG4gIFwiU3ViZGlyc1wiOiBudWxsXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNjozMTo1MC42NTczNjQ4MzdaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDIzMDk4NTM1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipOYXZpZ2F0aW5nIHRoZSBBVE0gRmlsZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBmb3IgYHN2Yy5jYCwgYnV0IGl0J3MgYXBwYXJlbnRseSBub3QgcHJlc2VudC4gSW50ZXJlc3RpbmcuIEluc3RlYWQsIEknbSBzZWVpbmcgYHB2Yy5jYCwgYHJhdy5jYCwgYGJyMjY4NC5jYCwgYW5kIGBwcHBvYXRtLmNgLiBHaXZlbiB3aGF0IEknbSB0cnlpbmcgdG8gYWNoaWV2ZSwgdGhhdCdzIHVzZWZ1bCBjb250ZXh0LiBJJ2xsIG5lZWQgdG8gcmVtZW1iZXIgdGhlIGxheW91dCBvZiB0aGVzZSBmaWxlcyBnb2luZyBmb3J3YXJkIGFzIHRoZSBuYW1pbmcgY29udmVudGlvbiBpcyBub3QgYXMgSSBleHBlY3RlZC5cblxuTm93LCBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgaG93IGBzZXRzb2Nrb3B0YCBpcyB1c2VkLiBJJ2xsIGZvY3VzIG15IHNlYXJjaCBvbiB0aGUgYG5ldC9hdG0vYCBkaXJlY3RvcnkuIFRoYXQncyB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCBkaWdnaW5nIGludG8gdGhlIEFUTS1zcGVjaWZpYyBzb2NrZXQgb3B0aW9ucyBhbmQgaG93IHRoZXkncmUgaGFuZGxlZC4gTGV0J3Mgc2VlIHdoYXQgd2UgZmluZCB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6OTg0MywiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU4LCJUb29sQ2FsbHMiOlsiY29kZXNlYXJjaC1kaXItaW5kZXgiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNjozMTo1NC44ODgzNTUzNzFaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcxNjgwOTI1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNldHNvY2tvcHRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2F0bS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2F0bS9jb21tb24uYz02OTI9c3RhdGljIGludCBjaGVja19xb3MoY29uc3Qgc3RydWN0IGF0bV9xb3MgKnFvcylcXG4tLVxcbm5ldC9hdG0vY29tbW9uLmMtNzA4LVxcbm5ldC9hdG0vY29tbW9uLmM6NzA5OmludCB2Y2Nfc2V0c29ja29wdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLFxcbm5ldC9hdG0vY29tbW9uLmMtNzEwLVxcdFxcdCAgIHNvY2twdHJfdCBvcHR2YWwsIHVuc2lnbmVkIGludCBvcHRsZW4pXFxuLS1cXG5uZXQvYXRtL2NvbW1vbi5oPTIyPWludCB2Y2NfY29tcGF0X2lvY3RsKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKTtcXG5uZXQvYXRtL2NvbW1vbi5oOjIzOmludCB2Y2Nfc2V0c29ja29wdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLFxcbm5ldC9hdG0vY29tbW9uLmgtMjQtXFx0XFx0ICAgc29ja3B0cl90IG9wdHZhbCwgdW5zaWduZWQgaW50IG9wdGxlbik7XFxuLS1cXG5uZXQvYXRtL3B2Yy5jPTU5PXN0YXRpYyBpbnQgcHZjX2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyX3Vuc2l6ZWQgKnNvY2thZGRyLFxcbi0tXFxubmV0L2F0bS9wdmMuYy02NC1cXG5uZXQvYXRtL3B2Yy5jOjY1OnN0YXRpYyBpbnQgcHZjX3NldHNvY2tvcHQoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcXG5uZXQvYXRtL3B2Yy5jLTY2LVxcdFxcdFxcdCAgc29ja3B0cl90IG9wdHZhbCwgdW5zaWduZWQgaW50IG9wdGxlbilcXG4tLVxcbm5ldC9hdG0vcHZjLmMtNzEtXFx0bG9ja19zb2NrKHNrKTtcXG5uZXQvYXRtL3B2Yy5jOjcyOlxcdGVycm9yID0gdmNjX3NldHNvY2tvcHQoc29jaywgbGV2ZWwsIG9wdG5hbWUsIG9wdHZhbCwgb3B0bGVuKTtcXG5uZXQvYXRtL3B2Yy5jLTczLVxcdHJlbGVhc2Vfc29jayhzayk7XFxuLS1cXG5uZXQvYXRtL3B2Yy5jPTEwNj1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBwdmNfcHJvdG9fb3BzID0ge1xcbi0tXFxubmV0L2F0bS9wdmMuYy0xMjMtXFx0LnNodXRkb3duID1cXHRwdmNfc2h1dGRvd24sXFxubmV0L2F0bS9wdmMuYzoxMjQ6XFx0LnNldHNvY2tvcHQgPVxcdHB2Y19zZXRzb2Nrb3B0LFxcbm5ldC9hdG0vcHZjLmMtMTI1LVxcdC5nZXRzb2Nrb3B0X2l0ZXIgPSBwdmNfZ2V0c29ja29wdCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTY6MzE6NTQuOTYwMDQyNTM2WiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgxMTk0NzkxOTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBTY29wZSBvZiBhIE5ldHdvcmsgQVRNIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdHJhY2luZyBob3cgaXQgaW1wYWN0cyB0aGUgYEFUTWAgY29uZmlndXJhdGlvbiBpbiB0aGUga2VybmVsLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgdmNjX3NldHNvY2tvcHRgIGlzIGNhbGxlZCBmcm9tIGBwdmNfc2V0c29ja29wdGAuIEkga25vdyB0aGF0IGBwdmNfc2V0c29ja29wdGAgcmVzaWRlcyBpbiBgbmV0L2F0bS9wdmMuY2AsIGFuZCB0aGUgcGF0Y2ggc3BlY2lmaWNhbGx5IG1vZGlmaWVzIGB2Y2Nfc2V0c29ja29wdGAuIFRoaXMgY2xlYXJseSBwb2ludHMgdG8gYSBmdW5jdGlvbmFsIGNoYW5nZSByZWxhdGVkIHRvIGhvdyBzb2NrZXQgb3B0aW9ucyBhcmUgc2V0IHdpdGhpbiB0aGUgQVRNIGNvbnRleHQuXG5cbk15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBpZGVudGlmeSB0aGUga2V5IGZvY3VzIHN5bWJvbCwgYW5kIGl0J3MgcHJldHR5IGNsZWFyIHRoYXQgaXQncyBgdmNjX3NldHNvY2tvcHRgLiBOb3csIGlzIGl0IGV4cG9ydGVkPyBIbW1tLCBubywgaXQncyBub3QgZXhwb3J0ZWQuIEJ1dCB3YWl0LCBpdCdzIGFsc28gKm5vdCogc3RhdGljLCBzbyBpdCAqZG9lcyogaGF2ZSBhIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzLiBPa2F5LCBJIHdhcyBsb29raW5nIGluIHRoZSB3cm9uZyBwbGFjZSBlYXJsaWVyLCBgdmNjX3NldHNvY2tvcHRgIGlzIGFjdHVhbGx5IGluIGBuZXQvYXRtL2NvbW1vbi5jYCwgYW5kIGl0IGlzICpub3QqIGRlY2xhcmVkIHN0YXRpYyEgVGhhdCdzIGNydWNpYWwuIFRoaXMgbWVhbnMgaXQncyBhdmFpbGFibGUgZm9yIHBvdGVudGlhbCBsaW5raW5nIGZyb20gZWxzZXdoZXJlLCB3aGljaCBzdHJlbmd0aGVucyBpdHMgaW1wb3J0YW5jZSBhcyBhIHN5bWJvbCB0byBpbnZlc3RpZ2F0ZS5cblxuU2luY2UgYHZjY19zZXRzb2Nrb3B0YCBpcyB0aGUgcmVhbCB0YXJnZXQgaGVyZSwgbGV0J3MganVzdCBjb25maXJtIHRoYXQgYHB2Y19zZXRzb2Nrb3B0YCBpcyBhY3R1YWxseSBzdGF0aWMuIE9rYXksIHllcywgaXQgKmlzKiBzdGF0aWMuIFRoaXMgZnVydGhlciB2YWxpZGF0ZXMgdGhhdCB0aGUgY29yZSBjaGFuZ2UgcmV2b2x2ZXMgYXJvdW5kIGB2Y2Nfc2V0c29ja29wdGAuIFNvLCBJJ20gY29uZmlkZW50IHRoYXQgdGhpcyBpcyBhIGdvb2Qgc3ltYm9sIHRvIGZvY3VzIG9uIHdoZW4gcmV2aWV3aW5nIHRoaXMgcGF0Y2guXG5cblJpZ2h0LCB0aGUgbWFpbiBjb25maWcgaXMgYEFUTWAuIEp1c3QgdG8gYmUgc2FmZSwgSSdsbCBxdWlja2x5IGNoZWNrIGBuZXQvYXRtL0tjb25maWdgIGFnYWluIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJ3QgYW55IG90aGVyIGRlcGVuZGVudCBjb25maWdzIHRoYXQgYXJlIG5lZWRlZCwganVzdCB0byBiZSB0aG9yb3VnaC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA2MDIsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTY6MzI6MDMuMDc5NTI1Mjc4WiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODA4Mjk1NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQVRNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9hdG0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvYXRtL0tjb25maWctNS1cXG5uZXQvYXRtL0tjb25maWc6Njpjb25maWcgQVRNXFxubmV0L2F0bS9LY29uZmlnLTctXFx0dHJpc3RhdGUgXFxcIkFzeW5jaHJvbm91cyBUcmFuc2ZlciBNb2RlIChBVE0pXFxcIlxcbi0tXFxubmV0L2F0bS9LY29uZmlnLTIxLVxcbm5ldC9hdG0vS2NvbmZpZzoyMjpjb25maWcgQVRNX0JSMjY4NFxcbm5ldC9hdG0vS2NvbmZpZy0yMy1cXHR0cmlzdGF0ZSBcXFwiUkZDMTQ4My8yNjg0IEJyaWRnZWQgcHJvdG9jb2xzXFxcIlxcbi0tXFxubmV0L2F0bS9LY29uZmlnLTMwLVxcbm5ldC9hdG0vS2NvbmZpZzozMTpjb25maWcgQVRNX0JSMjY4NF9JUEZJTFRFUlxcbm5ldC9hdG0vS2NvbmZpZy0zMi1cXHRib29sIFxcXCJQZXItVkMgSVAgZmlsdGVyIGtsdWRnZVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTY6MzI6MDMuMTQ3NjEyNjYzWiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMzI5MzAxNjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgaG93IEknZCBhcHByb2FjaCB0aGlzIHRhc2ssIGFzIGlmIHRoZXNlIHdlcmUgbXkgaW50ZXJuYWwgdGhvdWdodHM6XG5cbioqQ2hlY2tpbmcgRGVwZW5kZW5jaWVzIGZvciBBVE0gaW4gdGhlIEtlcm5lbCBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzIGZvciBBVE0gc3VwcG9ydCBpbiB0aGlzIGtlcm5lbC4gVGhlIGZpcnN0IHBsYWNlIHRvIGNoZWNrIGlzIHVzdWFsbHkgdGhlIGBLY29uZmlnYCBmaWxlIGluIHRoZSByZWxldmFudCBzdWJzeXN0ZW0gZGlyZWN0b3J5LiBJbiB0aGlzIGNhc2UsIHRoYXQncyBgbmV0L2F0bS9LY29uZmlnYC4gSSBhbHJlYWR5IGtub3cgdGhlIHVzdWFsIGxvY2F0aW9ucywgYW5kIHRoaXMgcGF0aCBzZWVtcyBsb2dpY2FsLiBMb29raW5nIGF0IHRoaXMgYEtjb25maWdgIGZpbGUgd2lsbCBxdWlja2x5IHRlbGwgbWUgd2hpY2ggb3RoZXIgZmVhdHVyZXMsIGhhcmR3YXJlIGRyaXZlcnMsIG9yIGtlcm5lbCBvcHRpb25zIGFyZSByZXF1aXJlZCB0byBlbmFibGUgb3IgdXNlIHRoZSBBVE0gZnVuY3Rpb25hbGl0eS4gS25vd2luZyB0aGVzZSBkZXBlbmRlbmNpZXMgaXMgY3J1Y2lhbCBmb3IgYSBjbGVhbiBhbmQgZWZmaWNpZW50IGtlcm5lbCBjb25maWd1cmF0aW9uIGFuZCB1bmRlcnN0YW5kaW5nIHRoZSBpbnRlcmFjdGlvbiBvZiBkaWZmZXJlbnQgY29tcG9uZW50cyBpbiB0aGUgbmV0d29yayBzdGFjay4gSXQgYWxzbyBoZWxwcyBpbiBkZWJ1Z2dpbmcgcG90ZW50aWFsIGlzc3VlcyBsYXRlciBvbiwgbWFraW5nIHN1cmUgdGhhdCBhbGwgdGhlIG5lY2Vzc2FyeSBidWlsZGluZyBibG9ja3MgYXJlIGluIHBsYWNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTQwOSwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE2OjMyOjA3LjI4MDU0NjU2NVoiLCJTZXEiOjQyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjY0MTU4NDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVwZW5kcyBvblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYXRtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2F0bS9LY29uZmlnPTIyPWNvbmZpZyBBVE1fQlIyNjg0XFxubmV0L2F0bS9LY29uZmlnLTIzLVxcdHRyaXN0YXRlIFxcXCJSRkMxNDgzLzI2ODQgQnJpZGdlZCBwcm90b2NvbHNcXFwiXFxubmV0L2F0bS9LY29uZmlnOjI0OlxcdGRlcGVuZHMgb24gQVRNIFxcdTAwMjZcXHUwMDI2IElORVRcXG5uZXQvYXRtL0tjb25maWctMjUtXFx0aGVscFxcbi0tXFxubmV0L2F0bS9LY29uZmlnPTMxPWNvbmZpZyBBVE1fQlIyNjg0X0lQRklMVEVSXFxubmV0L2F0bS9LY29uZmlnLTMyLVxcdGJvb2wgXFxcIlBlci1WQyBJUCBmaWx0ZXIga2x1ZGdlXFxcIlxcbm5ldC9hdG0vS2NvbmZpZzozMzpcXHRkZXBlbmRzIG9uIEFUTV9CUjI2ODRcXG5uZXQvYXRtL0tjb25maWctMzQtXFx0aGVscFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxNjozMjowNy4zNDY5NjcxM1oiLCJTZXEiOjQzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTM1Njc3OTM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyBBVE0gQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGUgS2NvbmZpZyBmaWxlIGZvciBBVE0sIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGBuZXQvYXRtYCBkaXJlY3RvcnkuIE15IGluaXRpYWwgdGhvdWdodCBpcywgXCJIbW0sIEFUTSBkb2Vzbid0IHNlZW0gdG8gaGF2ZSBhbnkgZGlyZWN0IGRlcGVuZGVuY2llcyBkZWZpbmVkIGluIGl0cyBvd24gYEtjb25maWdgIGZpbGUuXCIgVGhhdCdzIGEgbGl0dGxlIHVudXN1YWwsIHNvIGxldCdzIGRpZyBkZWVwZXIuIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBjaGVjayB0aGUgcGFyZW50IGBuZXQvS2NvbmZpZ2AgZmlsZS4gSSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGUgYEFUTWAgc3ltYm9sIGlzIHNvdXJjZWQgb3IgY29uZGl0aW9uYWxseSBpbmNsdWRlZCBmcm9tIHRoYXQgaGlnaGVyLWxldmVsIGNvbmZpZ3VyYXRpb24uIEtub3dpbmcgdGhpcyB3aWxsIGNsYXJpZnkgaG93IGFuZCB3aGVyZSBgQVRNYCBpcyBjb250cm9sbGVkIHdpdGhpbiB0aGUgb3ZlcmFsbCBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gY29udGV4dC4gVW5kZXJzdGFuZGluZyB0aGlzIHNvdXJjaW5nIHJlbGF0aW9uc2hpcCBpcyBrZXkgdG8gZnVsbHkgZ3Jhc3AgaXRzIGludGVncmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTgwOSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE2OjMyOjEyLjI4MjY0ODUwNloiLCJTZXEiOjQ0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njc0NjMyMzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic291cmNlIFxcXCJuZXQvYXRtL0tjb25maWdcXFwiXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9LY29uZmlnPTI1Nj1zb3VyY2UgXFxcIm5ldC90aXBjL0tjb25maWdcXFwiXFxubmV0L0tjb25maWc6MjU3OnNvdXJjZSBcXFwibmV0L2F0bS9LY29uZmlnXFxcIlxcbm5ldC9LY29uZmlnLTI1OC1zb3VyY2UgXFxcIm5ldC9sMnRwL0tjb25maWdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE2OjMyOjEyLjM1MDExOTM0MVoiLCJTZXEiOjQ1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2OTA5MjU2MTIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEFUTSBTb2NrZXQgT3B0aW9uIENoYW5nZSoqXG5cbk9rYXksIHNvIGl0IGxvb2tzIGxpa2UgdGhlIEFUTSBjb25maWd1cmF0aW9uIGlzIHRoZSBvbmx5IG9uZSBJIG5lZWQgdG8gY29uc2lkZXIgaGVyZS4gTXkgZm9jYWwgcG9pbnQgaXMgZGVmaW5pdGVseSBgdmNjX3NldHNvY2tvcHRgLiBUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgYnVnIGluIGhvdyBgdmNjX3NldHNvY2tvcHRgIGhhbmRsZXMgc29ja2V0IG9wdGlvbnMsIHNwZWNpZmljYWxseSBieSBjaGFuZ2luZyBhIHZhcmlhYmxlIGZyb20gYHVuc2lnbmVkIGxvbmdgIHRvIGBpbnRgIGFuZCBpbXBsZW1lbnRpbmcgYGNvcHlfc2FmZV9mcm9tX3NvY2twdHJgIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgcmVsYXRlZCB0byBBVE0gc29ja2V0IG9wdGlvbnMsIG5vdCBqdXN0IGEgY29zbWV0aWMgZml4LlxuXG5Ob3csIHRvIG1ha2Ugc3VyZSB0aGlzIGlzIGFjdHVhbGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLCBJIG5lZWQgdG8gY29uZmlybSB0aGF0IGB2Y2Nfc2V0c29ja29wdGAgaXMgcmVhY2hhYmxlLiBZZXMsIGl0IGxvb2tzIGxpa2UgaXQgaXMuIEJhc2VkIG9uIG15IHVuZGVyc3RhbmRpbmcgb2YgQVRNIGFuZCBzb2NrZXQgQVBJcywgaXQgaXMgYWNjZXNzaWJsZSB2aWEgYHNldHNvY2tvcHRgIG9uIGFuIEFUTSBQVkMgc29ja2V0LiBJIGNhbiBzZWUgdGhlIHBhdGg6IGBzb2NrZXQoUEZfQVRNUFZDLCBTT0NLX0RHUkFNLCAwKWAgZm9sbG93ZWQgYnkgYHNldHNvY2tvcHQoZmQsIFNPTF9BVE0sIFNPX1NFVENMUCwgXHUwMDI2dmFsLCBzaXplb2YodmFsKSlgLiBUaGF0J3MgYSBkaXJlY3Qgcm91dGUgaW50byB0aGUgZnVuY3Rpb24gSSdtIGludGVyZXN0ZWQgaW4uIEkgY2FuIGNvbmZpcm0gdGhpcyBpcyByZWFjaGFibGUuXG5cblRoZXJlZm9yZSwgdGhlIHJlY29tbWVuZGF0aW9uIEknbGwgcmV0dXJuIGlzIGFzIGZvbGxvd3M6XG5cbiogICAqKldvcnRoRnV6emluZzogdHJ1ZSoqIC0gVGhlIGNoYW5nZXMgYXJlIHNpZ25pZmljYW50IGFuZCBpbnZvbHZlIGNvcmUgbmV0d29yayBmdW5jdGlvbmFsaXR5LlxuKiAgICoqRm9jdXNTeW1ib2xzOiBcXFtcInZjY19zZXRzb2Nrb3B0XCJdKiogLSBUaGlzIGlzIHRoZSBmdW5jdGlvbiBkaXJlY3RseSBpbXBhY3RlZCBieSB0aGUgcGF0Y2guXG4qICAgKipFbmFibGVDb25maWdzOiBcXFtcIkFUTVwiXSoqIC0gVGhlIEFUTSBjb25maWd1cmF0aW9uIGlzIHRoZSBvbmx5IGRlcGVuZGVuY3kgaGVyZS5cbiogICAqKlJlYXNvbmluZzogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEFUTSBzb2NrZXQgb3B0aW9uIGhhbmRsaW5nIGluIHZjY19zZXRzb2Nrb3B0LCBjaGFuZ2luZyB0aGUgdHlwZSBvZiBhIHZhcmlhYmxlIGFuZCB1c2luZyBjb3B5X3NhZmVfZnJvbV9zb2NrcHRyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUgbmV0d29yayBjb2RlLlwiKiogLSBUaGlzIGV4cGxhaW5zIHRoZSByYXRpb25hbGUgZm9yIHRoaXMgcmVjb21tZW5kYXRpb24gY29uY2lzZWx5LiBUaGlzIGluY2x1ZGVzIGEgZGVzY3JpcHRpb24gb2YgdGhlIGNoYW5nZSBhbmQgdGhlIHJlbGV2YW5jZSB0byB0aGUgbmV0d29yayBzdGFjay5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIwOTgsIk91dHB1dFRva2VucyI6ODYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTY6MzI6MTkuMjU5MzgwMTI0WiIsIlNlcSI6NDYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYyNjM3Mjk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBVE1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2Y2Nfc2V0c29ja29wdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBBVE0gc29ja2V0IG9wdGlvbiBoYW5kbGluZyBpbiB2Y2Nfc2V0c29ja29wdCwgY2hhbmdpbmcgdGhlIHR5cGUgb2YgYSB2YXJpYWJsZSBhbmQgdXNpbmcgY29weV9zYWZlX2Zyb21fc29ja3B0ci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmsgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBVE1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2Y2Nfc2V0c29ja29wdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBBVE0gc29ja2V0IG9wdGlvbiBoYW5kbGluZyBpbiB2Y2Nfc2V0c29ja29wdCwgY2hhbmdpbmcgdGhlIHR5cGUgb2YgYSB2YXJpYWJsZSBhbmQgdXNpbmcgY29weV9zYWZlX2Zyb21fc29ja3B0ci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmsgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowwpvsb[1] Phase: Succeeded StartedAt: 2026-08-05 16:32:31 +0000 UTC FinishedAt: 2026-08-05 16:32:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwpvsb[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-05 16:32:31 +0000 UTC FinishedAt: 2026-08-05 16:32:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwpvsb[2] Phase: Succeeded StartedAt: 2026-08-05 16:32:31 +0000 UTC FinishedAt: 2026-08-05 20:13:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwpvsb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vcc_setsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATM"],"series_id":"dacc405b-33d3-44ef-a65c-77cd5e161f1e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-05 16:32:31 +0000 UTC FinishedAt: 2026-08-05 20:13:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vcc_setsockopt"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATM"],"series_id":"dacc405b-33d3-44ef-a65c-77cd5e161f1e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowwpvsb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vcc_setsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATM"],"series_id":"dacc405b-33d3-44ef-a65c-77cd5e161f1e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-05 16:32:31 +0000 UTC FinishedAt: 2026-08-05 16:32:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwpvsb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vcc_setsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATM"],"series_id":"dacc405b-33d3-44ef-a65c-77cd5e161f1e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-05 16:32:31 +0000 UTC FinishedAt: 2026-08-05 16:32:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwpvsb/series-workflowwpvsb-convert-artifact-4003698809/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwpvsb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vcc_setsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATM"],"series_id":"dacc405b-33d3-44ef-a65c-77cd5e161f1e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-05 16:32:41 +0000 UTC FinishedAt: 2026-08-05 16:51:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwpvsb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vcc_setsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATM"],"series_id":"dacc405b-33d3-44ef-a65c-77cd5e161f1e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-05 16:32:41 +0000 UTC FinishedAt: 2026-08-05 16:51:39 +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:*a1844cbf-75e7-407d-b391-e341d74f5538,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-workflowwpvsb/series-workflowwpvsb-convert-artifact-4003698809/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": "c249ad02-5046-4ed6-a27f-dc2ae7620625", "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-workflowwpvsb/series-workflowwpvsb-build-action-2361143703/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwpvsb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vcc_setsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATM"],"series_id":"dacc405b-33d3-44ef-a65c-77cd5e161f1e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-05 16:32:41 +0000 UTC FinishedAt: 2026-08-05 16:51:29 +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:*a1844cbf-75e7-407d-b391-e341d74f5538,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-workflowwpvsb/series-workflowwpvsb-convert-artifact-4003698809/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": "c249ad02-5046-4ed6-a27f-dc2ae7620625", "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-workflowwpvsb/series-workflowwpvsb-build-action-2361143703/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwpvsb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vcc_setsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATM"],"series_id":"dacc405b-33d3-44ef-a65c-77cd5e161f1e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-05 16:51:39 +0000 UTC FinishedAt: 2026-08-05 16:51:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwpvsb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vcc_setsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATM"],"series_id":"dacc405b-33d3-44ef-a65c-77cd5e161f1e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-05 16:51:39 +0000 UTC FinishedAt: 2026-08-05 16:51:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwpvsb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vcc_setsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATM"],"series_id":"dacc405b-33d3-44ef-a65c-77cd5e161f1e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-05 16:51:39 +0000 UTC FinishedAt: 2026-08-05 16:51:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwpvsb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vcc_setsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATM"],"series_id":"dacc405b-33d3-44ef-a65c-77cd5e161f1e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-05 16:51:39 +0000 UTC FinishedAt: 2026-08-05 16:51:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATM"],"series_id":"dacc405b-33d3-44ef-a65c-77cd5e161f1e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwpvsb/series-workflowwpvsb-convert-artifact-2464752972/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwpvsb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vcc_setsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATM"],"series_id":"dacc405b-33d3-44ef-a65c-77cd5e161f1e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-05 16:51:49 +0000 UTC FinishedAt: 2026-08-05 16:53:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwpvsb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vcc_setsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATM"],"series_id":"dacc405b-33d3-44ef-a65c-77cd5e161f1e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-05 16:51:49 +0000 UTC FinishedAt: 2026-08-05 16:53:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*c249ad02-5046-4ed6-a27f-dc2ae7620625,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-workflowwpvsb/series-workflowwpvsb-build-action-2361143703/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-workflowwpvsb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vcc_setsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATM"],"series_id":"dacc405b-33d3-44ef-a65c-77cd5e161f1e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-05 16:53:40 +0000 UTC FinishedAt: 2026-08-05 16:53:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwpvsb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vcc_setsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATM"],"series_id":"dacc405b-33d3-44ef-a65c-77cd5e161f1e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-05 16:53:40 +0000 UTC FinishedAt: 2026-08-05 16:53:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwpvsb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vcc_setsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATM"],"series_id":"dacc405b-33d3-44ef-a65c-77cd5e161f1e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-05 16:53:40 +0000 UTC FinishedAt: 2026-08-05 17:10:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwpvsb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vcc_setsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATM"],"series_id":"dacc405b-33d3-44ef-a65c-77cd5e161f1e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-05 16:53:40 +0000 UTC FinishedAt: 2026-08-05 17:10:29 +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:*a1844cbf-75e7-407d-b391-e341d74f5538,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-workflowwpvsb/series-workflowwpvsb-convert-artifact-2464752972/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": "dc305949-3c60-4265-ab66-77211a9efc40", "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-workflowwpvsb/series-workflowwpvsb-build-action-1967354728/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwpvsb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vcc_setsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATM"],"series_id":"dacc405b-33d3-44ef-a65c-77cd5e161f1e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-05 16:53:40 +0000 UTC FinishedAt: 2026-08-05 17:10:19 +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:*a1844cbf-75e7-407d-b391-e341d74f5538,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-workflowwpvsb/series-workflowwpvsb-convert-artifact-2464752972/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": "dc305949-3c60-4265-ab66-77211a9efc40", "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-workflowwpvsb/series-workflowwpvsb-build-action-1967354728/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwpvsb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vcc_setsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATM"],"series_id":"dacc405b-33d3-44ef-a65c-77cd5e161f1e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-05 17:10:29 +0000 UTC FinishedAt: 2026-08-05 17:10:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwpvsb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vcc_setsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATM"],"series_id":"dacc405b-33d3-44ef-a65c-77cd5e161f1e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-05 17:10:29 +0000 UTC FinishedAt: 2026-08-05 17:10:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwpvsb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vcc_setsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATM"],"series_id":"dacc405b-33d3-44ef-a65c-77cd5e161f1e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-05 17:10:29 +0000 UTC FinishedAt: 2026-08-05 17:12:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwpvsb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vcc_setsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATM"],"series_id":"dacc405b-33d3-44ef-a65c-77cd5e161f1e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-05 17:10:29 +0000 UTC FinishedAt: 2026-08-05 17:12:19 +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:*dc305949-3c60-4265-ab66-77211a9efc40,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-workflowwpvsb/series-workflowwpvsb-build-action-1967354728/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-workflowwpvsb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vcc_setsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATM"],"series_id":"dacc405b-33d3-44ef-a65c-77cd5e161f1e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-05 17:12:29 +0000 UTC FinishedAt: 2026-08-05 20:13:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwpvsb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vcc_setsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATM"],"series_id":"dacc405b-33d3-44ef-a65c-77cd5e161f1e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-05 17:12:29 +0000 UTC FinishedAt: 2026-08-05 20:13:55 +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":["vcc_setsockopt"],"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:*c249ad02-5046-4ed6-a27f-dc2ae7620625,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*dc305949-3c60-4265-ab66-77211a9efc40,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-workflowwpvsb/series-workflowwpvsb-build-action-2361143703/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-workflowwpvsb/series-workflowwpvsb-build-action-1967354728/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowwpvsb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vcc_setsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATM"],"series_id":"dacc405b-33d3-44ef-a65c-77cd5e161f1e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-05 17:12:29 +0000 UTC FinishedAt: 2026-08-05 17:12:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwpvsb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vcc_setsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATM"],"series_id":"dacc405b-33d3-44ef-a65c-77cd5e161f1e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-05 17:12:29 +0000 UTC FinishedAt: 2026-08-05 17:12:34 +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":["vcc_setsockopt"],"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-workflowwpvsb/series-workflowwpvsb-convert-artifact-2784556725/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwpvsb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vcc_setsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATM"],"series_id":"dacc405b-33d3-44ef-a65c-77cd5e161f1e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-05 17:12:29 +0000 UTC FinishedAt: 2026-08-05 17:12:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwpvsb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vcc_setsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATM"],"series_id":"dacc405b-33d3-44ef-a65c-77cd5e161f1e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-05 17:12:29 +0000 UTC FinishedAt: 2026-08-05 17:12:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwpvsb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vcc_setsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATM"],"series_id":"dacc405b-33d3-44ef-a65c-77cd5e161f1e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-05 17:12:29 +0000 UTC FinishedAt: 2026-08-05 17:12:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwpvsb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vcc_setsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATM"],"series_id":"dacc405b-33d3-44ef-a65c-77cd5e161f1e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-05 17:12:39 +0000 UTC FinishedAt: 2026-08-05 20:13:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwpvsb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vcc_setsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATM"],"series_id":"dacc405b-33d3-44ef-a65c-77cd5e161f1e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-05 17:12:39 +0000 UTC FinishedAt: 2026-08-05 20:13:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*c249ad02-5046-4ed6-a27f-dc2ae7620625,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*dc305949-3c60-4265-ab66-77211a9efc40,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-workflowwpvsb/series-workflowwpvsb-build-action-2361143703/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-workflowwpvsb/series-workflowwpvsb-build-action-1967354728/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-workflowwpvsb/series-workflowwpvsb-convert-artifact-2784556725/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,}