Name: series-workflowjnc9v Phase: Succeeded StartedAt: 2026-06-29 12:05:39 +0000 UTC FinishedAt: 2026-06-29 13:26:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjnc9v[0] Phase: Succeeded StartedAt: 2026-06-29 12:05:39 +0000 UTC FinishedAt: 2026-06-29 12:22:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjnc9v[0].run-triage Phase: Succeeded StartedAt: 2026-06-29 12:05:39 +0000 UTC FinishedAt: 2026-06-29 12:22:59 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "dc59e4fea9d83f03bad6bddf3fa2e52491777482", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MWIFIEX", "MWIFIEX_USB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "dc59e4fea9d83f03bad6bddf3fa2e52491777482", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MWIFIEX", "MWIFIEX_USB" ], "series_id": "fe800a61-cef0-4250-90e5-9387b496973d" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mwifiex_process_uap_event", "mwifiex_set_sta_ht_cap" ], "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+CgkJCTx0ZD4yMDI2LzA2LzI5IDEyOjIxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01XSUZJRVgmIzM0OywKICAgICYjMzQ7TVdJRklFWF9VU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50JiMzNDssCiAgICAmIzM0O213aWZpZXhfc2V0X3N0YV9odF9jYXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayB0byBhbiBldmVudCBsZW5ndGggcmVwb3J0ZWQgYnkgdGhlIGRldmljZSBmaXJtd2FyZSBpbiBgbXdpZmlleF9wcm9jZXNzX3VhcF9ldmVudGAgdG8gcHJldmVudCBhbiBvdXQtb2YtYm91bmRzIHJlYWQgaW4gYG13aWZpZXhfc2V0X3N0YV9odF9jYXBgLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSB0aGUgVVNCIGRyaXZlciAoYG13aWZpZXhfdXNiYCkgd2hpY2ggY2FuIGJlIGZ1enplZCB1c2luZyBVU0IgZW11bGF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDEyOjIxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgOGY1MDk1Yjg2ZWNlNmE5Yzg1NjQ0NzdkZTA2OTRmOWRlMWFkN2ZhMVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVuIDI5IDEyOjIwOjU5IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuY1xuaW5kZXggNjc5ZmRhZTBmMDAxYTEuLmFkY2E3ZGEyOWYwZjJiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF9ldmVudC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdWFwX2V2ZW50LmNcbkBAIC0xMjYsNiAmIzQzOzEyNiwyNCBAQCBpbnQgbXdpZmlleF9wcm9jZXNzX3VhcF9ldmVudChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxuIFx0XHRcdFx0c2luZm8tXHUwMDNlYXNzb2NfcmVxX2llcyA9IFx1MDAyNmV2ZW50LVx1MDAzZWRhdGFbbGVuXTtcbiBcdFx0XHRcdGxlbiA9ICh1OCAqKXNpbmZvLVx1MDAzZWFzc29jX3JlcV9pZXMgLVxuIFx0XHRcdFx0ICAgICAgKHU4ICopXHUwMDI2ZXZlbnQtXHUwMDNlZnJhbWVfY29udHJvbDtcbiYjNDM7XG4mIzQzO1x0XHRcdFx0LypcbiYjNDM7XHRcdFx0XHQgKiBldmVudC1cdTAwM2VsZW4gaXMgcmVwb3J0ZWQgYnkgdGhlIGRldmljZSBmaXJtd2FyZSBhbmQgaXMgbm90XG4mIzQzO1x0XHRcdFx0ICogb3RoZXJ3aXNlIHZhbGlkYXRlZC4gIFJlamVjdCBhIGxlbmd0aCB0aGF0IHVuZGVyZmxvd3MgdGhlXG4mIzQzO1x0XHRcdFx0ICogaGVhZGVyLCBvciB0aGF0IHdvdWxkIHBsYWNlIHRoZSBhc3NvY2lhdGlvbiByZXF1ZXN0IElFc1xuJiM0MztcdFx0XHRcdCAqIG91dHNpZGUgdGhlIGZpeGVkLXNpemUgZXZlbnRfYm9keVtdIGJ1ZmZlciB0aGUgZXZlbnQgd2FzXG4mIzQzO1x0XHRcdFx0ICogY29waWVkIGludG87IG90aGVyd2lzZSB0aGUgSUUgd2FsayBpblxuJiM0MztcdFx0XHRcdCAqIG13aWZpZXhfc2V0X3N0YV9odF9jYXAoKSByZWFkcyBwYXN0IGV2ZW50X2JvZHkgYW5kIG91dFxuJiM0MztcdFx0XHRcdCAqIG9mIHRoZSBhZGFwdGVyIHNsYWIgb2JqZWN0LlxuJiM0MztcdFx0XHRcdCAqL1xuJiM0MztcdFx0XHRcdGlmIChsZTE2X3RvX2NwdShldmVudC1cdTAwM2VsZW4pIFx1MDAzYyBsZW4gfHxcbiYjNDM7XHRcdFx0XHQgICAgKHU4ICopXHUwMDI2ZXZlbnQtXHUwMDNlZnJhbWVfY29udHJvbCAmIzQzOyBsZTE2X3RvX2NwdShldmVudC1cdTAwM2VsZW4pIFx1MDAzZVxuJiM0MztcdFx0XHRcdCAgICBhZGFwdGVyLVx1MDAzZWV2ZW50X2JvZHkgJiM0MzsgTUFYX0VWRU5UX1NJWkUpIHtcbiYjNDM7XHRcdFx0XHRcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIEVSUk9SLFxuJiM0MztcdFx0XHRcdFx0XHQgICAgXCYjMzQ7aW52YWxpZCBTVEEgYXNzb2MgZXZlbnQgbGVuZ3RoXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdFx0XHRcdGtmcmVlKHNpbmZvKTtcbiYjNDM7XHRcdFx0XHRcdHJldHVybiAtMTtcbiYjNDM7XHRcdFx0XHR9XG4gXHRcdFx0XHRzaW5mby1cdTAwM2Vhc3NvY19yZXFfaWVzX2xlbiA9XG4gXHRcdFx0XHRcdGxlMTZfdG9fY3B1KGV2ZW50LVx1MDAzZWxlbikgLSAodTE2KWxlbjtcbiBcdFx0XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTI6MjE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TVdJRklFWCYjMzQ7LAogICAgJiMzNDtNV0lGSUVYX1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O213aWZpZXhfcHJvY2Vzc191YXBfZXZlbnQmIzM0OywKICAgICYjMzQ7bXdpZmlleF9zZXRfc3RhX2h0X2NhcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIHRvIGFuIGV2ZW50IGxlbmd0aCByZXBvcnRlZCBieSB0aGUgZGV2aWNlIGZpcm13YXJlIGluIGBtd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50YCB0byBwcmV2ZW50IGFuIG91dC1vZi1ib3VuZHMgcmVhZCBpbiBgbXdpZmlleF9zZXRfc3RhX2h0X2NhcGAuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgdmlhIHRoZSBVU0IgZHJpdmVyIChgbXdpZmlleF91c2JgKSB3aGljaCBjYW4gYmUgZnV6emVkIHVzaW5nIFVTQiBlbXVsYXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDhmNTA5NWI4NmVjZTZhOWM4NTY0NDc3ZGUwNjk0ZjlkZTFhZDdmYTEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEp1biAyOSAxMjoyMDo1OSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYwppbmRleCA2NzlmZGFlMGYwMDFhMS4uYWRjYTdkYTI5ZjBmMmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdWFwX2V2ZW50LmMKQEAgLTEyNiw2ICYjNDM7MTI2LDI0IEBAIGludCBtd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpCiAJCQkJc2luZm8tJmd0O2Fzc29jX3JlcV9pZXMgPSAmYW1wO2V2ZW50LSZndDtkYXRhW2xlbl07CiAJCQkJbGVuID0gKHU4ICopc2luZm8tJmd0O2Fzc29jX3JlcV9pZXMgLQogCQkJCSAgICAgICh1OCAqKSZhbXA7ZXZlbnQtJmd0O2ZyYW1lX2NvbnRyb2w7CiYjNDM7CiYjNDM7CQkJCS8qCiYjNDM7CQkJCSAqIGV2ZW50LSZndDtsZW4gaXMgcmVwb3J0ZWQgYnkgdGhlIGRldmljZSBmaXJtd2FyZSBhbmQgaXMgbm90CiYjNDM7CQkJCSAqIG90aGVyd2lzZSB2YWxpZGF0ZWQuICBSZWplY3QgYSBsZW5ndGggdGhhdCB1bmRlcmZsb3dzIHRoZQomIzQzOwkJCQkgKiBoZWFkZXIsIG9yIHRoYXQgd291bGQgcGxhY2UgdGhlIGFzc29jaWF0aW9uIHJlcXVlc3QgSUVzCiYjNDM7CQkJCSAqIG91dHNpZGUgdGhlIGZpeGVkLXNpemUgZXZlbnRfYm9keVtdIGJ1ZmZlciB0aGUgZXZlbnQgd2FzCiYjNDM7CQkJCSAqIGNvcGllZCBpbnRvOyBvdGhlcndpc2UgdGhlIElFIHdhbGsgaW4KJiM0MzsJCQkJICogbXdpZmlleF9zZXRfc3RhX2h0X2NhcCgpIHJlYWRzIHBhc3QgZXZlbnRfYm9keSBhbmQgb3V0CiYjNDM7CQkJCSAqIG9mIHRoZSBhZGFwdGVyIHNsYWIgb2JqZWN0LgomIzQzOwkJCQkgKi8KJiM0MzsJCQkJaWYgKGxlMTZfdG9fY3B1KGV2ZW50LSZndDtsZW4pICZsdDsgbGVuIHx8CiYjNDM7CQkJCSAgICAodTggKikmYW1wO2V2ZW50LSZndDtmcmFtZV9jb250cm9sICYjNDM7IGxlMTZfdG9fY3B1KGV2ZW50LSZndDtsZW4pICZndDsKJiM0MzsJCQkJICAgIGFkYXB0ZXItJmd0O2V2ZW50X2JvZHkgJiM0MzsgTUFYX0VWRU5UX1NJWkUpIHsKJiM0MzsJCQkJCW13aWZpZXhfZGJnKGFkYXB0ZXIsIEVSUk9SLAomIzQzOwkJCQkJCSAgICAmIzM0O2ludmFsaWQgU1RBIGFzc29jIGV2ZW50IGxlbmd0aFxuJiMzNDspOwomIzQzOwkJCQkJa2ZyZWUoc2luZm8pOwomIzQzOwkJCQkJcmV0dXJuIC0xOwomIzQzOwkJCQl9CiAJCQkJc2luZm8tJmd0O2Fzc29jX3JlcV9pZXNfbGVuID0KIAkJCQkJbGUxNl90b19jcHUoZXZlbnQtJmd0O2xlbikgLSAodTE2KWxlbjsKIAkJCX0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTI6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjEwNQoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDI5MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQb3RlbnRpYWwgRnV6emluZyBUYXJnZXQ6IGBtd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50YCoqCgpPa2F5LCBzbyB3ZSBoYXZlIHRoaXMgcGF0Y2ggaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuY2AuIExvb2tzIGxpa2UgaXQmIzM5O3MgYSBjcml0aWNhbCBsZW5ndGggY2hlY2sgaW4gYG13aWZpZXhfcHJvY2Vzc191YXBfZXZlbnRgLCBkZXNpZ25lZCB0byBwcmV2ZW50IGFuIG91dC1vZi1ib3VuZHMgcmVhZC4gVGhlIHBhdGNoIHZhbGlkYXRlcyBgZXZlbnQtJmd0O2xlbmAgYWdhaW5zdCB0aGUgcmVjZWl2ZWQgZGF0YSBidWZmZXIgc2l6ZSwgZXNzZW50aWFsbHkgbWFraW5nIHN1cmUgd2UgZG9uJiMzOTt0IHRyeSB0byByZWFkIGJleW9uZCB0aGUgYWxsb2NhdGVkIG1lbW9yeS4gU21hcnQgbW92ZS4KCk5vdywgdGhlIGludGVyZXN0aW5nIHF1ZXN0aW9uIGlzOiBjYW4gd2UgcmVhY2ggYG13aWZpZXhfcHJvY2Vzc191YXBfZXZlbnRgIGluIGEgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudD8gYG13aWZpZXhgIGlzIHNwZWNpZmljYWxseSBmb3IgTWFydmVsbCBXaUZpIGhhcmR3YXJlLCBzbyB3ZSBjYW4mIzM5O3QganVzdCB0aHJvdyBhIGdlbmVyaWMgbWFjODAyMTEgZGV2aWNlIGF0IGl0LiAqSG93ZXZlciosIHRoaXMgaXMgd2hlcmUgaXQgZ2V0cyBpbnRlcmVzdGluZy4gSSByZW1lbWJlciBgbXdpZmlleGAgaGFzIHN1cHBvcnQgZm9yIFVTQiEgSXQgaGFzIGEgYG13aWZpZXhfdXNiYCBkcml2ZXIuCgpBaGEhIFVTQiBkZXZpY2VzIGFyZSBvZnRlbiBxdWl0ZSBhbWVuYWJsZSB0byBlbXVsYXRpb24uIFdlIGNvdWxkIHVzZSBVU0IgZ2FkZ2V0LCBkdW1teV9oY2QsIG9yIHZoY2ktaGNkIGZvciB0aGlzLiBXYWl0LCBJIHJlY2FsbCB0aGF0IHN5emthbGxlciBoYXMgc3VwcG9ydCBmb3IgZnV6emluZyBVU0IgZGV2aWNlcyB1c2luZyB2aGNpLWhjZCEgVGhhdCYjMzk7cyBwZXJmZWN0LiBUaGlzIG1lYW5zIHdlIHNob3VsZCBiZSBhYmxlIHRvIGdldCBgbXdpZmlleF91c2JgIHVwIGFuZCBydW5uaW5nIHVuZGVyIGEgZnV6emVyISBOb3cgSSBqdXN0IG5lZWQgdG8gY29uZmlybSB0aGUgS2NvbmZpZyBvcHRpb25zIGZvciBgbXdpZmlleGAgdG8gbWFrZSBzdXJlIHdlIGNhbiBidWlsZCBpdCB3aXRoIHRoZSByaWdodCBjb25maWd1cmF0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxMjoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jbWRldnQuYz00NzA9aW50IG13aWZpZXhfcHJvY2Vzc19ldmVudChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jbWRldnQuYy01MTktXHRpZiAocHJpdi1cdTAwM2Vic3Nfcm9sZSA9PSBNV0lGSUVYX0JTU19ST0xFX1VBUClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jbWRldnQuYzo1MjA6XHRcdHJldCA9IG13aWZpZXhfcHJvY2Vzc191YXBfZXZlbnQocHJpdik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY21kZXZ0LmMtNTIxLVx0ZWxzZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg9MTE0NT1pbnQgbXdpZmlleF9wcm9jZXNzX3N0YV9ldmVudChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICopO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxMTQ2OmludCBtd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTExNDctdm9pZCBtd2lmaWV4X2RlbGV0ZV9hbGxfc3RhdGlvbl9saXN0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYz0xND1zdGF0aWMgaW50IG13aWZpZXhfY2hlY2tfdWFwX2NhcGFiaWxpdGllcyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYy05My0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYzo5NDppbnQgbXdpZmlleF9wcm9jZXNzX3VhcF9ldmVudChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF9ldmVudC5jLTk1LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxMjoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTg5CgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjoKCioqSW52ZXN0aWdhdGluZyBtd2lmaWV4X3VzYiBpbiBLY29uZmlnKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBpdC4gVGltZSB0byBkaXZlIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGh1bnQgZG93biBgbXdpZmlleF91c2JgLiBUaGlzIGxpa2VseSBtZWFucyBJJiMzOTttIHRyeWluZyB0byBjb25maWd1cmUgb3IgdHJvdWJsZXNob290IHNvbWV0aGluZyByZWxhdGVkIHRvIHRoZSBNYXJ2ZWxsIFdpRmkgbW9kdWxlLCBzcGVjaWZpY2FsbHkgdGhlIFVTQiBpbnRlcmZhY2UuIEkmIzM5O2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSBpdCYjMzk7cyBkZWZpbmVkLCBhbnkgZGVwZW5kZW5jaWVzIGl0IG1pZ2h0IGhhdmUsIGFuZCBpZiB0aGVyZSBhcmUgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGZsYWdzIGF0IHBsYXkuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlOiBpcyBpdCBzZWxlY3RhYmxlIGJ5IGRlZmF1bHQ/IElzIHRoZXJlIGFuIG9wdGlvbiB0byBkaXNhYmxlIGl0PyBXaGF0IG90aGVyIGZlYXR1cmVzIG9yIGRyaXZlcnMgcmVseSBvbiBpdD8gQXJlIHRoZXJlIGFueSBzcGVjaWZpYyBoYXJkd2FyZSBjb25maWd1cmF0aW9ucyB0aWVkIHRvIGl0cyBhY3RpdmF0aW9uPyBUaGlzIGNvdWxkIGJlIHRvIGVuYWJsZSBhIHNwZWNpZmljIG1vZHVsZSBmZWF0dXJlLCB0byBpbnZlc3RpZ2F0ZSBhIGJ1aWxkIGVycm9yLCBvciBzaW1wbHkgdG8gZW5zdXJlIEkgdW5kZXJzdGFuZCBob3cgdGhpcyBjb21wb25lbnQgaXMgaW50ZWdyYXRlZCBpbnRvIHRoZSBsYXJnZXIgc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDEyOjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNV0lGSUVYJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzoyOmNvbmZpZyBNV0lGSUVYXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBXaUZpLUV4IERyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTExLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6MTI6Y29uZmlnIE1XSUZJRVhfU0RJT1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMTMtXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBTRDg3ODYvU0Q4Nzg3L1NEODc5Ny9TRDg4ODcvU0Q4ODk3L1NEODk3Ny9TRDg5NzgvU0Q4OTg3L1NEODk5N1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTI0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6MjU6Y29uZmlnIE1XSUZJRVhfUENJRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMjYtXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBQQ0lFIDg3NjYvODg5Ny84OTk3XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzozNzpjb25maWcgTVdJRklFWF9VU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTM4LVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgVVNCODc2Ni84Nzk3Lzg5OTdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxMjoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODM3CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkFuYWx5emluZyBNV0lGSUVYIENvbmZpZ3VyYXRpb24gYW5kIEV2ZW50IEhhbmRsaW5nKioKClJpZ2h0LCBzbyBJJiMzOTttIGRlYWxpbmcgd2l0aCBgTVdJRklFWGAgYW5kIGBNV0lGSUVYX1VTQmAgY29uZmlndXJhdGlvbnMgaGVyZS4gVGhvc2UgYXJlIHRoZSBrZXkgb25lcywgYXQgbGVhc3QgaW5pdGlhbGx5LiBNeSBwcmltYXJ5IGZvY3VzIGlzIG9uIHRoZSBmdW5jdGlvbiBgbXdpZmlleF9wcm9jZXNzX3VhcF9ldmVudGAuIFRoYXTigJlzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zLCBvciBhdCBsZWFzdCB3aGVyZSB0aGUgVUFQIGV2ZW50cyBhcmUgcHJvY2Vzc2VkLgoKQnV0LCBiZWZvcmUgSSBkaXZlIHRvbyBkZWVwIGludG8gdGhhdCBmdW5jdGlvbiwgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nLiBBcmUgdGhlcmUgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycywgZGVmaW5lcywgb3IgZmxhZ3MgSSBzaG91bGQgYmUgYXdhcmUgb2Y/IEFyZSB0aGVzZSB0aGUgb25seSBjb25maWdzLCBvciBhcmUgdGhlcmUgc3VwcG9ydGluZyBmaWxlcz8gSSBuZWVkIHRvIGdldCBhIGJyb2FkZXIgdmlldyBiZWZvcmUgSSBzdGFydCBkaWdnaW5nIGludG8gdGhlIGNvcmUgbG9naWMuIEkgd2lsbCBjaGVjayBmb3IgYW55IHJlbGF0ZWQgY29uZmlncyBub3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTI6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnPTI9Y29uZmlnIE1XSUZJRVhcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzo0Olx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctNS1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZz0xMj1jb25maWcgTVdJRklFWF9TRElPXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0xMy1cdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFNEODc4Ni9TRDg3ODcvU0Q4Nzk3L1NEODg4Ny9TRDg4OTcvU0Q4OTc3L1NEODk3OC9TRDg5ODcvU0Q4OTk3XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzoxNDpcdGRlcGVuZHMgb24gTVdJRklFWCBcdTAwMjZcdTAwMjYgTU1DXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0xNS1cdHNlbGVjdCBGV19MT0FERVJcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZz0yNT1jb25maWcgTVdJRklFWF9QQ0lFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0yNi1cdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFBDSUUgODc2Ni84ODk3Lzg5OTdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjI3Olx0ZGVwZW5kcyBvbiBNV0lGSUVYIFx1MDAyNlx1MDAyNiBQQ0lcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTI4LVx0c2VsZWN0IEZXX0xPQURFUlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnPTM3PWNvbmZpZyBNV0lGSUVYX1VTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzgtXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBVU0I4NzY2Lzg3OTcvODk5N1wmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6Mzk6XHRkZXBlbmRzIG9uIE1XSUZJRVggXHUwMDI2XHUwMDI2IFVTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctNDAtXHRzZWxlY3QgRldfTE9BREVSXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTI6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDY0MAoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDExNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFdpRmkgRHJpdmVyIEV2ZW50IFByb2Nlc3NpbmcqKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIFdpRmkgZHJpdmVyIGNvZGUsIGFuZCBpdCBsb29rcyBsaWtlIGBNV0lGSUVYYCBhbmQgYE1XSUZJRVhfVVNCYCBhcmUgdGhlIGNvbmZpZ3VyYXRpb25zIEkgbmVlZCB0byBwYXkgYXR0ZW50aW9uIHRvLiBUaGUgY29yZSBmdW5jdGlvbiBoZXJlIHNlZW1zIHRvIGJlIGBtd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50YC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBpcyB0aGlzIHRoZSAqb25seSogZnVuY3Rpb24gSSBuZWVkIHRvIGZvY3VzIG9uLCBvciBhcmUgdGhlcmUgb3RoZXIgcmVsYXRlZCBmdW5jdGlvbnMgd29ydGggaW52ZXN0aWdhdGluZz8KClRoZSBwYXRjaCBJJiMzOTttIGV4YW1pbmluZyBtb2RpZmllcyBgbXdpZmlleF9wcm9jZXNzX3VhcF9ldmVudGAsIHNvIHRoYXQmIzM5O3Mgd2hlcmUgdGhlIGhlYXJ0IG9mIHRoZSBjaGFuZ2VzIGxpZXMuIE5vdywgYSBjcml0aWNhbCBxdWVzdGlvbiBhcmlzZXM6IGlzIGBtd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50YCBjYWxsZWQgZXhjbHVzaXZlbHkgZnJvbSBhIFVTQi1zcGVjaWZpYyBwYXRoLCBvciBkb2VzIGl0IGhhbmRsZSBldmVudHMgZnJvbSBhIG1vcmUgZ2VuZXJhbCBjb250ZXh0PyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY2FsbCBjaGFpbiB0byBhc2NlcnRhaW4gaXRzIHNjb3BlLiBMZXQmIzM5O3Mgc2VlLi4uIGl0JiMzOTtzIGNhbGxlZCBmcm9tIGBtd2lmaWV4X3Byb2Nlc3NfZXZlbnRgLCB3aGljaCBpbiB0dXJuIGlzIGNhbGxlZCBmcm9tIGBtd2lmaWV4X21haW5fcHJvY2Vzc2AuIFRoYXQgbmFycm93cyBkb3duIHRoZSBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxMjoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttd2lmaWV4X3Byb2Nlc3NfZXZlbnQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NtZGV2dC5jPTQyMT12b2lkIG13aWZpZXhfZnJlZV9jbWRfYnVmZmVyKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NtZGV2dC5jLTQ2OS0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jbWRldnQuYzo0NzA6aW50IG13aWZpZXhfcHJvY2Vzc19ldmVudChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NtZGV2dC5jLTQ3MS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYz0yNDg9aW50IG13aWZpZXhfbWFpbl9wcm9jZXNzKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy0zNTAtXHRcdFx0YWRhcHRlci1cdTAwM2VldmVudF9yZWNlaXZlZCA9IGZhbHNlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYzozNTE6XHRcdFx0bXdpZmlleF9wcm9jZXNzX2V2ZW50KGFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy0zNTItXHRcdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oPTEwNzE9aW50IG13aWZpZXhfcHJvY2Vzc19tZ210X3BhY2tldChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTA3My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTA3NDppbnQgbXdpZmlleF9wcm9jZXNzX2V2ZW50KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xMDc1LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxMjoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDEzCgkJCQkJCQlvdXRwdXQ6IDE3CgkJCQkJCQl0aG91Z2h0czogMTA3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgbXdpZmlleCBFdmVudCBIYW5kbGluZyBGbG93KioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBgbXdpZmlleGAgZHJpdmVyIGFnYWluLiBUaGUga2V5IHNlZW1zIHRvIGJlIGBtd2lmaWV4X21haW5fcHJvY2Vzc2AsIHRoYXQmIzM5O3Mgb3VyIG1haW4gd29ya2VyIHRocmVhZCwgd2hpY2ggbWFrZXMgc2Vuc2UuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBldmVudHMgZnJvbSB0aGUgZGV2aWNlIGFyZSBoYW5kbGVkLCBzcGVjaWZpY2FsbHkgZm9yIFVTQi4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3Mgc3VnZ2VzdHMgdGhlIGZsb3cgaXMgc29tZXRoaW5nIGxpa2UgdGhpczogVGhlIFVTQiBSWCBjb21wbGV0aW9uIGNhbGxiYWNrLCBgbXdpZmlleF91c2JfcnhfY29tcGxldGVgLCB0cmlnZ2VycyBgbXdpZmlleF91c2Jfc3VibWl0X3J4X3VyYmAsIHdoaWNoIGluIHR1cm4gbGVhZHMgdG8gYG13aWZpZXhfdXNiX3JlY3ZgLiBUaGVuLCBwcmVzdW1hYmx5LCB0aGUgcmVjZWl2ZWQgZGF0YSBpcyBmdW5uZWxlZCB0byBgbXdpZmlleF9oYW5kbGVfcnhfcGFja2V0YCwgYW5kIGZpbmFsbHksIHdlIGdldCB0byB0aGUgY29yZSBvZiB0aGUgaXNzdWUsIGBtd2lmaWV4X3Byb2Nlc3NfZXZlbnRgLgoKTm93LCBJIG5lZWQgdG8gcGlucG9pbnQgd2hlcmUgdGhpcyBgZXZlbnRfcmVjZWl2ZWRgIGZsYWcgaXMgc2V0LiBVbmRlcnN0YW5kaW5nIHdoZW4gYW5kIGhvdyB0aGF0IGZsYWcgaXMgdG9nZ2xlZCBpcyBjcnVjaWFsIHRvIHVuZGVyc3RhbmRpbmcgdGhlIHRyaWdnZXJpbmcgbWVjaGFuaXNtIGFuZCBwb3RlbnRpYWwgYm90dGxlbmVja3Mgd2l0aGluIHRoZSBldmVudCBwcm9jZXNzaW5nLiBUaW1lIHRvIGRpZyBkZWVwZXIgYW5kIHNlZSB3aGVyZSB0aGUgYWN0dWFsIGV2ZW50IHJlY2VwdGlvbiBpcyBhY2tub3dsZWRnZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDEyOjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2V2ZW50X3JlY2VpdmVkJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O0RvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9uZmMvbmZjLWhjaS5yc3Q9NjQ9ZW50cnkgcG9pbnRzOjpcbi0tXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvbmZjL25mYy1oY2kucnN0LTg1LVx0XHRcdCAgICAgIHN0cnVjdCBuZmNfdGFyZ2V0ICp0YXJnZXQpO1xuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL25mYy9uZmMtaGNpLnJzdDo4NjpcdGludCAoKmV2ZW50X3JlY2VpdmVkKShzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYsIHU4IGdhdGUsIHU4IGV2ZW50LFxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL25mYy9uZmMtaGNpLnJzdC04Ny1cdFx0XHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbi0tXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvbmZjL25mYy1oY2kucnN0LTExNy0gIHNwYWNlXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvbmZjL25mYy1oY2kucnN0OjExODotIGV2ZW50X3JlY2VpdmVkKCkgaXMgY2FsbGVkIHRvIGhhbmRsZSBhbiBldmVudCBjb21pbmcgZnJvbSB0aGUgY2hpcC4gRHJpdmVyXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvbmZjL25mYy1oY2kucnN0LTExOS0gIGNhbiBoYW5kbGUgdGhlIGV2ZW50IG9yIHJldHVybiAxIHRvIGxldCBIQ0kgYXR0ZW1wdCBzdGFuZGFyZCBwcm9jZXNzaW5nLlxuLS1cbmRyaXZlcnMvZ3B1L2RybS9zdGkvc3RpX2hkbWkuYz0xOTg9c3RhdGljIGlycXJldHVybl90IGhkbWlfaXJxX3RocmVhZChpbnQgaXJxLCB2b2lkICphcmcpXG4tLVxuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfaGRtaS5jLTIxMi1cdGlmIChoZG1pLVx1MDAzZWlycV9zdGF0dXMgXHUwMDI2IChIRE1JX0lOVF9TV19SU1QgfCBIRE1JX0lOVF9ETExfTENLKSkge1xuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfaGRtaS5jOjIxMzpcdFx0aGRtaS1cdTAwM2VldmVudF9yZWNlaXZlZCA9IHRydWU7XG5kcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9oZG1pLmMtMjE0LVx0XHR3YWtlX3VwX2ludGVycnVwdGlibGUoXHUwMDI2aGRtaS1cdTAwM2V3YWl0X2V2ZW50KTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9oZG1pLmM9NTY3PXN0YXRpYyB2b2lkIGhkbWlfc3dyZXNldChzdHJ1Y3Qgc3RpX2hkbWkgKmhkbWkpXG4tLVxuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfaGRtaS5jLTU3Ny1cdC8qIFN3IHJlc2V0ICovXG5kcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9oZG1pLmM6NTc4Olx0aGRtaS1cdTAwM2VldmVudF9yZWNlaXZlZCA9IGZhbHNlO1xuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfaGRtaS5jLTU3OS1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9oZG1pLmMtNTg1LVx0d2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlX3RpbWVvdXQoaGRtaS1cdTAwM2V3YWl0X2V2ZW50LFxuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfaGRtaS5jOjU4NjpcdFx0XHRcdFx0IGhkbWktXHUwMDNlZXZlbnRfcmVjZWl2ZWQsXG5kcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9oZG1pLmMtNTg3LVx0XHRcdFx0XHQgbXNlY3NfdG9famlmZmllc1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9zdGkvc3RpX2hkbWkuaD0zMD1zdHJ1Y3QgaGRtaV9hdWRpb19wYXJhbXMge1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9zdGkvc3RpX2hkbWkuaC01Ni0gKiBAd2FpdF9ldmVudDogd2FpdCBldmVudFxuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfaGRtaS5oOjU3OiAqIEBldmVudF9yZWNlaXZlZDogd2FpdCBldmVudCBzdGF0dXNcbmRyaXZlcnMvZ3B1L2RybS9zdGkvc3RpX2hkbWkuaC01OC0gKiBAcmVzZXQ6IHJlc2V0IGNvbnRyb2wgb2YgdGhlIGhkbWkgcGh5XG4tLVxuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfaGRtaS5oPTY2PXN0cnVjdCBzdGlfaGRtaSB7XG4tLVxuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfaGRtaS5oLTgxLVx0d2FpdF9xdWV1ZV9oZWFkX3Qgd2FpdF9ldmVudDtcbmRyaXZlcnMvZ3B1L2RybS9zdGkvc3RpX2hkbWkuaDo4MjpcdGJvb2wgZXZlbnRfcmVjZWl2ZWQ7XG5kcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9oZG1pLmgtODMtXHRzdHJ1Y3QgcmVzZXRfY29udHJvbCAqcmVzZXQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfaGRtaV90eDNnNGMyOHBoeS5jPTc4PXN0YXRpYyBib29sIHN0aV9oZG1pX3R4M2c0YzI4cGh5X3N0YXJ0KHN0cnVjdCBzdGlfaGRtaSAqaGRtaSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9oZG1pX3R4M2c0YzI4cGh5LmMtMTE3LVx0ICovXG5kcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9oZG1pX3R4M2c0YzI4cGh5LmM6MTE4Olx0aGRtaS1cdTAwM2VldmVudF9yZWNlaXZlZCA9IGZhbHNlO1xuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfaGRtaV90eDNnNGMyOHBoeS5jLTExOS1cdERSTV9ERUJVR19EUklWRVIoXCYjMzQ7cGxsY3RybCA9IDB4JXhcXG5cJiMzNDssIHBsbGN0cmwpO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9zdGkvc3RpX2hkbWlfdHgzZzRjMjhwaHkuYy0xMjMtXHR3YWl0X2V2ZW50X2ludGVycnVwdGlibGVfdGltZW91dChoZG1pLVx1MDAzZXdhaXRfZXZlbnQsXG5kcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9oZG1pX3R4M2c0YzI4cGh5LmM6MTI0Olx0XHRcdFx0XHQgaGRtaS1cdTAwM2VldmVudF9yZWNlaXZlZCA9PSB0cnVlLFxuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfaGRtaV90eDNnNGMyOHBoeS5jLTEyNS1cdFx0XHRcdFx0IG1zZWNzX3RvX2ppZmZpZXNcbi0tXG5kcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9oZG1pX3R4M2c0YzI4cGh5LmM9MTg4PXN0YXRpYyB2b2lkIHN0aV9oZG1pX3R4M2c0YzI4cGh5X3N0b3Aoc3RydWN0IHN0aV9oZG1pICpoZG1pKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9zdGkvc3RpX2hkbWlfdHgzZzRjMjhwaHkuYy0xOTMtXG5kcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9oZG1pX3R4M2c0YzI4cGh5LmM6MTk0Olx0aGRtaS1cdTAwM2VldmVudF9yZWNlaXZlZCA9IGZhbHNlO1xuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfaGRtaV90eDNnNGMyOHBoeS5jLTE5NS1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9oZG1pX3R4M2c0YzI4cGh5LmMtMjAzLVx0d2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlX3RpbWVvdXQoaGRtaS1cdTAwM2V3YWl0X2V2ZW50LFxuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfaGRtaV90eDNnNGMyOHBoeS5jOjIwNDpcdFx0XHRcdFx0IGhkbWktXHUwMDNlZXZlbnRfcmVjZWl2ZWQgPT0gdHJ1ZSxcbmRyaXZlcnMvZ3B1L2RybS9zdGkvc3RpX2hkbWlfdHgzZzRjMjhwaHkuYy0yMDUtXHRcdFx0XHRcdCBtc2Vjc190b19qaWZmaWVzXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L1JFQURNRT04OT1pbmZvXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L1JFQURNRS0xNTgtXHRjbWRfcmVzcF9yZWNlaXZlZCA9IFx1MDAzYzAvMSwgbm8gY21kIHJlc3BvbnNlIHRvIHByb2Nlc3MvcmVzcG9uc2UgcmVjZWl2ZWQgYW5kIHlldCB0byBwcm9jZXNzXHUwMDNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvUkVBRE1FOjE1OTpcdGV2ZW50X3JlY2VpdmVkID0gXHUwMDNjMC8xLCBubyBldmVudCB0byBwcm9jZXNzL2V2ZW50IHJlY2VpdmVkIGFuZCB5ZXQgdG8gcHJvY2Vzc1x1MDAzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L1JFQURNRS0xNjAtXHRjbWRfcGVuZGluZyA9IFx1MDAzY251bWJlciBvZiBjbWQgcGVuZGluZ1x1MDAzZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9pbml0LmM9MjA2PXN0YXRpYyB2b2lkIG13aWZpZXhfaW5pdF9hZGFwdGVyKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2luaXQuYy0yMjQtXHRhZGFwdGVyLVx1MDAzZWNtZF9yZXNwX3JlY2VpdmVkID0gZmFsc2U7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvaW5pdC5jOjIyNTpcdGFkYXB0ZXItXHUwMDNlZXZlbnRfcmVjZWl2ZWQgPSBmYWxzZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9pbml0LmMtMjI2LVx0YWRhcHRlci1cdTAwM2VkYXRhX3JlY2VpdmVkID0gZmFsc2U7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2lvY3RsLmg9MTkxPXN0cnVjdCBtd2lmaWV4X2RlYnVnX2luZm8ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9pb2N0bC5oLTIzNS1cdHU4IGNtZF9yZXNwX3JlY2VpdmVkO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2lvY3RsLmg6MjM2Olx0dTggZXZlbnRfcmVjZWl2ZWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvaW9jdGwuaC0yMzctXHR1MzIgbGFzdF9tcF93cl9iaXRtYXBbTVdJRklFWF9EQkdfU0RJT19NUF9OVU1dO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmM9MjQ4PWludCBtd2lmaWV4X21haW5fcHJvY2VzcyhzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtMzQ4LVx0XHQvKiBDaGVjayBmb3IgZXZlbnQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmM6MzQ5Olx0XHRpZiAoYWRhcHRlci1cdTAwM2VldmVudF9yZWNlaXZlZCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYzozNTA6XHRcdFx0YWRhcHRlci1cdTAwM2VldmVudF9yZWNlaXZlZCA9IGZhbHNlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy0zNTEtXHRcdFx0bXdpZmlleF9wcm9jZXNzX2V2ZW50KGFkYXB0ZXIpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg9NTU9ZW51bSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xMjYtI2RlZmluZSBJU19DQVJEX1JYX1JDVkQoYWRhcHRlcikgKGFkYXB0ZXItXHUwMDNlY21kX3Jlc3BfcmVjZWl2ZWQgfHwgXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTI3Olx0XHRcdFx0YWRhcHRlci1cdTAwM2VldmVudF9yZWNlaXZlZCB8fCBcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xMjgtXHRcdFx0XHRhZGFwdGVyLVx1MDAzZWRhdGFfcmVjZWl2ZWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD04NTE9c3RydWN0IG13aWZpZXhfYWRhcHRlciB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC05MDgtXHR1OCBjbWRfcmVzcF9yZWNlaXZlZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6OTA5Olx0dTggZXZlbnRfcmVjZWl2ZWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTkxMC1cdHU4IGRhdGFfcmVjZWl2ZWQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYz0xOTAxPXN0YXRpYyBpbnQgbXdpZmlleF9wY2llX3Byb2Nlc3NfZXZlbnRfcmVhZHkoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jLTE5MTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jOjE5MTI6XHRpZiAoYWRhcHRlci1cdTAwM2VldmVudF9yZWNlaXZlZCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYy0xOTEzLVx0XHRtd2lmaWV4X2RiZyhhZGFwdGVyLCBFVkVOVCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jLTE5NzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jOjE5NzI6XHRcdGFkYXB0ZXItXHUwMDNlZXZlbnRfcmVjZWl2ZWQgPSB0cnVlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYy0xOTczLVx0XHRhZGFwdGVyLVx1MDAzZWV2ZW50X3NrYiA9IHNrYl9jbWQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYz0xNjQ3PXN0YXRpYyBpbnQgbXdpZmlleF9kZWNvZGVfcnhfcGFja2V0KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYy0xNzIyLVx0XHQvKiBldmVudCBjYXVzZSBoYXMgYmVlbiBzYXZlZCB0byBhZGFwdGVyLVx1MDAzZWV2ZW50X2NhdXNlICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jOjE3MjM6XHRcdGFkYXB0ZXItXHUwMDNlZXZlbnRfcmVjZWl2ZWQgPSB0cnVlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYy0xNzI0LVx0XHRhZGFwdGVyLVx1MDAzZWV2ZW50X3NrYiA9IHNrYjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM9NDY9c3RhdGljIGludCBtd2lmaWV4X3VzYl9yZWN2KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTExNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMTU6XHRcdFx0YWRhcHRlci1cdTAwM2VldmVudF9yZWNlaXZlZCA9IHRydWU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTE2LVx0XHRcdGFkYXB0ZXItXHUwMDNlZXZlbnRfc2tiID0gc2tiO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmM9MTY9c3RhdGljIHN0cnVjdCBtd2lmaWV4X2RlYnVnX2RhdGEgaXRlbXNbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jLTEwMy1cdCBpdGVtX2FkZHIoY21kX3Jlc3BfcmVjZWl2ZWQpLCAxfSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmM6MTA0Olx0e1wmIzM0O2V2ZW50X3JlY2VpdmVkXCYjMzQ7LCBpdGVtX3NpemUoZXZlbnRfcmVjZWl2ZWQpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuYzoxMDU6XHQgaXRlbV9hZGRyKGV2ZW50X3JlY2VpdmVkKSwgMX0sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jLTEwNi1cbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9tb2RlbV9vcHMuYz01MTU9c3RhdGljIHZvaWQgdDd4eF9jb3JlX2hrX2hhbmRsZXIoc3RydWN0IHQ3eHhfbW9kZW0gKm1kLCBzdHJ1Y3QgdDd4eF9zeXNfaW5mbyAqY29yZV9pbmZvLFxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X21vZGVtX29wcy5jLTUyNy1cdHdoaWxlICgha3RocmVhZF9zaG91bGRfc3RvcCgpKSB7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9tb2RlbV9vcHMuYzo1Mjg6XHRcdGJvb2wgZXZlbnRfcmVjZWl2ZWQgPSBmYWxzZTtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X21vZGVtX29wcy5jLTUyOS1cbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9tb2RlbV9vcHMuYy01MzgtXHRcdFx0XHRsaXN0X2RlbChcdTAwMjZldmVudC1cdTAwM2VlbnRyeSk7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9tb2RlbV9vcHMuYzo1Mzk6XHRcdFx0XHRldmVudF9yZWNlaXZlZCA9IHRydWU7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9tb2RlbV9vcHMuYy01NDAtXHRcdFx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9tb2RlbV9vcHMuYy01NDQtXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9tb2RlbV9vcHMuYzo1NDU6XHRcdGlmIChldmVudF9yZWNlaXZlZClcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X21vZGVtX29wcy5jLTU0Ni1cdFx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9zdGF0ZV9tb25pdG9yLmM9MTUzPXN0YXRpYyB2b2lkIGZzbV93YWl0X2Zvcl9ldmVudChzdHJ1Y3QgdDd4eF9mc21fY3RsICpjdGwsIGVudW0gdDd4eF9mc21fZXZlbnRfc3RhdGUgZXZlbnRfZXhwZWN0ZWQsXG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfc3RhdGVfbW9uaXRvci5jLTE1Ni1cdHN0cnVjdCB0N3h4X2ZzbV9ldmVudCAqZXZlbnQ7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9zdGF0ZV9tb25pdG9yLmM6MTU3Olx0Ym9vbCBldmVudF9yZWNlaXZlZCA9IGZhbHNlO1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfc3RhdGVfbW9uaXRvci5jLTE1OC1cdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfc3RhdGVfbW9uaXRvci5jLTE2MC1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3N0YXRlX21vbml0b3IuYzoxNjE6XHR3aGlsZSAoY250JiM0MzsmIzQzOyBcdTAwM2MgcmV0cmllcyBcdTAwMjZcdTAwMjYgIWV2ZW50X3JlY2VpdmVkKSB7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9zdGF0ZV9tb25pdG9yLmMtMTYyLVx0XHRib29sIHNsZWVwX3JlcXVpcmVkID0gdHJ1ZTtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9zdGF0ZV9tb25pdG9yLmMtMTY5LVx0XHRpZiAoZXZlbnQpIHtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3N0YXRlX21vbml0b3IuYzoxNzA6XHRcdFx0ZXZlbnRfcmVjZWl2ZWQgPSBldmVudC1cdTAwM2VldmVudF9pZCA9PSBldmVudF9leHBlY3RlZDtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3N0YXRlX21vbml0b3IuYzoxNzE6XHRcdFx0aWYgKGV2ZW50X3JlY2VpdmVkIHx8IGV2ZW50LVx1MDAzZWV2ZW50X2lkID09IGV2ZW50X2lnbm9yZSkge1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfc3RhdGVfbW9uaXRvci5jLTE3Mi1cdFx0XHRcdGZzbV9kZWxfa2ZfZXZlbnQoZXZlbnQpO1xuLS1cbmRyaXZlcnMvbmZjL21pY3JvcmVhZC9taWNyb3JlYWQuYz00Njg9c3RhdGljIHZvaWQgbWljcm9yZWFkX3RhcmdldF9kaXNjb3ZlcmVkKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldiwgdTggZ2F0ZSxcbi0tXG5kcml2ZXJzL25mYy9taWNyb3JlYWQvbWljcm9yZWFkLmMtNTQ2LVxuZHJpdmVycy9uZmMvbWljcm9yZWFkL21pY3JvcmVhZC5jOjU0NzpzdGF0aWMgaW50IG1pY3JvcmVhZF9ldmVudF9yZWNlaXZlZChzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYsIHU4IHBpcGUsXG5kcml2ZXJzL25mYy9taWNyb3JlYWQvbWljcm9yZWFkLmMtNTQ4LVx0XHRcdFx0ICAgICB1OCBldmVudCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25mYy9taWNyb3JlYWQvbWljcm9yZWFkLmM9NjI3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZjX2hjaV9vcHMgbWljcm9yZWFkX2hjaV9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZmMvbWljcm9yZWFkL21pY3JvcmVhZC5jLTYzOS1cdC5jaGVja19wcmVzZW5jZSA9IE5VTEwsXG5kcml2ZXJzL25mYy9taWNyb3JlYWQvbWljcm9yZWFkLmM6NjQwOlx0LmV2ZW50X3JlY2VpdmVkID0gbWljcm9yZWFkX2V2ZW50X3JlY2VpdmVkLFxuZHJpdmVycy9uZmMvbWljcm9yZWFkL21pY3JvcmVhZC5jLTY0MS19O1xuLS1cbmRyaXZlcnMvbmZjL3BuNTQ0L3BuNTQ0LmM9NjgxPXN0YXRpYyBpbnQgcG41NDRfaGNpX2NoZWNrX3ByZXNlbmNlKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldixcbi0tXG5kcml2ZXJzL25mYy9wbjU0NC9wbjU0NC5jLTcxNC0gKi9cbmRyaXZlcnMvbmZjL3BuNTQ0L3BuNTQ0LmM6NzE1OnN0YXRpYyBpbnQgcG41NDRfaGNpX2V2ZW50X3JlY2VpdmVkKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldiwgdTggcGlwZSwgdTggZXZlbnQsXG5kcml2ZXJzL25mYy9wbjU0NC9wbjU0NC5jLTcxNi1cdFx0XHRcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmZjL3BuNTQ0L3BuNTQ0LmM9ODgzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZjX2hjaV9vcHMgcG41NDRfaGNpX29wcyA9IHtcbi0tXG5kcml2ZXJzL25mYy9wbjU0NC9wbjU0NC5jLTg5NS1cdC5jaGVja19wcmVzZW5jZSA9IHBuNTQ0X2hjaV9jaGVja19wcmVzZW5jZSxcbmRyaXZlcnMvbmZjL3BuNTQ0L3BuNTQ0LmM6ODk2Olx0LmV2ZW50X3JlY2VpdmVkID0gcG41NDRfaGNpX2V2ZW50X3JlY2VpdmVkLFxuZHJpdmVycy9uZmMvcG41NDQvcG41NDQuYy04OTctXHQuZndfZG93bmxvYWQgPSBwbjU0NF9oY2lfZndfZG93bmxvYWQsXG4tLVxuZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYz05NT1zdGF0aWMgY29uc3Qgc3RydWN0IG5jaV9vcHMgc3RfbmNpX29wcyA9IHtcbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jLTEwNS1cdC5oY2lfbG9hZF9zZXNzaW9uID0gc3RfbmNpX2hjaV9sb2FkX3Nlc3Npb24sXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jOjEwNjpcdC5oY2lfZXZlbnRfcmVjZWl2ZWQgPSBzdF9uY2lfaGNpX2V2ZW50X3JlY2VpdmVkLFxuZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYy0xMDctXHQuaGNpX2NtZF9yZWNlaXZlZCA9IHN0X25jaV9oY2lfY21kX3JlY2VpdmVkLFxuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jPTI0OT1FWFBPUlRfU1lNQk9MX0dQTChzdF9uY2lfaGNpX2xvYWRfc2Vzc2lvbik7XG5kcml2ZXJzL25mYy9zdC1uY2kvc2UuYy0yNTAtXG5kcml2ZXJzL25mYy9zdC1uY2kvc2UuYzoyNTE6c3RhdGljIHZvaWQgc3RfbmNpX2hjaV9hZG1pbl9ldmVudF9yZWNlaXZlZChzdHJ1Y3QgbmNpX2RldiAqbmRldixcbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jLTI1Mi1cdFx0XHRcdFx0ICAgICAgdTggZXZlbnQsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmMtMjc0LVxuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmM6Mjc1OnN0YXRpYyBpbnQgc3RfbmNpX2hjaV9hcGR1X3JlYWRlcl9ldmVudF9yZWNlaXZlZChzdHJ1Y3QgbmNpX2RldiAqbmRldixcbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jLTI3Ni1cdFx0XHRcdFx0XHQgICB1OCBldmVudCxcbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvc2UuYy0zMDctICovXG5kcml2ZXJzL25mYy9zdC1uY2kvc2UuYzozMDg6c3RhdGljIGludCBzdF9uY2lfaGNpX2Nvbm5lY3Rpdml0eV9ldmVudF9yZWNlaXZlZChzdHJ1Y3QgbmNpX2RldiAqbmRldixcbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jLTMwOS1cdFx0XHRcdFx0XHR1OCBob3N0LCB1OCBldmVudCxcbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvc2UuYy0zODEtXG5kcml2ZXJzL25mYy9zdC1uY2kvc2UuYzozODI6dm9pZCBzdF9uY2lfaGNpX2V2ZW50X3JlY2VpdmVkKHN0cnVjdCBuY2lfZGV2ICpuZGV2LCB1OCBwaXBlLFxuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmMtMzgzLVx0XHRcdFx0IHU4IGV2ZW50LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jLTM4OS1cdGNhc2UgTkNJX0hDSV9BRE1JTl9HQVRFOlxuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmM6MzkwOlx0XHRzdF9uY2lfaGNpX2FkbWluX2V2ZW50X3JlY2VpdmVkKG5kZXYsIGV2ZW50LCBza2IpO1xuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmMtMzkxLVx0YnJlYWs7XG5kcml2ZXJzL25mYy9zdC1uY2kvc2UuYy0zOTItXHRjYXNlIFNUX05DSV9BUERVX1JFQURFUl9HQVRFOlxuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmM6MzkzOlx0XHRzdF9uY2lfaGNpX2FwZHVfcmVhZGVyX2V2ZW50X3JlY2VpdmVkKG5kZXYsIGV2ZW50LCBza2IpO1xuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmMtMzk0LVx0YnJlYWs7XG5kcml2ZXJzL25mYy9zdC1uY2kvc2UuYy0zOTUtXHRjYXNlIFNUX05DSV9DT05ORUNUSVZJVFlfR0FURTpcbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jOjM5NjpcdFx0c3RfbmNpX2hjaV9jb25uZWN0aXZpdHlfZXZlbnRfcmVjZWl2ZWQobmRldiwgaG9zdCwgZXZlbnQsIHNrYik7XG5kcml2ZXJzL25mYy9zdC1uY2kvc2UuYy0zOTctXHRicmVhaztcbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvc2UuYy0zOTktfVxuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmM6NDAwOkVYUE9SVF9TWU1CT0xfR1BMKHN0X25jaV9oY2lfZXZlbnRfcmVjZWl2ZWQpO1xuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmMtNDAxLVxuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9zdC1uY2kuaD0xMzQ9aW50IHN0X25jaV9oY2lfbG9hZF9zZXNzaW9uKHN0cnVjdCBuY2lfZGV2ICpuZGV2KTtcbmRyaXZlcnMvbmZjL3N0LW5jaS9zdC1uY2kuaDoxMzU6dm9pZCBzdF9uY2lfaGNpX2V2ZW50X3JlY2VpdmVkKHN0cnVjdCBuY2lfZGV2ICpuZGV2LCB1OCBwaXBlLFxuZHJpdmVycy9uZmMvc3QtbmNpL3N0LW5jaS5oLTEzNi1cdFx0XHRcdFx0dTggZXZlbnQsIHN0cnVjdCBza19idWZmICpza2IpO1xuLS1cbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2NvcmUuYz04MzI9c3RhdGljIHZvaWQgc3QyMW5mY2FfaGNpX2NtZF9yZWNlaXZlZChzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYsIHU4IHBpcGUsIHU4IGNtZCxcbi0tXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9jb3JlLmMtODU1LVxuZHJpdmVycy9uZmMvc3QyMW5mY2EvY29yZS5jOjg1NjpzdGF0aWMgaW50IHN0MjFuZmNhX2FkbWluX2V2ZW50X3JlY2VpdmVkKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldiwgdTggZXZlbnQsXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9jb3JlLmMtODU3LVx0XHRcdFx0XHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2NvcmUuYy04ODgtICovXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9jb3JlLmM6ODg5OnN0YXRpYyBpbnQgc3QyMW5mY2FfaGNpX2V2ZW50X3JlY2VpdmVkKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldiwgdTggcGlwZSxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2NvcmUuYy04OTAtXHRcdFx0XHQgICAgICAgdTggZXZlbnQsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZmMvc3QyMW5mY2EvY29yZS5jLTg5OC1cdGNhc2UgTkZDX0hDSV9BRE1JTl9HQVRFOlxuZHJpdmVycy9uZmMvc3QyMW5mY2EvY29yZS5jOjg5OTpcdFx0cmV0dXJuIHN0MjFuZmNhX2FkbWluX2V2ZW50X3JlY2VpdmVkKGhkZXYsIGV2ZW50LCBza2IpO1xuZHJpdmVycy9uZmMvc3QyMW5mY2EvY29yZS5jLTkwMC1cdGNhc2UgU1QyMU5GQ0FfUkZfQ0FSRF9GX0dBVEU6XG5kcml2ZXJzL25mYy9zdDIxbmZjYS9jb3JlLmM6OTAxOlx0XHRyZXR1cm4gc3QyMW5mY2FfZGVwX2V2ZW50X3JlY2VpdmVkKGhkZXYsIGV2ZW50LCBza2IpO1xuZHJpdmVycy9uZmMvc3QyMW5mY2EvY29yZS5jLTkwMi1cdGNhc2UgU1QyMU5GQ0FfQ09OTkVDVElWSVRZX0dBVEU6XG5kcml2ZXJzL25mYy9zdDIxbmZjYS9jb3JlLmM6OTAzOlx0XHRyZXR1cm4gc3QyMW5mY2FfY29ubmVjdGl2aXR5X2V2ZW50X3JlY2VpdmVkKGhkZXYsIGhvc3QsXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9jb3JlLmMtOTA0LVx0XHRcdFx0XHRcdFx0ZXZlbnQsIHNrYik7XG5kcml2ZXJzL25mYy9zdDIxbmZjYS9jb3JlLmMtOTA1LVx0Y2FzZSBTVDIxTkZDQV9BUERVX1JFQURFUl9HQVRFOlxuZHJpdmVycy9uZmMvc3QyMW5mY2EvY29yZS5jOjkwNjpcdFx0cmV0dXJuIHN0MjFuZmNhX2FwZHVfcmVhZGVyX2V2ZW50X3JlY2VpdmVkKGhkZXYsIGV2ZW50LCBza2IpO1xuZHJpdmVycy9uZmMvc3QyMW5mY2EvY29yZS5jLTkwNy1cdGNhc2UgTkZDX0hDSV9MT09QQkFDS19HQVRFOlxuZHJpdmVycy9uZmMvc3QyMW5mY2EvY29yZS5jOjkwODpcdFx0cmV0dXJuIHN0MjFuZmNhX2hjaV9sb29wYmFja19ldmVudF9yZWNlaXZlZChoZGV2LCBldmVudCwgc2tiKTtcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2NvcmUuYy05MDktXHRkZWZhdWx0OlxuLS1cbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2NvcmUuYz05MTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBuZmNfaGNpX29wcyBzdDIxbmZjYV9oY2lfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2NvcmUuYy05MjgtXHQuY2hlY2tfcHJlc2VuY2UgPSBzdDIxbmZjYV9oY2lfY2hlY2tfcHJlc2VuY2UsXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9jb3JlLmM6OTI5Olx0LmV2ZW50X3JlY2VpdmVkID0gc3QyMW5mY2FfaGNpX2V2ZW50X3JlY2VpdmVkLFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvY29yZS5jLTkzMC1cdC5jbWRfcmVjZWl2ZWQgPSBzdDIxbmZjYV9oY2lfY21kX3JlY2VpdmVkLFxuLS1cbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jPTM0Nj1zdGF0aWMgaW50IHN0MjFuZmNhX3RtX2V2ZW50X3NlbmRfZGF0YShzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYsXG4tLVxuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmMtMzgwLSAqL1xuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmM6MzgxOmludCBzdDIxbmZjYV9kZXBfZXZlbnRfcmVjZWl2ZWQoc3RydWN0IG5mY19oY2lfZGV2ICpoZGV2LFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmMtMzgyLVx0XHRcdFx0dTggZXZlbnQsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmMtNDEwLX1cbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jOjQxMTpFWFBPUlRfU1lNQk9MKHN0MjFuZmNhX2RlcF9ldmVudF9yZWNlaXZlZCk7XG5kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYy00MTItXG4tLVxuZHJpdmVycy9uZmMvc3QyMW5mY2Evc2UuYz0yODk9c3RhdGljIHZvaWQgc3QyMW5mY2Ffc2VfYWN0aXZhdGlvbl90aW1lb3V0KHN0cnVjdCB0aW1lcl9saXN0ICp0KVxuLS1cbmRyaXZlcnMvbmZjL3N0MjFuZmNhL3NlLmMtMzAzLSAqL1xuZHJpdmVycy9uZmMvc3QyMW5mY2Evc2UuYzozMDQ6aW50IHN0MjFuZmNhX2Nvbm5lY3Rpdml0eV9ldmVudF9yZWNlaXZlZChzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYsIHU4IGhvc3QsXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9zZS5jLTMwNS1cdFx0XHRcdHU4IGV2ZW50LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmZjL3N0MjFuZmNhL3NlLmMtMzcxLX1cbmRyaXZlcnMvbmZjL3N0MjFuZmNhL3NlLmM6MzcyOkVYUE9SVF9TWU1CT0woc3QyMW5mY2FfY29ubmVjdGl2aXR5X2V2ZW50X3JlY2VpdmVkKTtcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL3NlLmMtMzczLVxuZHJpdmVycy9uZmMvc3QyMW5mY2Evc2UuYzozNzQ6aW50IHN0MjFuZmNhX2FwZHVfcmVhZGVyX2V2ZW50X3JlY2VpdmVkKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldixcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL3NlLmMtMzc1LVx0XHRcdFx0XHR1OCBldmVudCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9zZS5jLTQwNy19XG5kcml2ZXJzL25mYy9zdDIxbmZjYS9zZS5jOjQwODpFWFBPUlRfU1lNQk9MKHN0MjFuZmNhX2FwZHVfcmVhZGVyX2V2ZW50X3JlY2VpdmVkKTtcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL3NlLmMtNDA5LVxuLS1cbmRyaXZlcnMvbmZjL3N0MjFuZmNhL3N0MjFuZmNhLmg9MTcxPXZvaWQgc3QyMW5mY2FfaGNpX3JlbW92ZShzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYpO1xuZHJpdmVycy9uZmMvc3QyMW5mY2Evc3QyMW5mY2EuaC0xNzItXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9zdDIxbmZjYS5oOjE3MzppbnQgc3QyMW5mY2FfZGVwX2V2ZW50X3JlY2VpdmVkKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldixcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL3N0MjFuZmNhLmgtMTc0LVx0XHRcdFx0dTggZXZlbnQsIHN0cnVjdCBza19idWZmICpza2IpO1xuLS1cbmRyaXZlcnMvbmZjL3N0MjFuZmNhL3N0MjFuZmNhLmg9MTgwPXZvaWQgc3QyMW5mY2FfZGVwX2RlaW5pdChzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYpO1xuZHJpdmVycy9uZmMvc3QyMW5mY2Evc3QyMW5mY2EuaC0xODEtXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9zdDIxbmZjYS5oOjE4MjppbnQgc3QyMW5mY2FfY29ubmVjdGl2aXR5X2V2ZW50X3JlY2VpdmVkKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldiwgdTggaG9zdCxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL3N0MjFuZmNhLmgtMTgzLVx0XHRcdFx0XHR1OCBldmVudCwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG5kcml2ZXJzL25mYy9zdDIxbmZjYS9zdDIxbmZjYS5oOjE4NDppbnQgc3QyMW5mY2FfYXBkdV9yZWFkZXJfZXZlbnRfcmVjZWl2ZWQoc3RydWN0IG5mY19oY2lfZGV2ICpoZGV2LFxuZHJpdmVycy9uZmMvc3QyMW5mY2Evc3QyMW5mY2EuaC0xODUtXHRcdFx0XHRcdHU4IGV2ZW50LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbi0tXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9zdDIxbmZjYS5oPTE5NT12b2lkIHN0MjFuZmNhX3NlX2RlaW5pdChzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYpO1xuZHJpdmVycy9uZmMvc3QyMW5mY2Evc3QyMW5mY2EuaC0xOTYtXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9zdDIxbmZjYS5oOjE5NzppbnQgc3QyMW5mY2FfaGNpX2xvb3BiYWNrX2V2ZW50X3JlY2VpdmVkKHN0cnVjdCBuZmNfaGNpX2RldiAqbmRldiwgdTggZXZlbnQsXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9zdDIxbmZjYS5oLTE5OC1cdFx0XHRcdFx0IHN0cnVjdCBza19idWZmICpza2IpO1xuLS1cbmRyaXZlcnMvbmZjL3N0MjFuZmNhL3ZlbmRvcl9jbWRzLmM9MjE5PXN0YXRpYyBpbnQgc3QyMW5mY2FfaGNpX2RtX2ZpZWxkX2dlbmVyYXRvcihzdHJ1Y3QgbmZjX2RldiAqZGV2LCB2b2lkICpkYXRhLFxuLS1cbmRyaXZlcnMvbmZjL3N0MjFuZmNhL3ZlbmRvcl9jbWRzLmMtMjI5LVxuZHJpdmVycy9uZmMvc3QyMW5mY2EvdmVuZG9yX2NtZHMuYzoyMzA6aW50IHN0MjFuZmNhX2hjaV9sb29wYmFja19ldmVudF9yZWNlaXZlZChzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYsIHU4IGV2ZW50LFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvdmVuZG9yX2NtZHMuYy0yMzEtXHRcdFx0XHRcdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmZjL3N0MjFuZmNhL3ZlbmRvcl9jbWRzLmMtMjQ0LX1cbmRyaXZlcnMvbmZjL3N0MjFuZmNhL3ZlbmRvcl9jbWRzLmM6MjQ1OkVYUE9SVF9TWU1CT0woc3QyMW5mY2FfaGNpX2xvb3BiYWNrX2V2ZW50X3JlY2VpdmVkKTtcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL3ZlbmRvcl9jbWRzLmMtMjQ2LVxuLS1cbmRyaXZlcnMvcGxhdGZvcm0vc3VyZmFjZS9hZ2dyZWdhdG9yL3NzaF9yZXF1ZXN0X2xheWVyLmM9ODk4PXN0YXRpYyB2b2lkIHNzaF9ydGxfcnhfZXZlbnQoc3RydWN0IHNzaF9ydGwgKnJ0bCwgY29uc3Qgc3RydWN0IHNzaF9jb21tYW5kICpjbWQsXG4tLVxuZHJpdmVycy9wbGF0Zm9ybS9zdXJmYWNlL2FnZ3JlZ2F0b3Ivc3NoX3JlcXVlc3RfbGF5ZXIuYy05MDAte1xuZHJpdmVycy9wbGF0Zm9ybS9zdXJmYWNlL2FnZ3JlZ2F0b3Ivc3NoX3JlcXVlc3RfbGF5ZXIuYzo5MDE6XHR0cmFjZV9zc2FtX3J4X2V2ZW50X3JlY2VpdmVkKGNtZCwgZGF0YS1cdTAwM2VsZW4pO1xuZHJpdmVycy9wbGF0Zm9ybS9zdXJmYWNlL2FnZ3JlZ2F0b3Ivc3NoX3JlcXVlc3RfbGF5ZXIuYy05MDItXG4tLVxuZHJpdmVycy9wbGF0Zm9ybS9zdXJmYWNlL2FnZ3JlZ2F0b3IvdHJhY2UuaD02NjI9REVGSU5FX1NTQU1fQ09NTUFORF9FVkVOVChyeF9yZXNwb25zZV9yZWNlaXZlZCk7XG5kcml2ZXJzL3BsYXRmb3JtL3N1cmZhY2UvYWdncmVnYXRvci90cmFjZS5oOjY2MzpERUZJTkVfU1NBTV9DT01NQU5EX0VWRU5UKHJ4X2V2ZW50X3JlY2VpdmVkKTtcbmRyaXZlcnMvcGxhdGZvcm0vc3VyZmFjZS9hZ2dyZWdhdG9yL3RyYWNlLmgtNjY0LVxuLS1cbmluY2x1ZGUvbmV0L25mYy9oY2kuaD0xNT1zdHJ1Y3QgbmZjX2hjaV9vcHMge1xuLS1cbmluY2x1ZGUvbmV0L25mYy9oY2kuaC00MS1cdFx0XHQgICAgICBzdHJ1Y3QgbmZjX3RhcmdldCAqdGFyZ2V0KTtcbmluY2x1ZGUvbmV0L25mYy9oY2kuaDo0MjpcdGludCAoKmV2ZW50X3JlY2VpdmVkKShzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYsIHU4IHBpcGUsIHU4IGV2ZW50LFxuaW5jbHVkZS9uZXQvbmZjL2hjaS5oLTQzLVx0XHRcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IpO1xuLS1cbmluY2x1ZGUvbmV0L25mYy9oY2kuaD0yNTA9dm9pZCBuZmNfaGNpX2NtZF9yZWNlaXZlZChzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYsIHU4IHBpcGUsIHU4IGNtZCxcbmluY2x1ZGUvbmV0L25mYy9oY2kuaC0yNTEtXHRcdFx0ICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbmluY2x1ZGUvbmV0L25mYy9oY2kuaDoyNTI6dm9pZCBuZmNfaGNpX2V2ZW50X3JlY2VpdmVkKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldiwgdTggcGlwZSwgdTggZXZlbnQsXG5pbmNsdWRlL25ldC9uZmMvaGNpLmgtMjUzLVx0XHRcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbi0tXG5pbmNsdWRlL25ldC9uZmMvbmNpX2NvcmUuaD02NT1zdHJ1Y3QgbmNpX29wcyB7XG4tLVxuaW5jbHVkZS9uZXQvbmZjL25jaV9jb3JlLmgtODAtXHRpbnQgICAoKmhjaV9sb2FkX3Nlc3Npb24pKHN0cnVjdCBuY2lfZGV2ICpuZGV2KTtcbmluY2x1ZGUvbmV0L25mYy9uY2lfY29yZS5oOjgxOlx0dm9pZCAgKCpoY2lfZXZlbnRfcmVjZWl2ZWQpKHN0cnVjdCBuY2lfZGV2ICpuZGV2LCB1OCBwaXBlLCB1OCBldmVudCxcbmluY2x1ZGUvbmV0L25mYy9uY2lfY29yZS5oLTgyLVx0XHRcdFx0ICAgIHN0cnVjdCBza19idWZmICpza2IpO1xuLS1cbm5ldC9uZmMvaGNpL2NvcmUuYz0zNzk9RVhQT1JUX1NZTUJPTChuZmNfaGNpX3RhcmdldF9kaXNjb3ZlcmVkKTtcbm5ldC9uZmMvaGNpL2NvcmUuYy0zODAtXG5uZXQvbmZjL2hjaS9jb3JlLmM6MzgxOnZvaWQgbmZjX2hjaV9ldmVudF9yZWNlaXZlZChzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYsIHU4IHBpcGUsIHU4IGV2ZW50LFxubmV0L25mYy9oY2kvY29yZS5jLTM4Mi1cdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvbmZjL2hjaS9jb3JlLmMtMzk3LVxubmV0L25mYy9oY2kvY29yZS5jOjM5ODpcdGlmIChoZGV2LVx1MDAzZW9wcy1cdTAwM2VldmVudF9yZWNlaXZlZCkge1xubmV0L25mYy9oY2kvY29yZS5jOjM5OTpcdFx0ciA9IGhkZXYtXHUwMDNlb3BzLVx1MDAzZWV2ZW50X3JlY2VpdmVkKGhkZXYsIHBpcGUsIGV2ZW50LCBza2IpO1xubmV0L25mYy9oY2kvY29yZS5jLTQwMC1cdFx0aWYgKHIgXHUwMDNjPSAwKVxuLS1cbm5ldC9uZmMvaGNpL2hjcC5jPTExNz12b2lkIG5mY19oY2lfaGNwX21lc3NhZ2Vfcngoc3RydWN0IG5mY19oY2lfZGV2ICpoZGV2LCB1OCBwaXBlLCB1OCB0eXBlLFxuLS1cbm5ldC9uZmMvaGNpL2hjcC5jLTEyNy1cdGNhc2UgTkZDX0hDSV9IQ1BfRVZFTlQ6XG5uZXQvbmZjL2hjaS9oY3AuYzoxMjg6XHRcdG5mY19oY2lfZXZlbnRfcmVjZWl2ZWQoaGRldiwgcGlwZSwgaW5zdHJ1Y3Rpb24sIHNrYik7XG5uZXQvbmZjL2hjaS9oY3AuYy0xMjktXHRcdGJyZWFrO1xuLS1cbm5ldC9uZmMvbmNpL2hjaS5jPTI3Mj1FWFBPUlRfU1lNQk9MKG5jaV9oY2lfY2xlYXJfYWxsX3BpcGVzKTtcbm5ldC9uZmMvbmNpL2hjaS5jLTI3My1cbm5ldC9uZmMvbmNpL2hjaS5jOjI3NDpzdGF0aWMgdm9pZCBuY2lfaGNpX2V2ZW50X3JlY2VpdmVkKHN0cnVjdCBuY2lfZGV2ICpuZGV2LCB1OCBwaXBlLFxubmV0L25mYy9uY2kvaGNpLmMtMjc1LVx0XHRcdFx0ICAgdTggZXZlbnQsIHN0cnVjdCBza19idWZmICpza2IpXG5uZXQvbmZjL25jaS9oY2kuYy0yNzYte1xubmV0L25mYy9uY2kvaGNpLmM6Mjc3Olx0aWYgKG5kZXYtXHUwMDNlb3BzLVx1MDAzZWhjaV9ldmVudF9yZWNlaXZlZClcbm5ldC9uZmMvbmNpL2hjaS5jOjI3ODpcdFx0bmRldi1cdTAwM2VvcHMtXHUwMDNlaGNpX2V2ZW50X3JlY2VpdmVkKG5kZXYsIHBpcGUsIGV2ZW50LCBza2IpO1xubmV0L25mYy9uY2kvaGNpLmMtMjc5LX1cbi0tXG5uZXQvbmZjL25jaS9oY2kuYz0zODI9c3RhdGljIHZvaWQgbmNpX2hjaV9oY3BfbWVzc2FnZV9yeChzdHJ1Y3QgbmNpX2RldiAqbmRldiwgdTggcGlwZSxcbi0tXG5uZXQvbmZjL25jaS9oY2kuYy0zOTItXHRjYXNlIE5DSV9IQ0lfSENQX0VWRU5UOlxubmV0L25mYy9uY2kvaGNpLmM6MzkzOlx0XHRuY2lfaGNpX2V2ZW50X3JlY2VpdmVkKG5kZXYsIHBpcGUsIGluc3RydWN0aW9uLCBza2IpO1xubmV0L25mYy9uY2kvaGNpLmMtMzk0LVx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTI6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ3OTAKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyB0aGUgVVNCIFJlY2VpdmUgUGF0aCoqCgpBbHJpZ2h0LCBzbyB0aGUgY2x1ZSBoZXJlIGlzIHRoYXQgYGV2ZW50X3JlY2VpdmVkYCBpcyBiZWluZyBmbGFnZ2VkIGluIGBtd2lmaWV4X3VzYl9yZWN2YC4gVGhhdCYjMzk7cyB0aGUgZW50cnkgcG9pbnQsIG9yIGF0IGxlYXN0IGEgY3JpdGljYWwgcGFydCwgZm9yIGhhbmRsaW5nIGluY29taW5nIGRhdGEgb3ZlciBVU0IuIE15IGZpcnN0IHRob3VnaHQgaXMsIGxldCYjMzk7cyB0cmFjZSB0aGlzIGJhY2sgYW5kIHNlZSBleGFjdGx5ICpob3cqIHRoYXQgYGV2ZW50X3JlY2VpdmVkYCBmbGFnIGlzIGJlaW5nIHNldCB3aXRoaW4gYG13aWZpZXhfdXNiX3JlY3ZgLiBJcyBpdCBjb25kaXRpb25hbD8gV2hhdCYjMzk7cyB0cmlnZ2VyaW5nIHRoZSBzZXR0aW5nIG9mIHRoaXMgZmxhZz8gS25vd2luZyB0aGUgZXhhY3QgY29uZGl0aW9ucyB3aWxsIGJlIGNyaXRpY2FsIHRvIHVuZGVyc3RhbmRpbmcgdGhlIHN0YXRlIG1hY2hpbmUgYW5kIHRoZSBvdmVyYWxsIGZsb3cuIE5lZWQgdG8gbG9vayBjbG9zZWx5IGF0IHRoYXQgZnVuY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDEyOjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O213aWZpZXhfdXNiX3JlY3YmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD01NT1lbnVtIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTEyMy0gKiBEbyBub3QgY2hlY2sgZm9yIGRhdGFfcmVjZWl2ZWQgZm9yIFVTQiwgYXMgZGF0YV9yZWNlaXZlZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxMjQ6ICogaXMgaGFuZGxlZCBpbiBtd2lmaWV4X3VzYl9yZWN2IGZvciBVU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTI1LSAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYz00MT1zdGF0aWMgaW50IG13aWZpZXhfdXNiX3N1Ym1pdF9yeF91cmIoc3RydWN0IHVyYl9jb250ZXh0ICpjdHgsIGludCBzaXplKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNDUtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NDY6c3RhdGljIGludCBtd2lmaWV4X3VzYl9yZWN2KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNDctXHRcdFx0ICAgIHN0cnVjdCBza19idWZmICpza2IsIHU4IGVwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYz0xNTI9c3RhdGljIHZvaWQgbXdpZmlleF91c2JfcnhfY29tcGxldGUoc3RydWN0IHVyYiAqdXJiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xODYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTg3Olx0XHRzdGF0dXMgPSBtd2lmaWV4X3VzYl9yZWN2KGFkYXB0ZXIsIHNrYiwgY29udGV4dC1cdTAwM2VlcCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTg4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xOTYtXHRcdFx0ICogdXJiIGZvciBjbWRfZXAgd2lsbCBiZSByZS1zdWJtaXR0ZWQgaW4gY2FsbGJhY2tcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxOTc6XHRcdFx0ICogbXdpZmlleF91c2JfcmVjdl9jb21wbGV0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE5OC1cdFx0XHQgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTI6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU1MDIKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAxNDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIFVTQiBXaS1GaSBEcml2ZXImIzM5O3MgRXZlbnQgSGFuZGxpbmcqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiB0cmFjaW5nIHRoZSBkYXRhIGZsb3cgZm9yIGluY29taW5nIFVTQiBwYWNrZXRzIGluIHRoaXMgTWFydmVsbCBXaS1GaSBkcml2ZXIsIGFuZCBpdCYjMzk7cyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBgbXdpZmlleF91c2JfcmVjdmAgaGFuZGxlcyB0aGUgaW5jb21pbmcgZGF0YSBhbmQgc2V0cyB0aGUgYGV2ZW50X3JlY2VpdmVkYCBmbGFnLiBGcm9tIHRoZXJlLCBgbXdpZmlleF9tYWluX3Byb2Nlc3NgIGtpY2tzIGluLCBjYWxsaW5nIGBtd2lmaWV4X3Byb2Nlc3NfZXZlbnRgLiBOb3csIGhlcmUmIzM5O3Mgd2hlcmUgaXQgZ2V0cyBpbnRlcmVzdGluZzogaWYgdGhlIGBwcml2LSZndDtic3Nfcm9sZWAgaXMgc2V0IHRvIGBNV0lGSUVYX0JTU19ST0xFX1VBUGAsIHRoZSBjb2RlIGJyYW5jaGVzIGludG8gYG13aWZpZXhfcHJvY2Vzc191YXBfZXZlbnRgLgoKVGhpcyBwYXRoIGlzICphYnNvbHV0ZWx5KiByZWFjaGFibGUgYW5kIHByZXNlbnRzIGEgY2xlYXIgZW50cnkgcG9pbnQgdmlhIFVTQiBnYWRnZXQgb3IgdmhjaS4gSXQmIzM5O3MgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIEkgbmVlZCB0byB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYG13aWZpZXhfcHJvY2Vzc191YXBfZXZlbnRgIGl0c2VsZiwgc28gSSYjMzk7bSBoZWFkaW5nIG92ZXIgdG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuY2AgdG8gc2VlIHdoYXQga2luZCBvZiBpbnB1dHMgYW5kIGRhdGEgc3RydWN0dXJlcyBpdCYjMzk7cyBkZWFsaW5nIHdpdGguIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBiZWhhdmlvciB0aG9yb3VnaGx5IGJlZm9yZSBkZXNpZ25pbmcgZWZmZWN0aXZlIGZ1enppbmcgY2FtcGFpZ25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxMjoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDkwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDkwOlx0ICogICAgICAtIEVWRU5UX1VBUF9CU1NfU1RBUlRcbiAgOTE6XHQgKiAgICAgIC0gRVZFTlRfVUFQX0JTU19JRExFXG4gIDkyOlx0ICogICAgICAtIEVWRU5UX1VBUF9NSUNfQ09VTlRFUk1FQVNVUkVTOlxuICA5MzpcdCAqL1xuICA5NDpcdGludCBtd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXG4gIDk1Olx0e1xuICA5NjpcdFx0c3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXHUwMDNlYWRhcHRlcjtcbiAgOTc6XHRcdGludCBsZW4sIGk7XG4gIDk4Olx0XHR1MzIgZXZlbnRjYXVzZSA9IGFkYXB0ZXItXHUwMDNlZXZlbnRfY2F1c2U7XG4gIDk5Olx0XHRzdHJ1Y3Qgc3RhdGlvbl9pbmZvICpzaW5mbztcbiAxMDA6XHRcdHN0cnVjdCBtd2lmaWV4X2Fzc29jX2V2ZW50ICpldmVudDtcbiAxMDE6XHRcdHN0cnVjdCBtd2lmaWV4X3N0YV9ub2RlICpub2RlO1xuIDEwMjpcdFx0dTggKmRlYXV0aF9tYWM7XG4gMTAzOlx0XHRzdHJ1Y3QgaG9zdF9jbWRfZHNfMTFuX2JhdGltZW91dCAqYmFfdGltZW91dDtcbiAxMDQ6XHRcdHUxNiBjdHJsO1xuIDEwNTpcdFxuIDEwNjpcdFx0c3dpdGNoIChldmVudGNhdXNlKSB7XG4gMTA3Olx0XHRjYXNlIEVWRU5UX1VBUF9TVEFfQVNTT0M6XG4gMTA4Olx0XHRcdHNpbmZvID0ga3phbGxvY19vYmooKnNpbmZvKTtcbiAxMDk6XHRcdFx0aWYgKCFzaW5mbylcbiAxMTA6XHRcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiAxMTE6XHRcbiAxMTI6XHRcdFx0ZXZlbnQgPSAoc3RydWN0IG13aWZpZXhfYXNzb2NfZXZlbnQgKilcbiAxMTM6XHRcdFx0XHQoYWRhcHRlci1cdTAwM2VldmVudF9ib2R5ICYjNDM7IE1XSUZJRVhfVUFQX0VWRU5UX0VYVFJBX0hFQURFUik7XG4gMTE0Olx0XHRcdGlmIChsZTE2X3RvX2NwdShldmVudC1cdTAwM2V0eXBlKSA9PSBUTFZfVFlQRV9VQVBfTUdNVF9GUkFNRSkge1xuIDExNTpcdFx0XHRcdGxlbiA9IC0xO1xuIDExNjpcdFxuIDExNzpcdFx0XHRcdGlmIChpZWVlODAyMTFfaXNfYXNzb2NfcmVxKGV2ZW50LVx1MDAzZWZyYW1lX2NvbnRyb2wpKVxuIDExODpcdFx0XHRcdFx0bGVuID0gMDtcbiAxMTk6XHRcdFx0XHRlbHNlIGlmIChpZWVlODAyMTFfaXNfcmVhc3NvY19yZXEoZXZlbnQtXHUwMDNlZnJhbWVfY29udHJvbCkpXG4gMTIwOlx0XHRcdFx0XHQvKiBUaGVyZSB3aWxsIGJlIEVUSF9BTEVOIGJ5dGVzIG9mXG4gMTIxOlx0XHRcdFx0XHQgKiBjdXJyZW50X2FwX2FkZHIgYmVmb3JlIHRoZSByZS1hc3NvYyBpZXMuXG4gMTIyOlx0XHRcdFx0XHQgKi9cbiAxMjM6XHRcdFx0XHRcdGxlbiA9IEVUSF9BTEVOO1xuIDEyNDpcdFxuIDEyNTpcdFx0XHRcdGlmIChsZW4gIT0gLTEpIHtcbiAxMjY6XHRcdFx0XHRcdHNpbmZvLVx1MDAzZWFzc29jX3JlcV9pZXMgPSBcdTAwMjZldmVudC1cdTAwM2VkYXRhW2xlbl07XG4gMTI3Olx0XHRcdFx0XHRsZW4gPSAodTggKilzaW5mby1cdTAwM2Vhc3NvY19yZXFfaWVzIC1cbiAxMjg6XHRcdFx0XHRcdCAgICAgICh1OCAqKVx1MDAyNmV2ZW50LVx1MDAzZWZyYW1lX2NvbnRyb2w7XG4gMTI5Olx0XG4gMTMwOlx0XHRcdFx0XHQvKlxuIDEzMTpcdFx0XHRcdFx0ICogZXZlbnQtXHUwMDNlbGVuIGlzIHJlcG9ydGVkIGJ5IHRoZSBkZXZpY2UgZmlybXdhcmUgYW5kIGlzIG5vdFxuIDEzMjpcdFx0XHRcdFx0ICogb3RoZXJ3aXNlIHZhbGlkYXRlZC4gIFJlamVjdCBhIGxlbmd0aCB0aGF0IHVuZGVyZmxvd3MgdGhlXG4gMTMzOlx0XHRcdFx0XHQgKiBoZWFkZXIsIG9yIHRoYXQgd291bGQgcGxhY2UgdGhlIGFzc29jaWF0aW9uIHJlcXVlc3QgSUVzXG4gMTM0Olx0XHRcdFx0XHQgKiBvdXRzaWRlIHRoZSBmaXhlZC1zaXplIGV2ZW50X2JvZHlbXSBidWZmZXIgdGhlIGV2ZW50IHdhc1xuIDEzNTpcdFx0XHRcdFx0ICogY29waWVkIGludG87IG90aGVyd2lzZSB0aGUgSUUgd2FsayBpblxuIDEzNjpcdFx0XHRcdFx0ICogbXdpZmlleF9zZXRfc3RhX2h0X2NhcCgpIHJlYWRzIHBhc3QgZXZlbnRfYm9keSBhbmQgb3V0XG4gMTM3Olx0XHRcdFx0XHQgKiBvZiB0aGUgYWRhcHRlciBzbGFiIG9iamVjdC5cbiAxMzg6XHRcdFx0XHRcdCAqL1xuIDEzOTpcdFx0XHRcdFx0aWYgKGxlMTZfdG9fY3B1KGV2ZW50LVx1MDAzZWxlbikgXHUwMDNjIGxlbiB8fFxuIDE0MDpcdFx0XHRcdFx0ICAgICh1OCAqKVx1MDAyNmV2ZW50LVx1MDAzZWZyYW1lX2NvbnRyb2wgJiM0MzsgbGUxNl90b19jcHUoZXZlbnQtXHUwMDNlbGVuKSBcdTAwM2VcbiAxNDE6XHRcdFx0XHRcdCAgICBhZGFwdGVyLVx1MDAzZWV2ZW50X2JvZHkgJiM0MzsgTUFYX0VWRU5UX1NJWkUpIHtcbiAxNDI6XHRcdFx0XHRcdFx0bXdpZmlleF9kYmcoYWRhcHRlciwgRVJST1IsXG4gMTQzOlx0XHRcdFx0XHRcdFx0ICAgIFwmIzM0O2ludmFsaWQgU1RBIGFzc29jIGV2ZW50IGxlbmd0aFxcblwmIzM0Oyk7XG4gMTQ0Olx0XHRcdFx0XHRcdGtmcmVlKHNpbmZvKTtcbiAxNDU6XHRcdFx0XHRcdFx0cmV0dXJuIC0xO1xuIDE0NjpcdFx0XHRcdFx0fVxuIDE0NzpcdFx0XHRcdFx0c2luZm8tXHUwMDNlYXNzb2NfcmVxX2llc19sZW4gPVxuIDE0ODpcdFx0XHRcdFx0XHRsZTE2X3RvX2NwdShldmVudC1cdTAwM2VsZW4pIC0gKHUxNilsZW47XG4gMTQ5Olx0XHRcdFx0fVxuIDE1MDpcdFx0XHR9XG4gMTUxOlx0XHRcdGNmZzgwMjExX25ld19zdGEocHJpdi1cdTAwM2VuZXRkZXYtXHUwMDNlaWVlZTgwMjExX3B0ciwgZXZlbnQtXHUwMDNlc3RhX2FkZHIsXG4gMTUyOlx0XHRcdFx0XHQgc2luZm8sIEdGUF9LRVJORUwpO1xuIDE1MzpcdFxuIDE1NDpcdFx0XHRub2RlID0gbXdpZmlleF9hZGRfc3RhX2VudHJ5KHByaXYsIGV2ZW50LVx1MDAzZXN0YV9hZGRyKTtcbiAxNTU6XHRcdFx0aWYgKCFub2RlKSB7XG4gMTU2Olx0XHRcdFx0bXdpZmlleF9kYmcoYWRhcHRlciwgRVJST1IsXG4gMTU3Olx0XHRcdFx0XHQgICAgXCYjMzQ7Y291bGQgbm90IGNyZWF0ZSBzdGF0aW9uIGVudHJ5IVxcblwmIzM0Oyk7XG4gMTU4Olx0XHRcdFx0a2ZyZWUoc2luZm8pO1xuIDE1OTpcdFx0XHRcdHJldHVybiAtMTtcbiAxNjA6XHRcdFx0fVxuIDE2MTpcdFxuIDE2MjpcdFx0XHRpZiAoIXByaXYtXHUwMDNlYXBfMTFuX2VuYWJsZWQpIHtcbiAxNjM6XHRcdFx0XHRrZnJlZShzaW5mbyk7XG4gMTY0Olx0XHRcdFx0YnJlYWs7XG4gMTY1Olx0XHRcdH1cbiAxNjY6XHRcbiAxNjc6XHRcdFx0bXdpZmlleF9zZXRfc3RhX2h0X2NhcChwcml2LCBzaW5mby1cdTAwM2Vhc3NvY19yZXFfaWVzLFxuIDE2ODpcdFx0XHRcdFx0ICAgICAgIHNpbmZvLVx1MDAzZWFzc29jX3JlcV9pZXNfbGVuLCBub2RlKTtcbiAxNjk6XHRcbiAxNzA6XHRcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgTUFYX05VTV9USUQ7IGkmIzQzOyYjNDM7KSB7XG4gMTcxOlx0XHRcdFx0aWYgKG5vZGUtXHUwMDNlaXNfMTFuX2VuYWJsZWQpXG4gMTcyOlx0XHRcdFx0XHRub2RlLVx1MDAzZWFtcGR1X3N0YVtpXSA9XG4gMTczOlx0XHRcdFx0XHRcdCAgICAgIHByaXYtXHUwMDNlYWdncl9wcmlvX3RibFtpXS5hbXBkdV91c2VyO1xuIDE3NDpcdFx0XHRcdGVsc2VcbiAxNzU6XHRcdFx0XHRcdG5vZGUtXHUwMDNlYW1wZHVfc3RhW2ldID0gQkFfU1RSRUFNX05PVF9BTExPV0VEO1xuIDE3NjpcdFx0XHR9XG4gMTc3Olx0XHRcdG1lbXNldChub2RlLVx1MDAzZXJ4X3NlcSwgMHhmZiwgc2l6ZW9mKG5vZGUtXHUwMDNlcnhfc2VxKSk7XG4gMTc4Olx0XHRcdGtmcmVlKHNpbmZvKTtcbiAxNzk6XHRcdFx0YnJlYWs7XG4gMTgwOlx0XHRjYXNlIEVWRU5UX1VBUF9TVEFfREVBVVRIOlxuIDE4MTpcdFx0XHRkZWF1dGhfbWFjID0gYWRhcHRlci1cdTAwM2VldmVudF9ib2R5ICYjNDM7XG4gMTgyOlx0XHRcdFx0ICAgICBNV0lGSUVYX1VBUF9FVkVOVF9FWFRSQV9IRUFERVI7XG4gMTgzOlx0XHRcdGNmZzgwMjExX2RlbF9zdGEocHJpdi1cdTAwM2VuZXRkZXYtXHUwMDNlaWVlZTgwMjExX3B0ciwgZGVhdXRoX21hYyxcbiAxODQ6XHRcdFx0XHRcdCBHRlBfS0VSTkVMKTtcbiAxODU6XHRcbiAxODY6XHRcdFx0aWYgKHByaXYtXHUwMDNlYXBfMTFuX2VuYWJsZWQpIHtcbiAxODc6XHRcdFx0XHRtd2lmaWV4XzExbl9kZWxfcnhfcmVvcmRlcl90YmxfYnlfdGEocHJpdiwgZGVhdXRoX21hYyk7XG4gMTg4Olx0XHRcdFx0bXdpZmlleF9kZWxfdHhfYmFfc3RyZWFtX3RibF9ieV9yYShwcml2LCBkZWF1dGhfbWFjKTtcbiAxODk6XHRcdFx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxMjoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzY0NwoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDMzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBtd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50YCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIG15IGZvY3VzIGxhbmRzIG9uIGBtd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50YC4gVGhpcyBmdW5jdGlvbiBoYW5kbGVzIGBFVkVOVF9VQVBfU1RBX0FTU09DYCBhbmQgcmVsYXRlZCBldmVudHMsIHNvIGl0JiMzOTtzIGNsZWFybHkgaW1wb3J0YW50IGZvciB0aGUgb3ZlcmFsbCB3aXJlbGVzcyBmdW5jdGlvbmFsaXR5LiBJIGNhbiBjb25maXJtIGl0JiMzOTtzIGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZSwgd2hpY2ggaXMgZ29vZC4KClRoZSBwYXRjaCBpdHNlbGYgaXMgYWRkaW5nIGEgYm91bmRzIGNoZWNrLCBzcGVjaWZpY2FsbHkgdG8gcHJldmVudCBhbiBvdXQtb2YtYm91bmRzIHJlYWQgd2l0aGluIGBtd2lmaWV4X3NldF9zdGFfaHRfY2FwYCwgd2hpY2ggaXMgY2FsbGVkIGxhdGVyIGluIGBtd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50YC4gVGhpcyBpcyBhIGNsYXNzaWMgdnVsbmVyYWJpbGl0eSBmaXgsIGFuZCBJIGFwcHJlY2lhdGUgdGhlIHByb2FjdGl2ZSBhcHByb2FjaC4KCk5vdywgbGV0JiMzOTtzIG5haWwgZG93biB0aGUgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMuIFRoZSBjb2RlIHJlZmVyZW5jZXMgYE1XSUZJRVhgIGFuZCBgTVdJRklFWF9VU0JgLiBgTVdJRklFWF9VU0JgIHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCwgZGVwZW5kZW50IG9uIGJvdGggYE1XSUZJRVhgIGFuZCBgVVNCYCwgYW5kIGBNV0lGSUVYYCBpcyBkZXBlbmRlbnQgb24gYENGRzgwMjExYC4gU28sIGl0JiMzOTtzIHByZXR0eSBjbGVhciB0aGF0IHRoZXNlIGFyZSB0aGUga2V5IGNvbmZpZ3VyYXRpb25zIHRvIGtlZXAgaW4gbWluZC4KCkkmIzM5O20gZG91YmxlLWNoZWNraW5nIHRvIGVuc3VyZSB0aGF0IGBtd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50YCBpcyB0aGUgKm9ubHkqIGZ1bmN0aW9uIG1vZGlmaWVkIGJ5IHRoaXMgcGF0Y2gsIGFuZCB5ZXAsIGl0IGlzLiBUaGF0IHNpbXBsaWZpZXMgdGhpbmdzLgoKTmV4dCwgSSBuZWVkIHRvIGNvbnNpZGVyIHdoYXQgKm90aGVyKiBmdW5jdGlvbnMgYXJlIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoaXMgY2hhbmdlLiBXaGlsZSBgbXdpZmlleF9wcm9jZXNzX3VhcF9ldmVudGAgaXMgdGhlIHByaW1hcnkgZm9jdXMsIGl0JiMzOTtzIGNsZWFyIHRoYXQgdGhlIGFjdHVhbCB2dWxuZXJhYmlsaXR5IGxpZXMgaW4gYG13aWZpZXhfc2V0X3N0YV9odF9jYXBgLiBTbywgSSYjMzk7bGwgZGVmaW5pdGVseSB3YW50IHRvIGluY2x1ZGUgYG13aWZpZXhfc2V0X3N0YV9odF9jYXBgIGluIG15IGxpc3Qgb2Ygc2lnbmlmaWNhbnQgZnVuY3Rpb25zIHRvbywgYXMgaXQmIzM5O3MgdGhlIG9uZSBiZWluZyBwcm90ZWN0ZWQgYnkgdGhlIG5ldyBjaGVjay4KCkluIGNvbmNsdXNpb24sIEkmIzM5O2xsIGJlIGtlZXBpbmcgYSB2ZXJ5IGNsb3NlIGV5ZSBvbiBib3RoIGBtd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50YCAod2hlcmUgdGhlIHBhdGNoIGlzIGltcGxlbWVudGVkKSBhbmQgYG13aWZpZXhfc2V0X3N0YV9odF9jYXBgICh0aGUgZnVuY3Rpb24gdGhhdCB3YXMgdnVsbmVyYWJsZSkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDEyOjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O213aWZpZXhfc2V0X3N0YV9odF9jYXAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD0xNTkwPXZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTU5MTptd2lmaWV4X3NldF9zdGFfaHRfY2FwKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIGNvbnN0IHU4ICppZXMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTE1OTItXHRcdCAgICAgICBpbnQgaWVzX2xlbiwgc3RydWN0IG13aWZpZXhfc3RhX25vZGUgKm5vZGUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYz05ND1pbnQgbXdpZmlleF9wcm9jZXNzX3VhcF9ldmVudChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYy0xMzUtXHRcdFx0XHQgKiBjb3BpZWQgaW50bzsgb3RoZXJ3aXNlIHRoZSBJRSB3YWxrIGluXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdWFwX2V2ZW50LmM6MTM2Olx0XHRcdFx0ICogbXdpZmlleF9zZXRfc3RhX2h0X2NhcCgpIHJlYWRzIHBhc3QgZXZlbnRfYm9keSBhbmQgb3V0XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdWFwX2V2ZW50LmMtMTM3LVx0XHRcdFx0ICogb2YgdGhlIGFkYXB0ZXIgc2xhYiBvYmplY3QuXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF9ldmVudC5jLTE2Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYzoxNjc6XHRcdG13aWZpZXhfc2V0X3N0YV9odF9jYXAocHJpdiwgc2luZm8tXHUwMDNlYXNzb2NfcmVxX2llcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYy0xNjgtXHRcdFx0XHQgICAgICAgc2luZm8tXHUwMDNlYXNzb2NfcmVxX2llc19sZW4sIG5vZGUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmM9NzEyPXZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmM6NzEzOm13aWZpZXhfc2V0X3N0YV9odF9jYXAoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgY29uc3QgdTggKmllcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmMtNzE0LVx0XHQgICAgICAgaW50IGllc19sZW4sIHN0cnVjdCBtd2lmaWV4X3N0YV9ub2RlICpub2RlKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxMjoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODk2NgoJCQkJCQkJb3V0cHV0OiAxNDYKCQkJCQkJCXRob3VnaHRzOiAyNTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgRnV6emluZyBTdHJhdGVneSBmb3IgVGhpcyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBsb29rZWQgYXQgdGhpcyBwYXRjaCBhbmQsIHllcywgYG13aWZpZXhfc2V0X3N0YV9odF9jYXBgIGRlZmluaXRlbHkgc2VlbXMgbGlrZSBhIHN0cm9uZyBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIEl0JiMzOTtzIGEga2V5IGZ1bmN0aW9uIGluIHRoaXMgc2NlbmFyaW8uCgpOb3csIGxldCYjMzk7cyB0aGluayBhYm91dCB0aGUgb3RoZXIgY29uZmlndXJhdGlvbnMuIFRoZSBtYWluIG9uZSBoZXJlLCBvZiBjb3Vyc2UsIGlzIGBNV0lGSUVYX1VTQmAuIEkgY291bGQgYWxzbyBjb25zaWRlciBgTVdJRklFWF9TRElPYCBhbmQgYE1XSUZJRVhfUENJRWAgaWYgdGhleSBwcmVzZW50IHBsYXVzaWJsZSBmdXp6aW5nIHZlY3RvcnMsIGJ1dCByZWFsaXN0aWNhbGx5LCBgTVdJRklFWF9VU0JgIGlzIHRoZSBtb3N0IGxpa2VseSBhdmVudWUsIGVzcGVjaWFsbHkgZ2l2ZW4gdGhlIFVTQiBnYWRnZXQgcG90ZW50aWFsLiBUaGVyZWZvcmUsIEkmIzM5O20gZ29pbmcgdG8ga2VlcCBpdCBzdHJhaWdodGZvcndhcmQgYW5kIGp1c3QgaW5jbHVkZSBgTVdJRklFWGAgYW5kIGBNV0lGSUVYX1VTQmAuIE5vIG5lZWQgdG8gb3ZlcmNvbXBsaWNhdGUgdGhpbmdzIGF0IHRoaXMgc3RhZ2UuCgpBbHJpZ2h0LCBsZXQgbWUgc3VtbWFyaXplIG15IGFwcHJvYWNoIG5vdzoKCiogICAqKmBXb3J0aEZ1enppbmc6IHRydWVgKio6IEFic29sdXRlbHksIHRoaXMgaXMgYSBjbGVhciBmdXp6aW5nIHRhcmdldC4KKiAgICoqYEZvY3VzU3ltYm9sczogbXdpZmlleF9wcm9jZXNzX3VhcF9ldmVudCwgbXdpZmlleF9zZXRfc3RhX2h0X2NhcGAqKjogVGhlc2UgYXJlIHRoZSBrZXkgZnVuY3Rpb25zIEkmIzM5O20gemVyb2luZyBpbiBvbjsgdGhlIGhlYXJ0IG9mIHRoZSB2dWxuZXJhYmlsaXR5IGFuZCB0aGUgcG90ZW50aWFsbHkgZXhwbG9pdGFibGUgY29kZS4KKiAgICoqYEVuYWJsZUNvbmZpZ3M6IE1XSUZJRVgsIE1XSUZJRVhfVVNCYCoqOiBUaGlzIG5hcnJvd3MgZG93biB0aGUgdGVzdCB0byB0aGUgcGVydGluZW50IGRyaXZlcnMuCiogICAqKmBSZWFzb25pbmc6IFRoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIHRvIGFuIGV2ZW50IGxlbmd0aCByZXBvcnRlZCBieSB0aGUgZGV2aWNlIGZpcm13YXJlIGluIG13aWZpZXhfcHJvY2Vzc191YXBfZXZlbnQgdG8gcHJldmVudCBhbiBvdXQtb2YtYm91bmRzIHJlYWQgaW4gbXdpZmlleF9zZXRfc3RhX2h0X2NhcC4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgdGhlIFVTQiBkcml2ZXIgKG13aWZpZXhfdXNiKSB3aGljaCBjYW4gYmUgZnV6emVkIHVzaW5nIFVTQiBlbXVsYXRpb24uYCoqOiBUaGlzIGlzIHRoZSBjb25jaXNlIHJhdGlvbmFsZTsgdGhlIHBhdGNoIGFkZHJlc3NlcyBhIGZpcm13YXJlIGV2ZW50IGxlbmd0aCBpc3N1ZSBsZWFkaW5nIHRvIGFuIG91dC1vZi1ib3VuZHMgcmVhZCwgYW5kIHRoZSBVU0IgZHJpdmVyIGlzIHRoZSBlbnRyeSBwb2ludCBmb3IgdGhpcyBidWcuIEZ1enppbmcgd2l0aCBVU0IgZW11bGF0aW9uIGlzIHRoZSBjbGVhciBwYXRoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxMjoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TVdJRklFWCYjMzQ7LAogICAgJiMzNDtNV0lGSUVYX1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O213aWZpZXhfcHJvY2Vzc191YXBfZXZlbnQmIzM0OywKICAgICYjMzQ7bXdpZmlleF9zZXRfc3RhX2h0X2NhcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIHRvIGFuIGV2ZW50IGxlbmd0aCByZXBvcnRlZCBieSB0aGUgZGV2aWNlIGZpcm13YXJlIGluIGBtd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50YCB0byBwcmV2ZW50IGFuIG91dC1vZi1ib3VuZHMgcmVhZCBpbiBgbXdpZmlleF9zZXRfc3RhX2h0X2NhcGAuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgdmlhIHRoZSBVU0IgZHJpdmVyIChgbXdpZmlleF91c2JgKSB3aGljaCBjYW4gYmUgZnV6emVkIHVzaW5nIFVTQiBlbXVsYXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01XSUZJRVgmIzM0OywKICAgICYjMzQ7TVdJRklFWF9VU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50JiMzNDssCiAgICAmIzM0O213aWZpZXhfc2V0X3N0YV9odF9jYXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayB0byBhbiBldmVudCBsZW5ndGggcmVwb3J0ZWQgYnkgdGhlIGRldmljZSBmaXJtd2FyZSBpbiBgbXdpZmlleF9wcm9jZXNzX3VhcF9ldmVudGAgdG8gcHJldmVudCBhbiBvdXQtb2YtYm91bmRzIHJlYWQgaW4gYG13aWZpZXhfc2V0X3N0YV9odF9jYXBgLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSB0aGUgVVNCIGRyaXZlciAoYG13aWZpZXhfdXNiYCkgd2hpY2ggY2FuIGJlIGZ1enplZCB1c2luZyBVU0IgZW11bGF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTI6MjE6MDEuMTYzOTEyNDM3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA3MDEzMjc1MTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1XSUZJRVhcIixcbiAgICBcIk1XSUZJRVhfVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXdpZmlleF9wcm9jZXNzX3VhcF9ldmVudFwiLFxuICAgIFwibXdpZmlleF9zZXRfc3RhX2h0X2NhcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgdG8gYW4gZXZlbnQgbGVuZ3RoIHJlcG9ydGVkIGJ5IHRoZSBkZXZpY2UgZmlybXdhcmUgaW4gYG13aWZpZXhfcHJvY2Vzc191YXBfZXZlbnRgIHRvIHByZXZlbnQgYW4gb3V0LW9mLWJvdW5kcyByZWFkIGluIGBtd2lmaWV4X3NldF9zdGFfaHRfY2FwYC4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgdGhlIFVTQiBkcml2ZXIgKGBtd2lmaWV4X3VzYmApIHdoaWNoIGNhbiBiZSBmdXp6ZWQgdXNpbmcgVVNCIGVtdWxhdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTI6MjE6MDEuMTYzOTE5Mzk3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzEzMTkxMjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA4ZjUwOTViODZlY2U2YTljODU2NDQ3N2RlMDY5NGY5ZGUxYWQ3ZmExXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gSnVuIDI5IDEyOjIwOjU5IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuY1xcbmluZGV4IDY3OWZkYWUwZjAwMWExLi5hZGNhN2RhMjlmMGYyYiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdWFwX2V2ZW50LmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdWFwX2V2ZW50LmNcXG5AQCAtMTI2LDYgKzEyNiwyNCBAQCBpbnQgbXdpZmlleF9wcm9jZXNzX3VhcF9ldmVudChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxcbiBcXHRcXHRcXHRcXHRzaW5mby1cXHUwMDNlYXNzb2NfcmVxX2llcyA9IFxcdTAwMjZldmVudC1cXHUwMDNlZGF0YVtsZW5dO1xcbiBcXHRcXHRcXHRcXHRsZW4gPSAodTggKilzaW5mby1cXHUwMDNlYXNzb2NfcmVxX2llcyAtXFxuIFxcdFxcdFxcdFxcdCAgICAgICh1OCAqKVxcdTAwMjZldmVudC1cXHUwMDNlZnJhbWVfY29udHJvbDtcXG4rXFxuK1xcdFxcdFxcdFxcdC8qXFxuK1xcdFxcdFxcdFxcdCAqIGV2ZW50LVxcdTAwM2VsZW4gaXMgcmVwb3J0ZWQgYnkgdGhlIGRldmljZSBmaXJtd2FyZSBhbmQgaXMgbm90XFxuK1xcdFxcdFxcdFxcdCAqIG90aGVyd2lzZSB2YWxpZGF0ZWQuICBSZWplY3QgYSBsZW5ndGggdGhhdCB1bmRlcmZsb3dzIHRoZVxcbitcXHRcXHRcXHRcXHQgKiBoZWFkZXIsIG9yIHRoYXQgd291bGQgcGxhY2UgdGhlIGFzc29jaWF0aW9uIHJlcXVlc3QgSUVzXFxuK1xcdFxcdFxcdFxcdCAqIG91dHNpZGUgdGhlIGZpeGVkLXNpemUgZXZlbnRfYm9keVtdIGJ1ZmZlciB0aGUgZXZlbnQgd2FzXFxuK1xcdFxcdFxcdFxcdCAqIGNvcGllZCBpbnRvOyBvdGhlcndpc2UgdGhlIElFIHdhbGsgaW5cXG4rXFx0XFx0XFx0XFx0ICogbXdpZmlleF9zZXRfc3RhX2h0X2NhcCgpIHJlYWRzIHBhc3QgZXZlbnRfYm9keSBhbmQgb3V0XFxuK1xcdFxcdFxcdFxcdCAqIG9mIHRoZSBhZGFwdGVyIHNsYWIgb2JqZWN0LlxcbitcXHRcXHRcXHRcXHQgKi9cXG4rXFx0XFx0XFx0XFx0aWYgKGxlMTZfdG9fY3B1KGV2ZW50LVxcdTAwM2VsZW4pIFxcdTAwM2MgbGVuIHx8XFxuK1xcdFxcdFxcdFxcdCAgICAodTggKilcXHUwMDI2ZXZlbnQtXFx1MDAzZWZyYW1lX2NvbnRyb2wgKyBsZTE2X3RvX2NwdShldmVudC1cXHUwMDNlbGVuKSBcXHUwMDNlXFxuK1xcdFxcdFxcdFxcdCAgICBhZGFwdGVyLVxcdTAwM2VldmVudF9ib2R5ICsgTUFYX0VWRU5UX1NJWkUpIHtcXG4rXFx0XFx0XFx0XFx0XFx0bXdpZmlleF9kYmcoYWRhcHRlciwgRVJST1IsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgICBcXFwiaW52YWxpZCBTVEEgYXNzb2MgZXZlbnQgbGVuZ3RoXFxcXG5cXFwiKTtcXG4rXFx0XFx0XFx0XFx0XFx0a2ZyZWUoc2luZm8pO1xcbitcXHRcXHRcXHRcXHRcXHRyZXR1cm4gLTE7XFxuK1xcdFxcdFxcdFxcdH1cXG4gXFx0XFx0XFx0XFx0c2luZm8tXFx1MDAzZWFzc29jX3JlcV9pZXNfbGVuID1cXG4gXFx0XFx0XFx0XFx0XFx0bGUxNl90b19jcHUoZXZlbnQtXFx1MDAzZWxlbikgLSAodTE2KWxlbjtcXG4gXFx0XFx0XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxMjoyMTowMS42OTYxMjg5NzVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwNjQ4MTA0MzA1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNV0lGSUVYXCIsXG4gICAgXCJNV0lGSUVYX1VTQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm13aWZpZXhfcHJvY2Vzc191YXBfZXZlbnRcIixcbiAgICBcIm13aWZpZXhfc2V0X3N0YV9odF9jYXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIHRvIGFuIGV2ZW50IGxlbmd0aCByZXBvcnRlZCBieSB0aGUgZGV2aWNlIGZpcm13YXJlIGluIGBtd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50YCB0byBwcmV2ZW50IGFuIG91dC1vZi1ib3VuZHMgcmVhZCBpbiBgbXdpZmlleF9zZXRfc3RhX2h0X2NhcGAuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgdmlhIHRoZSBVU0IgZHJpdmVyIChgbXdpZmlleF91c2JgKSB3aGljaCBjYW4gYmUgZnV6emVkIHVzaW5nIFVTQiBlbXVsYXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOGY1MDk1Yjg2ZWNlNmE5Yzg1NjQ0NzdkZTA2OTRmOWRlMWFkN2ZhMVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVuIDI5IDEyOjIwOjU5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF9ldmVudC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF9ldmVudC5jXG5pbmRleCA2NzlmZGFlMGYwMDFhMS4uYWRjYTdkYTI5ZjBmMmIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdWFwX2V2ZW50LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuY1xuQEAgLTEyNiw2ICsxMjYsMjQgQEAgaW50IG13aWZpZXhfcHJvY2Vzc191YXBfZXZlbnQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdilcbiBcdFx0XHRcdHNpbmZvLVx1MDAzZWFzc29jX3JlcV9pZXMgPSBcdTAwMjZldmVudC1cdTAwM2VkYXRhW2xlbl07XG4gXHRcdFx0XHRsZW4gPSAodTggKilzaW5mby1cdTAwM2Vhc3NvY19yZXFfaWVzIC1cbiBcdFx0XHRcdCAgICAgICh1OCAqKVx1MDAyNmV2ZW50LVx1MDAzZWZyYW1lX2NvbnRyb2w7XG4rXG4rXHRcdFx0XHQvKlxuK1x0XHRcdFx0ICogZXZlbnQtXHUwMDNlbGVuIGlzIHJlcG9ydGVkIGJ5IHRoZSBkZXZpY2UgZmlybXdhcmUgYW5kIGlzIG5vdFxuK1x0XHRcdFx0ICogb3RoZXJ3aXNlIHZhbGlkYXRlZC4gIFJlamVjdCBhIGxlbmd0aCB0aGF0IHVuZGVyZmxvd3MgdGhlXG4rXHRcdFx0XHQgKiBoZWFkZXIsIG9yIHRoYXQgd291bGQgcGxhY2UgdGhlIGFzc29jaWF0aW9uIHJlcXVlc3QgSUVzXG4rXHRcdFx0XHQgKiBvdXRzaWRlIHRoZSBmaXhlZC1zaXplIGV2ZW50X2JvZHlbXSBidWZmZXIgdGhlIGV2ZW50IHdhc1xuK1x0XHRcdFx0ICogY29waWVkIGludG87IG90aGVyd2lzZSB0aGUgSUUgd2FsayBpblxuK1x0XHRcdFx0ICogbXdpZmlleF9zZXRfc3RhX2h0X2NhcCgpIHJlYWRzIHBhc3QgZXZlbnRfYm9keSBhbmQgb3V0XG4rXHRcdFx0XHQgKiBvZiB0aGUgYWRhcHRlciBzbGFiIG9iamVjdC5cbitcdFx0XHRcdCAqL1xuK1x0XHRcdFx0aWYgKGxlMTZfdG9fY3B1KGV2ZW50LVx1MDAzZWxlbikgXHUwMDNjIGxlbiB8fFxuK1x0XHRcdFx0ICAgICh1OCAqKVx1MDAyNmV2ZW50LVx1MDAzZWZyYW1lX2NvbnRyb2wgKyBsZTE2X3RvX2NwdShldmVudC1cdTAwM2VsZW4pIFx1MDAzZVxuK1x0XHRcdFx0ICAgIGFkYXB0ZXItXHUwMDNlZXZlbnRfYm9keSArIE1BWF9FVkVOVF9TSVpFKSB7XG4rXHRcdFx0XHRcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIEVSUk9SLFxuK1x0XHRcdFx0XHRcdCAgICBcImludmFsaWQgU1RBIGFzc29jIGV2ZW50IGxlbmd0aFxcblwiKTtcbitcdFx0XHRcdFx0a2ZyZWUoc2luZm8pO1xuK1x0XHRcdFx0XHRyZXR1cm4gLTE7XG4rXHRcdFx0XHR9XG4gXHRcdFx0XHRzaW5mby1cdTAwM2Vhc3NvY19yZXFfaWVzX2xlbiA9XG4gXHRcdFx0XHRcdGxlMTZfdG9fY3B1KGV2ZW50LVx1MDAzZWxlbikgLSAodTE2KWxlbjtcbiBcdFx0XHR9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxMjoyMTowMS42OTYxMzA3NTVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxODU4OTY0MDc1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQb3RlbnRpYWwgRnV6emluZyBUYXJnZXQ6IGBtd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50YCoqXG5cbk9rYXksIHNvIHdlIGhhdmUgdGhpcyBwYXRjaCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF9ldmVudC5jYC4gTG9va3MgbGlrZSBpdCdzIGEgY3JpdGljYWwgbGVuZ3RoIGNoZWNrIGluIGBtd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50YCwgZGVzaWduZWQgdG8gcHJldmVudCBhbiBvdXQtb2YtYm91bmRzIHJlYWQuIFRoZSBwYXRjaCB2YWxpZGF0ZXMgYGV2ZW50LVx1MDAzZWxlbmAgYWdhaW5zdCB0aGUgcmVjZWl2ZWQgZGF0YSBidWZmZXIgc2l6ZSwgZXNzZW50aWFsbHkgbWFraW5nIHN1cmUgd2UgZG9uJ3QgdHJ5IHRvIHJlYWQgYmV5b25kIHRoZSBhbGxvY2F0ZWQgbWVtb3J5LiBTbWFydCBtb3ZlLlxuXG5Ob3csIHRoZSBpbnRlcmVzdGluZyBxdWVzdGlvbiBpczogY2FuIHdlIHJlYWNoIGBtd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50YCBpbiBhIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQ/IGBtd2lmaWV4YCBpcyBzcGVjaWZpY2FsbHkgZm9yIE1hcnZlbGwgV2lGaSBoYXJkd2FyZSwgc28gd2UgY2FuJ3QganVzdCB0aHJvdyBhIGdlbmVyaWMgbWFjODAyMTEgZGV2aWNlIGF0IGl0LiAqSG93ZXZlciosIHRoaXMgaXMgd2hlcmUgaXQgZ2V0cyBpbnRlcmVzdGluZy4gSSByZW1lbWJlciBgbXdpZmlleGAgaGFzIHN1cHBvcnQgZm9yIFVTQiEgSXQgaGFzIGEgYG13aWZpZXhfdXNiYCBkcml2ZXIuXG5cbkFoYSEgVVNCIGRldmljZXMgYXJlIG9mdGVuIHF1aXRlIGFtZW5hYmxlIHRvIGVtdWxhdGlvbi4gV2UgY291bGQgdXNlIFVTQiBnYWRnZXQsIGR1bW15X2hjZCwgb3IgdmhjaS1oY2QgZm9yIHRoaXMuIFdhaXQsIEkgcmVjYWxsIHRoYXQgc3l6a2FsbGVyIGhhcyBzdXBwb3J0IGZvciBmdXp6aW5nIFVTQiBkZXZpY2VzIHVzaW5nIHZoY2ktaGNkISBUaGF0J3MgcGVyZmVjdC4gVGhpcyBtZWFucyB3ZSBzaG91bGQgYmUgYWJsZSB0byBnZXQgYG13aWZpZXhfdXNiYCB1cCBhbmQgcnVubmluZyB1bmRlciBhIGZ1enplciEgTm93IEkganVzdCBuZWVkIHRvIGNvbmZpcm0gdGhlIEtjb25maWcgb3B0aW9ucyBmb3IgYG13aWZpZXhgIHRvIG1ha2Ugc3VyZSB3ZSBjYW4gYnVpbGQgaXQgd2l0aCB0aGUgcmlnaHQgY29uZmlndXJhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMDUsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOTEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxMjoyMToyMC4yODU3NzM4MjFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI3NjkwODQzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jbWRldnQuYz00NzA9aW50IG13aWZpZXhfcHJvY2Vzc19ldmVudChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NtZGV2dC5jLTUxOS1cXHRpZiAocHJpdi1cXHUwMDNlYnNzX3JvbGUgPT0gTVdJRklFWF9CU1NfUk9MRV9VQVApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NtZGV2dC5jOjUyMDpcXHRcXHRyZXQgPSBtd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50KHByaXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jbWRldnQuYy01MjEtXFx0ZWxzZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD0xMTQ1PWludCBtd2lmaWV4X3Byb2Nlc3Nfc3RhX2V2ZW50KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxMTQ2OmludCBtd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xMTQ3LXZvaWQgbXdpZmlleF9kZWxldGVfYWxsX3N0YXRpb25fbGlzdChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYz0xND1zdGF0aWMgaW50IG13aWZpZXhfY2hlY2tfdWFwX2NhcGFiaWxpdGllcyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF9ldmVudC5jLTkzLSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYzo5NDppbnQgbXdpZmlleF9wcm9jZXNzX3VhcF9ldmVudChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYy05NS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDEyOjIxOjIyLjU2MjY4NzcwOVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMTU2ODI0NDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOlxuXG4qKkludmVzdGlnYXRpbmcgbXdpZmlleF91c2IgaW4gS2NvbmZpZyoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGl0LiBUaW1lIHRvIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgaHVudCBkb3duIGBtd2lmaWV4X3VzYmAuIFRoaXMgbGlrZWx5IG1lYW5zIEknbSB0cnlpbmcgdG8gY29uZmlndXJlIG9yIHRyb3VibGVzaG9vdCBzb21ldGhpbmcgcmVsYXRlZCB0byB0aGUgTWFydmVsbCBXaUZpIG1vZHVsZSwgc3BlY2lmaWNhbGx5IHRoZSBVU0IgaW50ZXJmYWNlLiBJJ2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSBpdCdzIGRlZmluZWQsIGFueSBkZXBlbmRlbmNpZXMgaXQgbWlnaHQgaGF2ZSwgYW5kIGlmIHRoZXJlIGFyZSBhbnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gZmxhZ3MgYXQgcGxheS4gSSdsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZTogaXMgaXQgc2VsZWN0YWJsZSBieSBkZWZhdWx0PyBJcyB0aGVyZSBhbiBvcHRpb24gdG8gZGlzYWJsZSBpdD8gV2hhdCBvdGhlciBmZWF0dXJlcyBvciBkcml2ZXJzIHJlbHkgb24gaXQ/IEFyZSB0aGVyZSBhbnkgc3BlY2lmaWMgaGFyZHdhcmUgY29uZmlndXJhdGlvbnMgdGllZCB0byBpdHMgYWN0aXZhdGlvbj8gVGhpcyBjb3VsZCBiZSB0byBlbmFibGUgYSBzcGVjaWZpYyBtb2R1bGUgZmVhdHVyZSwgdG8gaW52ZXN0aWdhdGUgYSBidWlsZCBlcnJvciwgb3Igc2ltcGx5IHRvIGVuc3VyZSBJIHVuZGVyc3RhbmQgaG93IHRoaXMgY29tcG9uZW50IGlzIGludGVncmF0ZWQgaW50byB0aGUgbGFyZ2VyIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzE4OSwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDEyOjIxOjI1LjY3ODM3MjA1NVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDc5MTU2MzY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNV0lGSUVYXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6Mjpjb25maWcgTVdJRklFWFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgV2lGaS1FeCBEcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0xMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzoxMjpjb25maWcgTVdJRklFWF9TRElPXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMTMtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFNEODc4Ni9TRDg3ODcvU0Q4Nzk3L1NEODg4Ny9TRDg4OTcvU0Q4OTc3L1NEODk3OC9TRDg5ODcvU0Q4OTk3XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6MjU6Y29uZmlnIE1XSUZJRVhfUENJRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTI2LVxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBQQ0lFIDg3NjYvODg5Ny84OTk3XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6Mzc6Y29uZmlnIE1XSUZJRVhfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzgtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFVTQjg3NjYvODc5Ny84OTk3XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxMjoyMToyOC4xNTc1MzM1NjNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDgzNDk5MTQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqQW5hbHl6aW5nIE1XSUZJRVggQ29uZmlndXJhdGlvbiBhbmQgRXZlbnQgSGFuZGxpbmcqKlxuXG5SaWdodCwgc28gSSdtIGRlYWxpbmcgd2l0aCBgTVdJRklFWGAgYW5kIGBNV0lGSUVYX1VTQmAgY29uZmlndXJhdGlvbnMgaGVyZS4gVGhvc2UgYXJlIHRoZSBrZXkgb25lcywgYXQgbGVhc3QgaW5pdGlhbGx5LiBNeSBwcmltYXJ5IGZvY3VzIGlzIG9uIHRoZSBmdW5jdGlvbiBgbXdpZmlleF9wcm9jZXNzX3VhcF9ldmVudGAuIFRoYXTigJlzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zLCBvciBhdCBsZWFzdCB3aGVyZSB0aGUgVUFQIGV2ZW50cyBhcmUgcHJvY2Vzc2VkLlxuXG5CdXQsIGJlZm9yZSBJIGRpdmUgdG9vIGRlZXAgaW50byB0aGF0IGZ1bmN0aW9uLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnl0aGluZy4gQXJlIHRoZXJlIGFueSBvdGhlciBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMsIGRlZmluZXMsIG9yIGZsYWdzIEkgc2hvdWxkIGJlIGF3YXJlIG9mPyBBcmUgdGhlc2UgdGhlIG9ubHkgY29uZmlncywgb3IgYXJlIHRoZXJlIHN1cHBvcnRpbmcgZmlsZXM/IEkgbmVlZCB0byBnZXQgYSBicm9hZGVyIHZpZXcgYmVmb3JlIEkgc3RhcnQgZGlnZ2luZyBpbnRvIHRoZSBjb3JlIGxvZ2ljLiBJIHdpbGwgY2hlY2sgZm9yIGFueSByZWxhdGVkIGNvbmZpZ3Mgbm93LlxuXG5cbiIsIklucHV0VG9rZW5zIjozODM3LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTI6MjE6MzMuMjQxMDM1NTc4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNTQ3NTMxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnPTI9Y29uZmlnIE1XSUZJRVhcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjQ6XFx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTUtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc9MTI9Y29uZmlnIE1XSUZJRVhfU0RJT1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTEzLVxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBTRDg3ODYvU0Q4Nzg3L1NEODc5Ny9TRDg4ODcvU0Q4ODk3L1NEODk3Ny9TRDg5NzgvU0Q4OTg3L1NEODk5N1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzoxNDpcXHRkZXBlbmRzIG9uIE1XSUZJRVggXFx1MDAyNlxcdTAwMjYgTU1DXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMTUtXFx0c2VsZWN0IEZXX0xPQURFUlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc9MjU9Y29uZmlnIE1XSUZJRVhfUENJRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTI2LVxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBQQ0lFIDg3NjYvODg5Ny84OTk3XFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjI3OlxcdGRlcGVuZHMgb24gTVdJRklFWCBcXHUwMDI2XFx1MDAyNiBQQ0lcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0yOC1cXHRzZWxlY3QgRldfTE9BREVSXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZz0zNz1jb25maWcgTVdJRklFWF9VU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0zOC1cXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgVVNCODc2Ni84Nzk3Lzg5OTdcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6Mzk6XFx0ZGVwZW5kcyBvbiBNV0lGSUVYIFxcdTAwMjZcXHUwMDI2IFVTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTQwLVxcdHNlbGVjdCBGV19MT0FERVJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTI6MjE6MzMuMzQ2NTE4NDQ3WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzgwNTQwMzQxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFdpRmkgRHJpdmVyIEV2ZW50IFByb2Nlc3NpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBXaUZpIGRyaXZlciBjb2RlLCBhbmQgaXQgbG9va3MgbGlrZSBgTVdJRklFWGAgYW5kIGBNV0lGSUVYX1VTQmAgYXJlIHRoZSBjb25maWd1cmF0aW9ucyBJIG5lZWQgdG8gcGF5IGF0dGVudGlvbiB0by4gVGhlIGNvcmUgZnVuY3Rpb24gaGVyZSBzZWVtcyB0byBiZSBgbXdpZmlleF9wcm9jZXNzX3VhcF9ldmVudGAuIE15IGluaXRpYWwgdGhvdWdodCBpcywgaXMgdGhpcyB0aGUgKm9ubHkqIGZ1bmN0aW9uIEkgbmVlZCB0byBmb2N1cyBvbiwgb3IgYXJlIHRoZXJlIG90aGVyIHJlbGF0ZWQgZnVuY3Rpb25zIHdvcnRoIGludmVzdGlnYXRpbmc/XG5cblRoZSBwYXRjaCBJJ20gZXhhbWluaW5nIG1vZGlmaWVzIGBtd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50YCwgc28gdGhhdCdzIHdoZXJlIHRoZSBoZWFydCBvZiB0aGUgY2hhbmdlcyBsaWVzLiBOb3csIGEgY3JpdGljYWwgcXVlc3Rpb24gYXJpc2VzOiBpcyBgbXdpZmlleF9wcm9jZXNzX3VhcF9ldmVudGAgY2FsbGVkIGV4Y2x1c2l2ZWx5IGZyb20gYSBVU0Itc3BlY2lmaWMgcGF0aCwgb3IgZG9lcyBpdCBoYW5kbGUgZXZlbnRzIGZyb20gYSBtb3JlIGdlbmVyYWwgY29udGV4dD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGwgY2hhaW4gdG8gYXNjZXJ0YWluIGl0cyBzY29wZS4gTGV0J3Mgc2VlLi4uIGl0J3MgY2FsbGVkIGZyb20gYG13aWZpZXhfcHJvY2Vzc19ldmVudGAsIHdoaWNoIGluIHR1cm4gaXMgY2FsbGVkIGZyb20gYG13aWZpZXhfbWFpbl9wcm9jZXNzYC4gVGhhdCBuYXJyb3dzIGRvd24gdGhlIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2NDAsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTI6MjE6NDEuMTUxOTIzNTg2WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzQ3MjM4MjQxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm13aWZpZXhfcHJvY2Vzc19ldmVudFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY21kZXZ0LmM9NDIxPXZvaWQgbXdpZmlleF9mcmVlX2NtZF9idWZmZXIoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jbWRldnQuYy00NjktICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NtZGV2dC5jOjQ3MDppbnQgbXdpZmlleF9wcm9jZXNzX2V2ZW50KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NtZGV2dC5jLTQ3MS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jPTI0OD1pbnQgbXdpZmlleF9tYWluX3Byb2Nlc3Moc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtMzUwLVxcdFxcdFxcdGFkYXB0ZXItXFx1MDAzZWV2ZW50X3JlY2VpdmVkID0gZmFsc2U7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYzozNTE6XFx0XFx0XFx0bXdpZmlleF9wcm9jZXNzX2V2ZW50KGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtMzUyLVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg9MTA3MT1pbnQgbXdpZmlleF9wcm9jZXNzX21nbXRfcGFja2V0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTEwNzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxMDc0OmludCBtd2lmaWV4X3Byb2Nlc3NfZXZlbnQoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xMDc1LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxMjoyMTo0My40OTkxNjg5NTZaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjQ3NDI2NDg3MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBtd2lmaWV4IEV2ZW50IEhhbmRsaW5nIEZsb3cqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBgbXdpZmlleGAgZHJpdmVyIGFnYWluLiBUaGUga2V5IHNlZW1zIHRvIGJlIGBtd2lmaWV4X21haW5fcHJvY2Vzc2AsIHRoYXQncyBvdXIgbWFpbiB3b3JrZXIgdGhyZWFkLCB3aGljaCBtYWtlcyBzZW5zZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGV2ZW50cyBmcm9tIHRoZSBkZXZpY2UgYXJlIGhhbmRsZWQsIHNwZWNpZmljYWxseSBmb3IgVVNCLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBzdWdnZXN0cyB0aGUgZmxvdyBpcyBzb21ldGhpbmcgbGlrZSB0aGlzOiBUaGUgVVNCIFJYIGNvbXBsZXRpb24gY2FsbGJhY2ssIGBtd2lmaWV4X3VzYl9yeF9jb21wbGV0ZWAsIHRyaWdnZXJzIGBtd2lmaWV4X3VzYl9zdWJtaXRfcnhfdXJiYCwgd2hpY2ggaW4gdHVybiBsZWFkcyB0byBgbXdpZmlleF91c2JfcmVjdmAuIFRoZW4sIHByZXN1bWFibHksIHRoZSByZWNlaXZlZCBkYXRhIGlzIGZ1bm5lbGVkIHRvIGBtd2lmaWV4X2hhbmRsZV9yeF9wYWNrZXRgLCBhbmQgZmluYWxseSwgd2UgZ2V0IHRvIHRoZSBjb3JlIG9mIHRoZSBpc3N1ZSwgYG13aWZpZXhfcHJvY2Vzc19ldmVudGAuXG5cbk5vdywgSSBuZWVkIHRvIHBpbnBvaW50IHdoZXJlIHRoaXMgYGV2ZW50X3JlY2VpdmVkYCBmbGFnIGlzIHNldC4gVW5kZXJzdGFuZGluZyB3aGVuIGFuZCBob3cgdGhhdCBmbGFnIGlzIHRvZ2dsZWQgaXMgY3J1Y2lhbCB0byB1bmRlcnN0YW5kaW5nIHRoZSB0cmlnZ2VyaW5nIG1lY2hhbmlzbSBhbmQgcG90ZW50aWFsIGJvdHRsZW5lY2tzIHdpdGhpbiB0aGUgZXZlbnQgcHJvY2Vzc2luZy4gVGltZSB0byBkaWcgZGVlcGVyIGFuZCBzZWUgd2hlcmUgdGhlIGFjdHVhbCBldmVudCByZWNlcHRpb24gaXMgYWNrbm93bGVkZ2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NDEzLCJPdXRwdXRUb2tlbnMiOjE3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDEyOjIyOjA4LjI0MTgyMDM5MloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUwMDQyNjYwNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJldmVudF9yZWNlaXZlZFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvbmZjL25mYy1oY2kucnN0PTY0PWVudHJ5IHBvaW50czo6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvbmZjL25mYy1oY2kucnN0LTg1LVxcdFxcdFxcdCAgICAgIHN0cnVjdCBuZmNfdGFyZ2V0ICp0YXJnZXQpO1xcbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9uZmMvbmZjLWhjaS5yc3Q6ODY6XFx0aW50ICgqZXZlbnRfcmVjZWl2ZWQpKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldiwgdTggZ2F0ZSwgdTggZXZlbnQsXFxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL25mYy9uZmMtaGNpLnJzdC04Ny1cXHRcXHRcXHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcXG4tLVxcbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9uZmMvbmZjLWhjaS5yc3QtMTE3LSAgc3BhY2VcXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvbmZjL25mYy1oY2kucnN0OjExODotIGV2ZW50X3JlY2VpdmVkKCkgaXMgY2FsbGVkIHRvIGhhbmRsZSBhbiBldmVudCBjb21pbmcgZnJvbSB0aGUgY2hpcC4gRHJpdmVyXFxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL25mYy9uZmMtaGNpLnJzdC0xMTktICBjYW4gaGFuZGxlIHRoZSBldmVudCBvciByZXR1cm4gMSB0byBsZXQgSENJIGF0dGVtcHQgc3RhbmRhcmQgcHJvY2Vzc2luZy5cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9zdGkvc3RpX2hkbWkuYz0xOTg9c3RhdGljIGlycXJldHVybl90IGhkbWlfaXJxX3RocmVhZChpbnQgaXJxLCB2b2lkICphcmcpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9oZG1pLmMtMjEyLVxcdGlmIChoZG1pLVxcdTAwM2VpcnFfc3RhdHVzIFxcdTAwMjYgKEhETUlfSU5UX1NXX1JTVCB8IEhETUlfSU5UX0RMTF9MQ0spKSB7XFxuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfaGRtaS5jOjIxMzpcXHRcXHRoZG1pLVxcdTAwM2VldmVudF9yZWNlaXZlZCA9IHRydWU7XFxuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfaGRtaS5jLTIxNC1cXHRcXHR3YWtlX3VwX2ludGVycnVwdGlibGUoXFx1MDAyNmhkbWktXFx1MDAzZXdhaXRfZXZlbnQpO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfaGRtaS5jPTU2Nz1zdGF0aWMgdm9pZCBoZG1pX3N3cmVzZXQoc3RydWN0IHN0aV9oZG1pICpoZG1pKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfaGRtaS5jLTU3Ny1cXHQvKiBTdyByZXNldCAqL1xcbmRyaXZlcnMvZ3B1L2RybS9zdGkvc3RpX2hkbWkuYzo1Nzg6XFx0aGRtaS1cXHUwMDNlZXZlbnRfcmVjZWl2ZWQgPSBmYWxzZTtcXG5kcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9oZG1pLmMtNTc5LVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfaGRtaS5jLTU4NS1cXHR3YWl0X2V2ZW50X2ludGVycnVwdGlibGVfdGltZW91dChoZG1pLVxcdTAwM2V3YWl0X2V2ZW50LFxcbmRyaXZlcnMvZ3B1L2RybS9zdGkvc3RpX2hkbWkuYzo1ODY6XFx0XFx0XFx0XFx0XFx0IGhkbWktXFx1MDAzZWV2ZW50X3JlY2VpdmVkLFxcbmRyaXZlcnMvZ3B1L2RybS9zdGkvc3RpX2hkbWkuYy01ODctXFx0XFx0XFx0XFx0XFx0IG1zZWNzX3RvX2ppZmZpZXNcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9zdGkvc3RpX2hkbWkuaD0zMD1zdHJ1Y3QgaGRtaV9hdWRpb19wYXJhbXMge1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfaGRtaS5oLTU2LSAqIEB3YWl0X2V2ZW50OiB3YWl0IGV2ZW50XFxuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfaGRtaS5oOjU3OiAqIEBldmVudF9yZWNlaXZlZDogd2FpdCBldmVudCBzdGF0dXNcXG5kcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9oZG1pLmgtNTgtICogQHJlc2V0OiByZXNldCBjb250cm9sIG9mIHRoZSBoZG1pIHBoeVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfaGRtaS5oPTY2PXN0cnVjdCBzdGlfaGRtaSB7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9oZG1pLmgtODEtXFx0d2FpdF9xdWV1ZV9oZWFkX3Qgd2FpdF9ldmVudDtcXG5kcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9oZG1pLmg6ODI6XFx0Ym9vbCBldmVudF9yZWNlaXZlZDtcXG5kcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9oZG1pLmgtODMtXFx0c3RydWN0IHJlc2V0X2NvbnRyb2wgKnJlc2V0O1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfaGRtaV90eDNnNGMyOHBoeS5jPTc4PXN0YXRpYyBib29sIHN0aV9oZG1pX3R4M2c0YzI4cGh5X3N0YXJ0KHN0cnVjdCBzdGlfaGRtaSAqaGRtaSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9zdGkvc3RpX2hkbWlfdHgzZzRjMjhwaHkuYy0xMTctXFx0ICovXFxuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfaGRtaV90eDNnNGMyOHBoeS5jOjExODpcXHRoZG1pLVxcdTAwM2VldmVudF9yZWNlaXZlZCA9IGZhbHNlO1xcbmRyaXZlcnMvZ3B1L2RybS9zdGkvc3RpX2hkbWlfdHgzZzRjMjhwaHkuYy0xMTktXFx0RFJNX0RFQlVHX0RSSVZFUihcXFwicGxsY3RybCA9IDB4JXhcXFxcblxcXCIsIHBsbGN0cmwpO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfaGRtaV90eDNnNGMyOHBoeS5jLTEyMy1cXHR3YWl0X2V2ZW50X2ludGVycnVwdGlibGVfdGltZW91dChoZG1pLVxcdTAwM2V3YWl0X2V2ZW50LFxcbmRyaXZlcnMvZ3B1L2RybS9zdGkvc3RpX2hkbWlfdHgzZzRjMjhwaHkuYzoxMjQ6XFx0XFx0XFx0XFx0XFx0IGhkbWktXFx1MDAzZWV2ZW50X3JlY2VpdmVkID09IHRydWUsXFxuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfaGRtaV90eDNnNGMyOHBoeS5jLTEyNS1cXHRcXHRcXHRcXHRcXHQgbXNlY3NfdG9famlmZmllc1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfaGRtaV90eDNnNGMyOHBoeS5jPTE4OD1zdGF0aWMgdm9pZCBzdGlfaGRtaV90eDNnNGMyOHBoeV9zdG9wKHN0cnVjdCBzdGlfaGRtaSAqaGRtaSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9zdGkvc3RpX2hkbWlfdHgzZzRjMjhwaHkuYy0xOTMtXFxuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfaGRtaV90eDNnNGMyOHBoeS5jOjE5NDpcXHRoZG1pLVxcdTAwM2VldmVudF9yZWNlaXZlZCA9IGZhbHNlO1xcbmRyaXZlcnMvZ3B1L2RybS9zdGkvc3RpX2hkbWlfdHgzZzRjMjhwaHkuYy0xOTUtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9oZG1pX3R4M2c0YzI4cGh5LmMtMjAzLVxcdHdhaXRfZXZlbnRfaW50ZXJydXB0aWJsZV90aW1lb3V0KGhkbWktXFx1MDAzZXdhaXRfZXZlbnQsXFxuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfaGRtaV90eDNnNGMyOHBoeS5jOjIwNDpcXHRcXHRcXHRcXHRcXHQgaGRtaS1cXHUwMDNlZXZlbnRfcmVjZWl2ZWQgPT0gdHJ1ZSxcXG5kcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9oZG1pX3R4M2c0YzI4cGh5LmMtMjA1LVxcdFxcdFxcdFxcdFxcdCBtc2Vjc190b19qaWZmaWVzXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvUkVBRE1FPTg5PWluZm9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9SRUFETUUtMTU4LVxcdGNtZF9yZXNwX3JlY2VpdmVkID0gXFx1MDAzYzAvMSwgbm8gY21kIHJlc3BvbnNlIHRvIHByb2Nlc3MvcmVzcG9uc2UgcmVjZWl2ZWQgYW5kIHlldCB0byBwcm9jZXNzXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9SRUFETUU6MTU5OlxcdGV2ZW50X3JlY2VpdmVkID0gXFx1MDAzYzAvMSwgbm8gZXZlbnQgdG8gcHJvY2Vzcy9ldmVudCByZWNlaXZlZCBhbmQgeWV0IHRvIHByb2Nlc3NcXHUwMDNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L1JFQURNRS0xNjAtXFx0Y21kX3BlbmRpbmcgPSBcXHUwMDNjbnVtYmVyIG9mIGNtZCBwZW5kaW5nXFx1MDAzZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2luaXQuYz0yMDY9c3RhdGljIHZvaWQgbXdpZmlleF9pbml0X2FkYXB0ZXIoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9pbml0LmMtMjI0LVxcdGFkYXB0ZXItXFx1MDAzZWNtZF9yZXNwX3JlY2VpdmVkID0gZmFsc2U7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2luaXQuYzoyMjU6XFx0YWRhcHRlci1cXHUwMDNlZXZlbnRfcmVjZWl2ZWQgPSBmYWxzZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvaW5pdC5jLTIyNi1cXHRhZGFwdGVyLVxcdTAwM2VkYXRhX3JlY2VpdmVkID0gZmFsc2U7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvaW9jdGwuaD0xOTE9c3RydWN0IG13aWZpZXhfZGVidWdfaW5mbyB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvaW9jdGwuaC0yMzUtXFx0dTggY21kX3Jlc3BfcmVjZWl2ZWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2lvY3RsLmg6MjM2OlxcdHU4IGV2ZW50X3JlY2VpdmVkO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9pb2N0bC5oLTIzNy1cXHR1MzIgbGFzdF9tcF93cl9iaXRtYXBbTVdJRklFWF9EQkdfU0RJT19NUF9OVU1dO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYz0yNDg9aW50IG13aWZpZXhfbWFpbl9wcm9jZXNzKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jLTM0OC1cXHRcXHQvKiBDaGVjayBmb3IgZXZlbnQgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jOjM0OTpcXHRcXHRpZiAoYWRhcHRlci1cXHUwMDNlZXZlbnRfcmVjZWl2ZWQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jOjM1MDpcXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2VldmVudF9yZWNlaXZlZCA9IGZhbHNlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtMzUxLVxcdFxcdFxcdG13aWZpZXhfcHJvY2Vzc19ldmVudChhZGFwdGVyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg9NTU9ZW51bSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTEyNi0jZGVmaW5lIElTX0NBUkRfUlhfUkNWRChhZGFwdGVyKSAoYWRhcHRlci1cXHUwMDNlY21kX3Jlc3BfcmVjZWl2ZWQgfHwgXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTI3OlxcdFxcdFxcdFxcdGFkYXB0ZXItXFx1MDAzZWV2ZW50X3JlY2VpdmVkIHx8IFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTEyOC1cXHRcXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2VkYXRhX3JlY2VpdmVkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD04NTE9c3RydWN0IG13aWZpZXhfYWRhcHRlciB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTkwOC1cXHR1OCBjbWRfcmVzcF9yZWNlaXZlZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oOjkwOTpcXHR1OCBldmVudF9yZWNlaXZlZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTkxMC1cXHR1OCBkYXRhX3JlY2VpdmVkO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYz0xOTAxPXN0YXRpYyBpbnQgbXdpZmlleF9wY2llX3Byb2Nlc3NfZXZlbnRfcmVhZHkoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmMtMTkxMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jOjE5MTI6XFx0aWYgKGFkYXB0ZXItXFx1MDAzZWV2ZW50X3JlY2VpdmVkKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYy0xOTEzLVxcdFxcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIEVWRU5ULFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYy0xOTcxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmM6MTk3MjpcXHRcXHRhZGFwdGVyLVxcdTAwM2VldmVudF9yZWNlaXZlZCA9IHRydWU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYy0xOTczLVxcdFxcdGFkYXB0ZXItXFx1MDAzZWV2ZW50X3NrYiA9IHNrYl9jbWQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jPTE2NDc9c3RhdGljIGludCBtd2lmaWV4X2RlY29kZV9yeF9wYWNrZXQoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmMtMTcyMi1cXHRcXHQvKiBldmVudCBjYXVzZSBoYXMgYmVlbiBzYXZlZCB0byBhZGFwdGVyLVxcdTAwM2VldmVudF9jYXVzZSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmM6MTcyMzpcXHRcXHRhZGFwdGVyLVxcdTAwM2VldmVudF9yZWNlaXZlZCA9IHRydWU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYy0xNzI0LVxcdFxcdGFkYXB0ZXItXFx1MDAzZWV2ZW50X3NrYiA9IHNrYjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYz00Nj1zdGF0aWMgaW50IG13aWZpZXhfdXNiX3JlY3Yoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjExNTpcXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2VldmVudF9yZWNlaXZlZCA9IHRydWU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTExNi1cXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2VldmVudF9za2IgPSBza2I7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jPTE2PXN0YXRpYyBzdHJ1Y3QgbXdpZmlleF9kZWJ1Z19kYXRhIGl0ZW1zW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jLTEwMy1cXHQgaXRlbV9hZGRyKGNtZF9yZXNwX3JlY2VpdmVkKSwgMX0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuYzoxMDQ6XFx0e1xcXCJldmVudF9yZWNlaXZlZFxcXCIsIGl0ZW1fc2l6ZShldmVudF9yZWNlaXZlZCksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuYzoxMDU6XFx0IGl0ZW1fYWRkcihldmVudF9yZWNlaXZlZCksIDF9LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmMtMTA2LVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbW9kZW1fb3BzLmM9NTE1PXN0YXRpYyB2b2lkIHQ3eHhfY29yZV9oa19oYW5kbGVyKHN0cnVjdCB0N3h4X21vZGVtICptZCwgc3RydWN0IHQ3eHhfc3lzX2luZm8gKmNvcmVfaW5mbyxcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X21vZGVtX29wcy5jLTUyNy1cXHR3aGlsZSAoIWt0aHJlYWRfc2hvdWxkX3N0b3AoKSkge1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X21vZGVtX29wcy5jOjUyODpcXHRcXHRib29sIGV2ZW50X3JlY2VpdmVkID0gZmFsc2U7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbW9kZW1fb3BzLmMtNTI5LVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbW9kZW1fb3BzLmMtNTM4LVxcdFxcdFxcdFxcdGxpc3RfZGVsKFxcdTAwMjZldmVudC1cXHUwMDNlZW50cnkpO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X21vZGVtX29wcy5jOjUzOTpcXHRcXHRcXHRcXHRldmVudF9yZWNlaXZlZCA9IHRydWU7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbW9kZW1fb3BzLmMtNTQwLVxcdFxcdFxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbW9kZW1fb3BzLmMtNTQ0LVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X21vZGVtX29wcy5jOjU0NTpcXHRcXHRpZiAoZXZlbnRfcmVjZWl2ZWQpXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbW9kZW1fb3BzLmMtNTQ2LVxcdFxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfc3RhdGVfbW9uaXRvci5jPTE1Mz1zdGF0aWMgdm9pZCBmc21fd2FpdF9mb3JfZXZlbnQoc3RydWN0IHQ3eHhfZnNtX2N0bCAqY3RsLCBlbnVtIHQ3eHhfZnNtX2V2ZW50X3N0YXRlIGV2ZW50X2V4cGVjdGVkLFxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfc3RhdGVfbW9uaXRvci5jLTE1Ni1cXHRzdHJ1Y3QgdDd4eF9mc21fZXZlbnQgKmV2ZW50O1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3N0YXRlX21vbml0b3IuYzoxNTc6XFx0Ym9vbCBldmVudF9yZWNlaXZlZCA9IGZhbHNlO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3N0YXRlX21vbml0b3IuYy0xNTgtXFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3N0YXRlX21vbml0b3IuYy0xNjAtXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfc3RhdGVfbW9uaXRvci5jOjE2MTpcXHR3aGlsZSAoY250KysgXFx1MDAzYyByZXRyaWVzIFxcdTAwMjZcXHUwMDI2ICFldmVudF9yZWNlaXZlZCkge1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3N0YXRlX21vbml0b3IuYy0xNjItXFx0XFx0Ym9vbCBzbGVlcF9yZXF1aXJlZCA9IHRydWU7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9zdGF0ZV9tb25pdG9yLmMtMTY5LVxcdFxcdGlmIChldmVudCkge1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3N0YXRlX21vbml0b3IuYzoxNzA6XFx0XFx0XFx0ZXZlbnRfcmVjZWl2ZWQgPSBldmVudC1cXHUwMDNlZXZlbnRfaWQgPT0gZXZlbnRfZXhwZWN0ZWQ7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfc3RhdGVfbW9uaXRvci5jOjE3MTpcXHRcXHRcXHRpZiAoZXZlbnRfcmVjZWl2ZWQgfHwgZXZlbnQtXFx1MDAzZWV2ZW50X2lkID09IGV2ZW50X2lnbm9yZSkge1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3N0YXRlX21vbml0b3IuYy0xNzItXFx0XFx0XFx0XFx0ZnNtX2RlbF9rZl9ldmVudChldmVudCk7XFxuLS1cXG5kcml2ZXJzL25mYy9taWNyb3JlYWQvbWljcm9yZWFkLmM9NDY4PXN0YXRpYyB2b2lkIG1pY3JvcmVhZF90YXJnZXRfZGlzY292ZXJlZChzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYsIHU4IGdhdGUsXFxuLS1cXG5kcml2ZXJzL25mYy9taWNyb3JlYWQvbWljcm9yZWFkLmMtNTQ2LVxcbmRyaXZlcnMvbmZjL21pY3JvcmVhZC9taWNyb3JlYWQuYzo1NDc6c3RhdGljIGludCBtaWNyb3JlYWRfZXZlbnRfcmVjZWl2ZWQoc3RydWN0IG5mY19oY2lfZGV2ICpoZGV2LCB1OCBwaXBlLFxcbmRyaXZlcnMvbmZjL21pY3JvcmVhZC9taWNyb3JlYWQuYy01NDgtXFx0XFx0XFx0XFx0ICAgICB1OCBldmVudCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmZjL21pY3JvcmVhZC9taWNyb3JlYWQuYz02Mjc9c3RhdGljIGNvbnN0IHN0cnVjdCBuZmNfaGNpX29wcyBtaWNyb3JlYWRfaGNpX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmZjL21pY3JvcmVhZC9taWNyb3JlYWQuYy02MzktXFx0LmNoZWNrX3ByZXNlbmNlID0gTlVMTCxcXG5kcml2ZXJzL25mYy9taWNyb3JlYWQvbWljcm9yZWFkLmM6NjQwOlxcdC5ldmVudF9yZWNlaXZlZCA9IG1pY3JvcmVhZF9ldmVudF9yZWNlaXZlZCxcXG5kcml2ZXJzL25mYy9taWNyb3JlYWQvbWljcm9yZWFkLmMtNjQxLX07XFxuLS1cXG5kcml2ZXJzL25mYy9wbjU0NC9wbjU0NC5jPTY4MT1zdGF0aWMgaW50IHBuNTQ0X2hjaV9jaGVja19wcmVzZW5jZShzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYsXFxuLS1cXG5kcml2ZXJzL25mYy9wbjU0NC9wbjU0NC5jLTcxNC0gKi9cXG5kcml2ZXJzL25mYy9wbjU0NC9wbjU0NC5jOjcxNTpzdGF0aWMgaW50IHBuNTQ0X2hjaV9ldmVudF9yZWNlaXZlZChzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYsIHU4IHBpcGUsIHU4IGV2ZW50LFxcbmRyaXZlcnMvbmZjL3BuNTQ0L3BuNTQ0LmMtNzE2LVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZmMvcG41NDQvcG41NDQuYz04ODM9c3RhdGljIGNvbnN0IHN0cnVjdCBuZmNfaGNpX29wcyBwbjU0NF9oY2lfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZmMvcG41NDQvcG41NDQuYy04OTUtXFx0LmNoZWNrX3ByZXNlbmNlID0gcG41NDRfaGNpX2NoZWNrX3ByZXNlbmNlLFxcbmRyaXZlcnMvbmZjL3BuNTQ0L3BuNTQ0LmM6ODk2OlxcdC5ldmVudF9yZWNlaXZlZCA9IHBuNTQ0X2hjaV9ldmVudF9yZWNlaXZlZCxcXG5kcml2ZXJzL25mYy9wbjU0NC9wbjU0NC5jLTg5Ny1cXHQuZndfZG93bmxvYWQgPSBwbjU0NF9oY2lfZndfZG93bmxvYWQsXFxuLS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jPTk1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmNpX29wcyBzdF9uY2lfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYy0xMDUtXFx0LmhjaV9sb2FkX3Nlc3Npb24gPSBzdF9uY2lfaGNpX2xvYWRfc2Vzc2lvbixcXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jOjEwNjpcXHQuaGNpX2V2ZW50X3JlY2VpdmVkID0gc3RfbmNpX2hjaV9ldmVudF9yZWNlaXZlZCxcXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jLTEwNy1cXHQuaGNpX2NtZF9yZWNlaXZlZCA9IHN0X25jaV9oY2lfY21kX3JlY2VpdmVkLFxcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmM9MjQ5PUVYUE9SVF9TWU1CT0xfR1BMKHN0X25jaV9oY2lfbG9hZF9zZXNzaW9uKTtcXG5kcml2ZXJzL25mYy9zdC1uY2kvc2UuYy0yNTAtXFxuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmM6MjUxOnN0YXRpYyB2b2lkIHN0X25jaV9oY2lfYWRtaW5fZXZlbnRfcmVjZWl2ZWQoc3RydWN0IG5jaV9kZXYgKm5kZXYsXFxuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmMtMjUyLVxcdFxcdFxcdFxcdFxcdCAgICAgIHU4IGV2ZW50LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmMtMjc0LVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jOjI3NTpzdGF0aWMgaW50IHN0X25jaV9oY2lfYXBkdV9yZWFkZXJfZXZlbnRfcmVjZWl2ZWQoc3RydWN0IG5jaV9kZXYgKm5kZXYsXFxuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmMtMjc2LVxcdFxcdFxcdFxcdFxcdFxcdCAgIHU4IGV2ZW50LFxcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmMtMzA3LSAqL1xcbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jOjMwODpzdGF0aWMgaW50IHN0X25jaV9oY2lfY29ubmVjdGl2aXR5X2V2ZW50X3JlY2VpdmVkKHN0cnVjdCBuY2lfZGV2ICpuZGV2LFxcbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jLTMwOS1cXHRcXHRcXHRcXHRcXHRcXHR1OCBob3N0LCB1OCBldmVudCxcXG4tLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jLTM4MS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvc2UuYzozODI6dm9pZCBzdF9uY2lfaGNpX2V2ZW50X3JlY2VpdmVkKHN0cnVjdCBuY2lfZGV2ICpuZGV2LCB1OCBwaXBlLFxcbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jLTM4My1cXHRcXHRcXHRcXHQgdTggZXZlbnQsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvc2UuYy0zODktXFx0Y2FzZSBOQ0lfSENJX0FETUlOX0dBVEU6XFxuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmM6MzkwOlxcdFxcdHN0X25jaV9oY2lfYWRtaW5fZXZlbnRfcmVjZWl2ZWQobmRldiwgZXZlbnQsIHNrYik7XFxuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmMtMzkxLVxcdGJyZWFrO1xcbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jLTM5Mi1cXHRjYXNlIFNUX05DSV9BUERVX1JFQURFUl9HQVRFOlxcbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jOjM5MzpcXHRcXHRzdF9uY2lfaGNpX2FwZHVfcmVhZGVyX2V2ZW50X3JlY2VpdmVkKG5kZXYsIGV2ZW50LCBza2IpO1xcbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jLTM5NC1cXHRicmVhaztcXG5kcml2ZXJzL25mYy9zdC1uY2kvc2UuYy0zOTUtXFx0Y2FzZSBTVF9OQ0lfQ09OTkVDVElWSVRZX0dBVEU6XFxuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmM6Mzk2OlxcdFxcdHN0X25jaV9oY2lfY29ubmVjdGl2aXR5X2V2ZW50X3JlY2VpdmVkKG5kZXYsIGhvc3QsIGV2ZW50LCBza2IpO1xcbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jLTM5Ny1cXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jLTM5OS19XFxuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmM6NDAwOkVYUE9SVF9TWU1CT0xfR1BMKHN0X25jaV9oY2lfZXZlbnRfcmVjZWl2ZWQpO1xcbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jLTQwMS1cXG4tLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9zdC1uY2kuaD0xMzQ9aW50IHN0X25jaV9oY2lfbG9hZF9zZXNzaW9uKHN0cnVjdCBuY2lfZGV2ICpuZGV2KTtcXG5kcml2ZXJzL25mYy9zdC1uY2kvc3QtbmNpLmg6MTM1OnZvaWQgc3RfbmNpX2hjaV9ldmVudF9yZWNlaXZlZChzdHJ1Y3QgbmNpX2RldiAqbmRldiwgdTggcGlwZSxcXG5kcml2ZXJzL25mYy9zdC1uY2kvc3QtbmNpLmgtMTM2LVxcdFxcdFxcdFxcdFxcdHU4IGV2ZW50LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcXG4tLVxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2NvcmUuYz04MzI9c3RhdGljIHZvaWQgc3QyMW5mY2FfaGNpX2NtZF9yZWNlaXZlZChzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYsIHU4IHBpcGUsIHU4IGNtZCxcXG4tLVxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2NvcmUuYy04NTUtXFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvY29yZS5jOjg1NjpzdGF0aWMgaW50IHN0MjFuZmNhX2FkbWluX2V2ZW50X3JlY2VpdmVkKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldiwgdTggZXZlbnQsXFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvY29yZS5jLTg1Ny1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvY29yZS5jLTg4OC0gKi9cXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9jb3JlLmM6ODg5OnN0YXRpYyBpbnQgc3QyMW5mY2FfaGNpX2V2ZW50X3JlY2VpdmVkKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldiwgdTggcGlwZSxcXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9jb3JlLmMtODkwLVxcdFxcdFxcdFxcdCAgICAgICB1OCBldmVudCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2NvcmUuYy04OTgtXFx0Y2FzZSBORkNfSENJX0FETUlOX0dBVEU6XFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvY29yZS5jOjg5OTpcXHRcXHRyZXR1cm4gc3QyMW5mY2FfYWRtaW5fZXZlbnRfcmVjZWl2ZWQoaGRldiwgZXZlbnQsIHNrYik7XFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvY29yZS5jLTkwMC1cXHRjYXNlIFNUMjFORkNBX1JGX0NBUkRfRl9HQVRFOlxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2NvcmUuYzo5MDE6XFx0XFx0cmV0dXJuIHN0MjFuZmNhX2RlcF9ldmVudF9yZWNlaXZlZChoZGV2LCBldmVudCwgc2tiKTtcXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9jb3JlLmMtOTAyLVxcdGNhc2UgU1QyMU5GQ0FfQ09OTkVDVElWSVRZX0dBVEU6XFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvY29yZS5jOjkwMzpcXHRcXHRyZXR1cm4gc3QyMW5mY2FfY29ubmVjdGl2aXR5X2V2ZW50X3JlY2VpdmVkKGhkZXYsIGhvc3QsXFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvY29yZS5jLTkwNC1cXHRcXHRcXHRcXHRcXHRcXHRcXHRldmVudCwgc2tiKTtcXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9jb3JlLmMtOTA1LVxcdGNhc2UgU1QyMU5GQ0FfQVBEVV9SRUFERVJfR0FURTpcXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9jb3JlLmM6OTA2OlxcdFxcdHJldHVybiBzdDIxbmZjYV9hcGR1X3JlYWRlcl9ldmVudF9yZWNlaXZlZChoZGV2LCBldmVudCwgc2tiKTtcXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9jb3JlLmMtOTA3LVxcdGNhc2UgTkZDX0hDSV9MT09QQkFDS19HQVRFOlxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2NvcmUuYzo5MDg6XFx0XFx0cmV0dXJuIHN0MjFuZmNhX2hjaV9sb29wYmFja19ldmVudF9yZWNlaXZlZChoZGV2LCBldmVudCwgc2tiKTtcXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9jb3JlLmMtOTA5LVxcdGRlZmF1bHQ6XFxuLS1cXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9jb3JlLmM9OTE0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZjX2hjaV9vcHMgc3QyMW5mY2FfaGNpX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2NvcmUuYy05MjgtXFx0LmNoZWNrX3ByZXNlbmNlID0gc3QyMW5mY2FfaGNpX2NoZWNrX3ByZXNlbmNlLFxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2NvcmUuYzo5Mjk6XFx0LmV2ZW50X3JlY2VpdmVkID0gc3QyMW5mY2FfaGNpX2V2ZW50X3JlY2VpdmVkLFxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2NvcmUuYy05MzAtXFx0LmNtZF9yZWNlaXZlZCA9IHN0MjFuZmNhX2hjaV9jbWRfcmVjZWl2ZWQsXFxuLS1cXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYz0zNDY9c3RhdGljIGludCBzdDIxbmZjYV90bV9ldmVudF9zZW5kX2RhdGEoc3RydWN0IG5mY19oY2lfZGV2ICpoZGV2LFxcbi0tXFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmMtMzgwLSAqL1xcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jOjM4MTppbnQgc3QyMW5mY2FfZGVwX2V2ZW50X3JlY2VpdmVkKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldixcXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYy0zODItXFx0XFx0XFx0XFx0dTggZXZlbnQsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYy00MTAtfVxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jOjQxMTpFWFBPUlRfU1lNQk9MKHN0MjFuZmNhX2RlcF9ldmVudF9yZWNlaXZlZCk7XFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmMtNDEyLVxcbi0tXFxuZHJpdmVycy9uZmMvc3QyMW5mY2Evc2UuYz0yODk9c3RhdGljIHZvaWQgc3QyMW5mY2Ffc2VfYWN0aXZhdGlvbl90aW1lb3V0KHN0cnVjdCB0aW1lcl9saXN0ICp0KVxcbi0tXFxuZHJpdmVycy9uZmMvc3QyMW5mY2Evc2UuYy0zMDMtICovXFxuZHJpdmVycy9uZmMvc3QyMW5mY2Evc2UuYzozMDQ6aW50IHN0MjFuZmNhX2Nvbm5lY3Rpdml0eV9ldmVudF9yZWNlaXZlZChzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYsIHU4IGhvc3QsXFxuZHJpdmVycy9uZmMvc3QyMW5mY2Evc2UuYy0zMDUtXFx0XFx0XFx0XFx0dTggZXZlbnQsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9zZS5jLTM3MS19XFxuZHJpdmVycy9uZmMvc3QyMW5mY2Evc2UuYzozNzI6RVhQT1JUX1NZTUJPTChzdDIxbmZjYV9jb25uZWN0aXZpdHlfZXZlbnRfcmVjZWl2ZWQpO1xcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL3NlLmMtMzczLVxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL3NlLmM6Mzc0OmludCBzdDIxbmZjYV9hcGR1X3JlYWRlcl9ldmVudF9yZWNlaXZlZChzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYsXFxuZHJpdmVycy9uZmMvc3QyMW5mY2Evc2UuYy0zNzUtXFx0XFx0XFx0XFx0XFx0dTggZXZlbnQsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9zZS5jLTQwNy19XFxuZHJpdmVycy9uZmMvc3QyMW5mY2Evc2UuYzo0MDg6RVhQT1JUX1NZTUJPTChzdDIxbmZjYV9hcGR1X3JlYWRlcl9ldmVudF9yZWNlaXZlZCk7XFxuZHJpdmVycy9uZmMvc3QyMW5mY2Evc2UuYy00MDktXFxuLS1cXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9zdDIxbmZjYS5oPTE3MT12b2lkIHN0MjFuZmNhX2hjaV9yZW1vdmUoc3RydWN0IG5mY19oY2lfZGV2ICpoZGV2KTtcXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9zdDIxbmZjYS5oLTE3Mi1cXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9zdDIxbmZjYS5oOjE3MzppbnQgc3QyMW5mY2FfZGVwX2V2ZW50X3JlY2VpdmVkKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldixcXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9zdDIxbmZjYS5oLTE3NC1cXHRcXHRcXHRcXHR1OCBldmVudCwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxuLS1cXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9zdDIxbmZjYS5oPTE4MD12b2lkIHN0MjFuZmNhX2RlcF9kZWluaXQoc3RydWN0IG5mY19oY2lfZGV2ICpoZGV2KTtcXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9zdDIxbmZjYS5oLTE4MS1cXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9zdDIxbmZjYS5oOjE4MjppbnQgc3QyMW5mY2FfY29ubmVjdGl2aXR5X2V2ZW50X3JlY2VpdmVkKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldiwgdTggaG9zdCxcXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9zdDIxbmZjYS5oLTE4My1cXHRcXHRcXHRcXHRcXHR1OCBldmVudCwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxuZHJpdmVycy9uZmMvc3QyMW5mY2Evc3QyMW5mY2EuaDoxODQ6aW50IHN0MjFuZmNhX2FwZHVfcmVhZGVyX2V2ZW50X3JlY2VpdmVkKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldixcXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9zdDIxbmZjYS5oLTE4NS1cXHRcXHRcXHRcXHRcXHR1OCBldmVudCwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxuLS1cXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9zdDIxbmZjYS5oPTE5NT12b2lkIHN0MjFuZmNhX3NlX2RlaW5pdChzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYpO1xcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL3N0MjFuZmNhLmgtMTk2LVxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL3N0MjFuZmNhLmg6MTk3OmludCBzdDIxbmZjYV9oY2lfbG9vcGJhY2tfZXZlbnRfcmVjZWl2ZWQoc3RydWN0IG5mY19oY2lfZGV2ICpuZGV2LCB1OCBldmVudCxcXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9zdDIxbmZjYS5oLTE5OC1cXHRcXHRcXHRcXHRcXHQgc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxuLS1cXG5kcml2ZXJzL25mYy9zdDIxbmZjYS92ZW5kb3JfY21kcy5jPTIxOT1zdGF0aWMgaW50IHN0MjFuZmNhX2hjaV9kbV9maWVsZF9nZW5lcmF0b3Ioc3RydWN0IG5mY19kZXYgKmRldiwgdm9pZCAqZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL3ZlbmRvcl9jbWRzLmMtMjI5LVxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL3ZlbmRvcl9jbWRzLmM6MjMwOmludCBzdDIxbmZjYV9oY2lfbG9vcGJhY2tfZXZlbnRfcmVjZWl2ZWQoc3RydWN0IG5mY19oY2lfZGV2ICpoZGV2LCB1OCBldmVudCxcXG5kcml2ZXJzL25mYy9zdDIxbmZjYS92ZW5kb3JfY21kcy5jLTIzMS1cXHRcXHRcXHRcXHRcXHQgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL3ZlbmRvcl9jbWRzLmMtMjQ0LX1cXG5kcml2ZXJzL25mYy9zdDIxbmZjYS92ZW5kb3JfY21kcy5jOjI0NTpFWFBPUlRfU1lNQk9MKHN0MjFuZmNhX2hjaV9sb29wYmFja19ldmVudF9yZWNlaXZlZCk7XFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvdmVuZG9yX2NtZHMuYy0yNDYtXFxuLS1cXG5kcml2ZXJzL3BsYXRmb3JtL3N1cmZhY2UvYWdncmVnYXRvci9zc2hfcmVxdWVzdF9sYXllci5jPTg5OD1zdGF0aWMgdm9pZCBzc2hfcnRsX3J4X2V2ZW50KHN0cnVjdCBzc2hfcnRsICpydGwsIGNvbnN0IHN0cnVjdCBzc2hfY29tbWFuZCAqY21kLFxcbi0tXFxuZHJpdmVycy9wbGF0Zm9ybS9zdXJmYWNlL2FnZ3JlZ2F0b3Ivc3NoX3JlcXVlc3RfbGF5ZXIuYy05MDAte1xcbmRyaXZlcnMvcGxhdGZvcm0vc3VyZmFjZS9hZ2dyZWdhdG9yL3NzaF9yZXF1ZXN0X2xheWVyLmM6OTAxOlxcdHRyYWNlX3NzYW1fcnhfZXZlbnRfcmVjZWl2ZWQoY21kLCBkYXRhLVxcdTAwM2VsZW4pO1xcbmRyaXZlcnMvcGxhdGZvcm0vc3VyZmFjZS9hZ2dyZWdhdG9yL3NzaF9yZXF1ZXN0X2xheWVyLmMtOTAyLVxcbi0tXFxuZHJpdmVycy9wbGF0Zm9ybS9zdXJmYWNlL2FnZ3JlZ2F0b3IvdHJhY2UuaD02NjI9REVGSU5FX1NTQU1fQ09NTUFORF9FVkVOVChyeF9yZXNwb25zZV9yZWNlaXZlZCk7XFxuZHJpdmVycy9wbGF0Zm9ybS9zdXJmYWNlL2FnZ3JlZ2F0b3IvdHJhY2UuaDo2NjM6REVGSU5FX1NTQU1fQ09NTUFORF9FVkVOVChyeF9ldmVudF9yZWNlaXZlZCk7XFxuZHJpdmVycy9wbGF0Zm9ybS9zdXJmYWNlL2FnZ3JlZ2F0b3IvdHJhY2UuaC02NjQtXFxuLS1cXG5pbmNsdWRlL25ldC9uZmMvaGNpLmg9MTU9c3RydWN0IG5mY19oY2lfb3BzIHtcXG4tLVxcbmluY2x1ZGUvbmV0L25mYy9oY2kuaC00MS1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgbmZjX3RhcmdldCAqdGFyZ2V0KTtcXG5pbmNsdWRlL25ldC9uZmMvaGNpLmg6NDI6XFx0aW50ICgqZXZlbnRfcmVjZWl2ZWQpKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldiwgdTggcGlwZSwgdTggZXZlbnQsXFxuaW5jbHVkZS9uZXQvbmZjL2hjaS5oLTQzLVxcdFxcdFxcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IpO1xcbi0tXFxuaW5jbHVkZS9uZXQvbmZjL2hjaS5oPTI1MD12b2lkIG5mY19oY2lfY21kX3JlY2VpdmVkKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldiwgdTggcGlwZSwgdTggY21kLFxcbmluY2x1ZGUvbmV0L25mYy9oY2kuaC0yNTEtXFx0XFx0XFx0ICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcXG5pbmNsdWRlL25ldC9uZmMvaGNpLmg6MjUyOnZvaWQgbmZjX2hjaV9ldmVudF9yZWNlaXZlZChzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYsIHU4IHBpcGUsIHU4IGV2ZW50LFxcbmluY2x1ZGUvbmV0L25mYy9oY2kuaC0yNTMtXFx0XFx0XFx0ICAgIHN0cnVjdCBza19idWZmICpza2IpO1xcbi0tXFxuaW5jbHVkZS9uZXQvbmZjL25jaV9jb3JlLmg9NjU9c3RydWN0IG5jaV9vcHMge1xcbi0tXFxuaW5jbHVkZS9uZXQvbmZjL25jaV9jb3JlLmgtODAtXFx0aW50ICAgKCpoY2lfbG9hZF9zZXNzaW9uKShzdHJ1Y3QgbmNpX2RldiAqbmRldik7XFxuaW5jbHVkZS9uZXQvbmZjL25jaV9jb3JlLmg6ODE6XFx0dm9pZCAgKCpoY2lfZXZlbnRfcmVjZWl2ZWQpKHN0cnVjdCBuY2lfZGV2ICpuZGV2LCB1OCBwaXBlLCB1OCBldmVudCxcXG5pbmNsdWRlL25ldC9uZmMvbmNpX2NvcmUuaC04Mi1cXHRcXHRcXHRcXHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxuLS1cXG5uZXQvbmZjL2hjaS9jb3JlLmM9Mzc5PUVYUE9SVF9TWU1CT0wobmZjX2hjaV90YXJnZXRfZGlzY292ZXJlZCk7XFxubmV0L25mYy9oY2kvY29yZS5jLTM4MC1cXG5uZXQvbmZjL2hjaS9jb3JlLmM6MzgxOnZvaWQgbmZjX2hjaV9ldmVudF9yZWNlaXZlZChzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYsIHU4IHBpcGUsIHU4IGV2ZW50LFxcbm5ldC9uZmMvaGNpL2NvcmUuYy0zODItXFx0XFx0XFx0ICAgIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvbmZjL2hjaS9jb3JlLmMtMzk3LVxcbm5ldC9uZmMvaGNpL2NvcmUuYzozOTg6XFx0aWYgKGhkZXYtXFx1MDAzZW9wcy1cXHUwMDNlZXZlbnRfcmVjZWl2ZWQpIHtcXG5uZXQvbmZjL2hjaS9jb3JlLmM6Mzk5OlxcdFxcdHIgPSBoZGV2LVxcdTAwM2VvcHMtXFx1MDAzZWV2ZW50X3JlY2VpdmVkKGhkZXYsIHBpcGUsIGV2ZW50LCBza2IpO1xcbm5ldC9uZmMvaGNpL2NvcmUuYy00MDAtXFx0XFx0aWYgKHIgXFx1MDAzYz0gMClcXG4tLVxcbm5ldC9uZmMvaGNpL2hjcC5jPTExNz12b2lkIG5mY19oY2lfaGNwX21lc3NhZ2Vfcngoc3RydWN0IG5mY19oY2lfZGV2ICpoZGV2LCB1OCBwaXBlLCB1OCB0eXBlLFxcbi0tXFxubmV0L25mYy9oY2kvaGNwLmMtMTI3LVxcdGNhc2UgTkZDX0hDSV9IQ1BfRVZFTlQ6XFxubmV0L25mYy9oY2kvaGNwLmM6MTI4OlxcdFxcdG5mY19oY2lfZXZlbnRfcmVjZWl2ZWQoaGRldiwgcGlwZSwgaW5zdHJ1Y3Rpb24sIHNrYik7XFxubmV0L25mYy9oY2kvaGNwLmMtMTI5LVxcdFxcdGJyZWFrO1xcbi0tXFxubmV0L25mYy9uY2kvaGNpLmM9MjcyPUVYUE9SVF9TWU1CT0wobmNpX2hjaV9jbGVhcl9hbGxfcGlwZXMpO1xcbm5ldC9uZmMvbmNpL2hjaS5jLTI3My1cXG5uZXQvbmZjL25jaS9oY2kuYzoyNzQ6c3RhdGljIHZvaWQgbmNpX2hjaV9ldmVudF9yZWNlaXZlZChzdHJ1Y3QgbmNpX2RldiAqbmRldiwgdTggcGlwZSxcXG5uZXQvbmZjL25jaS9oY2kuYy0yNzUtXFx0XFx0XFx0XFx0ICAgdTggZXZlbnQsIHN0cnVjdCBza19idWZmICpza2IpXFxubmV0L25mYy9uY2kvaGNpLmMtMjc2LXtcXG5uZXQvbmZjL25jaS9oY2kuYzoyNzc6XFx0aWYgKG5kZXYtXFx1MDAzZW9wcy1cXHUwMDNlaGNpX2V2ZW50X3JlY2VpdmVkKVxcbm5ldC9uZmMvbmNpL2hjaS5jOjI3ODpcXHRcXHRuZGV2LVxcdTAwM2VvcHMtXFx1MDAzZWhjaV9ldmVudF9yZWNlaXZlZChuZGV2LCBwaXBlLCBldmVudCwgc2tiKTtcXG5uZXQvbmZjL25jaS9oY2kuYy0yNzktfVxcbi0tXFxubmV0L25mYy9uY2kvaGNpLmM9MzgyPXN0YXRpYyB2b2lkIG5jaV9oY2lfaGNwX21lc3NhZ2Vfcngoc3RydWN0IG5jaV9kZXYgKm5kZXYsIHU4IHBpcGUsXFxuLS1cXG5uZXQvbmZjL25jaS9oY2kuYy0zOTItXFx0Y2FzZSBOQ0lfSENJX0hDUF9FVkVOVDpcXG5uZXQvbmZjL25jaS9oY2kuYzozOTM6XFx0XFx0bmNpX2hjaV9ldmVudF9yZWNlaXZlZChuZGV2LCBwaXBlLCBpbnN0cnVjdGlvbiwgc2tiKTtcXG5uZXQvbmZjL25jaS9oY2kuYy0zOTQtXFx0XFx0YnJlYWs7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDEyOjIyOjEwLjc0MjI1MzQ2OFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTc0NDE3NzU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBVU0IgUmVjZWl2ZSBQYXRoKipcblxuQWxyaWdodCwgc28gdGhlIGNsdWUgaGVyZSBpcyB0aGF0IGBldmVudF9yZWNlaXZlZGAgaXMgYmVpbmcgZmxhZ2dlZCBpbiBgbXdpZmlleF91c2JfcmVjdmAuIFRoYXQncyB0aGUgZW50cnkgcG9pbnQsIG9yIGF0IGxlYXN0IGEgY3JpdGljYWwgcGFydCwgZm9yIGhhbmRsaW5nIGluY29taW5nIGRhdGEgb3ZlciBVU0IuIE15IGZpcnN0IHRob3VnaHQgaXMsIGxldCdzIHRyYWNlIHRoaXMgYmFjayBhbmQgc2VlIGV4YWN0bHkgKmhvdyogdGhhdCBgZXZlbnRfcmVjZWl2ZWRgIGZsYWcgaXMgYmVpbmcgc2V0IHdpdGhpbiBgbXdpZmlleF91c2JfcmVjdmAuIElzIGl0IGNvbmRpdGlvbmFsPyBXaGF0J3MgdHJpZ2dlcmluZyB0aGUgc2V0dGluZyBvZiB0aGlzIGZsYWc/IEtub3dpbmcgdGhlIGV4YWN0IGNvbmRpdGlvbnMgd2lsbCBiZSBjcml0aWNhbCB0byB1bmRlcnN0YW5kaW5nIHRoZSBzdGF0ZSBtYWNoaW5lIGFuZCB0aGUgb3ZlcmFsbCBmbG93LiBOZWVkIHRvIGxvb2sgY2xvc2VseSBhdCB0aGF0IGZ1bmN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDc5MCwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDEyOjIyOjE1LjMxNjY3MzcwMloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIzNDk1ODQ0MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4X3VzYl9yZWN2XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg9NTU9ZW51bSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTEyMy0gKiBEbyBub3QgY2hlY2sgZm9yIGRhdGFfcmVjZWl2ZWQgZm9yIFVTQiwgYXMgZGF0YV9yZWNlaXZlZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTI0OiAqIGlzIGhhbmRsZWQgaW4gbXdpZmlleF91c2JfcmVjdiBmb3IgVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xMjUtICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM9NDE9c3RhdGljIGludCBtd2lmaWV4X3VzYl9zdWJtaXRfcnhfdXJiKHN0cnVjdCB1cmJfY29udGV4dCAqY3R4LCBpbnQgc2l6ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNDUtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjQ2OnN0YXRpYyBpbnQgbXdpZmlleF91c2JfcmVjdihzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy00Ny1cXHRcXHRcXHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTggZXApXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM9MTUyPXN0YXRpYyB2b2lkIG13aWZpZXhfdXNiX3J4X2NvbXBsZXRlKHN0cnVjdCB1cmIgKnVyYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE4NzpcXHRcXHRzdGF0dXMgPSBtd2lmaWV4X3VzYl9yZWN2KGFkYXB0ZXIsIHNrYiwgY29udGV4dC1cXHUwMDNlZXApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xODgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTk2LVxcdFxcdFxcdCAqIHVyYiBmb3IgY21kX2VwIHdpbGwgYmUgcmUtc3VibWl0dGVkIGluIGNhbGxiYWNrXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE5NzpcXHRcXHRcXHQgKiBtd2lmaWV4X3VzYl9yZWN2X2NvbXBsZXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE5OC1cXHRcXHRcXHQgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTI6MjI6MTcuNTUxNjM3NzU0WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5MTc2NjAxNzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFVTQiBXaS1GaSBEcml2ZXIncyBFdmVudCBIYW5kbGluZyoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiB0cmFjaW5nIHRoZSBkYXRhIGZsb3cgZm9yIGluY29taW5nIFVTQiBwYWNrZXRzIGluIHRoaXMgTWFydmVsbCBXaS1GaSBkcml2ZXIsIGFuZCBpdCdzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIGBtd2lmaWV4X3VzYl9yZWN2YCBoYW5kbGVzIHRoZSBpbmNvbWluZyBkYXRhIGFuZCBzZXRzIHRoZSBgZXZlbnRfcmVjZWl2ZWRgIGZsYWcuIEZyb20gdGhlcmUsIGBtd2lmaWV4X21haW5fcHJvY2Vzc2Aga2lja3MgaW4sIGNhbGxpbmcgYG13aWZpZXhfcHJvY2Vzc19ldmVudGAuIE5vdywgaGVyZSdzIHdoZXJlIGl0IGdldHMgaW50ZXJlc3Rpbmc6IGlmIHRoZSBgcHJpdi1cdTAwM2Vic3Nfcm9sZWAgaXMgc2V0IHRvIGBNV0lGSUVYX0JTU19ST0xFX1VBUGAsIHRoZSBjb2RlIGJyYW5jaGVzIGludG8gYG13aWZpZXhfcHJvY2Vzc191YXBfZXZlbnRgLlxuXG5UaGlzIHBhdGggaXMgKmFic29sdXRlbHkqIHJlYWNoYWJsZSBhbmQgcHJlc2VudHMgYSBjbGVhciBlbnRyeSBwb2ludCB2aWEgVVNCIGdhZGdldCBvciB2aGNpLiBJdCdzIGEgcHJpbWUgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBJIG5lZWQgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IGBtd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50YCBpdHNlbGYsIHNvIEknbSBoZWFkaW5nIG92ZXIgdG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuY2AgdG8gc2VlIHdoYXQga2luZCBvZiBpbnB1dHMgYW5kIGRhdGEgc3RydWN0dXJlcyBpdCdzIGRlYWxpbmcgd2l0aC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGJlaGF2aW9yIHRob3JvdWdobHkgYmVmb3JlIGRlc2lnbmluZyBlZmZlY3RpdmUgZnV6emluZyBjYW1wYWlnbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1NTAyLCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDEyOjIyOjIzLjQ2OTMwMDEzNloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MjQ2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdWFwX2V2ZW50LmNcIixcbiAgXCJGaXJzdExpbmVcIjogOTAsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDkwOlxcdCAqICAgICAgLSBFVkVOVF9VQVBfQlNTX1NUQVJUXFxuICA5MTpcXHQgKiAgICAgIC0gRVZFTlRfVUFQX0JTU19JRExFXFxuICA5MjpcXHQgKiAgICAgIC0gRVZFTlRfVUFQX01JQ19DT1VOVEVSTUVBU1VSRVM6XFxuICA5MzpcXHQgKi9cXG4gIDk0OlxcdGludCBtd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXFxuICA5NTpcXHR7XFxuICA5NjpcXHRcXHRzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cXHUwMDNlYWRhcHRlcjtcXG4gIDk3OlxcdFxcdGludCBsZW4sIGk7XFxuICA5ODpcXHRcXHR1MzIgZXZlbnRjYXVzZSA9IGFkYXB0ZXItXFx1MDAzZWV2ZW50X2NhdXNlO1xcbiAgOTk6XFx0XFx0c3RydWN0IHN0YXRpb25faW5mbyAqc2luZm87XFxuIDEwMDpcXHRcXHRzdHJ1Y3QgbXdpZmlleF9hc3NvY19ldmVudCAqZXZlbnQ7XFxuIDEwMTpcXHRcXHRzdHJ1Y3QgbXdpZmlleF9zdGFfbm9kZSAqbm9kZTtcXG4gMTAyOlxcdFxcdHU4ICpkZWF1dGhfbWFjO1xcbiAxMDM6XFx0XFx0c3RydWN0IGhvc3RfY21kX2RzXzExbl9iYXRpbWVvdXQgKmJhX3RpbWVvdXQ7XFxuIDEwNDpcXHRcXHR1MTYgY3RybDtcXG4gMTA1OlxcdFxcbiAxMDY6XFx0XFx0c3dpdGNoIChldmVudGNhdXNlKSB7XFxuIDEwNzpcXHRcXHRjYXNlIEVWRU5UX1VBUF9TVEFfQVNTT0M6XFxuIDEwODpcXHRcXHRcXHRzaW5mbyA9IGt6YWxsb2Nfb2JqKCpzaW5mbyk7XFxuIDEwOTpcXHRcXHRcXHRpZiAoIXNpbmZvKVxcbiAxMTA6XFx0XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIDExMTpcXHRcXG4gMTEyOlxcdFxcdFxcdGV2ZW50ID0gKHN0cnVjdCBtd2lmaWV4X2Fzc29jX2V2ZW50ICopXFxuIDExMzpcXHRcXHRcXHRcXHQoYWRhcHRlci1cXHUwMDNlZXZlbnRfYm9keSArIE1XSUZJRVhfVUFQX0VWRU5UX0VYVFJBX0hFQURFUik7XFxuIDExNDpcXHRcXHRcXHRpZiAobGUxNl90b19jcHUoZXZlbnQtXFx1MDAzZXR5cGUpID09IFRMVl9UWVBFX1VBUF9NR01UX0ZSQU1FKSB7XFxuIDExNTpcXHRcXHRcXHRcXHRsZW4gPSAtMTtcXG4gMTE2OlxcdFxcbiAxMTc6XFx0XFx0XFx0XFx0aWYgKGllZWU4MDIxMV9pc19hc3NvY19yZXEoZXZlbnQtXFx1MDAzZWZyYW1lX2NvbnRyb2wpKVxcbiAxMTg6XFx0XFx0XFx0XFx0XFx0bGVuID0gMDtcXG4gMTE5OlxcdFxcdFxcdFxcdGVsc2UgaWYgKGllZWU4MDIxMV9pc19yZWFzc29jX3JlcShldmVudC1cXHUwMDNlZnJhbWVfY29udHJvbCkpXFxuIDEyMDpcXHRcXHRcXHRcXHRcXHQvKiBUaGVyZSB3aWxsIGJlIEVUSF9BTEVOIGJ5dGVzIG9mXFxuIDEyMTpcXHRcXHRcXHRcXHRcXHQgKiBjdXJyZW50X2FwX2FkZHIgYmVmb3JlIHRoZSByZS1hc3NvYyBpZXMuXFxuIDEyMjpcXHRcXHRcXHRcXHRcXHQgKi9cXG4gMTIzOlxcdFxcdFxcdFxcdFxcdGxlbiA9IEVUSF9BTEVOO1xcbiAxMjQ6XFx0XFxuIDEyNTpcXHRcXHRcXHRcXHRpZiAobGVuICE9IC0xKSB7XFxuIDEyNjpcXHRcXHRcXHRcXHRcXHRzaW5mby1cXHUwMDNlYXNzb2NfcmVxX2llcyA9IFxcdTAwMjZldmVudC1cXHUwMDNlZGF0YVtsZW5dO1xcbiAxMjc6XFx0XFx0XFx0XFx0XFx0bGVuID0gKHU4ICopc2luZm8tXFx1MDAzZWFzc29jX3JlcV9pZXMgLVxcbiAxMjg6XFx0XFx0XFx0XFx0XFx0ICAgICAgKHU4ICopXFx1MDAyNmV2ZW50LVxcdTAwM2VmcmFtZV9jb250cm9sO1xcbiAxMjk6XFx0XFxuIDEzMDpcXHRcXHRcXHRcXHRcXHQvKlxcbiAxMzE6XFx0XFx0XFx0XFx0XFx0ICogZXZlbnQtXFx1MDAzZWxlbiBpcyByZXBvcnRlZCBieSB0aGUgZGV2aWNlIGZpcm13YXJlIGFuZCBpcyBub3RcXG4gMTMyOlxcdFxcdFxcdFxcdFxcdCAqIG90aGVyd2lzZSB2YWxpZGF0ZWQuICBSZWplY3QgYSBsZW5ndGggdGhhdCB1bmRlcmZsb3dzIHRoZVxcbiAxMzM6XFx0XFx0XFx0XFx0XFx0ICogaGVhZGVyLCBvciB0aGF0IHdvdWxkIHBsYWNlIHRoZSBhc3NvY2lhdGlvbiByZXF1ZXN0IElFc1xcbiAxMzQ6XFx0XFx0XFx0XFx0XFx0ICogb3V0c2lkZSB0aGUgZml4ZWQtc2l6ZSBldmVudF9ib2R5W10gYnVmZmVyIHRoZSBldmVudCB3YXNcXG4gMTM1OlxcdFxcdFxcdFxcdFxcdCAqIGNvcGllZCBpbnRvOyBvdGhlcndpc2UgdGhlIElFIHdhbGsgaW5cXG4gMTM2OlxcdFxcdFxcdFxcdFxcdCAqIG13aWZpZXhfc2V0X3N0YV9odF9jYXAoKSByZWFkcyBwYXN0IGV2ZW50X2JvZHkgYW5kIG91dFxcbiAxMzc6XFx0XFx0XFx0XFx0XFx0ICogb2YgdGhlIGFkYXB0ZXIgc2xhYiBvYmplY3QuXFxuIDEzODpcXHRcXHRcXHRcXHRcXHQgKi9cXG4gMTM5OlxcdFxcdFxcdFxcdFxcdGlmIChsZTE2X3RvX2NwdShldmVudC1cXHUwMDNlbGVuKSBcXHUwMDNjIGxlbiB8fFxcbiAxNDA6XFx0XFx0XFx0XFx0XFx0ICAgICh1OCAqKVxcdTAwMjZldmVudC1cXHUwMDNlZnJhbWVfY29udHJvbCArIGxlMTZfdG9fY3B1KGV2ZW50LVxcdTAwM2VsZW4pIFxcdTAwM2VcXG4gMTQxOlxcdFxcdFxcdFxcdFxcdCAgICBhZGFwdGVyLVxcdTAwM2VldmVudF9ib2R5ICsgTUFYX0VWRU5UX1NJWkUpIHtcXG4gMTQyOlxcdFxcdFxcdFxcdFxcdFxcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIEVSUk9SLFxcbiAxNDM6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIFxcXCJpbnZhbGlkIFNUQSBhc3NvYyBldmVudCBsZW5ndGhcXFxcblxcXCIpO1xcbiAxNDQ6XFx0XFx0XFx0XFx0XFx0XFx0a2ZyZWUoc2luZm8pO1xcbiAxNDU6XFx0XFx0XFx0XFx0XFx0XFx0cmV0dXJuIC0xO1xcbiAxNDY6XFx0XFx0XFx0XFx0XFx0fVxcbiAxNDc6XFx0XFx0XFx0XFx0XFx0c2luZm8tXFx1MDAzZWFzc29jX3JlcV9pZXNfbGVuID1cXG4gMTQ4OlxcdFxcdFxcdFxcdFxcdFxcdGxlMTZfdG9fY3B1KGV2ZW50LVxcdTAwM2VsZW4pIC0gKHUxNilsZW47XFxuIDE0OTpcXHRcXHRcXHRcXHR9XFxuIDE1MDpcXHRcXHRcXHR9XFxuIDE1MTpcXHRcXHRcXHRjZmc4MDIxMV9uZXdfc3RhKHByaXYtXFx1MDAzZW5ldGRldi1cXHUwMDNlaWVlZTgwMjExX3B0ciwgZXZlbnQtXFx1MDAzZXN0YV9hZGRyLFxcbiAxNTI6XFx0XFx0XFx0XFx0XFx0IHNpbmZvLCBHRlBfS0VSTkVMKTtcXG4gMTUzOlxcdFxcbiAxNTQ6XFx0XFx0XFx0bm9kZSA9IG13aWZpZXhfYWRkX3N0YV9lbnRyeShwcml2LCBldmVudC1cXHUwMDNlc3RhX2FkZHIpO1xcbiAxNTU6XFx0XFx0XFx0aWYgKCFub2RlKSB7XFxuIDE1NjpcXHRcXHRcXHRcXHRtd2lmaWV4X2RiZyhhZGFwdGVyLCBFUlJPUixcXG4gMTU3OlxcdFxcdFxcdFxcdFxcdCAgICBcXFwiY291bGQgbm90IGNyZWF0ZSBzdGF0aW9uIGVudHJ5IVxcXFxuXFxcIik7XFxuIDE1ODpcXHRcXHRcXHRcXHRrZnJlZShzaW5mbyk7XFxuIDE1OTpcXHRcXHRcXHRcXHRyZXR1cm4gLTE7XFxuIDE2MDpcXHRcXHRcXHR9XFxuIDE2MTpcXHRcXG4gMTYyOlxcdFxcdFxcdGlmICghcHJpdi1cXHUwMDNlYXBfMTFuX2VuYWJsZWQpIHtcXG4gMTYzOlxcdFxcdFxcdFxcdGtmcmVlKHNpbmZvKTtcXG4gMTY0OlxcdFxcdFxcdFxcdGJyZWFrO1xcbiAxNjU6XFx0XFx0XFx0fVxcbiAxNjY6XFx0XFxuIDE2NzpcXHRcXHRcXHRtd2lmaWV4X3NldF9zdGFfaHRfY2FwKHByaXYsIHNpbmZvLVxcdTAwM2Vhc3NvY19yZXFfaWVzLFxcbiAxNjg6XFx0XFx0XFx0XFx0XFx0ICAgICAgIHNpbmZvLVxcdTAwM2Vhc3NvY19yZXFfaWVzX2xlbiwgbm9kZSk7XFxuIDE2OTpcXHRcXG4gMTcwOlxcdFxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBNQVhfTlVNX1RJRDsgaSsrKSB7XFxuIDE3MTpcXHRcXHRcXHRcXHRpZiAobm9kZS1cXHUwMDNlaXNfMTFuX2VuYWJsZWQpXFxuIDE3MjpcXHRcXHRcXHRcXHRcXHRub2RlLVxcdTAwM2VhbXBkdV9zdGFbaV0gPVxcbiAxNzM6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgcHJpdi1cXHUwMDNlYWdncl9wcmlvX3RibFtpXS5hbXBkdV91c2VyO1xcbiAxNzQ6XFx0XFx0XFx0XFx0ZWxzZVxcbiAxNzU6XFx0XFx0XFx0XFx0XFx0bm9kZS1cXHUwMDNlYW1wZHVfc3RhW2ldID0gQkFfU1RSRUFNX05PVF9BTExPV0VEO1xcbiAxNzY6XFx0XFx0XFx0fVxcbiAxNzc6XFx0XFx0XFx0bWVtc2V0KG5vZGUtXFx1MDAzZXJ4X3NlcSwgMHhmZiwgc2l6ZW9mKG5vZGUtXFx1MDAzZXJ4X3NlcSkpO1xcbiAxNzg6XFx0XFx0XFx0a2ZyZWUoc2luZm8pO1xcbiAxNzk6XFx0XFx0XFx0YnJlYWs7XFxuIDE4MDpcXHRcXHRjYXNlIEVWRU5UX1VBUF9TVEFfREVBVVRIOlxcbiAxODE6XFx0XFx0XFx0ZGVhdXRoX21hYyA9IGFkYXB0ZXItXFx1MDAzZWV2ZW50X2JvZHkgK1xcbiAxODI6XFx0XFx0XFx0XFx0ICAgICBNV0lGSUVYX1VBUF9FVkVOVF9FWFRSQV9IRUFERVI7XFxuIDE4MzpcXHRcXHRcXHRjZmc4MDIxMV9kZWxfc3RhKHByaXYtXFx1MDAzZW5ldGRldi1cXHUwMDNlaWVlZTgwMjExX3B0ciwgZGVhdXRoX21hYyxcXG4gMTg0OlxcdFxcdFxcdFxcdFxcdCBHRlBfS0VSTkVMKTtcXG4gMTg1OlxcdFxcbiAxODY6XFx0XFx0XFx0aWYgKHByaXYtXFx1MDAzZWFwXzExbl9lbmFibGVkKSB7XFxuIDE4NzpcXHRcXHRcXHRcXHRtd2lmaWV4XzExbl9kZWxfcnhfcmVvcmRlcl90YmxfYnlfdGEocHJpdiwgZGVhdXRoX21hYyk7XFxuIDE4ODpcXHRcXHRcXHRcXHRtd2lmaWV4X2RlbF90eF9iYV9zdHJlYW1fdGJsX2J5X3JhKHByaXYsIGRlYXV0aF9tYWMpO1xcbiAxODk6XFx0XFx0XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxMjoyMjoyMy40NjkzODM5NjZaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTQ2MjAxNTcxMDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgbXdpZmlleF9wcm9jZXNzX3VhcF9ldmVudGAgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgZm9jdXMgbGFuZHMgb24gYG13aWZpZXhfcHJvY2Vzc191YXBfZXZlbnRgLiBUaGlzIGZ1bmN0aW9uIGhhbmRsZXMgYEVWRU5UX1VBUF9TVEFfQVNTT0NgIGFuZCByZWxhdGVkIGV2ZW50cywgc28gaXQncyBjbGVhcmx5IGltcG9ydGFudCBmb3IgdGhlIG92ZXJhbGwgd2lyZWxlc3MgZnVuY3Rpb25hbGl0eS4gSSBjYW4gY29uZmlybSBpdCdzIGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZSwgd2hpY2ggaXMgZ29vZC5cblxuVGhlIHBhdGNoIGl0c2VsZiBpcyBhZGRpbmcgYSBib3VuZHMgY2hlY2ssIHNwZWNpZmljYWxseSB0byBwcmV2ZW50IGFuIG91dC1vZi1ib3VuZHMgcmVhZCB3aXRoaW4gYG13aWZpZXhfc2V0X3N0YV9odF9jYXBgLCB3aGljaCBpcyBjYWxsZWQgbGF0ZXIgaW4gYG13aWZpZXhfcHJvY2Vzc191YXBfZXZlbnRgLiBUaGlzIGlzIGEgY2xhc3NpYyB2dWxuZXJhYmlsaXR5IGZpeCwgYW5kIEkgYXBwcmVjaWF0ZSB0aGUgcHJvYWN0aXZlIGFwcHJvYWNoLlxuXG5Ob3csIGxldCdzIG5haWwgZG93biB0aGUgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMuIFRoZSBjb2RlIHJlZmVyZW5jZXMgYE1XSUZJRVhgIGFuZCBgTVdJRklFWF9VU0JgLiBgTVdJRklFWF9VU0JgIHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCwgZGVwZW5kZW50IG9uIGJvdGggYE1XSUZJRVhgIGFuZCBgVVNCYCwgYW5kIGBNV0lGSUVYYCBpcyBkZXBlbmRlbnQgb24gYENGRzgwMjExYC4gU28sIGl0J3MgcHJldHR5IGNsZWFyIHRoYXQgdGhlc2UgYXJlIHRoZSBrZXkgY29uZmlndXJhdGlvbnMgdG8ga2VlcCBpbiBtaW5kLlxuXG5JJ20gZG91YmxlLWNoZWNraW5nIHRvIGVuc3VyZSB0aGF0IGBtd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50YCBpcyB0aGUgKm9ubHkqIGZ1bmN0aW9uIG1vZGlmaWVkIGJ5IHRoaXMgcGF0Y2gsIGFuZCB5ZXAsIGl0IGlzLiBUaGF0IHNpbXBsaWZpZXMgdGhpbmdzLlxuXG5OZXh0LCBJIG5lZWQgdG8gY29uc2lkZXIgd2hhdCAqb3RoZXIqIGZ1bmN0aW9ucyBhcmUgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhpcyBjaGFuZ2UuIFdoaWxlIGBtd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50YCBpcyB0aGUgcHJpbWFyeSBmb2N1cywgaXQncyBjbGVhciB0aGF0IHRoZSBhY3R1YWwgdnVsbmVyYWJpbGl0eSBsaWVzIGluIGBtd2lmaWV4X3NldF9zdGFfaHRfY2FwYC4gU28sIEknbGwgZGVmaW5pdGVseSB3YW50IHRvIGluY2x1ZGUgYG13aWZpZXhfc2V0X3N0YV9odF9jYXBgIGluIG15IGxpc3Qgb2Ygc2lnbmlmaWNhbnQgZnVuY3Rpb25zIHRvbywgYXMgaXQncyB0aGUgb25lIGJlaW5nIHByb3RlY3RlZCBieSB0aGUgbmV3IGNoZWNrLlxuXG5JbiBjb25jbHVzaW9uLCBJJ2xsIGJlIGtlZXBpbmcgYSB2ZXJ5IGNsb3NlIGV5ZSBvbiBib3RoIGBtd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50YCAod2hlcmUgdGhlIHBhdGNoIGlzIGltcGxlbWVudGVkKSBhbmQgYG13aWZpZXhfc2V0X3N0YV9odF9jYXBgICh0aGUgZnVuY3Rpb24gdGhhdCB3YXMgdnVsbmVyYWJsZSkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3NjQ3LCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTI6MjI6MzguMDg5NTQ0NjhaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4NTQzNTg0MzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXdpZmlleF9zZXRfc3RhX2h0X2NhcFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oPTE1OTA9dm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTU5MTptd2lmaWV4X3NldF9zdGFfaHRfY2FwKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIGNvbnN0IHU4ICppZXMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xNTkyLVxcdFxcdCAgICAgICBpbnQgaWVzX2xlbiwgc3RydWN0IG13aWZpZXhfc3RhX25vZGUgKm5vZGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF9ldmVudC5jPTk0PWludCBtd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdWFwX2V2ZW50LmMtMTM1LVxcdFxcdFxcdFxcdCAqIGNvcGllZCBpbnRvOyBvdGhlcndpc2UgdGhlIElFIHdhbGsgaW5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdWFwX2V2ZW50LmM6MTM2OlxcdFxcdFxcdFxcdCAqIG13aWZpZXhfc2V0X3N0YV9odF9jYXAoKSByZWFkcyBwYXN0IGV2ZW50X2JvZHkgYW5kIG91dFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYy0xMzctXFx0XFx0XFx0XFx0ICogb2YgdGhlIGFkYXB0ZXIgc2xhYiBvYmplY3QuXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdWFwX2V2ZW50LmMtMTY2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYzoxNjc6XFx0XFx0bXdpZmlleF9zZXRfc3RhX2h0X2NhcChwcml2LCBzaW5mby1cXHUwMDNlYXNzb2NfcmVxX2llcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdWFwX2V2ZW50LmMtMTY4LVxcdFxcdFxcdFxcdCAgICAgICBzaW5mby1cXHUwMDNlYXNzb2NfcmVxX2llc19sZW4sIG5vZGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuYz03MTI9dm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmM6NzEzOm13aWZpZXhfc2V0X3N0YV9odF9jYXAoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgY29uc3QgdTggKmllcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jLTcxNC1cXHRcXHQgICAgICAgaW50IGllc19sZW4sIHN0cnVjdCBtd2lmaWV4X3N0YV9ub2RlICpub2RlKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxMjoyMjo0MS45NDM5NDE2NTRaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjEwNjkwODkyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBGdXp6aW5nIFN0cmF0ZWd5IGZvciBUaGlzIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBsb29rZWQgYXQgdGhpcyBwYXRjaCBhbmQsIHllcywgYG13aWZpZXhfc2V0X3N0YV9odF9jYXBgIGRlZmluaXRlbHkgc2VlbXMgbGlrZSBhIHN0cm9uZyBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIEl0J3MgYSBrZXkgZnVuY3Rpb24gaW4gdGhpcyBzY2VuYXJpby5cblxuTm93LCBsZXQncyB0aGluayBhYm91dCB0aGUgb3RoZXIgY29uZmlndXJhdGlvbnMuIFRoZSBtYWluIG9uZSBoZXJlLCBvZiBjb3Vyc2UsIGlzIGBNV0lGSUVYX1VTQmAuIEkgY291bGQgYWxzbyBjb25zaWRlciBgTVdJRklFWF9TRElPYCBhbmQgYE1XSUZJRVhfUENJRWAgaWYgdGhleSBwcmVzZW50IHBsYXVzaWJsZSBmdXp6aW5nIHZlY3RvcnMsIGJ1dCByZWFsaXN0aWNhbGx5LCBgTVdJRklFWF9VU0JgIGlzIHRoZSBtb3N0IGxpa2VseSBhdmVudWUsIGVzcGVjaWFsbHkgZ2l2ZW4gdGhlIFVTQiBnYWRnZXQgcG90ZW50aWFsLiBUaGVyZWZvcmUsIEknbSBnb2luZyB0byBrZWVwIGl0IHN0cmFpZ2h0Zm9yd2FyZCBhbmQganVzdCBpbmNsdWRlIGBNV0lGSUVYYCBhbmQgYE1XSUZJRVhfVVNCYC4gTm8gbmVlZCB0byBvdmVyY29tcGxpY2F0ZSB0aGluZ3MgYXQgdGhpcyBzdGFnZS5cblxuQWxyaWdodCwgbGV0IG1lIHN1bW1hcml6ZSBteSBhcHByb2FjaCBub3c6XG5cbiogICAqKmBXb3J0aEZ1enppbmc6IHRydWVgKio6IEFic29sdXRlbHksIHRoaXMgaXMgYSBjbGVhciBmdXp6aW5nIHRhcmdldC5cbiogICAqKmBGb2N1c1N5bWJvbHM6IG13aWZpZXhfcHJvY2Vzc191YXBfZXZlbnQsIG13aWZpZXhfc2V0X3N0YV9odF9jYXBgKio6IFRoZXNlIGFyZSB0aGUga2V5IGZ1bmN0aW9ucyBJJ20gemVyb2luZyBpbiBvbjsgdGhlIGhlYXJ0IG9mIHRoZSB2dWxuZXJhYmlsaXR5IGFuZCB0aGUgcG90ZW50aWFsbHkgZXhwbG9pdGFibGUgY29kZS5cbiogICAqKmBFbmFibGVDb25maWdzOiBNV0lGSUVYLCBNV0lGSUVYX1VTQmAqKjogVGhpcyBuYXJyb3dzIGRvd24gdGhlIHRlc3QgdG8gdGhlIHBlcnRpbmVudCBkcml2ZXJzLlxuKiAgICoqYFJlYXNvbmluZzogVGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgdG8gYW4gZXZlbnQgbGVuZ3RoIHJlcG9ydGVkIGJ5IHRoZSBkZXZpY2UgZmlybXdhcmUgaW4gbXdpZmlleF9wcm9jZXNzX3VhcF9ldmVudCB0byBwcmV2ZW50IGFuIG91dC1vZi1ib3VuZHMgcmVhZCBpbiBtd2lmaWV4X3NldF9zdGFfaHRfY2FwLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSB0aGUgVVNCIGRyaXZlciAobXdpZmlleF91c2IpIHdoaWNoIGNhbiBiZSBmdXp6ZWQgdXNpbmcgVVNCIGVtdWxhdGlvbi5gKio6IFRoaXMgaXMgdGhlIGNvbmNpc2UgcmF0aW9uYWxlOyB0aGUgcGF0Y2ggYWRkcmVzc2VzIGEgZmlybXdhcmUgZXZlbnQgbGVuZ3RoIGlzc3VlIGxlYWRpbmcgdG8gYW4gb3V0LW9mLWJvdW5kcyByZWFkLCBhbmQgdGhlIFVTQiBkcml2ZXIgaXMgdGhlIGVudHJ5IHBvaW50IGZvciB0aGlzIGJ1Zy4gRnV6emluZyB3aXRoIFVTQiBlbXVsYXRpb24gaXMgdGhlIGNsZWFyIHBhdGguXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4OTY2LCJPdXRwdXRUb2tlbnMiOjE0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxMjoyMjo0OC4wNTA4NTI5MzhaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjYzMTM0MDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1XSUZJRVhcIixcbiAgICBcIk1XSUZJRVhfVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXdpZmlleF9wcm9jZXNzX3VhcF9ldmVudFwiLFxuICAgIFwibXdpZmlleF9zZXRfc3RhX2h0X2NhcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgdG8gYW4gZXZlbnQgbGVuZ3RoIHJlcG9ydGVkIGJ5IHRoZSBkZXZpY2UgZmlybXdhcmUgaW4gYG13aWZpZXhfcHJvY2Vzc191YXBfZXZlbnRgIHRvIHByZXZlbnQgYW4gb3V0LW9mLWJvdW5kcyByZWFkIGluIGBtd2lmaWV4X3NldF9zdGFfaHRfY2FwYC4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgdGhlIFVTQiBkcml2ZXIgKGBtd2lmaWV4X3VzYmApIHdoaWNoIGNhbiBiZSBmdXp6ZWQgdXNpbmcgVVNCIGVtdWxhdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNV0lGSUVYXCIsXG4gICAgXCJNV0lGSUVYX1VTQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm13aWZpZXhfcHJvY2Vzc191YXBfZXZlbnRcIixcbiAgICBcIm13aWZpZXhfc2V0X3N0YV9odF9jYXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIHRvIGFuIGV2ZW50IGxlbmd0aCByZXBvcnRlZCBieSB0aGUgZGV2aWNlIGZpcm13YXJlIGluIGBtd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50YCB0byBwcmV2ZW50IGFuIG91dC1vZi1ib3VuZHMgcmVhZCBpbiBgbXdpZmlleF9zZXRfc3RhX2h0X2NhcGAuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgdmlhIHRoZSBVU0IgZHJpdmVyIChgbXdpZmlleF91c2JgKSB3aGljaCBjYW4gYmUgZnV6emVkIHVzaW5nIFVTQiBlbXVsYXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowjnc9v[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-29 12:05:39 +0000 UTC FinishedAt: 2026-06-29 12:22:49 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "dc59e4fea9d83f03bad6bddf3fa2e52491777482", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MWIFIEX", "MWIFIEX_USB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "dc59e4fea9d83f03bad6bddf3fa2e52491777482", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MWIFIEX", "MWIFIEX_USB" ], "series_id": "fe800a61-cef0-4250-90e5-9387b496973d" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mwifiex_process_uap_event", "mwifiex_set_sta_ht_cap" ], "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+CgkJCTx0ZD4yMDI2LzA2LzI5IDEyOjIxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01XSUZJRVgmIzM0OywKICAgICYjMzQ7TVdJRklFWF9VU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50JiMzNDssCiAgICAmIzM0O213aWZpZXhfc2V0X3N0YV9odF9jYXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayB0byBhbiBldmVudCBsZW5ndGggcmVwb3J0ZWQgYnkgdGhlIGRldmljZSBmaXJtd2FyZSBpbiBgbXdpZmlleF9wcm9jZXNzX3VhcF9ldmVudGAgdG8gcHJldmVudCBhbiBvdXQtb2YtYm91bmRzIHJlYWQgaW4gYG13aWZpZXhfc2V0X3N0YV9odF9jYXBgLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSB0aGUgVVNCIGRyaXZlciAoYG13aWZpZXhfdXNiYCkgd2hpY2ggY2FuIGJlIGZ1enplZCB1c2luZyBVU0IgZW11bGF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDEyOjIxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgOGY1MDk1Yjg2ZWNlNmE5Yzg1NjQ0NzdkZTA2OTRmOWRlMWFkN2ZhMVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVuIDI5IDEyOjIwOjU5IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuY1xuaW5kZXggNjc5ZmRhZTBmMDAxYTEuLmFkY2E3ZGEyOWYwZjJiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF9ldmVudC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdWFwX2V2ZW50LmNcbkBAIC0xMjYsNiAmIzQzOzEyNiwyNCBAQCBpbnQgbXdpZmlleF9wcm9jZXNzX3VhcF9ldmVudChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxuIFx0XHRcdFx0c2luZm8tXHUwMDNlYXNzb2NfcmVxX2llcyA9IFx1MDAyNmV2ZW50LVx1MDAzZWRhdGFbbGVuXTtcbiBcdFx0XHRcdGxlbiA9ICh1OCAqKXNpbmZvLVx1MDAzZWFzc29jX3JlcV9pZXMgLVxuIFx0XHRcdFx0ICAgICAgKHU4ICopXHUwMDI2ZXZlbnQtXHUwMDNlZnJhbWVfY29udHJvbDtcbiYjNDM7XG4mIzQzO1x0XHRcdFx0LypcbiYjNDM7XHRcdFx0XHQgKiBldmVudC1cdTAwM2VsZW4gaXMgcmVwb3J0ZWQgYnkgdGhlIGRldmljZSBmaXJtd2FyZSBhbmQgaXMgbm90XG4mIzQzO1x0XHRcdFx0ICogb3RoZXJ3aXNlIHZhbGlkYXRlZC4gIFJlamVjdCBhIGxlbmd0aCB0aGF0IHVuZGVyZmxvd3MgdGhlXG4mIzQzO1x0XHRcdFx0ICogaGVhZGVyLCBvciB0aGF0IHdvdWxkIHBsYWNlIHRoZSBhc3NvY2lhdGlvbiByZXF1ZXN0IElFc1xuJiM0MztcdFx0XHRcdCAqIG91dHNpZGUgdGhlIGZpeGVkLXNpemUgZXZlbnRfYm9keVtdIGJ1ZmZlciB0aGUgZXZlbnQgd2FzXG4mIzQzO1x0XHRcdFx0ICogY29waWVkIGludG87IG90aGVyd2lzZSB0aGUgSUUgd2FsayBpblxuJiM0MztcdFx0XHRcdCAqIG13aWZpZXhfc2V0X3N0YV9odF9jYXAoKSByZWFkcyBwYXN0IGV2ZW50X2JvZHkgYW5kIG91dFxuJiM0MztcdFx0XHRcdCAqIG9mIHRoZSBhZGFwdGVyIHNsYWIgb2JqZWN0LlxuJiM0MztcdFx0XHRcdCAqL1xuJiM0MztcdFx0XHRcdGlmIChsZTE2X3RvX2NwdShldmVudC1cdTAwM2VsZW4pIFx1MDAzYyBsZW4gfHxcbiYjNDM7XHRcdFx0XHQgICAgKHU4ICopXHUwMDI2ZXZlbnQtXHUwMDNlZnJhbWVfY29udHJvbCAmIzQzOyBsZTE2X3RvX2NwdShldmVudC1cdTAwM2VsZW4pIFx1MDAzZVxuJiM0MztcdFx0XHRcdCAgICBhZGFwdGVyLVx1MDAzZWV2ZW50X2JvZHkgJiM0MzsgTUFYX0VWRU5UX1NJWkUpIHtcbiYjNDM7XHRcdFx0XHRcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIEVSUk9SLFxuJiM0MztcdFx0XHRcdFx0XHQgICAgXCYjMzQ7aW52YWxpZCBTVEEgYXNzb2MgZXZlbnQgbGVuZ3RoXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdFx0XHRcdGtmcmVlKHNpbmZvKTtcbiYjNDM7XHRcdFx0XHRcdHJldHVybiAtMTtcbiYjNDM7XHRcdFx0XHR9XG4gXHRcdFx0XHRzaW5mby1cdTAwM2Vhc3NvY19yZXFfaWVzX2xlbiA9XG4gXHRcdFx0XHRcdGxlMTZfdG9fY3B1KGV2ZW50LVx1MDAzZWxlbikgLSAodTE2KWxlbjtcbiBcdFx0XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTI6MjE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TVdJRklFWCYjMzQ7LAogICAgJiMzNDtNV0lGSUVYX1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O213aWZpZXhfcHJvY2Vzc191YXBfZXZlbnQmIzM0OywKICAgICYjMzQ7bXdpZmlleF9zZXRfc3RhX2h0X2NhcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIHRvIGFuIGV2ZW50IGxlbmd0aCByZXBvcnRlZCBieSB0aGUgZGV2aWNlIGZpcm13YXJlIGluIGBtd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50YCB0byBwcmV2ZW50IGFuIG91dC1vZi1ib3VuZHMgcmVhZCBpbiBgbXdpZmlleF9zZXRfc3RhX2h0X2NhcGAuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgdmlhIHRoZSBVU0IgZHJpdmVyIChgbXdpZmlleF91c2JgKSB3aGljaCBjYW4gYmUgZnV6emVkIHVzaW5nIFVTQiBlbXVsYXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDhmNTA5NWI4NmVjZTZhOWM4NTY0NDc3ZGUwNjk0ZjlkZTFhZDdmYTEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEp1biAyOSAxMjoyMDo1OSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYwppbmRleCA2NzlmZGFlMGYwMDFhMS4uYWRjYTdkYTI5ZjBmMmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdWFwX2V2ZW50LmMKQEAgLTEyNiw2ICYjNDM7MTI2LDI0IEBAIGludCBtd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpCiAJCQkJc2luZm8tJmd0O2Fzc29jX3JlcV9pZXMgPSAmYW1wO2V2ZW50LSZndDtkYXRhW2xlbl07CiAJCQkJbGVuID0gKHU4ICopc2luZm8tJmd0O2Fzc29jX3JlcV9pZXMgLQogCQkJCSAgICAgICh1OCAqKSZhbXA7ZXZlbnQtJmd0O2ZyYW1lX2NvbnRyb2w7CiYjNDM7CiYjNDM7CQkJCS8qCiYjNDM7CQkJCSAqIGV2ZW50LSZndDtsZW4gaXMgcmVwb3J0ZWQgYnkgdGhlIGRldmljZSBmaXJtd2FyZSBhbmQgaXMgbm90CiYjNDM7CQkJCSAqIG90aGVyd2lzZSB2YWxpZGF0ZWQuICBSZWplY3QgYSBsZW5ndGggdGhhdCB1bmRlcmZsb3dzIHRoZQomIzQzOwkJCQkgKiBoZWFkZXIsIG9yIHRoYXQgd291bGQgcGxhY2UgdGhlIGFzc29jaWF0aW9uIHJlcXVlc3QgSUVzCiYjNDM7CQkJCSAqIG91dHNpZGUgdGhlIGZpeGVkLXNpemUgZXZlbnRfYm9keVtdIGJ1ZmZlciB0aGUgZXZlbnQgd2FzCiYjNDM7CQkJCSAqIGNvcGllZCBpbnRvOyBvdGhlcndpc2UgdGhlIElFIHdhbGsgaW4KJiM0MzsJCQkJICogbXdpZmlleF9zZXRfc3RhX2h0X2NhcCgpIHJlYWRzIHBhc3QgZXZlbnRfYm9keSBhbmQgb3V0CiYjNDM7CQkJCSAqIG9mIHRoZSBhZGFwdGVyIHNsYWIgb2JqZWN0LgomIzQzOwkJCQkgKi8KJiM0MzsJCQkJaWYgKGxlMTZfdG9fY3B1KGV2ZW50LSZndDtsZW4pICZsdDsgbGVuIHx8CiYjNDM7CQkJCSAgICAodTggKikmYW1wO2V2ZW50LSZndDtmcmFtZV9jb250cm9sICYjNDM7IGxlMTZfdG9fY3B1KGV2ZW50LSZndDtsZW4pICZndDsKJiM0MzsJCQkJICAgIGFkYXB0ZXItJmd0O2V2ZW50X2JvZHkgJiM0MzsgTUFYX0VWRU5UX1NJWkUpIHsKJiM0MzsJCQkJCW13aWZpZXhfZGJnKGFkYXB0ZXIsIEVSUk9SLAomIzQzOwkJCQkJCSAgICAmIzM0O2ludmFsaWQgU1RBIGFzc29jIGV2ZW50IGxlbmd0aFxuJiMzNDspOwomIzQzOwkJCQkJa2ZyZWUoc2luZm8pOwomIzQzOwkJCQkJcmV0dXJuIC0xOwomIzQzOwkJCQl9CiAJCQkJc2luZm8tJmd0O2Fzc29jX3JlcV9pZXNfbGVuID0KIAkJCQkJbGUxNl90b19jcHUoZXZlbnQtJmd0O2xlbikgLSAodTE2KWxlbjsKIAkJCX0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTI6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjEwNQoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDI5MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQb3RlbnRpYWwgRnV6emluZyBUYXJnZXQ6IGBtd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50YCoqCgpPa2F5LCBzbyB3ZSBoYXZlIHRoaXMgcGF0Y2ggaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuY2AuIExvb2tzIGxpa2UgaXQmIzM5O3MgYSBjcml0aWNhbCBsZW5ndGggY2hlY2sgaW4gYG13aWZpZXhfcHJvY2Vzc191YXBfZXZlbnRgLCBkZXNpZ25lZCB0byBwcmV2ZW50IGFuIG91dC1vZi1ib3VuZHMgcmVhZC4gVGhlIHBhdGNoIHZhbGlkYXRlcyBgZXZlbnQtJmd0O2xlbmAgYWdhaW5zdCB0aGUgcmVjZWl2ZWQgZGF0YSBidWZmZXIgc2l6ZSwgZXNzZW50aWFsbHkgbWFraW5nIHN1cmUgd2UgZG9uJiMzOTt0IHRyeSB0byByZWFkIGJleW9uZCB0aGUgYWxsb2NhdGVkIG1lbW9yeS4gU21hcnQgbW92ZS4KCk5vdywgdGhlIGludGVyZXN0aW5nIHF1ZXN0aW9uIGlzOiBjYW4gd2UgcmVhY2ggYG13aWZpZXhfcHJvY2Vzc191YXBfZXZlbnRgIGluIGEgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudD8gYG13aWZpZXhgIGlzIHNwZWNpZmljYWxseSBmb3IgTWFydmVsbCBXaUZpIGhhcmR3YXJlLCBzbyB3ZSBjYW4mIzM5O3QganVzdCB0aHJvdyBhIGdlbmVyaWMgbWFjODAyMTEgZGV2aWNlIGF0IGl0LiAqSG93ZXZlciosIHRoaXMgaXMgd2hlcmUgaXQgZ2V0cyBpbnRlcmVzdGluZy4gSSByZW1lbWJlciBgbXdpZmlleGAgaGFzIHN1cHBvcnQgZm9yIFVTQiEgSXQgaGFzIGEgYG13aWZpZXhfdXNiYCBkcml2ZXIuCgpBaGEhIFVTQiBkZXZpY2VzIGFyZSBvZnRlbiBxdWl0ZSBhbWVuYWJsZSB0byBlbXVsYXRpb24uIFdlIGNvdWxkIHVzZSBVU0IgZ2FkZ2V0LCBkdW1teV9oY2QsIG9yIHZoY2ktaGNkIGZvciB0aGlzLiBXYWl0LCBJIHJlY2FsbCB0aGF0IHN5emthbGxlciBoYXMgc3VwcG9ydCBmb3IgZnV6emluZyBVU0IgZGV2aWNlcyB1c2luZyB2aGNpLWhjZCEgVGhhdCYjMzk7cyBwZXJmZWN0LiBUaGlzIG1lYW5zIHdlIHNob3VsZCBiZSBhYmxlIHRvIGdldCBgbXdpZmlleF91c2JgIHVwIGFuZCBydW5uaW5nIHVuZGVyIGEgZnV6emVyISBOb3cgSSBqdXN0IG5lZWQgdG8gY29uZmlybSB0aGUgS2NvbmZpZyBvcHRpb25zIGZvciBgbXdpZmlleGAgdG8gbWFrZSBzdXJlIHdlIGNhbiBidWlsZCBpdCB3aXRoIHRoZSByaWdodCBjb25maWd1cmF0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxMjoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jbWRldnQuYz00NzA9aW50IG13aWZpZXhfcHJvY2Vzc19ldmVudChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jbWRldnQuYy01MTktXHRpZiAocHJpdi1cdTAwM2Vic3Nfcm9sZSA9PSBNV0lGSUVYX0JTU19ST0xFX1VBUClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jbWRldnQuYzo1MjA6XHRcdHJldCA9IG13aWZpZXhfcHJvY2Vzc191YXBfZXZlbnQocHJpdik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY21kZXZ0LmMtNTIxLVx0ZWxzZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg9MTE0NT1pbnQgbXdpZmlleF9wcm9jZXNzX3N0YV9ldmVudChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICopO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxMTQ2OmludCBtd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTExNDctdm9pZCBtd2lmaWV4X2RlbGV0ZV9hbGxfc3RhdGlvbl9saXN0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYz0xND1zdGF0aWMgaW50IG13aWZpZXhfY2hlY2tfdWFwX2NhcGFiaWxpdGllcyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYy05My0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYzo5NDppbnQgbXdpZmlleF9wcm9jZXNzX3VhcF9ldmVudChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF9ldmVudC5jLTk1LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxMjoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTg5CgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjoKCioqSW52ZXN0aWdhdGluZyBtd2lmaWV4X3VzYiBpbiBLY29uZmlnKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBpdC4gVGltZSB0byBkaXZlIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGh1bnQgZG93biBgbXdpZmlleF91c2JgLiBUaGlzIGxpa2VseSBtZWFucyBJJiMzOTttIHRyeWluZyB0byBjb25maWd1cmUgb3IgdHJvdWJsZXNob290IHNvbWV0aGluZyByZWxhdGVkIHRvIHRoZSBNYXJ2ZWxsIFdpRmkgbW9kdWxlLCBzcGVjaWZpY2FsbHkgdGhlIFVTQiBpbnRlcmZhY2UuIEkmIzM5O2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSBpdCYjMzk7cyBkZWZpbmVkLCBhbnkgZGVwZW5kZW5jaWVzIGl0IG1pZ2h0IGhhdmUsIGFuZCBpZiB0aGVyZSBhcmUgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGZsYWdzIGF0IHBsYXkuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlOiBpcyBpdCBzZWxlY3RhYmxlIGJ5IGRlZmF1bHQ/IElzIHRoZXJlIGFuIG9wdGlvbiB0byBkaXNhYmxlIGl0PyBXaGF0IG90aGVyIGZlYXR1cmVzIG9yIGRyaXZlcnMgcmVseSBvbiBpdD8gQXJlIHRoZXJlIGFueSBzcGVjaWZpYyBoYXJkd2FyZSBjb25maWd1cmF0aW9ucyB0aWVkIHRvIGl0cyBhY3RpdmF0aW9uPyBUaGlzIGNvdWxkIGJlIHRvIGVuYWJsZSBhIHNwZWNpZmljIG1vZHVsZSBmZWF0dXJlLCB0byBpbnZlc3RpZ2F0ZSBhIGJ1aWxkIGVycm9yLCBvciBzaW1wbHkgdG8gZW5zdXJlIEkgdW5kZXJzdGFuZCBob3cgdGhpcyBjb21wb25lbnQgaXMgaW50ZWdyYXRlZCBpbnRvIHRoZSBsYXJnZXIgc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDEyOjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNV0lGSUVYJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzoyOmNvbmZpZyBNV0lGSUVYXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBXaUZpLUV4IERyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTExLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6MTI6Y29uZmlnIE1XSUZJRVhfU0RJT1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMTMtXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBTRDg3ODYvU0Q4Nzg3L1NEODc5Ny9TRDg4ODcvU0Q4ODk3L1NEODk3Ny9TRDg5NzgvU0Q4OTg3L1NEODk5N1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTI0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6MjU6Y29uZmlnIE1XSUZJRVhfUENJRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMjYtXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBQQ0lFIDg3NjYvODg5Ny84OTk3XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzozNzpjb25maWcgTVdJRklFWF9VU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTM4LVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgVVNCODc2Ni84Nzk3Lzg5OTdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxMjoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODM3CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkFuYWx5emluZyBNV0lGSUVYIENvbmZpZ3VyYXRpb24gYW5kIEV2ZW50IEhhbmRsaW5nKioKClJpZ2h0LCBzbyBJJiMzOTttIGRlYWxpbmcgd2l0aCBgTVdJRklFWGAgYW5kIGBNV0lGSUVYX1VTQmAgY29uZmlndXJhdGlvbnMgaGVyZS4gVGhvc2UgYXJlIHRoZSBrZXkgb25lcywgYXQgbGVhc3QgaW5pdGlhbGx5LiBNeSBwcmltYXJ5IGZvY3VzIGlzIG9uIHRoZSBmdW5jdGlvbiBgbXdpZmlleF9wcm9jZXNzX3VhcF9ldmVudGAuIFRoYXTigJlzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zLCBvciBhdCBsZWFzdCB3aGVyZSB0aGUgVUFQIGV2ZW50cyBhcmUgcHJvY2Vzc2VkLgoKQnV0LCBiZWZvcmUgSSBkaXZlIHRvbyBkZWVwIGludG8gdGhhdCBmdW5jdGlvbiwgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nLiBBcmUgdGhlcmUgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycywgZGVmaW5lcywgb3IgZmxhZ3MgSSBzaG91bGQgYmUgYXdhcmUgb2Y/IEFyZSB0aGVzZSB0aGUgb25seSBjb25maWdzLCBvciBhcmUgdGhlcmUgc3VwcG9ydGluZyBmaWxlcz8gSSBuZWVkIHRvIGdldCBhIGJyb2FkZXIgdmlldyBiZWZvcmUgSSBzdGFydCBkaWdnaW5nIGludG8gdGhlIGNvcmUgbG9naWMuIEkgd2lsbCBjaGVjayBmb3IgYW55IHJlbGF0ZWQgY29uZmlncyBub3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTI6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnPTI9Y29uZmlnIE1XSUZJRVhcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzo0Olx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctNS1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZz0xMj1jb25maWcgTVdJRklFWF9TRElPXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0xMy1cdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFNEODc4Ni9TRDg3ODcvU0Q4Nzk3L1NEODg4Ny9TRDg4OTcvU0Q4OTc3L1NEODk3OC9TRDg5ODcvU0Q4OTk3XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzoxNDpcdGRlcGVuZHMgb24gTVdJRklFWCBcdTAwMjZcdTAwMjYgTU1DXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0xNS1cdHNlbGVjdCBGV19MT0FERVJcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZz0yNT1jb25maWcgTVdJRklFWF9QQ0lFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0yNi1cdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFBDSUUgODc2Ni84ODk3Lzg5OTdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjI3Olx0ZGVwZW5kcyBvbiBNV0lGSUVYIFx1MDAyNlx1MDAyNiBQQ0lcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTI4LVx0c2VsZWN0IEZXX0xPQURFUlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnPTM3PWNvbmZpZyBNV0lGSUVYX1VTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzgtXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBVU0I4NzY2Lzg3OTcvODk5N1wmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6Mzk6XHRkZXBlbmRzIG9uIE1XSUZJRVggXHUwMDI2XHUwMDI2IFVTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctNDAtXHRzZWxlY3QgRldfTE9BREVSXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTI6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDY0MAoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDExNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFdpRmkgRHJpdmVyIEV2ZW50IFByb2Nlc3NpbmcqKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIFdpRmkgZHJpdmVyIGNvZGUsIGFuZCBpdCBsb29rcyBsaWtlIGBNV0lGSUVYYCBhbmQgYE1XSUZJRVhfVVNCYCBhcmUgdGhlIGNvbmZpZ3VyYXRpb25zIEkgbmVlZCB0byBwYXkgYXR0ZW50aW9uIHRvLiBUaGUgY29yZSBmdW5jdGlvbiBoZXJlIHNlZW1zIHRvIGJlIGBtd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50YC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBpcyB0aGlzIHRoZSAqb25seSogZnVuY3Rpb24gSSBuZWVkIHRvIGZvY3VzIG9uLCBvciBhcmUgdGhlcmUgb3RoZXIgcmVsYXRlZCBmdW5jdGlvbnMgd29ydGggaW52ZXN0aWdhdGluZz8KClRoZSBwYXRjaCBJJiMzOTttIGV4YW1pbmluZyBtb2RpZmllcyBgbXdpZmlleF9wcm9jZXNzX3VhcF9ldmVudGAsIHNvIHRoYXQmIzM5O3Mgd2hlcmUgdGhlIGhlYXJ0IG9mIHRoZSBjaGFuZ2VzIGxpZXMuIE5vdywgYSBjcml0aWNhbCBxdWVzdGlvbiBhcmlzZXM6IGlzIGBtd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50YCBjYWxsZWQgZXhjbHVzaXZlbHkgZnJvbSBhIFVTQi1zcGVjaWZpYyBwYXRoLCBvciBkb2VzIGl0IGhhbmRsZSBldmVudHMgZnJvbSBhIG1vcmUgZ2VuZXJhbCBjb250ZXh0PyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY2FsbCBjaGFpbiB0byBhc2NlcnRhaW4gaXRzIHNjb3BlLiBMZXQmIzM5O3Mgc2VlLi4uIGl0JiMzOTtzIGNhbGxlZCBmcm9tIGBtd2lmaWV4X3Byb2Nlc3NfZXZlbnRgLCB3aGljaCBpbiB0dXJuIGlzIGNhbGxlZCBmcm9tIGBtd2lmaWV4X21haW5fcHJvY2Vzc2AuIFRoYXQgbmFycm93cyBkb3duIHRoZSBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxMjoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttd2lmaWV4X3Byb2Nlc3NfZXZlbnQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NtZGV2dC5jPTQyMT12b2lkIG13aWZpZXhfZnJlZV9jbWRfYnVmZmVyKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NtZGV2dC5jLTQ2OS0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jbWRldnQuYzo0NzA6aW50IG13aWZpZXhfcHJvY2Vzc19ldmVudChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NtZGV2dC5jLTQ3MS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYz0yNDg9aW50IG13aWZpZXhfbWFpbl9wcm9jZXNzKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy0zNTAtXHRcdFx0YWRhcHRlci1cdTAwM2VldmVudF9yZWNlaXZlZCA9IGZhbHNlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYzozNTE6XHRcdFx0bXdpZmlleF9wcm9jZXNzX2V2ZW50KGFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy0zNTItXHRcdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oPTEwNzE9aW50IG13aWZpZXhfcHJvY2Vzc19tZ210X3BhY2tldChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTA3My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTA3NDppbnQgbXdpZmlleF9wcm9jZXNzX2V2ZW50KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xMDc1LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxMjoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDEzCgkJCQkJCQlvdXRwdXQ6IDE3CgkJCQkJCQl0aG91Z2h0czogMTA3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgbXdpZmlleCBFdmVudCBIYW5kbGluZyBGbG93KioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBgbXdpZmlleGAgZHJpdmVyIGFnYWluLiBUaGUga2V5IHNlZW1zIHRvIGJlIGBtd2lmaWV4X21haW5fcHJvY2Vzc2AsIHRoYXQmIzM5O3Mgb3VyIG1haW4gd29ya2VyIHRocmVhZCwgd2hpY2ggbWFrZXMgc2Vuc2UuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBldmVudHMgZnJvbSB0aGUgZGV2aWNlIGFyZSBoYW5kbGVkLCBzcGVjaWZpY2FsbHkgZm9yIFVTQi4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3Mgc3VnZ2VzdHMgdGhlIGZsb3cgaXMgc29tZXRoaW5nIGxpa2UgdGhpczogVGhlIFVTQiBSWCBjb21wbGV0aW9uIGNhbGxiYWNrLCBgbXdpZmlleF91c2JfcnhfY29tcGxldGVgLCB0cmlnZ2VycyBgbXdpZmlleF91c2Jfc3VibWl0X3J4X3VyYmAsIHdoaWNoIGluIHR1cm4gbGVhZHMgdG8gYG13aWZpZXhfdXNiX3JlY3ZgLiBUaGVuLCBwcmVzdW1hYmx5LCB0aGUgcmVjZWl2ZWQgZGF0YSBpcyBmdW5uZWxlZCB0byBgbXdpZmlleF9oYW5kbGVfcnhfcGFja2V0YCwgYW5kIGZpbmFsbHksIHdlIGdldCB0byB0aGUgY29yZSBvZiB0aGUgaXNzdWUsIGBtd2lmaWV4X3Byb2Nlc3NfZXZlbnRgLgoKTm93LCBJIG5lZWQgdG8gcGlucG9pbnQgd2hlcmUgdGhpcyBgZXZlbnRfcmVjZWl2ZWRgIGZsYWcgaXMgc2V0LiBVbmRlcnN0YW5kaW5nIHdoZW4gYW5kIGhvdyB0aGF0IGZsYWcgaXMgdG9nZ2xlZCBpcyBjcnVjaWFsIHRvIHVuZGVyc3RhbmRpbmcgdGhlIHRyaWdnZXJpbmcgbWVjaGFuaXNtIGFuZCBwb3RlbnRpYWwgYm90dGxlbmVja3Mgd2l0aGluIHRoZSBldmVudCBwcm9jZXNzaW5nLiBUaW1lIHRvIGRpZyBkZWVwZXIgYW5kIHNlZSB3aGVyZSB0aGUgYWN0dWFsIGV2ZW50IHJlY2VwdGlvbiBpcyBhY2tub3dsZWRnZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDEyOjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2V2ZW50X3JlY2VpdmVkJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O0RvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9uZmMvbmZjLWhjaS5yc3Q9NjQ9ZW50cnkgcG9pbnRzOjpcbi0tXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvbmZjL25mYy1oY2kucnN0LTg1LVx0XHRcdCAgICAgIHN0cnVjdCBuZmNfdGFyZ2V0ICp0YXJnZXQpO1xuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL25mYy9uZmMtaGNpLnJzdDo4NjpcdGludCAoKmV2ZW50X3JlY2VpdmVkKShzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYsIHU4IGdhdGUsIHU4IGV2ZW50LFxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL25mYy9uZmMtaGNpLnJzdC04Ny1cdFx0XHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbi0tXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvbmZjL25mYy1oY2kucnN0LTExNy0gIHNwYWNlXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvbmZjL25mYy1oY2kucnN0OjExODotIGV2ZW50X3JlY2VpdmVkKCkgaXMgY2FsbGVkIHRvIGhhbmRsZSBhbiBldmVudCBjb21pbmcgZnJvbSB0aGUgY2hpcC4gRHJpdmVyXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvbmZjL25mYy1oY2kucnN0LTExOS0gIGNhbiBoYW5kbGUgdGhlIGV2ZW50IG9yIHJldHVybiAxIHRvIGxldCBIQ0kgYXR0ZW1wdCBzdGFuZGFyZCBwcm9jZXNzaW5nLlxuLS1cbmRyaXZlcnMvZ3B1L2RybS9zdGkvc3RpX2hkbWkuYz0xOTg9c3RhdGljIGlycXJldHVybl90IGhkbWlfaXJxX3RocmVhZChpbnQgaXJxLCB2b2lkICphcmcpXG4tLVxuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfaGRtaS5jLTIxMi1cdGlmIChoZG1pLVx1MDAzZWlycV9zdGF0dXMgXHUwMDI2IChIRE1JX0lOVF9TV19SU1QgfCBIRE1JX0lOVF9ETExfTENLKSkge1xuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfaGRtaS5jOjIxMzpcdFx0aGRtaS1cdTAwM2VldmVudF9yZWNlaXZlZCA9IHRydWU7XG5kcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9oZG1pLmMtMjE0LVx0XHR3YWtlX3VwX2ludGVycnVwdGlibGUoXHUwMDI2aGRtaS1cdTAwM2V3YWl0X2V2ZW50KTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9oZG1pLmM9NTY3PXN0YXRpYyB2b2lkIGhkbWlfc3dyZXNldChzdHJ1Y3Qgc3RpX2hkbWkgKmhkbWkpXG4tLVxuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfaGRtaS5jLTU3Ny1cdC8qIFN3IHJlc2V0ICovXG5kcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9oZG1pLmM6NTc4Olx0aGRtaS1cdTAwM2VldmVudF9yZWNlaXZlZCA9IGZhbHNlO1xuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfaGRtaS5jLTU3OS1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9oZG1pLmMtNTg1LVx0d2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlX3RpbWVvdXQoaGRtaS1cdTAwM2V3YWl0X2V2ZW50LFxuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfaGRtaS5jOjU4NjpcdFx0XHRcdFx0IGhkbWktXHUwMDNlZXZlbnRfcmVjZWl2ZWQsXG5kcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9oZG1pLmMtNTg3LVx0XHRcdFx0XHQgbXNlY3NfdG9famlmZmllc1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9zdGkvc3RpX2hkbWkuaD0zMD1zdHJ1Y3QgaGRtaV9hdWRpb19wYXJhbXMge1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9zdGkvc3RpX2hkbWkuaC01Ni0gKiBAd2FpdF9ldmVudDogd2FpdCBldmVudFxuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfaGRtaS5oOjU3OiAqIEBldmVudF9yZWNlaXZlZDogd2FpdCBldmVudCBzdGF0dXNcbmRyaXZlcnMvZ3B1L2RybS9zdGkvc3RpX2hkbWkuaC01OC0gKiBAcmVzZXQ6IHJlc2V0IGNvbnRyb2wgb2YgdGhlIGhkbWkgcGh5XG4tLVxuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfaGRtaS5oPTY2PXN0cnVjdCBzdGlfaGRtaSB7XG4tLVxuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfaGRtaS5oLTgxLVx0d2FpdF9xdWV1ZV9oZWFkX3Qgd2FpdF9ldmVudDtcbmRyaXZlcnMvZ3B1L2RybS9zdGkvc3RpX2hkbWkuaDo4MjpcdGJvb2wgZXZlbnRfcmVjZWl2ZWQ7XG5kcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9oZG1pLmgtODMtXHRzdHJ1Y3QgcmVzZXRfY29udHJvbCAqcmVzZXQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfaGRtaV90eDNnNGMyOHBoeS5jPTc4PXN0YXRpYyBib29sIHN0aV9oZG1pX3R4M2c0YzI4cGh5X3N0YXJ0KHN0cnVjdCBzdGlfaGRtaSAqaGRtaSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9oZG1pX3R4M2c0YzI4cGh5LmMtMTE3LVx0ICovXG5kcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9oZG1pX3R4M2c0YzI4cGh5LmM6MTE4Olx0aGRtaS1cdTAwM2VldmVudF9yZWNlaXZlZCA9IGZhbHNlO1xuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfaGRtaV90eDNnNGMyOHBoeS5jLTExOS1cdERSTV9ERUJVR19EUklWRVIoXCYjMzQ7cGxsY3RybCA9IDB4JXhcXG5cJiMzNDssIHBsbGN0cmwpO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9zdGkvc3RpX2hkbWlfdHgzZzRjMjhwaHkuYy0xMjMtXHR3YWl0X2V2ZW50X2ludGVycnVwdGlibGVfdGltZW91dChoZG1pLVx1MDAzZXdhaXRfZXZlbnQsXG5kcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9oZG1pX3R4M2c0YzI4cGh5LmM6MTI0Olx0XHRcdFx0XHQgaGRtaS1cdTAwM2VldmVudF9yZWNlaXZlZCA9PSB0cnVlLFxuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfaGRtaV90eDNnNGMyOHBoeS5jLTEyNS1cdFx0XHRcdFx0IG1zZWNzX3RvX2ppZmZpZXNcbi0tXG5kcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9oZG1pX3R4M2c0YzI4cGh5LmM9MTg4PXN0YXRpYyB2b2lkIHN0aV9oZG1pX3R4M2c0YzI4cGh5X3N0b3Aoc3RydWN0IHN0aV9oZG1pICpoZG1pKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9zdGkvc3RpX2hkbWlfdHgzZzRjMjhwaHkuYy0xOTMtXG5kcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9oZG1pX3R4M2c0YzI4cGh5LmM6MTk0Olx0aGRtaS1cdTAwM2VldmVudF9yZWNlaXZlZCA9IGZhbHNlO1xuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfaGRtaV90eDNnNGMyOHBoeS5jLTE5NS1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9oZG1pX3R4M2c0YzI4cGh5LmMtMjAzLVx0d2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlX3RpbWVvdXQoaGRtaS1cdTAwM2V3YWl0X2V2ZW50LFxuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfaGRtaV90eDNnNGMyOHBoeS5jOjIwNDpcdFx0XHRcdFx0IGhkbWktXHUwMDNlZXZlbnRfcmVjZWl2ZWQgPT0gdHJ1ZSxcbmRyaXZlcnMvZ3B1L2RybS9zdGkvc3RpX2hkbWlfdHgzZzRjMjhwaHkuYy0yMDUtXHRcdFx0XHRcdCBtc2Vjc190b19qaWZmaWVzXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L1JFQURNRT04OT1pbmZvXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L1JFQURNRS0xNTgtXHRjbWRfcmVzcF9yZWNlaXZlZCA9IFx1MDAzYzAvMSwgbm8gY21kIHJlc3BvbnNlIHRvIHByb2Nlc3MvcmVzcG9uc2UgcmVjZWl2ZWQgYW5kIHlldCB0byBwcm9jZXNzXHUwMDNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvUkVBRE1FOjE1OTpcdGV2ZW50X3JlY2VpdmVkID0gXHUwMDNjMC8xLCBubyBldmVudCB0byBwcm9jZXNzL2V2ZW50IHJlY2VpdmVkIGFuZCB5ZXQgdG8gcHJvY2Vzc1x1MDAzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L1JFQURNRS0xNjAtXHRjbWRfcGVuZGluZyA9IFx1MDAzY251bWJlciBvZiBjbWQgcGVuZGluZ1x1MDAzZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9pbml0LmM9MjA2PXN0YXRpYyB2b2lkIG13aWZpZXhfaW5pdF9hZGFwdGVyKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2luaXQuYy0yMjQtXHRhZGFwdGVyLVx1MDAzZWNtZF9yZXNwX3JlY2VpdmVkID0gZmFsc2U7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvaW5pdC5jOjIyNTpcdGFkYXB0ZXItXHUwMDNlZXZlbnRfcmVjZWl2ZWQgPSBmYWxzZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9pbml0LmMtMjI2LVx0YWRhcHRlci1cdTAwM2VkYXRhX3JlY2VpdmVkID0gZmFsc2U7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2lvY3RsLmg9MTkxPXN0cnVjdCBtd2lmaWV4X2RlYnVnX2luZm8ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9pb2N0bC5oLTIzNS1cdHU4IGNtZF9yZXNwX3JlY2VpdmVkO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2lvY3RsLmg6MjM2Olx0dTggZXZlbnRfcmVjZWl2ZWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvaW9jdGwuaC0yMzctXHR1MzIgbGFzdF9tcF93cl9iaXRtYXBbTVdJRklFWF9EQkdfU0RJT19NUF9OVU1dO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmM9MjQ4PWludCBtd2lmaWV4X21haW5fcHJvY2VzcyhzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtMzQ4LVx0XHQvKiBDaGVjayBmb3IgZXZlbnQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmM6MzQ5Olx0XHRpZiAoYWRhcHRlci1cdTAwM2VldmVudF9yZWNlaXZlZCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYzozNTA6XHRcdFx0YWRhcHRlci1cdTAwM2VldmVudF9yZWNlaXZlZCA9IGZhbHNlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy0zNTEtXHRcdFx0bXdpZmlleF9wcm9jZXNzX2V2ZW50KGFkYXB0ZXIpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg9NTU9ZW51bSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xMjYtI2RlZmluZSBJU19DQVJEX1JYX1JDVkQoYWRhcHRlcikgKGFkYXB0ZXItXHUwMDNlY21kX3Jlc3BfcmVjZWl2ZWQgfHwgXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTI3Olx0XHRcdFx0YWRhcHRlci1cdTAwM2VldmVudF9yZWNlaXZlZCB8fCBcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xMjgtXHRcdFx0XHRhZGFwdGVyLVx1MDAzZWRhdGFfcmVjZWl2ZWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD04NTE9c3RydWN0IG13aWZpZXhfYWRhcHRlciB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC05MDgtXHR1OCBjbWRfcmVzcF9yZWNlaXZlZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6OTA5Olx0dTggZXZlbnRfcmVjZWl2ZWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTkxMC1cdHU4IGRhdGFfcmVjZWl2ZWQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYz0xOTAxPXN0YXRpYyBpbnQgbXdpZmlleF9wY2llX3Byb2Nlc3NfZXZlbnRfcmVhZHkoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jLTE5MTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jOjE5MTI6XHRpZiAoYWRhcHRlci1cdTAwM2VldmVudF9yZWNlaXZlZCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYy0xOTEzLVx0XHRtd2lmaWV4X2RiZyhhZGFwdGVyLCBFVkVOVCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jLTE5NzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jOjE5NzI6XHRcdGFkYXB0ZXItXHUwMDNlZXZlbnRfcmVjZWl2ZWQgPSB0cnVlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYy0xOTczLVx0XHRhZGFwdGVyLVx1MDAzZWV2ZW50X3NrYiA9IHNrYl9jbWQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYz0xNjQ3PXN0YXRpYyBpbnQgbXdpZmlleF9kZWNvZGVfcnhfcGFja2V0KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYy0xNzIyLVx0XHQvKiBldmVudCBjYXVzZSBoYXMgYmVlbiBzYXZlZCB0byBhZGFwdGVyLVx1MDAzZWV2ZW50X2NhdXNlICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jOjE3MjM6XHRcdGFkYXB0ZXItXHUwMDNlZXZlbnRfcmVjZWl2ZWQgPSB0cnVlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYy0xNzI0LVx0XHRhZGFwdGVyLVx1MDAzZWV2ZW50X3NrYiA9IHNrYjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM9NDY9c3RhdGljIGludCBtd2lmaWV4X3VzYl9yZWN2KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTExNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMTU6XHRcdFx0YWRhcHRlci1cdTAwM2VldmVudF9yZWNlaXZlZCA9IHRydWU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTE2LVx0XHRcdGFkYXB0ZXItXHUwMDNlZXZlbnRfc2tiID0gc2tiO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmM9MTY9c3RhdGljIHN0cnVjdCBtd2lmaWV4X2RlYnVnX2RhdGEgaXRlbXNbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jLTEwMy1cdCBpdGVtX2FkZHIoY21kX3Jlc3BfcmVjZWl2ZWQpLCAxfSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmM6MTA0Olx0e1wmIzM0O2V2ZW50X3JlY2VpdmVkXCYjMzQ7LCBpdGVtX3NpemUoZXZlbnRfcmVjZWl2ZWQpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuYzoxMDU6XHQgaXRlbV9hZGRyKGV2ZW50X3JlY2VpdmVkKSwgMX0sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jLTEwNi1cbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9tb2RlbV9vcHMuYz01MTU9c3RhdGljIHZvaWQgdDd4eF9jb3JlX2hrX2hhbmRsZXIoc3RydWN0IHQ3eHhfbW9kZW0gKm1kLCBzdHJ1Y3QgdDd4eF9zeXNfaW5mbyAqY29yZV9pbmZvLFxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X21vZGVtX29wcy5jLTUyNy1cdHdoaWxlICgha3RocmVhZF9zaG91bGRfc3RvcCgpKSB7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9tb2RlbV9vcHMuYzo1Mjg6XHRcdGJvb2wgZXZlbnRfcmVjZWl2ZWQgPSBmYWxzZTtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X21vZGVtX29wcy5jLTUyOS1cbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9tb2RlbV9vcHMuYy01MzgtXHRcdFx0XHRsaXN0X2RlbChcdTAwMjZldmVudC1cdTAwM2VlbnRyeSk7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9tb2RlbV9vcHMuYzo1Mzk6XHRcdFx0XHRldmVudF9yZWNlaXZlZCA9IHRydWU7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9tb2RlbV9vcHMuYy01NDAtXHRcdFx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9tb2RlbV9vcHMuYy01NDQtXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9tb2RlbV9vcHMuYzo1NDU6XHRcdGlmIChldmVudF9yZWNlaXZlZClcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X21vZGVtX29wcy5jLTU0Ni1cdFx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9zdGF0ZV9tb25pdG9yLmM9MTUzPXN0YXRpYyB2b2lkIGZzbV93YWl0X2Zvcl9ldmVudChzdHJ1Y3QgdDd4eF9mc21fY3RsICpjdGwsIGVudW0gdDd4eF9mc21fZXZlbnRfc3RhdGUgZXZlbnRfZXhwZWN0ZWQsXG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfc3RhdGVfbW9uaXRvci5jLTE1Ni1cdHN0cnVjdCB0N3h4X2ZzbV9ldmVudCAqZXZlbnQ7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9zdGF0ZV9tb25pdG9yLmM6MTU3Olx0Ym9vbCBldmVudF9yZWNlaXZlZCA9IGZhbHNlO1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfc3RhdGVfbW9uaXRvci5jLTE1OC1cdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfc3RhdGVfbW9uaXRvci5jLTE2MC1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3N0YXRlX21vbml0b3IuYzoxNjE6XHR3aGlsZSAoY250JiM0MzsmIzQzOyBcdTAwM2MgcmV0cmllcyBcdTAwMjZcdTAwMjYgIWV2ZW50X3JlY2VpdmVkKSB7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9zdGF0ZV9tb25pdG9yLmMtMTYyLVx0XHRib29sIHNsZWVwX3JlcXVpcmVkID0gdHJ1ZTtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9zdGF0ZV9tb25pdG9yLmMtMTY5LVx0XHRpZiAoZXZlbnQpIHtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3N0YXRlX21vbml0b3IuYzoxNzA6XHRcdFx0ZXZlbnRfcmVjZWl2ZWQgPSBldmVudC1cdTAwM2VldmVudF9pZCA9PSBldmVudF9leHBlY3RlZDtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3N0YXRlX21vbml0b3IuYzoxNzE6XHRcdFx0aWYgKGV2ZW50X3JlY2VpdmVkIHx8IGV2ZW50LVx1MDAzZWV2ZW50X2lkID09IGV2ZW50X2lnbm9yZSkge1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfc3RhdGVfbW9uaXRvci5jLTE3Mi1cdFx0XHRcdGZzbV9kZWxfa2ZfZXZlbnQoZXZlbnQpO1xuLS1cbmRyaXZlcnMvbmZjL21pY3JvcmVhZC9taWNyb3JlYWQuYz00Njg9c3RhdGljIHZvaWQgbWljcm9yZWFkX3RhcmdldF9kaXNjb3ZlcmVkKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldiwgdTggZ2F0ZSxcbi0tXG5kcml2ZXJzL25mYy9taWNyb3JlYWQvbWljcm9yZWFkLmMtNTQ2LVxuZHJpdmVycy9uZmMvbWljcm9yZWFkL21pY3JvcmVhZC5jOjU0NzpzdGF0aWMgaW50IG1pY3JvcmVhZF9ldmVudF9yZWNlaXZlZChzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYsIHU4IHBpcGUsXG5kcml2ZXJzL25mYy9taWNyb3JlYWQvbWljcm9yZWFkLmMtNTQ4LVx0XHRcdFx0ICAgICB1OCBldmVudCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25mYy9taWNyb3JlYWQvbWljcm9yZWFkLmM9NjI3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZjX2hjaV9vcHMgbWljcm9yZWFkX2hjaV9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZmMvbWljcm9yZWFkL21pY3JvcmVhZC5jLTYzOS1cdC5jaGVja19wcmVzZW5jZSA9IE5VTEwsXG5kcml2ZXJzL25mYy9taWNyb3JlYWQvbWljcm9yZWFkLmM6NjQwOlx0LmV2ZW50X3JlY2VpdmVkID0gbWljcm9yZWFkX2V2ZW50X3JlY2VpdmVkLFxuZHJpdmVycy9uZmMvbWljcm9yZWFkL21pY3JvcmVhZC5jLTY0MS19O1xuLS1cbmRyaXZlcnMvbmZjL3BuNTQ0L3BuNTQ0LmM9NjgxPXN0YXRpYyBpbnQgcG41NDRfaGNpX2NoZWNrX3ByZXNlbmNlKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldixcbi0tXG5kcml2ZXJzL25mYy9wbjU0NC9wbjU0NC5jLTcxNC0gKi9cbmRyaXZlcnMvbmZjL3BuNTQ0L3BuNTQ0LmM6NzE1OnN0YXRpYyBpbnQgcG41NDRfaGNpX2V2ZW50X3JlY2VpdmVkKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldiwgdTggcGlwZSwgdTggZXZlbnQsXG5kcml2ZXJzL25mYy9wbjU0NC9wbjU0NC5jLTcxNi1cdFx0XHRcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmZjL3BuNTQ0L3BuNTQ0LmM9ODgzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZjX2hjaV9vcHMgcG41NDRfaGNpX29wcyA9IHtcbi0tXG5kcml2ZXJzL25mYy9wbjU0NC9wbjU0NC5jLTg5NS1cdC5jaGVja19wcmVzZW5jZSA9IHBuNTQ0X2hjaV9jaGVja19wcmVzZW5jZSxcbmRyaXZlcnMvbmZjL3BuNTQ0L3BuNTQ0LmM6ODk2Olx0LmV2ZW50X3JlY2VpdmVkID0gcG41NDRfaGNpX2V2ZW50X3JlY2VpdmVkLFxuZHJpdmVycy9uZmMvcG41NDQvcG41NDQuYy04OTctXHQuZndfZG93bmxvYWQgPSBwbjU0NF9oY2lfZndfZG93bmxvYWQsXG4tLVxuZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYz05NT1zdGF0aWMgY29uc3Qgc3RydWN0IG5jaV9vcHMgc3RfbmNpX29wcyA9IHtcbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jLTEwNS1cdC5oY2lfbG9hZF9zZXNzaW9uID0gc3RfbmNpX2hjaV9sb2FkX3Nlc3Npb24sXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jOjEwNjpcdC5oY2lfZXZlbnRfcmVjZWl2ZWQgPSBzdF9uY2lfaGNpX2V2ZW50X3JlY2VpdmVkLFxuZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYy0xMDctXHQuaGNpX2NtZF9yZWNlaXZlZCA9IHN0X25jaV9oY2lfY21kX3JlY2VpdmVkLFxuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jPTI0OT1FWFBPUlRfU1lNQk9MX0dQTChzdF9uY2lfaGNpX2xvYWRfc2Vzc2lvbik7XG5kcml2ZXJzL25mYy9zdC1uY2kvc2UuYy0yNTAtXG5kcml2ZXJzL25mYy9zdC1uY2kvc2UuYzoyNTE6c3RhdGljIHZvaWQgc3RfbmNpX2hjaV9hZG1pbl9ldmVudF9yZWNlaXZlZChzdHJ1Y3QgbmNpX2RldiAqbmRldixcbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jLTI1Mi1cdFx0XHRcdFx0ICAgICAgdTggZXZlbnQsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmMtMjc0LVxuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmM6Mjc1OnN0YXRpYyBpbnQgc3RfbmNpX2hjaV9hcGR1X3JlYWRlcl9ldmVudF9yZWNlaXZlZChzdHJ1Y3QgbmNpX2RldiAqbmRldixcbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jLTI3Ni1cdFx0XHRcdFx0XHQgICB1OCBldmVudCxcbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvc2UuYy0zMDctICovXG5kcml2ZXJzL25mYy9zdC1uY2kvc2UuYzozMDg6c3RhdGljIGludCBzdF9uY2lfaGNpX2Nvbm5lY3Rpdml0eV9ldmVudF9yZWNlaXZlZChzdHJ1Y3QgbmNpX2RldiAqbmRldixcbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jLTMwOS1cdFx0XHRcdFx0XHR1OCBob3N0LCB1OCBldmVudCxcbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvc2UuYy0zODEtXG5kcml2ZXJzL25mYy9zdC1uY2kvc2UuYzozODI6dm9pZCBzdF9uY2lfaGNpX2V2ZW50X3JlY2VpdmVkKHN0cnVjdCBuY2lfZGV2ICpuZGV2LCB1OCBwaXBlLFxuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmMtMzgzLVx0XHRcdFx0IHU4IGV2ZW50LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jLTM4OS1cdGNhc2UgTkNJX0hDSV9BRE1JTl9HQVRFOlxuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmM6MzkwOlx0XHRzdF9uY2lfaGNpX2FkbWluX2V2ZW50X3JlY2VpdmVkKG5kZXYsIGV2ZW50LCBza2IpO1xuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmMtMzkxLVx0YnJlYWs7XG5kcml2ZXJzL25mYy9zdC1uY2kvc2UuYy0zOTItXHRjYXNlIFNUX05DSV9BUERVX1JFQURFUl9HQVRFOlxuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmM6MzkzOlx0XHRzdF9uY2lfaGNpX2FwZHVfcmVhZGVyX2V2ZW50X3JlY2VpdmVkKG5kZXYsIGV2ZW50LCBza2IpO1xuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmMtMzk0LVx0YnJlYWs7XG5kcml2ZXJzL25mYy9zdC1uY2kvc2UuYy0zOTUtXHRjYXNlIFNUX05DSV9DT05ORUNUSVZJVFlfR0FURTpcbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jOjM5NjpcdFx0c3RfbmNpX2hjaV9jb25uZWN0aXZpdHlfZXZlbnRfcmVjZWl2ZWQobmRldiwgaG9zdCwgZXZlbnQsIHNrYik7XG5kcml2ZXJzL25mYy9zdC1uY2kvc2UuYy0zOTctXHRicmVhaztcbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvc2UuYy0zOTktfVxuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmM6NDAwOkVYUE9SVF9TWU1CT0xfR1BMKHN0X25jaV9oY2lfZXZlbnRfcmVjZWl2ZWQpO1xuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmMtNDAxLVxuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9zdC1uY2kuaD0xMzQ9aW50IHN0X25jaV9oY2lfbG9hZF9zZXNzaW9uKHN0cnVjdCBuY2lfZGV2ICpuZGV2KTtcbmRyaXZlcnMvbmZjL3N0LW5jaS9zdC1uY2kuaDoxMzU6dm9pZCBzdF9uY2lfaGNpX2V2ZW50X3JlY2VpdmVkKHN0cnVjdCBuY2lfZGV2ICpuZGV2LCB1OCBwaXBlLFxuZHJpdmVycy9uZmMvc3QtbmNpL3N0LW5jaS5oLTEzNi1cdFx0XHRcdFx0dTggZXZlbnQsIHN0cnVjdCBza19idWZmICpza2IpO1xuLS1cbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2NvcmUuYz04MzI9c3RhdGljIHZvaWQgc3QyMW5mY2FfaGNpX2NtZF9yZWNlaXZlZChzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYsIHU4IHBpcGUsIHU4IGNtZCxcbi0tXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9jb3JlLmMtODU1LVxuZHJpdmVycy9uZmMvc3QyMW5mY2EvY29yZS5jOjg1NjpzdGF0aWMgaW50IHN0MjFuZmNhX2FkbWluX2V2ZW50X3JlY2VpdmVkKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldiwgdTggZXZlbnQsXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9jb3JlLmMtODU3LVx0XHRcdFx0XHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2NvcmUuYy04ODgtICovXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9jb3JlLmM6ODg5OnN0YXRpYyBpbnQgc3QyMW5mY2FfaGNpX2V2ZW50X3JlY2VpdmVkKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldiwgdTggcGlwZSxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2NvcmUuYy04OTAtXHRcdFx0XHQgICAgICAgdTggZXZlbnQsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZmMvc3QyMW5mY2EvY29yZS5jLTg5OC1cdGNhc2UgTkZDX0hDSV9BRE1JTl9HQVRFOlxuZHJpdmVycy9uZmMvc3QyMW5mY2EvY29yZS5jOjg5OTpcdFx0cmV0dXJuIHN0MjFuZmNhX2FkbWluX2V2ZW50X3JlY2VpdmVkKGhkZXYsIGV2ZW50LCBza2IpO1xuZHJpdmVycy9uZmMvc3QyMW5mY2EvY29yZS5jLTkwMC1cdGNhc2UgU1QyMU5GQ0FfUkZfQ0FSRF9GX0dBVEU6XG5kcml2ZXJzL25mYy9zdDIxbmZjYS9jb3JlLmM6OTAxOlx0XHRyZXR1cm4gc3QyMW5mY2FfZGVwX2V2ZW50X3JlY2VpdmVkKGhkZXYsIGV2ZW50LCBza2IpO1xuZHJpdmVycy9uZmMvc3QyMW5mY2EvY29yZS5jLTkwMi1cdGNhc2UgU1QyMU5GQ0FfQ09OTkVDVElWSVRZX0dBVEU6XG5kcml2ZXJzL25mYy9zdDIxbmZjYS9jb3JlLmM6OTAzOlx0XHRyZXR1cm4gc3QyMW5mY2FfY29ubmVjdGl2aXR5X2V2ZW50X3JlY2VpdmVkKGhkZXYsIGhvc3QsXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9jb3JlLmMtOTA0LVx0XHRcdFx0XHRcdFx0ZXZlbnQsIHNrYik7XG5kcml2ZXJzL25mYy9zdDIxbmZjYS9jb3JlLmMtOTA1LVx0Y2FzZSBTVDIxTkZDQV9BUERVX1JFQURFUl9HQVRFOlxuZHJpdmVycy9uZmMvc3QyMW5mY2EvY29yZS5jOjkwNjpcdFx0cmV0dXJuIHN0MjFuZmNhX2FwZHVfcmVhZGVyX2V2ZW50X3JlY2VpdmVkKGhkZXYsIGV2ZW50LCBza2IpO1xuZHJpdmVycy9uZmMvc3QyMW5mY2EvY29yZS5jLTkwNy1cdGNhc2UgTkZDX0hDSV9MT09QQkFDS19HQVRFOlxuZHJpdmVycy9uZmMvc3QyMW5mY2EvY29yZS5jOjkwODpcdFx0cmV0dXJuIHN0MjFuZmNhX2hjaV9sb29wYmFja19ldmVudF9yZWNlaXZlZChoZGV2LCBldmVudCwgc2tiKTtcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2NvcmUuYy05MDktXHRkZWZhdWx0OlxuLS1cbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2NvcmUuYz05MTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBuZmNfaGNpX29wcyBzdDIxbmZjYV9oY2lfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2NvcmUuYy05MjgtXHQuY2hlY2tfcHJlc2VuY2UgPSBzdDIxbmZjYV9oY2lfY2hlY2tfcHJlc2VuY2UsXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9jb3JlLmM6OTI5Olx0LmV2ZW50X3JlY2VpdmVkID0gc3QyMW5mY2FfaGNpX2V2ZW50X3JlY2VpdmVkLFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvY29yZS5jLTkzMC1cdC5jbWRfcmVjZWl2ZWQgPSBzdDIxbmZjYV9oY2lfY21kX3JlY2VpdmVkLFxuLS1cbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jPTM0Nj1zdGF0aWMgaW50IHN0MjFuZmNhX3RtX2V2ZW50X3NlbmRfZGF0YShzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYsXG4tLVxuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmMtMzgwLSAqL1xuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmM6MzgxOmludCBzdDIxbmZjYV9kZXBfZXZlbnRfcmVjZWl2ZWQoc3RydWN0IG5mY19oY2lfZGV2ICpoZGV2LFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmMtMzgyLVx0XHRcdFx0dTggZXZlbnQsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmMtNDEwLX1cbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jOjQxMTpFWFBPUlRfU1lNQk9MKHN0MjFuZmNhX2RlcF9ldmVudF9yZWNlaXZlZCk7XG5kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYy00MTItXG4tLVxuZHJpdmVycy9uZmMvc3QyMW5mY2Evc2UuYz0yODk9c3RhdGljIHZvaWQgc3QyMW5mY2Ffc2VfYWN0aXZhdGlvbl90aW1lb3V0KHN0cnVjdCB0aW1lcl9saXN0ICp0KVxuLS1cbmRyaXZlcnMvbmZjL3N0MjFuZmNhL3NlLmMtMzAzLSAqL1xuZHJpdmVycy9uZmMvc3QyMW5mY2Evc2UuYzozMDQ6aW50IHN0MjFuZmNhX2Nvbm5lY3Rpdml0eV9ldmVudF9yZWNlaXZlZChzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYsIHU4IGhvc3QsXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9zZS5jLTMwNS1cdFx0XHRcdHU4IGV2ZW50LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmZjL3N0MjFuZmNhL3NlLmMtMzcxLX1cbmRyaXZlcnMvbmZjL3N0MjFuZmNhL3NlLmM6MzcyOkVYUE9SVF9TWU1CT0woc3QyMW5mY2FfY29ubmVjdGl2aXR5X2V2ZW50X3JlY2VpdmVkKTtcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL3NlLmMtMzczLVxuZHJpdmVycy9uZmMvc3QyMW5mY2Evc2UuYzozNzQ6aW50IHN0MjFuZmNhX2FwZHVfcmVhZGVyX2V2ZW50X3JlY2VpdmVkKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldixcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL3NlLmMtMzc1LVx0XHRcdFx0XHR1OCBldmVudCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9zZS5jLTQwNy19XG5kcml2ZXJzL25mYy9zdDIxbmZjYS9zZS5jOjQwODpFWFBPUlRfU1lNQk9MKHN0MjFuZmNhX2FwZHVfcmVhZGVyX2V2ZW50X3JlY2VpdmVkKTtcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL3NlLmMtNDA5LVxuLS1cbmRyaXZlcnMvbmZjL3N0MjFuZmNhL3N0MjFuZmNhLmg9MTcxPXZvaWQgc3QyMW5mY2FfaGNpX3JlbW92ZShzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYpO1xuZHJpdmVycy9uZmMvc3QyMW5mY2Evc3QyMW5mY2EuaC0xNzItXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9zdDIxbmZjYS5oOjE3MzppbnQgc3QyMW5mY2FfZGVwX2V2ZW50X3JlY2VpdmVkKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldixcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL3N0MjFuZmNhLmgtMTc0LVx0XHRcdFx0dTggZXZlbnQsIHN0cnVjdCBza19idWZmICpza2IpO1xuLS1cbmRyaXZlcnMvbmZjL3N0MjFuZmNhL3N0MjFuZmNhLmg9MTgwPXZvaWQgc3QyMW5mY2FfZGVwX2RlaW5pdChzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYpO1xuZHJpdmVycy9uZmMvc3QyMW5mY2Evc3QyMW5mY2EuaC0xODEtXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9zdDIxbmZjYS5oOjE4MjppbnQgc3QyMW5mY2FfY29ubmVjdGl2aXR5X2V2ZW50X3JlY2VpdmVkKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldiwgdTggaG9zdCxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL3N0MjFuZmNhLmgtMTgzLVx0XHRcdFx0XHR1OCBldmVudCwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG5kcml2ZXJzL25mYy9zdDIxbmZjYS9zdDIxbmZjYS5oOjE4NDppbnQgc3QyMW5mY2FfYXBkdV9yZWFkZXJfZXZlbnRfcmVjZWl2ZWQoc3RydWN0IG5mY19oY2lfZGV2ICpoZGV2LFxuZHJpdmVycy9uZmMvc3QyMW5mY2Evc3QyMW5mY2EuaC0xODUtXHRcdFx0XHRcdHU4IGV2ZW50LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbi0tXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9zdDIxbmZjYS5oPTE5NT12b2lkIHN0MjFuZmNhX3NlX2RlaW5pdChzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYpO1xuZHJpdmVycy9uZmMvc3QyMW5mY2Evc3QyMW5mY2EuaC0xOTYtXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9zdDIxbmZjYS5oOjE5NzppbnQgc3QyMW5mY2FfaGNpX2xvb3BiYWNrX2V2ZW50X3JlY2VpdmVkKHN0cnVjdCBuZmNfaGNpX2RldiAqbmRldiwgdTggZXZlbnQsXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9zdDIxbmZjYS5oLTE5OC1cdFx0XHRcdFx0IHN0cnVjdCBza19idWZmICpza2IpO1xuLS1cbmRyaXZlcnMvbmZjL3N0MjFuZmNhL3ZlbmRvcl9jbWRzLmM9MjE5PXN0YXRpYyBpbnQgc3QyMW5mY2FfaGNpX2RtX2ZpZWxkX2dlbmVyYXRvcihzdHJ1Y3QgbmZjX2RldiAqZGV2LCB2b2lkICpkYXRhLFxuLS1cbmRyaXZlcnMvbmZjL3N0MjFuZmNhL3ZlbmRvcl9jbWRzLmMtMjI5LVxuZHJpdmVycy9uZmMvc3QyMW5mY2EvdmVuZG9yX2NtZHMuYzoyMzA6aW50IHN0MjFuZmNhX2hjaV9sb29wYmFja19ldmVudF9yZWNlaXZlZChzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYsIHU4IGV2ZW50LFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvdmVuZG9yX2NtZHMuYy0yMzEtXHRcdFx0XHRcdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmZjL3N0MjFuZmNhL3ZlbmRvcl9jbWRzLmMtMjQ0LX1cbmRyaXZlcnMvbmZjL3N0MjFuZmNhL3ZlbmRvcl9jbWRzLmM6MjQ1OkVYUE9SVF9TWU1CT0woc3QyMW5mY2FfaGNpX2xvb3BiYWNrX2V2ZW50X3JlY2VpdmVkKTtcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL3ZlbmRvcl9jbWRzLmMtMjQ2LVxuLS1cbmRyaXZlcnMvcGxhdGZvcm0vc3VyZmFjZS9hZ2dyZWdhdG9yL3NzaF9yZXF1ZXN0X2xheWVyLmM9ODk4PXN0YXRpYyB2b2lkIHNzaF9ydGxfcnhfZXZlbnQoc3RydWN0IHNzaF9ydGwgKnJ0bCwgY29uc3Qgc3RydWN0IHNzaF9jb21tYW5kICpjbWQsXG4tLVxuZHJpdmVycy9wbGF0Zm9ybS9zdXJmYWNlL2FnZ3JlZ2F0b3Ivc3NoX3JlcXVlc3RfbGF5ZXIuYy05MDAte1xuZHJpdmVycy9wbGF0Zm9ybS9zdXJmYWNlL2FnZ3JlZ2F0b3Ivc3NoX3JlcXVlc3RfbGF5ZXIuYzo5MDE6XHR0cmFjZV9zc2FtX3J4X2V2ZW50X3JlY2VpdmVkKGNtZCwgZGF0YS1cdTAwM2VsZW4pO1xuZHJpdmVycy9wbGF0Zm9ybS9zdXJmYWNlL2FnZ3JlZ2F0b3Ivc3NoX3JlcXVlc3RfbGF5ZXIuYy05MDItXG4tLVxuZHJpdmVycy9wbGF0Zm9ybS9zdXJmYWNlL2FnZ3JlZ2F0b3IvdHJhY2UuaD02NjI9REVGSU5FX1NTQU1fQ09NTUFORF9FVkVOVChyeF9yZXNwb25zZV9yZWNlaXZlZCk7XG5kcml2ZXJzL3BsYXRmb3JtL3N1cmZhY2UvYWdncmVnYXRvci90cmFjZS5oOjY2MzpERUZJTkVfU1NBTV9DT01NQU5EX0VWRU5UKHJ4X2V2ZW50X3JlY2VpdmVkKTtcbmRyaXZlcnMvcGxhdGZvcm0vc3VyZmFjZS9hZ2dyZWdhdG9yL3RyYWNlLmgtNjY0LVxuLS1cbmluY2x1ZGUvbmV0L25mYy9oY2kuaD0xNT1zdHJ1Y3QgbmZjX2hjaV9vcHMge1xuLS1cbmluY2x1ZGUvbmV0L25mYy9oY2kuaC00MS1cdFx0XHQgICAgICBzdHJ1Y3QgbmZjX3RhcmdldCAqdGFyZ2V0KTtcbmluY2x1ZGUvbmV0L25mYy9oY2kuaDo0MjpcdGludCAoKmV2ZW50X3JlY2VpdmVkKShzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYsIHU4IHBpcGUsIHU4IGV2ZW50LFxuaW5jbHVkZS9uZXQvbmZjL2hjaS5oLTQzLVx0XHRcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IpO1xuLS1cbmluY2x1ZGUvbmV0L25mYy9oY2kuaD0yNTA9dm9pZCBuZmNfaGNpX2NtZF9yZWNlaXZlZChzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYsIHU4IHBpcGUsIHU4IGNtZCxcbmluY2x1ZGUvbmV0L25mYy9oY2kuaC0yNTEtXHRcdFx0ICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbmluY2x1ZGUvbmV0L25mYy9oY2kuaDoyNTI6dm9pZCBuZmNfaGNpX2V2ZW50X3JlY2VpdmVkKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldiwgdTggcGlwZSwgdTggZXZlbnQsXG5pbmNsdWRlL25ldC9uZmMvaGNpLmgtMjUzLVx0XHRcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbi0tXG5pbmNsdWRlL25ldC9uZmMvbmNpX2NvcmUuaD02NT1zdHJ1Y3QgbmNpX29wcyB7XG4tLVxuaW5jbHVkZS9uZXQvbmZjL25jaV9jb3JlLmgtODAtXHRpbnQgICAoKmhjaV9sb2FkX3Nlc3Npb24pKHN0cnVjdCBuY2lfZGV2ICpuZGV2KTtcbmluY2x1ZGUvbmV0L25mYy9uY2lfY29yZS5oOjgxOlx0dm9pZCAgKCpoY2lfZXZlbnRfcmVjZWl2ZWQpKHN0cnVjdCBuY2lfZGV2ICpuZGV2LCB1OCBwaXBlLCB1OCBldmVudCxcbmluY2x1ZGUvbmV0L25mYy9uY2lfY29yZS5oLTgyLVx0XHRcdFx0ICAgIHN0cnVjdCBza19idWZmICpza2IpO1xuLS1cbm5ldC9uZmMvaGNpL2NvcmUuYz0zNzk9RVhQT1JUX1NZTUJPTChuZmNfaGNpX3RhcmdldF9kaXNjb3ZlcmVkKTtcbm5ldC9uZmMvaGNpL2NvcmUuYy0zODAtXG5uZXQvbmZjL2hjaS9jb3JlLmM6MzgxOnZvaWQgbmZjX2hjaV9ldmVudF9yZWNlaXZlZChzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYsIHU4IHBpcGUsIHU4IGV2ZW50LFxubmV0L25mYy9oY2kvY29yZS5jLTM4Mi1cdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvbmZjL2hjaS9jb3JlLmMtMzk3LVxubmV0L25mYy9oY2kvY29yZS5jOjM5ODpcdGlmIChoZGV2LVx1MDAzZW9wcy1cdTAwM2VldmVudF9yZWNlaXZlZCkge1xubmV0L25mYy9oY2kvY29yZS5jOjM5OTpcdFx0ciA9IGhkZXYtXHUwMDNlb3BzLVx1MDAzZWV2ZW50X3JlY2VpdmVkKGhkZXYsIHBpcGUsIGV2ZW50LCBza2IpO1xubmV0L25mYy9oY2kvY29yZS5jLTQwMC1cdFx0aWYgKHIgXHUwMDNjPSAwKVxuLS1cbm5ldC9uZmMvaGNpL2hjcC5jPTExNz12b2lkIG5mY19oY2lfaGNwX21lc3NhZ2Vfcngoc3RydWN0IG5mY19oY2lfZGV2ICpoZGV2LCB1OCBwaXBlLCB1OCB0eXBlLFxuLS1cbm5ldC9uZmMvaGNpL2hjcC5jLTEyNy1cdGNhc2UgTkZDX0hDSV9IQ1BfRVZFTlQ6XG5uZXQvbmZjL2hjaS9oY3AuYzoxMjg6XHRcdG5mY19oY2lfZXZlbnRfcmVjZWl2ZWQoaGRldiwgcGlwZSwgaW5zdHJ1Y3Rpb24sIHNrYik7XG5uZXQvbmZjL2hjaS9oY3AuYy0xMjktXHRcdGJyZWFrO1xuLS1cbm5ldC9uZmMvbmNpL2hjaS5jPTI3Mj1FWFBPUlRfU1lNQk9MKG5jaV9oY2lfY2xlYXJfYWxsX3BpcGVzKTtcbm5ldC9uZmMvbmNpL2hjaS5jLTI3My1cbm5ldC9uZmMvbmNpL2hjaS5jOjI3NDpzdGF0aWMgdm9pZCBuY2lfaGNpX2V2ZW50X3JlY2VpdmVkKHN0cnVjdCBuY2lfZGV2ICpuZGV2LCB1OCBwaXBlLFxubmV0L25mYy9uY2kvaGNpLmMtMjc1LVx0XHRcdFx0ICAgdTggZXZlbnQsIHN0cnVjdCBza19idWZmICpza2IpXG5uZXQvbmZjL25jaS9oY2kuYy0yNzYte1xubmV0L25mYy9uY2kvaGNpLmM6Mjc3Olx0aWYgKG5kZXYtXHUwMDNlb3BzLVx1MDAzZWhjaV9ldmVudF9yZWNlaXZlZClcbm5ldC9uZmMvbmNpL2hjaS5jOjI3ODpcdFx0bmRldi1cdTAwM2VvcHMtXHUwMDNlaGNpX2V2ZW50X3JlY2VpdmVkKG5kZXYsIHBpcGUsIGV2ZW50LCBza2IpO1xubmV0L25mYy9uY2kvaGNpLmMtMjc5LX1cbi0tXG5uZXQvbmZjL25jaS9oY2kuYz0zODI9c3RhdGljIHZvaWQgbmNpX2hjaV9oY3BfbWVzc2FnZV9yeChzdHJ1Y3QgbmNpX2RldiAqbmRldiwgdTggcGlwZSxcbi0tXG5uZXQvbmZjL25jaS9oY2kuYy0zOTItXHRjYXNlIE5DSV9IQ0lfSENQX0VWRU5UOlxubmV0L25mYy9uY2kvaGNpLmM6MzkzOlx0XHRuY2lfaGNpX2V2ZW50X3JlY2VpdmVkKG5kZXYsIHBpcGUsIGluc3RydWN0aW9uLCBza2IpO1xubmV0L25mYy9uY2kvaGNpLmMtMzk0LVx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTI6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ3OTAKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyB0aGUgVVNCIFJlY2VpdmUgUGF0aCoqCgpBbHJpZ2h0LCBzbyB0aGUgY2x1ZSBoZXJlIGlzIHRoYXQgYGV2ZW50X3JlY2VpdmVkYCBpcyBiZWluZyBmbGFnZ2VkIGluIGBtd2lmaWV4X3VzYl9yZWN2YC4gVGhhdCYjMzk7cyB0aGUgZW50cnkgcG9pbnQsIG9yIGF0IGxlYXN0IGEgY3JpdGljYWwgcGFydCwgZm9yIGhhbmRsaW5nIGluY29taW5nIGRhdGEgb3ZlciBVU0IuIE15IGZpcnN0IHRob3VnaHQgaXMsIGxldCYjMzk7cyB0cmFjZSB0aGlzIGJhY2sgYW5kIHNlZSBleGFjdGx5ICpob3cqIHRoYXQgYGV2ZW50X3JlY2VpdmVkYCBmbGFnIGlzIGJlaW5nIHNldCB3aXRoaW4gYG13aWZpZXhfdXNiX3JlY3ZgLiBJcyBpdCBjb25kaXRpb25hbD8gV2hhdCYjMzk7cyB0cmlnZ2VyaW5nIHRoZSBzZXR0aW5nIG9mIHRoaXMgZmxhZz8gS25vd2luZyB0aGUgZXhhY3QgY29uZGl0aW9ucyB3aWxsIGJlIGNyaXRpY2FsIHRvIHVuZGVyc3RhbmRpbmcgdGhlIHN0YXRlIG1hY2hpbmUgYW5kIHRoZSBvdmVyYWxsIGZsb3cuIE5lZWQgdG8gbG9vayBjbG9zZWx5IGF0IHRoYXQgZnVuY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDEyOjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O213aWZpZXhfdXNiX3JlY3YmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD01NT1lbnVtIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTEyMy0gKiBEbyBub3QgY2hlY2sgZm9yIGRhdGFfcmVjZWl2ZWQgZm9yIFVTQiwgYXMgZGF0YV9yZWNlaXZlZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxMjQ6ICogaXMgaGFuZGxlZCBpbiBtd2lmaWV4X3VzYl9yZWN2IGZvciBVU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTI1LSAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYz00MT1zdGF0aWMgaW50IG13aWZpZXhfdXNiX3N1Ym1pdF9yeF91cmIoc3RydWN0IHVyYl9jb250ZXh0ICpjdHgsIGludCBzaXplKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNDUtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NDY6c3RhdGljIGludCBtd2lmaWV4X3VzYl9yZWN2KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNDctXHRcdFx0ICAgIHN0cnVjdCBza19idWZmICpza2IsIHU4IGVwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYz0xNTI9c3RhdGljIHZvaWQgbXdpZmlleF91c2JfcnhfY29tcGxldGUoc3RydWN0IHVyYiAqdXJiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xODYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTg3Olx0XHRzdGF0dXMgPSBtd2lmaWV4X3VzYl9yZWN2KGFkYXB0ZXIsIHNrYiwgY29udGV4dC1cdTAwM2VlcCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTg4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xOTYtXHRcdFx0ICogdXJiIGZvciBjbWRfZXAgd2lsbCBiZSByZS1zdWJtaXR0ZWQgaW4gY2FsbGJhY2tcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxOTc6XHRcdFx0ICogbXdpZmlleF91c2JfcmVjdl9jb21wbGV0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE5OC1cdFx0XHQgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTI6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU1MDIKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAxNDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIFVTQiBXaS1GaSBEcml2ZXImIzM5O3MgRXZlbnQgSGFuZGxpbmcqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiB0cmFjaW5nIHRoZSBkYXRhIGZsb3cgZm9yIGluY29taW5nIFVTQiBwYWNrZXRzIGluIHRoaXMgTWFydmVsbCBXaS1GaSBkcml2ZXIsIGFuZCBpdCYjMzk7cyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBgbXdpZmlleF91c2JfcmVjdmAgaGFuZGxlcyB0aGUgaW5jb21pbmcgZGF0YSBhbmQgc2V0cyB0aGUgYGV2ZW50X3JlY2VpdmVkYCBmbGFnLiBGcm9tIHRoZXJlLCBgbXdpZmlleF9tYWluX3Byb2Nlc3NgIGtpY2tzIGluLCBjYWxsaW5nIGBtd2lmaWV4X3Byb2Nlc3NfZXZlbnRgLiBOb3csIGhlcmUmIzM5O3Mgd2hlcmUgaXQgZ2V0cyBpbnRlcmVzdGluZzogaWYgdGhlIGBwcml2LSZndDtic3Nfcm9sZWAgaXMgc2V0IHRvIGBNV0lGSUVYX0JTU19ST0xFX1VBUGAsIHRoZSBjb2RlIGJyYW5jaGVzIGludG8gYG13aWZpZXhfcHJvY2Vzc191YXBfZXZlbnRgLgoKVGhpcyBwYXRoIGlzICphYnNvbHV0ZWx5KiByZWFjaGFibGUgYW5kIHByZXNlbnRzIGEgY2xlYXIgZW50cnkgcG9pbnQgdmlhIFVTQiBnYWRnZXQgb3IgdmhjaS4gSXQmIzM5O3MgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIEkgbmVlZCB0byB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYG13aWZpZXhfcHJvY2Vzc191YXBfZXZlbnRgIGl0c2VsZiwgc28gSSYjMzk7bSBoZWFkaW5nIG92ZXIgdG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuY2AgdG8gc2VlIHdoYXQga2luZCBvZiBpbnB1dHMgYW5kIGRhdGEgc3RydWN0dXJlcyBpdCYjMzk7cyBkZWFsaW5nIHdpdGguIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBiZWhhdmlvciB0aG9yb3VnaGx5IGJlZm9yZSBkZXNpZ25pbmcgZWZmZWN0aXZlIGZ1enppbmcgY2FtcGFpZ25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxMjoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDkwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDkwOlx0ICogICAgICAtIEVWRU5UX1VBUF9CU1NfU1RBUlRcbiAgOTE6XHQgKiAgICAgIC0gRVZFTlRfVUFQX0JTU19JRExFXG4gIDkyOlx0ICogICAgICAtIEVWRU5UX1VBUF9NSUNfQ09VTlRFUk1FQVNVUkVTOlxuICA5MzpcdCAqL1xuICA5NDpcdGludCBtd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXG4gIDk1Olx0e1xuICA5NjpcdFx0c3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXHUwMDNlYWRhcHRlcjtcbiAgOTc6XHRcdGludCBsZW4sIGk7XG4gIDk4Olx0XHR1MzIgZXZlbnRjYXVzZSA9IGFkYXB0ZXItXHUwMDNlZXZlbnRfY2F1c2U7XG4gIDk5Olx0XHRzdHJ1Y3Qgc3RhdGlvbl9pbmZvICpzaW5mbztcbiAxMDA6XHRcdHN0cnVjdCBtd2lmaWV4X2Fzc29jX2V2ZW50ICpldmVudDtcbiAxMDE6XHRcdHN0cnVjdCBtd2lmaWV4X3N0YV9ub2RlICpub2RlO1xuIDEwMjpcdFx0dTggKmRlYXV0aF9tYWM7XG4gMTAzOlx0XHRzdHJ1Y3QgaG9zdF9jbWRfZHNfMTFuX2JhdGltZW91dCAqYmFfdGltZW91dDtcbiAxMDQ6XHRcdHUxNiBjdHJsO1xuIDEwNTpcdFxuIDEwNjpcdFx0c3dpdGNoIChldmVudGNhdXNlKSB7XG4gMTA3Olx0XHRjYXNlIEVWRU5UX1VBUF9TVEFfQVNTT0M6XG4gMTA4Olx0XHRcdHNpbmZvID0ga3phbGxvY19vYmooKnNpbmZvKTtcbiAxMDk6XHRcdFx0aWYgKCFzaW5mbylcbiAxMTA6XHRcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiAxMTE6XHRcbiAxMTI6XHRcdFx0ZXZlbnQgPSAoc3RydWN0IG13aWZpZXhfYXNzb2NfZXZlbnQgKilcbiAxMTM6XHRcdFx0XHQoYWRhcHRlci1cdTAwM2VldmVudF9ib2R5ICYjNDM7IE1XSUZJRVhfVUFQX0VWRU5UX0VYVFJBX0hFQURFUik7XG4gMTE0Olx0XHRcdGlmIChsZTE2X3RvX2NwdShldmVudC1cdTAwM2V0eXBlKSA9PSBUTFZfVFlQRV9VQVBfTUdNVF9GUkFNRSkge1xuIDExNTpcdFx0XHRcdGxlbiA9IC0xO1xuIDExNjpcdFxuIDExNzpcdFx0XHRcdGlmIChpZWVlODAyMTFfaXNfYXNzb2NfcmVxKGV2ZW50LVx1MDAzZWZyYW1lX2NvbnRyb2wpKVxuIDExODpcdFx0XHRcdFx0bGVuID0gMDtcbiAxMTk6XHRcdFx0XHRlbHNlIGlmIChpZWVlODAyMTFfaXNfcmVhc3NvY19yZXEoZXZlbnQtXHUwMDNlZnJhbWVfY29udHJvbCkpXG4gMTIwOlx0XHRcdFx0XHQvKiBUaGVyZSB3aWxsIGJlIEVUSF9BTEVOIGJ5dGVzIG9mXG4gMTIxOlx0XHRcdFx0XHQgKiBjdXJyZW50X2FwX2FkZHIgYmVmb3JlIHRoZSByZS1hc3NvYyBpZXMuXG4gMTIyOlx0XHRcdFx0XHQgKi9cbiAxMjM6XHRcdFx0XHRcdGxlbiA9IEVUSF9BTEVOO1xuIDEyNDpcdFxuIDEyNTpcdFx0XHRcdGlmIChsZW4gIT0gLTEpIHtcbiAxMjY6XHRcdFx0XHRcdHNpbmZvLVx1MDAzZWFzc29jX3JlcV9pZXMgPSBcdTAwMjZldmVudC1cdTAwM2VkYXRhW2xlbl07XG4gMTI3Olx0XHRcdFx0XHRsZW4gPSAodTggKilzaW5mby1cdTAwM2Vhc3NvY19yZXFfaWVzIC1cbiAxMjg6XHRcdFx0XHRcdCAgICAgICh1OCAqKVx1MDAyNmV2ZW50LVx1MDAzZWZyYW1lX2NvbnRyb2w7XG4gMTI5Olx0XG4gMTMwOlx0XHRcdFx0XHQvKlxuIDEzMTpcdFx0XHRcdFx0ICogZXZlbnQtXHUwMDNlbGVuIGlzIHJlcG9ydGVkIGJ5IHRoZSBkZXZpY2UgZmlybXdhcmUgYW5kIGlzIG5vdFxuIDEzMjpcdFx0XHRcdFx0ICogb3RoZXJ3aXNlIHZhbGlkYXRlZC4gIFJlamVjdCBhIGxlbmd0aCB0aGF0IHVuZGVyZmxvd3MgdGhlXG4gMTMzOlx0XHRcdFx0XHQgKiBoZWFkZXIsIG9yIHRoYXQgd291bGQgcGxhY2UgdGhlIGFzc29jaWF0aW9uIHJlcXVlc3QgSUVzXG4gMTM0Olx0XHRcdFx0XHQgKiBvdXRzaWRlIHRoZSBmaXhlZC1zaXplIGV2ZW50X2JvZHlbXSBidWZmZXIgdGhlIGV2ZW50IHdhc1xuIDEzNTpcdFx0XHRcdFx0ICogY29waWVkIGludG87IG90aGVyd2lzZSB0aGUgSUUgd2FsayBpblxuIDEzNjpcdFx0XHRcdFx0ICogbXdpZmlleF9zZXRfc3RhX2h0X2NhcCgpIHJlYWRzIHBhc3QgZXZlbnRfYm9keSBhbmQgb3V0XG4gMTM3Olx0XHRcdFx0XHQgKiBvZiB0aGUgYWRhcHRlciBzbGFiIG9iamVjdC5cbiAxMzg6XHRcdFx0XHRcdCAqL1xuIDEzOTpcdFx0XHRcdFx0aWYgKGxlMTZfdG9fY3B1KGV2ZW50LVx1MDAzZWxlbikgXHUwMDNjIGxlbiB8fFxuIDE0MDpcdFx0XHRcdFx0ICAgICh1OCAqKVx1MDAyNmV2ZW50LVx1MDAzZWZyYW1lX2NvbnRyb2wgJiM0MzsgbGUxNl90b19jcHUoZXZlbnQtXHUwMDNlbGVuKSBcdTAwM2VcbiAxNDE6XHRcdFx0XHRcdCAgICBhZGFwdGVyLVx1MDAzZWV2ZW50X2JvZHkgJiM0MzsgTUFYX0VWRU5UX1NJWkUpIHtcbiAxNDI6XHRcdFx0XHRcdFx0bXdpZmlleF9kYmcoYWRhcHRlciwgRVJST1IsXG4gMTQzOlx0XHRcdFx0XHRcdFx0ICAgIFwmIzM0O2ludmFsaWQgU1RBIGFzc29jIGV2ZW50IGxlbmd0aFxcblwmIzM0Oyk7XG4gMTQ0Olx0XHRcdFx0XHRcdGtmcmVlKHNpbmZvKTtcbiAxNDU6XHRcdFx0XHRcdFx0cmV0dXJuIC0xO1xuIDE0NjpcdFx0XHRcdFx0fVxuIDE0NzpcdFx0XHRcdFx0c2luZm8tXHUwMDNlYXNzb2NfcmVxX2llc19sZW4gPVxuIDE0ODpcdFx0XHRcdFx0XHRsZTE2X3RvX2NwdShldmVudC1cdTAwM2VsZW4pIC0gKHUxNilsZW47XG4gMTQ5Olx0XHRcdFx0fVxuIDE1MDpcdFx0XHR9XG4gMTUxOlx0XHRcdGNmZzgwMjExX25ld19zdGEocHJpdi1cdTAwM2VuZXRkZXYtXHUwMDNlaWVlZTgwMjExX3B0ciwgZXZlbnQtXHUwMDNlc3RhX2FkZHIsXG4gMTUyOlx0XHRcdFx0XHQgc2luZm8sIEdGUF9LRVJORUwpO1xuIDE1MzpcdFxuIDE1NDpcdFx0XHRub2RlID0gbXdpZmlleF9hZGRfc3RhX2VudHJ5KHByaXYsIGV2ZW50LVx1MDAzZXN0YV9hZGRyKTtcbiAxNTU6XHRcdFx0aWYgKCFub2RlKSB7XG4gMTU2Olx0XHRcdFx0bXdpZmlleF9kYmcoYWRhcHRlciwgRVJST1IsXG4gMTU3Olx0XHRcdFx0XHQgICAgXCYjMzQ7Y291bGQgbm90IGNyZWF0ZSBzdGF0aW9uIGVudHJ5IVxcblwmIzM0Oyk7XG4gMTU4Olx0XHRcdFx0a2ZyZWUoc2luZm8pO1xuIDE1OTpcdFx0XHRcdHJldHVybiAtMTtcbiAxNjA6XHRcdFx0fVxuIDE2MTpcdFxuIDE2MjpcdFx0XHRpZiAoIXByaXYtXHUwMDNlYXBfMTFuX2VuYWJsZWQpIHtcbiAxNjM6XHRcdFx0XHRrZnJlZShzaW5mbyk7XG4gMTY0Olx0XHRcdFx0YnJlYWs7XG4gMTY1Olx0XHRcdH1cbiAxNjY6XHRcbiAxNjc6XHRcdFx0bXdpZmlleF9zZXRfc3RhX2h0X2NhcChwcml2LCBzaW5mby1cdTAwM2Vhc3NvY19yZXFfaWVzLFxuIDE2ODpcdFx0XHRcdFx0ICAgICAgIHNpbmZvLVx1MDAzZWFzc29jX3JlcV9pZXNfbGVuLCBub2RlKTtcbiAxNjk6XHRcbiAxNzA6XHRcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgTUFYX05VTV9USUQ7IGkmIzQzOyYjNDM7KSB7XG4gMTcxOlx0XHRcdFx0aWYgKG5vZGUtXHUwMDNlaXNfMTFuX2VuYWJsZWQpXG4gMTcyOlx0XHRcdFx0XHRub2RlLVx1MDAzZWFtcGR1X3N0YVtpXSA9XG4gMTczOlx0XHRcdFx0XHRcdCAgICAgIHByaXYtXHUwMDNlYWdncl9wcmlvX3RibFtpXS5hbXBkdV91c2VyO1xuIDE3NDpcdFx0XHRcdGVsc2VcbiAxNzU6XHRcdFx0XHRcdG5vZGUtXHUwMDNlYW1wZHVfc3RhW2ldID0gQkFfU1RSRUFNX05PVF9BTExPV0VEO1xuIDE3NjpcdFx0XHR9XG4gMTc3Olx0XHRcdG1lbXNldChub2RlLVx1MDAzZXJ4X3NlcSwgMHhmZiwgc2l6ZW9mKG5vZGUtXHUwMDNlcnhfc2VxKSk7XG4gMTc4Olx0XHRcdGtmcmVlKHNpbmZvKTtcbiAxNzk6XHRcdFx0YnJlYWs7XG4gMTgwOlx0XHRjYXNlIEVWRU5UX1VBUF9TVEFfREVBVVRIOlxuIDE4MTpcdFx0XHRkZWF1dGhfbWFjID0gYWRhcHRlci1cdTAwM2VldmVudF9ib2R5ICYjNDM7XG4gMTgyOlx0XHRcdFx0ICAgICBNV0lGSUVYX1VBUF9FVkVOVF9FWFRSQV9IRUFERVI7XG4gMTgzOlx0XHRcdGNmZzgwMjExX2RlbF9zdGEocHJpdi1cdTAwM2VuZXRkZXYtXHUwMDNlaWVlZTgwMjExX3B0ciwgZGVhdXRoX21hYyxcbiAxODQ6XHRcdFx0XHRcdCBHRlBfS0VSTkVMKTtcbiAxODU6XHRcbiAxODY6XHRcdFx0aWYgKHByaXYtXHUwMDNlYXBfMTFuX2VuYWJsZWQpIHtcbiAxODc6XHRcdFx0XHRtd2lmaWV4XzExbl9kZWxfcnhfcmVvcmRlcl90YmxfYnlfdGEocHJpdiwgZGVhdXRoX21hYyk7XG4gMTg4Olx0XHRcdFx0bXdpZmlleF9kZWxfdHhfYmFfc3RyZWFtX3RibF9ieV9yYShwcml2LCBkZWF1dGhfbWFjKTtcbiAxODk6XHRcdFx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxMjoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzY0NwoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDMzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBtd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50YCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIG15IGZvY3VzIGxhbmRzIG9uIGBtd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50YC4gVGhpcyBmdW5jdGlvbiBoYW5kbGVzIGBFVkVOVF9VQVBfU1RBX0FTU09DYCBhbmQgcmVsYXRlZCBldmVudHMsIHNvIGl0JiMzOTtzIGNsZWFybHkgaW1wb3J0YW50IGZvciB0aGUgb3ZlcmFsbCB3aXJlbGVzcyBmdW5jdGlvbmFsaXR5LiBJIGNhbiBjb25maXJtIGl0JiMzOTtzIGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZSwgd2hpY2ggaXMgZ29vZC4KClRoZSBwYXRjaCBpdHNlbGYgaXMgYWRkaW5nIGEgYm91bmRzIGNoZWNrLCBzcGVjaWZpY2FsbHkgdG8gcHJldmVudCBhbiBvdXQtb2YtYm91bmRzIHJlYWQgd2l0aGluIGBtd2lmaWV4X3NldF9zdGFfaHRfY2FwYCwgd2hpY2ggaXMgY2FsbGVkIGxhdGVyIGluIGBtd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50YC4gVGhpcyBpcyBhIGNsYXNzaWMgdnVsbmVyYWJpbGl0eSBmaXgsIGFuZCBJIGFwcHJlY2lhdGUgdGhlIHByb2FjdGl2ZSBhcHByb2FjaC4KCk5vdywgbGV0JiMzOTtzIG5haWwgZG93biB0aGUgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMuIFRoZSBjb2RlIHJlZmVyZW5jZXMgYE1XSUZJRVhgIGFuZCBgTVdJRklFWF9VU0JgLiBgTVdJRklFWF9VU0JgIHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCwgZGVwZW5kZW50IG9uIGJvdGggYE1XSUZJRVhgIGFuZCBgVVNCYCwgYW5kIGBNV0lGSUVYYCBpcyBkZXBlbmRlbnQgb24gYENGRzgwMjExYC4gU28sIGl0JiMzOTtzIHByZXR0eSBjbGVhciB0aGF0IHRoZXNlIGFyZSB0aGUga2V5IGNvbmZpZ3VyYXRpb25zIHRvIGtlZXAgaW4gbWluZC4KCkkmIzM5O20gZG91YmxlLWNoZWNraW5nIHRvIGVuc3VyZSB0aGF0IGBtd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50YCBpcyB0aGUgKm9ubHkqIGZ1bmN0aW9uIG1vZGlmaWVkIGJ5IHRoaXMgcGF0Y2gsIGFuZCB5ZXAsIGl0IGlzLiBUaGF0IHNpbXBsaWZpZXMgdGhpbmdzLgoKTmV4dCwgSSBuZWVkIHRvIGNvbnNpZGVyIHdoYXQgKm90aGVyKiBmdW5jdGlvbnMgYXJlIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoaXMgY2hhbmdlLiBXaGlsZSBgbXdpZmlleF9wcm9jZXNzX3VhcF9ldmVudGAgaXMgdGhlIHByaW1hcnkgZm9jdXMsIGl0JiMzOTtzIGNsZWFyIHRoYXQgdGhlIGFjdHVhbCB2dWxuZXJhYmlsaXR5IGxpZXMgaW4gYG13aWZpZXhfc2V0X3N0YV9odF9jYXBgLiBTbywgSSYjMzk7bGwgZGVmaW5pdGVseSB3YW50IHRvIGluY2x1ZGUgYG13aWZpZXhfc2V0X3N0YV9odF9jYXBgIGluIG15IGxpc3Qgb2Ygc2lnbmlmaWNhbnQgZnVuY3Rpb25zIHRvbywgYXMgaXQmIzM5O3MgdGhlIG9uZSBiZWluZyBwcm90ZWN0ZWQgYnkgdGhlIG5ldyBjaGVjay4KCkluIGNvbmNsdXNpb24sIEkmIzM5O2xsIGJlIGtlZXBpbmcgYSB2ZXJ5IGNsb3NlIGV5ZSBvbiBib3RoIGBtd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50YCAod2hlcmUgdGhlIHBhdGNoIGlzIGltcGxlbWVudGVkKSBhbmQgYG13aWZpZXhfc2V0X3N0YV9odF9jYXBgICh0aGUgZnVuY3Rpb24gdGhhdCB3YXMgdnVsbmVyYWJsZSkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDEyOjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O213aWZpZXhfc2V0X3N0YV9odF9jYXAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD0xNTkwPXZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTU5MTptd2lmaWV4X3NldF9zdGFfaHRfY2FwKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIGNvbnN0IHU4ICppZXMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTE1OTItXHRcdCAgICAgICBpbnQgaWVzX2xlbiwgc3RydWN0IG13aWZpZXhfc3RhX25vZGUgKm5vZGUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYz05ND1pbnQgbXdpZmlleF9wcm9jZXNzX3VhcF9ldmVudChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYy0xMzUtXHRcdFx0XHQgKiBjb3BpZWQgaW50bzsgb3RoZXJ3aXNlIHRoZSBJRSB3YWxrIGluXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdWFwX2V2ZW50LmM6MTM2Olx0XHRcdFx0ICogbXdpZmlleF9zZXRfc3RhX2h0X2NhcCgpIHJlYWRzIHBhc3QgZXZlbnRfYm9keSBhbmQgb3V0XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdWFwX2V2ZW50LmMtMTM3LVx0XHRcdFx0ICogb2YgdGhlIGFkYXB0ZXIgc2xhYiBvYmplY3QuXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF9ldmVudC5jLTE2Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYzoxNjc6XHRcdG13aWZpZXhfc2V0X3N0YV9odF9jYXAocHJpdiwgc2luZm8tXHUwMDNlYXNzb2NfcmVxX2llcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYy0xNjgtXHRcdFx0XHQgICAgICAgc2luZm8tXHUwMDNlYXNzb2NfcmVxX2llc19sZW4sIG5vZGUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmM9NzEyPXZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmM6NzEzOm13aWZpZXhfc2V0X3N0YV9odF9jYXAoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgY29uc3QgdTggKmllcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmMtNzE0LVx0XHQgICAgICAgaW50IGllc19sZW4sIHN0cnVjdCBtd2lmaWV4X3N0YV9ub2RlICpub2RlKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxMjoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODk2NgoJCQkJCQkJb3V0cHV0OiAxNDYKCQkJCQkJCXRob3VnaHRzOiAyNTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgRnV6emluZyBTdHJhdGVneSBmb3IgVGhpcyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBsb29rZWQgYXQgdGhpcyBwYXRjaCBhbmQsIHllcywgYG13aWZpZXhfc2V0X3N0YV9odF9jYXBgIGRlZmluaXRlbHkgc2VlbXMgbGlrZSBhIHN0cm9uZyBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIEl0JiMzOTtzIGEga2V5IGZ1bmN0aW9uIGluIHRoaXMgc2NlbmFyaW8uCgpOb3csIGxldCYjMzk7cyB0aGluayBhYm91dCB0aGUgb3RoZXIgY29uZmlndXJhdGlvbnMuIFRoZSBtYWluIG9uZSBoZXJlLCBvZiBjb3Vyc2UsIGlzIGBNV0lGSUVYX1VTQmAuIEkgY291bGQgYWxzbyBjb25zaWRlciBgTVdJRklFWF9TRElPYCBhbmQgYE1XSUZJRVhfUENJRWAgaWYgdGhleSBwcmVzZW50IHBsYXVzaWJsZSBmdXp6aW5nIHZlY3RvcnMsIGJ1dCByZWFsaXN0aWNhbGx5LCBgTVdJRklFWF9VU0JgIGlzIHRoZSBtb3N0IGxpa2VseSBhdmVudWUsIGVzcGVjaWFsbHkgZ2l2ZW4gdGhlIFVTQiBnYWRnZXQgcG90ZW50aWFsLiBUaGVyZWZvcmUsIEkmIzM5O20gZ29pbmcgdG8ga2VlcCBpdCBzdHJhaWdodGZvcndhcmQgYW5kIGp1c3QgaW5jbHVkZSBgTVdJRklFWGAgYW5kIGBNV0lGSUVYX1VTQmAuIE5vIG5lZWQgdG8gb3ZlcmNvbXBsaWNhdGUgdGhpbmdzIGF0IHRoaXMgc3RhZ2UuCgpBbHJpZ2h0LCBsZXQgbWUgc3VtbWFyaXplIG15IGFwcHJvYWNoIG5vdzoKCiogICAqKmBXb3J0aEZ1enppbmc6IHRydWVgKio6IEFic29sdXRlbHksIHRoaXMgaXMgYSBjbGVhciBmdXp6aW5nIHRhcmdldC4KKiAgICoqYEZvY3VzU3ltYm9sczogbXdpZmlleF9wcm9jZXNzX3VhcF9ldmVudCwgbXdpZmlleF9zZXRfc3RhX2h0X2NhcGAqKjogVGhlc2UgYXJlIHRoZSBrZXkgZnVuY3Rpb25zIEkmIzM5O20gemVyb2luZyBpbiBvbjsgdGhlIGhlYXJ0IG9mIHRoZSB2dWxuZXJhYmlsaXR5IGFuZCB0aGUgcG90ZW50aWFsbHkgZXhwbG9pdGFibGUgY29kZS4KKiAgICoqYEVuYWJsZUNvbmZpZ3M6IE1XSUZJRVgsIE1XSUZJRVhfVVNCYCoqOiBUaGlzIG5hcnJvd3MgZG93biB0aGUgdGVzdCB0byB0aGUgcGVydGluZW50IGRyaXZlcnMuCiogICAqKmBSZWFzb25pbmc6IFRoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIHRvIGFuIGV2ZW50IGxlbmd0aCByZXBvcnRlZCBieSB0aGUgZGV2aWNlIGZpcm13YXJlIGluIG13aWZpZXhfcHJvY2Vzc191YXBfZXZlbnQgdG8gcHJldmVudCBhbiBvdXQtb2YtYm91bmRzIHJlYWQgaW4gbXdpZmlleF9zZXRfc3RhX2h0X2NhcC4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgdGhlIFVTQiBkcml2ZXIgKG13aWZpZXhfdXNiKSB3aGljaCBjYW4gYmUgZnV6emVkIHVzaW5nIFVTQiBlbXVsYXRpb24uYCoqOiBUaGlzIGlzIHRoZSBjb25jaXNlIHJhdGlvbmFsZTsgdGhlIHBhdGNoIGFkZHJlc3NlcyBhIGZpcm13YXJlIGV2ZW50IGxlbmd0aCBpc3N1ZSBsZWFkaW5nIHRvIGFuIG91dC1vZi1ib3VuZHMgcmVhZCwgYW5kIHRoZSBVU0IgZHJpdmVyIGlzIHRoZSBlbnRyeSBwb2ludCBmb3IgdGhpcyBidWcuIEZ1enppbmcgd2l0aCBVU0IgZW11bGF0aW9uIGlzIHRoZSBjbGVhciBwYXRoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxMjoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TVdJRklFWCYjMzQ7LAogICAgJiMzNDtNV0lGSUVYX1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O213aWZpZXhfcHJvY2Vzc191YXBfZXZlbnQmIzM0OywKICAgICYjMzQ7bXdpZmlleF9zZXRfc3RhX2h0X2NhcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIHRvIGFuIGV2ZW50IGxlbmd0aCByZXBvcnRlZCBieSB0aGUgZGV2aWNlIGZpcm13YXJlIGluIGBtd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50YCB0byBwcmV2ZW50IGFuIG91dC1vZi1ib3VuZHMgcmVhZCBpbiBgbXdpZmlleF9zZXRfc3RhX2h0X2NhcGAuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgdmlhIHRoZSBVU0IgZHJpdmVyIChgbXdpZmlleF91c2JgKSB3aGljaCBjYW4gYmUgZnV6emVkIHVzaW5nIFVTQiBlbXVsYXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01XSUZJRVgmIzM0OywKICAgICYjMzQ7TVdJRklFWF9VU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50JiMzNDssCiAgICAmIzM0O213aWZpZXhfc2V0X3N0YV9odF9jYXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayB0byBhbiBldmVudCBsZW5ndGggcmVwb3J0ZWQgYnkgdGhlIGRldmljZSBmaXJtd2FyZSBpbiBgbXdpZmlleF9wcm9jZXNzX3VhcF9ldmVudGAgdG8gcHJldmVudCBhbiBvdXQtb2YtYm91bmRzIHJlYWQgaW4gYG13aWZpZXhfc2V0X3N0YV9odF9jYXBgLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSB0aGUgVVNCIGRyaXZlciAoYG13aWZpZXhfdXNiYCkgd2hpY2ggY2FuIGJlIGZ1enplZCB1c2luZyBVU0IgZW11bGF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTI6MjE6MDEuMTYzOTEyNDM3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA3MDEzMjc1MTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1XSUZJRVhcIixcbiAgICBcIk1XSUZJRVhfVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXdpZmlleF9wcm9jZXNzX3VhcF9ldmVudFwiLFxuICAgIFwibXdpZmlleF9zZXRfc3RhX2h0X2NhcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgdG8gYW4gZXZlbnQgbGVuZ3RoIHJlcG9ydGVkIGJ5IHRoZSBkZXZpY2UgZmlybXdhcmUgaW4gYG13aWZpZXhfcHJvY2Vzc191YXBfZXZlbnRgIHRvIHByZXZlbnQgYW4gb3V0LW9mLWJvdW5kcyByZWFkIGluIGBtd2lmaWV4X3NldF9zdGFfaHRfY2FwYC4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgdGhlIFVTQiBkcml2ZXIgKGBtd2lmaWV4X3VzYmApIHdoaWNoIGNhbiBiZSBmdXp6ZWQgdXNpbmcgVVNCIGVtdWxhdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTI6MjE6MDEuMTYzOTE5Mzk3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzEzMTkxMjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA4ZjUwOTViODZlY2U2YTljODU2NDQ3N2RlMDY5NGY5ZGUxYWQ3ZmExXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gSnVuIDI5IDEyOjIwOjU5IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuY1xcbmluZGV4IDY3OWZkYWUwZjAwMWExLi5hZGNhN2RhMjlmMGYyYiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdWFwX2V2ZW50LmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdWFwX2V2ZW50LmNcXG5AQCAtMTI2LDYgKzEyNiwyNCBAQCBpbnQgbXdpZmlleF9wcm9jZXNzX3VhcF9ldmVudChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxcbiBcXHRcXHRcXHRcXHRzaW5mby1cXHUwMDNlYXNzb2NfcmVxX2llcyA9IFxcdTAwMjZldmVudC1cXHUwMDNlZGF0YVtsZW5dO1xcbiBcXHRcXHRcXHRcXHRsZW4gPSAodTggKilzaW5mby1cXHUwMDNlYXNzb2NfcmVxX2llcyAtXFxuIFxcdFxcdFxcdFxcdCAgICAgICh1OCAqKVxcdTAwMjZldmVudC1cXHUwMDNlZnJhbWVfY29udHJvbDtcXG4rXFxuK1xcdFxcdFxcdFxcdC8qXFxuK1xcdFxcdFxcdFxcdCAqIGV2ZW50LVxcdTAwM2VsZW4gaXMgcmVwb3J0ZWQgYnkgdGhlIGRldmljZSBmaXJtd2FyZSBhbmQgaXMgbm90XFxuK1xcdFxcdFxcdFxcdCAqIG90aGVyd2lzZSB2YWxpZGF0ZWQuICBSZWplY3QgYSBsZW5ndGggdGhhdCB1bmRlcmZsb3dzIHRoZVxcbitcXHRcXHRcXHRcXHQgKiBoZWFkZXIsIG9yIHRoYXQgd291bGQgcGxhY2UgdGhlIGFzc29jaWF0aW9uIHJlcXVlc3QgSUVzXFxuK1xcdFxcdFxcdFxcdCAqIG91dHNpZGUgdGhlIGZpeGVkLXNpemUgZXZlbnRfYm9keVtdIGJ1ZmZlciB0aGUgZXZlbnQgd2FzXFxuK1xcdFxcdFxcdFxcdCAqIGNvcGllZCBpbnRvOyBvdGhlcndpc2UgdGhlIElFIHdhbGsgaW5cXG4rXFx0XFx0XFx0XFx0ICogbXdpZmlleF9zZXRfc3RhX2h0X2NhcCgpIHJlYWRzIHBhc3QgZXZlbnRfYm9keSBhbmQgb3V0XFxuK1xcdFxcdFxcdFxcdCAqIG9mIHRoZSBhZGFwdGVyIHNsYWIgb2JqZWN0LlxcbitcXHRcXHRcXHRcXHQgKi9cXG4rXFx0XFx0XFx0XFx0aWYgKGxlMTZfdG9fY3B1KGV2ZW50LVxcdTAwM2VsZW4pIFxcdTAwM2MgbGVuIHx8XFxuK1xcdFxcdFxcdFxcdCAgICAodTggKilcXHUwMDI2ZXZlbnQtXFx1MDAzZWZyYW1lX2NvbnRyb2wgKyBsZTE2X3RvX2NwdShldmVudC1cXHUwMDNlbGVuKSBcXHUwMDNlXFxuK1xcdFxcdFxcdFxcdCAgICBhZGFwdGVyLVxcdTAwM2VldmVudF9ib2R5ICsgTUFYX0VWRU5UX1NJWkUpIHtcXG4rXFx0XFx0XFx0XFx0XFx0bXdpZmlleF9kYmcoYWRhcHRlciwgRVJST1IsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgICBcXFwiaW52YWxpZCBTVEEgYXNzb2MgZXZlbnQgbGVuZ3RoXFxcXG5cXFwiKTtcXG4rXFx0XFx0XFx0XFx0XFx0a2ZyZWUoc2luZm8pO1xcbitcXHRcXHRcXHRcXHRcXHRyZXR1cm4gLTE7XFxuK1xcdFxcdFxcdFxcdH1cXG4gXFx0XFx0XFx0XFx0c2luZm8tXFx1MDAzZWFzc29jX3JlcV9pZXNfbGVuID1cXG4gXFx0XFx0XFx0XFx0XFx0bGUxNl90b19jcHUoZXZlbnQtXFx1MDAzZWxlbikgLSAodTE2KWxlbjtcXG4gXFx0XFx0XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxMjoyMTowMS42OTYxMjg5NzVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwNjQ4MTA0MzA1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNV0lGSUVYXCIsXG4gICAgXCJNV0lGSUVYX1VTQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm13aWZpZXhfcHJvY2Vzc191YXBfZXZlbnRcIixcbiAgICBcIm13aWZpZXhfc2V0X3N0YV9odF9jYXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIHRvIGFuIGV2ZW50IGxlbmd0aCByZXBvcnRlZCBieSB0aGUgZGV2aWNlIGZpcm13YXJlIGluIGBtd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50YCB0byBwcmV2ZW50IGFuIG91dC1vZi1ib3VuZHMgcmVhZCBpbiBgbXdpZmlleF9zZXRfc3RhX2h0X2NhcGAuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgdmlhIHRoZSBVU0IgZHJpdmVyIChgbXdpZmlleF91c2JgKSB3aGljaCBjYW4gYmUgZnV6emVkIHVzaW5nIFVTQiBlbXVsYXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOGY1MDk1Yjg2ZWNlNmE5Yzg1NjQ0NzdkZTA2OTRmOWRlMWFkN2ZhMVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVuIDI5IDEyOjIwOjU5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF9ldmVudC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF9ldmVudC5jXG5pbmRleCA2NzlmZGFlMGYwMDFhMS4uYWRjYTdkYTI5ZjBmMmIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdWFwX2V2ZW50LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuY1xuQEAgLTEyNiw2ICsxMjYsMjQgQEAgaW50IG13aWZpZXhfcHJvY2Vzc191YXBfZXZlbnQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdilcbiBcdFx0XHRcdHNpbmZvLVx1MDAzZWFzc29jX3JlcV9pZXMgPSBcdTAwMjZldmVudC1cdTAwM2VkYXRhW2xlbl07XG4gXHRcdFx0XHRsZW4gPSAodTggKilzaW5mby1cdTAwM2Vhc3NvY19yZXFfaWVzIC1cbiBcdFx0XHRcdCAgICAgICh1OCAqKVx1MDAyNmV2ZW50LVx1MDAzZWZyYW1lX2NvbnRyb2w7XG4rXG4rXHRcdFx0XHQvKlxuK1x0XHRcdFx0ICogZXZlbnQtXHUwMDNlbGVuIGlzIHJlcG9ydGVkIGJ5IHRoZSBkZXZpY2UgZmlybXdhcmUgYW5kIGlzIG5vdFxuK1x0XHRcdFx0ICogb3RoZXJ3aXNlIHZhbGlkYXRlZC4gIFJlamVjdCBhIGxlbmd0aCB0aGF0IHVuZGVyZmxvd3MgdGhlXG4rXHRcdFx0XHQgKiBoZWFkZXIsIG9yIHRoYXQgd291bGQgcGxhY2UgdGhlIGFzc29jaWF0aW9uIHJlcXVlc3QgSUVzXG4rXHRcdFx0XHQgKiBvdXRzaWRlIHRoZSBmaXhlZC1zaXplIGV2ZW50X2JvZHlbXSBidWZmZXIgdGhlIGV2ZW50IHdhc1xuK1x0XHRcdFx0ICogY29waWVkIGludG87IG90aGVyd2lzZSB0aGUgSUUgd2FsayBpblxuK1x0XHRcdFx0ICogbXdpZmlleF9zZXRfc3RhX2h0X2NhcCgpIHJlYWRzIHBhc3QgZXZlbnRfYm9keSBhbmQgb3V0XG4rXHRcdFx0XHQgKiBvZiB0aGUgYWRhcHRlciBzbGFiIG9iamVjdC5cbitcdFx0XHRcdCAqL1xuK1x0XHRcdFx0aWYgKGxlMTZfdG9fY3B1KGV2ZW50LVx1MDAzZWxlbikgXHUwMDNjIGxlbiB8fFxuK1x0XHRcdFx0ICAgICh1OCAqKVx1MDAyNmV2ZW50LVx1MDAzZWZyYW1lX2NvbnRyb2wgKyBsZTE2X3RvX2NwdShldmVudC1cdTAwM2VsZW4pIFx1MDAzZVxuK1x0XHRcdFx0ICAgIGFkYXB0ZXItXHUwMDNlZXZlbnRfYm9keSArIE1BWF9FVkVOVF9TSVpFKSB7XG4rXHRcdFx0XHRcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIEVSUk9SLFxuK1x0XHRcdFx0XHRcdCAgICBcImludmFsaWQgU1RBIGFzc29jIGV2ZW50IGxlbmd0aFxcblwiKTtcbitcdFx0XHRcdFx0a2ZyZWUoc2luZm8pO1xuK1x0XHRcdFx0XHRyZXR1cm4gLTE7XG4rXHRcdFx0XHR9XG4gXHRcdFx0XHRzaW5mby1cdTAwM2Vhc3NvY19yZXFfaWVzX2xlbiA9XG4gXHRcdFx0XHRcdGxlMTZfdG9fY3B1KGV2ZW50LVx1MDAzZWxlbikgLSAodTE2KWxlbjtcbiBcdFx0XHR9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxMjoyMTowMS42OTYxMzA3NTVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxODU4OTY0MDc1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQb3RlbnRpYWwgRnV6emluZyBUYXJnZXQ6IGBtd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50YCoqXG5cbk9rYXksIHNvIHdlIGhhdmUgdGhpcyBwYXRjaCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF9ldmVudC5jYC4gTG9va3MgbGlrZSBpdCdzIGEgY3JpdGljYWwgbGVuZ3RoIGNoZWNrIGluIGBtd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50YCwgZGVzaWduZWQgdG8gcHJldmVudCBhbiBvdXQtb2YtYm91bmRzIHJlYWQuIFRoZSBwYXRjaCB2YWxpZGF0ZXMgYGV2ZW50LVx1MDAzZWxlbmAgYWdhaW5zdCB0aGUgcmVjZWl2ZWQgZGF0YSBidWZmZXIgc2l6ZSwgZXNzZW50aWFsbHkgbWFraW5nIHN1cmUgd2UgZG9uJ3QgdHJ5IHRvIHJlYWQgYmV5b25kIHRoZSBhbGxvY2F0ZWQgbWVtb3J5LiBTbWFydCBtb3ZlLlxuXG5Ob3csIHRoZSBpbnRlcmVzdGluZyBxdWVzdGlvbiBpczogY2FuIHdlIHJlYWNoIGBtd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50YCBpbiBhIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQ/IGBtd2lmaWV4YCBpcyBzcGVjaWZpY2FsbHkgZm9yIE1hcnZlbGwgV2lGaSBoYXJkd2FyZSwgc28gd2UgY2FuJ3QganVzdCB0aHJvdyBhIGdlbmVyaWMgbWFjODAyMTEgZGV2aWNlIGF0IGl0LiAqSG93ZXZlciosIHRoaXMgaXMgd2hlcmUgaXQgZ2V0cyBpbnRlcmVzdGluZy4gSSByZW1lbWJlciBgbXdpZmlleGAgaGFzIHN1cHBvcnQgZm9yIFVTQiEgSXQgaGFzIGEgYG13aWZpZXhfdXNiYCBkcml2ZXIuXG5cbkFoYSEgVVNCIGRldmljZXMgYXJlIG9mdGVuIHF1aXRlIGFtZW5hYmxlIHRvIGVtdWxhdGlvbi4gV2UgY291bGQgdXNlIFVTQiBnYWRnZXQsIGR1bW15X2hjZCwgb3IgdmhjaS1oY2QgZm9yIHRoaXMuIFdhaXQsIEkgcmVjYWxsIHRoYXQgc3l6a2FsbGVyIGhhcyBzdXBwb3J0IGZvciBmdXp6aW5nIFVTQiBkZXZpY2VzIHVzaW5nIHZoY2ktaGNkISBUaGF0J3MgcGVyZmVjdC4gVGhpcyBtZWFucyB3ZSBzaG91bGQgYmUgYWJsZSB0byBnZXQgYG13aWZpZXhfdXNiYCB1cCBhbmQgcnVubmluZyB1bmRlciBhIGZ1enplciEgTm93IEkganVzdCBuZWVkIHRvIGNvbmZpcm0gdGhlIEtjb25maWcgb3B0aW9ucyBmb3IgYG13aWZpZXhgIHRvIG1ha2Ugc3VyZSB3ZSBjYW4gYnVpbGQgaXQgd2l0aCB0aGUgcmlnaHQgY29uZmlndXJhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMDUsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOTEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxMjoyMToyMC4yODU3NzM4MjFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI3NjkwODQzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jbWRldnQuYz00NzA9aW50IG13aWZpZXhfcHJvY2Vzc19ldmVudChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NtZGV2dC5jLTUxOS1cXHRpZiAocHJpdi1cXHUwMDNlYnNzX3JvbGUgPT0gTVdJRklFWF9CU1NfUk9MRV9VQVApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NtZGV2dC5jOjUyMDpcXHRcXHRyZXQgPSBtd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50KHByaXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jbWRldnQuYy01MjEtXFx0ZWxzZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD0xMTQ1PWludCBtd2lmaWV4X3Byb2Nlc3Nfc3RhX2V2ZW50KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxMTQ2OmludCBtd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xMTQ3LXZvaWQgbXdpZmlleF9kZWxldGVfYWxsX3N0YXRpb25fbGlzdChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYz0xND1zdGF0aWMgaW50IG13aWZpZXhfY2hlY2tfdWFwX2NhcGFiaWxpdGllcyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF9ldmVudC5jLTkzLSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYzo5NDppbnQgbXdpZmlleF9wcm9jZXNzX3VhcF9ldmVudChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYy05NS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDEyOjIxOjIyLjU2MjY4NzcwOVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMTU2ODI0NDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOlxuXG4qKkludmVzdGlnYXRpbmcgbXdpZmlleF91c2IgaW4gS2NvbmZpZyoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGl0LiBUaW1lIHRvIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgaHVudCBkb3duIGBtd2lmaWV4X3VzYmAuIFRoaXMgbGlrZWx5IG1lYW5zIEknbSB0cnlpbmcgdG8gY29uZmlndXJlIG9yIHRyb3VibGVzaG9vdCBzb21ldGhpbmcgcmVsYXRlZCB0byB0aGUgTWFydmVsbCBXaUZpIG1vZHVsZSwgc3BlY2lmaWNhbGx5IHRoZSBVU0IgaW50ZXJmYWNlLiBJJ2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSBpdCdzIGRlZmluZWQsIGFueSBkZXBlbmRlbmNpZXMgaXQgbWlnaHQgaGF2ZSwgYW5kIGlmIHRoZXJlIGFyZSBhbnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gZmxhZ3MgYXQgcGxheS4gSSdsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZTogaXMgaXQgc2VsZWN0YWJsZSBieSBkZWZhdWx0PyBJcyB0aGVyZSBhbiBvcHRpb24gdG8gZGlzYWJsZSBpdD8gV2hhdCBvdGhlciBmZWF0dXJlcyBvciBkcml2ZXJzIHJlbHkgb24gaXQ/IEFyZSB0aGVyZSBhbnkgc3BlY2lmaWMgaGFyZHdhcmUgY29uZmlndXJhdGlvbnMgdGllZCB0byBpdHMgYWN0aXZhdGlvbj8gVGhpcyBjb3VsZCBiZSB0byBlbmFibGUgYSBzcGVjaWZpYyBtb2R1bGUgZmVhdHVyZSwgdG8gaW52ZXN0aWdhdGUgYSBidWlsZCBlcnJvciwgb3Igc2ltcGx5IHRvIGVuc3VyZSBJIHVuZGVyc3RhbmQgaG93IHRoaXMgY29tcG9uZW50IGlzIGludGVncmF0ZWQgaW50byB0aGUgbGFyZ2VyIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzE4OSwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDEyOjIxOjI1LjY3ODM3MjA1NVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDc5MTU2MzY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNV0lGSUVYXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6Mjpjb25maWcgTVdJRklFWFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgV2lGaS1FeCBEcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0xMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzoxMjpjb25maWcgTVdJRklFWF9TRElPXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMTMtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFNEODc4Ni9TRDg3ODcvU0Q4Nzk3L1NEODg4Ny9TRDg4OTcvU0Q4OTc3L1NEODk3OC9TRDg5ODcvU0Q4OTk3XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6MjU6Y29uZmlnIE1XSUZJRVhfUENJRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTI2LVxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBQQ0lFIDg3NjYvODg5Ny84OTk3XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6Mzc6Y29uZmlnIE1XSUZJRVhfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzgtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFVTQjg3NjYvODc5Ny84OTk3XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxMjoyMToyOC4xNTc1MzM1NjNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDgzNDk5MTQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqQW5hbHl6aW5nIE1XSUZJRVggQ29uZmlndXJhdGlvbiBhbmQgRXZlbnQgSGFuZGxpbmcqKlxuXG5SaWdodCwgc28gSSdtIGRlYWxpbmcgd2l0aCBgTVdJRklFWGAgYW5kIGBNV0lGSUVYX1VTQmAgY29uZmlndXJhdGlvbnMgaGVyZS4gVGhvc2UgYXJlIHRoZSBrZXkgb25lcywgYXQgbGVhc3QgaW5pdGlhbGx5LiBNeSBwcmltYXJ5IGZvY3VzIGlzIG9uIHRoZSBmdW5jdGlvbiBgbXdpZmlleF9wcm9jZXNzX3VhcF9ldmVudGAuIFRoYXTigJlzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zLCBvciBhdCBsZWFzdCB3aGVyZSB0aGUgVUFQIGV2ZW50cyBhcmUgcHJvY2Vzc2VkLlxuXG5CdXQsIGJlZm9yZSBJIGRpdmUgdG9vIGRlZXAgaW50byB0aGF0IGZ1bmN0aW9uLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnl0aGluZy4gQXJlIHRoZXJlIGFueSBvdGhlciBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMsIGRlZmluZXMsIG9yIGZsYWdzIEkgc2hvdWxkIGJlIGF3YXJlIG9mPyBBcmUgdGhlc2UgdGhlIG9ubHkgY29uZmlncywgb3IgYXJlIHRoZXJlIHN1cHBvcnRpbmcgZmlsZXM/IEkgbmVlZCB0byBnZXQgYSBicm9hZGVyIHZpZXcgYmVmb3JlIEkgc3RhcnQgZGlnZ2luZyBpbnRvIHRoZSBjb3JlIGxvZ2ljLiBJIHdpbGwgY2hlY2sgZm9yIGFueSByZWxhdGVkIGNvbmZpZ3Mgbm93LlxuXG5cbiIsIklucHV0VG9rZW5zIjozODM3LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTI6MjE6MzMuMjQxMDM1NTc4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNTQ3NTMxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnPTI9Y29uZmlnIE1XSUZJRVhcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjQ6XFx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTUtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc9MTI9Y29uZmlnIE1XSUZJRVhfU0RJT1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTEzLVxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBTRDg3ODYvU0Q4Nzg3L1NEODc5Ny9TRDg4ODcvU0Q4ODk3L1NEODk3Ny9TRDg5NzgvU0Q4OTg3L1NEODk5N1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzoxNDpcXHRkZXBlbmRzIG9uIE1XSUZJRVggXFx1MDAyNlxcdTAwMjYgTU1DXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMTUtXFx0c2VsZWN0IEZXX0xPQURFUlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc9MjU9Y29uZmlnIE1XSUZJRVhfUENJRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTI2LVxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBQQ0lFIDg3NjYvODg5Ny84OTk3XFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjI3OlxcdGRlcGVuZHMgb24gTVdJRklFWCBcXHUwMDI2XFx1MDAyNiBQQ0lcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0yOC1cXHRzZWxlY3QgRldfTE9BREVSXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZz0zNz1jb25maWcgTVdJRklFWF9VU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0zOC1cXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgVVNCODc2Ni84Nzk3Lzg5OTdcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6Mzk6XFx0ZGVwZW5kcyBvbiBNV0lGSUVYIFxcdTAwMjZcXHUwMDI2IFVTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTQwLVxcdHNlbGVjdCBGV19MT0FERVJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTI6MjE6MzMuMzQ2NTE4NDQ3WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzgwNTQwMzQxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFdpRmkgRHJpdmVyIEV2ZW50IFByb2Nlc3NpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBXaUZpIGRyaXZlciBjb2RlLCBhbmQgaXQgbG9va3MgbGlrZSBgTVdJRklFWGAgYW5kIGBNV0lGSUVYX1VTQmAgYXJlIHRoZSBjb25maWd1cmF0aW9ucyBJIG5lZWQgdG8gcGF5IGF0dGVudGlvbiB0by4gVGhlIGNvcmUgZnVuY3Rpb24gaGVyZSBzZWVtcyB0byBiZSBgbXdpZmlleF9wcm9jZXNzX3VhcF9ldmVudGAuIE15IGluaXRpYWwgdGhvdWdodCBpcywgaXMgdGhpcyB0aGUgKm9ubHkqIGZ1bmN0aW9uIEkgbmVlZCB0byBmb2N1cyBvbiwgb3IgYXJlIHRoZXJlIG90aGVyIHJlbGF0ZWQgZnVuY3Rpb25zIHdvcnRoIGludmVzdGlnYXRpbmc/XG5cblRoZSBwYXRjaCBJJ20gZXhhbWluaW5nIG1vZGlmaWVzIGBtd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50YCwgc28gdGhhdCdzIHdoZXJlIHRoZSBoZWFydCBvZiB0aGUgY2hhbmdlcyBsaWVzLiBOb3csIGEgY3JpdGljYWwgcXVlc3Rpb24gYXJpc2VzOiBpcyBgbXdpZmlleF9wcm9jZXNzX3VhcF9ldmVudGAgY2FsbGVkIGV4Y2x1c2l2ZWx5IGZyb20gYSBVU0Itc3BlY2lmaWMgcGF0aCwgb3IgZG9lcyBpdCBoYW5kbGUgZXZlbnRzIGZyb20gYSBtb3JlIGdlbmVyYWwgY29udGV4dD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGwgY2hhaW4gdG8gYXNjZXJ0YWluIGl0cyBzY29wZS4gTGV0J3Mgc2VlLi4uIGl0J3MgY2FsbGVkIGZyb20gYG13aWZpZXhfcHJvY2Vzc19ldmVudGAsIHdoaWNoIGluIHR1cm4gaXMgY2FsbGVkIGZyb20gYG13aWZpZXhfbWFpbl9wcm9jZXNzYC4gVGhhdCBuYXJyb3dzIGRvd24gdGhlIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2NDAsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTI6MjE6NDEuMTUxOTIzNTg2WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzQ3MjM4MjQxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm13aWZpZXhfcHJvY2Vzc19ldmVudFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY21kZXZ0LmM9NDIxPXZvaWQgbXdpZmlleF9mcmVlX2NtZF9idWZmZXIoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jbWRldnQuYy00NjktICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NtZGV2dC5jOjQ3MDppbnQgbXdpZmlleF9wcm9jZXNzX2V2ZW50KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NtZGV2dC5jLTQ3MS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jPTI0OD1pbnQgbXdpZmlleF9tYWluX3Byb2Nlc3Moc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtMzUwLVxcdFxcdFxcdGFkYXB0ZXItXFx1MDAzZWV2ZW50X3JlY2VpdmVkID0gZmFsc2U7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYzozNTE6XFx0XFx0XFx0bXdpZmlleF9wcm9jZXNzX2V2ZW50KGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtMzUyLVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg9MTA3MT1pbnQgbXdpZmlleF9wcm9jZXNzX21nbXRfcGFja2V0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTEwNzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxMDc0OmludCBtd2lmaWV4X3Byb2Nlc3NfZXZlbnQoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xMDc1LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxMjoyMTo0My40OTkxNjg5NTZaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjQ3NDI2NDg3MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBtd2lmaWV4IEV2ZW50IEhhbmRsaW5nIEZsb3cqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBgbXdpZmlleGAgZHJpdmVyIGFnYWluLiBUaGUga2V5IHNlZW1zIHRvIGJlIGBtd2lmaWV4X21haW5fcHJvY2Vzc2AsIHRoYXQncyBvdXIgbWFpbiB3b3JrZXIgdGhyZWFkLCB3aGljaCBtYWtlcyBzZW5zZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGV2ZW50cyBmcm9tIHRoZSBkZXZpY2UgYXJlIGhhbmRsZWQsIHNwZWNpZmljYWxseSBmb3IgVVNCLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBzdWdnZXN0cyB0aGUgZmxvdyBpcyBzb21ldGhpbmcgbGlrZSB0aGlzOiBUaGUgVVNCIFJYIGNvbXBsZXRpb24gY2FsbGJhY2ssIGBtd2lmaWV4X3VzYl9yeF9jb21wbGV0ZWAsIHRyaWdnZXJzIGBtd2lmaWV4X3VzYl9zdWJtaXRfcnhfdXJiYCwgd2hpY2ggaW4gdHVybiBsZWFkcyB0byBgbXdpZmlleF91c2JfcmVjdmAuIFRoZW4sIHByZXN1bWFibHksIHRoZSByZWNlaXZlZCBkYXRhIGlzIGZ1bm5lbGVkIHRvIGBtd2lmaWV4X2hhbmRsZV9yeF9wYWNrZXRgLCBhbmQgZmluYWxseSwgd2UgZ2V0IHRvIHRoZSBjb3JlIG9mIHRoZSBpc3N1ZSwgYG13aWZpZXhfcHJvY2Vzc19ldmVudGAuXG5cbk5vdywgSSBuZWVkIHRvIHBpbnBvaW50IHdoZXJlIHRoaXMgYGV2ZW50X3JlY2VpdmVkYCBmbGFnIGlzIHNldC4gVW5kZXJzdGFuZGluZyB3aGVuIGFuZCBob3cgdGhhdCBmbGFnIGlzIHRvZ2dsZWQgaXMgY3J1Y2lhbCB0byB1bmRlcnN0YW5kaW5nIHRoZSB0cmlnZ2VyaW5nIG1lY2hhbmlzbSBhbmQgcG90ZW50aWFsIGJvdHRsZW5lY2tzIHdpdGhpbiB0aGUgZXZlbnQgcHJvY2Vzc2luZy4gVGltZSB0byBkaWcgZGVlcGVyIGFuZCBzZWUgd2hlcmUgdGhlIGFjdHVhbCBldmVudCByZWNlcHRpb24gaXMgYWNrbm93bGVkZ2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NDEzLCJPdXRwdXRUb2tlbnMiOjE3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDEyOjIyOjA4LjI0MTgyMDM5MloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUwMDQyNjYwNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJldmVudF9yZWNlaXZlZFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvbmZjL25mYy1oY2kucnN0PTY0PWVudHJ5IHBvaW50czo6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvbmZjL25mYy1oY2kucnN0LTg1LVxcdFxcdFxcdCAgICAgIHN0cnVjdCBuZmNfdGFyZ2V0ICp0YXJnZXQpO1xcbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9uZmMvbmZjLWhjaS5yc3Q6ODY6XFx0aW50ICgqZXZlbnRfcmVjZWl2ZWQpKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldiwgdTggZ2F0ZSwgdTggZXZlbnQsXFxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL25mYy9uZmMtaGNpLnJzdC04Ny1cXHRcXHRcXHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcXG4tLVxcbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9uZmMvbmZjLWhjaS5yc3QtMTE3LSAgc3BhY2VcXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvbmZjL25mYy1oY2kucnN0OjExODotIGV2ZW50X3JlY2VpdmVkKCkgaXMgY2FsbGVkIHRvIGhhbmRsZSBhbiBldmVudCBjb21pbmcgZnJvbSB0aGUgY2hpcC4gRHJpdmVyXFxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL25mYy9uZmMtaGNpLnJzdC0xMTktICBjYW4gaGFuZGxlIHRoZSBldmVudCBvciByZXR1cm4gMSB0byBsZXQgSENJIGF0dGVtcHQgc3RhbmRhcmQgcHJvY2Vzc2luZy5cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9zdGkvc3RpX2hkbWkuYz0xOTg9c3RhdGljIGlycXJldHVybl90IGhkbWlfaXJxX3RocmVhZChpbnQgaXJxLCB2b2lkICphcmcpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9oZG1pLmMtMjEyLVxcdGlmIChoZG1pLVxcdTAwM2VpcnFfc3RhdHVzIFxcdTAwMjYgKEhETUlfSU5UX1NXX1JTVCB8IEhETUlfSU5UX0RMTF9MQ0spKSB7XFxuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfaGRtaS5jOjIxMzpcXHRcXHRoZG1pLVxcdTAwM2VldmVudF9yZWNlaXZlZCA9IHRydWU7XFxuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfaGRtaS5jLTIxNC1cXHRcXHR3YWtlX3VwX2ludGVycnVwdGlibGUoXFx1MDAyNmhkbWktXFx1MDAzZXdhaXRfZXZlbnQpO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfaGRtaS5jPTU2Nz1zdGF0aWMgdm9pZCBoZG1pX3N3cmVzZXQoc3RydWN0IHN0aV9oZG1pICpoZG1pKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfaGRtaS5jLTU3Ny1cXHQvKiBTdyByZXNldCAqL1xcbmRyaXZlcnMvZ3B1L2RybS9zdGkvc3RpX2hkbWkuYzo1Nzg6XFx0aGRtaS1cXHUwMDNlZXZlbnRfcmVjZWl2ZWQgPSBmYWxzZTtcXG5kcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9oZG1pLmMtNTc5LVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfaGRtaS5jLTU4NS1cXHR3YWl0X2V2ZW50X2ludGVycnVwdGlibGVfdGltZW91dChoZG1pLVxcdTAwM2V3YWl0X2V2ZW50LFxcbmRyaXZlcnMvZ3B1L2RybS9zdGkvc3RpX2hkbWkuYzo1ODY6XFx0XFx0XFx0XFx0XFx0IGhkbWktXFx1MDAzZWV2ZW50X3JlY2VpdmVkLFxcbmRyaXZlcnMvZ3B1L2RybS9zdGkvc3RpX2hkbWkuYy01ODctXFx0XFx0XFx0XFx0XFx0IG1zZWNzX3RvX2ppZmZpZXNcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9zdGkvc3RpX2hkbWkuaD0zMD1zdHJ1Y3QgaGRtaV9hdWRpb19wYXJhbXMge1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfaGRtaS5oLTU2LSAqIEB3YWl0X2V2ZW50OiB3YWl0IGV2ZW50XFxuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfaGRtaS5oOjU3OiAqIEBldmVudF9yZWNlaXZlZDogd2FpdCBldmVudCBzdGF0dXNcXG5kcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9oZG1pLmgtNTgtICogQHJlc2V0OiByZXNldCBjb250cm9sIG9mIHRoZSBoZG1pIHBoeVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfaGRtaS5oPTY2PXN0cnVjdCBzdGlfaGRtaSB7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9oZG1pLmgtODEtXFx0d2FpdF9xdWV1ZV9oZWFkX3Qgd2FpdF9ldmVudDtcXG5kcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9oZG1pLmg6ODI6XFx0Ym9vbCBldmVudF9yZWNlaXZlZDtcXG5kcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9oZG1pLmgtODMtXFx0c3RydWN0IHJlc2V0X2NvbnRyb2wgKnJlc2V0O1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfaGRtaV90eDNnNGMyOHBoeS5jPTc4PXN0YXRpYyBib29sIHN0aV9oZG1pX3R4M2c0YzI4cGh5X3N0YXJ0KHN0cnVjdCBzdGlfaGRtaSAqaGRtaSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9zdGkvc3RpX2hkbWlfdHgzZzRjMjhwaHkuYy0xMTctXFx0ICovXFxuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfaGRtaV90eDNnNGMyOHBoeS5jOjExODpcXHRoZG1pLVxcdTAwM2VldmVudF9yZWNlaXZlZCA9IGZhbHNlO1xcbmRyaXZlcnMvZ3B1L2RybS9zdGkvc3RpX2hkbWlfdHgzZzRjMjhwaHkuYy0xMTktXFx0RFJNX0RFQlVHX0RSSVZFUihcXFwicGxsY3RybCA9IDB4JXhcXFxcblxcXCIsIHBsbGN0cmwpO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfaGRtaV90eDNnNGMyOHBoeS5jLTEyMy1cXHR3YWl0X2V2ZW50X2ludGVycnVwdGlibGVfdGltZW91dChoZG1pLVxcdTAwM2V3YWl0X2V2ZW50LFxcbmRyaXZlcnMvZ3B1L2RybS9zdGkvc3RpX2hkbWlfdHgzZzRjMjhwaHkuYzoxMjQ6XFx0XFx0XFx0XFx0XFx0IGhkbWktXFx1MDAzZWV2ZW50X3JlY2VpdmVkID09IHRydWUsXFxuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfaGRtaV90eDNnNGMyOHBoeS5jLTEyNS1cXHRcXHRcXHRcXHRcXHQgbXNlY3NfdG9famlmZmllc1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfaGRtaV90eDNnNGMyOHBoeS5jPTE4OD1zdGF0aWMgdm9pZCBzdGlfaGRtaV90eDNnNGMyOHBoeV9zdG9wKHN0cnVjdCBzdGlfaGRtaSAqaGRtaSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9zdGkvc3RpX2hkbWlfdHgzZzRjMjhwaHkuYy0xOTMtXFxuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfaGRtaV90eDNnNGMyOHBoeS5jOjE5NDpcXHRoZG1pLVxcdTAwM2VldmVudF9yZWNlaXZlZCA9IGZhbHNlO1xcbmRyaXZlcnMvZ3B1L2RybS9zdGkvc3RpX2hkbWlfdHgzZzRjMjhwaHkuYy0xOTUtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9oZG1pX3R4M2c0YzI4cGh5LmMtMjAzLVxcdHdhaXRfZXZlbnRfaW50ZXJydXB0aWJsZV90aW1lb3V0KGhkbWktXFx1MDAzZXdhaXRfZXZlbnQsXFxuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfaGRtaV90eDNnNGMyOHBoeS5jOjIwNDpcXHRcXHRcXHRcXHRcXHQgaGRtaS1cXHUwMDNlZXZlbnRfcmVjZWl2ZWQgPT0gdHJ1ZSxcXG5kcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9oZG1pX3R4M2c0YzI4cGh5LmMtMjA1LVxcdFxcdFxcdFxcdFxcdCBtc2Vjc190b19qaWZmaWVzXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvUkVBRE1FPTg5PWluZm9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9SRUFETUUtMTU4LVxcdGNtZF9yZXNwX3JlY2VpdmVkID0gXFx1MDAzYzAvMSwgbm8gY21kIHJlc3BvbnNlIHRvIHByb2Nlc3MvcmVzcG9uc2UgcmVjZWl2ZWQgYW5kIHlldCB0byBwcm9jZXNzXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9SRUFETUU6MTU5OlxcdGV2ZW50X3JlY2VpdmVkID0gXFx1MDAzYzAvMSwgbm8gZXZlbnQgdG8gcHJvY2Vzcy9ldmVudCByZWNlaXZlZCBhbmQgeWV0IHRvIHByb2Nlc3NcXHUwMDNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L1JFQURNRS0xNjAtXFx0Y21kX3BlbmRpbmcgPSBcXHUwMDNjbnVtYmVyIG9mIGNtZCBwZW5kaW5nXFx1MDAzZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2luaXQuYz0yMDY9c3RhdGljIHZvaWQgbXdpZmlleF9pbml0X2FkYXB0ZXIoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9pbml0LmMtMjI0LVxcdGFkYXB0ZXItXFx1MDAzZWNtZF9yZXNwX3JlY2VpdmVkID0gZmFsc2U7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2luaXQuYzoyMjU6XFx0YWRhcHRlci1cXHUwMDNlZXZlbnRfcmVjZWl2ZWQgPSBmYWxzZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvaW5pdC5jLTIyNi1cXHRhZGFwdGVyLVxcdTAwM2VkYXRhX3JlY2VpdmVkID0gZmFsc2U7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvaW9jdGwuaD0xOTE9c3RydWN0IG13aWZpZXhfZGVidWdfaW5mbyB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvaW9jdGwuaC0yMzUtXFx0dTggY21kX3Jlc3BfcmVjZWl2ZWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2lvY3RsLmg6MjM2OlxcdHU4IGV2ZW50X3JlY2VpdmVkO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9pb2N0bC5oLTIzNy1cXHR1MzIgbGFzdF9tcF93cl9iaXRtYXBbTVdJRklFWF9EQkdfU0RJT19NUF9OVU1dO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYz0yNDg9aW50IG13aWZpZXhfbWFpbl9wcm9jZXNzKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jLTM0OC1cXHRcXHQvKiBDaGVjayBmb3IgZXZlbnQgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jOjM0OTpcXHRcXHRpZiAoYWRhcHRlci1cXHUwMDNlZXZlbnRfcmVjZWl2ZWQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jOjM1MDpcXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2VldmVudF9yZWNlaXZlZCA9IGZhbHNlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtMzUxLVxcdFxcdFxcdG13aWZpZXhfcHJvY2Vzc19ldmVudChhZGFwdGVyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg9NTU9ZW51bSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTEyNi0jZGVmaW5lIElTX0NBUkRfUlhfUkNWRChhZGFwdGVyKSAoYWRhcHRlci1cXHUwMDNlY21kX3Jlc3BfcmVjZWl2ZWQgfHwgXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTI3OlxcdFxcdFxcdFxcdGFkYXB0ZXItXFx1MDAzZWV2ZW50X3JlY2VpdmVkIHx8IFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTEyOC1cXHRcXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2VkYXRhX3JlY2VpdmVkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD04NTE9c3RydWN0IG13aWZpZXhfYWRhcHRlciB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTkwOC1cXHR1OCBjbWRfcmVzcF9yZWNlaXZlZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oOjkwOTpcXHR1OCBldmVudF9yZWNlaXZlZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTkxMC1cXHR1OCBkYXRhX3JlY2VpdmVkO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYz0xOTAxPXN0YXRpYyBpbnQgbXdpZmlleF9wY2llX3Byb2Nlc3NfZXZlbnRfcmVhZHkoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmMtMTkxMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jOjE5MTI6XFx0aWYgKGFkYXB0ZXItXFx1MDAzZWV2ZW50X3JlY2VpdmVkKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYy0xOTEzLVxcdFxcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIEVWRU5ULFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYy0xOTcxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmM6MTk3MjpcXHRcXHRhZGFwdGVyLVxcdTAwM2VldmVudF9yZWNlaXZlZCA9IHRydWU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYy0xOTczLVxcdFxcdGFkYXB0ZXItXFx1MDAzZWV2ZW50X3NrYiA9IHNrYl9jbWQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jPTE2NDc9c3RhdGljIGludCBtd2lmaWV4X2RlY29kZV9yeF9wYWNrZXQoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmMtMTcyMi1cXHRcXHQvKiBldmVudCBjYXVzZSBoYXMgYmVlbiBzYXZlZCB0byBhZGFwdGVyLVxcdTAwM2VldmVudF9jYXVzZSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmM6MTcyMzpcXHRcXHRhZGFwdGVyLVxcdTAwM2VldmVudF9yZWNlaXZlZCA9IHRydWU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYy0xNzI0LVxcdFxcdGFkYXB0ZXItXFx1MDAzZWV2ZW50X3NrYiA9IHNrYjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYz00Nj1zdGF0aWMgaW50IG13aWZpZXhfdXNiX3JlY3Yoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjExNTpcXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2VldmVudF9yZWNlaXZlZCA9IHRydWU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTExNi1cXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2VldmVudF9za2IgPSBza2I7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jPTE2PXN0YXRpYyBzdHJ1Y3QgbXdpZmlleF9kZWJ1Z19kYXRhIGl0ZW1zW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jLTEwMy1cXHQgaXRlbV9hZGRyKGNtZF9yZXNwX3JlY2VpdmVkKSwgMX0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuYzoxMDQ6XFx0e1xcXCJldmVudF9yZWNlaXZlZFxcXCIsIGl0ZW1fc2l6ZShldmVudF9yZWNlaXZlZCksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuYzoxMDU6XFx0IGl0ZW1fYWRkcihldmVudF9yZWNlaXZlZCksIDF9LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmMtMTA2LVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbW9kZW1fb3BzLmM9NTE1PXN0YXRpYyB2b2lkIHQ3eHhfY29yZV9oa19oYW5kbGVyKHN0cnVjdCB0N3h4X21vZGVtICptZCwgc3RydWN0IHQ3eHhfc3lzX2luZm8gKmNvcmVfaW5mbyxcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X21vZGVtX29wcy5jLTUyNy1cXHR3aGlsZSAoIWt0aHJlYWRfc2hvdWxkX3N0b3AoKSkge1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X21vZGVtX29wcy5jOjUyODpcXHRcXHRib29sIGV2ZW50X3JlY2VpdmVkID0gZmFsc2U7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbW9kZW1fb3BzLmMtNTI5LVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbW9kZW1fb3BzLmMtNTM4LVxcdFxcdFxcdFxcdGxpc3RfZGVsKFxcdTAwMjZldmVudC1cXHUwMDNlZW50cnkpO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X21vZGVtX29wcy5jOjUzOTpcXHRcXHRcXHRcXHRldmVudF9yZWNlaXZlZCA9IHRydWU7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbW9kZW1fb3BzLmMtNTQwLVxcdFxcdFxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbW9kZW1fb3BzLmMtNTQ0LVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X21vZGVtX29wcy5jOjU0NTpcXHRcXHRpZiAoZXZlbnRfcmVjZWl2ZWQpXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbW9kZW1fb3BzLmMtNTQ2LVxcdFxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfc3RhdGVfbW9uaXRvci5jPTE1Mz1zdGF0aWMgdm9pZCBmc21fd2FpdF9mb3JfZXZlbnQoc3RydWN0IHQ3eHhfZnNtX2N0bCAqY3RsLCBlbnVtIHQ3eHhfZnNtX2V2ZW50X3N0YXRlIGV2ZW50X2V4cGVjdGVkLFxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfc3RhdGVfbW9uaXRvci5jLTE1Ni1cXHRzdHJ1Y3QgdDd4eF9mc21fZXZlbnQgKmV2ZW50O1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3N0YXRlX21vbml0b3IuYzoxNTc6XFx0Ym9vbCBldmVudF9yZWNlaXZlZCA9IGZhbHNlO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3N0YXRlX21vbml0b3IuYy0xNTgtXFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3N0YXRlX21vbml0b3IuYy0xNjAtXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfc3RhdGVfbW9uaXRvci5jOjE2MTpcXHR3aGlsZSAoY250KysgXFx1MDAzYyByZXRyaWVzIFxcdTAwMjZcXHUwMDI2ICFldmVudF9yZWNlaXZlZCkge1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3N0YXRlX21vbml0b3IuYy0xNjItXFx0XFx0Ym9vbCBzbGVlcF9yZXF1aXJlZCA9IHRydWU7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9zdGF0ZV9tb25pdG9yLmMtMTY5LVxcdFxcdGlmIChldmVudCkge1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3N0YXRlX21vbml0b3IuYzoxNzA6XFx0XFx0XFx0ZXZlbnRfcmVjZWl2ZWQgPSBldmVudC1cXHUwMDNlZXZlbnRfaWQgPT0gZXZlbnRfZXhwZWN0ZWQ7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfc3RhdGVfbW9uaXRvci5jOjE3MTpcXHRcXHRcXHRpZiAoZXZlbnRfcmVjZWl2ZWQgfHwgZXZlbnQtXFx1MDAzZWV2ZW50X2lkID09IGV2ZW50X2lnbm9yZSkge1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3N0YXRlX21vbml0b3IuYy0xNzItXFx0XFx0XFx0XFx0ZnNtX2RlbF9rZl9ldmVudChldmVudCk7XFxuLS1cXG5kcml2ZXJzL25mYy9taWNyb3JlYWQvbWljcm9yZWFkLmM9NDY4PXN0YXRpYyB2b2lkIG1pY3JvcmVhZF90YXJnZXRfZGlzY292ZXJlZChzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYsIHU4IGdhdGUsXFxuLS1cXG5kcml2ZXJzL25mYy9taWNyb3JlYWQvbWljcm9yZWFkLmMtNTQ2LVxcbmRyaXZlcnMvbmZjL21pY3JvcmVhZC9taWNyb3JlYWQuYzo1NDc6c3RhdGljIGludCBtaWNyb3JlYWRfZXZlbnRfcmVjZWl2ZWQoc3RydWN0IG5mY19oY2lfZGV2ICpoZGV2LCB1OCBwaXBlLFxcbmRyaXZlcnMvbmZjL21pY3JvcmVhZC9taWNyb3JlYWQuYy01NDgtXFx0XFx0XFx0XFx0ICAgICB1OCBldmVudCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmZjL21pY3JvcmVhZC9taWNyb3JlYWQuYz02Mjc9c3RhdGljIGNvbnN0IHN0cnVjdCBuZmNfaGNpX29wcyBtaWNyb3JlYWRfaGNpX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmZjL21pY3JvcmVhZC9taWNyb3JlYWQuYy02MzktXFx0LmNoZWNrX3ByZXNlbmNlID0gTlVMTCxcXG5kcml2ZXJzL25mYy9taWNyb3JlYWQvbWljcm9yZWFkLmM6NjQwOlxcdC5ldmVudF9yZWNlaXZlZCA9IG1pY3JvcmVhZF9ldmVudF9yZWNlaXZlZCxcXG5kcml2ZXJzL25mYy9taWNyb3JlYWQvbWljcm9yZWFkLmMtNjQxLX07XFxuLS1cXG5kcml2ZXJzL25mYy9wbjU0NC9wbjU0NC5jPTY4MT1zdGF0aWMgaW50IHBuNTQ0X2hjaV9jaGVja19wcmVzZW5jZShzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYsXFxuLS1cXG5kcml2ZXJzL25mYy9wbjU0NC9wbjU0NC5jLTcxNC0gKi9cXG5kcml2ZXJzL25mYy9wbjU0NC9wbjU0NC5jOjcxNTpzdGF0aWMgaW50IHBuNTQ0X2hjaV9ldmVudF9yZWNlaXZlZChzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYsIHU4IHBpcGUsIHU4IGV2ZW50LFxcbmRyaXZlcnMvbmZjL3BuNTQ0L3BuNTQ0LmMtNzE2LVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZmMvcG41NDQvcG41NDQuYz04ODM9c3RhdGljIGNvbnN0IHN0cnVjdCBuZmNfaGNpX29wcyBwbjU0NF9oY2lfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZmMvcG41NDQvcG41NDQuYy04OTUtXFx0LmNoZWNrX3ByZXNlbmNlID0gcG41NDRfaGNpX2NoZWNrX3ByZXNlbmNlLFxcbmRyaXZlcnMvbmZjL3BuNTQ0L3BuNTQ0LmM6ODk2OlxcdC5ldmVudF9yZWNlaXZlZCA9IHBuNTQ0X2hjaV9ldmVudF9yZWNlaXZlZCxcXG5kcml2ZXJzL25mYy9wbjU0NC9wbjU0NC5jLTg5Ny1cXHQuZndfZG93bmxvYWQgPSBwbjU0NF9oY2lfZndfZG93bmxvYWQsXFxuLS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jPTk1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmNpX29wcyBzdF9uY2lfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYy0xMDUtXFx0LmhjaV9sb2FkX3Nlc3Npb24gPSBzdF9uY2lfaGNpX2xvYWRfc2Vzc2lvbixcXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jOjEwNjpcXHQuaGNpX2V2ZW50X3JlY2VpdmVkID0gc3RfbmNpX2hjaV9ldmVudF9yZWNlaXZlZCxcXG5kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jLTEwNy1cXHQuaGNpX2NtZF9yZWNlaXZlZCA9IHN0X25jaV9oY2lfY21kX3JlY2VpdmVkLFxcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmM9MjQ5PUVYUE9SVF9TWU1CT0xfR1BMKHN0X25jaV9oY2lfbG9hZF9zZXNzaW9uKTtcXG5kcml2ZXJzL25mYy9zdC1uY2kvc2UuYy0yNTAtXFxuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmM6MjUxOnN0YXRpYyB2b2lkIHN0X25jaV9oY2lfYWRtaW5fZXZlbnRfcmVjZWl2ZWQoc3RydWN0IG5jaV9kZXYgKm5kZXYsXFxuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmMtMjUyLVxcdFxcdFxcdFxcdFxcdCAgICAgIHU4IGV2ZW50LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmMtMjc0LVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jOjI3NTpzdGF0aWMgaW50IHN0X25jaV9oY2lfYXBkdV9yZWFkZXJfZXZlbnRfcmVjZWl2ZWQoc3RydWN0IG5jaV9kZXYgKm5kZXYsXFxuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmMtMjc2LVxcdFxcdFxcdFxcdFxcdFxcdCAgIHU4IGV2ZW50LFxcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmMtMzA3LSAqL1xcbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jOjMwODpzdGF0aWMgaW50IHN0X25jaV9oY2lfY29ubmVjdGl2aXR5X2V2ZW50X3JlY2VpdmVkKHN0cnVjdCBuY2lfZGV2ICpuZGV2LFxcbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jLTMwOS1cXHRcXHRcXHRcXHRcXHRcXHR1OCBob3N0LCB1OCBldmVudCxcXG4tLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jLTM4MS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvc2UuYzozODI6dm9pZCBzdF9uY2lfaGNpX2V2ZW50X3JlY2VpdmVkKHN0cnVjdCBuY2lfZGV2ICpuZGV2LCB1OCBwaXBlLFxcbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jLTM4My1cXHRcXHRcXHRcXHQgdTggZXZlbnQsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvc2UuYy0zODktXFx0Y2FzZSBOQ0lfSENJX0FETUlOX0dBVEU6XFxuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmM6MzkwOlxcdFxcdHN0X25jaV9oY2lfYWRtaW5fZXZlbnRfcmVjZWl2ZWQobmRldiwgZXZlbnQsIHNrYik7XFxuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmMtMzkxLVxcdGJyZWFrO1xcbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jLTM5Mi1cXHRjYXNlIFNUX05DSV9BUERVX1JFQURFUl9HQVRFOlxcbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jOjM5MzpcXHRcXHRzdF9uY2lfaGNpX2FwZHVfcmVhZGVyX2V2ZW50X3JlY2VpdmVkKG5kZXYsIGV2ZW50LCBza2IpO1xcbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jLTM5NC1cXHRicmVhaztcXG5kcml2ZXJzL25mYy9zdC1uY2kvc2UuYy0zOTUtXFx0Y2FzZSBTVF9OQ0lfQ09OTkVDVElWSVRZX0dBVEU6XFxuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmM6Mzk2OlxcdFxcdHN0X25jaV9oY2lfY29ubmVjdGl2aXR5X2V2ZW50X3JlY2VpdmVkKG5kZXYsIGhvc3QsIGV2ZW50LCBza2IpO1xcbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jLTM5Ny1cXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jLTM5OS19XFxuZHJpdmVycy9uZmMvc3QtbmNpL3NlLmM6NDAwOkVYUE9SVF9TWU1CT0xfR1BMKHN0X25jaV9oY2lfZXZlbnRfcmVjZWl2ZWQpO1xcbmRyaXZlcnMvbmZjL3N0LW5jaS9zZS5jLTQwMS1cXG4tLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9zdC1uY2kuaD0xMzQ9aW50IHN0X25jaV9oY2lfbG9hZF9zZXNzaW9uKHN0cnVjdCBuY2lfZGV2ICpuZGV2KTtcXG5kcml2ZXJzL25mYy9zdC1uY2kvc3QtbmNpLmg6MTM1OnZvaWQgc3RfbmNpX2hjaV9ldmVudF9yZWNlaXZlZChzdHJ1Y3QgbmNpX2RldiAqbmRldiwgdTggcGlwZSxcXG5kcml2ZXJzL25mYy9zdC1uY2kvc3QtbmNpLmgtMTM2LVxcdFxcdFxcdFxcdFxcdHU4IGV2ZW50LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcXG4tLVxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2NvcmUuYz04MzI9c3RhdGljIHZvaWQgc3QyMW5mY2FfaGNpX2NtZF9yZWNlaXZlZChzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYsIHU4IHBpcGUsIHU4IGNtZCxcXG4tLVxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2NvcmUuYy04NTUtXFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvY29yZS5jOjg1NjpzdGF0aWMgaW50IHN0MjFuZmNhX2FkbWluX2V2ZW50X3JlY2VpdmVkKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldiwgdTggZXZlbnQsXFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvY29yZS5jLTg1Ny1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvY29yZS5jLTg4OC0gKi9cXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9jb3JlLmM6ODg5OnN0YXRpYyBpbnQgc3QyMW5mY2FfaGNpX2V2ZW50X3JlY2VpdmVkKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldiwgdTggcGlwZSxcXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9jb3JlLmMtODkwLVxcdFxcdFxcdFxcdCAgICAgICB1OCBldmVudCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2NvcmUuYy04OTgtXFx0Y2FzZSBORkNfSENJX0FETUlOX0dBVEU6XFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvY29yZS5jOjg5OTpcXHRcXHRyZXR1cm4gc3QyMW5mY2FfYWRtaW5fZXZlbnRfcmVjZWl2ZWQoaGRldiwgZXZlbnQsIHNrYik7XFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvY29yZS5jLTkwMC1cXHRjYXNlIFNUMjFORkNBX1JGX0NBUkRfRl9HQVRFOlxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2NvcmUuYzo5MDE6XFx0XFx0cmV0dXJuIHN0MjFuZmNhX2RlcF9ldmVudF9yZWNlaXZlZChoZGV2LCBldmVudCwgc2tiKTtcXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9jb3JlLmMtOTAyLVxcdGNhc2UgU1QyMU5GQ0FfQ09OTkVDVElWSVRZX0dBVEU6XFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvY29yZS5jOjkwMzpcXHRcXHRyZXR1cm4gc3QyMW5mY2FfY29ubmVjdGl2aXR5X2V2ZW50X3JlY2VpdmVkKGhkZXYsIGhvc3QsXFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvY29yZS5jLTkwNC1cXHRcXHRcXHRcXHRcXHRcXHRcXHRldmVudCwgc2tiKTtcXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9jb3JlLmMtOTA1LVxcdGNhc2UgU1QyMU5GQ0FfQVBEVV9SRUFERVJfR0FURTpcXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9jb3JlLmM6OTA2OlxcdFxcdHJldHVybiBzdDIxbmZjYV9hcGR1X3JlYWRlcl9ldmVudF9yZWNlaXZlZChoZGV2LCBldmVudCwgc2tiKTtcXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9jb3JlLmMtOTA3LVxcdGNhc2UgTkZDX0hDSV9MT09QQkFDS19HQVRFOlxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2NvcmUuYzo5MDg6XFx0XFx0cmV0dXJuIHN0MjFuZmNhX2hjaV9sb29wYmFja19ldmVudF9yZWNlaXZlZChoZGV2LCBldmVudCwgc2tiKTtcXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9jb3JlLmMtOTA5LVxcdGRlZmF1bHQ6XFxuLS1cXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9jb3JlLmM9OTE0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZjX2hjaV9vcHMgc3QyMW5mY2FfaGNpX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2NvcmUuYy05MjgtXFx0LmNoZWNrX3ByZXNlbmNlID0gc3QyMW5mY2FfaGNpX2NoZWNrX3ByZXNlbmNlLFxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2NvcmUuYzo5Mjk6XFx0LmV2ZW50X3JlY2VpdmVkID0gc3QyMW5mY2FfaGNpX2V2ZW50X3JlY2VpdmVkLFxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2NvcmUuYy05MzAtXFx0LmNtZF9yZWNlaXZlZCA9IHN0MjFuZmNhX2hjaV9jbWRfcmVjZWl2ZWQsXFxuLS1cXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYz0zNDY9c3RhdGljIGludCBzdDIxbmZjYV90bV9ldmVudF9zZW5kX2RhdGEoc3RydWN0IG5mY19oY2lfZGV2ICpoZGV2LFxcbi0tXFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmMtMzgwLSAqL1xcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jOjM4MTppbnQgc3QyMW5mY2FfZGVwX2V2ZW50X3JlY2VpdmVkKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldixcXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYy0zODItXFx0XFx0XFx0XFx0dTggZXZlbnQsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYy00MTAtfVxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jOjQxMTpFWFBPUlRfU1lNQk9MKHN0MjFuZmNhX2RlcF9ldmVudF9yZWNlaXZlZCk7XFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmMtNDEyLVxcbi0tXFxuZHJpdmVycy9uZmMvc3QyMW5mY2Evc2UuYz0yODk9c3RhdGljIHZvaWQgc3QyMW5mY2Ffc2VfYWN0aXZhdGlvbl90aW1lb3V0KHN0cnVjdCB0aW1lcl9saXN0ICp0KVxcbi0tXFxuZHJpdmVycy9uZmMvc3QyMW5mY2Evc2UuYy0zMDMtICovXFxuZHJpdmVycy9uZmMvc3QyMW5mY2Evc2UuYzozMDQ6aW50IHN0MjFuZmNhX2Nvbm5lY3Rpdml0eV9ldmVudF9yZWNlaXZlZChzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYsIHU4IGhvc3QsXFxuZHJpdmVycy9uZmMvc3QyMW5mY2Evc2UuYy0zMDUtXFx0XFx0XFx0XFx0dTggZXZlbnQsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9zZS5jLTM3MS19XFxuZHJpdmVycy9uZmMvc3QyMW5mY2Evc2UuYzozNzI6RVhQT1JUX1NZTUJPTChzdDIxbmZjYV9jb25uZWN0aXZpdHlfZXZlbnRfcmVjZWl2ZWQpO1xcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL3NlLmMtMzczLVxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL3NlLmM6Mzc0OmludCBzdDIxbmZjYV9hcGR1X3JlYWRlcl9ldmVudF9yZWNlaXZlZChzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYsXFxuZHJpdmVycy9uZmMvc3QyMW5mY2Evc2UuYy0zNzUtXFx0XFx0XFx0XFx0XFx0dTggZXZlbnQsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9zZS5jLTQwNy19XFxuZHJpdmVycy9uZmMvc3QyMW5mY2Evc2UuYzo0MDg6RVhQT1JUX1NZTUJPTChzdDIxbmZjYV9hcGR1X3JlYWRlcl9ldmVudF9yZWNlaXZlZCk7XFxuZHJpdmVycy9uZmMvc3QyMW5mY2Evc2UuYy00MDktXFxuLS1cXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9zdDIxbmZjYS5oPTE3MT12b2lkIHN0MjFuZmNhX2hjaV9yZW1vdmUoc3RydWN0IG5mY19oY2lfZGV2ICpoZGV2KTtcXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9zdDIxbmZjYS5oLTE3Mi1cXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9zdDIxbmZjYS5oOjE3MzppbnQgc3QyMW5mY2FfZGVwX2V2ZW50X3JlY2VpdmVkKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldixcXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9zdDIxbmZjYS5oLTE3NC1cXHRcXHRcXHRcXHR1OCBldmVudCwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxuLS1cXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9zdDIxbmZjYS5oPTE4MD12b2lkIHN0MjFuZmNhX2RlcF9kZWluaXQoc3RydWN0IG5mY19oY2lfZGV2ICpoZGV2KTtcXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9zdDIxbmZjYS5oLTE4MS1cXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9zdDIxbmZjYS5oOjE4MjppbnQgc3QyMW5mY2FfY29ubmVjdGl2aXR5X2V2ZW50X3JlY2VpdmVkKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldiwgdTggaG9zdCxcXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9zdDIxbmZjYS5oLTE4My1cXHRcXHRcXHRcXHRcXHR1OCBldmVudCwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxuZHJpdmVycy9uZmMvc3QyMW5mY2Evc3QyMW5mY2EuaDoxODQ6aW50IHN0MjFuZmNhX2FwZHVfcmVhZGVyX2V2ZW50X3JlY2VpdmVkKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldixcXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9zdDIxbmZjYS5oLTE4NS1cXHRcXHRcXHRcXHRcXHR1OCBldmVudCwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxuLS1cXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9zdDIxbmZjYS5oPTE5NT12b2lkIHN0MjFuZmNhX3NlX2RlaW5pdChzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYpO1xcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL3N0MjFuZmNhLmgtMTk2LVxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL3N0MjFuZmNhLmg6MTk3OmludCBzdDIxbmZjYV9oY2lfbG9vcGJhY2tfZXZlbnRfcmVjZWl2ZWQoc3RydWN0IG5mY19oY2lfZGV2ICpuZGV2LCB1OCBldmVudCxcXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9zdDIxbmZjYS5oLTE5OC1cXHRcXHRcXHRcXHRcXHQgc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxuLS1cXG5kcml2ZXJzL25mYy9zdDIxbmZjYS92ZW5kb3JfY21kcy5jPTIxOT1zdGF0aWMgaW50IHN0MjFuZmNhX2hjaV9kbV9maWVsZF9nZW5lcmF0b3Ioc3RydWN0IG5mY19kZXYgKmRldiwgdm9pZCAqZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL3ZlbmRvcl9jbWRzLmMtMjI5LVxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL3ZlbmRvcl9jbWRzLmM6MjMwOmludCBzdDIxbmZjYV9oY2lfbG9vcGJhY2tfZXZlbnRfcmVjZWl2ZWQoc3RydWN0IG5mY19oY2lfZGV2ICpoZGV2LCB1OCBldmVudCxcXG5kcml2ZXJzL25mYy9zdDIxbmZjYS92ZW5kb3JfY21kcy5jLTIzMS1cXHRcXHRcXHRcXHRcXHQgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL3ZlbmRvcl9jbWRzLmMtMjQ0LX1cXG5kcml2ZXJzL25mYy9zdDIxbmZjYS92ZW5kb3JfY21kcy5jOjI0NTpFWFBPUlRfU1lNQk9MKHN0MjFuZmNhX2hjaV9sb29wYmFja19ldmVudF9yZWNlaXZlZCk7XFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvdmVuZG9yX2NtZHMuYy0yNDYtXFxuLS1cXG5kcml2ZXJzL3BsYXRmb3JtL3N1cmZhY2UvYWdncmVnYXRvci9zc2hfcmVxdWVzdF9sYXllci5jPTg5OD1zdGF0aWMgdm9pZCBzc2hfcnRsX3J4X2V2ZW50KHN0cnVjdCBzc2hfcnRsICpydGwsIGNvbnN0IHN0cnVjdCBzc2hfY29tbWFuZCAqY21kLFxcbi0tXFxuZHJpdmVycy9wbGF0Zm9ybS9zdXJmYWNlL2FnZ3JlZ2F0b3Ivc3NoX3JlcXVlc3RfbGF5ZXIuYy05MDAte1xcbmRyaXZlcnMvcGxhdGZvcm0vc3VyZmFjZS9hZ2dyZWdhdG9yL3NzaF9yZXF1ZXN0X2xheWVyLmM6OTAxOlxcdHRyYWNlX3NzYW1fcnhfZXZlbnRfcmVjZWl2ZWQoY21kLCBkYXRhLVxcdTAwM2VsZW4pO1xcbmRyaXZlcnMvcGxhdGZvcm0vc3VyZmFjZS9hZ2dyZWdhdG9yL3NzaF9yZXF1ZXN0X2xheWVyLmMtOTAyLVxcbi0tXFxuZHJpdmVycy9wbGF0Zm9ybS9zdXJmYWNlL2FnZ3JlZ2F0b3IvdHJhY2UuaD02NjI9REVGSU5FX1NTQU1fQ09NTUFORF9FVkVOVChyeF9yZXNwb25zZV9yZWNlaXZlZCk7XFxuZHJpdmVycy9wbGF0Zm9ybS9zdXJmYWNlL2FnZ3JlZ2F0b3IvdHJhY2UuaDo2NjM6REVGSU5FX1NTQU1fQ09NTUFORF9FVkVOVChyeF9ldmVudF9yZWNlaXZlZCk7XFxuZHJpdmVycy9wbGF0Zm9ybS9zdXJmYWNlL2FnZ3JlZ2F0b3IvdHJhY2UuaC02NjQtXFxuLS1cXG5pbmNsdWRlL25ldC9uZmMvaGNpLmg9MTU9c3RydWN0IG5mY19oY2lfb3BzIHtcXG4tLVxcbmluY2x1ZGUvbmV0L25mYy9oY2kuaC00MS1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgbmZjX3RhcmdldCAqdGFyZ2V0KTtcXG5pbmNsdWRlL25ldC9uZmMvaGNpLmg6NDI6XFx0aW50ICgqZXZlbnRfcmVjZWl2ZWQpKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldiwgdTggcGlwZSwgdTggZXZlbnQsXFxuaW5jbHVkZS9uZXQvbmZjL2hjaS5oLTQzLVxcdFxcdFxcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IpO1xcbi0tXFxuaW5jbHVkZS9uZXQvbmZjL2hjaS5oPTI1MD12b2lkIG5mY19oY2lfY21kX3JlY2VpdmVkKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldiwgdTggcGlwZSwgdTggY21kLFxcbmluY2x1ZGUvbmV0L25mYy9oY2kuaC0yNTEtXFx0XFx0XFx0ICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcXG5pbmNsdWRlL25ldC9uZmMvaGNpLmg6MjUyOnZvaWQgbmZjX2hjaV9ldmVudF9yZWNlaXZlZChzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYsIHU4IHBpcGUsIHU4IGV2ZW50LFxcbmluY2x1ZGUvbmV0L25mYy9oY2kuaC0yNTMtXFx0XFx0XFx0ICAgIHN0cnVjdCBza19idWZmICpza2IpO1xcbi0tXFxuaW5jbHVkZS9uZXQvbmZjL25jaV9jb3JlLmg9NjU9c3RydWN0IG5jaV9vcHMge1xcbi0tXFxuaW5jbHVkZS9uZXQvbmZjL25jaV9jb3JlLmgtODAtXFx0aW50ICAgKCpoY2lfbG9hZF9zZXNzaW9uKShzdHJ1Y3QgbmNpX2RldiAqbmRldik7XFxuaW5jbHVkZS9uZXQvbmZjL25jaV9jb3JlLmg6ODE6XFx0dm9pZCAgKCpoY2lfZXZlbnRfcmVjZWl2ZWQpKHN0cnVjdCBuY2lfZGV2ICpuZGV2LCB1OCBwaXBlLCB1OCBldmVudCxcXG5pbmNsdWRlL25ldC9uZmMvbmNpX2NvcmUuaC04Mi1cXHRcXHRcXHRcXHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxuLS1cXG5uZXQvbmZjL2hjaS9jb3JlLmM9Mzc5PUVYUE9SVF9TWU1CT0wobmZjX2hjaV90YXJnZXRfZGlzY292ZXJlZCk7XFxubmV0L25mYy9oY2kvY29yZS5jLTM4MC1cXG5uZXQvbmZjL2hjaS9jb3JlLmM6MzgxOnZvaWQgbmZjX2hjaV9ldmVudF9yZWNlaXZlZChzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYsIHU4IHBpcGUsIHU4IGV2ZW50LFxcbm5ldC9uZmMvaGNpL2NvcmUuYy0zODItXFx0XFx0XFx0ICAgIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvbmZjL2hjaS9jb3JlLmMtMzk3LVxcbm5ldC9uZmMvaGNpL2NvcmUuYzozOTg6XFx0aWYgKGhkZXYtXFx1MDAzZW9wcy1cXHUwMDNlZXZlbnRfcmVjZWl2ZWQpIHtcXG5uZXQvbmZjL2hjaS9jb3JlLmM6Mzk5OlxcdFxcdHIgPSBoZGV2LVxcdTAwM2VvcHMtXFx1MDAzZWV2ZW50X3JlY2VpdmVkKGhkZXYsIHBpcGUsIGV2ZW50LCBza2IpO1xcbm5ldC9uZmMvaGNpL2NvcmUuYy00MDAtXFx0XFx0aWYgKHIgXFx1MDAzYz0gMClcXG4tLVxcbm5ldC9uZmMvaGNpL2hjcC5jPTExNz12b2lkIG5mY19oY2lfaGNwX21lc3NhZ2Vfcngoc3RydWN0IG5mY19oY2lfZGV2ICpoZGV2LCB1OCBwaXBlLCB1OCB0eXBlLFxcbi0tXFxubmV0L25mYy9oY2kvaGNwLmMtMTI3LVxcdGNhc2UgTkZDX0hDSV9IQ1BfRVZFTlQ6XFxubmV0L25mYy9oY2kvaGNwLmM6MTI4OlxcdFxcdG5mY19oY2lfZXZlbnRfcmVjZWl2ZWQoaGRldiwgcGlwZSwgaW5zdHJ1Y3Rpb24sIHNrYik7XFxubmV0L25mYy9oY2kvaGNwLmMtMTI5LVxcdFxcdGJyZWFrO1xcbi0tXFxubmV0L25mYy9uY2kvaGNpLmM9MjcyPUVYUE9SVF9TWU1CT0wobmNpX2hjaV9jbGVhcl9hbGxfcGlwZXMpO1xcbm5ldC9uZmMvbmNpL2hjaS5jLTI3My1cXG5uZXQvbmZjL25jaS9oY2kuYzoyNzQ6c3RhdGljIHZvaWQgbmNpX2hjaV9ldmVudF9yZWNlaXZlZChzdHJ1Y3QgbmNpX2RldiAqbmRldiwgdTggcGlwZSxcXG5uZXQvbmZjL25jaS9oY2kuYy0yNzUtXFx0XFx0XFx0XFx0ICAgdTggZXZlbnQsIHN0cnVjdCBza19idWZmICpza2IpXFxubmV0L25mYy9uY2kvaGNpLmMtMjc2LXtcXG5uZXQvbmZjL25jaS9oY2kuYzoyNzc6XFx0aWYgKG5kZXYtXFx1MDAzZW9wcy1cXHUwMDNlaGNpX2V2ZW50X3JlY2VpdmVkKVxcbm5ldC9uZmMvbmNpL2hjaS5jOjI3ODpcXHRcXHRuZGV2LVxcdTAwM2VvcHMtXFx1MDAzZWhjaV9ldmVudF9yZWNlaXZlZChuZGV2LCBwaXBlLCBldmVudCwgc2tiKTtcXG5uZXQvbmZjL25jaS9oY2kuYy0yNzktfVxcbi0tXFxubmV0L25mYy9uY2kvaGNpLmM9MzgyPXN0YXRpYyB2b2lkIG5jaV9oY2lfaGNwX21lc3NhZ2Vfcngoc3RydWN0IG5jaV9kZXYgKm5kZXYsIHU4IHBpcGUsXFxuLS1cXG5uZXQvbmZjL25jaS9oY2kuYy0zOTItXFx0Y2FzZSBOQ0lfSENJX0hDUF9FVkVOVDpcXG5uZXQvbmZjL25jaS9oY2kuYzozOTM6XFx0XFx0bmNpX2hjaV9ldmVudF9yZWNlaXZlZChuZGV2LCBwaXBlLCBpbnN0cnVjdGlvbiwgc2tiKTtcXG5uZXQvbmZjL25jaS9oY2kuYy0zOTQtXFx0XFx0YnJlYWs7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDEyOjIyOjEwLjc0MjI1MzQ2OFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTc0NDE3NzU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBVU0IgUmVjZWl2ZSBQYXRoKipcblxuQWxyaWdodCwgc28gdGhlIGNsdWUgaGVyZSBpcyB0aGF0IGBldmVudF9yZWNlaXZlZGAgaXMgYmVpbmcgZmxhZ2dlZCBpbiBgbXdpZmlleF91c2JfcmVjdmAuIFRoYXQncyB0aGUgZW50cnkgcG9pbnQsIG9yIGF0IGxlYXN0IGEgY3JpdGljYWwgcGFydCwgZm9yIGhhbmRsaW5nIGluY29taW5nIGRhdGEgb3ZlciBVU0IuIE15IGZpcnN0IHRob3VnaHQgaXMsIGxldCdzIHRyYWNlIHRoaXMgYmFjayBhbmQgc2VlIGV4YWN0bHkgKmhvdyogdGhhdCBgZXZlbnRfcmVjZWl2ZWRgIGZsYWcgaXMgYmVpbmcgc2V0IHdpdGhpbiBgbXdpZmlleF91c2JfcmVjdmAuIElzIGl0IGNvbmRpdGlvbmFsPyBXaGF0J3MgdHJpZ2dlcmluZyB0aGUgc2V0dGluZyBvZiB0aGlzIGZsYWc/IEtub3dpbmcgdGhlIGV4YWN0IGNvbmRpdGlvbnMgd2lsbCBiZSBjcml0aWNhbCB0byB1bmRlcnN0YW5kaW5nIHRoZSBzdGF0ZSBtYWNoaW5lIGFuZCB0aGUgb3ZlcmFsbCBmbG93LiBOZWVkIHRvIGxvb2sgY2xvc2VseSBhdCB0aGF0IGZ1bmN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDc5MCwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDEyOjIyOjE1LjMxNjY3MzcwMloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIzNDk1ODQ0MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4X3VzYl9yZWN2XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg9NTU9ZW51bSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTEyMy0gKiBEbyBub3QgY2hlY2sgZm9yIGRhdGFfcmVjZWl2ZWQgZm9yIFVTQiwgYXMgZGF0YV9yZWNlaXZlZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTI0OiAqIGlzIGhhbmRsZWQgaW4gbXdpZmlleF91c2JfcmVjdiBmb3IgVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xMjUtICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM9NDE9c3RhdGljIGludCBtd2lmaWV4X3VzYl9zdWJtaXRfcnhfdXJiKHN0cnVjdCB1cmJfY29udGV4dCAqY3R4LCBpbnQgc2l6ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNDUtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjQ2OnN0YXRpYyBpbnQgbXdpZmlleF91c2JfcmVjdihzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy00Ny1cXHRcXHRcXHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTggZXApXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM9MTUyPXN0YXRpYyB2b2lkIG13aWZpZXhfdXNiX3J4X2NvbXBsZXRlKHN0cnVjdCB1cmIgKnVyYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE4NzpcXHRcXHRzdGF0dXMgPSBtd2lmaWV4X3VzYl9yZWN2KGFkYXB0ZXIsIHNrYiwgY29udGV4dC1cXHUwMDNlZXApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xODgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTk2LVxcdFxcdFxcdCAqIHVyYiBmb3IgY21kX2VwIHdpbGwgYmUgcmUtc3VibWl0dGVkIGluIGNhbGxiYWNrXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE5NzpcXHRcXHRcXHQgKiBtd2lmaWV4X3VzYl9yZWN2X2NvbXBsZXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE5OC1cXHRcXHRcXHQgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTI6MjI6MTcuNTUxNjM3NzU0WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5MTc2NjAxNzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFVTQiBXaS1GaSBEcml2ZXIncyBFdmVudCBIYW5kbGluZyoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiB0cmFjaW5nIHRoZSBkYXRhIGZsb3cgZm9yIGluY29taW5nIFVTQiBwYWNrZXRzIGluIHRoaXMgTWFydmVsbCBXaS1GaSBkcml2ZXIsIGFuZCBpdCdzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIGBtd2lmaWV4X3VzYl9yZWN2YCBoYW5kbGVzIHRoZSBpbmNvbWluZyBkYXRhIGFuZCBzZXRzIHRoZSBgZXZlbnRfcmVjZWl2ZWRgIGZsYWcuIEZyb20gdGhlcmUsIGBtd2lmaWV4X21haW5fcHJvY2Vzc2Aga2lja3MgaW4sIGNhbGxpbmcgYG13aWZpZXhfcHJvY2Vzc19ldmVudGAuIE5vdywgaGVyZSdzIHdoZXJlIGl0IGdldHMgaW50ZXJlc3Rpbmc6IGlmIHRoZSBgcHJpdi1cdTAwM2Vic3Nfcm9sZWAgaXMgc2V0IHRvIGBNV0lGSUVYX0JTU19ST0xFX1VBUGAsIHRoZSBjb2RlIGJyYW5jaGVzIGludG8gYG13aWZpZXhfcHJvY2Vzc191YXBfZXZlbnRgLlxuXG5UaGlzIHBhdGggaXMgKmFic29sdXRlbHkqIHJlYWNoYWJsZSBhbmQgcHJlc2VudHMgYSBjbGVhciBlbnRyeSBwb2ludCB2aWEgVVNCIGdhZGdldCBvciB2aGNpLiBJdCdzIGEgcHJpbWUgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBJIG5lZWQgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IGBtd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50YCBpdHNlbGYsIHNvIEknbSBoZWFkaW5nIG92ZXIgdG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuY2AgdG8gc2VlIHdoYXQga2luZCBvZiBpbnB1dHMgYW5kIGRhdGEgc3RydWN0dXJlcyBpdCdzIGRlYWxpbmcgd2l0aC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGJlaGF2aW9yIHRob3JvdWdobHkgYmVmb3JlIGRlc2lnbmluZyBlZmZlY3RpdmUgZnV6emluZyBjYW1wYWlnbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1NTAyLCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDEyOjIyOjIzLjQ2OTMwMDEzNloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MjQ2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdWFwX2V2ZW50LmNcIixcbiAgXCJGaXJzdExpbmVcIjogOTAsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDkwOlxcdCAqICAgICAgLSBFVkVOVF9VQVBfQlNTX1NUQVJUXFxuICA5MTpcXHQgKiAgICAgIC0gRVZFTlRfVUFQX0JTU19JRExFXFxuICA5MjpcXHQgKiAgICAgIC0gRVZFTlRfVUFQX01JQ19DT1VOVEVSTUVBU1VSRVM6XFxuICA5MzpcXHQgKi9cXG4gIDk0OlxcdGludCBtd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXFxuICA5NTpcXHR7XFxuICA5NjpcXHRcXHRzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cXHUwMDNlYWRhcHRlcjtcXG4gIDk3OlxcdFxcdGludCBsZW4sIGk7XFxuICA5ODpcXHRcXHR1MzIgZXZlbnRjYXVzZSA9IGFkYXB0ZXItXFx1MDAzZWV2ZW50X2NhdXNlO1xcbiAgOTk6XFx0XFx0c3RydWN0IHN0YXRpb25faW5mbyAqc2luZm87XFxuIDEwMDpcXHRcXHRzdHJ1Y3QgbXdpZmlleF9hc3NvY19ldmVudCAqZXZlbnQ7XFxuIDEwMTpcXHRcXHRzdHJ1Y3QgbXdpZmlleF9zdGFfbm9kZSAqbm9kZTtcXG4gMTAyOlxcdFxcdHU4ICpkZWF1dGhfbWFjO1xcbiAxMDM6XFx0XFx0c3RydWN0IGhvc3RfY21kX2RzXzExbl9iYXRpbWVvdXQgKmJhX3RpbWVvdXQ7XFxuIDEwNDpcXHRcXHR1MTYgY3RybDtcXG4gMTA1OlxcdFxcbiAxMDY6XFx0XFx0c3dpdGNoIChldmVudGNhdXNlKSB7XFxuIDEwNzpcXHRcXHRjYXNlIEVWRU5UX1VBUF9TVEFfQVNTT0M6XFxuIDEwODpcXHRcXHRcXHRzaW5mbyA9IGt6YWxsb2Nfb2JqKCpzaW5mbyk7XFxuIDEwOTpcXHRcXHRcXHRpZiAoIXNpbmZvKVxcbiAxMTA6XFx0XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIDExMTpcXHRcXG4gMTEyOlxcdFxcdFxcdGV2ZW50ID0gKHN0cnVjdCBtd2lmaWV4X2Fzc29jX2V2ZW50ICopXFxuIDExMzpcXHRcXHRcXHRcXHQoYWRhcHRlci1cXHUwMDNlZXZlbnRfYm9keSArIE1XSUZJRVhfVUFQX0VWRU5UX0VYVFJBX0hFQURFUik7XFxuIDExNDpcXHRcXHRcXHRpZiAobGUxNl90b19jcHUoZXZlbnQtXFx1MDAzZXR5cGUpID09IFRMVl9UWVBFX1VBUF9NR01UX0ZSQU1FKSB7XFxuIDExNTpcXHRcXHRcXHRcXHRsZW4gPSAtMTtcXG4gMTE2OlxcdFxcbiAxMTc6XFx0XFx0XFx0XFx0aWYgKGllZWU4MDIxMV9pc19hc3NvY19yZXEoZXZlbnQtXFx1MDAzZWZyYW1lX2NvbnRyb2wpKVxcbiAxMTg6XFx0XFx0XFx0XFx0XFx0bGVuID0gMDtcXG4gMTE5OlxcdFxcdFxcdFxcdGVsc2UgaWYgKGllZWU4MDIxMV9pc19yZWFzc29jX3JlcShldmVudC1cXHUwMDNlZnJhbWVfY29udHJvbCkpXFxuIDEyMDpcXHRcXHRcXHRcXHRcXHQvKiBUaGVyZSB3aWxsIGJlIEVUSF9BTEVOIGJ5dGVzIG9mXFxuIDEyMTpcXHRcXHRcXHRcXHRcXHQgKiBjdXJyZW50X2FwX2FkZHIgYmVmb3JlIHRoZSByZS1hc3NvYyBpZXMuXFxuIDEyMjpcXHRcXHRcXHRcXHRcXHQgKi9cXG4gMTIzOlxcdFxcdFxcdFxcdFxcdGxlbiA9IEVUSF9BTEVOO1xcbiAxMjQ6XFx0XFxuIDEyNTpcXHRcXHRcXHRcXHRpZiAobGVuICE9IC0xKSB7XFxuIDEyNjpcXHRcXHRcXHRcXHRcXHRzaW5mby1cXHUwMDNlYXNzb2NfcmVxX2llcyA9IFxcdTAwMjZldmVudC1cXHUwMDNlZGF0YVtsZW5dO1xcbiAxMjc6XFx0XFx0XFx0XFx0XFx0bGVuID0gKHU4ICopc2luZm8tXFx1MDAzZWFzc29jX3JlcV9pZXMgLVxcbiAxMjg6XFx0XFx0XFx0XFx0XFx0ICAgICAgKHU4ICopXFx1MDAyNmV2ZW50LVxcdTAwM2VmcmFtZV9jb250cm9sO1xcbiAxMjk6XFx0XFxuIDEzMDpcXHRcXHRcXHRcXHRcXHQvKlxcbiAxMzE6XFx0XFx0XFx0XFx0XFx0ICogZXZlbnQtXFx1MDAzZWxlbiBpcyByZXBvcnRlZCBieSB0aGUgZGV2aWNlIGZpcm13YXJlIGFuZCBpcyBub3RcXG4gMTMyOlxcdFxcdFxcdFxcdFxcdCAqIG90aGVyd2lzZSB2YWxpZGF0ZWQuICBSZWplY3QgYSBsZW5ndGggdGhhdCB1bmRlcmZsb3dzIHRoZVxcbiAxMzM6XFx0XFx0XFx0XFx0XFx0ICogaGVhZGVyLCBvciB0aGF0IHdvdWxkIHBsYWNlIHRoZSBhc3NvY2lhdGlvbiByZXF1ZXN0IElFc1xcbiAxMzQ6XFx0XFx0XFx0XFx0XFx0ICogb3V0c2lkZSB0aGUgZml4ZWQtc2l6ZSBldmVudF9ib2R5W10gYnVmZmVyIHRoZSBldmVudCB3YXNcXG4gMTM1OlxcdFxcdFxcdFxcdFxcdCAqIGNvcGllZCBpbnRvOyBvdGhlcndpc2UgdGhlIElFIHdhbGsgaW5cXG4gMTM2OlxcdFxcdFxcdFxcdFxcdCAqIG13aWZpZXhfc2V0X3N0YV9odF9jYXAoKSByZWFkcyBwYXN0IGV2ZW50X2JvZHkgYW5kIG91dFxcbiAxMzc6XFx0XFx0XFx0XFx0XFx0ICogb2YgdGhlIGFkYXB0ZXIgc2xhYiBvYmplY3QuXFxuIDEzODpcXHRcXHRcXHRcXHRcXHQgKi9cXG4gMTM5OlxcdFxcdFxcdFxcdFxcdGlmIChsZTE2X3RvX2NwdShldmVudC1cXHUwMDNlbGVuKSBcXHUwMDNjIGxlbiB8fFxcbiAxNDA6XFx0XFx0XFx0XFx0XFx0ICAgICh1OCAqKVxcdTAwMjZldmVudC1cXHUwMDNlZnJhbWVfY29udHJvbCArIGxlMTZfdG9fY3B1KGV2ZW50LVxcdTAwM2VsZW4pIFxcdTAwM2VcXG4gMTQxOlxcdFxcdFxcdFxcdFxcdCAgICBhZGFwdGVyLVxcdTAwM2VldmVudF9ib2R5ICsgTUFYX0VWRU5UX1NJWkUpIHtcXG4gMTQyOlxcdFxcdFxcdFxcdFxcdFxcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIEVSUk9SLFxcbiAxNDM6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIFxcXCJpbnZhbGlkIFNUQSBhc3NvYyBldmVudCBsZW5ndGhcXFxcblxcXCIpO1xcbiAxNDQ6XFx0XFx0XFx0XFx0XFx0XFx0a2ZyZWUoc2luZm8pO1xcbiAxNDU6XFx0XFx0XFx0XFx0XFx0XFx0cmV0dXJuIC0xO1xcbiAxNDY6XFx0XFx0XFx0XFx0XFx0fVxcbiAxNDc6XFx0XFx0XFx0XFx0XFx0c2luZm8tXFx1MDAzZWFzc29jX3JlcV9pZXNfbGVuID1cXG4gMTQ4OlxcdFxcdFxcdFxcdFxcdFxcdGxlMTZfdG9fY3B1KGV2ZW50LVxcdTAwM2VsZW4pIC0gKHUxNilsZW47XFxuIDE0OTpcXHRcXHRcXHRcXHR9XFxuIDE1MDpcXHRcXHRcXHR9XFxuIDE1MTpcXHRcXHRcXHRjZmc4MDIxMV9uZXdfc3RhKHByaXYtXFx1MDAzZW5ldGRldi1cXHUwMDNlaWVlZTgwMjExX3B0ciwgZXZlbnQtXFx1MDAzZXN0YV9hZGRyLFxcbiAxNTI6XFx0XFx0XFx0XFx0XFx0IHNpbmZvLCBHRlBfS0VSTkVMKTtcXG4gMTUzOlxcdFxcbiAxNTQ6XFx0XFx0XFx0bm9kZSA9IG13aWZpZXhfYWRkX3N0YV9lbnRyeShwcml2LCBldmVudC1cXHUwMDNlc3RhX2FkZHIpO1xcbiAxNTU6XFx0XFx0XFx0aWYgKCFub2RlKSB7XFxuIDE1NjpcXHRcXHRcXHRcXHRtd2lmaWV4X2RiZyhhZGFwdGVyLCBFUlJPUixcXG4gMTU3OlxcdFxcdFxcdFxcdFxcdCAgICBcXFwiY291bGQgbm90IGNyZWF0ZSBzdGF0aW9uIGVudHJ5IVxcXFxuXFxcIik7XFxuIDE1ODpcXHRcXHRcXHRcXHRrZnJlZShzaW5mbyk7XFxuIDE1OTpcXHRcXHRcXHRcXHRyZXR1cm4gLTE7XFxuIDE2MDpcXHRcXHRcXHR9XFxuIDE2MTpcXHRcXG4gMTYyOlxcdFxcdFxcdGlmICghcHJpdi1cXHUwMDNlYXBfMTFuX2VuYWJsZWQpIHtcXG4gMTYzOlxcdFxcdFxcdFxcdGtmcmVlKHNpbmZvKTtcXG4gMTY0OlxcdFxcdFxcdFxcdGJyZWFrO1xcbiAxNjU6XFx0XFx0XFx0fVxcbiAxNjY6XFx0XFxuIDE2NzpcXHRcXHRcXHRtd2lmaWV4X3NldF9zdGFfaHRfY2FwKHByaXYsIHNpbmZvLVxcdTAwM2Vhc3NvY19yZXFfaWVzLFxcbiAxNjg6XFx0XFx0XFx0XFx0XFx0ICAgICAgIHNpbmZvLVxcdTAwM2Vhc3NvY19yZXFfaWVzX2xlbiwgbm9kZSk7XFxuIDE2OTpcXHRcXG4gMTcwOlxcdFxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBNQVhfTlVNX1RJRDsgaSsrKSB7XFxuIDE3MTpcXHRcXHRcXHRcXHRpZiAobm9kZS1cXHUwMDNlaXNfMTFuX2VuYWJsZWQpXFxuIDE3MjpcXHRcXHRcXHRcXHRcXHRub2RlLVxcdTAwM2VhbXBkdV9zdGFbaV0gPVxcbiAxNzM6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgcHJpdi1cXHUwMDNlYWdncl9wcmlvX3RibFtpXS5hbXBkdV91c2VyO1xcbiAxNzQ6XFx0XFx0XFx0XFx0ZWxzZVxcbiAxNzU6XFx0XFx0XFx0XFx0XFx0bm9kZS1cXHUwMDNlYW1wZHVfc3RhW2ldID0gQkFfU1RSRUFNX05PVF9BTExPV0VEO1xcbiAxNzY6XFx0XFx0XFx0fVxcbiAxNzc6XFx0XFx0XFx0bWVtc2V0KG5vZGUtXFx1MDAzZXJ4X3NlcSwgMHhmZiwgc2l6ZW9mKG5vZGUtXFx1MDAzZXJ4X3NlcSkpO1xcbiAxNzg6XFx0XFx0XFx0a2ZyZWUoc2luZm8pO1xcbiAxNzk6XFx0XFx0XFx0YnJlYWs7XFxuIDE4MDpcXHRcXHRjYXNlIEVWRU5UX1VBUF9TVEFfREVBVVRIOlxcbiAxODE6XFx0XFx0XFx0ZGVhdXRoX21hYyA9IGFkYXB0ZXItXFx1MDAzZWV2ZW50X2JvZHkgK1xcbiAxODI6XFx0XFx0XFx0XFx0ICAgICBNV0lGSUVYX1VBUF9FVkVOVF9FWFRSQV9IRUFERVI7XFxuIDE4MzpcXHRcXHRcXHRjZmc4MDIxMV9kZWxfc3RhKHByaXYtXFx1MDAzZW5ldGRldi1cXHUwMDNlaWVlZTgwMjExX3B0ciwgZGVhdXRoX21hYyxcXG4gMTg0OlxcdFxcdFxcdFxcdFxcdCBHRlBfS0VSTkVMKTtcXG4gMTg1OlxcdFxcbiAxODY6XFx0XFx0XFx0aWYgKHByaXYtXFx1MDAzZWFwXzExbl9lbmFibGVkKSB7XFxuIDE4NzpcXHRcXHRcXHRcXHRtd2lmaWV4XzExbl9kZWxfcnhfcmVvcmRlcl90YmxfYnlfdGEocHJpdiwgZGVhdXRoX21hYyk7XFxuIDE4ODpcXHRcXHRcXHRcXHRtd2lmaWV4X2RlbF90eF9iYV9zdHJlYW1fdGJsX2J5X3JhKHByaXYsIGRlYXV0aF9tYWMpO1xcbiAxODk6XFx0XFx0XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxMjoyMjoyMy40NjkzODM5NjZaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTQ2MjAxNTcxMDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgbXdpZmlleF9wcm9jZXNzX3VhcF9ldmVudGAgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgZm9jdXMgbGFuZHMgb24gYG13aWZpZXhfcHJvY2Vzc191YXBfZXZlbnRgLiBUaGlzIGZ1bmN0aW9uIGhhbmRsZXMgYEVWRU5UX1VBUF9TVEFfQVNTT0NgIGFuZCByZWxhdGVkIGV2ZW50cywgc28gaXQncyBjbGVhcmx5IGltcG9ydGFudCBmb3IgdGhlIG92ZXJhbGwgd2lyZWxlc3MgZnVuY3Rpb25hbGl0eS4gSSBjYW4gY29uZmlybSBpdCdzIGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZSwgd2hpY2ggaXMgZ29vZC5cblxuVGhlIHBhdGNoIGl0c2VsZiBpcyBhZGRpbmcgYSBib3VuZHMgY2hlY2ssIHNwZWNpZmljYWxseSB0byBwcmV2ZW50IGFuIG91dC1vZi1ib3VuZHMgcmVhZCB3aXRoaW4gYG13aWZpZXhfc2V0X3N0YV9odF9jYXBgLCB3aGljaCBpcyBjYWxsZWQgbGF0ZXIgaW4gYG13aWZpZXhfcHJvY2Vzc191YXBfZXZlbnRgLiBUaGlzIGlzIGEgY2xhc3NpYyB2dWxuZXJhYmlsaXR5IGZpeCwgYW5kIEkgYXBwcmVjaWF0ZSB0aGUgcHJvYWN0aXZlIGFwcHJvYWNoLlxuXG5Ob3csIGxldCdzIG5haWwgZG93biB0aGUgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMuIFRoZSBjb2RlIHJlZmVyZW5jZXMgYE1XSUZJRVhgIGFuZCBgTVdJRklFWF9VU0JgLiBgTVdJRklFWF9VU0JgIHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCwgZGVwZW5kZW50IG9uIGJvdGggYE1XSUZJRVhgIGFuZCBgVVNCYCwgYW5kIGBNV0lGSUVYYCBpcyBkZXBlbmRlbnQgb24gYENGRzgwMjExYC4gU28sIGl0J3MgcHJldHR5IGNsZWFyIHRoYXQgdGhlc2UgYXJlIHRoZSBrZXkgY29uZmlndXJhdGlvbnMgdG8ga2VlcCBpbiBtaW5kLlxuXG5JJ20gZG91YmxlLWNoZWNraW5nIHRvIGVuc3VyZSB0aGF0IGBtd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50YCBpcyB0aGUgKm9ubHkqIGZ1bmN0aW9uIG1vZGlmaWVkIGJ5IHRoaXMgcGF0Y2gsIGFuZCB5ZXAsIGl0IGlzLiBUaGF0IHNpbXBsaWZpZXMgdGhpbmdzLlxuXG5OZXh0LCBJIG5lZWQgdG8gY29uc2lkZXIgd2hhdCAqb3RoZXIqIGZ1bmN0aW9ucyBhcmUgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhpcyBjaGFuZ2UuIFdoaWxlIGBtd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50YCBpcyB0aGUgcHJpbWFyeSBmb2N1cywgaXQncyBjbGVhciB0aGF0IHRoZSBhY3R1YWwgdnVsbmVyYWJpbGl0eSBsaWVzIGluIGBtd2lmaWV4X3NldF9zdGFfaHRfY2FwYC4gU28sIEknbGwgZGVmaW5pdGVseSB3YW50IHRvIGluY2x1ZGUgYG13aWZpZXhfc2V0X3N0YV9odF9jYXBgIGluIG15IGxpc3Qgb2Ygc2lnbmlmaWNhbnQgZnVuY3Rpb25zIHRvbywgYXMgaXQncyB0aGUgb25lIGJlaW5nIHByb3RlY3RlZCBieSB0aGUgbmV3IGNoZWNrLlxuXG5JbiBjb25jbHVzaW9uLCBJJ2xsIGJlIGtlZXBpbmcgYSB2ZXJ5IGNsb3NlIGV5ZSBvbiBib3RoIGBtd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50YCAod2hlcmUgdGhlIHBhdGNoIGlzIGltcGxlbWVudGVkKSBhbmQgYG13aWZpZXhfc2V0X3N0YV9odF9jYXBgICh0aGUgZnVuY3Rpb24gdGhhdCB3YXMgdnVsbmVyYWJsZSkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3NjQ3LCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTI6MjI6MzguMDg5NTQ0NjhaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4NTQzNTg0MzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXdpZmlleF9zZXRfc3RhX2h0X2NhcFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oPTE1OTA9dm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTU5MTptd2lmaWV4X3NldF9zdGFfaHRfY2FwKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIGNvbnN0IHU4ICppZXMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xNTkyLVxcdFxcdCAgICAgICBpbnQgaWVzX2xlbiwgc3RydWN0IG13aWZpZXhfc3RhX25vZGUgKm5vZGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF9ldmVudC5jPTk0PWludCBtd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdWFwX2V2ZW50LmMtMTM1LVxcdFxcdFxcdFxcdCAqIGNvcGllZCBpbnRvOyBvdGhlcndpc2UgdGhlIElFIHdhbGsgaW5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdWFwX2V2ZW50LmM6MTM2OlxcdFxcdFxcdFxcdCAqIG13aWZpZXhfc2V0X3N0YV9odF9jYXAoKSByZWFkcyBwYXN0IGV2ZW50X2JvZHkgYW5kIG91dFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYy0xMzctXFx0XFx0XFx0XFx0ICogb2YgdGhlIGFkYXB0ZXIgc2xhYiBvYmplY3QuXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdWFwX2V2ZW50LmMtMTY2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYzoxNjc6XFx0XFx0bXdpZmlleF9zZXRfc3RhX2h0X2NhcChwcml2LCBzaW5mby1cXHUwMDNlYXNzb2NfcmVxX2llcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdWFwX2V2ZW50LmMtMTY4LVxcdFxcdFxcdFxcdCAgICAgICBzaW5mby1cXHUwMDNlYXNzb2NfcmVxX2llc19sZW4sIG5vZGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuYz03MTI9dm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmM6NzEzOm13aWZpZXhfc2V0X3N0YV9odF9jYXAoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgY29uc3QgdTggKmllcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jLTcxNC1cXHRcXHQgICAgICAgaW50IGllc19sZW4sIHN0cnVjdCBtd2lmaWV4X3N0YV9ub2RlICpub2RlKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxMjoyMjo0MS45NDM5NDE2NTRaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjEwNjkwODkyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBGdXp6aW5nIFN0cmF0ZWd5IGZvciBUaGlzIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBsb29rZWQgYXQgdGhpcyBwYXRjaCBhbmQsIHllcywgYG13aWZpZXhfc2V0X3N0YV9odF9jYXBgIGRlZmluaXRlbHkgc2VlbXMgbGlrZSBhIHN0cm9uZyBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIEl0J3MgYSBrZXkgZnVuY3Rpb24gaW4gdGhpcyBzY2VuYXJpby5cblxuTm93LCBsZXQncyB0aGluayBhYm91dCB0aGUgb3RoZXIgY29uZmlndXJhdGlvbnMuIFRoZSBtYWluIG9uZSBoZXJlLCBvZiBjb3Vyc2UsIGlzIGBNV0lGSUVYX1VTQmAuIEkgY291bGQgYWxzbyBjb25zaWRlciBgTVdJRklFWF9TRElPYCBhbmQgYE1XSUZJRVhfUENJRWAgaWYgdGhleSBwcmVzZW50IHBsYXVzaWJsZSBmdXp6aW5nIHZlY3RvcnMsIGJ1dCByZWFsaXN0aWNhbGx5LCBgTVdJRklFWF9VU0JgIGlzIHRoZSBtb3N0IGxpa2VseSBhdmVudWUsIGVzcGVjaWFsbHkgZ2l2ZW4gdGhlIFVTQiBnYWRnZXQgcG90ZW50aWFsLiBUaGVyZWZvcmUsIEknbSBnb2luZyB0byBrZWVwIGl0IHN0cmFpZ2h0Zm9yd2FyZCBhbmQganVzdCBpbmNsdWRlIGBNV0lGSUVYYCBhbmQgYE1XSUZJRVhfVVNCYC4gTm8gbmVlZCB0byBvdmVyY29tcGxpY2F0ZSB0aGluZ3MgYXQgdGhpcyBzdGFnZS5cblxuQWxyaWdodCwgbGV0IG1lIHN1bW1hcml6ZSBteSBhcHByb2FjaCBub3c6XG5cbiogICAqKmBXb3J0aEZ1enppbmc6IHRydWVgKio6IEFic29sdXRlbHksIHRoaXMgaXMgYSBjbGVhciBmdXp6aW5nIHRhcmdldC5cbiogICAqKmBGb2N1c1N5bWJvbHM6IG13aWZpZXhfcHJvY2Vzc191YXBfZXZlbnQsIG13aWZpZXhfc2V0X3N0YV9odF9jYXBgKio6IFRoZXNlIGFyZSB0aGUga2V5IGZ1bmN0aW9ucyBJJ20gemVyb2luZyBpbiBvbjsgdGhlIGhlYXJ0IG9mIHRoZSB2dWxuZXJhYmlsaXR5IGFuZCB0aGUgcG90ZW50aWFsbHkgZXhwbG9pdGFibGUgY29kZS5cbiogICAqKmBFbmFibGVDb25maWdzOiBNV0lGSUVYLCBNV0lGSUVYX1VTQmAqKjogVGhpcyBuYXJyb3dzIGRvd24gdGhlIHRlc3QgdG8gdGhlIHBlcnRpbmVudCBkcml2ZXJzLlxuKiAgICoqYFJlYXNvbmluZzogVGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgdG8gYW4gZXZlbnQgbGVuZ3RoIHJlcG9ydGVkIGJ5IHRoZSBkZXZpY2UgZmlybXdhcmUgaW4gbXdpZmlleF9wcm9jZXNzX3VhcF9ldmVudCB0byBwcmV2ZW50IGFuIG91dC1vZi1ib3VuZHMgcmVhZCBpbiBtd2lmaWV4X3NldF9zdGFfaHRfY2FwLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSB0aGUgVVNCIGRyaXZlciAobXdpZmlleF91c2IpIHdoaWNoIGNhbiBiZSBmdXp6ZWQgdXNpbmcgVVNCIGVtdWxhdGlvbi5gKio6IFRoaXMgaXMgdGhlIGNvbmNpc2UgcmF0aW9uYWxlOyB0aGUgcGF0Y2ggYWRkcmVzc2VzIGEgZmlybXdhcmUgZXZlbnQgbGVuZ3RoIGlzc3VlIGxlYWRpbmcgdG8gYW4gb3V0LW9mLWJvdW5kcyByZWFkLCBhbmQgdGhlIFVTQiBkcml2ZXIgaXMgdGhlIGVudHJ5IHBvaW50IGZvciB0aGlzIGJ1Zy4gRnV6emluZyB3aXRoIFVTQiBlbXVsYXRpb24gaXMgdGhlIGNsZWFyIHBhdGguXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4OTY2LCJPdXRwdXRUb2tlbnMiOjE0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxMjoyMjo0OC4wNTA4NTI5MzhaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjYzMTM0MDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1XSUZJRVhcIixcbiAgICBcIk1XSUZJRVhfVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXdpZmlleF9wcm9jZXNzX3VhcF9ldmVudFwiLFxuICAgIFwibXdpZmlleF9zZXRfc3RhX2h0X2NhcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgdG8gYW4gZXZlbnQgbGVuZ3RoIHJlcG9ydGVkIGJ5IHRoZSBkZXZpY2UgZmlybXdhcmUgaW4gYG13aWZpZXhfcHJvY2Vzc191YXBfZXZlbnRgIHRvIHByZXZlbnQgYW4gb3V0LW9mLWJvdW5kcyByZWFkIGluIGBtd2lmaWV4X3NldF9zdGFfaHRfY2FwYC4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgdGhlIFVTQiBkcml2ZXIgKGBtd2lmaWV4X3VzYmApIHdoaWNoIGNhbiBiZSBmdXp6ZWQgdXNpbmcgVVNCIGVtdWxhdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNV0lGSUVYXCIsXG4gICAgXCJNV0lGSUVYX1VTQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm13aWZpZXhfcHJvY2Vzc191YXBfZXZlbnRcIixcbiAgICBcIm13aWZpZXhfc2V0X3N0YV9odF9jYXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIHRvIGFuIGV2ZW50IGxlbmd0aCByZXBvcnRlZCBieSB0aGUgZGV2aWNlIGZpcm13YXJlIGluIGBtd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50YCB0byBwcmV2ZW50IGFuIG91dC1vZi1ib3VuZHMgcmVhZCBpbiBgbXdpZmlleF9zZXRfc3RhX2h0X2NhcGAuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgdmlhIHRoZSBVU0IgZHJpdmVyIChgbXdpZmlleF91c2JgKSB3aGljaCBjYW4gYmUgZnV6emVkIHVzaW5nIFVTQiBlbXVsYXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowjnc9v[1] Phase: Succeeded StartedAt: 2026-06-29 12:22:59 +0000 UTC FinishedAt: 2026-06-29 12:22:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjnc9v[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-29 12:22:59 +0000 UTC FinishedAt: 2026-06-29 12:22:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjnc9v[2] Phase: Succeeded StartedAt: 2026-06-29 12:22:59 +0000 UTC FinishedAt: 2026-06-29 13:26:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjnc9v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_process_uap_event","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"fe800a61-cef0-4250-90e5-9387b496973d","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-29 12:22:59 +0000 UTC FinishedAt: 2026-06-29 13:26:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_process_uap_event","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"fe800a61-cef0-4250-90e5-9387b496973d","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowjnc9v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_process_uap_event","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"fe800a61-cef0-4250-90e5-9387b496973d","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-29 12:22:59 +0000 UTC FinishedAt: 2026-06-29 12:23:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjnc9v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_process_uap_event","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"fe800a61-cef0-4250-90e5-9387b496973d","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-29 12:22:59 +0000 UTC FinishedAt: 2026-06-29 12:23:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflowjnc9v/series-workflowjnc9v-convert-artifact-2768650381/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjnc9v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_process_uap_event","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"fe800a61-cef0-4250-90e5-9387b496973d","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-29 12:23:20 +0000 UTC FinishedAt: 2026-06-29 12:51:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjnc9v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_process_uap_event","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"fe800a61-cef0-4250-90e5-9387b496973d","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-29 12:23:20 +0000 UTC FinishedAt: 2026-06-29 12:51:14 +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:*129bea34-3851-497c-b222-5511a5c00ea2,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-workflowjnc9v/series-workflowjnc9v-convert-artifact-2768650381/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": "93328f6b-59df-4202-a410-86d2514aff5a", "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-workflowjnc9v/series-workflowjnc9v-build-action-2512231427/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjnc9v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_process_uap_event","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"fe800a61-cef0-4250-90e5-9387b496973d","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-29 12:23:20 +0000 UTC FinishedAt: 2026-06-29 12:51:03 +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:*129bea34-3851-497c-b222-5511a5c00ea2,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-workflowjnc9v/series-workflowjnc9v-convert-artifact-2768650381/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": "93328f6b-59df-4202-a410-86d2514aff5a", "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-workflowjnc9v/series-workflowjnc9v-build-action-2512231427/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjnc9v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_process_uap_event","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"fe800a61-cef0-4250-90e5-9387b496973d","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-29 12:51:14 +0000 UTC FinishedAt: 2026-06-29 12:51:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjnc9v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_process_uap_event","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"fe800a61-cef0-4250-90e5-9387b496973d","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-29 12:51:14 +0000 UTC FinishedAt: 2026-06-29 12:51:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjnc9v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_process_uap_event","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"fe800a61-cef0-4250-90e5-9387b496973d","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-29 12:51:14 +0000 UTC FinishedAt: 2026-06-29 12:51:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjnc9v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_process_uap_event","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"fe800a61-cef0-4250-90e5-9387b496973d","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-29 12:51:14 +0000 UTC FinishedAt: 2026-06-29 12:51:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"fe800a61-cef0-4250-90e5-9387b496973d","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflowjnc9v/series-workflowjnc9v-convert-artifact-830464488/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjnc9v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_process_uap_event","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"fe800a61-cef0-4250-90e5-9387b496973d","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-29 12:51:55 +0000 UTC FinishedAt: 2026-06-29 12:54:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjnc9v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_process_uap_event","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"fe800a61-cef0-4250-90e5-9387b496973d","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-29 12:51:55 +0000 UTC FinishedAt: 2026-06-29 12:53:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*93328f6b-59df-4202-a410-86d2514aff5a,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-workflowjnc9v/series-workflowjnc9v-build-action-2512231427/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-workflowjnc9v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_process_uap_event","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"fe800a61-cef0-4250-90e5-9387b496973d","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-29 12:54:11 +0000 UTC FinishedAt: 2026-06-29 12:54:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjnc9v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_process_uap_event","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"fe800a61-cef0-4250-90e5-9387b496973d","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-29 12:54:11 +0000 UTC FinishedAt: 2026-06-29 12:54:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjnc9v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_process_uap_event","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"fe800a61-cef0-4250-90e5-9387b496973d","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-29 12:54:11 +0000 UTC FinishedAt: 2026-06-29 13:20:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjnc9v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_process_uap_event","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"fe800a61-cef0-4250-90e5-9387b496973d","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-29 12:54:11 +0000 UTC FinishedAt: 2026-06-29 13:20:41 +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:*129bea34-3851-497c-b222-5511a5c00ea2,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-workflowjnc9v/series-workflowjnc9v-convert-artifact-830464488/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": "c5898389-ac75-43de-9a85-40d8e961c914", "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-workflowjnc9v/series-workflowjnc9v-build-action-1500289428/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjnc9v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_process_uap_event","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"fe800a61-cef0-4250-90e5-9387b496973d","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-29 12:54:11 +0000 UTC FinishedAt: 2026-06-29 13:20:31 +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:*129bea34-3851-497c-b222-5511a5c00ea2,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-workflowjnc9v/series-workflowjnc9v-convert-artifact-830464488/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": "c5898389-ac75-43de-9a85-40d8e961c914", "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-workflowjnc9v/series-workflowjnc9v-build-action-1500289428/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjnc9v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_process_uap_event","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"fe800a61-cef0-4250-90e5-9387b496973d","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-29 13:20:41 +0000 UTC FinishedAt: 2026-06-29 13:20:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjnc9v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_process_uap_event","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"fe800a61-cef0-4250-90e5-9387b496973d","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-29 13:20:41 +0000 UTC FinishedAt: 2026-06-29 13:20:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjnc9v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_process_uap_event","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"fe800a61-cef0-4250-90e5-9387b496973d","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-29 13:20:41 +0000 UTC FinishedAt: 2026-06-29 13:22:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjnc9v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_process_uap_event","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"fe800a61-cef0-4250-90e5-9387b496973d","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-29 13:20:41 +0000 UTC FinishedAt: 2026-06-29 13:22:47 +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:*c5898389-ac75-43de-9a85-40d8e961c914,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-workflowjnc9v/series-workflowjnc9v-build-action-1500289428/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-workflowjnc9v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_process_uap_event","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"fe800a61-cef0-4250-90e5-9387b496973d","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-06-29 13:22:57 +0000 UTC FinishedAt: 2026-06-29 13:26:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjnc9v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_process_uap_event","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"fe800a61-cef0-4250-90e5-9387b496973d","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-06-29 13:22:57 +0000 UTC FinishedAt: 2026-06-29 13:26:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_process_uap_event","mwifiex_set_sta_ht_cap"],"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:*93328f6b-59df-4202-a410-86d2514aff5a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*c5898389-ac75-43de-9a85-40d8e961c914,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-workflowjnc9v/series-workflowjnc9v-build-action-2512231427/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-workflowjnc9v/series-workflowjnc9v-build-action-1500289428/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowjnc9v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_process_uap_event","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"fe800a61-cef0-4250-90e5-9387b496973d","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-29 13:22:57 +0000 UTC FinishedAt: 2026-06-29 13:23:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjnc9v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_process_uap_event","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"fe800a61-cef0-4250-90e5-9387b496973d","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-29 13:22:57 +0000 UTC FinishedAt: 2026-06-29 13:23:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_process_uap_event","mwifiex_set_sta_ht_cap"],"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-workflowjnc9v/series-workflowjnc9v-convert-artifact-3912831521/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjnc9v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_process_uap_event","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"fe800a61-cef0-4250-90e5-9387b496973d","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-29 13:22:57 +0000 UTC FinishedAt: 2026-06-29 13:22:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjnc9v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_process_uap_event","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"fe800a61-cef0-4250-90e5-9387b496973d","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-29 13:22:57 +0000 UTC FinishedAt: 2026-06-29 13:22:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjnc9v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_process_uap_event","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"fe800a61-cef0-4250-90e5-9387b496973d","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-29 13:22:57 +0000 UTC FinishedAt: 2026-06-29 13:22:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjnc9v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_process_uap_event","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"fe800a61-cef0-4250-90e5-9387b496973d","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-06-29 13:23:58 +0000 UTC FinishedAt: 2026-06-29 13:26:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjnc9v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_process_uap_event","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"fe800a61-cef0-4250-90e5-9387b496973d","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-06-29 13:23:58 +0000 UTC FinishedAt: 2026-06-29 13:26:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*93328f6b-59df-4202-a410-86d2514aff5a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*c5898389-ac75-43de-9a85-40d8e961c914,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-workflowjnc9v/series-workflowjnc9v-build-action-2512231427/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-workflowjnc9v/series-workflowjnc9v-build-action-1500289428/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-workflowjnc9v/series-workflowjnc9v-convert-artifact-3912831521/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,}