Name: series-workflow92nn6 Phase: Succeeded StartedAt: 2026-08-31 02:38:07 +0000 UTC FinishedAt: 2026-08-31 06:31:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow92nn6[0] Phase: Succeeded StartedAt: 2026-08-31 02:38:07 +0000 UTC FinishedAt: 2026-08-31 02:53:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow92nn6[0].run-triage Phase: Succeeded StartedAt: 2026-08-31 02:38:07 +0000 UTC FinishedAt: 2026-08-31 02:53:24 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "da6c37ed8beb273e3308e42d4bca3ce11b4432fa", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SLUB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "da6c37ed8beb273e3308e42d4bca3ce11b4432fa", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SLUB" ], "series_id": "fce7789a-743d-42cc-899f-a5de5d553d61" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "__kmalloc_large_noprof", "__kmalloc_large_node_noprof" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDAyOjUyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NMVUImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2ttYWxsb2NfbGFyZ2Vfbm9wcm9mJiMzNDssCiAgICAmIzM0O19fa21hbGxvY19sYXJnZV9ub2RlX25vcHJvZiYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBzYW5pdHkgY2hlY2sgKGBXQVJOX09OX09OQ0VfR0ZQKHNpemUgXHUwMDNlIEtNQUxMT0NfTUFYX1NJWkUsIGZsYWdzKWApIGluIGBfX19rbWFsbG9jX2xhcmdlX25vZGUoKWAgdG8gcmVqZWN0IGFsbG9jYXRpb25zIGV4Y2VlZGluZyBgS01BTExPQ19NQVhfU0laRWAgYnkgcmV0dXJuaW5nIGBOVUxMYC5cblxuVGhpcyBtb2RpZmljYXRpb24gb25seSBhZGRzIGRlZmVuc2l2ZSBwYXJhbWV0ZXIgdmFsaWRhdGlvbiB0byB0aGUgU0xVQiBsYXJnZSBhbGxvY2F0aW9uIHBhdGguIEl0IGRvZXMgbm90IGludHJvZHVjZSwgZXhwb3NlLCBvciBtYW5pcHVsYXRlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBkb2VzIG5vdCBhbHRlciBidWZmZXIgaW5pdGlhbGl6YXRpb24gb3Igc3RydWN0IHBhZGRpbmcsIGFuZCBkb2VzIG5vdCB0b3VjaCBkYXRhIHBhc3NlZCB0byB1c2VyIHNwYWNlLiBBbnkgYnVncyByZWxhdGVkIHRvIGZhaWxlZCBhbGxvY2F0aW9ucyAoc3VjaCBhcyBtaXNzaW5nIE5VTEwtY2hlY2tzIGluIGNhbGxlcnMpIGFyZSBzdGFuZGFyZCBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlIGhhbmRsaW5nIGNhdWdodCBieSBzdGFuZGFyZCB0ZXN0aW5nL0tBU0FOLiBUaGVyZWZvcmUsIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBtZW1vcnkgYWxsb2NhdGlvbiBsb2dpYyBpbiB0aGUgU0xVQiBhbGxvY2F0b3IgKG1tL3NsdWIuYyksIGFkZGluZyBhIHNpemUgYm91bmRhcnkgY2hlY2sgYWdhaW5zdCBLTUFMTE9DX01BWF9TSVpFIGluIF9fX2ttYWxsb2NfbGFyZ2Vfbm9kZSgpIHRvIHByZXZlbnQgb3ZlcnNpemVkIG9yZGVyIGNhbGN1bGF0aW9ucyBhbmQgZ3JhY2VmdWxseSBmYWlsIHdpdGggYSB3YXJuaW5nLiBUaGlzIG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyBhbmQgYWZmZWN0cyBsYXJnZSBrbWFsbG9jIGFsbG9jYXRpb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDAyOjUyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNzI4ZDkyZjkwMWY3YTUyN2NjYjAxNDM1NDViNGIyOWVmNDM5YTdlYVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDMxIDAyOjUyOjE0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL3NsdWIuYyBiL21tL3NsdWIuY1xuaW5kZXggZjliNTZjYjQzOWU3MC4uMjNlNTdhOGZlNTViNCAxMDA2NDRcbi0tLSBhL21tL3NsdWIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vc2x1Yi5jXG5AQCAtNTM0Miw3ICYjNDM7NTM0MiwxMiBAQCBzdGF0aWMgdm9pZCAqX19fa21hbGxvY19sYXJnZV9ub2RlKHNpemVfdCBzaXplLCBnZnBfdCBmbGFncywgaW50IG5vZGUpXG4ge1xuIFx0c3RydWN0IHBhZ2UgKnBhZ2U7XG4gXHR2b2lkICpwdHIgPSBOVUxMO1xuLVx0dW5zaWduZWQgaW50IG9yZGVyID0gZ2V0X29yZGVyKHNpemUpO1xuJiM0MztcdHVuc2lnbmVkIGludCBvcmRlcjtcbiYjNDM7XG4mIzQzO1x0aWYgKFdBUk5fT05fT05DRV9HRlAoc2l6ZSBcdTAwM2UgS01BTExPQ19NQVhfU0laRSwgZmxhZ3MpKVxuJiM0MztcdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1xuJiM0MztcdG9yZGVyID0gZ2V0X29yZGVyKHNpemUpO1xuIFxuIFx0aWYgKHVubGlrZWx5KGZsYWdzIFx1MDAyNiBHRlBfU0xBQl9CVUdfTUFTSykpXG4gXHRcdGZsYWdzID0ga21hbGxvY19maXhfZmxhZ3MoZmxhZ3MpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDAyOjUyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NMVUImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2ttYWxsb2NfbGFyZ2Vfbm9wcm9mJiMzNDssCiAgICAmIzM0O19fa21hbGxvY19sYXJnZV9ub2RlX25vcHJvZiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb3JlIG1lbW9yeSBhbGxvY2F0aW9uIGxvZ2ljIGluIHRoZSBTTFVCIGFsbG9jYXRvciAobW0vc2x1Yi5jKSwgYWRkaW5nIGEgc2l6ZSBib3VuZGFyeSBjaGVjayBhZ2FpbnN0IEtNQUxMT0NfTUFYX1NJWkUgaW4gX19fa21hbGxvY19sYXJnZV9ub2RlKCkgdG8gcHJldmVudCBvdmVyc2l6ZWQgb3JkZXIgY2FsY3VsYXRpb25zIGFuZCBncmFjZWZ1bGx5IGZhaWwgd2l0aCBhIHdhcm5pbmcuIFRoaXMgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIGFuZCBhZmZlY3RzIGxhcmdlIGttYWxsb2MgYWxsb2NhdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA3MjhkOTJmOTAxZjdhNTI3Y2NiMDE0MzU0NWI0YjI5ZWY0MzlhN2VhCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBBdWcgMzEgMDI6NTI6MTQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9tbS9zbHViLmMgYi9tbS9zbHViLmMKaW5kZXggZjliNTZjYjQzOWU3MC4uMjNlNTdhOGZlNTViNCAxMDA2NDQKLS0tIGEvbW0vc2x1Yi5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL3NsdWIuYwpAQCAtNTM0Miw3ICYjNDM7NTM0MiwxMiBAQCBzdGF0aWMgdm9pZCAqX19fa21hbGxvY19sYXJnZV9ub2RlKHNpemVfdCBzaXplLCBnZnBfdCBmbGFncywgaW50IG5vZGUpCiB7CiAJc3RydWN0IHBhZ2UgKnBhZ2U7CiAJdm9pZCAqcHRyID0gTlVMTDsKLQl1bnNpZ25lZCBpbnQgb3JkZXIgPSBnZXRfb3JkZXIoc2l6ZSk7CiYjNDM7CXVuc2lnbmVkIGludCBvcmRlcjsKJiM0MzsKJiM0MzsJaWYgKFdBUk5fT05fT05DRV9HRlAoc2l6ZSAmZ3Q7IEtNQUxMT0NfTUFYX1NJWkUsIGZsYWdzKSkKJiM0MzsJCXJldHVybiBOVUxMOwomIzQzOwomIzQzOwlvcmRlciA9IGdldF9vcmRlcihzaXplKTsKIAogCWlmICh1bmxpa2VseShmbGFncyAmYW1wOyBHRlBfU0xBQl9CVUdfTUFTSykpCiAJCWZsYWdzID0ga21hbGxvY19maXhfZmxhZ3MoZmxhZ3MpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwMjo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTA4CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjA1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEtlcm5lbCBNZW1vcnkgQWxsb2NhdGlvbiBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIExvb2tzIGxpa2Ugd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIG1vZGlmaWNhdGlvbiBpbiBgbW0vc2x1Yi5jYCwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYF9fX2ttYWxsb2NfbGFyZ2Vfbm9kZWAgZnVuY3Rpb24uIE15IGluaXRpYWwgaW1wcmVzc2lvbiBpcyB0aGF0IHRoaXMgZnVuY3Rpb24gbGlrZWx5IGhhbmRsZXMgbGFyZ2VyIG1lbW9yeSBhbGxvY2F0aW9ucyB3aXRoaW4gdGhlIFNMVUIgYWxsb2NhdG9yLiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCBieSBjaGVja2luZyB0aGUgc3Vycm91bmRpbmcgY29kZSB3aXRoIGByZWFkLWZpbGVgIG9yIGBncmVwcGVyYCDigJMgdW5kZXJzdGFuZGluZyB0aGUgZnVuY3Rpb24mIzM5O3MgYnJvYWRlciBjb250ZXh0IGlzIGNydWNpYWwuCgpUaGUgY29yZSBvZiB0aGUgY2hhbmdlIHNlZW1zIHRvIGJlIGludHJvZHVjaW5nIGEgc2l6ZSBjaGVjazogYFdBUk5fT05fT05DRV9HRlAoc2l6ZSAmZ3Q7IEtNQUxMT0NfTUFYX1NJWkUsIGZsYWdzKWAuIEFuZCB0aGVyZSYjMzk7cyBzb21lIHJlYXJyYW5nZW1lbnQuIEl0IGFwcGVhcnMgdG8gYmUgYW4gYWRkaXRpb24gb2YgdGhpcyBjaGVjayBwcmlvciB0byBjYWxjdWxhdGluZyB0aGUgb3JkZXIuIFNvLCBpZiB0aGUgcmVxdWVzdGVkIGBzaXplYCBleGNlZWRzIGBLTUFMTE9DX01BWF9TSVpFYCwgd2hpY2ggSSBhc3N1bWUgaXMgYSBkZWZpbmVkIGNvbnN0YW50IChJJiMzOTtsbCBjb25maXJtIGl0cyBkZWZpbml0aW9uKSwgdGhlIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIGBOVUxMYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdGhpcyBpcyBhIHNhZmVndWFyZCB0byBwcmV2ZW50IGV4Y2Vzc2l2ZWx5IGxhcmdlIGFsbG9jYXRpb24gcmVxdWVzdHMgdGhhdCBtaWdodCBjYXVzZSBpbnN0YWJpbGl0eSBvciB1bmV4cGVjdGVkIGJlaGF2aW9yLiBUaGlzIGxvb2tzIGxpa2UgYSBnb29kIGNoZWNrIHRvIGFkZC4KClRoZSBgV0FSTl9PTl9PTkNFX0dGUGAgbWFjcm8gaXMgaW50ZXJlc3RpbmcuIEkmIzM5O2xsIG5lZWQgdG8gcmV2aWV3IHRoZSBtZWFuaW5nIG9mIHRoZSBgR0ZQYCBmbGFnIGluIHRoaXMgc3BlY2lmaWMgY29udGV4dC4gVGhpcyB3b3VsZCBhbGxvdyBtZSB0byBrbm93IGlmIHRoaXMgc3BlY2lmaWMgbWFjcm8mIzM5O3MgYmVoYXZpb3VyIGlzIHJlbGV2YW50IGluIHRoZSBjb250ZXh0IG9mIHRoZSBjaGFuZ2UuIElzIHRoaXMgd2FybmluZyBhIGRlYnVnIGFpZD8gRG9lcyBpdCBhZmZlY3QgdGhlIHJldHVybiB2YWx1ZT8gSXMgdGhpcyByZWxhdGVkIHRvIGEgcG90ZW50aWFsIGRlbmlhbC1vZi1zZXJ2aWNlIHZ1bG5lcmFiaWxpdHk/IE9yIGlzIGl0IGEgbW9yZSBnZW5lcmFsIHNhZmV0eSBuZXQ/IFRpbWUgdG8gZGlnIGRlZXBlci4gSSYjMzk7bGwgZ2V0IHRoZSBsYXkgb2YgdGhlIGxhbmQsIHRoZW4gY2lyY2xlIGJhY2sgYW5kIGNoZWNrIHRoZSBpbXBsaWNhdGlvbnMgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGxhcmdlciBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDAyOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bW0vc2x1Yi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTMzNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDs1MzM1Olx0fVxuNTMzNjpcdC8qXG41MzM3Olx0ICogVG8gYXZvaWQgdW5uZWNlc3Nhcnkgb3ZlcmhlYWQsIHdlIHBhc3MgdGhyb3VnaCBsYXJnZSBhbGxvY2F0aW9uIHJlcXVlc3RzXG41MzM4Olx0ICogZGlyZWN0bHkgdG8gdGhlIHBhZ2UgYWxsb2NhdG9yLiBXZSB1c2UgX19HRlBfQ09NUCwgYmVjYXVzZSB3ZSB3aWxsIG5lZWQgdG9cbjUzMzk6XHQgKiBrbm93IHRoZSBhbGxvY2F0aW9uIG9yZGVyIHRvIGZyZWUgdGhlIHBhZ2VzIHByb3Blcmx5IGluIGtmcmVlLlxuNTM0MDpcdCAqL1xuNTM0MTpcdHN0YXRpYyB2b2lkICpfX19rbWFsbG9jX2xhcmdlX25vZGUoc2l6ZV90IHNpemUsIGdmcF90IGZsYWdzLCBpbnQgbm9kZSlcbjUzNDI6XHR7XG41MzQzOlx0XHRzdHJ1Y3QgcGFnZSAqcGFnZTtcbjUzNDQ6XHRcdHZvaWQgKnB0ciA9IE5VTEw7XG41MzQ1Olx0XHR1bnNpZ25lZCBpbnQgb3JkZXI7XG41MzQ2Olx0XG41MzQ3Olx0XHRpZiAoV0FSTl9PTl9PTkNFX0dGUChzaXplIFx1MDAzZSBLTUFMTE9DX01BWF9TSVpFLCBmbGFncykpXG41MzQ4Olx0XHRcdHJldHVybiBOVUxMO1xuNTM0OTpcdFxuNTM1MDpcdFx0b3JkZXIgPSBnZXRfb3JkZXIoc2l6ZSk7XG41MzUxOlx0XG41MzUyOlx0XHRpZiAodW5saWtlbHkoZmxhZ3MgXHUwMDI2IEdGUF9TTEFCX0JVR19NQVNLKSlcbjUzNTM6XHRcdFx0ZmxhZ3MgPSBrbWFsbG9jX2ZpeF9mbGFncyhmbGFncyk7XG41MzU0Olx0XG41MzU1Olx0XHRmbGFncyB8PSBfX0dGUF9DT01QO1xuNTM1NjpcdFxuNTM1NzpcdFx0aWYgKG5vZGUgPT0gTlVNQV9OT19OT0RFKVxuNTM1ODpcdFx0XHRwYWdlID0gYWxsb2NfZnJvemVuX3BhZ2VzX25vcHJvZihmbGFncywgb3JkZXIpO1xuNTM1OTpcdFx0ZWxzZVxuNTM2MDpcdFx0XHRwYWdlID0gX19hbGxvY19mcm96ZW5fcGFnZXNfbm9wcm9mKGZsYWdzLCBvcmRlciwgbm9kZSwgTlVMTCxcbjUzNjE6XHRcdFx0XHRcdFx0XHQgICBBTExPQ19ERUZBVUxUKTtcbjUzNjI6XHRcbjUzNjM6XHRcdGlmIChwYWdlKSB7XG41MzY0Olx0XHRcdHB0ciA9IHBhZ2VfYWRkcmVzcyhwYWdlKTtcbjUzNjU6XHRcdFx0bW9kX2xydXZlY19wYWdlX3N0YXRlKHBhZ2UsIE5SX1NMQUJfVU5SRUNMQUlNQUJMRV9CLFxuNTM2NjpcdFx0XHRcdFx0ICAgICAgUEFHRV9TSVpFIFx1MDAzY1x1MDAzYyBvcmRlcik7XG41MzY3Olx0XHRcdF9fU2V0UGFnZUxhcmdlS21hbGxvYyhwYWdlKTtcbjUzNjg6XHRcdH1cbjUzNjk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwMjo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjI1CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIExhcmdlIEtNQUxMT0MgQWxsb2NhdGlvbnMqKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHVzYWdlIHBhdHRlcm5zIG9mIHRoZSBsYXJnZSBrbWFsbG9jIGZ1bmN0aW9ucywgc3BlY2lmaWNhbGx5IGBfX19rbWFsbG9jX2xhcmdlX25vZGVgIG9yIGBfX2ttYWxsb2NfbGFyZ2Vfbm9kZWAuIE15IHByaW1hcnkgb2JqZWN0aXZlIGhlcmUgaXMgdG8gZmlndXJlIG91dCB3aGF0IGNvZGUgcGF0aHMgYXJlIGVtcGxveWluZyB0aGVzZSBwb3RlbnRpYWxseSBsZXNzIGVmZmljaWVudCBhbGxvY2F0aW9uIG1ldGhvZHMuIEkmIzM5O20gYXNzdW1pbmcgdGhhdCB0aGUgcmVhc29ucyBmb3IgdXNpbmcgdGhlc2UgZnVuY3Rpb25zIG1pZ2h0IGJlIHBlcmZvcm1hbmNlLXJlbGF0ZWQsIG1lbW9yeS1yZWxhdGVkLCBvciBiYXNlZCBvbiBzcGVjaWZpYyBOVU1BIG5vZGUgYWZmaW5pdHkuIFRoZXJlZm9yZSwgaWRlbnRpZnlpbmcgdGhlIGNhbGxlcnMgaXMgdGhlIGNydWNpYWwgZmlyc3Qgc3RlcC4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSB0aG9zZSBjYWxscyB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0OiB3aGF0IGRhdGEgc3RydWN0dXJlcyBhcmUgYmVpbmcgYWxsb2NhdGVkLCB3aGF0JiMzOTtzIHRoZWlyIGxpZmV0aW1lLCBhbmQgd2h5IHRoZSBzdGFuZGFyZCBrbWFsbG9jIGlzbiYjMzk7dCBzdWZmaWNpZW50LiBUaGlzIGludmVzdGlnYXRpb24gd2lsbCBoZWxwIG1lIGRldGVybWluZSBpZiB0aGUgY3VycmVudCB1c2FnZSBpcyBvcHRpbWFsIG9yIGlmIHRoZXJlJiMzOTtzIHJvb20gZm9yIG9wdGltaXphdGlvbiwgcGVyaGFwcyBieSBhZGp1c3RpbmcgdGhlIHNpemUgdGhyZXNob2xkcywgaW50cm9kdWNpbmcgY3VzdG9tIGFsbG9jYXRvcnMsIG9yIGJ5IHNpbXBseSBpZGVudGlmeWluZyBhbmQgZml4aW5nIGFueSBpbmVmZmljaWVuY2llcyBpbiB0aGUgY2FsbGluZyBjb2RlLiBUaGUgZ29hbCBpcyB0byBlaXRoZXIganVzdGlmeSB0aGUgY3VycmVudCB1c2FnZSBvciBzdWdnZXN0IGltcHJvdmVtZW50cywgZGVwZW5kaW5nIG9uIHdoYXQgSSB1bmNvdmVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDAyOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fX2ttYWxsb2NfbGFyZ2Vfbm9kZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL3NsdWIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9zbHViLmM9NTMzMj11bnNpZ25lZCBpbnQga21lbV9jYWNoZV9zaGVhZl9zaXplKHN0cnVjdCBzbGFiX3NoZWFmICpzaGVhZilcbi0tXG5tbS9zbHViLmMtNTM0MC0gKi9cbm1tL3NsdWIuYzo1MzQxOnN0YXRpYyB2b2lkICpfX19rbWFsbG9jX2xhcmdlX25vZGUoc2l6ZV90IHNpemUsIGdmcF90IGZsYWdzLCBpbnQgbm9kZSlcbm1tL3NsdWIuYy01MzQyLXtcbi0tXG5tbS9zbHViLmM9NTM3OD12b2lkICpfX2ttYWxsb2NfbGFyZ2Vfbm9wcm9mKHNpemVfdCBzaXplLCBnZnBfdCBmbGFncylcbm1tL3NsdWIuYy01Mzc5LXtcbm1tL3NsdWIuYzo1MzgwOlx0dm9pZCAqcmV0ID0gX19fa21hbGxvY19sYXJnZV9ub2RlKHNpemUsIGZsYWdzLCBOVU1BX05PX05PREUpO1xubW0vc2x1Yi5jLTUzODEtXG4tLVxubW0vc2x1Yi5jPTUzODg9dm9pZCAqX19rbWFsbG9jX2xhcmdlX25vZGVfbm9wcm9mKHNpemVfdCBzaXplLCBnZnBfdCBmbGFncywgaW50IG5vZGUpXG5tbS9zbHViLmMtNTM4OS17XG5tbS9zbHViLmM6NTM5MDpcdHZvaWQgKnJldCA9IF9fX2ttYWxsb2NfbGFyZ2Vfbm9kZShzaXplLCBmbGFncywgbm9kZSk7XG5tbS9zbHViLmMtNTM5MS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwMjo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODI3CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMTAwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgS2VybmVsIE1lbW9yeSBBbGxvY2F0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHRyYWNlIHRoZSBleGVjdXRpb24gcGF0aCBvZiBsYXJnZSBtZW1vcnkgYWxsb2NhdGlvbnMgaW4gdGhlIGtlcm5lbC4gSSB3YW50IHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgYF9fa21hbGxvY19sYXJnZV9ub3Byb2ZgIGFuZCBgX19rbWFsbG9jX2xhcmdlX25vZGVfbm9wcm9mYCBhcmUgdXRpbGl6ZWQsIGFuZCBJJiMzOTttIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIGhvdyB0aGUga2VybmVsIGhhbmRsZXMgYWxsb2NhdGlvbiBzaXplcyBleGNlZWRpbmcgYEtNQUxMT0NfTUFYX1NJWkVgLiBJdCYjMzk7cyBhbHNvIGNydWNpYWwgdG8gZmlndXJlIG91dCB0aGUgYmVoYXZpb3Igb2YgYGdldF9vcmRlcmAgd2hlbiBwcmVzZW50ZWQgd2l0aCBleGNlc3NpdmVseSBsYXJnZSBpbnB1dHMgYW5kIHVuZGVyc3RhbmQgdGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhlIGFkZGl0aW9uIG9mIHRoaXMgcGFydGljdWxhciBzaXplIGNoZWNrLiBJJiMzOTttIGtlZW4gdG8gZ2V0IHRoZSBmdWxsIHBpY3R1cmUgaGVyZS4KClRvIGJlZ2luLCBJJiMzOTtsbCBzdGFydCBieSBncmVwcGluZyB0aGUga2VybmVsIHNvdXJjZXMsIHNwZWNpZmljYWxseSBsb29raW5nIGZvciB1c2VzIG9mIGBfX2ttYWxsb2NfbGFyZ2Vfbm9wcm9mYCBvciwgZmFpbGluZyB0aGF0LCAgYGttYWxsb2NfbGFyZ2VgLCBhY3Jvc3MgYGluY2x1ZGUvbGludXgvc2xhYi5oYCBhbmQgdGhlIGBtbS9gIGRpcmVjdG9yeS4gVGhpcyBzaG91bGQgaGVscCBtYXAgd2hlcmUgdGhlc2UgZnVuY3Rpb25zIGFyZSBkZWZpbmVkIGFuZCBpbXBsZW1lbnRlZC4gQnkgdW5kZXJzdGFuZGluZyB0aGVpciBpbnRlcmFjdGlvbiwgSSYjMzk7bGwgYmUgYWJsZSB0byB0cmFjZSBob3cgdGhpbmdzIHdvcmsgd2hlbiB0aGV5IGdldCB0aGF0IGJpZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwMjo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX2ttYWxsb2NfbGFyZ2UmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9zbGFiLmg9OTcyPXZvaWQgKl9fa21hbGxvY19jYWNoZV9ub2RlX25vcHJvZihzdHJ1Y3Qga21lbV9jYWNoZSAqcywgZ2ZwX3QgZ2ZwZmxhZ3MsXG4tLVxuaW5jbHVkZS9saW51eC9zbGFiLmgtOTc1LVxuaW5jbHVkZS9saW51eC9zbGFiLmg6OTc2OnZvaWQgKl9fa21hbGxvY19sYXJnZV9ub3Byb2Yoc2l6ZV90IHNpemUsIGdmcF90IGZsYWdzKVxuaW5jbHVkZS9saW51eC9zbGFiLmgtOTc3LVx0XHRcdFx0X19hc3N1bWVfcGFnZV9hbGlnbm1lbnQgX19hbGxvY19zaXplKDEpO1xuaW5jbHVkZS9saW51eC9zbGFiLmgtOTc4LVxuaW5jbHVkZS9saW51eC9zbGFiLmg6OTc5OnZvaWQgKl9fa21hbGxvY19sYXJnZV9ub2RlX25vcHJvZihzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3MsIGludCBub2RlKVxuaW5jbHVkZS9saW51eC9zbGFiLmgtOTgwLVx0XHRcdFx0X19hc3N1bWVfcGFnZV9hbGlnbm1lbnQgX19hbGxvY19zaXplKDEpO1xuLS1cbmluY2x1ZGUvbGludXgvc2xhYi5oPTk4Mj1zdGF0aWMgX19hbHdheXNfaW5saW5lIF9fYWxsb2Nfc2l6ZSgxKSB2b2lkICpfa21hbGxvY19ub3Byb2Yoc2l6ZV90IHNpemUsIGdmcF90IGZsYWdzLCBrbWFsbG9jX3Rva2VuX3QgdG9rZW4pXG4tLVxuaW5jbHVkZS9saW51eC9zbGFiLmgtOTg3LVx0XHRpZiAoc2l6ZSBcdTAwM2UgS01BTExPQ19NQVhfQ0FDSEVfU0laRSlcbmluY2x1ZGUvbGludXgvc2xhYi5oOjk4ODpcdFx0XHRyZXR1cm4gX19rbWFsbG9jX2xhcmdlX25vcHJvZihzaXplLCBmbGFncyk7XG5pbmNsdWRlL2xpbnV4L3NsYWIuaC05ODktXG4tLVxuaW5jbHVkZS9saW51eC9zbGFiLmg9MTE4Nz1zdGF0aWMgX19hbHdheXNfaW5saW5lIF9fYWxsb2Nfc2l6ZSgxKSB2b2lkICpfa21hbGxvY19ub2RlX25vcHJvZihzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3MsIGludCBub2RlLCBrbWFsbG9jX3Rva2VuX3QgdG9rZW4pXG4tLVxuaW5jbHVkZS9saW51eC9zbGFiLmgtMTE5Mi1cdFx0aWYgKHNpemUgXHUwMDNlIEtNQUxMT0NfTUFYX0NBQ0hFX1NJWkUpXG5pbmNsdWRlL2xpbnV4L3NsYWIuaDoxMTkzOlx0XHRcdHJldHVybiBfX2ttYWxsb2NfbGFyZ2Vfbm9kZV9ub3Byb2Yoc2l6ZSwgZmxhZ3MsIG5vZGUpO1xuaW5jbHVkZS9saW51eC9zbGFiLmgtMTE5NC1cbi0tXG5tbS9zbHViLmM9NTMzMj11bnNpZ25lZCBpbnQga21lbV9jYWNoZV9zaGVhZl9zaXplKHN0cnVjdCBzbGFiX3NoZWFmICpzaGVhZilcbi0tXG5tbS9zbHViLmMtNTM0MC0gKi9cbm1tL3NsdWIuYzo1MzQxOnN0YXRpYyB2b2lkICpfX19rbWFsbG9jX2xhcmdlX25vZGUoc2l6ZV90IHNpemUsIGdmcF90IGZsYWdzLCBpbnQgbm9kZSlcbm1tL3NsdWIuYy01MzQyLXtcbi0tXG5tbS9zbHViLmMtNTM3Ny1cbm1tL3NsdWIuYzo1Mzc4OnZvaWQgKl9fa21hbGxvY19sYXJnZV9ub3Byb2Yoc2l6ZV90IHNpemUsIGdmcF90IGZsYWdzKVxubW0vc2x1Yi5jLTUzNzkte1xubW0vc2x1Yi5jOjUzODA6XHR2b2lkICpyZXQgPSBfX19rbWFsbG9jX2xhcmdlX25vZGUoc2l6ZSwgZmxhZ3MsIE5VTUFfTk9fTk9ERSk7XG5tbS9zbHViLmMtNTM4MS1cbi0tXG5tbS9zbHViLmMtNTM4NS19XG5tbS9zbHViLmM6NTM4NjpFWFBPUlRfU1lNQk9MKF9fa21hbGxvY19sYXJnZV9ub3Byb2YpO1xubW0vc2x1Yi5jLTUzODctXG5tbS9zbHViLmM6NTM4ODp2b2lkICpfX2ttYWxsb2NfbGFyZ2Vfbm9kZV9ub3Byb2Yoc2l6ZV90IHNpemUsIGdmcF90IGZsYWdzLCBpbnQgbm9kZSlcbm1tL3NsdWIuYy01Mzg5LXtcbm1tL3NsdWIuYzo1MzkwOlx0dm9pZCAqcmV0ID0gX19fa21hbGxvY19sYXJnZV9ub2RlKHNpemUsIGZsYWdzLCBub2RlKTtcbm1tL3NsdWIuYy01MzkxLVxuLS1cbm1tL3NsdWIuYy01Mzk1LX1cbm1tL3NsdWIuYzo1Mzk2OkVYUE9SVF9TWU1CT0woX19rbWFsbG9jX2xhcmdlX25vZGVfbm9wcm9mKTtcbm1tL3NsdWIuYy01Mzk3LVxuLS1cbm1tL3NsdWIuYz01Mzk5PXZvaWQgKl9fZG9fa21hbGxvY19ub2RlKGttZW1fYnVja2V0cyAqYiwgZ2ZwX3QgZmxhZ3MsIGludCBub2RlLFxuLS1cbm1tL3NsdWIuYy01NDA2LVx0aWYgKHVubGlrZWx5KHNpemUgXHUwMDNlIEtNQUxMT0NfTUFYX0NBQ0hFX1NJWkUpKSB7XG5tbS9zbHViLmM6NTQwNzpcdFx0cmV0ID0gX19rbWFsbG9jX2xhcmdlX25vZGVfbm9wcm9mKHNpemUsIGZsYWdzLCBub2RlKTtcbm1tL3NsdWIuYy01NDA4LVx0XHR0cmFjZV9rbWFsbG9jKGFjLVx1MDAzZWNhbGxlcl9hZGRyLCByZXQsIHNpemUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDI6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTIxOQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDk0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBvdGVudGlhbCBmb3IgRnV6emluZyB0aGlzIEtlcm5lbCBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duIHN5c3RlbWF0aWNhbGx5LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiB0aGlzIGBrbWFsbG9jX2xhcmdlYCBwYXRjaCBhbmQgaXRzIGltcGxpY2F0aW9ucy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBoYXBwZW5pbmcgYmVmb3JlIGFuZCBhZnRlciB0aGlzIGNoYW5nZSwgcGFydGljdWxhcmx5IGNvbmNlcm5pbmcgY2FsbHMgdG8gYGttYWxsb2NfbGFyZ2VgIHdpdGggc2l6ZXMgZXhjZWVkaW5nIGBLTUFMTE9DX01BWF9TSVpFYC4gVGhlIHBhZ2UgYWxsb2NhdG9yIGFuZCBgZ2V0X29yZGVyKHNpemUpYCBhcmUga2V5IGNvbXBvbmVudHMgaGVyZSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBvcmRlciBpcyBoYW5kbGVkIHRvIHNlZSBpZiB0aGlzIGNoYW5nZSBwcmV2ZW50cyBhIHBvdGVudGlhbCBvdmVyZmxvdy4KCkZpcnN0LCBJIG5lZWQgdG8gY2hlY2sgdGhlIGNvbW1pdCBoaXN0b3J5IHRvIHVuZGVyc3RhbmQgdGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhlIGFkZGl0aW9uIG9mIGBXQVJOX09OX09OQ0VfR0ZQYC4gTm93LCB3YWl0IGEgbWludXRlLCBga21hbGxvY2AgaXMgYSBmdW5kYW1lbnRhbCBtZW1vcnkgYWxsb2NhdGlvbiByb3V0aW5lIGluIHRoZSBrZXJuZWwhIEl0JiMzOTtzIG9uZSBvZiB0aGUgbW9zdCBjcml0aWNhbC4gVGhhdCByYWlzZXMgdGhlIHF1ZXN0aW9uOiBpcyB0aGlzIGEgbmV3IGZlYXR1cmUsIG9yIGEgZGVmZW5zaXZlIG1lYXN1cmUgd2l0aGluIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQ/IFRoaXMgbWF0dGVycyBhIGxvdC4KCkkgbmVlZCB0byBmb2N1cyBhbmQgcmUtcmVhZCB0aGUgc3BlY2lmaWMgaW5zdHJ1Y3Rpb25zIHByb3ZpZGVkIG9uIHdoZXRoZXIgdGhlIGNoYW5nZXMgYXJlIHdvcnRoIGZ1enppbmcuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBhbSBkb2luZyBpdCBjb3JyZWN0bHkuCgpPa2F5LCBsZXQgbWUgcmV2aWV3IHRoZSBjcml0ZXJpYSBmb3IgYFdvcnRoRnV6emluZz1mYWxzZWAuIEkgYW0gbG9va2luZyBmb3IgY2hhbmdlcyByZWxhdGVkIHRvIGRvY3VtZW50YXRpb24sIGNvbW1lbnRzLCBkZWNvcmF0aXZlIGxvZ2dpbmcsIG5vbi1mdW5jdGlvbmFsIGNvbnN0YW50IGNoYW5nZXMsIHVucmVhY2hhYmxlIGNvZGUgcGF0aHMsIG9yIHNwZWNpZmljIGRyaXZlcnMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIEkgbmVlZCB0byBiZSBwcmVjaXNlLCBhcyB0aGlzIGlzIGNvcmUgbW0uCgpSaWdodCwgdGhlIGtleSBkaXJlY3RpdmUgaXM6ICYjMzQ7SWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLi4uIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4mIzM0OyBDcnVjaWFsbHksIEkgaGF2ZSB0byBleHRyYWN0ICpzcGVjaWZpYyoga2VybmVsIGZ1bmN0aW9ucyBmb3IgYEZvY3VzU3ltYm9sc2AsIGF2b2lkaW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zLiBUaGlzIGlzIGltcG9ydGFudCB0byBza2V3IHRoZSB0ZXN0IGRpc3RyaWJ1dGlvbnMgcHJvcGVybHkuCgpUaGUgcHJvbXB0IHNwZWNpZmljYWxseSBzYXlzICYjMzQ7QXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuJiMzNDsgVGhpcyBpcyBpbXBvcnRhbnQgYXMgSSBjb25zaWRlciBpZiBgX19fa21hbGxvY19sYXJnZV9ub2RlYCBpcyBhIGhvdC1wYXRoIGluIFNMVUIsIGlmIGBfX2ttYWxsb2NfbGFyZ2Vfbm9wcm9mYCBhbmQgYGttYWxsb2NgIGFyZSBob3QtcGF0aC4gRG8gSSBuZWVkIGBGb2N1c1N5bWJvbHNgPyBPciBzaG91bGQgdGhlIGVudHJ5cG9pbnRzIGJlIG5vbi1nZW5lcmljPyBJZiB0aGV5IGFyZSBnZW5lcmljLCBzaG91bGQgdGhleSBiZSBza2lwcGVkPwoKR2l2ZW4gbXkgZXhwZXJ0aXNlLCB0aGlzIHJlcXVpcmVzIGNhcmVmdWwgY29uc2lkZXJhdGlvbiwgZXNwZWNpYWxseSBzaW5jZSBpdCYjMzk7cyBga21hbGxvY2AuIEkgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgc2VsZWN0aW9uIG9mIGZ1bmN0aW9ucyBpcyAqcHJlY2lzZSogYW5kIGF2b2lkcyBza2V3aW5nIHRoZSBmdXp6aW5nIGRpc3RyaWJ1dGlvbi4KCk9rYXksIGxldCYjMzk7cyByZS1yZWFkIHRoZSBwcmltYXJ5IHByb21wdCwgJiMzNDtJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoIHRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLiYjMzQ7CgpEb2VzIHRoaXMgcGF0Y2ggKm1vZGlmeSogcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljPyBZZXMsIGl0IGFkZHMgYSBgV0FSTl9PTl9PTkNFX0dGUGAgY2hlY2sgd2l0aGluIGBfX19rbWFsbG9jX2xhcmdlX25vZGVgIGluIGBtbS9zbHViLmNgLiBUaGlzIGFkZGl0aW9uIGlzIGEgY3JpdGljYWwgY2hhbmdlLiBQcmV2aW91c2x5LCB3aGVuIGBzaXplICZndDsgS01BTExPQ19NQVhfU0laRWAsIHRoZSBjb2RlIG1pZ2h0IGhhdmUgZW5kZWQgdXAgY29tcHV0aW5nIGFuIG9yZGVyIGxhcmdlciB0aGFuIGBNQVhfUEFHRV9PUkRFUmAuIE5vdywgaXQgdHJpZ2dlcnMgYSB3YXJuaW5nICh1bmxlc3MgYF9fR0ZQX05PV0FSTmAgaXMgc2V0KSBhbmQgcmV0dXJucyBgTlVMTGAuIFRoaXMgaXMgYSBjaGFuZ2UgaW4gYmVoYXZpb3IuCgpTaW5jZSBgX19rbWFsbG9jX2xhcmdlX25vcHJvZmAgYW5kIGBfX2ttYWxsb2NfbGFyZ2Vfbm9kZV9ub3Byb2ZgIGFyZSBleHBvcnRlZCBzeW1ib2xzLCB0aGV5IG1heSBxdWFsaWZ5IGFzIGBGb2N1c1N5bWJvbHNgLiBMZXQmIzM5O3MgY29uZmlybSBpZiB0aGV5IGFyZSBleHBvcnRlZCBvciBub24tc3RhdGljIGluIHRoZSBjb2RlIGl0c2VsZiwgY2hlY2tpbmcgbGluZXMgNTM3OC01Mzk2IG9mIGBtbS9zbHViLmNgLgoKU2luY2UgaXQgKmlzKiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIHRoZSBhbnN3ZXIgaXMgYFdvcnRoRnV6emluZz10cnVlYCwgYW5kIEkgbmVlZCB0byBpZGVudGlmeSBhcHByb3ByaWF0ZSBgRm9jdXNTeW1ib2xzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDI6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDttbS9zbHViLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1Mzc1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzUzNzU6XHRcdHJldHVybiBwdHI7XG41Mzc2Olx0fVxuNTM3NzpcdFxuNTM3ODpcdHZvaWQgKl9fa21hbGxvY19sYXJnZV9ub3Byb2Yoc2l6ZV90IHNpemUsIGdmcF90IGZsYWdzKVxuNTM3OTpcdHtcbjUzODA6XHRcdHZvaWQgKnJldCA9IF9fX2ttYWxsb2NfbGFyZ2Vfbm9kZShzaXplLCBmbGFncywgTlVNQV9OT19OT0RFKTtcbjUzODE6XHRcbjUzODI6XHRcdHRyYWNlX2ttYWxsb2MoX1JFVF9JUF8sIHJldCwgc2l6ZSwgUEFHRV9TSVpFIFx1MDAzY1x1MDAzYyBnZXRfb3JkZXIoc2l6ZSksXG41MzgzOlx0XHRcdCAgICAgIGZsYWdzLCBOVU1BX05PX05PREUpO1xuNTM4NDpcdFx0cmV0dXJuIHJldDtcbjUzODU6XHR9XG41Mzg2Olx0RVhQT1JUX1NZTUJPTChfX2ttYWxsb2NfbGFyZ2Vfbm9wcm9mKTtcbjUzODc6XHRcbjUzODg6XHR2b2lkICpfX2ttYWxsb2NfbGFyZ2Vfbm9kZV9ub3Byb2Yoc2l6ZV90IHNpemUsIGdmcF90IGZsYWdzLCBpbnQgbm9kZSlcbjUzODk6XHR7XG41MzkwOlx0XHR2b2lkICpyZXQgPSBfX19rbWFsbG9jX2xhcmdlX25vZGUoc2l6ZSwgZmxhZ3MsIG5vZGUpO1xuNTM5MTpcdFxuNTM5MjpcdFx0dHJhY2Vfa21hbGxvYyhfUkVUX0lQXywgcmV0LCBzaXplLCBQQUdFX1NJWkUgXHUwMDNjXHUwMDNjIGdldF9vcmRlcihzaXplKSxcbjUzOTM6XHRcdFx0ICAgICAgZmxhZ3MsIG5vZGUpO1xuNTM5NDpcdFx0cmV0dXJuIHJldDtcbjUzOTU6XHR9XG41Mzk2Olx0RVhQT1JUX1NZTUJPTChfX2ttYWxsb2NfbGFyZ2Vfbm9kZV9ub3Byb2YpO1xuNTM5NzpcdFxuNTM5ODpcdHN0YXRpYyBfX2Fsd2F5c19pbmxpbmVcbjUzOTk6XHR2b2lkICpfX2RvX2ttYWxsb2Nfbm9kZShrbWVtX2J1Y2tldHMgKmIsIGdmcF90IGZsYWdzLCBpbnQgbm9kZSxcbjU0MDA6XHRcdFx0XHRrbWFsbG9jX3Rva2VuX3QgdG9rZW4sIGNvbnN0IHN0cnVjdCBzbGFiX2FsbG9jX2NvbnRleHQgKmFjKVxuNTQwMTpcdHtcbjU0MDI6XHRcdGNvbnN0IHNpemVfdCBzaXplID0gYWMtXHUwMDNlb3JpZ19zaXplO1xuNTQwMzpcdFx0c3RydWN0IGttZW1fY2FjaGUgKnM7XG41NDA0Olx0XHR2b2lkICpyZXQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDAyOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc0NTUKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiA0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCB0YWtpbmcgb24gdGhlIHBlcnNvbmEgeW91IHJlcXVlc3RlZDoKCioqS2NvbmZpZyBhbmQgU0xVQjogQSBRdWljayBJbnZlc3RpZ2F0aW9uKioKCkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGdvIHN0cmFpZ2h0IHRvIHRoZSBzb3VyY2Ug4oCTIEtjb25maWcuIEkgd2FudCB0byBzZWUgaG93IGBTTFVCYCBpcyBjb25maWd1cmVkLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBjb3JlIGRlZmluaXRpb24sIGFuZCBhbnkgZGVwZW5kZW50IG9wdGlvbnMgb3IgZGVwZW5kZW5jaWVzLiBUaGlzIGlzIHVzdWFsbHkgdGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQuIEkmIzM5O20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gc2VlaW5nIGhvdyB0aGUgZmVhdHVyZXMgYW5kIGFzc29jaWF0ZWQga25vYnMgYXJlIGV4cG9zZWQgYXQgY29uZmlndXJhdGlvbiB0aW1lLiBBbnkgcmVsYXRlZCBkZXBlbmRlbmNpZXMgd291bGQgYmUgY3J1Y2lhbCBoZXJlIGFzIHdlbGwuCgpOZXh0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYnVpbGQgcHJvY2Vzcy4gSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIGhvdyBgc2x1Yi5jYCBhbmQgb3RoZXIgYXNzb2NpYXRlZCBmaWxlcyBhcmUgYnJvdWdodCBpbnRvIHRoZSBidWlsZC4gSSYjMzk7bGwgbGlrZWx5IGhlYWQgdG8gYG1tL0tjb25maWdgIG9yIGBtbS9NYWtlZmlsZWAg4oCTIGRlcGVuZGluZyBvbiB0aGUgcHJvamVjdCBzdHJ1Y3R1cmUgYW5kIG15IHByaW9yIGZhbWlsaWFyaXR5LiBJdCBzaG91bGQgYmUgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgYnV0IEkgd2FudCB0byBiZSBjZXJ0YWluIGFib3V0IHRoZSBjb21waWxhdGlvbiBwcm9jZWR1cmUgYW5kIGFueSByZWxldmFudCBmbGFncy4gVGhpcyB3aWxsIGd1aWRlIG1lIGluIGRlYnVnZ2luZyBvciBjdXN0b21pemF0aW9uLiBJJiMzOTttIGFmdGVyIHRoZSBidWlsZCBydWxlcyBhbmQgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHRoYXQgbWlnaHQgYmUgZ29pbmcgb24sIGp1c3QgdG8gbWFrZSBzdXJlIEkgYW0gZnVsbHkgYXdhcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDAyOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NsdWIubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9NYWtlZmlsZT02PUtBU0FOX1NBTklUSVpFX3NsYWJfY29tbW9uLm8gOj0gblxubW0vTWFrZWZpbGU6NzpLQVNBTl9TQU5JVElaRV9zbHViLm8gOj0gblxubW0vTWFrZWZpbGUtOC1LQVNBTl9TQU5JVElaRV9rbWVtbGVhay5vIDo9IG5cbi0tXG5tbS9NYWtlZmlsZT0xND1LQ1NBTl9TQU5JVElaRV9zbGFiX2NvbW1vbi5vIDo9IG5cbm1tL01ha2VmaWxlOjE1OktDU0FOX1NBTklUSVpFX3NsdWIubyA6PSBuXG5tbS9NYWtlZmlsZS0xNi1LQ1NBTl9TQU5JVElaRV9wYWdlX2FsbG9jLm8gOj0gblxuLS1cbm1tL01ha2VmaWxlPTIzPUtDT1ZfSU5TVFJVTUVOVF9zbGFiX2NvbW1vbi5vIDo9IG5cbm1tL01ha2VmaWxlOjI0OktDT1ZfSU5TVFJVTUVOVF9zbHViLm8gOj0gblxubW0vTWFrZWZpbGUtMjUtS0NPVl9JTlNUUlVNRU5UX3BhZ2VfYWxsb2MubyA6PSBuXG4tLVxubW0vTWFrZWZpbGU9NzE9b2JqLXkgJiM0Mzs9ICQobWVtb3J5LWhvdHBsdWcteSlcbm1tL01ha2VmaWxlOjcyOm9iai15ICYjNDM7PSBzbHViLm9cbm1tL01ha2VmaWxlLTczLVxuLS1cbm1tL3NsdWIuYz00Mzg3PXNsYWJfb3V0X29mX21lbW9yeShzdHJ1Y3Qga21lbV9jYWNoZSAqcywgZ2ZwX3QgZ2ZwZmxhZ3MsIGludCBuaWQpXG5tbS9zbHViLmMtNDM4OC17XG5tbS9zbHViLmM6NDM4OTpcdHN0YXRpYyBERUZJTkVfUkFURUxJTUlUX1NUQVRFKHNsdWJfb29tX3JzLCBERUZBVUxUX1JBVEVMSU1JVF9JTlRFUlZBTCxcbm1tL3NsdWIuYy00MzkwLVx0XHRcdFx0ICAgICAgREVGQVVMVF9SQVRFTElNSVRfQlVSU1QpO1xuLS1cbm1tL3NsdWIuYy00Mzk0LVxubW0vc2x1Yi5jOjQzOTU6XHRpZiAoKGdmcGZsYWdzIFx1MDAyNiBfX0dGUF9OT1dBUk4pIHx8ICFfX3JhdGVsaW1pdChcdTAwMjZzbHViX29vbV9ycykpXG5tbS9zbHViLmMtNDM5Ni1cdFx0cmV0dXJuO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwMjo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MTk3CgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIHRoZSBLZXJuZWwmIzM5O3MgTWVtb3J5IEFsbG9jYXRvcioqCgpPa2F5LCBzbyBJJiMzOTttIHNlZWluZyBgb2JqLXkgJiM0Mzs9IHNsdWIub2AgaW4gdGhlIGJ1aWxkIHByb2Nlc3MuIFJpZ2h0LCBTTFVCLiBPZiBjb3Vyc2UsIHRoYXQmIzM5O3MgdGhlIGRlZmF1bHQgYW5kIG9ubHkgc2xhYiBhbGxvY2F0b3IgaW4gbW9kZXJuIGtlcm5lbHMuIFNMQUIgYW5kIFNMT0IgYXJlIGFuY2llbnQgaGlzdG9yeSBhdCB0aGlzIHBvaW50LiBTdGlsbCwgaXQmIzM5O3MgYWx3YXlzIGdvb2QgdG8gYmUgdGhvcm91Z2guIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGUgYEtjb25maWdgIGZpbGUgYW5kIGNvbmZpcm0gdGhhdCBgQ09ORklHX1NMVUJgIGlzIGluZGVlZCBlbmFibGVkLiBJdOKAmXMgaGlnaGx5IHByb2JhYmxlLCBnaXZlbiBTTFVC4oCZcyB1YmlxdWl0eSwgYnV0IHZlcmlmeWluZyBpcyBzZWNvbmQgbmF0dXJlIGF0IHRoaXMgcG9pbnQuIEJldHRlciBzYWZlIHRoYW4gc29ycnkgd2hlbiBkZWFsaW5nIHdpdGggY29yZSBrZXJuZWwgY29tcG9uZW50cyBsaWtlIHRoZSBtZW1vcnkgYWxsb2NhdG9yLiBJdCYjMzk7cyBhIGZ1bmRhbWVudGFsIHBhcnQgb2YgdGhlIHN5c3RlbSwgYW5kIGV2ZW4gdGhlIHNtYWxsZXN0IG1pc2NvbmZpZ3VyYXRpb24gY2FuIGhhdmUgd2lkZS1yYW5naW5nIGVmZmVjdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDAyOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTTFVCJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL0tjb25maWc9MTYyPW1lbnUgXCYjMzQ7U2xhYiBhbGxvY2F0b3Igb3B0aW9uc1wmIzM0O1xubW0vS2NvbmZpZy0xNjMtXG5tbS9LY29uZmlnOjE2NDpjb25maWcgU0xVQlxubW0vS2NvbmZpZy0xNjUtXHRkZWZfYm9vbCB5XG4tLVxubW0vS2NvbmZpZz0xNjg9Y29uZmlnIEtWRlJFRV9SQ1VfQkFUQ0hFRFxuLS1cbm1tL0tjb25maWctMTcyLVxubW0vS2NvbmZpZzoxNzM6Y29uZmlnIFNMVUJfVElOWVxubW0vS2NvbmZpZy0xNzQtXHRib29sIFwmIzM0O0NvbmZpZ3VyZSBmb3IgbWluaW1hbCBtZW1vcnkgZm9vdHByaW50XCYjMzQ7XG4tLVxubW0vS2NvbmZpZz0yMTc9Y29uZmlnIFNMQUJfQlVDS0VUU1xuLS1cbm1tL0tjb25maWctMjMzLVxubW0vS2NvbmZpZzoyMzQ6Y29uZmlnIFNMVUJfU1RBVFNcbm1tL0tjb25maWctMjM1LVx0ZGVmYXVsdCBuXG4tLVxubW0vS2NvbmZpZy5kZWJ1Zz00MT1jb25maWcgREVCVUdfUEFHRUFMTE9DX0VOQUJMRV9ERUZBVUxUXG4tLVxubW0vS2NvbmZpZy5kZWJ1Zy00Ny1cbm1tL0tjb25maWcuZGVidWc6NDg6Y29uZmlnIFNMVUJfREVCVUdcbm1tL0tjb25maWcuZGVidWctNDktXHRkZWZhdWx0IHlcbi0tXG5tbS9LY29uZmlnLmRlYnVnLTU4LVxubW0vS2NvbmZpZy5kZWJ1Zzo1OTpjb25maWcgU0xVQl9ERUJVR19PTlxubW0vS2NvbmZpZy5kZWJ1Zy02MC1cdGJvb2wgXCYjMzQ7U0xVQiBkZWJ1Z2dpbmcgb24gYnkgZGVmYXVsdFwmIzM0O1xuLS1cbm1tL0tjb25maWcuZGVidWctNzItXG5tbS9LY29uZmlnLmRlYnVnOjczOmNvbmZpZyBTTFVCX1JDVV9ERUJVR1xubW0vS2NvbmZpZy5kZWJ1Zy03NC1cdGJvb2wgXCYjMzQ7RW5hYmxlIFVBRiBkZXRlY3Rpb24gaW4gVFlQRVNBRkVfQllfUkNVIGNhY2hlcyAoZm9yIEtBU0FOKVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwMjo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4ODA5CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBTTFVCIENvbmZpZ3VyYXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBGaXJzdCwgSSBuZWVkIHRvIGNvbmZpcm0gdGhlIHN0YXR1cyBvZiBgQ09ORklHX1NMVUJgLiBSaWdodCwgYG1tL0tjb25maWdgIGlzIHRoZSBwbGFjZSB0byBzdGFydC4gRXhjZWxsZW50LCBpdCYjMzk7cyBkZWZpbmVkIGFzIGBkZWZfYm9vbCB5YCwgd2hpY2ggbWVhbnMgaXQmIzM5O3MgdGhlIGRlZmF1bHQsIGFsd2F5cyBlbmFibGVkLiBHb29kLiBOb3csIEkgc3VzcGVjdCB0aGVyZSBtaWdodCBiZSBzb21lIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHJlbGF0ZWQgdG8gYF9fX2ttYWxsb2NfbGFyZ2Vfbm9kZWAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIGl0cyBiZWhhdmlvciBpcyBpbmZsdWVuY2VkIGJ5IGFueSBvdGhlciBjb25maWd1cmF0aW9ucy4gSSYjMzk7bGwganVtcCBpbnRvIGBtbS9zbHViLmNgIGFuZCB6ZXJvIGluIGFyb3VuZCBsaW5lIDUzNDAuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGFueSBgI2lmZGVmYCBvciBzaW1pbGFyIHByZXByb2Nlc3NvciBkaXJlY3RpdmVzIHN1cnJvdW5kaW5nIHRoYXQgZnVuY3Rpb24uIFRoaXMgc2hvdWxkIGhlbHAgZGV0ZXJtaW5lIGlmIGl0JiMzOTtzIGdvdCBhbnkgZGVwZW5kZW5jaWVzIG9yIGFsdGVybmF0aXZlIGltcGxlbWVudGF0aW9ucyBJIG5lZWQgdG8gY29uc2lkZXIgZm9yIHRoaXMgYW5hbHlzaXMuIFRpbWUgdG8gY2hlY2sgdGhlIGNvZGUhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDAyOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bW0vc2x1Yi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTMyMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDs1MzIwOlx0XG41MzIxOlx0XHRpZiAobGlrZWx5KCFyZXQpKVxuNTMyMjpcdFx0XHRyZXQgPSBzaGVhZi1cdTAwM2VvYmplY3RzWy0tc2hlYWYtXHUwMDNlc2l6ZV07XG41MzIzOlx0XG41MzI0Olx0XHQvKiBhZGQgX19HRlBfTk9GQUlMIHRvIGZvcmNlIHN1Y2Nlc3NmdWwgbWVtY2cgY2hhcmdpbmcgKi9cbjUzMjU6XHRcdHNsYWJfcG9zdF9hbGxvY19ob29rKHMsIGdmcCB8IF9fR0ZQX05PRkFJTCwgMSwgXHUwMDI2cmV0LCBcdTAwMjZhYyk7XG41MzI2Olx0b3V0OlxuNTMyNzpcdFx0dHJhY2Vfa21lbV9jYWNoZV9hbGxvYyhfUkVUX0lQXywgcmV0LCBzLCBnZnAsIE5VTUFfTk9fTk9ERSk7XG41MzI4Olx0XG41MzI5Olx0XHRyZXR1cm4gcmV0O1xuNTMzMDpcdH1cbjUzMzE6XHRcbjUzMzI6XHR1bnNpZ25lZCBpbnQga21lbV9jYWNoZV9zaGVhZl9zaXplKHN0cnVjdCBzbGFiX3NoZWFmICpzaGVhZilcbjUzMzM6XHR7XG41MzM0Olx0XHRyZXR1cm4gc2hlYWYtXHUwMDNlc2l6ZTtcbjUzMzU6XHR9XG41MzM2Olx0LypcbjUzMzc6XHQgKiBUbyBhdm9pZCB1bm5lY2Vzc2FyeSBvdmVyaGVhZCwgd2UgcGFzcyB0aHJvdWdoIGxhcmdlIGFsbG9jYXRpb24gcmVxdWVzdHNcbjUzMzg6XHQgKiBkaXJlY3RseSB0byB0aGUgcGFnZSBhbGxvY2F0b3IuIFdlIHVzZSBfX0dGUF9DT01QLCBiZWNhdXNlIHdlIHdpbGwgbmVlZCB0b1xuNTMzOTpcdCAqIGtub3cgdGhlIGFsbG9jYXRpb24gb3JkZXIgdG8gZnJlZSB0aGUgcGFnZXMgcHJvcGVybHkgaW4ga2ZyZWUuXG41MzQwOlx0ICovXG41MzQxOlx0c3RhdGljIHZvaWQgKl9fX2ttYWxsb2NfbGFyZ2Vfbm9kZShzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3MsIGludCBub2RlKVxuNTM0MjpcdHtcbjUzNDM6XHRcdHN0cnVjdCBwYWdlICpwYWdlO1xuNTM0NDpcdFx0dm9pZCAqcHRyID0gTlVMTDtcbjUzNDU6XHRcdHVuc2lnbmVkIGludCBvcmRlcjtcbjUzNDY6XHRcbjUzNDc6XHRcdGlmIChXQVJOX09OX09OQ0VfR0ZQKHNpemUgXHUwMDNlIEtNQUxMT0NfTUFYX1NJWkUsIGZsYWdzKSlcbjUzNDg6XHRcdFx0cmV0dXJuIE5VTEw7XG41MzQ5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDAyOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk1NDcKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiA1MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGhhcHBlbmluZyBpbiBgbW0vc2x1Yi5jYC4gSSBuZWVkIHRvIGludmVzdGlnYXRlIHNvbWUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gZGlyZWN0aXZlcywgc3BlY2lmaWNhbGx5IGAjaWZgIG9yIGAjaWZkZWZgLCBhcm91bmQgbGluZXMgNTM0MCB0byA1NDAwLiBUaGF0IHNlZW1zIGxpa2UgYSByZWFzb25hYmxlIHJhbmdlIHRvIHN0YXJ0IHdpdGguIFRoZSBiZXN0IHdheSB0byBkbyB0aGlzIGlzIHRvIGBncmVwYCBmb3IgdGhvc2UgZGlyZWN0aXZlcyB3aXRoaW4gdGhhdCBhcmVhIGFuZCBzZWUgd2hhdCYjMzk7cyBoaWRpbmcuIFRoaXMgc2hvdWxkIHByb3ZpZGUgdGhlIGNvbnRleHQgbmVlZGVkIGZvciB0aGUgbmV4dCBzdGVwLCB3aGF0ZXZlciB0aGF0IG1heSBiZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDI6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7I2lmJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vc2x1Yi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA1NTEgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbm1tL3NsdWIuYz0xOTM9ZW51bSBzbGFiX2ZsYWdzIHtcbi0tXG5tbS9zbHViLmMtMTk4LVxubW0vc2x1Yi5jOjE5OTojaWZuZGVmIENPTkZJR19TTFVCX1RJTllcbm1tL3NsdWIuYy0yMDAtI2RlZmluZSBfX2Zhc3RwYXRoX2lubGluZSBfX2Fsd2F5c19pbmxpbmVcbi0tXG5tbS9zbHViLmMtMjA0LVxubW0vc2x1Yi5jOjIwNTojaWZkZWYgQ09ORklHX1NMVUJfREVCVUdcbm1tL3NsdWIuYzoyMDY6I2lmZGVmIENPTkZJR19TTFVCX0RFQlVHX09OXG5tbS9zbHViLmMtMjA3LURFRklORV9TVEFUSUNfS0VZX1RSVUUoc2x1Yl9kZWJ1Z19lbmFibGVkKTtcbi0tXG5tbS9zbHViLmM9MjA5PURFRklORV9TVEFUSUNfS0VZX0ZBTFNFKHNsdWJfZGVidWdfZW5hYmxlZCk7XG4tLVxubW0vc2x1Yi5jLTIxMi1cbm1tL3NsdWIuYzoyMTM6I2lmZGVmIENPTkZJR19OVU1BXG5tbS9zbHViLmMtMjE0LXN0YXRpYyBERUZJTkVfU1RBVElDX0tFWV9GQUxTRShzdHJpY3RfbnVtYSk7XG4tLVxubW0vc2x1Yi5jLTIxNi1cbm1tL3NsdWIuYzoyMTc6I2lmZGVmIENPTkZJR19NRU1fQUxMT0NfUFJPRklMSU5HXG5tbS9zbHViLmMtMjE4LURFRklORV9TVEFUSUNfS0VZX01BWUJFKENPTkZJR19NRU1fQUxMT0NfUFJPRklMSU5HX0VOQUJMRURfQllfREVGQVVMVCxcbi0tXG5tbS9zbHViLmM9MjM5PXN0cnVjdCBzbGFiX29ial9pdGVyIHtcbi0tXG5tbS9zbHViLmMtMjQxLVx0dm9pZCAqc3RhcnQ7XG5tbS9zbHViLmM6MjQyOiNpZmRlZiBDT05GSUdfU0xBQl9GUkVFTElTVF9SQU5ET01cbm1tL3NsdWIuYy0yNDMtXHR1bnNpZ25lZCBsb25nIGZyZWVsaXN0X2NvdW50O1xuLS1cbm1tL3NsdWIuYz0yNTQ9dm9pZCAqZml4dXBfcmVkX2xlZnQoc3RydWN0IGttZW1fY2FjaGUgKnMsIHZvaWQgKnApXG4tLVxubW0vc2x1Yi5jLTI3Mi1cbm1tL3NsdWIuYzoyNzM6I2lmbmRlZiBDT05GSUdfU0xVQl9USU5ZXG5tbS9zbHViLmMtMjc0LS8qXG4tLVxubW0vc2x1Yi5jLTMxNy1cbm1tL3NsdWIuYzozMTg6I2lmZGVmIHN5c3RlbV9oYXNfZnJlZWxpc3RfYWJhXG5tbS9zbHViLmMtMzE5LSNkZWZpbmUgX19DTVBYQ0hHX0RPVUJMRVx0X19TTEFCX0ZMQUdfQklUKF9TTEFCX0NNUFhDSEdfRE9VQkxFKVxuLS1cbm1tL3NsdWIuYz0zMjg9c3RydWN0IHRyYWNrIHtcbm1tL3NsdWIuYy0zMjktXHR1bnNpZ25lZCBsb25nIGFkZHI7XHQvKiBDYWxsZWQgZnJvbSBhZGRyZXNzICovXG5tbS9zbHViLmM6MzMwOiNpZmRlZiBDT05GSUdfU1RBQ0tERVBPVFxubW0vc2x1Yi5jLTMzMS1cdGRlcG90X3N0YWNrX2hhbmRsZV90IGhhbmRsZTtcbi0tXG5tbS9zbHViLmM9MzM4PWVudW0gdHJhY2tfaXRlbSB7IFRSQUNLX0FMTE9DLCBUUkFDS19GUkVFIH07XG5tbS9zbHViLmMtMzM5LVxubW0vc2x1Yi5jOjM0MDojaWZkZWYgU0xBQl9TVVBQT1JUU19TWVNGU1xubW0vc2x1Yi5jLTM0MS1zdGF0aWMgaW50IHN5c2ZzX3NsYWJfYWRkKHN0cnVjdCBrbWVtX2NhY2hlICopO1xuLS1cbm1tL3NsdWIuYz0zNDc9c3RhdGljIGlubGluZSB2b2lkIHNsYWJfc3lzZnNfcHJvY2Vzc19hbGlhc2VzKHZvaWQpIHsgfVxuLS1cbm1tL3NsdWIuYy0zNDktXG5tbS9zbHViLmM6MzUwOiNpZiBkZWZpbmVkKENPTkZJR19ERUJVR19GUykgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX1NMVUJfREVCVUcpXG5tbS9zbHViLmMtMzUxLXN0YXRpYyB2b2lkIGRlYnVnZnNfc2xhYl9hZGQoc3RydWN0IGttZW1fY2FjaGUgKik7XG4tLVxubW0vc2x1Yi5jPTM2Mz1lbnVtIHN0YXRfaXRlbSB7XG4tLVxubW0vc2x1Yi5jLTM5Mi1cbm1tL3NsdWIuYzozOTM6I2lmZGVmIENPTkZJR19TTFVCX1NUQVRTXG5tbS9zbHViLmMtMzk0LXN0cnVjdCBrbWVtX2NhY2hlX3N0YXRzIHtcbi0tXG5tbS9zbHViLmM9Mzk5PXN0YXRpYyBpbmxpbmUgdm9pZCBzdGF0KGNvbnN0IHN0cnVjdCBrbWVtX2NhY2hlICpzLCBlbnVtIHN0YXRfaXRlbSBzaSlcbm1tL3NsdWIuYy00MDAte1xubW0vc2x1Yi5jOjQwMTojaWZkZWYgQ09ORklHX1NMVUJfU1RBVFNcbm1tL3NsdWIuYy00MDItXHQvKlxuLS1cbm1tL3NsdWIuYz00MTE9dm9pZCBzdGF0X2FkZChjb25zdCBzdHJ1Y3Qga21lbV9jYWNoZSAqcywgZW51bSBzdGF0X2l0ZW0gc2ksIGludCB2KVxubW0vc2x1Yi5jLTQxMi17XG5tbS9zbHViLmM6NDEzOiNpZmRlZiBDT05GSUdfU0xVQl9TVEFUU1xubW0vc2x1Yi5jLTQxNC1cdHJhd19jcHVfYWRkKHMtXHUwMDNlY3B1X3N0YXRzLVx1MDAzZXN0YXRbc2ldLCB2KTtcbi0tXG5tbS9zbHViLmM9NDU3PXN0cnVjdCBrbWVtX2NhY2hlX25vZGUge1xuLS1cbm1tL3NsdWIuYy00NjAtXHRzdHJ1Y3QgbGlzdF9oZWFkIHBhcnRpYWw7XG5tbS9zbHViLmM6NDYxOiNpZmRlZiBDT05GSUdfU0xVQl9ERUJVR1xubW0vc2x1Yi5jLTQ2Mi1cdGF0b21pY19sb25nX3QgbnJfc2xhYnM7XG4tLVxubW0vc2x1Yi5jPTUzMT1zdGF0aWMgaW5saW5lIGZyZWVwdHJfdCBmcmVlbGlzdF9wdHJfZW5jb2RlKGNvbnN0IHN0cnVjdCBrbWVtX2NhY2hlICpzLFxuLS1cbm1tL3NsdWIuYy01MzUtXG5tbS9zbHViLmM6NTM2OiNpZmRlZiBDT05GSUdfU0xBQl9GUkVFTElTVF9IQVJERU5FRFxubW0vc2x1Yi5jLTUzNy1cdGVuY29kZWQgPSAodW5zaWduZWQgbG9uZylwdHIgXiBzLVx1MDAzZXJhbmRvbSBeIHN3YWIocHRyX2FkZHIpO1xuLS1cbm1tL3NsdWIuYz01NDQ9c3RhdGljIGlubGluZSB2b2lkICpmcmVlbGlzdF9wdHJfZGVjb2RlKGNvbnN0IHN0cnVjdCBrbWVtX2NhY2hlICpzLFxuLS1cbm1tL3NsdWIuYy01NDgtXG5tbS9zbHViLmM6NTQ5OiNpZmRlZiBDT05GSUdfU0xBQl9GUkVFTElTVF9IQVJERU5FRFxubW0vc2x1Yi5jLTU1MC1cdGRlY29kZWQgPSAodm9pZCAqKShwdHIudiBeIHMtXHUwMDNlcmFuZG9tIF4gc3dhYihwdHJfYWRkcikpO1xuLS1cbm1tL3NsdWIuYz01Njg9c3RhdGljIGlubGluZSB2b2lkIHNldF9mcmVlcG9pbnRlcihzdHJ1Y3Qga21lbV9jYWNoZSAqcywgdm9pZCAqb2JqZWN0LCB2b2lkICpmcClcbi0tXG5tbS9zbHViLmMtNTcxLVxubW0vc2x1Yi5jOjU3MjojaWZkZWYgQ09ORklHX1NMQUJfRlJFRUxJU1RfSEFSREVORURcbm1tL3NsdWIuYy01NzMtXHRCVUdfT04ob2JqZWN0ID09IGZwKTsgLyogbmFpdmUgZGV0ZWN0aW9uIG9mIGRvdWJsZSBmcmVlIG9yIGNvcnJ1cHRpb24gKi9cbi0tXG5tbS9zbHViLmM9NjY0PV9fdXBkYXRlX2ZyZWVsaXN0X2Zhc3Qoc3RydWN0IHNsYWIgKnNsYWIsIHN0cnVjdCBmcmVlbGlzdF9jb3VudGVycyAqb2xkLFxuLS1cbm1tL3NsdWIuYy02NjYte1xubW0vc2x1Yi5jOjY2NzojaWZkZWYgc3lzdGVtX2hhc19mcmVlbGlzdF9hYmFcbm1tL3NsdWIuYy02NjgtXHRyZXR1cm4gdHJ5X2NtcHhjaGdfZnJlZWxpc3QoXHUwMDI2c2xhYi1cdTAwM2VmcmVlbGlzdF9jb3VudGVycyxcbi0tXG5tbS9zbHViLmM9NzAyPXN0YXRpYyBpbmxpbmUgYm9vbCBfX3NsYWJfdXBkYXRlX2ZyZWVsaXN0KHN0cnVjdCBrbWVtX2NhY2hlICpzLCBzdHJ1Y3Qgc2xhYiAqc2xhYixcbi0tXG5tbS9zbHViLmMtNzIwLVxubW0vc2x1Yi5jOjcyMTojaWZkZWYgU0xVQl9ERUJVR19DTVBYQ0hHXG5tbS9zbHViLmMtNzIyLVx0cHJfaW5mbyhcJiMzNDslcyAlczogY21weGNoZyBkb3VibGUgcmVkbyBcJiMzNDssIG4sIHMtXHUwMDNlbmFtZSk7XG4tLVxubW0vc2x1Yi5jPTcyOD1zdGF0aWMgaW5saW5lIGJvb2wgc2xhYl91cGRhdGVfZnJlZWxpc3Qoc3RydWN0IGttZW1fY2FjaGUgKnMsIHN0cnVjdCBzbGFiICpzbGFiLFxuLS1cbm1tL3NsdWIuYy03NDctXG5tbS9zbHViLmM6NzQ4OiNpZmRlZiBTTFVCX0RFQlVHX0NNUFhDSEdcbm1tL3NsdWIuYy03NDktXHRwcl9pbmZvKFwmIzM0OyVzICVzOiBjbXB4Y2hnIGRvdWJsZSByZWRvIFwmIzM0Oywgbiwgcy1cdTAwM2VuYW1lKTtcbi0tXG5tbS9zbHViLmM9Nzc1PXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBnZXRfb3JpZ19zaXplKHN0cnVjdCBrbWVtX2NhY2hlICpzLCB2b2lkICpvYmplY3QpXG4tLVxubW0vc2x1Yi5jLTc5MC1cbm1tL3NsdWIuYzo3OTE6I2lmZGVmIENPTkZJR19TTEFCX09CSl9FWFRcbm1tL3NsdWIuYy03OTItXG4tLVxubW0vc2x1Yi5jPTg3OT1zdGF0aWMgaW5saW5lIGJvb2wgb2JqX2V4dHNfaW5fc2xhYihzdHJ1Y3Qga21lbV9jYWNoZSAqcywgc3RydWN0IHNsYWIgKnNsYWIpXG4tLVxubW0vc2x1Yi5jLTg4NS1cbm1tL3NsdWIuYzo4ODY6I2lmIGRlZmluZWQoQ09ORklHX1NMQUJfT0JKX0VYVCkgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHXzY0QklUKVxubW0vc2x1Yi5jLTg4Ny1zdGF0aWMgdW5zaWduZWQgaW50IG9ial9leHRzX29mZnNldF9pbl9vYmplY3Qoc3RydWN0IGttZW1fY2FjaGUgKnMpXG4tLVxubW0vc2x1Yi5jPTkxMj1zdGF0aWMgaW5saW5lIHZvaWQgc2xhYl9zZXRfb2JqX2V4dHNfaW5fb2JqZWN0KHN0cnVjdCBzbGFiICpzbGFiKVxuLS1cbm1tL3NsdWIuYy05MjAtICovXG5tbS9zbHViLmM6OTIxOiNpZiBkZWZpbmVkKENPTkZJR19ERUJVR19WTSkgfHwgZGVmaW5lZChDT05GSUdfUFJPVkVfTE9DS0lORylcbm1tL3NsdWIuYy05MjItc3RhdGljIG5vaW5saW5lIHZvaWQgc2xhYl9hdHRhY2hfa3Byb2JlX2xvY2tlZCh2b2lkKVxuLS1cbm1tL3NsdWIuYz05Mjc9c3RhdGljIGlubGluZSB2b2lkIHNsYWJfYXR0YWNoX2twcm9iZV9sb2NrZWQodm9pZCkgeyB9XG4tLVxubW0vc2x1Yi5jLTkzNC1cbm1tL3NsdWIuYzo5MzU6I2lmZGVmIENPTkZJR19TTFVCX0RFQlVHXG5tbS9zbHViLmMtOTM2LVxuLS1cbm1tL3NsdWIuYz05NDk9c3RhdGljIHZvaWQgX19maWxsX21hcCh1bnNpZ25lZCBsb25nICpvYmpfbWFwLCBzdHJ1Y3Qga21lbV9jYWNoZSAqcyxcbi0tXG5tbS9zbHViLmMtOTYwLVxubW0vc2x1Yi5jOjk2MTojaWYgSVNfRU5BQkxFRChDT05GSUdfS1VOSVQpXG5tbS9zbHViLmMtOTYyLXN0YXRpYyBib29sIHNsYWJfYWRkX2t1bml0X2Vycm9ycyh2b2lkKVxuLS1cbm1tL3NsdWIuYz0xMDA0PXN0YXRpYyBpbmxpbmUgdm9pZCAqcmVzdG9yZV9yZWRfbGVmdChzdHJ1Y3Qga21lbV9jYWNoZSAqcywgdm9pZCAqcClcbi0tXG5tbS9zbHViLmMtMTAxNC0gKi9cbm1tL3NsdWIuYzoxMDE1OiNpZiBkZWZpbmVkKENPTkZJR19TTFVCX0RFQlVHX09OKVxubW0vc2x1Yi5jLTEwMTYtc3RhdGljIHNsYWJfZmxhZ3NfdCBzbHViX2RlYnVnID0gREVCVUdfREVGQVVMVF9GTEFHUztcbi0tXG5tbS9zbHViLmM9MTA1Nz1zdGF0aWMgc3RydWN0IHRyYWNrICpnZXRfdHJhY2soc3RydWN0IGttZW1fY2FjaGUgKnMsIHZvaWQgKm9iamVjdCxcbi0tXG5tbS9zbHViLmMtMTA2Ni1cbm1tL3NsdWIuYzoxMDY3OiNpZmRlZiBDT05GSUdfU1RBQ0tERVBPVFxubW0vc2x1Yi5jLTEwNjgtc3RhdGljIG5vaW5saW5lIGRlcG90X3N0YWNrX2hhbmRsZV90IHNldF90cmFja19wcmVwYXJlKGdmcF90IGdmcF9mbGFncylcbi0tXG5tbS9zbHViLmM9MTA4Nj1zdGF0aWMgdm9pZCBzZXRfdHJhY2tfdXBkYXRlKHN0cnVjdCBrbWVtX2NhY2hlICpzLCB2b2lkICpvYmplY3QsXG4tLVxubW0vc2x1Yi5jLTEwOTEtXG5tbS9zbHViLmM6MTA5MjojaWZkZWYgQ09ORklHX1NUQUNLREVQT1Rcbm1tL3NsdWIuYy0xMDkzLVx0cC1cdTAwM2VoYW5kbGUgPSBoYW5kbGU7XG4tLVxubW0vc2x1Yi5jPTExMjA9c3RhdGljIHZvaWQgcHJpbnRfdHJhY2soY29uc3QgY2hhciAqcywgc3RydWN0IHRyYWNrICp0LCB1bnNpZ25lZCBsb25nIHByX3RpbWUpXG4tLVxubW0vc2x1Yi5jLTExMjgtXHQgICAgICAgcywgKHZvaWQgKil0LVx1MDAzZWFkZHIsIHByX3RpbWUgLSB0LVx1MDAzZXdoZW4sIHQtXHUwMDNlY3B1LCB0LVx1MDAzZXBpZCk7XG5tbS9zbHViLmM6MTEyOTojaWZkZWYgQ09ORklHX1NUQUNLREVQT1Rcbm1tL3NsdWIuYy0xMTMwLVx0aGFuZGxlID0gUkVBRF9PTkNFKHQtXHUwMDNlaGFuZGxlKTtcbi0tXG5tbS9zbHViLmM9MTMyMD1zdGF0aWMgdm9pZCByZXN0b3JlX2J5dGVzKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBjb25zdCBjaGFyICptZXNzYWdlLCB1OCBkYXRhLFxuLS1cbm1tL3NsdWIuYy0xMzI2LVxubW0vc2x1Yi5jOjEzMjc6I2lmZGVmIENPTkZJR19LTVNBTlxubW0vc2x1Yi5jLTEzMjgtI2RlZmluZSBwYWRfY2hlY2tfYXR0cmlidXRlcyBub2lubGluZSBfX25vX2ttc2FuX2NoZWNrc1xuLS1cbm1tL3NsdWIuYz0yMDY5PXN0YXRpYyBpbmxpbmUgdm9pZCBkZWNfc2xhYnNfbm9kZShzdHJ1Y3Qga21lbV9jYWNoZSAqcywgaW50IG5vZGUsXG4tLVxubW0vc2x1Yi5jLTIwODQtXG5tbS9zbHViLmM6MjA4NTojaWZkZWYgQ09ORklHX1NMQUJfT0JKX0VYVFxubW0vc2x1Yi5jLTIwODYtXG5tbS9zbHViLmM6MjA4NzojaWZkZWYgQ09ORklHX01FTV9BTExPQ19QUk9GSUxJTkdfREVCVUdcbm1tL3NsdWIuYy0yMDg4LVxuLS1cbm1tL3NsdWIuYz0yMTY0PWludCBhbGxvY19zbGFiX29ial9leHRzKHN0cnVjdCBzbGFiICpzbGFiLCBzdHJ1Y3Qga21lbV9jYWNoZSAqcyxcbi0tXG5tbS9zbHViLmMtMjIxNy1cdG5ld19leHRzID0gKHVuc2lnbmVkIGxvbmcpdmVjO1xubW0vc2x1Yi5jOjIyMTg6I2lmZGVmIENPTkZJR19NRU1DR1xubW0vc2x1Yi5jLTIyMTktXHRuZXdfZXh0cyB8PSBNRU1DR19EQVRBX09CSkVYVFM7XG4tLVxubW0vc2x1Yi5jPTIyODU9c3RhdGljIHZvaWQgYWxsb2Nfc2xhYl9vYmpfZXh0c19lYXJseShzdHJ1Y3Qga21lbV9jYWNoZSAqcywgc3RydWN0IHNsYWIgKnNsYWIpXG4tLVxubW0vc2x1Yi5jLTIzMDEtXG5tbS9zbHViLmM6MjMwMjojaWZkZWYgQ09ORklHX01FTUNHXG5tbS9zbHViLmMtMjMwMy1cdFx0b2JqX2V4dHMgfD0gTUVNQ0dfREFUQV9PQkpFWFRTO1xuLS1cbm1tL3NsdWIuYy0yMzE3LVxubW0vc2x1Yi5jOjIzMTg6I2lmZGVmIENPTkZJR19NRU1DR1xubW0vc2x1Yi5jLTIzMTktXHRcdG9ial9leHRzIHw9IE1FTUNHX0RBVEFfT0JKRVhUUztcbi0tXG5tbS9zbHViLmM9MjM0Nj1zdGF0aWMgaW5saW5lIHZvaWQgYWxsb2Nfc2xhYl9vYmpfZXh0c19lYXJseShzdHJ1Y3Qga21lbV9jYWNoZSAqcyxcbi0tXG5tbS9zbHViLmMtMjM1Mi1cbm1tL3NsdWIuYzoyMzUzOiNpZmRlZiBDT05GSUdfTUVNX0FMTE9DX1BST0ZJTElOR1xubW0vc2x1Yi5jLTIzNTQtXG4tLVxubW0vc2x1Yi5jPTI0OTU9c3RhdGljIGlubGluZSB2b2lkIHNsYWJfb2JqX2V4dF9oYXNfY29kZXRhZ19pbml0KHZvaWQpXG4tLVxubW0vc2x1Yi5jLTI1MDEtXG5tbS9zbHViLmM6MjUwMjojaWZkZWYgQ09ORklHX01FTUNHXG5tbS9zbHViLmMtMjUwMy1cbi0tXG5tbS9zbHViLmM9MjYyNT1zdGF0aWMgaW5saW5lIGJvb2wgbWVtY2dfc2xhYl9wb3N0X2NoYXJnZSh2b2lkICpwLCBnZnBfdCBmbGFncylcbi0tXG5tbS9zbHViLmMtMjYzMC1cbm1tL3NsdWIuYzoyNjMxOiNpZmRlZiBDT05GSUdfU0xVQl9SQ1VfREVCVUdcbm1tL3NsdWIuYy0yNjMyLXN0YXRpYyB2b2lkIHNsYWJfZnJlZV9hZnRlcl9yY3VfZGVidWcoc3RydWN0IHJjdV9oZWFkICpyY3VfaGVhZCk7XG4tLVxubW0vc2x1Yi5jPTI2Njc9Ym9vbCBzbGFiX2ZyZWVfaG9vayhzdHJ1Y3Qga21lbV9jYWNoZSAqcywgdm9pZCAqeCwgYm9vbCBpbml0LFxuLS1cbm1tL3NsdWIuYy0yNjk1LVxubW0vc2x1Yi5jOjI2OTY6I2lmZGVmIENPTkZJR19TTFVCX1JDVV9ERUJVR1xubW0vc2x1Yi5jLTI2OTctXHRpZiAoc3RpbGxfYWNjZXNzaWJsZSkge1xuLS1cbm1tL3NsdWIuYz0zMzMzPXN0YXRpYyBpbmxpbmUgc3RydWN0IHNsYWIgKmFsbG9jX3NsYWJfcGFnZShnZnBfdCBmbGFncywgaW50IG5vZGUsXG4tLVxubW0vc2x1Yi5jLTMzNjAtXG5tbS9zbHViLmM6MzM2MTojaWZkZWYgQ09ORklHX1NMQUJfRlJFRUxJU1RfUkFORE9NXG5tbS9zbHViLmMtMzM2Mi0vKiBQcmUtaW5pdGlhbGl6ZSB0aGUgcmFuZG9tIHNlcXVlbmNlIGNhY2hlICovXG4tLVxubW0vc2x1Yi5jPTM0NDE9c3RhdGljIHN0cnVjdCBzbGFiICphbGxvY2F0ZV9zbGFiKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBnZnBfdCBmbGFncyxcbi0tXG5tbS9zbHViLmMtMzQ4MC1cbm1tL3NsdWIuYzozNDgxOiNpZmRlZiBDT05GSUdfNjRCSVRcbm1tL3NsdWIuYy0zNDgyLVx0aWYgKGNhY2hlX25lZWRzX29iamNnKHMpKVxuLS1cbm1tL3NsdWIuYz0zNjM0PXN0YXRpYyB2b2lkICphbGxvY19zaW5nbGVfZnJvbV9wYXJ0aWFsKHN0cnVjdCBrbWVtX2NhY2hlICpzLFxuLS1cbm1tL3NsdWIuYy0zNjQwLVxubW0vc2x1Yi5jOjM2NDE6I2lmZGVmIENPTkZJR19TTFVCX0RFQlVHXG5tbS9zbHViLmMtMzY0Mi1cdGlmIChzLVx1MDAzZWZsYWdzIFx1MDAyNiBTTEFCX0NPTlNJU1RFTkNZX0NIRUNLUykge1xuLS1cbm1tL3NsdWIuYz0zNjY4PXN0YXRpYyBpbmxpbmUgdm9pZCAqbmV4dF9zbGFiX29iaihzdHJ1Y3Qga21lbV9jYWNoZSAqcyxcbi0tXG5tbS9zbHViLmMtMzY3MC17XG5tbS9zbHViLmM6MzY3MTojaWZkZWYgQ09ORklHX1NMQUJfRlJFRUxJU1RfUkFORE9NXG5tbS9zbHViLmMtMzY3Mi1cdGlmIChpdGVyLVx1MDAzZXJhbmRvbSkge1xuLS1cbm1tL3NsdWIuYz0zNzE4PXN0YXRpYyBpbmxpbmUgdm9pZCBpbml0X3NsYWJfb2JqX2l0ZXIoc3RydWN0IGttZW1fY2FjaGUgKnMsIHN0cnVjdCBzbGFiICpzbGFiLFxuLS1cbm1tL3NsdWIuYy0zNzI0LVxubW0vc2x1Yi5jOjM3MjU6I2lmZGVmIENPTkZJR19TTEFCX0ZSRUVMSVNUX1JBTkRPTVxubW0vc2x1Yi5jLTM3MjYtXHRpdGVyLVx1MDAzZXJhbmRvbSA9IChzbGFiLVx1MDAzZW9iamVjdHMgXHUwMDNlPSAyIFx1MDAyNlx1MDAyNiBzLVx1MDAzZXJhbmRvbV9zZXEpO1xuLS1cbm1tL3NsdWIuYz0zOTUwPXN0YXRpYyB2b2lkICpnZXRfZnJvbV9hbnlfcGFydGlhbChzdHJ1Y3Qga21lbV9jYWNoZSAqcywgZ2ZwX3QgZ2ZwX2ZsYWdzLFxuLS1cbm1tL3NsdWIuYy0zOTUyLXtcbm1tL3NsdWIuYzozOTUzOiNpZmRlZiBDT05GSUdfTlVNQVxubW0vc2x1Yi5jLTM5NTQtXHRzdHJ1Y3Qgem9uZWxpc3QgKnpvbmVsaXN0O1xuLS1cbm1tL3NsdWIuYz00MjQ5PXN0YXRpYyBpbnQgc2x1Yl9jcHVfZGVhZCh1bnNpZ25lZCBpbnQgY3B1KVxuLS1cbm1tL3NsdWIuYy00MjYxLVxubW0vc2x1Yi5jOjQyNjI6I2lmZGVmIENPTkZJR19TTFVCX0RFQlVHXG5tbS9zbHViLmMtNDI2My1zdGF0aWMgaW50IGNvdW50X2ZyZWUoc3RydWN0IHNsYWIgKnNsYWIpXG4tLVxubW0vc2x1Yi5jPTQyNzQ9c3RhdGljIGlubGluZSBib29sIGZyZWVfZGVidWdfcHJvY2Vzc2luZyhzdHJ1Y3Qga21lbV9jYWNoZSAqcyxcbi0tXG5tbS9zbHViLmMtNDMzMS1cbm1tL3NsdWIuYzo0MzMyOiNpZiBkZWZpbmVkKENPTkZJR19TTFVCX0RFQlVHKSB8fCBkZWZpbmVkKFNMQUJfU1VQUE9SVFNfU1lTRlMpXG5tbS9zbHViLmMtNDMzMy1zdGF0aWMgdW5zaWduZWQgbG9uZyBjb3VudF9wYXJ0aWFsKHN0cnVjdCBrbWVtX2NhY2hlX25vZGUgKm4sXG4tLVxubW0vc2x1Yi5jLTQzNDctXG5tbS9zbHViLmM6NDM0ODojaWZkZWYgQ09ORklHX1NMVUJfREVCVUdcbm1tL3NsdWIuYy00MzQ5LSNkZWZpbmUgTUFYX1BBUlRJQUxfVE9fU0NBTiAxMDAwMFxuLS1cbm1tL3NsdWIuYz00NjA2PXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgaW50IGFwcGx5X3N0cmljdF9udW1hX3BvbGljeShpbnQgbm9kZSlcbm1tL3NsdWIuYy00NjA3LXtcbm1tL3NsdWIuYzo0NjA4OiNpZmRlZiBDT05GSUdfTlVNQVxubW0vc2x1Yi5jLTQ2MDktXHRpZiAoc3RhdGljX2JyYW5jaF91bmxpa2VseShcdTAwMjZzdHJpY3RfbnVtYSkgXHUwMDI2XHUwMDI2XG4tLVxubW0vc2x1Yi5jPTYyMjY9c3RhdGljIF9fYWx3YXlzX2lubGluZSBib29sIGNhbl9mcmVlX3RvX3BjcyhzdHJ1Y3Qgc2xhYiAqc2xhYilcbi0tXG5tbS9zbHViLmMtNjIzNS1cbm1tL3NsdWIuYzo2MjM2OiNpZmRlZiBDT05GSUdfSEFWRV9NRU1PUllMRVNTX05PREVTXG5tbS9zbHViLmMtNjIzNy1cdC8qXG4tLVxubW0vc2x1Yi5jPTY0OTg9dm9pZCBzbGFiX2ZyZWUoc3RydWN0IGttZW1fY2FjaGUgKnMsIHN0cnVjdCBzbGFiICpzbGFiLCB2b2lkICpvYmplY3QsXG4tLVxubW0vc2x1Yi5jLTY1MTMtXG5tbS9zbHViLmM6NjUxNDojaWZkZWYgQ09ORklHX01FTUNHXG5tbS9zbHViLmMtNjUxNS0vKiBEbyBub3QgaW5saW5lIHRoZSByYXJlIG1lbWNnIGNoYXJnaW5nIGZhaWxlZCBwYXRoIGludG8gdGhlIGFsbG9jYXRpb24gcGF0aCAqL1xuLS1cbm1tL3NsdWIuYz02NTI5PXZvaWQgc2xhYl9mcmVlX2J1bGsoc3RydWN0IGttZW1fY2FjaGUgKnMsIHN0cnVjdCBzbGFiICpzbGFiLCB2b2lkICpoZWFkLFxuLS1cbm1tL3NsdWIuYy02NTQzLVxubW0vc2x1Yi5jOjY1NDQ6I2lmZGVmIENPTkZJR19TTFVCX1JDVV9ERUJVR1xubW0vc2x1Yi5jLTY1NDUtc3RhdGljIHZvaWQgc2xhYl9mcmVlX2FmdGVyX3JjdV9kZWJ1ZyhzdHJ1Y3QgcmN1X2hlYWQgKnJjdV9oZWFkKVxuLS1cbm1tL3NsdWIuYy02NTcyLVxubW0vc2x1Yi5jOjY1NzM6I2lmZGVmIENPTkZJR19LQVNBTl9HRU5FUklDXG5tbS9zbHViLmMtNjU3NC12b2lkIF9fX2NhY2hlX2ZyZWUoc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlLCB2b2lkICp4LCB1bnNpZ25lZCBsb25nIGFkZHIpXG4tLVxubW0vc2x1Yi5jPTY2MzU9c3RhdGljIGlubGluZSBzaXplX3Qgc2xhYl9rc2l6ZShzdHJ1Y3Qgc2xhYiAqc2xhYilcbi0tXG5tbS9zbHViLmMtNjYzOC1cbm1tL3NsdWIuYzo2NjM5OiNpZmRlZiBDT05GSUdfU0xVQl9ERUJVR1xubW0vc2x1Yi5jLTY2NDAtXHQvKlxuLS1cbm1tL3NsdWIuYz02NjY0PXN0YXRpYyBzaXplX3QgX19rc2l6ZShjb25zdCB2b2lkICpvYmplY3QpXG4tLVxubW0vc2x1Yi5jLTY2ODEtXG5tbS9zbHViLmM6NjY4MjojaWZkZWYgQ09ORklHX1NMVUJfREVCVUdcbm1tL3NsdWIuYy02NjgzLVx0c2tpcF9vcmlnX3NpemVfY2hlY2soc2xhYi1cdTAwM2VzbGFiX2NhY2hlLCBvYmplY3QpO1xuLS1cbm1tL3NsdWIuYz03MjYwPV9fcmVmaWxsX29iamVjdHNfbm9kZShzdHJ1Y3Qga21lbV9jYWNoZSAqcywgdm9pZCAqKnAsIGdmcF90IGdmcCwgdW5zaWduZWQgaW50IG1pbixcbi0tXG5tbS9zbHViLmMtNzMzMy1cbm1tL3NsdWIuYzo3MzM0OiNpZmRlZiBDT05GSUdfTlVNQVxubW0vc2x1Yi5jLTczMzUtc3RhdGljIHVuc2lnbmVkIGludFxuLS1cbm1tL3NsdWIuYz03Njc3PWluaXRfa21lbV9jYWNoZV9ub2RlKHN0cnVjdCBrbWVtX2NhY2hlX25vZGUgKm4pXG4tLVxubW0vc2x1Yi5jLTc2ODEtXHRJTklUX0xJU1RfSEVBRChcdTAwMjZuLVx1MDAzZXBhcnRpYWwpO1xubW0vc2x1Yi5jOjc2ODI6I2lmZGVmIENPTkZJR19TTFVCX0RFQlVHXG5tbS9zbHViLmMtNzY4My1cdGF0b21pY19sb25nX3NldChcdTAwMjZuLVx1MDAzZW5yX3NsYWJzLCAwKTtcbi0tXG5tbS9zbHViLmMtNzY4OC1cbm1tL3NsdWIuYzo3Njg5OiNpZmRlZiBDT05GSUdfU0xVQl9TVEFUU1xubW0vc2x1Yi5jLTc2OTAtc3RhdGljIGlubGluZSBpbnQgYWxsb2Nfa21lbV9jYWNoZV9zdGF0cyhzdHJ1Y3Qga21lbV9jYWNoZSAqcylcbi0tXG5tbS9zbHViLmM9Nzc1OD1zdGF0aWMgdm9pZCBlYXJseV9rbWVtX2NhY2hlX25vZGVfYWxsb2MoaW50IG5vZGUpXG4tLVxubW0vc2x1Yi5jLTc3ODEtXG5tbS9zbHViLmM6Nzc4MjojaWZkZWYgQ09ORklHX1NMVUJfREVCVUdcbm1tL3NsdWIuYy03NzgzLVx0aW5pdF9vYmplY3Qoa21lbV9jYWNoZV9ub2RlLCBuLCBTTFVCX1JFRF9BQ1RJVkUpO1xuLS1cbm1tL3NsdWIuYz03ODIwPXZvaWQgX19rbWVtX2NhY2hlX3JlbGVhc2Uoc3RydWN0IGttZW1fY2FjaGUgKnMpXG4tLVxubW0vc2x1Yi5jLTc4MjMtXHRwY3NfZGVzdHJveShzKTtcbm1tL3NsdWIuYzo3ODI0OiNpZmRlZiBDT05GSUdfU0xVQl9TVEFUU1xubW0vc2x1Yi5jLTc4MjUtXHRmcmVlX3BlcmNwdShzLVx1MDAzZWNwdV9zdGF0cyk7XG4tLVxubW0vc2x1Yi5jPTc5MjA9c3RhdGljIGludCBjYWxjdWxhdGVfc2l6ZXMoc3RydWN0IGttZW1fY2FjaGVfYXJncyAqYXJncywgc3RydWN0IGttZW1fY2FjaGUgKnMpXG4tLVxubW0vc2x1Yi5jLTc5MzMtXG5tbS9zbHViLmM6NzkzNDojaWZkZWYgQ09ORklHX1NMVUJfREVCVUdcbm1tL3NsdWIuYy03OTM1LVx0Lypcbi0tXG5tbS9zbHViLmMtNzk5Ni1cbm1tL3NsdWIuYzo3OTk3OiNpZmRlZiBDT05GSUdfU0xVQl9ERUJVR1xubW0vc2x1Yi5jLTc5OTgtXHRpZiAoZmxhZ3MgXHUwMDI2IFNMQUJfU1RPUkVfVVNFUikge1xuLS1cbm1tL3NsdWIuYy04MDExLVx0a2FzYW5fY2FjaGVfY3JlYXRlKHMsIFx1MDAyNnNpemUsIFx1MDAyNnMtXHUwMDNlZmxhZ3MpO1xubW0vc2x1Yi5jOjgwMTI6I2lmZGVmIENPTkZJR19TTFVCX0RFQlVHXG5tbS9zbHViLmMtODAxMy1cdGlmIChmbGFncyBcdTAwMjYgU0xBQl9SRURfWk9ORSkge1xuLS1cbm1tL3NsdWIuYy04MDM0LVx0YWxpZ25lZF9zaXplID0gQUxJR04oc2l6ZSwgcy1cdTAwM2VhbGlnbik7XG5tbS9zbHViLmM6ODAzNTojaWYgZGVmaW5lZChDT05GSUdfU0xBQl9PQkpfRVhUKSBcdTAwMjZcdTAwMjYgZGVmaW5lZChDT05GSUdfNjRCSVQpXG5tbS9zbHViLmMtODAzNi1cdGlmIChzbGFiX2FyZ3NfdW5tZXJnZWFibGUoYXJncywgcy1cdTAwM2VmbGFncykgXHUwMDI2XHUwMDI2XG4tLVxubW0vc2x1Yi5jPTgwNzY9c3RhdGljIHZvaWQgbGlzdF9zbGFiX29iamVjdHMoc3RydWN0IGttZW1fY2FjaGUgKnMsIHN0cnVjdCBzbGFiICpzbGFiKVxubW0vc2x1Yi5jLTgwNzcte1xubW0vc2x1Yi5jOjgwNzg6I2lmZGVmIENPTkZJR19TTFVCX0RFQlVHXG5tbS9zbHViLmMtODA3OS1cdHZvaWQgKmFkZHIgPSBzbGFiX2FkZHJlc3Moc2xhYik7XG4tLVxubW0vc2x1Yi5jPTgxNDM9aW50IF9fa21lbV9jYWNoZV9zaHV0ZG93bihzdHJ1Y3Qga21lbV9jYWNoZSAqcylcbi0tXG5tbS9zbHViLmMtODE2OS1cbm1tL3NsdWIuYzo4MTcwOiNpZmRlZiBDT05GSUdfUFJJTlRLXG5tbS9zbHViLmMtODE3MS12b2lkIF9fa21lbV9vYmpfaW5mbyhzdHJ1Y3Qga21lbV9vYmpfaW5mbyAqa3BwLCB2b2lkICpvYmplY3QsIHN0cnVjdCBzbGFiICpzbGFiKVxuLS1cbm1tL3NsdWIuYy04MTg1LVx0b2JqcDAgPSBrYXNhbl9yZXNldF90YWcob2JqZWN0KTtcbm1tL3NsdWIuYzo4MTg2OiNpZmRlZiBDT05GSUdfU0xVQl9ERUJVR1xubW0vc2x1Yi5jLTgxODctXHRvYmpwID0gcmVzdG9yZV9yZWRfbGVmdChzLCBvYmpwMCk7XG4tLVxubW0vc2x1Yi5jLTgxOTgtXHRcdHJldHVybjtcbm1tL3NsdWIuYzo4MTk5OiNpZmRlZiBDT05GSUdfU0xVQl9ERUJVR1xubW0vc2x1Yi5jLTgyMDAtXHRvYmpwID0gZml4dXBfcmVkX2xlZnQocywgb2JqcCk7XG4tLVxubW0vc2x1Yi5jLTgyMDItXHRrcHAtXHUwMDNla3BfcmV0ID0gKHZvaWQgKil0cmFja3AtXHUwMDNlYWRkcjtcbm1tL3NsdWIuYzo4MjAzOiNpZmRlZiBDT05GSUdfU1RBQ0tERVBPVFxubW0vc2x1Yi5jLTgyMDQtXHR7XG4tLVxubW0vc2x1Yi5jPTgyNzY9Y29yZV9wYXJhbShzbHViX21pbl9vYmplY3RzLCBzbHViX21pbl9vYmplY3RzLCB1aW50LCAwKTtcbm1tL3NsdWIuYy04Mjc3LVxubW0vc2x1Yi5jOjgyNzg6I2lmZGVmIENPTkZJR19OVU1BXG5tbS9zbHViLmMtODI3OS1zdGF0aWMgaW50IF9faW5pdCBzZXR1cF9zbGFiX3N0cmljdF9udW1hKGNvbnN0IGNoYXIgKnN0ciwgY29uc3Qgc3RydWN0IGtlcm5lbF9wYXJhbSAqa3ApXG4tLVxubW0vc2x1Yi5jPTgyOTU9X19jb3JlX3BhcmFtX2NiKHNsYWJfc3RyaWN0X251bWEsIFx1MDAyNnBhcmFtX29wc19zbGFiX3N0cmljdF9udW1hLCBOVUxMLCAwKTtcbi0tXG5tbS9zbHViLmMtODI5OC1cbm1tL3NsdWIuYzo4Mjk5OiNpZmRlZiBDT05GSUdfSEFSREVORURfVVNFUkNPUFlcbm1tL3NsdWIuYy04MzAwLS8qXG4tLVxubW0vc2x1Yi5jPTg1NDQ9c3RhdGljIHN0cnVjdCBrbWVtX2NhY2hlICogX19pbml0IGJvb3RzdHJhcChzdHJ1Y3Qga21lbV9jYWNoZSAqc3RhdGljX2NhY2hlKVxuLS1cbm1tL3NsdWIuYy04NTU3LVxubW0vc2x1Yi5jOjg1NTg6I2lmZGVmIENPTkZJR19TTFVCX0RFQlVHXG5tbS9zbHViLmMtODU1OS1cdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShwLCBcdTAwMjZuLVx1MDAzZWZ1bGwsIHNsYWJfbGlzdClcbi0tXG5tbS9zbHViLmM9ODcwNT12b2lkIF9faW5pdCBrbWVtX2NhY2hlX2luaXRfbGF0ZSh2b2lkKVxuLS1cbm1tL3NsdWIuYy04NzA5LVx0V0FSTl9PTighZmx1c2h3cSk7XG5tbS9zbHViLmM6ODcxMDojaWZkZWYgQ09ORklHX1NMQUJfRlJFRUxJU1RfUkFORE9NXG5tbS9zbHViLmMtODcxMS1cdHByYW5kb21faW5pdF9vbmNlKFx1MDAyNnNsYWJfcm5kX3N0YXRlKTtcbi0tXG5tbS9zbHViLmM9ODcxNT1pbnQgZG9fa21lbV9jYWNoZV9jcmVhdGUoc3RydWN0IGttZW1fY2FjaGUgKnMsIGNvbnN0IGNoYXIgKm5hbWUsXG4tLVxubW0vc2x1Yi5jLTg3MjQtXHRzLVx1MDAzZWZsYWdzID0ga21lbV9jYWNoZV9mbGFncyhmbGFncywgcy1cdTAwM2VuYW1lKTtcbm1tL3NsdWIuYzo4NzI1OiNpZmRlZiBDT05GSUdfU0xBQl9GUkVFTElTVF9IQVJERU5FRFxubW0vc2x1Yi5jLTg3MjYtXHRzLVx1MDAzZXJhbmRvbSA9IGdldF9yYW5kb21fbG9uZygpO1xuLS1cbm1tL3NsdWIuYy04NzI5LVx0cy1cdTAwM2VjdG9yID0gYXJncy1cdTAwM2VjdG9yO1xubW0vc2x1Yi5jOjg3MzA6I2lmZGVmIENPTkZJR19IQVJERU5FRF9VU0VSQ09QWVxubW0vc2x1Yi5jLTg3MzEtXHRzLVx1MDAzZXVzZXJvZmZzZXQgPSBhcmdzLVx1MDAzZXVzZXJvZmZzZXQ7XG4tLVxubW0vc2x1Yi5jLTg3NDktXG5tbS9zbHViLmM6ODc1MDojaWZkZWYgc3lzdGVtX2hhc19mcmVlbGlzdF9hYmFcbm1tL3NsdWIuYy04NzUxLVx0aWYgKHN5c3RlbV9oYXNfZnJlZWxpc3RfYWJhKCkgXHUwMDI2XHUwMDI2ICEocy1cdTAwM2VmbGFncyBcdTAwMjYgU0xBQl9OT19DTVBYQ0hHKSkge1xuLS1cbm1tL3NsdWIuYy04NzY5LVxubW0vc2x1Yi5jOjg3NzA6I2lmZGVmIENPTkZJR19OVU1BXG5tbS9zbHViLmMtODc3MS1cdHMtXHUwMDNlcmVtb3RlX25vZGVfZGVmcmFnX3JhdGlvID0gMTAwMDtcbi0tXG5tbS9zbHViLmMtODc4Mi1cbm1tL3NsdWIuYzo4NzgzOiNpZmRlZiBDT05GSUdfU0xVQl9TVEFUU1xubW0vc2x1Yi5jLTg3ODQtXHRpZiAoIWFsbG9jX2ttZW1fY2FjaGVfc3RhdHMocykpXG4tLVxubW0vc2x1Yi5jLTg4MTMtXG5tbS9zbHViLmM6ODgxNDojaWZkZWYgU0xBQl9TVVBQT1JUU19TWVNGU1xubW0vc2x1Yi5jLTg4MTUtc3RhdGljIGludCBjb3VudF9pbnVzZShzdHJ1Y3Qgc2xhYiAqc2xhYilcbi0tXG5tbS9zbHViLmM9ODgyMD1zdGF0aWMgaW50IGNvdW50X3RvdGFsKHN0cnVjdCBzbGFiICpzbGFiKVxuLS1cbm1tL3NsdWIuYy04ODI1LVxubW0vc2x1Yi5jOjg4MjY6I2lmZGVmIENPTkZJR19TTFVCX0RFQlVHXG5tbS9zbHViLmMtODgyNy1zdGF0aWMgdm9pZCB2YWxpZGF0ZV9zbGFiKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBzdHJ1Y3Qgc2xhYiAqc2xhYixcbi0tXG5tbS9zbHViLmM9ODkwOD1FWFBPUlRfU1lNQk9MKHZhbGlkYXRlX3NsYWJfY2FjaGUpO1xubW0vc2x1Yi5jLTg5MDktXG5tbS9zbHViLmM6ODkxMDojaWZkZWYgQ09ORklHX0RFQlVHX0ZTXG5tbS9zbHViLmMtODkxMS0vKlxuLS1cbm1tL3NsdWIuYz04OTY2PXN0YXRpYyBpbnQgYWRkX2xvY2F0aW9uKHN0cnVjdCBsb2NfdHJhY2sgKnQsIHN0cnVjdCBrbWVtX2NhY2hlICpzLFxuLS1cbm1tL3NsdWIuYy04OTc2LVxubW0vc2x1Yi5jOjg5Nzc6I2lmZGVmIENPTkZJR19TVEFDS0RFUE9UXG5tbS9zbHViLmMtODk3OC1cdGhhbmRsZSA9IFJFQURfT05DRSh0cmFjay1cdTAwM2VoYW5kbGUpO1xuLS1cbm1tL3NsdWIuYz05MDU4PXN0YXRpYyB2b2lkIHByb2Nlc3Nfc2xhYihzdHJ1Y3QgbG9jX3RyYWNrICp0LCBzdHJ1Y3Qga21lbV9jYWNoZSAqcyxcbi0tXG5tbS9zbHViLmMtOTA3Ni1cbm1tL3NsdWIuYzo5MDc3OiNpZmRlZiBTTEFCX1NVUFBPUlRTX1NZU0ZTXG5tbS9zbHViLmMtOTA3OC1lbnVtIHNsYWJfc3RhdF90eXBlIHtcbi0tXG5tbS9zbHViLmM9OTA5MD1zdGF0aWMgc3NpemVfdCBzaG93X3NsYWJfb2JqZWN0cyhzdHJ1Y3Qga21lbV9jYWNoZSAqcyxcbi0tXG5tbS9zbHViLmMtOTExMy1cbm1tL3NsdWIuYzo5MTE0OiNpZmRlZiBDT05GSUdfU0xVQl9ERUJVR1xubW0vc2x1Yi5jLTkxMTUtXHRpZiAoZmxhZ3MgXHUwMDI2IFNPX0FMTCkge1xuLS1cbm1tL3NsdWIuYy05MTQ3LVx0bGVuICYjNDM7PSBzeXNmc19lbWl0X2F0KGJ1ZiwgbGVuLCBcJiMzNDslbHVcJiMzNDssIHRvdGFsKTtcbm1tL3NsdWIuYzo5MTQ4OiNpZmRlZiBDT05GSUdfTlVNQVxubW0vc2x1Yi5jLTkxNDktXHRmb3IgKG5vZGUgPSAwOyBub2RlIFx1MDAzYyBucl9ub2RlX2lkczsgbm9kZSYjNDM7JiM0MzspIHtcbi0tXG5tbS9zbHViLmM9OTMwMT1TTEFCX0FUVFJfUk8oaHdjYWNoZV9hbGlnbik7XG5tbS9zbHViLmMtOTMwMi1cbm1tL3NsdWIuYzo5MzAzOiNpZmRlZiBDT05GSUdfWk9ORV9ETUFcbm1tL3NsdWIuYy05MzA0LXN0YXRpYyBzc2l6ZV90IGNhY2hlX2RtYV9zaG93KHN0cnVjdCBrbWVtX2NhY2hlICpzLCBjaGFyICpidWYpXG4tLVxubW0vc2x1Yi5jPTkzMDg9U0xBQl9BVFRSX1JPKGNhY2hlX2RtYSk7XG4tLVxubW0vc2x1Yi5jLTkzMTAtXG5tbS9zbHViLmM6OTMxMTojaWZkZWYgQ09ORklHX0hBUkRFTkVEX1VTRVJDT1BZXG5tbS9zbHViLmMtOTMxMi1zdGF0aWMgc3NpemVfdCB1c2Vyc2l6ZV9zaG93KHN0cnVjdCBrbWVtX2NhY2hlICpzLCBjaGFyICpidWYpXG4tLVxubW0vc2x1Yi5jPTkzMjM9U0xBQl9BVFRSX1JPKGRlc3Ryb3lfYnlfcmN1KTtcbm1tL3NsdWIuYy05MzI0LVxubW0vc2x1Yi5jOjkzMjU6I2lmZGVmIENPTkZJR19TTFVCX0RFQlVHXG5tbS9zbHViLmMtOTMyNi1zdGF0aWMgc3NpemVfdCBzbGFic19zaG93KHN0cnVjdCBrbWVtX2NhY2hlICpzLCBjaGFyICpidWYpXG4tLVxubW0vc2x1Yi5jPTkzOTQ9U0xBQl9BVFRSKHZhbGlkYXRlKTtcbi0tXG5tbS9zbHViLmMtOTM5Ny1cbm1tL3NsdWIuYzo5Mzk4OiNpZmRlZiBDT05GSUdfRkFJTFNMQUJcbm1tL3NsdWIuYy05Mzk5LXN0YXRpYyBzc2l6ZV90IGZhaWxzbGFiX3Nob3coc3RydWN0IGttZW1fY2FjaGUgKnMsIGNoYXIgKmJ1Zilcbi0tXG5tbS9zbHViLmM9OTQzND1TTEFCX0FUVFIoc2hyaW5rKTtcbm1tL3NsdWIuYy05NDM1LVxubW0vc2x1Yi5jOjk0MzY6I2lmZGVmIENPTkZJR19OVU1BXG5tbS9zbHViLmMtOTQzNy1zdGF0aWMgc3NpemVfdCByZW1vdGVfbm9kZV9kZWZyYWdfcmF0aW9fc2hvdyhzdHJ1Y3Qga21lbV9jYWNoZSAqcywgY2hhciAqYnVmKVxuLS1cbm1tL3NsdWIuYz05NDU4PVNMQUJfQVRUUihyZW1vdGVfbm9kZV9kZWZyYWdfcmF0aW8pO1xuLS1cbm1tL3NsdWIuYy05NDYwLVxubW0vc2x1Yi5jOjk0NjE6I2lmZGVmIENPTkZJR19TTFVCX1NUQVRTXG5tbS9zbHViLmMtOTQ2Mi1zdGF0aWMgaW50IHNob3dfc3RhdChzdHJ1Y3Qga21lbV9jYWNoZSAqcywgY2hhciAqYnVmLCBlbnVtIHN0YXRfaXRlbSBzaSlcbi0tXG5tbS9zbHViLmMtOTQ4MC1cbm1tL3NsdWIuYzo5NDgxOiNpZmRlZiBDT05GSUdfU01QXG5tbS9zbHViLmMtOTQ4Mi1cdGZvcl9lYWNoX29ubGluZV9jcHUoY3B1KSB7XG4tLVxubW0vc2x1Yi5jPTk1NDI9U1RBVF9BVFRSKFNIRUFGX1JFVFVSTl9TTE9XLCBzaGVhZl9yZXR1cm5fc2xvdyk7XG4tLVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDAyOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4MTAyCgkJCQkJCQlvdXRwdXQ6IDEyNgoJCQkJCQkJdGhvdWdodHM6IDk0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIEFuYWx5c2lzOiBgX19fa21hbGxvY19sYXJnZV9ub2RlYCBNb2RpZmljYXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIGBDT05GSUdfU0xVQmAgaXMgZW5hYmxlZCBieSBkZWZhdWx0LCBzbyB3ZSYjMzk7cmUgZ29vZCB0aGVyZS4gVGhlIGNvcmUgcXVlc3Rpb24gaXMgd2hldGhlciB0aGlzIGNoYW5nZSB3YXJyYW50cyBmdXp6aW5nLiBXZSYjMzk7cmUgbG9va2luZyBhdCBpbnB1dCB2YWxpZGF0aW9uIGFkZGVkIHRvIGBfX19rbWFsbG9jX2xhcmdlX25vZGVgLiBMZXQmIzM5O3MgcmUtcmVhZCB0aGUgZnV6emluZyBndWlkZWxpbmVzLiBXZSBoYXZlIHRvIGNvbnNpZGVyIHdoZXRoZXIgdGhpcyBjaGFuZ2UgaXMgd29ydGggZnV6emluZy4KCk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpZGVudGlmeSB0aGUgbm9uLXN0YXRpYyBlbnRyeXBvaW50IGZ1bmN0aW9ucyB0byBiZSBmdXp6ZWQgYXMgRm9jdXNTeW1ib2xzLiBPa2F5LCBzbyB3ZSBoYXZlIGBfX2ttYWxsb2NfbGFyZ2Vfbm9wcm9mYCBhbmQgYF9fa21hbGxvY19sYXJnZV9ub2RlX25vcHJvZmAuIEFyZSB0aGVzZSBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucz8gTm8sIGJlY2F1c2UgYF9fa21hbGxvY19sYXJnZV9ub3Byb2ZgIGhhbmRsZXMgYWxsb2NhdGlvbnMgKmxhcmdlciogdGhhbiB0aGUgc2xhYiBjYWNoZXMuIFRoZXJlZm9yZSwgdGhvc2UgYXJlIHBlcmZlY3QuIEdvb2QuCgpOb3csIGNvbnNpZGVyaW5nIHRoZSBgV29ydGhGdXp6aW5nYCBjcml0ZXJpYS4uLiBUaGlzIGlzbiYjMzk7dCBqdXN0IGRvY3VtZW50YXRpb24gb3IgZGVjb3JhdGl2ZSwgaXQgZnVuY3Rpb25hbGx5IGFsdGVycyBleGVjdXRpb24gZmxvdywgYnkgdmFsaWRhdGluZyBpbnB1dC4gSXQmIzM5O3MgYSByZWFjaGFibGUgcGFydCBvZiB0aGUgU0xVQiBhbGxvY2F0b3IuIFRoZXJlZm9yZSwgdGhlIGNoYW5nZSBkb2VzIG1lcml0IGZ1enppbmcuCgpBbHJpZ2h0LCBzbyBgV29ydGhGdXp6aW5nYCBpcyBkZWZpbml0ZWx5IGB0cnVlYC4gTm93LCBsZXQmIzM5O3MgbGlzdCBvdXIgYEZvY3VzU3ltYm9sc2AgYWdhaW46IGBfX2ttYWxsb2NfbGFyZ2Vfbm9wcm9mYCBhbmQgYF9fa21hbGxvY19sYXJnZV9ub2RlX25vcHJvZmAuCgpGaW5hbGx5LCBmb3IgYEVuYWJsZUNvbmZpZ3NgLCB3ZSBoYXZlIGBTTFVCYCwgd2hpY2ggaXMgYWxyZWFkeSBlbmFibGVkLiBMb29raW5nIGF0IGBtbS9LY29uZmlnYCwgaXQmIzM5O3MgY29uZmlybWVkLiBOb3RoaW5nIGVsc2Ugc3BlY2lmaWMgaXMgcmVxdWlyZWQsIGJ1dCB3ZSBjYW4gZGVmaW5pdGVseSBpbmNsdWRlIGBTTFVCYCBpbiB0aGUgYEVuYWJsZUNvbmZpZ3NgLgoKQmVmb3JlIGNhbGxpbmcgYHNldC1yZXN1bHRzYCwgbGV0JiMzOTtzIHZlcmlmeSBhZ2FpbjogYFdvcnRoRnV6emluZz10cnVlYCwgYEZvY3VzU3ltYm9sc2AgaXMgYF9fa21hbGxvY19sYXJnZV9ub3Byb2ZgIGFuZCBgX19rbWFsbG9jX2xhcmdlX25vZGVfbm9wcm9mYCwgYW5kIGBFbmFibGVDb25maWdzYCBjYW4gaW5jbHVkZSBgU0xVQmAgKGFsdGhvdWdoIGl0JiMzOTtzIGFscmVhZHkgZW5hYmxlZCBieSBkZWZhdWx0KS4gRG9uZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDI6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NMVUImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2ttYWxsb2NfbGFyZ2Vfbm9wcm9mJiMzNDssCiAgICAmIzM0O19fa21hbGxvY19sYXJnZV9ub2RlX25vcHJvZiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb3JlIG1lbW9yeSBhbGxvY2F0aW9uIGxvZ2ljIGluIHRoZSBTTFVCIGFsbG9jYXRvciAobW0vc2x1Yi5jKSwgYWRkaW5nIGEgc2l6ZSBib3VuZGFyeSBjaGVjayBhZ2FpbnN0IEtNQUxMT0NfTUFYX1NJWkUgaW4gX19fa21hbGxvY19sYXJnZV9ub2RlKCkgdG8gcHJldmVudCBvdmVyc2l6ZWQgb3JkZXIgY2FsY3VsYXRpb25zIGFuZCBncmFjZWZ1bGx5IGZhaWwgd2l0aCBhIHdhcm5pbmcuIFRoaXMgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIGFuZCBhZmZlY3RzIGxhcmdlIGttYWxsb2MgYWxsb2NhdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NMVUImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2ttYWxsb2NfbGFyZ2Vfbm9wcm9mJiMzNDssCiAgICAmIzM0O19fa21hbGxvY19sYXJnZV9ub2RlX25vcHJvZiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb3JlIG1lbW9yeSBhbGxvY2F0aW9uIGxvZ2ljIGluIHRoZSBTTFVCIGFsbG9jYXRvciAobW0vc2x1Yi5jKSwgYWRkaW5nIGEgc2l6ZSBib3VuZGFyeSBjaGVjayBhZ2FpbnN0IEtNQUxMT0NfTUFYX1NJWkUgaW4gX19fa21hbGxvY19sYXJnZV9ub2RlKCkgdG8gcHJldmVudCBvdmVyc2l6ZWQgb3JkZXIgY2FsY3VsYXRpb25zIGFuZCBncmFjZWZ1bGx5IGZhaWwgd2l0aCBhIHdhcm5pbmcuIFRoaXMgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIGFuZCBhZmZlY3RzIGxhcmdlIGttYWxsb2MgYWxsb2NhdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDAyOjUyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDI6NTI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgc2FuaXR5IGNoZWNrIChgV0FSTl9PTl9PTkNFX0dGUChzaXplIFx1MDAzZSBLTUFMTE9DX01BWF9TSVpFLCBmbGFncylgKSBpbiBgX19fa21hbGxvY19sYXJnZV9ub2RlKClgIHRvIHJlamVjdCBhbGxvY2F0aW9ucyBleGNlZWRpbmcgYEtNQUxMT0NfTUFYX1NJWkVgIGJ5IHJldHVybmluZyBgTlVMTGAuXG5cblRoaXMgbW9kaWZpY2F0aW9uIG9ubHkgYWRkcyBkZWZlbnNpdmUgcGFyYW1ldGVyIHZhbGlkYXRpb24gdG8gdGhlIFNMVUIgbGFyZ2UgYWxsb2NhdGlvbiBwYXRoLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UsIGV4cG9zZSwgb3IgbWFuaXB1bGF0ZSB1bmluaXRpYWxpemVkIG1lbW9yeSwgZG9lcyBub3QgYWx0ZXIgYnVmZmVyIGluaXRpYWxpemF0aW9uIG9yIHN0cnVjdCBwYWRkaW5nLCBhbmQgZG9lcyBub3QgdG91Y2ggZGF0YSBwYXNzZWQgdG8gdXNlciBzcGFjZS4gQW55IGJ1Z3MgcmVsYXRlZCB0byBmYWlsZWQgYWxsb2NhdGlvbnMgKHN1Y2ggYXMgbWlzc2luZyBOVUxMLWNoZWNrcyBpbiBjYWxsZXJzKSBhcmUgc3RhbmRhcmQgbWVtb3J5IGFsbG9jYXRpb24gZmFpbHVyZSBoYW5kbGluZyBjYXVnaHQgYnkgc3RhbmRhcmQgdGVzdGluZy9LQVNBTi4gVGhlcmVmb3JlLCBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDcyOGQ5MmY5MDFmN2E1MjdjY2IwMTQzNTQ1YjRiMjllZjQzOWE3ZWEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEF1ZyAzMSAwMjo1MjoxNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL21tL3NsdWIuYyBiL21tL3NsdWIuYwppbmRleCBmOWI1NmNiNDM5ZTcwLi4yM2U1N2E4ZmU1NWI0IDEwMDY0NAotLS0gYS9tbS9zbHViLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vc2x1Yi5jCkBAIC01MzQyLDcgJiM0Mzs1MzQyLDEyIEBAIHN0YXRpYyB2b2lkICpfX19rbWFsbG9jX2xhcmdlX25vZGUoc2l6ZV90IHNpemUsIGdmcF90IGZsYWdzLCBpbnQgbm9kZSkKIHsKIAlzdHJ1Y3QgcGFnZSAqcGFnZTsKIAl2b2lkICpwdHIgPSBOVUxMOwotCXVuc2lnbmVkIGludCBvcmRlciA9IGdldF9vcmRlcihzaXplKTsKJiM0MzsJdW5zaWduZWQgaW50IG9yZGVyOwomIzQzOwomIzQzOwlpZiAoV0FSTl9PTl9PTkNFX0dGUChzaXplICZndDsgS01BTExPQ19NQVhfU0laRSwgZmxhZ3MpKQomIzQzOwkJcmV0dXJuIE5VTEw7CiYjNDM7CiYjNDM7CW9yZGVyID0gZ2V0X29yZGVyKHNpemUpOwogCiAJaWYgKHVubGlrZWx5KGZsYWdzICZhbXA7IEdGUF9TTEFCX0JVR19NQVNLKSkKIAkJZmxhZ3MgPSBrbWFsbG9jX2ZpeF9mbGFncyhmbGFncyk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwMjo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTA1CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTk1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE1lbW9yeSBBbGxvY2F0aW9uIENoYW5nZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0JiMzOTtzIHNwZWNpZmljYWxseSB0b3VjaGluZyBgbW0vc2x1Yi5jYCwgYW5kIG1vcmUgcHJlY2lzZWx5LCB0aGUgYF9fX2ttYWxsb2NfbGFyZ2Vfbm9kZWAgZnVuY3Rpb24uIFRoaXMgaXMgc2lnbmlmaWNhbnQgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIGhhbmRsZXMgbGFyZ2Uga2VybmVsIG1lbW9yeSBhbGxvY2F0aW9ucyB3aXRoaW4gdGhlIFNMVUIgYWxsb2NhdG9yLiBNeSBpbml0aWFsIG9ic2VydmF0aW9uIGlzIHRoYXQgdGhleSYjMzk7dmUgaW50cm9kdWNlZCBhIGNoZWNrIHJlbGF0ZWQgdG8gYEtNQUxMT0NfTUFYX1NJWkVgIGJlZm9yZSBjYWxjdWxhdGluZyB0aGUgYWxsb2NhdGlvbiBvcmRlci4KClRoZSBvcmlnaW5hbCBjb2RlIGRpcmVjdGx5IGNhbGN1bGF0ZWQgdGhlIGBvcmRlcmAgdXNpbmcgYGdldF9vcmRlcihzaXplKWAuIE5vdywgdGhlcmUmIzM5O3MgYSBjb25kaXRpb25hbCBjaGVjazogYGlmIChXQVJOX09OX09OQ0VfR0ZQKHNpemUgJmd0OyBLTUFMTE9DX01BWF9TSVpFLCBmbGFncykpIHJldHVybiBOVUxMO2AgYmVmb3JlIGRldGVybWluaW5nIHRoZSBvcmRlci4gVGhpcyBpcyBhIGNydWNpYWwgYWRkaXRpb24uIEl0IGFwcGVhcnMgdGhlIGludGVudCBpcyB0byBwcmV2ZW50IGFsbG9jYXRpbmcgbWVtb3J5IHNpemVzIGV4Y2VlZGluZyBhIGRlZmluZWQgbWF4aW11bSwgYEtNQUxMT0NfTUFYX1NJWkVgLCB3aGljaCBwcm9iYWJseSBoYXMgaW1wbGljYXRpb25zIGZvciBTTFVCJiMzOTtzIGludGVybmFsIHN0cnVjdHVyZXMgb3IgZnJhZ21lbnRhdGlvbiBpc3N1ZXMgd2l0aCBleHRyZW1lbHkgbGFyZ2UgYWxsb2NhdGlvbnMuIEEgd2FybmluZyBpcyB0cmlnZ2VyZWQgaWYgdGhpcyBjb25kaXRpb24gb2NjdXJzLCBwcm9iYWJseSB0byBhbGVydCBkZXZlbG9wZXJzIGFib3V0IGluY29ycmVjdCB1c2FnZS4KCkkmIzM5O2xsIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBkZWZpbml0aW9uIG9mIGBLTUFMTE9DX01BWF9TSVpFYCB0byB1bmRlcnN0YW5kIHRoZSByYXRpb25hbGUgYmVoaW5kIHRoaXMgbGltaXQgYW5kIHdoYXQgdGhlIGltcGxpY2F0aW9ucyBhcmUgZm9yIGFsbG9jYXRpb24gYmVoYXZpb3IuIEFsc28sIHRoZSBga21hbGxvY19maXhfZmxhZ3NgIGNhbGwgaXMgc3RpbGwgcHJlc2VudCwgc28gSSBzaG91bGQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgZmxhZyBpbnRlcmFjdGlvbnMgZHVlIHRvIHRoaXMgY2hlY2suIEkgYWxzbyBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5IHRoaXMgd2FzIGFkZGVkLCBhcmUgd2UgdHJ5aW5nIHRvIHByZXZlbnQgcG90ZW50aWFsIGRlbmlhbC1vZi1zZXJ2aWNlLCBvdXQgb2YgbWVtb3J5IGNvbmRpdGlvbnMsIG9yIG1heWJlIGVuZm9yY2Ugc29tZSBhcmNoaXRlY3R1cmFsIGNvbnN0cmFpbnRzPyBJIHNob3VsZCByZXZpZXcgdGhlIGNvbW1pdCBtZXNzYWdlIGFuZCBzdXJyb3VuZGluZyBjb2RlIHRvIGdldCBhIGNvbXBsZXRlIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDAyOjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fX2ttYWxsb2NfbGFyZ2Vfbm9kZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9zbHViLmM9NTMzMj11bnNpZ25lZCBpbnQga21lbV9jYWNoZV9zaGVhZl9zaXplKHN0cnVjdCBzbGFiX3NoZWFmICpzaGVhZilcbi0tXG5tbS9zbHViLmMtNTM0MC0gKi9cbm1tL3NsdWIuYzo1MzQxOnN0YXRpYyB2b2lkICpfX19rbWFsbG9jX2xhcmdlX25vZGUoc2l6ZV90IHNpemUsIGdmcF90IGZsYWdzLCBpbnQgbm9kZSlcbm1tL3NsdWIuYy01MzQyLXtcbi0tXG5tbS9zbHViLmM9NTM3OD12b2lkICpfX2ttYWxsb2NfbGFyZ2Vfbm9wcm9mKHNpemVfdCBzaXplLCBnZnBfdCBmbGFncylcbm1tL3NsdWIuYy01Mzc5LXtcbm1tL3NsdWIuYzo1MzgwOlx0dm9pZCAqcmV0ID0gX19fa21hbGxvY19sYXJnZV9ub2RlKHNpemUsIGZsYWdzLCBOVU1BX05PX05PREUpO1xubW0vc2x1Yi5jLTUzODEtXG4tLVxubW0vc2x1Yi5jPTUzODg9dm9pZCAqX19rbWFsbG9jX2xhcmdlX25vZGVfbm9wcm9mKHNpemVfdCBzaXplLCBnZnBfdCBmbGFncywgaW50IG5vZGUpXG5tbS9zbHViLmMtNTM4OS17XG5tbS9zbHViLmM6NTM5MDpcdHZvaWQgKnJldCA9IF9fX2ttYWxsb2NfbGFyZ2Vfbm9kZShzaXplLCBmbGFncywgbm9kZSk7XG5tbS9zbHViLmMtNTM5MS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDI6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk3NwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGl2aW5nIGludG8gYG1tL3NsdWIuY2AqKgoKT2theSwgSSBuZWVkIHRvIGdldCBpbnRvIHRoZSBuaXR0eS1ncml0dHkgb2YgdGhlIFNMVUIgYWxsb2NhdG9yLiBMZXQmIzM5O3Mgc3RhcnQgYnkgbG9va2luZyBhdCBgbW0vc2x1Yi5jYCDigJMgdGhhdCYjMzk7cyB3aGVyZSB0aGUgY29yZSBpbXBsZW1lbnRhdGlvbiByZXNpZGVzLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgYXJvdW5kIGxpbmUgNTM0MC4gVGhhdCBsb2NhdGlvbiBpcyB1c3VhbGx5IGluIHRoZSB2aWNpbml0eSBvZiBjcml0aWNhbCBTTFVCIGZ1bmN0aW9ucywgbGlrZWx5IHJlbGF0ZWQgdG8gb2JqZWN0IGFsbG9jYXRpb24sIGZyZWVpbmcsIG9yIHNsYWIgbWFuYWdlbWVudC4gSSBhbnRpY2lwYXRlIGZpbmRpbmcgY29kZSBkZWFsaW5nIHdpdGggY2FjaGUgc3RydWN0dXJlIHRyYXZlcnNhbCBvciBvYmplY3QgaW5pdGlhbGl6YXRpb24gcHJvY2VkdXJlcyBpbiB0aGF0IHJlZ2lvbi4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgZnVuZGFtZW50YWwgYWxsb2NhdGlvbiBmbG93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwMjo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O21tL3NsdWIuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDUzMzUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7NTMzNTpcdH1cbjUzMzY6XHQvKlxuNTMzNzpcdCAqIFRvIGF2b2lkIHVubmVjZXNzYXJ5IG92ZXJoZWFkLCB3ZSBwYXNzIHRocm91Z2ggbGFyZ2UgYWxsb2NhdGlvbiByZXF1ZXN0c1xuNTMzODpcdCAqIGRpcmVjdGx5IHRvIHRoZSBwYWdlIGFsbG9jYXRvci4gV2UgdXNlIF9fR0ZQX0NPTVAsIGJlY2F1c2Ugd2Ugd2lsbCBuZWVkIHRvXG41MzM5Olx0ICoga25vdyB0aGUgYWxsb2NhdGlvbiBvcmRlciB0byBmcmVlIHRoZSBwYWdlcyBwcm9wZXJseSBpbiBrZnJlZS5cbjUzNDA6XHQgKi9cbjUzNDE6XHRzdGF0aWMgdm9pZCAqX19fa21hbGxvY19sYXJnZV9ub2RlKHNpemVfdCBzaXplLCBnZnBfdCBmbGFncywgaW50IG5vZGUpXG41MzQyOlx0e1xuNTM0MzpcdFx0c3RydWN0IHBhZ2UgKnBhZ2U7XG41MzQ0Olx0XHR2b2lkICpwdHIgPSBOVUxMO1xuNTM0NTpcdFx0dW5zaWduZWQgaW50IG9yZGVyO1xuNTM0NjpcdFxuNTM0NzpcdFx0aWYgKFdBUk5fT05fT05DRV9HRlAoc2l6ZSBcdTAwM2UgS01BTExPQ19NQVhfU0laRSwgZmxhZ3MpKVxuNTM0ODpcdFx0XHRyZXR1cm4gTlVMTDtcbjUzNDk6XHRcbjUzNTA6XHRcdG9yZGVyID0gZ2V0X29yZGVyKHNpemUpO1xuNTM1MTpcdFxuNTM1MjpcdFx0aWYgKHVubGlrZWx5KGZsYWdzIFx1MDAyNiBHRlBfU0xBQl9CVUdfTUFTSykpXG41MzUzOlx0XHRcdGZsYWdzID0ga21hbGxvY19maXhfZmxhZ3MoZmxhZ3MpO1xuNTM1NDpcdFxuNTM1NTpcdFx0ZmxhZ3MgfD0gX19HRlBfQ09NUDtcbjUzNTY6XHRcbjUzNTc6XHRcdGlmIChub2RlID09IE5VTUFfTk9fTk9ERSlcbjUzNTg6XHRcdFx0cGFnZSA9IGFsbG9jX2Zyb3plbl9wYWdlc19ub3Byb2YoZmxhZ3MsIG9yZGVyKTtcbjUzNTk6XHRcdGVsc2VcbjUzNjA6XHRcdFx0cGFnZSA9IF9fYWxsb2NfZnJvemVuX3BhZ2VzX25vcHJvZihmbGFncywgb3JkZXIsIG5vZGUsIE5VTEwsXG41MzYxOlx0XHRcdFx0XHRcdFx0ICAgQUxMT0NfREVGQVVMVCk7XG41MzYyOlx0XG41MzYzOlx0XHRpZiAocGFnZSkge1xuNTM2NDpcdFx0XHRwdHIgPSBwYWdlX2FkZHJlc3MocGFnZSk7XG41MzY1Olx0XHRcdG1vZF9scnV2ZWNfcGFnZV9zdGF0ZShwYWdlLCBOUl9TTEFCX1VOUkVDTEFJTUFCTEVfQixcbjUzNjY6XHRcdFx0XHRcdCAgICAgIFBBR0VfU0laRSBcdTAwM2NcdTAwM2Mgb3JkZXIpO1xuNTM2NzpcdFx0XHRfX1NldFBhZ2VMYXJnZUttYWxsb2MocGFnZSk7XG41MzY4Olx0XHR9XG41MzY5Olx0XG41MzcwOlx0XHRwdHIgPSBrYXNhbl9rbWFsbG9jX2xhcmdlKHB0ciwgc2l6ZSwgZmxhZ3MpO1xuNTM3MTpcdFx0LyogQXMgcHRyIG1pZ2h0IGdldCB0YWdnZWQsIGNhbGwga21lbWxlYWsgaG9vayBhZnRlciBLQVNBTi4gKi9cbjUzNzI6XHRcdGttZW1sZWFrX2FsbG9jKHB0ciwgc2l6ZSwgMSwgZmxhZ3MpO1xuNTM3MzpcdFx0a21zYW5fa21hbGxvY19sYXJnZShwdHIsIHNpemUsIGZsYWdzKTtcbjUzNzQ6XHRcbjUzNzU6XHRcdHJldHVybiBwdHI7XG41Mzc2Olx0fVxuNTM3NzpcdFxuNTM3ODpcdHZvaWQgKl9fa21hbGxvY19sYXJnZV9ub3Byb2Yoc2l6ZV90IHNpemUsIGdmcF90IGZsYWdzKVxuNTM3OTpcdHtcbjUzODA6XHRcdHZvaWQgKnJldCA9IF9fX2ttYWxsb2NfbGFyZ2Vfbm9kZShzaXplLCBmbGFncywgTlVNQV9OT19OT0RFKTtcbjUzODE6XHRcbjUzODI6XHRcdHRyYWNlX2ttYWxsb2MoX1JFVF9JUF8sIHJldCwgc2l6ZSwgUEFHRV9TSVpFIFx1MDAzY1x1MDAzYyBnZXRfb3JkZXIoc2l6ZSksXG41MzgzOlx0XHRcdCAgICAgIGZsYWdzLCBOVU1BX05PX05PREUpO1xuNTM4NDpcdFx0cmV0dXJuIHJldDtcbjUzODU6XHR9XG41Mzg2Olx0RVhQT1JUX1NZTUJPTChfX2ttYWxsb2NfbGFyZ2Vfbm9wcm9mKTtcbjUzODc6XHRcbjUzODg6XHR2b2lkICpfX2ttYWxsb2NfbGFyZ2Vfbm9kZV9ub3Byb2Yoc2l6ZV90IHNpemUsIGdmcF90IGZsYWdzLCBpbnQgbm9kZSlcbjUzODk6XHR7XG41MzkwOlx0XHR2b2lkICpyZXQgPSBfX19rbWFsbG9jX2xhcmdlX25vZGUoc2l6ZSwgZmxhZ3MsIG5vZGUpO1xuNTM5MTpcdFxuNTM5MjpcdFx0dHJhY2Vfa21hbGxvYyhfUkVUX0lQXywgcmV0LCBzaXplLCBQQUdFX1NJWkUgXHUwMDNjXHUwMDNjIGdldF9vcmRlcihzaXplKSxcbjUzOTM6XHRcdFx0ICAgICAgZmxhZ3MsIG5vZGUpO1xuNTM5NDpcdFx0cmV0dXJuIHJldDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDI6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDExMAoJCQkJCQkJb3V0cHV0OiAxNzEKCQkJCQkJCXRob3VnaHRzOiAyOTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgX19fa21hbGxvY19sYXJnZV9ub2RlYCBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgZG93biB0aGlzIHBhdGNoLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29yZSBjaGFuZ2Ugd2l0aGluIGBfX19rbWFsbG9jX2xhcmdlX25vZGVgLiBJdCBhcHBlYXJzIHRoZSBhdXRob3IgaGFzIGFkZGVkIGEgc2FmZXR5IGNoZWNrOiBgaWYgKFdBUk5fT05fT05DRV9HRlAoc2l6ZSAmZ3Q7IEtNQUxMT0NfTUFYX1NJWkUsIGZsYWdzKSkgcmV0dXJuIE5VTEw7YCBiZWZvcmUgY2FsY3VsYXRpbmcgdGhlIGBvcmRlcmAuIFRoZSBtb3RpdmF0aW9uIGhlcmUgaXMgY2xlYXI6IGl0JiMzOTtzIGEgY3JpdGljYWwgZ3VhcmRyYWlsLiBCeSBleHBsaWNpdGx5IGNoZWNraW5nIGlmIHRoZSByZXF1ZXN0ZWQgYHNpemVgIGV4Y2VlZHMgYEtNQUxMT0NfTUFYX1NJWkVgLCBvciBwb3RlbnRpYWxseSBjcmVhdGVzIGEgdmFsdWUgdGhhdCBvdmVyZmxvd3MgdGhlIGNhbGN1bGF0ZWQgYG9yZGVyYCBmcm9tIGBnZXRfb3JkZXIoKWAsIHRoZSBjb2RlIG5vdyBjbGVhbmx5IHJlamVjdHMgdGhlIGFsbG9jYXRpb24gYW5kIHJldHVybnMgYE5VTExgIHdpdGggYSB3YXJuaW5nLiBUaGlzIGlzIHByZWZlcmFibGUgdG8gbGV0dGluZyB0aGUgc3Vic2VxdWVudCBhbGxvY2F0aW9uIGxvZ2ljIGluIGBhbGxvY19wYWdlc2AgY2hva2Ugb24gYW4gZXhjZXNzaXZlbHkgbGFyZ2UgYG9yZGVyYCBvciBvdGhlcndpc2UgY29tcHV0ZSBhbiBpbnZhbGlkIG9yZGVyLgoKTm93LCBJIG5lZWQgdG8gZXZhbHVhdGUgdGhlIGltcGFjdCBmcm9tIGEgbWVtb3J5IHNhZmV0eSBwZXJzcGVjdGl2ZS4gRG9lcyB0aGlzIGNoYW5nZSBpbnRyb2R1Y2UgYW55IHJpc2tzPyBMZXQmIzM5O3MgZ28gdGhyb3VnaCB0aGUgY2hlY2tsaXN0OgoKMS4gICoqS2VybmVsIFN0cnVjdHVyZXMgdG8gVXNlciBTcGFjZToqKiBOby4gVGhpcyBwYXRjaCBkb2VzbiYjMzk7dCBpbnZvbHZlIGFueSBjaGFuZ2VzIHRoYXQgd291bGQgYWZmZWN0IGtlcm5lbCBzdHJ1Y3R1cmVzIHBhc3NlZCB0byB1c2VyIHNwYWNlLiBUaGVyZSYjMzk7cyBubyBjaGFuY2Ugb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgZXhwb3NlZCBoZXJlLgoyLiAgKipVbmluaXRpYWxpemVkIFZhcmlhYmxlIFVzYWdlIGluIENvbmRpdGlvbmFsIExvZ2ljOioqIE5vLiBUaGUgdmFyaWFibGVzIGJlaW5nIGNoZWNrZWQsIGBzaXplYCBhbmQgYGZsYWdzYCwgYXJlIGJvdGggaW5wdXRzIHRvIHRoZSBmdW5jdGlvbi4gYG9yZGVyYCBpcyBpbml0aWFsaXplZCAqYWZ0ZXIqIHRoZSBzYWZldHkgY2hlY2ssIHNvIHRoZXJlJiMzOTtzIG5vIHdheSB0aGlzIGludHJvZHVjZXMgYSByaXNrIG9mIGNvbmRpdGlvbmFsIGJyYW5jaGluZyBvbiB1bmluaXRpYWxpemVkIGRhdGEuCjMuICAqKkNvbXBsZXggRGF0YSBTdHJ1Y3R1cmVzOioqIE5vLiBUaGlzIGlzIGEgdmVyeSB0YXJnZXRlZCBwYXRjaC4gSXQmIzM5O3Mgbm90IG1vZGlmeWluZyBvciBpbnRyb2R1Y2luZyBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aXRoIHRoZSBwb3RlbnRpYWwgZm9yIHVuaW5pdGlhbGl6ZWQgZmllbGRzLgo0LiAgKipCb3VuZHMgQ2hlY2tzL1VuaW5pdGlhbGl6ZWQgTWVtb3J5IEV4cG9zdXJlOioqIE5vLiBUaGlzIGlzIHNwZWNpZmljYWxseSBhIHNpemUgdmFsaWRhdGlvbi4gVGhlIGNoYW5nZSBkb2VzICpub3QqIGludHJvZHVjZSBhbnkgbmV3IGJvdW5kcyBjaGVja3MsIG5vciBkb2VzIGl0IGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gSXQgYWN0cyBhcyBhIHByZXZlbnRhdGl2ZSBtZWFzdXJlLgoKVGhlcmVmb3JlLCBnaXZlbiBteSB1bmRlcnN0YW5kaW5nLCBgTmVlZHNLTVNBTmAgc2hvdWxkIGRlZmluaXRpdmVseSBiZSBgZmFsc2VgLiBUaGlzIGlzIGEgc3RyYWlnaHRmb3J3YXJkLCBwb3NpdGl2ZSBjaGFuZ2UuIE5vdywgbGV0JiMzOTtzIGFzc2VtYmxlIHRoZSBqdXN0aWZpY2F0aW9uIGFuZCBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDAyOjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBzYW5pdHkgY2hlY2sgKGBXQVJOX09OX09OQ0VfR0ZQKHNpemUgXHUwMDNlIEtNQUxMT0NfTUFYX1NJWkUsIGZsYWdzKWApIGluIGBfX19rbWFsbG9jX2xhcmdlX25vZGUoKWAgdG8gcmVqZWN0IGFsbG9jYXRpb25zIGV4Y2VlZGluZyBgS01BTExPQ19NQVhfU0laRWAgYnkgcmV0dXJuaW5nIGBOVUxMYC5cblxuVGhpcyBtb2RpZmljYXRpb24gb25seSBhZGRzIGRlZmVuc2l2ZSBwYXJhbWV0ZXIgdmFsaWRhdGlvbiB0byB0aGUgU0xVQiBsYXJnZSBhbGxvY2F0aW9uIHBhdGguIEl0IGRvZXMgbm90IGludHJvZHVjZSwgZXhwb3NlLCBvciBtYW5pcHVsYXRlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBkb2VzIG5vdCBhbHRlciBidWZmZXIgaW5pdGlhbGl6YXRpb24gb3Igc3RydWN0IHBhZGRpbmcsIGFuZCBkb2VzIG5vdCB0b3VjaCBkYXRhIHBhc3NlZCB0byB1c2VyIHNwYWNlLiBBbnkgYnVncyByZWxhdGVkIHRvIGZhaWxlZCBhbGxvY2F0aW9ucyAoc3VjaCBhcyBtaXNzaW5nIE5VTEwtY2hlY2tzIGluIGNhbGxlcnMpIGFyZSBzdGFuZGFyZCBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlIGhhbmRsaW5nIGNhdWdodCBieSBzdGFuZGFyZCB0ZXN0aW5nL0tBU0FOLiBUaGVyZWZvcmUsIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBzYW5pdHkgY2hlY2sgKGBXQVJOX09OX09OQ0VfR0ZQKHNpemUgXHUwMDNlIEtNQUxMT0NfTUFYX1NJWkUsIGZsYWdzKWApIGluIGBfX19rbWFsbG9jX2xhcmdlX25vZGUoKWAgdG8gcmVqZWN0IGFsbG9jYXRpb25zIGV4Y2VlZGluZyBgS01BTExPQ19NQVhfU0laRWAgYnkgcmV0dXJuaW5nIGBOVUxMYC5cblxuVGhpcyBtb2RpZmljYXRpb24gb25seSBhZGRzIGRlZmVuc2l2ZSBwYXJhbWV0ZXIgdmFsaWRhdGlvbiB0byB0aGUgU0xVQiBsYXJnZSBhbGxvY2F0aW9uIHBhdGguIEl0IGRvZXMgbm90IGludHJvZHVjZSwgZXhwb3NlLCBvciBtYW5pcHVsYXRlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBkb2VzIG5vdCBhbHRlciBidWZmZXIgaW5pdGlhbGl6YXRpb24gb3Igc3RydWN0IHBhZGRpbmcsIGFuZCBkb2VzIG5vdCB0b3VjaCBkYXRhIHBhc3NlZCB0byB1c2VyIHNwYWNlLiBBbnkgYnVncyByZWxhdGVkIHRvIGZhaWxlZCBhbGxvY2F0aW9ucyAoc3VjaCBhcyBtaXNzaW5nIE5VTEwtY2hlY2tzIGluIGNhbGxlcnMpIGFyZSBzdGFuZGFyZCBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlIGhhbmRsaW5nIGNhdWdodCBieSBzdGFuZGFyZCB0ZXN0aW5nL0tBU0FOLiBUaGVyZWZvcmUsIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDI6NTI6MTQuNzA5ODI3NjI4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTgxMjIwNzA1NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU0xVQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fa21hbGxvY19sYXJnZV9ub3Byb2ZcIixcbiAgICBcIl9fa21hbGxvY19sYXJnZV9ub2RlX25vcHJvZlwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHNhbml0eSBjaGVjayAoYFdBUk5fT05fT05DRV9HRlAoc2l6ZSBcXHUwMDNlIEtNQUxMT0NfTUFYX1NJWkUsIGZsYWdzKWApIGluIGBfX19rbWFsbG9jX2xhcmdlX25vZGUoKWAgdG8gcmVqZWN0IGFsbG9jYXRpb25zIGV4Y2VlZGluZyBgS01BTExPQ19NQVhfU0laRWAgYnkgcmV0dXJuaW5nIGBOVUxMYC5cXG5cXG5UaGlzIG1vZGlmaWNhdGlvbiBvbmx5IGFkZHMgZGVmZW5zaXZlIHBhcmFtZXRlciB2YWxpZGF0aW9uIHRvIHRoZSBTTFVCIGxhcmdlIGFsbG9jYXRpb24gcGF0aC4gSXQgZG9lcyBub3QgaW50cm9kdWNlLCBleHBvc2UsIG9yIG1hbmlwdWxhdGUgdW5pbml0aWFsaXplZCBtZW1vcnksIGRvZXMgbm90IGFsdGVyIGJ1ZmZlciBpbml0aWFsaXphdGlvbiBvciBzdHJ1Y3QgcGFkZGluZywgYW5kIGRvZXMgbm90IHRvdWNoIGRhdGEgcGFzc2VkIHRvIHVzZXIgc3BhY2UuIEFueSBidWdzIHJlbGF0ZWQgdG8gZmFpbGVkIGFsbG9jYXRpb25zIChzdWNoIGFzIG1pc3NpbmcgTlVMTC1jaGVja3MgaW4gY2FsbGVycykgYXJlIHN0YW5kYXJkIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmUgaGFuZGxpbmcgY2F1Z2h0IGJ5IHN0YW5kYXJkIHRlc3RpbmcvS0FTQU4uIFRoZXJlZm9yZSwgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgbWVtb3J5IGFsbG9jYXRpb24gbG9naWMgaW4gdGhlIFNMVUIgYWxsb2NhdG9yIChtbS9zbHViLmMpLCBhZGRpbmcgYSBzaXplIGJvdW5kYXJ5IGNoZWNrIGFnYWluc3QgS01BTExPQ19NQVhfU0laRSBpbiBfX19rbWFsbG9jX2xhcmdlX25vZGUoKSB0byBwcmV2ZW50IG92ZXJzaXplZCBvcmRlciBjYWxjdWxhdGlvbnMgYW5kIGdyYWNlZnVsbHkgZmFpbCB3aXRoIGEgd2FybmluZy4gVGhpcyBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgYW5kIGFmZmVjdHMgbGFyZ2Uga21hbGxvYyBhbGxvY2F0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDI6NTI6MTQuNzA5ODMzMjA4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNTc1Nzg5NzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA3MjhkOTJmOTAxZjdhNTI3Y2NiMDE0MzU0NWI0YjI5ZWY0MzlhN2VhXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gQXVnIDMxIDAyOjUyOjE0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL21tL3NsdWIuYyBiL21tL3NsdWIuY1xcbmluZGV4IGY5YjU2Y2I0MzllNzAuLjIzZTU3YThmZTU1YjQgMTAwNjQ0XFxuLS0tIGEvbW0vc2x1Yi5jXFxuKysrIGIvbW0vc2x1Yi5jXFxuQEAgLTUzNDIsNyArNTM0MiwxMiBAQCBzdGF0aWMgdm9pZCAqX19fa21hbGxvY19sYXJnZV9ub2RlKHNpemVfdCBzaXplLCBnZnBfdCBmbGFncywgaW50IG5vZGUpXFxuIHtcXG4gXFx0c3RydWN0IHBhZ2UgKnBhZ2U7XFxuIFxcdHZvaWQgKnB0ciA9IE5VTEw7XFxuLVxcdHVuc2lnbmVkIGludCBvcmRlciA9IGdldF9vcmRlcihzaXplKTtcXG4rXFx0dW5zaWduZWQgaW50IG9yZGVyO1xcbitcXG4rXFx0aWYgKFdBUk5fT05fT05DRV9HRlAoc2l6ZSBcXHUwMDNlIEtNQUxMT0NfTUFYX1NJWkUsIGZsYWdzKSlcXG4rXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcbitcXHRvcmRlciA9IGdldF9vcmRlcihzaXplKTtcXG4gXFxuIFxcdGlmICh1bmxpa2VseShmbGFncyBcXHUwMDI2IEdGUF9TTEFCX0JVR19NQVNLKSlcXG4gXFx0XFx0ZmxhZ3MgPSBrbWFsbG9jX2ZpeF9mbGFncyhmbGFncyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDAyOjUyOjE1LjA2ODAwNTExMloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6NDI1NzUxNTk1NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU0xVQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fa21hbGxvY19sYXJnZV9ub3Byb2ZcIixcbiAgICBcIl9fa21hbGxvY19sYXJnZV9ub2RlX25vcHJvZlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgbWVtb3J5IGFsbG9jYXRpb24gbG9naWMgaW4gdGhlIFNMVUIgYWxsb2NhdG9yIChtbS9zbHViLmMpLCBhZGRpbmcgYSBzaXplIGJvdW5kYXJ5IGNoZWNrIGFnYWluc3QgS01BTExPQ19NQVhfU0laRSBpbiBfX19rbWFsbG9jX2xhcmdlX25vZGUoKSB0byBwcmV2ZW50IG92ZXJzaXplZCBvcmRlciBjYWxjdWxhdGlvbnMgYW5kIGdyYWNlZnVsbHkgZmFpbCB3aXRoIGEgd2FybmluZy4gVGhpcyBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgYW5kIGFmZmVjdHMgbGFyZ2Uga21hbGxvYyBhbGxvY2F0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNzI4ZDkyZjkwMWY3YTUyN2NjYjAxNDM1NDViNGIyOWVmNDM5YTdlYVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDMxIDAyOjUyOjE0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vc2x1Yi5jIGIvbW0vc2x1Yi5jXG5pbmRleCBmOWI1NmNiNDM5ZTcwLi4yM2U1N2E4ZmU1NWI0IDEwMDY0NFxuLS0tIGEvbW0vc2x1Yi5jXG4rKysgYi9tbS9zbHViLmNcbkBAIC01MzQyLDcgKzUzNDIsMTIgQEAgc3RhdGljIHZvaWQgKl9fX2ttYWxsb2NfbGFyZ2Vfbm9kZShzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3MsIGludCBub2RlKVxuIHtcbiBcdHN0cnVjdCBwYWdlICpwYWdlO1xuIFx0dm9pZCAqcHRyID0gTlVMTDtcbi1cdHVuc2lnbmVkIGludCBvcmRlciA9IGdldF9vcmRlcihzaXplKTtcbitcdHVuc2lnbmVkIGludCBvcmRlcjtcbitcbitcdGlmIChXQVJOX09OX09OQ0VfR0ZQKHNpemUgXHUwMDNlIEtNQUxMT0NfTUFYX1NJWkUsIGZsYWdzKSlcbitcdFx0cmV0dXJuIE5VTEw7XG4rXG4rXHRvcmRlciA9IGdldF9vcmRlcihzaXplKTtcbiBcbiBcdGlmICh1bmxpa2VseShmbGFncyBcdTAwMjYgR0ZQX1NMQUJfQlVHX01BU0spKVxuIFx0XHRmbGFncyA9IGttYWxsb2NfZml4X2ZsYWdzKGZsYWdzKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDAyOjUyOjE1LjA2ODAwNjM4MloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM3NjU5NjkyOTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgS2VybmVsIE1lbW9yeSBBbGxvY2F0aW9uIFBhdGNoKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIExvb2tzIGxpa2Ugd2UncmUgZGVhbGluZyB3aXRoIGEgbW9kaWZpY2F0aW9uIGluIGBtbS9zbHViLmNgLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgX19fa21hbGxvY19sYXJnZV9ub2RlYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCBpbXByZXNzaW9uIGlzIHRoYXQgdGhpcyBmdW5jdGlvbiBsaWtlbHkgaGFuZGxlcyBsYXJnZXIgbWVtb3J5IGFsbG9jYXRpb25zIHdpdGhpbiB0aGUgU0xVQiBhbGxvY2F0b3IuIEknbGwgbmVlZCB0byBjb25maXJtIHRoYXQgYnkgY2hlY2tpbmcgdGhlIHN1cnJvdW5kaW5nIGNvZGUgd2l0aCBgcmVhZC1maWxlYCBvciBgZ3JlcHBlcmAg4oCTIHVuZGVyc3RhbmRpbmcgdGhlIGZ1bmN0aW9uJ3MgYnJvYWRlciBjb250ZXh0IGlzIGNydWNpYWwuXG5cblRoZSBjb3JlIG9mIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gYmUgaW50cm9kdWNpbmcgYSBzaXplIGNoZWNrOiBgV0FSTl9PTl9PTkNFX0dGUChzaXplIFx1MDAzZSBLTUFMTE9DX01BWF9TSVpFLCBmbGFncylgLiBBbmQgdGhlcmUncyBzb21lIHJlYXJyYW5nZW1lbnQuIEl0IGFwcGVhcnMgdG8gYmUgYW4gYWRkaXRpb24gb2YgdGhpcyBjaGVjayBwcmlvciB0byBjYWxjdWxhdGluZyB0aGUgb3JkZXIuIFNvLCBpZiB0aGUgcmVxdWVzdGVkIGBzaXplYCBleGNlZWRzIGBLTUFMTE9DX01BWF9TSVpFYCwgd2hpY2ggSSBhc3N1bWUgaXMgYSBkZWZpbmVkIGNvbnN0YW50IChJJ2xsIGNvbmZpcm0gaXRzIGRlZmluaXRpb24pLCB0aGUgZnVuY3Rpb24gd2lsbCByZXR1cm4gYE5VTExgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0aGlzIGlzIGEgc2FmZWd1YXJkIHRvIHByZXZlbnQgZXhjZXNzaXZlbHkgbGFyZ2UgYWxsb2NhdGlvbiByZXF1ZXN0cyB0aGF0IG1pZ2h0IGNhdXNlIGluc3RhYmlsaXR5IG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IuIFRoaXMgbG9va3MgbGlrZSBhIGdvb2QgY2hlY2sgdG8gYWRkLlxuXG5UaGUgYFdBUk5fT05fT05DRV9HRlBgIG1hY3JvIGlzIGludGVyZXN0aW5nLiBJJ2xsIG5lZWQgdG8gcmV2aWV3IHRoZSBtZWFuaW5nIG9mIHRoZSBgR0ZQYCBmbGFnIGluIHRoaXMgc3BlY2lmaWMgY29udGV4dC4gVGhpcyB3b3VsZCBhbGxvdyBtZSB0byBrbm93IGlmIHRoaXMgc3BlY2lmaWMgbWFjcm8ncyBiZWhhdmlvdXIgaXMgcmVsZXZhbnQgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGNoYW5nZS4gSXMgdGhpcyB3YXJuaW5nIGEgZGVidWcgYWlkPyBEb2VzIGl0IGFmZmVjdCB0aGUgcmV0dXJuIHZhbHVlPyBJcyB0aGlzIHJlbGF0ZWQgdG8gYSBwb3RlbnRpYWwgZGVuaWFsLW9mLXNlcnZpY2UgdnVsbmVyYWJpbGl0eT8gT3IgaXMgaXQgYSBtb3JlIGdlbmVyYWwgc2FmZXR5IG5ldD8gVGltZSB0byBkaWcgZGVlcGVyLiBJJ2xsIGdldCB0aGUgbGF5IG9mIHRoZSBsYW5kLCB0aGVuIGNpcmNsZSBiYWNrIGFuZCBjaGVjayB0aGUgaW1wbGljYXRpb25zIGluIHRoZSBjb250ZXh0IG9mIHRoZSBsYXJnZXIgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjEwOCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwNSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDAyOjUyOjE4LjgzMzk3ODUyMloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5MzY1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJtbS9zbHViLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNTMzNSxcbiAgXCJMaW5lQ291bnRcIjogMzVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiNTMzNTpcXHR9XFxuNTMzNjpcXHQvKlxcbjUzMzc6XFx0ICogVG8gYXZvaWQgdW5uZWNlc3Nhcnkgb3ZlcmhlYWQsIHdlIHBhc3MgdGhyb3VnaCBsYXJnZSBhbGxvY2F0aW9uIHJlcXVlc3RzXFxuNTMzODpcXHQgKiBkaXJlY3RseSB0byB0aGUgcGFnZSBhbGxvY2F0b3IuIFdlIHVzZSBfX0dGUF9DT01QLCBiZWNhdXNlIHdlIHdpbGwgbmVlZCB0b1xcbjUzMzk6XFx0ICoga25vdyB0aGUgYWxsb2NhdGlvbiBvcmRlciB0byBmcmVlIHRoZSBwYWdlcyBwcm9wZXJseSBpbiBrZnJlZS5cXG41MzQwOlxcdCAqL1xcbjUzNDE6XFx0c3RhdGljIHZvaWQgKl9fX2ttYWxsb2NfbGFyZ2Vfbm9kZShzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3MsIGludCBub2RlKVxcbjUzNDI6XFx0e1xcbjUzNDM6XFx0XFx0c3RydWN0IHBhZ2UgKnBhZ2U7XFxuNTM0NDpcXHRcXHR2b2lkICpwdHIgPSBOVUxMO1xcbjUzNDU6XFx0XFx0dW5zaWduZWQgaW50IG9yZGVyO1xcbjUzNDY6XFx0XFxuNTM0NzpcXHRcXHRpZiAoV0FSTl9PTl9PTkNFX0dGUChzaXplIFxcdTAwM2UgS01BTExPQ19NQVhfU0laRSwgZmxhZ3MpKVxcbjUzNDg6XFx0XFx0XFx0cmV0dXJuIE5VTEw7XFxuNTM0OTpcXHRcXG41MzUwOlxcdFxcdG9yZGVyID0gZ2V0X29yZGVyKHNpemUpO1xcbjUzNTE6XFx0XFxuNTM1MjpcXHRcXHRpZiAodW5saWtlbHkoZmxhZ3MgXFx1MDAyNiBHRlBfU0xBQl9CVUdfTUFTSykpXFxuNTM1MzpcXHRcXHRcXHRmbGFncyA9IGttYWxsb2NfZml4X2ZsYWdzKGZsYWdzKTtcXG41MzU0OlxcdFxcbjUzNTU6XFx0XFx0ZmxhZ3MgfD0gX19HRlBfQ09NUDtcXG41MzU2OlxcdFxcbjUzNTc6XFx0XFx0aWYgKG5vZGUgPT0gTlVNQV9OT19OT0RFKVxcbjUzNTg6XFx0XFx0XFx0cGFnZSA9IGFsbG9jX2Zyb3plbl9wYWdlc19ub3Byb2YoZmxhZ3MsIG9yZGVyKTtcXG41MzU5OlxcdFxcdGVsc2VcXG41MzYwOlxcdFxcdFxcdHBhZ2UgPSBfX2FsbG9jX2Zyb3plbl9wYWdlc19ub3Byb2YoZmxhZ3MsIG9yZGVyLCBub2RlLCBOVUxMLFxcbjUzNjE6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgQUxMT0NfREVGQVVMVCk7XFxuNTM2MjpcXHRcXG41MzYzOlxcdFxcdGlmIChwYWdlKSB7XFxuNTM2NDpcXHRcXHRcXHRwdHIgPSBwYWdlX2FkZHJlc3MocGFnZSk7XFxuNTM2NTpcXHRcXHRcXHRtb2RfbHJ1dmVjX3BhZ2Vfc3RhdGUocGFnZSwgTlJfU0xBQl9VTlJFQ0xBSU1BQkxFX0IsXFxuNTM2NjpcXHRcXHRcXHRcXHRcXHQgICAgICBQQUdFX1NJWkUgXFx1MDAzY1xcdTAwM2Mgb3JkZXIpO1xcbjUzNjc6XFx0XFx0XFx0X19TZXRQYWdlTGFyZ2VLbWFsbG9jKHBhZ2UpO1xcbjUzNjg6XFx0XFx0fVxcbjUzNjk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDAyOjUyOjE4LjgzNDI3NDE3MloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIyNDI4OTczODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBMYXJnZSBLTUFMTE9DIEFsbG9jYXRpb25zKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHVzYWdlIHBhdHRlcm5zIG9mIHRoZSBsYXJnZSBrbWFsbG9jIGZ1bmN0aW9ucywgc3BlY2lmaWNhbGx5IGBfX19rbWFsbG9jX2xhcmdlX25vZGVgIG9yIGBfX2ttYWxsb2NfbGFyZ2Vfbm9kZWAuIE15IHByaW1hcnkgb2JqZWN0aXZlIGhlcmUgaXMgdG8gZmlndXJlIG91dCB3aGF0IGNvZGUgcGF0aHMgYXJlIGVtcGxveWluZyB0aGVzZSBwb3RlbnRpYWxseSBsZXNzIGVmZmljaWVudCBhbGxvY2F0aW9uIG1ldGhvZHMuIEknbSBhc3N1bWluZyB0aGF0IHRoZSByZWFzb25zIGZvciB1c2luZyB0aGVzZSBmdW5jdGlvbnMgbWlnaHQgYmUgcGVyZm9ybWFuY2UtcmVsYXRlZCwgbWVtb3J5LXJlbGF0ZWQsIG9yIGJhc2VkIG9uIHNwZWNpZmljIE5VTUEgbm9kZSBhZmZpbml0eS4gVGhlcmVmb3JlLCBpZGVudGlmeWluZyB0aGUgY2FsbGVycyBpcyB0aGUgY3J1Y2lhbCBmaXJzdCBzdGVwLiBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIHRob3NlIGNhbGxzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQ6IHdoYXQgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBiZWluZyBhbGxvY2F0ZWQsIHdoYXQncyB0aGVpciBsaWZldGltZSwgYW5kIHdoeSB0aGUgc3RhbmRhcmQga21hbGxvYyBpc24ndCBzdWZmaWNpZW50LiBUaGlzIGludmVzdGlnYXRpb24gd2lsbCBoZWxwIG1lIGRldGVybWluZSBpZiB0aGUgY3VycmVudCB1c2FnZSBpcyBvcHRpbWFsIG9yIGlmIHRoZXJlJ3Mgcm9vbSBmb3Igb3B0aW1pemF0aW9uLCBwZXJoYXBzIGJ5IGFkanVzdGluZyB0aGUgc2l6ZSB0aHJlc2hvbGRzLCBpbnRyb2R1Y2luZyBjdXN0b20gYWxsb2NhdG9ycywgb3IgYnkgc2ltcGx5IGlkZW50aWZ5aW5nIGFuZCBmaXhpbmcgYW55IGluZWZmaWNpZW5jaWVzIGluIHRoZSBjYWxsaW5nIGNvZGUuIFRoZSBnb2FsIGlzIHRvIGVpdGhlciBqdXN0aWZ5IHRoZSBjdXJyZW50IHVzYWdlIG9yIHN1Z2dlc3QgaW1wcm92ZW1lbnRzLCBkZXBlbmRpbmcgb24gd2hhdCBJIHVuY292ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyMjUsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDAyOjUyOjIxLjA3NzE3NDg1NVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTM5ODczNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX19rbWFsbG9jX2xhcmdlX25vZGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vc2x1Yi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL3NsdWIuYz01MzMyPXVuc2lnbmVkIGludCBrbWVtX2NhY2hlX3NoZWFmX3NpemUoc3RydWN0IHNsYWJfc2hlYWYgKnNoZWFmKVxcbi0tXFxubW0vc2x1Yi5jLTUzNDAtICovXFxubW0vc2x1Yi5jOjUzNDE6c3RhdGljIHZvaWQgKl9fX2ttYWxsb2NfbGFyZ2Vfbm9kZShzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3MsIGludCBub2RlKVxcbm1tL3NsdWIuYy01MzQyLXtcXG4tLVxcbm1tL3NsdWIuYz01Mzc4PXZvaWQgKl9fa21hbGxvY19sYXJnZV9ub3Byb2Yoc2l6ZV90IHNpemUsIGdmcF90IGZsYWdzKVxcbm1tL3NsdWIuYy01Mzc5LXtcXG5tbS9zbHViLmM6NTM4MDpcXHR2b2lkICpyZXQgPSBfX19rbWFsbG9jX2xhcmdlX25vZGUoc2l6ZSwgZmxhZ3MsIE5VTUFfTk9fTk9ERSk7XFxubW0vc2x1Yi5jLTUzODEtXFxuLS1cXG5tbS9zbHViLmM9NTM4OD12b2lkICpfX2ttYWxsb2NfbGFyZ2Vfbm9kZV9ub3Byb2Yoc2l6ZV90IHNpemUsIGdmcF90IGZsYWdzLCBpbnQgbm9kZSlcXG5tbS9zbHViLmMtNTM4OS17XFxubW0vc2x1Yi5jOjUzOTA6XFx0dm9pZCAqcmV0ID0gX19fa21hbGxvY19sYXJnZV9ub2RlKHNpemUsIGZsYWdzLCBub2RlKTtcXG5tbS9zbHViLmMtNTM5MS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDI6NTI6MjEuMTIyNTc2ODMyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjI1NDcxMzIxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIEtlcm5lbCBNZW1vcnkgQWxsb2NhdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gdHJhY2UgdGhlIGV4ZWN1dGlvbiBwYXRoIG9mIGxhcmdlIG1lbW9yeSBhbGxvY2F0aW9ucyBpbiB0aGUga2VybmVsLiBJIHdhbnQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyBgX19rbWFsbG9jX2xhcmdlX25vcHJvZmAgYW5kIGBfX2ttYWxsb2NfbGFyZ2Vfbm9kZV9ub3Byb2ZgIGFyZSB1dGlsaXplZCwgYW5kIEknbSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiBob3cgdGhlIGtlcm5lbCBoYW5kbGVzIGFsbG9jYXRpb24gc2l6ZXMgZXhjZWVkaW5nIGBLTUFMTE9DX01BWF9TSVpFYC4gSXQncyBhbHNvIGNydWNpYWwgdG8gZmlndXJlIG91dCB0aGUgYmVoYXZpb3Igb2YgYGdldF9vcmRlcmAgd2hlbiBwcmVzZW50ZWQgd2l0aCBleGNlc3NpdmVseSBsYXJnZSBpbnB1dHMgYW5kIHVuZGVyc3RhbmQgdGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhlIGFkZGl0aW9uIG9mIHRoaXMgcGFydGljdWxhciBzaXplIGNoZWNrLiBJJ20ga2VlbiB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZSBoZXJlLlxuXG5UbyBiZWdpbiwgSSdsbCBzdGFydCBieSBncmVwcGluZyB0aGUga2VybmVsIHNvdXJjZXMsIHNwZWNpZmljYWxseSBsb29raW5nIGZvciB1c2VzIG9mIGBfX2ttYWxsb2NfbGFyZ2Vfbm9wcm9mYCBvciwgZmFpbGluZyB0aGF0LCAgYGttYWxsb2NfbGFyZ2VgLCBhY3Jvc3MgYGluY2x1ZGUvbGludXgvc2xhYi5oYCBhbmQgdGhlIGBtbS9gIGRpcmVjdG9yeS4gVGhpcyBzaG91bGQgaGVscCBtYXAgd2hlcmUgdGhlc2UgZnVuY3Rpb25zIGFyZSBkZWZpbmVkIGFuZCBpbXBsZW1lbnRlZC4gQnkgdW5kZXJzdGFuZGluZyB0aGVpciBpbnRlcmFjdGlvbiwgSSdsbCBiZSBhYmxlIHRvIHRyYWNlIGhvdyB0aGluZ3Mgd29yayB3aGVuIHRoZXkgZ2V0IHRoYXQgYmlnLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODI3LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDAyOjUyOjIzLjM3NzI5MTc2NFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjY5NTgzNDU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9fa21hbGxvY19sYXJnZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L3NsYWIuaD05NzI9dm9pZCAqX19rbWFsbG9jX2NhY2hlX25vZGVfbm9wcm9mKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBnZnBfdCBnZnBmbGFncyxcXG4tLVxcbmluY2x1ZGUvbGludXgvc2xhYi5oLTk3NS1cXG5pbmNsdWRlL2xpbnV4L3NsYWIuaDo5NzY6dm9pZCAqX19rbWFsbG9jX2xhcmdlX25vcHJvZihzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3MpXFxuaW5jbHVkZS9saW51eC9zbGFiLmgtOTc3LVxcdFxcdFxcdFxcdF9fYXNzdW1lX3BhZ2VfYWxpZ25tZW50IF9fYWxsb2Nfc2l6ZSgxKTtcXG5pbmNsdWRlL2xpbnV4L3NsYWIuaC05NzgtXFxuaW5jbHVkZS9saW51eC9zbGFiLmg6OTc5OnZvaWQgKl9fa21hbGxvY19sYXJnZV9ub2RlX25vcHJvZihzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3MsIGludCBub2RlKVxcbmluY2x1ZGUvbGludXgvc2xhYi5oLTk4MC1cXHRcXHRcXHRcXHRfX2Fzc3VtZV9wYWdlX2FsaWdubWVudCBfX2FsbG9jX3NpemUoMSk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NsYWIuaD05ODI9c3RhdGljIF9fYWx3YXlzX2lubGluZSBfX2FsbG9jX3NpemUoMSkgdm9pZCAqX2ttYWxsb2Nfbm9wcm9mKHNpemVfdCBzaXplLCBnZnBfdCBmbGFncywga21hbGxvY190b2tlbl90IHRva2VuKVxcbi0tXFxuaW5jbHVkZS9saW51eC9zbGFiLmgtOTg3LVxcdFxcdGlmIChzaXplIFxcdTAwM2UgS01BTExPQ19NQVhfQ0FDSEVfU0laRSlcXG5pbmNsdWRlL2xpbnV4L3NsYWIuaDo5ODg6XFx0XFx0XFx0cmV0dXJuIF9fa21hbGxvY19sYXJnZV9ub3Byb2Yoc2l6ZSwgZmxhZ3MpO1xcbmluY2x1ZGUvbGludXgvc2xhYi5oLTk4OS1cXG4tLVxcbmluY2x1ZGUvbGludXgvc2xhYi5oPTExODc9c3RhdGljIF9fYWx3YXlzX2lubGluZSBfX2FsbG9jX3NpemUoMSkgdm9pZCAqX2ttYWxsb2Nfbm9kZV9ub3Byb2Yoc2l6ZV90IHNpemUsIGdmcF90IGZsYWdzLCBpbnQgbm9kZSwga21hbGxvY190b2tlbl90IHRva2VuKVxcbi0tXFxuaW5jbHVkZS9saW51eC9zbGFiLmgtMTE5Mi1cXHRcXHRpZiAoc2l6ZSBcXHUwMDNlIEtNQUxMT0NfTUFYX0NBQ0hFX1NJWkUpXFxuaW5jbHVkZS9saW51eC9zbGFiLmg6MTE5MzpcXHRcXHRcXHRyZXR1cm4gX19rbWFsbG9jX2xhcmdlX25vZGVfbm9wcm9mKHNpemUsIGZsYWdzLCBub2RlKTtcXG5pbmNsdWRlL2xpbnV4L3NsYWIuaC0xMTk0LVxcbi0tXFxubW0vc2x1Yi5jPTUzMzI9dW5zaWduZWQgaW50IGttZW1fY2FjaGVfc2hlYWZfc2l6ZShzdHJ1Y3Qgc2xhYl9zaGVhZiAqc2hlYWYpXFxuLS1cXG5tbS9zbHViLmMtNTM0MC0gKi9cXG5tbS9zbHViLmM6NTM0MTpzdGF0aWMgdm9pZCAqX19fa21hbGxvY19sYXJnZV9ub2RlKHNpemVfdCBzaXplLCBnZnBfdCBmbGFncywgaW50IG5vZGUpXFxubW0vc2x1Yi5jLTUzNDIte1xcbi0tXFxubW0vc2x1Yi5jLTUzNzctXFxubW0vc2x1Yi5jOjUzNzg6dm9pZCAqX19rbWFsbG9jX2xhcmdlX25vcHJvZihzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3MpXFxubW0vc2x1Yi5jLTUzNzkte1xcbm1tL3NsdWIuYzo1MzgwOlxcdHZvaWQgKnJldCA9IF9fX2ttYWxsb2NfbGFyZ2Vfbm9kZShzaXplLCBmbGFncywgTlVNQV9OT19OT0RFKTtcXG5tbS9zbHViLmMtNTM4MS1cXG4tLVxcbm1tL3NsdWIuYy01Mzg1LX1cXG5tbS9zbHViLmM6NTM4NjpFWFBPUlRfU1lNQk9MKF9fa21hbGxvY19sYXJnZV9ub3Byb2YpO1xcbm1tL3NsdWIuYy01Mzg3LVxcbm1tL3NsdWIuYzo1Mzg4OnZvaWQgKl9fa21hbGxvY19sYXJnZV9ub2RlX25vcHJvZihzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3MsIGludCBub2RlKVxcbm1tL3NsdWIuYy01Mzg5LXtcXG5tbS9zbHViLmM6NTM5MDpcXHR2b2lkICpyZXQgPSBfX19rbWFsbG9jX2xhcmdlX25vZGUoc2l6ZSwgZmxhZ3MsIG5vZGUpO1xcbm1tL3NsdWIuYy01MzkxLVxcbi0tXFxubW0vc2x1Yi5jLTUzOTUtfVxcbm1tL3NsdWIuYzo1Mzk2OkVYUE9SVF9TWU1CT0woX19rbWFsbG9jX2xhcmdlX25vZGVfbm9wcm9mKTtcXG5tbS9zbHViLmMtNTM5Ny1cXG4tLVxcbm1tL3NsdWIuYz01Mzk5PXZvaWQgKl9fZG9fa21hbGxvY19ub2RlKGttZW1fYnVja2V0cyAqYiwgZ2ZwX3QgZmxhZ3MsIGludCBub2RlLFxcbi0tXFxubW0vc2x1Yi5jLTU0MDYtXFx0aWYgKHVubGlrZWx5KHNpemUgXFx1MDAzZSBLTUFMTE9DX01BWF9DQUNIRV9TSVpFKSkge1xcbm1tL3NsdWIuYzo1NDA3OlxcdFxcdHJldCA9IF9fa21hbGxvY19sYXJnZV9ub2RlX25vcHJvZihzaXplLCBmbGFncywgbm9kZSk7XFxubW0vc2x1Yi5jLTU0MDgtXFx0XFx0dHJhY2Vfa21hbGxvYyhhYy1cXHUwMDNlY2FsbGVyX2FkZHIsIHJldCwgc2l6ZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDI6NTI6MjUuMDQ2ODgwMTlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo3NTI0NjQ1MDExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIGZvciBGdXp6aW5nIHRoaXMgS2VybmVsIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duIHN5c3RlbWF0aWNhbGx5LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiB0aGlzIGBrbWFsbG9jX2xhcmdlYCBwYXRjaCBhbmQgaXRzIGltcGxpY2F0aW9ucy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGhhcHBlbmluZyBiZWZvcmUgYW5kIGFmdGVyIHRoaXMgY2hhbmdlLCBwYXJ0aWN1bGFybHkgY29uY2VybmluZyBjYWxscyB0byBga21hbGxvY19sYXJnZWAgd2l0aCBzaXplcyBleGNlZWRpbmcgYEtNQUxMT0NfTUFYX1NJWkVgLiBUaGUgcGFnZSBhbGxvY2F0b3IgYW5kIGBnZXRfb3JkZXIoc2l6ZSlgIGFyZSBrZXkgY29tcG9uZW50cyBoZXJlLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIG9yZGVyIGlzIGhhbmRsZWQgdG8gc2VlIGlmIHRoaXMgY2hhbmdlIHByZXZlbnRzIGEgcG90ZW50aWFsIG92ZXJmbG93LlxuXG5GaXJzdCwgSSBuZWVkIHRvIGNoZWNrIHRoZSBjb21taXQgaGlzdG9yeSB0byB1bmRlcnN0YW5kIHRoZSByYXRpb25hbGUgYmVoaW5kIHRoZSBhZGRpdGlvbiBvZiBgV0FSTl9PTl9PTkNFX0dGUGAuIE5vdywgd2FpdCBhIG1pbnV0ZSwgYGttYWxsb2NgIGlzIGEgZnVuZGFtZW50YWwgbWVtb3J5IGFsbG9jYXRpb24gcm91dGluZSBpbiB0aGUga2VybmVsISBJdCdzIG9uZSBvZiB0aGUgbW9zdCBjcml0aWNhbC4gVGhhdCByYWlzZXMgdGhlIHF1ZXN0aW9uOiBpcyB0aGlzIGEgbmV3IGZlYXR1cmUsIG9yIGEgZGVmZW5zaXZlIG1lYXN1cmUgd2l0aGluIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQ/IFRoaXMgbWF0dGVycyBhIGxvdC5cblxuSSBuZWVkIHRvIGZvY3VzIGFuZCByZS1yZWFkIHRoZSBzcGVjaWZpYyBpbnN0cnVjdGlvbnMgcHJvdmlkZWQgb24gd2hldGhlciB0aGUgY2hhbmdlcyBhcmUgd29ydGggZnV6emluZy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGFtIGRvaW5nIGl0IGNvcnJlY3RseS5cblxuT2theSwgbGV0IG1lIHJldmlldyB0aGUgY3JpdGVyaWEgZm9yIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJIGFtIGxvb2tpbmcgZm9yIGNoYW5nZXMgcmVsYXRlZCB0byBkb2N1bWVudGF0aW9uLCBjb21tZW50cywgZGVjb3JhdGl2ZSBsb2dnaW5nLCBub24tZnVuY3Rpb25hbCBjb25zdGFudCBjaGFuZ2VzLCB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzLCBvciBzcGVjaWZpYyBkcml2ZXJzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBJIG5lZWQgdG8gYmUgcHJlY2lzZSwgYXMgdGhpcyBpcyBjb3JlIG1tLlxuXG5SaWdodCwgdGhlIGtleSBkaXJlY3RpdmUgaXM6IFwiSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLi4uIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cIiBDcnVjaWFsbHksIEkgaGF2ZSB0byBleHRyYWN0ICpzcGVjaWZpYyoga2VybmVsIGZ1bmN0aW9ucyBmb3IgYEZvY3VzU3ltYm9sc2AsIGF2b2lkaW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zLiBUaGlzIGlzIGltcG9ydGFudCB0byBza2V3IHRoZSB0ZXN0IGRpc3RyaWJ1dGlvbnMgcHJvcGVybHkuXG5cblRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IHNheXMgXCJBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cIiBUaGlzIGlzIGltcG9ydGFudCBhcyBJIGNvbnNpZGVyIGlmIGBfX19rbWFsbG9jX2xhcmdlX25vZGVgIGlzIGEgaG90LXBhdGggaW4gU0xVQiwgaWYgYF9fa21hbGxvY19sYXJnZV9ub3Byb2ZgIGFuZCBga21hbGxvY2AgYXJlIGhvdC1wYXRoLiBEbyBJIG5lZWQgYEZvY3VzU3ltYm9sc2A/IE9yIHNob3VsZCB0aGUgZW50cnlwb2ludHMgYmUgbm9uLWdlbmVyaWM/IElmIHRoZXkgYXJlIGdlbmVyaWMsIHNob3VsZCB0aGV5IGJlIHNraXBwZWQ/XG5cbkdpdmVuIG15IGV4cGVydGlzZSwgdGhpcyByZXF1aXJlcyBjYXJlZnVsIGNvbnNpZGVyYXRpb24sIGVzcGVjaWFsbHkgc2luY2UgaXQncyBga21hbGxvY2AuIEkgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgc2VsZWN0aW9uIG9mIGZ1bmN0aW9ucyBpcyAqcHJlY2lzZSogYW5kIGF2b2lkcyBza2V3aW5nIHRoZSBmdXp6aW5nIGRpc3RyaWJ1dGlvbi5cblxuT2theSwgbGV0J3MgcmUtcmVhZCB0aGUgcHJpbWFyeSBwcm9tcHQsIFwiSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaCB0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cIlxuXG5Eb2VzIHRoaXMgcGF0Y2ggKm1vZGlmeSogcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljPyBZZXMsIGl0IGFkZHMgYSBgV0FSTl9PTl9PTkNFX0dGUGAgY2hlY2sgd2l0aGluIGBfX19rbWFsbG9jX2xhcmdlX25vZGVgIGluIGBtbS9zbHViLmNgLiBUaGlzIGFkZGl0aW9uIGlzIGEgY3JpdGljYWwgY2hhbmdlLiBQcmV2aW91c2x5LCB3aGVuIGBzaXplIFx1MDAzZSBLTUFMTE9DX01BWF9TSVpFYCwgdGhlIGNvZGUgbWlnaHQgaGF2ZSBlbmRlZCB1cCBjb21wdXRpbmcgYW4gb3JkZXIgbGFyZ2VyIHRoYW4gYE1BWF9QQUdFX09SREVSYC4gTm93LCBpdCB0cmlnZ2VycyBhIHdhcm5pbmcgKHVubGVzcyBgX19HRlBfTk9XQVJOYCBpcyBzZXQpIGFuZCByZXR1cm5zIGBOVUxMYC4gVGhpcyBpcyBhIGNoYW5nZSBpbiBiZWhhdmlvci5cblxuU2luY2UgYF9fa21hbGxvY19sYXJnZV9ub3Byb2ZgIGFuZCBgX19rbWFsbG9jX2xhcmdlX25vZGVfbm9wcm9mYCBhcmUgZXhwb3J0ZWQgc3ltYm9scywgdGhleSBtYXkgcXVhbGlmeSBhcyBgRm9jdXNTeW1ib2xzYC4gTGV0J3MgY29uZmlybSBpZiB0aGV5IGFyZSBleHBvcnRlZCBvciBub24tc3RhdGljIGluIHRoZSBjb2RlIGl0c2VsZiwgY2hlY2tpbmcgbGluZXMgNTM3OC01Mzk2IG9mIGBtbS9zbHViLmNgLlxuXG5TaW5jZSBpdCAqaXMqIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgdGhlIGFuc3dlciBpcyBgV29ydGhGdXp6aW5nPXRydWVgLCBhbmQgSSBuZWVkIHRvIGlkZW50aWZ5IGFwcHJvcHJpYXRlIGBGb2N1c1N5bWJvbHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MjE5LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTQyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDAyOjUyOjMyLjU3MTUyNzkzMVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDgwNTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibW0vc2x1Yi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDUzNzUsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjUzNzU6XFx0XFx0cmV0dXJuIHB0cjtcXG41Mzc2OlxcdH1cXG41Mzc3OlxcdFxcbjUzNzg6XFx0dm9pZCAqX19rbWFsbG9jX2xhcmdlX25vcHJvZihzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3MpXFxuNTM3OTpcXHR7XFxuNTM4MDpcXHRcXHR2b2lkICpyZXQgPSBfX19rbWFsbG9jX2xhcmdlX25vZGUoc2l6ZSwgZmxhZ3MsIE5VTUFfTk9fTk9ERSk7XFxuNTM4MTpcXHRcXG41MzgyOlxcdFxcdHRyYWNlX2ttYWxsb2MoX1JFVF9JUF8sIHJldCwgc2l6ZSwgUEFHRV9TSVpFIFxcdTAwM2NcXHUwMDNjIGdldF9vcmRlcihzaXplKSxcXG41MzgzOlxcdFxcdFxcdCAgICAgIGZsYWdzLCBOVU1BX05PX05PREUpO1xcbjUzODQ6XFx0XFx0cmV0dXJuIHJldDtcXG41Mzg1OlxcdH1cXG41Mzg2OlxcdEVYUE9SVF9TWU1CT0woX19rbWFsbG9jX2xhcmdlX25vcHJvZik7XFxuNTM4NzpcXHRcXG41Mzg4OlxcdHZvaWQgKl9fa21hbGxvY19sYXJnZV9ub2RlX25vcHJvZihzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3MsIGludCBub2RlKVxcbjUzODk6XFx0e1xcbjUzOTA6XFx0XFx0dm9pZCAqcmV0ID0gX19fa21hbGxvY19sYXJnZV9ub2RlKHNpemUsIGZsYWdzLCBub2RlKTtcXG41MzkxOlxcdFxcbjUzOTI6XFx0XFx0dHJhY2Vfa21hbGxvYyhfUkVUX0lQXywgcmV0LCBzaXplLCBQQUdFX1NJWkUgXFx1MDAzY1xcdTAwM2MgZ2V0X29yZGVyKHNpemUpLFxcbjUzOTM6XFx0XFx0XFx0ICAgICAgZmxhZ3MsIG5vZGUpO1xcbjUzOTQ6XFx0XFx0cmV0dXJuIHJldDtcXG41Mzk1OlxcdH1cXG41Mzk2OlxcdEVYUE9SVF9TWU1CT0woX19rbWFsbG9jX2xhcmdlX25vZGVfbm9wcm9mKTtcXG41Mzk3OlxcdFxcbjUzOTg6XFx0c3RhdGljIF9fYWx3YXlzX2lubGluZVxcbjUzOTk6XFx0dm9pZCAqX19kb19rbWFsbG9jX25vZGUoa21lbV9idWNrZXRzICpiLCBnZnBfdCBmbGFncywgaW50IG5vZGUsXFxuNTQwMDpcXHRcXHRcXHRcXHRrbWFsbG9jX3Rva2VuX3QgdG9rZW4sIGNvbnN0IHN0cnVjdCBzbGFiX2FsbG9jX2NvbnRleHQgKmFjKVxcbjU0MDE6XFx0e1xcbjU0MDI6XFx0XFx0Y29uc3Qgc2l6ZV90IHNpemUgPSBhYy1cXHUwMDNlb3JpZ19zaXplO1xcbjU0MDM6XFx0XFx0c3RydWN0IGttZW1fY2FjaGUgKnM7XFxuNTQwNDpcXHRcXHR2b2lkICpyZXQ7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDAyOjUyOjMyLjU3MTgzOTQ4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjEwODM5NTYxNDE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgdGFraW5nIG9uIHRoZSBwZXJzb25hIHlvdSByZXF1ZXN0ZWQ6XG5cbioqS2NvbmZpZyBhbmQgU0xVQjogQSBRdWljayBJbnZlc3RpZ2F0aW9uKipcblxuQWxyaWdodCwgdGltZSB0byBkaXZlIGluLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZ28gc3RyYWlnaHQgdG8gdGhlIHNvdXJjZSDigJMgS2NvbmZpZy4gSSB3YW50IHRvIHNlZSBob3cgYFNMVUJgIGlzIGNvbmZpZ3VyZWQuIEknbSBsb29raW5nIGZvciB0aGUgY29yZSBkZWZpbml0aW9uLCBhbmQgYW55IGRlcGVuZGVudCBvcHRpb25zIG9yIGRlcGVuZGVuY2llcy4gVGhpcyBpcyB1c3VhbGx5IHRoZSBiZXN0IHBsYWNlIHRvIHN0YXJ0LiBJJ20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gc2VlaW5nIGhvdyB0aGUgZmVhdHVyZXMgYW5kIGFzc29jaWF0ZWQga25vYnMgYXJlIGV4cG9zZWQgYXQgY29uZmlndXJhdGlvbiB0aW1lLiBBbnkgcmVsYXRlZCBkZXBlbmRlbmNpZXMgd291bGQgYmUgY3J1Y2lhbCBoZXJlIGFzIHdlbGwuXG5cbk5leHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBidWlsZCBwcm9jZXNzLiBJJ2xsIG5lZWQgdG8gY29uZmlybSBob3cgYHNsdWIuY2AgYW5kIG90aGVyIGFzc29jaWF0ZWQgZmlsZXMgYXJlIGJyb3VnaHQgaW50byB0aGUgYnVpbGQuIEknbGwgbGlrZWx5IGhlYWQgdG8gYG1tL0tjb25maWdgIG9yIGBtbS9NYWtlZmlsZWAg4oCTIGRlcGVuZGluZyBvbiB0aGUgcHJvamVjdCBzdHJ1Y3R1cmUgYW5kIG15IHByaW9yIGZhbWlsaWFyaXR5LiBJdCBzaG91bGQgYmUgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgYnV0IEkgd2FudCB0byBiZSBjZXJ0YWluIGFib3V0IHRoZSBjb21waWxhdGlvbiBwcm9jZWR1cmUgYW5kIGFueSByZWxldmFudCBmbGFncy4gVGhpcyB3aWxsIGd1aWRlIG1lIGluIGRlYnVnZ2luZyBvciBjdXN0b21pemF0aW9uLiBJJ20gYWZ0ZXIgdGhlIGJ1aWxkIHJ1bGVzIGFuZCBhbnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gdGhhdCBtaWdodCBiZSBnb2luZyBvbiwganVzdCB0byBtYWtlIHN1cmUgSSBhbSBmdWxseSBhd2FyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzQ1NSwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDI6NTI6NDMuNDExNDAyOTE1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODg2ODk3NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzbHViLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL01ha2VmaWxlPTY9S0FTQU5fU0FOSVRJWkVfc2xhYl9jb21tb24ubyA6PSBuXFxubW0vTWFrZWZpbGU6NzpLQVNBTl9TQU5JVElaRV9zbHViLm8gOj0gblxcbm1tL01ha2VmaWxlLTgtS0FTQU5fU0FOSVRJWkVfa21lbWxlYWsubyA6PSBuXFxuLS1cXG5tbS9NYWtlZmlsZT0xND1LQ1NBTl9TQU5JVElaRV9zbGFiX2NvbW1vbi5vIDo9IG5cXG5tbS9NYWtlZmlsZToxNTpLQ1NBTl9TQU5JVElaRV9zbHViLm8gOj0gblxcbm1tL01ha2VmaWxlLTE2LUtDU0FOX1NBTklUSVpFX3BhZ2VfYWxsb2MubyA6PSBuXFxuLS1cXG5tbS9NYWtlZmlsZT0yMz1LQ09WX0lOU1RSVU1FTlRfc2xhYl9jb21tb24ubyA6PSBuXFxubW0vTWFrZWZpbGU6MjQ6S0NPVl9JTlNUUlVNRU5UX3NsdWIubyA6PSBuXFxubW0vTWFrZWZpbGUtMjUtS0NPVl9JTlNUUlVNRU5UX3BhZ2VfYWxsb2MubyA6PSBuXFxuLS1cXG5tbS9NYWtlZmlsZT03MT1vYmoteSArPSAkKG1lbW9yeS1ob3RwbHVnLXkpXFxubW0vTWFrZWZpbGU6NzI6b2JqLXkgKz0gc2x1Yi5vXFxubW0vTWFrZWZpbGUtNzMtXFxuLS1cXG5tbS9zbHViLmM9NDM4Nz1zbGFiX291dF9vZl9tZW1vcnkoc3RydWN0IGttZW1fY2FjaGUgKnMsIGdmcF90IGdmcGZsYWdzLCBpbnQgbmlkKVxcbm1tL3NsdWIuYy00Mzg4LXtcXG5tbS9zbHViLmM6NDM4OTpcXHRzdGF0aWMgREVGSU5FX1JBVEVMSU1JVF9TVEFURShzbHViX29vbV9ycywgREVGQVVMVF9SQVRFTElNSVRfSU5URVJWQUwsXFxubW0vc2x1Yi5jLTQzOTAtXFx0XFx0XFx0XFx0ICAgICAgREVGQVVMVF9SQVRFTElNSVRfQlVSU1QpO1xcbi0tXFxubW0vc2x1Yi5jLTQzOTQtXFxubW0vc2x1Yi5jOjQzOTU6XFx0aWYgKChnZnBmbGFncyBcXHUwMDI2IF9fR0ZQX05PV0FSTikgfHwgIV9fcmF0ZWxpbWl0KFxcdTAwMjZzbHViX29vbV9ycykpXFxubW0vc2x1Yi5jLTQzOTYtXFx0XFx0cmV0dXJuO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwMjo1Mjo0My40NjAyNzU4OTFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjM1OTAzMjA0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgdGhlIEtlcm5lbCdzIE1lbW9yeSBBbGxvY2F0b3IqKlxuXG5Pa2F5LCBzbyBJJ20gc2VlaW5nIGBvYmoteSArPSBzbHViLm9gIGluIHRoZSBidWlsZCBwcm9jZXNzLiBSaWdodCwgU0xVQi4gT2YgY291cnNlLCB0aGF0J3MgdGhlIGRlZmF1bHQgYW5kIG9ubHkgc2xhYiBhbGxvY2F0b3IgaW4gbW9kZXJuIGtlcm5lbHMuIFNMQUIgYW5kIFNMT0IgYXJlIGFuY2llbnQgaGlzdG9yeSBhdCB0aGlzIHBvaW50LiBTdGlsbCwgaXQncyBhbHdheXMgZ29vZCB0byBiZSB0aG9yb3VnaC4gSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoZSBgS2NvbmZpZ2AgZmlsZSBhbmQgY29uZmlybSB0aGF0IGBDT05GSUdfU0xVQmAgaXMgaW5kZWVkIGVuYWJsZWQuIEl04oCZcyBoaWdobHkgcHJvYmFibGUsIGdpdmVuIFNMVULigJlzIHViaXF1aXR5LCBidXQgdmVyaWZ5aW5nIGlzIHNlY29uZCBuYXR1cmUgYXQgdGhpcyBwb2ludC4gQmV0dGVyIHNhZmUgdGhhbiBzb3JyeSB3aGVuIGRlYWxpbmcgd2l0aCBjb3JlIGtlcm5lbCBjb21wb25lbnRzIGxpa2UgdGhlIG1lbW9yeSBhbGxvY2F0b3IuIEl0J3MgYSBmdW5kYW1lbnRhbCBwYXJ0IG9mIHRoZSBzeXN0ZW0sIGFuZCBldmVuIHRoZSBzbWFsbGVzdCBtaXNjb25maWd1cmF0aW9uIGNhbiBoYXZlIHdpZGUtcmFuZ2luZyBlZmZlY3RzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MTk3LCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDI6NTI6NDUuODE5MzEwOTk2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODkwNTUzNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgU0xVQlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vS2NvbmZpZz0xNjI9bWVudSBcXFwiU2xhYiBhbGxvY2F0b3Igb3B0aW9uc1xcXCJcXG5tbS9LY29uZmlnLTE2My1cXG5tbS9LY29uZmlnOjE2NDpjb25maWcgU0xVQlxcbm1tL0tjb25maWctMTY1LVxcdGRlZl9ib29sIHlcXG4tLVxcbm1tL0tjb25maWc9MTY4PWNvbmZpZyBLVkZSRUVfUkNVX0JBVENIRURcXG4tLVxcbm1tL0tjb25maWctMTcyLVxcbm1tL0tjb25maWc6MTczOmNvbmZpZyBTTFVCX1RJTllcXG5tbS9LY29uZmlnLTE3NC1cXHRib29sIFxcXCJDb25maWd1cmUgZm9yIG1pbmltYWwgbWVtb3J5IGZvb3RwcmludFxcXCJcXG4tLVxcbm1tL0tjb25maWc9MjE3PWNvbmZpZyBTTEFCX0JVQ0tFVFNcXG4tLVxcbm1tL0tjb25maWctMjMzLVxcbm1tL0tjb25maWc6MjM0OmNvbmZpZyBTTFVCX1NUQVRTXFxubW0vS2NvbmZpZy0yMzUtXFx0ZGVmYXVsdCBuXFxuLS1cXG5tbS9LY29uZmlnLmRlYnVnPTQxPWNvbmZpZyBERUJVR19QQUdFQUxMT0NfRU5BQkxFX0RFRkFVTFRcXG4tLVxcbm1tL0tjb25maWcuZGVidWctNDctXFxubW0vS2NvbmZpZy5kZWJ1Zzo0ODpjb25maWcgU0xVQl9ERUJVR1xcbm1tL0tjb25maWcuZGVidWctNDktXFx0ZGVmYXVsdCB5XFxuLS1cXG5tbS9LY29uZmlnLmRlYnVnLTU4LVxcbm1tL0tjb25maWcuZGVidWc6NTk6Y29uZmlnIFNMVUJfREVCVUdfT05cXG5tbS9LY29uZmlnLmRlYnVnLTYwLVxcdGJvb2wgXFxcIlNMVUIgZGVidWdnaW5nIG9uIGJ5IGRlZmF1bHRcXFwiXFxuLS1cXG5tbS9LY29uZmlnLmRlYnVnLTcyLVxcbm1tL0tjb25maWcuZGVidWc6NzM6Y29uZmlnIFNMVUJfUkNVX0RFQlVHXFxubW0vS2NvbmZpZy5kZWJ1Zy03NC1cXHRib29sIFxcXCJFbmFibGUgVUFGIGRldGVjdGlvbiBpbiBUWVBFU0FGRV9CWV9SQ1UgY2FjaGVzIChmb3IgS0FTQU4pXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwMjo1Mjo0NS44NjgyMjM2MzJaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjgyNjAxOTUxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIFNMVUIgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBGaXJzdCwgSSBuZWVkIHRvIGNvbmZpcm0gdGhlIHN0YXR1cyBvZiBgQ09ORklHX1NMVUJgLiBSaWdodCwgYG1tL0tjb25maWdgIGlzIHRoZSBwbGFjZSB0byBzdGFydC4gRXhjZWxsZW50LCBpdCdzIGRlZmluZWQgYXMgYGRlZl9ib29sIHlgLCB3aGljaCBtZWFucyBpdCdzIHRoZSBkZWZhdWx0LCBhbHdheXMgZW5hYmxlZC4gR29vZC4gTm93LCBJIHN1c3BlY3QgdGhlcmUgbWlnaHQgYmUgc29tZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiByZWxhdGVkIHRvIGBfX19rbWFsbG9jX2xhcmdlX25vZGVgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiBpdHMgYmVoYXZpb3IgaXMgaW5mbHVlbmNlZCBieSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbnMuIEknbGwganVtcCBpbnRvIGBtbS9zbHViLmNgIGFuZCB6ZXJvIGluIGFyb3VuZCBsaW5lIDUzNDAuIEknbGwgYmUgbG9va2luZyBmb3IgYW55IGAjaWZkZWZgIG9yIHNpbWlsYXIgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZXMgc3Vycm91bmRpbmcgdGhhdCBmdW5jdGlvbi4gVGhpcyBzaG91bGQgaGVscCBkZXRlcm1pbmUgaWYgaXQncyBnb3QgYW55IGRlcGVuZGVuY2llcyBvciBhbHRlcm5hdGl2ZSBpbXBsZW1lbnRhdGlvbnMgSSBuZWVkIHRvIGNvbnNpZGVyIGZvciB0aGlzIGFuYWx5c2lzLiBUaW1lIHRvIGNoZWNrIHRoZSBjb2RlIVxuXG5cbiIsIklucHV0VG9rZW5zIjo4ODA5LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDI6NTI6NDguNjk0MjQ2MDYyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4MjUyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJtbS9zbHViLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNTMyMCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiNTMyMDpcXHRcXG41MzIxOlxcdFxcdGlmIChsaWtlbHkoIXJldCkpXFxuNTMyMjpcXHRcXHRcXHRyZXQgPSBzaGVhZi1cXHUwMDNlb2JqZWN0c1stLXNoZWFmLVxcdTAwM2VzaXplXTtcXG41MzIzOlxcdFxcbjUzMjQ6XFx0XFx0LyogYWRkIF9fR0ZQX05PRkFJTCB0byBmb3JjZSBzdWNjZXNzZnVsIG1lbWNnIGNoYXJnaW5nICovXFxuNTMyNTpcXHRcXHRzbGFiX3Bvc3RfYWxsb2NfaG9vayhzLCBnZnAgfCBfX0dGUF9OT0ZBSUwsIDEsIFxcdTAwMjZyZXQsIFxcdTAwMjZhYyk7XFxuNTMyNjpcXHRvdXQ6XFxuNTMyNzpcXHRcXHR0cmFjZV9rbWVtX2NhY2hlX2FsbG9jKF9SRVRfSVBfLCByZXQsIHMsIGdmcCwgTlVNQV9OT19OT0RFKTtcXG41MzI4OlxcdFxcbjUzMjk6XFx0XFx0cmV0dXJuIHJldDtcXG41MzMwOlxcdH1cXG41MzMxOlxcdFxcbjUzMzI6XFx0dW5zaWduZWQgaW50IGttZW1fY2FjaGVfc2hlYWZfc2l6ZShzdHJ1Y3Qgc2xhYl9zaGVhZiAqc2hlYWYpXFxuNTMzMzpcXHR7XFxuNTMzNDpcXHRcXHRyZXR1cm4gc2hlYWYtXFx1MDAzZXNpemU7XFxuNTMzNTpcXHR9XFxuNTMzNjpcXHQvKlxcbjUzMzc6XFx0ICogVG8gYXZvaWQgdW5uZWNlc3Nhcnkgb3ZlcmhlYWQsIHdlIHBhc3MgdGhyb3VnaCBsYXJnZSBhbGxvY2F0aW9uIHJlcXVlc3RzXFxuNTMzODpcXHQgKiBkaXJlY3RseSB0byB0aGUgcGFnZSBhbGxvY2F0b3IuIFdlIHVzZSBfX0dGUF9DT01QLCBiZWNhdXNlIHdlIHdpbGwgbmVlZCB0b1xcbjUzMzk6XFx0ICoga25vdyB0aGUgYWxsb2NhdGlvbiBvcmRlciB0byBmcmVlIHRoZSBwYWdlcyBwcm9wZXJseSBpbiBrZnJlZS5cXG41MzQwOlxcdCAqL1xcbjUzNDE6XFx0c3RhdGljIHZvaWQgKl9fX2ttYWxsb2NfbGFyZ2Vfbm9kZShzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3MsIGludCBub2RlKVxcbjUzNDI6XFx0e1xcbjUzNDM6XFx0XFx0c3RydWN0IHBhZ2UgKnBhZ2U7XFxuNTM0NDpcXHRcXHR2b2lkICpwdHIgPSBOVUxMO1xcbjUzNDU6XFx0XFx0dW5zaWduZWQgaW50IG9yZGVyO1xcbjUzNDY6XFx0XFxuNTM0NzpcXHRcXHRpZiAoV0FSTl9PTl9PTkNFX0dGUChzaXplIFxcdTAwM2UgS01BTExPQ19NQVhfU0laRSwgZmxhZ3MpKVxcbjUzNDg6XFx0XFx0XFx0cmV0dXJuIE5VTEw7XFxuNTM0OTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDI6NTI6NDguNjk0NjMwMjQyWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI3Mzk0MzMxMDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZSB3aGF0J3MgaGFwcGVuaW5nIGluIGBtbS9zbHViLmNgLiBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgc29tZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBkaXJlY3RpdmVzLCBzcGVjaWZpY2FsbHkgYCNpZmAgb3IgYCNpZmRlZmAsIGFyb3VuZCBsaW5lcyA1MzQwIHRvIDU0MDAuIFRoYXQgc2VlbXMgbGlrZSBhIHJlYXNvbmFibGUgcmFuZ2UgdG8gc3RhcnQgd2l0aC4gVGhlIGJlc3Qgd2F5IHRvIGRvIHRoaXMgaXMgdG8gYGdyZXBgIGZvciB0aG9zZSBkaXJlY3RpdmVzIHdpdGhpbiB0aGF0IGFyZWEgYW5kIHNlZSB3aGF0J3MgaGlkaW5nLiBUaGlzIHNob3VsZCBwcm92aWRlIHRoZSBjb250ZXh0IG5lZWRlZCBmb3IgdGhlIG5leHQgc3RlcCwgd2hhdGV2ZXIgdGhhdCBtYXkgYmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk1NDcsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDAyOjUyOjUxLjQzNDA2NTg3OFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjcxMjgwMzQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIiNpZlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9zbHViLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA1NTEgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbm1tL3NsdWIuYz0xOTM9ZW51bSBzbGFiX2ZsYWdzIHtcXG4tLVxcbm1tL3NsdWIuYy0xOTgtXFxubW0vc2x1Yi5jOjE5OTojaWZuZGVmIENPTkZJR19TTFVCX1RJTllcXG5tbS9zbHViLmMtMjAwLSNkZWZpbmUgX19mYXN0cGF0aF9pbmxpbmUgX19hbHdheXNfaW5saW5lXFxuLS1cXG5tbS9zbHViLmMtMjA0LVxcbm1tL3NsdWIuYzoyMDU6I2lmZGVmIENPTkZJR19TTFVCX0RFQlVHXFxubW0vc2x1Yi5jOjIwNjojaWZkZWYgQ09ORklHX1NMVUJfREVCVUdfT05cXG5tbS9zbHViLmMtMjA3LURFRklORV9TVEFUSUNfS0VZX1RSVUUoc2x1Yl9kZWJ1Z19lbmFibGVkKTtcXG4tLVxcbm1tL3NsdWIuYz0yMDk9REVGSU5FX1NUQVRJQ19LRVlfRkFMU0Uoc2x1Yl9kZWJ1Z19lbmFibGVkKTtcXG4tLVxcbm1tL3NsdWIuYy0yMTItXFxubW0vc2x1Yi5jOjIxMzojaWZkZWYgQ09ORklHX05VTUFcXG5tbS9zbHViLmMtMjE0LXN0YXRpYyBERUZJTkVfU1RBVElDX0tFWV9GQUxTRShzdHJpY3RfbnVtYSk7XFxuLS1cXG5tbS9zbHViLmMtMjE2LVxcbm1tL3NsdWIuYzoyMTc6I2lmZGVmIENPTkZJR19NRU1fQUxMT0NfUFJPRklMSU5HXFxubW0vc2x1Yi5jLTIxOC1ERUZJTkVfU1RBVElDX0tFWV9NQVlCRShDT05GSUdfTUVNX0FMTE9DX1BST0ZJTElOR19FTkFCTEVEX0JZX0RFRkFVTFQsXFxuLS1cXG5tbS9zbHViLmM9MjM5PXN0cnVjdCBzbGFiX29ial9pdGVyIHtcXG4tLVxcbm1tL3NsdWIuYy0yNDEtXFx0dm9pZCAqc3RhcnQ7XFxubW0vc2x1Yi5jOjI0MjojaWZkZWYgQ09ORklHX1NMQUJfRlJFRUxJU1RfUkFORE9NXFxubW0vc2x1Yi5jLTI0My1cXHR1bnNpZ25lZCBsb25nIGZyZWVsaXN0X2NvdW50O1xcbi0tXFxubW0vc2x1Yi5jPTI1ND12b2lkICpmaXh1cF9yZWRfbGVmdChzdHJ1Y3Qga21lbV9jYWNoZSAqcywgdm9pZCAqcClcXG4tLVxcbm1tL3NsdWIuYy0yNzItXFxubW0vc2x1Yi5jOjI3MzojaWZuZGVmIENPTkZJR19TTFVCX1RJTllcXG5tbS9zbHViLmMtMjc0LS8qXFxuLS1cXG5tbS9zbHViLmMtMzE3LVxcbm1tL3NsdWIuYzozMTg6I2lmZGVmIHN5c3RlbV9oYXNfZnJlZWxpc3RfYWJhXFxubW0vc2x1Yi5jLTMxOS0jZGVmaW5lIF9fQ01QWENIR19ET1VCTEVcXHRfX1NMQUJfRkxBR19CSVQoX1NMQUJfQ01QWENIR19ET1VCTEUpXFxuLS1cXG5tbS9zbHViLmM9MzI4PXN0cnVjdCB0cmFjayB7XFxubW0vc2x1Yi5jLTMyOS1cXHR1bnNpZ25lZCBsb25nIGFkZHI7XFx0LyogQ2FsbGVkIGZyb20gYWRkcmVzcyAqL1xcbm1tL3NsdWIuYzozMzA6I2lmZGVmIENPTkZJR19TVEFDS0RFUE9UXFxubW0vc2x1Yi5jLTMzMS1cXHRkZXBvdF9zdGFja19oYW5kbGVfdCBoYW5kbGU7XFxuLS1cXG5tbS9zbHViLmM9MzM4PWVudW0gdHJhY2tfaXRlbSB7IFRSQUNLX0FMTE9DLCBUUkFDS19GUkVFIH07XFxubW0vc2x1Yi5jLTMzOS1cXG5tbS9zbHViLmM6MzQwOiNpZmRlZiBTTEFCX1NVUFBPUlRTX1NZU0ZTXFxubW0vc2x1Yi5jLTM0MS1zdGF0aWMgaW50IHN5c2ZzX3NsYWJfYWRkKHN0cnVjdCBrbWVtX2NhY2hlICopO1xcbi0tXFxubW0vc2x1Yi5jPTM0Nz1zdGF0aWMgaW5saW5lIHZvaWQgc2xhYl9zeXNmc19wcm9jZXNzX2FsaWFzZXModm9pZCkgeyB9XFxuLS1cXG5tbS9zbHViLmMtMzQ5LVxcbm1tL3NsdWIuYzozNTA6I2lmIGRlZmluZWQoQ09ORklHX0RFQlVHX0ZTKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKENPTkZJR19TTFVCX0RFQlVHKVxcbm1tL3NsdWIuYy0zNTEtc3RhdGljIHZvaWQgZGVidWdmc19zbGFiX2FkZChzdHJ1Y3Qga21lbV9jYWNoZSAqKTtcXG4tLVxcbm1tL3NsdWIuYz0zNjM9ZW51bSBzdGF0X2l0ZW0ge1xcbi0tXFxubW0vc2x1Yi5jLTM5Mi1cXG5tbS9zbHViLmM6MzkzOiNpZmRlZiBDT05GSUdfU0xVQl9TVEFUU1xcbm1tL3NsdWIuYy0zOTQtc3RydWN0IGttZW1fY2FjaGVfc3RhdHMge1xcbi0tXFxubW0vc2x1Yi5jPTM5OT1zdGF0aWMgaW5saW5lIHZvaWQgc3RhdChjb25zdCBzdHJ1Y3Qga21lbV9jYWNoZSAqcywgZW51bSBzdGF0X2l0ZW0gc2kpXFxubW0vc2x1Yi5jLTQwMC17XFxubW0vc2x1Yi5jOjQwMTojaWZkZWYgQ09ORklHX1NMVUJfU1RBVFNcXG5tbS9zbHViLmMtNDAyLVxcdC8qXFxuLS1cXG5tbS9zbHViLmM9NDExPXZvaWQgc3RhdF9hZGQoY29uc3Qgc3RydWN0IGttZW1fY2FjaGUgKnMsIGVudW0gc3RhdF9pdGVtIHNpLCBpbnQgdilcXG5tbS9zbHViLmMtNDEyLXtcXG5tbS9zbHViLmM6NDEzOiNpZmRlZiBDT05GSUdfU0xVQl9TVEFUU1xcbm1tL3NsdWIuYy00MTQtXFx0cmF3X2NwdV9hZGQocy1cXHUwMDNlY3B1X3N0YXRzLVxcdTAwM2VzdGF0W3NpXSwgdik7XFxuLS1cXG5tbS9zbHViLmM9NDU3PXN0cnVjdCBrbWVtX2NhY2hlX25vZGUge1xcbi0tXFxubW0vc2x1Yi5jLTQ2MC1cXHRzdHJ1Y3QgbGlzdF9oZWFkIHBhcnRpYWw7XFxubW0vc2x1Yi5jOjQ2MTojaWZkZWYgQ09ORklHX1NMVUJfREVCVUdcXG5tbS9zbHViLmMtNDYyLVxcdGF0b21pY19sb25nX3QgbnJfc2xhYnM7XFxuLS1cXG5tbS9zbHViLmM9NTMxPXN0YXRpYyBpbmxpbmUgZnJlZXB0cl90IGZyZWVsaXN0X3B0cl9lbmNvZGUoY29uc3Qgc3RydWN0IGttZW1fY2FjaGUgKnMsXFxuLS1cXG5tbS9zbHViLmMtNTM1LVxcbm1tL3NsdWIuYzo1MzY6I2lmZGVmIENPTkZJR19TTEFCX0ZSRUVMSVNUX0hBUkRFTkVEXFxubW0vc2x1Yi5jLTUzNy1cXHRlbmNvZGVkID0gKHVuc2lnbmVkIGxvbmcpcHRyIF4gcy1cXHUwMDNlcmFuZG9tIF4gc3dhYihwdHJfYWRkcik7XFxuLS1cXG5tbS9zbHViLmM9NTQ0PXN0YXRpYyBpbmxpbmUgdm9pZCAqZnJlZWxpc3RfcHRyX2RlY29kZShjb25zdCBzdHJ1Y3Qga21lbV9jYWNoZSAqcyxcXG4tLVxcbm1tL3NsdWIuYy01NDgtXFxubW0vc2x1Yi5jOjU0OTojaWZkZWYgQ09ORklHX1NMQUJfRlJFRUxJU1RfSEFSREVORURcXG5tbS9zbHViLmMtNTUwLVxcdGRlY29kZWQgPSAodm9pZCAqKShwdHIudiBeIHMtXFx1MDAzZXJhbmRvbSBeIHN3YWIocHRyX2FkZHIpKTtcXG4tLVxcbm1tL3NsdWIuYz01Njg9c3RhdGljIGlubGluZSB2b2lkIHNldF9mcmVlcG9pbnRlcihzdHJ1Y3Qga21lbV9jYWNoZSAqcywgdm9pZCAqb2JqZWN0LCB2b2lkICpmcClcXG4tLVxcbm1tL3NsdWIuYy01NzEtXFxubW0vc2x1Yi5jOjU3MjojaWZkZWYgQ09ORklHX1NMQUJfRlJFRUxJU1RfSEFSREVORURcXG5tbS9zbHViLmMtNTczLVxcdEJVR19PTihvYmplY3QgPT0gZnApOyAvKiBuYWl2ZSBkZXRlY3Rpb24gb2YgZG91YmxlIGZyZWUgb3IgY29ycnVwdGlvbiAqL1xcbi0tXFxubW0vc2x1Yi5jPTY2ND1fX3VwZGF0ZV9mcmVlbGlzdF9mYXN0KHN0cnVjdCBzbGFiICpzbGFiLCBzdHJ1Y3QgZnJlZWxpc3RfY291bnRlcnMgKm9sZCxcXG4tLVxcbm1tL3NsdWIuYy02NjYte1xcbm1tL3NsdWIuYzo2Njc6I2lmZGVmIHN5c3RlbV9oYXNfZnJlZWxpc3RfYWJhXFxubW0vc2x1Yi5jLTY2OC1cXHRyZXR1cm4gdHJ5X2NtcHhjaGdfZnJlZWxpc3QoXFx1MDAyNnNsYWItXFx1MDAzZWZyZWVsaXN0X2NvdW50ZXJzLFxcbi0tXFxubW0vc2x1Yi5jPTcwMj1zdGF0aWMgaW5saW5lIGJvb2wgX19zbGFiX3VwZGF0ZV9mcmVlbGlzdChzdHJ1Y3Qga21lbV9jYWNoZSAqcywgc3RydWN0IHNsYWIgKnNsYWIsXFxuLS1cXG5tbS9zbHViLmMtNzIwLVxcbm1tL3NsdWIuYzo3MjE6I2lmZGVmIFNMVUJfREVCVUdfQ01QWENIR1xcbm1tL3NsdWIuYy03MjItXFx0cHJfaW5mbyhcXFwiJXMgJXM6IGNtcHhjaGcgZG91YmxlIHJlZG8gXFxcIiwgbiwgcy1cXHUwMDNlbmFtZSk7XFxuLS1cXG5tbS9zbHViLmM9NzI4PXN0YXRpYyBpbmxpbmUgYm9vbCBzbGFiX3VwZGF0ZV9mcmVlbGlzdChzdHJ1Y3Qga21lbV9jYWNoZSAqcywgc3RydWN0IHNsYWIgKnNsYWIsXFxuLS1cXG5tbS9zbHViLmMtNzQ3LVxcbm1tL3NsdWIuYzo3NDg6I2lmZGVmIFNMVUJfREVCVUdfQ01QWENIR1xcbm1tL3NsdWIuYy03NDktXFx0cHJfaW5mbyhcXFwiJXMgJXM6IGNtcHhjaGcgZG91YmxlIHJlZG8gXFxcIiwgbiwgcy1cXHUwMDNlbmFtZSk7XFxuLS1cXG5tbS9zbHViLmM9Nzc1PXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBnZXRfb3JpZ19zaXplKHN0cnVjdCBrbWVtX2NhY2hlICpzLCB2b2lkICpvYmplY3QpXFxuLS1cXG5tbS9zbHViLmMtNzkwLVxcbm1tL3NsdWIuYzo3OTE6I2lmZGVmIENPTkZJR19TTEFCX09CSl9FWFRcXG5tbS9zbHViLmMtNzkyLVxcbi0tXFxubW0vc2x1Yi5jPTg3OT1zdGF0aWMgaW5saW5lIGJvb2wgb2JqX2V4dHNfaW5fc2xhYihzdHJ1Y3Qga21lbV9jYWNoZSAqcywgc3RydWN0IHNsYWIgKnNsYWIpXFxuLS1cXG5tbS9zbHViLmMtODg1LVxcbm1tL3NsdWIuYzo4ODY6I2lmIGRlZmluZWQoQ09ORklHX1NMQUJfT0JKX0VYVCkgXFx1MDAyNlxcdTAwMjYgZGVmaW5lZChDT05GSUdfNjRCSVQpXFxubW0vc2x1Yi5jLTg4Ny1zdGF0aWMgdW5zaWduZWQgaW50IG9ial9leHRzX29mZnNldF9pbl9vYmplY3Qoc3RydWN0IGttZW1fY2FjaGUgKnMpXFxuLS1cXG5tbS9zbHViLmM9OTEyPXN0YXRpYyBpbmxpbmUgdm9pZCBzbGFiX3NldF9vYmpfZXh0c19pbl9vYmplY3Qoc3RydWN0IHNsYWIgKnNsYWIpXFxuLS1cXG5tbS9zbHViLmMtOTIwLSAqL1xcbm1tL3NsdWIuYzo5MjE6I2lmIGRlZmluZWQoQ09ORklHX0RFQlVHX1ZNKSB8fCBkZWZpbmVkKENPTkZJR19QUk9WRV9MT0NLSU5HKVxcbm1tL3NsdWIuYy05MjItc3RhdGljIG5vaW5saW5lIHZvaWQgc2xhYl9hdHRhY2hfa3Byb2JlX2xvY2tlZCh2b2lkKVxcbi0tXFxubW0vc2x1Yi5jPTkyNz1zdGF0aWMgaW5saW5lIHZvaWQgc2xhYl9hdHRhY2hfa3Byb2JlX2xvY2tlZCh2b2lkKSB7IH1cXG4tLVxcbm1tL3NsdWIuYy05MzQtXFxubW0vc2x1Yi5jOjkzNTojaWZkZWYgQ09ORklHX1NMVUJfREVCVUdcXG5tbS9zbHViLmMtOTM2LVxcbi0tXFxubW0vc2x1Yi5jPTk0OT1zdGF0aWMgdm9pZCBfX2ZpbGxfbWFwKHVuc2lnbmVkIGxvbmcgKm9ial9tYXAsIHN0cnVjdCBrbWVtX2NhY2hlICpzLFxcbi0tXFxubW0vc2x1Yi5jLTk2MC1cXG5tbS9zbHViLmM6OTYxOiNpZiBJU19FTkFCTEVEKENPTkZJR19LVU5JVClcXG5tbS9zbHViLmMtOTYyLXN0YXRpYyBib29sIHNsYWJfYWRkX2t1bml0X2Vycm9ycyh2b2lkKVxcbi0tXFxubW0vc2x1Yi5jPTEwMDQ9c3RhdGljIGlubGluZSB2b2lkICpyZXN0b3JlX3JlZF9sZWZ0KHN0cnVjdCBrbWVtX2NhY2hlICpzLCB2b2lkICpwKVxcbi0tXFxubW0vc2x1Yi5jLTEwMTQtICovXFxubW0vc2x1Yi5jOjEwMTU6I2lmIGRlZmluZWQoQ09ORklHX1NMVUJfREVCVUdfT04pXFxubW0vc2x1Yi5jLTEwMTYtc3RhdGljIHNsYWJfZmxhZ3NfdCBzbHViX2RlYnVnID0gREVCVUdfREVGQVVMVF9GTEFHUztcXG4tLVxcbm1tL3NsdWIuYz0xMDU3PXN0YXRpYyBzdHJ1Y3QgdHJhY2sgKmdldF90cmFjayhzdHJ1Y3Qga21lbV9jYWNoZSAqcywgdm9pZCAqb2JqZWN0LFxcbi0tXFxubW0vc2x1Yi5jLTEwNjYtXFxubW0vc2x1Yi5jOjEwNjc6I2lmZGVmIENPTkZJR19TVEFDS0RFUE9UXFxubW0vc2x1Yi5jLTEwNjgtc3RhdGljIG5vaW5saW5lIGRlcG90X3N0YWNrX2hhbmRsZV90IHNldF90cmFja19wcmVwYXJlKGdmcF90IGdmcF9mbGFncylcXG4tLVxcbm1tL3NsdWIuYz0xMDg2PXN0YXRpYyB2b2lkIHNldF90cmFja191cGRhdGUoc3RydWN0IGttZW1fY2FjaGUgKnMsIHZvaWQgKm9iamVjdCxcXG4tLVxcbm1tL3NsdWIuYy0xMDkxLVxcbm1tL3NsdWIuYzoxMDkyOiNpZmRlZiBDT05GSUdfU1RBQ0tERVBPVFxcbm1tL3NsdWIuYy0xMDkzLVxcdHAtXFx1MDAzZWhhbmRsZSA9IGhhbmRsZTtcXG4tLVxcbm1tL3NsdWIuYz0xMTIwPXN0YXRpYyB2b2lkIHByaW50X3RyYWNrKGNvbnN0IGNoYXIgKnMsIHN0cnVjdCB0cmFjayAqdCwgdW5zaWduZWQgbG9uZyBwcl90aW1lKVxcbi0tXFxubW0vc2x1Yi5jLTExMjgtXFx0ICAgICAgIHMsICh2b2lkICopdC1cXHUwMDNlYWRkciwgcHJfdGltZSAtIHQtXFx1MDAzZXdoZW4sIHQtXFx1MDAzZWNwdSwgdC1cXHUwMDNlcGlkKTtcXG5tbS9zbHViLmM6MTEyOTojaWZkZWYgQ09ORklHX1NUQUNLREVQT1RcXG5tbS9zbHViLmMtMTEzMC1cXHRoYW5kbGUgPSBSRUFEX09OQ0UodC1cXHUwMDNlaGFuZGxlKTtcXG4tLVxcbm1tL3NsdWIuYz0xMzIwPXN0YXRpYyB2b2lkIHJlc3RvcmVfYnl0ZXMoc3RydWN0IGttZW1fY2FjaGUgKnMsIGNvbnN0IGNoYXIgKm1lc3NhZ2UsIHU4IGRhdGEsXFxuLS1cXG5tbS9zbHViLmMtMTMyNi1cXG5tbS9zbHViLmM6MTMyNzojaWZkZWYgQ09ORklHX0tNU0FOXFxubW0vc2x1Yi5jLTEzMjgtI2RlZmluZSBwYWRfY2hlY2tfYXR0cmlidXRlcyBub2lubGluZSBfX25vX2ttc2FuX2NoZWNrc1xcbi0tXFxubW0vc2x1Yi5jPTIwNjk9c3RhdGljIGlubGluZSB2b2lkIGRlY19zbGFic19ub2RlKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBpbnQgbm9kZSxcXG4tLVxcbm1tL3NsdWIuYy0yMDg0LVxcbm1tL3NsdWIuYzoyMDg1OiNpZmRlZiBDT05GSUdfU0xBQl9PQkpfRVhUXFxubW0vc2x1Yi5jLTIwODYtXFxubW0vc2x1Yi5jOjIwODc6I2lmZGVmIENPTkZJR19NRU1fQUxMT0NfUFJPRklMSU5HX0RFQlVHXFxubW0vc2x1Yi5jLTIwODgtXFxuLS1cXG5tbS9zbHViLmM9MjE2ND1pbnQgYWxsb2Nfc2xhYl9vYmpfZXh0cyhzdHJ1Y3Qgc2xhYiAqc2xhYiwgc3RydWN0IGttZW1fY2FjaGUgKnMsXFxuLS1cXG5tbS9zbHViLmMtMjIxNy1cXHRuZXdfZXh0cyA9ICh1bnNpZ25lZCBsb25nKXZlYztcXG5tbS9zbHViLmM6MjIxODojaWZkZWYgQ09ORklHX01FTUNHXFxubW0vc2x1Yi5jLTIyMTktXFx0bmV3X2V4dHMgfD0gTUVNQ0dfREFUQV9PQkpFWFRTO1xcbi0tXFxubW0vc2x1Yi5jPTIyODU9c3RhdGljIHZvaWQgYWxsb2Nfc2xhYl9vYmpfZXh0c19lYXJseShzdHJ1Y3Qga21lbV9jYWNoZSAqcywgc3RydWN0IHNsYWIgKnNsYWIpXFxuLS1cXG5tbS9zbHViLmMtMjMwMS1cXG5tbS9zbHViLmM6MjMwMjojaWZkZWYgQ09ORklHX01FTUNHXFxubW0vc2x1Yi5jLTIzMDMtXFx0XFx0b2JqX2V4dHMgfD0gTUVNQ0dfREFUQV9PQkpFWFRTO1xcbi0tXFxubW0vc2x1Yi5jLTIzMTctXFxubW0vc2x1Yi5jOjIzMTg6I2lmZGVmIENPTkZJR19NRU1DR1xcbm1tL3NsdWIuYy0yMzE5LVxcdFxcdG9ial9leHRzIHw9IE1FTUNHX0RBVEFfT0JKRVhUUztcXG4tLVxcbm1tL3NsdWIuYz0yMzQ2PXN0YXRpYyBpbmxpbmUgdm9pZCBhbGxvY19zbGFiX29ial9leHRzX2Vhcmx5KHN0cnVjdCBrbWVtX2NhY2hlICpzLFxcbi0tXFxubW0vc2x1Yi5jLTIzNTItXFxubW0vc2x1Yi5jOjIzNTM6I2lmZGVmIENPTkZJR19NRU1fQUxMT0NfUFJPRklMSU5HXFxubW0vc2x1Yi5jLTIzNTQtXFxuLS1cXG5tbS9zbHViLmM9MjQ5NT1zdGF0aWMgaW5saW5lIHZvaWQgc2xhYl9vYmpfZXh0X2hhc19jb2RldGFnX2luaXQodm9pZClcXG4tLVxcbm1tL3NsdWIuYy0yNTAxLVxcbm1tL3NsdWIuYzoyNTAyOiNpZmRlZiBDT05GSUdfTUVNQ0dcXG5tbS9zbHViLmMtMjUwMy1cXG4tLVxcbm1tL3NsdWIuYz0yNjI1PXN0YXRpYyBpbmxpbmUgYm9vbCBtZW1jZ19zbGFiX3Bvc3RfY2hhcmdlKHZvaWQgKnAsIGdmcF90IGZsYWdzKVxcbi0tXFxubW0vc2x1Yi5jLTI2MzAtXFxubW0vc2x1Yi5jOjI2MzE6I2lmZGVmIENPTkZJR19TTFVCX1JDVV9ERUJVR1xcbm1tL3NsdWIuYy0yNjMyLXN0YXRpYyB2b2lkIHNsYWJfZnJlZV9hZnRlcl9yY3VfZGVidWcoc3RydWN0IHJjdV9oZWFkICpyY3VfaGVhZCk7XFxuLS1cXG5tbS9zbHViLmM9MjY2Nz1ib29sIHNsYWJfZnJlZV9ob29rKHN0cnVjdCBrbWVtX2NhY2hlICpzLCB2b2lkICp4LCBib29sIGluaXQsXFxuLS1cXG5tbS9zbHViLmMtMjY5NS1cXG5tbS9zbHViLmM6MjY5NjojaWZkZWYgQ09ORklHX1NMVUJfUkNVX0RFQlVHXFxubW0vc2x1Yi5jLTI2OTctXFx0aWYgKHN0aWxsX2FjY2Vzc2libGUpIHtcXG4tLVxcbm1tL3NsdWIuYz0zMzMzPXN0YXRpYyBpbmxpbmUgc3RydWN0IHNsYWIgKmFsbG9jX3NsYWJfcGFnZShnZnBfdCBmbGFncywgaW50IG5vZGUsXFxuLS1cXG5tbS9zbHViLmMtMzM2MC1cXG5tbS9zbHViLmM6MzM2MTojaWZkZWYgQ09ORklHX1NMQUJfRlJFRUxJU1RfUkFORE9NXFxubW0vc2x1Yi5jLTMzNjItLyogUHJlLWluaXRpYWxpemUgdGhlIHJhbmRvbSBzZXF1ZW5jZSBjYWNoZSAqL1xcbi0tXFxubW0vc2x1Yi5jPTM0NDE9c3RhdGljIHN0cnVjdCBzbGFiICphbGxvY2F0ZV9zbGFiKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBnZnBfdCBmbGFncyxcXG4tLVxcbm1tL3NsdWIuYy0zNDgwLVxcbm1tL3NsdWIuYzozNDgxOiNpZmRlZiBDT05GSUdfNjRCSVRcXG5tbS9zbHViLmMtMzQ4Mi1cXHRpZiAoY2FjaGVfbmVlZHNfb2JqY2cocykpXFxuLS1cXG5tbS9zbHViLmM9MzYzND1zdGF0aWMgdm9pZCAqYWxsb2Nfc2luZ2xlX2Zyb21fcGFydGlhbChzdHJ1Y3Qga21lbV9jYWNoZSAqcyxcXG4tLVxcbm1tL3NsdWIuYy0zNjQwLVxcbm1tL3NsdWIuYzozNjQxOiNpZmRlZiBDT05GSUdfU0xVQl9ERUJVR1xcbm1tL3NsdWIuYy0zNjQyLVxcdGlmIChzLVxcdTAwM2VmbGFncyBcXHUwMDI2IFNMQUJfQ09OU0lTVEVOQ1lfQ0hFQ0tTKSB7XFxuLS1cXG5tbS9zbHViLmM9MzY2OD1zdGF0aWMgaW5saW5lIHZvaWQgKm5leHRfc2xhYl9vYmooc3RydWN0IGttZW1fY2FjaGUgKnMsXFxuLS1cXG5tbS9zbHViLmMtMzY3MC17XFxubW0vc2x1Yi5jOjM2NzE6I2lmZGVmIENPTkZJR19TTEFCX0ZSRUVMSVNUX1JBTkRPTVxcbm1tL3NsdWIuYy0zNjcyLVxcdGlmIChpdGVyLVxcdTAwM2VyYW5kb20pIHtcXG4tLVxcbm1tL3NsdWIuYz0zNzE4PXN0YXRpYyBpbmxpbmUgdm9pZCBpbml0X3NsYWJfb2JqX2l0ZXIoc3RydWN0IGttZW1fY2FjaGUgKnMsIHN0cnVjdCBzbGFiICpzbGFiLFxcbi0tXFxubW0vc2x1Yi5jLTM3MjQtXFxubW0vc2x1Yi5jOjM3MjU6I2lmZGVmIENPTkZJR19TTEFCX0ZSRUVMSVNUX1JBTkRPTVxcbm1tL3NsdWIuYy0zNzI2LVxcdGl0ZXItXFx1MDAzZXJhbmRvbSA9IChzbGFiLVxcdTAwM2VvYmplY3RzIFxcdTAwM2U9IDIgXFx1MDAyNlxcdTAwMjYgcy1cXHUwMDNlcmFuZG9tX3NlcSk7XFxuLS1cXG5tbS9zbHViLmM9Mzk1MD1zdGF0aWMgdm9pZCAqZ2V0X2Zyb21fYW55X3BhcnRpYWwoc3RydWN0IGttZW1fY2FjaGUgKnMsIGdmcF90IGdmcF9mbGFncyxcXG4tLVxcbm1tL3NsdWIuYy0zOTUyLXtcXG5tbS9zbHViLmM6Mzk1MzojaWZkZWYgQ09ORklHX05VTUFcXG5tbS9zbHViLmMtMzk1NC1cXHRzdHJ1Y3Qgem9uZWxpc3QgKnpvbmVsaXN0O1xcbi0tXFxubW0vc2x1Yi5jPTQyNDk9c3RhdGljIGludCBzbHViX2NwdV9kZWFkKHVuc2lnbmVkIGludCBjcHUpXFxuLS1cXG5tbS9zbHViLmMtNDI2MS1cXG5tbS9zbHViLmM6NDI2MjojaWZkZWYgQ09ORklHX1NMVUJfREVCVUdcXG5tbS9zbHViLmMtNDI2My1zdGF0aWMgaW50IGNvdW50X2ZyZWUoc3RydWN0IHNsYWIgKnNsYWIpXFxuLS1cXG5tbS9zbHViLmM9NDI3ND1zdGF0aWMgaW5saW5lIGJvb2wgZnJlZV9kZWJ1Z19wcm9jZXNzaW5nKHN0cnVjdCBrbWVtX2NhY2hlICpzLFxcbi0tXFxubW0vc2x1Yi5jLTQzMzEtXFxubW0vc2x1Yi5jOjQzMzI6I2lmIGRlZmluZWQoQ09ORklHX1NMVUJfREVCVUcpIHx8IGRlZmluZWQoU0xBQl9TVVBQT1JUU19TWVNGUylcXG5tbS9zbHViLmMtNDMzMy1zdGF0aWMgdW5zaWduZWQgbG9uZyBjb3VudF9wYXJ0aWFsKHN0cnVjdCBrbWVtX2NhY2hlX25vZGUgKm4sXFxuLS1cXG5tbS9zbHViLmMtNDM0Ny1cXG5tbS9zbHViLmM6NDM0ODojaWZkZWYgQ09ORklHX1NMVUJfREVCVUdcXG5tbS9zbHViLmMtNDM0OS0jZGVmaW5lIE1BWF9QQVJUSUFMX1RPX1NDQU4gMTAwMDBcXG4tLVxcbm1tL3NsdWIuYz00NjA2PXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgaW50IGFwcGx5X3N0cmljdF9udW1hX3BvbGljeShpbnQgbm9kZSlcXG5tbS9zbHViLmMtNDYwNy17XFxubW0vc2x1Yi5jOjQ2MDg6I2lmZGVmIENPTkZJR19OVU1BXFxubW0vc2x1Yi5jLTQ2MDktXFx0aWYgKHN0YXRpY19icmFuY2hfdW5saWtlbHkoXFx1MDAyNnN0cmljdF9udW1hKSBcXHUwMDI2XFx1MDAyNlxcbi0tXFxubW0vc2x1Yi5jPTYyMjY9c3RhdGljIF9fYWx3YXlzX2lubGluZSBib29sIGNhbl9mcmVlX3RvX3BjcyhzdHJ1Y3Qgc2xhYiAqc2xhYilcXG4tLVxcbm1tL3NsdWIuYy02MjM1LVxcbm1tL3NsdWIuYzo2MjM2OiNpZmRlZiBDT05GSUdfSEFWRV9NRU1PUllMRVNTX05PREVTXFxubW0vc2x1Yi5jLTYyMzctXFx0LypcXG4tLVxcbm1tL3NsdWIuYz02NDk4PXZvaWQgc2xhYl9mcmVlKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBzdHJ1Y3Qgc2xhYiAqc2xhYiwgdm9pZCAqb2JqZWN0LFxcbi0tXFxubW0vc2x1Yi5jLTY1MTMtXFxubW0vc2x1Yi5jOjY1MTQ6I2lmZGVmIENPTkZJR19NRU1DR1xcbm1tL3NsdWIuYy02NTE1LS8qIERvIG5vdCBpbmxpbmUgdGhlIHJhcmUgbWVtY2cgY2hhcmdpbmcgZmFpbGVkIHBhdGggaW50byB0aGUgYWxsb2NhdGlvbiBwYXRoICovXFxuLS1cXG5tbS9zbHViLmM9NjUyOT12b2lkIHNsYWJfZnJlZV9idWxrKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBzdHJ1Y3Qgc2xhYiAqc2xhYiwgdm9pZCAqaGVhZCxcXG4tLVxcbm1tL3NsdWIuYy02NTQzLVxcbm1tL3NsdWIuYzo2NTQ0OiNpZmRlZiBDT05GSUdfU0xVQl9SQ1VfREVCVUdcXG5tbS9zbHViLmMtNjU0NS1zdGF0aWMgdm9pZCBzbGFiX2ZyZWVfYWZ0ZXJfcmN1X2RlYnVnKHN0cnVjdCByY3VfaGVhZCAqcmN1X2hlYWQpXFxuLS1cXG5tbS9zbHViLmMtNjU3Mi1cXG5tbS9zbHViLmM6NjU3MzojaWZkZWYgQ09ORklHX0tBU0FOX0dFTkVSSUNcXG5tbS9zbHViLmMtNjU3NC12b2lkIF9fX2NhY2hlX2ZyZWUoc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlLCB2b2lkICp4LCB1bnNpZ25lZCBsb25nIGFkZHIpXFxuLS1cXG5tbS9zbHViLmM9NjYzNT1zdGF0aWMgaW5saW5lIHNpemVfdCBzbGFiX2tzaXplKHN0cnVjdCBzbGFiICpzbGFiKVxcbi0tXFxubW0vc2x1Yi5jLTY2MzgtXFxubW0vc2x1Yi5jOjY2Mzk6I2lmZGVmIENPTkZJR19TTFVCX0RFQlVHXFxubW0vc2x1Yi5jLTY2NDAtXFx0LypcXG4tLVxcbm1tL3NsdWIuYz02NjY0PXN0YXRpYyBzaXplX3QgX19rc2l6ZShjb25zdCB2b2lkICpvYmplY3QpXFxuLS1cXG5tbS9zbHViLmMtNjY4MS1cXG5tbS9zbHViLmM6NjY4MjojaWZkZWYgQ09ORklHX1NMVUJfREVCVUdcXG5tbS9zbHViLmMtNjY4My1cXHRza2lwX29yaWdfc2l6ZV9jaGVjayhzbGFiLVxcdTAwM2VzbGFiX2NhY2hlLCBvYmplY3QpO1xcbi0tXFxubW0vc2x1Yi5jPTcyNjA9X19yZWZpbGxfb2JqZWN0c19ub2RlKHN0cnVjdCBrbWVtX2NhY2hlICpzLCB2b2lkICoqcCwgZ2ZwX3QgZ2ZwLCB1bnNpZ25lZCBpbnQgbWluLFxcbi0tXFxubW0vc2x1Yi5jLTczMzMtXFxubW0vc2x1Yi5jOjczMzQ6I2lmZGVmIENPTkZJR19OVU1BXFxubW0vc2x1Yi5jLTczMzUtc3RhdGljIHVuc2lnbmVkIGludFxcbi0tXFxubW0vc2x1Yi5jPTc2Nzc9aW5pdF9rbWVtX2NhY2hlX25vZGUoc3RydWN0IGttZW1fY2FjaGVfbm9kZSAqbilcXG4tLVxcbm1tL3NsdWIuYy03NjgxLVxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZuLVxcdTAwM2VwYXJ0aWFsKTtcXG5tbS9zbHViLmM6NzY4MjojaWZkZWYgQ09ORklHX1NMVUJfREVCVUdcXG5tbS9zbHViLmMtNzY4My1cXHRhdG9taWNfbG9uZ19zZXQoXFx1MDAyNm4tXFx1MDAzZW5yX3NsYWJzLCAwKTtcXG4tLVxcbm1tL3NsdWIuYy03Njg4LVxcbm1tL3NsdWIuYzo3Njg5OiNpZmRlZiBDT05GSUdfU0xVQl9TVEFUU1xcbm1tL3NsdWIuYy03NjkwLXN0YXRpYyBpbmxpbmUgaW50IGFsbG9jX2ttZW1fY2FjaGVfc3RhdHMoc3RydWN0IGttZW1fY2FjaGUgKnMpXFxuLS1cXG5tbS9zbHViLmM9Nzc1OD1zdGF0aWMgdm9pZCBlYXJseV9rbWVtX2NhY2hlX25vZGVfYWxsb2MoaW50IG5vZGUpXFxuLS1cXG5tbS9zbHViLmMtNzc4MS1cXG5tbS9zbHViLmM6Nzc4MjojaWZkZWYgQ09ORklHX1NMVUJfREVCVUdcXG5tbS9zbHViLmMtNzc4My1cXHRpbml0X29iamVjdChrbWVtX2NhY2hlX25vZGUsIG4sIFNMVUJfUkVEX0FDVElWRSk7XFxuLS1cXG5tbS9zbHViLmM9NzgyMD12b2lkIF9fa21lbV9jYWNoZV9yZWxlYXNlKHN0cnVjdCBrbWVtX2NhY2hlICpzKVxcbi0tXFxubW0vc2x1Yi5jLTc4MjMtXFx0cGNzX2Rlc3Ryb3kocyk7XFxubW0vc2x1Yi5jOjc4MjQ6I2lmZGVmIENPTkZJR19TTFVCX1NUQVRTXFxubW0vc2x1Yi5jLTc4MjUtXFx0ZnJlZV9wZXJjcHUocy1cXHUwMDNlY3B1X3N0YXRzKTtcXG4tLVxcbm1tL3NsdWIuYz03OTIwPXN0YXRpYyBpbnQgY2FsY3VsYXRlX3NpemVzKHN0cnVjdCBrbWVtX2NhY2hlX2FyZ3MgKmFyZ3MsIHN0cnVjdCBrbWVtX2NhY2hlICpzKVxcbi0tXFxubW0vc2x1Yi5jLTc5MzMtXFxubW0vc2x1Yi5jOjc5MzQ6I2lmZGVmIENPTkZJR19TTFVCX0RFQlVHXFxubW0vc2x1Yi5jLTc5MzUtXFx0LypcXG4tLVxcbm1tL3NsdWIuYy03OTk2LVxcbm1tL3NsdWIuYzo3OTk3OiNpZmRlZiBDT05GSUdfU0xVQl9ERUJVR1xcbm1tL3NsdWIuYy03OTk4LVxcdGlmIChmbGFncyBcXHUwMDI2IFNMQUJfU1RPUkVfVVNFUikge1xcbi0tXFxubW0vc2x1Yi5jLTgwMTEtXFx0a2FzYW5fY2FjaGVfY3JlYXRlKHMsIFxcdTAwMjZzaXplLCBcXHUwMDI2cy1cXHUwMDNlZmxhZ3MpO1xcbm1tL3NsdWIuYzo4MDEyOiNpZmRlZiBDT05GSUdfU0xVQl9ERUJVR1xcbm1tL3NsdWIuYy04MDEzLVxcdGlmIChmbGFncyBcXHUwMDI2IFNMQUJfUkVEX1pPTkUpIHtcXG4tLVxcbm1tL3NsdWIuYy04MDM0LVxcdGFsaWduZWRfc2l6ZSA9IEFMSUdOKHNpemUsIHMtXFx1MDAzZWFsaWduKTtcXG5tbS9zbHViLmM6ODAzNTojaWYgZGVmaW5lZChDT05GSUdfU0xBQl9PQkpfRVhUKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKENPTkZJR182NEJJVClcXG5tbS9zbHViLmMtODAzNi1cXHRpZiAoc2xhYl9hcmdzX3VubWVyZ2VhYmxlKGFyZ3MsIHMtXFx1MDAzZWZsYWdzKSBcXHUwMDI2XFx1MDAyNlxcbi0tXFxubW0vc2x1Yi5jPTgwNzY9c3RhdGljIHZvaWQgbGlzdF9zbGFiX29iamVjdHMoc3RydWN0IGttZW1fY2FjaGUgKnMsIHN0cnVjdCBzbGFiICpzbGFiKVxcbm1tL3NsdWIuYy04MDc3LXtcXG5tbS9zbHViLmM6ODA3ODojaWZkZWYgQ09ORklHX1NMVUJfREVCVUdcXG5tbS9zbHViLmMtODA3OS1cXHR2b2lkICphZGRyID0gc2xhYl9hZGRyZXNzKHNsYWIpO1xcbi0tXFxubW0vc2x1Yi5jPTgxNDM9aW50IF9fa21lbV9jYWNoZV9zaHV0ZG93bihzdHJ1Y3Qga21lbV9jYWNoZSAqcylcXG4tLVxcbm1tL3NsdWIuYy04MTY5LVxcbm1tL3NsdWIuYzo4MTcwOiNpZmRlZiBDT05GSUdfUFJJTlRLXFxubW0vc2x1Yi5jLTgxNzEtdm9pZCBfX2ttZW1fb2JqX2luZm8oc3RydWN0IGttZW1fb2JqX2luZm8gKmtwcCwgdm9pZCAqb2JqZWN0LCBzdHJ1Y3Qgc2xhYiAqc2xhYilcXG4tLVxcbm1tL3NsdWIuYy04MTg1LVxcdG9ianAwID0ga2FzYW5fcmVzZXRfdGFnKG9iamVjdCk7XFxubW0vc2x1Yi5jOjgxODY6I2lmZGVmIENPTkZJR19TTFVCX0RFQlVHXFxubW0vc2x1Yi5jLTgxODctXFx0b2JqcCA9IHJlc3RvcmVfcmVkX2xlZnQocywgb2JqcDApO1xcbi0tXFxubW0vc2x1Yi5jLTgxOTgtXFx0XFx0cmV0dXJuO1xcbm1tL3NsdWIuYzo4MTk5OiNpZmRlZiBDT05GSUdfU0xVQl9ERUJVR1xcbm1tL3NsdWIuYy04MjAwLVxcdG9ianAgPSBmaXh1cF9yZWRfbGVmdChzLCBvYmpwKTtcXG4tLVxcbm1tL3NsdWIuYy04MjAyLVxcdGtwcC1cXHUwMDNla3BfcmV0ID0gKHZvaWQgKil0cmFja3AtXFx1MDAzZWFkZHI7XFxubW0vc2x1Yi5jOjgyMDM6I2lmZGVmIENPTkZJR19TVEFDS0RFUE9UXFxubW0vc2x1Yi5jLTgyMDQtXFx0e1xcbi0tXFxubW0vc2x1Yi5jPTgyNzY9Y29yZV9wYXJhbShzbHViX21pbl9vYmplY3RzLCBzbHViX21pbl9vYmplY3RzLCB1aW50LCAwKTtcXG5tbS9zbHViLmMtODI3Ny1cXG5tbS9zbHViLmM6ODI3ODojaWZkZWYgQ09ORklHX05VTUFcXG5tbS9zbHViLmMtODI3OS1zdGF0aWMgaW50IF9faW5pdCBzZXR1cF9zbGFiX3N0cmljdF9udW1hKGNvbnN0IGNoYXIgKnN0ciwgY29uc3Qgc3RydWN0IGtlcm5lbF9wYXJhbSAqa3ApXFxuLS1cXG5tbS9zbHViLmM9ODI5NT1fX2NvcmVfcGFyYW1fY2Ioc2xhYl9zdHJpY3RfbnVtYSwgXFx1MDAyNnBhcmFtX29wc19zbGFiX3N0cmljdF9udW1hLCBOVUxMLCAwKTtcXG4tLVxcbm1tL3NsdWIuYy04Mjk4LVxcbm1tL3NsdWIuYzo4Mjk5OiNpZmRlZiBDT05GSUdfSEFSREVORURfVVNFUkNPUFlcXG5tbS9zbHViLmMtODMwMC0vKlxcbi0tXFxubW0vc2x1Yi5jPTg1NDQ9c3RhdGljIHN0cnVjdCBrbWVtX2NhY2hlICogX19pbml0IGJvb3RzdHJhcChzdHJ1Y3Qga21lbV9jYWNoZSAqc3RhdGljX2NhY2hlKVxcbi0tXFxubW0vc2x1Yi5jLTg1NTctXFxubW0vc2x1Yi5jOjg1NTg6I2lmZGVmIENPTkZJR19TTFVCX0RFQlVHXFxubW0vc2x1Yi5jLTg1NTktXFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeShwLCBcXHUwMDI2bi1cXHUwMDNlZnVsbCwgc2xhYl9saXN0KVxcbi0tXFxubW0vc2x1Yi5jPTg3MDU9dm9pZCBfX2luaXQga21lbV9jYWNoZV9pbml0X2xhdGUodm9pZClcXG4tLVxcbm1tL3NsdWIuYy04NzA5LVxcdFdBUk5fT04oIWZsdXNod3EpO1xcbm1tL3NsdWIuYzo4NzEwOiNpZmRlZiBDT05GSUdfU0xBQl9GUkVFTElTVF9SQU5ET01cXG5tbS9zbHViLmMtODcxMS1cXHRwcmFuZG9tX2luaXRfb25jZShcXHUwMDI2c2xhYl9ybmRfc3RhdGUpO1xcbi0tXFxubW0vc2x1Yi5jPTg3MTU9aW50IGRvX2ttZW1fY2FjaGVfY3JlYXRlKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBjb25zdCBjaGFyICpuYW1lLFxcbi0tXFxubW0vc2x1Yi5jLTg3MjQtXFx0cy1cXHUwMDNlZmxhZ3MgPSBrbWVtX2NhY2hlX2ZsYWdzKGZsYWdzLCBzLVxcdTAwM2VuYW1lKTtcXG5tbS9zbHViLmM6ODcyNTojaWZkZWYgQ09ORklHX1NMQUJfRlJFRUxJU1RfSEFSREVORURcXG5tbS9zbHViLmMtODcyNi1cXHRzLVxcdTAwM2VyYW5kb20gPSBnZXRfcmFuZG9tX2xvbmcoKTtcXG4tLVxcbm1tL3NsdWIuYy04NzI5LVxcdHMtXFx1MDAzZWN0b3IgPSBhcmdzLVxcdTAwM2VjdG9yO1xcbm1tL3NsdWIuYzo4NzMwOiNpZmRlZiBDT05GSUdfSEFSREVORURfVVNFUkNPUFlcXG5tbS9zbHViLmMtODczMS1cXHRzLVxcdTAwM2V1c2Vyb2Zmc2V0ID0gYXJncy1cXHUwMDNldXNlcm9mZnNldDtcXG4tLVxcbm1tL3NsdWIuYy04NzQ5LVxcbm1tL3NsdWIuYzo4NzUwOiNpZmRlZiBzeXN0ZW1faGFzX2ZyZWVsaXN0X2FiYVxcbm1tL3NsdWIuYy04NzUxLVxcdGlmIChzeXN0ZW1faGFzX2ZyZWVsaXN0X2FiYSgpIFxcdTAwMjZcXHUwMDI2ICEocy1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBTTEFCX05PX0NNUFhDSEcpKSB7XFxuLS1cXG5tbS9zbHViLmMtODc2OS1cXG5tbS9zbHViLmM6ODc3MDojaWZkZWYgQ09ORklHX05VTUFcXG5tbS9zbHViLmMtODc3MS1cXHRzLVxcdTAwM2VyZW1vdGVfbm9kZV9kZWZyYWdfcmF0aW8gPSAxMDAwO1xcbi0tXFxubW0vc2x1Yi5jLTg3ODItXFxubW0vc2x1Yi5jOjg3ODM6I2lmZGVmIENPTkZJR19TTFVCX1NUQVRTXFxubW0vc2x1Yi5jLTg3ODQtXFx0aWYgKCFhbGxvY19rbWVtX2NhY2hlX3N0YXRzKHMpKVxcbi0tXFxubW0vc2x1Yi5jLTg4MTMtXFxubW0vc2x1Yi5jOjg4MTQ6I2lmZGVmIFNMQUJfU1VQUE9SVFNfU1lTRlNcXG5tbS9zbHViLmMtODgxNS1zdGF0aWMgaW50IGNvdW50X2ludXNlKHN0cnVjdCBzbGFiICpzbGFiKVxcbi0tXFxubW0vc2x1Yi5jPTg4MjA9c3RhdGljIGludCBjb3VudF90b3RhbChzdHJ1Y3Qgc2xhYiAqc2xhYilcXG4tLVxcbm1tL3NsdWIuYy04ODI1LVxcbm1tL3NsdWIuYzo4ODI2OiNpZmRlZiBDT05GSUdfU0xVQl9ERUJVR1xcbm1tL3NsdWIuYy04ODI3LXN0YXRpYyB2b2lkIHZhbGlkYXRlX3NsYWIoc3RydWN0IGttZW1fY2FjaGUgKnMsIHN0cnVjdCBzbGFiICpzbGFiLFxcbi0tXFxubW0vc2x1Yi5jPTg5MDg9RVhQT1JUX1NZTUJPTCh2YWxpZGF0ZV9zbGFiX2NhY2hlKTtcXG5tbS9zbHViLmMtODkwOS1cXG5tbS9zbHViLmM6ODkxMDojaWZkZWYgQ09ORklHX0RFQlVHX0ZTXFxubW0vc2x1Yi5jLTg5MTEtLypcXG4tLVxcbm1tL3NsdWIuYz04OTY2PXN0YXRpYyBpbnQgYWRkX2xvY2F0aW9uKHN0cnVjdCBsb2NfdHJhY2sgKnQsIHN0cnVjdCBrbWVtX2NhY2hlICpzLFxcbi0tXFxubW0vc2x1Yi5jLTg5NzYtXFxubW0vc2x1Yi5jOjg5Nzc6I2lmZGVmIENPTkZJR19TVEFDS0RFUE9UXFxubW0vc2x1Yi5jLTg5NzgtXFx0aGFuZGxlID0gUkVBRF9PTkNFKHRyYWNrLVxcdTAwM2VoYW5kbGUpO1xcbi0tXFxubW0vc2x1Yi5jPTkwNTg9c3RhdGljIHZvaWQgcHJvY2Vzc19zbGFiKHN0cnVjdCBsb2NfdHJhY2sgKnQsIHN0cnVjdCBrbWVtX2NhY2hlICpzLFxcbi0tXFxubW0vc2x1Yi5jLTkwNzYtXFxubW0vc2x1Yi5jOjkwNzc6I2lmZGVmIFNMQUJfU1VQUE9SVFNfU1lTRlNcXG5tbS9zbHViLmMtOTA3OC1lbnVtIHNsYWJfc3RhdF90eXBlIHtcXG4tLVxcbm1tL3NsdWIuYz05MDkwPXN0YXRpYyBzc2l6ZV90IHNob3dfc2xhYl9vYmplY3RzKHN0cnVjdCBrbWVtX2NhY2hlICpzLFxcbi0tXFxubW0vc2x1Yi5jLTkxMTMtXFxubW0vc2x1Yi5jOjkxMTQ6I2lmZGVmIENPTkZJR19TTFVCX0RFQlVHXFxubW0vc2x1Yi5jLTkxMTUtXFx0aWYgKGZsYWdzIFxcdTAwMjYgU09fQUxMKSB7XFxuLS1cXG5tbS9zbHViLmMtOTE0Ny1cXHRsZW4gKz0gc3lzZnNfZW1pdF9hdChidWYsIGxlbiwgXFxcIiVsdVxcXCIsIHRvdGFsKTtcXG5tbS9zbHViLmM6OTE0ODojaWZkZWYgQ09ORklHX05VTUFcXG5tbS9zbHViLmMtOTE0OS1cXHRmb3IgKG5vZGUgPSAwOyBub2RlIFxcdTAwM2MgbnJfbm9kZV9pZHM7IG5vZGUrKykge1xcbi0tXFxubW0vc2x1Yi5jPTkzMDE9U0xBQl9BVFRSX1JPKGh3Y2FjaGVfYWxpZ24pO1xcbm1tL3NsdWIuYy05MzAyLVxcbm1tL3NsdWIuYzo5MzAzOiNpZmRlZiBDT05GSUdfWk9ORV9ETUFcXG5tbS9zbHViLmMtOTMwNC1zdGF0aWMgc3NpemVfdCBjYWNoZV9kbWFfc2hvdyhzdHJ1Y3Qga21lbV9jYWNoZSAqcywgY2hhciAqYnVmKVxcbi0tXFxubW0vc2x1Yi5jPTkzMDg9U0xBQl9BVFRSX1JPKGNhY2hlX2RtYSk7XFxuLS1cXG5tbS9zbHViLmMtOTMxMC1cXG5tbS9zbHViLmM6OTMxMTojaWZkZWYgQ09ORklHX0hBUkRFTkVEX1VTRVJDT1BZXFxubW0vc2x1Yi5jLTkzMTItc3RhdGljIHNzaXplX3QgdXNlcnNpemVfc2hvdyhzdHJ1Y3Qga21lbV9jYWNoZSAqcywgY2hhciAqYnVmKVxcbi0tXFxubW0vc2x1Yi5jPTkzMjM9U0xBQl9BVFRSX1JPKGRlc3Ryb3lfYnlfcmN1KTtcXG5tbS9zbHViLmMtOTMyNC1cXG5tbS9zbHViLmM6OTMyNTojaWZkZWYgQ09ORklHX1NMVUJfREVCVUdcXG5tbS9zbHViLmMtOTMyNi1zdGF0aWMgc3NpemVfdCBzbGFic19zaG93KHN0cnVjdCBrbWVtX2NhY2hlICpzLCBjaGFyICpidWYpXFxuLS1cXG5tbS9zbHViLmM9OTM5ND1TTEFCX0FUVFIodmFsaWRhdGUpO1xcbi0tXFxubW0vc2x1Yi5jLTkzOTctXFxubW0vc2x1Yi5jOjkzOTg6I2lmZGVmIENPTkZJR19GQUlMU0xBQlxcbm1tL3NsdWIuYy05Mzk5LXN0YXRpYyBzc2l6ZV90IGZhaWxzbGFiX3Nob3coc3RydWN0IGttZW1fY2FjaGUgKnMsIGNoYXIgKmJ1ZilcXG4tLVxcbm1tL3NsdWIuYz05NDM0PVNMQUJfQVRUUihzaHJpbmspO1xcbm1tL3NsdWIuYy05NDM1LVxcbm1tL3NsdWIuYzo5NDM2OiNpZmRlZiBDT05GSUdfTlVNQVxcbm1tL3NsdWIuYy05NDM3LXN0YXRpYyBzc2l6ZV90IHJlbW90ZV9ub2RlX2RlZnJhZ19yYXRpb19zaG93KHN0cnVjdCBrbWVtX2NhY2hlICpzLCBjaGFyICpidWYpXFxuLS1cXG5tbS9zbHViLmM9OTQ1OD1TTEFCX0FUVFIocmVtb3RlX25vZGVfZGVmcmFnX3JhdGlvKTtcXG4tLVxcbm1tL3NsdWIuYy05NDYwLVxcbm1tL3NsdWIuYzo5NDYxOiNpZmRlZiBDT05GSUdfU0xVQl9TVEFUU1xcbm1tL3NsdWIuYy05NDYyLXN0YXRpYyBpbnQgc2hvd19zdGF0KHN0cnVjdCBrbWVtX2NhY2hlICpzLCBjaGFyICpidWYsIGVudW0gc3RhdF9pdGVtIHNpKVxcbi0tXFxubW0vc2x1Yi5jLTk0ODAtXFxubW0vc2x1Yi5jOjk0ODE6I2lmZGVmIENPTkZJR19TTVBcXG5tbS9zbHViLmMtOTQ4Mi1cXHRmb3JfZWFjaF9vbmxpbmVfY3B1KGNwdSkge1xcbi0tXFxubW0vc2x1Yi5jPTk1NDI9U1RBVF9BVFRSKFNIRUFGX1JFVFVSTl9TTE9XLCBzaGVhZl9yZXR1cm5fc2xvdyk7XFxuLS1cXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDI6NTI6NTEuNzA1MzU0NzM4WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU4NjEyMjgwODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBBbmFseXNpczogYF9fX2ttYWxsb2NfbGFyZ2Vfbm9kZWAgTW9kaWZpY2F0aW9uKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgYENPTkZJR19TTFVCYCBpcyBlbmFibGVkIGJ5IGRlZmF1bHQsIHNvIHdlJ3JlIGdvb2QgdGhlcmUuIFRoZSBjb3JlIHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBjaGFuZ2Ugd2FycmFudHMgZnV6emluZy4gV2UncmUgbG9va2luZyBhdCBpbnB1dCB2YWxpZGF0aW9uIGFkZGVkIHRvIGBfX19rbWFsbG9jX2xhcmdlX25vZGVgLiBMZXQncyByZS1yZWFkIHRoZSBmdXp6aW5nIGd1aWRlbGluZXMuIFdlIGhhdmUgdG8gY29uc2lkZXIgd2hldGhlciB0aGlzIGNoYW5nZSBpcyB3b3J0aCBmdXp6aW5nLlxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaWRlbnRpZnkgdGhlIG5vbi1zdGF0aWMgZW50cnlwb2ludCBmdW5jdGlvbnMgdG8gYmUgZnV6emVkIGFzIEZvY3VzU3ltYm9scy4gT2theSwgc28gd2UgaGF2ZSBgX19rbWFsbG9jX2xhcmdlX25vcHJvZmAgYW5kIGBfX2ttYWxsb2NfbGFyZ2Vfbm9kZV9ub3Byb2ZgLiBBcmUgdGhlc2UgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnM/IE5vLCBiZWNhdXNlIGBfX2ttYWxsb2NfbGFyZ2Vfbm9wcm9mYCBoYW5kbGVzIGFsbG9jYXRpb25zICpsYXJnZXIqIHRoYW4gdGhlIHNsYWIgY2FjaGVzLiBUaGVyZWZvcmUsIHRob3NlIGFyZSBwZXJmZWN0LiBHb29kLlxuXG5Ob3csIGNvbnNpZGVyaW5nIHRoZSBgV29ydGhGdXp6aW5nYCBjcml0ZXJpYS4uLiBUaGlzIGlzbid0IGp1c3QgZG9jdW1lbnRhdGlvbiBvciBkZWNvcmF0aXZlLCBpdCBmdW5jdGlvbmFsbHkgYWx0ZXJzIGV4ZWN1dGlvbiBmbG93LCBieSB2YWxpZGF0aW5nIGlucHV0LiBJdCdzIGEgcmVhY2hhYmxlIHBhcnQgb2YgdGhlIFNMVUIgYWxsb2NhdG9yLiBUaGVyZWZvcmUsIHRoZSBjaGFuZ2UgZG9lcyBtZXJpdCBmdXp6aW5nLlxuXG5BbHJpZ2h0LCBzbyBgV29ydGhGdXp6aW5nYCBpcyBkZWZpbml0ZWx5IGB0cnVlYC4gTm93LCBsZXQncyBsaXN0IG91ciBgRm9jdXNTeW1ib2xzYCBhZ2FpbjogYF9fa21hbGxvY19sYXJnZV9ub3Byb2ZgIGFuZCBgX19rbWFsbG9jX2xhcmdlX25vZGVfbm9wcm9mYC5cblxuRmluYWxseSwgZm9yIGBFbmFibGVDb25maWdzYCwgd2UgaGF2ZSBgU0xVQmAsIHdoaWNoIGlzIGFscmVhZHkgZW5hYmxlZC4gTG9va2luZyBhdCBgbW0vS2NvbmZpZ2AsIGl0J3MgY29uZmlybWVkLiBOb3RoaW5nIGVsc2Ugc3BlY2lmaWMgaXMgcmVxdWlyZWQsIGJ1dCB3ZSBjYW4gZGVmaW5pdGVseSBpbmNsdWRlIGBTTFVCYCBpbiB0aGUgYEVuYWJsZUNvbmZpZ3NgLlxuXG5CZWZvcmUgY2FsbGluZyBgc2V0LXJlc3VsdHNgLCBsZXQncyB2ZXJpZnkgYWdhaW46IGBXb3J0aEZ1enppbmc9dHJ1ZWAsIGBGb2N1c1N5bWJvbHNgIGlzIGBfX2ttYWxsb2NfbGFyZ2Vfbm9wcm9mYCBhbmQgYF9fa21hbGxvY19sYXJnZV9ub2RlX25vcHJvZmAsIGFuZCBgRW5hYmxlQ29uZmlnc2AgY2FuIGluY2x1ZGUgYFNMVUJgIChhbHRob3VnaCBpdCdzIGFscmVhZHkgZW5hYmxlZCBieSBkZWZhdWx0KS4gRG9uZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgxMDIsIk91dHB1dFRva2VucyI6MTI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDAyOjUyOjU3LjU2NjU4NDg4MloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc2NTc2NTI0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTTFVCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19rbWFsbG9jX2xhcmdlX25vcHJvZlwiLFxuICAgIFwiX19rbWFsbG9jX2xhcmdlX25vZGVfbm9wcm9mXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBtZW1vcnkgYWxsb2NhdGlvbiBsb2dpYyBpbiB0aGUgU0xVQiBhbGxvY2F0b3IgKG1tL3NsdWIuYyksIGFkZGluZyBhIHNpemUgYm91bmRhcnkgY2hlY2sgYWdhaW5zdCBLTUFMTE9DX01BWF9TSVpFIGluIF9fX2ttYWxsb2NfbGFyZ2Vfbm9kZSgpIHRvIHByZXZlbnQgb3ZlcnNpemVkIG9yZGVyIGNhbGN1bGF0aW9ucyBhbmQgZ3JhY2VmdWxseSBmYWlsIHdpdGggYSB3YXJuaW5nLiBUaGlzIG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyBhbmQgYWZmZWN0cyBsYXJnZSBrbWFsbG9jIGFsbG9jYXRpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNMVUJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2ttYWxsb2NfbGFyZ2Vfbm9wcm9mXCIsXG4gICAgXCJfX2ttYWxsb2NfbGFyZ2Vfbm9kZV9ub3Byb2ZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBjb3JlIG1lbW9yeSBhbGxvY2F0aW9uIGxvZ2ljIGluIHRoZSBTTFVCIGFsbG9jYXRvciAobW0vc2x1Yi5jKSwgYWRkaW5nIGEgc2l6ZSBib3VuZGFyeSBjaGVjayBhZ2FpbnN0IEtNQUxMT0NfTUFYX1NJWkUgaW4gX19fa21hbGxvY19sYXJnZV9ub2RlKCkgdG8gcHJldmVudCBvdmVyc2l6ZWQgb3JkZXIgY2FsY3VsYXRpb25zIGFuZCBncmFjZWZ1bGx5IGZhaWwgd2l0aCBhIHdhcm5pbmcuIFRoaXMgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIGFuZCBhZmZlY3RzIGxhcmdlIGttYWxsb2MgYWxsb2NhdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDAyOjUyOjU3LjY0MzE2ODA0N1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUxODg3MTkzNDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwMjo1Mjo1Ny42NDM2MjM1ODdaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoxNTE4ODI2MDM3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHNhbml0eSBjaGVjayAoYFdBUk5fT05fT05DRV9HRlAoc2l6ZSBcXHUwMDNlIEtNQUxMT0NfTUFYX1NJWkUsIGZsYWdzKWApIGluIGBfX19rbWFsbG9jX2xhcmdlX25vZGUoKWAgdG8gcmVqZWN0IGFsbG9jYXRpb25zIGV4Y2VlZGluZyBgS01BTExPQ19NQVhfU0laRWAgYnkgcmV0dXJuaW5nIGBOVUxMYC5cXG5cXG5UaGlzIG1vZGlmaWNhdGlvbiBvbmx5IGFkZHMgZGVmZW5zaXZlIHBhcmFtZXRlciB2YWxpZGF0aW9uIHRvIHRoZSBTTFVCIGxhcmdlIGFsbG9jYXRpb24gcGF0aC4gSXQgZG9lcyBub3QgaW50cm9kdWNlLCBleHBvc2UsIG9yIG1hbmlwdWxhdGUgdW5pbml0aWFsaXplZCBtZW1vcnksIGRvZXMgbm90IGFsdGVyIGJ1ZmZlciBpbml0aWFsaXphdGlvbiBvciBzdHJ1Y3QgcGFkZGluZywgYW5kIGRvZXMgbm90IHRvdWNoIGRhdGEgcGFzc2VkIHRvIHVzZXIgc3BhY2UuIEFueSBidWdzIHJlbGF0ZWQgdG8gZmFpbGVkIGFsbG9jYXRpb25zIChzdWNoIGFzIG1pc3NpbmcgTlVMTC1jaGVja3MgaW4gY2FsbGVycykgYXJlIHN0YW5kYXJkIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmUgaGFuZGxpbmcgY2F1Z2h0IGJ5IHN0YW5kYXJkIHRlc3RpbmcvS0FTQU4uIFRoZXJlZm9yZSwgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDcyOGQ5MmY5MDFmN2E1MjdjY2IwMTQzNTQ1YjRiMjllZjQzOWE3ZWFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzMSAwMjo1MjoxNCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL3NsdWIuYyBiL21tL3NsdWIuY1xuaW5kZXggZjliNTZjYjQzOWU3MC4uMjNlNTdhOGZlNTViNCAxMDA2NDRcbi0tLSBhL21tL3NsdWIuY1xuKysrIGIvbW0vc2x1Yi5jXG5AQCAtNTM0Miw3ICs1MzQyLDEyIEBAIHN0YXRpYyB2b2lkICpfX19rbWFsbG9jX2xhcmdlX25vZGUoc2l6ZV90IHNpemUsIGdmcF90IGZsYWdzLCBpbnQgbm9kZSlcbiB7XG4gXHRzdHJ1Y3QgcGFnZSAqcGFnZTtcbiBcdHZvaWQgKnB0ciA9IE5VTEw7XG4tXHR1bnNpZ25lZCBpbnQgb3JkZXIgPSBnZXRfb3JkZXIoc2l6ZSk7XG4rXHR1bnNpZ25lZCBpbnQgb3JkZXI7XG4rXG4rXHRpZiAoV0FSTl9PTl9PTkNFX0dGUChzaXplIFx1MDAzZSBLTUFMTE9DX01BWF9TSVpFLCBmbGFncykpXG4rXHRcdHJldHVybiBOVUxMO1xuK1xuK1x0b3JkZXIgPSBnZXRfb3JkZXIoc2l6ZSk7XG4gXG4gXHRpZiAodW5saWtlbHkoZmxhZ3MgXHUwMDI2IEdGUF9TTEFCX0JVR19NQVNLKSlcbiBcdFx0ZmxhZ3MgPSBrbWFsbG9jX2ZpeF9mbGFncyhmbGFncyk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwMjo1Mjo1Ny42NDM2MjQzODdaIiwiU2VxIjoyMywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjAwNTM1MzgwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBNZW1vcnkgQWxsb2NhdGlvbiBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQncyBzcGVjaWZpY2FsbHkgdG91Y2hpbmcgYG1tL3NsdWIuY2AsIGFuZCBtb3JlIHByZWNpc2VseSwgdGhlIGBfX19rbWFsbG9jX2xhcmdlX25vZGVgIGZ1bmN0aW9uLiBUaGlzIGlzIHNpZ25pZmljYW50IGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBoYW5kbGVzIGxhcmdlIGtlcm5lbCBtZW1vcnkgYWxsb2NhdGlvbnMgd2l0aGluIHRoZSBTTFVCIGFsbG9jYXRvci4gTXkgaW5pdGlhbCBvYnNlcnZhdGlvbiBpcyB0aGF0IHRoZXkndmUgaW50cm9kdWNlZCBhIGNoZWNrIHJlbGF0ZWQgdG8gYEtNQUxMT0NfTUFYX1NJWkVgIGJlZm9yZSBjYWxjdWxhdGluZyB0aGUgYWxsb2NhdGlvbiBvcmRlci5cblxuVGhlIG9yaWdpbmFsIGNvZGUgZGlyZWN0bHkgY2FsY3VsYXRlZCB0aGUgYG9yZGVyYCB1c2luZyBgZ2V0X29yZGVyKHNpemUpYC4gTm93LCB0aGVyZSdzIGEgY29uZGl0aW9uYWwgY2hlY2s6IGBpZiAoV0FSTl9PTl9PTkNFX0dGUChzaXplIFx1MDAzZSBLTUFMTE9DX01BWF9TSVpFLCBmbGFncykpIHJldHVybiBOVUxMO2AgYmVmb3JlIGRldGVybWluaW5nIHRoZSBvcmRlci4gVGhpcyBpcyBhIGNydWNpYWwgYWRkaXRpb24uIEl0IGFwcGVhcnMgdGhlIGludGVudCBpcyB0byBwcmV2ZW50IGFsbG9jYXRpbmcgbWVtb3J5IHNpemVzIGV4Y2VlZGluZyBhIGRlZmluZWQgbWF4aW11bSwgYEtNQUxMT0NfTUFYX1NJWkVgLCB3aGljaCBwcm9iYWJseSBoYXMgaW1wbGljYXRpb25zIGZvciBTTFVCJ3MgaW50ZXJuYWwgc3RydWN0dXJlcyBvciBmcmFnbWVudGF0aW9uIGlzc3VlcyB3aXRoIGV4dHJlbWVseSBsYXJnZSBhbGxvY2F0aW9ucy4gQSB3YXJuaW5nIGlzIHRyaWdnZXJlZCBpZiB0aGlzIGNvbmRpdGlvbiBvY2N1cnMsIHByb2JhYmx5IHRvIGFsZXJ0IGRldmVsb3BlcnMgYWJvdXQgaW5jb3JyZWN0IHVzYWdlLlxuXG5JJ2xsIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBkZWZpbml0aW9uIG9mIGBLTUFMTE9DX01BWF9TSVpFYCB0byB1bmRlcnN0YW5kIHRoZSByYXRpb25hbGUgYmVoaW5kIHRoaXMgbGltaXQgYW5kIHdoYXQgdGhlIGltcGxpY2F0aW9ucyBhcmUgZm9yIGFsbG9jYXRpb24gYmVoYXZpb3IuIEFsc28sIHRoZSBga21hbGxvY19maXhfZmxhZ3NgIGNhbGwgaXMgc3RpbGwgcHJlc2VudCwgc28gSSBzaG91bGQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgZmxhZyBpbnRlcmFjdGlvbnMgZHVlIHRvIHRoaXMgY2hlY2suIEkgYWxzbyBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5IHRoaXMgd2FzIGFkZGVkLCBhcmUgd2UgdHJ5aW5nIHRvIHByZXZlbnQgcG90ZW50aWFsIGRlbmlhbC1vZi1zZXJ2aWNlLCBvdXQgb2YgbWVtb3J5IGNvbmRpdGlvbnMsIG9yIG1heWJlIGVuZm9yY2Ugc29tZSBhcmNoaXRlY3R1cmFsIGNvbnN0cmFpbnRzPyBJIHNob3VsZCByZXZpZXcgdGhlIGNvbW1pdCBtZXNzYWdlIGFuZCBzdXJyb3VuZGluZyBjb2RlIHRvIGdldCBhIGNvbXBsZXRlIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMDUsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwMjo1MzowMy42NDg5ODE1MDFaIiwiU2VxIjoyNCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4MzgxMDg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9fX2ttYWxsb2NfbGFyZ2Vfbm9kZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vc2x1Yi5jPTUzMzI9dW5zaWduZWQgaW50IGttZW1fY2FjaGVfc2hlYWZfc2l6ZShzdHJ1Y3Qgc2xhYl9zaGVhZiAqc2hlYWYpXFxuLS1cXG5tbS9zbHViLmMtNTM0MC0gKi9cXG5tbS9zbHViLmM6NTM0MTpzdGF0aWMgdm9pZCAqX19fa21hbGxvY19sYXJnZV9ub2RlKHNpemVfdCBzaXplLCBnZnBfdCBmbGFncywgaW50IG5vZGUpXFxubW0vc2x1Yi5jLTUzNDIte1xcbi0tXFxubW0vc2x1Yi5jPTUzNzg9dm9pZCAqX19rbWFsbG9jX2xhcmdlX25vcHJvZihzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3MpXFxubW0vc2x1Yi5jLTUzNzkte1xcbm1tL3NsdWIuYzo1MzgwOlxcdHZvaWQgKnJldCA9IF9fX2ttYWxsb2NfbGFyZ2Vfbm9kZShzaXplLCBmbGFncywgTlVNQV9OT19OT0RFKTtcXG5tbS9zbHViLmMtNTM4MS1cXG4tLVxcbm1tL3NsdWIuYz01Mzg4PXZvaWQgKl9fa21hbGxvY19sYXJnZV9ub2RlX25vcHJvZihzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3MsIGludCBub2RlKVxcbm1tL3NsdWIuYy01Mzg5LXtcXG5tbS9zbHViLmM6NTM5MDpcXHR2b2lkICpyZXQgPSBfX19rbWFsbG9jX2xhcmdlX25vZGUoc2l6ZSwgZmxhZ3MsIG5vZGUpO1xcbm1tL3NsdWIuYy01MzkxLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwMjo1MzowMy42OTczNjYxMDdaIiwiU2VxIjoyNSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDk2MzkzNjg2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEaXZpbmcgaW50byBgbW0vc2x1Yi5jYCoqXG5cbk9rYXksIEkgbmVlZCB0byBnZXQgaW50byB0aGUgbml0dHktZ3JpdHR5IG9mIHRoZSBTTFVCIGFsbG9jYXRvci4gTGV0J3Mgc3RhcnQgYnkgbG9va2luZyBhdCBgbW0vc2x1Yi5jYCDigJMgdGhhdCdzIHdoZXJlIHRoZSBjb3JlIGltcGxlbWVudGF0aW9uIHJlc2lkZXMuIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBhcm91bmQgbGluZSA1MzQwLiBUaGF0IGxvY2F0aW9uIGlzIHVzdWFsbHkgaW4gdGhlIHZpY2luaXR5IG9mIGNyaXRpY2FsIFNMVUIgZnVuY3Rpb25zLCBsaWtlbHkgcmVsYXRlZCB0byBvYmplY3QgYWxsb2NhdGlvbiwgZnJlZWluZywgb3Igc2xhYiBtYW5hZ2VtZW50LiBJIGFudGljaXBhdGUgZmluZGluZyBjb2RlIGRlYWxpbmcgd2l0aCBjYWNoZSBzdHJ1Y3R1cmUgdHJhdmVyc2FsIG9yIG9iamVjdCBpbml0aWFsaXphdGlvbiBwcm9jZWR1cmVzIGluIHRoYXQgcmVnaW9uLiBJIG5lZWQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBmdW5kYW1lbnRhbCBhbGxvY2F0aW9uIGZsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5NzcsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwMjo1MzowOC42NjEzMDY3NzZaIiwiU2VxIjoyNiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA5MjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm1tL3NsdWIuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA1MzM1LFxuICBcIkxpbmVDb3VudFwiOiA2MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCI1MzM1OlxcdH1cXG41MzM2OlxcdC8qXFxuNTMzNzpcXHQgKiBUbyBhdm9pZCB1bm5lY2Vzc2FyeSBvdmVyaGVhZCwgd2UgcGFzcyB0aHJvdWdoIGxhcmdlIGFsbG9jYXRpb24gcmVxdWVzdHNcXG41MzM4OlxcdCAqIGRpcmVjdGx5IHRvIHRoZSBwYWdlIGFsbG9jYXRvci4gV2UgdXNlIF9fR0ZQX0NPTVAsIGJlY2F1c2Ugd2Ugd2lsbCBuZWVkIHRvXFxuNTMzOTpcXHQgKiBrbm93IHRoZSBhbGxvY2F0aW9uIG9yZGVyIHRvIGZyZWUgdGhlIHBhZ2VzIHByb3Blcmx5IGluIGtmcmVlLlxcbjUzNDA6XFx0ICovXFxuNTM0MTpcXHRzdGF0aWMgdm9pZCAqX19fa21hbGxvY19sYXJnZV9ub2RlKHNpemVfdCBzaXplLCBnZnBfdCBmbGFncywgaW50IG5vZGUpXFxuNTM0MjpcXHR7XFxuNTM0MzpcXHRcXHRzdHJ1Y3QgcGFnZSAqcGFnZTtcXG41MzQ0OlxcdFxcdHZvaWQgKnB0ciA9IE5VTEw7XFxuNTM0NTpcXHRcXHR1bnNpZ25lZCBpbnQgb3JkZXI7XFxuNTM0NjpcXHRcXG41MzQ3OlxcdFxcdGlmIChXQVJOX09OX09OQ0VfR0ZQKHNpemUgXFx1MDAzZSBLTUFMTE9DX01BWF9TSVpFLCBmbGFncykpXFxuNTM0ODpcXHRcXHRcXHRyZXR1cm4gTlVMTDtcXG41MzQ5OlxcdFxcbjUzNTA6XFx0XFx0b3JkZXIgPSBnZXRfb3JkZXIoc2l6ZSk7XFxuNTM1MTpcXHRcXG41MzUyOlxcdFxcdGlmICh1bmxpa2VseShmbGFncyBcXHUwMDI2IEdGUF9TTEFCX0JVR19NQVNLKSlcXG41MzUzOlxcdFxcdFxcdGZsYWdzID0ga21hbGxvY19maXhfZmxhZ3MoZmxhZ3MpO1xcbjUzNTQ6XFx0XFxuNTM1NTpcXHRcXHRmbGFncyB8PSBfX0dGUF9DT01QO1xcbjUzNTY6XFx0XFxuNTM1NzpcXHRcXHRpZiAobm9kZSA9PSBOVU1BX05PX05PREUpXFxuNTM1ODpcXHRcXHRcXHRwYWdlID0gYWxsb2NfZnJvemVuX3BhZ2VzX25vcHJvZihmbGFncywgb3JkZXIpO1xcbjUzNTk6XFx0XFx0ZWxzZVxcbjUzNjA6XFx0XFx0XFx0cGFnZSA9IF9fYWxsb2NfZnJvemVuX3BhZ2VzX25vcHJvZihmbGFncywgb3JkZXIsIG5vZGUsIE5VTEwsXFxuNTM2MTpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICBBTExPQ19ERUZBVUxUKTtcXG41MzYyOlxcdFxcbjUzNjM6XFx0XFx0aWYgKHBhZ2UpIHtcXG41MzY0OlxcdFxcdFxcdHB0ciA9IHBhZ2VfYWRkcmVzcyhwYWdlKTtcXG41MzY1OlxcdFxcdFxcdG1vZF9scnV2ZWNfcGFnZV9zdGF0ZShwYWdlLCBOUl9TTEFCX1VOUkVDTEFJTUFCTEVfQixcXG41MzY2OlxcdFxcdFxcdFxcdFxcdCAgICAgIFBBR0VfU0laRSBcXHUwMDNjXFx1MDAzYyBvcmRlcik7XFxuNTM2NzpcXHRcXHRcXHRfX1NldFBhZ2VMYXJnZUttYWxsb2MocGFnZSk7XFxuNTM2ODpcXHRcXHR9XFxuNTM2OTpcXHRcXG41MzcwOlxcdFxcdHB0ciA9IGthc2FuX2ttYWxsb2NfbGFyZ2UocHRyLCBzaXplLCBmbGFncyk7XFxuNTM3MTpcXHRcXHQvKiBBcyBwdHIgbWlnaHQgZ2V0IHRhZ2dlZCwgY2FsbCBrbWVtbGVhayBob29rIGFmdGVyIEtBU0FOLiAqL1xcbjUzNzI6XFx0XFx0a21lbWxlYWtfYWxsb2MocHRyLCBzaXplLCAxLCBmbGFncyk7XFxuNTM3MzpcXHRcXHRrbXNhbl9rbWFsbG9jX2xhcmdlKHB0ciwgc2l6ZSwgZmxhZ3MpO1xcbjUzNzQ6XFx0XFxuNTM3NTpcXHRcXHRyZXR1cm4gcHRyO1xcbjUzNzY6XFx0fVxcbjUzNzc6XFx0XFxuNTM3ODpcXHR2b2lkICpfX2ttYWxsb2NfbGFyZ2Vfbm9wcm9mKHNpemVfdCBzaXplLCBnZnBfdCBmbGFncylcXG41Mzc5OlxcdHtcXG41MzgwOlxcdFxcdHZvaWQgKnJldCA9IF9fX2ttYWxsb2NfbGFyZ2Vfbm9kZShzaXplLCBmbGFncywgTlVNQV9OT19OT0RFKTtcXG41MzgxOlxcdFxcbjUzODI6XFx0XFx0dHJhY2Vfa21hbGxvYyhfUkVUX0lQXywgcmV0LCBzaXplLCBQQUdFX1NJWkUgXFx1MDAzY1xcdTAwM2MgZ2V0X29yZGVyKHNpemUpLFxcbjUzODM6XFx0XFx0XFx0ICAgICAgZmxhZ3MsIE5VTUFfTk9fTk9ERSk7XFxuNTM4NDpcXHRcXHRyZXR1cm4gcmV0O1xcbjUzODU6XFx0fVxcbjUzODY6XFx0RVhQT1JUX1NZTUJPTChfX2ttYWxsb2NfbGFyZ2Vfbm9wcm9mKTtcXG41Mzg3OlxcdFxcbjUzODg6XFx0dm9pZCAqX19rbWFsbG9jX2xhcmdlX25vZGVfbm9wcm9mKHNpemVfdCBzaXplLCBnZnBfdCBmbGFncywgaW50IG5vZGUpXFxuNTM4OTpcXHR7XFxuNTM5MDpcXHRcXHR2b2lkICpyZXQgPSBfX19rbWFsbG9jX2xhcmdlX25vZGUoc2l6ZSwgZmxhZ3MsIG5vZGUpO1xcbjUzOTE6XFx0XFxuNTM5MjpcXHRcXHR0cmFjZV9rbWFsbG9jKF9SRVRfSVBfLCByZXQsIHNpemUsIFBBR0VfU0laRSBcXHUwMDNjXFx1MDAzYyBnZXRfb3JkZXIoc2l6ZSksXFxuNTM5MzpcXHRcXHRcXHQgICAgICBmbGFncywgbm9kZSk7XFxuNTM5NDpcXHRcXHRyZXR1cm4gcmV0O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwMjo1MzowOC42NjE4MTg5MTZaIiwiU2VxIjoyNywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDE3MDAyOTE0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBfX19rbWFsbG9jX2xhcmdlX25vZGVgIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgZG93biB0aGlzIHBhdGNoLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29yZSBjaGFuZ2Ugd2l0aGluIGBfX19rbWFsbG9jX2xhcmdlX25vZGVgLiBJdCBhcHBlYXJzIHRoZSBhdXRob3IgaGFzIGFkZGVkIGEgc2FmZXR5IGNoZWNrOiBgaWYgKFdBUk5fT05fT05DRV9HRlAoc2l6ZSBcdTAwM2UgS01BTExPQ19NQVhfU0laRSwgZmxhZ3MpKSByZXR1cm4gTlVMTDtgIGJlZm9yZSBjYWxjdWxhdGluZyB0aGUgYG9yZGVyYC4gVGhlIG1vdGl2YXRpb24gaGVyZSBpcyBjbGVhcjogaXQncyBhIGNyaXRpY2FsIGd1YXJkcmFpbC4gQnkgZXhwbGljaXRseSBjaGVja2luZyBpZiB0aGUgcmVxdWVzdGVkIGBzaXplYCBleGNlZWRzIGBLTUFMTE9DX01BWF9TSVpFYCwgb3IgcG90ZW50aWFsbHkgY3JlYXRlcyBhIHZhbHVlIHRoYXQgb3ZlcmZsb3dzIHRoZSBjYWxjdWxhdGVkIGBvcmRlcmAgZnJvbSBgZ2V0X29yZGVyKClgLCB0aGUgY29kZSBub3cgY2xlYW5seSByZWplY3RzIHRoZSBhbGxvY2F0aW9uIGFuZCByZXR1cm5zIGBOVUxMYCB3aXRoIGEgd2FybmluZy4gVGhpcyBpcyBwcmVmZXJhYmxlIHRvIGxldHRpbmcgdGhlIHN1YnNlcXVlbnQgYWxsb2NhdGlvbiBsb2dpYyBpbiBgYWxsb2NfcGFnZXNgIGNob2tlIG9uIGFuIGV4Y2Vzc2l2ZWx5IGxhcmdlIGBvcmRlcmAgb3Igb3RoZXJ3aXNlIGNvbXB1dGUgYW4gaW52YWxpZCBvcmRlci5cblxuTm93LCBJIG5lZWQgdG8gZXZhbHVhdGUgdGhlIGltcGFjdCBmcm9tIGEgbWVtb3J5IHNhZmV0eSBwZXJzcGVjdGl2ZS4gRG9lcyB0aGlzIGNoYW5nZSBpbnRyb2R1Y2UgYW55IHJpc2tzPyBMZXQncyBnbyB0aHJvdWdoIHRoZSBjaGVja2xpc3Q6XG5cbjEuICAqKktlcm5lbCBTdHJ1Y3R1cmVzIHRvIFVzZXIgU3BhY2U6KiogTm8uIFRoaXMgcGF0Y2ggZG9lc24ndCBpbnZvbHZlIGFueSBjaGFuZ2VzIHRoYXQgd291bGQgYWZmZWN0IGtlcm5lbCBzdHJ1Y3R1cmVzIHBhc3NlZCB0byB1c2VyIHNwYWNlLiBUaGVyZSdzIG5vIGNoYW5jZSBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyBleHBvc2VkIGhlcmUuXG4yLiAgKipVbmluaXRpYWxpemVkIFZhcmlhYmxlIFVzYWdlIGluIENvbmRpdGlvbmFsIExvZ2ljOioqIE5vLiBUaGUgdmFyaWFibGVzIGJlaW5nIGNoZWNrZWQsIGBzaXplYCBhbmQgYGZsYWdzYCwgYXJlIGJvdGggaW5wdXRzIHRvIHRoZSBmdW5jdGlvbi4gYG9yZGVyYCBpcyBpbml0aWFsaXplZCAqYWZ0ZXIqIHRoZSBzYWZldHkgY2hlY2ssIHNvIHRoZXJlJ3Mgbm8gd2F5IHRoaXMgaW50cm9kdWNlcyBhIHJpc2sgb2YgY29uZGl0aW9uYWwgYnJhbmNoaW5nIG9uIHVuaW5pdGlhbGl6ZWQgZGF0YS5cbjMuICAqKkNvbXBsZXggRGF0YSBTdHJ1Y3R1cmVzOioqIE5vLiBUaGlzIGlzIGEgdmVyeSB0YXJnZXRlZCBwYXRjaC4gSXQncyBub3QgbW9kaWZ5aW5nIG9yIGludHJvZHVjaW5nIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdpdGggdGhlIHBvdGVudGlhbCBmb3IgdW5pbml0aWFsaXplZCBmaWVsZHMuXG40LiAgKipCb3VuZHMgQ2hlY2tzL1VuaW5pdGlhbGl6ZWQgTWVtb3J5IEV4cG9zdXJlOioqIE5vLiBUaGlzIGlzIHNwZWNpZmljYWxseSBhIHNpemUgdmFsaWRhdGlvbi4gVGhlIGNoYW5nZSBkb2VzICpub3QqIGludHJvZHVjZSBhbnkgbmV3IGJvdW5kcyBjaGVja3MsIG5vciBkb2VzIGl0IGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gSXQgYWN0cyBhcyBhIHByZXZlbnRhdGl2ZSBtZWFzdXJlLlxuXG5UaGVyZWZvcmUsIGdpdmVuIG15IHVuZGVyc3RhbmRpbmcsIGBOZWVkc0tNU0FOYCBzaG91bGQgZGVmaW5pdGl2ZWx5IGJlIGBmYWxzZWAuIFRoaXMgaXMgYSBzdHJhaWdodGZvcndhcmQsIHBvc2l0aXZlIGNoYW5nZS4gTm93LCBsZXQncyBhc3NlbWJsZSB0aGUganVzdGlmaWNhdGlvbiBhbmQgY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTEwLCJPdXRwdXRUb2tlbnMiOjE3MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDAyOjUzOjEyLjgzMTg1MDU3NFoiLCJTZXEiOjI4LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyMDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHNhbml0eSBjaGVjayAoYFdBUk5fT05fT05DRV9HRlAoc2l6ZSBcXHUwMDNlIEtNQUxMT0NfTUFYX1NJWkUsIGZsYWdzKWApIGluIGBfX19rbWFsbG9jX2xhcmdlX25vZGUoKWAgdG8gcmVqZWN0IGFsbG9jYXRpb25zIGV4Y2VlZGluZyBgS01BTExPQ19NQVhfU0laRWAgYnkgcmV0dXJuaW5nIGBOVUxMYC5cXG5cXG5UaGlzIG1vZGlmaWNhdGlvbiBvbmx5IGFkZHMgZGVmZW5zaXZlIHBhcmFtZXRlciB2YWxpZGF0aW9uIHRvIHRoZSBTTFVCIGxhcmdlIGFsbG9jYXRpb24gcGF0aC4gSXQgZG9lcyBub3QgaW50cm9kdWNlLCBleHBvc2UsIG9yIG1hbmlwdWxhdGUgdW5pbml0aWFsaXplZCBtZW1vcnksIGRvZXMgbm90IGFsdGVyIGJ1ZmZlciBpbml0aWFsaXphdGlvbiBvciBzdHJ1Y3QgcGFkZGluZywgYW5kIGRvZXMgbm90IHRvdWNoIGRhdGEgcGFzc2VkIHRvIHVzZXIgc3BhY2UuIEFueSBidWdzIHJlbGF0ZWQgdG8gZmFpbGVkIGFsbG9jYXRpb25zIChzdWNoIGFzIG1pc3NpbmcgTlVMTC1jaGVja3MgaW4gY2FsbGVycykgYXJlIHN0YW5kYXJkIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmUgaGFuZGxpbmcgY2F1Z2h0IGJ5IHN0YW5kYXJkIHRlc3RpbmcvS0FTQU4uIFRoZXJlZm9yZSwgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBzYW5pdHkgY2hlY2sgKGBXQVJOX09OX09OQ0VfR0ZQKHNpemUgXFx1MDAzZSBLTUFMTE9DX01BWF9TSVpFLCBmbGFncylgKSBpbiBgX19fa21hbGxvY19sYXJnZV9ub2RlKClgIHRvIHJlamVjdCBhbGxvY2F0aW9ucyBleGNlZWRpbmcgYEtNQUxMT0NfTUFYX1NJWkVgIGJ5IHJldHVybmluZyBgTlVMTGAuXFxuXFxuVGhpcyBtb2RpZmljYXRpb24gb25seSBhZGRzIGRlZmVuc2l2ZSBwYXJhbWV0ZXIgdmFsaWRhdGlvbiB0byB0aGUgU0xVQiBsYXJnZSBhbGxvY2F0aW9uIHBhdGguIEl0IGRvZXMgbm90IGludHJvZHVjZSwgZXhwb3NlLCBvciBtYW5pcHVsYXRlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBkb2VzIG5vdCBhbHRlciBidWZmZXIgaW5pdGlhbGl6YXRpb24gb3Igc3RydWN0IHBhZGRpbmcsIGFuZCBkb2VzIG5vdCB0b3VjaCBkYXRhIHBhc3NlZCB0byB1c2VyIHNwYWNlLiBBbnkgYnVncyByZWxhdGVkIHRvIGZhaWxlZCBhbGxvY2F0aW9ucyAoc3VjaCBhcyBtaXNzaW5nIE5VTEwtY2hlY2tzIGluIGNhbGxlcnMpIGFyZSBzdGFuZGFyZCBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlIGhhbmRsaW5nIGNhdWdodCBieSBzdGFuZGFyZCB0ZXN0aW5nL0tBU0FOLiBUaGVyZWZvcmUsIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow92nn6[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-31 02:38:07 +0000 UTC FinishedAt: 2026-08-31 02:53:14 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "da6c37ed8beb273e3308e42d4bca3ce11b4432fa", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SLUB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "da6c37ed8beb273e3308e42d4bca3ce11b4432fa", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SLUB" ], "series_id": "fce7789a-743d-42cc-899f-a5de5d553d61" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "__kmalloc_large_noprof", "__kmalloc_large_node_noprof" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDAyOjUyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NMVUImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2ttYWxsb2NfbGFyZ2Vfbm9wcm9mJiMzNDssCiAgICAmIzM0O19fa21hbGxvY19sYXJnZV9ub2RlX25vcHJvZiYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBzYW5pdHkgY2hlY2sgKGBXQVJOX09OX09OQ0VfR0ZQKHNpemUgXHUwMDNlIEtNQUxMT0NfTUFYX1NJWkUsIGZsYWdzKWApIGluIGBfX19rbWFsbG9jX2xhcmdlX25vZGUoKWAgdG8gcmVqZWN0IGFsbG9jYXRpb25zIGV4Y2VlZGluZyBgS01BTExPQ19NQVhfU0laRWAgYnkgcmV0dXJuaW5nIGBOVUxMYC5cblxuVGhpcyBtb2RpZmljYXRpb24gb25seSBhZGRzIGRlZmVuc2l2ZSBwYXJhbWV0ZXIgdmFsaWRhdGlvbiB0byB0aGUgU0xVQiBsYXJnZSBhbGxvY2F0aW9uIHBhdGguIEl0IGRvZXMgbm90IGludHJvZHVjZSwgZXhwb3NlLCBvciBtYW5pcHVsYXRlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBkb2VzIG5vdCBhbHRlciBidWZmZXIgaW5pdGlhbGl6YXRpb24gb3Igc3RydWN0IHBhZGRpbmcsIGFuZCBkb2VzIG5vdCB0b3VjaCBkYXRhIHBhc3NlZCB0byB1c2VyIHNwYWNlLiBBbnkgYnVncyByZWxhdGVkIHRvIGZhaWxlZCBhbGxvY2F0aW9ucyAoc3VjaCBhcyBtaXNzaW5nIE5VTEwtY2hlY2tzIGluIGNhbGxlcnMpIGFyZSBzdGFuZGFyZCBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlIGhhbmRsaW5nIGNhdWdodCBieSBzdGFuZGFyZCB0ZXN0aW5nL0tBU0FOLiBUaGVyZWZvcmUsIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBtZW1vcnkgYWxsb2NhdGlvbiBsb2dpYyBpbiB0aGUgU0xVQiBhbGxvY2F0b3IgKG1tL3NsdWIuYyksIGFkZGluZyBhIHNpemUgYm91bmRhcnkgY2hlY2sgYWdhaW5zdCBLTUFMTE9DX01BWF9TSVpFIGluIF9fX2ttYWxsb2NfbGFyZ2Vfbm9kZSgpIHRvIHByZXZlbnQgb3ZlcnNpemVkIG9yZGVyIGNhbGN1bGF0aW9ucyBhbmQgZ3JhY2VmdWxseSBmYWlsIHdpdGggYSB3YXJuaW5nLiBUaGlzIG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyBhbmQgYWZmZWN0cyBsYXJnZSBrbWFsbG9jIGFsbG9jYXRpb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDAyOjUyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNzI4ZDkyZjkwMWY3YTUyN2NjYjAxNDM1NDViNGIyOWVmNDM5YTdlYVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDMxIDAyOjUyOjE0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL3NsdWIuYyBiL21tL3NsdWIuY1xuaW5kZXggZjliNTZjYjQzOWU3MC4uMjNlNTdhOGZlNTViNCAxMDA2NDRcbi0tLSBhL21tL3NsdWIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vc2x1Yi5jXG5AQCAtNTM0Miw3ICYjNDM7NTM0MiwxMiBAQCBzdGF0aWMgdm9pZCAqX19fa21hbGxvY19sYXJnZV9ub2RlKHNpemVfdCBzaXplLCBnZnBfdCBmbGFncywgaW50IG5vZGUpXG4ge1xuIFx0c3RydWN0IHBhZ2UgKnBhZ2U7XG4gXHR2b2lkICpwdHIgPSBOVUxMO1xuLVx0dW5zaWduZWQgaW50IG9yZGVyID0gZ2V0X29yZGVyKHNpemUpO1xuJiM0MztcdHVuc2lnbmVkIGludCBvcmRlcjtcbiYjNDM7XG4mIzQzO1x0aWYgKFdBUk5fT05fT05DRV9HRlAoc2l6ZSBcdTAwM2UgS01BTExPQ19NQVhfU0laRSwgZmxhZ3MpKVxuJiM0MztcdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1xuJiM0MztcdG9yZGVyID0gZ2V0X29yZGVyKHNpemUpO1xuIFxuIFx0aWYgKHVubGlrZWx5KGZsYWdzIFx1MDAyNiBHRlBfU0xBQl9CVUdfTUFTSykpXG4gXHRcdGZsYWdzID0ga21hbGxvY19maXhfZmxhZ3MoZmxhZ3MpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDAyOjUyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NMVUImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2ttYWxsb2NfbGFyZ2Vfbm9wcm9mJiMzNDssCiAgICAmIzM0O19fa21hbGxvY19sYXJnZV9ub2RlX25vcHJvZiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb3JlIG1lbW9yeSBhbGxvY2F0aW9uIGxvZ2ljIGluIHRoZSBTTFVCIGFsbG9jYXRvciAobW0vc2x1Yi5jKSwgYWRkaW5nIGEgc2l6ZSBib3VuZGFyeSBjaGVjayBhZ2FpbnN0IEtNQUxMT0NfTUFYX1NJWkUgaW4gX19fa21hbGxvY19sYXJnZV9ub2RlKCkgdG8gcHJldmVudCBvdmVyc2l6ZWQgb3JkZXIgY2FsY3VsYXRpb25zIGFuZCBncmFjZWZ1bGx5IGZhaWwgd2l0aCBhIHdhcm5pbmcuIFRoaXMgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIGFuZCBhZmZlY3RzIGxhcmdlIGttYWxsb2MgYWxsb2NhdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA3MjhkOTJmOTAxZjdhNTI3Y2NiMDE0MzU0NWI0YjI5ZWY0MzlhN2VhCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBBdWcgMzEgMDI6NTI6MTQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9tbS9zbHViLmMgYi9tbS9zbHViLmMKaW5kZXggZjliNTZjYjQzOWU3MC4uMjNlNTdhOGZlNTViNCAxMDA2NDQKLS0tIGEvbW0vc2x1Yi5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL3NsdWIuYwpAQCAtNTM0Miw3ICYjNDM7NTM0MiwxMiBAQCBzdGF0aWMgdm9pZCAqX19fa21hbGxvY19sYXJnZV9ub2RlKHNpemVfdCBzaXplLCBnZnBfdCBmbGFncywgaW50IG5vZGUpCiB7CiAJc3RydWN0IHBhZ2UgKnBhZ2U7CiAJdm9pZCAqcHRyID0gTlVMTDsKLQl1bnNpZ25lZCBpbnQgb3JkZXIgPSBnZXRfb3JkZXIoc2l6ZSk7CiYjNDM7CXVuc2lnbmVkIGludCBvcmRlcjsKJiM0MzsKJiM0MzsJaWYgKFdBUk5fT05fT05DRV9HRlAoc2l6ZSAmZ3Q7IEtNQUxMT0NfTUFYX1NJWkUsIGZsYWdzKSkKJiM0MzsJCXJldHVybiBOVUxMOwomIzQzOwomIzQzOwlvcmRlciA9IGdldF9vcmRlcihzaXplKTsKIAogCWlmICh1bmxpa2VseShmbGFncyAmYW1wOyBHRlBfU0xBQl9CVUdfTUFTSykpCiAJCWZsYWdzID0ga21hbGxvY19maXhfZmxhZ3MoZmxhZ3MpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwMjo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTA4CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjA1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEtlcm5lbCBNZW1vcnkgQWxsb2NhdGlvbiBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIExvb2tzIGxpa2Ugd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIG1vZGlmaWNhdGlvbiBpbiBgbW0vc2x1Yi5jYCwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYF9fX2ttYWxsb2NfbGFyZ2Vfbm9kZWAgZnVuY3Rpb24uIE15IGluaXRpYWwgaW1wcmVzc2lvbiBpcyB0aGF0IHRoaXMgZnVuY3Rpb24gbGlrZWx5IGhhbmRsZXMgbGFyZ2VyIG1lbW9yeSBhbGxvY2F0aW9ucyB3aXRoaW4gdGhlIFNMVUIgYWxsb2NhdG9yLiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCBieSBjaGVja2luZyB0aGUgc3Vycm91bmRpbmcgY29kZSB3aXRoIGByZWFkLWZpbGVgIG9yIGBncmVwcGVyYCDigJMgdW5kZXJzdGFuZGluZyB0aGUgZnVuY3Rpb24mIzM5O3MgYnJvYWRlciBjb250ZXh0IGlzIGNydWNpYWwuCgpUaGUgY29yZSBvZiB0aGUgY2hhbmdlIHNlZW1zIHRvIGJlIGludHJvZHVjaW5nIGEgc2l6ZSBjaGVjazogYFdBUk5fT05fT05DRV9HRlAoc2l6ZSAmZ3Q7IEtNQUxMT0NfTUFYX1NJWkUsIGZsYWdzKWAuIEFuZCB0aGVyZSYjMzk7cyBzb21lIHJlYXJyYW5nZW1lbnQuIEl0IGFwcGVhcnMgdG8gYmUgYW4gYWRkaXRpb24gb2YgdGhpcyBjaGVjayBwcmlvciB0byBjYWxjdWxhdGluZyB0aGUgb3JkZXIuIFNvLCBpZiB0aGUgcmVxdWVzdGVkIGBzaXplYCBleGNlZWRzIGBLTUFMTE9DX01BWF9TSVpFYCwgd2hpY2ggSSBhc3N1bWUgaXMgYSBkZWZpbmVkIGNvbnN0YW50IChJJiMzOTtsbCBjb25maXJtIGl0cyBkZWZpbml0aW9uKSwgdGhlIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIGBOVUxMYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdGhpcyBpcyBhIHNhZmVndWFyZCB0byBwcmV2ZW50IGV4Y2Vzc2l2ZWx5IGxhcmdlIGFsbG9jYXRpb24gcmVxdWVzdHMgdGhhdCBtaWdodCBjYXVzZSBpbnN0YWJpbGl0eSBvciB1bmV4cGVjdGVkIGJlaGF2aW9yLiBUaGlzIGxvb2tzIGxpa2UgYSBnb29kIGNoZWNrIHRvIGFkZC4KClRoZSBgV0FSTl9PTl9PTkNFX0dGUGAgbWFjcm8gaXMgaW50ZXJlc3RpbmcuIEkmIzM5O2xsIG5lZWQgdG8gcmV2aWV3IHRoZSBtZWFuaW5nIG9mIHRoZSBgR0ZQYCBmbGFnIGluIHRoaXMgc3BlY2lmaWMgY29udGV4dC4gVGhpcyB3b3VsZCBhbGxvdyBtZSB0byBrbm93IGlmIHRoaXMgc3BlY2lmaWMgbWFjcm8mIzM5O3MgYmVoYXZpb3VyIGlzIHJlbGV2YW50IGluIHRoZSBjb250ZXh0IG9mIHRoZSBjaGFuZ2UuIElzIHRoaXMgd2FybmluZyBhIGRlYnVnIGFpZD8gRG9lcyBpdCBhZmZlY3QgdGhlIHJldHVybiB2YWx1ZT8gSXMgdGhpcyByZWxhdGVkIHRvIGEgcG90ZW50aWFsIGRlbmlhbC1vZi1zZXJ2aWNlIHZ1bG5lcmFiaWxpdHk/IE9yIGlzIGl0IGEgbW9yZSBnZW5lcmFsIHNhZmV0eSBuZXQ/IFRpbWUgdG8gZGlnIGRlZXBlci4gSSYjMzk7bGwgZ2V0IHRoZSBsYXkgb2YgdGhlIGxhbmQsIHRoZW4gY2lyY2xlIGJhY2sgYW5kIGNoZWNrIHRoZSBpbXBsaWNhdGlvbnMgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGxhcmdlciBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDAyOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bW0vc2x1Yi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTMzNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDs1MzM1Olx0fVxuNTMzNjpcdC8qXG41MzM3Olx0ICogVG8gYXZvaWQgdW5uZWNlc3Nhcnkgb3ZlcmhlYWQsIHdlIHBhc3MgdGhyb3VnaCBsYXJnZSBhbGxvY2F0aW9uIHJlcXVlc3RzXG41MzM4Olx0ICogZGlyZWN0bHkgdG8gdGhlIHBhZ2UgYWxsb2NhdG9yLiBXZSB1c2UgX19HRlBfQ09NUCwgYmVjYXVzZSB3ZSB3aWxsIG5lZWQgdG9cbjUzMzk6XHQgKiBrbm93IHRoZSBhbGxvY2F0aW9uIG9yZGVyIHRvIGZyZWUgdGhlIHBhZ2VzIHByb3Blcmx5IGluIGtmcmVlLlxuNTM0MDpcdCAqL1xuNTM0MTpcdHN0YXRpYyB2b2lkICpfX19rbWFsbG9jX2xhcmdlX25vZGUoc2l6ZV90IHNpemUsIGdmcF90IGZsYWdzLCBpbnQgbm9kZSlcbjUzNDI6XHR7XG41MzQzOlx0XHRzdHJ1Y3QgcGFnZSAqcGFnZTtcbjUzNDQ6XHRcdHZvaWQgKnB0ciA9IE5VTEw7XG41MzQ1Olx0XHR1bnNpZ25lZCBpbnQgb3JkZXI7XG41MzQ2Olx0XG41MzQ3Olx0XHRpZiAoV0FSTl9PTl9PTkNFX0dGUChzaXplIFx1MDAzZSBLTUFMTE9DX01BWF9TSVpFLCBmbGFncykpXG41MzQ4Olx0XHRcdHJldHVybiBOVUxMO1xuNTM0OTpcdFxuNTM1MDpcdFx0b3JkZXIgPSBnZXRfb3JkZXIoc2l6ZSk7XG41MzUxOlx0XG41MzUyOlx0XHRpZiAodW5saWtlbHkoZmxhZ3MgXHUwMDI2IEdGUF9TTEFCX0JVR19NQVNLKSlcbjUzNTM6XHRcdFx0ZmxhZ3MgPSBrbWFsbG9jX2ZpeF9mbGFncyhmbGFncyk7XG41MzU0Olx0XG41MzU1Olx0XHRmbGFncyB8PSBfX0dGUF9DT01QO1xuNTM1NjpcdFxuNTM1NzpcdFx0aWYgKG5vZGUgPT0gTlVNQV9OT19OT0RFKVxuNTM1ODpcdFx0XHRwYWdlID0gYWxsb2NfZnJvemVuX3BhZ2VzX25vcHJvZihmbGFncywgb3JkZXIpO1xuNTM1OTpcdFx0ZWxzZVxuNTM2MDpcdFx0XHRwYWdlID0gX19hbGxvY19mcm96ZW5fcGFnZXNfbm9wcm9mKGZsYWdzLCBvcmRlciwgbm9kZSwgTlVMTCxcbjUzNjE6XHRcdFx0XHRcdFx0XHQgICBBTExPQ19ERUZBVUxUKTtcbjUzNjI6XHRcbjUzNjM6XHRcdGlmIChwYWdlKSB7XG41MzY0Olx0XHRcdHB0ciA9IHBhZ2VfYWRkcmVzcyhwYWdlKTtcbjUzNjU6XHRcdFx0bW9kX2xydXZlY19wYWdlX3N0YXRlKHBhZ2UsIE5SX1NMQUJfVU5SRUNMQUlNQUJMRV9CLFxuNTM2NjpcdFx0XHRcdFx0ICAgICAgUEFHRV9TSVpFIFx1MDAzY1x1MDAzYyBvcmRlcik7XG41MzY3Olx0XHRcdF9fU2V0UGFnZUxhcmdlS21hbGxvYyhwYWdlKTtcbjUzNjg6XHRcdH1cbjUzNjk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwMjo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjI1CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIExhcmdlIEtNQUxMT0MgQWxsb2NhdGlvbnMqKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHVzYWdlIHBhdHRlcm5zIG9mIHRoZSBsYXJnZSBrbWFsbG9jIGZ1bmN0aW9ucywgc3BlY2lmaWNhbGx5IGBfX19rbWFsbG9jX2xhcmdlX25vZGVgIG9yIGBfX2ttYWxsb2NfbGFyZ2Vfbm9kZWAuIE15IHByaW1hcnkgb2JqZWN0aXZlIGhlcmUgaXMgdG8gZmlndXJlIG91dCB3aGF0IGNvZGUgcGF0aHMgYXJlIGVtcGxveWluZyB0aGVzZSBwb3RlbnRpYWxseSBsZXNzIGVmZmljaWVudCBhbGxvY2F0aW9uIG1ldGhvZHMuIEkmIzM5O20gYXNzdW1pbmcgdGhhdCB0aGUgcmVhc29ucyBmb3IgdXNpbmcgdGhlc2UgZnVuY3Rpb25zIG1pZ2h0IGJlIHBlcmZvcm1hbmNlLXJlbGF0ZWQsIG1lbW9yeS1yZWxhdGVkLCBvciBiYXNlZCBvbiBzcGVjaWZpYyBOVU1BIG5vZGUgYWZmaW5pdHkuIFRoZXJlZm9yZSwgaWRlbnRpZnlpbmcgdGhlIGNhbGxlcnMgaXMgdGhlIGNydWNpYWwgZmlyc3Qgc3RlcC4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSB0aG9zZSBjYWxscyB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0OiB3aGF0IGRhdGEgc3RydWN0dXJlcyBhcmUgYmVpbmcgYWxsb2NhdGVkLCB3aGF0JiMzOTtzIHRoZWlyIGxpZmV0aW1lLCBhbmQgd2h5IHRoZSBzdGFuZGFyZCBrbWFsbG9jIGlzbiYjMzk7dCBzdWZmaWNpZW50LiBUaGlzIGludmVzdGlnYXRpb24gd2lsbCBoZWxwIG1lIGRldGVybWluZSBpZiB0aGUgY3VycmVudCB1c2FnZSBpcyBvcHRpbWFsIG9yIGlmIHRoZXJlJiMzOTtzIHJvb20gZm9yIG9wdGltaXphdGlvbiwgcGVyaGFwcyBieSBhZGp1c3RpbmcgdGhlIHNpemUgdGhyZXNob2xkcywgaW50cm9kdWNpbmcgY3VzdG9tIGFsbG9jYXRvcnMsIG9yIGJ5IHNpbXBseSBpZGVudGlmeWluZyBhbmQgZml4aW5nIGFueSBpbmVmZmljaWVuY2llcyBpbiB0aGUgY2FsbGluZyBjb2RlLiBUaGUgZ29hbCBpcyB0byBlaXRoZXIganVzdGlmeSB0aGUgY3VycmVudCB1c2FnZSBvciBzdWdnZXN0IGltcHJvdmVtZW50cywgZGVwZW5kaW5nIG9uIHdoYXQgSSB1bmNvdmVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDAyOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fX2ttYWxsb2NfbGFyZ2Vfbm9kZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL3NsdWIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9zbHViLmM9NTMzMj11bnNpZ25lZCBpbnQga21lbV9jYWNoZV9zaGVhZl9zaXplKHN0cnVjdCBzbGFiX3NoZWFmICpzaGVhZilcbi0tXG5tbS9zbHViLmMtNTM0MC0gKi9cbm1tL3NsdWIuYzo1MzQxOnN0YXRpYyB2b2lkICpfX19rbWFsbG9jX2xhcmdlX25vZGUoc2l6ZV90IHNpemUsIGdmcF90IGZsYWdzLCBpbnQgbm9kZSlcbm1tL3NsdWIuYy01MzQyLXtcbi0tXG5tbS9zbHViLmM9NTM3OD12b2lkICpfX2ttYWxsb2NfbGFyZ2Vfbm9wcm9mKHNpemVfdCBzaXplLCBnZnBfdCBmbGFncylcbm1tL3NsdWIuYy01Mzc5LXtcbm1tL3NsdWIuYzo1MzgwOlx0dm9pZCAqcmV0ID0gX19fa21hbGxvY19sYXJnZV9ub2RlKHNpemUsIGZsYWdzLCBOVU1BX05PX05PREUpO1xubW0vc2x1Yi5jLTUzODEtXG4tLVxubW0vc2x1Yi5jPTUzODg9dm9pZCAqX19rbWFsbG9jX2xhcmdlX25vZGVfbm9wcm9mKHNpemVfdCBzaXplLCBnZnBfdCBmbGFncywgaW50IG5vZGUpXG5tbS9zbHViLmMtNTM4OS17XG5tbS9zbHViLmM6NTM5MDpcdHZvaWQgKnJldCA9IF9fX2ttYWxsb2NfbGFyZ2Vfbm9kZShzaXplLCBmbGFncywgbm9kZSk7XG5tbS9zbHViLmMtNTM5MS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwMjo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODI3CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMTAwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgS2VybmVsIE1lbW9yeSBBbGxvY2F0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHRyYWNlIHRoZSBleGVjdXRpb24gcGF0aCBvZiBsYXJnZSBtZW1vcnkgYWxsb2NhdGlvbnMgaW4gdGhlIGtlcm5lbC4gSSB3YW50IHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgYF9fa21hbGxvY19sYXJnZV9ub3Byb2ZgIGFuZCBgX19rbWFsbG9jX2xhcmdlX25vZGVfbm9wcm9mYCBhcmUgdXRpbGl6ZWQsIGFuZCBJJiMzOTttIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIGhvdyB0aGUga2VybmVsIGhhbmRsZXMgYWxsb2NhdGlvbiBzaXplcyBleGNlZWRpbmcgYEtNQUxMT0NfTUFYX1NJWkVgLiBJdCYjMzk7cyBhbHNvIGNydWNpYWwgdG8gZmlndXJlIG91dCB0aGUgYmVoYXZpb3Igb2YgYGdldF9vcmRlcmAgd2hlbiBwcmVzZW50ZWQgd2l0aCBleGNlc3NpdmVseSBsYXJnZSBpbnB1dHMgYW5kIHVuZGVyc3RhbmQgdGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhlIGFkZGl0aW9uIG9mIHRoaXMgcGFydGljdWxhciBzaXplIGNoZWNrLiBJJiMzOTttIGtlZW4gdG8gZ2V0IHRoZSBmdWxsIHBpY3R1cmUgaGVyZS4KClRvIGJlZ2luLCBJJiMzOTtsbCBzdGFydCBieSBncmVwcGluZyB0aGUga2VybmVsIHNvdXJjZXMsIHNwZWNpZmljYWxseSBsb29raW5nIGZvciB1c2VzIG9mIGBfX2ttYWxsb2NfbGFyZ2Vfbm9wcm9mYCBvciwgZmFpbGluZyB0aGF0LCAgYGttYWxsb2NfbGFyZ2VgLCBhY3Jvc3MgYGluY2x1ZGUvbGludXgvc2xhYi5oYCBhbmQgdGhlIGBtbS9gIGRpcmVjdG9yeS4gVGhpcyBzaG91bGQgaGVscCBtYXAgd2hlcmUgdGhlc2UgZnVuY3Rpb25zIGFyZSBkZWZpbmVkIGFuZCBpbXBsZW1lbnRlZC4gQnkgdW5kZXJzdGFuZGluZyB0aGVpciBpbnRlcmFjdGlvbiwgSSYjMzk7bGwgYmUgYWJsZSB0byB0cmFjZSBob3cgdGhpbmdzIHdvcmsgd2hlbiB0aGV5IGdldCB0aGF0IGJpZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwMjo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX2ttYWxsb2NfbGFyZ2UmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9zbGFiLmg9OTcyPXZvaWQgKl9fa21hbGxvY19jYWNoZV9ub2RlX25vcHJvZihzdHJ1Y3Qga21lbV9jYWNoZSAqcywgZ2ZwX3QgZ2ZwZmxhZ3MsXG4tLVxuaW5jbHVkZS9saW51eC9zbGFiLmgtOTc1LVxuaW5jbHVkZS9saW51eC9zbGFiLmg6OTc2OnZvaWQgKl9fa21hbGxvY19sYXJnZV9ub3Byb2Yoc2l6ZV90IHNpemUsIGdmcF90IGZsYWdzKVxuaW5jbHVkZS9saW51eC9zbGFiLmgtOTc3LVx0XHRcdFx0X19hc3N1bWVfcGFnZV9hbGlnbm1lbnQgX19hbGxvY19zaXplKDEpO1xuaW5jbHVkZS9saW51eC9zbGFiLmgtOTc4LVxuaW5jbHVkZS9saW51eC9zbGFiLmg6OTc5OnZvaWQgKl9fa21hbGxvY19sYXJnZV9ub2RlX25vcHJvZihzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3MsIGludCBub2RlKVxuaW5jbHVkZS9saW51eC9zbGFiLmgtOTgwLVx0XHRcdFx0X19hc3N1bWVfcGFnZV9hbGlnbm1lbnQgX19hbGxvY19zaXplKDEpO1xuLS1cbmluY2x1ZGUvbGludXgvc2xhYi5oPTk4Mj1zdGF0aWMgX19hbHdheXNfaW5saW5lIF9fYWxsb2Nfc2l6ZSgxKSB2b2lkICpfa21hbGxvY19ub3Byb2Yoc2l6ZV90IHNpemUsIGdmcF90IGZsYWdzLCBrbWFsbG9jX3Rva2VuX3QgdG9rZW4pXG4tLVxuaW5jbHVkZS9saW51eC9zbGFiLmgtOTg3LVx0XHRpZiAoc2l6ZSBcdTAwM2UgS01BTExPQ19NQVhfQ0FDSEVfU0laRSlcbmluY2x1ZGUvbGludXgvc2xhYi5oOjk4ODpcdFx0XHRyZXR1cm4gX19rbWFsbG9jX2xhcmdlX25vcHJvZihzaXplLCBmbGFncyk7XG5pbmNsdWRlL2xpbnV4L3NsYWIuaC05ODktXG4tLVxuaW5jbHVkZS9saW51eC9zbGFiLmg9MTE4Nz1zdGF0aWMgX19hbHdheXNfaW5saW5lIF9fYWxsb2Nfc2l6ZSgxKSB2b2lkICpfa21hbGxvY19ub2RlX25vcHJvZihzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3MsIGludCBub2RlLCBrbWFsbG9jX3Rva2VuX3QgdG9rZW4pXG4tLVxuaW5jbHVkZS9saW51eC9zbGFiLmgtMTE5Mi1cdFx0aWYgKHNpemUgXHUwMDNlIEtNQUxMT0NfTUFYX0NBQ0hFX1NJWkUpXG5pbmNsdWRlL2xpbnV4L3NsYWIuaDoxMTkzOlx0XHRcdHJldHVybiBfX2ttYWxsb2NfbGFyZ2Vfbm9kZV9ub3Byb2Yoc2l6ZSwgZmxhZ3MsIG5vZGUpO1xuaW5jbHVkZS9saW51eC9zbGFiLmgtMTE5NC1cbi0tXG5tbS9zbHViLmM9NTMzMj11bnNpZ25lZCBpbnQga21lbV9jYWNoZV9zaGVhZl9zaXplKHN0cnVjdCBzbGFiX3NoZWFmICpzaGVhZilcbi0tXG5tbS9zbHViLmMtNTM0MC0gKi9cbm1tL3NsdWIuYzo1MzQxOnN0YXRpYyB2b2lkICpfX19rbWFsbG9jX2xhcmdlX25vZGUoc2l6ZV90IHNpemUsIGdmcF90IGZsYWdzLCBpbnQgbm9kZSlcbm1tL3NsdWIuYy01MzQyLXtcbi0tXG5tbS9zbHViLmMtNTM3Ny1cbm1tL3NsdWIuYzo1Mzc4OnZvaWQgKl9fa21hbGxvY19sYXJnZV9ub3Byb2Yoc2l6ZV90IHNpemUsIGdmcF90IGZsYWdzKVxubW0vc2x1Yi5jLTUzNzkte1xubW0vc2x1Yi5jOjUzODA6XHR2b2lkICpyZXQgPSBfX19rbWFsbG9jX2xhcmdlX25vZGUoc2l6ZSwgZmxhZ3MsIE5VTUFfTk9fTk9ERSk7XG5tbS9zbHViLmMtNTM4MS1cbi0tXG5tbS9zbHViLmMtNTM4NS19XG5tbS9zbHViLmM6NTM4NjpFWFBPUlRfU1lNQk9MKF9fa21hbGxvY19sYXJnZV9ub3Byb2YpO1xubW0vc2x1Yi5jLTUzODctXG5tbS9zbHViLmM6NTM4ODp2b2lkICpfX2ttYWxsb2NfbGFyZ2Vfbm9kZV9ub3Byb2Yoc2l6ZV90IHNpemUsIGdmcF90IGZsYWdzLCBpbnQgbm9kZSlcbm1tL3NsdWIuYy01Mzg5LXtcbm1tL3NsdWIuYzo1MzkwOlx0dm9pZCAqcmV0ID0gX19fa21hbGxvY19sYXJnZV9ub2RlKHNpemUsIGZsYWdzLCBub2RlKTtcbm1tL3NsdWIuYy01MzkxLVxuLS1cbm1tL3NsdWIuYy01Mzk1LX1cbm1tL3NsdWIuYzo1Mzk2OkVYUE9SVF9TWU1CT0woX19rbWFsbG9jX2xhcmdlX25vZGVfbm9wcm9mKTtcbm1tL3NsdWIuYy01Mzk3LVxuLS1cbm1tL3NsdWIuYz01Mzk5PXZvaWQgKl9fZG9fa21hbGxvY19ub2RlKGttZW1fYnVja2V0cyAqYiwgZ2ZwX3QgZmxhZ3MsIGludCBub2RlLFxuLS1cbm1tL3NsdWIuYy01NDA2LVx0aWYgKHVubGlrZWx5KHNpemUgXHUwMDNlIEtNQUxMT0NfTUFYX0NBQ0hFX1NJWkUpKSB7XG5tbS9zbHViLmM6NTQwNzpcdFx0cmV0ID0gX19rbWFsbG9jX2xhcmdlX25vZGVfbm9wcm9mKHNpemUsIGZsYWdzLCBub2RlKTtcbm1tL3NsdWIuYy01NDA4LVx0XHR0cmFjZV9rbWFsbG9jKGFjLVx1MDAzZWNhbGxlcl9hZGRyLCByZXQsIHNpemUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDI6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTIxOQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDk0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBvdGVudGlhbCBmb3IgRnV6emluZyB0aGlzIEtlcm5lbCBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duIHN5c3RlbWF0aWNhbGx5LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiB0aGlzIGBrbWFsbG9jX2xhcmdlYCBwYXRjaCBhbmQgaXRzIGltcGxpY2F0aW9ucy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBoYXBwZW5pbmcgYmVmb3JlIGFuZCBhZnRlciB0aGlzIGNoYW5nZSwgcGFydGljdWxhcmx5IGNvbmNlcm5pbmcgY2FsbHMgdG8gYGttYWxsb2NfbGFyZ2VgIHdpdGggc2l6ZXMgZXhjZWVkaW5nIGBLTUFMTE9DX01BWF9TSVpFYC4gVGhlIHBhZ2UgYWxsb2NhdG9yIGFuZCBgZ2V0X29yZGVyKHNpemUpYCBhcmUga2V5IGNvbXBvbmVudHMgaGVyZSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBvcmRlciBpcyBoYW5kbGVkIHRvIHNlZSBpZiB0aGlzIGNoYW5nZSBwcmV2ZW50cyBhIHBvdGVudGlhbCBvdmVyZmxvdy4KCkZpcnN0LCBJIG5lZWQgdG8gY2hlY2sgdGhlIGNvbW1pdCBoaXN0b3J5IHRvIHVuZGVyc3RhbmQgdGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhlIGFkZGl0aW9uIG9mIGBXQVJOX09OX09OQ0VfR0ZQYC4gTm93LCB3YWl0IGEgbWludXRlLCBga21hbGxvY2AgaXMgYSBmdW5kYW1lbnRhbCBtZW1vcnkgYWxsb2NhdGlvbiByb3V0aW5lIGluIHRoZSBrZXJuZWwhIEl0JiMzOTtzIG9uZSBvZiB0aGUgbW9zdCBjcml0aWNhbC4gVGhhdCByYWlzZXMgdGhlIHF1ZXN0aW9uOiBpcyB0aGlzIGEgbmV3IGZlYXR1cmUsIG9yIGEgZGVmZW5zaXZlIG1lYXN1cmUgd2l0aGluIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQ/IFRoaXMgbWF0dGVycyBhIGxvdC4KCkkgbmVlZCB0byBmb2N1cyBhbmQgcmUtcmVhZCB0aGUgc3BlY2lmaWMgaW5zdHJ1Y3Rpb25zIHByb3ZpZGVkIG9uIHdoZXRoZXIgdGhlIGNoYW5nZXMgYXJlIHdvcnRoIGZ1enppbmcuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBhbSBkb2luZyBpdCBjb3JyZWN0bHkuCgpPa2F5LCBsZXQgbWUgcmV2aWV3IHRoZSBjcml0ZXJpYSBmb3IgYFdvcnRoRnV6emluZz1mYWxzZWAuIEkgYW0gbG9va2luZyBmb3IgY2hhbmdlcyByZWxhdGVkIHRvIGRvY3VtZW50YXRpb24sIGNvbW1lbnRzLCBkZWNvcmF0aXZlIGxvZ2dpbmcsIG5vbi1mdW5jdGlvbmFsIGNvbnN0YW50IGNoYW5nZXMsIHVucmVhY2hhYmxlIGNvZGUgcGF0aHMsIG9yIHNwZWNpZmljIGRyaXZlcnMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIEkgbmVlZCB0byBiZSBwcmVjaXNlLCBhcyB0aGlzIGlzIGNvcmUgbW0uCgpSaWdodCwgdGhlIGtleSBkaXJlY3RpdmUgaXM6ICYjMzQ7SWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLi4uIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4mIzM0OyBDcnVjaWFsbHksIEkgaGF2ZSB0byBleHRyYWN0ICpzcGVjaWZpYyoga2VybmVsIGZ1bmN0aW9ucyBmb3IgYEZvY3VzU3ltYm9sc2AsIGF2b2lkaW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zLiBUaGlzIGlzIGltcG9ydGFudCB0byBza2V3IHRoZSB0ZXN0IGRpc3RyaWJ1dGlvbnMgcHJvcGVybHkuCgpUaGUgcHJvbXB0IHNwZWNpZmljYWxseSBzYXlzICYjMzQ7QXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuJiMzNDsgVGhpcyBpcyBpbXBvcnRhbnQgYXMgSSBjb25zaWRlciBpZiBgX19fa21hbGxvY19sYXJnZV9ub2RlYCBpcyBhIGhvdC1wYXRoIGluIFNMVUIsIGlmIGBfX2ttYWxsb2NfbGFyZ2Vfbm9wcm9mYCBhbmQgYGttYWxsb2NgIGFyZSBob3QtcGF0aC4gRG8gSSBuZWVkIGBGb2N1c1N5bWJvbHNgPyBPciBzaG91bGQgdGhlIGVudHJ5cG9pbnRzIGJlIG5vbi1nZW5lcmljPyBJZiB0aGV5IGFyZSBnZW5lcmljLCBzaG91bGQgdGhleSBiZSBza2lwcGVkPwoKR2l2ZW4gbXkgZXhwZXJ0aXNlLCB0aGlzIHJlcXVpcmVzIGNhcmVmdWwgY29uc2lkZXJhdGlvbiwgZXNwZWNpYWxseSBzaW5jZSBpdCYjMzk7cyBga21hbGxvY2AuIEkgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgc2VsZWN0aW9uIG9mIGZ1bmN0aW9ucyBpcyAqcHJlY2lzZSogYW5kIGF2b2lkcyBza2V3aW5nIHRoZSBmdXp6aW5nIGRpc3RyaWJ1dGlvbi4KCk9rYXksIGxldCYjMzk7cyByZS1yZWFkIHRoZSBwcmltYXJ5IHByb21wdCwgJiMzNDtJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoIHRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLiYjMzQ7CgpEb2VzIHRoaXMgcGF0Y2ggKm1vZGlmeSogcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljPyBZZXMsIGl0IGFkZHMgYSBgV0FSTl9PTl9PTkNFX0dGUGAgY2hlY2sgd2l0aGluIGBfX19rbWFsbG9jX2xhcmdlX25vZGVgIGluIGBtbS9zbHViLmNgLiBUaGlzIGFkZGl0aW9uIGlzIGEgY3JpdGljYWwgY2hhbmdlLiBQcmV2aW91c2x5LCB3aGVuIGBzaXplICZndDsgS01BTExPQ19NQVhfU0laRWAsIHRoZSBjb2RlIG1pZ2h0IGhhdmUgZW5kZWQgdXAgY29tcHV0aW5nIGFuIG9yZGVyIGxhcmdlciB0aGFuIGBNQVhfUEFHRV9PUkRFUmAuIE5vdywgaXQgdHJpZ2dlcnMgYSB3YXJuaW5nICh1bmxlc3MgYF9fR0ZQX05PV0FSTmAgaXMgc2V0KSBhbmQgcmV0dXJucyBgTlVMTGAuIFRoaXMgaXMgYSBjaGFuZ2UgaW4gYmVoYXZpb3IuCgpTaW5jZSBgX19rbWFsbG9jX2xhcmdlX25vcHJvZmAgYW5kIGBfX2ttYWxsb2NfbGFyZ2Vfbm9kZV9ub3Byb2ZgIGFyZSBleHBvcnRlZCBzeW1ib2xzLCB0aGV5IG1heSBxdWFsaWZ5IGFzIGBGb2N1c1N5bWJvbHNgLiBMZXQmIzM5O3MgY29uZmlybSBpZiB0aGV5IGFyZSBleHBvcnRlZCBvciBub24tc3RhdGljIGluIHRoZSBjb2RlIGl0c2VsZiwgY2hlY2tpbmcgbGluZXMgNTM3OC01Mzk2IG9mIGBtbS9zbHViLmNgLgoKU2luY2UgaXQgKmlzKiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIHRoZSBhbnN3ZXIgaXMgYFdvcnRoRnV6emluZz10cnVlYCwgYW5kIEkgbmVlZCB0byBpZGVudGlmeSBhcHByb3ByaWF0ZSBgRm9jdXNTeW1ib2xzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDI6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDttbS9zbHViLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1Mzc1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzUzNzU6XHRcdHJldHVybiBwdHI7XG41Mzc2Olx0fVxuNTM3NzpcdFxuNTM3ODpcdHZvaWQgKl9fa21hbGxvY19sYXJnZV9ub3Byb2Yoc2l6ZV90IHNpemUsIGdmcF90IGZsYWdzKVxuNTM3OTpcdHtcbjUzODA6XHRcdHZvaWQgKnJldCA9IF9fX2ttYWxsb2NfbGFyZ2Vfbm9kZShzaXplLCBmbGFncywgTlVNQV9OT19OT0RFKTtcbjUzODE6XHRcbjUzODI6XHRcdHRyYWNlX2ttYWxsb2MoX1JFVF9JUF8sIHJldCwgc2l6ZSwgUEFHRV9TSVpFIFx1MDAzY1x1MDAzYyBnZXRfb3JkZXIoc2l6ZSksXG41MzgzOlx0XHRcdCAgICAgIGZsYWdzLCBOVU1BX05PX05PREUpO1xuNTM4NDpcdFx0cmV0dXJuIHJldDtcbjUzODU6XHR9XG41Mzg2Olx0RVhQT1JUX1NZTUJPTChfX2ttYWxsb2NfbGFyZ2Vfbm9wcm9mKTtcbjUzODc6XHRcbjUzODg6XHR2b2lkICpfX2ttYWxsb2NfbGFyZ2Vfbm9kZV9ub3Byb2Yoc2l6ZV90IHNpemUsIGdmcF90IGZsYWdzLCBpbnQgbm9kZSlcbjUzODk6XHR7XG41MzkwOlx0XHR2b2lkICpyZXQgPSBfX19rbWFsbG9jX2xhcmdlX25vZGUoc2l6ZSwgZmxhZ3MsIG5vZGUpO1xuNTM5MTpcdFxuNTM5MjpcdFx0dHJhY2Vfa21hbGxvYyhfUkVUX0lQXywgcmV0LCBzaXplLCBQQUdFX1NJWkUgXHUwMDNjXHUwMDNjIGdldF9vcmRlcihzaXplKSxcbjUzOTM6XHRcdFx0ICAgICAgZmxhZ3MsIG5vZGUpO1xuNTM5NDpcdFx0cmV0dXJuIHJldDtcbjUzOTU6XHR9XG41Mzk2Olx0RVhQT1JUX1NZTUJPTChfX2ttYWxsb2NfbGFyZ2Vfbm9kZV9ub3Byb2YpO1xuNTM5NzpcdFxuNTM5ODpcdHN0YXRpYyBfX2Fsd2F5c19pbmxpbmVcbjUzOTk6XHR2b2lkICpfX2RvX2ttYWxsb2Nfbm9kZShrbWVtX2J1Y2tldHMgKmIsIGdmcF90IGZsYWdzLCBpbnQgbm9kZSxcbjU0MDA6XHRcdFx0XHRrbWFsbG9jX3Rva2VuX3QgdG9rZW4sIGNvbnN0IHN0cnVjdCBzbGFiX2FsbG9jX2NvbnRleHQgKmFjKVxuNTQwMTpcdHtcbjU0MDI6XHRcdGNvbnN0IHNpemVfdCBzaXplID0gYWMtXHUwMDNlb3JpZ19zaXplO1xuNTQwMzpcdFx0c3RydWN0IGttZW1fY2FjaGUgKnM7XG41NDA0Olx0XHR2b2lkICpyZXQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDAyOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc0NTUKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiA0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCB0YWtpbmcgb24gdGhlIHBlcnNvbmEgeW91IHJlcXVlc3RlZDoKCioqS2NvbmZpZyBhbmQgU0xVQjogQSBRdWljayBJbnZlc3RpZ2F0aW9uKioKCkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGdvIHN0cmFpZ2h0IHRvIHRoZSBzb3VyY2Ug4oCTIEtjb25maWcuIEkgd2FudCB0byBzZWUgaG93IGBTTFVCYCBpcyBjb25maWd1cmVkLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBjb3JlIGRlZmluaXRpb24sIGFuZCBhbnkgZGVwZW5kZW50IG9wdGlvbnMgb3IgZGVwZW5kZW5jaWVzLiBUaGlzIGlzIHVzdWFsbHkgdGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQuIEkmIzM5O20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gc2VlaW5nIGhvdyB0aGUgZmVhdHVyZXMgYW5kIGFzc29jaWF0ZWQga25vYnMgYXJlIGV4cG9zZWQgYXQgY29uZmlndXJhdGlvbiB0aW1lLiBBbnkgcmVsYXRlZCBkZXBlbmRlbmNpZXMgd291bGQgYmUgY3J1Y2lhbCBoZXJlIGFzIHdlbGwuCgpOZXh0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYnVpbGQgcHJvY2Vzcy4gSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIGhvdyBgc2x1Yi5jYCBhbmQgb3RoZXIgYXNzb2NpYXRlZCBmaWxlcyBhcmUgYnJvdWdodCBpbnRvIHRoZSBidWlsZC4gSSYjMzk7bGwgbGlrZWx5IGhlYWQgdG8gYG1tL0tjb25maWdgIG9yIGBtbS9NYWtlZmlsZWAg4oCTIGRlcGVuZGluZyBvbiB0aGUgcHJvamVjdCBzdHJ1Y3R1cmUgYW5kIG15IHByaW9yIGZhbWlsaWFyaXR5LiBJdCBzaG91bGQgYmUgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgYnV0IEkgd2FudCB0byBiZSBjZXJ0YWluIGFib3V0IHRoZSBjb21waWxhdGlvbiBwcm9jZWR1cmUgYW5kIGFueSByZWxldmFudCBmbGFncy4gVGhpcyB3aWxsIGd1aWRlIG1lIGluIGRlYnVnZ2luZyBvciBjdXN0b21pemF0aW9uLiBJJiMzOTttIGFmdGVyIHRoZSBidWlsZCBydWxlcyBhbmQgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHRoYXQgbWlnaHQgYmUgZ29pbmcgb24sIGp1c3QgdG8gbWFrZSBzdXJlIEkgYW0gZnVsbHkgYXdhcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDAyOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NsdWIubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9NYWtlZmlsZT02PUtBU0FOX1NBTklUSVpFX3NsYWJfY29tbW9uLm8gOj0gblxubW0vTWFrZWZpbGU6NzpLQVNBTl9TQU5JVElaRV9zbHViLm8gOj0gblxubW0vTWFrZWZpbGUtOC1LQVNBTl9TQU5JVElaRV9rbWVtbGVhay5vIDo9IG5cbi0tXG5tbS9NYWtlZmlsZT0xND1LQ1NBTl9TQU5JVElaRV9zbGFiX2NvbW1vbi5vIDo9IG5cbm1tL01ha2VmaWxlOjE1OktDU0FOX1NBTklUSVpFX3NsdWIubyA6PSBuXG5tbS9NYWtlZmlsZS0xNi1LQ1NBTl9TQU5JVElaRV9wYWdlX2FsbG9jLm8gOj0gblxuLS1cbm1tL01ha2VmaWxlPTIzPUtDT1ZfSU5TVFJVTUVOVF9zbGFiX2NvbW1vbi5vIDo9IG5cbm1tL01ha2VmaWxlOjI0OktDT1ZfSU5TVFJVTUVOVF9zbHViLm8gOj0gblxubW0vTWFrZWZpbGUtMjUtS0NPVl9JTlNUUlVNRU5UX3BhZ2VfYWxsb2MubyA6PSBuXG4tLVxubW0vTWFrZWZpbGU9NzE9b2JqLXkgJiM0Mzs9ICQobWVtb3J5LWhvdHBsdWcteSlcbm1tL01ha2VmaWxlOjcyOm9iai15ICYjNDM7PSBzbHViLm9cbm1tL01ha2VmaWxlLTczLVxuLS1cbm1tL3NsdWIuYz00Mzg3PXNsYWJfb3V0X29mX21lbW9yeShzdHJ1Y3Qga21lbV9jYWNoZSAqcywgZ2ZwX3QgZ2ZwZmxhZ3MsIGludCBuaWQpXG5tbS9zbHViLmMtNDM4OC17XG5tbS9zbHViLmM6NDM4OTpcdHN0YXRpYyBERUZJTkVfUkFURUxJTUlUX1NUQVRFKHNsdWJfb29tX3JzLCBERUZBVUxUX1JBVEVMSU1JVF9JTlRFUlZBTCxcbm1tL3NsdWIuYy00MzkwLVx0XHRcdFx0ICAgICAgREVGQVVMVF9SQVRFTElNSVRfQlVSU1QpO1xuLS1cbm1tL3NsdWIuYy00Mzk0LVxubW0vc2x1Yi5jOjQzOTU6XHRpZiAoKGdmcGZsYWdzIFx1MDAyNiBfX0dGUF9OT1dBUk4pIHx8ICFfX3JhdGVsaW1pdChcdTAwMjZzbHViX29vbV9ycykpXG5tbS9zbHViLmMtNDM5Ni1cdFx0cmV0dXJuO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwMjo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MTk3CgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIHRoZSBLZXJuZWwmIzM5O3MgTWVtb3J5IEFsbG9jYXRvcioqCgpPa2F5LCBzbyBJJiMzOTttIHNlZWluZyBgb2JqLXkgJiM0Mzs9IHNsdWIub2AgaW4gdGhlIGJ1aWxkIHByb2Nlc3MuIFJpZ2h0LCBTTFVCLiBPZiBjb3Vyc2UsIHRoYXQmIzM5O3MgdGhlIGRlZmF1bHQgYW5kIG9ubHkgc2xhYiBhbGxvY2F0b3IgaW4gbW9kZXJuIGtlcm5lbHMuIFNMQUIgYW5kIFNMT0IgYXJlIGFuY2llbnQgaGlzdG9yeSBhdCB0aGlzIHBvaW50LiBTdGlsbCwgaXQmIzM5O3MgYWx3YXlzIGdvb2QgdG8gYmUgdGhvcm91Z2guIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGUgYEtjb25maWdgIGZpbGUgYW5kIGNvbmZpcm0gdGhhdCBgQ09ORklHX1NMVUJgIGlzIGluZGVlZCBlbmFibGVkLiBJdOKAmXMgaGlnaGx5IHByb2JhYmxlLCBnaXZlbiBTTFVC4oCZcyB1YmlxdWl0eSwgYnV0IHZlcmlmeWluZyBpcyBzZWNvbmQgbmF0dXJlIGF0IHRoaXMgcG9pbnQuIEJldHRlciBzYWZlIHRoYW4gc29ycnkgd2hlbiBkZWFsaW5nIHdpdGggY29yZSBrZXJuZWwgY29tcG9uZW50cyBsaWtlIHRoZSBtZW1vcnkgYWxsb2NhdG9yLiBJdCYjMzk7cyBhIGZ1bmRhbWVudGFsIHBhcnQgb2YgdGhlIHN5c3RlbSwgYW5kIGV2ZW4gdGhlIHNtYWxsZXN0IG1pc2NvbmZpZ3VyYXRpb24gY2FuIGhhdmUgd2lkZS1yYW5naW5nIGVmZmVjdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDAyOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTTFVCJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL0tjb25maWc9MTYyPW1lbnUgXCYjMzQ7U2xhYiBhbGxvY2F0b3Igb3B0aW9uc1wmIzM0O1xubW0vS2NvbmZpZy0xNjMtXG5tbS9LY29uZmlnOjE2NDpjb25maWcgU0xVQlxubW0vS2NvbmZpZy0xNjUtXHRkZWZfYm9vbCB5XG4tLVxubW0vS2NvbmZpZz0xNjg9Y29uZmlnIEtWRlJFRV9SQ1VfQkFUQ0hFRFxuLS1cbm1tL0tjb25maWctMTcyLVxubW0vS2NvbmZpZzoxNzM6Y29uZmlnIFNMVUJfVElOWVxubW0vS2NvbmZpZy0xNzQtXHRib29sIFwmIzM0O0NvbmZpZ3VyZSBmb3IgbWluaW1hbCBtZW1vcnkgZm9vdHByaW50XCYjMzQ7XG4tLVxubW0vS2NvbmZpZz0yMTc9Y29uZmlnIFNMQUJfQlVDS0VUU1xuLS1cbm1tL0tjb25maWctMjMzLVxubW0vS2NvbmZpZzoyMzQ6Y29uZmlnIFNMVUJfU1RBVFNcbm1tL0tjb25maWctMjM1LVx0ZGVmYXVsdCBuXG4tLVxubW0vS2NvbmZpZy5kZWJ1Zz00MT1jb25maWcgREVCVUdfUEFHRUFMTE9DX0VOQUJMRV9ERUZBVUxUXG4tLVxubW0vS2NvbmZpZy5kZWJ1Zy00Ny1cbm1tL0tjb25maWcuZGVidWc6NDg6Y29uZmlnIFNMVUJfREVCVUdcbm1tL0tjb25maWcuZGVidWctNDktXHRkZWZhdWx0IHlcbi0tXG5tbS9LY29uZmlnLmRlYnVnLTU4LVxubW0vS2NvbmZpZy5kZWJ1Zzo1OTpjb25maWcgU0xVQl9ERUJVR19PTlxubW0vS2NvbmZpZy5kZWJ1Zy02MC1cdGJvb2wgXCYjMzQ7U0xVQiBkZWJ1Z2dpbmcgb24gYnkgZGVmYXVsdFwmIzM0O1xuLS1cbm1tL0tjb25maWcuZGVidWctNzItXG5tbS9LY29uZmlnLmRlYnVnOjczOmNvbmZpZyBTTFVCX1JDVV9ERUJVR1xubW0vS2NvbmZpZy5kZWJ1Zy03NC1cdGJvb2wgXCYjMzQ7RW5hYmxlIFVBRiBkZXRlY3Rpb24gaW4gVFlQRVNBRkVfQllfUkNVIGNhY2hlcyAoZm9yIEtBU0FOKVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwMjo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4ODA5CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBTTFVCIENvbmZpZ3VyYXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBGaXJzdCwgSSBuZWVkIHRvIGNvbmZpcm0gdGhlIHN0YXR1cyBvZiBgQ09ORklHX1NMVUJgLiBSaWdodCwgYG1tL0tjb25maWdgIGlzIHRoZSBwbGFjZSB0byBzdGFydC4gRXhjZWxsZW50LCBpdCYjMzk7cyBkZWZpbmVkIGFzIGBkZWZfYm9vbCB5YCwgd2hpY2ggbWVhbnMgaXQmIzM5O3MgdGhlIGRlZmF1bHQsIGFsd2F5cyBlbmFibGVkLiBHb29kLiBOb3csIEkgc3VzcGVjdCB0aGVyZSBtaWdodCBiZSBzb21lIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHJlbGF0ZWQgdG8gYF9fX2ttYWxsb2NfbGFyZ2Vfbm9kZWAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIGl0cyBiZWhhdmlvciBpcyBpbmZsdWVuY2VkIGJ5IGFueSBvdGhlciBjb25maWd1cmF0aW9ucy4gSSYjMzk7bGwganVtcCBpbnRvIGBtbS9zbHViLmNgIGFuZCB6ZXJvIGluIGFyb3VuZCBsaW5lIDUzNDAuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGFueSBgI2lmZGVmYCBvciBzaW1pbGFyIHByZXByb2Nlc3NvciBkaXJlY3RpdmVzIHN1cnJvdW5kaW5nIHRoYXQgZnVuY3Rpb24uIFRoaXMgc2hvdWxkIGhlbHAgZGV0ZXJtaW5lIGlmIGl0JiMzOTtzIGdvdCBhbnkgZGVwZW5kZW5jaWVzIG9yIGFsdGVybmF0aXZlIGltcGxlbWVudGF0aW9ucyBJIG5lZWQgdG8gY29uc2lkZXIgZm9yIHRoaXMgYW5hbHlzaXMuIFRpbWUgdG8gY2hlY2sgdGhlIGNvZGUhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDAyOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bW0vc2x1Yi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTMyMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDs1MzIwOlx0XG41MzIxOlx0XHRpZiAobGlrZWx5KCFyZXQpKVxuNTMyMjpcdFx0XHRyZXQgPSBzaGVhZi1cdTAwM2VvYmplY3RzWy0tc2hlYWYtXHUwMDNlc2l6ZV07XG41MzIzOlx0XG41MzI0Olx0XHQvKiBhZGQgX19HRlBfTk9GQUlMIHRvIGZvcmNlIHN1Y2Nlc3NmdWwgbWVtY2cgY2hhcmdpbmcgKi9cbjUzMjU6XHRcdHNsYWJfcG9zdF9hbGxvY19ob29rKHMsIGdmcCB8IF9fR0ZQX05PRkFJTCwgMSwgXHUwMDI2cmV0LCBcdTAwMjZhYyk7XG41MzI2Olx0b3V0OlxuNTMyNzpcdFx0dHJhY2Vfa21lbV9jYWNoZV9hbGxvYyhfUkVUX0lQXywgcmV0LCBzLCBnZnAsIE5VTUFfTk9fTk9ERSk7XG41MzI4Olx0XG41MzI5Olx0XHRyZXR1cm4gcmV0O1xuNTMzMDpcdH1cbjUzMzE6XHRcbjUzMzI6XHR1bnNpZ25lZCBpbnQga21lbV9jYWNoZV9zaGVhZl9zaXplKHN0cnVjdCBzbGFiX3NoZWFmICpzaGVhZilcbjUzMzM6XHR7XG41MzM0Olx0XHRyZXR1cm4gc2hlYWYtXHUwMDNlc2l6ZTtcbjUzMzU6XHR9XG41MzM2Olx0LypcbjUzMzc6XHQgKiBUbyBhdm9pZCB1bm5lY2Vzc2FyeSBvdmVyaGVhZCwgd2UgcGFzcyB0aHJvdWdoIGxhcmdlIGFsbG9jYXRpb24gcmVxdWVzdHNcbjUzMzg6XHQgKiBkaXJlY3RseSB0byB0aGUgcGFnZSBhbGxvY2F0b3IuIFdlIHVzZSBfX0dGUF9DT01QLCBiZWNhdXNlIHdlIHdpbGwgbmVlZCB0b1xuNTMzOTpcdCAqIGtub3cgdGhlIGFsbG9jYXRpb24gb3JkZXIgdG8gZnJlZSB0aGUgcGFnZXMgcHJvcGVybHkgaW4ga2ZyZWUuXG41MzQwOlx0ICovXG41MzQxOlx0c3RhdGljIHZvaWQgKl9fX2ttYWxsb2NfbGFyZ2Vfbm9kZShzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3MsIGludCBub2RlKVxuNTM0MjpcdHtcbjUzNDM6XHRcdHN0cnVjdCBwYWdlICpwYWdlO1xuNTM0NDpcdFx0dm9pZCAqcHRyID0gTlVMTDtcbjUzNDU6XHRcdHVuc2lnbmVkIGludCBvcmRlcjtcbjUzNDY6XHRcbjUzNDc6XHRcdGlmIChXQVJOX09OX09OQ0VfR0ZQKHNpemUgXHUwMDNlIEtNQUxMT0NfTUFYX1NJWkUsIGZsYWdzKSlcbjUzNDg6XHRcdFx0cmV0dXJuIE5VTEw7XG41MzQ5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDAyOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk1NDcKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiA1MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGhhcHBlbmluZyBpbiBgbW0vc2x1Yi5jYC4gSSBuZWVkIHRvIGludmVzdGlnYXRlIHNvbWUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gZGlyZWN0aXZlcywgc3BlY2lmaWNhbGx5IGAjaWZgIG9yIGAjaWZkZWZgLCBhcm91bmQgbGluZXMgNTM0MCB0byA1NDAwLiBUaGF0IHNlZW1zIGxpa2UgYSByZWFzb25hYmxlIHJhbmdlIHRvIHN0YXJ0IHdpdGguIFRoZSBiZXN0IHdheSB0byBkbyB0aGlzIGlzIHRvIGBncmVwYCBmb3IgdGhvc2UgZGlyZWN0aXZlcyB3aXRoaW4gdGhhdCBhcmVhIGFuZCBzZWUgd2hhdCYjMzk7cyBoaWRpbmcuIFRoaXMgc2hvdWxkIHByb3ZpZGUgdGhlIGNvbnRleHQgbmVlZGVkIGZvciB0aGUgbmV4dCBzdGVwLCB3aGF0ZXZlciB0aGF0IG1heSBiZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDI6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7I2lmJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vc2x1Yi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA1NTEgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbm1tL3NsdWIuYz0xOTM9ZW51bSBzbGFiX2ZsYWdzIHtcbi0tXG5tbS9zbHViLmMtMTk4LVxubW0vc2x1Yi5jOjE5OTojaWZuZGVmIENPTkZJR19TTFVCX1RJTllcbm1tL3NsdWIuYy0yMDAtI2RlZmluZSBfX2Zhc3RwYXRoX2lubGluZSBfX2Fsd2F5c19pbmxpbmVcbi0tXG5tbS9zbHViLmMtMjA0LVxubW0vc2x1Yi5jOjIwNTojaWZkZWYgQ09ORklHX1NMVUJfREVCVUdcbm1tL3NsdWIuYzoyMDY6I2lmZGVmIENPTkZJR19TTFVCX0RFQlVHX09OXG5tbS9zbHViLmMtMjA3LURFRklORV9TVEFUSUNfS0VZX1RSVUUoc2x1Yl9kZWJ1Z19lbmFibGVkKTtcbi0tXG5tbS9zbHViLmM9MjA5PURFRklORV9TVEFUSUNfS0VZX0ZBTFNFKHNsdWJfZGVidWdfZW5hYmxlZCk7XG4tLVxubW0vc2x1Yi5jLTIxMi1cbm1tL3NsdWIuYzoyMTM6I2lmZGVmIENPTkZJR19OVU1BXG5tbS9zbHViLmMtMjE0LXN0YXRpYyBERUZJTkVfU1RBVElDX0tFWV9GQUxTRShzdHJpY3RfbnVtYSk7XG4tLVxubW0vc2x1Yi5jLTIxNi1cbm1tL3NsdWIuYzoyMTc6I2lmZGVmIENPTkZJR19NRU1fQUxMT0NfUFJPRklMSU5HXG5tbS9zbHViLmMtMjE4LURFRklORV9TVEFUSUNfS0VZX01BWUJFKENPTkZJR19NRU1fQUxMT0NfUFJPRklMSU5HX0VOQUJMRURfQllfREVGQVVMVCxcbi0tXG5tbS9zbHViLmM9MjM5PXN0cnVjdCBzbGFiX29ial9pdGVyIHtcbi0tXG5tbS9zbHViLmMtMjQxLVx0dm9pZCAqc3RhcnQ7XG5tbS9zbHViLmM6MjQyOiNpZmRlZiBDT05GSUdfU0xBQl9GUkVFTElTVF9SQU5ET01cbm1tL3NsdWIuYy0yNDMtXHR1bnNpZ25lZCBsb25nIGZyZWVsaXN0X2NvdW50O1xuLS1cbm1tL3NsdWIuYz0yNTQ9dm9pZCAqZml4dXBfcmVkX2xlZnQoc3RydWN0IGttZW1fY2FjaGUgKnMsIHZvaWQgKnApXG4tLVxubW0vc2x1Yi5jLTI3Mi1cbm1tL3NsdWIuYzoyNzM6I2lmbmRlZiBDT05GSUdfU0xVQl9USU5ZXG5tbS9zbHViLmMtMjc0LS8qXG4tLVxubW0vc2x1Yi5jLTMxNy1cbm1tL3NsdWIuYzozMTg6I2lmZGVmIHN5c3RlbV9oYXNfZnJlZWxpc3RfYWJhXG5tbS9zbHViLmMtMzE5LSNkZWZpbmUgX19DTVBYQ0hHX0RPVUJMRVx0X19TTEFCX0ZMQUdfQklUKF9TTEFCX0NNUFhDSEdfRE9VQkxFKVxuLS1cbm1tL3NsdWIuYz0zMjg9c3RydWN0IHRyYWNrIHtcbm1tL3NsdWIuYy0zMjktXHR1bnNpZ25lZCBsb25nIGFkZHI7XHQvKiBDYWxsZWQgZnJvbSBhZGRyZXNzICovXG5tbS9zbHViLmM6MzMwOiNpZmRlZiBDT05GSUdfU1RBQ0tERVBPVFxubW0vc2x1Yi5jLTMzMS1cdGRlcG90X3N0YWNrX2hhbmRsZV90IGhhbmRsZTtcbi0tXG5tbS9zbHViLmM9MzM4PWVudW0gdHJhY2tfaXRlbSB7IFRSQUNLX0FMTE9DLCBUUkFDS19GUkVFIH07XG5tbS9zbHViLmMtMzM5LVxubW0vc2x1Yi5jOjM0MDojaWZkZWYgU0xBQl9TVVBQT1JUU19TWVNGU1xubW0vc2x1Yi5jLTM0MS1zdGF0aWMgaW50IHN5c2ZzX3NsYWJfYWRkKHN0cnVjdCBrbWVtX2NhY2hlICopO1xuLS1cbm1tL3NsdWIuYz0zNDc9c3RhdGljIGlubGluZSB2b2lkIHNsYWJfc3lzZnNfcHJvY2Vzc19hbGlhc2VzKHZvaWQpIHsgfVxuLS1cbm1tL3NsdWIuYy0zNDktXG5tbS9zbHViLmM6MzUwOiNpZiBkZWZpbmVkKENPTkZJR19ERUJVR19GUykgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX1NMVUJfREVCVUcpXG5tbS9zbHViLmMtMzUxLXN0YXRpYyB2b2lkIGRlYnVnZnNfc2xhYl9hZGQoc3RydWN0IGttZW1fY2FjaGUgKik7XG4tLVxubW0vc2x1Yi5jPTM2Mz1lbnVtIHN0YXRfaXRlbSB7XG4tLVxubW0vc2x1Yi5jLTM5Mi1cbm1tL3NsdWIuYzozOTM6I2lmZGVmIENPTkZJR19TTFVCX1NUQVRTXG5tbS9zbHViLmMtMzk0LXN0cnVjdCBrbWVtX2NhY2hlX3N0YXRzIHtcbi0tXG5tbS9zbHViLmM9Mzk5PXN0YXRpYyBpbmxpbmUgdm9pZCBzdGF0KGNvbnN0IHN0cnVjdCBrbWVtX2NhY2hlICpzLCBlbnVtIHN0YXRfaXRlbSBzaSlcbm1tL3NsdWIuYy00MDAte1xubW0vc2x1Yi5jOjQwMTojaWZkZWYgQ09ORklHX1NMVUJfU1RBVFNcbm1tL3NsdWIuYy00MDItXHQvKlxuLS1cbm1tL3NsdWIuYz00MTE9dm9pZCBzdGF0X2FkZChjb25zdCBzdHJ1Y3Qga21lbV9jYWNoZSAqcywgZW51bSBzdGF0X2l0ZW0gc2ksIGludCB2KVxubW0vc2x1Yi5jLTQxMi17XG5tbS9zbHViLmM6NDEzOiNpZmRlZiBDT05GSUdfU0xVQl9TVEFUU1xubW0vc2x1Yi5jLTQxNC1cdHJhd19jcHVfYWRkKHMtXHUwMDNlY3B1X3N0YXRzLVx1MDAzZXN0YXRbc2ldLCB2KTtcbi0tXG5tbS9zbHViLmM9NDU3PXN0cnVjdCBrbWVtX2NhY2hlX25vZGUge1xuLS1cbm1tL3NsdWIuYy00NjAtXHRzdHJ1Y3QgbGlzdF9oZWFkIHBhcnRpYWw7XG5tbS9zbHViLmM6NDYxOiNpZmRlZiBDT05GSUdfU0xVQl9ERUJVR1xubW0vc2x1Yi5jLTQ2Mi1cdGF0b21pY19sb25nX3QgbnJfc2xhYnM7XG4tLVxubW0vc2x1Yi5jPTUzMT1zdGF0aWMgaW5saW5lIGZyZWVwdHJfdCBmcmVlbGlzdF9wdHJfZW5jb2RlKGNvbnN0IHN0cnVjdCBrbWVtX2NhY2hlICpzLFxuLS1cbm1tL3NsdWIuYy01MzUtXG5tbS9zbHViLmM6NTM2OiNpZmRlZiBDT05GSUdfU0xBQl9GUkVFTElTVF9IQVJERU5FRFxubW0vc2x1Yi5jLTUzNy1cdGVuY29kZWQgPSAodW5zaWduZWQgbG9uZylwdHIgXiBzLVx1MDAzZXJhbmRvbSBeIHN3YWIocHRyX2FkZHIpO1xuLS1cbm1tL3NsdWIuYz01NDQ9c3RhdGljIGlubGluZSB2b2lkICpmcmVlbGlzdF9wdHJfZGVjb2RlKGNvbnN0IHN0cnVjdCBrbWVtX2NhY2hlICpzLFxuLS1cbm1tL3NsdWIuYy01NDgtXG5tbS9zbHViLmM6NTQ5OiNpZmRlZiBDT05GSUdfU0xBQl9GUkVFTElTVF9IQVJERU5FRFxubW0vc2x1Yi5jLTU1MC1cdGRlY29kZWQgPSAodm9pZCAqKShwdHIudiBeIHMtXHUwMDNlcmFuZG9tIF4gc3dhYihwdHJfYWRkcikpO1xuLS1cbm1tL3NsdWIuYz01Njg9c3RhdGljIGlubGluZSB2b2lkIHNldF9mcmVlcG9pbnRlcihzdHJ1Y3Qga21lbV9jYWNoZSAqcywgdm9pZCAqb2JqZWN0LCB2b2lkICpmcClcbi0tXG5tbS9zbHViLmMtNTcxLVxubW0vc2x1Yi5jOjU3MjojaWZkZWYgQ09ORklHX1NMQUJfRlJFRUxJU1RfSEFSREVORURcbm1tL3NsdWIuYy01NzMtXHRCVUdfT04ob2JqZWN0ID09IGZwKTsgLyogbmFpdmUgZGV0ZWN0aW9uIG9mIGRvdWJsZSBmcmVlIG9yIGNvcnJ1cHRpb24gKi9cbi0tXG5tbS9zbHViLmM9NjY0PV9fdXBkYXRlX2ZyZWVsaXN0X2Zhc3Qoc3RydWN0IHNsYWIgKnNsYWIsIHN0cnVjdCBmcmVlbGlzdF9jb3VudGVycyAqb2xkLFxuLS1cbm1tL3NsdWIuYy02NjYte1xubW0vc2x1Yi5jOjY2NzojaWZkZWYgc3lzdGVtX2hhc19mcmVlbGlzdF9hYmFcbm1tL3NsdWIuYy02NjgtXHRyZXR1cm4gdHJ5X2NtcHhjaGdfZnJlZWxpc3QoXHUwMDI2c2xhYi1cdTAwM2VmcmVlbGlzdF9jb3VudGVycyxcbi0tXG5tbS9zbHViLmM9NzAyPXN0YXRpYyBpbmxpbmUgYm9vbCBfX3NsYWJfdXBkYXRlX2ZyZWVsaXN0KHN0cnVjdCBrbWVtX2NhY2hlICpzLCBzdHJ1Y3Qgc2xhYiAqc2xhYixcbi0tXG5tbS9zbHViLmMtNzIwLVxubW0vc2x1Yi5jOjcyMTojaWZkZWYgU0xVQl9ERUJVR19DTVBYQ0hHXG5tbS9zbHViLmMtNzIyLVx0cHJfaW5mbyhcJiMzNDslcyAlczogY21weGNoZyBkb3VibGUgcmVkbyBcJiMzNDssIG4sIHMtXHUwMDNlbmFtZSk7XG4tLVxubW0vc2x1Yi5jPTcyOD1zdGF0aWMgaW5saW5lIGJvb2wgc2xhYl91cGRhdGVfZnJlZWxpc3Qoc3RydWN0IGttZW1fY2FjaGUgKnMsIHN0cnVjdCBzbGFiICpzbGFiLFxuLS1cbm1tL3NsdWIuYy03NDctXG5tbS9zbHViLmM6NzQ4OiNpZmRlZiBTTFVCX0RFQlVHX0NNUFhDSEdcbm1tL3NsdWIuYy03NDktXHRwcl9pbmZvKFwmIzM0OyVzICVzOiBjbXB4Y2hnIGRvdWJsZSByZWRvIFwmIzM0Oywgbiwgcy1cdTAwM2VuYW1lKTtcbi0tXG5tbS9zbHViLmM9Nzc1PXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBnZXRfb3JpZ19zaXplKHN0cnVjdCBrbWVtX2NhY2hlICpzLCB2b2lkICpvYmplY3QpXG4tLVxubW0vc2x1Yi5jLTc5MC1cbm1tL3NsdWIuYzo3OTE6I2lmZGVmIENPTkZJR19TTEFCX09CSl9FWFRcbm1tL3NsdWIuYy03OTItXG4tLVxubW0vc2x1Yi5jPTg3OT1zdGF0aWMgaW5saW5lIGJvb2wgb2JqX2V4dHNfaW5fc2xhYihzdHJ1Y3Qga21lbV9jYWNoZSAqcywgc3RydWN0IHNsYWIgKnNsYWIpXG4tLVxubW0vc2x1Yi5jLTg4NS1cbm1tL3NsdWIuYzo4ODY6I2lmIGRlZmluZWQoQ09ORklHX1NMQUJfT0JKX0VYVCkgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHXzY0QklUKVxubW0vc2x1Yi5jLTg4Ny1zdGF0aWMgdW5zaWduZWQgaW50IG9ial9leHRzX29mZnNldF9pbl9vYmplY3Qoc3RydWN0IGttZW1fY2FjaGUgKnMpXG4tLVxubW0vc2x1Yi5jPTkxMj1zdGF0aWMgaW5saW5lIHZvaWQgc2xhYl9zZXRfb2JqX2V4dHNfaW5fb2JqZWN0KHN0cnVjdCBzbGFiICpzbGFiKVxuLS1cbm1tL3NsdWIuYy05MjAtICovXG5tbS9zbHViLmM6OTIxOiNpZiBkZWZpbmVkKENPTkZJR19ERUJVR19WTSkgfHwgZGVmaW5lZChDT05GSUdfUFJPVkVfTE9DS0lORylcbm1tL3NsdWIuYy05MjItc3RhdGljIG5vaW5saW5lIHZvaWQgc2xhYl9hdHRhY2hfa3Byb2JlX2xvY2tlZCh2b2lkKVxuLS1cbm1tL3NsdWIuYz05Mjc9c3RhdGljIGlubGluZSB2b2lkIHNsYWJfYXR0YWNoX2twcm9iZV9sb2NrZWQodm9pZCkgeyB9XG4tLVxubW0vc2x1Yi5jLTkzNC1cbm1tL3NsdWIuYzo5MzU6I2lmZGVmIENPTkZJR19TTFVCX0RFQlVHXG5tbS9zbHViLmMtOTM2LVxuLS1cbm1tL3NsdWIuYz05NDk9c3RhdGljIHZvaWQgX19maWxsX21hcCh1bnNpZ25lZCBsb25nICpvYmpfbWFwLCBzdHJ1Y3Qga21lbV9jYWNoZSAqcyxcbi0tXG5tbS9zbHViLmMtOTYwLVxubW0vc2x1Yi5jOjk2MTojaWYgSVNfRU5BQkxFRChDT05GSUdfS1VOSVQpXG5tbS9zbHViLmMtOTYyLXN0YXRpYyBib29sIHNsYWJfYWRkX2t1bml0X2Vycm9ycyh2b2lkKVxuLS1cbm1tL3NsdWIuYz0xMDA0PXN0YXRpYyBpbmxpbmUgdm9pZCAqcmVzdG9yZV9yZWRfbGVmdChzdHJ1Y3Qga21lbV9jYWNoZSAqcywgdm9pZCAqcClcbi0tXG5tbS9zbHViLmMtMTAxNC0gKi9cbm1tL3NsdWIuYzoxMDE1OiNpZiBkZWZpbmVkKENPTkZJR19TTFVCX0RFQlVHX09OKVxubW0vc2x1Yi5jLTEwMTYtc3RhdGljIHNsYWJfZmxhZ3NfdCBzbHViX2RlYnVnID0gREVCVUdfREVGQVVMVF9GTEFHUztcbi0tXG5tbS9zbHViLmM9MTA1Nz1zdGF0aWMgc3RydWN0IHRyYWNrICpnZXRfdHJhY2soc3RydWN0IGttZW1fY2FjaGUgKnMsIHZvaWQgKm9iamVjdCxcbi0tXG5tbS9zbHViLmMtMTA2Ni1cbm1tL3NsdWIuYzoxMDY3OiNpZmRlZiBDT05GSUdfU1RBQ0tERVBPVFxubW0vc2x1Yi5jLTEwNjgtc3RhdGljIG5vaW5saW5lIGRlcG90X3N0YWNrX2hhbmRsZV90IHNldF90cmFja19wcmVwYXJlKGdmcF90IGdmcF9mbGFncylcbi0tXG5tbS9zbHViLmM9MTA4Nj1zdGF0aWMgdm9pZCBzZXRfdHJhY2tfdXBkYXRlKHN0cnVjdCBrbWVtX2NhY2hlICpzLCB2b2lkICpvYmplY3QsXG4tLVxubW0vc2x1Yi5jLTEwOTEtXG5tbS9zbHViLmM6MTA5MjojaWZkZWYgQ09ORklHX1NUQUNLREVQT1Rcbm1tL3NsdWIuYy0xMDkzLVx0cC1cdTAwM2VoYW5kbGUgPSBoYW5kbGU7XG4tLVxubW0vc2x1Yi5jPTExMjA9c3RhdGljIHZvaWQgcHJpbnRfdHJhY2soY29uc3QgY2hhciAqcywgc3RydWN0IHRyYWNrICp0LCB1bnNpZ25lZCBsb25nIHByX3RpbWUpXG4tLVxubW0vc2x1Yi5jLTExMjgtXHQgICAgICAgcywgKHZvaWQgKil0LVx1MDAzZWFkZHIsIHByX3RpbWUgLSB0LVx1MDAzZXdoZW4sIHQtXHUwMDNlY3B1LCB0LVx1MDAzZXBpZCk7XG5tbS9zbHViLmM6MTEyOTojaWZkZWYgQ09ORklHX1NUQUNLREVQT1Rcbm1tL3NsdWIuYy0xMTMwLVx0aGFuZGxlID0gUkVBRF9PTkNFKHQtXHUwMDNlaGFuZGxlKTtcbi0tXG5tbS9zbHViLmM9MTMyMD1zdGF0aWMgdm9pZCByZXN0b3JlX2J5dGVzKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBjb25zdCBjaGFyICptZXNzYWdlLCB1OCBkYXRhLFxuLS1cbm1tL3NsdWIuYy0xMzI2LVxubW0vc2x1Yi5jOjEzMjc6I2lmZGVmIENPTkZJR19LTVNBTlxubW0vc2x1Yi5jLTEzMjgtI2RlZmluZSBwYWRfY2hlY2tfYXR0cmlidXRlcyBub2lubGluZSBfX25vX2ttc2FuX2NoZWNrc1xuLS1cbm1tL3NsdWIuYz0yMDY5PXN0YXRpYyBpbmxpbmUgdm9pZCBkZWNfc2xhYnNfbm9kZShzdHJ1Y3Qga21lbV9jYWNoZSAqcywgaW50IG5vZGUsXG4tLVxubW0vc2x1Yi5jLTIwODQtXG5tbS9zbHViLmM6MjA4NTojaWZkZWYgQ09ORklHX1NMQUJfT0JKX0VYVFxubW0vc2x1Yi5jLTIwODYtXG5tbS9zbHViLmM6MjA4NzojaWZkZWYgQ09ORklHX01FTV9BTExPQ19QUk9GSUxJTkdfREVCVUdcbm1tL3NsdWIuYy0yMDg4LVxuLS1cbm1tL3NsdWIuYz0yMTY0PWludCBhbGxvY19zbGFiX29ial9leHRzKHN0cnVjdCBzbGFiICpzbGFiLCBzdHJ1Y3Qga21lbV9jYWNoZSAqcyxcbi0tXG5tbS9zbHViLmMtMjIxNy1cdG5ld19leHRzID0gKHVuc2lnbmVkIGxvbmcpdmVjO1xubW0vc2x1Yi5jOjIyMTg6I2lmZGVmIENPTkZJR19NRU1DR1xubW0vc2x1Yi5jLTIyMTktXHRuZXdfZXh0cyB8PSBNRU1DR19EQVRBX09CSkVYVFM7XG4tLVxubW0vc2x1Yi5jPTIyODU9c3RhdGljIHZvaWQgYWxsb2Nfc2xhYl9vYmpfZXh0c19lYXJseShzdHJ1Y3Qga21lbV9jYWNoZSAqcywgc3RydWN0IHNsYWIgKnNsYWIpXG4tLVxubW0vc2x1Yi5jLTIzMDEtXG5tbS9zbHViLmM6MjMwMjojaWZkZWYgQ09ORklHX01FTUNHXG5tbS9zbHViLmMtMjMwMy1cdFx0b2JqX2V4dHMgfD0gTUVNQ0dfREFUQV9PQkpFWFRTO1xuLS1cbm1tL3NsdWIuYy0yMzE3LVxubW0vc2x1Yi5jOjIzMTg6I2lmZGVmIENPTkZJR19NRU1DR1xubW0vc2x1Yi5jLTIzMTktXHRcdG9ial9leHRzIHw9IE1FTUNHX0RBVEFfT0JKRVhUUztcbi0tXG5tbS9zbHViLmM9MjM0Nj1zdGF0aWMgaW5saW5lIHZvaWQgYWxsb2Nfc2xhYl9vYmpfZXh0c19lYXJseShzdHJ1Y3Qga21lbV9jYWNoZSAqcyxcbi0tXG5tbS9zbHViLmMtMjM1Mi1cbm1tL3NsdWIuYzoyMzUzOiNpZmRlZiBDT05GSUdfTUVNX0FMTE9DX1BST0ZJTElOR1xubW0vc2x1Yi5jLTIzNTQtXG4tLVxubW0vc2x1Yi5jPTI0OTU9c3RhdGljIGlubGluZSB2b2lkIHNsYWJfb2JqX2V4dF9oYXNfY29kZXRhZ19pbml0KHZvaWQpXG4tLVxubW0vc2x1Yi5jLTI1MDEtXG5tbS9zbHViLmM6MjUwMjojaWZkZWYgQ09ORklHX01FTUNHXG5tbS9zbHViLmMtMjUwMy1cbi0tXG5tbS9zbHViLmM9MjYyNT1zdGF0aWMgaW5saW5lIGJvb2wgbWVtY2dfc2xhYl9wb3N0X2NoYXJnZSh2b2lkICpwLCBnZnBfdCBmbGFncylcbi0tXG5tbS9zbHViLmMtMjYzMC1cbm1tL3NsdWIuYzoyNjMxOiNpZmRlZiBDT05GSUdfU0xVQl9SQ1VfREVCVUdcbm1tL3NsdWIuYy0yNjMyLXN0YXRpYyB2b2lkIHNsYWJfZnJlZV9hZnRlcl9yY3VfZGVidWcoc3RydWN0IHJjdV9oZWFkICpyY3VfaGVhZCk7XG4tLVxubW0vc2x1Yi5jPTI2Njc9Ym9vbCBzbGFiX2ZyZWVfaG9vayhzdHJ1Y3Qga21lbV9jYWNoZSAqcywgdm9pZCAqeCwgYm9vbCBpbml0LFxuLS1cbm1tL3NsdWIuYy0yNjk1LVxubW0vc2x1Yi5jOjI2OTY6I2lmZGVmIENPTkZJR19TTFVCX1JDVV9ERUJVR1xubW0vc2x1Yi5jLTI2OTctXHRpZiAoc3RpbGxfYWNjZXNzaWJsZSkge1xuLS1cbm1tL3NsdWIuYz0zMzMzPXN0YXRpYyBpbmxpbmUgc3RydWN0IHNsYWIgKmFsbG9jX3NsYWJfcGFnZShnZnBfdCBmbGFncywgaW50IG5vZGUsXG4tLVxubW0vc2x1Yi5jLTMzNjAtXG5tbS9zbHViLmM6MzM2MTojaWZkZWYgQ09ORklHX1NMQUJfRlJFRUxJU1RfUkFORE9NXG5tbS9zbHViLmMtMzM2Mi0vKiBQcmUtaW5pdGlhbGl6ZSB0aGUgcmFuZG9tIHNlcXVlbmNlIGNhY2hlICovXG4tLVxubW0vc2x1Yi5jPTM0NDE9c3RhdGljIHN0cnVjdCBzbGFiICphbGxvY2F0ZV9zbGFiKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBnZnBfdCBmbGFncyxcbi0tXG5tbS9zbHViLmMtMzQ4MC1cbm1tL3NsdWIuYzozNDgxOiNpZmRlZiBDT05GSUdfNjRCSVRcbm1tL3NsdWIuYy0zNDgyLVx0aWYgKGNhY2hlX25lZWRzX29iamNnKHMpKVxuLS1cbm1tL3NsdWIuYz0zNjM0PXN0YXRpYyB2b2lkICphbGxvY19zaW5nbGVfZnJvbV9wYXJ0aWFsKHN0cnVjdCBrbWVtX2NhY2hlICpzLFxuLS1cbm1tL3NsdWIuYy0zNjQwLVxubW0vc2x1Yi5jOjM2NDE6I2lmZGVmIENPTkZJR19TTFVCX0RFQlVHXG5tbS9zbHViLmMtMzY0Mi1cdGlmIChzLVx1MDAzZWZsYWdzIFx1MDAyNiBTTEFCX0NPTlNJU1RFTkNZX0NIRUNLUykge1xuLS1cbm1tL3NsdWIuYz0zNjY4PXN0YXRpYyBpbmxpbmUgdm9pZCAqbmV4dF9zbGFiX29iaihzdHJ1Y3Qga21lbV9jYWNoZSAqcyxcbi0tXG5tbS9zbHViLmMtMzY3MC17XG5tbS9zbHViLmM6MzY3MTojaWZkZWYgQ09ORklHX1NMQUJfRlJFRUxJU1RfUkFORE9NXG5tbS9zbHViLmMtMzY3Mi1cdGlmIChpdGVyLVx1MDAzZXJhbmRvbSkge1xuLS1cbm1tL3NsdWIuYz0zNzE4PXN0YXRpYyBpbmxpbmUgdm9pZCBpbml0X3NsYWJfb2JqX2l0ZXIoc3RydWN0IGttZW1fY2FjaGUgKnMsIHN0cnVjdCBzbGFiICpzbGFiLFxuLS1cbm1tL3NsdWIuYy0zNzI0LVxubW0vc2x1Yi5jOjM3MjU6I2lmZGVmIENPTkZJR19TTEFCX0ZSRUVMSVNUX1JBTkRPTVxubW0vc2x1Yi5jLTM3MjYtXHRpdGVyLVx1MDAzZXJhbmRvbSA9IChzbGFiLVx1MDAzZW9iamVjdHMgXHUwMDNlPSAyIFx1MDAyNlx1MDAyNiBzLVx1MDAzZXJhbmRvbV9zZXEpO1xuLS1cbm1tL3NsdWIuYz0zOTUwPXN0YXRpYyB2b2lkICpnZXRfZnJvbV9hbnlfcGFydGlhbChzdHJ1Y3Qga21lbV9jYWNoZSAqcywgZ2ZwX3QgZ2ZwX2ZsYWdzLFxuLS1cbm1tL3NsdWIuYy0zOTUyLXtcbm1tL3NsdWIuYzozOTUzOiNpZmRlZiBDT05GSUdfTlVNQVxubW0vc2x1Yi5jLTM5NTQtXHRzdHJ1Y3Qgem9uZWxpc3QgKnpvbmVsaXN0O1xuLS1cbm1tL3NsdWIuYz00MjQ5PXN0YXRpYyBpbnQgc2x1Yl9jcHVfZGVhZCh1bnNpZ25lZCBpbnQgY3B1KVxuLS1cbm1tL3NsdWIuYy00MjYxLVxubW0vc2x1Yi5jOjQyNjI6I2lmZGVmIENPTkZJR19TTFVCX0RFQlVHXG5tbS9zbHViLmMtNDI2My1zdGF0aWMgaW50IGNvdW50X2ZyZWUoc3RydWN0IHNsYWIgKnNsYWIpXG4tLVxubW0vc2x1Yi5jPTQyNzQ9c3RhdGljIGlubGluZSBib29sIGZyZWVfZGVidWdfcHJvY2Vzc2luZyhzdHJ1Y3Qga21lbV9jYWNoZSAqcyxcbi0tXG5tbS9zbHViLmMtNDMzMS1cbm1tL3NsdWIuYzo0MzMyOiNpZiBkZWZpbmVkKENPTkZJR19TTFVCX0RFQlVHKSB8fCBkZWZpbmVkKFNMQUJfU1VQUE9SVFNfU1lTRlMpXG5tbS9zbHViLmMtNDMzMy1zdGF0aWMgdW5zaWduZWQgbG9uZyBjb3VudF9wYXJ0aWFsKHN0cnVjdCBrbWVtX2NhY2hlX25vZGUgKm4sXG4tLVxubW0vc2x1Yi5jLTQzNDctXG5tbS9zbHViLmM6NDM0ODojaWZkZWYgQ09ORklHX1NMVUJfREVCVUdcbm1tL3NsdWIuYy00MzQ5LSNkZWZpbmUgTUFYX1BBUlRJQUxfVE9fU0NBTiAxMDAwMFxuLS1cbm1tL3NsdWIuYz00NjA2PXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgaW50IGFwcGx5X3N0cmljdF9udW1hX3BvbGljeShpbnQgbm9kZSlcbm1tL3NsdWIuYy00NjA3LXtcbm1tL3NsdWIuYzo0NjA4OiNpZmRlZiBDT05GSUdfTlVNQVxubW0vc2x1Yi5jLTQ2MDktXHRpZiAoc3RhdGljX2JyYW5jaF91bmxpa2VseShcdTAwMjZzdHJpY3RfbnVtYSkgXHUwMDI2XHUwMDI2XG4tLVxubW0vc2x1Yi5jPTYyMjY9c3RhdGljIF9fYWx3YXlzX2lubGluZSBib29sIGNhbl9mcmVlX3RvX3BjcyhzdHJ1Y3Qgc2xhYiAqc2xhYilcbi0tXG5tbS9zbHViLmMtNjIzNS1cbm1tL3NsdWIuYzo2MjM2OiNpZmRlZiBDT05GSUdfSEFWRV9NRU1PUllMRVNTX05PREVTXG5tbS9zbHViLmMtNjIzNy1cdC8qXG4tLVxubW0vc2x1Yi5jPTY0OTg9dm9pZCBzbGFiX2ZyZWUoc3RydWN0IGttZW1fY2FjaGUgKnMsIHN0cnVjdCBzbGFiICpzbGFiLCB2b2lkICpvYmplY3QsXG4tLVxubW0vc2x1Yi5jLTY1MTMtXG5tbS9zbHViLmM6NjUxNDojaWZkZWYgQ09ORklHX01FTUNHXG5tbS9zbHViLmMtNjUxNS0vKiBEbyBub3QgaW5saW5lIHRoZSByYXJlIG1lbWNnIGNoYXJnaW5nIGZhaWxlZCBwYXRoIGludG8gdGhlIGFsbG9jYXRpb24gcGF0aCAqL1xuLS1cbm1tL3NsdWIuYz02NTI5PXZvaWQgc2xhYl9mcmVlX2J1bGsoc3RydWN0IGttZW1fY2FjaGUgKnMsIHN0cnVjdCBzbGFiICpzbGFiLCB2b2lkICpoZWFkLFxuLS1cbm1tL3NsdWIuYy02NTQzLVxubW0vc2x1Yi5jOjY1NDQ6I2lmZGVmIENPTkZJR19TTFVCX1JDVV9ERUJVR1xubW0vc2x1Yi5jLTY1NDUtc3RhdGljIHZvaWQgc2xhYl9mcmVlX2FmdGVyX3JjdV9kZWJ1ZyhzdHJ1Y3QgcmN1X2hlYWQgKnJjdV9oZWFkKVxuLS1cbm1tL3NsdWIuYy02NTcyLVxubW0vc2x1Yi5jOjY1NzM6I2lmZGVmIENPTkZJR19LQVNBTl9HRU5FUklDXG5tbS9zbHViLmMtNjU3NC12b2lkIF9fX2NhY2hlX2ZyZWUoc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlLCB2b2lkICp4LCB1bnNpZ25lZCBsb25nIGFkZHIpXG4tLVxubW0vc2x1Yi5jPTY2MzU9c3RhdGljIGlubGluZSBzaXplX3Qgc2xhYl9rc2l6ZShzdHJ1Y3Qgc2xhYiAqc2xhYilcbi0tXG5tbS9zbHViLmMtNjYzOC1cbm1tL3NsdWIuYzo2NjM5OiNpZmRlZiBDT05GSUdfU0xVQl9ERUJVR1xubW0vc2x1Yi5jLTY2NDAtXHQvKlxuLS1cbm1tL3NsdWIuYz02NjY0PXN0YXRpYyBzaXplX3QgX19rc2l6ZShjb25zdCB2b2lkICpvYmplY3QpXG4tLVxubW0vc2x1Yi5jLTY2ODEtXG5tbS9zbHViLmM6NjY4MjojaWZkZWYgQ09ORklHX1NMVUJfREVCVUdcbm1tL3NsdWIuYy02NjgzLVx0c2tpcF9vcmlnX3NpemVfY2hlY2soc2xhYi1cdTAwM2VzbGFiX2NhY2hlLCBvYmplY3QpO1xuLS1cbm1tL3NsdWIuYz03MjYwPV9fcmVmaWxsX29iamVjdHNfbm9kZShzdHJ1Y3Qga21lbV9jYWNoZSAqcywgdm9pZCAqKnAsIGdmcF90IGdmcCwgdW5zaWduZWQgaW50IG1pbixcbi0tXG5tbS9zbHViLmMtNzMzMy1cbm1tL3NsdWIuYzo3MzM0OiNpZmRlZiBDT05GSUdfTlVNQVxubW0vc2x1Yi5jLTczMzUtc3RhdGljIHVuc2lnbmVkIGludFxuLS1cbm1tL3NsdWIuYz03Njc3PWluaXRfa21lbV9jYWNoZV9ub2RlKHN0cnVjdCBrbWVtX2NhY2hlX25vZGUgKm4pXG4tLVxubW0vc2x1Yi5jLTc2ODEtXHRJTklUX0xJU1RfSEVBRChcdTAwMjZuLVx1MDAzZXBhcnRpYWwpO1xubW0vc2x1Yi5jOjc2ODI6I2lmZGVmIENPTkZJR19TTFVCX0RFQlVHXG5tbS9zbHViLmMtNzY4My1cdGF0b21pY19sb25nX3NldChcdTAwMjZuLVx1MDAzZW5yX3NsYWJzLCAwKTtcbi0tXG5tbS9zbHViLmMtNzY4OC1cbm1tL3NsdWIuYzo3Njg5OiNpZmRlZiBDT05GSUdfU0xVQl9TVEFUU1xubW0vc2x1Yi5jLTc2OTAtc3RhdGljIGlubGluZSBpbnQgYWxsb2Nfa21lbV9jYWNoZV9zdGF0cyhzdHJ1Y3Qga21lbV9jYWNoZSAqcylcbi0tXG5tbS9zbHViLmM9Nzc1OD1zdGF0aWMgdm9pZCBlYXJseV9rbWVtX2NhY2hlX25vZGVfYWxsb2MoaW50IG5vZGUpXG4tLVxubW0vc2x1Yi5jLTc3ODEtXG5tbS9zbHViLmM6Nzc4MjojaWZkZWYgQ09ORklHX1NMVUJfREVCVUdcbm1tL3NsdWIuYy03NzgzLVx0aW5pdF9vYmplY3Qoa21lbV9jYWNoZV9ub2RlLCBuLCBTTFVCX1JFRF9BQ1RJVkUpO1xuLS1cbm1tL3NsdWIuYz03ODIwPXZvaWQgX19rbWVtX2NhY2hlX3JlbGVhc2Uoc3RydWN0IGttZW1fY2FjaGUgKnMpXG4tLVxubW0vc2x1Yi5jLTc4MjMtXHRwY3NfZGVzdHJveShzKTtcbm1tL3NsdWIuYzo3ODI0OiNpZmRlZiBDT05GSUdfU0xVQl9TVEFUU1xubW0vc2x1Yi5jLTc4MjUtXHRmcmVlX3BlcmNwdShzLVx1MDAzZWNwdV9zdGF0cyk7XG4tLVxubW0vc2x1Yi5jPTc5MjA9c3RhdGljIGludCBjYWxjdWxhdGVfc2l6ZXMoc3RydWN0IGttZW1fY2FjaGVfYXJncyAqYXJncywgc3RydWN0IGttZW1fY2FjaGUgKnMpXG4tLVxubW0vc2x1Yi5jLTc5MzMtXG5tbS9zbHViLmM6NzkzNDojaWZkZWYgQ09ORklHX1NMVUJfREVCVUdcbm1tL3NsdWIuYy03OTM1LVx0Lypcbi0tXG5tbS9zbHViLmMtNzk5Ni1cbm1tL3NsdWIuYzo3OTk3OiNpZmRlZiBDT05GSUdfU0xVQl9ERUJVR1xubW0vc2x1Yi5jLTc5OTgtXHRpZiAoZmxhZ3MgXHUwMDI2IFNMQUJfU1RPUkVfVVNFUikge1xuLS1cbm1tL3NsdWIuYy04MDExLVx0a2FzYW5fY2FjaGVfY3JlYXRlKHMsIFx1MDAyNnNpemUsIFx1MDAyNnMtXHUwMDNlZmxhZ3MpO1xubW0vc2x1Yi5jOjgwMTI6I2lmZGVmIENPTkZJR19TTFVCX0RFQlVHXG5tbS9zbHViLmMtODAxMy1cdGlmIChmbGFncyBcdTAwMjYgU0xBQl9SRURfWk9ORSkge1xuLS1cbm1tL3NsdWIuYy04MDM0LVx0YWxpZ25lZF9zaXplID0gQUxJR04oc2l6ZSwgcy1cdTAwM2VhbGlnbik7XG5tbS9zbHViLmM6ODAzNTojaWYgZGVmaW5lZChDT05GSUdfU0xBQl9PQkpfRVhUKSBcdTAwMjZcdTAwMjYgZGVmaW5lZChDT05GSUdfNjRCSVQpXG5tbS9zbHViLmMtODAzNi1cdGlmIChzbGFiX2FyZ3NfdW5tZXJnZWFibGUoYXJncywgcy1cdTAwM2VmbGFncykgXHUwMDI2XHUwMDI2XG4tLVxubW0vc2x1Yi5jPTgwNzY9c3RhdGljIHZvaWQgbGlzdF9zbGFiX29iamVjdHMoc3RydWN0IGttZW1fY2FjaGUgKnMsIHN0cnVjdCBzbGFiICpzbGFiKVxubW0vc2x1Yi5jLTgwNzcte1xubW0vc2x1Yi5jOjgwNzg6I2lmZGVmIENPTkZJR19TTFVCX0RFQlVHXG5tbS9zbHViLmMtODA3OS1cdHZvaWQgKmFkZHIgPSBzbGFiX2FkZHJlc3Moc2xhYik7XG4tLVxubW0vc2x1Yi5jPTgxNDM9aW50IF9fa21lbV9jYWNoZV9zaHV0ZG93bihzdHJ1Y3Qga21lbV9jYWNoZSAqcylcbi0tXG5tbS9zbHViLmMtODE2OS1cbm1tL3NsdWIuYzo4MTcwOiNpZmRlZiBDT05GSUdfUFJJTlRLXG5tbS9zbHViLmMtODE3MS12b2lkIF9fa21lbV9vYmpfaW5mbyhzdHJ1Y3Qga21lbV9vYmpfaW5mbyAqa3BwLCB2b2lkICpvYmplY3QsIHN0cnVjdCBzbGFiICpzbGFiKVxuLS1cbm1tL3NsdWIuYy04MTg1LVx0b2JqcDAgPSBrYXNhbl9yZXNldF90YWcob2JqZWN0KTtcbm1tL3NsdWIuYzo4MTg2OiNpZmRlZiBDT05GSUdfU0xVQl9ERUJVR1xubW0vc2x1Yi5jLTgxODctXHRvYmpwID0gcmVzdG9yZV9yZWRfbGVmdChzLCBvYmpwMCk7XG4tLVxubW0vc2x1Yi5jLTgxOTgtXHRcdHJldHVybjtcbm1tL3NsdWIuYzo4MTk5OiNpZmRlZiBDT05GSUdfU0xVQl9ERUJVR1xubW0vc2x1Yi5jLTgyMDAtXHRvYmpwID0gZml4dXBfcmVkX2xlZnQocywgb2JqcCk7XG4tLVxubW0vc2x1Yi5jLTgyMDItXHRrcHAtXHUwMDNla3BfcmV0ID0gKHZvaWQgKil0cmFja3AtXHUwMDNlYWRkcjtcbm1tL3NsdWIuYzo4MjAzOiNpZmRlZiBDT05GSUdfU1RBQ0tERVBPVFxubW0vc2x1Yi5jLTgyMDQtXHR7XG4tLVxubW0vc2x1Yi5jPTgyNzY9Y29yZV9wYXJhbShzbHViX21pbl9vYmplY3RzLCBzbHViX21pbl9vYmplY3RzLCB1aW50LCAwKTtcbm1tL3NsdWIuYy04Mjc3LVxubW0vc2x1Yi5jOjgyNzg6I2lmZGVmIENPTkZJR19OVU1BXG5tbS9zbHViLmMtODI3OS1zdGF0aWMgaW50IF9faW5pdCBzZXR1cF9zbGFiX3N0cmljdF9udW1hKGNvbnN0IGNoYXIgKnN0ciwgY29uc3Qgc3RydWN0IGtlcm5lbF9wYXJhbSAqa3ApXG4tLVxubW0vc2x1Yi5jPTgyOTU9X19jb3JlX3BhcmFtX2NiKHNsYWJfc3RyaWN0X251bWEsIFx1MDAyNnBhcmFtX29wc19zbGFiX3N0cmljdF9udW1hLCBOVUxMLCAwKTtcbi0tXG5tbS9zbHViLmMtODI5OC1cbm1tL3NsdWIuYzo4Mjk5OiNpZmRlZiBDT05GSUdfSEFSREVORURfVVNFUkNPUFlcbm1tL3NsdWIuYy04MzAwLS8qXG4tLVxubW0vc2x1Yi5jPTg1NDQ9c3RhdGljIHN0cnVjdCBrbWVtX2NhY2hlICogX19pbml0IGJvb3RzdHJhcChzdHJ1Y3Qga21lbV9jYWNoZSAqc3RhdGljX2NhY2hlKVxuLS1cbm1tL3NsdWIuYy04NTU3LVxubW0vc2x1Yi5jOjg1NTg6I2lmZGVmIENPTkZJR19TTFVCX0RFQlVHXG5tbS9zbHViLmMtODU1OS1cdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShwLCBcdTAwMjZuLVx1MDAzZWZ1bGwsIHNsYWJfbGlzdClcbi0tXG5tbS9zbHViLmM9ODcwNT12b2lkIF9faW5pdCBrbWVtX2NhY2hlX2luaXRfbGF0ZSh2b2lkKVxuLS1cbm1tL3NsdWIuYy04NzA5LVx0V0FSTl9PTighZmx1c2h3cSk7XG5tbS9zbHViLmM6ODcxMDojaWZkZWYgQ09ORklHX1NMQUJfRlJFRUxJU1RfUkFORE9NXG5tbS9zbHViLmMtODcxMS1cdHByYW5kb21faW5pdF9vbmNlKFx1MDAyNnNsYWJfcm5kX3N0YXRlKTtcbi0tXG5tbS9zbHViLmM9ODcxNT1pbnQgZG9fa21lbV9jYWNoZV9jcmVhdGUoc3RydWN0IGttZW1fY2FjaGUgKnMsIGNvbnN0IGNoYXIgKm5hbWUsXG4tLVxubW0vc2x1Yi5jLTg3MjQtXHRzLVx1MDAzZWZsYWdzID0ga21lbV9jYWNoZV9mbGFncyhmbGFncywgcy1cdTAwM2VuYW1lKTtcbm1tL3NsdWIuYzo4NzI1OiNpZmRlZiBDT05GSUdfU0xBQl9GUkVFTElTVF9IQVJERU5FRFxubW0vc2x1Yi5jLTg3MjYtXHRzLVx1MDAzZXJhbmRvbSA9IGdldF9yYW5kb21fbG9uZygpO1xuLS1cbm1tL3NsdWIuYy04NzI5LVx0cy1cdTAwM2VjdG9yID0gYXJncy1cdTAwM2VjdG9yO1xubW0vc2x1Yi5jOjg3MzA6I2lmZGVmIENPTkZJR19IQVJERU5FRF9VU0VSQ09QWVxubW0vc2x1Yi5jLTg3MzEtXHRzLVx1MDAzZXVzZXJvZmZzZXQgPSBhcmdzLVx1MDAzZXVzZXJvZmZzZXQ7XG4tLVxubW0vc2x1Yi5jLTg3NDktXG5tbS9zbHViLmM6ODc1MDojaWZkZWYgc3lzdGVtX2hhc19mcmVlbGlzdF9hYmFcbm1tL3NsdWIuYy04NzUxLVx0aWYgKHN5c3RlbV9oYXNfZnJlZWxpc3RfYWJhKCkgXHUwMDI2XHUwMDI2ICEocy1cdTAwM2VmbGFncyBcdTAwMjYgU0xBQl9OT19DTVBYQ0hHKSkge1xuLS1cbm1tL3NsdWIuYy04NzY5LVxubW0vc2x1Yi5jOjg3NzA6I2lmZGVmIENPTkZJR19OVU1BXG5tbS9zbHViLmMtODc3MS1cdHMtXHUwMDNlcmVtb3RlX25vZGVfZGVmcmFnX3JhdGlvID0gMTAwMDtcbi0tXG5tbS9zbHViLmMtODc4Mi1cbm1tL3NsdWIuYzo4NzgzOiNpZmRlZiBDT05GSUdfU0xVQl9TVEFUU1xubW0vc2x1Yi5jLTg3ODQtXHRpZiAoIWFsbG9jX2ttZW1fY2FjaGVfc3RhdHMocykpXG4tLVxubW0vc2x1Yi5jLTg4MTMtXG5tbS9zbHViLmM6ODgxNDojaWZkZWYgU0xBQl9TVVBQT1JUU19TWVNGU1xubW0vc2x1Yi5jLTg4MTUtc3RhdGljIGludCBjb3VudF9pbnVzZShzdHJ1Y3Qgc2xhYiAqc2xhYilcbi0tXG5tbS9zbHViLmM9ODgyMD1zdGF0aWMgaW50IGNvdW50X3RvdGFsKHN0cnVjdCBzbGFiICpzbGFiKVxuLS1cbm1tL3NsdWIuYy04ODI1LVxubW0vc2x1Yi5jOjg4MjY6I2lmZGVmIENPTkZJR19TTFVCX0RFQlVHXG5tbS9zbHViLmMtODgyNy1zdGF0aWMgdm9pZCB2YWxpZGF0ZV9zbGFiKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBzdHJ1Y3Qgc2xhYiAqc2xhYixcbi0tXG5tbS9zbHViLmM9ODkwOD1FWFBPUlRfU1lNQk9MKHZhbGlkYXRlX3NsYWJfY2FjaGUpO1xubW0vc2x1Yi5jLTg5MDktXG5tbS9zbHViLmM6ODkxMDojaWZkZWYgQ09ORklHX0RFQlVHX0ZTXG5tbS9zbHViLmMtODkxMS0vKlxuLS1cbm1tL3NsdWIuYz04OTY2PXN0YXRpYyBpbnQgYWRkX2xvY2F0aW9uKHN0cnVjdCBsb2NfdHJhY2sgKnQsIHN0cnVjdCBrbWVtX2NhY2hlICpzLFxuLS1cbm1tL3NsdWIuYy04OTc2LVxubW0vc2x1Yi5jOjg5Nzc6I2lmZGVmIENPTkZJR19TVEFDS0RFUE9UXG5tbS9zbHViLmMtODk3OC1cdGhhbmRsZSA9IFJFQURfT05DRSh0cmFjay1cdTAwM2VoYW5kbGUpO1xuLS1cbm1tL3NsdWIuYz05MDU4PXN0YXRpYyB2b2lkIHByb2Nlc3Nfc2xhYihzdHJ1Y3QgbG9jX3RyYWNrICp0LCBzdHJ1Y3Qga21lbV9jYWNoZSAqcyxcbi0tXG5tbS9zbHViLmMtOTA3Ni1cbm1tL3NsdWIuYzo5MDc3OiNpZmRlZiBTTEFCX1NVUFBPUlRTX1NZU0ZTXG5tbS9zbHViLmMtOTA3OC1lbnVtIHNsYWJfc3RhdF90eXBlIHtcbi0tXG5tbS9zbHViLmM9OTA5MD1zdGF0aWMgc3NpemVfdCBzaG93X3NsYWJfb2JqZWN0cyhzdHJ1Y3Qga21lbV9jYWNoZSAqcyxcbi0tXG5tbS9zbHViLmMtOTExMy1cbm1tL3NsdWIuYzo5MTE0OiNpZmRlZiBDT05GSUdfU0xVQl9ERUJVR1xubW0vc2x1Yi5jLTkxMTUtXHRpZiAoZmxhZ3MgXHUwMDI2IFNPX0FMTCkge1xuLS1cbm1tL3NsdWIuYy05MTQ3LVx0bGVuICYjNDM7PSBzeXNmc19lbWl0X2F0KGJ1ZiwgbGVuLCBcJiMzNDslbHVcJiMzNDssIHRvdGFsKTtcbm1tL3NsdWIuYzo5MTQ4OiNpZmRlZiBDT05GSUdfTlVNQVxubW0vc2x1Yi5jLTkxNDktXHRmb3IgKG5vZGUgPSAwOyBub2RlIFx1MDAzYyBucl9ub2RlX2lkczsgbm9kZSYjNDM7JiM0MzspIHtcbi0tXG5tbS9zbHViLmM9OTMwMT1TTEFCX0FUVFJfUk8oaHdjYWNoZV9hbGlnbik7XG5tbS9zbHViLmMtOTMwMi1cbm1tL3NsdWIuYzo5MzAzOiNpZmRlZiBDT05GSUdfWk9ORV9ETUFcbm1tL3NsdWIuYy05MzA0LXN0YXRpYyBzc2l6ZV90IGNhY2hlX2RtYV9zaG93KHN0cnVjdCBrbWVtX2NhY2hlICpzLCBjaGFyICpidWYpXG4tLVxubW0vc2x1Yi5jPTkzMDg9U0xBQl9BVFRSX1JPKGNhY2hlX2RtYSk7XG4tLVxubW0vc2x1Yi5jLTkzMTAtXG5tbS9zbHViLmM6OTMxMTojaWZkZWYgQ09ORklHX0hBUkRFTkVEX1VTRVJDT1BZXG5tbS9zbHViLmMtOTMxMi1zdGF0aWMgc3NpemVfdCB1c2Vyc2l6ZV9zaG93KHN0cnVjdCBrbWVtX2NhY2hlICpzLCBjaGFyICpidWYpXG4tLVxubW0vc2x1Yi5jPTkzMjM9U0xBQl9BVFRSX1JPKGRlc3Ryb3lfYnlfcmN1KTtcbm1tL3NsdWIuYy05MzI0LVxubW0vc2x1Yi5jOjkzMjU6I2lmZGVmIENPTkZJR19TTFVCX0RFQlVHXG5tbS9zbHViLmMtOTMyNi1zdGF0aWMgc3NpemVfdCBzbGFic19zaG93KHN0cnVjdCBrbWVtX2NhY2hlICpzLCBjaGFyICpidWYpXG4tLVxubW0vc2x1Yi5jPTkzOTQ9U0xBQl9BVFRSKHZhbGlkYXRlKTtcbi0tXG5tbS9zbHViLmMtOTM5Ny1cbm1tL3NsdWIuYzo5Mzk4OiNpZmRlZiBDT05GSUdfRkFJTFNMQUJcbm1tL3NsdWIuYy05Mzk5LXN0YXRpYyBzc2l6ZV90IGZhaWxzbGFiX3Nob3coc3RydWN0IGttZW1fY2FjaGUgKnMsIGNoYXIgKmJ1Zilcbi0tXG5tbS9zbHViLmM9OTQzND1TTEFCX0FUVFIoc2hyaW5rKTtcbm1tL3NsdWIuYy05NDM1LVxubW0vc2x1Yi5jOjk0MzY6I2lmZGVmIENPTkZJR19OVU1BXG5tbS9zbHViLmMtOTQzNy1zdGF0aWMgc3NpemVfdCByZW1vdGVfbm9kZV9kZWZyYWdfcmF0aW9fc2hvdyhzdHJ1Y3Qga21lbV9jYWNoZSAqcywgY2hhciAqYnVmKVxuLS1cbm1tL3NsdWIuYz05NDU4PVNMQUJfQVRUUihyZW1vdGVfbm9kZV9kZWZyYWdfcmF0aW8pO1xuLS1cbm1tL3NsdWIuYy05NDYwLVxubW0vc2x1Yi5jOjk0NjE6I2lmZGVmIENPTkZJR19TTFVCX1NUQVRTXG5tbS9zbHViLmMtOTQ2Mi1zdGF0aWMgaW50IHNob3dfc3RhdChzdHJ1Y3Qga21lbV9jYWNoZSAqcywgY2hhciAqYnVmLCBlbnVtIHN0YXRfaXRlbSBzaSlcbi0tXG5tbS9zbHViLmMtOTQ4MC1cbm1tL3NsdWIuYzo5NDgxOiNpZmRlZiBDT05GSUdfU01QXG5tbS9zbHViLmMtOTQ4Mi1cdGZvcl9lYWNoX29ubGluZV9jcHUoY3B1KSB7XG4tLVxubW0vc2x1Yi5jPTk1NDI9U1RBVF9BVFRSKFNIRUFGX1JFVFVSTl9TTE9XLCBzaGVhZl9yZXR1cm5fc2xvdyk7XG4tLVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDAyOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4MTAyCgkJCQkJCQlvdXRwdXQ6IDEyNgoJCQkJCQkJdGhvdWdodHM6IDk0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIEFuYWx5c2lzOiBgX19fa21hbGxvY19sYXJnZV9ub2RlYCBNb2RpZmljYXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIGBDT05GSUdfU0xVQmAgaXMgZW5hYmxlZCBieSBkZWZhdWx0LCBzbyB3ZSYjMzk7cmUgZ29vZCB0aGVyZS4gVGhlIGNvcmUgcXVlc3Rpb24gaXMgd2hldGhlciB0aGlzIGNoYW5nZSB3YXJyYW50cyBmdXp6aW5nLiBXZSYjMzk7cmUgbG9va2luZyBhdCBpbnB1dCB2YWxpZGF0aW9uIGFkZGVkIHRvIGBfX19rbWFsbG9jX2xhcmdlX25vZGVgLiBMZXQmIzM5O3MgcmUtcmVhZCB0aGUgZnV6emluZyBndWlkZWxpbmVzLiBXZSBoYXZlIHRvIGNvbnNpZGVyIHdoZXRoZXIgdGhpcyBjaGFuZ2UgaXMgd29ydGggZnV6emluZy4KCk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpZGVudGlmeSB0aGUgbm9uLXN0YXRpYyBlbnRyeXBvaW50IGZ1bmN0aW9ucyB0byBiZSBmdXp6ZWQgYXMgRm9jdXNTeW1ib2xzLiBPa2F5LCBzbyB3ZSBoYXZlIGBfX2ttYWxsb2NfbGFyZ2Vfbm9wcm9mYCBhbmQgYF9fa21hbGxvY19sYXJnZV9ub2RlX25vcHJvZmAuIEFyZSB0aGVzZSBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucz8gTm8sIGJlY2F1c2UgYF9fa21hbGxvY19sYXJnZV9ub3Byb2ZgIGhhbmRsZXMgYWxsb2NhdGlvbnMgKmxhcmdlciogdGhhbiB0aGUgc2xhYiBjYWNoZXMuIFRoZXJlZm9yZSwgdGhvc2UgYXJlIHBlcmZlY3QuIEdvb2QuCgpOb3csIGNvbnNpZGVyaW5nIHRoZSBgV29ydGhGdXp6aW5nYCBjcml0ZXJpYS4uLiBUaGlzIGlzbiYjMzk7dCBqdXN0IGRvY3VtZW50YXRpb24gb3IgZGVjb3JhdGl2ZSwgaXQgZnVuY3Rpb25hbGx5IGFsdGVycyBleGVjdXRpb24gZmxvdywgYnkgdmFsaWRhdGluZyBpbnB1dC4gSXQmIzM5O3MgYSByZWFjaGFibGUgcGFydCBvZiB0aGUgU0xVQiBhbGxvY2F0b3IuIFRoZXJlZm9yZSwgdGhlIGNoYW5nZSBkb2VzIG1lcml0IGZ1enppbmcuCgpBbHJpZ2h0LCBzbyBgV29ydGhGdXp6aW5nYCBpcyBkZWZpbml0ZWx5IGB0cnVlYC4gTm93LCBsZXQmIzM5O3MgbGlzdCBvdXIgYEZvY3VzU3ltYm9sc2AgYWdhaW46IGBfX2ttYWxsb2NfbGFyZ2Vfbm9wcm9mYCBhbmQgYF9fa21hbGxvY19sYXJnZV9ub2RlX25vcHJvZmAuCgpGaW5hbGx5LCBmb3IgYEVuYWJsZUNvbmZpZ3NgLCB3ZSBoYXZlIGBTTFVCYCwgd2hpY2ggaXMgYWxyZWFkeSBlbmFibGVkLiBMb29raW5nIGF0IGBtbS9LY29uZmlnYCwgaXQmIzM5O3MgY29uZmlybWVkLiBOb3RoaW5nIGVsc2Ugc3BlY2lmaWMgaXMgcmVxdWlyZWQsIGJ1dCB3ZSBjYW4gZGVmaW5pdGVseSBpbmNsdWRlIGBTTFVCYCBpbiB0aGUgYEVuYWJsZUNvbmZpZ3NgLgoKQmVmb3JlIGNhbGxpbmcgYHNldC1yZXN1bHRzYCwgbGV0JiMzOTtzIHZlcmlmeSBhZ2FpbjogYFdvcnRoRnV6emluZz10cnVlYCwgYEZvY3VzU3ltYm9sc2AgaXMgYF9fa21hbGxvY19sYXJnZV9ub3Byb2ZgIGFuZCBgX19rbWFsbG9jX2xhcmdlX25vZGVfbm9wcm9mYCwgYW5kIGBFbmFibGVDb25maWdzYCBjYW4gaW5jbHVkZSBgU0xVQmAgKGFsdGhvdWdoIGl0JiMzOTtzIGFscmVhZHkgZW5hYmxlZCBieSBkZWZhdWx0KS4gRG9uZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDI6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NMVUImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2ttYWxsb2NfbGFyZ2Vfbm9wcm9mJiMzNDssCiAgICAmIzM0O19fa21hbGxvY19sYXJnZV9ub2RlX25vcHJvZiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb3JlIG1lbW9yeSBhbGxvY2F0aW9uIGxvZ2ljIGluIHRoZSBTTFVCIGFsbG9jYXRvciAobW0vc2x1Yi5jKSwgYWRkaW5nIGEgc2l6ZSBib3VuZGFyeSBjaGVjayBhZ2FpbnN0IEtNQUxMT0NfTUFYX1NJWkUgaW4gX19fa21hbGxvY19sYXJnZV9ub2RlKCkgdG8gcHJldmVudCBvdmVyc2l6ZWQgb3JkZXIgY2FsY3VsYXRpb25zIGFuZCBncmFjZWZ1bGx5IGZhaWwgd2l0aCBhIHdhcm5pbmcuIFRoaXMgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIGFuZCBhZmZlY3RzIGxhcmdlIGttYWxsb2MgYWxsb2NhdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NMVUImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2ttYWxsb2NfbGFyZ2Vfbm9wcm9mJiMzNDssCiAgICAmIzM0O19fa21hbGxvY19sYXJnZV9ub2RlX25vcHJvZiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb3JlIG1lbW9yeSBhbGxvY2F0aW9uIGxvZ2ljIGluIHRoZSBTTFVCIGFsbG9jYXRvciAobW0vc2x1Yi5jKSwgYWRkaW5nIGEgc2l6ZSBib3VuZGFyeSBjaGVjayBhZ2FpbnN0IEtNQUxMT0NfTUFYX1NJWkUgaW4gX19fa21hbGxvY19sYXJnZV9ub2RlKCkgdG8gcHJldmVudCBvdmVyc2l6ZWQgb3JkZXIgY2FsY3VsYXRpb25zIGFuZCBncmFjZWZ1bGx5IGZhaWwgd2l0aCBhIHdhcm5pbmcuIFRoaXMgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIGFuZCBhZmZlY3RzIGxhcmdlIGttYWxsb2MgYWxsb2NhdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDAyOjUyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDI6NTI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgc2FuaXR5IGNoZWNrIChgV0FSTl9PTl9PTkNFX0dGUChzaXplIFx1MDAzZSBLTUFMTE9DX01BWF9TSVpFLCBmbGFncylgKSBpbiBgX19fa21hbGxvY19sYXJnZV9ub2RlKClgIHRvIHJlamVjdCBhbGxvY2F0aW9ucyBleGNlZWRpbmcgYEtNQUxMT0NfTUFYX1NJWkVgIGJ5IHJldHVybmluZyBgTlVMTGAuXG5cblRoaXMgbW9kaWZpY2F0aW9uIG9ubHkgYWRkcyBkZWZlbnNpdmUgcGFyYW1ldGVyIHZhbGlkYXRpb24gdG8gdGhlIFNMVUIgbGFyZ2UgYWxsb2NhdGlvbiBwYXRoLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UsIGV4cG9zZSwgb3IgbWFuaXB1bGF0ZSB1bmluaXRpYWxpemVkIG1lbW9yeSwgZG9lcyBub3QgYWx0ZXIgYnVmZmVyIGluaXRpYWxpemF0aW9uIG9yIHN0cnVjdCBwYWRkaW5nLCBhbmQgZG9lcyBub3QgdG91Y2ggZGF0YSBwYXNzZWQgdG8gdXNlciBzcGFjZS4gQW55IGJ1Z3MgcmVsYXRlZCB0byBmYWlsZWQgYWxsb2NhdGlvbnMgKHN1Y2ggYXMgbWlzc2luZyBOVUxMLWNoZWNrcyBpbiBjYWxsZXJzKSBhcmUgc3RhbmRhcmQgbWVtb3J5IGFsbG9jYXRpb24gZmFpbHVyZSBoYW5kbGluZyBjYXVnaHQgYnkgc3RhbmRhcmQgdGVzdGluZy9LQVNBTi4gVGhlcmVmb3JlLCBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDcyOGQ5MmY5MDFmN2E1MjdjY2IwMTQzNTQ1YjRiMjllZjQzOWE3ZWEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEF1ZyAzMSAwMjo1MjoxNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL21tL3NsdWIuYyBiL21tL3NsdWIuYwppbmRleCBmOWI1NmNiNDM5ZTcwLi4yM2U1N2E4ZmU1NWI0IDEwMDY0NAotLS0gYS9tbS9zbHViLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vc2x1Yi5jCkBAIC01MzQyLDcgJiM0Mzs1MzQyLDEyIEBAIHN0YXRpYyB2b2lkICpfX19rbWFsbG9jX2xhcmdlX25vZGUoc2l6ZV90IHNpemUsIGdmcF90IGZsYWdzLCBpbnQgbm9kZSkKIHsKIAlzdHJ1Y3QgcGFnZSAqcGFnZTsKIAl2b2lkICpwdHIgPSBOVUxMOwotCXVuc2lnbmVkIGludCBvcmRlciA9IGdldF9vcmRlcihzaXplKTsKJiM0MzsJdW5zaWduZWQgaW50IG9yZGVyOwomIzQzOwomIzQzOwlpZiAoV0FSTl9PTl9PTkNFX0dGUChzaXplICZndDsgS01BTExPQ19NQVhfU0laRSwgZmxhZ3MpKQomIzQzOwkJcmV0dXJuIE5VTEw7CiYjNDM7CiYjNDM7CW9yZGVyID0gZ2V0X29yZGVyKHNpemUpOwogCiAJaWYgKHVubGlrZWx5KGZsYWdzICZhbXA7IEdGUF9TTEFCX0JVR19NQVNLKSkKIAkJZmxhZ3MgPSBrbWFsbG9jX2ZpeF9mbGFncyhmbGFncyk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwMjo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTA1CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTk1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE1lbW9yeSBBbGxvY2F0aW9uIENoYW5nZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0JiMzOTtzIHNwZWNpZmljYWxseSB0b3VjaGluZyBgbW0vc2x1Yi5jYCwgYW5kIG1vcmUgcHJlY2lzZWx5LCB0aGUgYF9fX2ttYWxsb2NfbGFyZ2Vfbm9kZWAgZnVuY3Rpb24uIFRoaXMgaXMgc2lnbmlmaWNhbnQgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIGhhbmRsZXMgbGFyZ2Uga2VybmVsIG1lbW9yeSBhbGxvY2F0aW9ucyB3aXRoaW4gdGhlIFNMVUIgYWxsb2NhdG9yLiBNeSBpbml0aWFsIG9ic2VydmF0aW9uIGlzIHRoYXQgdGhleSYjMzk7dmUgaW50cm9kdWNlZCBhIGNoZWNrIHJlbGF0ZWQgdG8gYEtNQUxMT0NfTUFYX1NJWkVgIGJlZm9yZSBjYWxjdWxhdGluZyB0aGUgYWxsb2NhdGlvbiBvcmRlci4KClRoZSBvcmlnaW5hbCBjb2RlIGRpcmVjdGx5IGNhbGN1bGF0ZWQgdGhlIGBvcmRlcmAgdXNpbmcgYGdldF9vcmRlcihzaXplKWAuIE5vdywgdGhlcmUmIzM5O3MgYSBjb25kaXRpb25hbCBjaGVjazogYGlmIChXQVJOX09OX09OQ0VfR0ZQKHNpemUgJmd0OyBLTUFMTE9DX01BWF9TSVpFLCBmbGFncykpIHJldHVybiBOVUxMO2AgYmVmb3JlIGRldGVybWluaW5nIHRoZSBvcmRlci4gVGhpcyBpcyBhIGNydWNpYWwgYWRkaXRpb24uIEl0IGFwcGVhcnMgdGhlIGludGVudCBpcyB0byBwcmV2ZW50IGFsbG9jYXRpbmcgbWVtb3J5IHNpemVzIGV4Y2VlZGluZyBhIGRlZmluZWQgbWF4aW11bSwgYEtNQUxMT0NfTUFYX1NJWkVgLCB3aGljaCBwcm9iYWJseSBoYXMgaW1wbGljYXRpb25zIGZvciBTTFVCJiMzOTtzIGludGVybmFsIHN0cnVjdHVyZXMgb3IgZnJhZ21lbnRhdGlvbiBpc3N1ZXMgd2l0aCBleHRyZW1lbHkgbGFyZ2UgYWxsb2NhdGlvbnMuIEEgd2FybmluZyBpcyB0cmlnZ2VyZWQgaWYgdGhpcyBjb25kaXRpb24gb2NjdXJzLCBwcm9iYWJseSB0byBhbGVydCBkZXZlbG9wZXJzIGFib3V0IGluY29ycmVjdCB1c2FnZS4KCkkmIzM5O2xsIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBkZWZpbml0aW9uIG9mIGBLTUFMTE9DX01BWF9TSVpFYCB0byB1bmRlcnN0YW5kIHRoZSByYXRpb25hbGUgYmVoaW5kIHRoaXMgbGltaXQgYW5kIHdoYXQgdGhlIGltcGxpY2F0aW9ucyBhcmUgZm9yIGFsbG9jYXRpb24gYmVoYXZpb3IuIEFsc28sIHRoZSBga21hbGxvY19maXhfZmxhZ3NgIGNhbGwgaXMgc3RpbGwgcHJlc2VudCwgc28gSSBzaG91bGQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgZmxhZyBpbnRlcmFjdGlvbnMgZHVlIHRvIHRoaXMgY2hlY2suIEkgYWxzbyBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5IHRoaXMgd2FzIGFkZGVkLCBhcmUgd2UgdHJ5aW5nIHRvIHByZXZlbnQgcG90ZW50aWFsIGRlbmlhbC1vZi1zZXJ2aWNlLCBvdXQgb2YgbWVtb3J5IGNvbmRpdGlvbnMsIG9yIG1heWJlIGVuZm9yY2Ugc29tZSBhcmNoaXRlY3R1cmFsIGNvbnN0cmFpbnRzPyBJIHNob3VsZCByZXZpZXcgdGhlIGNvbW1pdCBtZXNzYWdlIGFuZCBzdXJyb3VuZGluZyBjb2RlIHRvIGdldCBhIGNvbXBsZXRlIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDAyOjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fX2ttYWxsb2NfbGFyZ2Vfbm9kZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9zbHViLmM9NTMzMj11bnNpZ25lZCBpbnQga21lbV9jYWNoZV9zaGVhZl9zaXplKHN0cnVjdCBzbGFiX3NoZWFmICpzaGVhZilcbi0tXG5tbS9zbHViLmMtNTM0MC0gKi9cbm1tL3NsdWIuYzo1MzQxOnN0YXRpYyB2b2lkICpfX19rbWFsbG9jX2xhcmdlX25vZGUoc2l6ZV90IHNpemUsIGdmcF90IGZsYWdzLCBpbnQgbm9kZSlcbm1tL3NsdWIuYy01MzQyLXtcbi0tXG5tbS9zbHViLmM9NTM3OD12b2lkICpfX2ttYWxsb2NfbGFyZ2Vfbm9wcm9mKHNpemVfdCBzaXplLCBnZnBfdCBmbGFncylcbm1tL3NsdWIuYy01Mzc5LXtcbm1tL3NsdWIuYzo1MzgwOlx0dm9pZCAqcmV0ID0gX19fa21hbGxvY19sYXJnZV9ub2RlKHNpemUsIGZsYWdzLCBOVU1BX05PX05PREUpO1xubW0vc2x1Yi5jLTUzODEtXG4tLVxubW0vc2x1Yi5jPTUzODg9dm9pZCAqX19rbWFsbG9jX2xhcmdlX25vZGVfbm9wcm9mKHNpemVfdCBzaXplLCBnZnBfdCBmbGFncywgaW50IG5vZGUpXG5tbS9zbHViLmMtNTM4OS17XG5tbS9zbHViLmM6NTM5MDpcdHZvaWQgKnJldCA9IF9fX2ttYWxsb2NfbGFyZ2Vfbm9kZShzaXplLCBmbGFncywgbm9kZSk7XG5tbS9zbHViLmMtNTM5MS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDI6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk3NwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGl2aW5nIGludG8gYG1tL3NsdWIuY2AqKgoKT2theSwgSSBuZWVkIHRvIGdldCBpbnRvIHRoZSBuaXR0eS1ncml0dHkgb2YgdGhlIFNMVUIgYWxsb2NhdG9yLiBMZXQmIzM5O3Mgc3RhcnQgYnkgbG9va2luZyBhdCBgbW0vc2x1Yi5jYCDigJMgdGhhdCYjMzk7cyB3aGVyZSB0aGUgY29yZSBpbXBsZW1lbnRhdGlvbiByZXNpZGVzLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgYXJvdW5kIGxpbmUgNTM0MC4gVGhhdCBsb2NhdGlvbiBpcyB1c3VhbGx5IGluIHRoZSB2aWNpbml0eSBvZiBjcml0aWNhbCBTTFVCIGZ1bmN0aW9ucywgbGlrZWx5IHJlbGF0ZWQgdG8gb2JqZWN0IGFsbG9jYXRpb24sIGZyZWVpbmcsIG9yIHNsYWIgbWFuYWdlbWVudC4gSSBhbnRpY2lwYXRlIGZpbmRpbmcgY29kZSBkZWFsaW5nIHdpdGggY2FjaGUgc3RydWN0dXJlIHRyYXZlcnNhbCBvciBvYmplY3QgaW5pdGlhbGl6YXRpb24gcHJvY2VkdXJlcyBpbiB0aGF0IHJlZ2lvbi4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgZnVuZGFtZW50YWwgYWxsb2NhdGlvbiBmbG93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwMjo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O21tL3NsdWIuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDUzMzUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7NTMzNTpcdH1cbjUzMzY6XHQvKlxuNTMzNzpcdCAqIFRvIGF2b2lkIHVubmVjZXNzYXJ5IG92ZXJoZWFkLCB3ZSBwYXNzIHRocm91Z2ggbGFyZ2UgYWxsb2NhdGlvbiByZXF1ZXN0c1xuNTMzODpcdCAqIGRpcmVjdGx5IHRvIHRoZSBwYWdlIGFsbG9jYXRvci4gV2UgdXNlIF9fR0ZQX0NPTVAsIGJlY2F1c2Ugd2Ugd2lsbCBuZWVkIHRvXG41MzM5Olx0ICoga25vdyB0aGUgYWxsb2NhdGlvbiBvcmRlciB0byBmcmVlIHRoZSBwYWdlcyBwcm9wZXJseSBpbiBrZnJlZS5cbjUzNDA6XHQgKi9cbjUzNDE6XHRzdGF0aWMgdm9pZCAqX19fa21hbGxvY19sYXJnZV9ub2RlKHNpemVfdCBzaXplLCBnZnBfdCBmbGFncywgaW50IG5vZGUpXG41MzQyOlx0e1xuNTM0MzpcdFx0c3RydWN0IHBhZ2UgKnBhZ2U7XG41MzQ0Olx0XHR2b2lkICpwdHIgPSBOVUxMO1xuNTM0NTpcdFx0dW5zaWduZWQgaW50IG9yZGVyO1xuNTM0NjpcdFxuNTM0NzpcdFx0aWYgKFdBUk5fT05fT05DRV9HRlAoc2l6ZSBcdTAwM2UgS01BTExPQ19NQVhfU0laRSwgZmxhZ3MpKVxuNTM0ODpcdFx0XHRyZXR1cm4gTlVMTDtcbjUzNDk6XHRcbjUzNTA6XHRcdG9yZGVyID0gZ2V0X29yZGVyKHNpemUpO1xuNTM1MTpcdFxuNTM1MjpcdFx0aWYgKHVubGlrZWx5KGZsYWdzIFx1MDAyNiBHRlBfU0xBQl9CVUdfTUFTSykpXG41MzUzOlx0XHRcdGZsYWdzID0ga21hbGxvY19maXhfZmxhZ3MoZmxhZ3MpO1xuNTM1NDpcdFxuNTM1NTpcdFx0ZmxhZ3MgfD0gX19HRlBfQ09NUDtcbjUzNTY6XHRcbjUzNTc6XHRcdGlmIChub2RlID09IE5VTUFfTk9fTk9ERSlcbjUzNTg6XHRcdFx0cGFnZSA9IGFsbG9jX2Zyb3plbl9wYWdlc19ub3Byb2YoZmxhZ3MsIG9yZGVyKTtcbjUzNTk6XHRcdGVsc2VcbjUzNjA6XHRcdFx0cGFnZSA9IF9fYWxsb2NfZnJvemVuX3BhZ2VzX25vcHJvZihmbGFncywgb3JkZXIsIG5vZGUsIE5VTEwsXG41MzYxOlx0XHRcdFx0XHRcdFx0ICAgQUxMT0NfREVGQVVMVCk7XG41MzYyOlx0XG41MzYzOlx0XHRpZiAocGFnZSkge1xuNTM2NDpcdFx0XHRwdHIgPSBwYWdlX2FkZHJlc3MocGFnZSk7XG41MzY1Olx0XHRcdG1vZF9scnV2ZWNfcGFnZV9zdGF0ZShwYWdlLCBOUl9TTEFCX1VOUkVDTEFJTUFCTEVfQixcbjUzNjY6XHRcdFx0XHRcdCAgICAgIFBBR0VfU0laRSBcdTAwM2NcdTAwM2Mgb3JkZXIpO1xuNTM2NzpcdFx0XHRfX1NldFBhZ2VMYXJnZUttYWxsb2MocGFnZSk7XG41MzY4Olx0XHR9XG41MzY5Olx0XG41MzcwOlx0XHRwdHIgPSBrYXNhbl9rbWFsbG9jX2xhcmdlKHB0ciwgc2l6ZSwgZmxhZ3MpO1xuNTM3MTpcdFx0LyogQXMgcHRyIG1pZ2h0IGdldCB0YWdnZWQsIGNhbGwga21lbWxlYWsgaG9vayBhZnRlciBLQVNBTi4gKi9cbjUzNzI6XHRcdGttZW1sZWFrX2FsbG9jKHB0ciwgc2l6ZSwgMSwgZmxhZ3MpO1xuNTM3MzpcdFx0a21zYW5fa21hbGxvY19sYXJnZShwdHIsIHNpemUsIGZsYWdzKTtcbjUzNzQ6XHRcbjUzNzU6XHRcdHJldHVybiBwdHI7XG41Mzc2Olx0fVxuNTM3NzpcdFxuNTM3ODpcdHZvaWQgKl9fa21hbGxvY19sYXJnZV9ub3Byb2Yoc2l6ZV90IHNpemUsIGdmcF90IGZsYWdzKVxuNTM3OTpcdHtcbjUzODA6XHRcdHZvaWQgKnJldCA9IF9fX2ttYWxsb2NfbGFyZ2Vfbm9kZShzaXplLCBmbGFncywgTlVNQV9OT19OT0RFKTtcbjUzODE6XHRcbjUzODI6XHRcdHRyYWNlX2ttYWxsb2MoX1JFVF9JUF8sIHJldCwgc2l6ZSwgUEFHRV9TSVpFIFx1MDAzY1x1MDAzYyBnZXRfb3JkZXIoc2l6ZSksXG41MzgzOlx0XHRcdCAgICAgIGZsYWdzLCBOVU1BX05PX05PREUpO1xuNTM4NDpcdFx0cmV0dXJuIHJldDtcbjUzODU6XHR9XG41Mzg2Olx0RVhQT1JUX1NZTUJPTChfX2ttYWxsb2NfbGFyZ2Vfbm9wcm9mKTtcbjUzODc6XHRcbjUzODg6XHR2b2lkICpfX2ttYWxsb2NfbGFyZ2Vfbm9kZV9ub3Byb2Yoc2l6ZV90IHNpemUsIGdmcF90IGZsYWdzLCBpbnQgbm9kZSlcbjUzODk6XHR7XG41MzkwOlx0XHR2b2lkICpyZXQgPSBfX19rbWFsbG9jX2xhcmdlX25vZGUoc2l6ZSwgZmxhZ3MsIG5vZGUpO1xuNTM5MTpcdFxuNTM5MjpcdFx0dHJhY2Vfa21hbGxvYyhfUkVUX0lQXywgcmV0LCBzaXplLCBQQUdFX1NJWkUgXHUwMDNjXHUwMDNjIGdldF9vcmRlcihzaXplKSxcbjUzOTM6XHRcdFx0ICAgICAgZmxhZ3MsIG5vZGUpO1xuNTM5NDpcdFx0cmV0dXJuIHJldDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDI6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDExMAoJCQkJCQkJb3V0cHV0OiAxNzEKCQkJCQkJCXRob3VnaHRzOiAyOTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgX19fa21hbGxvY19sYXJnZV9ub2RlYCBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgZG93biB0aGlzIHBhdGNoLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29yZSBjaGFuZ2Ugd2l0aGluIGBfX19rbWFsbG9jX2xhcmdlX25vZGVgLiBJdCBhcHBlYXJzIHRoZSBhdXRob3IgaGFzIGFkZGVkIGEgc2FmZXR5IGNoZWNrOiBgaWYgKFdBUk5fT05fT05DRV9HRlAoc2l6ZSAmZ3Q7IEtNQUxMT0NfTUFYX1NJWkUsIGZsYWdzKSkgcmV0dXJuIE5VTEw7YCBiZWZvcmUgY2FsY3VsYXRpbmcgdGhlIGBvcmRlcmAuIFRoZSBtb3RpdmF0aW9uIGhlcmUgaXMgY2xlYXI6IGl0JiMzOTtzIGEgY3JpdGljYWwgZ3VhcmRyYWlsLiBCeSBleHBsaWNpdGx5IGNoZWNraW5nIGlmIHRoZSByZXF1ZXN0ZWQgYHNpemVgIGV4Y2VlZHMgYEtNQUxMT0NfTUFYX1NJWkVgLCBvciBwb3RlbnRpYWxseSBjcmVhdGVzIGEgdmFsdWUgdGhhdCBvdmVyZmxvd3MgdGhlIGNhbGN1bGF0ZWQgYG9yZGVyYCBmcm9tIGBnZXRfb3JkZXIoKWAsIHRoZSBjb2RlIG5vdyBjbGVhbmx5IHJlamVjdHMgdGhlIGFsbG9jYXRpb24gYW5kIHJldHVybnMgYE5VTExgIHdpdGggYSB3YXJuaW5nLiBUaGlzIGlzIHByZWZlcmFibGUgdG8gbGV0dGluZyB0aGUgc3Vic2VxdWVudCBhbGxvY2F0aW9uIGxvZ2ljIGluIGBhbGxvY19wYWdlc2AgY2hva2Ugb24gYW4gZXhjZXNzaXZlbHkgbGFyZ2UgYG9yZGVyYCBvciBvdGhlcndpc2UgY29tcHV0ZSBhbiBpbnZhbGlkIG9yZGVyLgoKTm93LCBJIG5lZWQgdG8gZXZhbHVhdGUgdGhlIGltcGFjdCBmcm9tIGEgbWVtb3J5IHNhZmV0eSBwZXJzcGVjdGl2ZS4gRG9lcyB0aGlzIGNoYW5nZSBpbnRyb2R1Y2UgYW55IHJpc2tzPyBMZXQmIzM5O3MgZ28gdGhyb3VnaCB0aGUgY2hlY2tsaXN0OgoKMS4gICoqS2VybmVsIFN0cnVjdHVyZXMgdG8gVXNlciBTcGFjZToqKiBOby4gVGhpcyBwYXRjaCBkb2VzbiYjMzk7dCBpbnZvbHZlIGFueSBjaGFuZ2VzIHRoYXQgd291bGQgYWZmZWN0IGtlcm5lbCBzdHJ1Y3R1cmVzIHBhc3NlZCB0byB1c2VyIHNwYWNlLiBUaGVyZSYjMzk7cyBubyBjaGFuY2Ugb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgZXhwb3NlZCBoZXJlLgoyLiAgKipVbmluaXRpYWxpemVkIFZhcmlhYmxlIFVzYWdlIGluIENvbmRpdGlvbmFsIExvZ2ljOioqIE5vLiBUaGUgdmFyaWFibGVzIGJlaW5nIGNoZWNrZWQsIGBzaXplYCBhbmQgYGZsYWdzYCwgYXJlIGJvdGggaW5wdXRzIHRvIHRoZSBmdW5jdGlvbi4gYG9yZGVyYCBpcyBpbml0aWFsaXplZCAqYWZ0ZXIqIHRoZSBzYWZldHkgY2hlY2ssIHNvIHRoZXJlJiMzOTtzIG5vIHdheSB0aGlzIGludHJvZHVjZXMgYSByaXNrIG9mIGNvbmRpdGlvbmFsIGJyYW5jaGluZyBvbiB1bmluaXRpYWxpemVkIGRhdGEuCjMuICAqKkNvbXBsZXggRGF0YSBTdHJ1Y3R1cmVzOioqIE5vLiBUaGlzIGlzIGEgdmVyeSB0YXJnZXRlZCBwYXRjaC4gSXQmIzM5O3Mgbm90IG1vZGlmeWluZyBvciBpbnRyb2R1Y2luZyBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aXRoIHRoZSBwb3RlbnRpYWwgZm9yIHVuaW5pdGlhbGl6ZWQgZmllbGRzLgo0LiAgKipCb3VuZHMgQ2hlY2tzL1VuaW5pdGlhbGl6ZWQgTWVtb3J5IEV4cG9zdXJlOioqIE5vLiBUaGlzIGlzIHNwZWNpZmljYWxseSBhIHNpemUgdmFsaWRhdGlvbi4gVGhlIGNoYW5nZSBkb2VzICpub3QqIGludHJvZHVjZSBhbnkgbmV3IGJvdW5kcyBjaGVja3MsIG5vciBkb2VzIGl0IGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gSXQgYWN0cyBhcyBhIHByZXZlbnRhdGl2ZSBtZWFzdXJlLgoKVGhlcmVmb3JlLCBnaXZlbiBteSB1bmRlcnN0YW5kaW5nLCBgTmVlZHNLTVNBTmAgc2hvdWxkIGRlZmluaXRpdmVseSBiZSBgZmFsc2VgLiBUaGlzIGlzIGEgc3RyYWlnaHRmb3J3YXJkLCBwb3NpdGl2ZSBjaGFuZ2UuIE5vdywgbGV0JiMzOTtzIGFzc2VtYmxlIHRoZSBqdXN0aWZpY2F0aW9uIGFuZCBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDAyOjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBzYW5pdHkgY2hlY2sgKGBXQVJOX09OX09OQ0VfR0ZQKHNpemUgXHUwMDNlIEtNQUxMT0NfTUFYX1NJWkUsIGZsYWdzKWApIGluIGBfX19rbWFsbG9jX2xhcmdlX25vZGUoKWAgdG8gcmVqZWN0IGFsbG9jYXRpb25zIGV4Y2VlZGluZyBgS01BTExPQ19NQVhfU0laRWAgYnkgcmV0dXJuaW5nIGBOVUxMYC5cblxuVGhpcyBtb2RpZmljYXRpb24gb25seSBhZGRzIGRlZmVuc2l2ZSBwYXJhbWV0ZXIgdmFsaWRhdGlvbiB0byB0aGUgU0xVQiBsYXJnZSBhbGxvY2F0aW9uIHBhdGguIEl0IGRvZXMgbm90IGludHJvZHVjZSwgZXhwb3NlLCBvciBtYW5pcHVsYXRlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBkb2VzIG5vdCBhbHRlciBidWZmZXIgaW5pdGlhbGl6YXRpb24gb3Igc3RydWN0IHBhZGRpbmcsIGFuZCBkb2VzIG5vdCB0b3VjaCBkYXRhIHBhc3NlZCB0byB1c2VyIHNwYWNlLiBBbnkgYnVncyByZWxhdGVkIHRvIGZhaWxlZCBhbGxvY2F0aW9ucyAoc3VjaCBhcyBtaXNzaW5nIE5VTEwtY2hlY2tzIGluIGNhbGxlcnMpIGFyZSBzdGFuZGFyZCBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlIGhhbmRsaW5nIGNhdWdodCBieSBzdGFuZGFyZCB0ZXN0aW5nL0tBU0FOLiBUaGVyZWZvcmUsIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBzYW5pdHkgY2hlY2sgKGBXQVJOX09OX09OQ0VfR0ZQKHNpemUgXHUwMDNlIEtNQUxMT0NfTUFYX1NJWkUsIGZsYWdzKWApIGluIGBfX19rbWFsbG9jX2xhcmdlX25vZGUoKWAgdG8gcmVqZWN0IGFsbG9jYXRpb25zIGV4Y2VlZGluZyBgS01BTExPQ19NQVhfU0laRWAgYnkgcmV0dXJuaW5nIGBOVUxMYC5cblxuVGhpcyBtb2RpZmljYXRpb24gb25seSBhZGRzIGRlZmVuc2l2ZSBwYXJhbWV0ZXIgdmFsaWRhdGlvbiB0byB0aGUgU0xVQiBsYXJnZSBhbGxvY2F0aW9uIHBhdGguIEl0IGRvZXMgbm90IGludHJvZHVjZSwgZXhwb3NlLCBvciBtYW5pcHVsYXRlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBkb2VzIG5vdCBhbHRlciBidWZmZXIgaW5pdGlhbGl6YXRpb24gb3Igc3RydWN0IHBhZGRpbmcsIGFuZCBkb2VzIG5vdCB0b3VjaCBkYXRhIHBhc3NlZCB0byB1c2VyIHNwYWNlLiBBbnkgYnVncyByZWxhdGVkIHRvIGZhaWxlZCBhbGxvY2F0aW9ucyAoc3VjaCBhcyBtaXNzaW5nIE5VTEwtY2hlY2tzIGluIGNhbGxlcnMpIGFyZSBzdGFuZGFyZCBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlIGhhbmRsaW5nIGNhdWdodCBieSBzdGFuZGFyZCB0ZXN0aW5nL0tBU0FOLiBUaGVyZWZvcmUsIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDI6NTI6MTQuNzA5ODI3NjI4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTgxMjIwNzA1NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU0xVQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fa21hbGxvY19sYXJnZV9ub3Byb2ZcIixcbiAgICBcIl9fa21hbGxvY19sYXJnZV9ub2RlX25vcHJvZlwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHNhbml0eSBjaGVjayAoYFdBUk5fT05fT05DRV9HRlAoc2l6ZSBcXHUwMDNlIEtNQUxMT0NfTUFYX1NJWkUsIGZsYWdzKWApIGluIGBfX19rbWFsbG9jX2xhcmdlX25vZGUoKWAgdG8gcmVqZWN0IGFsbG9jYXRpb25zIGV4Y2VlZGluZyBgS01BTExPQ19NQVhfU0laRWAgYnkgcmV0dXJuaW5nIGBOVUxMYC5cXG5cXG5UaGlzIG1vZGlmaWNhdGlvbiBvbmx5IGFkZHMgZGVmZW5zaXZlIHBhcmFtZXRlciB2YWxpZGF0aW9uIHRvIHRoZSBTTFVCIGxhcmdlIGFsbG9jYXRpb24gcGF0aC4gSXQgZG9lcyBub3QgaW50cm9kdWNlLCBleHBvc2UsIG9yIG1hbmlwdWxhdGUgdW5pbml0aWFsaXplZCBtZW1vcnksIGRvZXMgbm90IGFsdGVyIGJ1ZmZlciBpbml0aWFsaXphdGlvbiBvciBzdHJ1Y3QgcGFkZGluZywgYW5kIGRvZXMgbm90IHRvdWNoIGRhdGEgcGFzc2VkIHRvIHVzZXIgc3BhY2UuIEFueSBidWdzIHJlbGF0ZWQgdG8gZmFpbGVkIGFsbG9jYXRpb25zIChzdWNoIGFzIG1pc3NpbmcgTlVMTC1jaGVja3MgaW4gY2FsbGVycykgYXJlIHN0YW5kYXJkIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmUgaGFuZGxpbmcgY2F1Z2h0IGJ5IHN0YW5kYXJkIHRlc3RpbmcvS0FTQU4uIFRoZXJlZm9yZSwgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgbWVtb3J5IGFsbG9jYXRpb24gbG9naWMgaW4gdGhlIFNMVUIgYWxsb2NhdG9yIChtbS9zbHViLmMpLCBhZGRpbmcgYSBzaXplIGJvdW5kYXJ5IGNoZWNrIGFnYWluc3QgS01BTExPQ19NQVhfU0laRSBpbiBfX19rbWFsbG9jX2xhcmdlX25vZGUoKSB0byBwcmV2ZW50IG92ZXJzaXplZCBvcmRlciBjYWxjdWxhdGlvbnMgYW5kIGdyYWNlZnVsbHkgZmFpbCB3aXRoIGEgd2FybmluZy4gVGhpcyBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgYW5kIGFmZmVjdHMgbGFyZ2Uga21hbGxvYyBhbGxvY2F0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDI6NTI6MTQuNzA5ODMzMjA4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNTc1Nzg5NzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA3MjhkOTJmOTAxZjdhNTI3Y2NiMDE0MzU0NWI0YjI5ZWY0MzlhN2VhXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gQXVnIDMxIDAyOjUyOjE0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL21tL3NsdWIuYyBiL21tL3NsdWIuY1xcbmluZGV4IGY5YjU2Y2I0MzllNzAuLjIzZTU3YThmZTU1YjQgMTAwNjQ0XFxuLS0tIGEvbW0vc2x1Yi5jXFxuKysrIGIvbW0vc2x1Yi5jXFxuQEAgLTUzNDIsNyArNTM0MiwxMiBAQCBzdGF0aWMgdm9pZCAqX19fa21hbGxvY19sYXJnZV9ub2RlKHNpemVfdCBzaXplLCBnZnBfdCBmbGFncywgaW50IG5vZGUpXFxuIHtcXG4gXFx0c3RydWN0IHBhZ2UgKnBhZ2U7XFxuIFxcdHZvaWQgKnB0ciA9IE5VTEw7XFxuLVxcdHVuc2lnbmVkIGludCBvcmRlciA9IGdldF9vcmRlcihzaXplKTtcXG4rXFx0dW5zaWduZWQgaW50IG9yZGVyO1xcbitcXG4rXFx0aWYgKFdBUk5fT05fT05DRV9HRlAoc2l6ZSBcXHUwMDNlIEtNQUxMT0NfTUFYX1NJWkUsIGZsYWdzKSlcXG4rXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcbitcXHRvcmRlciA9IGdldF9vcmRlcihzaXplKTtcXG4gXFxuIFxcdGlmICh1bmxpa2VseShmbGFncyBcXHUwMDI2IEdGUF9TTEFCX0JVR19NQVNLKSlcXG4gXFx0XFx0ZmxhZ3MgPSBrbWFsbG9jX2ZpeF9mbGFncyhmbGFncyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDAyOjUyOjE1LjA2ODAwNTExMloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6NDI1NzUxNTk1NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU0xVQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fa21hbGxvY19sYXJnZV9ub3Byb2ZcIixcbiAgICBcIl9fa21hbGxvY19sYXJnZV9ub2RlX25vcHJvZlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgbWVtb3J5IGFsbG9jYXRpb24gbG9naWMgaW4gdGhlIFNMVUIgYWxsb2NhdG9yIChtbS9zbHViLmMpLCBhZGRpbmcgYSBzaXplIGJvdW5kYXJ5IGNoZWNrIGFnYWluc3QgS01BTExPQ19NQVhfU0laRSBpbiBfX19rbWFsbG9jX2xhcmdlX25vZGUoKSB0byBwcmV2ZW50IG92ZXJzaXplZCBvcmRlciBjYWxjdWxhdGlvbnMgYW5kIGdyYWNlZnVsbHkgZmFpbCB3aXRoIGEgd2FybmluZy4gVGhpcyBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgYW5kIGFmZmVjdHMgbGFyZ2Uga21hbGxvYyBhbGxvY2F0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNzI4ZDkyZjkwMWY3YTUyN2NjYjAxNDM1NDViNGIyOWVmNDM5YTdlYVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDMxIDAyOjUyOjE0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vc2x1Yi5jIGIvbW0vc2x1Yi5jXG5pbmRleCBmOWI1NmNiNDM5ZTcwLi4yM2U1N2E4ZmU1NWI0IDEwMDY0NFxuLS0tIGEvbW0vc2x1Yi5jXG4rKysgYi9tbS9zbHViLmNcbkBAIC01MzQyLDcgKzUzNDIsMTIgQEAgc3RhdGljIHZvaWQgKl9fX2ttYWxsb2NfbGFyZ2Vfbm9kZShzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3MsIGludCBub2RlKVxuIHtcbiBcdHN0cnVjdCBwYWdlICpwYWdlO1xuIFx0dm9pZCAqcHRyID0gTlVMTDtcbi1cdHVuc2lnbmVkIGludCBvcmRlciA9IGdldF9vcmRlcihzaXplKTtcbitcdHVuc2lnbmVkIGludCBvcmRlcjtcbitcbitcdGlmIChXQVJOX09OX09OQ0VfR0ZQKHNpemUgXHUwMDNlIEtNQUxMT0NfTUFYX1NJWkUsIGZsYWdzKSlcbitcdFx0cmV0dXJuIE5VTEw7XG4rXG4rXHRvcmRlciA9IGdldF9vcmRlcihzaXplKTtcbiBcbiBcdGlmICh1bmxpa2VseShmbGFncyBcdTAwMjYgR0ZQX1NMQUJfQlVHX01BU0spKVxuIFx0XHRmbGFncyA9IGttYWxsb2NfZml4X2ZsYWdzKGZsYWdzKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDAyOjUyOjE1LjA2ODAwNjM4MloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM3NjU5NjkyOTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgS2VybmVsIE1lbW9yeSBBbGxvY2F0aW9uIFBhdGNoKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIExvb2tzIGxpa2Ugd2UncmUgZGVhbGluZyB3aXRoIGEgbW9kaWZpY2F0aW9uIGluIGBtbS9zbHViLmNgLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgX19fa21hbGxvY19sYXJnZV9ub2RlYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCBpbXByZXNzaW9uIGlzIHRoYXQgdGhpcyBmdW5jdGlvbiBsaWtlbHkgaGFuZGxlcyBsYXJnZXIgbWVtb3J5IGFsbG9jYXRpb25zIHdpdGhpbiB0aGUgU0xVQiBhbGxvY2F0b3IuIEknbGwgbmVlZCB0byBjb25maXJtIHRoYXQgYnkgY2hlY2tpbmcgdGhlIHN1cnJvdW5kaW5nIGNvZGUgd2l0aCBgcmVhZC1maWxlYCBvciBgZ3JlcHBlcmAg4oCTIHVuZGVyc3RhbmRpbmcgdGhlIGZ1bmN0aW9uJ3MgYnJvYWRlciBjb250ZXh0IGlzIGNydWNpYWwuXG5cblRoZSBjb3JlIG9mIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gYmUgaW50cm9kdWNpbmcgYSBzaXplIGNoZWNrOiBgV0FSTl9PTl9PTkNFX0dGUChzaXplIFx1MDAzZSBLTUFMTE9DX01BWF9TSVpFLCBmbGFncylgLiBBbmQgdGhlcmUncyBzb21lIHJlYXJyYW5nZW1lbnQuIEl0IGFwcGVhcnMgdG8gYmUgYW4gYWRkaXRpb24gb2YgdGhpcyBjaGVjayBwcmlvciB0byBjYWxjdWxhdGluZyB0aGUgb3JkZXIuIFNvLCBpZiB0aGUgcmVxdWVzdGVkIGBzaXplYCBleGNlZWRzIGBLTUFMTE9DX01BWF9TSVpFYCwgd2hpY2ggSSBhc3N1bWUgaXMgYSBkZWZpbmVkIGNvbnN0YW50IChJJ2xsIGNvbmZpcm0gaXRzIGRlZmluaXRpb24pLCB0aGUgZnVuY3Rpb24gd2lsbCByZXR1cm4gYE5VTExgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0aGlzIGlzIGEgc2FmZWd1YXJkIHRvIHByZXZlbnQgZXhjZXNzaXZlbHkgbGFyZ2UgYWxsb2NhdGlvbiByZXF1ZXN0cyB0aGF0IG1pZ2h0IGNhdXNlIGluc3RhYmlsaXR5IG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IuIFRoaXMgbG9va3MgbGlrZSBhIGdvb2QgY2hlY2sgdG8gYWRkLlxuXG5UaGUgYFdBUk5fT05fT05DRV9HRlBgIG1hY3JvIGlzIGludGVyZXN0aW5nLiBJJ2xsIG5lZWQgdG8gcmV2aWV3IHRoZSBtZWFuaW5nIG9mIHRoZSBgR0ZQYCBmbGFnIGluIHRoaXMgc3BlY2lmaWMgY29udGV4dC4gVGhpcyB3b3VsZCBhbGxvdyBtZSB0byBrbm93IGlmIHRoaXMgc3BlY2lmaWMgbWFjcm8ncyBiZWhhdmlvdXIgaXMgcmVsZXZhbnQgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGNoYW5nZS4gSXMgdGhpcyB3YXJuaW5nIGEgZGVidWcgYWlkPyBEb2VzIGl0IGFmZmVjdCB0aGUgcmV0dXJuIHZhbHVlPyBJcyB0aGlzIHJlbGF0ZWQgdG8gYSBwb3RlbnRpYWwgZGVuaWFsLW9mLXNlcnZpY2UgdnVsbmVyYWJpbGl0eT8gT3IgaXMgaXQgYSBtb3JlIGdlbmVyYWwgc2FmZXR5IG5ldD8gVGltZSB0byBkaWcgZGVlcGVyLiBJJ2xsIGdldCB0aGUgbGF5IG9mIHRoZSBsYW5kLCB0aGVuIGNpcmNsZSBiYWNrIGFuZCBjaGVjayB0aGUgaW1wbGljYXRpb25zIGluIHRoZSBjb250ZXh0IG9mIHRoZSBsYXJnZXIgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjEwOCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwNSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDAyOjUyOjE4LjgzMzk3ODUyMloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5MzY1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJtbS9zbHViLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNTMzNSxcbiAgXCJMaW5lQ291bnRcIjogMzVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiNTMzNTpcXHR9XFxuNTMzNjpcXHQvKlxcbjUzMzc6XFx0ICogVG8gYXZvaWQgdW5uZWNlc3Nhcnkgb3ZlcmhlYWQsIHdlIHBhc3MgdGhyb3VnaCBsYXJnZSBhbGxvY2F0aW9uIHJlcXVlc3RzXFxuNTMzODpcXHQgKiBkaXJlY3RseSB0byB0aGUgcGFnZSBhbGxvY2F0b3IuIFdlIHVzZSBfX0dGUF9DT01QLCBiZWNhdXNlIHdlIHdpbGwgbmVlZCB0b1xcbjUzMzk6XFx0ICoga25vdyB0aGUgYWxsb2NhdGlvbiBvcmRlciB0byBmcmVlIHRoZSBwYWdlcyBwcm9wZXJseSBpbiBrZnJlZS5cXG41MzQwOlxcdCAqL1xcbjUzNDE6XFx0c3RhdGljIHZvaWQgKl9fX2ttYWxsb2NfbGFyZ2Vfbm9kZShzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3MsIGludCBub2RlKVxcbjUzNDI6XFx0e1xcbjUzNDM6XFx0XFx0c3RydWN0IHBhZ2UgKnBhZ2U7XFxuNTM0NDpcXHRcXHR2b2lkICpwdHIgPSBOVUxMO1xcbjUzNDU6XFx0XFx0dW5zaWduZWQgaW50IG9yZGVyO1xcbjUzNDY6XFx0XFxuNTM0NzpcXHRcXHRpZiAoV0FSTl9PTl9PTkNFX0dGUChzaXplIFxcdTAwM2UgS01BTExPQ19NQVhfU0laRSwgZmxhZ3MpKVxcbjUzNDg6XFx0XFx0XFx0cmV0dXJuIE5VTEw7XFxuNTM0OTpcXHRcXG41MzUwOlxcdFxcdG9yZGVyID0gZ2V0X29yZGVyKHNpemUpO1xcbjUzNTE6XFx0XFxuNTM1MjpcXHRcXHRpZiAodW5saWtlbHkoZmxhZ3MgXFx1MDAyNiBHRlBfU0xBQl9CVUdfTUFTSykpXFxuNTM1MzpcXHRcXHRcXHRmbGFncyA9IGttYWxsb2NfZml4X2ZsYWdzKGZsYWdzKTtcXG41MzU0OlxcdFxcbjUzNTU6XFx0XFx0ZmxhZ3MgfD0gX19HRlBfQ09NUDtcXG41MzU2OlxcdFxcbjUzNTc6XFx0XFx0aWYgKG5vZGUgPT0gTlVNQV9OT19OT0RFKVxcbjUzNTg6XFx0XFx0XFx0cGFnZSA9IGFsbG9jX2Zyb3plbl9wYWdlc19ub3Byb2YoZmxhZ3MsIG9yZGVyKTtcXG41MzU5OlxcdFxcdGVsc2VcXG41MzYwOlxcdFxcdFxcdHBhZ2UgPSBfX2FsbG9jX2Zyb3plbl9wYWdlc19ub3Byb2YoZmxhZ3MsIG9yZGVyLCBub2RlLCBOVUxMLFxcbjUzNjE6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgQUxMT0NfREVGQVVMVCk7XFxuNTM2MjpcXHRcXG41MzYzOlxcdFxcdGlmIChwYWdlKSB7XFxuNTM2NDpcXHRcXHRcXHRwdHIgPSBwYWdlX2FkZHJlc3MocGFnZSk7XFxuNTM2NTpcXHRcXHRcXHRtb2RfbHJ1dmVjX3BhZ2Vfc3RhdGUocGFnZSwgTlJfU0xBQl9VTlJFQ0xBSU1BQkxFX0IsXFxuNTM2NjpcXHRcXHRcXHRcXHRcXHQgICAgICBQQUdFX1NJWkUgXFx1MDAzY1xcdTAwM2Mgb3JkZXIpO1xcbjUzNjc6XFx0XFx0XFx0X19TZXRQYWdlTGFyZ2VLbWFsbG9jKHBhZ2UpO1xcbjUzNjg6XFx0XFx0fVxcbjUzNjk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDAyOjUyOjE4LjgzNDI3NDE3MloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIyNDI4OTczODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBMYXJnZSBLTUFMTE9DIEFsbG9jYXRpb25zKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHVzYWdlIHBhdHRlcm5zIG9mIHRoZSBsYXJnZSBrbWFsbG9jIGZ1bmN0aW9ucywgc3BlY2lmaWNhbGx5IGBfX19rbWFsbG9jX2xhcmdlX25vZGVgIG9yIGBfX2ttYWxsb2NfbGFyZ2Vfbm9kZWAuIE15IHByaW1hcnkgb2JqZWN0aXZlIGhlcmUgaXMgdG8gZmlndXJlIG91dCB3aGF0IGNvZGUgcGF0aHMgYXJlIGVtcGxveWluZyB0aGVzZSBwb3RlbnRpYWxseSBsZXNzIGVmZmljaWVudCBhbGxvY2F0aW9uIG1ldGhvZHMuIEknbSBhc3N1bWluZyB0aGF0IHRoZSByZWFzb25zIGZvciB1c2luZyB0aGVzZSBmdW5jdGlvbnMgbWlnaHQgYmUgcGVyZm9ybWFuY2UtcmVsYXRlZCwgbWVtb3J5LXJlbGF0ZWQsIG9yIGJhc2VkIG9uIHNwZWNpZmljIE5VTUEgbm9kZSBhZmZpbml0eS4gVGhlcmVmb3JlLCBpZGVudGlmeWluZyB0aGUgY2FsbGVycyBpcyB0aGUgY3J1Y2lhbCBmaXJzdCBzdGVwLiBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIHRob3NlIGNhbGxzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQ6IHdoYXQgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBiZWluZyBhbGxvY2F0ZWQsIHdoYXQncyB0aGVpciBsaWZldGltZSwgYW5kIHdoeSB0aGUgc3RhbmRhcmQga21hbGxvYyBpc24ndCBzdWZmaWNpZW50LiBUaGlzIGludmVzdGlnYXRpb24gd2lsbCBoZWxwIG1lIGRldGVybWluZSBpZiB0aGUgY3VycmVudCB1c2FnZSBpcyBvcHRpbWFsIG9yIGlmIHRoZXJlJ3Mgcm9vbSBmb3Igb3B0aW1pemF0aW9uLCBwZXJoYXBzIGJ5IGFkanVzdGluZyB0aGUgc2l6ZSB0aHJlc2hvbGRzLCBpbnRyb2R1Y2luZyBjdXN0b20gYWxsb2NhdG9ycywgb3IgYnkgc2ltcGx5IGlkZW50aWZ5aW5nIGFuZCBmaXhpbmcgYW55IGluZWZmaWNpZW5jaWVzIGluIHRoZSBjYWxsaW5nIGNvZGUuIFRoZSBnb2FsIGlzIHRvIGVpdGhlciBqdXN0aWZ5IHRoZSBjdXJyZW50IHVzYWdlIG9yIHN1Z2dlc3QgaW1wcm92ZW1lbnRzLCBkZXBlbmRpbmcgb24gd2hhdCBJIHVuY292ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyMjUsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDAyOjUyOjIxLjA3NzE3NDg1NVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTM5ODczNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX19rbWFsbG9jX2xhcmdlX25vZGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vc2x1Yi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL3NsdWIuYz01MzMyPXVuc2lnbmVkIGludCBrbWVtX2NhY2hlX3NoZWFmX3NpemUoc3RydWN0IHNsYWJfc2hlYWYgKnNoZWFmKVxcbi0tXFxubW0vc2x1Yi5jLTUzNDAtICovXFxubW0vc2x1Yi5jOjUzNDE6c3RhdGljIHZvaWQgKl9fX2ttYWxsb2NfbGFyZ2Vfbm9kZShzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3MsIGludCBub2RlKVxcbm1tL3NsdWIuYy01MzQyLXtcXG4tLVxcbm1tL3NsdWIuYz01Mzc4PXZvaWQgKl9fa21hbGxvY19sYXJnZV9ub3Byb2Yoc2l6ZV90IHNpemUsIGdmcF90IGZsYWdzKVxcbm1tL3NsdWIuYy01Mzc5LXtcXG5tbS9zbHViLmM6NTM4MDpcXHR2b2lkICpyZXQgPSBfX19rbWFsbG9jX2xhcmdlX25vZGUoc2l6ZSwgZmxhZ3MsIE5VTUFfTk9fTk9ERSk7XFxubW0vc2x1Yi5jLTUzODEtXFxuLS1cXG5tbS9zbHViLmM9NTM4OD12b2lkICpfX2ttYWxsb2NfbGFyZ2Vfbm9kZV9ub3Byb2Yoc2l6ZV90IHNpemUsIGdmcF90IGZsYWdzLCBpbnQgbm9kZSlcXG5tbS9zbHViLmMtNTM4OS17XFxubW0vc2x1Yi5jOjUzOTA6XFx0dm9pZCAqcmV0ID0gX19fa21hbGxvY19sYXJnZV9ub2RlKHNpemUsIGZsYWdzLCBub2RlKTtcXG5tbS9zbHViLmMtNTM5MS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDI6NTI6MjEuMTIyNTc2ODMyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjI1NDcxMzIxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIEtlcm5lbCBNZW1vcnkgQWxsb2NhdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gdHJhY2UgdGhlIGV4ZWN1dGlvbiBwYXRoIG9mIGxhcmdlIG1lbW9yeSBhbGxvY2F0aW9ucyBpbiB0aGUga2VybmVsLiBJIHdhbnQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyBgX19rbWFsbG9jX2xhcmdlX25vcHJvZmAgYW5kIGBfX2ttYWxsb2NfbGFyZ2Vfbm9kZV9ub3Byb2ZgIGFyZSB1dGlsaXplZCwgYW5kIEknbSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiBob3cgdGhlIGtlcm5lbCBoYW5kbGVzIGFsbG9jYXRpb24gc2l6ZXMgZXhjZWVkaW5nIGBLTUFMTE9DX01BWF9TSVpFYC4gSXQncyBhbHNvIGNydWNpYWwgdG8gZmlndXJlIG91dCB0aGUgYmVoYXZpb3Igb2YgYGdldF9vcmRlcmAgd2hlbiBwcmVzZW50ZWQgd2l0aCBleGNlc3NpdmVseSBsYXJnZSBpbnB1dHMgYW5kIHVuZGVyc3RhbmQgdGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhlIGFkZGl0aW9uIG9mIHRoaXMgcGFydGljdWxhciBzaXplIGNoZWNrLiBJJ20ga2VlbiB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZSBoZXJlLlxuXG5UbyBiZWdpbiwgSSdsbCBzdGFydCBieSBncmVwcGluZyB0aGUga2VybmVsIHNvdXJjZXMsIHNwZWNpZmljYWxseSBsb29raW5nIGZvciB1c2VzIG9mIGBfX2ttYWxsb2NfbGFyZ2Vfbm9wcm9mYCBvciwgZmFpbGluZyB0aGF0LCAgYGttYWxsb2NfbGFyZ2VgLCBhY3Jvc3MgYGluY2x1ZGUvbGludXgvc2xhYi5oYCBhbmQgdGhlIGBtbS9gIGRpcmVjdG9yeS4gVGhpcyBzaG91bGQgaGVscCBtYXAgd2hlcmUgdGhlc2UgZnVuY3Rpb25zIGFyZSBkZWZpbmVkIGFuZCBpbXBsZW1lbnRlZC4gQnkgdW5kZXJzdGFuZGluZyB0aGVpciBpbnRlcmFjdGlvbiwgSSdsbCBiZSBhYmxlIHRvIHRyYWNlIGhvdyB0aGluZ3Mgd29yayB3aGVuIHRoZXkgZ2V0IHRoYXQgYmlnLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODI3LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDAyOjUyOjIzLjM3NzI5MTc2NFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjY5NTgzNDU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9fa21hbGxvY19sYXJnZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L3NsYWIuaD05NzI9dm9pZCAqX19rbWFsbG9jX2NhY2hlX25vZGVfbm9wcm9mKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBnZnBfdCBnZnBmbGFncyxcXG4tLVxcbmluY2x1ZGUvbGludXgvc2xhYi5oLTk3NS1cXG5pbmNsdWRlL2xpbnV4L3NsYWIuaDo5NzY6dm9pZCAqX19rbWFsbG9jX2xhcmdlX25vcHJvZihzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3MpXFxuaW5jbHVkZS9saW51eC9zbGFiLmgtOTc3LVxcdFxcdFxcdFxcdF9fYXNzdW1lX3BhZ2VfYWxpZ25tZW50IF9fYWxsb2Nfc2l6ZSgxKTtcXG5pbmNsdWRlL2xpbnV4L3NsYWIuaC05NzgtXFxuaW5jbHVkZS9saW51eC9zbGFiLmg6OTc5OnZvaWQgKl9fa21hbGxvY19sYXJnZV9ub2RlX25vcHJvZihzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3MsIGludCBub2RlKVxcbmluY2x1ZGUvbGludXgvc2xhYi5oLTk4MC1cXHRcXHRcXHRcXHRfX2Fzc3VtZV9wYWdlX2FsaWdubWVudCBfX2FsbG9jX3NpemUoMSk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NsYWIuaD05ODI9c3RhdGljIF9fYWx3YXlzX2lubGluZSBfX2FsbG9jX3NpemUoMSkgdm9pZCAqX2ttYWxsb2Nfbm9wcm9mKHNpemVfdCBzaXplLCBnZnBfdCBmbGFncywga21hbGxvY190b2tlbl90IHRva2VuKVxcbi0tXFxuaW5jbHVkZS9saW51eC9zbGFiLmgtOTg3LVxcdFxcdGlmIChzaXplIFxcdTAwM2UgS01BTExPQ19NQVhfQ0FDSEVfU0laRSlcXG5pbmNsdWRlL2xpbnV4L3NsYWIuaDo5ODg6XFx0XFx0XFx0cmV0dXJuIF9fa21hbGxvY19sYXJnZV9ub3Byb2Yoc2l6ZSwgZmxhZ3MpO1xcbmluY2x1ZGUvbGludXgvc2xhYi5oLTk4OS1cXG4tLVxcbmluY2x1ZGUvbGludXgvc2xhYi5oPTExODc9c3RhdGljIF9fYWx3YXlzX2lubGluZSBfX2FsbG9jX3NpemUoMSkgdm9pZCAqX2ttYWxsb2Nfbm9kZV9ub3Byb2Yoc2l6ZV90IHNpemUsIGdmcF90IGZsYWdzLCBpbnQgbm9kZSwga21hbGxvY190b2tlbl90IHRva2VuKVxcbi0tXFxuaW5jbHVkZS9saW51eC9zbGFiLmgtMTE5Mi1cXHRcXHRpZiAoc2l6ZSBcXHUwMDNlIEtNQUxMT0NfTUFYX0NBQ0hFX1NJWkUpXFxuaW5jbHVkZS9saW51eC9zbGFiLmg6MTE5MzpcXHRcXHRcXHRyZXR1cm4gX19rbWFsbG9jX2xhcmdlX25vZGVfbm9wcm9mKHNpemUsIGZsYWdzLCBub2RlKTtcXG5pbmNsdWRlL2xpbnV4L3NsYWIuaC0xMTk0LVxcbi0tXFxubW0vc2x1Yi5jPTUzMzI9dW5zaWduZWQgaW50IGttZW1fY2FjaGVfc2hlYWZfc2l6ZShzdHJ1Y3Qgc2xhYl9zaGVhZiAqc2hlYWYpXFxuLS1cXG5tbS9zbHViLmMtNTM0MC0gKi9cXG5tbS9zbHViLmM6NTM0MTpzdGF0aWMgdm9pZCAqX19fa21hbGxvY19sYXJnZV9ub2RlKHNpemVfdCBzaXplLCBnZnBfdCBmbGFncywgaW50IG5vZGUpXFxubW0vc2x1Yi5jLTUzNDIte1xcbi0tXFxubW0vc2x1Yi5jLTUzNzctXFxubW0vc2x1Yi5jOjUzNzg6dm9pZCAqX19rbWFsbG9jX2xhcmdlX25vcHJvZihzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3MpXFxubW0vc2x1Yi5jLTUzNzkte1xcbm1tL3NsdWIuYzo1MzgwOlxcdHZvaWQgKnJldCA9IF9fX2ttYWxsb2NfbGFyZ2Vfbm9kZShzaXplLCBmbGFncywgTlVNQV9OT19OT0RFKTtcXG5tbS9zbHViLmMtNTM4MS1cXG4tLVxcbm1tL3NsdWIuYy01Mzg1LX1cXG5tbS9zbHViLmM6NTM4NjpFWFBPUlRfU1lNQk9MKF9fa21hbGxvY19sYXJnZV9ub3Byb2YpO1xcbm1tL3NsdWIuYy01Mzg3LVxcbm1tL3NsdWIuYzo1Mzg4OnZvaWQgKl9fa21hbGxvY19sYXJnZV9ub2RlX25vcHJvZihzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3MsIGludCBub2RlKVxcbm1tL3NsdWIuYy01Mzg5LXtcXG5tbS9zbHViLmM6NTM5MDpcXHR2b2lkICpyZXQgPSBfX19rbWFsbG9jX2xhcmdlX25vZGUoc2l6ZSwgZmxhZ3MsIG5vZGUpO1xcbm1tL3NsdWIuYy01MzkxLVxcbi0tXFxubW0vc2x1Yi5jLTUzOTUtfVxcbm1tL3NsdWIuYzo1Mzk2OkVYUE9SVF9TWU1CT0woX19rbWFsbG9jX2xhcmdlX25vZGVfbm9wcm9mKTtcXG5tbS9zbHViLmMtNTM5Ny1cXG4tLVxcbm1tL3NsdWIuYz01Mzk5PXZvaWQgKl9fZG9fa21hbGxvY19ub2RlKGttZW1fYnVja2V0cyAqYiwgZ2ZwX3QgZmxhZ3MsIGludCBub2RlLFxcbi0tXFxubW0vc2x1Yi5jLTU0MDYtXFx0aWYgKHVubGlrZWx5KHNpemUgXFx1MDAzZSBLTUFMTE9DX01BWF9DQUNIRV9TSVpFKSkge1xcbm1tL3NsdWIuYzo1NDA3OlxcdFxcdHJldCA9IF9fa21hbGxvY19sYXJnZV9ub2RlX25vcHJvZihzaXplLCBmbGFncywgbm9kZSk7XFxubW0vc2x1Yi5jLTU0MDgtXFx0XFx0dHJhY2Vfa21hbGxvYyhhYy1cXHUwMDNlY2FsbGVyX2FkZHIsIHJldCwgc2l6ZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDI6NTI6MjUuMDQ2ODgwMTlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo3NTI0NjQ1MDExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIGZvciBGdXp6aW5nIHRoaXMgS2VybmVsIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duIHN5c3RlbWF0aWNhbGx5LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiB0aGlzIGBrbWFsbG9jX2xhcmdlYCBwYXRjaCBhbmQgaXRzIGltcGxpY2F0aW9ucy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGhhcHBlbmluZyBiZWZvcmUgYW5kIGFmdGVyIHRoaXMgY2hhbmdlLCBwYXJ0aWN1bGFybHkgY29uY2VybmluZyBjYWxscyB0byBga21hbGxvY19sYXJnZWAgd2l0aCBzaXplcyBleGNlZWRpbmcgYEtNQUxMT0NfTUFYX1NJWkVgLiBUaGUgcGFnZSBhbGxvY2F0b3IgYW5kIGBnZXRfb3JkZXIoc2l6ZSlgIGFyZSBrZXkgY29tcG9uZW50cyBoZXJlLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIG9yZGVyIGlzIGhhbmRsZWQgdG8gc2VlIGlmIHRoaXMgY2hhbmdlIHByZXZlbnRzIGEgcG90ZW50aWFsIG92ZXJmbG93LlxuXG5GaXJzdCwgSSBuZWVkIHRvIGNoZWNrIHRoZSBjb21taXQgaGlzdG9yeSB0byB1bmRlcnN0YW5kIHRoZSByYXRpb25hbGUgYmVoaW5kIHRoZSBhZGRpdGlvbiBvZiBgV0FSTl9PTl9PTkNFX0dGUGAuIE5vdywgd2FpdCBhIG1pbnV0ZSwgYGttYWxsb2NgIGlzIGEgZnVuZGFtZW50YWwgbWVtb3J5IGFsbG9jYXRpb24gcm91dGluZSBpbiB0aGUga2VybmVsISBJdCdzIG9uZSBvZiB0aGUgbW9zdCBjcml0aWNhbC4gVGhhdCByYWlzZXMgdGhlIHF1ZXN0aW9uOiBpcyB0aGlzIGEgbmV3IGZlYXR1cmUsIG9yIGEgZGVmZW5zaXZlIG1lYXN1cmUgd2l0aGluIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQ/IFRoaXMgbWF0dGVycyBhIGxvdC5cblxuSSBuZWVkIHRvIGZvY3VzIGFuZCByZS1yZWFkIHRoZSBzcGVjaWZpYyBpbnN0cnVjdGlvbnMgcHJvdmlkZWQgb24gd2hldGhlciB0aGUgY2hhbmdlcyBhcmUgd29ydGggZnV6emluZy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGFtIGRvaW5nIGl0IGNvcnJlY3RseS5cblxuT2theSwgbGV0IG1lIHJldmlldyB0aGUgY3JpdGVyaWEgZm9yIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJIGFtIGxvb2tpbmcgZm9yIGNoYW5nZXMgcmVsYXRlZCB0byBkb2N1bWVudGF0aW9uLCBjb21tZW50cywgZGVjb3JhdGl2ZSBsb2dnaW5nLCBub24tZnVuY3Rpb25hbCBjb25zdGFudCBjaGFuZ2VzLCB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzLCBvciBzcGVjaWZpYyBkcml2ZXJzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBJIG5lZWQgdG8gYmUgcHJlY2lzZSwgYXMgdGhpcyBpcyBjb3JlIG1tLlxuXG5SaWdodCwgdGhlIGtleSBkaXJlY3RpdmUgaXM6IFwiSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLi4uIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cIiBDcnVjaWFsbHksIEkgaGF2ZSB0byBleHRyYWN0ICpzcGVjaWZpYyoga2VybmVsIGZ1bmN0aW9ucyBmb3IgYEZvY3VzU3ltYm9sc2AsIGF2b2lkaW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zLiBUaGlzIGlzIGltcG9ydGFudCB0byBza2V3IHRoZSB0ZXN0IGRpc3RyaWJ1dGlvbnMgcHJvcGVybHkuXG5cblRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IHNheXMgXCJBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cIiBUaGlzIGlzIGltcG9ydGFudCBhcyBJIGNvbnNpZGVyIGlmIGBfX19rbWFsbG9jX2xhcmdlX25vZGVgIGlzIGEgaG90LXBhdGggaW4gU0xVQiwgaWYgYF9fa21hbGxvY19sYXJnZV9ub3Byb2ZgIGFuZCBga21hbGxvY2AgYXJlIGhvdC1wYXRoLiBEbyBJIG5lZWQgYEZvY3VzU3ltYm9sc2A/IE9yIHNob3VsZCB0aGUgZW50cnlwb2ludHMgYmUgbm9uLWdlbmVyaWM/IElmIHRoZXkgYXJlIGdlbmVyaWMsIHNob3VsZCB0aGV5IGJlIHNraXBwZWQ/XG5cbkdpdmVuIG15IGV4cGVydGlzZSwgdGhpcyByZXF1aXJlcyBjYXJlZnVsIGNvbnNpZGVyYXRpb24sIGVzcGVjaWFsbHkgc2luY2UgaXQncyBga21hbGxvY2AuIEkgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgc2VsZWN0aW9uIG9mIGZ1bmN0aW9ucyBpcyAqcHJlY2lzZSogYW5kIGF2b2lkcyBza2V3aW5nIHRoZSBmdXp6aW5nIGRpc3RyaWJ1dGlvbi5cblxuT2theSwgbGV0J3MgcmUtcmVhZCB0aGUgcHJpbWFyeSBwcm9tcHQsIFwiSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaCB0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cIlxuXG5Eb2VzIHRoaXMgcGF0Y2ggKm1vZGlmeSogcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljPyBZZXMsIGl0IGFkZHMgYSBgV0FSTl9PTl9PTkNFX0dGUGAgY2hlY2sgd2l0aGluIGBfX19rbWFsbG9jX2xhcmdlX25vZGVgIGluIGBtbS9zbHViLmNgLiBUaGlzIGFkZGl0aW9uIGlzIGEgY3JpdGljYWwgY2hhbmdlLiBQcmV2aW91c2x5LCB3aGVuIGBzaXplIFx1MDAzZSBLTUFMTE9DX01BWF9TSVpFYCwgdGhlIGNvZGUgbWlnaHQgaGF2ZSBlbmRlZCB1cCBjb21wdXRpbmcgYW4gb3JkZXIgbGFyZ2VyIHRoYW4gYE1BWF9QQUdFX09SREVSYC4gTm93LCBpdCB0cmlnZ2VycyBhIHdhcm5pbmcgKHVubGVzcyBgX19HRlBfTk9XQVJOYCBpcyBzZXQpIGFuZCByZXR1cm5zIGBOVUxMYC4gVGhpcyBpcyBhIGNoYW5nZSBpbiBiZWhhdmlvci5cblxuU2luY2UgYF9fa21hbGxvY19sYXJnZV9ub3Byb2ZgIGFuZCBgX19rbWFsbG9jX2xhcmdlX25vZGVfbm9wcm9mYCBhcmUgZXhwb3J0ZWQgc3ltYm9scywgdGhleSBtYXkgcXVhbGlmeSBhcyBgRm9jdXNTeW1ib2xzYC4gTGV0J3MgY29uZmlybSBpZiB0aGV5IGFyZSBleHBvcnRlZCBvciBub24tc3RhdGljIGluIHRoZSBjb2RlIGl0c2VsZiwgY2hlY2tpbmcgbGluZXMgNTM3OC01Mzk2IG9mIGBtbS9zbHViLmNgLlxuXG5TaW5jZSBpdCAqaXMqIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgdGhlIGFuc3dlciBpcyBgV29ydGhGdXp6aW5nPXRydWVgLCBhbmQgSSBuZWVkIHRvIGlkZW50aWZ5IGFwcHJvcHJpYXRlIGBGb2N1c1N5bWJvbHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MjE5LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTQyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDAyOjUyOjMyLjU3MTUyNzkzMVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDgwNTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibW0vc2x1Yi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDUzNzUsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjUzNzU6XFx0XFx0cmV0dXJuIHB0cjtcXG41Mzc2OlxcdH1cXG41Mzc3OlxcdFxcbjUzNzg6XFx0dm9pZCAqX19rbWFsbG9jX2xhcmdlX25vcHJvZihzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3MpXFxuNTM3OTpcXHR7XFxuNTM4MDpcXHRcXHR2b2lkICpyZXQgPSBfX19rbWFsbG9jX2xhcmdlX25vZGUoc2l6ZSwgZmxhZ3MsIE5VTUFfTk9fTk9ERSk7XFxuNTM4MTpcXHRcXG41MzgyOlxcdFxcdHRyYWNlX2ttYWxsb2MoX1JFVF9JUF8sIHJldCwgc2l6ZSwgUEFHRV9TSVpFIFxcdTAwM2NcXHUwMDNjIGdldF9vcmRlcihzaXplKSxcXG41MzgzOlxcdFxcdFxcdCAgICAgIGZsYWdzLCBOVU1BX05PX05PREUpO1xcbjUzODQ6XFx0XFx0cmV0dXJuIHJldDtcXG41Mzg1OlxcdH1cXG41Mzg2OlxcdEVYUE9SVF9TWU1CT0woX19rbWFsbG9jX2xhcmdlX25vcHJvZik7XFxuNTM4NzpcXHRcXG41Mzg4OlxcdHZvaWQgKl9fa21hbGxvY19sYXJnZV9ub2RlX25vcHJvZihzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3MsIGludCBub2RlKVxcbjUzODk6XFx0e1xcbjUzOTA6XFx0XFx0dm9pZCAqcmV0ID0gX19fa21hbGxvY19sYXJnZV9ub2RlKHNpemUsIGZsYWdzLCBub2RlKTtcXG41MzkxOlxcdFxcbjUzOTI6XFx0XFx0dHJhY2Vfa21hbGxvYyhfUkVUX0lQXywgcmV0LCBzaXplLCBQQUdFX1NJWkUgXFx1MDAzY1xcdTAwM2MgZ2V0X29yZGVyKHNpemUpLFxcbjUzOTM6XFx0XFx0XFx0ICAgICAgZmxhZ3MsIG5vZGUpO1xcbjUzOTQ6XFx0XFx0cmV0dXJuIHJldDtcXG41Mzk1OlxcdH1cXG41Mzk2OlxcdEVYUE9SVF9TWU1CT0woX19rbWFsbG9jX2xhcmdlX25vZGVfbm9wcm9mKTtcXG41Mzk3OlxcdFxcbjUzOTg6XFx0c3RhdGljIF9fYWx3YXlzX2lubGluZVxcbjUzOTk6XFx0dm9pZCAqX19kb19rbWFsbG9jX25vZGUoa21lbV9idWNrZXRzICpiLCBnZnBfdCBmbGFncywgaW50IG5vZGUsXFxuNTQwMDpcXHRcXHRcXHRcXHRrbWFsbG9jX3Rva2VuX3QgdG9rZW4sIGNvbnN0IHN0cnVjdCBzbGFiX2FsbG9jX2NvbnRleHQgKmFjKVxcbjU0MDE6XFx0e1xcbjU0MDI6XFx0XFx0Y29uc3Qgc2l6ZV90IHNpemUgPSBhYy1cXHUwMDNlb3JpZ19zaXplO1xcbjU0MDM6XFx0XFx0c3RydWN0IGttZW1fY2FjaGUgKnM7XFxuNTQwNDpcXHRcXHR2b2lkICpyZXQ7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDAyOjUyOjMyLjU3MTgzOTQ4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjEwODM5NTYxNDE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgdGFraW5nIG9uIHRoZSBwZXJzb25hIHlvdSByZXF1ZXN0ZWQ6XG5cbioqS2NvbmZpZyBhbmQgU0xVQjogQSBRdWljayBJbnZlc3RpZ2F0aW9uKipcblxuQWxyaWdodCwgdGltZSB0byBkaXZlIGluLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZ28gc3RyYWlnaHQgdG8gdGhlIHNvdXJjZSDigJMgS2NvbmZpZy4gSSB3YW50IHRvIHNlZSBob3cgYFNMVUJgIGlzIGNvbmZpZ3VyZWQuIEknbSBsb29raW5nIGZvciB0aGUgY29yZSBkZWZpbml0aW9uLCBhbmQgYW55IGRlcGVuZGVudCBvcHRpb25zIG9yIGRlcGVuZGVuY2llcy4gVGhpcyBpcyB1c3VhbGx5IHRoZSBiZXN0IHBsYWNlIHRvIHN0YXJ0LiBJJ20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gc2VlaW5nIGhvdyB0aGUgZmVhdHVyZXMgYW5kIGFzc29jaWF0ZWQga25vYnMgYXJlIGV4cG9zZWQgYXQgY29uZmlndXJhdGlvbiB0aW1lLiBBbnkgcmVsYXRlZCBkZXBlbmRlbmNpZXMgd291bGQgYmUgY3J1Y2lhbCBoZXJlIGFzIHdlbGwuXG5cbk5leHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBidWlsZCBwcm9jZXNzLiBJJ2xsIG5lZWQgdG8gY29uZmlybSBob3cgYHNsdWIuY2AgYW5kIG90aGVyIGFzc29jaWF0ZWQgZmlsZXMgYXJlIGJyb3VnaHQgaW50byB0aGUgYnVpbGQuIEknbGwgbGlrZWx5IGhlYWQgdG8gYG1tL0tjb25maWdgIG9yIGBtbS9NYWtlZmlsZWAg4oCTIGRlcGVuZGluZyBvbiB0aGUgcHJvamVjdCBzdHJ1Y3R1cmUgYW5kIG15IHByaW9yIGZhbWlsaWFyaXR5LiBJdCBzaG91bGQgYmUgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgYnV0IEkgd2FudCB0byBiZSBjZXJ0YWluIGFib3V0IHRoZSBjb21waWxhdGlvbiBwcm9jZWR1cmUgYW5kIGFueSByZWxldmFudCBmbGFncy4gVGhpcyB3aWxsIGd1aWRlIG1lIGluIGRlYnVnZ2luZyBvciBjdXN0b21pemF0aW9uLiBJJ20gYWZ0ZXIgdGhlIGJ1aWxkIHJ1bGVzIGFuZCBhbnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gdGhhdCBtaWdodCBiZSBnb2luZyBvbiwganVzdCB0byBtYWtlIHN1cmUgSSBhbSBmdWxseSBhd2FyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzQ1NSwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDI6NTI6NDMuNDExNDAyOTE1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODg2ODk3NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzbHViLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL01ha2VmaWxlPTY9S0FTQU5fU0FOSVRJWkVfc2xhYl9jb21tb24ubyA6PSBuXFxubW0vTWFrZWZpbGU6NzpLQVNBTl9TQU5JVElaRV9zbHViLm8gOj0gblxcbm1tL01ha2VmaWxlLTgtS0FTQU5fU0FOSVRJWkVfa21lbWxlYWsubyA6PSBuXFxuLS1cXG5tbS9NYWtlZmlsZT0xND1LQ1NBTl9TQU5JVElaRV9zbGFiX2NvbW1vbi5vIDo9IG5cXG5tbS9NYWtlZmlsZToxNTpLQ1NBTl9TQU5JVElaRV9zbHViLm8gOj0gblxcbm1tL01ha2VmaWxlLTE2LUtDU0FOX1NBTklUSVpFX3BhZ2VfYWxsb2MubyA6PSBuXFxuLS1cXG5tbS9NYWtlZmlsZT0yMz1LQ09WX0lOU1RSVU1FTlRfc2xhYl9jb21tb24ubyA6PSBuXFxubW0vTWFrZWZpbGU6MjQ6S0NPVl9JTlNUUlVNRU5UX3NsdWIubyA6PSBuXFxubW0vTWFrZWZpbGUtMjUtS0NPVl9JTlNUUlVNRU5UX3BhZ2VfYWxsb2MubyA6PSBuXFxuLS1cXG5tbS9NYWtlZmlsZT03MT1vYmoteSArPSAkKG1lbW9yeS1ob3RwbHVnLXkpXFxubW0vTWFrZWZpbGU6NzI6b2JqLXkgKz0gc2x1Yi5vXFxubW0vTWFrZWZpbGUtNzMtXFxuLS1cXG5tbS9zbHViLmM9NDM4Nz1zbGFiX291dF9vZl9tZW1vcnkoc3RydWN0IGttZW1fY2FjaGUgKnMsIGdmcF90IGdmcGZsYWdzLCBpbnQgbmlkKVxcbm1tL3NsdWIuYy00Mzg4LXtcXG5tbS9zbHViLmM6NDM4OTpcXHRzdGF0aWMgREVGSU5FX1JBVEVMSU1JVF9TVEFURShzbHViX29vbV9ycywgREVGQVVMVF9SQVRFTElNSVRfSU5URVJWQUwsXFxubW0vc2x1Yi5jLTQzOTAtXFx0XFx0XFx0XFx0ICAgICAgREVGQVVMVF9SQVRFTElNSVRfQlVSU1QpO1xcbi0tXFxubW0vc2x1Yi5jLTQzOTQtXFxubW0vc2x1Yi5jOjQzOTU6XFx0aWYgKChnZnBmbGFncyBcXHUwMDI2IF9fR0ZQX05PV0FSTikgfHwgIV9fcmF0ZWxpbWl0KFxcdTAwMjZzbHViX29vbV9ycykpXFxubW0vc2x1Yi5jLTQzOTYtXFx0XFx0cmV0dXJuO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwMjo1Mjo0My40NjAyNzU4OTFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjM1OTAzMjA0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgdGhlIEtlcm5lbCdzIE1lbW9yeSBBbGxvY2F0b3IqKlxuXG5Pa2F5LCBzbyBJJ20gc2VlaW5nIGBvYmoteSArPSBzbHViLm9gIGluIHRoZSBidWlsZCBwcm9jZXNzLiBSaWdodCwgU0xVQi4gT2YgY291cnNlLCB0aGF0J3MgdGhlIGRlZmF1bHQgYW5kIG9ubHkgc2xhYiBhbGxvY2F0b3IgaW4gbW9kZXJuIGtlcm5lbHMuIFNMQUIgYW5kIFNMT0IgYXJlIGFuY2llbnQgaGlzdG9yeSBhdCB0aGlzIHBvaW50LiBTdGlsbCwgaXQncyBhbHdheXMgZ29vZCB0byBiZSB0aG9yb3VnaC4gSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoZSBgS2NvbmZpZ2AgZmlsZSBhbmQgY29uZmlybSB0aGF0IGBDT05GSUdfU0xVQmAgaXMgaW5kZWVkIGVuYWJsZWQuIEl04oCZcyBoaWdobHkgcHJvYmFibGUsIGdpdmVuIFNMVULigJlzIHViaXF1aXR5LCBidXQgdmVyaWZ5aW5nIGlzIHNlY29uZCBuYXR1cmUgYXQgdGhpcyBwb2ludC4gQmV0dGVyIHNhZmUgdGhhbiBzb3JyeSB3aGVuIGRlYWxpbmcgd2l0aCBjb3JlIGtlcm5lbCBjb21wb25lbnRzIGxpa2UgdGhlIG1lbW9yeSBhbGxvY2F0b3IuIEl0J3MgYSBmdW5kYW1lbnRhbCBwYXJ0IG9mIHRoZSBzeXN0ZW0sIGFuZCBldmVuIHRoZSBzbWFsbGVzdCBtaXNjb25maWd1cmF0aW9uIGNhbiBoYXZlIHdpZGUtcmFuZ2luZyBlZmZlY3RzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MTk3LCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDI6NTI6NDUuODE5MzEwOTk2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODkwNTUzNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgU0xVQlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vS2NvbmZpZz0xNjI9bWVudSBcXFwiU2xhYiBhbGxvY2F0b3Igb3B0aW9uc1xcXCJcXG5tbS9LY29uZmlnLTE2My1cXG5tbS9LY29uZmlnOjE2NDpjb25maWcgU0xVQlxcbm1tL0tjb25maWctMTY1LVxcdGRlZl9ib29sIHlcXG4tLVxcbm1tL0tjb25maWc9MTY4PWNvbmZpZyBLVkZSRUVfUkNVX0JBVENIRURcXG4tLVxcbm1tL0tjb25maWctMTcyLVxcbm1tL0tjb25maWc6MTczOmNvbmZpZyBTTFVCX1RJTllcXG5tbS9LY29uZmlnLTE3NC1cXHRib29sIFxcXCJDb25maWd1cmUgZm9yIG1pbmltYWwgbWVtb3J5IGZvb3RwcmludFxcXCJcXG4tLVxcbm1tL0tjb25maWc9MjE3PWNvbmZpZyBTTEFCX0JVQ0tFVFNcXG4tLVxcbm1tL0tjb25maWctMjMzLVxcbm1tL0tjb25maWc6MjM0OmNvbmZpZyBTTFVCX1NUQVRTXFxubW0vS2NvbmZpZy0yMzUtXFx0ZGVmYXVsdCBuXFxuLS1cXG5tbS9LY29uZmlnLmRlYnVnPTQxPWNvbmZpZyBERUJVR19QQUdFQUxMT0NfRU5BQkxFX0RFRkFVTFRcXG4tLVxcbm1tL0tjb25maWcuZGVidWctNDctXFxubW0vS2NvbmZpZy5kZWJ1Zzo0ODpjb25maWcgU0xVQl9ERUJVR1xcbm1tL0tjb25maWcuZGVidWctNDktXFx0ZGVmYXVsdCB5XFxuLS1cXG5tbS9LY29uZmlnLmRlYnVnLTU4LVxcbm1tL0tjb25maWcuZGVidWc6NTk6Y29uZmlnIFNMVUJfREVCVUdfT05cXG5tbS9LY29uZmlnLmRlYnVnLTYwLVxcdGJvb2wgXFxcIlNMVUIgZGVidWdnaW5nIG9uIGJ5IGRlZmF1bHRcXFwiXFxuLS1cXG5tbS9LY29uZmlnLmRlYnVnLTcyLVxcbm1tL0tjb25maWcuZGVidWc6NzM6Y29uZmlnIFNMVUJfUkNVX0RFQlVHXFxubW0vS2NvbmZpZy5kZWJ1Zy03NC1cXHRib29sIFxcXCJFbmFibGUgVUFGIGRldGVjdGlvbiBpbiBUWVBFU0FGRV9CWV9SQ1UgY2FjaGVzIChmb3IgS0FTQU4pXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwMjo1Mjo0NS44NjgyMjM2MzJaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjgyNjAxOTUxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIFNMVUIgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBGaXJzdCwgSSBuZWVkIHRvIGNvbmZpcm0gdGhlIHN0YXR1cyBvZiBgQ09ORklHX1NMVUJgLiBSaWdodCwgYG1tL0tjb25maWdgIGlzIHRoZSBwbGFjZSB0byBzdGFydC4gRXhjZWxsZW50LCBpdCdzIGRlZmluZWQgYXMgYGRlZl9ib29sIHlgLCB3aGljaCBtZWFucyBpdCdzIHRoZSBkZWZhdWx0LCBhbHdheXMgZW5hYmxlZC4gR29vZC4gTm93LCBJIHN1c3BlY3QgdGhlcmUgbWlnaHQgYmUgc29tZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiByZWxhdGVkIHRvIGBfX19rbWFsbG9jX2xhcmdlX25vZGVgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiBpdHMgYmVoYXZpb3IgaXMgaW5mbHVlbmNlZCBieSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbnMuIEknbGwganVtcCBpbnRvIGBtbS9zbHViLmNgIGFuZCB6ZXJvIGluIGFyb3VuZCBsaW5lIDUzNDAuIEknbGwgYmUgbG9va2luZyBmb3IgYW55IGAjaWZkZWZgIG9yIHNpbWlsYXIgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZXMgc3Vycm91bmRpbmcgdGhhdCBmdW5jdGlvbi4gVGhpcyBzaG91bGQgaGVscCBkZXRlcm1pbmUgaWYgaXQncyBnb3QgYW55IGRlcGVuZGVuY2llcyBvciBhbHRlcm5hdGl2ZSBpbXBsZW1lbnRhdGlvbnMgSSBuZWVkIHRvIGNvbnNpZGVyIGZvciB0aGlzIGFuYWx5c2lzLiBUaW1lIHRvIGNoZWNrIHRoZSBjb2RlIVxuXG5cbiIsIklucHV0VG9rZW5zIjo4ODA5LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDI6NTI6NDguNjk0MjQ2MDYyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4MjUyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJtbS9zbHViLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNTMyMCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiNTMyMDpcXHRcXG41MzIxOlxcdFxcdGlmIChsaWtlbHkoIXJldCkpXFxuNTMyMjpcXHRcXHRcXHRyZXQgPSBzaGVhZi1cXHUwMDNlb2JqZWN0c1stLXNoZWFmLVxcdTAwM2VzaXplXTtcXG41MzIzOlxcdFxcbjUzMjQ6XFx0XFx0LyogYWRkIF9fR0ZQX05PRkFJTCB0byBmb3JjZSBzdWNjZXNzZnVsIG1lbWNnIGNoYXJnaW5nICovXFxuNTMyNTpcXHRcXHRzbGFiX3Bvc3RfYWxsb2NfaG9vayhzLCBnZnAgfCBfX0dGUF9OT0ZBSUwsIDEsIFxcdTAwMjZyZXQsIFxcdTAwMjZhYyk7XFxuNTMyNjpcXHRvdXQ6XFxuNTMyNzpcXHRcXHR0cmFjZV9rbWVtX2NhY2hlX2FsbG9jKF9SRVRfSVBfLCByZXQsIHMsIGdmcCwgTlVNQV9OT19OT0RFKTtcXG41MzI4OlxcdFxcbjUzMjk6XFx0XFx0cmV0dXJuIHJldDtcXG41MzMwOlxcdH1cXG41MzMxOlxcdFxcbjUzMzI6XFx0dW5zaWduZWQgaW50IGttZW1fY2FjaGVfc2hlYWZfc2l6ZShzdHJ1Y3Qgc2xhYl9zaGVhZiAqc2hlYWYpXFxuNTMzMzpcXHR7XFxuNTMzNDpcXHRcXHRyZXR1cm4gc2hlYWYtXFx1MDAzZXNpemU7XFxuNTMzNTpcXHR9XFxuNTMzNjpcXHQvKlxcbjUzMzc6XFx0ICogVG8gYXZvaWQgdW5uZWNlc3Nhcnkgb3ZlcmhlYWQsIHdlIHBhc3MgdGhyb3VnaCBsYXJnZSBhbGxvY2F0aW9uIHJlcXVlc3RzXFxuNTMzODpcXHQgKiBkaXJlY3RseSB0byB0aGUgcGFnZSBhbGxvY2F0b3IuIFdlIHVzZSBfX0dGUF9DT01QLCBiZWNhdXNlIHdlIHdpbGwgbmVlZCB0b1xcbjUzMzk6XFx0ICoga25vdyB0aGUgYWxsb2NhdGlvbiBvcmRlciB0byBmcmVlIHRoZSBwYWdlcyBwcm9wZXJseSBpbiBrZnJlZS5cXG41MzQwOlxcdCAqL1xcbjUzNDE6XFx0c3RhdGljIHZvaWQgKl9fX2ttYWxsb2NfbGFyZ2Vfbm9kZShzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3MsIGludCBub2RlKVxcbjUzNDI6XFx0e1xcbjUzNDM6XFx0XFx0c3RydWN0IHBhZ2UgKnBhZ2U7XFxuNTM0NDpcXHRcXHR2b2lkICpwdHIgPSBOVUxMO1xcbjUzNDU6XFx0XFx0dW5zaWduZWQgaW50IG9yZGVyO1xcbjUzNDY6XFx0XFxuNTM0NzpcXHRcXHRpZiAoV0FSTl9PTl9PTkNFX0dGUChzaXplIFxcdTAwM2UgS01BTExPQ19NQVhfU0laRSwgZmxhZ3MpKVxcbjUzNDg6XFx0XFx0XFx0cmV0dXJuIE5VTEw7XFxuNTM0OTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDI6NTI6NDguNjk0NjMwMjQyWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI3Mzk0MzMxMDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZSB3aGF0J3MgaGFwcGVuaW5nIGluIGBtbS9zbHViLmNgLiBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgc29tZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBkaXJlY3RpdmVzLCBzcGVjaWZpY2FsbHkgYCNpZmAgb3IgYCNpZmRlZmAsIGFyb3VuZCBsaW5lcyA1MzQwIHRvIDU0MDAuIFRoYXQgc2VlbXMgbGlrZSBhIHJlYXNvbmFibGUgcmFuZ2UgdG8gc3RhcnQgd2l0aC4gVGhlIGJlc3Qgd2F5IHRvIGRvIHRoaXMgaXMgdG8gYGdyZXBgIGZvciB0aG9zZSBkaXJlY3RpdmVzIHdpdGhpbiB0aGF0IGFyZWEgYW5kIHNlZSB3aGF0J3MgaGlkaW5nLiBUaGlzIHNob3VsZCBwcm92aWRlIHRoZSBjb250ZXh0IG5lZWRlZCBmb3IgdGhlIG5leHQgc3RlcCwgd2hhdGV2ZXIgdGhhdCBtYXkgYmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk1NDcsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDAyOjUyOjUxLjQzNDA2NTg3OFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjcxMjgwMzQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIiNpZlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9zbHViLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA1NTEgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbm1tL3NsdWIuYz0xOTM9ZW51bSBzbGFiX2ZsYWdzIHtcXG4tLVxcbm1tL3NsdWIuYy0xOTgtXFxubW0vc2x1Yi5jOjE5OTojaWZuZGVmIENPTkZJR19TTFVCX1RJTllcXG5tbS9zbHViLmMtMjAwLSNkZWZpbmUgX19mYXN0cGF0aF9pbmxpbmUgX19hbHdheXNfaW5saW5lXFxuLS1cXG5tbS9zbHViLmMtMjA0LVxcbm1tL3NsdWIuYzoyMDU6I2lmZGVmIENPTkZJR19TTFVCX0RFQlVHXFxubW0vc2x1Yi5jOjIwNjojaWZkZWYgQ09ORklHX1NMVUJfREVCVUdfT05cXG5tbS9zbHViLmMtMjA3LURFRklORV9TVEFUSUNfS0VZX1RSVUUoc2x1Yl9kZWJ1Z19lbmFibGVkKTtcXG4tLVxcbm1tL3NsdWIuYz0yMDk9REVGSU5FX1NUQVRJQ19LRVlfRkFMU0Uoc2x1Yl9kZWJ1Z19lbmFibGVkKTtcXG4tLVxcbm1tL3NsdWIuYy0yMTItXFxubW0vc2x1Yi5jOjIxMzojaWZkZWYgQ09ORklHX05VTUFcXG5tbS9zbHViLmMtMjE0LXN0YXRpYyBERUZJTkVfU1RBVElDX0tFWV9GQUxTRShzdHJpY3RfbnVtYSk7XFxuLS1cXG5tbS9zbHViLmMtMjE2LVxcbm1tL3NsdWIuYzoyMTc6I2lmZGVmIENPTkZJR19NRU1fQUxMT0NfUFJPRklMSU5HXFxubW0vc2x1Yi5jLTIxOC1ERUZJTkVfU1RBVElDX0tFWV9NQVlCRShDT05GSUdfTUVNX0FMTE9DX1BST0ZJTElOR19FTkFCTEVEX0JZX0RFRkFVTFQsXFxuLS1cXG5tbS9zbHViLmM9MjM5PXN0cnVjdCBzbGFiX29ial9pdGVyIHtcXG4tLVxcbm1tL3NsdWIuYy0yNDEtXFx0dm9pZCAqc3RhcnQ7XFxubW0vc2x1Yi5jOjI0MjojaWZkZWYgQ09ORklHX1NMQUJfRlJFRUxJU1RfUkFORE9NXFxubW0vc2x1Yi5jLTI0My1cXHR1bnNpZ25lZCBsb25nIGZyZWVsaXN0X2NvdW50O1xcbi0tXFxubW0vc2x1Yi5jPTI1ND12b2lkICpmaXh1cF9yZWRfbGVmdChzdHJ1Y3Qga21lbV9jYWNoZSAqcywgdm9pZCAqcClcXG4tLVxcbm1tL3NsdWIuYy0yNzItXFxubW0vc2x1Yi5jOjI3MzojaWZuZGVmIENPTkZJR19TTFVCX1RJTllcXG5tbS9zbHViLmMtMjc0LS8qXFxuLS1cXG5tbS9zbHViLmMtMzE3LVxcbm1tL3NsdWIuYzozMTg6I2lmZGVmIHN5c3RlbV9oYXNfZnJlZWxpc3RfYWJhXFxubW0vc2x1Yi5jLTMxOS0jZGVmaW5lIF9fQ01QWENIR19ET1VCTEVcXHRfX1NMQUJfRkxBR19CSVQoX1NMQUJfQ01QWENIR19ET1VCTEUpXFxuLS1cXG5tbS9zbHViLmM9MzI4PXN0cnVjdCB0cmFjayB7XFxubW0vc2x1Yi5jLTMyOS1cXHR1bnNpZ25lZCBsb25nIGFkZHI7XFx0LyogQ2FsbGVkIGZyb20gYWRkcmVzcyAqL1xcbm1tL3NsdWIuYzozMzA6I2lmZGVmIENPTkZJR19TVEFDS0RFUE9UXFxubW0vc2x1Yi5jLTMzMS1cXHRkZXBvdF9zdGFja19oYW5kbGVfdCBoYW5kbGU7XFxuLS1cXG5tbS9zbHViLmM9MzM4PWVudW0gdHJhY2tfaXRlbSB7IFRSQUNLX0FMTE9DLCBUUkFDS19GUkVFIH07XFxubW0vc2x1Yi5jLTMzOS1cXG5tbS9zbHViLmM6MzQwOiNpZmRlZiBTTEFCX1NVUFBPUlRTX1NZU0ZTXFxubW0vc2x1Yi5jLTM0MS1zdGF0aWMgaW50IHN5c2ZzX3NsYWJfYWRkKHN0cnVjdCBrbWVtX2NhY2hlICopO1xcbi0tXFxubW0vc2x1Yi5jPTM0Nz1zdGF0aWMgaW5saW5lIHZvaWQgc2xhYl9zeXNmc19wcm9jZXNzX2FsaWFzZXModm9pZCkgeyB9XFxuLS1cXG5tbS9zbHViLmMtMzQ5LVxcbm1tL3NsdWIuYzozNTA6I2lmIGRlZmluZWQoQ09ORklHX0RFQlVHX0ZTKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKENPTkZJR19TTFVCX0RFQlVHKVxcbm1tL3NsdWIuYy0zNTEtc3RhdGljIHZvaWQgZGVidWdmc19zbGFiX2FkZChzdHJ1Y3Qga21lbV9jYWNoZSAqKTtcXG4tLVxcbm1tL3NsdWIuYz0zNjM9ZW51bSBzdGF0X2l0ZW0ge1xcbi0tXFxubW0vc2x1Yi5jLTM5Mi1cXG5tbS9zbHViLmM6MzkzOiNpZmRlZiBDT05GSUdfU0xVQl9TVEFUU1xcbm1tL3NsdWIuYy0zOTQtc3RydWN0IGttZW1fY2FjaGVfc3RhdHMge1xcbi0tXFxubW0vc2x1Yi5jPTM5OT1zdGF0aWMgaW5saW5lIHZvaWQgc3RhdChjb25zdCBzdHJ1Y3Qga21lbV9jYWNoZSAqcywgZW51bSBzdGF0X2l0ZW0gc2kpXFxubW0vc2x1Yi5jLTQwMC17XFxubW0vc2x1Yi5jOjQwMTojaWZkZWYgQ09ORklHX1NMVUJfU1RBVFNcXG5tbS9zbHViLmMtNDAyLVxcdC8qXFxuLS1cXG5tbS9zbHViLmM9NDExPXZvaWQgc3RhdF9hZGQoY29uc3Qgc3RydWN0IGttZW1fY2FjaGUgKnMsIGVudW0gc3RhdF9pdGVtIHNpLCBpbnQgdilcXG5tbS9zbHViLmMtNDEyLXtcXG5tbS9zbHViLmM6NDEzOiNpZmRlZiBDT05GSUdfU0xVQl9TVEFUU1xcbm1tL3NsdWIuYy00MTQtXFx0cmF3X2NwdV9hZGQocy1cXHUwMDNlY3B1X3N0YXRzLVxcdTAwM2VzdGF0W3NpXSwgdik7XFxuLS1cXG5tbS9zbHViLmM9NDU3PXN0cnVjdCBrbWVtX2NhY2hlX25vZGUge1xcbi0tXFxubW0vc2x1Yi5jLTQ2MC1cXHRzdHJ1Y3QgbGlzdF9oZWFkIHBhcnRpYWw7XFxubW0vc2x1Yi5jOjQ2MTojaWZkZWYgQ09ORklHX1NMVUJfREVCVUdcXG5tbS9zbHViLmMtNDYyLVxcdGF0b21pY19sb25nX3QgbnJfc2xhYnM7XFxuLS1cXG5tbS9zbHViLmM9NTMxPXN0YXRpYyBpbmxpbmUgZnJlZXB0cl90IGZyZWVsaXN0X3B0cl9lbmNvZGUoY29uc3Qgc3RydWN0IGttZW1fY2FjaGUgKnMsXFxuLS1cXG5tbS9zbHViLmMtNTM1LVxcbm1tL3NsdWIuYzo1MzY6I2lmZGVmIENPTkZJR19TTEFCX0ZSRUVMSVNUX0hBUkRFTkVEXFxubW0vc2x1Yi5jLTUzNy1cXHRlbmNvZGVkID0gKHVuc2lnbmVkIGxvbmcpcHRyIF4gcy1cXHUwMDNlcmFuZG9tIF4gc3dhYihwdHJfYWRkcik7XFxuLS1cXG5tbS9zbHViLmM9NTQ0PXN0YXRpYyBpbmxpbmUgdm9pZCAqZnJlZWxpc3RfcHRyX2RlY29kZShjb25zdCBzdHJ1Y3Qga21lbV9jYWNoZSAqcyxcXG4tLVxcbm1tL3NsdWIuYy01NDgtXFxubW0vc2x1Yi5jOjU0OTojaWZkZWYgQ09ORklHX1NMQUJfRlJFRUxJU1RfSEFSREVORURcXG5tbS9zbHViLmMtNTUwLVxcdGRlY29kZWQgPSAodm9pZCAqKShwdHIudiBeIHMtXFx1MDAzZXJhbmRvbSBeIHN3YWIocHRyX2FkZHIpKTtcXG4tLVxcbm1tL3NsdWIuYz01Njg9c3RhdGljIGlubGluZSB2b2lkIHNldF9mcmVlcG9pbnRlcihzdHJ1Y3Qga21lbV9jYWNoZSAqcywgdm9pZCAqb2JqZWN0LCB2b2lkICpmcClcXG4tLVxcbm1tL3NsdWIuYy01NzEtXFxubW0vc2x1Yi5jOjU3MjojaWZkZWYgQ09ORklHX1NMQUJfRlJFRUxJU1RfSEFSREVORURcXG5tbS9zbHViLmMtNTczLVxcdEJVR19PTihvYmplY3QgPT0gZnApOyAvKiBuYWl2ZSBkZXRlY3Rpb24gb2YgZG91YmxlIGZyZWUgb3IgY29ycnVwdGlvbiAqL1xcbi0tXFxubW0vc2x1Yi5jPTY2ND1fX3VwZGF0ZV9mcmVlbGlzdF9mYXN0KHN0cnVjdCBzbGFiICpzbGFiLCBzdHJ1Y3QgZnJlZWxpc3RfY291bnRlcnMgKm9sZCxcXG4tLVxcbm1tL3NsdWIuYy02NjYte1xcbm1tL3NsdWIuYzo2Njc6I2lmZGVmIHN5c3RlbV9oYXNfZnJlZWxpc3RfYWJhXFxubW0vc2x1Yi5jLTY2OC1cXHRyZXR1cm4gdHJ5X2NtcHhjaGdfZnJlZWxpc3QoXFx1MDAyNnNsYWItXFx1MDAzZWZyZWVsaXN0X2NvdW50ZXJzLFxcbi0tXFxubW0vc2x1Yi5jPTcwMj1zdGF0aWMgaW5saW5lIGJvb2wgX19zbGFiX3VwZGF0ZV9mcmVlbGlzdChzdHJ1Y3Qga21lbV9jYWNoZSAqcywgc3RydWN0IHNsYWIgKnNsYWIsXFxuLS1cXG5tbS9zbHViLmMtNzIwLVxcbm1tL3NsdWIuYzo3MjE6I2lmZGVmIFNMVUJfREVCVUdfQ01QWENIR1xcbm1tL3NsdWIuYy03MjItXFx0cHJfaW5mbyhcXFwiJXMgJXM6IGNtcHhjaGcgZG91YmxlIHJlZG8gXFxcIiwgbiwgcy1cXHUwMDNlbmFtZSk7XFxuLS1cXG5tbS9zbHViLmM9NzI4PXN0YXRpYyBpbmxpbmUgYm9vbCBzbGFiX3VwZGF0ZV9mcmVlbGlzdChzdHJ1Y3Qga21lbV9jYWNoZSAqcywgc3RydWN0IHNsYWIgKnNsYWIsXFxuLS1cXG5tbS9zbHViLmMtNzQ3LVxcbm1tL3NsdWIuYzo3NDg6I2lmZGVmIFNMVUJfREVCVUdfQ01QWENIR1xcbm1tL3NsdWIuYy03NDktXFx0cHJfaW5mbyhcXFwiJXMgJXM6IGNtcHhjaGcgZG91YmxlIHJlZG8gXFxcIiwgbiwgcy1cXHUwMDNlbmFtZSk7XFxuLS1cXG5tbS9zbHViLmM9Nzc1PXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBnZXRfb3JpZ19zaXplKHN0cnVjdCBrbWVtX2NhY2hlICpzLCB2b2lkICpvYmplY3QpXFxuLS1cXG5tbS9zbHViLmMtNzkwLVxcbm1tL3NsdWIuYzo3OTE6I2lmZGVmIENPTkZJR19TTEFCX09CSl9FWFRcXG5tbS9zbHViLmMtNzkyLVxcbi0tXFxubW0vc2x1Yi5jPTg3OT1zdGF0aWMgaW5saW5lIGJvb2wgb2JqX2V4dHNfaW5fc2xhYihzdHJ1Y3Qga21lbV9jYWNoZSAqcywgc3RydWN0IHNsYWIgKnNsYWIpXFxuLS1cXG5tbS9zbHViLmMtODg1LVxcbm1tL3NsdWIuYzo4ODY6I2lmIGRlZmluZWQoQ09ORklHX1NMQUJfT0JKX0VYVCkgXFx1MDAyNlxcdTAwMjYgZGVmaW5lZChDT05GSUdfNjRCSVQpXFxubW0vc2x1Yi5jLTg4Ny1zdGF0aWMgdW5zaWduZWQgaW50IG9ial9leHRzX29mZnNldF9pbl9vYmplY3Qoc3RydWN0IGttZW1fY2FjaGUgKnMpXFxuLS1cXG5tbS9zbHViLmM9OTEyPXN0YXRpYyBpbmxpbmUgdm9pZCBzbGFiX3NldF9vYmpfZXh0c19pbl9vYmplY3Qoc3RydWN0IHNsYWIgKnNsYWIpXFxuLS1cXG5tbS9zbHViLmMtOTIwLSAqL1xcbm1tL3NsdWIuYzo5MjE6I2lmIGRlZmluZWQoQ09ORklHX0RFQlVHX1ZNKSB8fCBkZWZpbmVkKENPTkZJR19QUk9WRV9MT0NLSU5HKVxcbm1tL3NsdWIuYy05MjItc3RhdGljIG5vaW5saW5lIHZvaWQgc2xhYl9hdHRhY2hfa3Byb2JlX2xvY2tlZCh2b2lkKVxcbi0tXFxubW0vc2x1Yi5jPTkyNz1zdGF0aWMgaW5saW5lIHZvaWQgc2xhYl9hdHRhY2hfa3Byb2JlX2xvY2tlZCh2b2lkKSB7IH1cXG4tLVxcbm1tL3NsdWIuYy05MzQtXFxubW0vc2x1Yi5jOjkzNTojaWZkZWYgQ09ORklHX1NMVUJfREVCVUdcXG5tbS9zbHViLmMtOTM2LVxcbi0tXFxubW0vc2x1Yi5jPTk0OT1zdGF0aWMgdm9pZCBfX2ZpbGxfbWFwKHVuc2lnbmVkIGxvbmcgKm9ial9tYXAsIHN0cnVjdCBrbWVtX2NhY2hlICpzLFxcbi0tXFxubW0vc2x1Yi5jLTk2MC1cXG5tbS9zbHViLmM6OTYxOiNpZiBJU19FTkFCTEVEKENPTkZJR19LVU5JVClcXG5tbS9zbHViLmMtOTYyLXN0YXRpYyBib29sIHNsYWJfYWRkX2t1bml0X2Vycm9ycyh2b2lkKVxcbi0tXFxubW0vc2x1Yi5jPTEwMDQ9c3RhdGljIGlubGluZSB2b2lkICpyZXN0b3JlX3JlZF9sZWZ0KHN0cnVjdCBrbWVtX2NhY2hlICpzLCB2b2lkICpwKVxcbi0tXFxubW0vc2x1Yi5jLTEwMTQtICovXFxubW0vc2x1Yi5jOjEwMTU6I2lmIGRlZmluZWQoQ09ORklHX1NMVUJfREVCVUdfT04pXFxubW0vc2x1Yi5jLTEwMTYtc3RhdGljIHNsYWJfZmxhZ3NfdCBzbHViX2RlYnVnID0gREVCVUdfREVGQVVMVF9GTEFHUztcXG4tLVxcbm1tL3NsdWIuYz0xMDU3PXN0YXRpYyBzdHJ1Y3QgdHJhY2sgKmdldF90cmFjayhzdHJ1Y3Qga21lbV9jYWNoZSAqcywgdm9pZCAqb2JqZWN0LFxcbi0tXFxubW0vc2x1Yi5jLTEwNjYtXFxubW0vc2x1Yi5jOjEwNjc6I2lmZGVmIENPTkZJR19TVEFDS0RFUE9UXFxubW0vc2x1Yi5jLTEwNjgtc3RhdGljIG5vaW5saW5lIGRlcG90X3N0YWNrX2hhbmRsZV90IHNldF90cmFja19wcmVwYXJlKGdmcF90IGdmcF9mbGFncylcXG4tLVxcbm1tL3NsdWIuYz0xMDg2PXN0YXRpYyB2b2lkIHNldF90cmFja191cGRhdGUoc3RydWN0IGttZW1fY2FjaGUgKnMsIHZvaWQgKm9iamVjdCxcXG4tLVxcbm1tL3NsdWIuYy0xMDkxLVxcbm1tL3NsdWIuYzoxMDkyOiNpZmRlZiBDT05GSUdfU1RBQ0tERVBPVFxcbm1tL3NsdWIuYy0xMDkzLVxcdHAtXFx1MDAzZWhhbmRsZSA9IGhhbmRsZTtcXG4tLVxcbm1tL3NsdWIuYz0xMTIwPXN0YXRpYyB2b2lkIHByaW50X3RyYWNrKGNvbnN0IGNoYXIgKnMsIHN0cnVjdCB0cmFjayAqdCwgdW5zaWduZWQgbG9uZyBwcl90aW1lKVxcbi0tXFxubW0vc2x1Yi5jLTExMjgtXFx0ICAgICAgIHMsICh2b2lkICopdC1cXHUwMDNlYWRkciwgcHJfdGltZSAtIHQtXFx1MDAzZXdoZW4sIHQtXFx1MDAzZWNwdSwgdC1cXHUwMDNlcGlkKTtcXG5tbS9zbHViLmM6MTEyOTojaWZkZWYgQ09ORklHX1NUQUNLREVQT1RcXG5tbS9zbHViLmMtMTEzMC1cXHRoYW5kbGUgPSBSRUFEX09OQ0UodC1cXHUwMDNlaGFuZGxlKTtcXG4tLVxcbm1tL3NsdWIuYz0xMzIwPXN0YXRpYyB2b2lkIHJlc3RvcmVfYnl0ZXMoc3RydWN0IGttZW1fY2FjaGUgKnMsIGNvbnN0IGNoYXIgKm1lc3NhZ2UsIHU4IGRhdGEsXFxuLS1cXG5tbS9zbHViLmMtMTMyNi1cXG5tbS9zbHViLmM6MTMyNzojaWZkZWYgQ09ORklHX0tNU0FOXFxubW0vc2x1Yi5jLTEzMjgtI2RlZmluZSBwYWRfY2hlY2tfYXR0cmlidXRlcyBub2lubGluZSBfX25vX2ttc2FuX2NoZWNrc1xcbi0tXFxubW0vc2x1Yi5jPTIwNjk9c3RhdGljIGlubGluZSB2b2lkIGRlY19zbGFic19ub2RlKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBpbnQgbm9kZSxcXG4tLVxcbm1tL3NsdWIuYy0yMDg0LVxcbm1tL3NsdWIuYzoyMDg1OiNpZmRlZiBDT05GSUdfU0xBQl9PQkpfRVhUXFxubW0vc2x1Yi5jLTIwODYtXFxubW0vc2x1Yi5jOjIwODc6I2lmZGVmIENPTkZJR19NRU1fQUxMT0NfUFJPRklMSU5HX0RFQlVHXFxubW0vc2x1Yi5jLTIwODgtXFxuLS1cXG5tbS9zbHViLmM9MjE2ND1pbnQgYWxsb2Nfc2xhYl9vYmpfZXh0cyhzdHJ1Y3Qgc2xhYiAqc2xhYiwgc3RydWN0IGttZW1fY2FjaGUgKnMsXFxuLS1cXG5tbS9zbHViLmMtMjIxNy1cXHRuZXdfZXh0cyA9ICh1bnNpZ25lZCBsb25nKXZlYztcXG5tbS9zbHViLmM6MjIxODojaWZkZWYgQ09ORklHX01FTUNHXFxubW0vc2x1Yi5jLTIyMTktXFx0bmV3X2V4dHMgfD0gTUVNQ0dfREFUQV9PQkpFWFRTO1xcbi0tXFxubW0vc2x1Yi5jPTIyODU9c3RhdGljIHZvaWQgYWxsb2Nfc2xhYl9vYmpfZXh0c19lYXJseShzdHJ1Y3Qga21lbV9jYWNoZSAqcywgc3RydWN0IHNsYWIgKnNsYWIpXFxuLS1cXG5tbS9zbHViLmMtMjMwMS1cXG5tbS9zbHViLmM6MjMwMjojaWZkZWYgQ09ORklHX01FTUNHXFxubW0vc2x1Yi5jLTIzMDMtXFx0XFx0b2JqX2V4dHMgfD0gTUVNQ0dfREFUQV9PQkpFWFRTO1xcbi0tXFxubW0vc2x1Yi5jLTIzMTctXFxubW0vc2x1Yi5jOjIzMTg6I2lmZGVmIENPTkZJR19NRU1DR1xcbm1tL3NsdWIuYy0yMzE5LVxcdFxcdG9ial9leHRzIHw9IE1FTUNHX0RBVEFfT0JKRVhUUztcXG4tLVxcbm1tL3NsdWIuYz0yMzQ2PXN0YXRpYyBpbmxpbmUgdm9pZCBhbGxvY19zbGFiX29ial9leHRzX2Vhcmx5KHN0cnVjdCBrbWVtX2NhY2hlICpzLFxcbi0tXFxubW0vc2x1Yi5jLTIzNTItXFxubW0vc2x1Yi5jOjIzNTM6I2lmZGVmIENPTkZJR19NRU1fQUxMT0NfUFJPRklMSU5HXFxubW0vc2x1Yi5jLTIzNTQtXFxuLS1cXG5tbS9zbHViLmM9MjQ5NT1zdGF0aWMgaW5saW5lIHZvaWQgc2xhYl9vYmpfZXh0X2hhc19jb2RldGFnX2luaXQodm9pZClcXG4tLVxcbm1tL3NsdWIuYy0yNTAxLVxcbm1tL3NsdWIuYzoyNTAyOiNpZmRlZiBDT05GSUdfTUVNQ0dcXG5tbS9zbHViLmMtMjUwMy1cXG4tLVxcbm1tL3NsdWIuYz0yNjI1PXN0YXRpYyBpbmxpbmUgYm9vbCBtZW1jZ19zbGFiX3Bvc3RfY2hhcmdlKHZvaWQgKnAsIGdmcF90IGZsYWdzKVxcbi0tXFxubW0vc2x1Yi5jLTI2MzAtXFxubW0vc2x1Yi5jOjI2MzE6I2lmZGVmIENPTkZJR19TTFVCX1JDVV9ERUJVR1xcbm1tL3NsdWIuYy0yNjMyLXN0YXRpYyB2b2lkIHNsYWJfZnJlZV9hZnRlcl9yY3VfZGVidWcoc3RydWN0IHJjdV9oZWFkICpyY3VfaGVhZCk7XFxuLS1cXG5tbS9zbHViLmM9MjY2Nz1ib29sIHNsYWJfZnJlZV9ob29rKHN0cnVjdCBrbWVtX2NhY2hlICpzLCB2b2lkICp4LCBib29sIGluaXQsXFxuLS1cXG5tbS9zbHViLmMtMjY5NS1cXG5tbS9zbHViLmM6MjY5NjojaWZkZWYgQ09ORklHX1NMVUJfUkNVX0RFQlVHXFxubW0vc2x1Yi5jLTI2OTctXFx0aWYgKHN0aWxsX2FjY2Vzc2libGUpIHtcXG4tLVxcbm1tL3NsdWIuYz0zMzMzPXN0YXRpYyBpbmxpbmUgc3RydWN0IHNsYWIgKmFsbG9jX3NsYWJfcGFnZShnZnBfdCBmbGFncywgaW50IG5vZGUsXFxuLS1cXG5tbS9zbHViLmMtMzM2MC1cXG5tbS9zbHViLmM6MzM2MTojaWZkZWYgQ09ORklHX1NMQUJfRlJFRUxJU1RfUkFORE9NXFxubW0vc2x1Yi5jLTMzNjItLyogUHJlLWluaXRpYWxpemUgdGhlIHJhbmRvbSBzZXF1ZW5jZSBjYWNoZSAqL1xcbi0tXFxubW0vc2x1Yi5jPTM0NDE9c3RhdGljIHN0cnVjdCBzbGFiICphbGxvY2F0ZV9zbGFiKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBnZnBfdCBmbGFncyxcXG4tLVxcbm1tL3NsdWIuYy0zNDgwLVxcbm1tL3NsdWIuYzozNDgxOiNpZmRlZiBDT05GSUdfNjRCSVRcXG5tbS9zbHViLmMtMzQ4Mi1cXHRpZiAoY2FjaGVfbmVlZHNfb2JqY2cocykpXFxuLS1cXG5tbS9zbHViLmM9MzYzND1zdGF0aWMgdm9pZCAqYWxsb2Nfc2luZ2xlX2Zyb21fcGFydGlhbChzdHJ1Y3Qga21lbV9jYWNoZSAqcyxcXG4tLVxcbm1tL3NsdWIuYy0zNjQwLVxcbm1tL3NsdWIuYzozNjQxOiNpZmRlZiBDT05GSUdfU0xVQl9ERUJVR1xcbm1tL3NsdWIuYy0zNjQyLVxcdGlmIChzLVxcdTAwM2VmbGFncyBcXHUwMDI2IFNMQUJfQ09OU0lTVEVOQ1lfQ0hFQ0tTKSB7XFxuLS1cXG5tbS9zbHViLmM9MzY2OD1zdGF0aWMgaW5saW5lIHZvaWQgKm5leHRfc2xhYl9vYmooc3RydWN0IGttZW1fY2FjaGUgKnMsXFxuLS1cXG5tbS9zbHViLmMtMzY3MC17XFxubW0vc2x1Yi5jOjM2NzE6I2lmZGVmIENPTkZJR19TTEFCX0ZSRUVMSVNUX1JBTkRPTVxcbm1tL3NsdWIuYy0zNjcyLVxcdGlmIChpdGVyLVxcdTAwM2VyYW5kb20pIHtcXG4tLVxcbm1tL3NsdWIuYz0zNzE4PXN0YXRpYyBpbmxpbmUgdm9pZCBpbml0X3NsYWJfb2JqX2l0ZXIoc3RydWN0IGttZW1fY2FjaGUgKnMsIHN0cnVjdCBzbGFiICpzbGFiLFxcbi0tXFxubW0vc2x1Yi5jLTM3MjQtXFxubW0vc2x1Yi5jOjM3MjU6I2lmZGVmIENPTkZJR19TTEFCX0ZSRUVMSVNUX1JBTkRPTVxcbm1tL3NsdWIuYy0zNzI2LVxcdGl0ZXItXFx1MDAzZXJhbmRvbSA9IChzbGFiLVxcdTAwM2VvYmplY3RzIFxcdTAwM2U9IDIgXFx1MDAyNlxcdTAwMjYgcy1cXHUwMDNlcmFuZG9tX3NlcSk7XFxuLS1cXG5tbS9zbHViLmM9Mzk1MD1zdGF0aWMgdm9pZCAqZ2V0X2Zyb21fYW55X3BhcnRpYWwoc3RydWN0IGttZW1fY2FjaGUgKnMsIGdmcF90IGdmcF9mbGFncyxcXG4tLVxcbm1tL3NsdWIuYy0zOTUyLXtcXG5tbS9zbHViLmM6Mzk1MzojaWZkZWYgQ09ORklHX05VTUFcXG5tbS9zbHViLmMtMzk1NC1cXHRzdHJ1Y3Qgem9uZWxpc3QgKnpvbmVsaXN0O1xcbi0tXFxubW0vc2x1Yi5jPTQyNDk9c3RhdGljIGludCBzbHViX2NwdV9kZWFkKHVuc2lnbmVkIGludCBjcHUpXFxuLS1cXG5tbS9zbHViLmMtNDI2MS1cXG5tbS9zbHViLmM6NDI2MjojaWZkZWYgQ09ORklHX1NMVUJfREVCVUdcXG5tbS9zbHViLmMtNDI2My1zdGF0aWMgaW50IGNvdW50X2ZyZWUoc3RydWN0IHNsYWIgKnNsYWIpXFxuLS1cXG5tbS9zbHViLmM9NDI3ND1zdGF0aWMgaW5saW5lIGJvb2wgZnJlZV9kZWJ1Z19wcm9jZXNzaW5nKHN0cnVjdCBrbWVtX2NhY2hlICpzLFxcbi0tXFxubW0vc2x1Yi5jLTQzMzEtXFxubW0vc2x1Yi5jOjQzMzI6I2lmIGRlZmluZWQoQ09ORklHX1NMVUJfREVCVUcpIHx8IGRlZmluZWQoU0xBQl9TVVBQT1JUU19TWVNGUylcXG5tbS9zbHViLmMtNDMzMy1zdGF0aWMgdW5zaWduZWQgbG9uZyBjb3VudF9wYXJ0aWFsKHN0cnVjdCBrbWVtX2NhY2hlX25vZGUgKm4sXFxuLS1cXG5tbS9zbHViLmMtNDM0Ny1cXG5tbS9zbHViLmM6NDM0ODojaWZkZWYgQ09ORklHX1NMVUJfREVCVUdcXG5tbS9zbHViLmMtNDM0OS0jZGVmaW5lIE1BWF9QQVJUSUFMX1RPX1NDQU4gMTAwMDBcXG4tLVxcbm1tL3NsdWIuYz00NjA2PXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgaW50IGFwcGx5X3N0cmljdF9udW1hX3BvbGljeShpbnQgbm9kZSlcXG5tbS9zbHViLmMtNDYwNy17XFxubW0vc2x1Yi5jOjQ2MDg6I2lmZGVmIENPTkZJR19OVU1BXFxubW0vc2x1Yi5jLTQ2MDktXFx0aWYgKHN0YXRpY19icmFuY2hfdW5saWtlbHkoXFx1MDAyNnN0cmljdF9udW1hKSBcXHUwMDI2XFx1MDAyNlxcbi0tXFxubW0vc2x1Yi5jPTYyMjY9c3RhdGljIF9fYWx3YXlzX2lubGluZSBib29sIGNhbl9mcmVlX3RvX3BjcyhzdHJ1Y3Qgc2xhYiAqc2xhYilcXG4tLVxcbm1tL3NsdWIuYy02MjM1LVxcbm1tL3NsdWIuYzo2MjM2OiNpZmRlZiBDT05GSUdfSEFWRV9NRU1PUllMRVNTX05PREVTXFxubW0vc2x1Yi5jLTYyMzctXFx0LypcXG4tLVxcbm1tL3NsdWIuYz02NDk4PXZvaWQgc2xhYl9mcmVlKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBzdHJ1Y3Qgc2xhYiAqc2xhYiwgdm9pZCAqb2JqZWN0LFxcbi0tXFxubW0vc2x1Yi5jLTY1MTMtXFxubW0vc2x1Yi5jOjY1MTQ6I2lmZGVmIENPTkZJR19NRU1DR1xcbm1tL3NsdWIuYy02NTE1LS8qIERvIG5vdCBpbmxpbmUgdGhlIHJhcmUgbWVtY2cgY2hhcmdpbmcgZmFpbGVkIHBhdGggaW50byB0aGUgYWxsb2NhdGlvbiBwYXRoICovXFxuLS1cXG5tbS9zbHViLmM9NjUyOT12b2lkIHNsYWJfZnJlZV9idWxrKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBzdHJ1Y3Qgc2xhYiAqc2xhYiwgdm9pZCAqaGVhZCxcXG4tLVxcbm1tL3NsdWIuYy02NTQzLVxcbm1tL3NsdWIuYzo2NTQ0OiNpZmRlZiBDT05GSUdfU0xVQl9SQ1VfREVCVUdcXG5tbS9zbHViLmMtNjU0NS1zdGF0aWMgdm9pZCBzbGFiX2ZyZWVfYWZ0ZXJfcmN1X2RlYnVnKHN0cnVjdCByY3VfaGVhZCAqcmN1X2hlYWQpXFxuLS1cXG5tbS9zbHViLmMtNjU3Mi1cXG5tbS9zbHViLmM6NjU3MzojaWZkZWYgQ09ORklHX0tBU0FOX0dFTkVSSUNcXG5tbS9zbHViLmMtNjU3NC12b2lkIF9fX2NhY2hlX2ZyZWUoc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlLCB2b2lkICp4LCB1bnNpZ25lZCBsb25nIGFkZHIpXFxuLS1cXG5tbS9zbHViLmM9NjYzNT1zdGF0aWMgaW5saW5lIHNpemVfdCBzbGFiX2tzaXplKHN0cnVjdCBzbGFiICpzbGFiKVxcbi0tXFxubW0vc2x1Yi5jLTY2MzgtXFxubW0vc2x1Yi5jOjY2Mzk6I2lmZGVmIENPTkZJR19TTFVCX0RFQlVHXFxubW0vc2x1Yi5jLTY2NDAtXFx0LypcXG4tLVxcbm1tL3NsdWIuYz02NjY0PXN0YXRpYyBzaXplX3QgX19rc2l6ZShjb25zdCB2b2lkICpvYmplY3QpXFxuLS1cXG5tbS9zbHViLmMtNjY4MS1cXG5tbS9zbHViLmM6NjY4MjojaWZkZWYgQ09ORklHX1NMVUJfREVCVUdcXG5tbS9zbHViLmMtNjY4My1cXHRza2lwX29yaWdfc2l6ZV9jaGVjayhzbGFiLVxcdTAwM2VzbGFiX2NhY2hlLCBvYmplY3QpO1xcbi0tXFxubW0vc2x1Yi5jPTcyNjA9X19yZWZpbGxfb2JqZWN0c19ub2RlKHN0cnVjdCBrbWVtX2NhY2hlICpzLCB2b2lkICoqcCwgZ2ZwX3QgZ2ZwLCB1bnNpZ25lZCBpbnQgbWluLFxcbi0tXFxubW0vc2x1Yi5jLTczMzMtXFxubW0vc2x1Yi5jOjczMzQ6I2lmZGVmIENPTkZJR19OVU1BXFxubW0vc2x1Yi5jLTczMzUtc3RhdGljIHVuc2lnbmVkIGludFxcbi0tXFxubW0vc2x1Yi5jPTc2Nzc9aW5pdF9rbWVtX2NhY2hlX25vZGUoc3RydWN0IGttZW1fY2FjaGVfbm9kZSAqbilcXG4tLVxcbm1tL3NsdWIuYy03NjgxLVxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZuLVxcdTAwM2VwYXJ0aWFsKTtcXG5tbS9zbHViLmM6NzY4MjojaWZkZWYgQ09ORklHX1NMVUJfREVCVUdcXG5tbS9zbHViLmMtNzY4My1cXHRhdG9taWNfbG9uZ19zZXQoXFx1MDAyNm4tXFx1MDAzZW5yX3NsYWJzLCAwKTtcXG4tLVxcbm1tL3NsdWIuYy03Njg4LVxcbm1tL3NsdWIuYzo3Njg5OiNpZmRlZiBDT05GSUdfU0xVQl9TVEFUU1xcbm1tL3NsdWIuYy03NjkwLXN0YXRpYyBpbmxpbmUgaW50IGFsbG9jX2ttZW1fY2FjaGVfc3RhdHMoc3RydWN0IGttZW1fY2FjaGUgKnMpXFxuLS1cXG5tbS9zbHViLmM9Nzc1OD1zdGF0aWMgdm9pZCBlYXJseV9rbWVtX2NhY2hlX25vZGVfYWxsb2MoaW50IG5vZGUpXFxuLS1cXG5tbS9zbHViLmMtNzc4MS1cXG5tbS9zbHViLmM6Nzc4MjojaWZkZWYgQ09ORklHX1NMVUJfREVCVUdcXG5tbS9zbHViLmMtNzc4My1cXHRpbml0X29iamVjdChrbWVtX2NhY2hlX25vZGUsIG4sIFNMVUJfUkVEX0FDVElWRSk7XFxuLS1cXG5tbS9zbHViLmM9NzgyMD12b2lkIF9fa21lbV9jYWNoZV9yZWxlYXNlKHN0cnVjdCBrbWVtX2NhY2hlICpzKVxcbi0tXFxubW0vc2x1Yi5jLTc4MjMtXFx0cGNzX2Rlc3Ryb3kocyk7XFxubW0vc2x1Yi5jOjc4MjQ6I2lmZGVmIENPTkZJR19TTFVCX1NUQVRTXFxubW0vc2x1Yi5jLTc4MjUtXFx0ZnJlZV9wZXJjcHUocy1cXHUwMDNlY3B1X3N0YXRzKTtcXG4tLVxcbm1tL3NsdWIuYz03OTIwPXN0YXRpYyBpbnQgY2FsY3VsYXRlX3NpemVzKHN0cnVjdCBrbWVtX2NhY2hlX2FyZ3MgKmFyZ3MsIHN0cnVjdCBrbWVtX2NhY2hlICpzKVxcbi0tXFxubW0vc2x1Yi5jLTc5MzMtXFxubW0vc2x1Yi5jOjc5MzQ6I2lmZGVmIENPTkZJR19TTFVCX0RFQlVHXFxubW0vc2x1Yi5jLTc5MzUtXFx0LypcXG4tLVxcbm1tL3NsdWIuYy03OTk2LVxcbm1tL3NsdWIuYzo3OTk3OiNpZmRlZiBDT05GSUdfU0xVQl9ERUJVR1xcbm1tL3NsdWIuYy03OTk4LVxcdGlmIChmbGFncyBcXHUwMDI2IFNMQUJfU1RPUkVfVVNFUikge1xcbi0tXFxubW0vc2x1Yi5jLTgwMTEtXFx0a2FzYW5fY2FjaGVfY3JlYXRlKHMsIFxcdTAwMjZzaXplLCBcXHUwMDI2cy1cXHUwMDNlZmxhZ3MpO1xcbm1tL3NsdWIuYzo4MDEyOiNpZmRlZiBDT05GSUdfU0xVQl9ERUJVR1xcbm1tL3NsdWIuYy04MDEzLVxcdGlmIChmbGFncyBcXHUwMDI2IFNMQUJfUkVEX1pPTkUpIHtcXG4tLVxcbm1tL3NsdWIuYy04MDM0LVxcdGFsaWduZWRfc2l6ZSA9IEFMSUdOKHNpemUsIHMtXFx1MDAzZWFsaWduKTtcXG5tbS9zbHViLmM6ODAzNTojaWYgZGVmaW5lZChDT05GSUdfU0xBQl9PQkpfRVhUKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKENPTkZJR182NEJJVClcXG5tbS9zbHViLmMtODAzNi1cXHRpZiAoc2xhYl9hcmdzX3VubWVyZ2VhYmxlKGFyZ3MsIHMtXFx1MDAzZWZsYWdzKSBcXHUwMDI2XFx1MDAyNlxcbi0tXFxubW0vc2x1Yi5jPTgwNzY9c3RhdGljIHZvaWQgbGlzdF9zbGFiX29iamVjdHMoc3RydWN0IGttZW1fY2FjaGUgKnMsIHN0cnVjdCBzbGFiICpzbGFiKVxcbm1tL3NsdWIuYy04MDc3LXtcXG5tbS9zbHViLmM6ODA3ODojaWZkZWYgQ09ORklHX1NMVUJfREVCVUdcXG5tbS9zbHViLmMtODA3OS1cXHR2b2lkICphZGRyID0gc2xhYl9hZGRyZXNzKHNsYWIpO1xcbi0tXFxubW0vc2x1Yi5jPTgxNDM9aW50IF9fa21lbV9jYWNoZV9zaHV0ZG93bihzdHJ1Y3Qga21lbV9jYWNoZSAqcylcXG4tLVxcbm1tL3NsdWIuYy04MTY5LVxcbm1tL3NsdWIuYzo4MTcwOiNpZmRlZiBDT05GSUdfUFJJTlRLXFxubW0vc2x1Yi5jLTgxNzEtdm9pZCBfX2ttZW1fb2JqX2luZm8oc3RydWN0IGttZW1fb2JqX2luZm8gKmtwcCwgdm9pZCAqb2JqZWN0LCBzdHJ1Y3Qgc2xhYiAqc2xhYilcXG4tLVxcbm1tL3NsdWIuYy04MTg1LVxcdG9ianAwID0ga2FzYW5fcmVzZXRfdGFnKG9iamVjdCk7XFxubW0vc2x1Yi5jOjgxODY6I2lmZGVmIENPTkZJR19TTFVCX0RFQlVHXFxubW0vc2x1Yi5jLTgxODctXFx0b2JqcCA9IHJlc3RvcmVfcmVkX2xlZnQocywgb2JqcDApO1xcbi0tXFxubW0vc2x1Yi5jLTgxOTgtXFx0XFx0cmV0dXJuO1xcbm1tL3NsdWIuYzo4MTk5OiNpZmRlZiBDT05GSUdfU0xVQl9ERUJVR1xcbm1tL3NsdWIuYy04MjAwLVxcdG9ianAgPSBmaXh1cF9yZWRfbGVmdChzLCBvYmpwKTtcXG4tLVxcbm1tL3NsdWIuYy04MjAyLVxcdGtwcC1cXHUwMDNla3BfcmV0ID0gKHZvaWQgKil0cmFja3AtXFx1MDAzZWFkZHI7XFxubW0vc2x1Yi5jOjgyMDM6I2lmZGVmIENPTkZJR19TVEFDS0RFUE9UXFxubW0vc2x1Yi5jLTgyMDQtXFx0e1xcbi0tXFxubW0vc2x1Yi5jPTgyNzY9Y29yZV9wYXJhbShzbHViX21pbl9vYmplY3RzLCBzbHViX21pbl9vYmplY3RzLCB1aW50LCAwKTtcXG5tbS9zbHViLmMtODI3Ny1cXG5tbS9zbHViLmM6ODI3ODojaWZkZWYgQ09ORklHX05VTUFcXG5tbS9zbHViLmMtODI3OS1zdGF0aWMgaW50IF9faW5pdCBzZXR1cF9zbGFiX3N0cmljdF9udW1hKGNvbnN0IGNoYXIgKnN0ciwgY29uc3Qgc3RydWN0IGtlcm5lbF9wYXJhbSAqa3ApXFxuLS1cXG5tbS9zbHViLmM9ODI5NT1fX2NvcmVfcGFyYW1fY2Ioc2xhYl9zdHJpY3RfbnVtYSwgXFx1MDAyNnBhcmFtX29wc19zbGFiX3N0cmljdF9udW1hLCBOVUxMLCAwKTtcXG4tLVxcbm1tL3NsdWIuYy04Mjk4LVxcbm1tL3NsdWIuYzo4Mjk5OiNpZmRlZiBDT05GSUdfSEFSREVORURfVVNFUkNPUFlcXG5tbS9zbHViLmMtODMwMC0vKlxcbi0tXFxubW0vc2x1Yi5jPTg1NDQ9c3RhdGljIHN0cnVjdCBrbWVtX2NhY2hlICogX19pbml0IGJvb3RzdHJhcChzdHJ1Y3Qga21lbV9jYWNoZSAqc3RhdGljX2NhY2hlKVxcbi0tXFxubW0vc2x1Yi5jLTg1NTctXFxubW0vc2x1Yi5jOjg1NTg6I2lmZGVmIENPTkZJR19TTFVCX0RFQlVHXFxubW0vc2x1Yi5jLTg1NTktXFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeShwLCBcXHUwMDI2bi1cXHUwMDNlZnVsbCwgc2xhYl9saXN0KVxcbi0tXFxubW0vc2x1Yi5jPTg3MDU9dm9pZCBfX2luaXQga21lbV9jYWNoZV9pbml0X2xhdGUodm9pZClcXG4tLVxcbm1tL3NsdWIuYy04NzA5LVxcdFdBUk5fT04oIWZsdXNod3EpO1xcbm1tL3NsdWIuYzo4NzEwOiNpZmRlZiBDT05GSUdfU0xBQl9GUkVFTElTVF9SQU5ET01cXG5tbS9zbHViLmMtODcxMS1cXHRwcmFuZG9tX2luaXRfb25jZShcXHUwMDI2c2xhYl9ybmRfc3RhdGUpO1xcbi0tXFxubW0vc2x1Yi5jPTg3MTU9aW50IGRvX2ttZW1fY2FjaGVfY3JlYXRlKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBjb25zdCBjaGFyICpuYW1lLFxcbi0tXFxubW0vc2x1Yi5jLTg3MjQtXFx0cy1cXHUwMDNlZmxhZ3MgPSBrbWVtX2NhY2hlX2ZsYWdzKGZsYWdzLCBzLVxcdTAwM2VuYW1lKTtcXG5tbS9zbHViLmM6ODcyNTojaWZkZWYgQ09ORklHX1NMQUJfRlJFRUxJU1RfSEFSREVORURcXG5tbS9zbHViLmMtODcyNi1cXHRzLVxcdTAwM2VyYW5kb20gPSBnZXRfcmFuZG9tX2xvbmcoKTtcXG4tLVxcbm1tL3NsdWIuYy04NzI5LVxcdHMtXFx1MDAzZWN0b3IgPSBhcmdzLVxcdTAwM2VjdG9yO1xcbm1tL3NsdWIuYzo4NzMwOiNpZmRlZiBDT05GSUdfSEFSREVORURfVVNFUkNPUFlcXG5tbS9zbHViLmMtODczMS1cXHRzLVxcdTAwM2V1c2Vyb2Zmc2V0ID0gYXJncy1cXHUwMDNldXNlcm9mZnNldDtcXG4tLVxcbm1tL3NsdWIuYy04NzQ5LVxcbm1tL3NsdWIuYzo4NzUwOiNpZmRlZiBzeXN0ZW1faGFzX2ZyZWVsaXN0X2FiYVxcbm1tL3NsdWIuYy04NzUxLVxcdGlmIChzeXN0ZW1faGFzX2ZyZWVsaXN0X2FiYSgpIFxcdTAwMjZcXHUwMDI2ICEocy1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBTTEFCX05PX0NNUFhDSEcpKSB7XFxuLS1cXG5tbS9zbHViLmMtODc2OS1cXG5tbS9zbHViLmM6ODc3MDojaWZkZWYgQ09ORklHX05VTUFcXG5tbS9zbHViLmMtODc3MS1cXHRzLVxcdTAwM2VyZW1vdGVfbm9kZV9kZWZyYWdfcmF0aW8gPSAxMDAwO1xcbi0tXFxubW0vc2x1Yi5jLTg3ODItXFxubW0vc2x1Yi5jOjg3ODM6I2lmZGVmIENPTkZJR19TTFVCX1NUQVRTXFxubW0vc2x1Yi5jLTg3ODQtXFx0aWYgKCFhbGxvY19rbWVtX2NhY2hlX3N0YXRzKHMpKVxcbi0tXFxubW0vc2x1Yi5jLTg4MTMtXFxubW0vc2x1Yi5jOjg4MTQ6I2lmZGVmIFNMQUJfU1VQUE9SVFNfU1lTRlNcXG5tbS9zbHViLmMtODgxNS1zdGF0aWMgaW50IGNvdW50X2ludXNlKHN0cnVjdCBzbGFiICpzbGFiKVxcbi0tXFxubW0vc2x1Yi5jPTg4MjA9c3RhdGljIGludCBjb3VudF90b3RhbChzdHJ1Y3Qgc2xhYiAqc2xhYilcXG4tLVxcbm1tL3NsdWIuYy04ODI1LVxcbm1tL3NsdWIuYzo4ODI2OiNpZmRlZiBDT05GSUdfU0xVQl9ERUJVR1xcbm1tL3NsdWIuYy04ODI3LXN0YXRpYyB2b2lkIHZhbGlkYXRlX3NsYWIoc3RydWN0IGttZW1fY2FjaGUgKnMsIHN0cnVjdCBzbGFiICpzbGFiLFxcbi0tXFxubW0vc2x1Yi5jPTg5MDg9RVhQT1JUX1NZTUJPTCh2YWxpZGF0ZV9zbGFiX2NhY2hlKTtcXG5tbS9zbHViLmMtODkwOS1cXG5tbS9zbHViLmM6ODkxMDojaWZkZWYgQ09ORklHX0RFQlVHX0ZTXFxubW0vc2x1Yi5jLTg5MTEtLypcXG4tLVxcbm1tL3NsdWIuYz04OTY2PXN0YXRpYyBpbnQgYWRkX2xvY2F0aW9uKHN0cnVjdCBsb2NfdHJhY2sgKnQsIHN0cnVjdCBrbWVtX2NhY2hlICpzLFxcbi0tXFxubW0vc2x1Yi5jLTg5NzYtXFxubW0vc2x1Yi5jOjg5Nzc6I2lmZGVmIENPTkZJR19TVEFDS0RFUE9UXFxubW0vc2x1Yi5jLTg5NzgtXFx0aGFuZGxlID0gUkVBRF9PTkNFKHRyYWNrLVxcdTAwM2VoYW5kbGUpO1xcbi0tXFxubW0vc2x1Yi5jPTkwNTg9c3RhdGljIHZvaWQgcHJvY2Vzc19zbGFiKHN0cnVjdCBsb2NfdHJhY2sgKnQsIHN0cnVjdCBrbWVtX2NhY2hlICpzLFxcbi0tXFxubW0vc2x1Yi5jLTkwNzYtXFxubW0vc2x1Yi5jOjkwNzc6I2lmZGVmIFNMQUJfU1VQUE9SVFNfU1lTRlNcXG5tbS9zbHViLmMtOTA3OC1lbnVtIHNsYWJfc3RhdF90eXBlIHtcXG4tLVxcbm1tL3NsdWIuYz05MDkwPXN0YXRpYyBzc2l6ZV90IHNob3dfc2xhYl9vYmplY3RzKHN0cnVjdCBrbWVtX2NhY2hlICpzLFxcbi0tXFxubW0vc2x1Yi5jLTkxMTMtXFxubW0vc2x1Yi5jOjkxMTQ6I2lmZGVmIENPTkZJR19TTFVCX0RFQlVHXFxubW0vc2x1Yi5jLTkxMTUtXFx0aWYgKGZsYWdzIFxcdTAwMjYgU09fQUxMKSB7XFxuLS1cXG5tbS9zbHViLmMtOTE0Ny1cXHRsZW4gKz0gc3lzZnNfZW1pdF9hdChidWYsIGxlbiwgXFxcIiVsdVxcXCIsIHRvdGFsKTtcXG5tbS9zbHViLmM6OTE0ODojaWZkZWYgQ09ORklHX05VTUFcXG5tbS9zbHViLmMtOTE0OS1cXHRmb3IgKG5vZGUgPSAwOyBub2RlIFxcdTAwM2MgbnJfbm9kZV9pZHM7IG5vZGUrKykge1xcbi0tXFxubW0vc2x1Yi5jPTkzMDE9U0xBQl9BVFRSX1JPKGh3Y2FjaGVfYWxpZ24pO1xcbm1tL3NsdWIuYy05MzAyLVxcbm1tL3NsdWIuYzo5MzAzOiNpZmRlZiBDT05GSUdfWk9ORV9ETUFcXG5tbS9zbHViLmMtOTMwNC1zdGF0aWMgc3NpemVfdCBjYWNoZV9kbWFfc2hvdyhzdHJ1Y3Qga21lbV9jYWNoZSAqcywgY2hhciAqYnVmKVxcbi0tXFxubW0vc2x1Yi5jPTkzMDg9U0xBQl9BVFRSX1JPKGNhY2hlX2RtYSk7XFxuLS1cXG5tbS9zbHViLmMtOTMxMC1cXG5tbS9zbHViLmM6OTMxMTojaWZkZWYgQ09ORklHX0hBUkRFTkVEX1VTRVJDT1BZXFxubW0vc2x1Yi5jLTkzMTItc3RhdGljIHNzaXplX3QgdXNlcnNpemVfc2hvdyhzdHJ1Y3Qga21lbV9jYWNoZSAqcywgY2hhciAqYnVmKVxcbi0tXFxubW0vc2x1Yi5jPTkzMjM9U0xBQl9BVFRSX1JPKGRlc3Ryb3lfYnlfcmN1KTtcXG5tbS9zbHViLmMtOTMyNC1cXG5tbS9zbHViLmM6OTMyNTojaWZkZWYgQ09ORklHX1NMVUJfREVCVUdcXG5tbS9zbHViLmMtOTMyNi1zdGF0aWMgc3NpemVfdCBzbGFic19zaG93KHN0cnVjdCBrbWVtX2NhY2hlICpzLCBjaGFyICpidWYpXFxuLS1cXG5tbS9zbHViLmM9OTM5ND1TTEFCX0FUVFIodmFsaWRhdGUpO1xcbi0tXFxubW0vc2x1Yi5jLTkzOTctXFxubW0vc2x1Yi5jOjkzOTg6I2lmZGVmIENPTkZJR19GQUlMU0xBQlxcbm1tL3NsdWIuYy05Mzk5LXN0YXRpYyBzc2l6ZV90IGZhaWxzbGFiX3Nob3coc3RydWN0IGttZW1fY2FjaGUgKnMsIGNoYXIgKmJ1ZilcXG4tLVxcbm1tL3NsdWIuYz05NDM0PVNMQUJfQVRUUihzaHJpbmspO1xcbm1tL3NsdWIuYy05NDM1LVxcbm1tL3NsdWIuYzo5NDM2OiNpZmRlZiBDT05GSUdfTlVNQVxcbm1tL3NsdWIuYy05NDM3LXN0YXRpYyBzc2l6ZV90IHJlbW90ZV9ub2RlX2RlZnJhZ19yYXRpb19zaG93KHN0cnVjdCBrbWVtX2NhY2hlICpzLCBjaGFyICpidWYpXFxuLS1cXG5tbS9zbHViLmM9OTQ1OD1TTEFCX0FUVFIocmVtb3RlX25vZGVfZGVmcmFnX3JhdGlvKTtcXG4tLVxcbm1tL3NsdWIuYy05NDYwLVxcbm1tL3NsdWIuYzo5NDYxOiNpZmRlZiBDT05GSUdfU0xVQl9TVEFUU1xcbm1tL3NsdWIuYy05NDYyLXN0YXRpYyBpbnQgc2hvd19zdGF0KHN0cnVjdCBrbWVtX2NhY2hlICpzLCBjaGFyICpidWYsIGVudW0gc3RhdF9pdGVtIHNpKVxcbi0tXFxubW0vc2x1Yi5jLTk0ODAtXFxubW0vc2x1Yi5jOjk0ODE6I2lmZGVmIENPTkZJR19TTVBcXG5tbS9zbHViLmMtOTQ4Mi1cXHRmb3JfZWFjaF9vbmxpbmVfY3B1KGNwdSkge1xcbi0tXFxubW0vc2x1Yi5jPTk1NDI9U1RBVF9BVFRSKFNIRUFGX1JFVFVSTl9TTE9XLCBzaGVhZl9yZXR1cm5fc2xvdyk7XFxuLS1cXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDI6NTI6NTEuNzA1MzU0NzM4WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU4NjEyMjgwODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBBbmFseXNpczogYF9fX2ttYWxsb2NfbGFyZ2Vfbm9kZWAgTW9kaWZpY2F0aW9uKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgYENPTkZJR19TTFVCYCBpcyBlbmFibGVkIGJ5IGRlZmF1bHQsIHNvIHdlJ3JlIGdvb2QgdGhlcmUuIFRoZSBjb3JlIHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBjaGFuZ2Ugd2FycmFudHMgZnV6emluZy4gV2UncmUgbG9va2luZyBhdCBpbnB1dCB2YWxpZGF0aW9uIGFkZGVkIHRvIGBfX19rbWFsbG9jX2xhcmdlX25vZGVgLiBMZXQncyByZS1yZWFkIHRoZSBmdXp6aW5nIGd1aWRlbGluZXMuIFdlIGhhdmUgdG8gY29uc2lkZXIgd2hldGhlciB0aGlzIGNoYW5nZSBpcyB3b3J0aCBmdXp6aW5nLlxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaWRlbnRpZnkgdGhlIG5vbi1zdGF0aWMgZW50cnlwb2ludCBmdW5jdGlvbnMgdG8gYmUgZnV6emVkIGFzIEZvY3VzU3ltYm9scy4gT2theSwgc28gd2UgaGF2ZSBgX19rbWFsbG9jX2xhcmdlX25vcHJvZmAgYW5kIGBfX2ttYWxsb2NfbGFyZ2Vfbm9kZV9ub3Byb2ZgLiBBcmUgdGhlc2UgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnM/IE5vLCBiZWNhdXNlIGBfX2ttYWxsb2NfbGFyZ2Vfbm9wcm9mYCBoYW5kbGVzIGFsbG9jYXRpb25zICpsYXJnZXIqIHRoYW4gdGhlIHNsYWIgY2FjaGVzLiBUaGVyZWZvcmUsIHRob3NlIGFyZSBwZXJmZWN0LiBHb29kLlxuXG5Ob3csIGNvbnNpZGVyaW5nIHRoZSBgV29ydGhGdXp6aW5nYCBjcml0ZXJpYS4uLiBUaGlzIGlzbid0IGp1c3QgZG9jdW1lbnRhdGlvbiBvciBkZWNvcmF0aXZlLCBpdCBmdW5jdGlvbmFsbHkgYWx0ZXJzIGV4ZWN1dGlvbiBmbG93LCBieSB2YWxpZGF0aW5nIGlucHV0LiBJdCdzIGEgcmVhY2hhYmxlIHBhcnQgb2YgdGhlIFNMVUIgYWxsb2NhdG9yLiBUaGVyZWZvcmUsIHRoZSBjaGFuZ2UgZG9lcyBtZXJpdCBmdXp6aW5nLlxuXG5BbHJpZ2h0LCBzbyBgV29ydGhGdXp6aW5nYCBpcyBkZWZpbml0ZWx5IGB0cnVlYC4gTm93LCBsZXQncyBsaXN0IG91ciBgRm9jdXNTeW1ib2xzYCBhZ2FpbjogYF9fa21hbGxvY19sYXJnZV9ub3Byb2ZgIGFuZCBgX19rbWFsbG9jX2xhcmdlX25vZGVfbm9wcm9mYC5cblxuRmluYWxseSwgZm9yIGBFbmFibGVDb25maWdzYCwgd2UgaGF2ZSBgU0xVQmAsIHdoaWNoIGlzIGFscmVhZHkgZW5hYmxlZC4gTG9va2luZyBhdCBgbW0vS2NvbmZpZ2AsIGl0J3MgY29uZmlybWVkLiBOb3RoaW5nIGVsc2Ugc3BlY2lmaWMgaXMgcmVxdWlyZWQsIGJ1dCB3ZSBjYW4gZGVmaW5pdGVseSBpbmNsdWRlIGBTTFVCYCBpbiB0aGUgYEVuYWJsZUNvbmZpZ3NgLlxuXG5CZWZvcmUgY2FsbGluZyBgc2V0LXJlc3VsdHNgLCBsZXQncyB2ZXJpZnkgYWdhaW46IGBXb3J0aEZ1enppbmc9dHJ1ZWAsIGBGb2N1c1N5bWJvbHNgIGlzIGBfX2ttYWxsb2NfbGFyZ2Vfbm9wcm9mYCBhbmQgYF9fa21hbGxvY19sYXJnZV9ub2RlX25vcHJvZmAsIGFuZCBgRW5hYmxlQ29uZmlnc2AgY2FuIGluY2x1ZGUgYFNMVUJgIChhbHRob3VnaCBpdCdzIGFscmVhZHkgZW5hYmxlZCBieSBkZWZhdWx0KS4gRG9uZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgxMDIsIk91dHB1dFRva2VucyI6MTI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDAyOjUyOjU3LjU2NjU4NDg4MloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc2NTc2NTI0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTTFVCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19rbWFsbG9jX2xhcmdlX25vcHJvZlwiLFxuICAgIFwiX19rbWFsbG9jX2xhcmdlX25vZGVfbm9wcm9mXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBtZW1vcnkgYWxsb2NhdGlvbiBsb2dpYyBpbiB0aGUgU0xVQiBhbGxvY2F0b3IgKG1tL3NsdWIuYyksIGFkZGluZyBhIHNpemUgYm91bmRhcnkgY2hlY2sgYWdhaW5zdCBLTUFMTE9DX01BWF9TSVpFIGluIF9fX2ttYWxsb2NfbGFyZ2Vfbm9kZSgpIHRvIHByZXZlbnQgb3ZlcnNpemVkIG9yZGVyIGNhbGN1bGF0aW9ucyBhbmQgZ3JhY2VmdWxseSBmYWlsIHdpdGggYSB3YXJuaW5nLiBUaGlzIG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyBhbmQgYWZmZWN0cyBsYXJnZSBrbWFsbG9jIGFsbG9jYXRpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNMVUJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2ttYWxsb2NfbGFyZ2Vfbm9wcm9mXCIsXG4gICAgXCJfX2ttYWxsb2NfbGFyZ2Vfbm9kZV9ub3Byb2ZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBjb3JlIG1lbW9yeSBhbGxvY2F0aW9uIGxvZ2ljIGluIHRoZSBTTFVCIGFsbG9jYXRvciAobW0vc2x1Yi5jKSwgYWRkaW5nIGEgc2l6ZSBib3VuZGFyeSBjaGVjayBhZ2FpbnN0IEtNQUxMT0NfTUFYX1NJWkUgaW4gX19fa21hbGxvY19sYXJnZV9ub2RlKCkgdG8gcHJldmVudCBvdmVyc2l6ZWQgb3JkZXIgY2FsY3VsYXRpb25zIGFuZCBncmFjZWZ1bGx5IGZhaWwgd2l0aCBhIHdhcm5pbmcuIFRoaXMgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIGFuZCBhZmZlY3RzIGxhcmdlIGttYWxsb2MgYWxsb2NhdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDAyOjUyOjU3LjY0MzE2ODA0N1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUxODg3MTkzNDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwMjo1Mjo1Ny42NDM2MjM1ODdaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoxNTE4ODI2MDM3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHNhbml0eSBjaGVjayAoYFdBUk5fT05fT05DRV9HRlAoc2l6ZSBcXHUwMDNlIEtNQUxMT0NfTUFYX1NJWkUsIGZsYWdzKWApIGluIGBfX19rbWFsbG9jX2xhcmdlX25vZGUoKWAgdG8gcmVqZWN0IGFsbG9jYXRpb25zIGV4Y2VlZGluZyBgS01BTExPQ19NQVhfU0laRWAgYnkgcmV0dXJuaW5nIGBOVUxMYC5cXG5cXG5UaGlzIG1vZGlmaWNhdGlvbiBvbmx5IGFkZHMgZGVmZW5zaXZlIHBhcmFtZXRlciB2YWxpZGF0aW9uIHRvIHRoZSBTTFVCIGxhcmdlIGFsbG9jYXRpb24gcGF0aC4gSXQgZG9lcyBub3QgaW50cm9kdWNlLCBleHBvc2UsIG9yIG1hbmlwdWxhdGUgdW5pbml0aWFsaXplZCBtZW1vcnksIGRvZXMgbm90IGFsdGVyIGJ1ZmZlciBpbml0aWFsaXphdGlvbiBvciBzdHJ1Y3QgcGFkZGluZywgYW5kIGRvZXMgbm90IHRvdWNoIGRhdGEgcGFzc2VkIHRvIHVzZXIgc3BhY2UuIEFueSBidWdzIHJlbGF0ZWQgdG8gZmFpbGVkIGFsbG9jYXRpb25zIChzdWNoIGFzIG1pc3NpbmcgTlVMTC1jaGVja3MgaW4gY2FsbGVycykgYXJlIHN0YW5kYXJkIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmUgaGFuZGxpbmcgY2F1Z2h0IGJ5IHN0YW5kYXJkIHRlc3RpbmcvS0FTQU4uIFRoZXJlZm9yZSwgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDcyOGQ5MmY5MDFmN2E1MjdjY2IwMTQzNTQ1YjRiMjllZjQzOWE3ZWFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzMSAwMjo1MjoxNCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL3NsdWIuYyBiL21tL3NsdWIuY1xuaW5kZXggZjliNTZjYjQzOWU3MC4uMjNlNTdhOGZlNTViNCAxMDA2NDRcbi0tLSBhL21tL3NsdWIuY1xuKysrIGIvbW0vc2x1Yi5jXG5AQCAtNTM0Miw3ICs1MzQyLDEyIEBAIHN0YXRpYyB2b2lkICpfX19rbWFsbG9jX2xhcmdlX25vZGUoc2l6ZV90IHNpemUsIGdmcF90IGZsYWdzLCBpbnQgbm9kZSlcbiB7XG4gXHRzdHJ1Y3QgcGFnZSAqcGFnZTtcbiBcdHZvaWQgKnB0ciA9IE5VTEw7XG4tXHR1bnNpZ25lZCBpbnQgb3JkZXIgPSBnZXRfb3JkZXIoc2l6ZSk7XG4rXHR1bnNpZ25lZCBpbnQgb3JkZXI7XG4rXG4rXHRpZiAoV0FSTl9PTl9PTkNFX0dGUChzaXplIFx1MDAzZSBLTUFMTE9DX01BWF9TSVpFLCBmbGFncykpXG4rXHRcdHJldHVybiBOVUxMO1xuK1xuK1x0b3JkZXIgPSBnZXRfb3JkZXIoc2l6ZSk7XG4gXG4gXHRpZiAodW5saWtlbHkoZmxhZ3MgXHUwMDI2IEdGUF9TTEFCX0JVR19NQVNLKSlcbiBcdFx0ZmxhZ3MgPSBrbWFsbG9jX2ZpeF9mbGFncyhmbGFncyk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwMjo1Mjo1Ny42NDM2MjQzODdaIiwiU2VxIjoyMywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjAwNTM1MzgwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBNZW1vcnkgQWxsb2NhdGlvbiBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQncyBzcGVjaWZpY2FsbHkgdG91Y2hpbmcgYG1tL3NsdWIuY2AsIGFuZCBtb3JlIHByZWNpc2VseSwgdGhlIGBfX19rbWFsbG9jX2xhcmdlX25vZGVgIGZ1bmN0aW9uLiBUaGlzIGlzIHNpZ25pZmljYW50IGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBoYW5kbGVzIGxhcmdlIGtlcm5lbCBtZW1vcnkgYWxsb2NhdGlvbnMgd2l0aGluIHRoZSBTTFVCIGFsbG9jYXRvci4gTXkgaW5pdGlhbCBvYnNlcnZhdGlvbiBpcyB0aGF0IHRoZXkndmUgaW50cm9kdWNlZCBhIGNoZWNrIHJlbGF0ZWQgdG8gYEtNQUxMT0NfTUFYX1NJWkVgIGJlZm9yZSBjYWxjdWxhdGluZyB0aGUgYWxsb2NhdGlvbiBvcmRlci5cblxuVGhlIG9yaWdpbmFsIGNvZGUgZGlyZWN0bHkgY2FsY3VsYXRlZCB0aGUgYG9yZGVyYCB1c2luZyBgZ2V0X29yZGVyKHNpemUpYC4gTm93LCB0aGVyZSdzIGEgY29uZGl0aW9uYWwgY2hlY2s6IGBpZiAoV0FSTl9PTl9PTkNFX0dGUChzaXplIFx1MDAzZSBLTUFMTE9DX01BWF9TSVpFLCBmbGFncykpIHJldHVybiBOVUxMO2AgYmVmb3JlIGRldGVybWluaW5nIHRoZSBvcmRlci4gVGhpcyBpcyBhIGNydWNpYWwgYWRkaXRpb24uIEl0IGFwcGVhcnMgdGhlIGludGVudCBpcyB0byBwcmV2ZW50IGFsbG9jYXRpbmcgbWVtb3J5IHNpemVzIGV4Y2VlZGluZyBhIGRlZmluZWQgbWF4aW11bSwgYEtNQUxMT0NfTUFYX1NJWkVgLCB3aGljaCBwcm9iYWJseSBoYXMgaW1wbGljYXRpb25zIGZvciBTTFVCJ3MgaW50ZXJuYWwgc3RydWN0dXJlcyBvciBmcmFnbWVudGF0aW9uIGlzc3VlcyB3aXRoIGV4dHJlbWVseSBsYXJnZSBhbGxvY2F0aW9ucy4gQSB3YXJuaW5nIGlzIHRyaWdnZXJlZCBpZiB0aGlzIGNvbmRpdGlvbiBvY2N1cnMsIHByb2JhYmx5IHRvIGFsZXJ0IGRldmVsb3BlcnMgYWJvdXQgaW5jb3JyZWN0IHVzYWdlLlxuXG5JJ2xsIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBkZWZpbml0aW9uIG9mIGBLTUFMTE9DX01BWF9TSVpFYCB0byB1bmRlcnN0YW5kIHRoZSByYXRpb25hbGUgYmVoaW5kIHRoaXMgbGltaXQgYW5kIHdoYXQgdGhlIGltcGxpY2F0aW9ucyBhcmUgZm9yIGFsbG9jYXRpb24gYmVoYXZpb3IuIEFsc28sIHRoZSBga21hbGxvY19maXhfZmxhZ3NgIGNhbGwgaXMgc3RpbGwgcHJlc2VudCwgc28gSSBzaG91bGQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgZmxhZyBpbnRlcmFjdGlvbnMgZHVlIHRvIHRoaXMgY2hlY2suIEkgYWxzbyBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5IHRoaXMgd2FzIGFkZGVkLCBhcmUgd2UgdHJ5aW5nIHRvIHByZXZlbnQgcG90ZW50aWFsIGRlbmlhbC1vZi1zZXJ2aWNlLCBvdXQgb2YgbWVtb3J5IGNvbmRpdGlvbnMsIG9yIG1heWJlIGVuZm9yY2Ugc29tZSBhcmNoaXRlY3R1cmFsIGNvbnN0cmFpbnRzPyBJIHNob3VsZCByZXZpZXcgdGhlIGNvbW1pdCBtZXNzYWdlIGFuZCBzdXJyb3VuZGluZyBjb2RlIHRvIGdldCBhIGNvbXBsZXRlIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMDUsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwMjo1MzowMy42NDg5ODE1MDFaIiwiU2VxIjoyNCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4MzgxMDg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9fX2ttYWxsb2NfbGFyZ2Vfbm9kZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vc2x1Yi5jPTUzMzI9dW5zaWduZWQgaW50IGttZW1fY2FjaGVfc2hlYWZfc2l6ZShzdHJ1Y3Qgc2xhYl9zaGVhZiAqc2hlYWYpXFxuLS1cXG5tbS9zbHViLmMtNTM0MC0gKi9cXG5tbS9zbHViLmM6NTM0MTpzdGF0aWMgdm9pZCAqX19fa21hbGxvY19sYXJnZV9ub2RlKHNpemVfdCBzaXplLCBnZnBfdCBmbGFncywgaW50IG5vZGUpXFxubW0vc2x1Yi5jLTUzNDIte1xcbi0tXFxubW0vc2x1Yi5jPTUzNzg9dm9pZCAqX19rbWFsbG9jX2xhcmdlX25vcHJvZihzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3MpXFxubW0vc2x1Yi5jLTUzNzkte1xcbm1tL3NsdWIuYzo1MzgwOlxcdHZvaWQgKnJldCA9IF9fX2ttYWxsb2NfbGFyZ2Vfbm9kZShzaXplLCBmbGFncywgTlVNQV9OT19OT0RFKTtcXG5tbS9zbHViLmMtNTM4MS1cXG4tLVxcbm1tL3NsdWIuYz01Mzg4PXZvaWQgKl9fa21hbGxvY19sYXJnZV9ub2RlX25vcHJvZihzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3MsIGludCBub2RlKVxcbm1tL3NsdWIuYy01Mzg5LXtcXG5tbS9zbHViLmM6NTM5MDpcXHR2b2lkICpyZXQgPSBfX19rbWFsbG9jX2xhcmdlX25vZGUoc2l6ZSwgZmxhZ3MsIG5vZGUpO1xcbm1tL3NsdWIuYy01MzkxLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwMjo1MzowMy42OTczNjYxMDdaIiwiU2VxIjoyNSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDk2MzkzNjg2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEaXZpbmcgaW50byBgbW0vc2x1Yi5jYCoqXG5cbk9rYXksIEkgbmVlZCB0byBnZXQgaW50byB0aGUgbml0dHktZ3JpdHR5IG9mIHRoZSBTTFVCIGFsbG9jYXRvci4gTGV0J3Mgc3RhcnQgYnkgbG9va2luZyBhdCBgbW0vc2x1Yi5jYCDigJMgdGhhdCdzIHdoZXJlIHRoZSBjb3JlIGltcGxlbWVudGF0aW9uIHJlc2lkZXMuIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBhcm91bmQgbGluZSA1MzQwLiBUaGF0IGxvY2F0aW9uIGlzIHVzdWFsbHkgaW4gdGhlIHZpY2luaXR5IG9mIGNyaXRpY2FsIFNMVUIgZnVuY3Rpb25zLCBsaWtlbHkgcmVsYXRlZCB0byBvYmplY3QgYWxsb2NhdGlvbiwgZnJlZWluZywgb3Igc2xhYiBtYW5hZ2VtZW50LiBJIGFudGljaXBhdGUgZmluZGluZyBjb2RlIGRlYWxpbmcgd2l0aCBjYWNoZSBzdHJ1Y3R1cmUgdHJhdmVyc2FsIG9yIG9iamVjdCBpbml0aWFsaXphdGlvbiBwcm9jZWR1cmVzIGluIHRoYXQgcmVnaW9uLiBJIG5lZWQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBmdW5kYW1lbnRhbCBhbGxvY2F0aW9uIGZsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5NzcsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwMjo1MzowOC42NjEzMDY3NzZaIiwiU2VxIjoyNiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA5MjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm1tL3NsdWIuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA1MzM1LFxuICBcIkxpbmVDb3VudFwiOiA2MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCI1MzM1OlxcdH1cXG41MzM2OlxcdC8qXFxuNTMzNzpcXHQgKiBUbyBhdm9pZCB1bm5lY2Vzc2FyeSBvdmVyaGVhZCwgd2UgcGFzcyB0aHJvdWdoIGxhcmdlIGFsbG9jYXRpb24gcmVxdWVzdHNcXG41MzM4OlxcdCAqIGRpcmVjdGx5IHRvIHRoZSBwYWdlIGFsbG9jYXRvci4gV2UgdXNlIF9fR0ZQX0NPTVAsIGJlY2F1c2Ugd2Ugd2lsbCBuZWVkIHRvXFxuNTMzOTpcXHQgKiBrbm93IHRoZSBhbGxvY2F0aW9uIG9yZGVyIHRvIGZyZWUgdGhlIHBhZ2VzIHByb3Blcmx5IGluIGtmcmVlLlxcbjUzNDA6XFx0ICovXFxuNTM0MTpcXHRzdGF0aWMgdm9pZCAqX19fa21hbGxvY19sYXJnZV9ub2RlKHNpemVfdCBzaXplLCBnZnBfdCBmbGFncywgaW50IG5vZGUpXFxuNTM0MjpcXHR7XFxuNTM0MzpcXHRcXHRzdHJ1Y3QgcGFnZSAqcGFnZTtcXG41MzQ0OlxcdFxcdHZvaWQgKnB0ciA9IE5VTEw7XFxuNTM0NTpcXHRcXHR1bnNpZ25lZCBpbnQgb3JkZXI7XFxuNTM0NjpcXHRcXG41MzQ3OlxcdFxcdGlmIChXQVJOX09OX09OQ0VfR0ZQKHNpemUgXFx1MDAzZSBLTUFMTE9DX01BWF9TSVpFLCBmbGFncykpXFxuNTM0ODpcXHRcXHRcXHRyZXR1cm4gTlVMTDtcXG41MzQ5OlxcdFxcbjUzNTA6XFx0XFx0b3JkZXIgPSBnZXRfb3JkZXIoc2l6ZSk7XFxuNTM1MTpcXHRcXG41MzUyOlxcdFxcdGlmICh1bmxpa2VseShmbGFncyBcXHUwMDI2IEdGUF9TTEFCX0JVR19NQVNLKSlcXG41MzUzOlxcdFxcdFxcdGZsYWdzID0ga21hbGxvY19maXhfZmxhZ3MoZmxhZ3MpO1xcbjUzNTQ6XFx0XFxuNTM1NTpcXHRcXHRmbGFncyB8PSBfX0dGUF9DT01QO1xcbjUzNTY6XFx0XFxuNTM1NzpcXHRcXHRpZiAobm9kZSA9PSBOVU1BX05PX05PREUpXFxuNTM1ODpcXHRcXHRcXHRwYWdlID0gYWxsb2NfZnJvemVuX3BhZ2VzX25vcHJvZihmbGFncywgb3JkZXIpO1xcbjUzNTk6XFx0XFx0ZWxzZVxcbjUzNjA6XFx0XFx0XFx0cGFnZSA9IF9fYWxsb2NfZnJvemVuX3BhZ2VzX25vcHJvZihmbGFncywgb3JkZXIsIG5vZGUsIE5VTEwsXFxuNTM2MTpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICBBTExPQ19ERUZBVUxUKTtcXG41MzYyOlxcdFxcbjUzNjM6XFx0XFx0aWYgKHBhZ2UpIHtcXG41MzY0OlxcdFxcdFxcdHB0ciA9IHBhZ2VfYWRkcmVzcyhwYWdlKTtcXG41MzY1OlxcdFxcdFxcdG1vZF9scnV2ZWNfcGFnZV9zdGF0ZShwYWdlLCBOUl9TTEFCX1VOUkVDTEFJTUFCTEVfQixcXG41MzY2OlxcdFxcdFxcdFxcdFxcdCAgICAgIFBBR0VfU0laRSBcXHUwMDNjXFx1MDAzYyBvcmRlcik7XFxuNTM2NzpcXHRcXHRcXHRfX1NldFBhZ2VMYXJnZUttYWxsb2MocGFnZSk7XFxuNTM2ODpcXHRcXHR9XFxuNTM2OTpcXHRcXG41MzcwOlxcdFxcdHB0ciA9IGthc2FuX2ttYWxsb2NfbGFyZ2UocHRyLCBzaXplLCBmbGFncyk7XFxuNTM3MTpcXHRcXHQvKiBBcyBwdHIgbWlnaHQgZ2V0IHRhZ2dlZCwgY2FsbCBrbWVtbGVhayBob29rIGFmdGVyIEtBU0FOLiAqL1xcbjUzNzI6XFx0XFx0a21lbWxlYWtfYWxsb2MocHRyLCBzaXplLCAxLCBmbGFncyk7XFxuNTM3MzpcXHRcXHRrbXNhbl9rbWFsbG9jX2xhcmdlKHB0ciwgc2l6ZSwgZmxhZ3MpO1xcbjUzNzQ6XFx0XFxuNTM3NTpcXHRcXHRyZXR1cm4gcHRyO1xcbjUzNzY6XFx0fVxcbjUzNzc6XFx0XFxuNTM3ODpcXHR2b2lkICpfX2ttYWxsb2NfbGFyZ2Vfbm9wcm9mKHNpemVfdCBzaXplLCBnZnBfdCBmbGFncylcXG41Mzc5OlxcdHtcXG41MzgwOlxcdFxcdHZvaWQgKnJldCA9IF9fX2ttYWxsb2NfbGFyZ2Vfbm9kZShzaXplLCBmbGFncywgTlVNQV9OT19OT0RFKTtcXG41MzgxOlxcdFxcbjUzODI6XFx0XFx0dHJhY2Vfa21hbGxvYyhfUkVUX0lQXywgcmV0LCBzaXplLCBQQUdFX1NJWkUgXFx1MDAzY1xcdTAwM2MgZ2V0X29yZGVyKHNpemUpLFxcbjUzODM6XFx0XFx0XFx0ICAgICAgZmxhZ3MsIE5VTUFfTk9fTk9ERSk7XFxuNTM4NDpcXHRcXHRyZXR1cm4gcmV0O1xcbjUzODU6XFx0fVxcbjUzODY6XFx0RVhQT1JUX1NZTUJPTChfX2ttYWxsb2NfbGFyZ2Vfbm9wcm9mKTtcXG41Mzg3OlxcdFxcbjUzODg6XFx0dm9pZCAqX19rbWFsbG9jX2xhcmdlX25vZGVfbm9wcm9mKHNpemVfdCBzaXplLCBnZnBfdCBmbGFncywgaW50IG5vZGUpXFxuNTM4OTpcXHR7XFxuNTM5MDpcXHRcXHR2b2lkICpyZXQgPSBfX19rbWFsbG9jX2xhcmdlX25vZGUoc2l6ZSwgZmxhZ3MsIG5vZGUpO1xcbjUzOTE6XFx0XFxuNTM5MjpcXHRcXHR0cmFjZV9rbWFsbG9jKF9SRVRfSVBfLCByZXQsIHNpemUsIFBBR0VfU0laRSBcXHUwMDNjXFx1MDAzYyBnZXRfb3JkZXIoc2l6ZSksXFxuNTM5MzpcXHRcXHRcXHQgICAgICBmbGFncywgbm9kZSk7XFxuNTM5NDpcXHRcXHRyZXR1cm4gcmV0O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwMjo1MzowOC42NjE4MTg5MTZaIiwiU2VxIjoyNywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDE3MDAyOTE0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBfX19rbWFsbG9jX2xhcmdlX25vZGVgIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgZG93biB0aGlzIHBhdGNoLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29yZSBjaGFuZ2Ugd2l0aGluIGBfX19rbWFsbG9jX2xhcmdlX25vZGVgLiBJdCBhcHBlYXJzIHRoZSBhdXRob3IgaGFzIGFkZGVkIGEgc2FmZXR5IGNoZWNrOiBgaWYgKFdBUk5fT05fT05DRV9HRlAoc2l6ZSBcdTAwM2UgS01BTExPQ19NQVhfU0laRSwgZmxhZ3MpKSByZXR1cm4gTlVMTDtgIGJlZm9yZSBjYWxjdWxhdGluZyB0aGUgYG9yZGVyYC4gVGhlIG1vdGl2YXRpb24gaGVyZSBpcyBjbGVhcjogaXQncyBhIGNyaXRpY2FsIGd1YXJkcmFpbC4gQnkgZXhwbGljaXRseSBjaGVja2luZyBpZiB0aGUgcmVxdWVzdGVkIGBzaXplYCBleGNlZWRzIGBLTUFMTE9DX01BWF9TSVpFYCwgb3IgcG90ZW50aWFsbHkgY3JlYXRlcyBhIHZhbHVlIHRoYXQgb3ZlcmZsb3dzIHRoZSBjYWxjdWxhdGVkIGBvcmRlcmAgZnJvbSBgZ2V0X29yZGVyKClgLCB0aGUgY29kZSBub3cgY2xlYW5seSByZWplY3RzIHRoZSBhbGxvY2F0aW9uIGFuZCByZXR1cm5zIGBOVUxMYCB3aXRoIGEgd2FybmluZy4gVGhpcyBpcyBwcmVmZXJhYmxlIHRvIGxldHRpbmcgdGhlIHN1YnNlcXVlbnQgYWxsb2NhdGlvbiBsb2dpYyBpbiBgYWxsb2NfcGFnZXNgIGNob2tlIG9uIGFuIGV4Y2Vzc2l2ZWx5IGxhcmdlIGBvcmRlcmAgb3Igb3RoZXJ3aXNlIGNvbXB1dGUgYW4gaW52YWxpZCBvcmRlci5cblxuTm93LCBJIG5lZWQgdG8gZXZhbHVhdGUgdGhlIGltcGFjdCBmcm9tIGEgbWVtb3J5IHNhZmV0eSBwZXJzcGVjdGl2ZS4gRG9lcyB0aGlzIGNoYW5nZSBpbnRyb2R1Y2UgYW55IHJpc2tzPyBMZXQncyBnbyB0aHJvdWdoIHRoZSBjaGVja2xpc3Q6XG5cbjEuICAqKktlcm5lbCBTdHJ1Y3R1cmVzIHRvIFVzZXIgU3BhY2U6KiogTm8uIFRoaXMgcGF0Y2ggZG9lc24ndCBpbnZvbHZlIGFueSBjaGFuZ2VzIHRoYXQgd291bGQgYWZmZWN0IGtlcm5lbCBzdHJ1Y3R1cmVzIHBhc3NlZCB0byB1c2VyIHNwYWNlLiBUaGVyZSdzIG5vIGNoYW5jZSBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyBleHBvc2VkIGhlcmUuXG4yLiAgKipVbmluaXRpYWxpemVkIFZhcmlhYmxlIFVzYWdlIGluIENvbmRpdGlvbmFsIExvZ2ljOioqIE5vLiBUaGUgdmFyaWFibGVzIGJlaW5nIGNoZWNrZWQsIGBzaXplYCBhbmQgYGZsYWdzYCwgYXJlIGJvdGggaW5wdXRzIHRvIHRoZSBmdW5jdGlvbi4gYG9yZGVyYCBpcyBpbml0aWFsaXplZCAqYWZ0ZXIqIHRoZSBzYWZldHkgY2hlY2ssIHNvIHRoZXJlJ3Mgbm8gd2F5IHRoaXMgaW50cm9kdWNlcyBhIHJpc2sgb2YgY29uZGl0aW9uYWwgYnJhbmNoaW5nIG9uIHVuaW5pdGlhbGl6ZWQgZGF0YS5cbjMuICAqKkNvbXBsZXggRGF0YSBTdHJ1Y3R1cmVzOioqIE5vLiBUaGlzIGlzIGEgdmVyeSB0YXJnZXRlZCBwYXRjaC4gSXQncyBub3QgbW9kaWZ5aW5nIG9yIGludHJvZHVjaW5nIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdpdGggdGhlIHBvdGVudGlhbCBmb3IgdW5pbml0aWFsaXplZCBmaWVsZHMuXG40LiAgKipCb3VuZHMgQ2hlY2tzL1VuaW5pdGlhbGl6ZWQgTWVtb3J5IEV4cG9zdXJlOioqIE5vLiBUaGlzIGlzIHNwZWNpZmljYWxseSBhIHNpemUgdmFsaWRhdGlvbi4gVGhlIGNoYW5nZSBkb2VzICpub3QqIGludHJvZHVjZSBhbnkgbmV3IGJvdW5kcyBjaGVja3MsIG5vciBkb2VzIGl0IGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gSXQgYWN0cyBhcyBhIHByZXZlbnRhdGl2ZSBtZWFzdXJlLlxuXG5UaGVyZWZvcmUsIGdpdmVuIG15IHVuZGVyc3RhbmRpbmcsIGBOZWVkc0tNU0FOYCBzaG91bGQgZGVmaW5pdGl2ZWx5IGJlIGBmYWxzZWAuIFRoaXMgaXMgYSBzdHJhaWdodGZvcndhcmQsIHBvc2l0aXZlIGNoYW5nZS4gTm93LCBsZXQncyBhc3NlbWJsZSB0aGUganVzdGlmaWNhdGlvbiBhbmQgY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTEwLCJPdXRwdXRUb2tlbnMiOjE3MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDAyOjUzOjEyLjgzMTg1MDU3NFoiLCJTZXEiOjI4LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyMDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHNhbml0eSBjaGVjayAoYFdBUk5fT05fT05DRV9HRlAoc2l6ZSBcXHUwMDNlIEtNQUxMT0NfTUFYX1NJWkUsIGZsYWdzKWApIGluIGBfX19rbWFsbG9jX2xhcmdlX25vZGUoKWAgdG8gcmVqZWN0IGFsbG9jYXRpb25zIGV4Y2VlZGluZyBgS01BTExPQ19NQVhfU0laRWAgYnkgcmV0dXJuaW5nIGBOVUxMYC5cXG5cXG5UaGlzIG1vZGlmaWNhdGlvbiBvbmx5IGFkZHMgZGVmZW5zaXZlIHBhcmFtZXRlciB2YWxpZGF0aW9uIHRvIHRoZSBTTFVCIGxhcmdlIGFsbG9jYXRpb24gcGF0aC4gSXQgZG9lcyBub3QgaW50cm9kdWNlLCBleHBvc2UsIG9yIG1hbmlwdWxhdGUgdW5pbml0aWFsaXplZCBtZW1vcnksIGRvZXMgbm90IGFsdGVyIGJ1ZmZlciBpbml0aWFsaXphdGlvbiBvciBzdHJ1Y3QgcGFkZGluZywgYW5kIGRvZXMgbm90IHRvdWNoIGRhdGEgcGFzc2VkIHRvIHVzZXIgc3BhY2UuIEFueSBidWdzIHJlbGF0ZWQgdG8gZmFpbGVkIGFsbG9jYXRpb25zIChzdWNoIGFzIG1pc3NpbmcgTlVMTC1jaGVja3MgaW4gY2FsbGVycykgYXJlIHN0YW5kYXJkIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmUgaGFuZGxpbmcgY2F1Z2h0IGJ5IHN0YW5kYXJkIHRlc3RpbmcvS0FTQU4uIFRoZXJlZm9yZSwgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBzYW5pdHkgY2hlY2sgKGBXQVJOX09OX09OQ0VfR0ZQKHNpemUgXFx1MDAzZSBLTUFMTE9DX01BWF9TSVpFLCBmbGFncylgKSBpbiBgX19fa21hbGxvY19sYXJnZV9ub2RlKClgIHRvIHJlamVjdCBhbGxvY2F0aW9ucyBleGNlZWRpbmcgYEtNQUxMT0NfTUFYX1NJWkVgIGJ5IHJldHVybmluZyBgTlVMTGAuXFxuXFxuVGhpcyBtb2RpZmljYXRpb24gb25seSBhZGRzIGRlZmVuc2l2ZSBwYXJhbWV0ZXIgdmFsaWRhdGlvbiB0byB0aGUgU0xVQiBsYXJnZSBhbGxvY2F0aW9uIHBhdGguIEl0IGRvZXMgbm90IGludHJvZHVjZSwgZXhwb3NlLCBvciBtYW5pcHVsYXRlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBkb2VzIG5vdCBhbHRlciBidWZmZXIgaW5pdGlhbGl6YXRpb24gb3Igc3RydWN0IHBhZGRpbmcsIGFuZCBkb2VzIG5vdCB0b3VjaCBkYXRhIHBhc3NlZCB0byB1c2VyIHNwYWNlLiBBbnkgYnVncyByZWxhdGVkIHRvIGZhaWxlZCBhbGxvY2F0aW9ucyAoc3VjaCBhcyBtaXNzaW5nIE5VTEwtY2hlY2tzIGluIGNhbGxlcnMpIGFyZSBzdGFuZGFyZCBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlIGhhbmRsaW5nIGNhdWdodCBieSBzdGFuZGFyZCB0ZXN0aW5nL0tBU0FOLiBUaGVyZWZvcmUsIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow92nn6[1] Phase: Succeeded StartedAt: 2026-08-31 02:53:24 +0000 UTC FinishedAt: 2026-08-31 02:53:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow92nn6[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-31 02:53:24 +0000 UTC FinishedAt: 2026-08-31 02:53:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow92nn6[2] Phase: Succeeded StartedAt: 2026-08-31 02:53:24 +0000 UTC FinishedAt: 2026-08-31 06:31:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow92nn6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"da6c37ed8beb273e3308e42d4bca3ce11b4432fa","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__kmalloc_large_noprof","__kmalloc_large_node_noprof"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"da6c37ed8beb273e3308e42d4bca3ce11b4432fa","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB"],"series_id":"fce7789a-743d-42cc-899f-a5de5d553d61","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-31 02:53:24 +0000 UTC FinishedAt: 2026-08-31 06:31:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"da6c37ed8beb273e3308e42d4bca3ce11b4432fa","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__kmalloc_large_noprof","__kmalloc_large_node_noprof"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"da6c37ed8beb273e3308e42d4bca3ce11b4432fa","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB"],"series_id":"fce7789a-743d-42cc-899f-a5de5d553d61","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow92nn6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"da6c37ed8beb273e3308e42d4bca3ce11b4432fa","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__kmalloc_large_noprof","__kmalloc_large_node_noprof"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"da6c37ed8beb273e3308e42d4bca3ce11b4432fa","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB"],"series_id":"fce7789a-743d-42cc-899f-a5de5d553d61","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-31 02:53:24 +0000 UTC FinishedAt: 2026-08-31 02:53:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow92nn6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"da6c37ed8beb273e3308e42d4bca3ce11b4432fa","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__kmalloc_large_noprof","__kmalloc_large_node_noprof"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"da6c37ed8beb273e3308e42d4bca3ce11b4432fa","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB"],"series_id":"fce7789a-743d-42cc-899f-a5de5d553d61","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-31 02:53:24 +0000 UTC FinishedAt: 2026-08-31 02:53:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"da6c37ed8beb273e3308e42d4bca3ce11b4432fa","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.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-workflow92nn6/series-workflow92nn6-convert-artifact-1183755441/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow92nn6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"da6c37ed8beb273e3308e42d4bca3ce11b4432fa","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__kmalloc_large_noprof","__kmalloc_large_node_noprof"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"da6c37ed8beb273e3308e42d4bca3ce11b4432fa","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB"],"series_id":"fce7789a-743d-42cc-899f-a5de5d553d61","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-31 02:53:34 +0000 UTC FinishedAt: 2026-08-31 03:09:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow92nn6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"da6c37ed8beb273e3308e42d4bca3ce11b4432fa","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__kmalloc_large_noprof","__kmalloc_large_node_noprof"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"da6c37ed8beb273e3308e42d4bca3ce11b4432fa","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB"],"series_id":"fce7789a-743d-42cc-899f-a5de5d553d61","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-31 02:53:34 +0000 UTC FinishedAt: 2026-08-31 03:09:32 +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:*2b6206b4-047e-4c15-a42d-42c61600e959,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-workflow92nn6/series-workflow92nn6-convert-artifact-1183755441/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": "55d8953c-1a96-42b8-b2e1-e58f40a2b920", "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-workflow92nn6/series-workflow92nn6-build-action-1451444959/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow92nn6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"da6c37ed8beb273e3308e42d4bca3ce11b4432fa","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__kmalloc_large_noprof","__kmalloc_large_node_noprof"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"da6c37ed8beb273e3308e42d4bca3ce11b4432fa","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB"],"series_id":"fce7789a-743d-42cc-899f-a5de5d553d61","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-31 02:53:34 +0000 UTC FinishedAt: 2026-08-31 03:09:22 +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:*2b6206b4-047e-4c15-a42d-42c61600e959,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-workflow92nn6/series-workflow92nn6-convert-artifact-1183755441/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": "55d8953c-1a96-42b8-b2e1-e58f40a2b920", "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-workflow92nn6/series-workflow92nn6-build-action-1451444959/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow92nn6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"da6c37ed8beb273e3308e42d4bca3ce11b4432fa","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__kmalloc_large_noprof","__kmalloc_large_node_noprof"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"da6c37ed8beb273e3308e42d4bca3ce11b4432fa","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB"],"series_id":"fce7789a-743d-42cc-899f-a5de5d553d61","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-31 03:09:32 +0000 UTC FinishedAt: 2026-08-31 03:09:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow92nn6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"da6c37ed8beb273e3308e42d4bca3ce11b4432fa","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__kmalloc_large_noprof","__kmalloc_large_node_noprof"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"da6c37ed8beb273e3308e42d4bca3ce11b4432fa","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB"],"series_id":"fce7789a-743d-42cc-899f-a5de5d553d61","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-31 03:09:32 +0000 UTC FinishedAt: 2026-08-31 03:09:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow92nn6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"da6c37ed8beb273e3308e42d4bca3ce11b4432fa","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__kmalloc_large_noprof","__kmalloc_large_node_noprof"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"da6c37ed8beb273e3308e42d4bca3ce11b4432fa","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB"],"series_id":"fce7789a-743d-42cc-899f-a5de5d553d61","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-31 03:09:32 +0000 UTC FinishedAt: 2026-08-31 03:09:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow92nn6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"da6c37ed8beb273e3308e42d4bca3ce11b4432fa","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__kmalloc_large_noprof","__kmalloc_large_node_noprof"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"da6c37ed8beb273e3308e42d4bca3ce11b4432fa","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB"],"series_id":"fce7789a-743d-42cc-899f-a5de5d553d61","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-31 03:09:32 +0000 UTC FinishedAt: 2026-08-31 03:09:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"da6c37ed8beb273e3308e42d4bca3ce11b4432fa","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB"],"series_id":"fce7789a-743d-42cc-899f-a5de5d553d61","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.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-workflow92nn6/series-workflow92nn6-convert-artifact-292910340/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow92nn6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"da6c37ed8beb273e3308e42d4bca3ce11b4432fa","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__kmalloc_large_noprof","__kmalloc_large_node_noprof"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"da6c37ed8beb273e3308e42d4bca3ce11b4432fa","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB"],"series_id":"fce7789a-743d-42cc-899f-a5de5d553d61","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-31 03:09:42 +0000 UTC FinishedAt: 2026-08-31 03:11:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflow92nn6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"da6c37ed8beb273e3308e42d4bca3ce11b4432fa","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__kmalloc_large_noprof","__kmalloc_large_node_noprof"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"da6c37ed8beb273e3308e42d4bca3ce11b4432fa","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB"],"series_id":"fce7789a-743d-42cc-899f-a5de5d553d61","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-31 03:09:42 +0000 UTC FinishedAt: 2026-08-31 03:11:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*55d8953c-1a96-42b8-b2e1-e58f40a2b920,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-workflow92nn6/series-workflow92nn6-build-action-1451444959/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-workflow92nn6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"da6c37ed8beb273e3308e42d4bca3ce11b4432fa","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__kmalloc_large_noprof","__kmalloc_large_node_noprof"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"da6c37ed8beb273e3308e42d4bca3ce11b4432fa","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB"],"series_id":"fce7789a-743d-42cc-899f-a5de5d553d61","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-31 03:11:40 +0000 UTC FinishedAt: 2026-08-31 03:11:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflow92nn6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"da6c37ed8beb273e3308e42d4bca3ce11b4432fa","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__kmalloc_large_noprof","__kmalloc_large_node_noprof"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"da6c37ed8beb273e3308e42d4bca3ce11b4432fa","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB"],"series_id":"fce7789a-743d-42cc-899f-a5de5d553d61","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-31 03:11:40 +0000 UTC FinishedAt: 2026-08-31 03:11:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflow92nn6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"da6c37ed8beb273e3308e42d4bca3ce11b4432fa","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__kmalloc_large_noprof","__kmalloc_large_node_noprof"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"da6c37ed8beb273e3308e42d4bca3ce11b4432fa","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB"],"series_id":"fce7789a-743d-42cc-899f-a5de5d553d61","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-31 03:11:40 +0000 UTC FinishedAt: 2026-08-31 03:27:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflow92nn6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"da6c37ed8beb273e3308e42d4bca3ce11b4432fa","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__kmalloc_large_noprof","__kmalloc_large_node_noprof"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"da6c37ed8beb273e3308e42d4bca3ce11b4432fa","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB"],"series_id":"fce7789a-743d-42cc-899f-a5de5d553d61","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-31 03:11:40 +0000 UTC FinishedAt: 2026-08-31 03:27:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*2b6206b4-047e-4c15-a42d-42c61600e959,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-workflow92nn6/series-workflow92nn6-convert-artifact-292910340/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": "604a4137-2866-4daa-8fc6-001f41068e97", "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-workflow92nn6/series-workflow92nn6-build-action-4073418512/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow92nn6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"da6c37ed8beb273e3308e42d4bca3ce11b4432fa","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__kmalloc_large_noprof","__kmalloc_large_node_noprof"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"da6c37ed8beb273e3308e42d4bca3ce11b4432fa","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB"],"series_id":"fce7789a-743d-42cc-899f-a5de5d553d61","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-31 03:11:40 +0000 UTC FinishedAt: 2026-08-31 03:27:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*2b6206b4-047e-4c15-a42d-42c61600e959,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-workflow92nn6/series-workflow92nn6-convert-artifact-292910340/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": "604a4137-2866-4daa-8fc6-001f41068e97", "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-workflow92nn6/series-workflow92nn6-build-action-4073418512/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow92nn6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"da6c37ed8beb273e3308e42d4bca3ce11b4432fa","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__kmalloc_large_noprof","__kmalloc_large_node_noprof"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"da6c37ed8beb273e3308e42d4bca3ce11b4432fa","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB"],"series_id":"fce7789a-743d-42cc-899f-a5de5d553d61","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-31 03:27:48 +0000 UTC FinishedAt: 2026-08-31 03:27:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflow92nn6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"da6c37ed8beb273e3308e42d4bca3ce11b4432fa","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__kmalloc_large_noprof","__kmalloc_large_node_noprof"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"da6c37ed8beb273e3308e42d4bca3ce11b4432fa","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB"],"series_id":"fce7789a-743d-42cc-899f-a5de5d553d61","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-31 03:27:48 +0000 UTC FinishedAt: 2026-08-31 03:27:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflow92nn6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"da6c37ed8beb273e3308e42d4bca3ce11b4432fa","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__kmalloc_large_noprof","__kmalloc_large_node_noprof"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"da6c37ed8beb273e3308e42d4bca3ce11b4432fa","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB"],"series_id":"fce7789a-743d-42cc-899f-a5de5d553d61","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-31 03:27:48 +0000 UTC FinishedAt: 2026-08-31 03:29:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow92nn6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"da6c37ed8beb273e3308e42d4bca3ce11b4432fa","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__kmalloc_large_noprof","__kmalloc_large_node_noprof"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"da6c37ed8beb273e3308e42d4bca3ce11b4432fa","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB"],"series_id":"fce7789a-743d-42cc-899f-a5de5d553d61","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-31 03:27:48 +0000 UTC FinishedAt: 2026-08-31 03:29:32 +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:*604a4137-2866-4daa-8fc6-001f41068e97,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-workflow92nn6/series-workflow92nn6-build-action-4073418512/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-workflow92nn6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"da6c37ed8beb273e3308e42d4bca3ce11b4432fa","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__kmalloc_large_noprof","__kmalloc_large_node_noprof"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"da6c37ed8beb273e3308e42d4bca3ce11b4432fa","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB"],"series_id":"fce7789a-743d-42cc-899f-a5de5d553d61","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-31 03:29:42 +0000 UTC FinishedAt: 2026-08-31 06:31:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow92nn6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"da6c37ed8beb273e3308e42d4bca3ce11b4432fa","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__kmalloc_large_noprof","__kmalloc_large_node_noprof"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"da6c37ed8beb273e3308e42d4bca3ce11b4432fa","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB"],"series_id":"fce7789a-743d-42cc-899f-a5de5d553d61","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-31 03:29:42 +0000 UTC FinishedAt: 2026-08-31 06:31:03 +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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__kmalloc_large_noprof","__kmalloc_large_node_noprof"],"skip_cover_check":true},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:*55d8953c-1a96-42b8-b2e1-e58f40a2b920,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*604a4137-2866-4daa-8fc6-001f41068e97,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-workflow92nn6/series-workflow92nn6-build-action-1451444959/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-workflow92nn6/series-workflow92nn6-build-action-4073418512/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow92nn6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"da6c37ed8beb273e3308e42d4bca3ce11b4432fa","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__kmalloc_large_noprof","__kmalloc_large_node_noprof"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"da6c37ed8beb273e3308e42d4bca3ce11b4432fa","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB"],"series_id":"fce7789a-743d-42cc-899f-a5de5d553d61","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-31 03:29:42 +0000 UTC FinishedAt: 2026-08-31 03:29:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflow92nn6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"da6c37ed8beb273e3308e42d4bca3ce11b4432fa","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__kmalloc_large_noprof","__kmalloc_large_node_noprof"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"da6c37ed8beb273e3308e42d4bca3ce11b4432fa","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB"],"series_id":"fce7789a-743d-42cc-899f-a5de5d553d61","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-31 03:29:42 +0000 UTC FinishedAt: 2026-08-31 03:29:46 +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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__kmalloc_large_noprof","__kmalloc_large_node_noprof"],"skip_cover_check":true},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-workflow92nn6/series-workflow92nn6-convert-artifact-3368073485/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow92nn6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"da6c37ed8beb273e3308e42d4bca3ce11b4432fa","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__kmalloc_large_noprof","__kmalloc_large_node_noprof"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"da6c37ed8beb273e3308e42d4bca3ce11b4432fa","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB"],"series_id":"fce7789a-743d-42cc-899f-a5de5d553d61","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-31 03:29:42 +0000 UTC FinishedAt: 2026-08-31 03:29:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow92nn6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"da6c37ed8beb273e3308e42d4bca3ce11b4432fa","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__kmalloc_large_noprof","__kmalloc_large_node_noprof"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"da6c37ed8beb273e3308e42d4bca3ce11b4432fa","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB"],"series_id":"fce7789a-743d-42cc-899f-a5de5d553d61","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-31 03:29:42 +0000 UTC FinishedAt: 2026-08-31 03:29:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow92nn6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"da6c37ed8beb273e3308e42d4bca3ce11b4432fa","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__kmalloc_large_noprof","__kmalloc_large_node_noprof"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"da6c37ed8beb273e3308e42d4bca3ce11b4432fa","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB"],"series_id":"fce7789a-743d-42cc-899f-a5de5d553d61","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-31 03:29:42 +0000 UTC FinishedAt: 2026-08-31 03:29:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow92nn6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"da6c37ed8beb273e3308e42d4bca3ce11b4432fa","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__kmalloc_large_noprof","__kmalloc_large_node_noprof"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"da6c37ed8beb273e3308e42d4bca3ce11b4432fa","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB"],"series_id":"fce7789a-743d-42cc-899f-a5de5d553d61","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-31 03:29:52 +0000 UTC FinishedAt: 2026-08-31 06:31:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow92nn6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"da6c37ed8beb273e3308e42d4bca3ce11b4432fa","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__kmalloc_large_noprof","__kmalloc_large_node_noprof"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"da6c37ed8beb273e3308e42d4bca3ce11b4432fa","config_name":"upstream-apparmor-kasan.config","enable_configs":["SLUB"],"series_id":"fce7789a-743d-42cc-899f-a5de5d553d61","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-31 03:29:52 +0000 UTC FinishedAt: 2026-08-31 06:30:53 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*55d8953c-1a96-42b8-b2e1-e58f40a2b920,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*604a4137-2866-4daa-8fc6-001f41068e97,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-workflow92nn6/series-workflow92nn6-build-action-1451444959/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-workflow92nn6/series-workflow92nn6-build-action-4073418512/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-workflow92nn6/series-workflow92nn6-convert-artifact-3368073485/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,}