Name: series-workflowmsl5b Phase: Succeeded StartedAt: 2026-07-31 12:27:21 +0000 UTC FinishedAt: 2026-07-31 16:18:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmsl5b[0] Phase: Succeeded StartedAt: 2026-07-31 12:27:21 +0000 UTC FinishedAt: 2026-07-31 12:29:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmsl5b[0].run-triage Phase: Succeeded StartedAt: 2026-07-31 12:27:21 +0000 UTC FinishedAt: 2026-07-31 12:29:49 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "XFRM_USER", "XFRM_MIGRATE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "XFRM_USER", "XFRM_MIGRATE" ], "series_id": "7f865621-de85-46c3-9af6-efa1d5d7b74d" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "xfrm_do_migrate_state" ], "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+CgkJCTx0ZD4yMDI2LzA3LzMxIDEyOjI4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hGUk1fVVNFUiYjMzQ7LAogICAgJiMzNDtYRlJNX01JR1JBVEUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt4ZnJtX2RvX21pZ3JhdGVfc3RhdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBSQ1UgbG9ja2luZyBhcm91bmQgYSBuZXRsaW5rIG11bHRpY2FzdCBjYWxsIGluIHRoZSBYRlJNIHN0YXRlIG1pZ3JhdGlvbiBwYXRoLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29yZSBuZXR3b3JraW5nIGNvZGUgcmVhY2hhYmxlIHZpYSBuZXRsaW5rLCBhbmQgZnV6emluZyBpdCBjYW4gaGVscCBlbnN1cmUgbm8gZnVydGhlciBSQ1Ugb3IgbG9ja2luZyBpc3N1ZXMgZXhpc3QuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTI6Mjg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBlYjUzNDRlODk5N2ZlNjMwYWUwMjg2NDM4MTY4ZGVmNGRhYzE2OWQyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMzEgMTI6Mjg6MzcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3hmcm0veGZybV91c2VyLmMgYi9uZXQveGZybS94ZnJtX3VzZXIuY1xuaW5kZXggZDZkYjYzMzA0YmE2Yi4uMGJhMDYxNGQ2NTBmMyAxMDA2NDRcbi0tLSBhL25ldC94ZnJtL3hmcm1fdXNlci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQveGZybS94ZnJtX3VzZXIuY1xuQEAgLTMzMzcsNyAmIzQzOzMzMzcsMTEgQEAgc3RhdGljIGludCB4ZnJtX3NlbmRfbWlncmF0ZV9zdGF0ZShzdHJ1Y3QgbmV0ICpuZXQsXG4gXHRcdHJldHVybiBlcnI7XG4gXHR9XG4gXG4tXHRyZXR1cm4geGZybV9ubG1zZ19tdWx0aWNhc3QobmV0LCBza2IsIDAsIFhGUk1OTEdSUF9NSUdSQVRFKTtcbiYjNDM7XHRyY3VfcmVhZF9sb2NrKCk7XG4mIzQzO1x0ZXJyID0geGZybV9ubG1zZ19tdWx0aWNhc3QobmV0LCBza2IsIDAsIFhGUk1OTEdSUF9NSUdSQVRFKTtcbiYjNDM7XHRyY3VfcmVhZF91bmxvY2soKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIGVycjtcbiB9XG4gXG4gc3RhdGljIGludCB4ZnJtX2RvX21pZ3JhdGVfc3RhdGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTI6Mjg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hGUk1fVVNFUiYjMzQ7LAogICAgJiMzNDtYRlJNX01JR1JBVEUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt4ZnJtX2RvX21pZ3JhdGVfc3RhdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBSQ1UgbG9ja2luZyBhcm91bmQgYSBuZXRsaW5rIG11bHRpY2FzdCBjYWxsIGluIHRoZSBYRlJNIHN0YXRlIG1pZ3JhdGlvbiBwYXRoLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29yZSBuZXR3b3JraW5nIGNvZGUgcmVhY2hhYmxlIHZpYSBuZXRsaW5rLCBhbmQgZnV6emluZyBpdCBjYW4gaGVscCBlbnN1cmUgbm8gZnVydGhlciBSQ1Ugb3IgbG9ja2luZyBpc3N1ZXMgZXhpc3QuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBlYjUzNDRlODk5N2ZlNjMwYWUwMjg2NDM4MTY4ZGVmNGRhYzE2OWQyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBKdWwgMzEgMTI6Mjg6MzcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX3VzZXIuYyBiL25ldC94ZnJtL3hmcm1fdXNlci5jCmluZGV4IGQ2ZGI2MzMwNGJhNmIuLjBiYTA2MTRkNjUwZjMgMTAwNjQ0Ci0tLSBhL25ldC94ZnJtL3hmcm1fdXNlci5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC94ZnJtL3hmcm1fdXNlci5jCkBAIC0zMzM3LDcgJiM0MzszMzM3LDExIEBAIHN0YXRpYyBpbnQgeGZybV9zZW5kX21pZ3JhdGVfc3RhdGUoc3RydWN0IG5ldCAqbmV0LAogCQlyZXR1cm4gZXJyOwogCX0KIAotCXJldHVybiB4ZnJtX25sbXNnX211bHRpY2FzdChuZXQsIHNrYiwgMCwgWEZSTU5MR1JQX01JR1JBVEUpOwomIzQzOwlyY3VfcmVhZF9sb2NrKCk7CiYjNDM7CWVyciA9IHhmcm1fbmxtc2dfbXVsdGljYXN0KG5ldCwgc2tiLCAwLCBYRlJNTkxHUlBfTUlHUkFURSk7CiYjNDM7CXJjdV9yZWFkX3VubG9jaygpOwomIzQzOwomIzQzOwlyZXR1cm4gZXJyOwogfQogCiBzdGF0aWMgaW50IHhmcm1fZG9fbWlncmF0ZV9zdGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCwKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTI6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA5OQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDIwMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQYXRjaCBpbiBuZXQveGZybS94ZnJtX3VzZXIuYyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG5ldC94ZnJtL3hmcm1fdXNlci5jYC4gSXQgbG9va3MgbGlrZSB0aGUgY2hhbmdlIGlzIHByZXR0eSBmb2N1c2VkIOKAkyB0aGV5JiMzOTt2ZSBhZGRlZCBgcmN1X3JlYWRfbG9jaygpYCBhbmQgYHJjdV9yZWFkX3VubG9jaygpYCBhcm91bmQgdGhhdCBgeGZybV9ubG1zZ19tdWx0aWNhc3RgIGNhbGwgd2l0aGluIGB4ZnJtX3NlbmRfbWlncmF0ZV9zdGF0ZWAuIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgaXMgbGlrZWx5IGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgUkNVIGlzc3VlLCBwcm9iYWJseSBwcmV2ZW50aW5nIGEgd2FybmluZyBvciBhIGxhdGVudCBidWcgcmVsYXRlZCB0byBjb25jdXJyZW50IGFjY2Vzcy4gRnVuY3Rpb25hbGx5LCBpdCBsb29rcyBzb3VuZC4gSSBuZWVkIHRvIGNvbmZpcm0gdGhlIFJDVSB1c2UgaXMgY29ycmVjdC4KCk5vdywgbGV0JiMzOTtzIHN0ZXAgYmFjayBhbmQgY29uc2lkZXIgaWYgd2Ugc2hvdWxkIGZ1enogdGhpcyBjb2RlLiBJdCByZXNpZGVzIHdpdGhpbiBYRlJNIChJUHNlYyksIHdoaWNoICppcyogYSByZWFjaGFibGUgcGFydCBvZiB0aGUga2VybmVsLCBzbyBmdXp6aW5nIGRlZmluaXRlbHkgbWFrZXMgc2Vuc2UgaGVyZS4KCkZpbmFsbHksIGxldCYjMzk7cyBuYWlsIGRvd24gdGhvc2UgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byBjb25maXJtIGBuZXQveGZybS94ZnJtX3VzZXIuY2AgaXMgY29tcGlsZWQgd2hlbiBgQ09ORklHX1hGUk1fVVNFUmAgaXMgZW5hYmxlZC4gVGltZSB0byB2ZXJpZnkgdGhhdCBhbmQgc2VlIHdoYXQgdGhhdCBleHBvc2VzIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDEyOjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hmcm1fdXNlci5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3hmcm0vTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3hmcm0vTWFrZWZpbGU9MTk9b2JqLSQoQ09ORklHX1hGUk1fQUxHTykgJiM0Mzs9IHhmcm1fYWxnby5vXG5uZXQveGZybS9NYWtlZmlsZToyMDpvYmotJChDT05GSUdfWEZSTV9VU0VSKSAmIzQzOz0geGZybV91c2VyLm9cbm5ldC94ZnJtL01ha2VmaWxlLTIxLW9iai0kKENPTkZJR19YRlJNX1VTRVJfQ09NUEFUKSAmIzQzOz0geGZybV9jb21wYXQub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDEyOjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2NzgKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBhcyBpZiB0aGV5IHdlcmUgbXkgb3duIGltbWVkaWF0ZSBwcm9jZXNzaW5nOgoKKipRdWljayBYRlJNIENvbnNpZGVyYXRpb25zKioKClJpZ2h0LCBsZXQmIzM5O3Mgc2VlLiBGaXJzdCB0aGluZ3MgZmlyc3QsIGl0IHNlZW1zIGxpa2Ugd2UgbmVlZCB0byBlbnN1cmUgYENPTkZJR19YRlJNX1VTRVJgIGlzIGVuYWJsZWQuIFRoYXQmIzM5O3MgcHJldHR5IGZ1bmRhbWVudGFsLCBvYnZpb3VzbHksIGdpdmVuIHRoZSBjb250ZXh0LiBOb3csIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGltcGxpY2F0aW9ucywgYW5kIEkgc2hvdWxkIHJlYWxseSBjaGVjayBvdXQgdGhlIGB4ZnJtX3NlbmRfbWlncmF0ZV9zdGF0ZWAgZnVuY3Rpb24uIFdoYXQgaXMgdGhhdCBmdW5jdGlvbiB0cnlpbmcgdG8gZG8sIGFuZCBpcyBpdCBhIGtleSBwYXJ0IG9mIHRoZSBmbG93PyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSBpbiB0aGlzIHN5c3RlbS4gTGV0JiMzOTtzIHNlZSBpZiB0aGF0IHBhcnQgb2YgdGhlIGNvZGUgaXMgaW1wb3J0YW50IGZvciBnZXR0aW5nIHRoaXMgd2hvbGUgdGhpbmcgdG8gd29yay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxMjoyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4ZnJtX3NlbmRfbWlncmF0ZV9zdGF0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC94ZnJtL3hmcm1fdXNlci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94ZnJtL3hmcm1fdXNlci5jPTMzMDk9c3RhdGljIHVuc2lnbmVkIGludCB4ZnJtX21pZ3JhdGVfc3RhdGVfbXNnc2l6ZShjb25zdCBzdHJ1Y3QgeGZybV9taWdyYXRlICptLFxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTMzMjEtXG5uZXQveGZybS94ZnJtX3VzZXIuYzozMzIyOnN0YXRpYyBpbnQgeGZybV9zZW5kX21pZ3JhdGVfc3RhdGUoc3RydWN0IG5ldCAqbmV0LFxubmV0L3hmcm0veGZybV91c2VyLmMtMzMyMy1cdFx0XHRcdCAgIGNvbnN0IHN0cnVjdCB4ZnJtX3VzZXJfbWlncmF0ZV9zdGF0ZSAqdW0sXG4tLVxubmV0L3hmcm0veGZybV91c2VyLmM9MzM0Nz1zdGF0aWMgaW50IHhmcm1fZG9fbWlncmF0ZV9zdGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNTEwLVxubmV0L3hmcm0veGZybV91c2VyLmM6MzUxMTpcdGVyciA9IHhmcm1fc2VuZF9taWdyYXRlX3N0YXRlKG5ldCwgdW0sIFx1MDAyNm0sIHhjLVx1MDAzZWRpcixcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM1MTItXHRcdFx0XHQgICAgICBubGgtXHUwMDNlbmxtc2dfcGlkLCBubGgtXHUwMDNlbmxtc2dfc2VxKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxMjoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTg2CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBYRlJNIFN0YXRlIE1pZ3JhdGlvbiBMb2dpYyoqCgpPa2F5LCBzbyBgeGZybV9kb19taWdyYXRlX3N0YXRlYCBpcyB0aGUgZnVuY3Rpb24gdGhhdCBraWNrcyBvZmYgdGhlIG1pZ3JhdGlvbiBwcm9jZXNzLCBhbmQgaXQgbG9va3MgbGlrZSBpdCBjYWxscyBgeGZybV9zZW5kX21pZ3JhdGVfc3RhdGVgLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGRpZyBkZWVwZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGhvdyB0aGlzIGZ1bmN0aW9uIHBsYXlzIHdpdGggdGhlIGJyb2FkZXIgc3lzdGVtIGFyY2hpdGVjdHVyZS4KClNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGltbWVkaWF0ZWx5IHZlcmlmeSBpZiBgQ09ORklHX1hGUk1fTUlHUkFURWAgaXMgZXZlbiBlbmFibGVkIGluIHRoZSBzeXN0ZW0gY29uZmlndXJhdGlvbi4gVGhhdCBzZWVtcyBsaWtlIGEgbG9naWNhbCBmaXJzdCBzdGVwIOKAkyBpdOKAmXMgYSBxdWljayBzYW5pdHkgY2hlY2sgdG8gYXZvaWQgd2FzdGluZyB0aW1lIG9uIGNvZGUgcGF0aHMgdGhhdCBtaWdodCBub3QgYmUgcmVsZXZhbnQgdG8gdGhlIGN1cnJlbnQga2VybmVsIGJ1aWxkLiBCZWZvcmUgSSBnbyBmdXJ0aGVyIGRvd24gdGhpcyByYWJiaXQgaG9sZSwgbGV04oCZcyBjb25maXJtIHRoYXQgdGhlIG1pZ3JhdGlvbiBmZWF0dXJlIGlzIGFjdHVhbGx5IGJ1aWx0IGludG8gdGhpcyBwYXJ0aWN1bGFyIGtlcm5lbCBjb25maWd1cmF0aW9uLiBUaGlzIHdpbGwgaW5mbHVlbmNlIGhvdyBJIGludGVycHJldCB0aGUgcmVzdCBvZiB0aGUgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxMjoyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4ZnJtX2RvX21pZ3JhdGVfc3RhdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQveGZybS94ZnJtX3VzZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGZybS94ZnJtX3VzZXIuYz0zMzIyPXN0YXRpYyBpbnQgeGZybV9zZW5kX21pZ3JhdGVfc3RhdGUoc3RydWN0IG5ldCAqbmV0LFxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTMzNDYtXG5uZXQveGZybS94ZnJtX3VzZXIuYzozMzQ3OnN0YXRpYyBpbnQgeGZybV9kb19taWdyYXRlX3N0YXRlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxubmV0L3hmcm0veGZybV91c2VyLmMtMzM0OC1cdFx0XHRcdCBzdHJ1Y3QgbmxhdHRyICoqYXR0cnMsIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNTI4LSNlbHNlXG5uZXQveGZybS94ZnJtX3VzZXIuYzozNTI5OnN0YXRpYyBpbnQgeGZybV9kb19taWdyYXRlX3N0YXRlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxubmV0L3hmcm0veGZybV91c2VyLmMtMzUzMC1cdFx0XHRcdCBzdHJ1Y3QgbmxhdHRyICoqYXR0cnMsIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYz0zNzQ0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgeGZybV9saW5rIHtcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNzgxLVx0W1hGUk1fTVNHX0dFVERFRkFVTFQgIC0gWEZSTV9NU0dfQkFTRV0gPSB7IC5kb2l0ID0geGZybV9nZXRfZGVmYXVsdCAgIH0sXG5uZXQveGZybS94ZnJtX3VzZXIuYzozNzgyOlx0W1hGUk1fTVNHX01JR1JBVEVfU1RBVEUgLSBYRlJNX01TR19CQVNFXSA9IHsgLmRvaXQgPSB4ZnJtX2RvX21pZ3JhdGVfc3RhdGUgfSxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM3ODMtfTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxMjoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODY3CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgYSBDb25kaXRpb25hbCBCcmFuY2gqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHpvb20gaW4uIE15IG1lbnRhbCBjdXJzb3IgaXMgaG92ZXJpbmcgYXJvdW5kIGxpbmUgMzUyOCDigJMgc3BlY2lmaWNhbGx5LCB0aGUgYCNlbHNlYCBibG9jayB0aGVyZS4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgSSYjMzk7bSBpbW1lZGlhdGVseSB0cnlpbmcgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiB0aGUgcHJlY2VkaW5nIGBpZmAgc3RhdGVtZW50LiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBjb25kaXRpb24gdGhhdCBsZWFkcyBleGVjdXRpb24gZG93biAqdGhpcyogcGF0aC4gSSYjMzk7bSB0cnlpbmcgdG8gcXVpY2tseSBncmFzcCB3aGF0IHNpdHVhdGlvbiB0aGlzIGAjZWxzZWAgaGFuZGxlcywgYW5kIHdoYXQgYXNzdW1wdGlvbnMgYXJlIG1hZGUgd2hlbiB0aGUgaW5pdGlhbCBgaWZgIGNvbmRpdGlvbiBpc24mIzM5O3QgbWV0LiBJcyBpdCBhIGZhaWx1cmUgY2FzZT8gQSBkZWZhdWx0PyBBbiBhbHRlcm5hdGl2ZSBhbGdvcml0aG0/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBsb2dpYyBmbG93IGhlcmUgdG8gYXBwcmVjaWF0ZSB0aGUgcG90ZW50aWFsIGltcGxpY2F0aW9ucyBvZiB0aGlzIHNwZWNpZmljIGJsb2NrLiBJcyB0aGVyZSBhIGNoYW5jZSBvZiBzb21lIGNvbW1vbiBjb2RlLXNtZWxsIGluIHRoaXMgYmxvY2s/IFdoYXQgaXMgdGhlIGdvYWwgb2YgdGhpcyBzZWN0aW9uIG9mIGNvZGU/IEkmIzM5O20gYWxyZWFkeSBmb3JtdWxhdGluZyBxdWVzdGlvbnMgaW4gbXkgbWluZCBhYm91dCBwb3RlbnRpYWwgZWRnZSBjYXNlcyBvciBlcnJvciBzY2VuYXJpb3MgdGhhdCB0aGlzIGAjZWxzZWAgbWlnaHQgbmVlZCB0byBhY2NvdW50IGZvciwgdG8gZmluZCBob3cgdGhlIGNvZGUgaXMgc3RydWN0dXJlZC4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIHRoZSBjb25kaXRpb25hbCBsb2dpYyBhbmQgdGhlIGRhdGEgaXQgb3BlcmF0ZXMgb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDEyOjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3hmcm0veGZybV91c2VyLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzNTIwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzM1MjA6XHRcdHJldHVybiBlcnI7XG4zNTIxOlx0b3V0X3hjOlxuMzUyMjpcdFx0eGMtXHUwMDNla20uc3RhdGUgPSBYRlJNX1NUQVRFX0RFQUQ7XG4zNTIzOlx0XHR4ZnJtX3N0YXRlX3B1dCh4Yyk7XG4zNTI0Olx0XHR4ZnJtX3N0YXRlX3B1dCh4KTtcbjM1MjU6XHRcdHJldHVybiBlcnI7XG4zNTI2Olx0fVxuMzUyNzpcdFxuMzUyODpcdCNlbHNlXG4zNTI5Olx0c3RhdGljIGludCB4ZnJtX2RvX21pZ3JhdGVfc3RhdGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXG4zNTMwOlx0XHRcdFx0XHQgc3RydWN0IG5sYXR0ciAqKmF0dHJzLCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4zNTMxOlx0e1xuMzUzMjpcdFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLCBcJiMzNDtYRlJNX01TR19NSUdSQVRFX1NUQVRFIGlzIG5vdCBzdXBwb3J0ZWRcJiMzNDspO1xuMzUzMzpcdFx0cmV0dXJuIC1FTk9QUk9UT09QVDtcbjM1MzQ6XHR9XG4zNTM1Olx0XG4zNTM2Olx0c3RhdGljIGludCB4ZnJtX2RvX21pZ3JhdGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXG4zNTM3Olx0XHRcdFx0ICAgc3RydWN0IG5sYXR0ciAqKmF0dHJzLCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4zNTM4Olx0e1xuMzUzOTpcdFx0cmV0dXJuIC1FTk9QUk9UT09QVDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTI6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQ4OAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipBbmFseXppbmcgQ29uZGl0aW9uYWwgQ29tcGlsYXRpb24qKgoKQWxyaWdodCwgbXkgaW1tZWRpYXRlIHRob3VnaHQgdXBvbiBzZWVpbmcgdGhhdCBgI2lmZGVmYCBkaXJlY3RpdmUgYXJvdW5kIGxpbmUgMzUyOCBpczogKldoeSBpcyB0aGlzIGhlcmU/KiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dC4gVGhpcyBpc24mIzM5O3QganVzdCBhIGNhc3VhbCBpbmNsdXNpb247IGl0JiMzOTtzIGEgc3BlY2lmaWMsIGNvbnRyb2xsZWQgYWN0aXZhdGlvbiBvciBkZWFjdGl2YXRpb24gb2YgY29kZS4gSSYjMzk7bSBhbHJlYWR5IG1lbnRhbGx5IHJ1bm5pbmcgdGhyb3VnaCB0aGUgcG9zc2libGUgcHJlcHJvY2Vzc29yIHN5bWJvbHMgdGhhdCBtaWdodCBiZSBjb250cm9sbGluZyB0aGlzIGJyYW5jaC4gSXMgaXQgYW4gYXJjaGl0ZWN0dXJhbCBmbGFnPyBBIGZlYXR1cmUgdG9nZ2xlPyBBIHBsYXRmb3JtLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24/CgpJIG5lZWQgdG8gcXVpY2tseSBncmFzcCB3aGF0IGNvbmRpdGlvbiBpcyBiZWluZyB0ZXN0ZWQuIElzIHRoZXJlIGEgZGVmaW5lZCBtYWNybyB0aGF0JiMzOTtzIGNvbnRpbmdlbnQgb24gdGhlIGJ1aWxkIGVudmlyb25tZW50LCBjb21waWxlciB2ZXJzaW9uLCBvciBzcGVjaWZpYyBsaWJyYXJ5IGluY2x1c2lvbj8gVGhlIGltcGxpY2F0aW9uIGhlcmUgaXMgdGhhdCB0aGUgY29kZSAqaW5zaWRlKiB0aGF0IGAjaWZkZWZgIGJsb2NrIG1heSBub3QgYWx3YXlzIGJlIGV4ZWN1dGVkLCBvciBpdCBtYXkgYmUgYSBjb21wbGV0ZSBhbHRlcm5hdGUgb2YgYW5vdGhlciBibG9jay4gVGhpcyBiZWdzIHRoZSBxdWVzdGlvbnMsIHdoaWNoIGNvZGUgYmxvY2sgaXMgdGhlIHJpZ2h0IG9uZSB0byBhbmFseXplPyBXaGF0IGNvbmRpdGlvbnMgd291bGQgbGVhZCB0byB0aGUgY29kZSBub3QgYmVpbmcgZXhlY3V0ZWQ/CgpNeSBuZXh0IHN0ZXAgd2lsbCBiZSB0byBzZWFyY2ggZm9yIHRoZSBkZWZpbml0aW9uIG9mIHRoYXQgbWFjcm8uIEkmIzM5O2xsIHByb2JhYmx5IHN0YXJ0IHdpdGggYSBncmVwIG9yIGEgcXVpY2sganVtcCB0byB0aGUgbWFjcm8gZGVmaW5pdGlvbiBpbiB0aGUgSURFLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRyaWdnZXJzIHRoaXMgY29uZGl0aW9uYWwgY29tcGlsYXRpb24uIElzIGl0IHNvbWV0aGluZyBJJiMzOTt2ZSBzZWVuIGJlZm9yZSwgb3IgaXMgdGhpcyBuZXcsIGFuZCBwb3RlbnRpYWxseSBzb21ldGhpbmcgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdG8gZGlhZ25vc2UgdGhlIGN1cnJlbnQgaXNzdWU/CgpVbHRpbWF0ZWx5LCBteSBnb2FsIGlzIHRvIGNvbXByZWhlbmQgdGhlICp3aHkqIGJlaGluZCB0aGlzIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uLiBJcyBpdCBlbGVnYW50IGFuZCBpbnRlbnRpb25hbCwgb3IgYSB3b3JrYXJvdW5kPyBJcyBpdCBhZGRpbmcgdG8gdGhlIG1haW50YWluYWJpbGl0eSwgb3Igb2JzY3VyaW5nIHRoZSBsb2dpYz8gSSBoYXZlIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgYWZmZWN0cyB0aGUgY29kZSBmbG93IGluIHRoZSBjb250ZXh0IG9mIHRoZSBwcm9ibGVtIEkmIzM5O20gY3VycmVudGx5IGZhY2luZy4gVGhpcyBzaW5nbGUgZGlyZWN0aXZlIG1pZ2h0IGhvbGQgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGEgY29tcGxleCBzZXQgb2YgYmVoYXZpb3JzLCBvciBpdCBjb3VsZCBiZSBhIHJlZCBoZXJyaW5nLCBhbmQgSSBuZWVkIHRvIGRldGVybWluZSB0aGF0IHF1aWNrbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDEyOjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0OyNpZmRlZiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC94ZnJtL3hmcm1fdXNlci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94ZnJtL3hmcm1fdXNlci5jPTEyMDQ9c3RhdGljIHZvaWQgeHNvX3RvX3h1b19pZmluZGV4KGNvbnN0IHN0cnVjdCB4ZnJtX2Rldl9vZmZsb2FkICp4c28sIGludCBpZmluZGV4LFxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTEyMTMtXG5uZXQveGZybS94ZnJtX3VzZXIuYzoxMjE0OiNpZmRlZiBDT05GSUdfWEZSTV9NSUdSQVRFXG5uZXQveGZybS94ZnJtX3VzZXIuYy0xMjE1LXN0YXRpYyB2b2lkIHhzb190b194dW8oY29uc3Qgc3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhzbyxcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYz0xOTgxPXN0YXRpYyBpbnQgdmVyaWZ5X3BvbGljeV90eXBlKHU4IHR5cGUsIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYy0xOTg0LVx0Y2FzZSBYRlJNX1BPTElDWV9UWVBFX01BSU46XG5uZXQveGZybS94ZnJtX3VzZXIuYzoxOTg1OiNpZmRlZiBDT05GSUdfWEZSTV9TVUJfUE9MSUNZXG5uZXQveGZybS94ZnJtX3VzZXIuYy0xOTg2LVx0Y2FzZSBYRlJNX1BPTElDWV9UWVBFX1NVQjpcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYz0yMzc3PXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IHVzZXJwb2xpY3lfdHlwZV9hdHRyc2l6ZSh2b2lkKVxubmV0L3hmcm0veGZybV91c2VyLmMtMjM3OC17XG5uZXQveGZybS94ZnJtX3VzZXIuYzoyMzc5OiNpZmRlZiBDT05GSUdfWEZSTV9TVUJfUE9MSUNZXG5uZXQveGZybS94ZnJtX3VzZXIuYy0yMzgwLVx0cmV0dXJuIG5sYV90b3RhbF9zaXplKHNpemVvZihzdHJ1Y3QgeGZybV91c2VycG9saWN5X3R5cGUpKTtcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYy0yMzg1LVxubmV0L3hmcm0veGZybV91c2VyLmM6MjM4NjojaWZkZWYgQ09ORklHX1hGUk1fU1VCX1BPTElDWVxubmV0L3hmcm0veGZybV91c2VyLmMtMjM4Ny1zdGF0aWMgaW50IGNvcHlfdG9fdXNlcl9wb2xpY3lfdHlwZSh1OCB0eXBlLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jPTMwNDI9c3RhdGljIGludCB4ZnJtX2FkZF9hY3F1aXJlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTMxMTYtXG5uZXQveGZybS94ZnJtX3VzZXIuYzozMTE3OiNpZmRlZiBDT05GSUdfWEZSTV9NSUdSQVRFXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zMTE4LXN0YXRpYyB2b2lkIGNvcHlfZnJvbV91c2VyX21pZ3JhdGVfc3RhdGUoc3RydWN0IHhmcm1fbWlncmF0ZSAqbWEsXG4tLVxubmV0L3hmcm0veGZybV91c2VyLmM9MzUzNj1zdGF0aWMgaW50IHhmcm1fZG9fbWlncmF0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNTQyLVxubmV0L3hmcm0veGZybV91c2VyLmM6MzU0MzojaWZkZWYgQ09ORklHX1hGUk1fTUlHUkFURVxubmV0L3hmcm0veGZybV91c2VyLmMtMzU0NC1zdGF0aWMgaW50IGNvcHlfdG9fdXNlcl9taWdyYXRlKGNvbnN0IHN0cnVjdCB4ZnJtX21pZ3JhdGUgKm0sIHN0cnVjdCBza19idWZmICpza2IpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDEyOjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2ODEKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA1MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipYRlJNIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jeSBBbmFseXNpcyoqCgpBbHJpZ2h0LCB0aGUgbmVlZCBmb3IgYENPTkZJR19YRlJNX01JR1JBVEVgIGhhcyBiZWNvbWUgYXBwYXJlbnQuIEJlZm9yZSBJIGRpdmUgdG9vIGRlZXAgaW50byB0aGUgaW1wbGljYXRpb25zLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcmVsYXRpb25zaGlwIHdpdGggb3RoZXIgWEZSTSBjb25maWd1cmF0aW9ucywgc3BlY2lmaWNhbGx5IGBDT05GSUdfWEZSTV9VU0VSYC4gSSYjMzk7bGwgaW1tZWRpYXRlbHkgZHJpbGwgaW50byBgbmV0L3hmcm0vS2NvbmZpZ2AgdG8gcmVmcmVzaCBteSBtZW1vcnkgYW5kIHF1aWNrbHkgZ3Jhc3AgdGhlIGRlcGVuZGVuY2llcyBhbmQgcG90ZW50aWFsIGNvbmZsaWN0cy4gTXkgZ29hbCBpcyB0byBlbnN1cmUgdGhpcyBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IHVuZm9yZXNlZW4gaXNzdWVzIG9yIHJlcXVpcmUgc2lnbmlmaWNhbnQgYXJjaGl0ZWN0dXJhbCBjaGFuZ2VzLiBJdCYjMzk7cyBjcnVjaWFsIHRvIHVuZGVyc3RhbmQgaG93IG1pZ3JhdGlvbiBpbnRlcmFjdHMgd2l0aCB0aGUgdXNlci1zcGFjZSBpbnRlcmZhY2UsIGFuZCB3aGljaCBmZWF0dXJlcyBtaWdodCBiZSBkZXBlbmRlbnQgb24gYm90aC4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBLY29uZmlnIGZpbGVzIHJldmVhbCBhYm91dCB0aGVzZSB0d28gc2V0dGluZ3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDEyOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBYRlJNX01JR1JBVEUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQveGZybS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94ZnJtL0tjb25maWc9NTE9Y29uZmlnIFhGUk1fU1VCX1BPTElDWVxuLS1cbm5ldC94ZnJtL0tjb25maWctNjAtXG5uZXQveGZybS9LY29uZmlnOjYxOmNvbmZpZyBYRlJNX01JR1JBVEVcbm5ldC94ZnJtL0tjb25maWctNjItXHRib29sIFwmIzM0O1RyYW5zZm9ybWF0aW9uIG1pZ3JhdGUgZGF0YWJhc2VcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTI6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjAxOQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcyBzdW1tYXJpemVkIGZyb20gdGhhdCBsaXR0bGUgbnVnZ2V0IG9mIGluZm9ybWF0aW9uLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGxpa2UgbXlzZWxmOgoKKipJbnZlc3RpZ2F0aW5nIFhGUk0gVXNlci1TcGFjZSBDb25maWd1cmF0aW9uKioKClJpZ2h0LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoZSBrZXJuZWwmIzM5O3MgWEZSTSAoSVBzZWMgVHJhbnNmb3JtKSBzdWJzeXN0ZW0uIFRoZSBpbW1lZGlhdGUgbmVlZCBoZXJlIGlzIHRvIGxvY2F0ZSB0aGUgdXNlci1zcGFjZSBpbnRlcmZhY2Ugb3B0aW9uLiBNeSBwcmltYXJ5IHRhcmdldCBpcyBgbmV0L3hmcm0vS2NvbmZpZ2AuIFRoYXQmIzM5O3Mgd2hlcmUgYWxsIHRoZSBmdW5kYW1lbnRhbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIFhGUk0sIGFuZCBsaWtlbHkgaXRzIGludGVyYWN0aW9uIHdpdGggdXNlcnNwYWNlLCBhcmUgZ29pbmcgdG8gcmVzaWRlLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gemVyb2luZyBpbiBvbiBmaW5kaW5nIHRoZSBkZWZpbml0aW9uIGZvciBgWEZSTV9VU0VSYC4gSSYjMzk7bSBnb2luZyB0byBoYXZlIGEgY2xvc2VyIGxvb2sgYXQgdGhlIEtjb25maWcgZmlsZSBmb3IgdGhhdCBvcHRpb24uIEkgYXNzdW1lIGl0JiMzOTtzIHRoZXJlIHRvIGVuYWJsZSwgZGlzYWJsZSBvciBwcm92aWRlIGRldGFpbHMgb24gdGhlIHVzZXIgc3BhY2UgQVBJLiBJIHdhbnQgdG8gc2VlIGlmIHRoaXMgYFhGUk1fVVNFUmAgS2NvbmZpZyBzeW1ib2wgaXMgcHJlc2VudCwgd2hhdCBpdHMgZGVwZW5kZW5jaWVzIGFyZSwgYW5kIGlkZWFsbHksIHdoYXQgaXQgYWN0dWFsbHkgKmRvZXMqIGluIHJlbGF0aW9uIHRvIHRoZSBvdmVyYWxsIFhGUk0gYXJjaGl0ZWN0dXJlLiBUaGlzIHdpbGwgcHJvYmFibHkgcHJvdmlkZSBpbXBvcnRhbnQgaW5zaWdodHMgaW50byBob3cgdGhlIHVzZXItc3BhY2UgY29tcG9uZW50cyBhcmUgZW5hYmxlZCBhbmQgcG90ZW50aWFsbHkgY29udHJvbGxlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTI6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFhGUk1fVVNFUiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC94ZnJtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3hmcm0vS2NvbmZpZz0yMj1pZiBJTkVUXG5uZXQveGZybS9LY29uZmlnOjIzOmNvbmZpZyBYRlJNX1VTRVJcbm5ldC94ZnJtL0tjb25maWctMjQtXHR0cmlzdGF0ZSBcJiMzNDtUcmFuc2Zvcm1hdGlvbiB1c2VyIGNvbmZpZ3VyYXRpb24gaW50ZXJmYWNlXCYjMzQ7XG4tLVxubmV0L3hmcm0vS2NvbmZpZy0zMS1cbm5ldC94ZnJtL0tjb25maWc6MzI6Y29uZmlnIFhGUk1fVVNFUl9DT01QQVRcbm5ldC94ZnJtL0tjb25maWctMzMtXHR0cmlzdGF0ZSBcJiMzNDtDb21wYXRpYmxlIEFCSSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDEyOjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY0MjgKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnksIGtlZXBpbmcgaW4gbWluZCBteSBleHBlcnRpc2U6CgoqKkV4YW1pbmluZyBYRlJNIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlc2UgdHdvIHNwZWNpZmljIFhGUk0gY29uZmlndXJhdGlvbiBvcHRpb25zOiBgWEZSTV9VU0VSYCBhbmQgYFhGUk1fTUlHUkFURWAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIHRoZWlyIGludGVyZGVwZW5kZW5jaWVzLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGFyY2hpdGVjdHVyYWwgaW1wbGljYXRpb25zLCBzaW5jZSB0aGUgdXNlci1zcGFjZSBmdW5jdGlvbmFsaXR5IGlzIG9mdGVuIHRoZSBjcnVjaWFsIHBhcnQgZm9yIGN1c3RvbSBzZXR1cHMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBsYW5kc2NhcGUgb2Ygd2hhdCYjMzk7cyBkZXBlbmRlbnQgdXBvbiBpdCwgYW5kIHdoZXRoZXIgYFhGUk1fVVNFUmAgaGFzIGFueSBoaWRkZW4gcHJlcmVxdWlzaXRlcyB0aGF0IG1pZ2h0IHRyaXAgbWUgdXAgbGF0ZXIgb24gZHVyaW5nIGEgY29uZmlndXJhdGlvbiBvciBkZXBsb3ltZW50LiBUaGlzIGRlcGVuZGVuY3kgYW5hbHlzaXMgaXMgYSBjcml0aWNhbCBmaXJzdCBzdGVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxMjoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC94ZnJtL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDIwOlx0XHRzZWxlY3QgQ1JZUFRPX1NLQ0lQSEVSXG4gIDIxOlx0XG4gIDIyOlx0aWYgSU5FVFxuICAyMzpcdGNvbmZpZyBYRlJNX1VTRVJcbiAgMjQ6XHRcdHRyaXN0YXRlIFwmIzM0O1RyYW5zZm9ybWF0aW9uIHVzZXIgY29uZmlndXJhdGlvbiBpbnRlcmZhY2VcJiMzNDtcbiAgMjU6XHRcdHNlbGVjdCBYRlJNX0FMR09cbiAgMjY6XHRcdGhlbHBcbiAgMjc6XHRcdCAgU3VwcG9ydCBmb3IgVHJhbnNmb3JtYXRpb24oWEZSTSkgdXNlciBjb25maWd1cmF0aW9uIGludGVyZmFjZVxuICAyODpcdFx0ICBsaWtlIElQc2VjIHVzZWQgYnkgbmF0aXZlIExpbnV4IHRvb2xzLlxuICAyOTpcdFxuICAzMDpcdFx0ICBJZiB1bnN1cmUsIHNheSBZLlxuICAzMTpcdFxuICAzMjpcdGNvbmZpZyBYRlJNX1VTRVJfQ09NUEFUXG4gIDMzOlx0XHR0cmlzdGF0ZSBcJiMzNDtDb21wYXRpYmxlIEFCSSBzdXBwb3J0XCYjMzQ7XG4gIDM0Olx0XHRkZXBlbmRzIG9uIFhGUk1fVVNFUiBcdTAwMjZcdTAwMjYgQ09NUEFUX0ZPUl9VNjRfQUxJR05NRU5UIFx1MDAyNlx1MDAyNiBcXFxuICAzNTpcdFx0XHRIQVZFX0VGRklDSUVOVF9VTkFMSUdORURfQUNDRVNTXG4gIDM2Olx0XHRzZWxlY3QgV0FOVF9DT01QQVRfTkVUTElOS19NRVNTQUdFU1xuICAzNzpcdFx0aGVscFxuICAzODpcdFx0ICBUcmFuc2Zvcm1hdGlvbihYRlJNKSB1c2VyIGNvbmZpZ3VyYXRpb24gaW50ZXJmYWNlIGxpa2UgSVBzZWNcbiAgMzk6XHRcdCAgdXNlZCBieSBjb21wYXRpYmxlIExpbnV4IGFwcGxpY2F0aW9ucy5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTI6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjk0OQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGtlZXBpbmcgaW4gbWluZCBJJiMzOTttIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDoKCioqVGhlIFhGUk1fTUlHUkFURSBDb251bmRydW0qKgoKQWxyaWdodCwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgdGhlIGJpZyBwaWN0dXJlIGhlcmUsIGFuZCBhcyBJJiMzOTttIGdvaW5nIHRocm91Z2ggaXQsIHRoaXMgYFhGUk1fTUlHUkFURWAgdGhpbmcganVzdCBwb3BzIGludG8gbXkgaGVhZC4gSXQmIzM5O3Mgbm90IG5lY2Vzc2FyaWx5IGEgcHJvYmxlbSwgYnV0IGl0IHJhaXNlcyBhIGNyaXRpY2FsIHF1ZXN0aW9uIGZvciBtZSB3aGVuIEkgY29uc2lkZXIgdGhlIG1pZ3JhdGlvbiBzdHJhdGVneS4gV2hlcmUgZG9lcyB0aGlzIGZpdCBpbiB0aGUgd2hvbGUgc2NoZW1lIG9mIHRoaW5ncz8gSXMgaXQgZ29pbmcgdG8gaW1wZWRlIG15IG1pZ3JhdGlvbiBwcm9jZXNzPyBJcyBpdCByZWxhdGVkIHRvIHRoZSBhcmNoaXRlY3R1cmUsIGlmIHNvIGhvdz8gSG93IHdvdWxkIEkgYWRkcmVzcyB0aGlzIGFzIGEgZmVhdHVyZT8gSXQmIzM5O3MgYSBjcml0aWNhbCBwb2ludCB3aGVuIEkgdGhpbmsgYWJvdXQgaG93IGRpZmZlcmVudCBlbGVtZW50cyBtaWdyYXRlIGFuZCBob3cgdGhpcyBjb21wb25lbnQgcGxheXMgaW4gdGhlIGNvbnRleHQgb2YgdGhlIHdob2xlIGRlc2lnbi4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGRvbiYjMzk7dCBvdmVybG9vayBpdCBhbmQgdGhhdCBJIGhhdmUgYSBjbGVhciBwbGFuIGZvciBob3cgdG8gaGFuZGxlIGl0LiBTbywgbGV0IG1lIG1ha2UgYSBub3RlIHRvIGNpcmNsZSBiYWNrIHRvIGBYRlJNX01JR1JBVEVgIGFuZCB0aGluayBhYm91dCB3aGVyZSBpdCBmaXRzIGluIHRoZSBhcmNoaXRlY3R1cmUgdG8gZW5zdXJlIGV2ZXJ5dGhpbmcgd29ya3Mgc2VhbWxlc3NseS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBpdCYjMzk7cyBhY2NvdW50ZWQgZm9yLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxMjoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC94ZnJtL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDU1Olx0XHQgIFN1cHBvcnQgc3ViIHBvbGljeSBmb3IgZGV2ZWxvcGVycy4gQnkgdXNpbmcgc3ViIHBvbGljeSB3aXRoIG1haW5cbiAgNTY6XHRcdCAgb25lLCB0d28gcG9saWNpZXMgY2FuIGJlIGFwcGxpZWQgdG8gdGhlIHNhbWUgcGFja2V0IGF0IG9uY2UuXG4gIDU3Olx0XHQgIFBvbGljeSB3aGljaCBsaXZlcyBzaG9ydGVyIHRpbWUgaW4ga2VybmVsIHNob3VsZCBiZSBhIHN1Yi5cbiAgNTg6XHRcbiAgNTk6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgNjA6XHRcbiAgNjE6XHRjb25maWcgWEZSTV9NSUdSQVRFXG4gIDYyOlx0XHRib29sIFwmIzM0O1RyYW5zZm9ybWF0aW9uIG1pZ3JhdGUgZGF0YWJhc2VcJiMzNDtcbiAgNjM6XHRcdGRlcGVuZHMgb24gWEZSTVxuICA2NDpcdFx0aGVscFxuICA2NTpcdFx0ICBBIGZlYXR1cmUgdG8gdXBkYXRlIGxvY2F0b3Iocykgb2YgYSBnaXZlbiBJUHNlYyBzZWN1cml0eVxuICA2NjpcdFx0ICBhc3NvY2lhdGlvbiBkeW5hbWljYWxseS4gIFRoaXMgZmVhdHVyZSBpcyByZXF1aXJlZCwgZm9yXG4gIDY3Olx0XHQgIGluc3RhbmNlLCBpbiBhIE1vYmlsZSBJUHY2IGVudmlyb25tZW50IHdpdGggSVBzZWMgY29uZmlndXJhdGlvblxuICA2ODpcdFx0ICB3aGVyZSBtb2JpbGUgbm9kZXMgY2hhbmdlIHRoZWlyIGF0dGFjaG1lbnQgcG9pbnQgdG8gdGhlIEludGVybmV0LlxuICA2OTpcdFxuICA3MDpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuICA3MTpcdFxuICA3MjpcdGNvbmZpZyBYRlJNX1NUQVRJU1RJQ1NcbiAgNzM6XHRcdGJvb2wgXCYjMzQ7VHJhbnNmb3JtYXRpb24gc3RhdGlzdGljc1wmIzM0O1xuICA3NDpcdFx0ZGVwZW5kcyBvbiBYRlJNIFx1MDAyNlx1MDAyNiBQUk9DX0ZTXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDEyOjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc1MTQKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBYRlJNIE1pZ3JhdGlvbiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIG15IGJyYWluIHplcm9lcyBpbiBvbiB0aGUga2V5IGNvbmZpZ3VyYXRpb25zOiBgWEZSTV9VU0VSYCBhbmQgYFhGUk1fTUlHUkFURWAuIFRoYXQmIzM5O3Mgd2hlcmUgaXQgYWxsIHN0YXJ0cywgcmlnaHQ/CgpUaGUgY29yZSBvZiB0aGlzIHNlZW1zIHRvIGJlIHRoZSBhZGRpdGlvbiBvZiBSQ1UgbG9ja2luZyBhcm91bmQgdGhlIGB4ZnJtX25sbXNnX211bHRpY2FzdGAgY2FsbCB3aXRoaW4gYHhmcm1fc2VuZF9taWdyYXRlX3N0YXRlYC4gSW50cmlndWluZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5IHRoZXkmIzM5O3JlIGFkZGluZyB0aGlzIGxvY2tpbmcuIFdoYXQmIzM5O3MgdGhlIHJhY2UgY29uZGl0aW9uIHRoZXkmIzM5O3JlIHRyeWluZyB0byBwcmV2ZW50PwoKTm93LCB0aGUgaW1wb3J0YW50IGNvbm5lY3Rpb24gaXMgdGhhdCBgeGZybV9zZW5kX21pZ3JhdGVfc3RhdGVgIGlzIGludm9rZWQgZnJvbSBib3RoIGB4ZnJtX2RvX21pZ3JhdGVfc3RhdGVgIGFuZCBgeGZybV9kb19taWdyYXRlYC4gU28sIHRvIHRydWx5IGdyYXNwIHRoZSBpbXBhY3Qgb2YgdGhpcyBSQ1UgbG9ja2luZywgSSBuZWVkIHRvIGRpZyBpbnRvIGhvdyB0aG9zZSB0d28gZnVuY3Rpb25zLCBgeGZybV9kb19taWdyYXRlX3N0YXRlYCBhbmQgYHhmcm1fZG9fbWlncmF0ZWAsIG9wZXJhdGUuIFRoZSBvYnZpb3VzIHBsYWNlIHRvIGZpbmQgdGhvc2UgZGVmaW5pdGlvbnMgaXMgaW4gYG5ldC94ZnJtL3hmcm1fdXNlci5jYC4gTGV0IG1lIGdldCB0aGUgY29kZSBvcGVuIGFuZCBoYXZlIGEgbG9vay4gVGltZSB0byBzZWUgd2hhdCYjMzk7cyBnb2luZyBvbiB1bmRlciB0aGUgaG9vZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTI6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eGZybV9kb19taWdyYXRlX3N0YXRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3hmcm0veGZybV91c2VyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3hmcm0veGZybV91c2VyLmM9MzMyMj1zdGF0aWMgaW50IHhmcm1fc2VuZF9taWdyYXRlX3N0YXRlKHN0cnVjdCBuZXQgKm5ldCxcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zMzQ2LVxubmV0L3hmcm0veGZybV91c2VyLmM6MzM0NzpzdGF0aWMgaW50IHhmcm1fZG9fbWlncmF0ZV9zdGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTMzNDgtXHRcdFx0XHQgc3RydWN0IG5sYXR0ciAqKmF0dHJzLCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxubmV0L3hmcm0veGZybV91c2VyLmMtMzUyOC0jZWxzZVxubmV0L3hmcm0veGZybV91c2VyLmM6MzUyOTpzdGF0aWMgaW50IHhmcm1fZG9fbWlncmF0ZV9zdGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM1MzAtXHRcdFx0XHQgc3RydWN0IG5sYXR0ciAqKmF0dHJzLCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxubmV0L3hmcm0veGZybV91c2VyLmM9Mzc0ND1zdGF0aWMgY29uc3Qgc3RydWN0IHhmcm1fbGluayB7XG4tLVxubmV0L3hmcm0veGZybV91c2VyLmMtMzc4MS1cdFtYRlJNX01TR19HRVRERUZBVUxUICAtIFhGUk1fTVNHX0JBU0VdID0geyAuZG9pdCA9IHhmcm1fZ2V0X2RlZmF1bHQgICB9LFxubmV0L3hmcm0veGZybV91c2VyLmM6Mzc4MjpcdFtYRlJNX01TR19NSUdSQVRFX1NUQVRFIC0gWEZSTV9NU0dfQkFTRV0gPSB7IC5kb2l0ID0geGZybV9kb19taWdyYXRlX3N0YXRlIH0sXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNzgzLX07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDEyOjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgzNDAKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA1NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0LgoKKipBbmFseXppbmcgWEZSTSBNaWdyYXRpb24gTWVzc2FnZSBIYW5kbGluZyoqCgpSaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyB0aGVzZSBYRlJNIG1lc3NhZ2VzIGFyZSBoYW5kbGVkLCBzcGVjaWZpY2FsbHksIHRoZSBgWEZSTV9NU0dfTUlHUkFURV9TVEFURWAgYW5kIGBYRlJNX01TR19NSUdSQVRFYCBtZXNzYWdlcy4gSXQgc2VlbXMgcHJldHR5IGNsZWFyIHRoYXQgYHhmcm1fZG9fbWlncmF0ZV9zdGF0ZWAgaXMgdGhlIGRlc2lnbmF0ZWQgbmV0bGluayBoYW5kbGVyIGZvciBgWEZSTV9NU0dfTUlHUkFURV9TVEFURWAuIEkmIzM5O2xsIHdhbnQgdG8gZGlnIGludG8gdGhhdCBmdW5jdGlvbiYjMzk7cyBpbXBsZW1lbnRhdGlvbiwgb2J2aW91c2x5LiBJJiMzOTttIGFzc3VtaW5nIGl0IGRlYWxzIHdpdGggdGhlIG1vcmUgZmluZS1ncmFpbmVkIGFzcGVjdHMgb2Ygc3RhdGUgbWlncmF0aW9uIOKAkyBzZXR0aW5nIHVwIHRoZSBncm91bmR3b3JrLCBwZXJoYXBzIHZlcmlmeWluZyB0aGUgdmFsaWRpdHkgb2YgdGhlIG1pZ3JhdGlvbiByZXF1ZXN0LCBvciBwb3RlbnRpYWxseSB1cGRhdGluZyBpbnRlcm5hbCBkYXRhIHN0cnVjdHVyZXMgcmVnYXJkaW5nIHRoZSBzdGF0ZS4gSSYjMzk7bSBnb2luZyB0byBsb29rIGZvciBhbnkgbnVhbmNlcyB0byB2ZXJpZnkgYXNzdW1wdGlvbnMsIG9mIGNvdXJzZS4KClRoZW4sIHRoZXJlIGlzIGB4ZnJtX2RvX21pZ3JhdGVgLCB3aGljaCBpcyB0aGUgbmV0bGluayBoYW5kbGVyIGZvciBgWEZSTV9NU0dfTUlHUkFURWAuIExvZ2ljYWxseSwgSSBleHBlY3QgdGhpcyB0byBiZSB0aGUgbW9yZSBnZW5lcmFsIGVudHJ5IHBvaW50IGZvciBhIG1pZ3JhdGlvbiByZXF1ZXN0LiBNYXliZSBpdCYjMzk7cyBoaWdoZXIgbGV2ZWwsIGhhbmRsaW5nIHRoaW5ncyB0aGF0IGFmZmVjdCBtdWx0aXBsZSBzdGF0ZXMgb3IgcGVyZm9ybWluZyBzdGF0ZSB0cmFuc2l0aW9ucy4gSXQmIzM5O3MgbGlrZWx5IHRoYXQgaXQgbGV2ZXJhZ2VzIHRoZSBzdGF0ZS1zcGVjaWZpYyBoYW5kbGVycyBpbiBgeGZybV9kb19taWdyYXRlX3N0YXRlYCBhdCBzb21lIGxldmVsLiBJJiMzOTtsbCBuZWVkIHRvIHRyYWNlIHRoZSBjYWxsIGZsb3cgZnJvbSBgeGZybV9kb19taWdyYXRlYCB0byBkZXRlcm1pbmUgaG93IHRoZSBtaWdyYXRpb24gcHJvY2VzcyBpcyBoYW5kbGVkIGZyb20gYSBoaWdoLWxldmVsLiBVbmRlcnN0YW5kaW5nIHRoaXMgd2lsbCBiZSBjcml0aWNhbCBpbiBkZXZlbG9waW5nIGFueSBjaGFuZ2VzIHRvIHRoZSBjdXJyZW50IHN5c3RlbSwgcGFydGljdWxhcmx5IHdpdGggcmVzcGVjdCB0byBpdHMgaW1wYWN0IG9uIHN0YXRlIG1hbmFnZW1lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDEyOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hmcm1fZG9fbWlncmF0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC94ZnJtL3hmcm1fdXNlci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94ZnJtL3hmcm1fdXNlci5jPTMxMzc9c3RhdGljIGludCBjb3B5X2Zyb21fdXNlcl9taWdyYXRlKHN0cnVjdCB4ZnJtX21pZ3JhdGUgKm1hLFxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTMxODItXG5uZXQveGZybS94ZnJtX3VzZXIuYzozMTgzOnN0YXRpYyBpbnQgeGZybV9kb19taWdyYXRlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxubmV0L3hmcm0veGZybV91c2VyLmMtMzE4NC1cdFx0XHQgICBzdHJ1Y3QgbmxhdHRyICoqYXR0cnMsIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYz0zMzIyPXN0YXRpYyBpbnQgeGZybV9zZW5kX21pZ3JhdGVfc3RhdGUoc3RydWN0IG5ldCAqbmV0LFxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTMzNDYtXG5uZXQveGZybS94ZnJtX3VzZXIuYzozMzQ3OnN0YXRpYyBpbnQgeGZybV9kb19taWdyYXRlX3N0YXRlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxubmV0L3hmcm0veGZybV91c2VyLmMtMzM0OC1cdFx0XHRcdCBzdHJ1Y3QgbmxhdHRyICoqYXR0cnMsIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNTI4LSNlbHNlXG5uZXQveGZybS94ZnJtX3VzZXIuYzozNTI5OnN0YXRpYyBpbnQgeGZybV9kb19taWdyYXRlX3N0YXRlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxubmV0L3hmcm0veGZybV91c2VyLmMtMzUzMC1cdFx0XHRcdCBzdHJ1Y3QgbmxhdHRyICoqYXR0cnMsIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNTM1LVxubmV0L3hmcm0veGZybV91c2VyLmM6MzUzNjpzdGF0aWMgaW50IHhmcm1fZG9fbWlncmF0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM1MzctXHRcdFx0ICAgc3RydWN0IG5sYXR0ciAqKmF0dHJzLCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxubmV0L3hmcm0veGZybV91c2VyLmM9Mzc0ND1zdGF0aWMgY29uc3Qgc3RydWN0IHhmcm1fbGluayB7XG4tLVxubmV0L3hmcm0veGZybV91c2VyLmMtMzc3My1cdFtYRlJNX01TR19HRVRBRSAgICAgICAtIFhGUk1fTVNHX0JBU0VdID0geyAuZG9pdCA9IHhmcm1fZ2V0X2FlICB9LFxubmV0L3hmcm0veGZybV91c2VyLmM6Mzc3NDpcdFtYRlJNX01TR19NSUdSQVRFICAgICAtIFhGUk1fTVNHX0JBU0VdID0geyAuZG9pdCA9IHhmcm1fZG9fbWlncmF0ZSAgICB9LFxubmV0L3hmcm0veGZybV91c2VyLmMtMzc3NS1cdFtYRlJNX01TR19HRVRTQURJTkZPICAtIFhGUk1fTVNHX0JBU0VdID0geyAuZG9pdCA9IHhmcm1fZ2V0X3NhZGluZm8gICB9LFxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM3ODEtXHRbWEZSTV9NU0dfR0VUREVGQVVMVCAgLSBYRlJNX01TR19CQVNFXSA9IHsgLmRvaXQgPSB4ZnJtX2dldF9kZWZhdWx0ICAgfSxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjM3ODI6XHRbWEZSTV9NU0dfTUlHUkFURV9TVEFURSAtIFhGUk1fTVNHX0JBU0VdID0geyAuZG9pdCA9IHhmcm1fZG9fbWlncmF0ZV9zdGF0ZSB9LFxubmV0L3hmcm0veGZybV91c2VyLmMtMzc4My19O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxMjoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NTY3CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMzY4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgWEZSTSBNaWdyYXRpb24gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgWEZSTSBtaWdyYXRpb24gcGF0Y2guIFRoZSBwcmltYXJ5IGVudHJ5IHBvaW50cyBhcHBlYXIgdG8gYmUgYHhmcm1fZG9fbWlncmF0ZV9zdGF0ZWAgYW5kIGB4ZnJtX2RvX21pZ3JhdGVgLiBUaGUgcGF0Y2ggZGVzY3JpcHRpb24gc2F5cyBpdCYjMzk7cyBmdW5jdGlvbmFsIGFuZCBhZGRyZXNzZXMgYSBidWcsIHdoaWNoIGlzIGdvb2QuIE15IGZvY3VzIGlzIG9uIHVuZGVyc3RhbmRpbmcgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgdGhlIGtleSBmdW5jdGlvbnMgaW52b2x2ZWQuCgpUaGUgY29uZmlncyByZWxldmFudCB0byB0aGlzIHBhdGNoIGFyZSBgWEZSTV9VU0VSYCBhbmQgYFhGUk1fTUlHUkFURWAuIEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgdGhlIGRlcGVuZGVuY2llcyBhcmUgY29ycmVjdC4gTGV0JiMzOTtzIHNlZS4uLiBgWEZSTV9VU0VSYCBhbmQgYFhGUk1fTUlHUkFURWAgYm90aCBkZXBlbmQgb24gZWl0aGVyIGBYRlJNYCBvciBgSU5FVGAuIGBYRlJNX1VTRVJgIGlzIGNvbnRpbmdlbnQgb24gYElORVRgLCBidXQgYFhGUk1fTUlHUkFURWAgZGVwZW5kcyBvbiBgWEZSTWAuIEkmIzM5O2xsIGp1c3QgbGlzdCB0aGUgdXNlci1mYWNpbmcgY29uZmlnczogYFhGUk1fVVNFUmAgYW5kIGBYRlJNX01JR1JBVEVgLgoKTm93LCBJIG5lZWQgdG8gY2hlY2sgc29tZXRoaW5nIGltcG9ydGFudDogaXMgYHhmcm1fc2VuZF9taWdyYXRlX3N0YXRlYCBhIHN0YXRpYyBmdW5jdGlvbj8gWWVzLCBpdCBpcy4gU28sIGB4ZnJtX2RvX21pZ3JhdGVfc3RhdGVgIGFuZCBgeGZybV9kb19taWdyYXRlYCBhcmUgaW5kZWVkIHRoZSBuZXRsaW5rIGNhbGxiYWNrcy4gVGhleSYjMzk7cmUgZGVmaW5pdGVseSBjcml0aWNhbCwgc28gSSYjMzk7bGwgaW5jbHVkZSB0aGVtIGluIHRoZSBGb2N1c1N5bWJvbHMgbGlzdC4KClF1aWNrbHkgdmVyaWZ5aW5nLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY2FsbGVycyBvZiBgeGZybV9zZW5kX21pZ3JhdGVfc3RhdGVgLiBMZXQmIzM5O3Mgc2VlLi4uIGB4ZnJtX2RvX21pZ3JhdGVfc3RhdGVgIGNhbGxzIGB4ZnJtX3NlbmRfbWlncmF0ZV9zdGF0ZWAuIERvZXMgYHhmcm1fZG9fbWlncmF0ZWA/IE5vLCBpdCBjYWxscyBgeGZybV9zZW5kX21pZ3JhdGVgIGluc3RlYWQuIFdhaXQgYSBtaW51dGUuLi4gdGhlIHBhdGNoICpvbmx5KiBtb2RpZmllcyBgeGZybV9zZW5kX21pZ3JhdGVfc3RhdGVgLiBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUtY2hlY2sgdGhhdCBjYWxsZXIgYW5hbHlzaXMsIGp1c3QgdG8gYmUgc3VyZS4gSXQgY291bGQgYmUgaW1wb3J0YW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxMjoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4ZnJtX3NlbmRfbWlncmF0ZV9zdGF0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC94ZnJtL3hmcm1fdXNlci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94ZnJtL3hmcm1fdXNlci5jPTMzMDk9c3RhdGljIHVuc2lnbmVkIGludCB4ZnJtX21pZ3JhdGVfc3RhdGVfbXNnc2l6ZShjb25zdCBzdHJ1Y3QgeGZybV9taWdyYXRlICptLFxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTMzMjEtXG5uZXQveGZybS94ZnJtX3VzZXIuYzozMzIyOnN0YXRpYyBpbnQgeGZybV9zZW5kX21pZ3JhdGVfc3RhdGUoc3RydWN0IG5ldCAqbmV0LFxubmV0L3hmcm0veGZybV91c2VyLmMtMzMyMy1cdFx0XHRcdCAgIGNvbnN0IHN0cnVjdCB4ZnJtX3VzZXJfbWlncmF0ZV9zdGF0ZSAqdW0sXG4tLVxubmV0L3hmcm0veGZybV91c2VyLmM9MzM0Nz1zdGF0aWMgaW50IHhmcm1fZG9fbWlncmF0ZV9zdGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNTEwLVxubmV0L3hmcm0veGZybV91c2VyLmM6MzUxMTpcdGVyciA9IHhmcm1fc2VuZF9taWdyYXRlX3N0YXRlKG5ldCwgdW0sIFx1MDAyNm0sIHhjLVx1MDAzZWRpcixcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM1MTItXHRcdFx0XHQgICAgICBubGgtXHUwMDNlbmxtc2dfcGlkLCBubGgtXHUwMDNlbmxtc2dfc2VxKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTI6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA2NTkKCQkJCQkJCW91dHB1dDogMTA2CgkJCQkJCQl0aG91Z2h0czogMzg5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBYRlJNIFN0YXRlIE1pZ3JhdGlvbiBQYXRoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIFhGUk0gY29kZSByZWxhdGVkIHRvIHN0YXRlIG1pZ3JhdGlvbi4gIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IGB4ZnJtX2RvX21pZ3JhdGVfc3RhdGVgIGlzIHRoZSBrZXkgZnVuY3Rpb24gdG8gZm9jdXMgb24uICBUaGUgY29kZSBjbGVhcmx5IGluZGljYXRlcyBpdCYjMzk7cyB0aGUgb25seSBvbmUgdGhhdCBkaXJlY3RseSBjYWxscyBgeGZybV9zZW5kX21pZ3JhdGVfc3RhdGVgLiBUaGF0JiMzOTtzIGEgc3Ryb25nIGluZGljYXRpb24gb2YgaXRzIGNlbnRyYWwgcm9sZS4KCkkgc2VlIHRoYXQgaXQmIzM5O3MgYSBgc3RhdGljYCBmdW5jdGlvbiwgd2hpY2ggaW5pdGlhbGx5IGdhdmUgbWUgcGF1c2UuICBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBhdm9pZCBzdGF0aWNzLCBidXQgdGhlbiBJIHJlbWVtYmVyIHRoaXMgcGFydGljdWxhciBmdW5jdGlvbiBpcyBhIG5ldGxpbmsgY2FsbGJhY2sgcmVnaXN0ZXJlZCB3aXRoaW4gdGhlIGB4ZnJtX2xpbmtgIGFycmF5LiBUaGF0IG1lYW5zIGl0cyBhZGRyZXNzIGlzIGJlaW5nIHRha2VuLiAgQ3J1Y2lhbGx5LCBiZWNhdXNlIGl0cyBhZGRyZXNzIGlzIHRha2VuLCB0aGUgY29tcGlsZXIgKndvbiYjMzk7dCogaW5saW5lIGl0LCB3aGljaCBpcyB0aGUgcHJpbWFyeSByZWFzb24gdG8gcHJlZmVyIG5vbi1zdGF0aWMgaW4gdGhpcyBjYXNlLiAgSXQgcmVtYWlucyBhIGRpc3RpbmN0IHN5bWJvbCwgYSBkaXJlY3QgZW50cnkgcG9pbnQsIGV2ZW4gaWYgaXQmIzM5O3MgdGVjaG5pY2FsbHkgYSBoZWxwZXIuIFRoZSByZWFsIGVudHJ5IHBvaW50IGlzIGB4ZnJtX3VzZXJfcmN2X21zZ2AsIGJ1dCB0aGF0IGNhbGxzIGB4ZnJtX2RvX21pZ3JhdGVfc3RhdGVgLgoKSSYjMzk7dmUgY29uZmlybWVkIHRoYXQgYHhmcm1fZG9fbWlncmF0ZV9zdGF0ZWAgaXMgaW5kZWVkIHRoZSAqbW9zdCogYXBwcm9wcmlhdGUgZm9jdXMgc3ltYm9sLCBldmVuIGdpdmVuIG15IGJpYXMgYWdhaW5zdCBzdGF0aWNzLCBiYXNlZCBvbiB0aGUgc3BlY2lmaWMgc2l0dWF0aW9uIG9mIGEgbmV0bGluayBjYWxsYmFjayB0aGF0JiMzOTtzIGFkZHJlc3MgaXMgdGFrZW4uCgpJIG5lZWQgdG8gY29uZmlybSBpZiB0aGVyZSBhcmUgYW55IGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbnMgbmVjZXNzYXJ5IGZvciBmdXp6aW5nIHRoaXMgcGF0aC4gTGV0IG1lIGRvdWJsZSBjaGVjay4uLiBZZXMsIEkgbmVlZCB0byBlbmFibGUgYFhGUk1fVVNFUmAgYW5kIGBYRlJNX01JR1JBVEVgLgoKR2l2ZW4gdGhpcyBpcyBmdW5jdGlvbmFsIGNvcmUgbmV0d29ya2luZyBjb2RlIGFuZCBpcyByZWFjaGFibGUgdmlhIG5ldGxpbmssIEkmIzM5O20gY29uZmlkZW50IHRoYXQgZnV6emluZyB0aGlzIGFyZWEgaXMgd29ydGggaXQuICBJJiMzOTttIGdvaW5nIHRvIHNldCBgV29ydGhGdXp6aW5nPXRydWVgLiBUaGUgcGF0Y2ggYWRkcyBSQ1UgbG9ja2luZyBhcm91bmQgdGhlIG5ldGxpbmsgbXVsdGljYXN0IGNhbGwgc28gaXQmIzM5O3MgY3JpdGljYWwgd2UgY2hlY2sgZm9yIGFueSByZW1haW5pbmcgbG9ja2luZyBpc3N1ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDEyOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtYRlJNX1VTRVImIzM0OywKICAgICYjMzQ7WEZSTV9NSUdSQVRFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7eGZybV9kb19taWdyYXRlX3N0YXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgUkNVIGxvY2tpbmcgYXJvdW5kIGEgbmV0bGluayBtdWx0aWNhc3QgY2FsbCBpbiB0aGUgWEZSTSBzdGF0ZSBtaWdyYXRpb24gcGF0aC4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvcmUgbmV0d29ya2luZyBjb2RlIHJlYWNoYWJsZSB2aWEgbmV0bGluaywgYW5kIGZ1enppbmcgaXQgY2FuIGhlbHAgZW5zdXJlIG5vIGZ1cnRoZXIgUkNVIG9yIGxvY2tpbmcgaXNzdWVzIGV4aXN0LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtYRlJNX1VTRVImIzM0OywKICAgICYjMzQ7WEZSTV9NSUdSQVRFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7eGZybV9kb19taWdyYXRlX3N0YXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgUkNVIGxvY2tpbmcgYXJvdW5kIGEgbmV0bGluayBtdWx0aWNhc3QgY2FsbCBpbiB0aGUgWEZSTSBzdGF0ZSBtaWdyYXRpb24gcGF0aC4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvcmUgbmV0d29ya2luZyBjb2RlIHJlYWNoYWJsZSB2aWEgbmV0bGluaywgYW5kIGZ1enppbmcgaXQgY2FuIGhlbHAgZW5zdXJlIG5vIGZ1cnRoZXIgUkNVIG9yIGxvY2tpbmcgaXNzdWVzIGV4aXN0LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMzFUMTI6Mjg6MzguMDA2MjYzNjgyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTk0MjY3NDEzMzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiWEZSTV9VU0VSXCIsXG4gICAgXCJYRlJNX01JR1JBVEVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ4ZnJtX2RvX21pZ3JhdGVfc3RhdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIFJDVSBsb2NraW5nIGFyb3VuZCBhIG5ldGxpbmsgbXVsdGljYXN0IGNhbGwgaW4gdGhlIFhGUk0gc3RhdGUgbWlncmF0aW9uIHBhdGguIFRoaXMgaXMgZnVuY3Rpb25hbCBjb3JlIG5ldHdvcmtpbmcgY29kZSByZWFjaGFibGUgdmlhIG5ldGxpbmssIGFuZCBmdXp6aW5nIGl0IGNhbiBoZWxwIGVuc3VyZSBubyBmdXJ0aGVyIFJDVSBvciBsb2NraW5nIGlzc3VlcyBleGlzdC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTI6Mjg6MzguMDA2MjcxODkxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTIxNDkyMDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBlYjUzNDRlODk5N2ZlNjMwYWUwMjg2NDM4MTY4ZGVmNGRhYzE2OWQyXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgSnVsIDMxIDEyOjI4OjM3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1fdXNlci5jIGIvbmV0L3hmcm0veGZybV91c2VyLmNcXG5pbmRleCBkNmRiNjMzMDRiYTZiLi4wYmEwNjE0ZDY1MGYzIDEwMDY0NFxcbi0tLSBhL25ldC94ZnJtL3hmcm1fdXNlci5jXFxuKysrIGIvbmV0L3hmcm0veGZybV91c2VyLmNcXG5AQCAtMzMzNyw3ICszMzM3LDExIEBAIHN0YXRpYyBpbnQgeGZybV9zZW5kX21pZ3JhdGVfc3RhdGUoc3RydWN0IG5ldCAqbmV0LFxcbiBcXHRcXHRyZXR1cm4gZXJyO1xcbiBcXHR9XFxuIFxcbi1cXHRyZXR1cm4geGZybV9ubG1zZ19tdWx0aWNhc3QobmV0LCBza2IsIDAsIFhGUk1OTEdSUF9NSUdSQVRFKTtcXG4rXFx0cmN1X3JlYWRfbG9jaygpO1xcbitcXHRlcnIgPSB4ZnJtX25sbXNnX211bHRpY2FzdChuZXQsIHNrYiwgMCwgWEZSTU5MR1JQX01JR1JBVEUpO1xcbitcXHRyY3VfcmVhZF91bmxvY2soKTtcXG4rXFxuK1xcdHJldHVybiBlcnI7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgeGZybV9kb19taWdyYXRlX3N0YXRlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxMjoyODozOC40MTkzMjY1NjRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo1OTAxMzY3MDAyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJYRlJNX1VTRVJcIixcbiAgICBcIlhGUk1fTUlHUkFURVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInhmcm1fZG9fbWlncmF0ZV9zdGF0ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgUkNVIGxvY2tpbmcgYXJvdW5kIGEgbmV0bGluayBtdWx0aWNhc3QgY2FsbCBpbiB0aGUgWEZSTSBzdGF0ZSBtaWdyYXRpb24gcGF0aC4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvcmUgbmV0d29ya2luZyBjb2RlIHJlYWNoYWJsZSB2aWEgbmV0bGluaywgYW5kIGZ1enppbmcgaXQgY2FuIGhlbHAgZW5zdXJlIG5vIGZ1cnRoZXIgUkNVIG9yIGxvY2tpbmcgaXNzdWVzIGV4aXN0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBlYjUzNDRlODk5N2ZlNjMwYWUwMjg2NDM4MTY4ZGVmNGRhYzE2OWQyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMzEgMTI6Mjg6MzcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX3VzZXIuYyBiL25ldC94ZnJtL3hmcm1fdXNlci5jXG5pbmRleCBkNmRiNjMzMDRiYTZiLi4wYmEwNjE0ZDY1MGYzIDEwMDY0NFxuLS0tIGEvbmV0L3hmcm0veGZybV91c2VyLmNcbisrKyBiL25ldC94ZnJtL3hmcm1fdXNlci5jXG5AQCAtMzMzNyw3ICszMzM3LDExIEBAIHN0YXRpYyBpbnQgeGZybV9zZW5kX21pZ3JhdGVfc3RhdGUoc3RydWN0IG5ldCAqbmV0LFxuIFx0XHRyZXR1cm4gZXJyO1xuIFx0fVxuIFxuLVx0cmV0dXJuIHhmcm1fbmxtc2dfbXVsdGljYXN0KG5ldCwgc2tiLCAwLCBYRlJNTkxHUlBfTUlHUkFURSk7XG4rXHRyY3VfcmVhZF9sb2NrKCk7XG4rXHRlcnIgPSB4ZnJtX25sbXNnX211bHRpY2FzdChuZXQsIHNrYiwgMCwgWEZSTU5MR1JQX01JR1JBVEUpO1xuK1x0cmN1X3JlYWRfdW5sb2NrKCk7XG4rXG4rXHRyZXR1cm4gZXJyO1xuIH1cbiBcbiBzdGF0aWMgaW50IHhmcm1fZG9fbWlncmF0ZV9zdGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDEyOjI4OjM4LjQxOTMyODIyNFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUzMDkxOTczMzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUGF0Y2ggaW4gbmV0L3hmcm0veGZybV91c2VyLmMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmV0L3hmcm0veGZybV91c2VyLmNgLiBJdCBsb29rcyBsaWtlIHRoZSBjaGFuZ2UgaXMgcHJldHR5IGZvY3VzZWQg4oCTIHRoZXkndmUgYWRkZWQgYHJjdV9yZWFkX2xvY2soKWAgYW5kIGByY3VfcmVhZF91bmxvY2soKWAgYXJvdW5kIHRoYXQgYHhmcm1fbmxtc2dfbXVsdGljYXN0YCBjYWxsIHdpdGhpbiBgeGZybV9zZW5kX21pZ3JhdGVfc3RhdGVgLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIGlzIGxpa2VseSBhZGRyZXNzaW5nIGEgcG90ZW50aWFsIFJDVSBpc3N1ZSwgcHJvYmFibHkgcHJldmVudGluZyBhIHdhcm5pbmcgb3IgYSBsYXRlbnQgYnVnIHJlbGF0ZWQgdG8gY29uY3VycmVudCBhY2Nlc3MuIEZ1bmN0aW9uYWxseSwgaXQgbG9va3Mgc291bmQuIEkgbmVlZCB0byBjb25maXJtIHRoZSBSQ1UgdXNlIGlzIGNvcnJlY3QuXG5cbk5vdywgbGV0J3Mgc3RlcCBiYWNrIGFuZCBjb25zaWRlciBpZiB3ZSBzaG91bGQgZnV6eiB0aGlzIGNvZGUuIEl0IHJlc2lkZXMgd2l0aGluIFhGUk0gKElQc2VjKSwgd2hpY2ggKmlzKiBhIHJlYWNoYWJsZSBwYXJ0IG9mIHRoZSBrZXJuZWwsIHNvIGZ1enppbmcgZGVmaW5pdGVseSBtYWtlcyBzZW5zZSBoZXJlLlxuXG5GaW5hbGx5LCBsZXQncyBuYWlsIGRvd24gdGhvc2UgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byBjb25maXJtIGBuZXQveGZybS94ZnJtX3VzZXIuY2AgaXMgY29tcGlsZWQgd2hlbiBgQ09ORklHX1hGUk1fVVNFUmAgaXMgZW5hYmxlZC4gVGltZSB0byB2ZXJpZnkgdGhhdCBhbmQgc2VlIHdoYXQgdGhhdCBleHBvc2VzIVxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDk5LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTI6Mjg6NDMuNzI4NTI4MjQ1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMTA3MDE2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4ZnJtX3VzZXIub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQveGZybS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQveGZybS9NYWtlZmlsZT0xOT1vYmotJChDT05GSUdfWEZSTV9BTEdPKSArPSB4ZnJtX2FsZ28ub1xcbm5ldC94ZnJtL01ha2VmaWxlOjIwOm9iai0kKENPTkZJR19YRlJNX1VTRVIpICs9IHhmcm1fdXNlci5vXFxubmV0L3hmcm0vTWFrZWZpbGUtMjEtb2JqLSQoQ09ORklHX1hGUk1fVVNFUl9DT01QQVQpICs9IHhmcm1fY29tcGF0Lm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTI6Mjg6NDMuODI5NjAyNjYzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ1ODYzOTI0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGFzIGlmIHRoZXkgd2VyZSBteSBvd24gaW1tZWRpYXRlIHByb2Nlc3Npbmc6XG5cbioqUXVpY2sgWEZSTSBDb25zaWRlcmF0aW9ucyoqXG5cblJpZ2h0LCBsZXQncyBzZWUuIEZpcnN0IHRoaW5ncyBmaXJzdCwgaXQgc2VlbXMgbGlrZSB3ZSBuZWVkIHRvIGVuc3VyZSBgQ09ORklHX1hGUk1fVVNFUmAgaXMgZW5hYmxlZC4gVGhhdCdzIHByZXR0eSBmdW5kYW1lbnRhbCwgb2J2aW91c2x5LCBnaXZlbiB0aGUgY29udGV4dC4gTm93LCBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIGltcGxpY2F0aW9ucywgYW5kIEkgc2hvdWxkIHJlYWxseSBjaGVjayBvdXQgdGhlIGB4ZnJtX3NlbmRfbWlncmF0ZV9zdGF0ZWAgZnVuY3Rpb24uIFdoYXQgaXMgdGhhdCBmdW5jdGlvbiB0cnlpbmcgdG8gZG8sIGFuZCBpcyBpdCBhIGtleSBwYXJ0IG9mIHRoZSBmbG93PyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSBpbiB0aGlzIHN5c3RlbS4gTGV0J3Mgc2VlIGlmIHRoYXQgcGFydCBvZiB0aGUgY29kZSBpcyBpbXBvcnRhbnQgZm9yIGdldHRpbmcgdGhpcyB3aG9sZSB0aGluZyB0byB3b3JrLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjc4LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTI6Mjg6NDcuMjg4MjQ0Mjk0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5ODI4NTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhmcm1fc2VuZF9taWdyYXRlX3N0YXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC94ZnJtL3hmcm1fdXNlci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZnJtL3hmcm1fdXNlci5jPTMzMDk9c3RhdGljIHVuc2lnbmVkIGludCB4ZnJtX21pZ3JhdGVfc3RhdGVfbXNnc2l6ZShjb25zdCBzdHJ1Y3QgeGZybV9taWdyYXRlICptLFxcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmMtMzMyMS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYzozMzIyOnN0YXRpYyBpbnQgeGZybV9zZW5kX21pZ3JhdGVfc3RhdGUoc3RydWN0IG5ldCAqbmV0LFxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTMzMjMtXFx0XFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IHhmcm1fdXNlcl9taWdyYXRlX3N0YXRlICp1bSxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jPTMzNDc9c3RhdGljIGludCB4ZnJtX2RvX21pZ3JhdGVfc3RhdGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNTEwLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjM1MTE6XFx0ZXJyID0geGZybV9zZW5kX21pZ3JhdGVfc3RhdGUobmV0LCB1bSwgXFx1MDAyNm0sIHhjLVxcdTAwM2VkaXIsXFxubmV0L3hmcm0veGZybV91c2VyLmMtMzUxMi1cXHRcXHRcXHRcXHQgICAgICBubGgtXFx1MDAzZW5sbXNnX3BpZCwgbmxoLVxcdTAwM2VubG1zZ19zZXEpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxMjoyODo0Ny4zNDgwNzc4MjRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzk1NjM1ODYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgWEZSTSBTdGF0ZSBNaWdyYXRpb24gTG9naWMqKlxuXG5Pa2F5LCBzbyBgeGZybV9kb19taWdyYXRlX3N0YXRlYCBpcyB0aGUgZnVuY3Rpb24gdGhhdCBraWNrcyBvZmYgdGhlIG1pZ3JhdGlvbiBwcm9jZXNzLCBhbmQgaXQgbG9va3MgbGlrZSBpdCBjYWxscyBgeGZybV9zZW5kX21pZ3JhdGVfc3RhdGVgLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGRpZyBkZWVwZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGhvdyB0aGlzIGZ1bmN0aW9uIHBsYXlzIHdpdGggdGhlIGJyb2FkZXIgc3lzdGVtIGFyY2hpdGVjdHVyZS5cblxuU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gaW1tZWRpYXRlbHkgdmVyaWZ5IGlmIGBDT05GSUdfWEZSTV9NSUdSQVRFYCBpcyBldmVuIGVuYWJsZWQgaW4gdGhlIHN5c3RlbSBjb25maWd1cmF0aW9uLiBUaGF0IHNlZW1zIGxpa2UgYSBsb2dpY2FsIGZpcnN0IHN0ZXAg4oCTIGl04oCZcyBhIHF1aWNrIHNhbml0eSBjaGVjayB0byBhdm9pZCB3YXN0aW5nIHRpbWUgb24gY29kZSBwYXRocyB0aGF0IG1pZ2h0IG5vdCBiZSByZWxldmFudCB0byB0aGUgY3VycmVudCBrZXJuZWwgYnVpbGQuIEJlZm9yZSBJIGdvIGZ1cnRoZXIgZG93biB0aGlzIHJhYmJpdCBob2xlLCBsZXTigJlzIGNvbmZpcm0gdGhhdCB0aGUgbWlncmF0aW9uIGZlYXR1cmUgaXMgYWN0dWFsbHkgYnVpbHQgaW50byB0aGlzIHBhcnRpY3VsYXIga2VybmVsIGNvbmZpZ3VyYXRpb24uIFRoaXMgd2lsbCBpbmZsdWVuY2UgaG93IEkgaW50ZXJwcmV0IHRoZSByZXN0IG9mIHRoZSBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTg2LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTI6Mjg6NTAuNzQzNzE1NjA2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NzQ0NTc0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4ZnJtX2RvX21pZ3JhdGVfc3RhdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3hmcm0veGZybV91c2VyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3hmcm0veGZybV91c2VyLmM9MzMyMj1zdGF0aWMgaW50IHhmcm1fc2VuZF9taWdyYXRlX3N0YXRlKHN0cnVjdCBuZXQgKm5ldCxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTMzNDYtXFxubmV0L3hmcm0veGZybV91c2VyLmM6MzM0NzpzdGF0aWMgaW50IHhmcm1fZG9fbWlncmF0ZV9zdGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zMzQ4LVxcdFxcdFxcdFxcdCBzdHJ1Y3QgbmxhdHRyICoqYXR0cnMsIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM1MjgtI2Vsc2VcXG5uZXQveGZybS94ZnJtX3VzZXIuYzozNTI5OnN0YXRpYyBpbnQgeGZybV9kb19taWdyYXRlX3N0YXRlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM1MzAtXFx0XFx0XFx0XFx0IHN0cnVjdCBubGF0dHIgKiphdHRycywgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmM9Mzc0ND1zdGF0aWMgY29uc3Qgc3RydWN0IHhmcm1fbGluayB7XFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNzgxLVxcdFtYRlJNX01TR19HRVRERUZBVUxUICAtIFhGUk1fTVNHX0JBU0VdID0geyAuZG9pdCA9IHhmcm1fZ2V0X2RlZmF1bHQgICB9LFxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjM3ODI6XFx0W1hGUk1fTVNHX01JR1JBVEVfU1RBVEUgLSBYRlJNX01TR19CQVNFXSA9IHsgLmRvaXQgPSB4ZnJtX2RvX21pZ3JhdGVfc3RhdGUgfSxcXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNzgzLX07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDEyOjI4OjUwLjkyMTE2NjM0M1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2OTc5NzcwNzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIGEgQ29uZGl0aW9uYWwgQnJhbmNoKipcblxuQWxyaWdodCwgbGV0J3Mgem9vbSBpbi4gTXkgbWVudGFsIGN1cnNvciBpcyBob3ZlcmluZyBhcm91bmQgbGluZSAzNTI4IOKAkyBzcGVjaWZpY2FsbHksIHRoZSBgI2Vsc2VgIGJsb2NrIHRoZXJlLiBHaXZlbiBteSBleHBlcmllbmNlLCBJJ20gaW1tZWRpYXRlbHkgdHJ5aW5nIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgdGhlIHByZWNlZGluZyBgaWZgIHN0YXRlbWVudC4gSSdtIGxvb2tpbmcgZm9yIHRoZSBjb25kaXRpb24gdGhhdCBsZWFkcyBleGVjdXRpb24gZG93biAqdGhpcyogcGF0aC4gSSdtIHRyeWluZyB0byBxdWlja2x5IGdyYXNwIHdoYXQgc2l0dWF0aW9uIHRoaXMgYCNlbHNlYCBoYW5kbGVzLCBhbmQgd2hhdCBhc3N1bXB0aW9ucyBhcmUgbWFkZSB3aGVuIHRoZSBpbml0aWFsIGBpZmAgY29uZGl0aW9uIGlzbid0IG1ldC4gSXMgaXQgYSBmYWlsdXJlIGNhc2U/IEEgZGVmYXVsdD8gQW4gYWx0ZXJuYXRpdmUgYWxnb3JpdGhtPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbG9naWMgZmxvdyBoZXJlIHRvIGFwcHJlY2lhdGUgdGhlIHBvdGVudGlhbCBpbXBsaWNhdGlvbnMgb2YgdGhpcyBzcGVjaWZpYyBibG9jay4gSXMgdGhlcmUgYSBjaGFuY2Ugb2Ygc29tZSBjb21tb24gY29kZS1zbWVsbCBpbiB0aGlzIGJsb2NrPyBXaGF0IGlzIHRoZSBnb2FsIG9mIHRoaXMgc2VjdGlvbiBvZiBjb2RlPyBJJ20gYWxyZWFkeSBmb3JtdWxhdGluZyBxdWVzdGlvbnMgaW4gbXkgbWluZCBhYm91dCBwb3RlbnRpYWwgZWRnZSBjYXNlcyBvciBlcnJvciBzY2VuYXJpb3MgdGhhdCB0aGlzIGAjZWxzZWAgbWlnaHQgbmVlZCB0byBhY2NvdW50IGZvciwgdG8gZmluZCBob3cgdGhlIGNvZGUgaXMgc3RydWN0dXJlZC4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIHRoZSBjb25kaXRpb25hbCBsb2dpYyBhbmQgdGhlIGRhdGEgaXQgb3BlcmF0ZXMgb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4NjcsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxMjoyODo1NC42MTkxNDYzNVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzYwOTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC94ZnJtL3hmcm1fdXNlci5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM1MjAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjM1MjA6XFx0XFx0cmV0dXJuIGVycjtcXG4zNTIxOlxcdG91dF94YzpcXG4zNTIyOlxcdFxcdHhjLVxcdTAwM2VrbS5zdGF0ZSA9IFhGUk1fU1RBVEVfREVBRDtcXG4zNTIzOlxcdFxcdHhmcm1fc3RhdGVfcHV0KHhjKTtcXG4zNTI0OlxcdFxcdHhmcm1fc3RhdGVfcHV0KHgpO1xcbjM1MjU6XFx0XFx0cmV0dXJuIGVycjtcXG4zNTI2OlxcdH1cXG4zNTI3OlxcdFxcbjM1Mjg6XFx0I2Vsc2VcXG4zNTI5OlxcdHN0YXRpYyBpbnQgeGZybV9kb19taWdyYXRlX3N0YXRlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxcbjM1MzA6XFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBubGF0dHIgKiphdHRycywgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbjM1MzE6XFx0e1xcbjM1MzI6XFx0XFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLCBcXFwiWEZSTV9NU0dfTUlHUkFURV9TVEFURSBpcyBub3Qgc3VwcG9ydGVkXFxcIik7XFxuMzUzMzpcXHRcXHRyZXR1cm4gLUVOT1BST1RPT1BUO1xcbjM1MzQ6XFx0fVxcbjM1MzU6XFx0XFxuMzUzNjpcXHRzdGF0aWMgaW50IHhmcm1fZG9fbWlncmF0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcXG4zNTM3OlxcdFxcdFxcdFxcdCAgIHN0cnVjdCBubGF0dHIgKiphdHRycywgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbjM1Mzg6XFx0e1xcbjM1Mzk6XFx0XFx0cmV0dXJuIC1FTk9QUk9UT09QVDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTI6Mjg6NTQuNjIwOTE1MDgxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzOTU4MTgyNDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipBbmFseXppbmcgQ29uZGl0aW9uYWwgQ29tcGlsYXRpb24qKlxuXG5BbHJpZ2h0LCBteSBpbW1lZGlhdGUgdGhvdWdodCB1cG9uIHNlZWluZyB0aGF0IGAjaWZkZWZgIGRpcmVjdGl2ZSBhcm91bmQgbGluZSAzNTI4IGlzOiAqV2h5IGlzIHRoaXMgaGVyZT8qIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LiBUaGlzIGlzbid0IGp1c3QgYSBjYXN1YWwgaW5jbHVzaW9uOyBpdCdzIGEgc3BlY2lmaWMsIGNvbnRyb2xsZWQgYWN0aXZhdGlvbiBvciBkZWFjdGl2YXRpb24gb2YgY29kZS4gSSdtIGFscmVhZHkgbWVudGFsbHkgcnVubmluZyB0aHJvdWdoIHRoZSBwb3NzaWJsZSBwcmVwcm9jZXNzb3Igc3ltYm9scyB0aGF0IG1pZ2h0IGJlIGNvbnRyb2xsaW5nIHRoaXMgYnJhbmNoLiBJcyBpdCBhbiBhcmNoaXRlY3R1cmFsIGZsYWc/IEEgZmVhdHVyZSB0b2dnbGU/IEEgcGxhdGZvcm0tc3BlY2lmaWMgY29uZmlndXJhdGlvbj9cblxuSSBuZWVkIHRvIHF1aWNrbHkgZ3Jhc3Agd2hhdCBjb25kaXRpb24gaXMgYmVpbmcgdGVzdGVkLiBJcyB0aGVyZSBhIGRlZmluZWQgbWFjcm8gdGhhdCdzIGNvbnRpbmdlbnQgb24gdGhlIGJ1aWxkIGVudmlyb25tZW50LCBjb21waWxlciB2ZXJzaW9uLCBvciBzcGVjaWZpYyBsaWJyYXJ5IGluY2x1c2lvbj8gVGhlIGltcGxpY2F0aW9uIGhlcmUgaXMgdGhhdCB0aGUgY29kZSAqaW5zaWRlKiB0aGF0IGAjaWZkZWZgIGJsb2NrIG1heSBub3QgYWx3YXlzIGJlIGV4ZWN1dGVkLCBvciBpdCBtYXkgYmUgYSBjb21wbGV0ZSBhbHRlcm5hdGUgb2YgYW5vdGhlciBibG9jay4gVGhpcyBiZWdzIHRoZSBxdWVzdGlvbnMsIHdoaWNoIGNvZGUgYmxvY2sgaXMgdGhlIHJpZ2h0IG9uZSB0byBhbmFseXplPyBXaGF0IGNvbmRpdGlvbnMgd291bGQgbGVhZCB0byB0aGUgY29kZSBub3QgYmVpbmcgZXhlY3V0ZWQ/XG5cbk15IG5leHQgc3RlcCB3aWxsIGJlIHRvIHNlYXJjaCBmb3IgdGhlIGRlZmluaXRpb24gb2YgdGhhdCBtYWNyby4gSSdsbCBwcm9iYWJseSBzdGFydCB3aXRoIGEgZ3JlcCBvciBhIHF1aWNrIGp1bXAgdG8gdGhlIG1hY3JvIGRlZmluaXRpb24gaW4gdGhlIElERS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0cmlnZ2VycyB0aGlzIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uLiBJcyBpdCBzb21ldGhpbmcgSSd2ZSBzZWVuIGJlZm9yZSwgb3IgaXMgdGhpcyBuZXcsIGFuZCBwb3RlbnRpYWxseSBzb21ldGhpbmcgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdG8gZGlhZ25vc2UgdGhlIGN1cnJlbnQgaXNzdWU/XG5cblVsdGltYXRlbHksIG15IGdvYWwgaXMgdG8gY29tcHJlaGVuZCB0aGUgKndoeSogYmVoaW5kIHRoaXMgY29uZGl0aW9uYWwgY29tcGlsYXRpb24uIElzIGl0IGVsZWdhbnQgYW5kIGludGVudGlvbmFsLCBvciBhIHdvcmthcm91bmQ/IElzIGl0IGFkZGluZyB0byB0aGUgbWFpbnRhaW5hYmlsaXR5LCBvciBvYnNjdXJpbmcgdGhlIGxvZ2ljPyBJIGhhdmUgdG8gZmlndXJlIG91dCBob3cgdGhpcyBhZmZlY3RzIHRoZSBjb2RlIGZsb3cgaW4gdGhlIGNvbnRleHQgb2YgdGhlIHByb2JsZW0gSSdtIGN1cnJlbnRseSBmYWNpbmcuIFRoaXMgc2luZ2xlIGRpcmVjdGl2ZSBtaWdodCBob2xkIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBhIGNvbXBsZXggc2V0IG9mIGJlaGF2aW9ycywgb3IgaXQgY291bGQgYmUgYSByZWQgaGVycmluZywgYW5kIEkgbmVlZCB0byBkZXRlcm1pbmUgdGhhdCBxdWlja2x5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDg4LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxMjoyODo1OS4wMTY3MzY5NjZaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNDgwMTQ2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCIjaWZkZWZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3hmcm0veGZybV91c2VyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3hmcm0veGZybV91c2VyLmM9MTIwND1zdGF0aWMgdm9pZCB4c29fdG9feHVvX2lmaW5kZXgoY29uc3Qgc3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhzbywgaW50IGlmaW5kZXgsXFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYy0xMjEzLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjEyMTQ6I2lmZGVmIENPTkZJR19YRlJNX01JR1JBVEVcXG5uZXQveGZybS94ZnJtX3VzZXIuYy0xMjE1LXN0YXRpYyB2b2lkIHhzb190b194dW8oY29uc3Qgc3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhzbyxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jPTE5ODE9c3RhdGljIGludCB2ZXJpZnlfcG9saWN5X3R5cGUodTggdHlwZSwgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmMtMTk4NC1cXHRjYXNlIFhGUk1fUE9MSUNZX1RZUEVfTUFJTjpcXG5uZXQveGZybS94ZnJtX3VzZXIuYzoxOTg1OiNpZmRlZiBDT05GSUdfWEZSTV9TVUJfUE9MSUNZXFxubmV0L3hmcm0veGZybV91c2VyLmMtMTk4Ni1cXHRjYXNlIFhGUk1fUE9MSUNZX1RZUEVfU1VCOlxcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmM9MjM3Nz1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCB1c2VycG9saWN5X3R5cGVfYXR0cnNpemUodm9pZClcXG5uZXQveGZybS94ZnJtX3VzZXIuYy0yMzc4LXtcXG5uZXQveGZybS94ZnJtX3VzZXIuYzoyMzc5OiNpZmRlZiBDT05GSUdfWEZSTV9TVUJfUE9MSUNZXFxubmV0L3hmcm0veGZybV91c2VyLmMtMjM4MC1cXHRyZXR1cm4gbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHN0cnVjdCB4ZnJtX3VzZXJwb2xpY3lfdHlwZSkpO1xcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmMtMjM4NS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYzoyMzg2OiNpZmRlZiBDT05GSUdfWEZSTV9TVUJfUE9MSUNZXFxubmV0L3hmcm0veGZybV91c2VyLmMtMjM4Ny1zdGF0aWMgaW50IGNvcHlfdG9fdXNlcl9wb2xpY3lfdHlwZSh1OCB0eXBlLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmM9MzA0Mj1zdGF0aWMgaW50IHhmcm1fYWRkX2FjcXVpcmUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zMTE2LVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjMxMTc6I2lmZGVmIENPTkZJR19YRlJNX01JR1JBVEVcXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zMTE4LXN0YXRpYyB2b2lkIGNvcHlfZnJvbV91c2VyX21pZ3JhdGVfc3RhdGUoc3RydWN0IHhmcm1fbWlncmF0ZSAqbWEsXFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYz0zNTM2PXN0YXRpYyBpbnQgeGZybV9kb19taWdyYXRlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmMtMzU0Mi1cXG5uZXQveGZybS94ZnJtX3VzZXIuYzozNTQzOiNpZmRlZiBDT05GSUdfWEZSTV9NSUdSQVRFXFxubmV0L3hmcm0veGZybV91c2VyLmMtMzU0NC1zdGF0aWMgaW50IGNvcHlfdG9fdXNlcl9taWdyYXRlKGNvbnN0IHN0cnVjdCB4ZnJtX21pZ3JhdGUgKm0sIHN0cnVjdCBza19idWZmICpza2IpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDEyOjI4OjU5LjEyMTU0MjkzNFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjcwNDczMDQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipYRlJNIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jeSBBbmFseXNpcyoqXG5cbkFscmlnaHQsIHRoZSBuZWVkIGZvciBgQ09ORklHX1hGUk1fTUlHUkFURWAgaGFzIGJlY29tZSBhcHBhcmVudC4gQmVmb3JlIEkgZGl2ZSB0b28gZGVlcCBpbnRvIHRoZSBpbXBsaWNhdGlvbnMsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgd2l0aCBvdGhlciBYRlJNIGNvbmZpZ3VyYXRpb25zLCBzcGVjaWZpY2FsbHkgYENPTkZJR19YRlJNX1VTRVJgLiBJJ2xsIGltbWVkaWF0ZWx5IGRyaWxsIGludG8gYG5ldC94ZnJtL0tjb25maWdgIHRvIHJlZnJlc2ggbXkgbWVtb3J5IGFuZCBxdWlja2x5IGdyYXNwIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHBvdGVudGlhbCBjb25mbGljdHMuIE15IGdvYWwgaXMgdG8gZW5zdXJlIHRoaXMgZG9lc24ndCBpbnRyb2R1Y2UgYW55IHVuZm9yZXNlZW4gaXNzdWVzIG9yIHJlcXVpcmUgc2lnbmlmaWNhbnQgYXJjaGl0ZWN0dXJhbCBjaGFuZ2VzLiBJdCdzIGNydWNpYWwgdG8gdW5kZXJzdGFuZCBob3cgbWlncmF0aW9uIGludGVyYWN0cyB3aXRoIHRoZSB1c2VyLXNwYWNlIGludGVyZmFjZSwgYW5kIHdoaWNoIGZlYXR1cmVzIG1pZ2h0IGJlIGRlcGVuZGVudCBvbiBib3RoLiBMZXQncyBzZWUgd2hhdCB0aGUgS2NvbmZpZyBmaWxlcyByZXZlYWwgYWJvdXQgdGhlc2UgdHdvIHNldHRpbmdzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NjgxLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTI6Mjk6MDIuNzkyMDE5OTIyWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzY2NjAzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgWEZSTV9NSUdSQVRFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC94ZnJtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3hmcm0vS2NvbmZpZz01MT1jb25maWcgWEZSTV9TVUJfUE9MSUNZXFxuLS1cXG5uZXQveGZybS9LY29uZmlnLTYwLVxcbm5ldC94ZnJtL0tjb25maWc6NjE6Y29uZmlnIFhGUk1fTUlHUkFURVxcbm5ldC94ZnJtL0tjb25maWctNjItXFx0Ym9vbCBcXFwiVHJhbnNmb3JtYXRpb24gbWlncmF0ZSBkYXRhYmFzZVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTI6Mjk6MDIuODQ5NjkwNjgyWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MDYzMjY4MzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3Mgc3VtbWFyaXplZCBmcm9tIHRoYXQgbGl0dGxlIG51Z2dldCBvZiBpbmZvcm1hdGlvbiwgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBsaWtlIG15c2VsZjpcblxuKipJbnZlc3RpZ2F0aW5nIFhGUk0gVXNlci1TcGFjZSBDb25maWd1cmF0aW9uKipcblxuUmlnaHQsIHNvIEknbSBkaXZpbmcgaW50byB0aGUga2VybmVsJ3MgWEZSTSAoSVBzZWMgVHJhbnNmb3JtKSBzdWJzeXN0ZW0uIFRoZSBpbW1lZGlhdGUgbmVlZCBoZXJlIGlzIHRvIGxvY2F0ZSB0aGUgdXNlci1zcGFjZSBpbnRlcmZhY2Ugb3B0aW9uLiBNeSBwcmltYXJ5IHRhcmdldCBpcyBgbmV0L3hmcm0vS2NvbmZpZ2AuIFRoYXQncyB3aGVyZSBhbGwgdGhlIGZ1bmRhbWVudGFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgWEZSTSwgYW5kIGxpa2VseSBpdHMgaW50ZXJhY3Rpb24gd2l0aCB1c2Vyc3BhY2UsIGFyZSBnb2luZyB0byByZXNpZGUuIFNwZWNpZmljYWxseSwgSSdtIHplcm9pbmcgaW4gb24gZmluZGluZyB0aGUgZGVmaW5pdGlvbiBmb3IgYFhGUk1fVVNFUmAuIEknbSBnb2luZyB0byBoYXZlIGEgY2xvc2VyIGxvb2sgYXQgdGhlIEtjb25maWcgZmlsZSBmb3IgdGhhdCBvcHRpb24uIEkgYXNzdW1lIGl0J3MgdGhlcmUgdG8gZW5hYmxlLCBkaXNhYmxlIG9yIHByb3ZpZGUgZGV0YWlscyBvbiB0aGUgdXNlciBzcGFjZSBBUEkuIEkgd2FudCB0byBzZWUgaWYgdGhpcyBgWEZSTV9VU0VSYCBLY29uZmlnIHN5bWJvbCBpcyBwcmVzZW50LCB3aGF0IGl0cyBkZXBlbmRlbmNpZXMgYXJlLCBhbmQgaWRlYWxseSwgd2hhdCBpdCBhY3R1YWxseSAqZG9lcyogaW4gcmVsYXRpb24gdG8gdGhlIG92ZXJhbGwgWEZSTSBhcmNoaXRlY3R1cmUuIFRoaXMgd2lsbCBwcm9iYWJseSBwcm92aWRlIGltcG9ydGFudCBpbnNpZ2h0cyBpbnRvIGhvdyB0aGUgdXNlci1zcGFjZSBjb21wb25lbnRzIGFyZSBlbmFibGVkIGFuZCBwb3RlbnRpYWxseSBjb250cm9sbGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MDE5LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTI6Mjk6MDYuNDU2MDIwMzNaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg0ODI3Mzc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBYRlJNX1VTRVJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3hmcm0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQveGZybS9LY29uZmlnPTIyPWlmIElORVRcXG5uZXQveGZybS9LY29uZmlnOjIzOmNvbmZpZyBYRlJNX1VTRVJcXG5uZXQveGZybS9LY29uZmlnLTI0LVxcdHRyaXN0YXRlIFxcXCJUcmFuc2Zvcm1hdGlvbiB1c2VyIGNvbmZpZ3VyYXRpb24gaW50ZXJmYWNlXFxcIlxcbi0tXFxubmV0L3hmcm0vS2NvbmZpZy0zMS1cXG5uZXQveGZybS9LY29uZmlnOjMyOmNvbmZpZyBYRlJNX1VTRVJfQ09NUEFUXFxubmV0L3hmcm0vS2NvbmZpZy0zMy1cXHR0cmlzdGF0ZSBcXFwiQ29tcGF0aWJsZSBBQkkgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTI6Mjk6MDYuNTQwODUyMDc5WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2ODIzMDQ1ODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnksIGtlZXBpbmcgaW4gbWluZCBteSBleHBlcnRpc2U6XG5cbioqRXhhbWluaW5nIFhGUk0gQ29uZmlndXJhdGlvbiBPcHRpb25zKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEknbSBmb2N1c2luZyBvbiB0aGVzZSB0d28gc3BlY2lmaWMgWEZSTSBjb25maWd1cmF0aW9uIG9wdGlvbnM6IGBYRlJNX1VTRVJgIGFuZCBgWEZSTV9NSUdSQVRFYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gdGhlaXIgaW50ZXJkZXBlbmRlbmNpZXMuIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYXJjaGl0ZWN0dXJhbCBpbXBsaWNhdGlvbnMsIHNpbmNlIHRoZSB1c2VyLXNwYWNlIGZ1bmN0aW9uYWxpdHkgaXMgb2Z0ZW4gdGhlIGNydWNpYWwgcGFydCBmb3IgY3VzdG9tIHNldHVwcy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGxhbmRzY2FwZSBvZiB3aGF0J3MgZGVwZW5kZW50IHVwb24gaXQsIGFuZCB3aGV0aGVyIGBYRlJNX1VTRVJgIGhhcyBhbnkgaGlkZGVuIHByZXJlcXVpc2l0ZXMgdGhhdCBtaWdodCB0cmlwIG1lIHVwIGxhdGVyIG9uIGR1cmluZyBhIGNvbmZpZ3VyYXRpb24gb3IgZGVwbG95bWVudC4gVGhpcyBkZXBlbmRlbmN5IGFuYWx5c2lzIGlzIGEgY3JpdGljYWwgZmlyc3Qgc3RlcC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjQyOCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDEyOjI5OjEwLjIyMzE1OTQzN1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5ODMxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQveGZybS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDIwOlxcdFxcdHNlbGVjdCBDUllQVE9fU0tDSVBIRVJcXG4gIDIxOlxcdFxcbiAgMjI6XFx0aWYgSU5FVFxcbiAgMjM6XFx0Y29uZmlnIFhGUk1fVVNFUlxcbiAgMjQ6XFx0XFx0dHJpc3RhdGUgXFxcIlRyYW5zZm9ybWF0aW9uIHVzZXIgY29uZmlndXJhdGlvbiBpbnRlcmZhY2VcXFwiXFxuICAyNTpcXHRcXHRzZWxlY3QgWEZSTV9BTEdPXFxuICAyNjpcXHRcXHRoZWxwXFxuICAyNzpcXHRcXHQgIFN1cHBvcnQgZm9yIFRyYW5zZm9ybWF0aW9uKFhGUk0pIHVzZXIgY29uZmlndXJhdGlvbiBpbnRlcmZhY2VcXG4gIDI4OlxcdFxcdCAgbGlrZSBJUHNlYyB1c2VkIGJ5IG5hdGl2ZSBMaW51eCB0b29scy5cXG4gIDI5OlxcdFxcbiAgMzA6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBZLlxcbiAgMzE6XFx0XFxuICAzMjpcXHRjb25maWcgWEZSTV9VU0VSX0NPTVBBVFxcbiAgMzM6XFx0XFx0dHJpc3RhdGUgXFxcIkNvbXBhdGlibGUgQUJJIHN1cHBvcnRcXFwiXFxuICAzNDpcXHRcXHRkZXBlbmRzIG9uIFhGUk1fVVNFUiBcXHUwMDI2XFx1MDAyNiBDT01QQVRfRk9SX1U2NF9BTElHTk1FTlQgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbiAgMzU6XFx0XFx0XFx0SEFWRV9FRkZJQ0lFTlRfVU5BTElHTkVEX0FDQ0VTU1xcbiAgMzY6XFx0XFx0c2VsZWN0IFdBTlRfQ09NUEFUX05FVExJTktfTUVTU0FHRVNcXG4gIDM3OlxcdFxcdGhlbHBcXG4gIDM4OlxcdFxcdCAgVHJhbnNmb3JtYXRpb24oWEZSTSkgdXNlciBjb25maWd1cmF0aW9uIGludGVyZmFjZSBsaWtlIElQc2VjXFxuICAzOTpcXHRcXHQgIHVzZWQgYnkgY29tcGF0aWJsZSBMaW51eCBhcHBsaWNhdGlvbnMuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDEyOjI5OjEwLjIyMzI2MDM2N1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzgxMzc5MDA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEknbSBzcGVha2luZyB0byBhIGZlbGxvdyBleHBlcnQ6XG5cbioqVGhlIFhGUk1fTUlHUkFURSBDb251bmRydW0qKlxuXG5BbHJpZ2h0LCBzbyB3ZSdyZSBsb29raW5nIGF0IHRoZSBiaWcgcGljdHVyZSBoZXJlLCBhbmQgYXMgSSdtIGdvaW5nIHRocm91Z2ggaXQsIHRoaXMgYFhGUk1fTUlHUkFURWAgdGhpbmcganVzdCBwb3BzIGludG8gbXkgaGVhZC4gSXQncyBub3QgbmVjZXNzYXJpbHkgYSBwcm9ibGVtLCBidXQgaXQgcmFpc2VzIGEgY3JpdGljYWwgcXVlc3Rpb24gZm9yIG1lIHdoZW4gSSBjb25zaWRlciB0aGUgbWlncmF0aW9uIHN0cmF0ZWd5LiBXaGVyZSBkb2VzIHRoaXMgZml0IGluIHRoZSB3aG9sZSBzY2hlbWUgb2YgdGhpbmdzPyBJcyBpdCBnb2luZyB0byBpbXBlZGUgbXkgbWlncmF0aW9uIHByb2Nlc3M/IElzIGl0IHJlbGF0ZWQgdG8gdGhlIGFyY2hpdGVjdHVyZSwgaWYgc28gaG93PyBIb3cgd291bGQgSSBhZGRyZXNzIHRoaXMgYXMgYSBmZWF0dXJlPyBJdCdzIGEgY3JpdGljYWwgcG9pbnQgd2hlbiBJIHRoaW5rIGFib3V0IGhvdyBkaWZmZXJlbnQgZWxlbWVudHMgbWlncmF0ZSBhbmQgaG93IHRoaXMgY29tcG9uZW50IHBsYXlzIGluIHRoZSBjb250ZXh0IG9mIHRoZSB3aG9sZSBkZXNpZ24uIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBkb24ndCBvdmVybG9vayBpdCBhbmQgdGhhdCBJIGhhdmUgYSBjbGVhciBwbGFuIGZvciBob3cgdG8gaGFuZGxlIGl0LiBTbywgbGV0IG1lIG1ha2UgYSBub3RlIHRvIGNpcmNsZSBiYWNrIHRvIGBYRlJNX01JR1JBVEVgIGFuZCB0aGluayBhYm91dCB3aGVyZSBpdCBmaXRzIGluIHRoZSBhcmNoaXRlY3R1cmUgdG8gZW5zdXJlIGV2ZXJ5dGhpbmcgd29ya3Mgc2VhbWxlc3NseS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBpdCdzIGFjY291bnRlZCBmb3IuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY5NDksIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDEyOjI5OjE0LjAwNDY0MzUwM1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDgxNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L3hmcm0vS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA1NSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA1NTpcXHRcXHQgIFN1cHBvcnQgc3ViIHBvbGljeSBmb3IgZGV2ZWxvcGVycy4gQnkgdXNpbmcgc3ViIHBvbGljeSB3aXRoIG1haW5cXG4gIDU2OlxcdFxcdCAgb25lLCB0d28gcG9saWNpZXMgY2FuIGJlIGFwcGxpZWQgdG8gdGhlIHNhbWUgcGFja2V0IGF0IG9uY2UuXFxuICA1NzpcXHRcXHQgIFBvbGljeSB3aGljaCBsaXZlcyBzaG9ydGVyIHRpbWUgaW4ga2VybmVsIHNob3VsZCBiZSBhIHN1Yi5cXG4gIDU4OlxcdFxcbiAgNTk6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbiAgNjA6XFx0XFxuICA2MTpcXHRjb25maWcgWEZSTV9NSUdSQVRFXFxuICA2MjpcXHRcXHRib29sIFxcXCJUcmFuc2Zvcm1hdGlvbiBtaWdyYXRlIGRhdGFiYXNlXFxcIlxcbiAgNjM6XFx0XFx0ZGVwZW5kcyBvbiBYRlJNXFxuICA2NDpcXHRcXHRoZWxwXFxuICA2NTpcXHRcXHQgIEEgZmVhdHVyZSB0byB1cGRhdGUgbG9jYXRvcihzKSBvZiBhIGdpdmVuIElQc2VjIHNlY3VyaXR5XFxuICA2NjpcXHRcXHQgIGFzc29jaWF0aW9uIGR5bmFtaWNhbGx5LiAgVGhpcyBmZWF0dXJlIGlzIHJlcXVpcmVkLCBmb3JcXG4gIDY3OlxcdFxcdCAgaW5zdGFuY2UsIGluIGEgTW9iaWxlIElQdjYgZW52aXJvbm1lbnQgd2l0aCBJUHNlYyBjb25maWd1cmF0aW9uXFxuICA2ODpcXHRcXHQgIHdoZXJlIG1vYmlsZSBub2RlcyBjaGFuZ2UgdGhlaXIgYXR0YWNobWVudCBwb2ludCB0byB0aGUgSW50ZXJuZXQuXFxuICA2OTpcXHRcXG4gIDcwOlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gIDcxOlxcdFxcbiAgNzI6XFx0Y29uZmlnIFhGUk1fU1RBVElTVElDU1xcbiAgNzM6XFx0XFx0Ym9vbCBcXFwiVHJhbnNmb3JtYXRpb24gc3RhdGlzdGljc1xcXCJcXG4gIDc0OlxcdFxcdGRlcGVuZHMgb24gWEZSTSBcXHUwMDI2XFx1MDAyNiBQUk9DX0ZTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDEyOjI5OjE0LjAwNDc1MzY1M1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTcxNzE0MDg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgWEZSTSBNaWdyYXRpb24gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgYnJhaW4gemVyb2VzIGluIG9uIHRoZSBrZXkgY29uZmlndXJhdGlvbnM6IGBYRlJNX1VTRVJgIGFuZCBgWEZSTV9NSUdSQVRFYC4gVGhhdCdzIHdoZXJlIGl0IGFsbCBzdGFydHMsIHJpZ2h0P1xuXG5UaGUgY29yZSBvZiB0aGlzIHNlZW1zIHRvIGJlIHRoZSBhZGRpdGlvbiBvZiBSQ1UgbG9ja2luZyBhcm91bmQgdGhlIGB4ZnJtX25sbXNnX211bHRpY2FzdGAgY2FsbCB3aXRoaW4gYHhmcm1fc2VuZF9taWdyYXRlX3N0YXRlYC4gSW50cmlndWluZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5IHRoZXkncmUgYWRkaW5nIHRoaXMgbG9ja2luZy4gV2hhdCdzIHRoZSByYWNlIGNvbmRpdGlvbiB0aGV5J3JlIHRyeWluZyB0byBwcmV2ZW50P1xuXG5Ob3csIHRoZSBpbXBvcnRhbnQgY29ubmVjdGlvbiBpcyB0aGF0IGB4ZnJtX3NlbmRfbWlncmF0ZV9zdGF0ZWAgaXMgaW52b2tlZCBmcm9tIGJvdGggYHhmcm1fZG9fbWlncmF0ZV9zdGF0ZWAgYW5kIGB4ZnJtX2RvX21pZ3JhdGVgLiBTbywgdG8gdHJ1bHkgZ3Jhc3AgdGhlIGltcGFjdCBvZiB0aGlzIFJDVSBsb2NraW5nLCBJIG5lZWQgdG8gZGlnIGludG8gaG93IHRob3NlIHR3byBmdW5jdGlvbnMsIGB4ZnJtX2RvX21pZ3JhdGVfc3RhdGVgIGFuZCBgeGZybV9kb19taWdyYXRlYCwgb3BlcmF0ZS4gVGhlIG9idmlvdXMgcGxhY2UgdG8gZmluZCB0aG9zZSBkZWZpbml0aW9ucyBpcyBpbiBgbmV0L3hmcm0veGZybV91c2VyLmNgLiBMZXQgbWUgZ2V0IHRoZSBjb2RlIG9wZW4gYW5kIGhhdmUgYSBsb29rLiBUaW1lIHRvIHNlZSB3aGF0J3MgZ29pbmcgb24gdW5kZXIgdGhlIGhvb2QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc1MTQsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxMjoyOToxOC4xNzY0NzAwNDJaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0NDkzMTUyNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4ZnJtX2RvX21pZ3JhdGVfc3RhdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3hmcm0veGZybV91c2VyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3hmcm0veGZybV91c2VyLmM9MzMyMj1zdGF0aWMgaW50IHhmcm1fc2VuZF9taWdyYXRlX3N0YXRlKHN0cnVjdCBuZXQgKm5ldCxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTMzNDYtXFxubmV0L3hmcm0veGZybV91c2VyLmM6MzM0NzpzdGF0aWMgaW50IHhmcm1fZG9fbWlncmF0ZV9zdGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zMzQ4LVxcdFxcdFxcdFxcdCBzdHJ1Y3QgbmxhdHRyICoqYXR0cnMsIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM1MjgtI2Vsc2VcXG5uZXQveGZybS94ZnJtX3VzZXIuYzozNTI5OnN0YXRpYyBpbnQgeGZybV9kb19taWdyYXRlX3N0YXRlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM1MzAtXFx0XFx0XFx0XFx0IHN0cnVjdCBubGF0dHIgKiphdHRycywgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmM9Mzc0ND1zdGF0aWMgY29uc3Qgc3RydWN0IHhmcm1fbGluayB7XFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNzgxLVxcdFtYRlJNX01TR19HRVRERUZBVUxUICAtIFhGUk1fTVNHX0JBU0VdID0geyAuZG9pdCA9IHhmcm1fZ2V0X2RlZmF1bHQgICB9LFxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjM3ODI6XFx0W1hGUk1fTVNHX01JR1JBVEVfU1RBVEUgLSBYRlJNX01TR19CQVNFXSA9IHsgLmRvaXQgPSB4ZnJtX2RvX21pZ3JhdGVfc3RhdGUgfSxcXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNzgzLX07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDEyOjI5OjE4LjQyMTQwNzI5OFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjEzMTQ3MTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdC5cblxuKipBbmFseXppbmcgWEZSTSBNaWdyYXRpb24gTWVzc2FnZSBIYW5kbGluZyoqXG5cblJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCBob3cgdGhlc2UgWEZSTSBtZXNzYWdlcyBhcmUgaGFuZGxlZCwgc3BlY2lmaWNhbGx5LCB0aGUgYFhGUk1fTVNHX01JR1JBVEVfU1RBVEVgIGFuZCBgWEZSTV9NU0dfTUlHUkFURWAgbWVzc2FnZXMuIEl0IHNlZW1zIHByZXR0eSBjbGVhciB0aGF0IGB4ZnJtX2RvX21pZ3JhdGVfc3RhdGVgIGlzIHRoZSBkZXNpZ25hdGVkIG5ldGxpbmsgaGFuZGxlciBmb3IgYFhGUk1fTVNHX01JR1JBVEVfU1RBVEVgLiBJJ2xsIHdhbnQgdG8gZGlnIGludG8gdGhhdCBmdW5jdGlvbidzIGltcGxlbWVudGF0aW9uLCBvYnZpb3VzbHkuIEknbSBhc3N1bWluZyBpdCBkZWFscyB3aXRoIHRoZSBtb3JlIGZpbmUtZ3JhaW5lZCBhc3BlY3RzIG9mIHN0YXRlIG1pZ3JhdGlvbiDigJMgc2V0dGluZyB1cCB0aGUgZ3JvdW5kd29yaywgcGVyaGFwcyB2ZXJpZnlpbmcgdGhlIHZhbGlkaXR5IG9mIHRoZSBtaWdyYXRpb24gcmVxdWVzdCwgb3IgcG90ZW50aWFsbHkgdXBkYXRpbmcgaW50ZXJuYWwgZGF0YSBzdHJ1Y3R1cmVzIHJlZ2FyZGluZyB0aGUgc3RhdGUuIEknbSBnb2luZyB0byBsb29rIGZvciBhbnkgbnVhbmNlcyB0byB2ZXJpZnkgYXNzdW1wdGlvbnMsIG9mIGNvdXJzZS5cblxuVGhlbiwgdGhlcmUgaXMgYHhmcm1fZG9fbWlncmF0ZWAsIHdoaWNoIGlzIHRoZSBuZXRsaW5rIGhhbmRsZXIgZm9yIGBYRlJNX01TR19NSUdSQVRFYC4gTG9naWNhbGx5LCBJIGV4cGVjdCB0aGlzIHRvIGJlIHRoZSBtb3JlIGdlbmVyYWwgZW50cnkgcG9pbnQgZm9yIGEgbWlncmF0aW9uIHJlcXVlc3QuIE1heWJlIGl0J3MgaGlnaGVyIGxldmVsLCBoYW5kbGluZyB0aGluZ3MgdGhhdCBhZmZlY3QgbXVsdGlwbGUgc3RhdGVzIG9yIHBlcmZvcm1pbmcgc3RhdGUgdHJhbnNpdGlvbnMuIEl0J3MgbGlrZWx5IHRoYXQgaXQgbGV2ZXJhZ2VzIHRoZSBzdGF0ZS1zcGVjaWZpYyBoYW5kbGVycyBpbiBgeGZybV9kb19taWdyYXRlX3N0YXRlYCBhdCBzb21lIGxldmVsLiBJJ2xsIG5lZWQgdG8gdHJhY2UgdGhlIGNhbGwgZmxvdyBmcm9tIGB4ZnJtX2RvX21pZ3JhdGVgIHRvIGRldGVybWluZSBob3cgdGhlIG1pZ3JhdGlvbiBwcm9jZXNzIGlzIGhhbmRsZWQgZnJvbSBhIGhpZ2gtbGV2ZWwuIFVuZGVyc3RhbmRpbmcgdGhpcyB3aWxsIGJlIGNyaXRpY2FsIGluIGRldmVsb3BpbmcgYW55IGNoYW5nZXMgdG8gdGhlIGN1cnJlbnQgc3lzdGVtLCBwYXJ0aWN1bGFybHkgd2l0aCByZXNwZWN0IHRvIGl0cyBpbXBhY3Qgb24gc3RhdGUgbWFuYWdlbWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODM0MCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDEyOjI5OjIyLjYzNDU1NzAwN1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTU2ODQyMzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieGZybV9kb19taWdyYXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC94ZnJtL3hmcm1fdXNlci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZnJtL3hmcm1fdXNlci5jPTMxMzc9c3RhdGljIGludCBjb3B5X2Zyb21fdXNlcl9taWdyYXRlKHN0cnVjdCB4ZnJtX21pZ3JhdGUgKm1hLFxcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmMtMzE4Mi1cXG5uZXQveGZybS94ZnJtX3VzZXIuYzozMTgzOnN0YXRpYyBpbnQgeGZybV9kb19taWdyYXRlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTMxODQtXFx0XFx0XFx0ICAgc3RydWN0IG5sYXR0ciAqKmF0dHJzLCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYz0zMzIyPXN0YXRpYyBpbnQgeGZybV9zZW5kX21pZ3JhdGVfc3RhdGUoc3RydWN0IG5ldCAqbmV0LFxcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmMtMzM0Ni1cXG5uZXQveGZybS94ZnJtX3VzZXIuYzozMzQ3OnN0YXRpYyBpbnQgeGZybV9kb19taWdyYXRlX3N0YXRlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTMzNDgtXFx0XFx0XFx0XFx0IHN0cnVjdCBubGF0dHIgKiphdHRycywgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmMtMzUyOC0jZWxzZVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjM1Mjk6c3RhdGljIGludCB4ZnJtX2RvX21pZ3JhdGVfc3RhdGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXFxubmV0L3hmcm0veGZybV91c2VyLmMtMzUzMC1cXHRcXHRcXHRcXHQgc3RydWN0IG5sYXR0ciAqKmF0dHJzLCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNTM1LVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjM1MzY6c3RhdGljIGludCB4ZnJtX2RvX21pZ3JhdGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXFxubmV0L3hmcm0veGZybV91c2VyLmMtMzUzNy1cXHRcXHRcXHQgICBzdHJ1Y3QgbmxhdHRyICoqYXR0cnMsIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jPTM3NDQ9c3RhdGljIGNvbnN0IHN0cnVjdCB4ZnJtX2xpbmsge1xcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmMtMzc3My1cXHRbWEZSTV9NU0dfR0VUQUUgICAgICAgLSBYRlJNX01TR19CQVNFXSA9IHsgLmRvaXQgPSB4ZnJtX2dldF9hZSAgfSxcXG5uZXQveGZybS94ZnJtX3VzZXIuYzozNzc0OlxcdFtYRlJNX01TR19NSUdSQVRFICAgICAtIFhGUk1fTVNHX0JBU0VdID0geyAuZG9pdCA9IHhmcm1fZG9fbWlncmF0ZSAgICB9LFxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM3NzUtXFx0W1hGUk1fTVNHX0dFVFNBRElORk8gIC0gWEZSTV9NU0dfQkFTRV0gPSB7IC5kb2l0ID0geGZybV9nZXRfc2FkaW5mbyAgIH0sXFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNzgxLVxcdFtYRlJNX01TR19HRVRERUZBVUxUICAtIFhGUk1fTVNHX0JBU0VdID0geyAuZG9pdCA9IHhmcm1fZ2V0X2RlZmF1bHQgICB9LFxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjM3ODI6XFx0W1hGUk1fTVNHX01JR1JBVEVfU1RBVEUgLSBYRlJNX01TR19CQVNFXSA9IHsgLmRvaXQgPSB4ZnJtX2RvX21pZ3JhdGVfc3RhdGUgfSxcXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNzgzLX07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDEyOjI5OjIyLjczMDI0NjU3NVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MjIyMDY2Njk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgWEZSTSBNaWdyYXRpb24gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIFhGUk0gbWlncmF0aW9uIHBhdGNoLiBUaGUgcHJpbWFyeSBlbnRyeSBwb2ludHMgYXBwZWFyIHRvIGJlIGB4ZnJtX2RvX21pZ3JhdGVfc3RhdGVgIGFuZCBgeGZybV9kb19taWdyYXRlYC4gVGhlIHBhdGNoIGRlc2NyaXB0aW9uIHNheXMgaXQncyBmdW5jdGlvbmFsIGFuZCBhZGRyZXNzZXMgYSBidWcsIHdoaWNoIGlzIGdvb2QuIE15IGZvY3VzIGlzIG9uIHVuZGVyc3RhbmRpbmcgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgdGhlIGtleSBmdW5jdGlvbnMgaW52b2x2ZWQuXG5cblRoZSBjb25maWdzIHJlbGV2YW50IHRvIHRoaXMgcGF0Y2ggYXJlIGBYRlJNX1VTRVJgIGFuZCBgWEZSTV9NSUdSQVRFYC4gSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgc3VyZSB0aGUgZGVwZW5kZW5jaWVzIGFyZSBjb3JyZWN0LiBMZXQncyBzZWUuLi4gYFhGUk1fVVNFUmAgYW5kIGBYRlJNX01JR1JBVEVgIGJvdGggZGVwZW5kIG9uIGVpdGhlciBgWEZSTWAgb3IgYElORVRgLiBgWEZSTV9VU0VSYCBpcyBjb250aW5nZW50IG9uIGBJTkVUYCwgYnV0IGBYRlJNX01JR1JBVEVgIGRlcGVuZHMgb24gYFhGUk1gLiBJJ2xsIGp1c3QgbGlzdCB0aGUgdXNlci1mYWNpbmcgY29uZmlnczogYFhGUk1fVVNFUmAgYW5kIGBYRlJNX01JR1JBVEVgLlxuXG5Ob3csIEkgbmVlZCB0byBjaGVjayBzb21ldGhpbmcgaW1wb3J0YW50OiBpcyBgeGZybV9zZW5kX21pZ3JhdGVfc3RhdGVgIGEgc3RhdGljIGZ1bmN0aW9uPyBZZXMsIGl0IGlzLiBTbywgYHhmcm1fZG9fbWlncmF0ZV9zdGF0ZWAgYW5kIGB4ZnJtX2RvX21pZ3JhdGVgIGFyZSBpbmRlZWQgdGhlIG5ldGxpbmsgY2FsbGJhY2tzLiBUaGV5J3JlIGRlZmluaXRlbHkgY3JpdGljYWwsIHNvIEknbGwgaW5jbHVkZSB0aGVtIGluIHRoZSBGb2N1c1N5bWJvbHMgbGlzdC5cblxuUXVpY2tseSB2ZXJpZnlpbmcsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjYWxsZXJzIG9mIGB4ZnJtX3NlbmRfbWlncmF0ZV9zdGF0ZWAuIExldCdzIHNlZS4uLiBgeGZybV9kb19taWdyYXRlX3N0YXRlYCBjYWxscyBgeGZybV9zZW5kX21pZ3JhdGVfc3RhdGVgLiBEb2VzIGB4ZnJtX2RvX21pZ3JhdGVgPyBObywgaXQgY2FsbHMgYHhmcm1fc2VuZF9taWdyYXRlYCBpbnN0ZWFkLiBXYWl0IGEgbWludXRlLi4uIHRoZSBwYXRjaCAqb25seSogbW9kaWZpZXMgYHhmcm1fc2VuZF9taWdyYXRlX3N0YXRlYC4gSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIHRoYXQgY2FsbGVyIGFuYWx5c2lzLCBqdXN0IHRvIGJlIHN1cmUuIEl0IGNvdWxkIGJlIGltcG9ydGFudC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTU2NywiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxMjoyOToyOC45NTIzMTU0NjlaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc2OTU3NDQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhmcm1fc2VuZF9taWdyYXRlX3N0YXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC94ZnJtL3hmcm1fdXNlci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZnJtL3hmcm1fdXNlci5jPTMzMDk9c3RhdGljIHVuc2lnbmVkIGludCB4ZnJtX21pZ3JhdGVfc3RhdGVfbXNnc2l6ZShjb25zdCBzdHJ1Y3QgeGZybV9taWdyYXRlICptLFxcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmMtMzMyMS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYzozMzIyOnN0YXRpYyBpbnQgeGZybV9zZW5kX21pZ3JhdGVfc3RhdGUoc3RydWN0IG5ldCAqbmV0LFxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTMzMjMtXFx0XFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IHhmcm1fdXNlcl9taWdyYXRlX3N0YXRlICp1bSxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jPTMzNDc9c3RhdGljIGludCB4ZnJtX2RvX21pZ3JhdGVfc3RhdGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNTEwLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjM1MTE6XFx0ZXJyID0geGZybV9zZW5kX21pZ3JhdGVfc3RhdGUobmV0LCB1bSwgXFx1MDAyNm0sIHhjLVxcdTAwM2VkaXIsXFxubmV0L3hmcm0veGZybV91c2VyLmMtMzUxMi1cXHRcXHRcXHRcXHQgICAgICBubGgtXFx1MDAzZW5sbXNnX3BpZCwgbmxoLVxcdTAwM2VubG1zZ19zZXEpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxMjoyOToyOS4wMjkyNzc2MzhaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODI3NjE1NDExOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgWEZSTSBTdGF0ZSBNaWdyYXRpb24gUGF0aCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgWEZSTSBjb2RlIHJlbGF0ZWQgdG8gc3RhdGUgbWlncmF0aW9uLiAgTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgYHhmcm1fZG9fbWlncmF0ZV9zdGF0ZWAgaXMgdGhlIGtleSBmdW5jdGlvbiB0byBmb2N1cyBvbi4gIFRoZSBjb2RlIGNsZWFybHkgaW5kaWNhdGVzIGl0J3MgdGhlIG9ubHkgb25lIHRoYXQgZGlyZWN0bHkgY2FsbHMgYHhmcm1fc2VuZF9taWdyYXRlX3N0YXRlYC4gVGhhdCdzIGEgc3Ryb25nIGluZGljYXRpb24gb2YgaXRzIGNlbnRyYWwgcm9sZS5cblxuSSBzZWUgdGhhdCBpdCdzIGEgYHN0YXRpY2AgZnVuY3Rpb24sIHdoaWNoIGluaXRpYWxseSBnYXZlIG1lIHBhdXNlLiAgTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gYXZvaWQgc3RhdGljcywgYnV0IHRoZW4gSSByZW1lbWJlciB0aGlzIHBhcnRpY3VsYXIgZnVuY3Rpb24gaXMgYSBuZXRsaW5rIGNhbGxiYWNrIHJlZ2lzdGVyZWQgd2l0aGluIHRoZSBgeGZybV9saW5rYCBhcnJheS4gVGhhdCBtZWFucyBpdHMgYWRkcmVzcyBpcyBiZWluZyB0YWtlbi4gIENydWNpYWxseSwgYmVjYXVzZSBpdHMgYWRkcmVzcyBpcyB0YWtlbiwgdGhlIGNvbXBpbGVyICp3b24ndCogaW5saW5lIGl0LCB3aGljaCBpcyB0aGUgcHJpbWFyeSByZWFzb24gdG8gcHJlZmVyIG5vbi1zdGF0aWMgaW4gdGhpcyBjYXNlLiAgSXQgcmVtYWlucyBhIGRpc3RpbmN0IHN5bWJvbCwgYSBkaXJlY3QgZW50cnkgcG9pbnQsIGV2ZW4gaWYgaXQncyB0ZWNobmljYWxseSBhIGhlbHBlci4gVGhlIHJlYWwgZW50cnkgcG9pbnQgaXMgYHhmcm1fdXNlcl9yY3ZfbXNnYCwgYnV0IHRoYXQgY2FsbHMgYHhmcm1fZG9fbWlncmF0ZV9zdGF0ZWAuXG5cbkkndmUgY29uZmlybWVkIHRoYXQgYHhmcm1fZG9fbWlncmF0ZV9zdGF0ZWAgaXMgaW5kZWVkIHRoZSAqbW9zdCogYXBwcm9wcmlhdGUgZm9jdXMgc3ltYm9sLCBldmVuIGdpdmVuIG15IGJpYXMgYWdhaW5zdCBzdGF0aWNzLCBiYXNlZCBvbiB0aGUgc3BlY2lmaWMgc2l0dWF0aW9uIG9mIGEgbmV0bGluayBjYWxsYmFjayB0aGF0J3MgYWRkcmVzcyBpcyB0YWtlbi5cblxuSSBuZWVkIHRvIGNvbmZpcm0gaWYgdGhlcmUgYXJlIGFueSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb25zIG5lY2Vzc2FyeSBmb3IgZnV6emluZyB0aGlzIHBhdGguIExldCBtZSBkb3VibGUgY2hlY2suLi4gWWVzLCBJIG5lZWQgdG8gZW5hYmxlIGBYRlJNX1VTRVJgIGFuZCBgWEZSTV9NSUdSQVRFYC5cblxuR2l2ZW4gdGhpcyBpcyBmdW5jdGlvbmFsIGNvcmUgbmV0d29ya2luZyBjb2RlIGFuZCBpcyByZWFjaGFibGUgdmlhIG5ldGxpbmssIEknbSBjb25maWRlbnQgdGhhdCBmdXp6aW5nIHRoaXMgYXJlYSBpcyB3b3J0aCBpdC4gIEknbSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZz10cnVlYC4gVGhlIHBhdGNoIGFkZHMgUkNVIGxvY2tpbmcgYXJvdW5kIHRoZSBuZXRsaW5rIG11bHRpY2FzdCBjYWxsIHNvIGl0J3MgY3JpdGljYWwgd2UgY2hlY2sgZm9yIGFueSByZW1haW5pbmcgbG9ja2luZyBpc3N1ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNjU5LCJPdXRwdXRUb2tlbnMiOjEwNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxMjoyOTozNy4zMDU0MzU1NDZaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjc1NTgwOTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlhGUk1fVVNFUlwiLFxuICAgIFwiWEZSTV9NSUdSQVRFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwieGZybV9kb19taWdyYXRlX3N0YXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBSQ1UgbG9ja2luZyBhcm91bmQgYSBuZXRsaW5rIG11bHRpY2FzdCBjYWxsIGluIHRoZSBYRlJNIHN0YXRlIG1pZ3JhdGlvbiBwYXRoLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29yZSBuZXR3b3JraW5nIGNvZGUgcmVhY2hhYmxlIHZpYSBuZXRsaW5rLCBhbmQgZnV6emluZyBpdCBjYW4gaGVscCBlbnN1cmUgbm8gZnVydGhlciBSQ1Ugb3IgbG9ja2luZyBpc3N1ZXMgZXhpc3QuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiWEZSTV9VU0VSXCIsXG4gICAgXCJYRlJNX01JR1JBVEVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ4ZnJtX2RvX21pZ3JhdGVfc3RhdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIFJDVSBsb2NraW5nIGFyb3VuZCBhIG5ldGxpbmsgbXVsdGljYXN0IGNhbGwgaW4gdGhlIFhGUk0gc3RhdGUgbWlncmF0aW9uIHBhdGguIFRoaXMgaXMgZnVuY3Rpb25hbCBjb3JlIG5ldHdvcmtpbmcgY29kZSByZWFjaGFibGUgdmlhIG5ldGxpbmssIGFuZCBmdXp6aW5nIGl0IGNhbiBoZWxwIGVuc3VyZSBubyBmdXJ0aGVyIFJDVSBvciBsb2NraW5nIGlzc3VlcyBleGlzdC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowmsl5b[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-31 12:27:21 +0000 UTC FinishedAt: 2026-07-31 12:29:39 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "XFRM_USER", "XFRM_MIGRATE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "XFRM_USER", "XFRM_MIGRATE" ], "series_id": "7f865621-de85-46c3-9af6-efa1d5d7b74d" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "xfrm_do_migrate_state" ], "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+CgkJCTx0ZD4yMDI2LzA3LzMxIDEyOjI4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hGUk1fVVNFUiYjMzQ7LAogICAgJiMzNDtYRlJNX01JR1JBVEUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt4ZnJtX2RvX21pZ3JhdGVfc3RhdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBSQ1UgbG9ja2luZyBhcm91bmQgYSBuZXRsaW5rIG11bHRpY2FzdCBjYWxsIGluIHRoZSBYRlJNIHN0YXRlIG1pZ3JhdGlvbiBwYXRoLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29yZSBuZXR3b3JraW5nIGNvZGUgcmVhY2hhYmxlIHZpYSBuZXRsaW5rLCBhbmQgZnV6emluZyBpdCBjYW4gaGVscCBlbnN1cmUgbm8gZnVydGhlciBSQ1Ugb3IgbG9ja2luZyBpc3N1ZXMgZXhpc3QuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTI6Mjg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBlYjUzNDRlODk5N2ZlNjMwYWUwMjg2NDM4MTY4ZGVmNGRhYzE2OWQyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMzEgMTI6Mjg6MzcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3hmcm0veGZybV91c2VyLmMgYi9uZXQveGZybS94ZnJtX3VzZXIuY1xuaW5kZXggZDZkYjYzMzA0YmE2Yi4uMGJhMDYxNGQ2NTBmMyAxMDA2NDRcbi0tLSBhL25ldC94ZnJtL3hmcm1fdXNlci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQveGZybS94ZnJtX3VzZXIuY1xuQEAgLTMzMzcsNyAmIzQzOzMzMzcsMTEgQEAgc3RhdGljIGludCB4ZnJtX3NlbmRfbWlncmF0ZV9zdGF0ZShzdHJ1Y3QgbmV0ICpuZXQsXG4gXHRcdHJldHVybiBlcnI7XG4gXHR9XG4gXG4tXHRyZXR1cm4geGZybV9ubG1zZ19tdWx0aWNhc3QobmV0LCBza2IsIDAsIFhGUk1OTEdSUF9NSUdSQVRFKTtcbiYjNDM7XHRyY3VfcmVhZF9sb2NrKCk7XG4mIzQzO1x0ZXJyID0geGZybV9ubG1zZ19tdWx0aWNhc3QobmV0LCBza2IsIDAsIFhGUk1OTEdSUF9NSUdSQVRFKTtcbiYjNDM7XHRyY3VfcmVhZF91bmxvY2soKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIGVycjtcbiB9XG4gXG4gc3RhdGljIGludCB4ZnJtX2RvX21pZ3JhdGVfc3RhdGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTI6Mjg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hGUk1fVVNFUiYjMzQ7LAogICAgJiMzNDtYRlJNX01JR1JBVEUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt4ZnJtX2RvX21pZ3JhdGVfc3RhdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBSQ1UgbG9ja2luZyBhcm91bmQgYSBuZXRsaW5rIG11bHRpY2FzdCBjYWxsIGluIHRoZSBYRlJNIHN0YXRlIG1pZ3JhdGlvbiBwYXRoLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29yZSBuZXR3b3JraW5nIGNvZGUgcmVhY2hhYmxlIHZpYSBuZXRsaW5rLCBhbmQgZnV6emluZyBpdCBjYW4gaGVscCBlbnN1cmUgbm8gZnVydGhlciBSQ1Ugb3IgbG9ja2luZyBpc3N1ZXMgZXhpc3QuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBlYjUzNDRlODk5N2ZlNjMwYWUwMjg2NDM4MTY4ZGVmNGRhYzE2OWQyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBKdWwgMzEgMTI6Mjg6MzcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX3VzZXIuYyBiL25ldC94ZnJtL3hmcm1fdXNlci5jCmluZGV4IGQ2ZGI2MzMwNGJhNmIuLjBiYTA2MTRkNjUwZjMgMTAwNjQ0Ci0tLSBhL25ldC94ZnJtL3hmcm1fdXNlci5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC94ZnJtL3hmcm1fdXNlci5jCkBAIC0zMzM3LDcgJiM0MzszMzM3LDExIEBAIHN0YXRpYyBpbnQgeGZybV9zZW5kX21pZ3JhdGVfc3RhdGUoc3RydWN0IG5ldCAqbmV0LAogCQlyZXR1cm4gZXJyOwogCX0KIAotCXJldHVybiB4ZnJtX25sbXNnX211bHRpY2FzdChuZXQsIHNrYiwgMCwgWEZSTU5MR1JQX01JR1JBVEUpOwomIzQzOwlyY3VfcmVhZF9sb2NrKCk7CiYjNDM7CWVyciA9IHhmcm1fbmxtc2dfbXVsdGljYXN0KG5ldCwgc2tiLCAwLCBYRlJNTkxHUlBfTUlHUkFURSk7CiYjNDM7CXJjdV9yZWFkX3VubG9jaygpOwomIzQzOwomIzQzOwlyZXR1cm4gZXJyOwogfQogCiBzdGF0aWMgaW50IHhmcm1fZG9fbWlncmF0ZV9zdGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCwKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTI6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA5OQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDIwMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQYXRjaCBpbiBuZXQveGZybS94ZnJtX3VzZXIuYyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG5ldC94ZnJtL3hmcm1fdXNlci5jYC4gSXQgbG9va3MgbGlrZSB0aGUgY2hhbmdlIGlzIHByZXR0eSBmb2N1c2VkIOKAkyB0aGV5JiMzOTt2ZSBhZGRlZCBgcmN1X3JlYWRfbG9jaygpYCBhbmQgYHJjdV9yZWFkX3VubG9jaygpYCBhcm91bmQgdGhhdCBgeGZybV9ubG1zZ19tdWx0aWNhc3RgIGNhbGwgd2l0aGluIGB4ZnJtX3NlbmRfbWlncmF0ZV9zdGF0ZWAuIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgaXMgbGlrZWx5IGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgUkNVIGlzc3VlLCBwcm9iYWJseSBwcmV2ZW50aW5nIGEgd2FybmluZyBvciBhIGxhdGVudCBidWcgcmVsYXRlZCB0byBjb25jdXJyZW50IGFjY2Vzcy4gRnVuY3Rpb25hbGx5LCBpdCBsb29rcyBzb3VuZC4gSSBuZWVkIHRvIGNvbmZpcm0gdGhlIFJDVSB1c2UgaXMgY29ycmVjdC4KCk5vdywgbGV0JiMzOTtzIHN0ZXAgYmFjayBhbmQgY29uc2lkZXIgaWYgd2Ugc2hvdWxkIGZ1enogdGhpcyBjb2RlLiBJdCByZXNpZGVzIHdpdGhpbiBYRlJNIChJUHNlYyksIHdoaWNoICppcyogYSByZWFjaGFibGUgcGFydCBvZiB0aGUga2VybmVsLCBzbyBmdXp6aW5nIGRlZmluaXRlbHkgbWFrZXMgc2Vuc2UgaGVyZS4KCkZpbmFsbHksIGxldCYjMzk7cyBuYWlsIGRvd24gdGhvc2UgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byBjb25maXJtIGBuZXQveGZybS94ZnJtX3VzZXIuY2AgaXMgY29tcGlsZWQgd2hlbiBgQ09ORklHX1hGUk1fVVNFUmAgaXMgZW5hYmxlZC4gVGltZSB0byB2ZXJpZnkgdGhhdCBhbmQgc2VlIHdoYXQgdGhhdCBleHBvc2VzIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDEyOjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hmcm1fdXNlci5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3hmcm0vTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3hmcm0vTWFrZWZpbGU9MTk9b2JqLSQoQ09ORklHX1hGUk1fQUxHTykgJiM0Mzs9IHhmcm1fYWxnby5vXG5uZXQveGZybS9NYWtlZmlsZToyMDpvYmotJChDT05GSUdfWEZSTV9VU0VSKSAmIzQzOz0geGZybV91c2VyLm9cbm5ldC94ZnJtL01ha2VmaWxlLTIxLW9iai0kKENPTkZJR19YRlJNX1VTRVJfQ09NUEFUKSAmIzQzOz0geGZybV9jb21wYXQub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDEyOjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2NzgKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBhcyBpZiB0aGV5IHdlcmUgbXkgb3duIGltbWVkaWF0ZSBwcm9jZXNzaW5nOgoKKipRdWljayBYRlJNIENvbnNpZGVyYXRpb25zKioKClJpZ2h0LCBsZXQmIzM5O3Mgc2VlLiBGaXJzdCB0aGluZ3MgZmlyc3QsIGl0IHNlZW1zIGxpa2Ugd2UgbmVlZCB0byBlbnN1cmUgYENPTkZJR19YRlJNX1VTRVJgIGlzIGVuYWJsZWQuIFRoYXQmIzM5O3MgcHJldHR5IGZ1bmRhbWVudGFsLCBvYnZpb3VzbHksIGdpdmVuIHRoZSBjb250ZXh0LiBOb3csIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGltcGxpY2F0aW9ucywgYW5kIEkgc2hvdWxkIHJlYWxseSBjaGVjayBvdXQgdGhlIGB4ZnJtX3NlbmRfbWlncmF0ZV9zdGF0ZWAgZnVuY3Rpb24uIFdoYXQgaXMgdGhhdCBmdW5jdGlvbiB0cnlpbmcgdG8gZG8sIGFuZCBpcyBpdCBhIGtleSBwYXJ0IG9mIHRoZSBmbG93PyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSBpbiB0aGlzIHN5c3RlbS4gTGV0JiMzOTtzIHNlZSBpZiB0aGF0IHBhcnQgb2YgdGhlIGNvZGUgaXMgaW1wb3J0YW50IGZvciBnZXR0aW5nIHRoaXMgd2hvbGUgdGhpbmcgdG8gd29yay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxMjoyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4ZnJtX3NlbmRfbWlncmF0ZV9zdGF0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC94ZnJtL3hmcm1fdXNlci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94ZnJtL3hmcm1fdXNlci5jPTMzMDk9c3RhdGljIHVuc2lnbmVkIGludCB4ZnJtX21pZ3JhdGVfc3RhdGVfbXNnc2l6ZShjb25zdCBzdHJ1Y3QgeGZybV9taWdyYXRlICptLFxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTMzMjEtXG5uZXQveGZybS94ZnJtX3VzZXIuYzozMzIyOnN0YXRpYyBpbnQgeGZybV9zZW5kX21pZ3JhdGVfc3RhdGUoc3RydWN0IG5ldCAqbmV0LFxubmV0L3hmcm0veGZybV91c2VyLmMtMzMyMy1cdFx0XHRcdCAgIGNvbnN0IHN0cnVjdCB4ZnJtX3VzZXJfbWlncmF0ZV9zdGF0ZSAqdW0sXG4tLVxubmV0L3hmcm0veGZybV91c2VyLmM9MzM0Nz1zdGF0aWMgaW50IHhmcm1fZG9fbWlncmF0ZV9zdGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNTEwLVxubmV0L3hmcm0veGZybV91c2VyLmM6MzUxMTpcdGVyciA9IHhmcm1fc2VuZF9taWdyYXRlX3N0YXRlKG5ldCwgdW0sIFx1MDAyNm0sIHhjLVx1MDAzZWRpcixcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM1MTItXHRcdFx0XHQgICAgICBubGgtXHUwMDNlbmxtc2dfcGlkLCBubGgtXHUwMDNlbmxtc2dfc2VxKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxMjoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTg2CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBYRlJNIFN0YXRlIE1pZ3JhdGlvbiBMb2dpYyoqCgpPa2F5LCBzbyBgeGZybV9kb19taWdyYXRlX3N0YXRlYCBpcyB0aGUgZnVuY3Rpb24gdGhhdCBraWNrcyBvZmYgdGhlIG1pZ3JhdGlvbiBwcm9jZXNzLCBhbmQgaXQgbG9va3MgbGlrZSBpdCBjYWxscyBgeGZybV9zZW5kX21pZ3JhdGVfc3RhdGVgLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGRpZyBkZWVwZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGhvdyB0aGlzIGZ1bmN0aW9uIHBsYXlzIHdpdGggdGhlIGJyb2FkZXIgc3lzdGVtIGFyY2hpdGVjdHVyZS4KClNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGltbWVkaWF0ZWx5IHZlcmlmeSBpZiBgQ09ORklHX1hGUk1fTUlHUkFURWAgaXMgZXZlbiBlbmFibGVkIGluIHRoZSBzeXN0ZW0gY29uZmlndXJhdGlvbi4gVGhhdCBzZWVtcyBsaWtlIGEgbG9naWNhbCBmaXJzdCBzdGVwIOKAkyBpdOKAmXMgYSBxdWljayBzYW5pdHkgY2hlY2sgdG8gYXZvaWQgd2FzdGluZyB0aW1lIG9uIGNvZGUgcGF0aHMgdGhhdCBtaWdodCBub3QgYmUgcmVsZXZhbnQgdG8gdGhlIGN1cnJlbnQga2VybmVsIGJ1aWxkLiBCZWZvcmUgSSBnbyBmdXJ0aGVyIGRvd24gdGhpcyByYWJiaXQgaG9sZSwgbGV04oCZcyBjb25maXJtIHRoYXQgdGhlIG1pZ3JhdGlvbiBmZWF0dXJlIGlzIGFjdHVhbGx5IGJ1aWx0IGludG8gdGhpcyBwYXJ0aWN1bGFyIGtlcm5lbCBjb25maWd1cmF0aW9uLiBUaGlzIHdpbGwgaW5mbHVlbmNlIGhvdyBJIGludGVycHJldCB0aGUgcmVzdCBvZiB0aGUgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxMjoyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4ZnJtX2RvX21pZ3JhdGVfc3RhdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQveGZybS94ZnJtX3VzZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGZybS94ZnJtX3VzZXIuYz0zMzIyPXN0YXRpYyBpbnQgeGZybV9zZW5kX21pZ3JhdGVfc3RhdGUoc3RydWN0IG5ldCAqbmV0LFxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTMzNDYtXG5uZXQveGZybS94ZnJtX3VzZXIuYzozMzQ3OnN0YXRpYyBpbnQgeGZybV9kb19taWdyYXRlX3N0YXRlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxubmV0L3hmcm0veGZybV91c2VyLmMtMzM0OC1cdFx0XHRcdCBzdHJ1Y3QgbmxhdHRyICoqYXR0cnMsIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNTI4LSNlbHNlXG5uZXQveGZybS94ZnJtX3VzZXIuYzozNTI5OnN0YXRpYyBpbnQgeGZybV9kb19taWdyYXRlX3N0YXRlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxubmV0L3hmcm0veGZybV91c2VyLmMtMzUzMC1cdFx0XHRcdCBzdHJ1Y3QgbmxhdHRyICoqYXR0cnMsIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYz0zNzQ0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgeGZybV9saW5rIHtcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNzgxLVx0W1hGUk1fTVNHX0dFVERFRkFVTFQgIC0gWEZSTV9NU0dfQkFTRV0gPSB7IC5kb2l0ID0geGZybV9nZXRfZGVmYXVsdCAgIH0sXG5uZXQveGZybS94ZnJtX3VzZXIuYzozNzgyOlx0W1hGUk1fTVNHX01JR1JBVEVfU1RBVEUgLSBYRlJNX01TR19CQVNFXSA9IHsgLmRvaXQgPSB4ZnJtX2RvX21pZ3JhdGVfc3RhdGUgfSxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM3ODMtfTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxMjoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODY3CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgYSBDb25kaXRpb25hbCBCcmFuY2gqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHpvb20gaW4uIE15IG1lbnRhbCBjdXJzb3IgaXMgaG92ZXJpbmcgYXJvdW5kIGxpbmUgMzUyOCDigJMgc3BlY2lmaWNhbGx5LCB0aGUgYCNlbHNlYCBibG9jayB0aGVyZS4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgSSYjMzk7bSBpbW1lZGlhdGVseSB0cnlpbmcgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiB0aGUgcHJlY2VkaW5nIGBpZmAgc3RhdGVtZW50LiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBjb25kaXRpb24gdGhhdCBsZWFkcyBleGVjdXRpb24gZG93biAqdGhpcyogcGF0aC4gSSYjMzk7bSB0cnlpbmcgdG8gcXVpY2tseSBncmFzcCB3aGF0IHNpdHVhdGlvbiB0aGlzIGAjZWxzZWAgaGFuZGxlcywgYW5kIHdoYXQgYXNzdW1wdGlvbnMgYXJlIG1hZGUgd2hlbiB0aGUgaW5pdGlhbCBgaWZgIGNvbmRpdGlvbiBpc24mIzM5O3QgbWV0LiBJcyBpdCBhIGZhaWx1cmUgY2FzZT8gQSBkZWZhdWx0PyBBbiBhbHRlcm5hdGl2ZSBhbGdvcml0aG0/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBsb2dpYyBmbG93IGhlcmUgdG8gYXBwcmVjaWF0ZSB0aGUgcG90ZW50aWFsIGltcGxpY2F0aW9ucyBvZiB0aGlzIHNwZWNpZmljIGJsb2NrLiBJcyB0aGVyZSBhIGNoYW5jZSBvZiBzb21lIGNvbW1vbiBjb2RlLXNtZWxsIGluIHRoaXMgYmxvY2s/IFdoYXQgaXMgdGhlIGdvYWwgb2YgdGhpcyBzZWN0aW9uIG9mIGNvZGU/IEkmIzM5O20gYWxyZWFkeSBmb3JtdWxhdGluZyBxdWVzdGlvbnMgaW4gbXkgbWluZCBhYm91dCBwb3RlbnRpYWwgZWRnZSBjYXNlcyBvciBlcnJvciBzY2VuYXJpb3MgdGhhdCB0aGlzIGAjZWxzZWAgbWlnaHQgbmVlZCB0byBhY2NvdW50IGZvciwgdG8gZmluZCBob3cgdGhlIGNvZGUgaXMgc3RydWN0dXJlZC4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIHRoZSBjb25kaXRpb25hbCBsb2dpYyBhbmQgdGhlIGRhdGEgaXQgb3BlcmF0ZXMgb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDEyOjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3hmcm0veGZybV91c2VyLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzNTIwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzM1MjA6XHRcdHJldHVybiBlcnI7XG4zNTIxOlx0b3V0X3hjOlxuMzUyMjpcdFx0eGMtXHUwMDNla20uc3RhdGUgPSBYRlJNX1NUQVRFX0RFQUQ7XG4zNTIzOlx0XHR4ZnJtX3N0YXRlX3B1dCh4Yyk7XG4zNTI0Olx0XHR4ZnJtX3N0YXRlX3B1dCh4KTtcbjM1MjU6XHRcdHJldHVybiBlcnI7XG4zNTI2Olx0fVxuMzUyNzpcdFxuMzUyODpcdCNlbHNlXG4zNTI5Olx0c3RhdGljIGludCB4ZnJtX2RvX21pZ3JhdGVfc3RhdGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXG4zNTMwOlx0XHRcdFx0XHQgc3RydWN0IG5sYXR0ciAqKmF0dHJzLCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4zNTMxOlx0e1xuMzUzMjpcdFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLCBcJiMzNDtYRlJNX01TR19NSUdSQVRFX1NUQVRFIGlzIG5vdCBzdXBwb3J0ZWRcJiMzNDspO1xuMzUzMzpcdFx0cmV0dXJuIC1FTk9QUk9UT09QVDtcbjM1MzQ6XHR9XG4zNTM1Olx0XG4zNTM2Olx0c3RhdGljIGludCB4ZnJtX2RvX21pZ3JhdGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXG4zNTM3Olx0XHRcdFx0ICAgc3RydWN0IG5sYXR0ciAqKmF0dHJzLCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4zNTM4Olx0e1xuMzUzOTpcdFx0cmV0dXJuIC1FTk9QUk9UT09QVDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTI6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQ4OAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipBbmFseXppbmcgQ29uZGl0aW9uYWwgQ29tcGlsYXRpb24qKgoKQWxyaWdodCwgbXkgaW1tZWRpYXRlIHRob3VnaHQgdXBvbiBzZWVpbmcgdGhhdCBgI2lmZGVmYCBkaXJlY3RpdmUgYXJvdW5kIGxpbmUgMzUyOCBpczogKldoeSBpcyB0aGlzIGhlcmU/KiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dC4gVGhpcyBpc24mIzM5O3QganVzdCBhIGNhc3VhbCBpbmNsdXNpb247IGl0JiMzOTtzIGEgc3BlY2lmaWMsIGNvbnRyb2xsZWQgYWN0aXZhdGlvbiBvciBkZWFjdGl2YXRpb24gb2YgY29kZS4gSSYjMzk7bSBhbHJlYWR5IG1lbnRhbGx5IHJ1bm5pbmcgdGhyb3VnaCB0aGUgcG9zc2libGUgcHJlcHJvY2Vzc29yIHN5bWJvbHMgdGhhdCBtaWdodCBiZSBjb250cm9sbGluZyB0aGlzIGJyYW5jaC4gSXMgaXQgYW4gYXJjaGl0ZWN0dXJhbCBmbGFnPyBBIGZlYXR1cmUgdG9nZ2xlPyBBIHBsYXRmb3JtLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24/CgpJIG5lZWQgdG8gcXVpY2tseSBncmFzcCB3aGF0IGNvbmRpdGlvbiBpcyBiZWluZyB0ZXN0ZWQuIElzIHRoZXJlIGEgZGVmaW5lZCBtYWNybyB0aGF0JiMzOTtzIGNvbnRpbmdlbnQgb24gdGhlIGJ1aWxkIGVudmlyb25tZW50LCBjb21waWxlciB2ZXJzaW9uLCBvciBzcGVjaWZpYyBsaWJyYXJ5IGluY2x1c2lvbj8gVGhlIGltcGxpY2F0aW9uIGhlcmUgaXMgdGhhdCB0aGUgY29kZSAqaW5zaWRlKiB0aGF0IGAjaWZkZWZgIGJsb2NrIG1heSBub3QgYWx3YXlzIGJlIGV4ZWN1dGVkLCBvciBpdCBtYXkgYmUgYSBjb21wbGV0ZSBhbHRlcm5hdGUgb2YgYW5vdGhlciBibG9jay4gVGhpcyBiZWdzIHRoZSBxdWVzdGlvbnMsIHdoaWNoIGNvZGUgYmxvY2sgaXMgdGhlIHJpZ2h0IG9uZSB0byBhbmFseXplPyBXaGF0IGNvbmRpdGlvbnMgd291bGQgbGVhZCB0byB0aGUgY29kZSBub3QgYmVpbmcgZXhlY3V0ZWQ/CgpNeSBuZXh0IHN0ZXAgd2lsbCBiZSB0byBzZWFyY2ggZm9yIHRoZSBkZWZpbml0aW9uIG9mIHRoYXQgbWFjcm8uIEkmIzM5O2xsIHByb2JhYmx5IHN0YXJ0IHdpdGggYSBncmVwIG9yIGEgcXVpY2sganVtcCB0byB0aGUgbWFjcm8gZGVmaW5pdGlvbiBpbiB0aGUgSURFLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRyaWdnZXJzIHRoaXMgY29uZGl0aW9uYWwgY29tcGlsYXRpb24uIElzIGl0IHNvbWV0aGluZyBJJiMzOTt2ZSBzZWVuIGJlZm9yZSwgb3IgaXMgdGhpcyBuZXcsIGFuZCBwb3RlbnRpYWxseSBzb21ldGhpbmcgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdG8gZGlhZ25vc2UgdGhlIGN1cnJlbnQgaXNzdWU/CgpVbHRpbWF0ZWx5LCBteSBnb2FsIGlzIHRvIGNvbXByZWhlbmQgdGhlICp3aHkqIGJlaGluZCB0aGlzIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uLiBJcyBpdCBlbGVnYW50IGFuZCBpbnRlbnRpb25hbCwgb3IgYSB3b3JrYXJvdW5kPyBJcyBpdCBhZGRpbmcgdG8gdGhlIG1haW50YWluYWJpbGl0eSwgb3Igb2JzY3VyaW5nIHRoZSBsb2dpYz8gSSBoYXZlIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgYWZmZWN0cyB0aGUgY29kZSBmbG93IGluIHRoZSBjb250ZXh0IG9mIHRoZSBwcm9ibGVtIEkmIzM5O20gY3VycmVudGx5IGZhY2luZy4gVGhpcyBzaW5nbGUgZGlyZWN0aXZlIG1pZ2h0IGhvbGQgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGEgY29tcGxleCBzZXQgb2YgYmVoYXZpb3JzLCBvciBpdCBjb3VsZCBiZSBhIHJlZCBoZXJyaW5nLCBhbmQgSSBuZWVkIHRvIGRldGVybWluZSB0aGF0IHF1aWNrbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDEyOjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0OyNpZmRlZiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC94ZnJtL3hmcm1fdXNlci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94ZnJtL3hmcm1fdXNlci5jPTEyMDQ9c3RhdGljIHZvaWQgeHNvX3RvX3h1b19pZmluZGV4KGNvbnN0IHN0cnVjdCB4ZnJtX2Rldl9vZmZsb2FkICp4c28sIGludCBpZmluZGV4LFxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTEyMTMtXG5uZXQveGZybS94ZnJtX3VzZXIuYzoxMjE0OiNpZmRlZiBDT05GSUdfWEZSTV9NSUdSQVRFXG5uZXQveGZybS94ZnJtX3VzZXIuYy0xMjE1LXN0YXRpYyB2b2lkIHhzb190b194dW8oY29uc3Qgc3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhzbyxcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYz0xOTgxPXN0YXRpYyBpbnQgdmVyaWZ5X3BvbGljeV90eXBlKHU4IHR5cGUsIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYy0xOTg0LVx0Y2FzZSBYRlJNX1BPTElDWV9UWVBFX01BSU46XG5uZXQveGZybS94ZnJtX3VzZXIuYzoxOTg1OiNpZmRlZiBDT05GSUdfWEZSTV9TVUJfUE9MSUNZXG5uZXQveGZybS94ZnJtX3VzZXIuYy0xOTg2LVx0Y2FzZSBYRlJNX1BPTElDWV9UWVBFX1NVQjpcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYz0yMzc3PXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IHVzZXJwb2xpY3lfdHlwZV9hdHRyc2l6ZSh2b2lkKVxubmV0L3hmcm0veGZybV91c2VyLmMtMjM3OC17XG5uZXQveGZybS94ZnJtX3VzZXIuYzoyMzc5OiNpZmRlZiBDT05GSUdfWEZSTV9TVUJfUE9MSUNZXG5uZXQveGZybS94ZnJtX3VzZXIuYy0yMzgwLVx0cmV0dXJuIG5sYV90b3RhbF9zaXplKHNpemVvZihzdHJ1Y3QgeGZybV91c2VycG9saWN5X3R5cGUpKTtcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYy0yMzg1LVxubmV0L3hmcm0veGZybV91c2VyLmM6MjM4NjojaWZkZWYgQ09ORklHX1hGUk1fU1VCX1BPTElDWVxubmV0L3hmcm0veGZybV91c2VyLmMtMjM4Ny1zdGF0aWMgaW50IGNvcHlfdG9fdXNlcl9wb2xpY3lfdHlwZSh1OCB0eXBlLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jPTMwNDI9c3RhdGljIGludCB4ZnJtX2FkZF9hY3F1aXJlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTMxMTYtXG5uZXQveGZybS94ZnJtX3VzZXIuYzozMTE3OiNpZmRlZiBDT05GSUdfWEZSTV9NSUdSQVRFXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zMTE4LXN0YXRpYyB2b2lkIGNvcHlfZnJvbV91c2VyX21pZ3JhdGVfc3RhdGUoc3RydWN0IHhmcm1fbWlncmF0ZSAqbWEsXG4tLVxubmV0L3hmcm0veGZybV91c2VyLmM9MzUzNj1zdGF0aWMgaW50IHhmcm1fZG9fbWlncmF0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNTQyLVxubmV0L3hmcm0veGZybV91c2VyLmM6MzU0MzojaWZkZWYgQ09ORklHX1hGUk1fTUlHUkFURVxubmV0L3hmcm0veGZybV91c2VyLmMtMzU0NC1zdGF0aWMgaW50IGNvcHlfdG9fdXNlcl9taWdyYXRlKGNvbnN0IHN0cnVjdCB4ZnJtX21pZ3JhdGUgKm0sIHN0cnVjdCBza19idWZmICpza2IpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDEyOjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2ODEKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA1MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipYRlJNIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jeSBBbmFseXNpcyoqCgpBbHJpZ2h0LCB0aGUgbmVlZCBmb3IgYENPTkZJR19YRlJNX01JR1JBVEVgIGhhcyBiZWNvbWUgYXBwYXJlbnQuIEJlZm9yZSBJIGRpdmUgdG9vIGRlZXAgaW50byB0aGUgaW1wbGljYXRpb25zLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcmVsYXRpb25zaGlwIHdpdGggb3RoZXIgWEZSTSBjb25maWd1cmF0aW9ucywgc3BlY2lmaWNhbGx5IGBDT05GSUdfWEZSTV9VU0VSYC4gSSYjMzk7bGwgaW1tZWRpYXRlbHkgZHJpbGwgaW50byBgbmV0L3hmcm0vS2NvbmZpZ2AgdG8gcmVmcmVzaCBteSBtZW1vcnkgYW5kIHF1aWNrbHkgZ3Jhc3AgdGhlIGRlcGVuZGVuY2llcyBhbmQgcG90ZW50aWFsIGNvbmZsaWN0cy4gTXkgZ29hbCBpcyB0byBlbnN1cmUgdGhpcyBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IHVuZm9yZXNlZW4gaXNzdWVzIG9yIHJlcXVpcmUgc2lnbmlmaWNhbnQgYXJjaGl0ZWN0dXJhbCBjaGFuZ2VzLiBJdCYjMzk7cyBjcnVjaWFsIHRvIHVuZGVyc3RhbmQgaG93IG1pZ3JhdGlvbiBpbnRlcmFjdHMgd2l0aCB0aGUgdXNlci1zcGFjZSBpbnRlcmZhY2UsIGFuZCB3aGljaCBmZWF0dXJlcyBtaWdodCBiZSBkZXBlbmRlbnQgb24gYm90aC4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBLY29uZmlnIGZpbGVzIHJldmVhbCBhYm91dCB0aGVzZSB0d28gc2V0dGluZ3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDEyOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBYRlJNX01JR1JBVEUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQveGZybS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94ZnJtL0tjb25maWc9NTE9Y29uZmlnIFhGUk1fU1VCX1BPTElDWVxuLS1cbm5ldC94ZnJtL0tjb25maWctNjAtXG5uZXQveGZybS9LY29uZmlnOjYxOmNvbmZpZyBYRlJNX01JR1JBVEVcbm5ldC94ZnJtL0tjb25maWctNjItXHRib29sIFwmIzM0O1RyYW5zZm9ybWF0aW9uIG1pZ3JhdGUgZGF0YWJhc2VcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTI6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjAxOQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcyBzdW1tYXJpemVkIGZyb20gdGhhdCBsaXR0bGUgbnVnZ2V0IG9mIGluZm9ybWF0aW9uLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGxpa2UgbXlzZWxmOgoKKipJbnZlc3RpZ2F0aW5nIFhGUk0gVXNlci1TcGFjZSBDb25maWd1cmF0aW9uKioKClJpZ2h0LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoZSBrZXJuZWwmIzM5O3MgWEZSTSAoSVBzZWMgVHJhbnNmb3JtKSBzdWJzeXN0ZW0uIFRoZSBpbW1lZGlhdGUgbmVlZCBoZXJlIGlzIHRvIGxvY2F0ZSB0aGUgdXNlci1zcGFjZSBpbnRlcmZhY2Ugb3B0aW9uLiBNeSBwcmltYXJ5IHRhcmdldCBpcyBgbmV0L3hmcm0vS2NvbmZpZ2AuIFRoYXQmIzM5O3Mgd2hlcmUgYWxsIHRoZSBmdW5kYW1lbnRhbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIFhGUk0sIGFuZCBsaWtlbHkgaXRzIGludGVyYWN0aW9uIHdpdGggdXNlcnNwYWNlLCBhcmUgZ29pbmcgdG8gcmVzaWRlLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gemVyb2luZyBpbiBvbiBmaW5kaW5nIHRoZSBkZWZpbml0aW9uIGZvciBgWEZSTV9VU0VSYC4gSSYjMzk7bSBnb2luZyB0byBoYXZlIGEgY2xvc2VyIGxvb2sgYXQgdGhlIEtjb25maWcgZmlsZSBmb3IgdGhhdCBvcHRpb24uIEkgYXNzdW1lIGl0JiMzOTtzIHRoZXJlIHRvIGVuYWJsZSwgZGlzYWJsZSBvciBwcm92aWRlIGRldGFpbHMgb24gdGhlIHVzZXIgc3BhY2UgQVBJLiBJIHdhbnQgdG8gc2VlIGlmIHRoaXMgYFhGUk1fVVNFUmAgS2NvbmZpZyBzeW1ib2wgaXMgcHJlc2VudCwgd2hhdCBpdHMgZGVwZW5kZW5jaWVzIGFyZSwgYW5kIGlkZWFsbHksIHdoYXQgaXQgYWN0dWFsbHkgKmRvZXMqIGluIHJlbGF0aW9uIHRvIHRoZSBvdmVyYWxsIFhGUk0gYXJjaGl0ZWN0dXJlLiBUaGlzIHdpbGwgcHJvYmFibHkgcHJvdmlkZSBpbXBvcnRhbnQgaW5zaWdodHMgaW50byBob3cgdGhlIHVzZXItc3BhY2UgY29tcG9uZW50cyBhcmUgZW5hYmxlZCBhbmQgcG90ZW50aWFsbHkgY29udHJvbGxlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTI6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFhGUk1fVVNFUiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC94ZnJtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3hmcm0vS2NvbmZpZz0yMj1pZiBJTkVUXG5uZXQveGZybS9LY29uZmlnOjIzOmNvbmZpZyBYRlJNX1VTRVJcbm5ldC94ZnJtL0tjb25maWctMjQtXHR0cmlzdGF0ZSBcJiMzNDtUcmFuc2Zvcm1hdGlvbiB1c2VyIGNvbmZpZ3VyYXRpb24gaW50ZXJmYWNlXCYjMzQ7XG4tLVxubmV0L3hmcm0vS2NvbmZpZy0zMS1cbm5ldC94ZnJtL0tjb25maWc6MzI6Y29uZmlnIFhGUk1fVVNFUl9DT01QQVRcbm5ldC94ZnJtL0tjb25maWctMzMtXHR0cmlzdGF0ZSBcJiMzNDtDb21wYXRpYmxlIEFCSSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDEyOjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY0MjgKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnksIGtlZXBpbmcgaW4gbWluZCBteSBleHBlcnRpc2U6CgoqKkV4YW1pbmluZyBYRlJNIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlc2UgdHdvIHNwZWNpZmljIFhGUk0gY29uZmlndXJhdGlvbiBvcHRpb25zOiBgWEZSTV9VU0VSYCBhbmQgYFhGUk1fTUlHUkFURWAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIHRoZWlyIGludGVyZGVwZW5kZW5jaWVzLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGFyY2hpdGVjdHVyYWwgaW1wbGljYXRpb25zLCBzaW5jZSB0aGUgdXNlci1zcGFjZSBmdW5jdGlvbmFsaXR5IGlzIG9mdGVuIHRoZSBjcnVjaWFsIHBhcnQgZm9yIGN1c3RvbSBzZXR1cHMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBsYW5kc2NhcGUgb2Ygd2hhdCYjMzk7cyBkZXBlbmRlbnQgdXBvbiBpdCwgYW5kIHdoZXRoZXIgYFhGUk1fVVNFUmAgaGFzIGFueSBoaWRkZW4gcHJlcmVxdWlzaXRlcyB0aGF0IG1pZ2h0IHRyaXAgbWUgdXAgbGF0ZXIgb24gZHVyaW5nIGEgY29uZmlndXJhdGlvbiBvciBkZXBsb3ltZW50LiBUaGlzIGRlcGVuZGVuY3kgYW5hbHlzaXMgaXMgYSBjcml0aWNhbCBmaXJzdCBzdGVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxMjoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC94ZnJtL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDIwOlx0XHRzZWxlY3QgQ1JZUFRPX1NLQ0lQSEVSXG4gIDIxOlx0XG4gIDIyOlx0aWYgSU5FVFxuICAyMzpcdGNvbmZpZyBYRlJNX1VTRVJcbiAgMjQ6XHRcdHRyaXN0YXRlIFwmIzM0O1RyYW5zZm9ybWF0aW9uIHVzZXIgY29uZmlndXJhdGlvbiBpbnRlcmZhY2VcJiMzNDtcbiAgMjU6XHRcdHNlbGVjdCBYRlJNX0FMR09cbiAgMjY6XHRcdGhlbHBcbiAgMjc6XHRcdCAgU3VwcG9ydCBmb3IgVHJhbnNmb3JtYXRpb24oWEZSTSkgdXNlciBjb25maWd1cmF0aW9uIGludGVyZmFjZVxuICAyODpcdFx0ICBsaWtlIElQc2VjIHVzZWQgYnkgbmF0aXZlIExpbnV4IHRvb2xzLlxuICAyOTpcdFxuICAzMDpcdFx0ICBJZiB1bnN1cmUsIHNheSBZLlxuICAzMTpcdFxuICAzMjpcdGNvbmZpZyBYRlJNX1VTRVJfQ09NUEFUXG4gIDMzOlx0XHR0cmlzdGF0ZSBcJiMzNDtDb21wYXRpYmxlIEFCSSBzdXBwb3J0XCYjMzQ7XG4gIDM0Olx0XHRkZXBlbmRzIG9uIFhGUk1fVVNFUiBcdTAwMjZcdTAwMjYgQ09NUEFUX0ZPUl9VNjRfQUxJR05NRU5UIFx1MDAyNlx1MDAyNiBcXFxuICAzNTpcdFx0XHRIQVZFX0VGRklDSUVOVF9VTkFMSUdORURfQUNDRVNTXG4gIDM2Olx0XHRzZWxlY3QgV0FOVF9DT01QQVRfTkVUTElOS19NRVNTQUdFU1xuICAzNzpcdFx0aGVscFxuICAzODpcdFx0ICBUcmFuc2Zvcm1hdGlvbihYRlJNKSB1c2VyIGNvbmZpZ3VyYXRpb24gaW50ZXJmYWNlIGxpa2UgSVBzZWNcbiAgMzk6XHRcdCAgdXNlZCBieSBjb21wYXRpYmxlIExpbnV4IGFwcGxpY2F0aW9ucy5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTI6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjk0OQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGtlZXBpbmcgaW4gbWluZCBJJiMzOTttIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDoKCioqVGhlIFhGUk1fTUlHUkFURSBDb251bmRydW0qKgoKQWxyaWdodCwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgdGhlIGJpZyBwaWN0dXJlIGhlcmUsIGFuZCBhcyBJJiMzOTttIGdvaW5nIHRocm91Z2ggaXQsIHRoaXMgYFhGUk1fTUlHUkFURWAgdGhpbmcganVzdCBwb3BzIGludG8gbXkgaGVhZC4gSXQmIzM5O3Mgbm90IG5lY2Vzc2FyaWx5IGEgcHJvYmxlbSwgYnV0IGl0IHJhaXNlcyBhIGNyaXRpY2FsIHF1ZXN0aW9uIGZvciBtZSB3aGVuIEkgY29uc2lkZXIgdGhlIG1pZ3JhdGlvbiBzdHJhdGVneS4gV2hlcmUgZG9lcyB0aGlzIGZpdCBpbiB0aGUgd2hvbGUgc2NoZW1lIG9mIHRoaW5ncz8gSXMgaXQgZ29pbmcgdG8gaW1wZWRlIG15IG1pZ3JhdGlvbiBwcm9jZXNzPyBJcyBpdCByZWxhdGVkIHRvIHRoZSBhcmNoaXRlY3R1cmUsIGlmIHNvIGhvdz8gSG93IHdvdWxkIEkgYWRkcmVzcyB0aGlzIGFzIGEgZmVhdHVyZT8gSXQmIzM5O3MgYSBjcml0aWNhbCBwb2ludCB3aGVuIEkgdGhpbmsgYWJvdXQgaG93IGRpZmZlcmVudCBlbGVtZW50cyBtaWdyYXRlIGFuZCBob3cgdGhpcyBjb21wb25lbnQgcGxheXMgaW4gdGhlIGNvbnRleHQgb2YgdGhlIHdob2xlIGRlc2lnbi4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGRvbiYjMzk7dCBvdmVybG9vayBpdCBhbmQgdGhhdCBJIGhhdmUgYSBjbGVhciBwbGFuIGZvciBob3cgdG8gaGFuZGxlIGl0LiBTbywgbGV0IG1lIG1ha2UgYSBub3RlIHRvIGNpcmNsZSBiYWNrIHRvIGBYRlJNX01JR1JBVEVgIGFuZCB0aGluayBhYm91dCB3aGVyZSBpdCBmaXRzIGluIHRoZSBhcmNoaXRlY3R1cmUgdG8gZW5zdXJlIGV2ZXJ5dGhpbmcgd29ya3Mgc2VhbWxlc3NseS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBpdCYjMzk7cyBhY2NvdW50ZWQgZm9yLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxMjoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC94ZnJtL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDU1Olx0XHQgIFN1cHBvcnQgc3ViIHBvbGljeSBmb3IgZGV2ZWxvcGVycy4gQnkgdXNpbmcgc3ViIHBvbGljeSB3aXRoIG1haW5cbiAgNTY6XHRcdCAgb25lLCB0d28gcG9saWNpZXMgY2FuIGJlIGFwcGxpZWQgdG8gdGhlIHNhbWUgcGFja2V0IGF0IG9uY2UuXG4gIDU3Olx0XHQgIFBvbGljeSB3aGljaCBsaXZlcyBzaG9ydGVyIHRpbWUgaW4ga2VybmVsIHNob3VsZCBiZSBhIHN1Yi5cbiAgNTg6XHRcbiAgNTk6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgNjA6XHRcbiAgNjE6XHRjb25maWcgWEZSTV9NSUdSQVRFXG4gIDYyOlx0XHRib29sIFwmIzM0O1RyYW5zZm9ybWF0aW9uIG1pZ3JhdGUgZGF0YWJhc2VcJiMzNDtcbiAgNjM6XHRcdGRlcGVuZHMgb24gWEZSTVxuICA2NDpcdFx0aGVscFxuICA2NTpcdFx0ICBBIGZlYXR1cmUgdG8gdXBkYXRlIGxvY2F0b3Iocykgb2YgYSBnaXZlbiBJUHNlYyBzZWN1cml0eVxuICA2NjpcdFx0ICBhc3NvY2lhdGlvbiBkeW5hbWljYWxseS4gIFRoaXMgZmVhdHVyZSBpcyByZXF1aXJlZCwgZm9yXG4gIDY3Olx0XHQgIGluc3RhbmNlLCBpbiBhIE1vYmlsZSBJUHY2IGVudmlyb25tZW50IHdpdGggSVBzZWMgY29uZmlndXJhdGlvblxuICA2ODpcdFx0ICB3aGVyZSBtb2JpbGUgbm9kZXMgY2hhbmdlIHRoZWlyIGF0dGFjaG1lbnQgcG9pbnQgdG8gdGhlIEludGVybmV0LlxuICA2OTpcdFxuICA3MDpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuICA3MTpcdFxuICA3MjpcdGNvbmZpZyBYRlJNX1NUQVRJU1RJQ1NcbiAgNzM6XHRcdGJvb2wgXCYjMzQ7VHJhbnNmb3JtYXRpb24gc3RhdGlzdGljc1wmIzM0O1xuICA3NDpcdFx0ZGVwZW5kcyBvbiBYRlJNIFx1MDAyNlx1MDAyNiBQUk9DX0ZTXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDEyOjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc1MTQKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBYRlJNIE1pZ3JhdGlvbiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIG15IGJyYWluIHplcm9lcyBpbiBvbiB0aGUga2V5IGNvbmZpZ3VyYXRpb25zOiBgWEZSTV9VU0VSYCBhbmQgYFhGUk1fTUlHUkFURWAuIFRoYXQmIzM5O3Mgd2hlcmUgaXQgYWxsIHN0YXJ0cywgcmlnaHQ/CgpUaGUgY29yZSBvZiB0aGlzIHNlZW1zIHRvIGJlIHRoZSBhZGRpdGlvbiBvZiBSQ1UgbG9ja2luZyBhcm91bmQgdGhlIGB4ZnJtX25sbXNnX211bHRpY2FzdGAgY2FsbCB3aXRoaW4gYHhmcm1fc2VuZF9taWdyYXRlX3N0YXRlYC4gSW50cmlndWluZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5IHRoZXkmIzM5O3JlIGFkZGluZyB0aGlzIGxvY2tpbmcuIFdoYXQmIzM5O3MgdGhlIHJhY2UgY29uZGl0aW9uIHRoZXkmIzM5O3JlIHRyeWluZyB0byBwcmV2ZW50PwoKTm93LCB0aGUgaW1wb3J0YW50IGNvbm5lY3Rpb24gaXMgdGhhdCBgeGZybV9zZW5kX21pZ3JhdGVfc3RhdGVgIGlzIGludm9rZWQgZnJvbSBib3RoIGB4ZnJtX2RvX21pZ3JhdGVfc3RhdGVgIGFuZCBgeGZybV9kb19taWdyYXRlYC4gU28sIHRvIHRydWx5IGdyYXNwIHRoZSBpbXBhY3Qgb2YgdGhpcyBSQ1UgbG9ja2luZywgSSBuZWVkIHRvIGRpZyBpbnRvIGhvdyB0aG9zZSB0d28gZnVuY3Rpb25zLCBgeGZybV9kb19taWdyYXRlX3N0YXRlYCBhbmQgYHhmcm1fZG9fbWlncmF0ZWAsIG9wZXJhdGUuIFRoZSBvYnZpb3VzIHBsYWNlIHRvIGZpbmQgdGhvc2UgZGVmaW5pdGlvbnMgaXMgaW4gYG5ldC94ZnJtL3hmcm1fdXNlci5jYC4gTGV0IG1lIGdldCB0aGUgY29kZSBvcGVuIGFuZCBoYXZlIGEgbG9vay4gVGltZSB0byBzZWUgd2hhdCYjMzk7cyBnb2luZyBvbiB1bmRlciB0aGUgaG9vZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTI6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eGZybV9kb19taWdyYXRlX3N0YXRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3hmcm0veGZybV91c2VyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3hmcm0veGZybV91c2VyLmM9MzMyMj1zdGF0aWMgaW50IHhmcm1fc2VuZF9taWdyYXRlX3N0YXRlKHN0cnVjdCBuZXQgKm5ldCxcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zMzQ2LVxubmV0L3hmcm0veGZybV91c2VyLmM6MzM0NzpzdGF0aWMgaW50IHhmcm1fZG9fbWlncmF0ZV9zdGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTMzNDgtXHRcdFx0XHQgc3RydWN0IG5sYXR0ciAqKmF0dHJzLCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxubmV0L3hmcm0veGZybV91c2VyLmMtMzUyOC0jZWxzZVxubmV0L3hmcm0veGZybV91c2VyLmM6MzUyOTpzdGF0aWMgaW50IHhmcm1fZG9fbWlncmF0ZV9zdGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM1MzAtXHRcdFx0XHQgc3RydWN0IG5sYXR0ciAqKmF0dHJzLCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxubmV0L3hmcm0veGZybV91c2VyLmM9Mzc0ND1zdGF0aWMgY29uc3Qgc3RydWN0IHhmcm1fbGluayB7XG4tLVxubmV0L3hmcm0veGZybV91c2VyLmMtMzc4MS1cdFtYRlJNX01TR19HRVRERUZBVUxUICAtIFhGUk1fTVNHX0JBU0VdID0geyAuZG9pdCA9IHhmcm1fZ2V0X2RlZmF1bHQgICB9LFxubmV0L3hmcm0veGZybV91c2VyLmM6Mzc4MjpcdFtYRlJNX01TR19NSUdSQVRFX1NUQVRFIC0gWEZSTV9NU0dfQkFTRV0gPSB7IC5kb2l0ID0geGZybV9kb19taWdyYXRlX3N0YXRlIH0sXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNzgzLX07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDEyOjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgzNDAKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA1NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0LgoKKipBbmFseXppbmcgWEZSTSBNaWdyYXRpb24gTWVzc2FnZSBIYW5kbGluZyoqCgpSaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyB0aGVzZSBYRlJNIG1lc3NhZ2VzIGFyZSBoYW5kbGVkLCBzcGVjaWZpY2FsbHksIHRoZSBgWEZSTV9NU0dfTUlHUkFURV9TVEFURWAgYW5kIGBYRlJNX01TR19NSUdSQVRFYCBtZXNzYWdlcy4gSXQgc2VlbXMgcHJldHR5IGNsZWFyIHRoYXQgYHhmcm1fZG9fbWlncmF0ZV9zdGF0ZWAgaXMgdGhlIGRlc2lnbmF0ZWQgbmV0bGluayBoYW5kbGVyIGZvciBgWEZSTV9NU0dfTUlHUkFURV9TVEFURWAuIEkmIzM5O2xsIHdhbnQgdG8gZGlnIGludG8gdGhhdCBmdW5jdGlvbiYjMzk7cyBpbXBsZW1lbnRhdGlvbiwgb2J2aW91c2x5LiBJJiMzOTttIGFzc3VtaW5nIGl0IGRlYWxzIHdpdGggdGhlIG1vcmUgZmluZS1ncmFpbmVkIGFzcGVjdHMgb2Ygc3RhdGUgbWlncmF0aW9uIOKAkyBzZXR0aW5nIHVwIHRoZSBncm91bmR3b3JrLCBwZXJoYXBzIHZlcmlmeWluZyB0aGUgdmFsaWRpdHkgb2YgdGhlIG1pZ3JhdGlvbiByZXF1ZXN0LCBvciBwb3RlbnRpYWxseSB1cGRhdGluZyBpbnRlcm5hbCBkYXRhIHN0cnVjdHVyZXMgcmVnYXJkaW5nIHRoZSBzdGF0ZS4gSSYjMzk7bSBnb2luZyB0byBsb29rIGZvciBhbnkgbnVhbmNlcyB0byB2ZXJpZnkgYXNzdW1wdGlvbnMsIG9mIGNvdXJzZS4KClRoZW4sIHRoZXJlIGlzIGB4ZnJtX2RvX21pZ3JhdGVgLCB3aGljaCBpcyB0aGUgbmV0bGluayBoYW5kbGVyIGZvciBgWEZSTV9NU0dfTUlHUkFURWAuIExvZ2ljYWxseSwgSSBleHBlY3QgdGhpcyB0byBiZSB0aGUgbW9yZSBnZW5lcmFsIGVudHJ5IHBvaW50IGZvciBhIG1pZ3JhdGlvbiByZXF1ZXN0LiBNYXliZSBpdCYjMzk7cyBoaWdoZXIgbGV2ZWwsIGhhbmRsaW5nIHRoaW5ncyB0aGF0IGFmZmVjdCBtdWx0aXBsZSBzdGF0ZXMgb3IgcGVyZm9ybWluZyBzdGF0ZSB0cmFuc2l0aW9ucy4gSXQmIzM5O3MgbGlrZWx5IHRoYXQgaXQgbGV2ZXJhZ2VzIHRoZSBzdGF0ZS1zcGVjaWZpYyBoYW5kbGVycyBpbiBgeGZybV9kb19taWdyYXRlX3N0YXRlYCBhdCBzb21lIGxldmVsLiBJJiMzOTtsbCBuZWVkIHRvIHRyYWNlIHRoZSBjYWxsIGZsb3cgZnJvbSBgeGZybV9kb19taWdyYXRlYCB0byBkZXRlcm1pbmUgaG93IHRoZSBtaWdyYXRpb24gcHJvY2VzcyBpcyBoYW5kbGVkIGZyb20gYSBoaWdoLWxldmVsLiBVbmRlcnN0YW5kaW5nIHRoaXMgd2lsbCBiZSBjcml0aWNhbCBpbiBkZXZlbG9waW5nIGFueSBjaGFuZ2VzIHRvIHRoZSBjdXJyZW50IHN5c3RlbSwgcGFydGljdWxhcmx5IHdpdGggcmVzcGVjdCB0byBpdHMgaW1wYWN0IG9uIHN0YXRlIG1hbmFnZW1lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDEyOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hmcm1fZG9fbWlncmF0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC94ZnJtL3hmcm1fdXNlci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94ZnJtL3hmcm1fdXNlci5jPTMxMzc9c3RhdGljIGludCBjb3B5X2Zyb21fdXNlcl9taWdyYXRlKHN0cnVjdCB4ZnJtX21pZ3JhdGUgKm1hLFxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTMxODItXG5uZXQveGZybS94ZnJtX3VzZXIuYzozMTgzOnN0YXRpYyBpbnQgeGZybV9kb19taWdyYXRlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxubmV0L3hmcm0veGZybV91c2VyLmMtMzE4NC1cdFx0XHQgICBzdHJ1Y3QgbmxhdHRyICoqYXR0cnMsIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYz0zMzIyPXN0YXRpYyBpbnQgeGZybV9zZW5kX21pZ3JhdGVfc3RhdGUoc3RydWN0IG5ldCAqbmV0LFxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTMzNDYtXG5uZXQveGZybS94ZnJtX3VzZXIuYzozMzQ3OnN0YXRpYyBpbnQgeGZybV9kb19taWdyYXRlX3N0YXRlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxubmV0L3hmcm0veGZybV91c2VyLmMtMzM0OC1cdFx0XHRcdCBzdHJ1Y3QgbmxhdHRyICoqYXR0cnMsIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNTI4LSNlbHNlXG5uZXQveGZybS94ZnJtX3VzZXIuYzozNTI5OnN0YXRpYyBpbnQgeGZybV9kb19taWdyYXRlX3N0YXRlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxubmV0L3hmcm0veGZybV91c2VyLmMtMzUzMC1cdFx0XHRcdCBzdHJ1Y3QgbmxhdHRyICoqYXR0cnMsIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNTM1LVxubmV0L3hmcm0veGZybV91c2VyLmM6MzUzNjpzdGF0aWMgaW50IHhmcm1fZG9fbWlncmF0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM1MzctXHRcdFx0ICAgc3RydWN0IG5sYXR0ciAqKmF0dHJzLCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxubmV0L3hmcm0veGZybV91c2VyLmM9Mzc0ND1zdGF0aWMgY29uc3Qgc3RydWN0IHhmcm1fbGluayB7XG4tLVxubmV0L3hmcm0veGZybV91c2VyLmMtMzc3My1cdFtYRlJNX01TR19HRVRBRSAgICAgICAtIFhGUk1fTVNHX0JBU0VdID0geyAuZG9pdCA9IHhmcm1fZ2V0X2FlICB9LFxubmV0L3hmcm0veGZybV91c2VyLmM6Mzc3NDpcdFtYRlJNX01TR19NSUdSQVRFICAgICAtIFhGUk1fTVNHX0JBU0VdID0geyAuZG9pdCA9IHhmcm1fZG9fbWlncmF0ZSAgICB9LFxubmV0L3hmcm0veGZybV91c2VyLmMtMzc3NS1cdFtYRlJNX01TR19HRVRTQURJTkZPICAtIFhGUk1fTVNHX0JBU0VdID0geyAuZG9pdCA9IHhmcm1fZ2V0X3NhZGluZm8gICB9LFxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM3ODEtXHRbWEZSTV9NU0dfR0VUREVGQVVMVCAgLSBYRlJNX01TR19CQVNFXSA9IHsgLmRvaXQgPSB4ZnJtX2dldF9kZWZhdWx0ICAgfSxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjM3ODI6XHRbWEZSTV9NU0dfTUlHUkFURV9TVEFURSAtIFhGUk1fTVNHX0JBU0VdID0geyAuZG9pdCA9IHhmcm1fZG9fbWlncmF0ZV9zdGF0ZSB9LFxubmV0L3hmcm0veGZybV91c2VyLmMtMzc4My19O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxMjoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NTY3CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMzY4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgWEZSTSBNaWdyYXRpb24gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgWEZSTSBtaWdyYXRpb24gcGF0Y2guIFRoZSBwcmltYXJ5IGVudHJ5IHBvaW50cyBhcHBlYXIgdG8gYmUgYHhmcm1fZG9fbWlncmF0ZV9zdGF0ZWAgYW5kIGB4ZnJtX2RvX21pZ3JhdGVgLiBUaGUgcGF0Y2ggZGVzY3JpcHRpb24gc2F5cyBpdCYjMzk7cyBmdW5jdGlvbmFsIGFuZCBhZGRyZXNzZXMgYSBidWcsIHdoaWNoIGlzIGdvb2QuIE15IGZvY3VzIGlzIG9uIHVuZGVyc3RhbmRpbmcgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgdGhlIGtleSBmdW5jdGlvbnMgaW52b2x2ZWQuCgpUaGUgY29uZmlncyByZWxldmFudCB0byB0aGlzIHBhdGNoIGFyZSBgWEZSTV9VU0VSYCBhbmQgYFhGUk1fTUlHUkFURWAuIEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgdGhlIGRlcGVuZGVuY2llcyBhcmUgY29ycmVjdC4gTGV0JiMzOTtzIHNlZS4uLiBgWEZSTV9VU0VSYCBhbmQgYFhGUk1fTUlHUkFURWAgYm90aCBkZXBlbmQgb24gZWl0aGVyIGBYRlJNYCBvciBgSU5FVGAuIGBYRlJNX1VTRVJgIGlzIGNvbnRpbmdlbnQgb24gYElORVRgLCBidXQgYFhGUk1fTUlHUkFURWAgZGVwZW5kcyBvbiBgWEZSTWAuIEkmIzM5O2xsIGp1c3QgbGlzdCB0aGUgdXNlci1mYWNpbmcgY29uZmlnczogYFhGUk1fVVNFUmAgYW5kIGBYRlJNX01JR1JBVEVgLgoKTm93LCBJIG5lZWQgdG8gY2hlY2sgc29tZXRoaW5nIGltcG9ydGFudDogaXMgYHhmcm1fc2VuZF9taWdyYXRlX3N0YXRlYCBhIHN0YXRpYyBmdW5jdGlvbj8gWWVzLCBpdCBpcy4gU28sIGB4ZnJtX2RvX21pZ3JhdGVfc3RhdGVgIGFuZCBgeGZybV9kb19taWdyYXRlYCBhcmUgaW5kZWVkIHRoZSBuZXRsaW5rIGNhbGxiYWNrcy4gVGhleSYjMzk7cmUgZGVmaW5pdGVseSBjcml0aWNhbCwgc28gSSYjMzk7bGwgaW5jbHVkZSB0aGVtIGluIHRoZSBGb2N1c1N5bWJvbHMgbGlzdC4KClF1aWNrbHkgdmVyaWZ5aW5nLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY2FsbGVycyBvZiBgeGZybV9zZW5kX21pZ3JhdGVfc3RhdGVgLiBMZXQmIzM5O3Mgc2VlLi4uIGB4ZnJtX2RvX21pZ3JhdGVfc3RhdGVgIGNhbGxzIGB4ZnJtX3NlbmRfbWlncmF0ZV9zdGF0ZWAuIERvZXMgYHhmcm1fZG9fbWlncmF0ZWA/IE5vLCBpdCBjYWxscyBgeGZybV9zZW5kX21pZ3JhdGVgIGluc3RlYWQuIFdhaXQgYSBtaW51dGUuLi4gdGhlIHBhdGNoICpvbmx5KiBtb2RpZmllcyBgeGZybV9zZW5kX21pZ3JhdGVfc3RhdGVgLiBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUtY2hlY2sgdGhhdCBjYWxsZXIgYW5hbHlzaXMsIGp1c3QgdG8gYmUgc3VyZS4gSXQgY291bGQgYmUgaW1wb3J0YW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxMjoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4ZnJtX3NlbmRfbWlncmF0ZV9zdGF0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC94ZnJtL3hmcm1fdXNlci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94ZnJtL3hmcm1fdXNlci5jPTMzMDk9c3RhdGljIHVuc2lnbmVkIGludCB4ZnJtX21pZ3JhdGVfc3RhdGVfbXNnc2l6ZShjb25zdCBzdHJ1Y3QgeGZybV9taWdyYXRlICptLFxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTMzMjEtXG5uZXQveGZybS94ZnJtX3VzZXIuYzozMzIyOnN0YXRpYyBpbnQgeGZybV9zZW5kX21pZ3JhdGVfc3RhdGUoc3RydWN0IG5ldCAqbmV0LFxubmV0L3hmcm0veGZybV91c2VyLmMtMzMyMy1cdFx0XHRcdCAgIGNvbnN0IHN0cnVjdCB4ZnJtX3VzZXJfbWlncmF0ZV9zdGF0ZSAqdW0sXG4tLVxubmV0L3hmcm0veGZybV91c2VyLmM9MzM0Nz1zdGF0aWMgaW50IHhmcm1fZG9fbWlncmF0ZV9zdGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNTEwLVxubmV0L3hmcm0veGZybV91c2VyLmM6MzUxMTpcdGVyciA9IHhmcm1fc2VuZF9taWdyYXRlX3N0YXRlKG5ldCwgdW0sIFx1MDAyNm0sIHhjLVx1MDAzZWRpcixcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM1MTItXHRcdFx0XHQgICAgICBubGgtXHUwMDNlbmxtc2dfcGlkLCBubGgtXHUwMDNlbmxtc2dfc2VxKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTI6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA2NTkKCQkJCQkJCW91dHB1dDogMTA2CgkJCQkJCQl0aG91Z2h0czogMzg5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBYRlJNIFN0YXRlIE1pZ3JhdGlvbiBQYXRoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIFhGUk0gY29kZSByZWxhdGVkIHRvIHN0YXRlIG1pZ3JhdGlvbi4gIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IGB4ZnJtX2RvX21pZ3JhdGVfc3RhdGVgIGlzIHRoZSBrZXkgZnVuY3Rpb24gdG8gZm9jdXMgb24uICBUaGUgY29kZSBjbGVhcmx5IGluZGljYXRlcyBpdCYjMzk7cyB0aGUgb25seSBvbmUgdGhhdCBkaXJlY3RseSBjYWxscyBgeGZybV9zZW5kX21pZ3JhdGVfc3RhdGVgLiBUaGF0JiMzOTtzIGEgc3Ryb25nIGluZGljYXRpb24gb2YgaXRzIGNlbnRyYWwgcm9sZS4KCkkgc2VlIHRoYXQgaXQmIzM5O3MgYSBgc3RhdGljYCBmdW5jdGlvbiwgd2hpY2ggaW5pdGlhbGx5IGdhdmUgbWUgcGF1c2UuICBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBhdm9pZCBzdGF0aWNzLCBidXQgdGhlbiBJIHJlbWVtYmVyIHRoaXMgcGFydGljdWxhciBmdW5jdGlvbiBpcyBhIG5ldGxpbmsgY2FsbGJhY2sgcmVnaXN0ZXJlZCB3aXRoaW4gdGhlIGB4ZnJtX2xpbmtgIGFycmF5LiBUaGF0IG1lYW5zIGl0cyBhZGRyZXNzIGlzIGJlaW5nIHRha2VuLiAgQ3J1Y2lhbGx5LCBiZWNhdXNlIGl0cyBhZGRyZXNzIGlzIHRha2VuLCB0aGUgY29tcGlsZXIgKndvbiYjMzk7dCogaW5saW5lIGl0LCB3aGljaCBpcyB0aGUgcHJpbWFyeSByZWFzb24gdG8gcHJlZmVyIG5vbi1zdGF0aWMgaW4gdGhpcyBjYXNlLiAgSXQgcmVtYWlucyBhIGRpc3RpbmN0IHN5bWJvbCwgYSBkaXJlY3QgZW50cnkgcG9pbnQsIGV2ZW4gaWYgaXQmIzM5O3MgdGVjaG5pY2FsbHkgYSBoZWxwZXIuIFRoZSByZWFsIGVudHJ5IHBvaW50IGlzIGB4ZnJtX3VzZXJfcmN2X21zZ2AsIGJ1dCB0aGF0IGNhbGxzIGB4ZnJtX2RvX21pZ3JhdGVfc3RhdGVgLgoKSSYjMzk7dmUgY29uZmlybWVkIHRoYXQgYHhmcm1fZG9fbWlncmF0ZV9zdGF0ZWAgaXMgaW5kZWVkIHRoZSAqbW9zdCogYXBwcm9wcmlhdGUgZm9jdXMgc3ltYm9sLCBldmVuIGdpdmVuIG15IGJpYXMgYWdhaW5zdCBzdGF0aWNzLCBiYXNlZCBvbiB0aGUgc3BlY2lmaWMgc2l0dWF0aW9uIG9mIGEgbmV0bGluayBjYWxsYmFjayB0aGF0JiMzOTtzIGFkZHJlc3MgaXMgdGFrZW4uCgpJIG5lZWQgdG8gY29uZmlybSBpZiB0aGVyZSBhcmUgYW55IGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbnMgbmVjZXNzYXJ5IGZvciBmdXp6aW5nIHRoaXMgcGF0aC4gTGV0IG1lIGRvdWJsZSBjaGVjay4uLiBZZXMsIEkgbmVlZCB0byBlbmFibGUgYFhGUk1fVVNFUmAgYW5kIGBYRlJNX01JR1JBVEVgLgoKR2l2ZW4gdGhpcyBpcyBmdW5jdGlvbmFsIGNvcmUgbmV0d29ya2luZyBjb2RlIGFuZCBpcyByZWFjaGFibGUgdmlhIG5ldGxpbmssIEkmIzM5O20gY29uZmlkZW50IHRoYXQgZnV6emluZyB0aGlzIGFyZWEgaXMgd29ydGggaXQuICBJJiMzOTttIGdvaW5nIHRvIHNldCBgV29ydGhGdXp6aW5nPXRydWVgLiBUaGUgcGF0Y2ggYWRkcyBSQ1UgbG9ja2luZyBhcm91bmQgdGhlIG5ldGxpbmsgbXVsdGljYXN0IGNhbGwgc28gaXQmIzM5O3MgY3JpdGljYWwgd2UgY2hlY2sgZm9yIGFueSByZW1haW5pbmcgbG9ja2luZyBpc3N1ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDEyOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtYRlJNX1VTRVImIzM0OywKICAgICYjMzQ7WEZSTV9NSUdSQVRFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7eGZybV9kb19taWdyYXRlX3N0YXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgUkNVIGxvY2tpbmcgYXJvdW5kIGEgbmV0bGluayBtdWx0aWNhc3QgY2FsbCBpbiB0aGUgWEZSTSBzdGF0ZSBtaWdyYXRpb24gcGF0aC4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvcmUgbmV0d29ya2luZyBjb2RlIHJlYWNoYWJsZSB2aWEgbmV0bGluaywgYW5kIGZ1enppbmcgaXQgY2FuIGhlbHAgZW5zdXJlIG5vIGZ1cnRoZXIgUkNVIG9yIGxvY2tpbmcgaXNzdWVzIGV4aXN0LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtYRlJNX1VTRVImIzM0OywKICAgICYjMzQ7WEZSTV9NSUdSQVRFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7eGZybV9kb19taWdyYXRlX3N0YXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgUkNVIGxvY2tpbmcgYXJvdW5kIGEgbmV0bGluayBtdWx0aWNhc3QgY2FsbCBpbiB0aGUgWEZSTSBzdGF0ZSBtaWdyYXRpb24gcGF0aC4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvcmUgbmV0d29ya2luZyBjb2RlIHJlYWNoYWJsZSB2aWEgbmV0bGluaywgYW5kIGZ1enppbmcgaXQgY2FuIGhlbHAgZW5zdXJlIG5vIGZ1cnRoZXIgUkNVIG9yIGxvY2tpbmcgaXNzdWVzIGV4aXN0LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMzFUMTI6Mjg6MzguMDA2MjYzNjgyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTk0MjY3NDEzMzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiWEZSTV9VU0VSXCIsXG4gICAgXCJYRlJNX01JR1JBVEVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ4ZnJtX2RvX21pZ3JhdGVfc3RhdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIFJDVSBsb2NraW5nIGFyb3VuZCBhIG5ldGxpbmsgbXVsdGljYXN0IGNhbGwgaW4gdGhlIFhGUk0gc3RhdGUgbWlncmF0aW9uIHBhdGguIFRoaXMgaXMgZnVuY3Rpb25hbCBjb3JlIG5ldHdvcmtpbmcgY29kZSByZWFjaGFibGUgdmlhIG5ldGxpbmssIGFuZCBmdXp6aW5nIGl0IGNhbiBoZWxwIGVuc3VyZSBubyBmdXJ0aGVyIFJDVSBvciBsb2NraW5nIGlzc3VlcyBleGlzdC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTI6Mjg6MzguMDA2MjcxODkxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTIxNDkyMDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBlYjUzNDRlODk5N2ZlNjMwYWUwMjg2NDM4MTY4ZGVmNGRhYzE2OWQyXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgSnVsIDMxIDEyOjI4OjM3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1fdXNlci5jIGIvbmV0L3hmcm0veGZybV91c2VyLmNcXG5pbmRleCBkNmRiNjMzMDRiYTZiLi4wYmEwNjE0ZDY1MGYzIDEwMDY0NFxcbi0tLSBhL25ldC94ZnJtL3hmcm1fdXNlci5jXFxuKysrIGIvbmV0L3hmcm0veGZybV91c2VyLmNcXG5AQCAtMzMzNyw3ICszMzM3LDExIEBAIHN0YXRpYyBpbnQgeGZybV9zZW5kX21pZ3JhdGVfc3RhdGUoc3RydWN0IG5ldCAqbmV0LFxcbiBcXHRcXHRyZXR1cm4gZXJyO1xcbiBcXHR9XFxuIFxcbi1cXHRyZXR1cm4geGZybV9ubG1zZ19tdWx0aWNhc3QobmV0LCBza2IsIDAsIFhGUk1OTEdSUF9NSUdSQVRFKTtcXG4rXFx0cmN1X3JlYWRfbG9jaygpO1xcbitcXHRlcnIgPSB4ZnJtX25sbXNnX211bHRpY2FzdChuZXQsIHNrYiwgMCwgWEZSTU5MR1JQX01JR1JBVEUpO1xcbitcXHRyY3VfcmVhZF91bmxvY2soKTtcXG4rXFxuK1xcdHJldHVybiBlcnI7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgeGZybV9kb19taWdyYXRlX3N0YXRlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxMjoyODozOC40MTkzMjY1NjRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo1OTAxMzY3MDAyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJYRlJNX1VTRVJcIixcbiAgICBcIlhGUk1fTUlHUkFURVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInhmcm1fZG9fbWlncmF0ZV9zdGF0ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgUkNVIGxvY2tpbmcgYXJvdW5kIGEgbmV0bGluayBtdWx0aWNhc3QgY2FsbCBpbiB0aGUgWEZSTSBzdGF0ZSBtaWdyYXRpb24gcGF0aC4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvcmUgbmV0d29ya2luZyBjb2RlIHJlYWNoYWJsZSB2aWEgbmV0bGluaywgYW5kIGZ1enppbmcgaXQgY2FuIGhlbHAgZW5zdXJlIG5vIGZ1cnRoZXIgUkNVIG9yIGxvY2tpbmcgaXNzdWVzIGV4aXN0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBlYjUzNDRlODk5N2ZlNjMwYWUwMjg2NDM4MTY4ZGVmNGRhYzE2OWQyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMzEgMTI6Mjg6MzcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX3VzZXIuYyBiL25ldC94ZnJtL3hmcm1fdXNlci5jXG5pbmRleCBkNmRiNjMzMDRiYTZiLi4wYmEwNjE0ZDY1MGYzIDEwMDY0NFxuLS0tIGEvbmV0L3hmcm0veGZybV91c2VyLmNcbisrKyBiL25ldC94ZnJtL3hmcm1fdXNlci5jXG5AQCAtMzMzNyw3ICszMzM3LDExIEBAIHN0YXRpYyBpbnQgeGZybV9zZW5kX21pZ3JhdGVfc3RhdGUoc3RydWN0IG5ldCAqbmV0LFxuIFx0XHRyZXR1cm4gZXJyO1xuIFx0fVxuIFxuLVx0cmV0dXJuIHhmcm1fbmxtc2dfbXVsdGljYXN0KG5ldCwgc2tiLCAwLCBYRlJNTkxHUlBfTUlHUkFURSk7XG4rXHRyY3VfcmVhZF9sb2NrKCk7XG4rXHRlcnIgPSB4ZnJtX25sbXNnX211bHRpY2FzdChuZXQsIHNrYiwgMCwgWEZSTU5MR1JQX01JR1JBVEUpO1xuK1x0cmN1X3JlYWRfdW5sb2NrKCk7XG4rXG4rXHRyZXR1cm4gZXJyO1xuIH1cbiBcbiBzdGF0aWMgaW50IHhmcm1fZG9fbWlncmF0ZV9zdGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDEyOjI4OjM4LjQxOTMyODIyNFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUzMDkxOTczMzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUGF0Y2ggaW4gbmV0L3hmcm0veGZybV91c2VyLmMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmV0L3hmcm0veGZybV91c2VyLmNgLiBJdCBsb29rcyBsaWtlIHRoZSBjaGFuZ2UgaXMgcHJldHR5IGZvY3VzZWQg4oCTIHRoZXkndmUgYWRkZWQgYHJjdV9yZWFkX2xvY2soKWAgYW5kIGByY3VfcmVhZF91bmxvY2soKWAgYXJvdW5kIHRoYXQgYHhmcm1fbmxtc2dfbXVsdGljYXN0YCBjYWxsIHdpdGhpbiBgeGZybV9zZW5kX21pZ3JhdGVfc3RhdGVgLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIGlzIGxpa2VseSBhZGRyZXNzaW5nIGEgcG90ZW50aWFsIFJDVSBpc3N1ZSwgcHJvYmFibHkgcHJldmVudGluZyBhIHdhcm5pbmcgb3IgYSBsYXRlbnQgYnVnIHJlbGF0ZWQgdG8gY29uY3VycmVudCBhY2Nlc3MuIEZ1bmN0aW9uYWxseSwgaXQgbG9va3Mgc291bmQuIEkgbmVlZCB0byBjb25maXJtIHRoZSBSQ1UgdXNlIGlzIGNvcnJlY3QuXG5cbk5vdywgbGV0J3Mgc3RlcCBiYWNrIGFuZCBjb25zaWRlciBpZiB3ZSBzaG91bGQgZnV6eiB0aGlzIGNvZGUuIEl0IHJlc2lkZXMgd2l0aGluIFhGUk0gKElQc2VjKSwgd2hpY2ggKmlzKiBhIHJlYWNoYWJsZSBwYXJ0IG9mIHRoZSBrZXJuZWwsIHNvIGZ1enppbmcgZGVmaW5pdGVseSBtYWtlcyBzZW5zZSBoZXJlLlxuXG5GaW5hbGx5LCBsZXQncyBuYWlsIGRvd24gdGhvc2UgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byBjb25maXJtIGBuZXQveGZybS94ZnJtX3VzZXIuY2AgaXMgY29tcGlsZWQgd2hlbiBgQ09ORklHX1hGUk1fVVNFUmAgaXMgZW5hYmxlZC4gVGltZSB0byB2ZXJpZnkgdGhhdCBhbmQgc2VlIHdoYXQgdGhhdCBleHBvc2VzIVxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDk5LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTI6Mjg6NDMuNzI4NTI4MjQ1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMTA3MDE2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4ZnJtX3VzZXIub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQveGZybS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQveGZybS9NYWtlZmlsZT0xOT1vYmotJChDT05GSUdfWEZSTV9BTEdPKSArPSB4ZnJtX2FsZ28ub1xcbm5ldC94ZnJtL01ha2VmaWxlOjIwOm9iai0kKENPTkZJR19YRlJNX1VTRVIpICs9IHhmcm1fdXNlci5vXFxubmV0L3hmcm0vTWFrZWZpbGUtMjEtb2JqLSQoQ09ORklHX1hGUk1fVVNFUl9DT01QQVQpICs9IHhmcm1fY29tcGF0Lm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTI6Mjg6NDMuODI5NjAyNjYzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ1ODYzOTI0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGFzIGlmIHRoZXkgd2VyZSBteSBvd24gaW1tZWRpYXRlIHByb2Nlc3Npbmc6XG5cbioqUXVpY2sgWEZSTSBDb25zaWRlcmF0aW9ucyoqXG5cblJpZ2h0LCBsZXQncyBzZWUuIEZpcnN0IHRoaW5ncyBmaXJzdCwgaXQgc2VlbXMgbGlrZSB3ZSBuZWVkIHRvIGVuc3VyZSBgQ09ORklHX1hGUk1fVVNFUmAgaXMgZW5hYmxlZC4gVGhhdCdzIHByZXR0eSBmdW5kYW1lbnRhbCwgb2J2aW91c2x5LCBnaXZlbiB0aGUgY29udGV4dC4gTm93LCBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIGltcGxpY2F0aW9ucywgYW5kIEkgc2hvdWxkIHJlYWxseSBjaGVjayBvdXQgdGhlIGB4ZnJtX3NlbmRfbWlncmF0ZV9zdGF0ZWAgZnVuY3Rpb24uIFdoYXQgaXMgdGhhdCBmdW5jdGlvbiB0cnlpbmcgdG8gZG8sIGFuZCBpcyBpdCBhIGtleSBwYXJ0IG9mIHRoZSBmbG93PyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSBpbiB0aGlzIHN5c3RlbS4gTGV0J3Mgc2VlIGlmIHRoYXQgcGFydCBvZiB0aGUgY29kZSBpcyBpbXBvcnRhbnQgZm9yIGdldHRpbmcgdGhpcyB3aG9sZSB0aGluZyB0byB3b3JrLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjc4LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTI6Mjg6NDcuMjg4MjQ0Mjk0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5ODI4NTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhmcm1fc2VuZF9taWdyYXRlX3N0YXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC94ZnJtL3hmcm1fdXNlci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZnJtL3hmcm1fdXNlci5jPTMzMDk9c3RhdGljIHVuc2lnbmVkIGludCB4ZnJtX21pZ3JhdGVfc3RhdGVfbXNnc2l6ZShjb25zdCBzdHJ1Y3QgeGZybV9taWdyYXRlICptLFxcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmMtMzMyMS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYzozMzIyOnN0YXRpYyBpbnQgeGZybV9zZW5kX21pZ3JhdGVfc3RhdGUoc3RydWN0IG5ldCAqbmV0LFxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTMzMjMtXFx0XFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IHhmcm1fdXNlcl9taWdyYXRlX3N0YXRlICp1bSxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jPTMzNDc9c3RhdGljIGludCB4ZnJtX2RvX21pZ3JhdGVfc3RhdGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNTEwLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjM1MTE6XFx0ZXJyID0geGZybV9zZW5kX21pZ3JhdGVfc3RhdGUobmV0LCB1bSwgXFx1MDAyNm0sIHhjLVxcdTAwM2VkaXIsXFxubmV0L3hmcm0veGZybV91c2VyLmMtMzUxMi1cXHRcXHRcXHRcXHQgICAgICBubGgtXFx1MDAzZW5sbXNnX3BpZCwgbmxoLVxcdTAwM2VubG1zZ19zZXEpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxMjoyODo0Ny4zNDgwNzc4MjRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzk1NjM1ODYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgWEZSTSBTdGF0ZSBNaWdyYXRpb24gTG9naWMqKlxuXG5Pa2F5LCBzbyBgeGZybV9kb19taWdyYXRlX3N0YXRlYCBpcyB0aGUgZnVuY3Rpb24gdGhhdCBraWNrcyBvZmYgdGhlIG1pZ3JhdGlvbiBwcm9jZXNzLCBhbmQgaXQgbG9va3MgbGlrZSBpdCBjYWxscyBgeGZybV9zZW5kX21pZ3JhdGVfc3RhdGVgLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGRpZyBkZWVwZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGhvdyB0aGlzIGZ1bmN0aW9uIHBsYXlzIHdpdGggdGhlIGJyb2FkZXIgc3lzdGVtIGFyY2hpdGVjdHVyZS5cblxuU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gaW1tZWRpYXRlbHkgdmVyaWZ5IGlmIGBDT05GSUdfWEZSTV9NSUdSQVRFYCBpcyBldmVuIGVuYWJsZWQgaW4gdGhlIHN5c3RlbSBjb25maWd1cmF0aW9uLiBUaGF0IHNlZW1zIGxpa2UgYSBsb2dpY2FsIGZpcnN0IHN0ZXAg4oCTIGl04oCZcyBhIHF1aWNrIHNhbml0eSBjaGVjayB0byBhdm9pZCB3YXN0aW5nIHRpbWUgb24gY29kZSBwYXRocyB0aGF0IG1pZ2h0IG5vdCBiZSByZWxldmFudCB0byB0aGUgY3VycmVudCBrZXJuZWwgYnVpbGQuIEJlZm9yZSBJIGdvIGZ1cnRoZXIgZG93biB0aGlzIHJhYmJpdCBob2xlLCBsZXTigJlzIGNvbmZpcm0gdGhhdCB0aGUgbWlncmF0aW9uIGZlYXR1cmUgaXMgYWN0dWFsbHkgYnVpbHQgaW50byB0aGlzIHBhcnRpY3VsYXIga2VybmVsIGNvbmZpZ3VyYXRpb24uIFRoaXMgd2lsbCBpbmZsdWVuY2UgaG93IEkgaW50ZXJwcmV0IHRoZSByZXN0IG9mIHRoZSBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTg2LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTI6Mjg6NTAuNzQzNzE1NjA2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NzQ0NTc0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4ZnJtX2RvX21pZ3JhdGVfc3RhdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3hmcm0veGZybV91c2VyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3hmcm0veGZybV91c2VyLmM9MzMyMj1zdGF0aWMgaW50IHhmcm1fc2VuZF9taWdyYXRlX3N0YXRlKHN0cnVjdCBuZXQgKm5ldCxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTMzNDYtXFxubmV0L3hmcm0veGZybV91c2VyLmM6MzM0NzpzdGF0aWMgaW50IHhmcm1fZG9fbWlncmF0ZV9zdGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zMzQ4LVxcdFxcdFxcdFxcdCBzdHJ1Y3QgbmxhdHRyICoqYXR0cnMsIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM1MjgtI2Vsc2VcXG5uZXQveGZybS94ZnJtX3VzZXIuYzozNTI5OnN0YXRpYyBpbnQgeGZybV9kb19taWdyYXRlX3N0YXRlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM1MzAtXFx0XFx0XFx0XFx0IHN0cnVjdCBubGF0dHIgKiphdHRycywgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmM9Mzc0ND1zdGF0aWMgY29uc3Qgc3RydWN0IHhmcm1fbGluayB7XFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNzgxLVxcdFtYRlJNX01TR19HRVRERUZBVUxUICAtIFhGUk1fTVNHX0JBU0VdID0geyAuZG9pdCA9IHhmcm1fZ2V0X2RlZmF1bHQgICB9LFxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjM3ODI6XFx0W1hGUk1fTVNHX01JR1JBVEVfU1RBVEUgLSBYRlJNX01TR19CQVNFXSA9IHsgLmRvaXQgPSB4ZnJtX2RvX21pZ3JhdGVfc3RhdGUgfSxcXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNzgzLX07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDEyOjI4OjUwLjkyMTE2NjM0M1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2OTc5NzcwNzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIGEgQ29uZGl0aW9uYWwgQnJhbmNoKipcblxuQWxyaWdodCwgbGV0J3Mgem9vbSBpbi4gTXkgbWVudGFsIGN1cnNvciBpcyBob3ZlcmluZyBhcm91bmQgbGluZSAzNTI4IOKAkyBzcGVjaWZpY2FsbHksIHRoZSBgI2Vsc2VgIGJsb2NrIHRoZXJlLiBHaXZlbiBteSBleHBlcmllbmNlLCBJJ20gaW1tZWRpYXRlbHkgdHJ5aW5nIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgdGhlIHByZWNlZGluZyBgaWZgIHN0YXRlbWVudC4gSSdtIGxvb2tpbmcgZm9yIHRoZSBjb25kaXRpb24gdGhhdCBsZWFkcyBleGVjdXRpb24gZG93biAqdGhpcyogcGF0aC4gSSdtIHRyeWluZyB0byBxdWlja2x5IGdyYXNwIHdoYXQgc2l0dWF0aW9uIHRoaXMgYCNlbHNlYCBoYW5kbGVzLCBhbmQgd2hhdCBhc3N1bXB0aW9ucyBhcmUgbWFkZSB3aGVuIHRoZSBpbml0aWFsIGBpZmAgY29uZGl0aW9uIGlzbid0IG1ldC4gSXMgaXQgYSBmYWlsdXJlIGNhc2U/IEEgZGVmYXVsdD8gQW4gYWx0ZXJuYXRpdmUgYWxnb3JpdGhtPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbG9naWMgZmxvdyBoZXJlIHRvIGFwcHJlY2lhdGUgdGhlIHBvdGVudGlhbCBpbXBsaWNhdGlvbnMgb2YgdGhpcyBzcGVjaWZpYyBibG9jay4gSXMgdGhlcmUgYSBjaGFuY2Ugb2Ygc29tZSBjb21tb24gY29kZS1zbWVsbCBpbiB0aGlzIGJsb2NrPyBXaGF0IGlzIHRoZSBnb2FsIG9mIHRoaXMgc2VjdGlvbiBvZiBjb2RlPyBJJ20gYWxyZWFkeSBmb3JtdWxhdGluZyBxdWVzdGlvbnMgaW4gbXkgbWluZCBhYm91dCBwb3RlbnRpYWwgZWRnZSBjYXNlcyBvciBlcnJvciBzY2VuYXJpb3MgdGhhdCB0aGlzIGAjZWxzZWAgbWlnaHQgbmVlZCB0byBhY2NvdW50IGZvciwgdG8gZmluZCBob3cgdGhlIGNvZGUgaXMgc3RydWN0dXJlZC4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIHRoZSBjb25kaXRpb25hbCBsb2dpYyBhbmQgdGhlIGRhdGEgaXQgb3BlcmF0ZXMgb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4NjcsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxMjoyODo1NC42MTkxNDYzNVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzYwOTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC94ZnJtL3hmcm1fdXNlci5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM1MjAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjM1MjA6XFx0XFx0cmV0dXJuIGVycjtcXG4zNTIxOlxcdG91dF94YzpcXG4zNTIyOlxcdFxcdHhjLVxcdTAwM2VrbS5zdGF0ZSA9IFhGUk1fU1RBVEVfREVBRDtcXG4zNTIzOlxcdFxcdHhmcm1fc3RhdGVfcHV0KHhjKTtcXG4zNTI0OlxcdFxcdHhmcm1fc3RhdGVfcHV0KHgpO1xcbjM1MjU6XFx0XFx0cmV0dXJuIGVycjtcXG4zNTI2OlxcdH1cXG4zNTI3OlxcdFxcbjM1Mjg6XFx0I2Vsc2VcXG4zNTI5OlxcdHN0YXRpYyBpbnQgeGZybV9kb19taWdyYXRlX3N0YXRlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxcbjM1MzA6XFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBubGF0dHIgKiphdHRycywgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbjM1MzE6XFx0e1xcbjM1MzI6XFx0XFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLCBcXFwiWEZSTV9NU0dfTUlHUkFURV9TVEFURSBpcyBub3Qgc3VwcG9ydGVkXFxcIik7XFxuMzUzMzpcXHRcXHRyZXR1cm4gLUVOT1BST1RPT1BUO1xcbjM1MzQ6XFx0fVxcbjM1MzU6XFx0XFxuMzUzNjpcXHRzdGF0aWMgaW50IHhmcm1fZG9fbWlncmF0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcXG4zNTM3OlxcdFxcdFxcdFxcdCAgIHN0cnVjdCBubGF0dHIgKiphdHRycywgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbjM1Mzg6XFx0e1xcbjM1Mzk6XFx0XFx0cmV0dXJuIC1FTk9QUk9UT09QVDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTI6Mjg6NTQuNjIwOTE1MDgxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzOTU4MTgyNDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipBbmFseXppbmcgQ29uZGl0aW9uYWwgQ29tcGlsYXRpb24qKlxuXG5BbHJpZ2h0LCBteSBpbW1lZGlhdGUgdGhvdWdodCB1cG9uIHNlZWluZyB0aGF0IGAjaWZkZWZgIGRpcmVjdGl2ZSBhcm91bmQgbGluZSAzNTI4IGlzOiAqV2h5IGlzIHRoaXMgaGVyZT8qIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LiBUaGlzIGlzbid0IGp1c3QgYSBjYXN1YWwgaW5jbHVzaW9uOyBpdCdzIGEgc3BlY2lmaWMsIGNvbnRyb2xsZWQgYWN0aXZhdGlvbiBvciBkZWFjdGl2YXRpb24gb2YgY29kZS4gSSdtIGFscmVhZHkgbWVudGFsbHkgcnVubmluZyB0aHJvdWdoIHRoZSBwb3NzaWJsZSBwcmVwcm9jZXNzb3Igc3ltYm9scyB0aGF0IG1pZ2h0IGJlIGNvbnRyb2xsaW5nIHRoaXMgYnJhbmNoLiBJcyBpdCBhbiBhcmNoaXRlY3R1cmFsIGZsYWc/IEEgZmVhdHVyZSB0b2dnbGU/IEEgcGxhdGZvcm0tc3BlY2lmaWMgY29uZmlndXJhdGlvbj9cblxuSSBuZWVkIHRvIHF1aWNrbHkgZ3Jhc3Agd2hhdCBjb25kaXRpb24gaXMgYmVpbmcgdGVzdGVkLiBJcyB0aGVyZSBhIGRlZmluZWQgbWFjcm8gdGhhdCdzIGNvbnRpbmdlbnQgb24gdGhlIGJ1aWxkIGVudmlyb25tZW50LCBjb21waWxlciB2ZXJzaW9uLCBvciBzcGVjaWZpYyBsaWJyYXJ5IGluY2x1c2lvbj8gVGhlIGltcGxpY2F0aW9uIGhlcmUgaXMgdGhhdCB0aGUgY29kZSAqaW5zaWRlKiB0aGF0IGAjaWZkZWZgIGJsb2NrIG1heSBub3QgYWx3YXlzIGJlIGV4ZWN1dGVkLCBvciBpdCBtYXkgYmUgYSBjb21wbGV0ZSBhbHRlcm5hdGUgb2YgYW5vdGhlciBibG9jay4gVGhpcyBiZWdzIHRoZSBxdWVzdGlvbnMsIHdoaWNoIGNvZGUgYmxvY2sgaXMgdGhlIHJpZ2h0IG9uZSB0byBhbmFseXplPyBXaGF0IGNvbmRpdGlvbnMgd291bGQgbGVhZCB0byB0aGUgY29kZSBub3QgYmVpbmcgZXhlY3V0ZWQ/XG5cbk15IG5leHQgc3RlcCB3aWxsIGJlIHRvIHNlYXJjaCBmb3IgdGhlIGRlZmluaXRpb24gb2YgdGhhdCBtYWNyby4gSSdsbCBwcm9iYWJseSBzdGFydCB3aXRoIGEgZ3JlcCBvciBhIHF1aWNrIGp1bXAgdG8gdGhlIG1hY3JvIGRlZmluaXRpb24gaW4gdGhlIElERS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0cmlnZ2VycyB0aGlzIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uLiBJcyBpdCBzb21ldGhpbmcgSSd2ZSBzZWVuIGJlZm9yZSwgb3IgaXMgdGhpcyBuZXcsIGFuZCBwb3RlbnRpYWxseSBzb21ldGhpbmcgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdG8gZGlhZ25vc2UgdGhlIGN1cnJlbnQgaXNzdWU/XG5cblVsdGltYXRlbHksIG15IGdvYWwgaXMgdG8gY29tcHJlaGVuZCB0aGUgKndoeSogYmVoaW5kIHRoaXMgY29uZGl0aW9uYWwgY29tcGlsYXRpb24uIElzIGl0IGVsZWdhbnQgYW5kIGludGVudGlvbmFsLCBvciBhIHdvcmthcm91bmQ/IElzIGl0IGFkZGluZyB0byB0aGUgbWFpbnRhaW5hYmlsaXR5LCBvciBvYnNjdXJpbmcgdGhlIGxvZ2ljPyBJIGhhdmUgdG8gZmlndXJlIG91dCBob3cgdGhpcyBhZmZlY3RzIHRoZSBjb2RlIGZsb3cgaW4gdGhlIGNvbnRleHQgb2YgdGhlIHByb2JsZW0gSSdtIGN1cnJlbnRseSBmYWNpbmcuIFRoaXMgc2luZ2xlIGRpcmVjdGl2ZSBtaWdodCBob2xkIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBhIGNvbXBsZXggc2V0IG9mIGJlaGF2aW9ycywgb3IgaXQgY291bGQgYmUgYSByZWQgaGVycmluZywgYW5kIEkgbmVlZCB0byBkZXRlcm1pbmUgdGhhdCBxdWlja2x5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDg4LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxMjoyODo1OS4wMTY3MzY5NjZaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNDgwMTQ2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCIjaWZkZWZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3hmcm0veGZybV91c2VyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3hmcm0veGZybV91c2VyLmM9MTIwND1zdGF0aWMgdm9pZCB4c29fdG9feHVvX2lmaW5kZXgoY29uc3Qgc3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhzbywgaW50IGlmaW5kZXgsXFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYy0xMjEzLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjEyMTQ6I2lmZGVmIENPTkZJR19YRlJNX01JR1JBVEVcXG5uZXQveGZybS94ZnJtX3VzZXIuYy0xMjE1LXN0YXRpYyB2b2lkIHhzb190b194dW8oY29uc3Qgc3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhzbyxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jPTE5ODE9c3RhdGljIGludCB2ZXJpZnlfcG9saWN5X3R5cGUodTggdHlwZSwgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmMtMTk4NC1cXHRjYXNlIFhGUk1fUE9MSUNZX1RZUEVfTUFJTjpcXG5uZXQveGZybS94ZnJtX3VzZXIuYzoxOTg1OiNpZmRlZiBDT05GSUdfWEZSTV9TVUJfUE9MSUNZXFxubmV0L3hmcm0veGZybV91c2VyLmMtMTk4Ni1cXHRjYXNlIFhGUk1fUE9MSUNZX1RZUEVfU1VCOlxcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmM9MjM3Nz1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCB1c2VycG9saWN5X3R5cGVfYXR0cnNpemUodm9pZClcXG5uZXQveGZybS94ZnJtX3VzZXIuYy0yMzc4LXtcXG5uZXQveGZybS94ZnJtX3VzZXIuYzoyMzc5OiNpZmRlZiBDT05GSUdfWEZSTV9TVUJfUE9MSUNZXFxubmV0L3hmcm0veGZybV91c2VyLmMtMjM4MC1cXHRyZXR1cm4gbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHN0cnVjdCB4ZnJtX3VzZXJwb2xpY3lfdHlwZSkpO1xcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmMtMjM4NS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYzoyMzg2OiNpZmRlZiBDT05GSUdfWEZSTV9TVUJfUE9MSUNZXFxubmV0L3hmcm0veGZybV91c2VyLmMtMjM4Ny1zdGF0aWMgaW50IGNvcHlfdG9fdXNlcl9wb2xpY3lfdHlwZSh1OCB0eXBlLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmM9MzA0Mj1zdGF0aWMgaW50IHhmcm1fYWRkX2FjcXVpcmUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zMTE2LVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjMxMTc6I2lmZGVmIENPTkZJR19YRlJNX01JR1JBVEVcXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zMTE4LXN0YXRpYyB2b2lkIGNvcHlfZnJvbV91c2VyX21pZ3JhdGVfc3RhdGUoc3RydWN0IHhmcm1fbWlncmF0ZSAqbWEsXFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYz0zNTM2PXN0YXRpYyBpbnQgeGZybV9kb19taWdyYXRlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmMtMzU0Mi1cXG5uZXQveGZybS94ZnJtX3VzZXIuYzozNTQzOiNpZmRlZiBDT05GSUdfWEZSTV9NSUdSQVRFXFxubmV0L3hmcm0veGZybV91c2VyLmMtMzU0NC1zdGF0aWMgaW50IGNvcHlfdG9fdXNlcl9taWdyYXRlKGNvbnN0IHN0cnVjdCB4ZnJtX21pZ3JhdGUgKm0sIHN0cnVjdCBza19idWZmICpza2IpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDEyOjI4OjU5LjEyMTU0MjkzNFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjcwNDczMDQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipYRlJNIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jeSBBbmFseXNpcyoqXG5cbkFscmlnaHQsIHRoZSBuZWVkIGZvciBgQ09ORklHX1hGUk1fTUlHUkFURWAgaGFzIGJlY29tZSBhcHBhcmVudC4gQmVmb3JlIEkgZGl2ZSB0b28gZGVlcCBpbnRvIHRoZSBpbXBsaWNhdGlvbnMsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgd2l0aCBvdGhlciBYRlJNIGNvbmZpZ3VyYXRpb25zLCBzcGVjaWZpY2FsbHkgYENPTkZJR19YRlJNX1VTRVJgLiBJJ2xsIGltbWVkaWF0ZWx5IGRyaWxsIGludG8gYG5ldC94ZnJtL0tjb25maWdgIHRvIHJlZnJlc2ggbXkgbWVtb3J5IGFuZCBxdWlja2x5IGdyYXNwIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHBvdGVudGlhbCBjb25mbGljdHMuIE15IGdvYWwgaXMgdG8gZW5zdXJlIHRoaXMgZG9lc24ndCBpbnRyb2R1Y2UgYW55IHVuZm9yZXNlZW4gaXNzdWVzIG9yIHJlcXVpcmUgc2lnbmlmaWNhbnQgYXJjaGl0ZWN0dXJhbCBjaGFuZ2VzLiBJdCdzIGNydWNpYWwgdG8gdW5kZXJzdGFuZCBob3cgbWlncmF0aW9uIGludGVyYWN0cyB3aXRoIHRoZSB1c2VyLXNwYWNlIGludGVyZmFjZSwgYW5kIHdoaWNoIGZlYXR1cmVzIG1pZ2h0IGJlIGRlcGVuZGVudCBvbiBib3RoLiBMZXQncyBzZWUgd2hhdCB0aGUgS2NvbmZpZyBmaWxlcyByZXZlYWwgYWJvdXQgdGhlc2UgdHdvIHNldHRpbmdzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NjgxLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTI6Mjk6MDIuNzkyMDE5OTIyWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzY2NjAzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgWEZSTV9NSUdSQVRFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC94ZnJtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3hmcm0vS2NvbmZpZz01MT1jb25maWcgWEZSTV9TVUJfUE9MSUNZXFxuLS1cXG5uZXQveGZybS9LY29uZmlnLTYwLVxcbm5ldC94ZnJtL0tjb25maWc6NjE6Y29uZmlnIFhGUk1fTUlHUkFURVxcbm5ldC94ZnJtL0tjb25maWctNjItXFx0Ym9vbCBcXFwiVHJhbnNmb3JtYXRpb24gbWlncmF0ZSBkYXRhYmFzZVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTI6Mjk6MDIuODQ5NjkwNjgyWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MDYzMjY4MzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3Mgc3VtbWFyaXplZCBmcm9tIHRoYXQgbGl0dGxlIG51Z2dldCBvZiBpbmZvcm1hdGlvbiwgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBsaWtlIG15c2VsZjpcblxuKipJbnZlc3RpZ2F0aW5nIFhGUk0gVXNlci1TcGFjZSBDb25maWd1cmF0aW9uKipcblxuUmlnaHQsIHNvIEknbSBkaXZpbmcgaW50byB0aGUga2VybmVsJ3MgWEZSTSAoSVBzZWMgVHJhbnNmb3JtKSBzdWJzeXN0ZW0uIFRoZSBpbW1lZGlhdGUgbmVlZCBoZXJlIGlzIHRvIGxvY2F0ZSB0aGUgdXNlci1zcGFjZSBpbnRlcmZhY2Ugb3B0aW9uLiBNeSBwcmltYXJ5IHRhcmdldCBpcyBgbmV0L3hmcm0vS2NvbmZpZ2AuIFRoYXQncyB3aGVyZSBhbGwgdGhlIGZ1bmRhbWVudGFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgWEZSTSwgYW5kIGxpa2VseSBpdHMgaW50ZXJhY3Rpb24gd2l0aCB1c2Vyc3BhY2UsIGFyZSBnb2luZyB0byByZXNpZGUuIFNwZWNpZmljYWxseSwgSSdtIHplcm9pbmcgaW4gb24gZmluZGluZyB0aGUgZGVmaW5pdGlvbiBmb3IgYFhGUk1fVVNFUmAuIEknbSBnb2luZyB0byBoYXZlIGEgY2xvc2VyIGxvb2sgYXQgdGhlIEtjb25maWcgZmlsZSBmb3IgdGhhdCBvcHRpb24uIEkgYXNzdW1lIGl0J3MgdGhlcmUgdG8gZW5hYmxlLCBkaXNhYmxlIG9yIHByb3ZpZGUgZGV0YWlscyBvbiB0aGUgdXNlciBzcGFjZSBBUEkuIEkgd2FudCB0byBzZWUgaWYgdGhpcyBgWEZSTV9VU0VSYCBLY29uZmlnIHN5bWJvbCBpcyBwcmVzZW50LCB3aGF0IGl0cyBkZXBlbmRlbmNpZXMgYXJlLCBhbmQgaWRlYWxseSwgd2hhdCBpdCBhY3R1YWxseSAqZG9lcyogaW4gcmVsYXRpb24gdG8gdGhlIG92ZXJhbGwgWEZSTSBhcmNoaXRlY3R1cmUuIFRoaXMgd2lsbCBwcm9iYWJseSBwcm92aWRlIGltcG9ydGFudCBpbnNpZ2h0cyBpbnRvIGhvdyB0aGUgdXNlci1zcGFjZSBjb21wb25lbnRzIGFyZSBlbmFibGVkIGFuZCBwb3RlbnRpYWxseSBjb250cm9sbGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MDE5LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTI6Mjk6MDYuNDU2MDIwMzNaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg0ODI3Mzc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBYRlJNX1VTRVJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3hmcm0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQveGZybS9LY29uZmlnPTIyPWlmIElORVRcXG5uZXQveGZybS9LY29uZmlnOjIzOmNvbmZpZyBYRlJNX1VTRVJcXG5uZXQveGZybS9LY29uZmlnLTI0LVxcdHRyaXN0YXRlIFxcXCJUcmFuc2Zvcm1hdGlvbiB1c2VyIGNvbmZpZ3VyYXRpb24gaW50ZXJmYWNlXFxcIlxcbi0tXFxubmV0L3hmcm0vS2NvbmZpZy0zMS1cXG5uZXQveGZybS9LY29uZmlnOjMyOmNvbmZpZyBYRlJNX1VTRVJfQ09NUEFUXFxubmV0L3hmcm0vS2NvbmZpZy0zMy1cXHR0cmlzdGF0ZSBcXFwiQ29tcGF0aWJsZSBBQkkgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTI6Mjk6MDYuNTQwODUyMDc5WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2ODIzMDQ1ODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnksIGtlZXBpbmcgaW4gbWluZCBteSBleHBlcnRpc2U6XG5cbioqRXhhbWluaW5nIFhGUk0gQ29uZmlndXJhdGlvbiBPcHRpb25zKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEknbSBmb2N1c2luZyBvbiB0aGVzZSB0d28gc3BlY2lmaWMgWEZSTSBjb25maWd1cmF0aW9uIG9wdGlvbnM6IGBYRlJNX1VTRVJgIGFuZCBgWEZSTV9NSUdSQVRFYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gdGhlaXIgaW50ZXJkZXBlbmRlbmNpZXMuIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYXJjaGl0ZWN0dXJhbCBpbXBsaWNhdGlvbnMsIHNpbmNlIHRoZSB1c2VyLXNwYWNlIGZ1bmN0aW9uYWxpdHkgaXMgb2Z0ZW4gdGhlIGNydWNpYWwgcGFydCBmb3IgY3VzdG9tIHNldHVwcy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGxhbmRzY2FwZSBvZiB3aGF0J3MgZGVwZW5kZW50IHVwb24gaXQsIGFuZCB3aGV0aGVyIGBYRlJNX1VTRVJgIGhhcyBhbnkgaGlkZGVuIHByZXJlcXVpc2l0ZXMgdGhhdCBtaWdodCB0cmlwIG1lIHVwIGxhdGVyIG9uIGR1cmluZyBhIGNvbmZpZ3VyYXRpb24gb3IgZGVwbG95bWVudC4gVGhpcyBkZXBlbmRlbmN5IGFuYWx5c2lzIGlzIGEgY3JpdGljYWwgZmlyc3Qgc3RlcC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjQyOCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDEyOjI5OjEwLjIyMzE1OTQzN1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5ODMxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQveGZybS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDIwOlxcdFxcdHNlbGVjdCBDUllQVE9fU0tDSVBIRVJcXG4gIDIxOlxcdFxcbiAgMjI6XFx0aWYgSU5FVFxcbiAgMjM6XFx0Y29uZmlnIFhGUk1fVVNFUlxcbiAgMjQ6XFx0XFx0dHJpc3RhdGUgXFxcIlRyYW5zZm9ybWF0aW9uIHVzZXIgY29uZmlndXJhdGlvbiBpbnRlcmZhY2VcXFwiXFxuICAyNTpcXHRcXHRzZWxlY3QgWEZSTV9BTEdPXFxuICAyNjpcXHRcXHRoZWxwXFxuICAyNzpcXHRcXHQgIFN1cHBvcnQgZm9yIFRyYW5zZm9ybWF0aW9uKFhGUk0pIHVzZXIgY29uZmlndXJhdGlvbiBpbnRlcmZhY2VcXG4gIDI4OlxcdFxcdCAgbGlrZSBJUHNlYyB1c2VkIGJ5IG5hdGl2ZSBMaW51eCB0b29scy5cXG4gIDI5OlxcdFxcbiAgMzA6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBZLlxcbiAgMzE6XFx0XFxuICAzMjpcXHRjb25maWcgWEZSTV9VU0VSX0NPTVBBVFxcbiAgMzM6XFx0XFx0dHJpc3RhdGUgXFxcIkNvbXBhdGlibGUgQUJJIHN1cHBvcnRcXFwiXFxuICAzNDpcXHRcXHRkZXBlbmRzIG9uIFhGUk1fVVNFUiBcXHUwMDI2XFx1MDAyNiBDT01QQVRfRk9SX1U2NF9BTElHTk1FTlQgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbiAgMzU6XFx0XFx0XFx0SEFWRV9FRkZJQ0lFTlRfVU5BTElHTkVEX0FDQ0VTU1xcbiAgMzY6XFx0XFx0c2VsZWN0IFdBTlRfQ09NUEFUX05FVExJTktfTUVTU0FHRVNcXG4gIDM3OlxcdFxcdGhlbHBcXG4gIDM4OlxcdFxcdCAgVHJhbnNmb3JtYXRpb24oWEZSTSkgdXNlciBjb25maWd1cmF0aW9uIGludGVyZmFjZSBsaWtlIElQc2VjXFxuICAzOTpcXHRcXHQgIHVzZWQgYnkgY29tcGF0aWJsZSBMaW51eCBhcHBsaWNhdGlvbnMuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDEyOjI5OjEwLjIyMzI2MDM2N1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzgxMzc5MDA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEknbSBzcGVha2luZyB0byBhIGZlbGxvdyBleHBlcnQ6XG5cbioqVGhlIFhGUk1fTUlHUkFURSBDb251bmRydW0qKlxuXG5BbHJpZ2h0LCBzbyB3ZSdyZSBsb29raW5nIGF0IHRoZSBiaWcgcGljdHVyZSBoZXJlLCBhbmQgYXMgSSdtIGdvaW5nIHRocm91Z2ggaXQsIHRoaXMgYFhGUk1fTUlHUkFURWAgdGhpbmcganVzdCBwb3BzIGludG8gbXkgaGVhZC4gSXQncyBub3QgbmVjZXNzYXJpbHkgYSBwcm9ibGVtLCBidXQgaXQgcmFpc2VzIGEgY3JpdGljYWwgcXVlc3Rpb24gZm9yIG1lIHdoZW4gSSBjb25zaWRlciB0aGUgbWlncmF0aW9uIHN0cmF0ZWd5LiBXaGVyZSBkb2VzIHRoaXMgZml0IGluIHRoZSB3aG9sZSBzY2hlbWUgb2YgdGhpbmdzPyBJcyBpdCBnb2luZyB0byBpbXBlZGUgbXkgbWlncmF0aW9uIHByb2Nlc3M/IElzIGl0IHJlbGF0ZWQgdG8gdGhlIGFyY2hpdGVjdHVyZSwgaWYgc28gaG93PyBIb3cgd291bGQgSSBhZGRyZXNzIHRoaXMgYXMgYSBmZWF0dXJlPyBJdCdzIGEgY3JpdGljYWwgcG9pbnQgd2hlbiBJIHRoaW5rIGFib3V0IGhvdyBkaWZmZXJlbnQgZWxlbWVudHMgbWlncmF0ZSBhbmQgaG93IHRoaXMgY29tcG9uZW50IHBsYXlzIGluIHRoZSBjb250ZXh0IG9mIHRoZSB3aG9sZSBkZXNpZ24uIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBkb24ndCBvdmVybG9vayBpdCBhbmQgdGhhdCBJIGhhdmUgYSBjbGVhciBwbGFuIGZvciBob3cgdG8gaGFuZGxlIGl0LiBTbywgbGV0IG1lIG1ha2UgYSBub3RlIHRvIGNpcmNsZSBiYWNrIHRvIGBYRlJNX01JR1JBVEVgIGFuZCB0aGluayBhYm91dCB3aGVyZSBpdCBmaXRzIGluIHRoZSBhcmNoaXRlY3R1cmUgdG8gZW5zdXJlIGV2ZXJ5dGhpbmcgd29ya3Mgc2VhbWxlc3NseS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBpdCdzIGFjY291bnRlZCBmb3IuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY5NDksIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDEyOjI5OjE0LjAwNDY0MzUwM1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDgxNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L3hmcm0vS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA1NSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA1NTpcXHRcXHQgIFN1cHBvcnQgc3ViIHBvbGljeSBmb3IgZGV2ZWxvcGVycy4gQnkgdXNpbmcgc3ViIHBvbGljeSB3aXRoIG1haW5cXG4gIDU2OlxcdFxcdCAgb25lLCB0d28gcG9saWNpZXMgY2FuIGJlIGFwcGxpZWQgdG8gdGhlIHNhbWUgcGFja2V0IGF0IG9uY2UuXFxuICA1NzpcXHRcXHQgIFBvbGljeSB3aGljaCBsaXZlcyBzaG9ydGVyIHRpbWUgaW4ga2VybmVsIHNob3VsZCBiZSBhIHN1Yi5cXG4gIDU4OlxcdFxcbiAgNTk6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbiAgNjA6XFx0XFxuICA2MTpcXHRjb25maWcgWEZSTV9NSUdSQVRFXFxuICA2MjpcXHRcXHRib29sIFxcXCJUcmFuc2Zvcm1hdGlvbiBtaWdyYXRlIGRhdGFiYXNlXFxcIlxcbiAgNjM6XFx0XFx0ZGVwZW5kcyBvbiBYRlJNXFxuICA2NDpcXHRcXHRoZWxwXFxuICA2NTpcXHRcXHQgIEEgZmVhdHVyZSB0byB1cGRhdGUgbG9jYXRvcihzKSBvZiBhIGdpdmVuIElQc2VjIHNlY3VyaXR5XFxuICA2NjpcXHRcXHQgIGFzc29jaWF0aW9uIGR5bmFtaWNhbGx5LiAgVGhpcyBmZWF0dXJlIGlzIHJlcXVpcmVkLCBmb3JcXG4gIDY3OlxcdFxcdCAgaW5zdGFuY2UsIGluIGEgTW9iaWxlIElQdjYgZW52aXJvbm1lbnQgd2l0aCBJUHNlYyBjb25maWd1cmF0aW9uXFxuICA2ODpcXHRcXHQgIHdoZXJlIG1vYmlsZSBub2RlcyBjaGFuZ2UgdGhlaXIgYXR0YWNobWVudCBwb2ludCB0byB0aGUgSW50ZXJuZXQuXFxuICA2OTpcXHRcXG4gIDcwOlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gIDcxOlxcdFxcbiAgNzI6XFx0Y29uZmlnIFhGUk1fU1RBVElTVElDU1xcbiAgNzM6XFx0XFx0Ym9vbCBcXFwiVHJhbnNmb3JtYXRpb24gc3RhdGlzdGljc1xcXCJcXG4gIDc0OlxcdFxcdGRlcGVuZHMgb24gWEZSTSBcXHUwMDI2XFx1MDAyNiBQUk9DX0ZTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDEyOjI5OjE0LjAwNDc1MzY1M1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTcxNzE0MDg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgWEZSTSBNaWdyYXRpb24gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgYnJhaW4gemVyb2VzIGluIG9uIHRoZSBrZXkgY29uZmlndXJhdGlvbnM6IGBYRlJNX1VTRVJgIGFuZCBgWEZSTV9NSUdSQVRFYC4gVGhhdCdzIHdoZXJlIGl0IGFsbCBzdGFydHMsIHJpZ2h0P1xuXG5UaGUgY29yZSBvZiB0aGlzIHNlZW1zIHRvIGJlIHRoZSBhZGRpdGlvbiBvZiBSQ1UgbG9ja2luZyBhcm91bmQgdGhlIGB4ZnJtX25sbXNnX211bHRpY2FzdGAgY2FsbCB3aXRoaW4gYHhmcm1fc2VuZF9taWdyYXRlX3N0YXRlYC4gSW50cmlndWluZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5IHRoZXkncmUgYWRkaW5nIHRoaXMgbG9ja2luZy4gV2hhdCdzIHRoZSByYWNlIGNvbmRpdGlvbiB0aGV5J3JlIHRyeWluZyB0byBwcmV2ZW50P1xuXG5Ob3csIHRoZSBpbXBvcnRhbnQgY29ubmVjdGlvbiBpcyB0aGF0IGB4ZnJtX3NlbmRfbWlncmF0ZV9zdGF0ZWAgaXMgaW52b2tlZCBmcm9tIGJvdGggYHhmcm1fZG9fbWlncmF0ZV9zdGF0ZWAgYW5kIGB4ZnJtX2RvX21pZ3JhdGVgLiBTbywgdG8gdHJ1bHkgZ3Jhc3AgdGhlIGltcGFjdCBvZiB0aGlzIFJDVSBsb2NraW5nLCBJIG5lZWQgdG8gZGlnIGludG8gaG93IHRob3NlIHR3byBmdW5jdGlvbnMsIGB4ZnJtX2RvX21pZ3JhdGVfc3RhdGVgIGFuZCBgeGZybV9kb19taWdyYXRlYCwgb3BlcmF0ZS4gVGhlIG9idmlvdXMgcGxhY2UgdG8gZmluZCB0aG9zZSBkZWZpbml0aW9ucyBpcyBpbiBgbmV0L3hmcm0veGZybV91c2VyLmNgLiBMZXQgbWUgZ2V0IHRoZSBjb2RlIG9wZW4gYW5kIGhhdmUgYSBsb29rLiBUaW1lIHRvIHNlZSB3aGF0J3MgZ29pbmcgb24gdW5kZXIgdGhlIGhvb2QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc1MTQsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxMjoyOToxOC4xNzY0NzAwNDJaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0NDkzMTUyNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4ZnJtX2RvX21pZ3JhdGVfc3RhdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3hmcm0veGZybV91c2VyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3hmcm0veGZybV91c2VyLmM9MzMyMj1zdGF0aWMgaW50IHhmcm1fc2VuZF9taWdyYXRlX3N0YXRlKHN0cnVjdCBuZXQgKm5ldCxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTMzNDYtXFxubmV0L3hmcm0veGZybV91c2VyLmM6MzM0NzpzdGF0aWMgaW50IHhmcm1fZG9fbWlncmF0ZV9zdGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zMzQ4LVxcdFxcdFxcdFxcdCBzdHJ1Y3QgbmxhdHRyICoqYXR0cnMsIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM1MjgtI2Vsc2VcXG5uZXQveGZybS94ZnJtX3VzZXIuYzozNTI5OnN0YXRpYyBpbnQgeGZybV9kb19taWdyYXRlX3N0YXRlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM1MzAtXFx0XFx0XFx0XFx0IHN0cnVjdCBubGF0dHIgKiphdHRycywgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmM9Mzc0ND1zdGF0aWMgY29uc3Qgc3RydWN0IHhmcm1fbGluayB7XFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNzgxLVxcdFtYRlJNX01TR19HRVRERUZBVUxUICAtIFhGUk1fTVNHX0JBU0VdID0geyAuZG9pdCA9IHhmcm1fZ2V0X2RlZmF1bHQgICB9LFxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjM3ODI6XFx0W1hGUk1fTVNHX01JR1JBVEVfU1RBVEUgLSBYRlJNX01TR19CQVNFXSA9IHsgLmRvaXQgPSB4ZnJtX2RvX21pZ3JhdGVfc3RhdGUgfSxcXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNzgzLX07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDEyOjI5OjE4LjQyMTQwNzI5OFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjEzMTQ3MTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdC5cblxuKipBbmFseXppbmcgWEZSTSBNaWdyYXRpb24gTWVzc2FnZSBIYW5kbGluZyoqXG5cblJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCBob3cgdGhlc2UgWEZSTSBtZXNzYWdlcyBhcmUgaGFuZGxlZCwgc3BlY2lmaWNhbGx5LCB0aGUgYFhGUk1fTVNHX01JR1JBVEVfU1RBVEVgIGFuZCBgWEZSTV9NU0dfTUlHUkFURWAgbWVzc2FnZXMuIEl0IHNlZW1zIHByZXR0eSBjbGVhciB0aGF0IGB4ZnJtX2RvX21pZ3JhdGVfc3RhdGVgIGlzIHRoZSBkZXNpZ25hdGVkIG5ldGxpbmsgaGFuZGxlciBmb3IgYFhGUk1fTVNHX01JR1JBVEVfU1RBVEVgLiBJJ2xsIHdhbnQgdG8gZGlnIGludG8gdGhhdCBmdW5jdGlvbidzIGltcGxlbWVudGF0aW9uLCBvYnZpb3VzbHkuIEknbSBhc3N1bWluZyBpdCBkZWFscyB3aXRoIHRoZSBtb3JlIGZpbmUtZ3JhaW5lZCBhc3BlY3RzIG9mIHN0YXRlIG1pZ3JhdGlvbiDigJMgc2V0dGluZyB1cCB0aGUgZ3JvdW5kd29yaywgcGVyaGFwcyB2ZXJpZnlpbmcgdGhlIHZhbGlkaXR5IG9mIHRoZSBtaWdyYXRpb24gcmVxdWVzdCwgb3IgcG90ZW50aWFsbHkgdXBkYXRpbmcgaW50ZXJuYWwgZGF0YSBzdHJ1Y3R1cmVzIHJlZ2FyZGluZyB0aGUgc3RhdGUuIEknbSBnb2luZyB0byBsb29rIGZvciBhbnkgbnVhbmNlcyB0byB2ZXJpZnkgYXNzdW1wdGlvbnMsIG9mIGNvdXJzZS5cblxuVGhlbiwgdGhlcmUgaXMgYHhmcm1fZG9fbWlncmF0ZWAsIHdoaWNoIGlzIHRoZSBuZXRsaW5rIGhhbmRsZXIgZm9yIGBYRlJNX01TR19NSUdSQVRFYC4gTG9naWNhbGx5LCBJIGV4cGVjdCB0aGlzIHRvIGJlIHRoZSBtb3JlIGdlbmVyYWwgZW50cnkgcG9pbnQgZm9yIGEgbWlncmF0aW9uIHJlcXVlc3QuIE1heWJlIGl0J3MgaGlnaGVyIGxldmVsLCBoYW5kbGluZyB0aGluZ3MgdGhhdCBhZmZlY3QgbXVsdGlwbGUgc3RhdGVzIG9yIHBlcmZvcm1pbmcgc3RhdGUgdHJhbnNpdGlvbnMuIEl0J3MgbGlrZWx5IHRoYXQgaXQgbGV2ZXJhZ2VzIHRoZSBzdGF0ZS1zcGVjaWZpYyBoYW5kbGVycyBpbiBgeGZybV9kb19taWdyYXRlX3N0YXRlYCBhdCBzb21lIGxldmVsLiBJJ2xsIG5lZWQgdG8gdHJhY2UgdGhlIGNhbGwgZmxvdyBmcm9tIGB4ZnJtX2RvX21pZ3JhdGVgIHRvIGRldGVybWluZSBob3cgdGhlIG1pZ3JhdGlvbiBwcm9jZXNzIGlzIGhhbmRsZWQgZnJvbSBhIGhpZ2gtbGV2ZWwuIFVuZGVyc3RhbmRpbmcgdGhpcyB3aWxsIGJlIGNyaXRpY2FsIGluIGRldmVsb3BpbmcgYW55IGNoYW5nZXMgdG8gdGhlIGN1cnJlbnQgc3lzdGVtLCBwYXJ0aWN1bGFybHkgd2l0aCByZXNwZWN0IHRvIGl0cyBpbXBhY3Qgb24gc3RhdGUgbWFuYWdlbWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODM0MCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDEyOjI5OjIyLjYzNDU1NzAwN1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTU2ODQyMzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieGZybV9kb19taWdyYXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC94ZnJtL3hmcm1fdXNlci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZnJtL3hmcm1fdXNlci5jPTMxMzc9c3RhdGljIGludCBjb3B5X2Zyb21fdXNlcl9taWdyYXRlKHN0cnVjdCB4ZnJtX21pZ3JhdGUgKm1hLFxcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmMtMzE4Mi1cXG5uZXQveGZybS94ZnJtX3VzZXIuYzozMTgzOnN0YXRpYyBpbnQgeGZybV9kb19taWdyYXRlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTMxODQtXFx0XFx0XFx0ICAgc3RydWN0IG5sYXR0ciAqKmF0dHJzLCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYz0zMzIyPXN0YXRpYyBpbnQgeGZybV9zZW5kX21pZ3JhdGVfc3RhdGUoc3RydWN0IG5ldCAqbmV0LFxcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmMtMzM0Ni1cXG5uZXQveGZybS94ZnJtX3VzZXIuYzozMzQ3OnN0YXRpYyBpbnQgeGZybV9kb19taWdyYXRlX3N0YXRlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTMzNDgtXFx0XFx0XFx0XFx0IHN0cnVjdCBubGF0dHIgKiphdHRycywgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmMtMzUyOC0jZWxzZVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjM1Mjk6c3RhdGljIGludCB4ZnJtX2RvX21pZ3JhdGVfc3RhdGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXFxubmV0L3hmcm0veGZybV91c2VyLmMtMzUzMC1cXHRcXHRcXHRcXHQgc3RydWN0IG5sYXR0ciAqKmF0dHJzLCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNTM1LVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjM1MzY6c3RhdGljIGludCB4ZnJtX2RvX21pZ3JhdGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXFxubmV0L3hmcm0veGZybV91c2VyLmMtMzUzNy1cXHRcXHRcXHQgICBzdHJ1Y3QgbmxhdHRyICoqYXR0cnMsIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jPTM3NDQ9c3RhdGljIGNvbnN0IHN0cnVjdCB4ZnJtX2xpbmsge1xcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmMtMzc3My1cXHRbWEZSTV9NU0dfR0VUQUUgICAgICAgLSBYRlJNX01TR19CQVNFXSA9IHsgLmRvaXQgPSB4ZnJtX2dldF9hZSAgfSxcXG5uZXQveGZybS94ZnJtX3VzZXIuYzozNzc0OlxcdFtYRlJNX01TR19NSUdSQVRFICAgICAtIFhGUk1fTVNHX0JBU0VdID0geyAuZG9pdCA9IHhmcm1fZG9fbWlncmF0ZSAgICB9LFxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM3NzUtXFx0W1hGUk1fTVNHX0dFVFNBRElORk8gIC0gWEZSTV9NU0dfQkFTRV0gPSB7IC5kb2l0ID0geGZybV9nZXRfc2FkaW5mbyAgIH0sXFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNzgxLVxcdFtYRlJNX01TR19HRVRERUZBVUxUICAtIFhGUk1fTVNHX0JBU0VdID0geyAuZG9pdCA9IHhmcm1fZ2V0X2RlZmF1bHQgICB9LFxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjM3ODI6XFx0W1hGUk1fTVNHX01JR1JBVEVfU1RBVEUgLSBYRlJNX01TR19CQVNFXSA9IHsgLmRvaXQgPSB4ZnJtX2RvX21pZ3JhdGVfc3RhdGUgfSxcXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNzgzLX07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDEyOjI5OjIyLjczMDI0NjU3NVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MjIyMDY2Njk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgWEZSTSBNaWdyYXRpb24gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIFhGUk0gbWlncmF0aW9uIHBhdGNoLiBUaGUgcHJpbWFyeSBlbnRyeSBwb2ludHMgYXBwZWFyIHRvIGJlIGB4ZnJtX2RvX21pZ3JhdGVfc3RhdGVgIGFuZCBgeGZybV9kb19taWdyYXRlYC4gVGhlIHBhdGNoIGRlc2NyaXB0aW9uIHNheXMgaXQncyBmdW5jdGlvbmFsIGFuZCBhZGRyZXNzZXMgYSBidWcsIHdoaWNoIGlzIGdvb2QuIE15IGZvY3VzIGlzIG9uIHVuZGVyc3RhbmRpbmcgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgdGhlIGtleSBmdW5jdGlvbnMgaW52b2x2ZWQuXG5cblRoZSBjb25maWdzIHJlbGV2YW50IHRvIHRoaXMgcGF0Y2ggYXJlIGBYRlJNX1VTRVJgIGFuZCBgWEZSTV9NSUdSQVRFYC4gSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgc3VyZSB0aGUgZGVwZW5kZW5jaWVzIGFyZSBjb3JyZWN0LiBMZXQncyBzZWUuLi4gYFhGUk1fVVNFUmAgYW5kIGBYRlJNX01JR1JBVEVgIGJvdGggZGVwZW5kIG9uIGVpdGhlciBgWEZSTWAgb3IgYElORVRgLiBgWEZSTV9VU0VSYCBpcyBjb250aW5nZW50IG9uIGBJTkVUYCwgYnV0IGBYRlJNX01JR1JBVEVgIGRlcGVuZHMgb24gYFhGUk1gLiBJJ2xsIGp1c3QgbGlzdCB0aGUgdXNlci1mYWNpbmcgY29uZmlnczogYFhGUk1fVVNFUmAgYW5kIGBYRlJNX01JR1JBVEVgLlxuXG5Ob3csIEkgbmVlZCB0byBjaGVjayBzb21ldGhpbmcgaW1wb3J0YW50OiBpcyBgeGZybV9zZW5kX21pZ3JhdGVfc3RhdGVgIGEgc3RhdGljIGZ1bmN0aW9uPyBZZXMsIGl0IGlzLiBTbywgYHhmcm1fZG9fbWlncmF0ZV9zdGF0ZWAgYW5kIGB4ZnJtX2RvX21pZ3JhdGVgIGFyZSBpbmRlZWQgdGhlIG5ldGxpbmsgY2FsbGJhY2tzLiBUaGV5J3JlIGRlZmluaXRlbHkgY3JpdGljYWwsIHNvIEknbGwgaW5jbHVkZSB0aGVtIGluIHRoZSBGb2N1c1N5bWJvbHMgbGlzdC5cblxuUXVpY2tseSB2ZXJpZnlpbmcsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjYWxsZXJzIG9mIGB4ZnJtX3NlbmRfbWlncmF0ZV9zdGF0ZWAuIExldCdzIHNlZS4uLiBgeGZybV9kb19taWdyYXRlX3N0YXRlYCBjYWxscyBgeGZybV9zZW5kX21pZ3JhdGVfc3RhdGVgLiBEb2VzIGB4ZnJtX2RvX21pZ3JhdGVgPyBObywgaXQgY2FsbHMgYHhmcm1fc2VuZF9taWdyYXRlYCBpbnN0ZWFkLiBXYWl0IGEgbWludXRlLi4uIHRoZSBwYXRjaCAqb25seSogbW9kaWZpZXMgYHhmcm1fc2VuZF9taWdyYXRlX3N0YXRlYC4gSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIHRoYXQgY2FsbGVyIGFuYWx5c2lzLCBqdXN0IHRvIGJlIHN1cmUuIEl0IGNvdWxkIGJlIGltcG9ydGFudC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTU2NywiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxMjoyOToyOC45NTIzMTU0NjlaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc2OTU3NDQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhmcm1fc2VuZF9taWdyYXRlX3N0YXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC94ZnJtL3hmcm1fdXNlci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZnJtL3hmcm1fdXNlci5jPTMzMDk9c3RhdGljIHVuc2lnbmVkIGludCB4ZnJtX21pZ3JhdGVfc3RhdGVfbXNnc2l6ZShjb25zdCBzdHJ1Y3QgeGZybV9taWdyYXRlICptLFxcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmMtMzMyMS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYzozMzIyOnN0YXRpYyBpbnQgeGZybV9zZW5kX21pZ3JhdGVfc3RhdGUoc3RydWN0IG5ldCAqbmV0LFxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTMzMjMtXFx0XFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IHhmcm1fdXNlcl9taWdyYXRlX3N0YXRlICp1bSxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jPTMzNDc9c3RhdGljIGludCB4ZnJtX2RvX21pZ3JhdGVfc3RhdGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNTEwLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjM1MTE6XFx0ZXJyID0geGZybV9zZW5kX21pZ3JhdGVfc3RhdGUobmV0LCB1bSwgXFx1MDAyNm0sIHhjLVxcdTAwM2VkaXIsXFxubmV0L3hmcm0veGZybV91c2VyLmMtMzUxMi1cXHRcXHRcXHRcXHQgICAgICBubGgtXFx1MDAzZW5sbXNnX3BpZCwgbmxoLVxcdTAwM2VubG1zZ19zZXEpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxMjoyOToyOS4wMjkyNzc2MzhaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODI3NjE1NDExOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgWEZSTSBTdGF0ZSBNaWdyYXRpb24gUGF0aCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgWEZSTSBjb2RlIHJlbGF0ZWQgdG8gc3RhdGUgbWlncmF0aW9uLiAgTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgYHhmcm1fZG9fbWlncmF0ZV9zdGF0ZWAgaXMgdGhlIGtleSBmdW5jdGlvbiB0byBmb2N1cyBvbi4gIFRoZSBjb2RlIGNsZWFybHkgaW5kaWNhdGVzIGl0J3MgdGhlIG9ubHkgb25lIHRoYXQgZGlyZWN0bHkgY2FsbHMgYHhmcm1fc2VuZF9taWdyYXRlX3N0YXRlYC4gVGhhdCdzIGEgc3Ryb25nIGluZGljYXRpb24gb2YgaXRzIGNlbnRyYWwgcm9sZS5cblxuSSBzZWUgdGhhdCBpdCdzIGEgYHN0YXRpY2AgZnVuY3Rpb24sIHdoaWNoIGluaXRpYWxseSBnYXZlIG1lIHBhdXNlLiAgTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gYXZvaWQgc3RhdGljcywgYnV0IHRoZW4gSSByZW1lbWJlciB0aGlzIHBhcnRpY3VsYXIgZnVuY3Rpb24gaXMgYSBuZXRsaW5rIGNhbGxiYWNrIHJlZ2lzdGVyZWQgd2l0aGluIHRoZSBgeGZybV9saW5rYCBhcnJheS4gVGhhdCBtZWFucyBpdHMgYWRkcmVzcyBpcyBiZWluZyB0YWtlbi4gIENydWNpYWxseSwgYmVjYXVzZSBpdHMgYWRkcmVzcyBpcyB0YWtlbiwgdGhlIGNvbXBpbGVyICp3b24ndCogaW5saW5lIGl0LCB3aGljaCBpcyB0aGUgcHJpbWFyeSByZWFzb24gdG8gcHJlZmVyIG5vbi1zdGF0aWMgaW4gdGhpcyBjYXNlLiAgSXQgcmVtYWlucyBhIGRpc3RpbmN0IHN5bWJvbCwgYSBkaXJlY3QgZW50cnkgcG9pbnQsIGV2ZW4gaWYgaXQncyB0ZWNobmljYWxseSBhIGhlbHBlci4gVGhlIHJlYWwgZW50cnkgcG9pbnQgaXMgYHhmcm1fdXNlcl9yY3ZfbXNnYCwgYnV0IHRoYXQgY2FsbHMgYHhmcm1fZG9fbWlncmF0ZV9zdGF0ZWAuXG5cbkkndmUgY29uZmlybWVkIHRoYXQgYHhmcm1fZG9fbWlncmF0ZV9zdGF0ZWAgaXMgaW5kZWVkIHRoZSAqbW9zdCogYXBwcm9wcmlhdGUgZm9jdXMgc3ltYm9sLCBldmVuIGdpdmVuIG15IGJpYXMgYWdhaW5zdCBzdGF0aWNzLCBiYXNlZCBvbiB0aGUgc3BlY2lmaWMgc2l0dWF0aW9uIG9mIGEgbmV0bGluayBjYWxsYmFjayB0aGF0J3MgYWRkcmVzcyBpcyB0YWtlbi5cblxuSSBuZWVkIHRvIGNvbmZpcm0gaWYgdGhlcmUgYXJlIGFueSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb25zIG5lY2Vzc2FyeSBmb3IgZnV6emluZyB0aGlzIHBhdGguIExldCBtZSBkb3VibGUgY2hlY2suLi4gWWVzLCBJIG5lZWQgdG8gZW5hYmxlIGBYRlJNX1VTRVJgIGFuZCBgWEZSTV9NSUdSQVRFYC5cblxuR2l2ZW4gdGhpcyBpcyBmdW5jdGlvbmFsIGNvcmUgbmV0d29ya2luZyBjb2RlIGFuZCBpcyByZWFjaGFibGUgdmlhIG5ldGxpbmssIEknbSBjb25maWRlbnQgdGhhdCBmdXp6aW5nIHRoaXMgYXJlYSBpcyB3b3J0aCBpdC4gIEknbSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZz10cnVlYC4gVGhlIHBhdGNoIGFkZHMgUkNVIGxvY2tpbmcgYXJvdW5kIHRoZSBuZXRsaW5rIG11bHRpY2FzdCBjYWxsIHNvIGl0J3MgY3JpdGljYWwgd2UgY2hlY2sgZm9yIGFueSByZW1haW5pbmcgbG9ja2luZyBpc3N1ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNjU5LCJPdXRwdXRUb2tlbnMiOjEwNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxMjoyOTozNy4zMDU0MzU1NDZaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjc1NTgwOTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlhGUk1fVVNFUlwiLFxuICAgIFwiWEZSTV9NSUdSQVRFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwieGZybV9kb19taWdyYXRlX3N0YXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBSQ1UgbG9ja2luZyBhcm91bmQgYSBuZXRsaW5rIG11bHRpY2FzdCBjYWxsIGluIHRoZSBYRlJNIHN0YXRlIG1pZ3JhdGlvbiBwYXRoLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29yZSBuZXR3b3JraW5nIGNvZGUgcmVhY2hhYmxlIHZpYSBuZXRsaW5rLCBhbmQgZnV6emluZyBpdCBjYW4gaGVscCBlbnN1cmUgbm8gZnVydGhlciBSQ1Ugb3IgbG9ja2luZyBpc3N1ZXMgZXhpc3QuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiWEZSTV9VU0VSXCIsXG4gICAgXCJYRlJNX01JR1JBVEVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ4ZnJtX2RvX21pZ3JhdGVfc3RhdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIFJDVSBsb2NraW5nIGFyb3VuZCBhIG5ldGxpbmsgbXVsdGljYXN0IGNhbGwgaW4gdGhlIFhGUk0gc3RhdGUgbWlncmF0aW9uIHBhdGguIFRoaXMgaXMgZnVuY3Rpb25hbCBjb3JlIG5ldHdvcmtpbmcgY29kZSByZWFjaGFibGUgdmlhIG5ldGxpbmssIGFuZCBmdXp6aW5nIGl0IGNhbiBoZWxwIGVuc3VyZSBubyBmdXJ0aGVyIFJDVSBvciBsb2NraW5nIGlzc3VlcyBleGlzdC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowmsl5b[1] Phase: Succeeded StartedAt: 2026-07-31 12:29:49 +0000 UTC FinishedAt: 2026-07-31 12:29:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmsl5b[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-31 12:29:49 +0000 UTC FinishedAt: 2026-07-31 12:29:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmsl5b[2] Phase: Succeeded StartedAt: 2026-07-31 12:29:49 +0000 UTC FinishedAt: 2026-07-31 16:18:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmsl5b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_MIGRATE"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_do_migrate_state"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_MIGRATE"],"series_id":"7f865621-de85-46c3-9af6-efa1d5d7b74d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-31 12:29:49 +0000 UTC FinishedAt: 2026-07-31 16:18:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_MIGRATE"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_do_migrate_state"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_MIGRATE"],"series_id":"7f865621-de85-46c3-9af6-efa1d5d7b74d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowmsl5b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_MIGRATE"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_do_migrate_state"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_MIGRATE"],"series_id":"7f865621-de85-46c3-9af6-efa1d5d7b74d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-31 12:29:49 +0000 UTC FinishedAt: 2026-07-31 12:30:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmsl5b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_MIGRATE"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_do_migrate_state"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_MIGRATE"],"series_id":"7f865621-de85-46c3-9af6-efa1d5d7b74d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-31 12:29:49 +0000 UTC FinishedAt: 2026-07-31 12:29:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_MIGRATE"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmsl5b/series-workflowmsl5b-convert-artifact-172020868/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmsl5b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_MIGRATE"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_do_migrate_state"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_MIGRATE"],"series_id":"7f865621-de85-46c3-9af6-efa1d5d7b74d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-31 12:30:00 +0000 UTC FinishedAt: 2026-07-31 12:49:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmsl5b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_MIGRATE"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_do_migrate_state"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_MIGRATE"],"series_id":"7f865621-de85-46c3-9af6-efa1d5d7b74d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-31 12:30:00 +0000 UTC FinishedAt: 2026-07-31 12:49:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*e273ed91-bb7f-4be6-9bac-4c7758a0f928,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-workflowmsl5b/series-workflowmsl5b-convert-artifact-172020868/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": "9fd2306c-7d5e-4e7c-a789-0c4f276d4f8d", "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-workflowmsl5b/series-workflowmsl5b-build-action-356817346/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmsl5b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_MIGRATE"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_do_migrate_state"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_MIGRATE"],"series_id":"7f865621-de85-46c3-9af6-efa1d5d7b74d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-31 12:30:00 +0000 UTC FinishedAt: 2026-07-31 12:49:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*e273ed91-bb7f-4be6-9bac-4c7758a0f928,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-workflowmsl5b/series-workflowmsl5b-convert-artifact-172020868/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": "9fd2306c-7d5e-4e7c-a789-0c4f276d4f8d", "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-workflowmsl5b/series-workflowmsl5b-build-action-356817346/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmsl5b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_MIGRATE"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_do_migrate_state"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_MIGRATE"],"series_id":"7f865621-de85-46c3-9af6-efa1d5d7b74d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-31 12:49:33 +0000 UTC FinishedAt: 2026-07-31 12:49:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmsl5b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_MIGRATE"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_do_migrate_state"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_MIGRATE"],"series_id":"7f865621-de85-46c3-9af6-efa1d5d7b74d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-31 12:49:33 +0000 UTC FinishedAt: 2026-07-31 12:49:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmsl5b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_MIGRATE"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_do_migrate_state"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_MIGRATE"],"series_id":"7f865621-de85-46c3-9af6-efa1d5d7b74d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-31 12:49:33 +0000 UTC FinishedAt: 2026-07-31 12:49:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmsl5b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_MIGRATE"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_do_migrate_state"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_MIGRATE"],"series_id":"7f865621-de85-46c3-9af6-efa1d5d7b74d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-31 12:49:33 +0000 UTC FinishedAt: 2026-07-31 12:49:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_MIGRATE"],"series_id":"7f865621-de85-46c3-9af6-efa1d5d7b74d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmsl5b/series-workflowmsl5b-convert-artifact-3853957891/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmsl5b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_MIGRATE"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_do_migrate_state"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_MIGRATE"],"series_id":"7f865621-de85-46c3-9af6-efa1d5d7b74d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-31 12:49:43 +0000 UTC FinishedAt: 2026-07-31 12:51:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmsl5b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_MIGRATE"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_do_migrate_state"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_MIGRATE"],"series_id":"7f865621-de85-46c3-9af6-efa1d5d7b74d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-31 12:49:43 +0000 UTC FinishedAt: 2026-07-31 12:51:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*9fd2306c-7d5e-4e7c-a789-0c4f276d4f8d,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-workflowmsl5b/series-workflowmsl5b-build-action-356817346/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-workflowmsl5b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_MIGRATE"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_do_migrate_state"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_MIGRATE"],"series_id":"7f865621-de85-46c3-9af6-efa1d5d7b74d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-31 12:51:34 +0000 UTC FinishedAt: 2026-07-31 12:51:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmsl5b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_MIGRATE"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_do_migrate_state"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_MIGRATE"],"series_id":"7f865621-de85-46c3-9af6-efa1d5d7b74d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-31 12:51:34 +0000 UTC FinishedAt: 2026-07-31 12:51:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmsl5b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_MIGRATE"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_do_migrate_state"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_MIGRATE"],"series_id":"7f865621-de85-46c3-9af6-efa1d5d7b74d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-31 12:51:34 +0000 UTC FinishedAt: 2026-07-31 13:14:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmsl5b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_MIGRATE"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_do_migrate_state"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_MIGRATE"],"series_id":"7f865621-de85-46c3-9af6-efa1d5d7b74d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-31 12:51:34 +0000 UTC FinishedAt: 2026-07-31 13:14:06 +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:*e273ed91-bb7f-4be6-9bac-4c7758a0f928,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-workflowmsl5b/series-workflowmsl5b-convert-artifact-3853957891/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": "dd329432-df5b-4d41-8b22-eb95c96c96ee", "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-workflowmsl5b/series-workflowmsl5b-build-action-4054280631/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmsl5b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_MIGRATE"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_do_migrate_state"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_MIGRATE"],"series_id":"7f865621-de85-46c3-9af6-efa1d5d7b74d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-31 12:51:34 +0000 UTC FinishedAt: 2026-07-31 13:13:56 +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:*e273ed91-bb7f-4be6-9bac-4c7758a0f928,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-workflowmsl5b/series-workflowmsl5b-convert-artifact-3853957891/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": "dd329432-df5b-4d41-8b22-eb95c96c96ee", "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-workflowmsl5b/series-workflowmsl5b-build-action-4054280631/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmsl5b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_MIGRATE"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_do_migrate_state"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_MIGRATE"],"series_id":"7f865621-de85-46c3-9af6-efa1d5d7b74d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-31 13:14:06 +0000 UTC FinishedAt: 2026-07-31 13:14:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmsl5b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_MIGRATE"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_do_migrate_state"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_MIGRATE"],"series_id":"7f865621-de85-46c3-9af6-efa1d5d7b74d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-31 13:14:06 +0000 UTC FinishedAt: 2026-07-31 13:14:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmsl5b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_MIGRATE"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_do_migrate_state"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_MIGRATE"],"series_id":"7f865621-de85-46c3-9af6-efa1d5d7b74d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-31 13:14:06 +0000 UTC FinishedAt: 2026-07-31 13:15:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmsl5b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_MIGRATE"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_do_migrate_state"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_MIGRATE"],"series_id":"7f865621-de85-46c3-9af6-efa1d5d7b74d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-31 13:14:06 +0000 UTC FinishedAt: 2026-07-31 13:15:44 +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:*dd329432-df5b-4d41-8b22-eb95c96c96ee,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-workflowmsl5b/series-workflowmsl5b-build-action-4054280631/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-workflowmsl5b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_MIGRATE"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_do_migrate_state"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_MIGRATE"],"series_id":"7f865621-de85-46c3-9af6-efa1d5d7b74d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-31 13:15:54 +0000 UTC FinishedAt: 2026-07-31 16:18:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmsl5b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_MIGRATE"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_do_migrate_state"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_MIGRATE"],"series_id":"7f865621-de85-46c3-9af6-efa1d5d7b74d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-31 13:15:54 +0000 UTC FinishedAt: 2026-07-31 16:18:43 +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":["xfrm_do_migrate_state"],"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:*9fd2306c-7d5e-4e7c-a789-0c4f276d4f8d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*dd329432-df5b-4d41-8b22-eb95c96c96ee,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-workflowmsl5b/series-workflowmsl5b-build-action-356817346/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-workflowmsl5b/series-workflowmsl5b-build-action-4054280631/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowmsl5b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_MIGRATE"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_do_migrate_state"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_MIGRATE"],"series_id":"7f865621-de85-46c3-9af6-efa1d5d7b74d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-31 13:15:54 +0000 UTC FinishedAt: 2026-07-31 13:16:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmsl5b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_MIGRATE"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_do_migrate_state"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_MIGRATE"],"series_id":"7f865621-de85-46c3-9af6-efa1d5d7b74d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-31 13:15:54 +0000 UTC FinishedAt: 2026-07-31 13:15:59 +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":["xfrm_do_migrate_state"],"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-workflowmsl5b/series-workflowmsl5b-convert-artifact-1390272028/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmsl5b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_MIGRATE"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_do_migrate_state"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_MIGRATE"],"series_id":"7f865621-de85-46c3-9af6-efa1d5d7b74d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-31 13:15:54 +0000 UTC FinishedAt: 2026-07-31 13:15:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmsl5b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_MIGRATE"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_do_migrate_state"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_MIGRATE"],"series_id":"7f865621-de85-46c3-9af6-efa1d5d7b74d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-31 13:15:54 +0000 UTC FinishedAt: 2026-07-31 13:15:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmsl5b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_MIGRATE"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_do_migrate_state"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_MIGRATE"],"series_id":"7f865621-de85-46c3-9af6-efa1d5d7b74d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-31 13:15:54 +0000 UTC FinishedAt: 2026-07-31 13:15:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmsl5b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_MIGRATE"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_do_migrate_state"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_MIGRATE"],"series_id":"7f865621-de85-46c3-9af6-efa1d5d7b74d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-31 13:16:04 +0000 UTC FinishedAt: 2026-07-31 16:18:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmsl5b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_MIGRATE"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_do_migrate_state"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_MIGRATE"],"series_id":"7f865621-de85-46c3-9af6-efa1d5d7b74d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-31 13:16:04 +0000 UTC FinishedAt: 2026-07-31 16:18:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*9fd2306c-7d5e-4e7c-a789-0c4f276d4f8d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*dd329432-df5b-4d41-8b22-eb95c96c96ee,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-workflowmsl5b/series-workflowmsl5b-build-action-356817346/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-workflowmsl5b/series-workflowmsl5b-build-action-4054280631/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-workflowmsl5b/series-workflowmsl5b-convert-artifact-1390272028/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,}