Name: series-workflow8bz74 Phase: Succeeded StartedAt: 2026-08-03 09:14:57 +0000 UTC FinishedAt: 2026-08-03 14:16:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8bz74[0] Phase: Succeeded StartedAt: 2026-08-03 09:14:58 +0000 UTC FinishedAt: 2026-08-03 09:36:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8bz74[0].run-triage Phase: Succeeded StartedAt: 2026-08-03 09:14:58 +0000 UTC FinishedAt: 2026-08-03 09:36:42 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "69963a0678a347d57c4ac8b16939dba216eb95ce", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NETDEVSIM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "69963a0678a347d57c4ac8b16939dba216eb95ce", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NETDEVSIM" ], "series_id": "eb6752b8-2dee-4f00-8e8f-23ed7e36a081" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "devlink_nl_port_get_doit", "devlink_nl_port_get_dumpit", "devlink_nl_port_new_doit" ], "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+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjM1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVERFVlNJTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RldmxpbmtfbmxfcG9ydF9nZXRfZG9pdCYjMzQ7LAogICAgJiMzNDtkZXZsaW5rX25sX3BvcnRfZ2V0X2R1bXBpdCYjMzQ7LAogICAgJiMzNDtkZXZsaW5rX25sX3BvcnRfbmV3X2RvaXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIG5ldyBuZXRsaW5rIGF0dHJpYnV0ZSBERVZMSU5LX0FUVFJfUE9SVF9FWFRFUk5BTCB0byB0aGUgb3V0cHV0IG9mIGRldmxpbmtfbmxfcG9ydF9hdHRyc19wdXQgZm9yIFBDSSBzdWJmdW5jdGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgZGV2bGluayBuZXRsaW5rIEFQSSBhbmQgY2FuIGJlIHRlc3RlZCBieSBmdXp6aW5nIHRoZSBkZXZsaW5rIHBvcnQgbmV0bGluayBoYW5kbGVycy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTozNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGZkN2E2M2Y1ZGQwYWU0N2Q5ZWRlYWE5NTEwNTgxOGM0YzM3ZWU2NDFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzIDA5OjM1OjE0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9kZXZsaW5rL3BvcnQuYyBiL25ldC9kZXZsaW5rL3BvcnQuY1xuaW5kZXggZGM4MmNhYzY4ZTdkMC4uMTUyOGYyZDE0OGRmYyAxMDA2NDRcbi0tLSBhL25ldC9kZXZsaW5rL3BvcnQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2RldmxpbmsvcG9ydC5jXG5AQCAtMjY3LDYgJiM0MzsyNjcsOCBAQCBzdGF0aWMgaW50IGRldmxpbmtfbmxfcG9ydF9hdHRyc19wdXQoc3RydWN0IHNrX2J1ZmYgKm1zZyxcbiBcdFx0ICAgIG5sYV9wdXRfdTMyKG1zZywgREVWTElOS19BVFRSX1BPUlRfUENJX1NGX05VTUJFUixcbiBcdFx0XHRcdGF0dHJzLVx1MDAzZXBjaV9zZi5zZikpXG4gXHRcdFx0cmV0dXJuIC1FTVNHU0laRTtcbiYjNDM7XHRcdGlmIChubGFfcHV0X3U4KG1zZywgREVWTElOS19BVFRSX1BPUlRfRVhURVJOQUwsIGF0dHJzLVx1MDAzZXBjaV9zZi5leHRlcm5hbCkpXG4mIzQzO1x0XHRcdHJldHVybiAtRU1TR1NJWkU7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBERVZMSU5LX1BPUlRfRkxBVk9VUl9QSFlTSUNBTDpcbiBcdGNhc2UgREVWTElOS19QT1JUX0ZMQVZPVVJfQ1BVOlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjM1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRERVZTSU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkZXZsaW5rX25sX3BvcnRfZ2V0X2RvaXQmIzM0OywKICAgICYjMzQ7ZGV2bGlua19ubF9wb3J0X2dldF9kdW1waXQmIzM0OywKICAgICYjMzQ7ZGV2bGlua19ubF9wb3J0X25ld19kb2l0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBuZXcgbmV0bGluayBhdHRyaWJ1dGUgREVWTElOS19BVFRSX1BPUlRfRVhURVJOQUwgdG8gdGhlIG91dHB1dCBvZiBkZXZsaW5rX25sX3BvcnRfYXR0cnNfcHV0IGZvciBQQ0kgc3ViZnVuY3Rpb25zLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGRldmxpbmsgbmV0bGluayBBUEkgYW5kIGNhbiBiZSB0ZXN0ZWQgYnkgZnV6emluZyB0aGUgZGV2bGluayBwb3J0IG5ldGxpbmsgaGFuZGxlcnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBmZDdhNjNmNWRkMGFlNDdkOWVkZWFhOTUxMDU4MThjNGMzN2VlNjQxCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBBdWcgMyAwOTozNToxNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9kZXZsaW5rL3BvcnQuYyBiL25ldC9kZXZsaW5rL3BvcnQuYwppbmRleCBkYzgyY2FjNjhlN2QwLi4xNTI4ZjJkMTQ4ZGZjIDEwMDY0NAotLS0gYS9uZXQvZGV2bGluay9wb3J0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2RldmxpbmsvcG9ydC5jCkBAIC0yNjcsNiAmIzQzOzI2Nyw4IEBAIHN0YXRpYyBpbnQgZGV2bGlua19ubF9wb3J0X2F0dHJzX3B1dChzdHJ1Y3Qgc2tfYnVmZiAqbXNnLAogCQkgICAgbmxhX3B1dF91MzIobXNnLCBERVZMSU5LX0FUVFJfUE9SVF9QQ0lfU0ZfTlVNQkVSLAogCQkJCWF0dHJzLSZndDtwY2lfc2Yuc2YpKQogCQkJcmV0dXJuIC1FTVNHU0laRTsKJiM0MzsJCWlmIChubGFfcHV0X3U4KG1zZywgREVWTElOS19BVFRSX1BPUlRfRVhURVJOQUwsIGF0dHJzLSZndDtwY2lfc2YuZXh0ZXJuYWwpKQomIzQzOwkJCXJldHVybiAtRU1TR1NJWkU7CiAJCWJyZWFrOwogCWNhc2UgREVWTElOS19QT1JUX0ZMQVZPVVJfUEhZU0lDQUw6CiAJY2FzZSBERVZMSU5LX1BPUlRfRkxBVk9VUl9DUFU6CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwODMKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyODQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBEZXZsaW5rIE5ldGxpbmsgQXR0cmlidXRlIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoLiBJdCYjMzk7cyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgYWRkaXRpb24gdG8gYG5ldC9kZXZsaW5rL3BvcnQuY2AuIFdlJiMzOTtyZSBhZGRpbmcgYSBuZXcgbmV0bGluayBhdHRyaWJ1dGUsIGBERVZMSU5LX0FUVFJfUE9SVF9FWFRFUk5BTGAsIHdpdGhpbiB0aGUgYGRldmxpbmtfbmxfcG9ydF9hdHRyc19wdXRgIGZ1bmN0aW9uLiBFc3NlbnRpYWxseSwgaXQgYXBwZWFycyB0aGF0IHRoaXMgbmV3IGF0dHJpYnV0ZSB3aWxsIGJlIHBhcnQgb2YgdGhlIFBDSSBzZWNvbmRhcnkgZnVuY3Rpb24gaW5mb3JtYXRpb24gd2UgYXJlIHBhc3Npbmcgb3ZlciBuZXRsaW5rLgoKSSBzZWUgdGhhdCB0aGUgY29kZSBtb2RpZmljYXRpb24gaXMgbWluaW1hbDsgd2UmIzM5O3JlIGp1c3QgYWRkaW5nIGEgY2FsbCB0byBgbmxhX3B1dF91OGAgdG8gaW5jbHVkZSB0aGUgYGV4dGVybmFsYCBmaWVsZCBmcm9tIGBhdHRycy0mZ3Q7cGNpX3NmYC4gSSBzaG91bGQgdmVyaWZ5IHRoYXQgdGhlIGBhdHRycy0mZ3Q7cGNpX3NmLmV4dGVybmFsYCBmaWVsZCBpcyBwb3B1bGF0ZWQsIGFuZCB3aGV0aGVyIHRoaXMgbmV3IGF0dHJpYnV0ZSBpcyB1c2VkIG9yIHJlcXVpcmVkIGJ5IGFueSBvdGhlciBmdW5jdGlvbi4gSSB3b3VsZCBuZWVkIHRvIHRyYWNlIHRoZSB1c2FnZSBvZiB0aGlzIGF0dHJpYnV0ZSB0byBiZSBzdXJlLgoKVGhpcyBsb29rcyBsaWtlIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGEgZGlyZWN0IGV4dGVuc2lvbiBvZiB0aGUgZGV2bGluayBuZXRsaW5rIEFQSSB0byBwcm92aWRlIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHBvcnQuIEkgbmVlZCB0byBiZSBzdXJlIHRoZSBzZW1hbnRpY3Mgb2YgYERFVkxJTktfQVRUUl9QT1JUX0VYVEVSTkFMYCBhcmUgY29ycmVjdGx5IGRlZmluZWQgaW4gcmVsYXRpb24gdG8gZXhpc3RpbmcgYXR0cmlidXRlcy4gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlIGRldmxpbmsgY29yZSBhbmQgdGhlIGJyb2FkZXIgbmV0bGluayBpbmZyYXN0cnVjdHVyZSB0byBtYWtlIHN1cmUgdGhpcyBuZXcgYXR0cmlidXRlIGlzIGhhbmRsZWQgY29ycmVjdGx5IGFuZCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IHJlZ3Jlc3Npb25zLiBJdCYjMzk7cyBpbXBvcnRhbnQgdG8gZW5zdXJlIHRoaXMgaXMgY29ycmVjdGx5IGhhbmRsZWQgaW4gYm90aCB0aGUga2VybmVsIGFuZCwgZXF1YWxseSBpbXBvcnRhbnRseSwgYW55IHVzZXItc3BhY2UgdG9vbGluZyBvciBkYWVtb25zIHRoYXQgaW50ZXJhY3Qgd2l0aCB0aGlzIG5ldGxpbmsgaW50ZXJmYWNlLiBJJiMzOTtsbCBuZWVkIHRvIHRoaW5rIGFib3V0IGhvdyB0aGlzIGFmZmVjdHMgZXhpc3RpbmcgdXNlcnMgb2YgdGhlIEFQSSwgYW5kIHdoZXRoZXIgaXQgcmVxdWlyZXMgYW55IGNvbXBhdGliaWxpdHkgY29uc2lkZXJhdGlvbnMgb3IgdmVyc2lvbmluZyBzY2hlbWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RldmxpbmtfbmxfcG9ydF9hdHRyc19wdXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvZGV2bGluay9wb3J0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2RldmxpbmsvcG9ydC5jPTIxOT1zaXplX3QgZGV2bGlua19ubF9wb3J0X2hhbmRsZV9zaXplKHN0cnVjdCBkZXZsaW5rX3BvcnQgKmRldmxpbmtfcG9ydClcbi0tXG5uZXQvZGV2bGluay9wb3J0LmMtMjI4LVxubmV0L2RldmxpbmsvcG9ydC5jOjIyOTpzdGF0aWMgaW50IGRldmxpbmtfbmxfcG9ydF9hdHRyc19wdXQoc3RydWN0IHNrX2J1ZmYgKm1zZyxcbm5ldC9kZXZsaW5rL3BvcnQuYy0yMzAtXHRcdFx0XHQgICAgIHN0cnVjdCBkZXZsaW5rX3BvcnQgKmRldmxpbmtfcG9ydClcbi0tXG5uZXQvZGV2bGluay9wb3J0LmM9NDg5PXN0YXRpYyBpbnQgZGV2bGlua19ubF9wb3J0X2ZpbGwoc3RydWN0IHNrX2J1ZmYgKm1zZyxcbi0tXG5uZXQvZGV2bGluay9wb3J0LmMtNTI5LVx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2ZGV2bGlua19wb3J0LVx1MDAzZXR5cGVfbG9jayk7XG5uZXQvZGV2bGluay9wb3J0LmM6NTMwOlx0aWYgKGRldmxpbmtfbmxfcG9ydF9hdHRyc19wdXQobXNnLCBkZXZsaW5rX3BvcnQpKVxubmV0L2RldmxpbmsvcG9ydC5jLTUzMS1cdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk5OQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipUcmFjaW5nIHRoZSBEYXRhIFBhdGg6IGRldmxpbmtfbmxfcG9ydF9hdHRyc19wdXQgYW5kIGRldmxpbmtfbmxfcG9ydF9maWxsKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgZGV2bGlua19ubF9wb3J0X2F0dHJzX3B1dGAuIFRoZSBjb21tZW50IHRlbGxzIG1lIHRoaXMgaXMgdXNlZCBieSBgZGV2bGlua19ubF9wb3J0X2ZpbGxgLiBNYWtlcyBzZW5zZSwgdGhlIGxhdHRlciBwcm9iYWJseSBmZWVkcyB0aGUgZGF0YSB0aGlzIGZ1bmN0aW9uIHNlcmlhbGl6ZXMuICBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBsYXJnZXIgY29udGV4dC4gTXkgbmV4dCBtb3ZlIGlzIHRvIHRyYWNlICp3aGVyZSogYGRldmxpbmtfbmxfcG9ydF9maWxsYCBpdHNlbGYgaXMgY2FsbGVkLiBUaGF0IHdpbGwgc2hvdyBtZSB0aGUgaGlnaGVyLWxldmVsIGZ1bmN0aW9ucyBvcmNoZXN0cmF0aW5nIHRoZSBwb3B1bGF0aW9uIG9mIHRoZXNlIGRldmxpbmsgcG9ydCBhdHRyaWJ1dGVzLiAgVW5kZXJzdGFuZGluZyB0aGUgY2FsbCBjaGFpbiBpcyBrZXkgdG8gZmlndXJpbmcgb3V0IHRoZSBmdWxsIGZsb3cgb2YgaW5mb3JtYXRpb24gYW5kIHRoZSBwb2ludHMgb2YgaW50ZXJhY3Rpb24gd2l0aGluIHRoZSBrZXJuZWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGV2bGlua19ubF9wb3J0X2ZpbGwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvZGV2bGluay9wb3J0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2RldmxpbmsvcG9ydC5jPTQ1Mz1kZXZsaW5rX25sX3BvcnRfZnVuY3Rpb25fYXR0cnNfcHV0KHN0cnVjdCBza19idWZmICptc2csIHN0cnVjdCBkZXZsaW5rX3BvcnQgKnBvcnQsXG4tLVxubmV0L2RldmxpbmsvcG9ydC5jLTQ4OC1cbm5ldC9kZXZsaW5rL3BvcnQuYzo0ODk6c3RhdGljIGludCBkZXZsaW5rX25sX3BvcnRfZmlsbChzdHJ1Y3Qgc2tfYnVmZiAqbXNnLFxubmV0L2RldmxpbmsvcG9ydC5jLTQ5MC1cdFx0XHRcdHN0cnVjdCBkZXZsaW5rX3BvcnQgKmRldmxpbmtfcG9ydCxcbi0tXG5uZXQvZGV2bGluay9wb3J0LmM9NTQ5PXN0YXRpYyB2b2lkIGRldmxpbmtfcG9ydF9ub3RpZnkoc3RydWN0IGRldmxpbmtfcG9ydCAqZGV2bGlua19wb3J0LFxuLS1cbm5ldC9kZXZsaW5rL3BvcnQuYy01NjUtXG5uZXQvZGV2bGluay9wb3J0LmM6NTY2Olx0ZXJyID0gZGV2bGlua19ubF9wb3J0X2ZpbGwobXNnLCBkZXZsaW5rX3BvcnQsIGNtZCwgMCwgMCwgMCwgTlVMTCk7XG5uZXQvZGV2bGluay9wb3J0LmMtNTY3LVx0aWYgKGVycikge1xuLS1cbm5ldC9kZXZsaW5rL3BvcnQuYz01OTc9aW50IGRldmxpbmtfbmxfcG9ydF9nZXRfZG9pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuLS1cbm5ldC9kZXZsaW5rL3BvcnQuYy02MDYtXG5uZXQvZGV2bGluay9wb3J0LmM6NjA3Olx0ZXJyID0gZGV2bGlua19ubF9wb3J0X2ZpbGwobXNnLCBkZXZsaW5rX3BvcnQsIERFVkxJTktfQ01EX1BPUlRfTkVXLFxubmV0L2RldmxpbmsvcG9ydC5jLTYwOC1cdFx0XHRcdCAgIGluZm8tXHUwMDNlc25kX3BvcnRpZCwgaW5mby1cdTAwM2VzbmRfc2VxLCAwLFxuLS1cbm5ldC9kZXZsaW5rL3BvcnQuYz02MTk9ZGV2bGlua19ubF9wb3J0X2dldF9kdW1wX29uZShzdHJ1Y3Qgc2tfYnVmZiAqbXNnLCBzdHJ1Y3QgZGV2bGluayAqZGV2bGluayxcbi0tXG5uZXQvZGV2bGluay9wb3J0LmMtNjI3LVx0eGFfZm9yX2VhY2hfc3RhcnQoXHUwMDI2ZGV2bGluay1cdTAwM2Vwb3J0cywgcG9ydF9pbmRleCwgZGV2bGlua19wb3J0LCBzdGF0ZS1cdTAwM2VpZHgpIHtcbm5ldC9kZXZsaW5rL3BvcnQuYzo2Mjg6XHRcdGVyciA9IGRldmxpbmtfbmxfcG9ydF9maWxsKG1zZywgZGV2bGlua19wb3J0LFxubmV0L2RldmxpbmsvcG9ydC5jLTYyOS1cdFx0XHRcdFx0ICAgREVWTElOS19DTURfUE9SVF9ORVcsXG4tLVxubmV0L2RldmxpbmsvcG9ydC5jPTkwMD1pbnQgZGV2bGlua19ubF9wb3J0X25ld19kb2l0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4tLVxubmV0L2RldmxpbmsvcG9ydC5jLTk0Ny1cdH1cbm5ldC9kZXZsaW5rL3BvcnQuYzo5NDg6XHRlcnIgPSBkZXZsaW5rX25sX3BvcnRfZmlsbChtc2csIGRldmxpbmtfcG9ydCwgREVWTElOS19DTURfUE9SVF9ORVcsXG5uZXQvZGV2bGluay9wb3J0LmMtOTQ5LVx0XHRcdFx0ICAgaW5mby1cdTAwM2VzbmRfcG9ydGlkLCBpbmZvLVx1MDAzZXNuZF9zZXEsIDAsIE5VTEwpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5MjEKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAyNzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhpcyBEZXZsaW5rIE5ldGxpbmsgQVBJIENoYW5nZSoqCgpPa2F5LCBzbyBJIHNlZSB0aGF0IHRoZSBgZGV2bGlua19ubF9wb3J0X2ZpbGxgIGZ1bmN0aW9uIGlzIGNlbnRyYWwgaGVyZS4gVGhhdCBmdW5jdGlvbiBpcyB1c2VkIGluIHNldmVyYWwgTmV0bGluayBBUEkgaGFuZGxlcnM6IGBkZXZsaW5rX25sX3BvcnRfZ2V0X2RvaXRgLCBgZGV2bGlua19ubF9wb3J0X2dldF9kdW1wX29uZWAsIGBkZXZsaW5rX25sX3BvcnRfbmV3X2RvaXRgLCBhbmQgYGRldmxpbmtfcG9ydF9ub3RpZnlgLiBUaGVzZSBhcmUgdGhlIGNvcmUgZW50cnkgcG9pbnRzIGZvciBkZWFsaW5nIHdpdGggZGV2bGluayBwb3J0cyBvdmVyIE5ldGxpbmsuIFRoZSBwYXRjaCB0YXJnZXRzIGBkZXZsaW5rX25sX3BvcnRfYXR0cnNfcHV0YCwgd2hpY2ggaXMgY2FsbGVkICpieSogYGRldmxpbmtfbmxfcG9ydF9maWxsYC4gQWhhLCBhbmQgaXQmIzM5O3MgYWRkaW5nIGEgbmV3IGF0dHJpYnV0ZSwgYERFVkxJTktfQVRUUl9QT1JUX0VYVEVSTkFMYCwgdG8gdGhlIG91dHB1dCBvZiBgZGV2bGlua19ubF9wb3J0X2F0dHJzX3B1dGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBuZXcgYXR0cmlidXRlIGJlaW5nIGV4cG9zZWQuIERlZmluaXRlbHkgc29tZXRoaW5nIHRoYXQgbmVlZHMgZnV6emluZy4KCkkgc2hvdWxkIG1ha2UgYSBub3RlIG9mIHRob3NlIHNwZWNpZmljIGZ1bmN0aW9uczogYGRldmxpbmtfbmxfcG9ydF9nZXRfZG9pdGAsIGBkZXZsaW5rX25sX3BvcnRfZ2V0X2R1bXBfb25lYCwgYW5kIGBkZXZsaW5rX25sX3BvcnRfbmV3X2RvaXRgLiBJIG5lZWQgdG8gZW5zdXJlIHRoZSBmdXp6aW5nIGNvdmVycyB0aGVtLgoKTm93LCBsZXQgbWUganVzdCBxdWlja2x5IGNoZWNrIHRoZSBidWlsZCBjb25maWd1cmF0aW9uLiBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGlzIGFjdHVhbGx5IGJ1aWx0IGludG8gdGhlIGtlcm5lbCB3ZSBhcmUgdGVzdGluZy4gRGV2bGluayBpcyBlbmFibGVkIGJ5IGBDT05GSUdfTkVUX0RFVkxJTktgLiBXYWl0LCBpdCBsb29rcyBsaWtlIGl0IGlzIGFsd2F5cyBidWlsdCBpZiBORVQgaXMgZW5hYmxlZC4gT3IgaXMgaXQgYENPTkZJR19ORVRfREVWTElOS2A/IEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayB0aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfREVWTElOSyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L0tjb25maWc9NDc5PWNvbmZpZyBORVRfU09DS19NU0dcbi0tXG5uZXQvS2NvbmZpZy00ODYtXG5uZXQvS2NvbmZpZzo0ODc6Y29uZmlnIE5FVF9ERVZMSU5LXG5uZXQvS2NvbmZpZy00ODgtXHRib29sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDYyMgoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipEaXZpbmcgaW50byB0aGUgYG5ldC9kZXZsaW5rL01ha2VmaWxlYCoqCgpPa2F5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBzb21ldGhpbmcgcmVsYXRlZCB0byBkZXZpY2UgbGlua2luZy4gVGhlIGxvZ2ljYWwgZmlyc3Qgc3RlcCwgYXMgYWx3YXlzLCBpcyB0byBjaGVjayB0aGUgYG5ldC9kZXZsaW5rL01ha2VmaWxlYC4gVGhhdCYjMzk7cyB3aGVyZSBJJiMzOTtkIGV4cGVjdCB0byBmaW5kIHRoZSBidWlsZCBydWxlcywgZGVwZW5kZW5jaWVzLCBhbmQgcHJvYmFibHkgc29tZSBjbHVlcyBhYm91dCBob3cgdGhlIGRldmxpbmsgc3Vic3lzdGVtIGlzIHN0cnVjdHVyZWQgd2l0aGluIHRoZSBrZXJuZWwmIzM5O3MgYnVpbGQgcHJvY2Vzcy4gSG9wZWZ1bGx5LCBpdCYjMzk7bGwgaWxsdW1pbmF0ZSB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIGRpZmZlcmVudCBjb21wb25lbnRzIGFuZCBob3cgdGhleSYjMzk7cmUgY29tcGlsZWQuIEl04oCZbGwgYWxzbyBiZSB1c2VmdWwgdG8gc2VlIGhvdyBpdCBpbnRlZ3JhdGVzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIG5ldHdvcmtpbmcgc3RhY2suIEkmIzM5O20gaG9waW5nIHRvIHF1aWNrbHkgaWRlbnRpZnkgdGhlIGtleSBidWlsZCB0YXJnZXRzIGFuZCBhbnkgcG90ZW50aWFsIGFyZWFzIG9mIGNvbmNlcm4gZm9yIHdoYXRldmVyIHRhc2sgSSBoYXZlIGluIG1pbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGV2bGluayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9kZXZsaW5rL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDgzNgoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSBpbW1lZGlhdGUgdGhvdWdodCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgTmV0d29yayBEZXZpY2UgTGluayBCdWlsZCBQcm9jZXNzKioKCk9rYXksIGhvbGQgb24gYSBtaW51dGUuIFRoaXMganVzdCBkb2VzbiYjMzk7dCBmZWVsIHJpZ2h0LiBUaGUgYnVpbGQgc3lzdGVtLCBzcGVjaWZpY2FsbHkgYG5ldC9kZXZsaW5rL01ha2VmaWxlYCwgaXNuJiMzOTt0IHBsYXlpbmcgYmFsbCBvciBpc24mIzM5O3QgcG9pbnRpbmcgdG8gdGhlIGNvcnJlY3QgY29kZSB3aGVuIEkmIzM5O20gZXhwZWN0aW5nIGBkZXZsaW5rYCB0byBiZSB0aGVyZS4gU29tZXRoaW5nJiMzOTtzIG9mZiwgYW5kIGl0JiMzOTtzIG1ha2luZyBtZSBwYXVzZS4gQWxyaWdodCwgSSBuZWVkIHRvIHpvb20gb3V0IGEgYml0LiBUaW1lIHRvIGNoZWNrIHRoZSBlbmNvbXBhc3NpbmcgYG5ldC9NYWtlZmlsZWAuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIHRvcC1sZXZlbCBvcmNoZXN0cmF0aW9uIHVzdWFsbHkgaGFwcGVucywgc28gSSBuZWVkIHRvIGdvIHVwc3RyZWFtIHRvIGZpZ3VyZSBvdXQgd2hhdCYjMzk7cyBnb2luZyBvbiB3aXRoIGhvdyBgZGV2bGlua2AgaXMgc3VwcG9zZWQgdG8gYmUgaGFuZGxlZCBpbiB0aGUgYnJvYWRlciBuZXR3b3JrIHN1YnN5c3RlbSBidWlsZC4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGJlaW5nIGluY2x1ZGVkIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXZsaW5rJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9NYWtlZmlsZT0yNT1vYmotJChDT05GSUdfQlJJREdFKVx0XHQmIzQzOz0gYnJpZGdlL1xubmV0L01ha2VmaWxlOjI2Om9iai0kKENPTkZJR19ORVRfREVWTElOSylcdCYjNDM7PSBkZXZsaW5rL1xubmV0L01ha2VmaWxlLTI3LW9iai15XHRcdFx0XHQmIzQzOz0gZHNhL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTMyCgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3MsIGdpdmVuIG15IGV4cGVydGlzZToKCioqQ2hlY2tpbmcgS2VybmVsIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIHRoZSBzeXN0ZW0gbmVlZHMgYENPTkZJR19ORVRfREVWTElOS2AuIEJ1dCBob2xkIG9uLCBJIHJlbWVtYmVyIHRoYXQgYE5FVF9ERVZMSU5LYCBpdHNlbGYgaXMgYSBzaW1wbGUgYm9vbGVhbiBjb25maWd1cmF0aW9uIG9wdGlvbiwgYW5kIGltcG9ydGFudGx5LCBpdCYjMzk7cyAqbm90KiBhIHByb21wdC4gVGhhdCBtZWFucyBpdOKAmXMgYmVpbmcgcHVsbGVkIGluIGJ5IGRlcGVuZGVuY2llcywgbm90IGRpcmVjdGx5IGJ5IHVzZXIgc2VsZWN0aW9uLiBOb3csIEkgbmVlZCB0byBmaWd1cmUgb3V0ICp3aGF0KiBleGFjdGx5IGlzIGVuYWJsaW5nIGBORVRfREVWTElOS2AuIFRpbWUgdG8gdHJhY2UgdGhlIGNvbmZpZyBkZXBlbmRlbmNpZXMgdG8gZmluZCB0aGUgcm9vdCBjYXVzZSBvZiBpdHMgc2VsZWN0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzICpyZWFsbHkqIGRyaXZpbmcgdGhpcyByZXF1aXJlbWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IE5FVF9ERVZMSU5LJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvY3J5cHRvL21hcnZlbGwvS2NvbmZpZz00MD1jb25maWcgQ1JZUFRPX0RFVl9PQ1RFT05UWDJfQ1BUXG4tLVxuZHJpdmVycy9jcnlwdG8vbWFydmVsbC9LY29uZmlnLTUxLVx0c2VsZWN0IENSWVBUT19BVVRIRU5DXG5kcml2ZXJzL2NyeXB0by9tYXJ2ZWxsL0tjb25maWc6NTI6XHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvY3J5cHRvL21hcnZlbGwvS2NvbmZpZy01My1cdGhlbHBcbi0tXG5kcml2ZXJzL2RwbGwvemwzMDczeC9LY29uZmlnPTM9Y29uZmlnIFpMMzA3M1hcbi0tXG5kcml2ZXJzL2RwbGwvemwzMDczeC9LY29uZmlnLTYtXHRzZWxlY3QgRFBMTFxuZHJpdmVycy9kcGxsL3psMzA3M3gvS2NvbmZpZzo3Olx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL2RwbGwvemwzMDczeC9LY29uZmlnLTgtXHRzZWxlY3QgUkVHTUFQXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz02MDQ9Y29uZmlnIE5FVERFVlNJTVxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWctNjA5LVx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19NT0NLIHx8IFBUUF8xNTg4X0NMT0NLX01PQ0s9blxuZHJpdmVycy9uZXQvS2NvbmZpZzo2MTA6XHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L0tjb25maWctNjExLVx0c2VsZWN0IFBBR0VfUE9PTFxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9LY29uZmlnPTE2OD1jb25maWcgQ0FOX0tWQVNFUl9QQ0lFRkRcbi0tXG5kcml2ZXJzL25ldC9jYW4vS2NvbmZpZy0xNzAtXHR0cmlzdGF0ZSBcJiMzNDtLdmFzZXIgUENJZSBGRCBjYXJkc1wmIzM0O1xuZHJpdmVycy9uZXQvY2FuL0tjb25maWc6MTcxOlx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9jYW4vS2NvbmZpZy0xNzItXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvY2FuL3VzYi9LY29uZmlnPTMxPWNvbmZpZyBDQU5fRVRBU19FUzU4WFxuLS1cbmRyaXZlcnMvbmV0L2Nhbi91c2IvS2NvbmZpZy0zMy1cdHNlbGVjdCBDUkMxNlxuZHJpdmVycy9uZXQvY2FuL3VzYi9LY29uZmlnOjM0Olx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9jYW4vdXNiL0tjb25maWctMzUtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvY2FuL3VzYi9LY29uZmlnPTY3PWNvbmZpZyBDQU5fS1ZBU0VSX1VTQlxuZHJpdmVycy9uZXQvY2FuL3VzYi9LY29uZmlnLTY4LVx0dHJpc3RhdGUgXCYjMzQ7S3Zhc2VyIENBTi9VU0IgaW50ZXJmYWNlXCYjMzQ7XG5kcml2ZXJzL25ldC9jYW4vdXNiL0tjb25maWc6Njk6XHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L2Nhbi91c2IvS2NvbmZpZy03MC1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vS2NvbmZpZz0xOT1jb25maWcgRU5BX0VUSEVSTkVUXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL0tjb25maWctMjMtXHRzZWxlY3QgRElNTElCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vS2NvbmZpZzoyNDpcdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL0tjb25maWctMjUtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL0tjb25maWc9MTY5PWNvbmZpZyBQRFNfQ09SRVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9LY29uZmlnLTE3Mi1cdHNlbGVjdCBBVVhJTElBUllfQlVTXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvS2NvbmZpZzoxNzM6XHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9LY29uZmlnLTE3NC1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnPTIwNz1jb25maWcgQk5YVFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjEyLVx0c2VsZWN0IENSQzMyXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnOjIxMzpcdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yMTQtXHRzZWxlY3QgUEFHRV9QT09MXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZz0yNTg9Y29uZmlnIEJOR0Vcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTI2MC1cdGRlcGVuZHMgb24gUENJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnOjI2MTpcdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yNjItXHRzZWxlY3QgUEFHRV9QT09MXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWc9Njg9Y29uZmlnIExJUVVJRElPXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWctNzUtXHRzZWxlY3QgTElRVUlESU9fQ09SRVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWc6NzY6XHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnLTc3LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9LY29uZmlnPTI9Y29uZmlnIEZTTF9EUEFBMl9FVEhcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZy03LVx0c2VsZWN0IEZTTF9YR01BQ19NRElPXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZzo4Olx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZy05LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Z1bmdpYmxlL2Z1bmV0aC9LY29uZmlnPTY9Y29uZmlnIEZVTl9FVEhcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mdW5naWJsZS9mdW5ldGgvS2NvbmZpZy05LVx0ZGVwZW5kcyBvbiBUTFMgXHUwMDI2XHUwMDI2IFRMU19ERVZJQ0UgfHwgVExTX0RFVklDRT1uXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mdW5naWJsZS9mdW5ldGgvS2NvbmZpZzoxMDpcdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnVuZ2libGUvZnVuZXRoL0tjb25maWctMTEtXHRzZWxlY3QgRlVOX0NPUkVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZz05MT1jb25maWcgSE5TM1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnLTkzLVx0ZGVwZW5kcyBvbiBQQ0lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnOjk0Olx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZy05NS1cdHNlbGVjdCBQQUdFX1BPT0xcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvS2NvbmZpZz02PWNvbmZpZyBISU5JQ1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9LY29uZmlnLTgtXHRkZXBlbmRzIG9uIChQQ0lfTVNJIFx1MDAyNlx1MDAyNiAoWDg2IHx8IEFSTTY0KSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9LY29uZmlnOjk6XHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9LY29uZmlnLTEwLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc9MTQ1PWNvbmZpZyBJWEdCRVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMTUwLVx0c2VsZWN0IE1ESU9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc6MTUxOlx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTE1Mi1cdHNlbGVjdCBQTERNRldcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnPTIyOT1jb25maWcgSTQwRVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMjM1LVx0c2VsZWN0IExJQklFX0FETUlOUVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZzoyMzY6XHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMjM3LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc9MjkxPWNvbmZpZyBJQ0Vcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTMwMi1cdHNlbGVjdCBMSUJJRV9GV0xPRyBpZiBERUJVR19GU1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZzozMDM6XHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMzA0LVx0c2VsZWN0IFBBQ0tJTkdcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnPTk9Y29uZmlnIE9DVEVPTlRYMl9BRlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctMTEtXHRzZWxlY3QgT0NURU9OVFgyX01CT1hcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc6MTI6XHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctMTMtXHRkZXBlbmRzIG9uICg2NEJJVCBcdTAwMjZcdTAwMjYgQ09NUElMRV9URVNUKSB8fCBBUk02NFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc9MzE9Y29uZmlnIE9DVEVPTlRYMl9QRlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctMzMtXHRzZWxlY3QgT0NURU9OVFgyX01CT1hcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc6MzQ6XHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctMzUtXHRzZWxlY3QgUEFHRV9QT09MXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9LY29uZmlnPTY9Y29uZmlnIFBSRVNURVJBXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9LY29uZmlnLTktXHRkZXBlbmRzIG9uIEJSSURHRSB8fCBCUklER0U9blxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9LY29uZmlnOjEwOlx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL0tjb25maWctMTEtXHRzZWxlY3QgUEhZTElOS1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvS2NvbmZpZz0yOD1jb25maWcgTUxYNF9DT1JFXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9LY29uZmlnLTMxLVx0c2VsZWN0IEFVWElMSUFSWV9CVVNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvS2NvbmZpZzozMjpcdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9LY29uZmlnLTMzLVx0ZGVmYXVsdCBuXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWc9Nj1jb25maWcgTUxYNV9DT1JFXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctOS1cdHNlbGVjdCBBVVhJTElBUllfQlVTXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZzoxMDpcdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctMTEtXHRkZXBlbmRzIG9uIE1MWEZXIHx8ICFNTFhGV1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seGZ3L0tjb25maWc9Nj1jb25maWcgTUxYRldcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhmdy9LY29uZmlnLTE0LVx0c2VsZWN0IFhaX0RFQ1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4ZncvS2NvbmZpZzoxNTpcdHNlbGVjdCBORVRfREVWTElOS1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWc9Nj1jb25maWcgTUxYU1dfQ09SRVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZy03LVx0dHJpc3RhdGUgXCYjMzQ7TWVsbGFub3ggVGVjaG5vbG9naWVzIFN3aXRjaCBBU0lDcyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnOjg6XHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWctOS1cdHNlbGVjdCBNTFhGV1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZz0yMD1jb25maWcgRkJOSUNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWctMjYtXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWc6Mjc6XHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZy0yOC1cdHNlbGVjdCBQQUdFX1BPT0xcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL0tjb25maWc9MTU9Y29uZmlnIE1TQ0NfT0NFTE9UX1NXSVRDSF9MSUJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2MvS2NvbmZpZy0xNi1cdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2MvS2NvbmZpZzoxNzpcdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9LY29uZmlnLTE4LVx0c2VsZWN0IFJFR01BUF9NTUlPXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL0tjb25maWc9MTk9Y29uZmlnIE5GUFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9LY29uZmlnLTIzLVx0ZGVwZW5kcyBvbiBUTFMgXHUwMDI2XHUwMDI2IFRMU19ERVZJQ0UgfHwgVExTX0RFVklDRT1uXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvS2NvbmZpZzoyNDpcdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL0tjb25maWctMjUtXHRzZWxlY3QgQ1JDMzJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9wZW5zYW5kby9LY29uZmlnPTIwPWNvbmZpZyBJT05JQ1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3BlbnNhbmRvL0tjb25maWctMjMtXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9wZW5zYW5kby9LY29uZmlnOjI0Olx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9wZW5zYW5kby9LY29uZmlnLTI1LVx0c2VsZWN0IERJTUxJQlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9LY29uZmlnPTc2PWNvbmZpZyBRRURcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvS2NvbmZpZy04MS1cdHNlbGVjdCBDUkMzMlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL0tjb25maWc6ODI6XHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9LY29uZmlnLTgzLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9LY29uZmlnPTE5PWNvbmZpZyBTRkNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvS2NvbmZpZy0yNC1cdHNlbGVjdCBDUkMzMlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL0tjb25maWc6MjU6XHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9LY29uZmlnLTI2LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mj1jb25maWcgU1RNTUFDX0VUSFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTItXHRzZWxlY3QgUkVTRVRfQ09OVFJPTExFUlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxMzpcdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xNC1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnPTY1PWNvbmZpZyBUSV9DUFNXX1NXSVRDSERFVlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctNzMtXHRzZWxlY3QgUkVHTUFQXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjc0Olx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTc1LVx0aW1wbHkgUEhZX1RJX0dNSUlfU0VMXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZz05Nj1jb25maWcgVElfSzNfQU02NV9DUFNXX05VU1Ncbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTk4LVx0ZGVwZW5kcyBvbiBBUkNIX0szIFx1MDAyNlx1MDAyNiBPRiBcdTAwMjZcdTAwMjYgVElfSzNfVURNQV9HTFVFX0xBWUVSXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjk5Olx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTEwMC1cdHNlbGVjdCBUSV9EQVZJTkNJX01ESU9cbi0tXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc9OTY9Y29uZmlnIElPU01cbi0tXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctOTgtXHRkZXBlbmRzIG9uIFBDSVxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnOjk5Olx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctMTAwLVx0c2VsZWN0IFJFTEFZIGlmIFdXQU5fREVCVUdGU1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWc9MjEwPWNvbmZpZyBQVFBfMTU4OF9DTE9DS19PQ1Bcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTIxNy1cdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xuZHJpdmVycy9wdHAvS2NvbmZpZzoyMTg6XHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvcHRwL0tjb25maWctMjE5LVx0c2VsZWN0IENSQzE2XG4tLVxubmV0L2RzYS9LY29uZmlnPTM9bWVudWNvbmZpZyBORVRfRFNBXG4tLVxubmV0L2RzYS9LY29uZmlnLTEwLVx0c2VsZWN0IFBIWUxJTktcbm5ldC9kc2EvS2NvbmZpZzoxMTpcdHNlbGVjdCBORVRfREVWTElOS1xubmV0L2RzYS9LY29uZmlnLTEyLVx0aW1wbHkgTkVUX1NFTEZURVNUU1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MDMzCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogODQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGV2bGluayBUZXN0aW5nIFN0cmF0ZWd5KioKCk9rYXksIHNvIHRoZSBgTkVUREVWU0lNYCBvcHRpb24gc2VlbXMgbGlrZSB0aGUga2V5IGhlcmUuIFRoZSBjb2RlIGNsZWFybHkgY2hvb3NlcyBgTkVUX0RFVkxJTktgLCB3aGljaCBpcyBleGFjdGx5IHdoYXQgSSYjMzk7bSBsb29raW5nIGZvci4gSXQgbG9va3MgbGlrZSBhbGwgSSBoYXZlIHRvIGRvIGlzIGVuYWJsZSBgTkVUREVWU0lNYCwgYW5kIEkgc2hvdWxkIGJlIGFibGUgdG8gZ2V0IGEgc29saWQgdGVzdCBlbnZpcm9ubWVudCBnb2luZyBmb3IgZGV2bGluaywgbmljZSBhbmQgc2ltcGxlLgoKQnV0IGxldCYjMzk7cyBub3QganVtcCB0aGUgZ3VuOyBsZXQmIzM5O3MgdmVyaWZ5IHRoYXQgdGhpcyBhY3R1YWxseSAqaXMqIGVub3VnaC4gT2theSwgeWVzLCBnb29kLCBpdCBhcHBlYXJzIHRoYXQgYE5FVERFVlNJTWAgKmlzKiBhIHZpcnR1YWwgZHJpdmVyIHRoYXQmIzM5O3MgYnVpbHQgYXJvdW5kIGRldmxpbmsuIFRoYXQmIzM5O3MgZXhhY3RseSB0aGUga2luZCBvZiB0ZXN0IGRyaXZlciBJIHdhcyBob3BpbmcgZm9yLiBOb3csIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJJiMzOTtsbCBxdWlja2x5IGNoZWNrIHRoZSBgS2NvbmZpZ2AgZmlsZSBpbiB0aGUgYGRyaXZlcnMvbmV0YCBkaXJlY3RvcnkgdG8gY29uZmlybS4gSSBhbHdheXMgYXBwcmVjaWF0ZSBhIGRvdWJsZS1jaGVjay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVERFVlNJTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZz02MDI9c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L2h5cGVydi9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnLTYwMy1cbmRyaXZlcnMvbmV0L0tjb25maWc6NjA0OmNvbmZpZyBORVRERVZTSU1cbmRyaXZlcnMvbmV0L0tjb25maWctNjA1LVx0dHJpc3RhdGUgXCYjMzQ7U2ltdWxhdGVkIG5ldHdvcmtpbmcgZGV2aWNlXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk0MTkKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgTkVUREVWU0lNYCBDb25maWd1cmF0aW9uIGFuZCBEZXZsaW5rIEFQSSoqCgpPa2F5LCBzbyB0aGUgaW5pdGlhbCBpbXByZXNzaW9uIGlzIHRoYXQgZW5hYmxpbmcgYE5FVERFVlNJTWAgaXMgYSBzb2xpZCBtb3ZlLiBNeSBuZXh0IHRob3VnaHQgaXMgdG8gaW52ZXN0aWdhdGUgaWYgdGhlcmUgYXJlIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMgdGhhdCBtaWdodCBjb21wbGVtZW50IGl0LiBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgYGRldmxpbmtgIGlzIGEgZnVuZGFtZW50YWwgbmV0bGluayBBUEksIGFuZCB0aGlzIHBhdGNoIHNlZW1zIHRvIGJlIGhvbmluZyBpbiBvbiBgZGV2bGlua19ubF9wb3J0X2F0dHJzX3B1dGAsIHdoaWNoIGlzIGNhbGxlZCB3aXRoaW4gYGRldmxpbmtfbmxfcG9ydF9maWxsYC4gTXkgaW5pdGlhbCBmb2N1cyBuZWVkcyB0byBiZSBvbiB0aGVzZSBrZXkgc3ltYm9sczogYGRldmxpbmtfbmxfcG9ydF9nZXRfZG9pdGAsIGBkZXZsaW5rX25sX3BvcnRfZ2V0X2R1bXBfb25lYCwgYW5kIGBkZXZsaW5rX25sX3BvcnRfbmV3X2RvaXRgLgoKSSYjMzk7bGwgcHJvY2VlZCB0byBleGFtaW5lIGBkZXZsaW5rX25sX3BvcnRfZ2V0X2RvaXRgIGFuZCBgZGV2bGlua19ubF9wb3J0X25ld19kb2l0YCBpbiBgbmV0L2RldmxpbmsvcG9ydC5jYCB0byBmdWxseSBncmFzcCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY2hhbmdlIGFuZCBhc3Nlc3MgaXRzIGltcGFjdCBvbiB0aGUgbGFyZ2VyIHN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGV2bGlua19ubF9wb3J0X2dldF9kb2l0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2RldmxpbmsvcG9ydC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9kZXZsaW5rL3BvcnQuYz01OTI9dm9pZCBkZXZsaW5rX3BvcnRzX25vdGlmeV91bnJlZ2lzdGVyKHN0cnVjdCBkZXZsaW5rICpkZXZsaW5rKVxuLS1cbm5ldC9kZXZsaW5rL3BvcnQuYy01OTYtXG5uZXQvZGV2bGluay9wb3J0LmM6NTk3OmludCBkZXZsaW5rX25sX3BvcnRfZ2V0X2RvaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbm5ldC9kZXZsaW5rL3BvcnQuYy01OTgte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5OTU2CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogOTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUsIHdoYXQmIzM5O3Mgb24gbXkgbWluZCByZWdhcmRpbmcgdGhlc2UgZGV2bGluayBwb3J0IGZ1bmN0aW9ucy4KCioqRGVjb25zdHJ1Y3RpbmcgRGV2bGluayBQb3J0IE9wZXJhdGlvbnMqKgoKSG1tLCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgZGV2bGluayBmdW5jdGlvbnM6IGBkZXZsaW5rX25sX3BvcnRfZ2V0X2R1bXBfb25lYCwgYGRldmxpbmtfbmxfcG9ydF9uZXdfZG9pdGAsIGBkZXZsaW5rX25sX3BvcnRfc2V0X2RvaXRgLCBhbmQgYGRldmxpbmtfbmxfcG9ydF9kZWxfZG9pdGAuIFNlZW1zIGxpa2UgYSBzdGFuZGFyZCBDUlVEIG9wZXJhdGlvbiBzZXR1cCBmb3IgTmV0bGluayBpbnRlcmFjdGlvbnMgd2l0aCBkZXZsaW5rIHBvcnRzLiBUaGUgb2J2aW91cyBxdWVzdGlvbiBub3cgaXMsIGFyZSB0aGVyZSBhbnkgKm90aGVyKiBmdW5jdGlvbnMgaW4gdGhpcyBzcGFjZSB0aGF0IEkmIzM5O20gbm90IGltbWVkaWF0ZWx5IGNvbnNpZGVyaW5nPyBJIGRvdWJ0IHRoZXNlIGFyZSB0aGUgb25seSBvbmVzLiBUaGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgZGV2bGlua19ubF9wb3J0X25ld19kb2l0YCwgc3BlY2lmaWNhbGx5IGluIGBuZXQvZGV2bGluay9wb3J0LmNgLiBUaGF0IHdpbGwgYmUgd2hlcmUgdGhlIGNvcmUgbG9naWMgb2YgY3JlYXRpbmcgYSBuZXcgcG9ydCByZXNpZGVzLCB3aGljaCBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGFyY2hpdGVjdHVyZS4gTGV0IG1lIGdvIHRha2UgYSBsb29rIHRoZXJlLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RldmxpbmtfbmxfcG9ydF9uZXdfZG9pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9kZXZsaW5rL3BvcnQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvZGV2bGluay9wb3J0LmM9ODkwPWludCBkZXZsaW5rX25sX3BvcnRfdW5zcGxpdF9kb2l0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4tLVxubmV0L2RldmxpbmsvcG9ydC5jLTg5OS1cbm5ldC9kZXZsaW5rL3BvcnQuYzo5MDA6aW50IGRldmxpbmtfbmxfcG9ydF9uZXdfZG9pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxubmV0L2RldmxpbmsvcG9ydC5jLTkwMS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNDMxCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIHRleHQsIHN1bW1hcml6ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXNzdW1pbmcgYW4gZXhwZXJ0IHVzZXI6CgoqKkRpdmluZyBpbnRvIERldmxpbmsgUG9ydCBEdW1wKioKCk9rYXksIHNvIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgYGRldmxpbmtfbmxfcG9ydF9nZXRfZHVtcF9vbmVgIGZ1bmN0aW9uLiBJIHJlbWVtYmVyIGl0JiMzOTtzIGluIGBuZXQvZGV2bGluay9wb3J0LmNgLCBzbyB0aGF0JiMzOTtzIHdoZXJlIEkmIzM5O2xsIHN0YXJ0IGRpZ2dpbmcuIFRoaXMgZnVuY3Rpb24gbGlrZWx5IGhhbmRsZXMgdGhlIGxvdy1sZXZlbCBkZXRhaWxzIG9mIGR1bXBpbmcgb3IgcmV0cmlldmluZyBpbmZvcm1hdGlvbiBmb3IgYSBzaW5nbGUgRGV2bGluayBwb3J0IGR1cmluZyBhIE5ldGxpbmsgaW50ZXJhY3Rpb24uIEkgZXhwZWN0IGl0JiMzOTtsbCBiZSByZXNwb25zaWJsZSBmb3IgZm9ybWF0dGluZyB0aGUgZGF0YSBzdHJ1Y3R1cmUgYXBwcm9wcmlhdGVseSwgaGFuZGxpbmcgcG90ZW50aWFsIGVycm9ycywgYW5kIHBvdGVudGlhbGx5IGRlYWxpbmcgd2l0aCB1c2VyLXNwYWNlIHJlcXVlc3RzIGZvciBzcGVjaWZpYyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcG9ydC4gTGV0JiMzOTtzIHNlZSBpZiBteSBtZW50YWwgbW9kZWwgaG9sZHMgdXAgb25jZSBJIGdldCBpbnRvIHRoZSBjb2RlLiBJJiMzOTttIGtlZW4gdG8gc2VlIHRoZSBzcGVjaWZpYyBmaWVsZHMgaXQgcHVsbHMgYW5kIGFueSBmaWx0ZXJpbmcgb3Igc2VjdXJpdHkgY29uc2lkZXJhdGlvbnMgaW1wbGVtZW50ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RldmxpbmtfbmxfcG9ydF9nZXRfZHVtcF9vbmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvZGV2bGluay9wb3J0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2RldmxpbmsvcG9ydC5jPTYxOD1zdGF0aWMgaW50XG5uZXQvZGV2bGluay9wb3J0LmM6NjE5OmRldmxpbmtfbmxfcG9ydF9nZXRfZHVtcF9vbmUoc3RydWN0IHNrX2J1ZmYgKm1zZywgc3RydWN0IGRldmxpbmsgKmRldmxpbmssXG5uZXQvZGV2bGluay9wb3J0LmMtNjIwLVx0XHRcdCAgICAgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiLCBpbnQgZmxhZ3MpXG4tLVxubmV0L2RldmxpbmsvcG9ydC5jPTY0Mj1pbnQgZGV2bGlua19ubF9wb3J0X2dldF9kdW1waXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKVxubmV0L2RldmxpbmsvcG9ydC5jLTY0My17XG5uZXQvZGV2bGluay9wb3J0LmM6NjQ0Olx0cmV0dXJuIGRldmxpbmtfbmxfZHVtcGl0KHNrYiwgY2IsIGRldmxpbmtfbmxfcG9ydF9nZXRfZHVtcF9vbmUpO1xubmV0L2RldmxpbmsvcG9ydC5jLTY0NS19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwODkzCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogOTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBEZXZsaW5rIE5ldGxpbmsgUG9ydCBIYW5kbGVyKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEl0IGxvb2tzIGxpa2UgYGRldmxpbmtfbmxfcG9ydF9nZXRfZHVtcGl0YCBpcyB0aGUga2V5IGZ1bmN0aW9uIGhlcmUsIHRoZSBhY3R1YWwgd29ya2hvcnNlIGZvciB0aGUgbmV0bGluayBoYW5kbGluZy4gVGhlIGltcG9ydGFudCB0aGluZyB0byB1bmRlcnN0YW5kIGFyZSB0aGUgcmVsYXRlZCBzeW1ib2xzLCBzcGVjaWZpY2FsbHkgYGRldmxpbmtfbmxfcG9ydF9nZXRfZG9pdGAsIGBkZXZsaW5rX25sX3BvcnRfZ2V0X2R1bXBpdGAsIGFuZCBgZGV2bGlua19ubF9wb3J0X25ld19kb2l0YC4gVGhvc2UgYXJlIHRoZSBvbmVzIHRvIHplcm8gaW4gb24gdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93LiBOb3csIEkgc2hvdWxkIHByb2JhYmx5IHRha2UgYSBsb29rIGF0IHdoYXQgY2FsbHMgYGRldmxpbmtfbmxfcG9ydF9maWxsYCBiZWNhdXNlIHRoYXQmIzM5O3MgbGlrZWx5IHdoZXJlIHRoZSBkYXRhIGlzIGJlaW5nIGNvbnN0cnVjdGVkIHRoYXQgdGhlc2UgZnVuY3Rpb25zIGFyZSBwcm9jZXNzaW5nLiBVbmRlcnN0YW5kaW5nIGl0cyBjYWxsZXJzIHdpbGwgcGFpbnQgYSBtdWNoIGNsZWFyZXIgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGV2bGlua19ubF9wb3J0X2ZpbGwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvZGV2bGluay9wb3J0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2RldmxpbmsvcG9ydC5jPTQ1Mz1kZXZsaW5rX25sX3BvcnRfZnVuY3Rpb25fYXR0cnNfcHV0KHN0cnVjdCBza19idWZmICptc2csIHN0cnVjdCBkZXZsaW5rX3BvcnQgKnBvcnQsXG4tLVxubmV0L2RldmxpbmsvcG9ydC5jLTQ4OC1cbm5ldC9kZXZsaW5rL3BvcnQuYzo0ODk6c3RhdGljIGludCBkZXZsaW5rX25sX3BvcnRfZmlsbChzdHJ1Y3Qgc2tfYnVmZiAqbXNnLFxubmV0L2RldmxpbmsvcG9ydC5jLTQ5MC1cdFx0XHRcdHN0cnVjdCBkZXZsaW5rX3BvcnQgKmRldmxpbmtfcG9ydCxcbi0tXG5uZXQvZGV2bGluay9wb3J0LmM9NTQ5PXN0YXRpYyB2b2lkIGRldmxpbmtfcG9ydF9ub3RpZnkoc3RydWN0IGRldmxpbmtfcG9ydCAqZGV2bGlua19wb3J0LFxuLS1cbm5ldC9kZXZsaW5rL3BvcnQuYy01NjUtXG5uZXQvZGV2bGluay9wb3J0LmM6NTY2Olx0ZXJyID0gZGV2bGlua19ubF9wb3J0X2ZpbGwobXNnLCBkZXZsaW5rX3BvcnQsIGNtZCwgMCwgMCwgMCwgTlVMTCk7XG5uZXQvZGV2bGluay9wb3J0LmMtNTY3LVx0aWYgKGVycikge1xuLS1cbm5ldC9kZXZsaW5rL3BvcnQuYz01OTc9aW50IGRldmxpbmtfbmxfcG9ydF9nZXRfZG9pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuLS1cbm5ldC9kZXZsaW5rL3BvcnQuYy02MDYtXG5uZXQvZGV2bGluay9wb3J0LmM6NjA3Olx0ZXJyID0gZGV2bGlua19ubF9wb3J0X2ZpbGwobXNnLCBkZXZsaW5rX3BvcnQsIERFVkxJTktfQ01EX1BPUlRfTkVXLFxubmV0L2RldmxpbmsvcG9ydC5jLTYwOC1cdFx0XHRcdCAgIGluZm8tXHUwMDNlc25kX3BvcnRpZCwgaW5mby1cdTAwM2VzbmRfc2VxLCAwLFxuLS1cbm5ldC9kZXZsaW5rL3BvcnQuYz02MTk9ZGV2bGlua19ubF9wb3J0X2dldF9kdW1wX29uZShzdHJ1Y3Qgc2tfYnVmZiAqbXNnLCBzdHJ1Y3QgZGV2bGluayAqZGV2bGluayxcbi0tXG5uZXQvZGV2bGluay9wb3J0LmMtNjI3LVx0eGFfZm9yX2VhY2hfc3RhcnQoXHUwMDI2ZGV2bGluay1cdTAwM2Vwb3J0cywgcG9ydF9pbmRleCwgZGV2bGlua19wb3J0LCBzdGF0ZS1cdTAwM2VpZHgpIHtcbm5ldC9kZXZsaW5rL3BvcnQuYzo2Mjg6XHRcdGVyciA9IGRldmxpbmtfbmxfcG9ydF9maWxsKG1zZywgZGV2bGlua19wb3J0LFxubmV0L2RldmxpbmsvcG9ydC5jLTYyOS1cdFx0XHRcdFx0ICAgREVWTElOS19DTURfUE9SVF9ORVcsXG4tLVxubmV0L2RldmxpbmsvcG9ydC5jPTkwMD1pbnQgZGV2bGlua19ubF9wb3J0X25ld19kb2l0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4tLVxubmV0L2RldmxpbmsvcG9ydC5jLTk0Ny1cdH1cbm5ldC9kZXZsaW5rL3BvcnQuYzo5NDg6XHRlcnIgPSBkZXZsaW5rX25sX3BvcnRfZmlsbChtc2csIGRldmxpbmtfcG9ydCwgREVWTElOS19DTURfUE9SVF9ORVcsXG5uZXQvZGV2bGluay9wb3J0LmMtOTQ5LVx0XHRcdFx0ICAgaW5mby1cdTAwM2VzbmRfcG9ydGlkLCBpbmZvLVx1MDAzZXNuZF9zZXEsIDAsIE5VTEwpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTg1NgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDkyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoaXMgY29kZSBzbmlwcGV0LCBleHByZXNzZWQgYXMgaWYgaXQmIzM5O3MgbXkgb3duIHRob3VnaHQgcHJvY2VzczoKCioqUG9ydCBOb3RpZmljYXRpb24gYW5kIE5ldGxpbmsgT3BlcmF0aW9uczogQSBRdWljayBBc3Nlc3NtZW50KioKCkFscmlnaHQsIEkmIzM5O20gdGFraW5nIGEgbG9vayBhdCB0aGlzIGBkZXZsaW5rYCBwb3J0IGhhbmRsaW5nLiBJdCYjMzk7cyBpbXBvcnRhbnQgdG8gcmVtZW1iZXIgdGhhdCBgZGV2bGlua19wb3J0X25vdGlmeWAgZ2V0cyB0cmlnZ2VyZWQgZm9yIGJvdGggcG9ydCByZWdpc3RyYXRpb24gKmFuZCogdW5yZWdpc3RyYXRpb24uIFRoYXQmIzM5O3MgYSBrZXkgb2JzZXJ2YXRpb24uIEl0JiMzOTtzIGEgZ2VuZXJhbCBub3RpZmljYXRpb24gbWVjaGFuaXNtLCBidXQgdGhlIHByaW1hcnkgaW50ZXJhY3Rpb25zIHdpdGggdXNlcnNwYWNlIHNlZW0gdG8gb3JpZ2luYXRlIGZyb20gdGhlIE5ldGxpbmsgaW50ZXJmYWNlLiBTcGVjaWZpY2FsbHksIGBkZXZsaW5rX25sX3BvcnRfZ2V0X2RvaXRgLCBgZGV2bGlua19ubF9wb3J0X2dldF9kdW1waXRgLCBhbmQgYGRldmxpbmtfbmxfcG9ydF9uZXdfZG9pdGAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBwYXRoIHRoZSBjb2RlIHRha2VzLiBHaXZlbiB0aGUgY29udGV4dCwgbXkgbWFpbiBjb25jZXJuIHJpZ2h0IG5vdyBpcyB3aGV0aGVyIGBkZXZsaW5rX25sX3BvcnRfbmV3X2RvaXRgIGlzIGFjdHVhbGx5IGEgcmVhY2hhYmxlIGZ1bmN0aW9uLiBMZXQmIzM5O3Mgc2VlIGlmIHRoaXMgZnVuY3Rpb24gaXMgY29ubmVjdGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXZsaW5rX25sX3BvcnRfbmV3X2RvaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvZGV2bGluay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2RldmxpbmsvbmV0bGlua19nZW4uYz03MDI9Y29uc3Qgc3RydWN0IGdlbmxfc3BsaXRfb3BzIGRldmxpbmtfbmxfb3BzWzc1XSA9IHtcbi0tXG5uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5jLTc0OS1cdFx0LnByZV9kb2l0XHQ9IGRldmxpbmtfbmxfcHJlX2RvaXQsXG5uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5jOjc1MDpcdFx0LmRvaXRcdFx0PSBkZXZsaW5rX25sX3BvcnRfbmV3X2RvaXQsXG5uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5jLTc1MS1cdFx0LnBvc3RfZG9pdFx0PSBkZXZsaW5rX25sX3Bvc3RfZG9pdCxcbi0tXG5uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5oPTUyPWludCBkZXZsaW5rX25sX3BvcnRfc2V0X2RvaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbyk7XG5uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5oOjUzOmludCBkZXZsaW5rX25sX3BvcnRfbmV3X2RvaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbyk7XG5uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5oLTU0LWludCBkZXZsaW5rX25sX3BvcnRfZGVsX2RvaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbyk7XG4tLVxubmV0L2RldmxpbmsvcG9ydC5jPTg5MD1pbnQgZGV2bGlua19ubF9wb3J0X3Vuc3BsaXRfZG9pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuLS1cbm5ldC9kZXZsaW5rL3BvcnQuYy04OTktXG5uZXQvZGV2bGluay9wb3J0LmM6OTAwOmludCBkZXZsaW5rX25sX3BvcnRfbmV3X2RvaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbm5ldC9kZXZsaW5rL3BvcnQuYy05MDEte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjYwMgoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDIxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBOZXRsaW5rIFBhdGNoKioKCk9rYXksIHNvIEkgc2VlIHRoaXMgcGF0Y2ggaXMgYWJvdXQgbmV0bGluayBoYW5kbGVycywgc3BlY2lmaWNhbGx5IHJlZ2FyZGluZyBgZGV2bGlua2AuIFRoZSBrZXkgZnVuY3Rpb25hbCBjaGFuZ2UgaGVyZSBpcyB0aGUgaW50cm9kdWN0aW9uIG9mIGEgbmV3IGF0dHJpYnV0ZSwgYERFVkxJTktfQVRUUl9QT1JUX0VYVEVSTkFMYCwgd2hpY2ggd2lsbCBiZSBhZGRlZCB0byB0aGUgb3V0cHV0IG9mIGBkZXZsaW5rX25sX3BvcnRfYXR0cnNfcHV0YC4gVGhpcyBkZWZpbml0ZWx5IHdhcnJhbnRzIGZ1enppbmcsIG5vIHF1ZXN0aW9uLgoKTGV0JiMzOTtzIHNlZSwgdGhlIGZ1bmN0aW9ucyBvZiBpbnRlcmVzdCBmb3IgdGhpcyBwYXJ0aWN1bGFyIHBhdGNoIGFyZSBgZGV2bGlua19ubF9wb3J0X2dldF9kb2l0YCwgYGRldmxpbmtfbmxfcG9ydF9nZXRfZHVtcGl0YCwgYW5kIGBkZXZsaW5rX25sX3BvcnRfbmV3X2RvaXRgLiBUaG9zZSBhcmUgbXkgZm9jdXMgcG9pbnRzIGZvciBpbml0aWFsIGluc3BlY3Rpb24gYW5kIHBvdGVudGlhbCBmdXp6aW5nIHRhcmdldHMuCgpSaWdodCwgbm93LCByZWdhcmRpbmcgdGhlIHRlc3RpbmcgZW52aXJvbm1lbnQuIFRoZSBwYXRjaCBtZW50aW9ucyBgTkVUREVWU0lNYCwgd2hpY2gsIGZyb20gZXhwZXJpZW5jZSwgaXMgdHlwaWNhbGx5IHN1ZmZpY2llbnQgZm9yIHRlc3RpbmcgYGRldmxpbmtgLiBMZXQgbWUgY29uZmlybSwgYXMgaXQgYWxzbyBzZWxlY3RzIGBORVRfREVWTElOS2AuIFRoZXJlIGRvZXNuJiMzOTt0IGFwcGVhciB0byBiZSBhbnkgb3RoZXIgY29uZmlnIG9wdGlvbnMgZGlyZWN0bHkgcmVsYXRlZCB0byB0aGlzLiBgTkVUREVWU0lNYCBpcyB1c3VhbGx5IGhvdyB3ZSBoYW5kbGUgZGV2bGluayBpbiBzeXprYWxsZXIuCgpKdXN0IGEgcXVpY2sgc2FuaXR5IGNoZWNrLCBJJiMzOTtsbCBzZWFyY2ggdGhlIGNvZGViYXNlIHRvIG1ha2Ugc3VyZSB0aGlzIGBERVZMSU5LX0FUVFJfUE9SVF9FWFRFUk5BTGAgaXNuJiMzOTt0IGJlaW5nIHVzZWQgYW55d2hlcmUgZWxzZSB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50IG9yIHVuZXhwZWN0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0RFVkxJTktfQVRUUl9QT1JUX0VYVEVSTkFMJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvdWFwaS9saW51eC9kZXZsaW5rLmg9NDEyPWVudW0gZGV2bGlua19hdHRyIHtcbi0tXG5pbmNsdWRlL3VhcGkvbGludXgvZGV2bGluay5oLTU5Ny1cbmluY2x1ZGUvdWFwaS9saW51eC9kZXZsaW5rLmg6NTk4Olx0REVWTElOS19BVFRSX1BPUlRfRVhURVJOQUwsXHRcdC8qIHU4ICovXG5pbmNsdWRlL3VhcGkvbGludXgvZGV2bGluay5oLTU5OS1cdERFVkxJTktfQVRUUl9QT1JUX0NPTlRST0xMRVJfTlVNQkVSLFx0LyogdTMyICovXG4tLVxubmV0L2RldmxpbmsvcG9ydC5jPTIyOT1zdGF0aWMgaW50IGRldmxpbmtfbmxfcG9ydF9hdHRyc19wdXQoc3RydWN0IHNrX2J1ZmYgKm1zZyxcbi0tXG5uZXQvZGV2bGluay9wb3J0LmMtMjQ5LVx0XHRcdHJldHVybiAtRU1TR1NJWkU7XG5uZXQvZGV2bGluay9wb3J0LmM6MjUwOlx0XHRpZiAobmxhX3B1dF91OChtc2csIERFVkxJTktfQVRUUl9QT1JUX0VYVEVSTkFMLCBhdHRycy1cdTAwM2VwY2lfcGYuZXh0ZXJuYWwpKVxubmV0L2RldmxpbmsvcG9ydC5jLTI1MS1cdFx0XHRyZXR1cm4gLUVNU0dTSVpFO1xuLS1cbm5ldC9kZXZsaW5rL3BvcnQuYy0yNTgtXHRcdFx0cmV0dXJuIC1FTVNHU0laRTtcbm5ldC9kZXZsaW5rL3BvcnQuYzoyNTk6XHRcdGlmIChubGFfcHV0X3U4KG1zZywgREVWTElOS19BVFRSX1BPUlRfRVhURVJOQUwsIGF0dHJzLVx1MDAzZXBjaV92Zi5leHRlcm5hbCkpXG5uZXQvZGV2bGluay9wb3J0LmMtMjYwLVx0XHRcdHJldHVybiAtRU1TR1NJWkU7XG4tLVxubmV0L2RldmxpbmsvcG9ydC5jLTI2OS1cdFx0XHRyZXR1cm4gLUVNU0dTSVpFO1xubmV0L2RldmxpbmsvcG9ydC5jOjI3MDpcdFx0aWYgKG5sYV9wdXRfdTgobXNnLCBERVZMSU5LX0FUVFJfUE9SVF9FWFRFUk5BTCwgYXR0cnMtXHUwMDNlcGNpX3NmLmV4dGVybmFsKSlcbm5ldC9kZXZsaW5rL3BvcnQuYy0yNzEtXHRcdFx0cmV0dXJuIC1FTVNHU0laRTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM1MzkKCQkJCQkJCW91dHB1dDogMTQwCgkJCQkJCQl0aG91Z2h0czogMjAyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgaXMgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIHBhdGNoLiBJdCYjMzk7cyByZWFsbHkganVzdCBleHRlbmRpbmcgdGhlIGV4aXN0aW5nIGBERVZMSU5LX0FUVFJfUE9SVF9FWFRFUk5BTGAgYXR0cmlidXRlIHRvIGNvdmVyIFBDSSBzdWJmdW5jdGlvbnMgKGBwY2lfc2ZgKS4gSXQgd2FzIGFscmVhZHkgaW1wbGVtZW50ZWQgZm9yIHBoeXNpY2FsIGZ1bmN0aW9ucyAoYHBjaV9wZmApIGFuZCB2aXJ0dWFsIGZ1bmN0aW9ucyAoYHBjaV92ZmApLCBzbyB0aGlzIGlzIHJlYWxseSBqdXN0IGNvbXBsZXRpbmcgdGhlIHBpY3R1cmUgZm9yIFBDSS4gV2hpbGUgdGhlIGNvZGUgY2hhbmdlIGl0c2VsZiBpcyBtaW5pbWFsLCBpdCAqaXMqIGZ1bmN0aW9uYWw7IHdlJiMzOTtyZSBhZGRpbmcgYSBuZXcgYXR0cmlidXRlIHRvIHRoZSBOZXRsaW5rIHJlc3BvbnNlLgoKR2l2ZW4gdGhhdCBpdCB0b3VjaGVzIHRoZSBOZXRsaW5rIEFQSSBmb3IgZGV2bGluayBwb3J0cywgSSYjMzk7bSBnb2luZyB0byBtYXJrIHRoaXMgYXMgV29ydGhGdXp6aW5nPXRydWUuIE5ldGxpbmsgY2hhbmdlcyBhcmUgcHJpbWUgY2FuZGlkYXRlcyBmb3IgZnV6emluZyBzaW5jZSBhIG1hbGZvcm1lZCBtZXNzYWdlIGNvdWxkIGxlYWQgdG8gYWxsIHNvcnRzIG9mIGlzc3Vlcy4KClNwZWNpZmljYWxseSwgSSYjMzk7bGwgZm9jdXMgbXkgZnV6emluZyBlZmZvcnRzIG9uIGBkZXZsaW5rX25sX3BvcnRfZ2V0X2RvaXRgLCBgZGV2bGlua19ubF9wb3J0X2dldF9kdW1waXRgLCBhbmQgYGRldmxpbmtfbmxfcG9ydF9uZXdfZG9pdGAuIFRob3NlIGFyZSB0aGUgZW50cnkgcG9pbnRzIGZvciB0aGUgcmVsZXZhbnQgTmV0bGluayBvcGVyYXRpb25zLCBzbyB0aG9zZSBhcmUgdGhlIHNwb3RzIHdoZXJlIEkmIzM5O2QgYW50aWNpcGF0ZSB2dWxuZXJhYmlsaXRpZXMuCgpBbmQgc2luY2UgdGhpcyBwYXRjaCBpcyByZWxhdGVkIHRvIFBDSSBzdWJmdW5jdGlvbnMsIEkmIzM5O20gZ29pbmcgdG8gZW5zdXJlIHRoZSBgTkVUREVWU0lNYCBjb25maWcgaXMgZW5hYmxlZCB0byBlZmZlY3RpdmVseSB0ZXN0IGl0LiBUaGlzIHdpbGwgZW5zdXJlIHRoYXQgUENJIHN1YmZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGUgdGVzdCBzZXR1cC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVERFVlNJTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RldmxpbmtfbmxfcG9ydF9nZXRfZG9pdCYjMzQ7LAogICAgJiMzNDtkZXZsaW5rX25sX3BvcnRfZ2V0X2R1bXBpdCYjMzQ7LAogICAgJiMzNDtkZXZsaW5rX25sX3BvcnRfbmV3X2RvaXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIG5ldyBuZXRsaW5rIGF0dHJpYnV0ZSBERVZMSU5LX0FUVFJfUE9SVF9FWFRFUk5BTCB0byB0aGUgb3V0cHV0IG9mIGRldmxpbmtfbmxfcG9ydF9hdHRyc19wdXQgZm9yIFBDSSBzdWJmdW5jdGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgZGV2bGluayBuZXRsaW5rIEFQSSBhbmQgY2FuIGJlIHRlc3RlZCBieSBmdXp6aW5nIHRoZSBkZXZsaW5rIHBvcnQgbmV0bGluayBoYW5kbGVycy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUREVWU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGV2bGlua19ubF9wb3J0X2dldF9kb2l0JiMzNDssCiAgICAmIzM0O2RldmxpbmtfbmxfcG9ydF9nZXRfZHVtcGl0JiMzNDssCiAgICAmIzM0O2RldmxpbmtfbmxfcG9ydF9uZXdfZG9pdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgbmV3IG5ldGxpbmsgYXR0cmlidXRlIERFVkxJTktfQVRUUl9QT1JUX0VYVEVSTkFMIHRvIHRoZSBvdXRwdXQgb2YgZGV2bGlua19ubF9wb3J0X2F0dHJzX3B1dCBmb3IgUENJIHN1YmZ1bmN0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBkZXZsaW5rIG5ldGxpbmsgQVBJIGFuZCBjYW4gYmUgdGVzdGVkIGJ5IGZ1enppbmcgdGhlIGRldmxpbmsgcG9ydCBuZXRsaW5rIGhhbmRsZXJzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6MzU6MTUuNjU5MDAxNDdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3Mzc2MTkzNTQzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRERVZTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkZXZsaW5rX25sX3BvcnRfZ2V0X2RvaXRcIixcbiAgICBcImRldmxpbmtfbmxfcG9ydF9nZXRfZHVtcGl0XCIsXG4gICAgXCJkZXZsaW5rX25sX3BvcnRfbmV3X2RvaXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgbmV3IG5ldGxpbmsgYXR0cmlidXRlIERFVkxJTktfQVRUUl9QT1JUX0VYVEVSTkFMIHRvIHRoZSBvdXRwdXQgb2YgZGV2bGlua19ubF9wb3J0X2F0dHJzX3B1dCBmb3IgUENJIHN1YmZ1bmN0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBkZXZsaW5rIG5ldGxpbmsgQVBJIGFuZCBjYW4gYmUgdGVzdGVkIGJ5IGZ1enppbmcgdGhlIGRldmxpbmsgcG9ydCBuZXRsaW5rIGhhbmRsZXJzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTozNToxNS42NTkwMTE0NVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzczMzI2OTcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZmQ3YTYzZjVkZDBhZTQ3ZDllZGVhYTk1MTA1ODE4YzRjMzdlZTY0MVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEF1ZyAzIDA5OjM1OjE0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9kZXZsaW5rL3BvcnQuYyBiL25ldC9kZXZsaW5rL3BvcnQuY1xcbmluZGV4IGRjODJjYWM2OGU3ZDAuLjE1MjhmMmQxNDhkZmMgMTAwNjQ0XFxuLS0tIGEvbmV0L2RldmxpbmsvcG9ydC5jXFxuKysrIGIvbmV0L2RldmxpbmsvcG9ydC5jXFxuQEAgLTI2Nyw2ICsyNjcsOCBAQCBzdGF0aWMgaW50IGRldmxpbmtfbmxfcG9ydF9hdHRyc19wdXQoc3RydWN0IHNrX2J1ZmYgKm1zZyxcXG4gXFx0XFx0ICAgIG5sYV9wdXRfdTMyKG1zZywgREVWTElOS19BVFRSX1BPUlRfUENJX1NGX05VTUJFUixcXG4gXFx0XFx0XFx0XFx0YXR0cnMtXFx1MDAzZXBjaV9zZi5zZikpXFxuIFxcdFxcdFxcdHJldHVybiAtRU1TR1NJWkU7XFxuK1xcdFxcdGlmIChubGFfcHV0X3U4KG1zZywgREVWTElOS19BVFRSX1BPUlRfRVhURVJOQUwsIGF0dHJzLVxcdTAwM2VwY2lfc2YuZXh0ZXJuYWwpKVxcbitcXHRcXHRcXHRyZXR1cm4gLUVNU0dTSVpFO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBERVZMSU5LX1BPUlRfRkxBVk9VUl9QSFlTSUNBTDpcXG4gXFx0Y2FzZSBERVZMSU5LX1BPUlRfRkxBVk9VUl9DUFU6XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjM1OjE2LjQzMzI5OTcyMVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjcyOTg3NjE5MjQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVERFVlNJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRldmxpbmtfbmxfcG9ydF9nZXRfZG9pdFwiLFxuICAgIFwiZGV2bGlua19ubF9wb3J0X2dldF9kdW1waXRcIixcbiAgICBcImRldmxpbmtfbmxfcG9ydF9uZXdfZG9pdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBuZXcgbmV0bGluayBhdHRyaWJ1dGUgREVWTElOS19BVFRSX1BPUlRfRVhURVJOQUwgdG8gdGhlIG91dHB1dCBvZiBkZXZsaW5rX25sX3BvcnRfYXR0cnNfcHV0IGZvciBQQ0kgc3ViZnVuY3Rpb25zLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGRldmxpbmsgbmV0bGluayBBUEkgYW5kIGNhbiBiZSB0ZXN0ZWQgYnkgZnV6emluZyB0aGUgZGV2bGluayBwb3J0IG5ldGxpbmsgaGFuZGxlcnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGZkN2E2M2Y1ZGQwYWU0N2Q5ZWRlYWE5NTEwNTgxOGM0YzM3ZWU2NDFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzIDA5OjM1OjE0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2RldmxpbmsvcG9ydC5jIGIvbmV0L2RldmxpbmsvcG9ydC5jXG5pbmRleCBkYzgyY2FjNjhlN2QwLi4xNTI4ZjJkMTQ4ZGZjIDEwMDY0NFxuLS0tIGEvbmV0L2RldmxpbmsvcG9ydC5jXG4rKysgYi9uZXQvZGV2bGluay9wb3J0LmNcbkBAIC0yNjcsNiArMjY3LDggQEAgc3RhdGljIGludCBkZXZsaW5rX25sX3BvcnRfYXR0cnNfcHV0KHN0cnVjdCBza19idWZmICptc2csXG4gXHRcdCAgICBubGFfcHV0X3UzMihtc2csIERFVkxJTktfQVRUUl9QT1JUX1BDSV9TRl9OVU1CRVIsXG4gXHRcdFx0XHRhdHRycy1cdTAwM2VwY2lfc2Yuc2YpKVxuIFx0XHRcdHJldHVybiAtRU1TR1NJWkU7XG4rXHRcdGlmIChubGFfcHV0X3U4KG1zZywgREVWTElOS19BVFRSX1BPUlRfRVhURVJOQUwsIGF0dHJzLVx1MDAzZXBjaV9zZi5leHRlcm5hbCkpXG4rXHRcdFx0cmV0dXJuIC1FTVNHU0laRTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIERFVkxJTktfUE9SVF9GTEFWT1VSX1BIWVNJQ0FMOlxuIFx0Y2FzZSBERVZMSU5LX1BPUlRfRkxBVk9VUl9DUFU6XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTozNToxNi40MzMzMDI3NDFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NjYyMzEzMDMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRGV2bGluayBOZXRsaW5rIEF0dHJpYnV0ZSBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2guIEl0J3MgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGFkZGl0aW9uIHRvIGBuZXQvZGV2bGluay9wb3J0LmNgLiBXZSdyZSBhZGRpbmcgYSBuZXcgbmV0bGluayBhdHRyaWJ1dGUsIGBERVZMSU5LX0FUVFJfUE9SVF9FWFRFUk5BTGAsIHdpdGhpbiB0aGUgYGRldmxpbmtfbmxfcG9ydF9hdHRyc19wdXRgIGZ1bmN0aW9uLiBFc3NlbnRpYWxseSwgaXQgYXBwZWFycyB0aGF0IHRoaXMgbmV3IGF0dHJpYnV0ZSB3aWxsIGJlIHBhcnQgb2YgdGhlIFBDSSBzZWNvbmRhcnkgZnVuY3Rpb24gaW5mb3JtYXRpb24gd2UgYXJlIHBhc3Npbmcgb3ZlciBuZXRsaW5rLlxuXG5JIHNlZSB0aGF0IHRoZSBjb2RlIG1vZGlmaWNhdGlvbiBpcyBtaW5pbWFsOyB3ZSdyZSBqdXN0IGFkZGluZyBhIGNhbGwgdG8gYG5sYV9wdXRfdThgIHRvIGluY2x1ZGUgdGhlIGBleHRlcm5hbGAgZmllbGQgZnJvbSBgYXR0cnMtXHUwMDNlcGNpX3NmYC4gSSBzaG91bGQgdmVyaWZ5IHRoYXQgdGhlIGBhdHRycy1cdTAwM2VwY2lfc2YuZXh0ZXJuYWxgIGZpZWxkIGlzIHBvcHVsYXRlZCwgYW5kIHdoZXRoZXIgdGhpcyBuZXcgYXR0cmlidXRlIGlzIHVzZWQgb3IgcmVxdWlyZWQgYnkgYW55IG90aGVyIGZ1bmN0aW9uLiBJIHdvdWxkIG5lZWQgdG8gdHJhY2UgdGhlIHVzYWdlIG9mIHRoaXMgYXR0cmlidXRlIHRvIGJlIHN1cmUuXG5cblRoaXMgbG9va3MgbGlrZSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIGRpcmVjdCBleHRlbnNpb24gb2YgdGhlIGRldmxpbmsgbmV0bGluayBBUEkgdG8gcHJvdmlkZSBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwb3J0LiBJIG5lZWQgdG8gYmUgc3VyZSB0aGUgc2VtYW50aWNzIG9mIGBERVZMSU5LX0FUVFJfUE9SVF9FWFRFUk5BTGAgYXJlIGNvcnJlY3RseSBkZWZpbmVkIGluIHJlbGF0aW9uIHRvIGV4aXN0aW5nIGF0dHJpYnV0ZXMuIEknbGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlIGRldmxpbmsgY29yZSBhbmQgdGhlIGJyb2FkZXIgbmV0bGluayBpbmZyYXN0cnVjdHVyZSB0byBtYWtlIHN1cmUgdGhpcyBuZXcgYXR0cmlidXRlIGlzIGhhbmRsZWQgY29ycmVjdGx5IGFuZCBkb2Vzbid0IGludHJvZHVjZSBhbnkgcmVncmVzc2lvbnMuIEl0J3MgaW1wb3J0YW50IHRvIGVuc3VyZSB0aGlzIGlzIGNvcnJlY3RseSBoYW5kbGVkIGluIGJvdGggdGhlIGtlcm5lbCBhbmQsIGVxdWFsbHkgaW1wb3J0YW50bHksIGFueSB1c2VyLXNwYWNlIHRvb2xpbmcgb3IgZGFlbW9ucyB0aGF0IGludGVyYWN0IHdpdGggdGhpcyBuZXRsaW5rIGludGVyZmFjZS4gSSdsbCBuZWVkIHRvIHRoaW5rIGFib3V0IGhvdyB0aGlzIGFmZmVjdHMgZXhpc3RpbmcgdXNlcnMgb2YgdGhlIEFQSSwgYW5kIHdoZXRoZXIgaXQgcmVxdWlyZXMgYW55IGNvbXBhdGliaWxpdHkgY29uc2lkZXJhdGlvbnMgb3IgdmVyc2lvbmluZyBzY2hlbWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDgzLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjg0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6MzU6MjIuMDk1NjE4ODgyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwODM3MTE0MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXZsaW5rX25sX3BvcnRfYXR0cnNfcHV0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9kZXZsaW5rL3BvcnQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvZGV2bGluay9wb3J0LmM9MjE5PXNpemVfdCBkZXZsaW5rX25sX3BvcnRfaGFuZGxlX3NpemUoc3RydWN0IGRldmxpbmtfcG9ydCAqZGV2bGlua19wb3J0KVxcbi0tXFxubmV0L2RldmxpbmsvcG9ydC5jLTIyOC1cXG5uZXQvZGV2bGluay9wb3J0LmM6MjI5OnN0YXRpYyBpbnQgZGV2bGlua19ubF9wb3J0X2F0dHJzX3B1dChzdHJ1Y3Qgc2tfYnVmZiAqbXNnLFxcbm5ldC9kZXZsaW5rL3BvcnQuYy0yMzAtXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgZGV2bGlua19wb3J0ICpkZXZsaW5rX3BvcnQpXFxuLS1cXG5uZXQvZGV2bGluay9wb3J0LmM9NDg5PXN0YXRpYyBpbnQgZGV2bGlua19ubF9wb3J0X2ZpbGwoc3RydWN0IHNrX2J1ZmYgKm1zZyxcXG4tLVxcbm5ldC9kZXZsaW5rL3BvcnQuYy01MjktXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNmRldmxpbmtfcG9ydC1cXHUwMDNldHlwZV9sb2NrKTtcXG5uZXQvZGV2bGluay9wb3J0LmM6NTMwOlxcdGlmIChkZXZsaW5rX25sX3BvcnRfYXR0cnNfcHV0KG1zZywgZGV2bGlua19wb3J0KSlcXG5uZXQvZGV2bGluay9wb3J0LmMtNTMxLVxcdFxcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTozNToyMi4yMDQwMDAwNzVaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjY4MTQ3MzU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipUcmFjaW5nIHRoZSBEYXRhIFBhdGg6IGRldmxpbmtfbmxfcG9ydF9hdHRyc19wdXQgYW5kIGRldmxpbmtfbmxfcG9ydF9maWxsKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYGRldmxpbmtfbmxfcG9ydF9hdHRyc19wdXRgLiBUaGUgY29tbWVudCB0ZWxscyBtZSB0aGlzIGlzIHVzZWQgYnkgYGRldmxpbmtfbmxfcG9ydF9maWxsYC4gTWFrZXMgc2Vuc2UsIHRoZSBsYXR0ZXIgcHJvYmFibHkgZmVlZHMgdGhlIGRhdGEgdGhpcyBmdW5jdGlvbiBzZXJpYWxpemVzLiAgTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbGFyZ2VyIGNvbnRleHQuIE15IG5leHQgbW92ZSBpcyB0byB0cmFjZSAqd2hlcmUqIGBkZXZsaW5rX25sX3BvcnRfZmlsbGAgaXRzZWxmIGlzIGNhbGxlZC4gVGhhdCB3aWxsIHNob3cgbWUgdGhlIGhpZ2hlci1sZXZlbCBmdW5jdGlvbnMgb3JjaGVzdHJhdGluZyB0aGUgcG9wdWxhdGlvbiBvZiB0aGVzZSBkZXZsaW5rIHBvcnQgYXR0cmlidXRlcy4gIFVuZGVyc3RhbmRpbmcgdGhlIGNhbGwgY2hhaW4gaXMga2V5IHRvIGZpZ3VyaW5nIG91dCB0aGUgZnVsbCBmbG93IG9mIGluZm9ybWF0aW9uIGFuZCB0aGUgcG9pbnRzIG9mIGludGVyYWN0aW9uIHdpdGhpbiB0aGUga2VybmVsLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTk5LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6MzU6MjUuODcyMTUyNTczWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExODU5MzI3MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXZsaW5rX25sX3BvcnRfZmlsbFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvZGV2bGluay9wb3J0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2RldmxpbmsvcG9ydC5jPTQ1Mz1kZXZsaW5rX25sX3BvcnRfZnVuY3Rpb25fYXR0cnNfcHV0KHN0cnVjdCBza19idWZmICptc2csIHN0cnVjdCBkZXZsaW5rX3BvcnQgKnBvcnQsXFxuLS1cXG5uZXQvZGV2bGluay9wb3J0LmMtNDg4LVxcbm5ldC9kZXZsaW5rL3BvcnQuYzo0ODk6c3RhdGljIGludCBkZXZsaW5rX25sX3BvcnRfZmlsbChzdHJ1Y3Qgc2tfYnVmZiAqbXNnLFxcbm5ldC9kZXZsaW5rL3BvcnQuYy00OTAtXFx0XFx0XFx0XFx0c3RydWN0IGRldmxpbmtfcG9ydCAqZGV2bGlua19wb3J0LFxcbi0tXFxubmV0L2RldmxpbmsvcG9ydC5jPTU0OT1zdGF0aWMgdm9pZCBkZXZsaW5rX3BvcnRfbm90aWZ5KHN0cnVjdCBkZXZsaW5rX3BvcnQgKmRldmxpbmtfcG9ydCxcXG4tLVxcbm5ldC9kZXZsaW5rL3BvcnQuYy01NjUtXFxubmV0L2RldmxpbmsvcG9ydC5jOjU2NjpcXHRlcnIgPSBkZXZsaW5rX25sX3BvcnRfZmlsbChtc2csIGRldmxpbmtfcG9ydCwgY21kLCAwLCAwLCAwLCBOVUxMKTtcXG5uZXQvZGV2bGluay9wb3J0LmMtNTY3LVxcdGlmIChlcnIpIHtcXG4tLVxcbm5ldC9kZXZsaW5rL3BvcnQuYz01OTc9aW50IGRldmxpbmtfbmxfcG9ydF9nZXRfZG9pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxubmV0L2RldmxpbmsvcG9ydC5jLTYwNi1cXG5uZXQvZGV2bGluay9wb3J0LmM6NjA3OlxcdGVyciA9IGRldmxpbmtfbmxfcG9ydF9maWxsKG1zZywgZGV2bGlua19wb3J0LCBERVZMSU5LX0NNRF9QT1JUX05FVyxcXG5uZXQvZGV2bGluay9wb3J0LmMtNjA4LVxcdFxcdFxcdFxcdCAgIGluZm8tXFx1MDAzZXNuZF9wb3J0aWQsIGluZm8tXFx1MDAzZXNuZF9zZXEsIDAsXFxuLS1cXG5uZXQvZGV2bGluay9wb3J0LmM9NjE5PWRldmxpbmtfbmxfcG9ydF9nZXRfZHVtcF9vbmUoc3RydWN0IHNrX2J1ZmYgKm1zZywgc3RydWN0IGRldmxpbmsgKmRldmxpbmssXFxuLS1cXG5uZXQvZGV2bGluay9wb3J0LmMtNjI3LVxcdHhhX2Zvcl9lYWNoX3N0YXJ0KFxcdTAwMjZkZXZsaW5rLVxcdTAwM2Vwb3J0cywgcG9ydF9pbmRleCwgZGV2bGlua19wb3J0LCBzdGF0ZS1cXHUwMDNlaWR4KSB7XFxubmV0L2RldmxpbmsvcG9ydC5jOjYyODpcXHRcXHRlcnIgPSBkZXZsaW5rX25sX3BvcnRfZmlsbChtc2csIGRldmxpbmtfcG9ydCxcXG5uZXQvZGV2bGluay9wb3J0LmMtNjI5LVxcdFxcdFxcdFxcdFxcdCAgIERFVkxJTktfQ01EX1BPUlRfTkVXLFxcbi0tXFxubmV0L2RldmxpbmsvcG9ydC5jPTkwMD1pbnQgZGV2bGlua19ubF9wb3J0X25ld19kb2l0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuLS1cXG5uZXQvZGV2bGluay9wb3J0LmMtOTQ3LVxcdH1cXG5uZXQvZGV2bGluay9wb3J0LmM6OTQ4OlxcdGVyciA9IGRldmxpbmtfbmxfcG9ydF9maWxsKG1zZywgZGV2bGlua19wb3J0LCBERVZMSU5LX0NNRF9QT1JUX05FVyxcXG5uZXQvZGV2bGluay9wb3J0LmMtOTQ5LVxcdFxcdFxcdFxcdCAgIGluZm8tXFx1MDAzZXNuZF9wb3J0aWQsIGluZm8tXFx1MDAzZXNuZF9zZXEsIDAsIE5VTEwpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTozNToyNS45OTA3NTMxMzVaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjcwNzk2NTc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoaXMgRGV2bGluayBOZXRsaW5rIEFQSSBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyBJIHNlZSB0aGF0IHRoZSBgZGV2bGlua19ubF9wb3J0X2ZpbGxgIGZ1bmN0aW9uIGlzIGNlbnRyYWwgaGVyZS4gVGhhdCBmdW5jdGlvbiBpcyB1c2VkIGluIHNldmVyYWwgTmV0bGluayBBUEkgaGFuZGxlcnM6IGBkZXZsaW5rX25sX3BvcnRfZ2V0X2RvaXRgLCBgZGV2bGlua19ubF9wb3J0X2dldF9kdW1wX29uZWAsIGBkZXZsaW5rX25sX3BvcnRfbmV3X2RvaXRgLCBhbmQgYGRldmxpbmtfcG9ydF9ub3RpZnlgLiBUaGVzZSBhcmUgdGhlIGNvcmUgZW50cnkgcG9pbnRzIGZvciBkZWFsaW5nIHdpdGggZGV2bGluayBwb3J0cyBvdmVyIE5ldGxpbmsuIFRoZSBwYXRjaCB0YXJnZXRzIGBkZXZsaW5rX25sX3BvcnRfYXR0cnNfcHV0YCwgd2hpY2ggaXMgY2FsbGVkICpieSogYGRldmxpbmtfbmxfcG9ydF9maWxsYC4gQWhhLCBhbmQgaXQncyBhZGRpbmcgYSBuZXcgYXR0cmlidXRlLCBgREVWTElOS19BVFRSX1BPUlRfRVhURVJOQUxgLCB0byB0aGUgb3V0cHV0IG9mIGBkZXZsaW5rX25sX3BvcnRfYXR0cnNfcHV0YC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIG5ldyBhdHRyaWJ1dGUgYmVpbmcgZXhwb3NlZC4gRGVmaW5pdGVseSBzb21ldGhpbmcgdGhhdCBuZWVkcyBmdXp6aW5nLlxuXG5JIHNob3VsZCBtYWtlIGEgbm90ZSBvZiB0aG9zZSBzcGVjaWZpYyBmdW5jdGlvbnM6IGBkZXZsaW5rX25sX3BvcnRfZ2V0X2RvaXRgLCBgZGV2bGlua19ubF9wb3J0X2dldF9kdW1wX29uZWAsIGFuZCBgZGV2bGlua19ubF9wb3J0X25ld19kb2l0YC4gSSBuZWVkIHRvIGVuc3VyZSB0aGUgZnV6emluZyBjb3ZlcnMgdGhlbS5cblxuTm93LCBsZXQgbWUganVzdCBxdWlja2x5IGNoZWNrIHRoZSBidWlsZCBjb25maWd1cmF0aW9uLiBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGlzIGFjdHVhbGx5IGJ1aWx0IGludG8gdGhlIGtlcm5lbCB3ZSBhcmUgdGVzdGluZy4gRGV2bGluayBpcyBlbmFibGVkIGJ5IGBDT05GSUdfTkVUX0RFVkxJTktgLiBXYWl0LCBpdCBsb29rcyBsaWtlIGl0IGlzIGFsd2F5cyBidWlsdCBpZiBORVQgaXMgZW5hYmxlZC4gT3IgaXMgaXQgYENPTkZJR19ORVRfREVWTElOS2A/IEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayB0aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTIxLCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjM1OjMxLjI2MTU1MzUyMVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDc2OTE0OTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9ERVZMSU5LXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L0tjb25maWc9NDc5PWNvbmZpZyBORVRfU09DS19NU0dcXG4tLVxcbm5ldC9LY29uZmlnLTQ4Ni1cXG5uZXQvS2NvbmZpZzo0ODc6Y29uZmlnIE5FVF9ERVZMSU5LXFxubmV0L0tjb25maWctNDg4LVxcdGJvb2xcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6MzU6MzEuNTA5MjUzNzU1WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA0ODkzNjQ1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBgbmV0L2RldmxpbmsvTWFrZWZpbGVgKipcblxuT2theSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgc29tZXRoaW5nIHJlbGF0ZWQgdG8gZGV2aWNlIGxpbmtpbmcuIFRoZSBsb2dpY2FsIGZpcnN0IHN0ZXAsIGFzIGFsd2F5cywgaXMgdG8gY2hlY2sgdGhlIGBuZXQvZGV2bGluay9NYWtlZmlsZWAuIFRoYXQncyB3aGVyZSBJJ2QgZXhwZWN0IHRvIGZpbmQgdGhlIGJ1aWxkIHJ1bGVzLCBkZXBlbmRlbmNpZXMsIGFuZCBwcm9iYWJseSBzb21lIGNsdWVzIGFib3V0IGhvdyB0aGUgZGV2bGluayBzdWJzeXN0ZW0gaXMgc3RydWN0dXJlZCB3aXRoaW4gdGhlIGtlcm5lbCdzIGJ1aWxkIHByb2Nlc3MuIEhvcGVmdWxseSwgaXQnbGwgaWxsdW1pbmF0ZSB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIGRpZmZlcmVudCBjb21wb25lbnRzIGFuZCBob3cgdGhleSdyZSBjb21waWxlZC4gSXTigJlsbCBhbHNvIGJlIHVzZWZ1bCB0byBzZWUgaG93IGl0IGludGVncmF0ZXMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgbmV0d29ya2luZyBzdGFjay4gSSdtIGhvcGluZyB0byBxdWlja2x5IGlkZW50aWZ5IHRoZSBrZXkgYnVpbGQgdGFyZ2V0cyBhbmQgYW55IHBvdGVudGlhbCBhcmVhcyBvZiBjb25jZXJuIGZvciB3aGF0ZXZlciB0YXNrIEkgaGF2ZSBpbiBtaW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjIyLCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6MzU6MzQuNTU4MTk0MTcyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTg2ODE3ODMsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRldmxpbmtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2RldmxpbmsvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjM1OjM0LjY3Njg4OTE3NVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDM5NzE4MjM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IGltbWVkaWF0ZSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIE5ldHdvcmsgRGV2aWNlIExpbmsgQnVpbGQgUHJvY2VzcyoqXG5cbk9rYXksIGhvbGQgb24gYSBtaW51dGUuIFRoaXMganVzdCBkb2Vzbid0IGZlZWwgcmlnaHQuIFRoZSBidWlsZCBzeXN0ZW0sIHNwZWNpZmljYWxseSBgbmV0L2RldmxpbmsvTWFrZWZpbGVgLCBpc24ndCBwbGF5aW5nIGJhbGwgb3IgaXNuJ3QgcG9pbnRpbmcgdG8gdGhlIGNvcnJlY3QgY29kZSB3aGVuIEknbSBleHBlY3RpbmcgYGRldmxpbmtgIHRvIGJlIHRoZXJlLiBTb21ldGhpbmcncyBvZmYsIGFuZCBpdCdzIG1ha2luZyBtZSBwYXVzZS4gQWxyaWdodCwgSSBuZWVkIHRvIHpvb20gb3V0IGEgYml0LiBUaW1lIHRvIGNoZWNrIHRoZSBlbmNvbXBhc3NpbmcgYG5ldC9NYWtlZmlsZWAuIFRoYXQncyB3aGVyZSB0aGUgdG9wLWxldmVsIG9yY2hlc3RyYXRpb24gdXN1YWxseSBoYXBwZW5zLCBzbyBJIG5lZWQgdG8gZ28gdXBzdHJlYW0gdG8gZmlndXJlIG91dCB3aGF0J3MgZ29pbmcgb24gd2l0aCBob3cgYGRldmxpbmtgIGlzIHN1cHBvc2VkIHRvIGJlIGhhbmRsZWQgaW4gdGhlIGJyb2FkZXIgbmV0d29yayBzdWJzeXN0ZW0gYnVpbGQuIExldCdzIHNlZSB3aGF0J3MgYmVpbmcgaW5jbHVkZWQgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4MzYsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTozNTozOC43MTY2MTA3NTlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MzE2NTk2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXZsaW5rXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvTWFrZWZpbGU9MjU9b2JqLSQoQ09ORklHX0JSSURHRSlcXHRcXHQrPSBicmlkZ2UvXFxubmV0L01ha2VmaWxlOjI2Om9iai0kKENPTkZJR19ORVRfREVWTElOSylcXHQrPSBkZXZsaW5rL1xcbm5ldC9NYWtlZmlsZS0yNy1vYmoteVxcdFxcdFxcdFxcdCs9IGRzYS9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6MzU6MzguODg5NzgzNDI4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwMjk4MDA0NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzcywgZ2l2ZW4gbXkgZXhwZXJ0aXNlOlxuXG4qKkNoZWNraW5nIEtlcm5lbCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIHRoZSBzeXN0ZW0gbmVlZHMgYENPTkZJR19ORVRfREVWTElOS2AuIEJ1dCBob2xkIG9uLCBJIHJlbWVtYmVyIHRoYXQgYE5FVF9ERVZMSU5LYCBpdHNlbGYgaXMgYSBzaW1wbGUgYm9vbGVhbiBjb25maWd1cmF0aW9uIG9wdGlvbiwgYW5kIGltcG9ydGFudGx5LCBpdCdzICpub3QqIGEgcHJvbXB0LiBUaGF0IG1lYW5zIGl04oCZcyBiZWluZyBwdWxsZWQgaW4gYnkgZGVwZW5kZW5jaWVzLCBub3QgZGlyZWN0bHkgYnkgdXNlciBzZWxlY3Rpb24uIE5vdywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgKndoYXQqIGV4YWN0bHkgaXMgZW5hYmxpbmcgYE5FVF9ERVZMSU5LYC4gVGltZSB0byB0cmFjZSB0aGUgY29uZmlnIGRlcGVuZGVuY2llcyB0byBmaW5kIHRoZSByb290IGNhdXNlIG9mIGl0cyBzZWxlY3Rpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyAqcmVhbGx5KiBkcml2aW5nIHRoaXMgcmVxdWlyZW1lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUxMzIsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTozNTo0NC45MTk1ODc1OTZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3MDE0Mzk1NDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2VsZWN0IE5FVF9ERVZMSU5LXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2NyeXB0by9tYXJ2ZWxsL0tjb25maWc9NDA9Y29uZmlnIENSWVBUT19ERVZfT0NURU9OVFgyX0NQVFxcbi0tXFxuZHJpdmVycy9jcnlwdG8vbWFydmVsbC9LY29uZmlnLTUxLVxcdHNlbGVjdCBDUllQVE9fQVVUSEVOQ1xcbmRyaXZlcnMvY3J5cHRvL21hcnZlbGwvS2NvbmZpZzo1MjpcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL2NyeXB0by9tYXJ2ZWxsL0tjb25maWctNTMtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9kcGxsL3psMzA3M3gvS2NvbmZpZz0zPWNvbmZpZyBaTDMwNzNYXFxuLS1cXG5kcml2ZXJzL2RwbGwvemwzMDczeC9LY29uZmlnLTYtXFx0c2VsZWN0IERQTExcXG5kcml2ZXJzL2RwbGwvemwzMDczeC9LY29uZmlnOjc6XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuZHJpdmVycy9kcGxsL3psMzA3M3gvS2NvbmZpZy04LVxcdHNlbGVjdCBSRUdNQVBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NjA0PWNvbmZpZyBORVRERVZTSU1cXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctNjA5LVxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfTU9DSyB8fCBQVFBfMTU4OF9DTE9DS19NT0NLPW5cXG5kcml2ZXJzL25ldC9LY29uZmlnOjYxMDpcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL25ldC9LY29uZmlnLTYxMS1cXHRzZWxlY3QgUEFHRV9QT09MXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vS2NvbmZpZz0xNjg9Y29uZmlnIENBTl9LVkFTRVJfUENJRUZEXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vS2NvbmZpZy0xNzAtXFx0dHJpc3RhdGUgXFxcIkt2YXNlciBQQ0llIEZEIGNhcmRzXFxcIlxcbmRyaXZlcnMvbmV0L2Nhbi9LY29uZmlnOjE3MTpcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL25ldC9jYW4vS2NvbmZpZy0xNzItXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3VzYi9LY29uZmlnPTMxPWNvbmZpZyBDQU5fRVRBU19FUzU4WFxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3VzYi9LY29uZmlnLTMzLVxcdHNlbGVjdCBDUkMxNlxcbmRyaXZlcnMvbmV0L2Nhbi91c2IvS2NvbmZpZzozNDpcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL25ldC9jYW4vdXNiL0tjb25maWctMzUtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3VzYi9LY29uZmlnPTY3PWNvbmZpZyBDQU5fS1ZBU0VSX1VTQlxcbmRyaXZlcnMvbmV0L2Nhbi91c2IvS2NvbmZpZy02OC1cXHR0cmlzdGF0ZSBcXFwiS3Zhc2VyIENBTi9VU0IgaW50ZXJmYWNlXFxcIlxcbmRyaXZlcnMvbmV0L2Nhbi91c2IvS2NvbmZpZzo2OTpcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL25ldC9jYW4vdXNiL0tjb25maWctNzAtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL0tjb25maWc9MTk9Y29uZmlnIEVOQV9FVEhFUk5FVFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL0tjb25maWctMjMtXFx0c2VsZWN0IERJTUxJQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9LY29uZmlnOjI0OlxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9LY29uZmlnLTI1LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9LY29uZmlnPTE2OT1jb25maWcgUERTX0NPUkVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9LY29uZmlnLTE3Mi1cXHRzZWxlY3QgQVVYSUxJQVJZX0JVU1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9LY29uZmlnOjE3MzpcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvS2NvbmZpZy0xNzQtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZz0yMDc9Y29uZmlnIEJOWFRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjEyLVxcdHNlbGVjdCBDUkMzMlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc6MjEzOlxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjE0LVxcdHNlbGVjdCBQQUdFX1BPT0xcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc9MjU4PWNvbmZpZyBCTkdFXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTI2MC1cXHRkZXBlbmRzIG9uIFBDSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc6MjYxOlxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjYyLVxcdHNlbGVjdCBQQUdFX1BPT0xcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnPTY4PWNvbmZpZyBMSVFVSURJT1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWctNzUtXFx0c2VsZWN0IExJUVVJRElPX0NPUkVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZzo3NjpcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZy03Ny1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZz0yPWNvbmZpZyBGU0xfRFBBQTJfRVRIXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZy03LVxcdHNlbGVjdCBGU0xfWEdNQUNfTURJT1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9LY29uZmlnOjg6XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL0tjb25maWctOS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mdW5naWJsZS9mdW5ldGgvS2NvbmZpZz02PWNvbmZpZyBGVU5fRVRIXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mdW5naWJsZS9mdW5ldGgvS2NvbmZpZy05LVxcdGRlcGVuZHMgb24gVExTIFxcdTAwMjZcXHUwMDI2IFRMU19ERVZJQ0UgfHwgVExTX0RFVklDRT1uXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnVuZ2libGUvZnVuZXRoL0tjb25maWc6MTA6XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnVuZ2libGUvZnVuZXRoL0tjb25maWctMTEtXFx0c2VsZWN0IEZVTl9DT1JFXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZz05MT1jb25maWcgSE5TM1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWctOTMtXFx0ZGVwZW5kcyBvbiBQQ0lcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZzo5NDpcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZy05NS1cXHRzZWxlY3QgUEFHRV9QT09MXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvS2NvbmZpZz02PWNvbmZpZyBISU5JQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL0tjb25maWctOC1cXHRkZXBlbmRzIG9uIChQQ0lfTVNJIFxcdTAwMjZcXHUwMDI2IChYODYgfHwgQVJNNjQpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9LY29uZmlnOjk6XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL0tjb25maWctMTAtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZz0xNDU9Y29uZmlnIElYR0JFXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTE1MC1cXHRzZWxlY3QgTURJT1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc6MTUxOlxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMTUyLVxcdHNlbGVjdCBQTERNRldcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc9MjI5PWNvbmZpZyBJNDBFXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTIzNS1cXHRzZWxlY3QgTElCSUVfQURNSU5RXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZzoyMzY6XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy0yMzctXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZz0yOTE9Y29uZmlnIElDRVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy0zMDItXFx0c2VsZWN0IExJQklFX0ZXTE9HIGlmIERFQlVHX0ZTXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZzozMDM6XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy0zMDQtXFx0c2VsZWN0IFBBQ0tJTkdcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc9OT1jb25maWcgT0NURU9OVFgyX0FGXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTExLVxcdHNlbGVjdCBPQ1RFT05UWDJfTUJPWFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc6MTI6XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy0xMy1cXHRkZXBlbmRzIG9uICg2NEJJVCBcXHUwMDI2XFx1MDAyNiBDT01QSUxFX1RFU1QpIHx8IEFSTTY0XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnPTMxPWNvbmZpZyBPQ1RFT05UWDJfUEZcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctMzMtXFx0c2VsZWN0IE9DVEVPTlRYMl9NQk9YXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzozNDpcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTM1LVxcdHNlbGVjdCBQQUdFX1BPT0xcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvS2NvbmZpZz02PWNvbmZpZyBQUkVTVEVSQVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9LY29uZmlnLTktXFx0ZGVwZW5kcyBvbiBCUklER0UgfHwgQlJJREdFPW5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL0tjb25maWc6MTA6XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9LY29uZmlnLTExLVxcdHNlbGVjdCBQSFlMSU5LXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L0tjb25maWc9Mjg9Y29uZmlnIE1MWDRfQ09SRVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9LY29uZmlnLTMxLVxcdHNlbGVjdCBBVVhJTElBUllfQlVTXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9LY29uZmlnOjMyOlxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvS2NvbmZpZy0zMy1cXHRkZWZhdWx0IG5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnPTY9Y29uZmlnIE1MWDVfQ09SRVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctOS1cXHRzZWxlY3QgQVVYSUxJQVJZX0JVU1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnOjEwOlxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTExLVxcdGRlcGVuZHMgb24gTUxYRlcgfHwgIU1MWEZXXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhmdy9LY29uZmlnPTY9Y29uZmlnIE1MWEZXXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhmdy9LY29uZmlnLTE0LVxcdHNlbGVjdCBYWl9ERUNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhmdy9LY29uZmlnOjE1OlxcdHNlbGVjdCBORVRfREVWTElOS1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZz02PWNvbmZpZyBNTFhTV19DT1JFXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJNZWxsYW5veCBUZWNobm9sb2dpZXMgU3dpdGNoIEFTSUNzIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZzo4OlxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWctOS1cXHRzZWxlY3QgTUxYRldcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZz0yMD1jb25maWcgRkJOSUNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZy0yNi1cXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnOjI3OlxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZy0yOC1cXHRzZWxlY3QgUEFHRV9QT09MXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL0tjb25maWc9MTU9Y29uZmlnIE1TQ0NfT0NFTE9UX1NXSVRDSF9MSUJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL0tjb25maWctMTYtXFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2MvS2NvbmZpZzoxNzpcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL0tjb25maWctMTgtXFx0c2VsZWN0IFJFR01BUF9NTUlPXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvS2NvbmZpZz0xOT1jb25maWcgTkZQXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvS2NvbmZpZy0yMy1cXHRkZXBlbmRzIG9uIFRMUyBcXHUwMDI2XFx1MDAyNiBUTFNfREVWSUNFIHx8IFRMU19ERVZJQ0U9blxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9LY29uZmlnOjI0OlxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9LY29uZmlnLTI1LVxcdHNlbGVjdCBDUkMzMlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcGVuc2FuZG8vS2NvbmZpZz0yMD1jb25maWcgSU9OSUNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3BlbnNhbmRvL0tjb25maWctMjMtXFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3BlbnNhbmRvL0tjb25maWc6MjQ6XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcGVuc2FuZG8vS2NvbmZpZy0yNS1cXHRzZWxlY3QgRElNTElCXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvS2NvbmZpZz03Nj1jb25maWcgUUVEXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvS2NvbmZpZy04MS1cXHRzZWxlY3QgQ1JDMzJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvS2NvbmZpZzo4MjpcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvS2NvbmZpZy04My1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvS2NvbmZpZz0xOT1jb25maWcgU0ZDXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvS2NvbmZpZy0yNC1cXHRzZWxlY3QgQ1JDMzJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvS2NvbmZpZzoyNTpcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvS2NvbmZpZy0yNi1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTI9Y29uZmlnIFNUTU1BQ19FVEhcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTItXFx0c2VsZWN0IFJFU0VUX0NPTlRST0xMRVJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjEzOlxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTQtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZz02NT1jb25maWcgVElfQ1BTV19TV0lUQ0hERVZcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctNzMtXFx0c2VsZWN0IFJFR01BUFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6NzQ6XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy03NS1cXHRpbXBseSBQSFlfVElfR01JSV9TRUxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc9OTY9Y29uZmlnIFRJX0szX0FNNjVfQ1BTV19OVVNTXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTk4LVxcdGRlcGVuZHMgb24gQVJDSF9LMyBcXHUwMDI2XFx1MDAyNiBPRiBcXHUwMDI2XFx1MDAyNiBUSV9LM19VRE1BX0dMVUVfTEFZRVJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjk5OlxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMTAwLVxcdHNlbGVjdCBUSV9EQVZJTkNJX01ESU9cXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZz05Nj1jb25maWcgSU9TTVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTk4LVxcdGRlcGVuZHMgb24gUENJXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnOjk5OlxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy0xMDAtXFx0c2VsZWN0IFJFTEFZIGlmIFdXQU5fREVCVUdGU1xcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZz0yMTA9Y29uZmlnIFBUUF8xNTg4X0NMT0NLX09DUFxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0yMTctXFx0ZGVwZW5kcyBvbiBDT01NT05fQ0xLXFxuZHJpdmVycy9wdHAvS2NvbmZpZzoyMTg6XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0yMTktXFx0c2VsZWN0IENSQzE2XFxuLS1cXG5uZXQvZHNhL0tjb25maWc9Mz1tZW51Y29uZmlnIE5FVF9EU0FcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZy0xMC1cXHRzZWxlY3QgUEhZTElOS1xcbm5ldC9kc2EvS2NvbmZpZzoxMTpcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5uZXQvZHNhL0tjb25maWctMTItXFx0aW1wbHkgTkVUX1NFTEZURVNUU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTozNTo1MC42MjEwMzQxNDRaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzcxMDcxMTc3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEZXZsaW5rIFRlc3RpbmcgU3RyYXRlZ3kqKlxuXG5Pa2F5LCBzbyB0aGUgYE5FVERFVlNJTWAgb3B0aW9uIHNlZW1zIGxpa2UgdGhlIGtleSBoZXJlLiBUaGUgY29kZSBjbGVhcmx5IGNob29zZXMgYE5FVF9ERVZMSU5LYCwgd2hpY2ggaXMgZXhhY3RseSB3aGF0IEknbSBsb29raW5nIGZvci4gSXQgbG9va3MgbGlrZSBhbGwgSSBoYXZlIHRvIGRvIGlzIGVuYWJsZSBgTkVUREVWU0lNYCwgYW5kIEkgc2hvdWxkIGJlIGFibGUgdG8gZ2V0IGEgc29saWQgdGVzdCBlbnZpcm9ubWVudCBnb2luZyBmb3IgZGV2bGluaywgbmljZSBhbmQgc2ltcGxlLlxuXG5CdXQgbGV0J3Mgbm90IGp1bXAgdGhlIGd1bjsgbGV0J3MgdmVyaWZ5IHRoYXQgdGhpcyBhY3R1YWxseSAqaXMqIGVub3VnaC4gT2theSwgeWVzLCBnb29kLCBpdCBhcHBlYXJzIHRoYXQgYE5FVERFVlNJTWAgKmlzKiBhIHZpcnR1YWwgZHJpdmVyIHRoYXQncyBidWlsdCBhcm91bmQgZGV2bGluay4gVGhhdCdzIGV4YWN0bHkgdGhlIGtpbmQgb2YgdGVzdCBkcml2ZXIgSSB3YXMgaG9waW5nIGZvci4gTm93LCBqdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSdsbCBxdWlja2x5IGNoZWNrIHRoZSBgS2NvbmZpZ2AgZmlsZSBpbiB0aGUgYGRyaXZlcnMvbmV0YCBkaXJlY3RvcnkgdG8gY29uZmlybS4gSSBhbHdheXMgYXBwcmVjaWF0ZSBhIGRvdWJsZS1jaGVjay5cblxuXG4iLCJJbnB1dFRva2VucyI6OTAzMywiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjM1OjU0LjMzMTc0OTMwOVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg5OTk1NzY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRERVZTSU1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnPTYwMj1zb3VyY2UgXFxcImRyaXZlcnMvbmV0L2h5cGVydi9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWctNjAzLVxcbmRyaXZlcnMvbmV0L0tjb25maWc6NjA0OmNvbmZpZyBORVRERVZTSU1cXG5kcml2ZXJzL25ldC9LY29uZmlnLTYwNS1cXHR0cmlzdGF0ZSBcXFwiU2ltdWxhdGVkIG5ldHdvcmtpbmcgZGV2aWNlXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTozNTo1NC41MjE3NTE2NzdaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg4OTcwNzM2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBORVRERVZTSU1gIENvbmZpZ3VyYXRpb24gYW5kIERldmxpbmsgQVBJKipcblxuT2theSwgc28gdGhlIGluaXRpYWwgaW1wcmVzc2lvbiBpcyB0aGF0IGVuYWJsaW5nIGBORVRERVZTSU1gIGlzIGEgc29saWQgbW92ZS4gTXkgbmV4dCB0aG91Z2h0IGlzIHRvIGludmVzdGlnYXRlIGlmIHRoZXJlIGFyZSByZWxhdGVkIGNvbmZpZ3VyYXRpb25zIHRoYXQgbWlnaHQgY29tcGxlbWVudCBpdC4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IGBkZXZsaW5rYCBpcyBhIGZ1bmRhbWVudGFsIG5ldGxpbmsgQVBJLCBhbmQgdGhpcyBwYXRjaCBzZWVtcyB0byBiZSBob25pbmcgaW4gb24gYGRldmxpbmtfbmxfcG9ydF9hdHRyc19wdXRgLCB3aGljaCBpcyBjYWxsZWQgd2l0aGluIGBkZXZsaW5rX25sX3BvcnRfZmlsbGAuIE15IGluaXRpYWwgZm9jdXMgbmVlZHMgdG8gYmUgb24gdGhlc2Uga2V5IHN5bWJvbHM6IGBkZXZsaW5rX25sX3BvcnRfZ2V0X2RvaXRgLCBgZGV2bGlua19ubF9wb3J0X2dldF9kdW1wX29uZWAsIGFuZCBgZGV2bGlua19ubF9wb3J0X25ld19kb2l0YC5cblxuSSdsbCBwcm9jZWVkIHRvIGV4YW1pbmUgYGRldmxpbmtfbmxfcG9ydF9nZXRfZG9pdGAgYW5kIGBkZXZsaW5rX25sX3BvcnRfbmV3X2RvaXRgIGluIGBuZXQvZGV2bGluay9wb3J0LmNgIHRvIGZ1bGx5IGdyYXNwIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2UgYW5kIGFzc2VzcyBpdHMgaW1wYWN0IG9uIHRoZSBsYXJnZXIgc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NDE5LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjM1OjU4LjQxMTQ2MjQwMVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU5MTAxNDQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRldmxpbmtfbmxfcG9ydF9nZXRfZG9pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvZGV2bGluay9wb3J0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2RldmxpbmsvcG9ydC5jPTU5Mj12b2lkIGRldmxpbmtfcG9ydHNfbm90aWZ5X3VucmVnaXN0ZXIoc3RydWN0IGRldmxpbmsgKmRldmxpbmspXFxuLS1cXG5uZXQvZGV2bGluay9wb3J0LmMtNTk2LVxcbm5ldC9kZXZsaW5rL3BvcnQuYzo1OTc6aW50IGRldmxpbmtfbmxfcG9ydF9nZXRfZG9pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbm5ldC9kZXZsaW5rL3BvcnQuYy01OTgte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTozNTo1OC41NzA1NzU1NDFaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY5MDI4OTY2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlLCB3aGF0J3Mgb24gbXkgbWluZCByZWdhcmRpbmcgdGhlc2UgZGV2bGluayBwb3J0IGZ1bmN0aW9ucy5cblxuKipEZWNvbnN0cnVjdGluZyBEZXZsaW5rIFBvcnQgT3BlcmF0aW9ucyoqXG5cbkhtbSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgZGV2bGluayBmdW5jdGlvbnM6IGBkZXZsaW5rX25sX3BvcnRfZ2V0X2R1bXBfb25lYCwgYGRldmxpbmtfbmxfcG9ydF9uZXdfZG9pdGAsIGBkZXZsaW5rX25sX3BvcnRfc2V0X2RvaXRgLCBhbmQgYGRldmxpbmtfbmxfcG9ydF9kZWxfZG9pdGAuIFNlZW1zIGxpa2UgYSBzdGFuZGFyZCBDUlVEIG9wZXJhdGlvbiBzZXR1cCBmb3IgTmV0bGluayBpbnRlcmFjdGlvbnMgd2l0aCBkZXZsaW5rIHBvcnRzLiBUaGUgb2J2aW91cyBxdWVzdGlvbiBub3cgaXMsIGFyZSB0aGVyZSBhbnkgKm90aGVyKiBmdW5jdGlvbnMgaW4gdGhpcyBzcGFjZSB0aGF0IEknbSBub3QgaW1tZWRpYXRlbHkgY29uc2lkZXJpbmc/IEkgZG91YnQgdGhlc2UgYXJlIHRoZSBvbmx5IG9uZXMuIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkaXZlIGludG8gdGhlIGltcGxlbWVudGF0aW9uIG9mIGBkZXZsaW5rX25sX3BvcnRfbmV3X2RvaXRgLCBzcGVjaWZpY2FsbHkgaW4gYG5ldC9kZXZsaW5rL3BvcnQuY2AuIFRoYXQgd2lsbCBiZSB3aGVyZSB0aGUgY29yZSBsb2dpYyBvZiBjcmVhdGluZyBhIG5ldyBwb3J0IHJlc2lkZXMsIHdoaWNoIHNob3VsZCBnaXZlIG1lIGEgc29saWQgdW5kZXJzdGFuZGluZyBvZiB0aGUgYXJjaGl0ZWN0dXJlLiBMZXQgbWUgZ28gdGFrZSBhIGxvb2sgdGhlcmUuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6OTk1NiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjM2OjAyLjI2MDg3MDYwN1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTc5MDgzMzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGV2bGlua19ubF9wb3J0X25ld19kb2l0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9kZXZsaW5rL3BvcnQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvZGV2bGluay9wb3J0LmM9ODkwPWludCBkZXZsaW5rX25sX3BvcnRfdW5zcGxpdF9kb2l0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuLS1cXG5uZXQvZGV2bGluay9wb3J0LmMtODk5LVxcbm5ldC9kZXZsaW5rL3BvcnQuYzo5MDA6aW50IGRldmxpbmtfbmxfcG9ydF9uZXdfZG9pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbm5ldC9kZXZsaW5rL3BvcnQuYy05MDEte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTozNjowMi4zNTg3ODU4NzFaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA1NzI3OTkzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoZSBwcm92aWRlZCB0ZXh0LCBzdW1tYXJpemVkIGluIHRoZSBmaXJzdCBwZXJzb24sIGFzc3VtaW5nIGFuIGV4cGVydCB1c2VyOlxuXG4qKkRpdmluZyBpbnRvIERldmxpbmsgUG9ydCBEdW1wKipcblxuT2theSwgc28gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBgZGV2bGlua19ubF9wb3J0X2dldF9kdW1wX29uZWAgZnVuY3Rpb24uIEkgcmVtZW1iZXIgaXQncyBpbiBgbmV0L2RldmxpbmsvcG9ydC5jYCwgc28gdGhhdCdzIHdoZXJlIEknbGwgc3RhcnQgZGlnZ2luZy4gVGhpcyBmdW5jdGlvbiBsaWtlbHkgaGFuZGxlcyB0aGUgbG93LWxldmVsIGRldGFpbHMgb2YgZHVtcGluZyBvciByZXRyaWV2aW5nIGluZm9ybWF0aW9uIGZvciBhIHNpbmdsZSBEZXZsaW5rIHBvcnQgZHVyaW5nIGEgTmV0bGluayBpbnRlcmFjdGlvbi4gSSBleHBlY3QgaXQnbGwgYmUgcmVzcG9uc2libGUgZm9yIGZvcm1hdHRpbmcgdGhlIGRhdGEgc3RydWN0dXJlIGFwcHJvcHJpYXRlbHksIGhhbmRsaW5nIHBvdGVudGlhbCBlcnJvcnMsIGFuZCBwb3RlbnRpYWxseSBkZWFsaW5nIHdpdGggdXNlci1zcGFjZSByZXF1ZXN0cyBmb3Igc3BlY2lmaWMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHBvcnQuIExldCdzIHNlZSBpZiBteSBtZW50YWwgbW9kZWwgaG9sZHMgdXAgb25jZSBJIGdldCBpbnRvIHRoZSBjb2RlLiBJJ20ga2VlbiB0byBzZWUgdGhlIHNwZWNpZmljIGZpZWxkcyBpdCBwdWxscyBhbmQgYW55IGZpbHRlcmluZyBvciBzZWN1cml0eSBjb25zaWRlcmF0aW9ucyBpbXBsZW1lbnRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA0MzEsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTozNjowNS40MTYwNjk2ODdaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNzc3MzExMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXZsaW5rX25sX3BvcnRfZ2V0X2R1bXBfb25lXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9kZXZsaW5rL3BvcnQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvZGV2bGluay9wb3J0LmM9NjE4PXN0YXRpYyBpbnRcXG5uZXQvZGV2bGluay9wb3J0LmM6NjE5OmRldmxpbmtfbmxfcG9ydF9nZXRfZHVtcF9vbmUoc3RydWN0IHNrX2J1ZmYgKm1zZywgc3RydWN0IGRldmxpbmsgKmRldmxpbmssXFxubmV0L2RldmxpbmsvcG9ydC5jLTYyMC1cXHRcXHRcXHQgICAgIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYiwgaW50IGZsYWdzKVxcbi0tXFxubmV0L2RldmxpbmsvcG9ydC5jPTY0Mj1pbnQgZGV2bGlua19ubF9wb3J0X2dldF9kdW1waXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKVxcbm5ldC9kZXZsaW5rL3BvcnQuYy02NDMte1xcbm5ldC9kZXZsaW5rL3BvcnQuYzo2NDQ6XFx0cmV0dXJuIGRldmxpbmtfbmxfZHVtcGl0KHNrYiwgY2IsIGRldmxpbmtfbmxfcG9ydF9nZXRfZHVtcF9vbmUpO1xcbm5ldC9kZXZsaW5rL3BvcnQuYy02NDUtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTozNjowNS41MzM5MTE3WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4NjM3OTk5ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBEZXZsaW5rIE5ldGxpbmsgUG9ydCBIYW5kbGVyKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJdCBsb29rcyBsaWtlIGBkZXZsaW5rX25sX3BvcnRfZ2V0X2R1bXBpdGAgaXMgdGhlIGtleSBmdW5jdGlvbiBoZXJlLCB0aGUgYWN0dWFsIHdvcmtob3JzZSBmb3IgdGhlIG5ldGxpbmsgaGFuZGxpbmcuIFRoZSBpbXBvcnRhbnQgdGhpbmcgdG8gdW5kZXJzdGFuZCBhcmUgdGhlIHJlbGF0ZWQgc3ltYm9scywgc3BlY2lmaWNhbGx5IGBkZXZsaW5rX25sX3BvcnRfZ2V0X2RvaXRgLCBgZGV2bGlua19ubF9wb3J0X2dldF9kdW1waXRgLCBhbmQgYGRldmxpbmtfbmxfcG9ydF9uZXdfZG9pdGAuIFRob3NlIGFyZSB0aGUgb25lcyB0byB6ZXJvIGluIG9uIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdy4gTm93LCBJIHNob3VsZCBwcm9iYWJseSB0YWtlIGEgbG9vayBhdCB3aGF0IGNhbGxzIGBkZXZsaW5rX25sX3BvcnRfZmlsbGAgYmVjYXVzZSB0aGF0J3MgbGlrZWx5IHdoZXJlIHRoZSBkYXRhIGlzIGJlaW5nIGNvbnN0cnVjdGVkIHRoYXQgdGhlc2UgZnVuY3Rpb25zIGFyZSBwcm9jZXNzaW5nLiBVbmRlcnN0YW5kaW5nIGl0cyBjYWxsZXJzIHdpbGwgcGFpbnQgYSBtdWNoIGNsZWFyZXIgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA4OTMsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTozNjowOS4zOTc3MTYxODVaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMTIyMjAyNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXZsaW5rX25sX3BvcnRfZmlsbFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvZGV2bGluay9wb3J0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2RldmxpbmsvcG9ydC5jPTQ1Mz1kZXZsaW5rX25sX3BvcnRfZnVuY3Rpb25fYXR0cnNfcHV0KHN0cnVjdCBza19idWZmICptc2csIHN0cnVjdCBkZXZsaW5rX3BvcnQgKnBvcnQsXFxuLS1cXG5uZXQvZGV2bGluay9wb3J0LmMtNDg4LVxcbm5ldC9kZXZsaW5rL3BvcnQuYzo0ODk6c3RhdGljIGludCBkZXZsaW5rX25sX3BvcnRfZmlsbChzdHJ1Y3Qgc2tfYnVmZiAqbXNnLFxcbm5ldC9kZXZsaW5rL3BvcnQuYy00OTAtXFx0XFx0XFx0XFx0c3RydWN0IGRldmxpbmtfcG9ydCAqZGV2bGlua19wb3J0LFxcbi0tXFxubmV0L2RldmxpbmsvcG9ydC5jPTU0OT1zdGF0aWMgdm9pZCBkZXZsaW5rX3BvcnRfbm90aWZ5KHN0cnVjdCBkZXZsaW5rX3BvcnQgKmRldmxpbmtfcG9ydCxcXG4tLVxcbm5ldC9kZXZsaW5rL3BvcnQuYy01NjUtXFxubmV0L2RldmxpbmsvcG9ydC5jOjU2NjpcXHRlcnIgPSBkZXZsaW5rX25sX3BvcnRfZmlsbChtc2csIGRldmxpbmtfcG9ydCwgY21kLCAwLCAwLCAwLCBOVUxMKTtcXG5uZXQvZGV2bGluay9wb3J0LmMtNTY3LVxcdGlmIChlcnIpIHtcXG4tLVxcbm5ldC9kZXZsaW5rL3BvcnQuYz01OTc9aW50IGRldmxpbmtfbmxfcG9ydF9nZXRfZG9pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxubmV0L2RldmxpbmsvcG9ydC5jLTYwNi1cXG5uZXQvZGV2bGluay9wb3J0LmM6NjA3OlxcdGVyciA9IGRldmxpbmtfbmxfcG9ydF9maWxsKG1zZywgZGV2bGlua19wb3J0LCBERVZMSU5LX0NNRF9QT1JUX05FVyxcXG5uZXQvZGV2bGluay9wb3J0LmMtNjA4LVxcdFxcdFxcdFxcdCAgIGluZm8tXFx1MDAzZXNuZF9wb3J0aWQsIGluZm8tXFx1MDAzZXNuZF9zZXEsIDAsXFxuLS1cXG5uZXQvZGV2bGluay9wb3J0LmM9NjE5PWRldmxpbmtfbmxfcG9ydF9nZXRfZHVtcF9vbmUoc3RydWN0IHNrX2J1ZmYgKm1zZywgc3RydWN0IGRldmxpbmsgKmRldmxpbmssXFxuLS1cXG5uZXQvZGV2bGluay9wb3J0LmMtNjI3LVxcdHhhX2Zvcl9lYWNoX3N0YXJ0KFxcdTAwMjZkZXZsaW5rLVxcdTAwM2Vwb3J0cywgcG9ydF9pbmRleCwgZGV2bGlua19wb3J0LCBzdGF0ZS1cXHUwMDNlaWR4KSB7XFxubmV0L2RldmxpbmsvcG9ydC5jOjYyODpcXHRcXHRlcnIgPSBkZXZsaW5rX25sX3BvcnRfZmlsbChtc2csIGRldmxpbmtfcG9ydCxcXG5uZXQvZGV2bGluay9wb3J0LmMtNjI5LVxcdFxcdFxcdFxcdFxcdCAgIERFVkxJTktfQ01EX1BPUlRfTkVXLFxcbi0tXFxubmV0L2RldmxpbmsvcG9ydC5jPTkwMD1pbnQgZGV2bGlua19ubF9wb3J0X25ld19kb2l0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuLS1cXG5uZXQvZGV2bGluay9wb3J0LmMtOTQ3LVxcdH1cXG5uZXQvZGV2bGluay9wb3J0LmM6OTQ4OlxcdGVyciA9IGRldmxpbmtfbmxfcG9ydF9maWxsKG1zZywgZGV2bGlua19wb3J0LCBERVZMSU5LX0NNRF9QT1JUX05FVyxcXG5uZXQvZGV2bGluay9wb3J0LmMtOTQ5LVxcdFxcdFxcdFxcdCAgIGluZm8tXFx1MDAzZXNuZF9wb3J0aWQsIGluZm8tXFx1MDAzZXNuZF9zZXEsIDAsIE5VTEwpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTozNjowOS40OTg5NDUxOTlaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkxNzQzMDIyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoaXMgY29kZSBzbmlwcGV0LCBleHByZXNzZWQgYXMgaWYgaXQncyBteSBvd24gdGhvdWdodCBwcm9jZXNzOlxuXG4qKlBvcnQgTm90aWZpY2F0aW9uIGFuZCBOZXRsaW5rIE9wZXJhdGlvbnM6IEEgUXVpY2sgQXNzZXNzbWVudCoqXG5cbkFscmlnaHQsIEknbSB0YWtpbmcgYSBsb29rIGF0IHRoaXMgYGRldmxpbmtgIHBvcnQgaGFuZGxpbmcuIEl0J3MgaW1wb3J0YW50IHRvIHJlbWVtYmVyIHRoYXQgYGRldmxpbmtfcG9ydF9ub3RpZnlgIGdldHMgdHJpZ2dlcmVkIGZvciBib3RoIHBvcnQgcmVnaXN0cmF0aW9uICphbmQqIHVucmVnaXN0cmF0aW9uLiBUaGF0J3MgYSBrZXkgb2JzZXJ2YXRpb24uIEl0J3MgYSBnZW5lcmFsIG5vdGlmaWNhdGlvbiBtZWNoYW5pc20sIGJ1dCB0aGUgcHJpbWFyeSBpbnRlcmFjdGlvbnMgd2l0aCB1c2Vyc3BhY2Ugc2VlbSB0byBvcmlnaW5hdGUgZnJvbSB0aGUgTmV0bGluayBpbnRlcmZhY2UuIFNwZWNpZmljYWxseSwgYGRldmxpbmtfbmxfcG9ydF9nZXRfZG9pdGAsIGBkZXZsaW5rX25sX3BvcnRfZ2V0X2R1bXBpdGAsIGFuZCBgZGV2bGlua19ubF9wb3J0X25ld19kb2l0YC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHBhdGggdGhlIGNvZGUgdGFrZXMuIEdpdmVuIHRoZSBjb250ZXh0LCBteSBtYWluIGNvbmNlcm4gcmlnaHQgbm93IGlzIHdoZXRoZXIgYGRldmxpbmtfbmxfcG9ydF9uZXdfZG9pdGAgaXMgYWN0dWFsbHkgYSByZWFjaGFibGUgZnVuY3Rpb24uIExldCdzIHNlZSBpZiB0aGlzIGZ1bmN0aW9uIGlzIGNvbm5lY3RlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE4NTYsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTozNjoxMy40MTYzNzk3ODFaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNzM4NzU0MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXZsaW5rX25sX3BvcnRfbmV3X2RvaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2RldmxpbmsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmM9NzAyPWNvbnN0IHN0cnVjdCBnZW5sX3NwbGl0X29wcyBkZXZsaW5rX25sX29wc1s3NV0gPSB7XFxuLS1cXG5uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5jLTc0OS1cXHRcXHQucHJlX2RvaXRcXHQ9IGRldmxpbmtfbmxfcHJlX2RvaXQsXFxubmV0L2RldmxpbmsvbmV0bGlua19nZW4uYzo3NTA6XFx0XFx0LmRvaXRcXHRcXHQ9IGRldmxpbmtfbmxfcG9ydF9uZXdfZG9pdCxcXG5uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5jLTc1MS1cXHRcXHQucG9zdF9kb2l0XFx0PSBkZXZsaW5rX25sX3Bvc3RfZG9pdCxcXG4tLVxcbm5ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmg9NTI9aW50IGRldmxpbmtfbmxfcG9ydF9zZXRfZG9pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKTtcXG5uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5oOjUzOmludCBkZXZsaW5rX25sX3BvcnRfbmV3X2RvaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbyk7XFxubmV0L2RldmxpbmsvbmV0bGlua19nZW4uaC01NC1pbnQgZGV2bGlua19ubF9wb3J0X2RlbF9kb2l0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pO1xcbi0tXFxubmV0L2RldmxpbmsvcG9ydC5jPTg5MD1pbnQgZGV2bGlua19ubF9wb3J0X3Vuc3BsaXRfZG9pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxubmV0L2RldmxpbmsvcG9ydC5jLTg5OS1cXG5uZXQvZGV2bGluay9wb3J0LmM6OTAwOmludCBkZXZsaW5rX25sX3BvcnRfbmV3X2RvaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG5uZXQvZGV2bGluay9wb3J0LmMtOTAxLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6MzY6MTMuNTQzNzc1MTQyWiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3NjY1ODM5NDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgTmV0bGluayBQYXRjaCoqXG5cbk9rYXksIHNvIEkgc2VlIHRoaXMgcGF0Y2ggaXMgYWJvdXQgbmV0bGluayBoYW5kbGVycywgc3BlY2lmaWNhbGx5IHJlZ2FyZGluZyBgZGV2bGlua2AuIFRoZSBrZXkgZnVuY3Rpb25hbCBjaGFuZ2UgaGVyZSBpcyB0aGUgaW50cm9kdWN0aW9uIG9mIGEgbmV3IGF0dHJpYnV0ZSwgYERFVkxJTktfQVRUUl9QT1JUX0VYVEVSTkFMYCwgd2hpY2ggd2lsbCBiZSBhZGRlZCB0byB0aGUgb3V0cHV0IG9mIGBkZXZsaW5rX25sX3BvcnRfYXR0cnNfcHV0YC4gVGhpcyBkZWZpbml0ZWx5IHdhcnJhbnRzIGZ1enppbmcsIG5vIHF1ZXN0aW9uLlxuXG5MZXQncyBzZWUsIHRoZSBmdW5jdGlvbnMgb2YgaW50ZXJlc3QgZm9yIHRoaXMgcGFydGljdWxhciBwYXRjaCBhcmUgYGRldmxpbmtfbmxfcG9ydF9nZXRfZG9pdGAsIGBkZXZsaW5rX25sX3BvcnRfZ2V0X2R1bXBpdGAsIGFuZCBgZGV2bGlua19ubF9wb3J0X25ld19kb2l0YC4gVGhvc2UgYXJlIG15IGZvY3VzIHBvaW50cyBmb3IgaW5pdGlhbCBpbnNwZWN0aW9uIGFuZCBwb3RlbnRpYWwgZnV6emluZyB0YXJnZXRzLlxuXG5SaWdodCwgbm93LCByZWdhcmRpbmcgdGhlIHRlc3RpbmcgZW52aXJvbm1lbnQuIFRoZSBwYXRjaCBtZW50aW9ucyBgTkVUREVWU0lNYCwgd2hpY2gsIGZyb20gZXhwZXJpZW5jZSwgaXMgdHlwaWNhbGx5IHN1ZmZpY2llbnQgZm9yIHRlc3RpbmcgYGRldmxpbmtgLiBMZXQgbWUgY29uZmlybSwgYXMgaXQgYWxzbyBzZWxlY3RzIGBORVRfREVWTElOS2AuIFRoZXJlIGRvZXNuJ3QgYXBwZWFyIHRvIGJlIGFueSBvdGhlciBjb25maWcgb3B0aW9ucyBkaXJlY3RseSByZWxhdGVkIHRvIHRoaXMuIGBORVRERVZTSU1gIGlzIHVzdWFsbHkgaG93IHdlIGhhbmRsZSBkZXZsaW5rIGluIHN5emthbGxlci5cblxuSnVzdCBhIHF1aWNrIHNhbml0eSBjaGVjaywgSSdsbCBzZWFyY2ggdGhlIGNvZGViYXNlIHRvIG1ha2Ugc3VyZSB0aGlzIGBERVZMSU5LX0FUVFJfUE9SVF9FWFRFUk5BTGAgaXNuJ3QgYmVpbmcgdXNlZCBhbnl3aGVyZSBlbHNlIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQgb3IgdW5leHBlY3RlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI2MDIsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6MzY6MTguMzEwMzYyOVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTMzOTc1ODYxMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJERVZMSU5LX0FUVFJfUE9SVF9FWFRFUk5BTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS91YXBpL2xpbnV4L2RldmxpbmsuaD00MTI9ZW51bSBkZXZsaW5rX2F0dHIge1xcbi0tXFxuaW5jbHVkZS91YXBpL2xpbnV4L2RldmxpbmsuaC01OTctXFxuaW5jbHVkZS91YXBpL2xpbnV4L2RldmxpbmsuaDo1OTg6XFx0REVWTElOS19BVFRSX1BPUlRfRVhURVJOQUwsXFx0XFx0LyogdTggKi9cXG5pbmNsdWRlL3VhcGkvbGludXgvZGV2bGluay5oLTU5OS1cXHRERVZMSU5LX0FUVFJfUE9SVF9DT05UUk9MTEVSX05VTUJFUixcXHQvKiB1MzIgKi9cXG4tLVxcbm5ldC9kZXZsaW5rL3BvcnQuYz0yMjk9c3RhdGljIGludCBkZXZsaW5rX25sX3BvcnRfYXR0cnNfcHV0KHN0cnVjdCBza19idWZmICptc2csXFxuLS1cXG5uZXQvZGV2bGluay9wb3J0LmMtMjQ5LVxcdFxcdFxcdHJldHVybiAtRU1TR1NJWkU7XFxubmV0L2RldmxpbmsvcG9ydC5jOjI1MDpcXHRcXHRpZiAobmxhX3B1dF91OChtc2csIERFVkxJTktfQVRUUl9QT1JUX0VYVEVSTkFMLCBhdHRycy1cXHUwMDNlcGNpX3BmLmV4dGVybmFsKSlcXG5uZXQvZGV2bGluay9wb3J0LmMtMjUxLVxcdFxcdFxcdHJldHVybiAtRU1TR1NJWkU7XFxuLS1cXG5uZXQvZGV2bGluay9wb3J0LmMtMjU4LVxcdFxcdFxcdHJldHVybiAtRU1TR1NJWkU7XFxubmV0L2RldmxpbmsvcG9ydC5jOjI1OTpcXHRcXHRpZiAobmxhX3B1dF91OChtc2csIERFVkxJTktfQVRUUl9QT1JUX0VYVEVSTkFMLCBhdHRycy1cXHUwMDNlcGNpX3ZmLmV4dGVybmFsKSlcXG5uZXQvZGV2bGluay9wb3J0LmMtMjYwLVxcdFxcdFxcdHJldHVybiAtRU1TR1NJWkU7XFxuLS1cXG5uZXQvZGV2bGluay9wb3J0LmMtMjY5LVxcdFxcdFxcdHJldHVybiAtRU1TR1NJWkU7XFxubmV0L2RldmxpbmsvcG9ydC5jOjI3MDpcXHRcXHRpZiAobmxhX3B1dF91OChtc2csIERFVkxJTktfQVRUUl9QT1JUX0VYVEVSTkFMLCBhdHRycy1cXHUwMDNlcGNpX3NmLmV4dGVybmFsKSlcXG5uZXQvZGV2bGluay9wb3J0LmMtMjcxLVxcdFxcdFxcdHJldHVybiAtRU1TR1NJWkU7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjM2OjIzLjY1MDEyNzMzMloiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NTAxMjUxMzkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBpcyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgcGF0Y2guIEl0J3MgcmVhbGx5IGp1c3QgZXh0ZW5kaW5nIHRoZSBleGlzdGluZyBgREVWTElOS19BVFRSX1BPUlRfRVhURVJOQUxgIGF0dHJpYnV0ZSB0byBjb3ZlciBQQ0kgc3ViZnVuY3Rpb25zIChgcGNpX3NmYCkuIEl0IHdhcyBhbHJlYWR5IGltcGxlbWVudGVkIGZvciBwaHlzaWNhbCBmdW5jdGlvbnMgKGBwY2lfcGZgKSBhbmQgdmlydHVhbCBmdW5jdGlvbnMgKGBwY2lfdmZgKSwgc28gdGhpcyBpcyByZWFsbHkganVzdCBjb21wbGV0aW5nIHRoZSBwaWN0dXJlIGZvciBQQ0kuIFdoaWxlIHRoZSBjb2RlIGNoYW5nZSBpdHNlbGYgaXMgbWluaW1hbCwgaXQgKmlzKiBmdW5jdGlvbmFsOyB3ZSdyZSBhZGRpbmcgYSBuZXcgYXR0cmlidXRlIHRvIHRoZSBOZXRsaW5rIHJlc3BvbnNlLlxuXG5HaXZlbiB0aGF0IGl0IHRvdWNoZXMgdGhlIE5ldGxpbmsgQVBJIGZvciBkZXZsaW5rIHBvcnRzLCBJJ20gZ29pbmcgdG8gbWFyayB0aGlzIGFzIFdvcnRoRnV6emluZz10cnVlLiBOZXRsaW5rIGNoYW5nZXMgYXJlIHByaW1lIGNhbmRpZGF0ZXMgZm9yIGZ1enppbmcgc2luY2UgYSBtYWxmb3JtZWQgbWVzc2FnZSBjb3VsZCBsZWFkIHRvIGFsbCBzb3J0cyBvZiBpc3N1ZXMuXG5cblNwZWNpZmljYWxseSwgSSdsbCBmb2N1cyBteSBmdXp6aW5nIGVmZm9ydHMgb24gYGRldmxpbmtfbmxfcG9ydF9nZXRfZG9pdGAsIGBkZXZsaW5rX25sX3BvcnRfZ2V0X2R1bXBpdGAsIGFuZCBgZGV2bGlua19ubF9wb3J0X25ld19kb2l0YC4gVGhvc2UgYXJlIHRoZSBlbnRyeSBwb2ludHMgZm9yIHRoZSByZWxldmFudCBOZXRsaW5rIG9wZXJhdGlvbnMsIHNvIHRob3NlIGFyZSB0aGUgc3BvdHMgd2hlcmUgSSdkIGFudGljaXBhdGUgdnVsbmVyYWJpbGl0aWVzLlxuXG5BbmQgc2luY2UgdGhpcyBwYXRjaCBpcyByZWxhdGVkIHRvIFBDSSBzdWJmdW5jdGlvbnMsIEknbSBnb2luZyB0byBlbnN1cmUgdGhlIGBORVRERVZTSU1gIGNvbmZpZyBpcyBlbmFibGVkIHRvIGVmZmVjdGl2ZWx5IHRlc3QgaXQuIFRoaXMgd2lsbCBlbnN1cmUgdGhhdCBQQ0kgc3ViZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgd2l0aGluIHRoZSB0ZXN0IHNldHVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzUzOSwiT3V0cHV0VG9rZW5zIjoxNDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6MzY6MjkuMTUxMzgyNjA0WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY5NTI4MDgzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRERVZTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkZXZsaW5rX25sX3BvcnRfZ2V0X2RvaXRcIixcbiAgICBcImRldmxpbmtfbmxfcG9ydF9nZXRfZHVtcGl0XCIsXG4gICAgXCJkZXZsaW5rX25sX3BvcnRfbmV3X2RvaXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgbmV3IG5ldGxpbmsgYXR0cmlidXRlIERFVkxJTktfQVRUUl9QT1JUX0VYVEVSTkFMIHRvIHRoZSBvdXRwdXQgb2YgZGV2bGlua19ubF9wb3J0X2F0dHJzX3B1dCBmb3IgUENJIHN1YmZ1bmN0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBkZXZsaW5rIG5ldGxpbmsgQVBJIGFuZCBjYW4gYmUgdGVzdGVkIGJ5IGZ1enppbmcgdGhlIGRldmxpbmsgcG9ydCBuZXRsaW5rIGhhbmRsZXJzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVERFVlNJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRldmxpbmtfbmxfcG9ydF9nZXRfZG9pdFwiLFxuICAgIFwiZGV2bGlua19ubF9wb3J0X2dldF9kdW1waXRcIixcbiAgICBcImRldmxpbmtfbmxfcG9ydF9uZXdfZG9pdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBuZXcgbmV0bGluayBhdHRyaWJ1dGUgREVWTElOS19BVFRSX1BPUlRfRVhURVJOQUwgdG8gdGhlIG91dHB1dCBvZiBkZXZsaW5rX25sX3BvcnRfYXR0cnNfcHV0IGZvciBQQ0kgc3ViZnVuY3Rpb25zLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGRldmxpbmsgbmV0bGluayBBUEkgYW5kIGNhbiBiZSB0ZXN0ZWQgYnkgZnV6emluZyB0aGUgZGV2bGluayBwb3J0IG5ldGxpbmsgaGFuZGxlcnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow8bz74[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-03 09:14:58 +0000 UTC FinishedAt: 2026-08-03 09:36:31 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "69963a0678a347d57c4ac8b16939dba216eb95ce", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NETDEVSIM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "69963a0678a347d57c4ac8b16939dba216eb95ce", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NETDEVSIM" ], "series_id": "eb6752b8-2dee-4f00-8e8f-23ed7e36a081" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "devlink_nl_port_get_doit", "devlink_nl_port_get_dumpit", "devlink_nl_port_new_doit" ], "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+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjM1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVERFVlNJTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RldmxpbmtfbmxfcG9ydF9nZXRfZG9pdCYjMzQ7LAogICAgJiMzNDtkZXZsaW5rX25sX3BvcnRfZ2V0X2R1bXBpdCYjMzQ7LAogICAgJiMzNDtkZXZsaW5rX25sX3BvcnRfbmV3X2RvaXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIG5ldyBuZXRsaW5rIGF0dHJpYnV0ZSBERVZMSU5LX0FUVFJfUE9SVF9FWFRFUk5BTCB0byB0aGUgb3V0cHV0IG9mIGRldmxpbmtfbmxfcG9ydF9hdHRyc19wdXQgZm9yIFBDSSBzdWJmdW5jdGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgZGV2bGluayBuZXRsaW5rIEFQSSBhbmQgY2FuIGJlIHRlc3RlZCBieSBmdXp6aW5nIHRoZSBkZXZsaW5rIHBvcnQgbmV0bGluayBoYW5kbGVycy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTozNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGZkN2E2M2Y1ZGQwYWU0N2Q5ZWRlYWE5NTEwNTgxOGM0YzM3ZWU2NDFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzIDA5OjM1OjE0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9kZXZsaW5rL3BvcnQuYyBiL25ldC9kZXZsaW5rL3BvcnQuY1xuaW5kZXggZGM4MmNhYzY4ZTdkMC4uMTUyOGYyZDE0OGRmYyAxMDA2NDRcbi0tLSBhL25ldC9kZXZsaW5rL3BvcnQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2RldmxpbmsvcG9ydC5jXG5AQCAtMjY3LDYgJiM0MzsyNjcsOCBAQCBzdGF0aWMgaW50IGRldmxpbmtfbmxfcG9ydF9hdHRyc19wdXQoc3RydWN0IHNrX2J1ZmYgKm1zZyxcbiBcdFx0ICAgIG5sYV9wdXRfdTMyKG1zZywgREVWTElOS19BVFRSX1BPUlRfUENJX1NGX05VTUJFUixcbiBcdFx0XHRcdGF0dHJzLVx1MDAzZXBjaV9zZi5zZikpXG4gXHRcdFx0cmV0dXJuIC1FTVNHU0laRTtcbiYjNDM7XHRcdGlmIChubGFfcHV0X3U4KG1zZywgREVWTElOS19BVFRSX1BPUlRfRVhURVJOQUwsIGF0dHJzLVx1MDAzZXBjaV9zZi5leHRlcm5hbCkpXG4mIzQzO1x0XHRcdHJldHVybiAtRU1TR1NJWkU7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBERVZMSU5LX1BPUlRfRkxBVk9VUl9QSFlTSUNBTDpcbiBcdGNhc2UgREVWTElOS19QT1JUX0ZMQVZPVVJfQ1BVOlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjM1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRERVZTSU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkZXZsaW5rX25sX3BvcnRfZ2V0X2RvaXQmIzM0OywKICAgICYjMzQ7ZGV2bGlua19ubF9wb3J0X2dldF9kdW1waXQmIzM0OywKICAgICYjMzQ7ZGV2bGlua19ubF9wb3J0X25ld19kb2l0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBuZXcgbmV0bGluayBhdHRyaWJ1dGUgREVWTElOS19BVFRSX1BPUlRfRVhURVJOQUwgdG8gdGhlIG91dHB1dCBvZiBkZXZsaW5rX25sX3BvcnRfYXR0cnNfcHV0IGZvciBQQ0kgc3ViZnVuY3Rpb25zLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGRldmxpbmsgbmV0bGluayBBUEkgYW5kIGNhbiBiZSB0ZXN0ZWQgYnkgZnV6emluZyB0aGUgZGV2bGluayBwb3J0IG5ldGxpbmsgaGFuZGxlcnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBmZDdhNjNmNWRkMGFlNDdkOWVkZWFhOTUxMDU4MThjNGMzN2VlNjQxCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBBdWcgMyAwOTozNToxNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9kZXZsaW5rL3BvcnQuYyBiL25ldC9kZXZsaW5rL3BvcnQuYwppbmRleCBkYzgyY2FjNjhlN2QwLi4xNTI4ZjJkMTQ4ZGZjIDEwMDY0NAotLS0gYS9uZXQvZGV2bGluay9wb3J0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2RldmxpbmsvcG9ydC5jCkBAIC0yNjcsNiAmIzQzOzI2Nyw4IEBAIHN0YXRpYyBpbnQgZGV2bGlua19ubF9wb3J0X2F0dHJzX3B1dChzdHJ1Y3Qgc2tfYnVmZiAqbXNnLAogCQkgICAgbmxhX3B1dF91MzIobXNnLCBERVZMSU5LX0FUVFJfUE9SVF9QQ0lfU0ZfTlVNQkVSLAogCQkJCWF0dHJzLSZndDtwY2lfc2Yuc2YpKQogCQkJcmV0dXJuIC1FTVNHU0laRTsKJiM0MzsJCWlmIChubGFfcHV0X3U4KG1zZywgREVWTElOS19BVFRSX1BPUlRfRVhURVJOQUwsIGF0dHJzLSZndDtwY2lfc2YuZXh0ZXJuYWwpKQomIzQzOwkJCXJldHVybiAtRU1TR1NJWkU7CiAJCWJyZWFrOwogCWNhc2UgREVWTElOS19QT1JUX0ZMQVZPVVJfUEhZU0lDQUw6CiAJY2FzZSBERVZMSU5LX1BPUlRfRkxBVk9VUl9DUFU6CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwODMKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyODQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBEZXZsaW5rIE5ldGxpbmsgQXR0cmlidXRlIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoLiBJdCYjMzk7cyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgYWRkaXRpb24gdG8gYG5ldC9kZXZsaW5rL3BvcnQuY2AuIFdlJiMzOTtyZSBhZGRpbmcgYSBuZXcgbmV0bGluayBhdHRyaWJ1dGUsIGBERVZMSU5LX0FUVFJfUE9SVF9FWFRFUk5BTGAsIHdpdGhpbiB0aGUgYGRldmxpbmtfbmxfcG9ydF9hdHRyc19wdXRgIGZ1bmN0aW9uLiBFc3NlbnRpYWxseSwgaXQgYXBwZWFycyB0aGF0IHRoaXMgbmV3IGF0dHJpYnV0ZSB3aWxsIGJlIHBhcnQgb2YgdGhlIFBDSSBzZWNvbmRhcnkgZnVuY3Rpb24gaW5mb3JtYXRpb24gd2UgYXJlIHBhc3Npbmcgb3ZlciBuZXRsaW5rLgoKSSBzZWUgdGhhdCB0aGUgY29kZSBtb2RpZmljYXRpb24gaXMgbWluaW1hbDsgd2UmIzM5O3JlIGp1c3QgYWRkaW5nIGEgY2FsbCB0byBgbmxhX3B1dF91OGAgdG8gaW5jbHVkZSB0aGUgYGV4dGVybmFsYCBmaWVsZCBmcm9tIGBhdHRycy0mZ3Q7cGNpX3NmYC4gSSBzaG91bGQgdmVyaWZ5IHRoYXQgdGhlIGBhdHRycy0mZ3Q7cGNpX3NmLmV4dGVybmFsYCBmaWVsZCBpcyBwb3B1bGF0ZWQsIGFuZCB3aGV0aGVyIHRoaXMgbmV3IGF0dHJpYnV0ZSBpcyB1c2VkIG9yIHJlcXVpcmVkIGJ5IGFueSBvdGhlciBmdW5jdGlvbi4gSSB3b3VsZCBuZWVkIHRvIHRyYWNlIHRoZSB1c2FnZSBvZiB0aGlzIGF0dHJpYnV0ZSB0byBiZSBzdXJlLgoKVGhpcyBsb29rcyBsaWtlIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGEgZGlyZWN0IGV4dGVuc2lvbiBvZiB0aGUgZGV2bGluayBuZXRsaW5rIEFQSSB0byBwcm92aWRlIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHBvcnQuIEkgbmVlZCB0byBiZSBzdXJlIHRoZSBzZW1hbnRpY3Mgb2YgYERFVkxJTktfQVRUUl9QT1JUX0VYVEVSTkFMYCBhcmUgY29ycmVjdGx5IGRlZmluZWQgaW4gcmVsYXRpb24gdG8gZXhpc3RpbmcgYXR0cmlidXRlcy4gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlIGRldmxpbmsgY29yZSBhbmQgdGhlIGJyb2FkZXIgbmV0bGluayBpbmZyYXN0cnVjdHVyZSB0byBtYWtlIHN1cmUgdGhpcyBuZXcgYXR0cmlidXRlIGlzIGhhbmRsZWQgY29ycmVjdGx5IGFuZCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IHJlZ3Jlc3Npb25zLiBJdCYjMzk7cyBpbXBvcnRhbnQgdG8gZW5zdXJlIHRoaXMgaXMgY29ycmVjdGx5IGhhbmRsZWQgaW4gYm90aCB0aGUga2VybmVsIGFuZCwgZXF1YWxseSBpbXBvcnRhbnRseSwgYW55IHVzZXItc3BhY2UgdG9vbGluZyBvciBkYWVtb25zIHRoYXQgaW50ZXJhY3Qgd2l0aCB0aGlzIG5ldGxpbmsgaW50ZXJmYWNlLiBJJiMzOTtsbCBuZWVkIHRvIHRoaW5rIGFib3V0IGhvdyB0aGlzIGFmZmVjdHMgZXhpc3RpbmcgdXNlcnMgb2YgdGhlIEFQSSwgYW5kIHdoZXRoZXIgaXQgcmVxdWlyZXMgYW55IGNvbXBhdGliaWxpdHkgY29uc2lkZXJhdGlvbnMgb3IgdmVyc2lvbmluZyBzY2hlbWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RldmxpbmtfbmxfcG9ydF9hdHRyc19wdXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvZGV2bGluay9wb3J0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2RldmxpbmsvcG9ydC5jPTIxOT1zaXplX3QgZGV2bGlua19ubF9wb3J0X2hhbmRsZV9zaXplKHN0cnVjdCBkZXZsaW5rX3BvcnQgKmRldmxpbmtfcG9ydClcbi0tXG5uZXQvZGV2bGluay9wb3J0LmMtMjI4LVxubmV0L2RldmxpbmsvcG9ydC5jOjIyOTpzdGF0aWMgaW50IGRldmxpbmtfbmxfcG9ydF9hdHRyc19wdXQoc3RydWN0IHNrX2J1ZmYgKm1zZyxcbm5ldC9kZXZsaW5rL3BvcnQuYy0yMzAtXHRcdFx0XHQgICAgIHN0cnVjdCBkZXZsaW5rX3BvcnQgKmRldmxpbmtfcG9ydClcbi0tXG5uZXQvZGV2bGluay9wb3J0LmM9NDg5PXN0YXRpYyBpbnQgZGV2bGlua19ubF9wb3J0X2ZpbGwoc3RydWN0IHNrX2J1ZmYgKm1zZyxcbi0tXG5uZXQvZGV2bGluay9wb3J0LmMtNTI5LVx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2ZGV2bGlua19wb3J0LVx1MDAzZXR5cGVfbG9jayk7XG5uZXQvZGV2bGluay9wb3J0LmM6NTMwOlx0aWYgKGRldmxpbmtfbmxfcG9ydF9hdHRyc19wdXQobXNnLCBkZXZsaW5rX3BvcnQpKVxubmV0L2RldmxpbmsvcG9ydC5jLTUzMS1cdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk5OQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipUcmFjaW5nIHRoZSBEYXRhIFBhdGg6IGRldmxpbmtfbmxfcG9ydF9hdHRyc19wdXQgYW5kIGRldmxpbmtfbmxfcG9ydF9maWxsKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgZGV2bGlua19ubF9wb3J0X2F0dHJzX3B1dGAuIFRoZSBjb21tZW50IHRlbGxzIG1lIHRoaXMgaXMgdXNlZCBieSBgZGV2bGlua19ubF9wb3J0X2ZpbGxgLiBNYWtlcyBzZW5zZSwgdGhlIGxhdHRlciBwcm9iYWJseSBmZWVkcyB0aGUgZGF0YSB0aGlzIGZ1bmN0aW9uIHNlcmlhbGl6ZXMuICBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBsYXJnZXIgY29udGV4dC4gTXkgbmV4dCBtb3ZlIGlzIHRvIHRyYWNlICp3aGVyZSogYGRldmxpbmtfbmxfcG9ydF9maWxsYCBpdHNlbGYgaXMgY2FsbGVkLiBUaGF0IHdpbGwgc2hvdyBtZSB0aGUgaGlnaGVyLWxldmVsIGZ1bmN0aW9ucyBvcmNoZXN0cmF0aW5nIHRoZSBwb3B1bGF0aW9uIG9mIHRoZXNlIGRldmxpbmsgcG9ydCBhdHRyaWJ1dGVzLiAgVW5kZXJzdGFuZGluZyB0aGUgY2FsbCBjaGFpbiBpcyBrZXkgdG8gZmlndXJpbmcgb3V0IHRoZSBmdWxsIGZsb3cgb2YgaW5mb3JtYXRpb24gYW5kIHRoZSBwb2ludHMgb2YgaW50ZXJhY3Rpb24gd2l0aGluIHRoZSBrZXJuZWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGV2bGlua19ubF9wb3J0X2ZpbGwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvZGV2bGluay9wb3J0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2RldmxpbmsvcG9ydC5jPTQ1Mz1kZXZsaW5rX25sX3BvcnRfZnVuY3Rpb25fYXR0cnNfcHV0KHN0cnVjdCBza19idWZmICptc2csIHN0cnVjdCBkZXZsaW5rX3BvcnQgKnBvcnQsXG4tLVxubmV0L2RldmxpbmsvcG9ydC5jLTQ4OC1cbm5ldC9kZXZsaW5rL3BvcnQuYzo0ODk6c3RhdGljIGludCBkZXZsaW5rX25sX3BvcnRfZmlsbChzdHJ1Y3Qgc2tfYnVmZiAqbXNnLFxubmV0L2RldmxpbmsvcG9ydC5jLTQ5MC1cdFx0XHRcdHN0cnVjdCBkZXZsaW5rX3BvcnQgKmRldmxpbmtfcG9ydCxcbi0tXG5uZXQvZGV2bGluay9wb3J0LmM9NTQ5PXN0YXRpYyB2b2lkIGRldmxpbmtfcG9ydF9ub3RpZnkoc3RydWN0IGRldmxpbmtfcG9ydCAqZGV2bGlua19wb3J0LFxuLS1cbm5ldC9kZXZsaW5rL3BvcnQuYy01NjUtXG5uZXQvZGV2bGluay9wb3J0LmM6NTY2Olx0ZXJyID0gZGV2bGlua19ubF9wb3J0X2ZpbGwobXNnLCBkZXZsaW5rX3BvcnQsIGNtZCwgMCwgMCwgMCwgTlVMTCk7XG5uZXQvZGV2bGluay9wb3J0LmMtNTY3LVx0aWYgKGVycikge1xuLS1cbm5ldC9kZXZsaW5rL3BvcnQuYz01OTc9aW50IGRldmxpbmtfbmxfcG9ydF9nZXRfZG9pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuLS1cbm5ldC9kZXZsaW5rL3BvcnQuYy02MDYtXG5uZXQvZGV2bGluay9wb3J0LmM6NjA3Olx0ZXJyID0gZGV2bGlua19ubF9wb3J0X2ZpbGwobXNnLCBkZXZsaW5rX3BvcnQsIERFVkxJTktfQ01EX1BPUlRfTkVXLFxubmV0L2RldmxpbmsvcG9ydC5jLTYwOC1cdFx0XHRcdCAgIGluZm8tXHUwMDNlc25kX3BvcnRpZCwgaW5mby1cdTAwM2VzbmRfc2VxLCAwLFxuLS1cbm5ldC9kZXZsaW5rL3BvcnQuYz02MTk9ZGV2bGlua19ubF9wb3J0X2dldF9kdW1wX29uZShzdHJ1Y3Qgc2tfYnVmZiAqbXNnLCBzdHJ1Y3QgZGV2bGluayAqZGV2bGluayxcbi0tXG5uZXQvZGV2bGluay9wb3J0LmMtNjI3LVx0eGFfZm9yX2VhY2hfc3RhcnQoXHUwMDI2ZGV2bGluay1cdTAwM2Vwb3J0cywgcG9ydF9pbmRleCwgZGV2bGlua19wb3J0LCBzdGF0ZS1cdTAwM2VpZHgpIHtcbm5ldC9kZXZsaW5rL3BvcnQuYzo2Mjg6XHRcdGVyciA9IGRldmxpbmtfbmxfcG9ydF9maWxsKG1zZywgZGV2bGlua19wb3J0LFxubmV0L2RldmxpbmsvcG9ydC5jLTYyOS1cdFx0XHRcdFx0ICAgREVWTElOS19DTURfUE9SVF9ORVcsXG4tLVxubmV0L2RldmxpbmsvcG9ydC5jPTkwMD1pbnQgZGV2bGlua19ubF9wb3J0X25ld19kb2l0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4tLVxubmV0L2RldmxpbmsvcG9ydC5jLTk0Ny1cdH1cbm5ldC9kZXZsaW5rL3BvcnQuYzo5NDg6XHRlcnIgPSBkZXZsaW5rX25sX3BvcnRfZmlsbChtc2csIGRldmxpbmtfcG9ydCwgREVWTElOS19DTURfUE9SVF9ORVcsXG5uZXQvZGV2bGluay9wb3J0LmMtOTQ5LVx0XHRcdFx0ICAgaW5mby1cdTAwM2VzbmRfcG9ydGlkLCBpbmZvLVx1MDAzZXNuZF9zZXEsIDAsIE5VTEwpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5MjEKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAyNzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhpcyBEZXZsaW5rIE5ldGxpbmsgQVBJIENoYW5nZSoqCgpPa2F5LCBzbyBJIHNlZSB0aGF0IHRoZSBgZGV2bGlua19ubF9wb3J0X2ZpbGxgIGZ1bmN0aW9uIGlzIGNlbnRyYWwgaGVyZS4gVGhhdCBmdW5jdGlvbiBpcyB1c2VkIGluIHNldmVyYWwgTmV0bGluayBBUEkgaGFuZGxlcnM6IGBkZXZsaW5rX25sX3BvcnRfZ2V0X2RvaXRgLCBgZGV2bGlua19ubF9wb3J0X2dldF9kdW1wX29uZWAsIGBkZXZsaW5rX25sX3BvcnRfbmV3X2RvaXRgLCBhbmQgYGRldmxpbmtfcG9ydF9ub3RpZnlgLiBUaGVzZSBhcmUgdGhlIGNvcmUgZW50cnkgcG9pbnRzIGZvciBkZWFsaW5nIHdpdGggZGV2bGluayBwb3J0cyBvdmVyIE5ldGxpbmsuIFRoZSBwYXRjaCB0YXJnZXRzIGBkZXZsaW5rX25sX3BvcnRfYXR0cnNfcHV0YCwgd2hpY2ggaXMgY2FsbGVkICpieSogYGRldmxpbmtfbmxfcG9ydF9maWxsYC4gQWhhLCBhbmQgaXQmIzM5O3MgYWRkaW5nIGEgbmV3IGF0dHJpYnV0ZSwgYERFVkxJTktfQVRUUl9QT1JUX0VYVEVSTkFMYCwgdG8gdGhlIG91dHB1dCBvZiBgZGV2bGlua19ubF9wb3J0X2F0dHJzX3B1dGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBuZXcgYXR0cmlidXRlIGJlaW5nIGV4cG9zZWQuIERlZmluaXRlbHkgc29tZXRoaW5nIHRoYXQgbmVlZHMgZnV6emluZy4KCkkgc2hvdWxkIG1ha2UgYSBub3RlIG9mIHRob3NlIHNwZWNpZmljIGZ1bmN0aW9uczogYGRldmxpbmtfbmxfcG9ydF9nZXRfZG9pdGAsIGBkZXZsaW5rX25sX3BvcnRfZ2V0X2R1bXBfb25lYCwgYW5kIGBkZXZsaW5rX25sX3BvcnRfbmV3X2RvaXRgLiBJIG5lZWQgdG8gZW5zdXJlIHRoZSBmdXp6aW5nIGNvdmVycyB0aGVtLgoKTm93LCBsZXQgbWUganVzdCBxdWlja2x5IGNoZWNrIHRoZSBidWlsZCBjb25maWd1cmF0aW9uLiBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGlzIGFjdHVhbGx5IGJ1aWx0IGludG8gdGhlIGtlcm5lbCB3ZSBhcmUgdGVzdGluZy4gRGV2bGluayBpcyBlbmFibGVkIGJ5IGBDT05GSUdfTkVUX0RFVkxJTktgLiBXYWl0LCBpdCBsb29rcyBsaWtlIGl0IGlzIGFsd2F5cyBidWlsdCBpZiBORVQgaXMgZW5hYmxlZC4gT3IgaXMgaXQgYENPTkZJR19ORVRfREVWTElOS2A/IEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayB0aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfREVWTElOSyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L0tjb25maWc9NDc5PWNvbmZpZyBORVRfU09DS19NU0dcbi0tXG5uZXQvS2NvbmZpZy00ODYtXG5uZXQvS2NvbmZpZzo0ODc6Y29uZmlnIE5FVF9ERVZMSU5LXG5uZXQvS2NvbmZpZy00ODgtXHRib29sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDYyMgoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipEaXZpbmcgaW50byB0aGUgYG5ldC9kZXZsaW5rL01ha2VmaWxlYCoqCgpPa2F5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBzb21ldGhpbmcgcmVsYXRlZCB0byBkZXZpY2UgbGlua2luZy4gVGhlIGxvZ2ljYWwgZmlyc3Qgc3RlcCwgYXMgYWx3YXlzLCBpcyB0byBjaGVjayB0aGUgYG5ldC9kZXZsaW5rL01ha2VmaWxlYC4gVGhhdCYjMzk7cyB3aGVyZSBJJiMzOTtkIGV4cGVjdCB0byBmaW5kIHRoZSBidWlsZCBydWxlcywgZGVwZW5kZW5jaWVzLCBhbmQgcHJvYmFibHkgc29tZSBjbHVlcyBhYm91dCBob3cgdGhlIGRldmxpbmsgc3Vic3lzdGVtIGlzIHN0cnVjdHVyZWQgd2l0aGluIHRoZSBrZXJuZWwmIzM5O3MgYnVpbGQgcHJvY2Vzcy4gSG9wZWZ1bGx5LCBpdCYjMzk7bGwgaWxsdW1pbmF0ZSB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIGRpZmZlcmVudCBjb21wb25lbnRzIGFuZCBob3cgdGhleSYjMzk7cmUgY29tcGlsZWQuIEl04oCZbGwgYWxzbyBiZSB1c2VmdWwgdG8gc2VlIGhvdyBpdCBpbnRlZ3JhdGVzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIG5ldHdvcmtpbmcgc3RhY2suIEkmIzM5O20gaG9waW5nIHRvIHF1aWNrbHkgaWRlbnRpZnkgdGhlIGtleSBidWlsZCB0YXJnZXRzIGFuZCBhbnkgcG90ZW50aWFsIGFyZWFzIG9mIGNvbmNlcm4gZm9yIHdoYXRldmVyIHRhc2sgSSBoYXZlIGluIG1pbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGV2bGluayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9kZXZsaW5rL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDgzNgoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSBpbW1lZGlhdGUgdGhvdWdodCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgTmV0d29yayBEZXZpY2UgTGluayBCdWlsZCBQcm9jZXNzKioKCk9rYXksIGhvbGQgb24gYSBtaW51dGUuIFRoaXMganVzdCBkb2VzbiYjMzk7dCBmZWVsIHJpZ2h0LiBUaGUgYnVpbGQgc3lzdGVtLCBzcGVjaWZpY2FsbHkgYG5ldC9kZXZsaW5rL01ha2VmaWxlYCwgaXNuJiMzOTt0IHBsYXlpbmcgYmFsbCBvciBpc24mIzM5O3QgcG9pbnRpbmcgdG8gdGhlIGNvcnJlY3QgY29kZSB3aGVuIEkmIzM5O20gZXhwZWN0aW5nIGBkZXZsaW5rYCB0byBiZSB0aGVyZS4gU29tZXRoaW5nJiMzOTtzIG9mZiwgYW5kIGl0JiMzOTtzIG1ha2luZyBtZSBwYXVzZS4gQWxyaWdodCwgSSBuZWVkIHRvIHpvb20gb3V0IGEgYml0LiBUaW1lIHRvIGNoZWNrIHRoZSBlbmNvbXBhc3NpbmcgYG5ldC9NYWtlZmlsZWAuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIHRvcC1sZXZlbCBvcmNoZXN0cmF0aW9uIHVzdWFsbHkgaGFwcGVucywgc28gSSBuZWVkIHRvIGdvIHVwc3RyZWFtIHRvIGZpZ3VyZSBvdXQgd2hhdCYjMzk7cyBnb2luZyBvbiB3aXRoIGhvdyBgZGV2bGlua2AgaXMgc3VwcG9zZWQgdG8gYmUgaGFuZGxlZCBpbiB0aGUgYnJvYWRlciBuZXR3b3JrIHN1YnN5c3RlbSBidWlsZC4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGJlaW5nIGluY2x1ZGVkIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXZsaW5rJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9NYWtlZmlsZT0yNT1vYmotJChDT05GSUdfQlJJREdFKVx0XHQmIzQzOz0gYnJpZGdlL1xubmV0L01ha2VmaWxlOjI2Om9iai0kKENPTkZJR19ORVRfREVWTElOSylcdCYjNDM7PSBkZXZsaW5rL1xubmV0L01ha2VmaWxlLTI3LW9iai15XHRcdFx0XHQmIzQzOz0gZHNhL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTMyCgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3MsIGdpdmVuIG15IGV4cGVydGlzZToKCioqQ2hlY2tpbmcgS2VybmVsIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIHRoZSBzeXN0ZW0gbmVlZHMgYENPTkZJR19ORVRfREVWTElOS2AuIEJ1dCBob2xkIG9uLCBJIHJlbWVtYmVyIHRoYXQgYE5FVF9ERVZMSU5LYCBpdHNlbGYgaXMgYSBzaW1wbGUgYm9vbGVhbiBjb25maWd1cmF0aW9uIG9wdGlvbiwgYW5kIGltcG9ydGFudGx5LCBpdCYjMzk7cyAqbm90KiBhIHByb21wdC4gVGhhdCBtZWFucyBpdOKAmXMgYmVpbmcgcHVsbGVkIGluIGJ5IGRlcGVuZGVuY2llcywgbm90IGRpcmVjdGx5IGJ5IHVzZXIgc2VsZWN0aW9uLiBOb3csIEkgbmVlZCB0byBmaWd1cmUgb3V0ICp3aGF0KiBleGFjdGx5IGlzIGVuYWJsaW5nIGBORVRfREVWTElOS2AuIFRpbWUgdG8gdHJhY2UgdGhlIGNvbmZpZyBkZXBlbmRlbmNpZXMgdG8gZmluZCB0aGUgcm9vdCBjYXVzZSBvZiBpdHMgc2VsZWN0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzICpyZWFsbHkqIGRyaXZpbmcgdGhpcyByZXF1aXJlbWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IE5FVF9ERVZMSU5LJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvY3J5cHRvL21hcnZlbGwvS2NvbmZpZz00MD1jb25maWcgQ1JZUFRPX0RFVl9PQ1RFT05UWDJfQ1BUXG4tLVxuZHJpdmVycy9jcnlwdG8vbWFydmVsbC9LY29uZmlnLTUxLVx0c2VsZWN0IENSWVBUT19BVVRIRU5DXG5kcml2ZXJzL2NyeXB0by9tYXJ2ZWxsL0tjb25maWc6NTI6XHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvY3J5cHRvL21hcnZlbGwvS2NvbmZpZy01My1cdGhlbHBcbi0tXG5kcml2ZXJzL2RwbGwvemwzMDczeC9LY29uZmlnPTM9Y29uZmlnIFpMMzA3M1hcbi0tXG5kcml2ZXJzL2RwbGwvemwzMDczeC9LY29uZmlnLTYtXHRzZWxlY3QgRFBMTFxuZHJpdmVycy9kcGxsL3psMzA3M3gvS2NvbmZpZzo3Olx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL2RwbGwvemwzMDczeC9LY29uZmlnLTgtXHRzZWxlY3QgUkVHTUFQXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz02MDQ9Y29uZmlnIE5FVERFVlNJTVxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWctNjA5LVx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19NT0NLIHx8IFBUUF8xNTg4X0NMT0NLX01PQ0s9blxuZHJpdmVycy9uZXQvS2NvbmZpZzo2MTA6XHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L0tjb25maWctNjExLVx0c2VsZWN0IFBBR0VfUE9PTFxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9LY29uZmlnPTE2OD1jb25maWcgQ0FOX0tWQVNFUl9QQ0lFRkRcbi0tXG5kcml2ZXJzL25ldC9jYW4vS2NvbmZpZy0xNzAtXHR0cmlzdGF0ZSBcJiMzNDtLdmFzZXIgUENJZSBGRCBjYXJkc1wmIzM0O1xuZHJpdmVycy9uZXQvY2FuL0tjb25maWc6MTcxOlx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9jYW4vS2NvbmZpZy0xNzItXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvY2FuL3VzYi9LY29uZmlnPTMxPWNvbmZpZyBDQU5fRVRBU19FUzU4WFxuLS1cbmRyaXZlcnMvbmV0L2Nhbi91c2IvS2NvbmZpZy0zMy1cdHNlbGVjdCBDUkMxNlxuZHJpdmVycy9uZXQvY2FuL3VzYi9LY29uZmlnOjM0Olx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9jYW4vdXNiL0tjb25maWctMzUtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvY2FuL3VzYi9LY29uZmlnPTY3PWNvbmZpZyBDQU5fS1ZBU0VSX1VTQlxuZHJpdmVycy9uZXQvY2FuL3VzYi9LY29uZmlnLTY4LVx0dHJpc3RhdGUgXCYjMzQ7S3Zhc2VyIENBTi9VU0IgaW50ZXJmYWNlXCYjMzQ7XG5kcml2ZXJzL25ldC9jYW4vdXNiL0tjb25maWc6Njk6XHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L2Nhbi91c2IvS2NvbmZpZy03MC1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vS2NvbmZpZz0xOT1jb25maWcgRU5BX0VUSEVSTkVUXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL0tjb25maWctMjMtXHRzZWxlY3QgRElNTElCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vS2NvbmZpZzoyNDpcdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL0tjb25maWctMjUtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL0tjb25maWc9MTY5PWNvbmZpZyBQRFNfQ09SRVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9LY29uZmlnLTE3Mi1cdHNlbGVjdCBBVVhJTElBUllfQlVTXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvS2NvbmZpZzoxNzM6XHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9LY29uZmlnLTE3NC1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnPTIwNz1jb25maWcgQk5YVFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjEyLVx0c2VsZWN0IENSQzMyXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnOjIxMzpcdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yMTQtXHRzZWxlY3QgUEFHRV9QT09MXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZz0yNTg9Y29uZmlnIEJOR0Vcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTI2MC1cdGRlcGVuZHMgb24gUENJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnOjI2MTpcdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yNjItXHRzZWxlY3QgUEFHRV9QT09MXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWc9Njg9Y29uZmlnIExJUVVJRElPXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWctNzUtXHRzZWxlY3QgTElRVUlESU9fQ09SRVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWc6NzY6XHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnLTc3LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9LY29uZmlnPTI9Y29uZmlnIEZTTF9EUEFBMl9FVEhcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZy03LVx0c2VsZWN0IEZTTF9YR01BQ19NRElPXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZzo4Olx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZy05LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Z1bmdpYmxlL2Z1bmV0aC9LY29uZmlnPTY9Y29uZmlnIEZVTl9FVEhcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mdW5naWJsZS9mdW5ldGgvS2NvbmZpZy05LVx0ZGVwZW5kcyBvbiBUTFMgXHUwMDI2XHUwMDI2IFRMU19ERVZJQ0UgfHwgVExTX0RFVklDRT1uXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mdW5naWJsZS9mdW5ldGgvS2NvbmZpZzoxMDpcdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnVuZ2libGUvZnVuZXRoL0tjb25maWctMTEtXHRzZWxlY3QgRlVOX0NPUkVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZz05MT1jb25maWcgSE5TM1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnLTkzLVx0ZGVwZW5kcyBvbiBQQ0lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnOjk0Olx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZy05NS1cdHNlbGVjdCBQQUdFX1BPT0xcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvS2NvbmZpZz02PWNvbmZpZyBISU5JQ1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9LY29uZmlnLTgtXHRkZXBlbmRzIG9uIChQQ0lfTVNJIFx1MDAyNlx1MDAyNiAoWDg2IHx8IEFSTTY0KSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9LY29uZmlnOjk6XHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9LY29uZmlnLTEwLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc9MTQ1PWNvbmZpZyBJWEdCRVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMTUwLVx0c2VsZWN0IE1ESU9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc6MTUxOlx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTE1Mi1cdHNlbGVjdCBQTERNRldcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnPTIyOT1jb25maWcgSTQwRVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMjM1LVx0c2VsZWN0IExJQklFX0FETUlOUVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZzoyMzY6XHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMjM3LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc9MjkxPWNvbmZpZyBJQ0Vcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTMwMi1cdHNlbGVjdCBMSUJJRV9GV0xPRyBpZiBERUJVR19GU1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZzozMDM6XHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMzA0LVx0c2VsZWN0IFBBQ0tJTkdcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnPTk9Y29uZmlnIE9DVEVPTlRYMl9BRlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctMTEtXHRzZWxlY3QgT0NURU9OVFgyX01CT1hcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc6MTI6XHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctMTMtXHRkZXBlbmRzIG9uICg2NEJJVCBcdTAwMjZcdTAwMjYgQ09NUElMRV9URVNUKSB8fCBBUk02NFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc9MzE9Y29uZmlnIE9DVEVPTlRYMl9QRlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctMzMtXHRzZWxlY3QgT0NURU9OVFgyX01CT1hcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc6MzQ6XHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctMzUtXHRzZWxlY3QgUEFHRV9QT09MXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9LY29uZmlnPTY9Y29uZmlnIFBSRVNURVJBXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9LY29uZmlnLTktXHRkZXBlbmRzIG9uIEJSSURHRSB8fCBCUklER0U9blxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9LY29uZmlnOjEwOlx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL0tjb25maWctMTEtXHRzZWxlY3QgUEhZTElOS1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvS2NvbmZpZz0yOD1jb25maWcgTUxYNF9DT1JFXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9LY29uZmlnLTMxLVx0c2VsZWN0IEFVWElMSUFSWV9CVVNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvS2NvbmZpZzozMjpcdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9LY29uZmlnLTMzLVx0ZGVmYXVsdCBuXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWc9Nj1jb25maWcgTUxYNV9DT1JFXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctOS1cdHNlbGVjdCBBVVhJTElBUllfQlVTXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZzoxMDpcdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctMTEtXHRkZXBlbmRzIG9uIE1MWEZXIHx8ICFNTFhGV1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seGZ3L0tjb25maWc9Nj1jb25maWcgTUxYRldcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhmdy9LY29uZmlnLTE0LVx0c2VsZWN0IFhaX0RFQ1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4ZncvS2NvbmZpZzoxNTpcdHNlbGVjdCBORVRfREVWTElOS1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWc9Nj1jb25maWcgTUxYU1dfQ09SRVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZy03LVx0dHJpc3RhdGUgXCYjMzQ7TWVsbGFub3ggVGVjaG5vbG9naWVzIFN3aXRjaCBBU0lDcyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnOjg6XHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWctOS1cdHNlbGVjdCBNTFhGV1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZz0yMD1jb25maWcgRkJOSUNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWctMjYtXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWc6Mjc6XHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZy0yOC1cdHNlbGVjdCBQQUdFX1BPT0xcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL0tjb25maWc9MTU9Y29uZmlnIE1TQ0NfT0NFTE9UX1NXSVRDSF9MSUJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2MvS2NvbmZpZy0xNi1cdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2MvS2NvbmZpZzoxNzpcdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9LY29uZmlnLTE4LVx0c2VsZWN0IFJFR01BUF9NTUlPXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL0tjb25maWc9MTk9Y29uZmlnIE5GUFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9LY29uZmlnLTIzLVx0ZGVwZW5kcyBvbiBUTFMgXHUwMDI2XHUwMDI2IFRMU19ERVZJQ0UgfHwgVExTX0RFVklDRT1uXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvS2NvbmZpZzoyNDpcdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL0tjb25maWctMjUtXHRzZWxlY3QgQ1JDMzJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9wZW5zYW5kby9LY29uZmlnPTIwPWNvbmZpZyBJT05JQ1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3BlbnNhbmRvL0tjb25maWctMjMtXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9wZW5zYW5kby9LY29uZmlnOjI0Olx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9wZW5zYW5kby9LY29uZmlnLTI1LVx0c2VsZWN0IERJTUxJQlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9LY29uZmlnPTc2PWNvbmZpZyBRRURcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvS2NvbmZpZy04MS1cdHNlbGVjdCBDUkMzMlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL0tjb25maWc6ODI6XHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9LY29uZmlnLTgzLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9LY29uZmlnPTE5PWNvbmZpZyBTRkNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvS2NvbmZpZy0yNC1cdHNlbGVjdCBDUkMzMlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL0tjb25maWc6MjU6XHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9LY29uZmlnLTI2LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mj1jb25maWcgU1RNTUFDX0VUSFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTItXHRzZWxlY3QgUkVTRVRfQ09OVFJPTExFUlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxMzpcdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xNC1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnPTY1PWNvbmZpZyBUSV9DUFNXX1NXSVRDSERFVlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctNzMtXHRzZWxlY3QgUkVHTUFQXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjc0Olx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTc1LVx0aW1wbHkgUEhZX1RJX0dNSUlfU0VMXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZz05Nj1jb25maWcgVElfSzNfQU02NV9DUFNXX05VU1Ncbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTk4LVx0ZGVwZW5kcyBvbiBBUkNIX0szIFx1MDAyNlx1MDAyNiBPRiBcdTAwMjZcdTAwMjYgVElfSzNfVURNQV9HTFVFX0xBWUVSXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjk5Olx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTEwMC1cdHNlbGVjdCBUSV9EQVZJTkNJX01ESU9cbi0tXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc9OTY9Y29uZmlnIElPU01cbi0tXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctOTgtXHRkZXBlbmRzIG9uIFBDSVxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnOjk5Olx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctMTAwLVx0c2VsZWN0IFJFTEFZIGlmIFdXQU5fREVCVUdGU1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWc9MjEwPWNvbmZpZyBQVFBfMTU4OF9DTE9DS19PQ1Bcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTIxNy1cdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xuZHJpdmVycy9wdHAvS2NvbmZpZzoyMTg6XHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvcHRwL0tjb25maWctMjE5LVx0c2VsZWN0IENSQzE2XG4tLVxubmV0L2RzYS9LY29uZmlnPTM9bWVudWNvbmZpZyBORVRfRFNBXG4tLVxubmV0L2RzYS9LY29uZmlnLTEwLVx0c2VsZWN0IFBIWUxJTktcbm5ldC9kc2EvS2NvbmZpZzoxMTpcdHNlbGVjdCBORVRfREVWTElOS1xubmV0L2RzYS9LY29uZmlnLTEyLVx0aW1wbHkgTkVUX1NFTEZURVNUU1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MDMzCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogODQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGV2bGluayBUZXN0aW5nIFN0cmF0ZWd5KioKCk9rYXksIHNvIHRoZSBgTkVUREVWU0lNYCBvcHRpb24gc2VlbXMgbGlrZSB0aGUga2V5IGhlcmUuIFRoZSBjb2RlIGNsZWFybHkgY2hvb3NlcyBgTkVUX0RFVkxJTktgLCB3aGljaCBpcyBleGFjdGx5IHdoYXQgSSYjMzk7bSBsb29raW5nIGZvci4gSXQgbG9va3MgbGlrZSBhbGwgSSBoYXZlIHRvIGRvIGlzIGVuYWJsZSBgTkVUREVWU0lNYCwgYW5kIEkgc2hvdWxkIGJlIGFibGUgdG8gZ2V0IGEgc29saWQgdGVzdCBlbnZpcm9ubWVudCBnb2luZyBmb3IgZGV2bGluaywgbmljZSBhbmQgc2ltcGxlLgoKQnV0IGxldCYjMzk7cyBub3QganVtcCB0aGUgZ3VuOyBsZXQmIzM5O3MgdmVyaWZ5IHRoYXQgdGhpcyBhY3R1YWxseSAqaXMqIGVub3VnaC4gT2theSwgeWVzLCBnb29kLCBpdCBhcHBlYXJzIHRoYXQgYE5FVERFVlNJTWAgKmlzKiBhIHZpcnR1YWwgZHJpdmVyIHRoYXQmIzM5O3MgYnVpbHQgYXJvdW5kIGRldmxpbmsuIFRoYXQmIzM5O3MgZXhhY3RseSB0aGUga2luZCBvZiB0ZXN0IGRyaXZlciBJIHdhcyBob3BpbmcgZm9yLiBOb3csIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJJiMzOTtsbCBxdWlja2x5IGNoZWNrIHRoZSBgS2NvbmZpZ2AgZmlsZSBpbiB0aGUgYGRyaXZlcnMvbmV0YCBkaXJlY3RvcnkgdG8gY29uZmlybS4gSSBhbHdheXMgYXBwcmVjaWF0ZSBhIGRvdWJsZS1jaGVjay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVERFVlNJTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZz02MDI9c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L2h5cGVydi9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnLTYwMy1cbmRyaXZlcnMvbmV0L0tjb25maWc6NjA0OmNvbmZpZyBORVRERVZTSU1cbmRyaXZlcnMvbmV0L0tjb25maWctNjA1LVx0dHJpc3RhdGUgXCYjMzQ7U2ltdWxhdGVkIG5ldHdvcmtpbmcgZGV2aWNlXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk0MTkKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgTkVUREVWU0lNYCBDb25maWd1cmF0aW9uIGFuZCBEZXZsaW5rIEFQSSoqCgpPa2F5LCBzbyB0aGUgaW5pdGlhbCBpbXByZXNzaW9uIGlzIHRoYXQgZW5hYmxpbmcgYE5FVERFVlNJTWAgaXMgYSBzb2xpZCBtb3ZlLiBNeSBuZXh0IHRob3VnaHQgaXMgdG8gaW52ZXN0aWdhdGUgaWYgdGhlcmUgYXJlIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMgdGhhdCBtaWdodCBjb21wbGVtZW50IGl0LiBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgYGRldmxpbmtgIGlzIGEgZnVuZGFtZW50YWwgbmV0bGluayBBUEksIGFuZCB0aGlzIHBhdGNoIHNlZW1zIHRvIGJlIGhvbmluZyBpbiBvbiBgZGV2bGlua19ubF9wb3J0X2F0dHJzX3B1dGAsIHdoaWNoIGlzIGNhbGxlZCB3aXRoaW4gYGRldmxpbmtfbmxfcG9ydF9maWxsYC4gTXkgaW5pdGlhbCBmb2N1cyBuZWVkcyB0byBiZSBvbiB0aGVzZSBrZXkgc3ltYm9sczogYGRldmxpbmtfbmxfcG9ydF9nZXRfZG9pdGAsIGBkZXZsaW5rX25sX3BvcnRfZ2V0X2R1bXBfb25lYCwgYW5kIGBkZXZsaW5rX25sX3BvcnRfbmV3X2RvaXRgLgoKSSYjMzk7bGwgcHJvY2VlZCB0byBleGFtaW5lIGBkZXZsaW5rX25sX3BvcnRfZ2V0X2RvaXRgIGFuZCBgZGV2bGlua19ubF9wb3J0X25ld19kb2l0YCBpbiBgbmV0L2RldmxpbmsvcG9ydC5jYCB0byBmdWxseSBncmFzcCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY2hhbmdlIGFuZCBhc3Nlc3MgaXRzIGltcGFjdCBvbiB0aGUgbGFyZ2VyIHN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGV2bGlua19ubF9wb3J0X2dldF9kb2l0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2RldmxpbmsvcG9ydC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9kZXZsaW5rL3BvcnQuYz01OTI9dm9pZCBkZXZsaW5rX3BvcnRzX25vdGlmeV91bnJlZ2lzdGVyKHN0cnVjdCBkZXZsaW5rICpkZXZsaW5rKVxuLS1cbm5ldC9kZXZsaW5rL3BvcnQuYy01OTYtXG5uZXQvZGV2bGluay9wb3J0LmM6NTk3OmludCBkZXZsaW5rX25sX3BvcnRfZ2V0X2RvaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbm5ldC9kZXZsaW5rL3BvcnQuYy01OTgte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5OTU2CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogOTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUsIHdoYXQmIzM5O3Mgb24gbXkgbWluZCByZWdhcmRpbmcgdGhlc2UgZGV2bGluayBwb3J0IGZ1bmN0aW9ucy4KCioqRGVjb25zdHJ1Y3RpbmcgRGV2bGluayBQb3J0IE9wZXJhdGlvbnMqKgoKSG1tLCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgZGV2bGluayBmdW5jdGlvbnM6IGBkZXZsaW5rX25sX3BvcnRfZ2V0X2R1bXBfb25lYCwgYGRldmxpbmtfbmxfcG9ydF9uZXdfZG9pdGAsIGBkZXZsaW5rX25sX3BvcnRfc2V0X2RvaXRgLCBhbmQgYGRldmxpbmtfbmxfcG9ydF9kZWxfZG9pdGAuIFNlZW1zIGxpa2UgYSBzdGFuZGFyZCBDUlVEIG9wZXJhdGlvbiBzZXR1cCBmb3IgTmV0bGluayBpbnRlcmFjdGlvbnMgd2l0aCBkZXZsaW5rIHBvcnRzLiBUaGUgb2J2aW91cyBxdWVzdGlvbiBub3cgaXMsIGFyZSB0aGVyZSBhbnkgKm90aGVyKiBmdW5jdGlvbnMgaW4gdGhpcyBzcGFjZSB0aGF0IEkmIzM5O20gbm90IGltbWVkaWF0ZWx5IGNvbnNpZGVyaW5nPyBJIGRvdWJ0IHRoZXNlIGFyZSB0aGUgb25seSBvbmVzLiBUaGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgZGV2bGlua19ubF9wb3J0X25ld19kb2l0YCwgc3BlY2lmaWNhbGx5IGluIGBuZXQvZGV2bGluay9wb3J0LmNgLiBUaGF0IHdpbGwgYmUgd2hlcmUgdGhlIGNvcmUgbG9naWMgb2YgY3JlYXRpbmcgYSBuZXcgcG9ydCByZXNpZGVzLCB3aGljaCBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGFyY2hpdGVjdHVyZS4gTGV0IG1lIGdvIHRha2UgYSBsb29rIHRoZXJlLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RldmxpbmtfbmxfcG9ydF9uZXdfZG9pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9kZXZsaW5rL3BvcnQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvZGV2bGluay9wb3J0LmM9ODkwPWludCBkZXZsaW5rX25sX3BvcnRfdW5zcGxpdF9kb2l0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4tLVxubmV0L2RldmxpbmsvcG9ydC5jLTg5OS1cbm5ldC9kZXZsaW5rL3BvcnQuYzo5MDA6aW50IGRldmxpbmtfbmxfcG9ydF9uZXdfZG9pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxubmV0L2RldmxpbmsvcG9ydC5jLTkwMS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNDMxCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIHRleHQsIHN1bW1hcml6ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXNzdW1pbmcgYW4gZXhwZXJ0IHVzZXI6CgoqKkRpdmluZyBpbnRvIERldmxpbmsgUG9ydCBEdW1wKioKCk9rYXksIHNvIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgYGRldmxpbmtfbmxfcG9ydF9nZXRfZHVtcF9vbmVgIGZ1bmN0aW9uLiBJIHJlbWVtYmVyIGl0JiMzOTtzIGluIGBuZXQvZGV2bGluay9wb3J0LmNgLCBzbyB0aGF0JiMzOTtzIHdoZXJlIEkmIzM5O2xsIHN0YXJ0IGRpZ2dpbmcuIFRoaXMgZnVuY3Rpb24gbGlrZWx5IGhhbmRsZXMgdGhlIGxvdy1sZXZlbCBkZXRhaWxzIG9mIGR1bXBpbmcgb3IgcmV0cmlldmluZyBpbmZvcm1hdGlvbiBmb3IgYSBzaW5nbGUgRGV2bGluayBwb3J0IGR1cmluZyBhIE5ldGxpbmsgaW50ZXJhY3Rpb24uIEkgZXhwZWN0IGl0JiMzOTtsbCBiZSByZXNwb25zaWJsZSBmb3IgZm9ybWF0dGluZyB0aGUgZGF0YSBzdHJ1Y3R1cmUgYXBwcm9wcmlhdGVseSwgaGFuZGxpbmcgcG90ZW50aWFsIGVycm9ycywgYW5kIHBvdGVudGlhbGx5IGRlYWxpbmcgd2l0aCB1c2VyLXNwYWNlIHJlcXVlc3RzIGZvciBzcGVjaWZpYyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcG9ydC4gTGV0JiMzOTtzIHNlZSBpZiBteSBtZW50YWwgbW9kZWwgaG9sZHMgdXAgb25jZSBJIGdldCBpbnRvIHRoZSBjb2RlLiBJJiMzOTttIGtlZW4gdG8gc2VlIHRoZSBzcGVjaWZpYyBmaWVsZHMgaXQgcHVsbHMgYW5kIGFueSBmaWx0ZXJpbmcgb3Igc2VjdXJpdHkgY29uc2lkZXJhdGlvbnMgaW1wbGVtZW50ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RldmxpbmtfbmxfcG9ydF9nZXRfZHVtcF9vbmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvZGV2bGluay9wb3J0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2RldmxpbmsvcG9ydC5jPTYxOD1zdGF0aWMgaW50XG5uZXQvZGV2bGluay9wb3J0LmM6NjE5OmRldmxpbmtfbmxfcG9ydF9nZXRfZHVtcF9vbmUoc3RydWN0IHNrX2J1ZmYgKm1zZywgc3RydWN0IGRldmxpbmsgKmRldmxpbmssXG5uZXQvZGV2bGluay9wb3J0LmMtNjIwLVx0XHRcdCAgICAgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiLCBpbnQgZmxhZ3MpXG4tLVxubmV0L2RldmxpbmsvcG9ydC5jPTY0Mj1pbnQgZGV2bGlua19ubF9wb3J0X2dldF9kdW1waXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKVxubmV0L2RldmxpbmsvcG9ydC5jLTY0My17XG5uZXQvZGV2bGluay9wb3J0LmM6NjQ0Olx0cmV0dXJuIGRldmxpbmtfbmxfZHVtcGl0KHNrYiwgY2IsIGRldmxpbmtfbmxfcG9ydF9nZXRfZHVtcF9vbmUpO1xubmV0L2RldmxpbmsvcG9ydC5jLTY0NS19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwODkzCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogOTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBEZXZsaW5rIE5ldGxpbmsgUG9ydCBIYW5kbGVyKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEl0IGxvb2tzIGxpa2UgYGRldmxpbmtfbmxfcG9ydF9nZXRfZHVtcGl0YCBpcyB0aGUga2V5IGZ1bmN0aW9uIGhlcmUsIHRoZSBhY3R1YWwgd29ya2hvcnNlIGZvciB0aGUgbmV0bGluayBoYW5kbGluZy4gVGhlIGltcG9ydGFudCB0aGluZyB0byB1bmRlcnN0YW5kIGFyZSB0aGUgcmVsYXRlZCBzeW1ib2xzLCBzcGVjaWZpY2FsbHkgYGRldmxpbmtfbmxfcG9ydF9nZXRfZG9pdGAsIGBkZXZsaW5rX25sX3BvcnRfZ2V0X2R1bXBpdGAsIGFuZCBgZGV2bGlua19ubF9wb3J0X25ld19kb2l0YC4gVGhvc2UgYXJlIHRoZSBvbmVzIHRvIHplcm8gaW4gb24gdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93LiBOb3csIEkgc2hvdWxkIHByb2JhYmx5IHRha2UgYSBsb29rIGF0IHdoYXQgY2FsbHMgYGRldmxpbmtfbmxfcG9ydF9maWxsYCBiZWNhdXNlIHRoYXQmIzM5O3MgbGlrZWx5IHdoZXJlIHRoZSBkYXRhIGlzIGJlaW5nIGNvbnN0cnVjdGVkIHRoYXQgdGhlc2UgZnVuY3Rpb25zIGFyZSBwcm9jZXNzaW5nLiBVbmRlcnN0YW5kaW5nIGl0cyBjYWxsZXJzIHdpbGwgcGFpbnQgYSBtdWNoIGNsZWFyZXIgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGV2bGlua19ubF9wb3J0X2ZpbGwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvZGV2bGluay9wb3J0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2RldmxpbmsvcG9ydC5jPTQ1Mz1kZXZsaW5rX25sX3BvcnRfZnVuY3Rpb25fYXR0cnNfcHV0KHN0cnVjdCBza19idWZmICptc2csIHN0cnVjdCBkZXZsaW5rX3BvcnQgKnBvcnQsXG4tLVxubmV0L2RldmxpbmsvcG9ydC5jLTQ4OC1cbm5ldC9kZXZsaW5rL3BvcnQuYzo0ODk6c3RhdGljIGludCBkZXZsaW5rX25sX3BvcnRfZmlsbChzdHJ1Y3Qgc2tfYnVmZiAqbXNnLFxubmV0L2RldmxpbmsvcG9ydC5jLTQ5MC1cdFx0XHRcdHN0cnVjdCBkZXZsaW5rX3BvcnQgKmRldmxpbmtfcG9ydCxcbi0tXG5uZXQvZGV2bGluay9wb3J0LmM9NTQ5PXN0YXRpYyB2b2lkIGRldmxpbmtfcG9ydF9ub3RpZnkoc3RydWN0IGRldmxpbmtfcG9ydCAqZGV2bGlua19wb3J0LFxuLS1cbm5ldC9kZXZsaW5rL3BvcnQuYy01NjUtXG5uZXQvZGV2bGluay9wb3J0LmM6NTY2Olx0ZXJyID0gZGV2bGlua19ubF9wb3J0X2ZpbGwobXNnLCBkZXZsaW5rX3BvcnQsIGNtZCwgMCwgMCwgMCwgTlVMTCk7XG5uZXQvZGV2bGluay9wb3J0LmMtNTY3LVx0aWYgKGVycikge1xuLS1cbm5ldC9kZXZsaW5rL3BvcnQuYz01OTc9aW50IGRldmxpbmtfbmxfcG9ydF9nZXRfZG9pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuLS1cbm5ldC9kZXZsaW5rL3BvcnQuYy02MDYtXG5uZXQvZGV2bGluay9wb3J0LmM6NjA3Olx0ZXJyID0gZGV2bGlua19ubF9wb3J0X2ZpbGwobXNnLCBkZXZsaW5rX3BvcnQsIERFVkxJTktfQ01EX1BPUlRfTkVXLFxubmV0L2RldmxpbmsvcG9ydC5jLTYwOC1cdFx0XHRcdCAgIGluZm8tXHUwMDNlc25kX3BvcnRpZCwgaW5mby1cdTAwM2VzbmRfc2VxLCAwLFxuLS1cbm5ldC9kZXZsaW5rL3BvcnQuYz02MTk9ZGV2bGlua19ubF9wb3J0X2dldF9kdW1wX29uZShzdHJ1Y3Qgc2tfYnVmZiAqbXNnLCBzdHJ1Y3QgZGV2bGluayAqZGV2bGluayxcbi0tXG5uZXQvZGV2bGluay9wb3J0LmMtNjI3LVx0eGFfZm9yX2VhY2hfc3RhcnQoXHUwMDI2ZGV2bGluay1cdTAwM2Vwb3J0cywgcG9ydF9pbmRleCwgZGV2bGlua19wb3J0LCBzdGF0ZS1cdTAwM2VpZHgpIHtcbm5ldC9kZXZsaW5rL3BvcnQuYzo2Mjg6XHRcdGVyciA9IGRldmxpbmtfbmxfcG9ydF9maWxsKG1zZywgZGV2bGlua19wb3J0LFxubmV0L2RldmxpbmsvcG9ydC5jLTYyOS1cdFx0XHRcdFx0ICAgREVWTElOS19DTURfUE9SVF9ORVcsXG4tLVxubmV0L2RldmxpbmsvcG9ydC5jPTkwMD1pbnQgZGV2bGlua19ubF9wb3J0X25ld19kb2l0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4tLVxubmV0L2RldmxpbmsvcG9ydC5jLTk0Ny1cdH1cbm5ldC9kZXZsaW5rL3BvcnQuYzo5NDg6XHRlcnIgPSBkZXZsaW5rX25sX3BvcnRfZmlsbChtc2csIGRldmxpbmtfcG9ydCwgREVWTElOS19DTURfUE9SVF9ORVcsXG5uZXQvZGV2bGluay9wb3J0LmMtOTQ5LVx0XHRcdFx0ICAgaW5mby1cdTAwM2VzbmRfcG9ydGlkLCBpbmZvLVx1MDAzZXNuZF9zZXEsIDAsIE5VTEwpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTg1NgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDkyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoaXMgY29kZSBzbmlwcGV0LCBleHByZXNzZWQgYXMgaWYgaXQmIzM5O3MgbXkgb3duIHRob3VnaHQgcHJvY2VzczoKCioqUG9ydCBOb3RpZmljYXRpb24gYW5kIE5ldGxpbmsgT3BlcmF0aW9uczogQSBRdWljayBBc3Nlc3NtZW50KioKCkFscmlnaHQsIEkmIzM5O20gdGFraW5nIGEgbG9vayBhdCB0aGlzIGBkZXZsaW5rYCBwb3J0IGhhbmRsaW5nLiBJdCYjMzk7cyBpbXBvcnRhbnQgdG8gcmVtZW1iZXIgdGhhdCBgZGV2bGlua19wb3J0X25vdGlmeWAgZ2V0cyB0cmlnZ2VyZWQgZm9yIGJvdGggcG9ydCByZWdpc3RyYXRpb24gKmFuZCogdW5yZWdpc3RyYXRpb24uIFRoYXQmIzM5O3MgYSBrZXkgb2JzZXJ2YXRpb24uIEl0JiMzOTtzIGEgZ2VuZXJhbCBub3RpZmljYXRpb24gbWVjaGFuaXNtLCBidXQgdGhlIHByaW1hcnkgaW50ZXJhY3Rpb25zIHdpdGggdXNlcnNwYWNlIHNlZW0gdG8gb3JpZ2luYXRlIGZyb20gdGhlIE5ldGxpbmsgaW50ZXJmYWNlLiBTcGVjaWZpY2FsbHksIGBkZXZsaW5rX25sX3BvcnRfZ2V0X2RvaXRgLCBgZGV2bGlua19ubF9wb3J0X2dldF9kdW1waXRgLCBhbmQgYGRldmxpbmtfbmxfcG9ydF9uZXdfZG9pdGAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBwYXRoIHRoZSBjb2RlIHRha2VzLiBHaXZlbiB0aGUgY29udGV4dCwgbXkgbWFpbiBjb25jZXJuIHJpZ2h0IG5vdyBpcyB3aGV0aGVyIGBkZXZsaW5rX25sX3BvcnRfbmV3X2RvaXRgIGlzIGFjdHVhbGx5IGEgcmVhY2hhYmxlIGZ1bmN0aW9uLiBMZXQmIzM5O3Mgc2VlIGlmIHRoaXMgZnVuY3Rpb24gaXMgY29ubmVjdGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXZsaW5rX25sX3BvcnRfbmV3X2RvaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvZGV2bGluay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2RldmxpbmsvbmV0bGlua19nZW4uYz03MDI9Y29uc3Qgc3RydWN0IGdlbmxfc3BsaXRfb3BzIGRldmxpbmtfbmxfb3BzWzc1XSA9IHtcbi0tXG5uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5jLTc0OS1cdFx0LnByZV9kb2l0XHQ9IGRldmxpbmtfbmxfcHJlX2RvaXQsXG5uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5jOjc1MDpcdFx0LmRvaXRcdFx0PSBkZXZsaW5rX25sX3BvcnRfbmV3X2RvaXQsXG5uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5jLTc1MS1cdFx0LnBvc3RfZG9pdFx0PSBkZXZsaW5rX25sX3Bvc3RfZG9pdCxcbi0tXG5uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5oPTUyPWludCBkZXZsaW5rX25sX3BvcnRfc2V0X2RvaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbyk7XG5uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5oOjUzOmludCBkZXZsaW5rX25sX3BvcnRfbmV3X2RvaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbyk7XG5uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5oLTU0LWludCBkZXZsaW5rX25sX3BvcnRfZGVsX2RvaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbyk7XG4tLVxubmV0L2RldmxpbmsvcG9ydC5jPTg5MD1pbnQgZGV2bGlua19ubF9wb3J0X3Vuc3BsaXRfZG9pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuLS1cbm5ldC9kZXZsaW5rL3BvcnQuYy04OTktXG5uZXQvZGV2bGluay9wb3J0LmM6OTAwOmludCBkZXZsaW5rX25sX3BvcnRfbmV3X2RvaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbm5ldC9kZXZsaW5rL3BvcnQuYy05MDEte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjYwMgoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDIxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBOZXRsaW5rIFBhdGNoKioKCk9rYXksIHNvIEkgc2VlIHRoaXMgcGF0Y2ggaXMgYWJvdXQgbmV0bGluayBoYW5kbGVycywgc3BlY2lmaWNhbGx5IHJlZ2FyZGluZyBgZGV2bGlua2AuIFRoZSBrZXkgZnVuY3Rpb25hbCBjaGFuZ2UgaGVyZSBpcyB0aGUgaW50cm9kdWN0aW9uIG9mIGEgbmV3IGF0dHJpYnV0ZSwgYERFVkxJTktfQVRUUl9QT1JUX0VYVEVSTkFMYCwgd2hpY2ggd2lsbCBiZSBhZGRlZCB0byB0aGUgb3V0cHV0IG9mIGBkZXZsaW5rX25sX3BvcnRfYXR0cnNfcHV0YC4gVGhpcyBkZWZpbml0ZWx5IHdhcnJhbnRzIGZ1enppbmcsIG5vIHF1ZXN0aW9uLgoKTGV0JiMzOTtzIHNlZSwgdGhlIGZ1bmN0aW9ucyBvZiBpbnRlcmVzdCBmb3IgdGhpcyBwYXJ0aWN1bGFyIHBhdGNoIGFyZSBgZGV2bGlua19ubF9wb3J0X2dldF9kb2l0YCwgYGRldmxpbmtfbmxfcG9ydF9nZXRfZHVtcGl0YCwgYW5kIGBkZXZsaW5rX25sX3BvcnRfbmV3X2RvaXRgLiBUaG9zZSBhcmUgbXkgZm9jdXMgcG9pbnRzIGZvciBpbml0aWFsIGluc3BlY3Rpb24gYW5kIHBvdGVudGlhbCBmdXp6aW5nIHRhcmdldHMuCgpSaWdodCwgbm93LCByZWdhcmRpbmcgdGhlIHRlc3RpbmcgZW52aXJvbm1lbnQuIFRoZSBwYXRjaCBtZW50aW9ucyBgTkVUREVWU0lNYCwgd2hpY2gsIGZyb20gZXhwZXJpZW5jZSwgaXMgdHlwaWNhbGx5IHN1ZmZpY2llbnQgZm9yIHRlc3RpbmcgYGRldmxpbmtgLiBMZXQgbWUgY29uZmlybSwgYXMgaXQgYWxzbyBzZWxlY3RzIGBORVRfREVWTElOS2AuIFRoZXJlIGRvZXNuJiMzOTt0IGFwcGVhciB0byBiZSBhbnkgb3RoZXIgY29uZmlnIG9wdGlvbnMgZGlyZWN0bHkgcmVsYXRlZCB0byB0aGlzLiBgTkVUREVWU0lNYCBpcyB1c3VhbGx5IGhvdyB3ZSBoYW5kbGUgZGV2bGluayBpbiBzeXprYWxsZXIuCgpKdXN0IGEgcXVpY2sgc2FuaXR5IGNoZWNrLCBJJiMzOTtsbCBzZWFyY2ggdGhlIGNvZGViYXNlIHRvIG1ha2Ugc3VyZSB0aGlzIGBERVZMSU5LX0FUVFJfUE9SVF9FWFRFUk5BTGAgaXNuJiMzOTt0IGJlaW5nIHVzZWQgYW55d2hlcmUgZWxzZSB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50IG9yIHVuZXhwZWN0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0RFVkxJTktfQVRUUl9QT1JUX0VYVEVSTkFMJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvdWFwaS9saW51eC9kZXZsaW5rLmg9NDEyPWVudW0gZGV2bGlua19hdHRyIHtcbi0tXG5pbmNsdWRlL3VhcGkvbGludXgvZGV2bGluay5oLTU5Ny1cbmluY2x1ZGUvdWFwaS9saW51eC9kZXZsaW5rLmg6NTk4Olx0REVWTElOS19BVFRSX1BPUlRfRVhURVJOQUwsXHRcdC8qIHU4ICovXG5pbmNsdWRlL3VhcGkvbGludXgvZGV2bGluay5oLTU5OS1cdERFVkxJTktfQVRUUl9QT1JUX0NPTlRST0xMRVJfTlVNQkVSLFx0LyogdTMyICovXG4tLVxubmV0L2RldmxpbmsvcG9ydC5jPTIyOT1zdGF0aWMgaW50IGRldmxpbmtfbmxfcG9ydF9hdHRyc19wdXQoc3RydWN0IHNrX2J1ZmYgKm1zZyxcbi0tXG5uZXQvZGV2bGluay9wb3J0LmMtMjQ5LVx0XHRcdHJldHVybiAtRU1TR1NJWkU7XG5uZXQvZGV2bGluay9wb3J0LmM6MjUwOlx0XHRpZiAobmxhX3B1dF91OChtc2csIERFVkxJTktfQVRUUl9QT1JUX0VYVEVSTkFMLCBhdHRycy1cdTAwM2VwY2lfcGYuZXh0ZXJuYWwpKVxubmV0L2RldmxpbmsvcG9ydC5jLTI1MS1cdFx0XHRyZXR1cm4gLUVNU0dTSVpFO1xuLS1cbm5ldC9kZXZsaW5rL3BvcnQuYy0yNTgtXHRcdFx0cmV0dXJuIC1FTVNHU0laRTtcbm5ldC9kZXZsaW5rL3BvcnQuYzoyNTk6XHRcdGlmIChubGFfcHV0X3U4KG1zZywgREVWTElOS19BVFRSX1BPUlRfRVhURVJOQUwsIGF0dHJzLVx1MDAzZXBjaV92Zi5leHRlcm5hbCkpXG5uZXQvZGV2bGluay9wb3J0LmMtMjYwLVx0XHRcdHJldHVybiAtRU1TR1NJWkU7XG4tLVxubmV0L2RldmxpbmsvcG9ydC5jLTI2OS1cdFx0XHRyZXR1cm4gLUVNU0dTSVpFO1xubmV0L2RldmxpbmsvcG9ydC5jOjI3MDpcdFx0aWYgKG5sYV9wdXRfdTgobXNnLCBERVZMSU5LX0FUVFJfUE9SVF9FWFRFUk5BTCwgYXR0cnMtXHUwMDNlcGNpX3NmLmV4dGVybmFsKSlcbm5ldC9kZXZsaW5rL3BvcnQuYy0yNzEtXHRcdFx0cmV0dXJuIC1FTVNHU0laRTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM1MzkKCQkJCQkJCW91dHB1dDogMTQwCgkJCQkJCQl0aG91Z2h0czogMjAyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgaXMgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIHBhdGNoLiBJdCYjMzk7cyByZWFsbHkganVzdCBleHRlbmRpbmcgdGhlIGV4aXN0aW5nIGBERVZMSU5LX0FUVFJfUE9SVF9FWFRFUk5BTGAgYXR0cmlidXRlIHRvIGNvdmVyIFBDSSBzdWJmdW5jdGlvbnMgKGBwY2lfc2ZgKS4gSXQgd2FzIGFscmVhZHkgaW1wbGVtZW50ZWQgZm9yIHBoeXNpY2FsIGZ1bmN0aW9ucyAoYHBjaV9wZmApIGFuZCB2aXJ0dWFsIGZ1bmN0aW9ucyAoYHBjaV92ZmApLCBzbyB0aGlzIGlzIHJlYWxseSBqdXN0IGNvbXBsZXRpbmcgdGhlIHBpY3R1cmUgZm9yIFBDSS4gV2hpbGUgdGhlIGNvZGUgY2hhbmdlIGl0c2VsZiBpcyBtaW5pbWFsLCBpdCAqaXMqIGZ1bmN0aW9uYWw7IHdlJiMzOTtyZSBhZGRpbmcgYSBuZXcgYXR0cmlidXRlIHRvIHRoZSBOZXRsaW5rIHJlc3BvbnNlLgoKR2l2ZW4gdGhhdCBpdCB0b3VjaGVzIHRoZSBOZXRsaW5rIEFQSSBmb3IgZGV2bGluayBwb3J0cywgSSYjMzk7bSBnb2luZyB0byBtYXJrIHRoaXMgYXMgV29ydGhGdXp6aW5nPXRydWUuIE5ldGxpbmsgY2hhbmdlcyBhcmUgcHJpbWUgY2FuZGlkYXRlcyBmb3IgZnV6emluZyBzaW5jZSBhIG1hbGZvcm1lZCBtZXNzYWdlIGNvdWxkIGxlYWQgdG8gYWxsIHNvcnRzIG9mIGlzc3Vlcy4KClNwZWNpZmljYWxseSwgSSYjMzk7bGwgZm9jdXMgbXkgZnV6emluZyBlZmZvcnRzIG9uIGBkZXZsaW5rX25sX3BvcnRfZ2V0X2RvaXRgLCBgZGV2bGlua19ubF9wb3J0X2dldF9kdW1waXRgLCBhbmQgYGRldmxpbmtfbmxfcG9ydF9uZXdfZG9pdGAuIFRob3NlIGFyZSB0aGUgZW50cnkgcG9pbnRzIGZvciB0aGUgcmVsZXZhbnQgTmV0bGluayBvcGVyYXRpb25zLCBzbyB0aG9zZSBhcmUgdGhlIHNwb3RzIHdoZXJlIEkmIzM5O2QgYW50aWNpcGF0ZSB2dWxuZXJhYmlsaXRpZXMuCgpBbmQgc2luY2UgdGhpcyBwYXRjaCBpcyByZWxhdGVkIHRvIFBDSSBzdWJmdW5jdGlvbnMsIEkmIzM5O20gZ29pbmcgdG8gZW5zdXJlIHRoZSBgTkVUREVWU0lNYCBjb25maWcgaXMgZW5hYmxlZCB0byBlZmZlY3RpdmVseSB0ZXN0IGl0LiBUaGlzIHdpbGwgZW5zdXJlIHRoYXQgUENJIHN1YmZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGUgdGVzdCBzZXR1cC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVERFVlNJTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RldmxpbmtfbmxfcG9ydF9nZXRfZG9pdCYjMzQ7LAogICAgJiMzNDtkZXZsaW5rX25sX3BvcnRfZ2V0X2R1bXBpdCYjMzQ7LAogICAgJiMzNDtkZXZsaW5rX25sX3BvcnRfbmV3X2RvaXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIG5ldyBuZXRsaW5rIGF0dHJpYnV0ZSBERVZMSU5LX0FUVFJfUE9SVF9FWFRFUk5BTCB0byB0aGUgb3V0cHV0IG9mIGRldmxpbmtfbmxfcG9ydF9hdHRyc19wdXQgZm9yIFBDSSBzdWJmdW5jdGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgZGV2bGluayBuZXRsaW5rIEFQSSBhbmQgY2FuIGJlIHRlc3RlZCBieSBmdXp6aW5nIHRoZSBkZXZsaW5rIHBvcnQgbmV0bGluayBoYW5kbGVycy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUREVWU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGV2bGlua19ubF9wb3J0X2dldF9kb2l0JiMzNDssCiAgICAmIzM0O2RldmxpbmtfbmxfcG9ydF9nZXRfZHVtcGl0JiMzNDssCiAgICAmIzM0O2RldmxpbmtfbmxfcG9ydF9uZXdfZG9pdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgbmV3IG5ldGxpbmsgYXR0cmlidXRlIERFVkxJTktfQVRUUl9QT1JUX0VYVEVSTkFMIHRvIHRoZSBvdXRwdXQgb2YgZGV2bGlua19ubF9wb3J0X2F0dHJzX3B1dCBmb3IgUENJIHN1YmZ1bmN0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBkZXZsaW5rIG5ldGxpbmsgQVBJIGFuZCBjYW4gYmUgdGVzdGVkIGJ5IGZ1enppbmcgdGhlIGRldmxpbmsgcG9ydCBuZXRsaW5rIGhhbmRsZXJzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6MzU6MTUuNjU5MDAxNDdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3Mzc2MTkzNTQzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRERVZTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkZXZsaW5rX25sX3BvcnRfZ2V0X2RvaXRcIixcbiAgICBcImRldmxpbmtfbmxfcG9ydF9nZXRfZHVtcGl0XCIsXG4gICAgXCJkZXZsaW5rX25sX3BvcnRfbmV3X2RvaXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgbmV3IG5ldGxpbmsgYXR0cmlidXRlIERFVkxJTktfQVRUUl9QT1JUX0VYVEVSTkFMIHRvIHRoZSBvdXRwdXQgb2YgZGV2bGlua19ubF9wb3J0X2F0dHJzX3B1dCBmb3IgUENJIHN1YmZ1bmN0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBkZXZsaW5rIG5ldGxpbmsgQVBJIGFuZCBjYW4gYmUgdGVzdGVkIGJ5IGZ1enppbmcgdGhlIGRldmxpbmsgcG9ydCBuZXRsaW5rIGhhbmRsZXJzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTozNToxNS42NTkwMTE0NVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzczMzI2OTcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZmQ3YTYzZjVkZDBhZTQ3ZDllZGVhYTk1MTA1ODE4YzRjMzdlZTY0MVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEF1ZyAzIDA5OjM1OjE0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9kZXZsaW5rL3BvcnQuYyBiL25ldC9kZXZsaW5rL3BvcnQuY1xcbmluZGV4IGRjODJjYWM2OGU3ZDAuLjE1MjhmMmQxNDhkZmMgMTAwNjQ0XFxuLS0tIGEvbmV0L2RldmxpbmsvcG9ydC5jXFxuKysrIGIvbmV0L2RldmxpbmsvcG9ydC5jXFxuQEAgLTI2Nyw2ICsyNjcsOCBAQCBzdGF0aWMgaW50IGRldmxpbmtfbmxfcG9ydF9hdHRyc19wdXQoc3RydWN0IHNrX2J1ZmYgKm1zZyxcXG4gXFx0XFx0ICAgIG5sYV9wdXRfdTMyKG1zZywgREVWTElOS19BVFRSX1BPUlRfUENJX1NGX05VTUJFUixcXG4gXFx0XFx0XFx0XFx0YXR0cnMtXFx1MDAzZXBjaV9zZi5zZikpXFxuIFxcdFxcdFxcdHJldHVybiAtRU1TR1NJWkU7XFxuK1xcdFxcdGlmIChubGFfcHV0X3U4KG1zZywgREVWTElOS19BVFRSX1BPUlRfRVhURVJOQUwsIGF0dHJzLVxcdTAwM2VwY2lfc2YuZXh0ZXJuYWwpKVxcbitcXHRcXHRcXHRyZXR1cm4gLUVNU0dTSVpFO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBERVZMSU5LX1BPUlRfRkxBVk9VUl9QSFlTSUNBTDpcXG4gXFx0Y2FzZSBERVZMSU5LX1BPUlRfRkxBVk9VUl9DUFU6XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjM1OjE2LjQzMzI5OTcyMVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjcyOTg3NjE5MjQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVERFVlNJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRldmxpbmtfbmxfcG9ydF9nZXRfZG9pdFwiLFxuICAgIFwiZGV2bGlua19ubF9wb3J0X2dldF9kdW1waXRcIixcbiAgICBcImRldmxpbmtfbmxfcG9ydF9uZXdfZG9pdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBuZXcgbmV0bGluayBhdHRyaWJ1dGUgREVWTElOS19BVFRSX1BPUlRfRVhURVJOQUwgdG8gdGhlIG91dHB1dCBvZiBkZXZsaW5rX25sX3BvcnRfYXR0cnNfcHV0IGZvciBQQ0kgc3ViZnVuY3Rpb25zLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGRldmxpbmsgbmV0bGluayBBUEkgYW5kIGNhbiBiZSB0ZXN0ZWQgYnkgZnV6emluZyB0aGUgZGV2bGluayBwb3J0IG5ldGxpbmsgaGFuZGxlcnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGZkN2E2M2Y1ZGQwYWU0N2Q5ZWRlYWE5NTEwNTgxOGM0YzM3ZWU2NDFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzIDA5OjM1OjE0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2RldmxpbmsvcG9ydC5jIGIvbmV0L2RldmxpbmsvcG9ydC5jXG5pbmRleCBkYzgyY2FjNjhlN2QwLi4xNTI4ZjJkMTQ4ZGZjIDEwMDY0NFxuLS0tIGEvbmV0L2RldmxpbmsvcG9ydC5jXG4rKysgYi9uZXQvZGV2bGluay9wb3J0LmNcbkBAIC0yNjcsNiArMjY3LDggQEAgc3RhdGljIGludCBkZXZsaW5rX25sX3BvcnRfYXR0cnNfcHV0KHN0cnVjdCBza19idWZmICptc2csXG4gXHRcdCAgICBubGFfcHV0X3UzMihtc2csIERFVkxJTktfQVRUUl9QT1JUX1BDSV9TRl9OVU1CRVIsXG4gXHRcdFx0XHRhdHRycy1cdTAwM2VwY2lfc2Yuc2YpKVxuIFx0XHRcdHJldHVybiAtRU1TR1NJWkU7XG4rXHRcdGlmIChubGFfcHV0X3U4KG1zZywgREVWTElOS19BVFRSX1BPUlRfRVhURVJOQUwsIGF0dHJzLVx1MDAzZXBjaV9zZi5leHRlcm5hbCkpXG4rXHRcdFx0cmV0dXJuIC1FTVNHU0laRTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIERFVkxJTktfUE9SVF9GTEFWT1VSX1BIWVNJQ0FMOlxuIFx0Y2FzZSBERVZMSU5LX1BPUlRfRkxBVk9VUl9DUFU6XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTozNToxNi40MzMzMDI3NDFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NjYyMzEzMDMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRGV2bGluayBOZXRsaW5rIEF0dHJpYnV0ZSBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2guIEl0J3MgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGFkZGl0aW9uIHRvIGBuZXQvZGV2bGluay9wb3J0LmNgLiBXZSdyZSBhZGRpbmcgYSBuZXcgbmV0bGluayBhdHRyaWJ1dGUsIGBERVZMSU5LX0FUVFJfUE9SVF9FWFRFUk5BTGAsIHdpdGhpbiB0aGUgYGRldmxpbmtfbmxfcG9ydF9hdHRyc19wdXRgIGZ1bmN0aW9uLiBFc3NlbnRpYWxseSwgaXQgYXBwZWFycyB0aGF0IHRoaXMgbmV3IGF0dHJpYnV0ZSB3aWxsIGJlIHBhcnQgb2YgdGhlIFBDSSBzZWNvbmRhcnkgZnVuY3Rpb24gaW5mb3JtYXRpb24gd2UgYXJlIHBhc3Npbmcgb3ZlciBuZXRsaW5rLlxuXG5JIHNlZSB0aGF0IHRoZSBjb2RlIG1vZGlmaWNhdGlvbiBpcyBtaW5pbWFsOyB3ZSdyZSBqdXN0IGFkZGluZyBhIGNhbGwgdG8gYG5sYV9wdXRfdThgIHRvIGluY2x1ZGUgdGhlIGBleHRlcm5hbGAgZmllbGQgZnJvbSBgYXR0cnMtXHUwMDNlcGNpX3NmYC4gSSBzaG91bGQgdmVyaWZ5IHRoYXQgdGhlIGBhdHRycy1cdTAwM2VwY2lfc2YuZXh0ZXJuYWxgIGZpZWxkIGlzIHBvcHVsYXRlZCwgYW5kIHdoZXRoZXIgdGhpcyBuZXcgYXR0cmlidXRlIGlzIHVzZWQgb3IgcmVxdWlyZWQgYnkgYW55IG90aGVyIGZ1bmN0aW9uLiBJIHdvdWxkIG5lZWQgdG8gdHJhY2UgdGhlIHVzYWdlIG9mIHRoaXMgYXR0cmlidXRlIHRvIGJlIHN1cmUuXG5cblRoaXMgbG9va3MgbGlrZSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIGRpcmVjdCBleHRlbnNpb24gb2YgdGhlIGRldmxpbmsgbmV0bGluayBBUEkgdG8gcHJvdmlkZSBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwb3J0LiBJIG5lZWQgdG8gYmUgc3VyZSB0aGUgc2VtYW50aWNzIG9mIGBERVZMSU5LX0FUVFJfUE9SVF9FWFRFUk5BTGAgYXJlIGNvcnJlY3RseSBkZWZpbmVkIGluIHJlbGF0aW9uIHRvIGV4aXN0aW5nIGF0dHJpYnV0ZXMuIEknbGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlIGRldmxpbmsgY29yZSBhbmQgdGhlIGJyb2FkZXIgbmV0bGluayBpbmZyYXN0cnVjdHVyZSB0byBtYWtlIHN1cmUgdGhpcyBuZXcgYXR0cmlidXRlIGlzIGhhbmRsZWQgY29ycmVjdGx5IGFuZCBkb2Vzbid0IGludHJvZHVjZSBhbnkgcmVncmVzc2lvbnMuIEl0J3MgaW1wb3J0YW50IHRvIGVuc3VyZSB0aGlzIGlzIGNvcnJlY3RseSBoYW5kbGVkIGluIGJvdGggdGhlIGtlcm5lbCBhbmQsIGVxdWFsbHkgaW1wb3J0YW50bHksIGFueSB1c2VyLXNwYWNlIHRvb2xpbmcgb3IgZGFlbW9ucyB0aGF0IGludGVyYWN0IHdpdGggdGhpcyBuZXRsaW5rIGludGVyZmFjZS4gSSdsbCBuZWVkIHRvIHRoaW5rIGFib3V0IGhvdyB0aGlzIGFmZmVjdHMgZXhpc3RpbmcgdXNlcnMgb2YgdGhlIEFQSSwgYW5kIHdoZXRoZXIgaXQgcmVxdWlyZXMgYW55IGNvbXBhdGliaWxpdHkgY29uc2lkZXJhdGlvbnMgb3IgdmVyc2lvbmluZyBzY2hlbWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDgzLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjg0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6MzU6MjIuMDk1NjE4ODgyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwODM3MTE0MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXZsaW5rX25sX3BvcnRfYXR0cnNfcHV0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9kZXZsaW5rL3BvcnQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvZGV2bGluay9wb3J0LmM9MjE5PXNpemVfdCBkZXZsaW5rX25sX3BvcnRfaGFuZGxlX3NpemUoc3RydWN0IGRldmxpbmtfcG9ydCAqZGV2bGlua19wb3J0KVxcbi0tXFxubmV0L2RldmxpbmsvcG9ydC5jLTIyOC1cXG5uZXQvZGV2bGluay9wb3J0LmM6MjI5OnN0YXRpYyBpbnQgZGV2bGlua19ubF9wb3J0X2F0dHJzX3B1dChzdHJ1Y3Qgc2tfYnVmZiAqbXNnLFxcbm5ldC9kZXZsaW5rL3BvcnQuYy0yMzAtXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgZGV2bGlua19wb3J0ICpkZXZsaW5rX3BvcnQpXFxuLS1cXG5uZXQvZGV2bGluay9wb3J0LmM9NDg5PXN0YXRpYyBpbnQgZGV2bGlua19ubF9wb3J0X2ZpbGwoc3RydWN0IHNrX2J1ZmYgKm1zZyxcXG4tLVxcbm5ldC9kZXZsaW5rL3BvcnQuYy01MjktXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNmRldmxpbmtfcG9ydC1cXHUwMDNldHlwZV9sb2NrKTtcXG5uZXQvZGV2bGluay9wb3J0LmM6NTMwOlxcdGlmIChkZXZsaW5rX25sX3BvcnRfYXR0cnNfcHV0KG1zZywgZGV2bGlua19wb3J0KSlcXG5uZXQvZGV2bGluay9wb3J0LmMtNTMxLVxcdFxcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTozNToyMi4yMDQwMDAwNzVaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjY4MTQ3MzU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipUcmFjaW5nIHRoZSBEYXRhIFBhdGg6IGRldmxpbmtfbmxfcG9ydF9hdHRyc19wdXQgYW5kIGRldmxpbmtfbmxfcG9ydF9maWxsKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYGRldmxpbmtfbmxfcG9ydF9hdHRyc19wdXRgLiBUaGUgY29tbWVudCB0ZWxscyBtZSB0aGlzIGlzIHVzZWQgYnkgYGRldmxpbmtfbmxfcG9ydF9maWxsYC4gTWFrZXMgc2Vuc2UsIHRoZSBsYXR0ZXIgcHJvYmFibHkgZmVlZHMgdGhlIGRhdGEgdGhpcyBmdW5jdGlvbiBzZXJpYWxpemVzLiAgTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbGFyZ2VyIGNvbnRleHQuIE15IG5leHQgbW92ZSBpcyB0byB0cmFjZSAqd2hlcmUqIGBkZXZsaW5rX25sX3BvcnRfZmlsbGAgaXRzZWxmIGlzIGNhbGxlZC4gVGhhdCB3aWxsIHNob3cgbWUgdGhlIGhpZ2hlci1sZXZlbCBmdW5jdGlvbnMgb3JjaGVzdHJhdGluZyB0aGUgcG9wdWxhdGlvbiBvZiB0aGVzZSBkZXZsaW5rIHBvcnQgYXR0cmlidXRlcy4gIFVuZGVyc3RhbmRpbmcgdGhlIGNhbGwgY2hhaW4gaXMga2V5IHRvIGZpZ3VyaW5nIG91dCB0aGUgZnVsbCBmbG93IG9mIGluZm9ybWF0aW9uIGFuZCB0aGUgcG9pbnRzIG9mIGludGVyYWN0aW9uIHdpdGhpbiB0aGUga2VybmVsLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTk5LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6MzU6MjUuODcyMTUyNTczWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExODU5MzI3MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXZsaW5rX25sX3BvcnRfZmlsbFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvZGV2bGluay9wb3J0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2RldmxpbmsvcG9ydC5jPTQ1Mz1kZXZsaW5rX25sX3BvcnRfZnVuY3Rpb25fYXR0cnNfcHV0KHN0cnVjdCBza19idWZmICptc2csIHN0cnVjdCBkZXZsaW5rX3BvcnQgKnBvcnQsXFxuLS1cXG5uZXQvZGV2bGluay9wb3J0LmMtNDg4LVxcbm5ldC9kZXZsaW5rL3BvcnQuYzo0ODk6c3RhdGljIGludCBkZXZsaW5rX25sX3BvcnRfZmlsbChzdHJ1Y3Qgc2tfYnVmZiAqbXNnLFxcbm5ldC9kZXZsaW5rL3BvcnQuYy00OTAtXFx0XFx0XFx0XFx0c3RydWN0IGRldmxpbmtfcG9ydCAqZGV2bGlua19wb3J0LFxcbi0tXFxubmV0L2RldmxpbmsvcG9ydC5jPTU0OT1zdGF0aWMgdm9pZCBkZXZsaW5rX3BvcnRfbm90aWZ5KHN0cnVjdCBkZXZsaW5rX3BvcnQgKmRldmxpbmtfcG9ydCxcXG4tLVxcbm5ldC9kZXZsaW5rL3BvcnQuYy01NjUtXFxubmV0L2RldmxpbmsvcG9ydC5jOjU2NjpcXHRlcnIgPSBkZXZsaW5rX25sX3BvcnRfZmlsbChtc2csIGRldmxpbmtfcG9ydCwgY21kLCAwLCAwLCAwLCBOVUxMKTtcXG5uZXQvZGV2bGluay9wb3J0LmMtNTY3LVxcdGlmIChlcnIpIHtcXG4tLVxcbm5ldC9kZXZsaW5rL3BvcnQuYz01OTc9aW50IGRldmxpbmtfbmxfcG9ydF9nZXRfZG9pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxubmV0L2RldmxpbmsvcG9ydC5jLTYwNi1cXG5uZXQvZGV2bGluay9wb3J0LmM6NjA3OlxcdGVyciA9IGRldmxpbmtfbmxfcG9ydF9maWxsKG1zZywgZGV2bGlua19wb3J0LCBERVZMSU5LX0NNRF9QT1JUX05FVyxcXG5uZXQvZGV2bGluay9wb3J0LmMtNjA4LVxcdFxcdFxcdFxcdCAgIGluZm8tXFx1MDAzZXNuZF9wb3J0aWQsIGluZm8tXFx1MDAzZXNuZF9zZXEsIDAsXFxuLS1cXG5uZXQvZGV2bGluay9wb3J0LmM9NjE5PWRldmxpbmtfbmxfcG9ydF9nZXRfZHVtcF9vbmUoc3RydWN0IHNrX2J1ZmYgKm1zZywgc3RydWN0IGRldmxpbmsgKmRldmxpbmssXFxuLS1cXG5uZXQvZGV2bGluay9wb3J0LmMtNjI3LVxcdHhhX2Zvcl9lYWNoX3N0YXJ0KFxcdTAwMjZkZXZsaW5rLVxcdTAwM2Vwb3J0cywgcG9ydF9pbmRleCwgZGV2bGlua19wb3J0LCBzdGF0ZS1cXHUwMDNlaWR4KSB7XFxubmV0L2RldmxpbmsvcG9ydC5jOjYyODpcXHRcXHRlcnIgPSBkZXZsaW5rX25sX3BvcnRfZmlsbChtc2csIGRldmxpbmtfcG9ydCxcXG5uZXQvZGV2bGluay9wb3J0LmMtNjI5LVxcdFxcdFxcdFxcdFxcdCAgIERFVkxJTktfQ01EX1BPUlRfTkVXLFxcbi0tXFxubmV0L2RldmxpbmsvcG9ydC5jPTkwMD1pbnQgZGV2bGlua19ubF9wb3J0X25ld19kb2l0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuLS1cXG5uZXQvZGV2bGluay9wb3J0LmMtOTQ3LVxcdH1cXG5uZXQvZGV2bGluay9wb3J0LmM6OTQ4OlxcdGVyciA9IGRldmxpbmtfbmxfcG9ydF9maWxsKG1zZywgZGV2bGlua19wb3J0LCBERVZMSU5LX0NNRF9QT1JUX05FVyxcXG5uZXQvZGV2bGluay9wb3J0LmMtOTQ5LVxcdFxcdFxcdFxcdCAgIGluZm8tXFx1MDAzZXNuZF9wb3J0aWQsIGluZm8tXFx1MDAzZXNuZF9zZXEsIDAsIE5VTEwpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTozNToyNS45OTA3NTMxMzVaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjcwNzk2NTc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoaXMgRGV2bGluayBOZXRsaW5rIEFQSSBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyBJIHNlZSB0aGF0IHRoZSBgZGV2bGlua19ubF9wb3J0X2ZpbGxgIGZ1bmN0aW9uIGlzIGNlbnRyYWwgaGVyZS4gVGhhdCBmdW5jdGlvbiBpcyB1c2VkIGluIHNldmVyYWwgTmV0bGluayBBUEkgaGFuZGxlcnM6IGBkZXZsaW5rX25sX3BvcnRfZ2V0X2RvaXRgLCBgZGV2bGlua19ubF9wb3J0X2dldF9kdW1wX29uZWAsIGBkZXZsaW5rX25sX3BvcnRfbmV3X2RvaXRgLCBhbmQgYGRldmxpbmtfcG9ydF9ub3RpZnlgLiBUaGVzZSBhcmUgdGhlIGNvcmUgZW50cnkgcG9pbnRzIGZvciBkZWFsaW5nIHdpdGggZGV2bGluayBwb3J0cyBvdmVyIE5ldGxpbmsuIFRoZSBwYXRjaCB0YXJnZXRzIGBkZXZsaW5rX25sX3BvcnRfYXR0cnNfcHV0YCwgd2hpY2ggaXMgY2FsbGVkICpieSogYGRldmxpbmtfbmxfcG9ydF9maWxsYC4gQWhhLCBhbmQgaXQncyBhZGRpbmcgYSBuZXcgYXR0cmlidXRlLCBgREVWTElOS19BVFRSX1BPUlRfRVhURVJOQUxgLCB0byB0aGUgb3V0cHV0IG9mIGBkZXZsaW5rX25sX3BvcnRfYXR0cnNfcHV0YC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIG5ldyBhdHRyaWJ1dGUgYmVpbmcgZXhwb3NlZC4gRGVmaW5pdGVseSBzb21ldGhpbmcgdGhhdCBuZWVkcyBmdXp6aW5nLlxuXG5JIHNob3VsZCBtYWtlIGEgbm90ZSBvZiB0aG9zZSBzcGVjaWZpYyBmdW5jdGlvbnM6IGBkZXZsaW5rX25sX3BvcnRfZ2V0X2RvaXRgLCBgZGV2bGlua19ubF9wb3J0X2dldF9kdW1wX29uZWAsIGFuZCBgZGV2bGlua19ubF9wb3J0X25ld19kb2l0YC4gSSBuZWVkIHRvIGVuc3VyZSB0aGUgZnV6emluZyBjb3ZlcnMgdGhlbS5cblxuTm93LCBsZXQgbWUganVzdCBxdWlja2x5IGNoZWNrIHRoZSBidWlsZCBjb25maWd1cmF0aW9uLiBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGlzIGFjdHVhbGx5IGJ1aWx0IGludG8gdGhlIGtlcm5lbCB3ZSBhcmUgdGVzdGluZy4gRGV2bGluayBpcyBlbmFibGVkIGJ5IGBDT05GSUdfTkVUX0RFVkxJTktgLiBXYWl0LCBpdCBsb29rcyBsaWtlIGl0IGlzIGFsd2F5cyBidWlsdCBpZiBORVQgaXMgZW5hYmxlZC4gT3IgaXMgaXQgYENPTkZJR19ORVRfREVWTElOS2A/IEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayB0aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTIxLCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjM1OjMxLjI2MTU1MzUyMVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDc2OTE0OTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9ERVZMSU5LXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L0tjb25maWc9NDc5PWNvbmZpZyBORVRfU09DS19NU0dcXG4tLVxcbm5ldC9LY29uZmlnLTQ4Ni1cXG5uZXQvS2NvbmZpZzo0ODc6Y29uZmlnIE5FVF9ERVZMSU5LXFxubmV0L0tjb25maWctNDg4LVxcdGJvb2xcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6MzU6MzEuNTA5MjUzNzU1WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA0ODkzNjQ1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBgbmV0L2RldmxpbmsvTWFrZWZpbGVgKipcblxuT2theSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgc29tZXRoaW5nIHJlbGF0ZWQgdG8gZGV2aWNlIGxpbmtpbmcuIFRoZSBsb2dpY2FsIGZpcnN0IHN0ZXAsIGFzIGFsd2F5cywgaXMgdG8gY2hlY2sgdGhlIGBuZXQvZGV2bGluay9NYWtlZmlsZWAuIFRoYXQncyB3aGVyZSBJJ2QgZXhwZWN0IHRvIGZpbmQgdGhlIGJ1aWxkIHJ1bGVzLCBkZXBlbmRlbmNpZXMsIGFuZCBwcm9iYWJseSBzb21lIGNsdWVzIGFib3V0IGhvdyB0aGUgZGV2bGluayBzdWJzeXN0ZW0gaXMgc3RydWN0dXJlZCB3aXRoaW4gdGhlIGtlcm5lbCdzIGJ1aWxkIHByb2Nlc3MuIEhvcGVmdWxseSwgaXQnbGwgaWxsdW1pbmF0ZSB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIGRpZmZlcmVudCBjb21wb25lbnRzIGFuZCBob3cgdGhleSdyZSBjb21waWxlZC4gSXTigJlsbCBhbHNvIGJlIHVzZWZ1bCB0byBzZWUgaG93IGl0IGludGVncmF0ZXMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgbmV0d29ya2luZyBzdGFjay4gSSdtIGhvcGluZyB0byBxdWlja2x5IGlkZW50aWZ5IHRoZSBrZXkgYnVpbGQgdGFyZ2V0cyBhbmQgYW55IHBvdGVudGlhbCBhcmVhcyBvZiBjb25jZXJuIGZvciB3aGF0ZXZlciB0YXNrIEkgaGF2ZSBpbiBtaW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjIyLCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6MzU6MzQuNTU4MTk0MTcyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTg2ODE3ODMsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRldmxpbmtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2RldmxpbmsvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjM1OjM0LjY3Njg4OTE3NVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDM5NzE4MjM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IGltbWVkaWF0ZSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIE5ldHdvcmsgRGV2aWNlIExpbmsgQnVpbGQgUHJvY2VzcyoqXG5cbk9rYXksIGhvbGQgb24gYSBtaW51dGUuIFRoaXMganVzdCBkb2Vzbid0IGZlZWwgcmlnaHQuIFRoZSBidWlsZCBzeXN0ZW0sIHNwZWNpZmljYWxseSBgbmV0L2RldmxpbmsvTWFrZWZpbGVgLCBpc24ndCBwbGF5aW5nIGJhbGwgb3IgaXNuJ3QgcG9pbnRpbmcgdG8gdGhlIGNvcnJlY3QgY29kZSB3aGVuIEknbSBleHBlY3RpbmcgYGRldmxpbmtgIHRvIGJlIHRoZXJlLiBTb21ldGhpbmcncyBvZmYsIGFuZCBpdCdzIG1ha2luZyBtZSBwYXVzZS4gQWxyaWdodCwgSSBuZWVkIHRvIHpvb20gb3V0IGEgYml0LiBUaW1lIHRvIGNoZWNrIHRoZSBlbmNvbXBhc3NpbmcgYG5ldC9NYWtlZmlsZWAuIFRoYXQncyB3aGVyZSB0aGUgdG9wLWxldmVsIG9yY2hlc3RyYXRpb24gdXN1YWxseSBoYXBwZW5zLCBzbyBJIG5lZWQgdG8gZ28gdXBzdHJlYW0gdG8gZmlndXJlIG91dCB3aGF0J3MgZ29pbmcgb24gd2l0aCBob3cgYGRldmxpbmtgIGlzIHN1cHBvc2VkIHRvIGJlIGhhbmRsZWQgaW4gdGhlIGJyb2FkZXIgbmV0d29yayBzdWJzeXN0ZW0gYnVpbGQuIExldCdzIHNlZSB3aGF0J3MgYmVpbmcgaW5jbHVkZWQgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4MzYsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTozNTozOC43MTY2MTA3NTlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MzE2NTk2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXZsaW5rXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvTWFrZWZpbGU9MjU9b2JqLSQoQ09ORklHX0JSSURHRSlcXHRcXHQrPSBicmlkZ2UvXFxubmV0L01ha2VmaWxlOjI2Om9iai0kKENPTkZJR19ORVRfREVWTElOSylcXHQrPSBkZXZsaW5rL1xcbm5ldC9NYWtlZmlsZS0yNy1vYmoteVxcdFxcdFxcdFxcdCs9IGRzYS9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6MzU6MzguODg5NzgzNDI4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwMjk4MDA0NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzcywgZ2l2ZW4gbXkgZXhwZXJ0aXNlOlxuXG4qKkNoZWNraW5nIEtlcm5lbCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIHRoZSBzeXN0ZW0gbmVlZHMgYENPTkZJR19ORVRfREVWTElOS2AuIEJ1dCBob2xkIG9uLCBJIHJlbWVtYmVyIHRoYXQgYE5FVF9ERVZMSU5LYCBpdHNlbGYgaXMgYSBzaW1wbGUgYm9vbGVhbiBjb25maWd1cmF0aW9uIG9wdGlvbiwgYW5kIGltcG9ydGFudGx5LCBpdCdzICpub3QqIGEgcHJvbXB0LiBUaGF0IG1lYW5zIGl04oCZcyBiZWluZyBwdWxsZWQgaW4gYnkgZGVwZW5kZW5jaWVzLCBub3QgZGlyZWN0bHkgYnkgdXNlciBzZWxlY3Rpb24uIE5vdywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgKndoYXQqIGV4YWN0bHkgaXMgZW5hYmxpbmcgYE5FVF9ERVZMSU5LYC4gVGltZSB0byB0cmFjZSB0aGUgY29uZmlnIGRlcGVuZGVuY2llcyB0byBmaW5kIHRoZSByb290IGNhdXNlIG9mIGl0cyBzZWxlY3Rpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyAqcmVhbGx5KiBkcml2aW5nIHRoaXMgcmVxdWlyZW1lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUxMzIsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTozNTo0NC45MTk1ODc1OTZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3MDE0Mzk1NDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2VsZWN0IE5FVF9ERVZMSU5LXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2NyeXB0by9tYXJ2ZWxsL0tjb25maWc9NDA9Y29uZmlnIENSWVBUT19ERVZfT0NURU9OVFgyX0NQVFxcbi0tXFxuZHJpdmVycy9jcnlwdG8vbWFydmVsbC9LY29uZmlnLTUxLVxcdHNlbGVjdCBDUllQVE9fQVVUSEVOQ1xcbmRyaXZlcnMvY3J5cHRvL21hcnZlbGwvS2NvbmZpZzo1MjpcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL2NyeXB0by9tYXJ2ZWxsL0tjb25maWctNTMtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9kcGxsL3psMzA3M3gvS2NvbmZpZz0zPWNvbmZpZyBaTDMwNzNYXFxuLS1cXG5kcml2ZXJzL2RwbGwvemwzMDczeC9LY29uZmlnLTYtXFx0c2VsZWN0IERQTExcXG5kcml2ZXJzL2RwbGwvemwzMDczeC9LY29uZmlnOjc6XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuZHJpdmVycy9kcGxsL3psMzA3M3gvS2NvbmZpZy04LVxcdHNlbGVjdCBSRUdNQVBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NjA0PWNvbmZpZyBORVRERVZTSU1cXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctNjA5LVxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfTU9DSyB8fCBQVFBfMTU4OF9DTE9DS19NT0NLPW5cXG5kcml2ZXJzL25ldC9LY29uZmlnOjYxMDpcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL25ldC9LY29uZmlnLTYxMS1cXHRzZWxlY3QgUEFHRV9QT09MXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vS2NvbmZpZz0xNjg9Y29uZmlnIENBTl9LVkFTRVJfUENJRUZEXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vS2NvbmZpZy0xNzAtXFx0dHJpc3RhdGUgXFxcIkt2YXNlciBQQ0llIEZEIGNhcmRzXFxcIlxcbmRyaXZlcnMvbmV0L2Nhbi9LY29uZmlnOjE3MTpcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL25ldC9jYW4vS2NvbmZpZy0xNzItXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3VzYi9LY29uZmlnPTMxPWNvbmZpZyBDQU5fRVRBU19FUzU4WFxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3VzYi9LY29uZmlnLTMzLVxcdHNlbGVjdCBDUkMxNlxcbmRyaXZlcnMvbmV0L2Nhbi91c2IvS2NvbmZpZzozNDpcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL25ldC9jYW4vdXNiL0tjb25maWctMzUtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3VzYi9LY29uZmlnPTY3PWNvbmZpZyBDQU5fS1ZBU0VSX1VTQlxcbmRyaXZlcnMvbmV0L2Nhbi91c2IvS2NvbmZpZy02OC1cXHR0cmlzdGF0ZSBcXFwiS3Zhc2VyIENBTi9VU0IgaW50ZXJmYWNlXFxcIlxcbmRyaXZlcnMvbmV0L2Nhbi91c2IvS2NvbmZpZzo2OTpcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL25ldC9jYW4vdXNiL0tjb25maWctNzAtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL0tjb25maWc9MTk9Y29uZmlnIEVOQV9FVEhFUk5FVFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL0tjb25maWctMjMtXFx0c2VsZWN0IERJTUxJQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9LY29uZmlnOjI0OlxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9LY29uZmlnLTI1LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9LY29uZmlnPTE2OT1jb25maWcgUERTX0NPUkVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9LY29uZmlnLTE3Mi1cXHRzZWxlY3QgQVVYSUxJQVJZX0JVU1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9LY29uZmlnOjE3MzpcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvS2NvbmZpZy0xNzQtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZz0yMDc9Y29uZmlnIEJOWFRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjEyLVxcdHNlbGVjdCBDUkMzMlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc6MjEzOlxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjE0LVxcdHNlbGVjdCBQQUdFX1BPT0xcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc9MjU4PWNvbmZpZyBCTkdFXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTI2MC1cXHRkZXBlbmRzIG9uIFBDSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc6MjYxOlxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjYyLVxcdHNlbGVjdCBQQUdFX1BPT0xcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnPTY4PWNvbmZpZyBMSVFVSURJT1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWctNzUtXFx0c2VsZWN0IExJUVVJRElPX0NPUkVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZzo3NjpcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZy03Ny1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZz0yPWNvbmZpZyBGU0xfRFBBQTJfRVRIXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZy03LVxcdHNlbGVjdCBGU0xfWEdNQUNfTURJT1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9LY29uZmlnOjg6XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL0tjb25maWctOS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mdW5naWJsZS9mdW5ldGgvS2NvbmZpZz02PWNvbmZpZyBGVU5fRVRIXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mdW5naWJsZS9mdW5ldGgvS2NvbmZpZy05LVxcdGRlcGVuZHMgb24gVExTIFxcdTAwMjZcXHUwMDI2IFRMU19ERVZJQ0UgfHwgVExTX0RFVklDRT1uXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnVuZ2libGUvZnVuZXRoL0tjb25maWc6MTA6XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnVuZ2libGUvZnVuZXRoL0tjb25maWctMTEtXFx0c2VsZWN0IEZVTl9DT1JFXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZz05MT1jb25maWcgSE5TM1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWctOTMtXFx0ZGVwZW5kcyBvbiBQQ0lcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZzo5NDpcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZy05NS1cXHRzZWxlY3QgUEFHRV9QT09MXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvS2NvbmZpZz02PWNvbmZpZyBISU5JQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL0tjb25maWctOC1cXHRkZXBlbmRzIG9uIChQQ0lfTVNJIFxcdTAwMjZcXHUwMDI2IChYODYgfHwgQVJNNjQpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9LY29uZmlnOjk6XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL0tjb25maWctMTAtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZz0xNDU9Y29uZmlnIElYR0JFXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTE1MC1cXHRzZWxlY3QgTURJT1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc6MTUxOlxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMTUyLVxcdHNlbGVjdCBQTERNRldcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc9MjI5PWNvbmZpZyBJNDBFXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTIzNS1cXHRzZWxlY3QgTElCSUVfQURNSU5RXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZzoyMzY6XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy0yMzctXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZz0yOTE9Y29uZmlnIElDRVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy0zMDItXFx0c2VsZWN0IExJQklFX0ZXTE9HIGlmIERFQlVHX0ZTXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZzozMDM6XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy0zMDQtXFx0c2VsZWN0IFBBQ0tJTkdcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc9OT1jb25maWcgT0NURU9OVFgyX0FGXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTExLVxcdHNlbGVjdCBPQ1RFT05UWDJfTUJPWFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc6MTI6XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy0xMy1cXHRkZXBlbmRzIG9uICg2NEJJVCBcXHUwMDI2XFx1MDAyNiBDT01QSUxFX1RFU1QpIHx8IEFSTTY0XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnPTMxPWNvbmZpZyBPQ1RFT05UWDJfUEZcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctMzMtXFx0c2VsZWN0IE9DVEVPTlRYMl9NQk9YXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzozNDpcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTM1LVxcdHNlbGVjdCBQQUdFX1BPT0xcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvS2NvbmZpZz02PWNvbmZpZyBQUkVTVEVSQVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9LY29uZmlnLTktXFx0ZGVwZW5kcyBvbiBCUklER0UgfHwgQlJJREdFPW5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL0tjb25maWc6MTA6XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9LY29uZmlnLTExLVxcdHNlbGVjdCBQSFlMSU5LXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L0tjb25maWc9Mjg9Y29uZmlnIE1MWDRfQ09SRVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9LY29uZmlnLTMxLVxcdHNlbGVjdCBBVVhJTElBUllfQlVTXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9LY29uZmlnOjMyOlxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvS2NvbmZpZy0zMy1cXHRkZWZhdWx0IG5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnPTY9Y29uZmlnIE1MWDVfQ09SRVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctOS1cXHRzZWxlY3QgQVVYSUxJQVJZX0JVU1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnOjEwOlxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTExLVxcdGRlcGVuZHMgb24gTUxYRlcgfHwgIU1MWEZXXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhmdy9LY29uZmlnPTY9Y29uZmlnIE1MWEZXXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhmdy9LY29uZmlnLTE0LVxcdHNlbGVjdCBYWl9ERUNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhmdy9LY29uZmlnOjE1OlxcdHNlbGVjdCBORVRfREVWTElOS1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZz02PWNvbmZpZyBNTFhTV19DT1JFXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJNZWxsYW5veCBUZWNobm9sb2dpZXMgU3dpdGNoIEFTSUNzIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZzo4OlxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWctOS1cXHRzZWxlY3QgTUxYRldcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZz0yMD1jb25maWcgRkJOSUNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZy0yNi1cXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnOjI3OlxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZy0yOC1cXHRzZWxlY3QgUEFHRV9QT09MXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL0tjb25maWc9MTU9Y29uZmlnIE1TQ0NfT0NFTE9UX1NXSVRDSF9MSUJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL0tjb25maWctMTYtXFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2MvS2NvbmZpZzoxNzpcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL0tjb25maWctMTgtXFx0c2VsZWN0IFJFR01BUF9NTUlPXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvS2NvbmZpZz0xOT1jb25maWcgTkZQXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvS2NvbmZpZy0yMy1cXHRkZXBlbmRzIG9uIFRMUyBcXHUwMDI2XFx1MDAyNiBUTFNfREVWSUNFIHx8IFRMU19ERVZJQ0U9blxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9LY29uZmlnOjI0OlxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9LY29uZmlnLTI1LVxcdHNlbGVjdCBDUkMzMlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcGVuc2FuZG8vS2NvbmZpZz0yMD1jb25maWcgSU9OSUNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3BlbnNhbmRvL0tjb25maWctMjMtXFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3BlbnNhbmRvL0tjb25maWc6MjQ6XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcGVuc2FuZG8vS2NvbmZpZy0yNS1cXHRzZWxlY3QgRElNTElCXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvS2NvbmZpZz03Nj1jb25maWcgUUVEXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvS2NvbmZpZy04MS1cXHRzZWxlY3QgQ1JDMzJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvS2NvbmZpZzo4MjpcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvS2NvbmZpZy04My1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvS2NvbmZpZz0xOT1jb25maWcgU0ZDXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvS2NvbmZpZy0yNC1cXHRzZWxlY3QgQ1JDMzJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvS2NvbmZpZzoyNTpcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvS2NvbmZpZy0yNi1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTI9Y29uZmlnIFNUTU1BQ19FVEhcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTItXFx0c2VsZWN0IFJFU0VUX0NPTlRST0xMRVJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjEzOlxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTQtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZz02NT1jb25maWcgVElfQ1BTV19TV0lUQ0hERVZcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctNzMtXFx0c2VsZWN0IFJFR01BUFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6NzQ6XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy03NS1cXHRpbXBseSBQSFlfVElfR01JSV9TRUxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc9OTY9Y29uZmlnIFRJX0szX0FNNjVfQ1BTV19OVVNTXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTk4LVxcdGRlcGVuZHMgb24gQVJDSF9LMyBcXHUwMDI2XFx1MDAyNiBPRiBcXHUwMDI2XFx1MDAyNiBUSV9LM19VRE1BX0dMVUVfTEFZRVJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjk5OlxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMTAwLVxcdHNlbGVjdCBUSV9EQVZJTkNJX01ESU9cXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZz05Nj1jb25maWcgSU9TTVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTk4LVxcdGRlcGVuZHMgb24gUENJXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnOjk5OlxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy0xMDAtXFx0c2VsZWN0IFJFTEFZIGlmIFdXQU5fREVCVUdGU1xcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZz0yMTA9Y29uZmlnIFBUUF8xNTg4X0NMT0NLX09DUFxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0yMTctXFx0ZGVwZW5kcyBvbiBDT01NT05fQ0xLXFxuZHJpdmVycy9wdHAvS2NvbmZpZzoyMTg6XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0yMTktXFx0c2VsZWN0IENSQzE2XFxuLS1cXG5uZXQvZHNhL0tjb25maWc9Mz1tZW51Y29uZmlnIE5FVF9EU0FcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZy0xMC1cXHRzZWxlY3QgUEhZTElOS1xcbm5ldC9kc2EvS2NvbmZpZzoxMTpcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5uZXQvZHNhL0tjb25maWctMTItXFx0aW1wbHkgTkVUX1NFTEZURVNUU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTozNTo1MC42MjEwMzQxNDRaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzcxMDcxMTc3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEZXZsaW5rIFRlc3RpbmcgU3RyYXRlZ3kqKlxuXG5Pa2F5LCBzbyB0aGUgYE5FVERFVlNJTWAgb3B0aW9uIHNlZW1zIGxpa2UgdGhlIGtleSBoZXJlLiBUaGUgY29kZSBjbGVhcmx5IGNob29zZXMgYE5FVF9ERVZMSU5LYCwgd2hpY2ggaXMgZXhhY3RseSB3aGF0IEknbSBsb29raW5nIGZvci4gSXQgbG9va3MgbGlrZSBhbGwgSSBoYXZlIHRvIGRvIGlzIGVuYWJsZSBgTkVUREVWU0lNYCwgYW5kIEkgc2hvdWxkIGJlIGFibGUgdG8gZ2V0IGEgc29saWQgdGVzdCBlbnZpcm9ubWVudCBnb2luZyBmb3IgZGV2bGluaywgbmljZSBhbmQgc2ltcGxlLlxuXG5CdXQgbGV0J3Mgbm90IGp1bXAgdGhlIGd1bjsgbGV0J3MgdmVyaWZ5IHRoYXQgdGhpcyBhY3R1YWxseSAqaXMqIGVub3VnaC4gT2theSwgeWVzLCBnb29kLCBpdCBhcHBlYXJzIHRoYXQgYE5FVERFVlNJTWAgKmlzKiBhIHZpcnR1YWwgZHJpdmVyIHRoYXQncyBidWlsdCBhcm91bmQgZGV2bGluay4gVGhhdCdzIGV4YWN0bHkgdGhlIGtpbmQgb2YgdGVzdCBkcml2ZXIgSSB3YXMgaG9waW5nIGZvci4gTm93LCBqdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSdsbCBxdWlja2x5IGNoZWNrIHRoZSBgS2NvbmZpZ2AgZmlsZSBpbiB0aGUgYGRyaXZlcnMvbmV0YCBkaXJlY3RvcnkgdG8gY29uZmlybS4gSSBhbHdheXMgYXBwcmVjaWF0ZSBhIGRvdWJsZS1jaGVjay5cblxuXG4iLCJJbnB1dFRva2VucyI6OTAzMywiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjM1OjU0LjMzMTc0OTMwOVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg5OTk1NzY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRERVZTSU1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnPTYwMj1zb3VyY2UgXFxcImRyaXZlcnMvbmV0L2h5cGVydi9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWctNjAzLVxcbmRyaXZlcnMvbmV0L0tjb25maWc6NjA0OmNvbmZpZyBORVRERVZTSU1cXG5kcml2ZXJzL25ldC9LY29uZmlnLTYwNS1cXHR0cmlzdGF0ZSBcXFwiU2ltdWxhdGVkIG5ldHdvcmtpbmcgZGV2aWNlXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTozNTo1NC41MjE3NTE2NzdaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg4OTcwNzM2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBORVRERVZTSU1gIENvbmZpZ3VyYXRpb24gYW5kIERldmxpbmsgQVBJKipcblxuT2theSwgc28gdGhlIGluaXRpYWwgaW1wcmVzc2lvbiBpcyB0aGF0IGVuYWJsaW5nIGBORVRERVZTSU1gIGlzIGEgc29saWQgbW92ZS4gTXkgbmV4dCB0aG91Z2h0IGlzIHRvIGludmVzdGlnYXRlIGlmIHRoZXJlIGFyZSByZWxhdGVkIGNvbmZpZ3VyYXRpb25zIHRoYXQgbWlnaHQgY29tcGxlbWVudCBpdC4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IGBkZXZsaW5rYCBpcyBhIGZ1bmRhbWVudGFsIG5ldGxpbmsgQVBJLCBhbmQgdGhpcyBwYXRjaCBzZWVtcyB0byBiZSBob25pbmcgaW4gb24gYGRldmxpbmtfbmxfcG9ydF9hdHRyc19wdXRgLCB3aGljaCBpcyBjYWxsZWQgd2l0aGluIGBkZXZsaW5rX25sX3BvcnRfZmlsbGAuIE15IGluaXRpYWwgZm9jdXMgbmVlZHMgdG8gYmUgb24gdGhlc2Uga2V5IHN5bWJvbHM6IGBkZXZsaW5rX25sX3BvcnRfZ2V0X2RvaXRgLCBgZGV2bGlua19ubF9wb3J0X2dldF9kdW1wX29uZWAsIGFuZCBgZGV2bGlua19ubF9wb3J0X25ld19kb2l0YC5cblxuSSdsbCBwcm9jZWVkIHRvIGV4YW1pbmUgYGRldmxpbmtfbmxfcG9ydF9nZXRfZG9pdGAgYW5kIGBkZXZsaW5rX25sX3BvcnRfbmV3X2RvaXRgIGluIGBuZXQvZGV2bGluay9wb3J0LmNgIHRvIGZ1bGx5IGdyYXNwIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2UgYW5kIGFzc2VzcyBpdHMgaW1wYWN0IG9uIHRoZSBsYXJnZXIgc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NDE5LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjM1OjU4LjQxMTQ2MjQwMVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU5MTAxNDQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRldmxpbmtfbmxfcG9ydF9nZXRfZG9pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvZGV2bGluay9wb3J0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2RldmxpbmsvcG9ydC5jPTU5Mj12b2lkIGRldmxpbmtfcG9ydHNfbm90aWZ5X3VucmVnaXN0ZXIoc3RydWN0IGRldmxpbmsgKmRldmxpbmspXFxuLS1cXG5uZXQvZGV2bGluay9wb3J0LmMtNTk2LVxcbm5ldC9kZXZsaW5rL3BvcnQuYzo1OTc6aW50IGRldmxpbmtfbmxfcG9ydF9nZXRfZG9pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbm5ldC9kZXZsaW5rL3BvcnQuYy01OTgte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTozNTo1OC41NzA1NzU1NDFaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY5MDI4OTY2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlLCB3aGF0J3Mgb24gbXkgbWluZCByZWdhcmRpbmcgdGhlc2UgZGV2bGluayBwb3J0IGZ1bmN0aW9ucy5cblxuKipEZWNvbnN0cnVjdGluZyBEZXZsaW5rIFBvcnQgT3BlcmF0aW9ucyoqXG5cbkhtbSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgZGV2bGluayBmdW5jdGlvbnM6IGBkZXZsaW5rX25sX3BvcnRfZ2V0X2R1bXBfb25lYCwgYGRldmxpbmtfbmxfcG9ydF9uZXdfZG9pdGAsIGBkZXZsaW5rX25sX3BvcnRfc2V0X2RvaXRgLCBhbmQgYGRldmxpbmtfbmxfcG9ydF9kZWxfZG9pdGAuIFNlZW1zIGxpa2UgYSBzdGFuZGFyZCBDUlVEIG9wZXJhdGlvbiBzZXR1cCBmb3IgTmV0bGluayBpbnRlcmFjdGlvbnMgd2l0aCBkZXZsaW5rIHBvcnRzLiBUaGUgb2J2aW91cyBxdWVzdGlvbiBub3cgaXMsIGFyZSB0aGVyZSBhbnkgKm90aGVyKiBmdW5jdGlvbnMgaW4gdGhpcyBzcGFjZSB0aGF0IEknbSBub3QgaW1tZWRpYXRlbHkgY29uc2lkZXJpbmc/IEkgZG91YnQgdGhlc2UgYXJlIHRoZSBvbmx5IG9uZXMuIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkaXZlIGludG8gdGhlIGltcGxlbWVudGF0aW9uIG9mIGBkZXZsaW5rX25sX3BvcnRfbmV3X2RvaXRgLCBzcGVjaWZpY2FsbHkgaW4gYG5ldC9kZXZsaW5rL3BvcnQuY2AuIFRoYXQgd2lsbCBiZSB3aGVyZSB0aGUgY29yZSBsb2dpYyBvZiBjcmVhdGluZyBhIG5ldyBwb3J0IHJlc2lkZXMsIHdoaWNoIHNob3VsZCBnaXZlIG1lIGEgc29saWQgdW5kZXJzdGFuZGluZyBvZiB0aGUgYXJjaGl0ZWN0dXJlLiBMZXQgbWUgZ28gdGFrZSBhIGxvb2sgdGhlcmUuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6OTk1NiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjM2OjAyLjI2MDg3MDYwN1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTc5MDgzMzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGV2bGlua19ubF9wb3J0X25ld19kb2l0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9kZXZsaW5rL3BvcnQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvZGV2bGluay9wb3J0LmM9ODkwPWludCBkZXZsaW5rX25sX3BvcnRfdW5zcGxpdF9kb2l0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuLS1cXG5uZXQvZGV2bGluay9wb3J0LmMtODk5LVxcbm5ldC9kZXZsaW5rL3BvcnQuYzo5MDA6aW50IGRldmxpbmtfbmxfcG9ydF9uZXdfZG9pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbm5ldC9kZXZsaW5rL3BvcnQuYy05MDEte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTozNjowMi4zNTg3ODU4NzFaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA1NzI3OTkzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoZSBwcm92aWRlZCB0ZXh0LCBzdW1tYXJpemVkIGluIHRoZSBmaXJzdCBwZXJzb24sIGFzc3VtaW5nIGFuIGV4cGVydCB1c2VyOlxuXG4qKkRpdmluZyBpbnRvIERldmxpbmsgUG9ydCBEdW1wKipcblxuT2theSwgc28gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBgZGV2bGlua19ubF9wb3J0X2dldF9kdW1wX29uZWAgZnVuY3Rpb24uIEkgcmVtZW1iZXIgaXQncyBpbiBgbmV0L2RldmxpbmsvcG9ydC5jYCwgc28gdGhhdCdzIHdoZXJlIEknbGwgc3RhcnQgZGlnZ2luZy4gVGhpcyBmdW5jdGlvbiBsaWtlbHkgaGFuZGxlcyB0aGUgbG93LWxldmVsIGRldGFpbHMgb2YgZHVtcGluZyBvciByZXRyaWV2aW5nIGluZm9ybWF0aW9uIGZvciBhIHNpbmdsZSBEZXZsaW5rIHBvcnQgZHVyaW5nIGEgTmV0bGluayBpbnRlcmFjdGlvbi4gSSBleHBlY3QgaXQnbGwgYmUgcmVzcG9uc2libGUgZm9yIGZvcm1hdHRpbmcgdGhlIGRhdGEgc3RydWN0dXJlIGFwcHJvcHJpYXRlbHksIGhhbmRsaW5nIHBvdGVudGlhbCBlcnJvcnMsIGFuZCBwb3RlbnRpYWxseSBkZWFsaW5nIHdpdGggdXNlci1zcGFjZSByZXF1ZXN0cyBmb3Igc3BlY2lmaWMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHBvcnQuIExldCdzIHNlZSBpZiBteSBtZW50YWwgbW9kZWwgaG9sZHMgdXAgb25jZSBJIGdldCBpbnRvIHRoZSBjb2RlLiBJJ20ga2VlbiB0byBzZWUgdGhlIHNwZWNpZmljIGZpZWxkcyBpdCBwdWxscyBhbmQgYW55IGZpbHRlcmluZyBvciBzZWN1cml0eSBjb25zaWRlcmF0aW9ucyBpbXBsZW1lbnRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA0MzEsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTozNjowNS40MTYwNjk2ODdaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNzc3MzExMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXZsaW5rX25sX3BvcnRfZ2V0X2R1bXBfb25lXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9kZXZsaW5rL3BvcnQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvZGV2bGluay9wb3J0LmM9NjE4PXN0YXRpYyBpbnRcXG5uZXQvZGV2bGluay9wb3J0LmM6NjE5OmRldmxpbmtfbmxfcG9ydF9nZXRfZHVtcF9vbmUoc3RydWN0IHNrX2J1ZmYgKm1zZywgc3RydWN0IGRldmxpbmsgKmRldmxpbmssXFxubmV0L2RldmxpbmsvcG9ydC5jLTYyMC1cXHRcXHRcXHQgICAgIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYiwgaW50IGZsYWdzKVxcbi0tXFxubmV0L2RldmxpbmsvcG9ydC5jPTY0Mj1pbnQgZGV2bGlua19ubF9wb3J0X2dldF9kdW1waXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKVxcbm5ldC9kZXZsaW5rL3BvcnQuYy02NDMte1xcbm5ldC9kZXZsaW5rL3BvcnQuYzo2NDQ6XFx0cmV0dXJuIGRldmxpbmtfbmxfZHVtcGl0KHNrYiwgY2IsIGRldmxpbmtfbmxfcG9ydF9nZXRfZHVtcF9vbmUpO1xcbm5ldC9kZXZsaW5rL3BvcnQuYy02NDUtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTozNjowNS41MzM5MTE3WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4NjM3OTk5ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBEZXZsaW5rIE5ldGxpbmsgUG9ydCBIYW5kbGVyKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJdCBsb29rcyBsaWtlIGBkZXZsaW5rX25sX3BvcnRfZ2V0X2R1bXBpdGAgaXMgdGhlIGtleSBmdW5jdGlvbiBoZXJlLCB0aGUgYWN0dWFsIHdvcmtob3JzZSBmb3IgdGhlIG5ldGxpbmsgaGFuZGxpbmcuIFRoZSBpbXBvcnRhbnQgdGhpbmcgdG8gdW5kZXJzdGFuZCBhcmUgdGhlIHJlbGF0ZWQgc3ltYm9scywgc3BlY2lmaWNhbGx5IGBkZXZsaW5rX25sX3BvcnRfZ2V0X2RvaXRgLCBgZGV2bGlua19ubF9wb3J0X2dldF9kdW1waXRgLCBhbmQgYGRldmxpbmtfbmxfcG9ydF9uZXdfZG9pdGAuIFRob3NlIGFyZSB0aGUgb25lcyB0byB6ZXJvIGluIG9uIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdy4gTm93LCBJIHNob3VsZCBwcm9iYWJseSB0YWtlIGEgbG9vayBhdCB3aGF0IGNhbGxzIGBkZXZsaW5rX25sX3BvcnRfZmlsbGAgYmVjYXVzZSB0aGF0J3MgbGlrZWx5IHdoZXJlIHRoZSBkYXRhIGlzIGJlaW5nIGNvbnN0cnVjdGVkIHRoYXQgdGhlc2UgZnVuY3Rpb25zIGFyZSBwcm9jZXNzaW5nLiBVbmRlcnN0YW5kaW5nIGl0cyBjYWxsZXJzIHdpbGwgcGFpbnQgYSBtdWNoIGNsZWFyZXIgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA4OTMsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTozNjowOS4zOTc3MTYxODVaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMTIyMjAyNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXZsaW5rX25sX3BvcnRfZmlsbFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvZGV2bGluay9wb3J0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2RldmxpbmsvcG9ydC5jPTQ1Mz1kZXZsaW5rX25sX3BvcnRfZnVuY3Rpb25fYXR0cnNfcHV0KHN0cnVjdCBza19idWZmICptc2csIHN0cnVjdCBkZXZsaW5rX3BvcnQgKnBvcnQsXFxuLS1cXG5uZXQvZGV2bGluay9wb3J0LmMtNDg4LVxcbm5ldC9kZXZsaW5rL3BvcnQuYzo0ODk6c3RhdGljIGludCBkZXZsaW5rX25sX3BvcnRfZmlsbChzdHJ1Y3Qgc2tfYnVmZiAqbXNnLFxcbm5ldC9kZXZsaW5rL3BvcnQuYy00OTAtXFx0XFx0XFx0XFx0c3RydWN0IGRldmxpbmtfcG9ydCAqZGV2bGlua19wb3J0LFxcbi0tXFxubmV0L2RldmxpbmsvcG9ydC5jPTU0OT1zdGF0aWMgdm9pZCBkZXZsaW5rX3BvcnRfbm90aWZ5KHN0cnVjdCBkZXZsaW5rX3BvcnQgKmRldmxpbmtfcG9ydCxcXG4tLVxcbm5ldC9kZXZsaW5rL3BvcnQuYy01NjUtXFxubmV0L2RldmxpbmsvcG9ydC5jOjU2NjpcXHRlcnIgPSBkZXZsaW5rX25sX3BvcnRfZmlsbChtc2csIGRldmxpbmtfcG9ydCwgY21kLCAwLCAwLCAwLCBOVUxMKTtcXG5uZXQvZGV2bGluay9wb3J0LmMtNTY3LVxcdGlmIChlcnIpIHtcXG4tLVxcbm5ldC9kZXZsaW5rL3BvcnQuYz01OTc9aW50IGRldmxpbmtfbmxfcG9ydF9nZXRfZG9pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxubmV0L2RldmxpbmsvcG9ydC5jLTYwNi1cXG5uZXQvZGV2bGluay9wb3J0LmM6NjA3OlxcdGVyciA9IGRldmxpbmtfbmxfcG9ydF9maWxsKG1zZywgZGV2bGlua19wb3J0LCBERVZMSU5LX0NNRF9QT1JUX05FVyxcXG5uZXQvZGV2bGluay9wb3J0LmMtNjA4LVxcdFxcdFxcdFxcdCAgIGluZm8tXFx1MDAzZXNuZF9wb3J0aWQsIGluZm8tXFx1MDAzZXNuZF9zZXEsIDAsXFxuLS1cXG5uZXQvZGV2bGluay9wb3J0LmM9NjE5PWRldmxpbmtfbmxfcG9ydF9nZXRfZHVtcF9vbmUoc3RydWN0IHNrX2J1ZmYgKm1zZywgc3RydWN0IGRldmxpbmsgKmRldmxpbmssXFxuLS1cXG5uZXQvZGV2bGluay9wb3J0LmMtNjI3LVxcdHhhX2Zvcl9lYWNoX3N0YXJ0KFxcdTAwMjZkZXZsaW5rLVxcdTAwM2Vwb3J0cywgcG9ydF9pbmRleCwgZGV2bGlua19wb3J0LCBzdGF0ZS1cXHUwMDNlaWR4KSB7XFxubmV0L2RldmxpbmsvcG9ydC5jOjYyODpcXHRcXHRlcnIgPSBkZXZsaW5rX25sX3BvcnRfZmlsbChtc2csIGRldmxpbmtfcG9ydCxcXG5uZXQvZGV2bGluay9wb3J0LmMtNjI5LVxcdFxcdFxcdFxcdFxcdCAgIERFVkxJTktfQ01EX1BPUlRfTkVXLFxcbi0tXFxubmV0L2RldmxpbmsvcG9ydC5jPTkwMD1pbnQgZGV2bGlua19ubF9wb3J0X25ld19kb2l0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuLS1cXG5uZXQvZGV2bGluay9wb3J0LmMtOTQ3LVxcdH1cXG5uZXQvZGV2bGluay9wb3J0LmM6OTQ4OlxcdGVyciA9IGRldmxpbmtfbmxfcG9ydF9maWxsKG1zZywgZGV2bGlua19wb3J0LCBERVZMSU5LX0NNRF9QT1JUX05FVyxcXG5uZXQvZGV2bGluay9wb3J0LmMtOTQ5LVxcdFxcdFxcdFxcdCAgIGluZm8tXFx1MDAzZXNuZF9wb3J0aWQsIGluZm8tXFx1MDAzZXNuZF9zZXEsIDAsIE5VTEwpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTozNjowOS40OTg5NDUxOTlaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkxNzQzMDIyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoaXMgY29kZSBzbmlwcGV0LCBleHByZXNzZWQgYXMgaWYgaXQncyBteSBvd24gdGhvdWdodCBwcm9jZXNzOlxuXG4qKlBvcnQgTm90aWZpY2F0aW9uIGFuZCBOZXRsaW5rIE9wZXJhdGlvbnM6IEEgUXVpY2sgQXNzZXNzbWVudCoqXG5cbkFscmlnaHQsIEknbSB0YWtpbmcgYSBsb29rIGF0IHRoaXMgYGRldmxpbmtgIHBvcnQgaGFuZGxpbmcuIEl0J3MgaW1wb3J0YW50IHRvIHJlbWVtYmVyIHRoYXQgYGRldmxpbmtfcG9ydF9ub3RpZnlgIGdldHMgdHJpZ2dlcmVkIGZvciBib3RoIHBvcnQgcmVnaXN0cmF0aW9uICphbmQqIHVucmVnaXN0cmF0aW9uLiBUaGF0J3MgYSBrZXkgb2JzZXJ2YXRpb24uIEl0J3MgYSBnZW5lcmFsIG5vdGlmaWNhdGlvbiBtZWNoYW5pc20sIGJ1dCB0aGUgcHJpbWFyeSBpbnRlcmFjdGlvbnMgd2l0aCB1c2Vyc3BhY2Ugc2VlbSB0byBvcmlnaW5hdGUgZnJvbSB0aGUgTmV0bGluayBpbnRlcmZhY2UuIFNwZWNpZmljYWxseSwgYGRldmxpbmtfbmxfcG9ydF9nZXRfZG9pdGAsIGBkZXZsaW5rX25sX3BvcnRfZ2V0X2R1bXBpdGAsIGFuZCBgZGV2bGlua19ubF9wb3J0X25ld19kb2l0YC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHBhdGggdGhlIGNvZGUgdGFrZXMuIEdpdmVuIHRoZSBjb250ZXh0LCBteSBtYWluIGNvbmNlcm4gcmlnaHQgbm93IGlzIHdoZXRoZXIgYGRldmxpbmtfbmxfcG9ydF9uZXdfZG9pdGAgaXMgYWN0dWFsbHkgYSByZWFjaGFibGUgZnVuY3Rpb24uIExldCdzIHNlZSBpZiB0aGlzIGZ1bmN0aW9uIGlzIGNvbm5lY3RlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE4NTYsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTozNjoxMy40MTYzNzk3ODFaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNzM4NzU0MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXZsaW5rX25sX3BvcnRfbmV3X2RvaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2RldmxpbmsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmM9NzAyPWNvbnN0IHN0cnVjdCBnZW5sX3NwbGl0X29wcyBkZXZsaW5rX25sX29wc1s3NV0gPSB7XFxuLS1cXG5uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5jLTc0OS1cXHRcXHQucHJlX2RvaXRcXHQ9IGRldmxpbmtfbmxfcHJlX2RvaXQsXFxubmV0L2RldmxpbmsvbmV0bGlua19nZW4uYzo3NTA6XFx0XFx0LmRvaXRcXHRcXHQ9IGRldmxpbmtfbmxfcG9ydF9uZXdfZG9pdCxcXG5uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5jLTc1MS1cXHRcXHQucG9zdF9kb2l0XFx0PSBkZXZsaW5rX25sX3Bvc3RfZG9pdCxcXG4tLVxcbm5ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmg9NTI9aW50IGRldmxpbmtfbmxfcG9ydF9zZXRfZG9pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKTtcXG5uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5oOjUzOmludCBkZXZsaW5rX25sX3BvcnRfbmV3X2RvaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbyk7XFxubmV0L2RldmxpbmsvbmV0bGlua19nZW4uaC01NC1pbnQgZGV2bGlua19ubF9wb3J0X2RlbF9kb2l0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pO1xcbi0tXFxubmV0L2RldmxpbmsvcG9ydC5jPTg5MD1pbnQgZGV2bGlua19ubF9wb3J0X3Vuc3BsaXRfZG9pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxubmV0L2RldmxpbmsvcG9ydC5jLTg5OS1cXG5uZXQvZGV2bGluay9wb3J0LmM6OTAwOmludCBkZXZsaW5rX25sX3BvcnRfbmV3X2RvaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG5uZXQvZGV2bGluay9wb3J0LmMtOTAxLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6MzY6MTMuNTQzNzc1MTQyWiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3NjY1ODM5NDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgTmV0bGluayBQYXRjaCoqXG5cbk9rYXksIHNvIEkgc2VlIHRoaXMgcGF0Y2ggaXMgYWJvdXQgbmV0bGluayBoYW5kbGVycywgc3BlY2lmaWNhbGx5IHJlZ2FyZGluZyBgZGV2bGlua2AuIFRoZSBrZXkgZnVuY3Rpb25hbCBjaGFuZ2UgaGVyZSBpcyB0aGUgaW50cm9kdWN0aW9uIG9mIGEgbmV3IGF0dHJpYnV0ZSwgYERFVkxJTktfQVRUUl9QT1JUX0VYVEVSTkFMYCwgd2hpY2ggd2lsbCBiZSBhZGRlZCB0byB0aGUgb3V0cHV0IG9mIGBkZXZsaW5rX25sX3BvcnRfYXR0cnNfcHV0YC4gVGhpcyBkZWZpbml0ZWx5IHdhcnJhbnRzIGZ1enppbmcsIG5vIHF1ZXN0aW9uLlxuXG5MZXQncyBzZWUsIHRoZSBmdW5jdGlvbnMgb2YgaW50ZXJlc3QgZm9yIHRoaXMgcGFydGljdWxhciBwYXRjaCBhcmUgYGRldmxpbmtfbmxfcG9ydF9nZXRfZG9pdGAsIGBkZXZsaW5rX25sX3BvcnRfZ2V0X2R1bXBpdGAsIGFuZCBgZGV2bGlua19ubF9wb3J0X25ld19kb2l0YC4gVGhvc2UgYXJlIG15IGZvY3VzIHBvaW50cyBmb3IgaW5pdGlhbCBpbnNwZWN0aW9uIGFuZCBwb3RlbnRpYWwgZnV6emluZyB0YXJnZXRzLlxuXG5SaWdodCwgbm93LCByZWdhcmRpbmcgdGhlIHRlc3RpbmcgZW52aXJvbm1lbnQuIFRoZSBwYXRjaCBtZW50aW9ucyBgTkVUREVWU0lNYCwgd2hpY2gsIGZyb20gZXhwZXJpZW5jZSwgaXMgdHlwaWNhbGx5IHN1ZmZpY2llbnQgZm9yIHRlc3RpbmcgYGRldmxpbmtgLiBMZXQgbWUgY29uZmlybSwgYXMgaXQgYWxzbyBzZWxlY3RzIGBORVRfREVWTElOS2AuIFRoZXJlIGRvZXNuJ3QgYXBwZWFyIHRvIGJlIGFueSBvdGhlciBjb25maWcgb3B0aW9ucyBkaXJlY3RseSByZWxhdGVkIHRvIHRoaXMuIGBORVRERVZTSU1gIGlzIHVzdWFsbHkgaG93IHdlIGhhbmRsZSBkZXZsaW5rIGluIHN5emthbGxlci5cblxuSnVzdCBhIHF1aWNrIHNhbml0eSBjaGVjaywgSSdsbCBzZWFyY2ggdGhlIGNvZGViYXNlIHRvIG1ha2Ugc3VyZSB0aGlzIGBERVZMSU5LX0FUVFJfUE9SVF9FWFRFUk5BTGAgaXNuJ3QgYmVpbmcgdXNlZCBhbnl3aGVyZSBlbHNlIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQgb3IgdW5leHBlY3RlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI2MDIsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6MzY6MTguMzEwMzYyOVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTMzOTc1ODYxMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJERVZMSU5LX0FUVFJfUE9SVF9FWFRFUk5BTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS91YXBpL2xpbnV4L2RldmxpbmsuaD00MTI9ZW51bSBkZXZsaW5rX2F0dHIge1xcbi0tXFxuaW5jbHVkZS91YXBpL2xpbnV4L2RldmxpbmsuaC01OTctXFxuaW5jbHVkZS91YXBpL2xpbnV4L2RldmxpbmsuaDo1OTg6XFx0REVWTElOS19BVFRSX1BPUlRfRVhURVJOQUwsXFx0XFx0LyogdTggKi9cXG5pbmNsdWRlL3VhcGkvbGludXgvZGV2bGluay5oLTU5OS1cXHRERVZMSU5LX0FUVFJfUE9SVF9DT05UUk9MTEVSX05VTUJFUixcXHQvKiB1MzIgKi9cXG4tLVxcbm5ldC9kZXZsaW5rL3BvcnQuYz0yMjk9c3RhdGljIGludCBkZXZsaW5rX25sX3BvcnRfYXR0cnNfcHV0KHN0cnVjdCBza19idWZmICptc2csXFxuLS1cXG5uZXQvZGV2bGluay9wb3J0LmMtMjQ5LVxcdFxcdFxcdHJldHVybiAtRU1TR1NJWkU7XFxubmV0L2RldmxpbmsvcG9ydC5jOjI1MDpcXHRcXHRpZiAobmxhX3B1dF91OChtc2csIERFVkxJTktfQVRUUl9QT1JUX0VYVEVSTkFMLCBhdHRycy1cXHUwMDNlcGNpX3BmLmV4dGVybmFsKSlcXG5uZXQvZGV2bGluay9wb3J0LmMtMjUxLVxcdFxcdFxcdHJldHVybiAtRU1TR1NJWkU7XFxuLS1cXG5uZXQvZGV2bGluay9wb3J0LmMtMjU4LVxcdFxcdFxcdHJldHVybiAtRU1TR1NJWkU7XFxubmV0L2RldmxpbmsvcG9ydC5jOjI1OTpcXHRcXHRpZiAobmxhX3B1dF91OChtc2csIERFVkxJTktfQVRUUl9QT1JUX0VYVEVSTkFMLCBhdHRycy1cXHUwMDNlcGNpX3ZmLmV4dGVybmFsKSlcXG5uZXQvZGV2bGluay9wb3J0LmMtMjYwLVxcdFxcdFxcdHJldHVybiAtRU1TR1NJWkU7XFxuLS1cXG5uZXQvZGV2bGluay9wb3J0LmMtMjY5LVxcdFxcdFxcdHJldHVybiAtRU1TR1NJWkU7XFxubmV0L2RldmxpbmsvcG9ydC5jOjI3MDpcXHRcXHRpZiAobmxhX3B1dF91OChtc2csIERFVkxJTktfQVRUUl9QT1JUX0VYVEVSTkFMLCBhdHRycy1cXHUwMDNlcGNpX3NmLmV4dGVybmFsKSlcXG5uZXQvZGV2bGluay9wb3J0LmMtMjcxLVxcdFxcdFxcdHJldHVybiAtRU1TR1NJWkU7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjM2OjIzLjY1MDEyNzMzMloiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NTAxMjUxMzkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBpcyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgcGF0Y2guIEl0J3MgcmVhbGx5IGp1c3QgZXh0ZW5kaW5nIHRoZSBleGlzdGluZyBgREVWTElOS19BVFRSX1BPUlRfRVhURVJOQUxgIGF0dHJpYnV0ZSB0byBjb3ZlciBQQ0kgc3ViZnVuY3Rpb25zIChgcGNpX3NmYCkuIEl0IHdhcyBhbHJlYWR5IGltcGxlbWVudGVkIGZvciBwaHlzaWNhbCBmdW5jdGlvbnMgKGBwY2lfcGZgKSBhbmQgdmlydHVhbCBmdW5jdGlvbnMgKGBwY2lfdmZgKSwgc28gdGhpcyBpcyByZWFsbHkganVzdCBjb21wbGV0aW5nIHRoZSBwaWN0dXJlIGZvciBQQ0kuIFdoaWxlIHRoZSBjb2RlIGNoYW5nZSBpdHNlbGYgaXMgbWluaW1hbCwgaXQgKmlzKiBmdW5jdGlvbmFsOyB3ZSdyZSBhZGRpbmcgYSBuZXcgYXR0cmlidXRlIHRvIHRoZSBOZXRsaW5rIHJlc3BvbnNlLlxuXG5HaXZlbiB0aGF0IGl0IHRvdWNoZXMgdGhlIE5ldGxpbmsgQVBJIGZvciBkZXZsaW5rIHBvcnRzLCBJJ20gZ29pbmcgdG8gbWFyayB0aGlzIGFzIFdvcnRoRnV6emluZz10cnVlLiBOZXRsaW5rIGNoYW5nZXMgYXJlIHByaW1lIGNhbmRpZGF0ZXMgZm9yIGZ1enppbmcgc2luY2UgYSBtYWxmb3JtZWQgbWVzc2FnZSBjb3VsZCBsZWFkIHRvIGFsbCBzb3J0cyBvZiBpc3N1ZXMuXG5cblNwZWNpZmljYWxseSwgSSdsbCBmb2N1cyBteSBmdXp6aW5nIGVmZm9ydHMgb24gYGRldmxpbmtfbmxfcG9ydF9nZXRfZG9pdGAsIGBkZXZsaW5rX25sX3BvcnRfZ2V0X2R1bXBpdGAsIGFuZCBgZGV2bGlua19ubF9wb3J0X25ld19kb2l0YC4gVGhvc2UgYXJlIHRoZSBlbnRyeSBwb2ludHMgZm9yIHRoZSByZWxldmFudCBOZXRsaW5rIG9wZXJhdGlvbnMsIHNvIHRob3NlIGFyZSB0aGUgc3BvdHMgd2hlcmUgSSdkIGFudGljaXBhdGUgdnVsbmVyYWJpbGl0aWVzLlxuXG5BbmQgc2luY2UgdGhpcyBwYXRjaCBpcyByZWxhdGVkIHRvIFBDSSBzdWJmdW5jdGlvbnMsIEknbSBnb2luZyB0byBlbnN1cmUgdGhlIGBORVRERVZTSU1gIGNvbmZpZyBpcyBlbmFibGVkIHRvIGVmZmVjdGl2ZWx5IHRlc3QgaXQuIFRoaXMgd2lsbCBlbnN1cmUgdGhhdCBQQ0kgc3ViZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgd2l0aGluIHRoZSB0ZXN0IHNldHVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzUzOSwiT3V0cHV0VG9rZW5zIjoxNDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6MzY6MjkuMTUxMzgyNjA0WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY5NTI4MDgzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRERVZTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkZXZsaW5rX25sX3BvcnRfZ2V0X2RvaXRcIixcbiAgICBcImRldmxpbmtfbmxfcG9ydF9nZXRfZHVtcGl0XCIsXG4gICAgXCJkZXZsaW5rX25sX3BvcnRfbmV3X2RvaXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgbmV3IG5ldGxpbmsgYXR0cmlidXRlIERFVkxJTktfQVRUUl9QT1JUX0VYVEVSTkFMIHRvIHRoZSBvdXRwdXQgb2YgZGV2bGlua19ubF9wb3J0X2F0dHJzX3B1dCBmb3IgUENJIHN1YmZ1bmN0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBkZXZsaW5rIG5ldGxpbmsgQVBJIGFuZCBjYW4gYmUgdGVzdGVkIGJ5IGZ1enppbmcgdGhlIGRldmxpbmsgcG9ydCBuZXRsaW5rIGhhbmRsZXJzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVERFVlNJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRldmxpbmtfbmxfcG9ydF9nZXRfZG9pdFwiLFxuICAgIFwiZGV2bGlua19ubF9wb3J0X2dldF9kdW1waXRcIixcbiAgICBcImRldmxpbmtfbmxfcG9ydF9uZXdfZG9pdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBuZXcgbmV0bGluayBhdHRyaWJ1dGUgREVWTElOS19BVFRSX1BPUlRfRVhURVJOQUwgdG8gdGhlIG91dHB1dCBvZiBkZXZsaW5rX25sX3BvcnRfYXR0cnNfcHV0IGZvciBQQ0kgc3ViZnVuY3Rpb25zLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGRldmxpbmsgbmV0bGluayBBUEkgYW5kIGNhbiBiZSB0ZXN0ZWQgYnkgZnV6emluZyB0aGUgZGV2bGluayBwb3J0IG5ldGxpbmsgaGFuZGxlcnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow8bz74[1] Phase: Succeeded StartedAt: 2026-08-03 09:36:42 +0000 UTC FinishedAt: 2026-08-03 09:36:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8bz74[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-03 09:36:42 +0000 UTC FinishedAt: 2026-08-03 09:36:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8bz74[2] Phase: Succeeded StartedAt: 2026-08-03 09:36:42 +0000 UTC FinishedAt: 2026-08-03 14:16:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8bz74[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["devlink_nl_port_get_doit","devlink_nl_port_get_dumpit","devlink_nl_port_new_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"eb6752b8-2dee-4f00-8e8f-23ed7e36a081","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-03 09:36:42 +0000 UTC FinishedAt: 2026-08-03 14:16:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["devlink_nl_port_get_doit","devlink_nl_port_get_dumpit","devlink_nl_port_new_doit"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"eb6752b8-2dee-4f00-8e8f-23ed7e36a081","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow8bz74[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["devlink_nl_port_get_doit","devlink_nl_port_get_dumpit","devlink_nl_port_new_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"eb6752b8-2dee-4f00-8e8f-23ed7e36a081","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-03 09:36:42 +0000 UTC FinishedAt: 2026-08-03 09:37:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8bz74[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["devlink_nl_port_get_doit","devlink_nl_port_get_dumpit","devlink_nl_port_new_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"eb6752b8-2dee-4f00-8e8f-23ed7e36a081","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-03 09:36:42 +0000 UTC FinishedAt: 2026-08-03 09:37:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow8bz74/series-workflow8bz74-convert-artifact-2627257060/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8bz74[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["devlink_nl_port_get_doit","devlink_nl_port_get_dumpit","devlink_nl_port_new_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"eb6752b8-2dee-4f00-8e8f-23ed7e36a081","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-03 09:37:23 +0000 UTC FinishedAt: 2026-08-03 10:31:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8bz74[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["devlink_nl_port_get_doit","devlink_nl_port_get_dumpit","devlink_nl_port_new_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"eb6752b8-2dee-4f00-8e8f-23ed7e36a081","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-03 09:37:23 +0000 UTC FinishedAt: 2026-08-03 10:31:00 +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:*08a2e855-cba4-4d22-8a27-a6496b5c59d1,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-workflow8bz74/series-workflow8bz74-convert-artifact-2627257060/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": "27025e95-8b17-4617-9526-a1ce2c92e425", "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-workflow8bz74/series-workflow8bz74-build-action-3351536418/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8bz74[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["devlink_nl_port_get_doit","devlink_nl_port_get_dumpit","devlink_nl_port_new_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"eb6752b8-2dee-4f00-8e8f-23ed7e36a081","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-03 09:37:23 +0000 UTC FinishedAt: 2026-08-03 10:30:09 +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:*08a2e855-cba4-4d22-8a27-a6496b5c59d1,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-workflow8bz74/series-workflow8bz74-convert-artifact-2627257060/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": "27025e95-8b17-4617-9526-a1ce2c92e425", "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-workflow8bz74/series-workflow8bz74-build-action-3351536418/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8bz74[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["devlink_nl_port_get_doit","devlink_nl_port_get_dumpit","devlink_nl_port_new_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"eb6752b8-2dee-4f00-8e8f-23ed7e36a081","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-03 10:31:00 +0000 UTC FinishedAt: 2026-08-03 10:31:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8bz74[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["devlink_nl_port_get_doit","devlink_nl_port_get_dumpit","devlink_nl_port_new_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"eb6752b8-2dee-4f00-8e8f-23ed7e36a081","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-03 10:31:00 +0000 UTC FinishedAt: 2026-08-03 10:31:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8bz74[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["devlink_nl_port_get_doit","devlink_nl_port_get_dumpit","devlink_nl_port_new_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"eb6752b8-2dee-4f00-8e8f-23ed7e36a081","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-03 10:31:00 +0000 UTC FinishedAt: 2026-08-03 10:31:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8bz74[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["devlink_nl_port_get_doit","devlink_nl_port_get_dumpit","devlink_nl_port_new_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"eb6752b8-2dee-4f00-8e8f-23ed7e36a081","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-03 10:31:00 +0000 UTC FinishedAt: 2026-08-03 10:31:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"eb6752b8-2dee-4f00-8e8f-23ed7e36a081","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow8bz74/series-workflow8bz74-convert-artifact-4269548771/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8bz74[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["devlink_nl_port_get_doit","devlink_nl_port_get_dumpit","devlink_nl_port_new_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"eb6752b8-2dee-4f00-8e8f-23ed7e36a081","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-03 10:31:10 +0000 UTC FinishedAt: 2026-08-03 10:33:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8bz74[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["devlink_nl_port_get_doit","devlink_nl_port_get_dumpit","devlink_nl_port_new_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"eb6752b8-2dee-4f00-8e8f-23ed7e36a081","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-03 10:31:10 +0000 UTC FinishedAt: 2026-08-03 10:33:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*27025e95-8b17-4617-9526-a1ce2c92e425,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-workflow8bz74/series-workflow8bz74-build-action-3351536418/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-workflow8bz74[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["devlink_nl_port_get_doit","devlink_nl_port_get_dumpit","devlink_nl_port_new_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"eb6752b8-2dee-4f00-8e8f-23ed7e36a081","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-03 10:33:13 +0000 UTC FinishedAt: 2026-08-03 10:33:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8bz74[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["devlink_nl_port_get_doit","devlink_nl_port_get_dumpit","devlink_nl_port_new_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"eb6752b8-2dee-4f00-8e8f-23ed7e36a081","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-03 10:33:13 +0000 UTC FinishedAt: 2026-08-03 10:33:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8bz74[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["devlink_nl_port_get_doit","devlink_nl_port_get_dumpit","devlink_nl_port_new_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"eb6752b8-2dee-4f00-8e8f-23ed7e36a081","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-03 10:33:13 +0000 UTC FinishedAt: 2026-08-03 11:13:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8bz74[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["devlink_nl_port_get_doit","devlink_nl_port_get_dumpit","devlink_nl_port_new_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"eb6752b8-2dee-4f00-8e8f-23ed7e36a081","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-03 10:33:13 +0000 UTC FinishedAt: 2026-08-03 11:13:05 +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:*08a2e855-cba4-4d22-8a27-a6496b5c59d1,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-workflow8bz74/series-workflow8bz74-convert-artifact-4269548771/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": "a6c6a406-4ade-438c-9c04-268865168d0f", "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-workflow8bz74/series-workflow8bz74-build-action-2358342039/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8bz74[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["devlink_nl_port_get_doit","devlink_nl_port_get_dumpit","devlink_nl_port_new_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"eb6752b8-2dee-4f00-8e8f-23ed7e36a081","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-03 10:33:13 +0000 UTC FinishedAt: 2026-08-03 11:12:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*08a2e855-cba4-4d22-8a27-a6496b5c59d1,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-workflow8bz74/series-workflow8bz74-convert-artifact-4269548771/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": "a6c6a406-4ade-438c-9c04-268865168d0f", "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-workflow8bz74/series-workflow8bz74-build-action-2358342039/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8bz74[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["devlink_nl_port_get_doit","devlink_nl_port_get_dumpit","devlink_nl_port_new_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"eb6752b8-2dee-4f00-8e8f-23ed7e36a081","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-03 11:13:05 +0000 UTC FinishedAt: 2026-08-03 11:13:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8bz74[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["devlink_nl_port_get_doit","devlink_nl_port_get_dumpit","devlink_nl_port_new_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"eb6752b8-2dee-4f00-8e8f-23ed7e36a081","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-03 11:13:05 +0000 UTC FinishedAt: 2026-08-03 11:13:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8bz74[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["devlink_nl_port_get_doit","devlink_nl_port_get_dumpit","devlink_nl_port_new_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"eb6752b8-2dee-4f00-8e8f-23ed7e36a081","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-03 11:13:05 +0000 UTC FinishedAt: 2026-08-03 11:15:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8bz74[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["devlink_nl_port_get_doit","devlink_nl_port_get_dumpit","devlink_nl_port_new_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"eb6752b8-2dee-4f00-8e8f-23ed7e36a081","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-03 11:13:05 +0000 UTC FinishedAt: 2026-08-03 11:15:01 +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:*a6c6a406-4ade-438c-9c04-268865168d0f,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-workflow8bz74/series-workflow8bz74-build-action-2358342039/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-workflow8bz74[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["devlink_nl_port_get_doit","devlink_nl_port_get_dumpit","devlink_nl_port_new_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"eb6752b8-2dee-4f00-8e8f-23ed7e36a081","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-03 11:15:11 +0000 UTC FinishedAt: 2026-08-03 14:16:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8bz74[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["devlink_nl_port_get_doit","devlink_nl_port_get_dumpit","devlink_nl_port_new_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"eb6752b8-2dee-4f00-8e8f-23ed7e36a081","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-03 11:15:11 +0000 UTC FinishedAt: 2026-08-03 14:16:58 +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":["devlink_nl_port_get_doit","devlink_nl_port_get_dumpit","devlink_nl_port_new_doit"],"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:*27025e95-8b17-4617-9526-a1ce2c92e425,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*a6c6a406-4ade-438c-9c04-268865168d0f,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-workflow8bz74/series-workflow8bz74-build-action-3351536418/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-workflow8bz74/series-workflow8bz74-build-action-2358342039/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow8bz74[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["devlink_nl_port_get_doit","devlink_nl_port_get_dumpit","devlink_nl_port_new_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"eb6752b8-2dee-4f00-8e8f-23ed7e36a081","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-03 11:15:11 +0000 UTC FinishedAt: 2026-08-03 11:15:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8bz74[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["devlink_nl_port_get_doit","devlink_nl_port_get_dumpit","devlink_nl_port_new_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"eb6752b8-2dee-4f00-8e8f-23ed7e36a081","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-03 11:15:11 +0000 UTC FinishedAt: 2026-08-03 11:15:16 +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":["devlink_nl_port_get_doit","devlink_nl_port_get_dumpit","devlink_nl_port_new_doit"],"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-workflow8bz74/series-workflow8bz74-convert-artifact-3831353084/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8bz74[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["devlink_nl_port_get_doit","devlink_nl_port_get_dumpit","devlink_nl_port_new_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"eb6752b8-2dee-4f00-8e8f-23ed7e36a081","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-03 11:15:11 +0000 UTC FinishedAt: 2026-08-03 11:15:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8bz74[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["devlink_nl_port_get_doit","devlink_nl_port_get_dumpit","devlink_nl_port_new_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"eb6752b8-2dee-4f00-8e8f-23ed7e36a081","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-03 11:15:11 +0000 UTC FinishedAt: 2026-08-03 11:15:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8bz74[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["devlink_nl_port_get_doit","devlink_nl_port_get_dumpit","devlink_nl_port_new_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"eb6752b8-2dee-4f00-8e8f-23ed7e36a081","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-03 11:15:11 +0000 UTC FinishedAt: 2026-08-03 11:15:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8bz74[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["devlink_nl_port_get_doit","devlink_nl_port_get_dumpit","devlink_nl_port_new_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"eb6752b8-2dee-4f00-8e8f-23ed7e36a081","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-03 11:15:21 +0000 UTC FinishedAt: 2026-08-03 14:16:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8bz74[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["devlink_nl_port_get_doit","devlink_nl_port_get_dumpit","devlink_nl_port_new_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"eb6752b8-2dee-4f00-8e8f-23ed7e36a081","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-03 11:15:21 +0000 UTC FinishedAt: 2026-08-03 14:16:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*27025e95-8b17-4617-9526-a1ce2c92e425,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*a6c6a406-4ade-438c-9c04-268865168d0f,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-workflow8bz74/series-workflow8bz74-build-action-3351536418/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-workflow8bz74/series-workflow8bz74-build-action-2358342039/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-workflow8bz74/series-workflow8bz74-convert-artifact-3831353084/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,}