Name: series-workflowlrmpm Phase: Succeeded StartedAt: 2026-08-12 23:07:10 +0000 UTC FinishedAt: 2026-08-13 03:20:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrmpm[0] Phase: Succeeded StartedAt: 2026-08-12 23:07:10 +0000 UTC FinishedAt: 2026-08-12 23:27:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrmpm[0].run-triage Phase: Succeeded StartedAt: 2026-08-12 23:07:10 +0000 UTC FinishedAt: 2026-08-12 23:27:02 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "7b53449540502cb21b32bca62a6258e22cd97bbe", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_TABLES" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "7b53449540502cb21b32bca62a6258e22cd97bbe", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_TABLES" ], "series_id": "4fcd9f88-13e9-4a38-93f9-55be3132f026" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "nf_tables_commit", "nf_tables_abort", "nf_tables_newsetelem", "nf_tables_delsetelem" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDIzOjI1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX1RBQkxFUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25mX3RhYmxlc19jb21taXQmIzM0OywKICAgICYjMzQ7bmZfdGFibGVzX2Fib3J0JiMzNDssCiAgICAmIzM0O25mX3RhYmxlc19uZXdzZXRlbGVtJiMzNDssCiAgICAmIzM0O25mX3RhYmxlc19kZWxzZXRlbGVtJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVmYWN0b3JzIHRoZSB0cmFuc2FjdGlvbiBjb21taXQgYW5kIGFib3J0IGxvZ2ljIGluIG5ldGZpbHRlciB0YWJsZXMgKG5mX3RhYmxlcykuIEl0IG1vdmVzIHRoZSBgc2V0X3VwZGF0ZV9saXN0YCBmcm9tIGJlaW5nIGEgbG9jYWwgdmFyaWFibGUgaW4gYG5mX3RhYmxlc19jb21taXRgIGFuZCBgX19uZl90YWJsZXNfYWJvcnRgIHRvIGEgcGVyLW5ldCBuYW1lc3BhY2Ugc3RydWN0dXJlIChgc3RydWN0IG5mdGFibGVzX3Blcm5ldGApLiBJdCBhbHNvIGFkanVzdHMgdGhlIG9yZGVyIG9mIG9wZXJhdGlvbnMgZHVyaW5nIHRoZSBjb21taXQgcGhhc2UsIHNwZWNpZmljYWxseSBjYWxsaW5nIGBuZnRfc2V0X2NvbW1pdF91cGRhdGVgIGVhcmxpZXIgYW5kIG1vZGlmeWluZyBob3cgYE5GVF9NU0dfREVMU0VURUxFTWAgbWVzc2FnZXMgYXJlIHByb2Nlc3NlZCBhbmQgbm90aWZpZWQuXG5cblRoZXNlIGNoYW5nZXMgYXJlIHB1cmVseSByZWxhdGVkIHRvIGNvbnRyb2wgZmxvdywgbGlzdCBtYW5hZ2VtZW50LCBhbmQgdGhlIG5ldGZpbHRlciB0cmFuc2FjdGlvbiBzdGF0ZSBtYWNoaW5lIChsaWtlbHkgdG8gZml4IGEgcmFjZSBjb25kaXRpb24sIHVzZS1hZnRlci1mcmVlLCBvciBvcmRlcmluZyBpc3N1ZSkuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMgdGhhdCBhcmUgY29waWVkIHRvIHVzZXIgc3BhY2UsIG5vciBkb2VzIGl0IG1vZGlmeSBidWZmZXIgYWxsb2NhdGlvbnMsIGJvdW5kcyBjaGVja2luZywgb3IgaW5pdGlhbGl6YXRpb24gbG9naWMgaW4gYSB3YXkgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBrZXJuZWwgbWVtb3J5IChpbmZvLWxlYWtzKSBvciBjYXVzZSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byBiZSB1c2VkIGluIGNvbnRyb2wgZmxvdy5cblxuQW55IGJ1Z3MgaW50cm9kdWNlZCBvciBmaXhlZCBieSB0aGlzIHBhdGNoIChzdWNoIGFzIHVzZS1hZnRlci1mcmVlLCBkb3VibGUtZnJlZSwgb3IgbGlzdCBjb3JydXB0aW9uKSB3b3VsZCBiZSByZWxpYWJseSBkZXRlY3RlZCBieSBzdGFuZGFyZCBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIGRlYnVnIG9wdGlvbnMgKGxpa2UgYENPTkZJR19ERUJVR19MSVNUYCkuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBqdXN0aWZpZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRmaWx0ZXIgbmZfdGFibGVzIEFQSSB0byBpbnRyb2R1Y2UgYSBgc2V0X3VwZGF0ZV9saXN0YCBpbiBgc3RydWN0IG5mdGFibGVzX3Blcm5ldGAuIEl0IGNoYW5nZXMgaG93IHNldCBlbGVtZW50cyBhcmUgYWRkZWQsIHJlbW92ZWQsIGFuZCBhYm9ydGVkIGR1cmluZyBuZXRsaW5rIHRyYW5zYWN0aW9ucy4gU3BlY2lmaWNhbGx5LCBpdCBtb2RpZmllcyBgbmZ0X3RyYW5zX2NvbW1pdF9saXN0X2FkZF9lbGVtYCwgYG5mdF9zZXRfY29tbWl0X3VwZGF0ZWAsIGBuZl90YWJsZXNfY29tbWl0YCwgYW5kIGBfX25mX3RhYmxlc19hYm9ydGAgdG8gaGFuZGxlIHRoZSBuZXcgbGlzdCBhbmQgZW5zdXJlIHByb3BlciBvcmRlcmluZyBvZiBzZXQgdXBkYXRlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldGZpbHRlciBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluayBzb2NrZXRzIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIHByZXZlbnQgcmVncmVzc2lvbnMgb3IgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDIzOjI1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMGQ5MzEyYTBkOGRhNmNlODJlMDUzNjg0MzlhOTlmN2E2MGQyZjkxY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDEyIDIzOjI1OjMyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L25ldGZpbHRlci9uZl90YWJsZXMuaCBiL2luY2x1ZGUvbmV0L25ldGZpbHRlci9uZl90YWJsZXMuaFxuaW5kZXggM2JlNjEyMTQ1YzEzMC4uMjM4ZjZlY2I5MGU5OSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L25ldGZpbHRlci9uZl90YWJsZXMuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlcy5oXG5AQCAtMTk0OSw2ICYjNDM7MTk0OSw3IEBAIHN0cnVjdCBuZnRhYmxlc19wZXJuZXQge1xuIFx0c3RydWN0IGxpc3RfaGVhZFx0YmluZGluZ19saXN0O1xuIFx0c3RydWN0IGxpc3RfaGVhZFx0bW9kdWxlX2xpc3Q7XG4gXHRzdHJ1Y3QgbGlzdF9oZWFkXHRub3RpZnlfbGlzdDtcbiYjNDM7XHRzdHJ1Y3QgbGlzdF9oZWFkXHRzZXRfdXBkYXRlX2xpc3Q7XG4gXHRzdHJ1Y3QgbXV0ZXhcdFx0Y29tbWl0X211dGV4O1xuIFx0dTY0XHRcdFx0dGFibGVfaGFuZGxlO1xuIFx0dTY0XHRcdFx0dHN0YW1wO1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jIGIvbmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmNcbmluZGV4IGFmMzU3ZjZjNTA3MGIuLjVjNGY2YzM1NDU5NTAgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmNcbkBAIC01OTUsMTAgJiM0Mzs1OTUsMTUgQEAgc3RhdGljIHZvaWQgbmZ0X3RyYW5zX2NvbW1pdF9saXN0X2FkZF90YWlsKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5mdF90cmFucyAqdHJcbiBzdGF0aWMgdm9pZCBuZnRfdHJhbnNfY29tbWl0X2xpc3RfYWRkX2VsZW0oc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmZ0X3RyYW5zICp0cmFucylcbiB7XG4gXHRzdHJ1Y3QgbmZ0YWJsZXNfcGVybmV0ICpuZnRfbmV0ID0gbmZ0X3Blcm5ldChuZXQpO1xuJiM0MztcdHN0cnVjdCBuZnRfdHJhbnNfZWxlbSAqdGU7XG4gXG4gXHRXQVJOX09OX09OQ0UodHJhbnMtXHUwMDNlbXNnX3R5cGUgIT0gTkZUX01TR19ORVdTRVRFTEVNIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgIHRyYW5zLVx1MDAzZW1zZ190eXBlICE9IE5GVF9NU0dfREVMU0VURUxFTSk7XG4gXG4mIzQzO1x0dGUgPSBuZnRfdHJhbnNfY29udGFpbmVyX2VsZW0odHJhbnMpO1xuJiM0MztcdGlmICh0ZS1cdTAwM2VzZXQtXHUwMDNlb3BzLVx1MDAzZWNvbW1pdCBcdTAwMjZcdTAwMjYgbGlzdF9lbXB0eShcdTAwMjZ0ZS1cdTAwM2VzZXQtXHUwMDNlcGVuZGluZ191cGRhdGUpKVxuJiM0MztcdFx0bGlzdF9hZGRfdGFpbChcdTAwMjZ0ZS1cdTAwM2VzZXQtXHUwMDNlcGVuZGluZ191cGRhdGUsIFx1MDAyNm5mdF9uZXQtXHUwMDNlc2V0X3VwZGF0ZV9saXN0KTtcbiYjNDM7XG4gXHRpZiAobmZ0X3RyYW5zX3RyeV9jb2xsYXBzZShuZnRfbmV0LCB0cmFucykpIHtcbiBcdFx0a2ZyZWUodHJhbnMpO1xuIFx0XHRyZXR1cm47XG5AQCAtNzIwNSw2ICYjNDM7NzIxMCwyMCBAQCBzdGF0aWMgdm9pZCBuZnRfdHJhbnNfZWxlbXNfcmVtb3ZlKGNvbnN0IHN0cnVjdCBuZnRfY3R4ICpjdHgsXG4gXHR9XG4gfVxuIFxuJiM0MztzdGF0aWMgdm9pZCBuZnRfdHJhbnNfZWxlbXNfcmVtb3ZlX25vdGlmeShjb25zdCBzdHJ1Y3QgbmZ0X2N0eCAqY3R4LFxuJiM0MztcdFx0XHRcdFx0ICBjb25zdCBzdHJ1Y3QgbmZ0X3RyYW5zX2VsZW0gKnRlKVxuJiM0Mzt7XG4mIzQzO1x0aW50IGk7XG4mIzQzO1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHRlLVx1MDAzZW5lbGVtczsgaSYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdFdBUk5fT05fT05DRSh0ZS1cdTAwM2VlbGVtc1tpXS51cGRhdGUpO1xuJiM0MztcbiYjNDM7XHRcdG5mX3RhYmxlc19zZXRlbGVtX25vdGlmeShjdHgsIHRlLVx1MDAzZXNldCxcbiYjNDM7XHRcdFx0XHRcdCB0ZS1cdTAwM2VlbGVtc1tpXS5wcml2LFxuJiM0MztcdFx0XHRcdFx0IHRlLVx1MDAzZW5mdF90cmFucy5tc2dfdHlwZSk7XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBib29sIG5mdF9zZXRlbGVtX3ZhbGlkX2tleV9lbmQoY29uc3Qgc3RydWN0IG5mdF9zZXQgKnNldCxcbiBcdFx0XHRcdCAgICAgIHN0cnVjdCBubGF0dHIgKipubGEsIHUzMiBmbGFncylcbiB7XG5AQCAtMTA4NDgsMTEgJiM0MzsxMDg2NywzMSBAQCBzdGF0aWMgdm9pZCBuZl90YWJsZXNfY29tbWl0X2F1ZGl0X2xvZyhzdHJ1Y3QgbGlzdF9oZWFkICphZGwsIHUzMiBnZW5lcmF0aW9uKVxuIFx0fVxuIH1cbiBcbi1zdGF0aWMgdm9pZCBuZnRfc2V0X2NvbW1pdF91cGRhdGUoc3RydWN0IGxpc3RfaGVhZCAqc2V0X3VwZGF0ZV9saXN0KVxuJiM0MztzdGF0aWMgdm9pZCBuZnRfc2V0X2NvbW1pdF91cGRhdGUoc3RydWN0IG5mdF9jdHggKmN0eCxcbiYjNDM7XHRcdFx0XHQgIHN0cnVjdCBuZnRhYmxlc19wZXJuZXQgKm5mdF9uZXQpXG4ge1xuIFx0c3RydWN0IG5mdF9zZXQgKnNldCwgKm5leHQ7XG4mIzQzO1x0c3RydWN0IG5mdF90cmFuc19lbGVtICp0ZTtcbiYjNDM7XHRzdHJ1Y3QgbmZ0X3RyYW5zICp0cmFucztcbiBcbi1cdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShzZXQsIG5leHQsIHNldF91cGRhdGVfbGlzdCwgcGVuZGluZ191cGRhdGUpIHtcbiYjNDM7XHRpZiAobGlzdF9lbXB0eShcdTAwMjZuZnRfbmV0LVx1MDAzZXNldF91cGRhdGVfbGlzdCkpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuJiM0MztcdGxpc3RfZm9yX2VhY2hfZW50cnkodHJhbnMsIFx1MDAyNm5mdF9uZXQtXHUwMDNlY29tbWl0X2xpc3QsIGxpc3QpIHtcbiYjNDM7XHRcdG5mdF9jdHhfdXBkYXRlKGN0eCwgdHJhbnMpO1xuJiM0MztcbiYjNDM7XHRcdHN3aXRjaCAodHJhbnMtXHUwMDNlbXNnX3R5cGUpIHtcbiYjNDM7XHRcdGNhc2UgTkZUX01TR19ERUxTRVRFTEVNOlxuJiM0MztcdFx0XHR0ZSA9IG5mdF90cmFuc19jb250YWluZXJfZWxlbSh0cmFucyk7XG4mIzQzO1x0XHRcdGlmICghdGUtXHUwMDNlc2V0LVx1MDAzZW9wcy1cdTAwM2Vjb21taXQpXG4mIzQzO1x0XHRcdFx0YnJlYWs7XG4mIzQzO1xuJiM0MztcdFx0XHRuZnRfdHJhbnNfZWxlbXNfcmVtb3ZlKGN0eCwgdGUpO1xuJiM0MztcdFx0XHRicmVhaztcbiYjNDM7XHRcdH1cbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShzZXQsIG5leHQsIFx1MDAyNm5mdF9uZXQtXHUwMDNlc2V0X3VwZGF0ZV9saXN0LCBwZW5kaW5nX3VwZGF0ZSkge1xuIFx0XHRsaXN0X2RlbF9pbml0KFx1MDAyNnNldC1cdTAwM2VwZW5kaW5nX3VwZGF0ZSk7XG4gXG4gXHRcdGlmICghc2V0LVx1MDAzZW9wcy1cdTAwM2Vjb21taXQgfHwgc2V0LVx1MDAzZWRlYWQpXG5AQCAtMTA4ODUsNyAmIzQzOzEwOTI0LDYgQEAgc3RhdGljIGludCBuZl90YWJsZXNfY29tbWl0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdHN0cnVjdCBuZnRfdHJhbnNfYmluZGluZyAqdHJhbnNfYmluZGluZztcbiBcdHN0cnVjdCBuZnRfdHJhbnMgKnRyYW5zLCAqbmV4dDtcbiBcdHVuc2lnbmVkIGludCBiYXNlX3NlcSwgZ2Nfc2VxO1xuLVx0TElTVF9IRUFEKHNldF91cGRhdGVfbGlzdCk7XG4gXHRzdHJ1Y3QgbmZ0X3RyYW5zX2VsZW0gKnRlO1xuIFx0c3RydWN0IG5mdF9jaGFpbiAqY2hhaW47XG4gXHRzdHJ1Y3QgbmZ0X3RhYmxlICp0YWJsZTtcbkBAIC0xMDk2MCw2ICYjNDM7MTA5OTgsOCBAQCBzdGF0aWMgaW50IG5mX3RhYmxlc19jb21taXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0fVxuIFxuIFx0Lyogc3RlcCAyLiAgTWFrZSBydWxlc19nZW5fWCB2aXNpYmxlIHRvIHBhY2tldCBwYXRoICovXG4mIzQzO1x0bmZ0X3NldF9jb21taXRfdXBkYXRlKFx1MDAyNmN0eCwgbmZ0X25ldCk7XG4mIzQzO1xuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeSh0YWJsZSwgXHUwMDI2bmZ0X25ldC1cdTAwM2V0YWJsZXMsIGxpc3QpIHtcbiBcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShjaGFpbiwgXHUwMDI2dGFibGUtXHUwMDNlY2hhaW5zLCBsaXN0KVxuIFx0XHRcdG5mX3RhYmxlc19jb21taXRfY2hhaW4obmV0LCBjaGFpbik7XG5AQCAtMTEwOTEsMjcgJiM0MzsxMTEzMSwxNiBAQCBzdGF0aWMgaW50IG5mX3RhYmxlc19jb21taXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0XHRcdGJyZWFrO1xuIFx0XHRjYXNlIE5GVF9NU0dfTkVXU0VURUxFTTpcbiBcdFx0XHR0ZSA9IG5mdF90cmFuc19jb250YWluZXJfZWxlbSh0cmFucyk7XG4tXG4gXHRcdFx0bmZ0X3RyYW5zX2VsZW1zX2FkZChcdTAwMjZjdHgsIHRlKTtcbi1cbi1cdFx0XHRpZiAodGUtXHUwMDNlc2V0LVx1MDAzZW9wcy1cdTAwM2Vjb21taXQgXHUwMDI2XHUwMDI2XG4tXHRcdFx0ICAgIGxpc3RfZW1wdHkoXHUwMDI2dGUtXHUwMDNlc2V0LVx1MDAzZXBlbmRpbmdfdXBkYXRlKSkge1xuLVx0XHRcdFx0bGlzdF9hZGRfdGFpbChcdTAwMjZ0ZS1cdTAwM2VzZXQtXHUwMDNlcGVuZGluZ191cGRhdGUsXG4tXHRcdFx0XHRcdCAgICAgIFx1MDAyNnNldF91cGRhdGVfbGlzdCk7XG4tXHRcdFx0fVxuIFx0XHRcdG5mdF90cmFuc19kZXN0cm95KHRyYW5zKTtcbiBcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSBORlRfTVNHX0RFTFNFVEVMRU06XG4gXHRcdGNhc2UgTkZUX01TR19ERVNUUk9ZU0VURUxFTTpcbiBcdFx0XHR0ZSA9IG5mdF90cmFuc19jb250YWluZXJfZWxlbSh0cmFucyk7XG4tXG4tXHRcdFx0bmZ0X3RyYW5zX2VsZW1zX3JlbW92ZShcdTAwMjZjdHgsIHRlKTtcbi1cbi1cdFx0XHRpZiAodGUtXHUwMDNlc2V0LVx1MDAzZW9wcy1cdTAwM2Vjb21taXQgXHUwMDI2XHUwMDI2XG4tXHRcdFx0ICAgIGxpc3RfZW1wdHkoXHUwMDI2dGUtXHUwMDNlc2V0LVx1MDAzZXBlbmRpbmdfdXBkYXRlKSkge1xuLVx0XHRcdFx0bGlzdF9hZGRfdGFpbChcdTAwMjZ0ZS1cdTAwM2VzZXQtXHUwMDNlcGVuZGluZ191cGRhdGUsXG4tXHRcdFx0XHRcdCAgICAgIFx1MDAyNnNldF91cGRhdGVfbGlzdCk7XG4tXHRcdFx0fVxuJiM0MztcdFx0XHRpZiAodGUtXHUwMDNlc2V0LVx1MDAzZW9wcy1cdTAwM2Vjb21taXQpXG4mIzQzO1x0XHRcdFx0bmZ0X3RyYW5zX2VsZW1zX3JlbW92ZV9ub3RpZnkoXHUwMDI2Y3R4LCB0ZSk7XG4mIzQzO1x0XHRcdGVsc2VcbiYjNDM7XHRcdFx0XHRuZnRfdHJhbnNfZWxlbXNfcmVtb3ZlKFx1MDAyNmN0eCwgdGUpO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHRjYXNlIE5GVF9NU0dfTkVXT0JKOlxuIFx0XHRcdGlmIChuZnRfdHJhbnNfb2JqX3VwZGF0ZSh0cmFucykpIHtcbkBAIC0xMTE4MCw4ICYjNDM7MTEyMDksNiBAQCBzdGF0aWMgaW50IG5mX3RhYmxlc19jb21taXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0XHR9XG4gXHR9XG4gXG4tXHRuZnRfc2V0X2NvbW1pdF91cGRhdGUoXHUwMDI2c2V0X3VwZGF0ZV9saXN0KTtcbi1cbiBcdG5mdF9jb21taXRfbm90aWZ5KG5ldCwgTkVUTElOS19DQihza2IpLnBvcnRpZCk7XG4gXHRuZl90YWJsZXNfZ2VuX25vdGlmeShuZXQsIHNrYiwgTkZUX01TR19ORVdHRU4pO1xuIFx0bmZfdGFibGVzX2NvbW1pdF9hdWRpdF9sb2coXHUwMDI2YWRsLCBuZnRfYmFzZV9zZXEobmV0KSk7XG5AQCAtMTEyNDcsMTEgJiM0MzsxMTI3NCwxMSBAQCBzdGF0aWMgdm9pZCBuZl90YWJsZXNfYWJvcnRfcmVsZWFzZShzdHJ1Y3QgbmZ0X3RyYW5zICp0cmFucylcbiBcdGtmcmVlKHRyYW5zKTtcbiB9XG4gXG4tc3RhdGljIHZvaWQgbmZ0X3NldF9hYm9ydF91cGRhdGUoc3RydWN0IGxpc3RfaGVhZCAqc2V0X3VwZGF0ZV9saXN0KVxuJiM0MztzdGF0aWMgdm9pZCBuZnRfc2V0X2Fib3J0X3VwZGF0ZShzdHJ1Y3QgbmZ0YWJsZXNfcGVybmV0ICpuZnRfbmV0KVxuIHtcbiBcdHN0cnVjdCBuZnRfc2V0ICpzZXQsICpuZXh0O1xuIFxuLVx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHNldCwgbmV4dCwgc2V0X3VwZGF0ZV9saXN0LCBwZW5kaW5nX3VwZGF0ZSkge1xuJiM0MztcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShzZXQsIG5leHQsIFx1MDAyNm5mdF9uZXQtXHUwMDNlc2V0X3VwZGF0ZV9saXN0LCBwZW5kaW5nX3VwZGF0ZSkge1xuIFx0XHRsaXN0X2RlbF9pbml0KFx1MDAyNnNldC1cdTAwM2VwZW5kaW5nX3VwZGF0ZSk7XG4gXG4gXHRcdGlmICghc2V0LVx1MDAzZW9wcy1cdTAwM2VhYm9ydClcbkBAIC0xMTM4NiwzMyAmIzQzOzExNDEzLDIyIEBAIHN0YXRpYyBpbnQgX19uZl90YWJsZXNfYWJvcnQoc3RydWN0IG5ldCAqbmV0LCBlbnVtIG5mbmxfYWJvcnRfYWN0aW9uIGFjdGlvbilcbiBcdFx0XHRuZnRfdHJhbnNfZGVzdHJveSh0cmFucyk7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgTkZUX01TR19ORVdTRVRFTEVNOlxuJiM0MztcdFx0XHR0ZSA9IG5mdF90cmFuc19jb250YWluZXJfZWxlbSh0cmFucyk7XG4gXHRcdFx0aWYgKG5mdF90cmFuc19lbGVtX3NldF9ib3VuZCh0cmFucykpIHtcbiYjNDM7XHRcdFx0XHRsaXN0X2RlbF9pbml0KFx1MDAyNnRlLVx1MDAzZXNldC1cdTAwM2VwZW5kaW5nX3VwZGF0ZSk7XG4gXHRcdFx0XHRuZnRfdHJhbnNfZGVzdHJveSh0cmFucyk7XG4gXHRcdFx0XHRicmVhaztcbiBcdFx0XHR9XG4tXHRcdFx0dGUgPSBuZnRfdHJhbnNfY29udGFpbmVyX2VsZW0odHJhbnMpO1xuIFx0XHRcdGlmICghbmZ0X3RyYW5zX2VsZW1zX25ld19hYm9ydChcdTAwMjZjdHgsIHRlKSkge1xuIFx0XHRcdFx0bmZ0X3RyYW5zX2Rlc3Ryb3kodHJhbnMpO1xuIFx0XHRcdFx0YnJlYWs7XG4gXHRcdFx0fVxuLVxuLVx0XHRcdGlmICh0ZS1cdTAwM2VzZXQtXHUwMDNlb3BzLVx1MDAzZWFib3J0IFx1MDAyNlx1MDAyNlxuLVx0XHRcdCAgICBsaXN0X2VtcHR5KFx1MDAyNnRlLVx1MDAzZXNldC1cdTAwM2VwZW5kaW5nX3VwZGF0ZSkpIHtcbi1cdFx0XHRcdGxpc3RfYWRkX3RhaWwoXHUwMDI2dGUtXHUwMDNlc2V0LVx1MDAzZXBlbmRpbmdfdXBkYXRlLFxuLVx0XHRcdFx0XHQgICAgICBcdTAwMjZzZXRfdXBkYXRlX2xpc3QpO1xuLVx0XHRcdH1cbiBcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSBORlRfTVNHX0RFTFNFVEVMRU06XG4gXHRcdGNhc2UgTkZUX01TR19ERVNUUk9ZU0VURUxFTTpcbiBcdFx0XHR0ZSA9IG5mdF90cmFuc19jb250YWluZXJfZWxlbSh0cmFucyk7XG4gXG4gXHRcdFx0bmZ0X3RyYW5zX2VsZW1zX2Rlc3Ryb3lfYWJvcnQoXHUwMDI2Y3R4LCB0ZSk7XG4tXG4tXHRcdFx0aWYgKHRlLVx1MDAzZXNldC1cdTAwM2VvcHMtXHUwMDNlYWJvcnQgXHUwMDI2XHUwMDI2XG4tXHRcdFx0ICAgIGxpc3RfZW1wdHkoXHUwMDI2dGUtXHUwMDNlc2V0LVx1MDAzZXBlbmRpbmdfdXBkYXRlKSkge1xuLVx0XHRcdFx0bGlzdF9hZGRfdGFpbChcdTAwMjZ0ZS1cdTAwM2VzZXQtXHUwMDNlcGVuZGluZ191cGRhdGUsXG4tXHRcdFx0XHRcdCAgICAgIFx1MDAyNnNldF91cGRhdGVfbGlzdCk7XG4tXHRcdFx0fVxuIFx0XHRcdG5mdF90cmFuc19kZXN0cm95KHRyYW5zKTtcbiBcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSBORlRfTVNHX05FV09CSjpcbkBAIC0xMTQ1OCw3ICYjNDM7MTE0NzQsNyBAQCBzdGF0aWMgaW50IF9fbmZfdGFibGVzX2Fib3J0KHN0cnVjdCBuZXQgKm5ldCwgZW51bSBuZm5sX2Fib3J0X2FjdGlvbiBhY3Rpb24pXG4gXG4gXHRXQVJOX09OX09OQ0UoIWxpc3RfZW1wdHkoXHUwMDI2bmZ0X25ldC1cdTAwM2Vjb21taXRfc2V0X2xpc3QpKTtcbiBcbi1cdG5mdF9zZXRfYWJvcnRfdXBkYXRlKFx1MDAyNnNldF91cGRhdGVfbGlzdCk7XG4mIzQzO1x0bmZ0X3NldF9hYm9ydF91cGRhdGUobmZ0X25ldCk7XG4gXG4gXHRzeW5jaHJvbml6ZV9yY3UoKTtcbiBcbkBAIC0xMjE0Miw2ICYjNDM7MTIxNTgsNyBAQCBzdGF0aWMgaW50IF9fbmV0X2luaXQgbmZfdGFibGVzX2luaXRfbmV0KHN0cnVjdCBuZXQgKm5ldClcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNm5mdF9uZXQtXHUwMDNlYmluZGluZ19saXN0KTtcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNm5mdF9uZXQtXHUwMDNlbW9kdWxlX2xpc3QpO1xuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2bmZ0X25ldC1cdTAwM2Vub3RpZnlfbGlzdCk7XG4mIzQzO1x0SU5JVF9MSVNUX0hFQUQoXHUwMDI2bmZ0X25ldC1cdTAwM2VzZXRfdXBkYXRlX2xpc3QpO1xuIFx0bXV0ZXhfaW5pdChcdTAwMjZuZnRfbmV0LVx1MDAzZWNvbW1pdF9tdXRleCk7XG4gXHRuZXQtXHUwMDNlbmZ0LmJhc2Vfc2VxID0gMTtcbiBcdG5mdF9uZXQtXHUwMDNlZ2Nfc2VxID0gMDtcbkBAIC0xMjE4Niw2ICYjNDM7MTIyMDMsNyBAQCBzdGF0aWMgdm9pZCBfX25ldF9leGl0IG5mX3RhYmxlc19leGl0X25ldChzdHJ1Y3QgbmV0ICpuZXQpXG4gXHRXQVJOX09OX09OQ0UoIWxpc3RfZW1wdHkoXHUwMDI2bmZ0X25ldC1cdTAwM2Vtb2R1bGVfbGlzdCkpO1xuIFx0V0FSTl9PTl9PTkNFKCFsaXN0X2VtcHR5KFx1MDAyNm5mdF9uZXQtXHUwMDNlbm90aWZ5X2xpc3QpKTtcbiBcdFdBUk5fT05fT05DRSghbGlzdF9lbXB0eShcdTAwMjZuZnRfbmV0LVx1MDAzZWRlc3Ryb3lfbGlzdCkpO1xuJiM0MztcdFdBUk5fT05fT05DRSghbGlzdF9lbXB0eShcdTAwMjZuZnRfbmV0LVx1MDAzZXNldF91cGRhdGVfbGlzdCkpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBuZl90YWJsZXNfZXhpdF9iYXRjaChzdHJ1Y3QgbGlzdF9oZWFkICpuZXRfZXhpdF9saXN0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDIzOjI1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORl9UQUJMRVMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZl90YWJsZXNfY29tbWl0JiMzNDssCiAgICAmIzM0O25mX3RhYmxlc19hYm9ydCYjMzQ7LAogICAgJiMzNDtuZl90YWJsZXNfbmV3c2V0ZWxlbSYjMzQ7LAogICAgJiMzNDtuZl90YWJsZXNfZGVsc2V0ZWxlbSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbmV0ZmlsdGVyIG5mX3RhYmxlcyBBUEkgdG8gaW50cm9kdWNlIGEgYHNldF91cGRhdGVfbGlzdGAgaW4gYHN0cnVjdCBuZnRhYmxlc19wZXJuZXRgLiBJdCBjaGFuZ2VzIGhvdyBzZXQgZWxlbWVudHMgYXJlIGFkZGVkLCByZW1vdmVkLCBhbmQgYWJvcnRlZCBkdXJpbmcgbmV0bGluayB0cmFuc2FjdGlvbnMuIFNwZWNpZmljYWxseSwgaXQgbW9kaWZpZXMgYG5mdF90cmFuc19jb21taXRfbGlzdF9hZGRfZWxlbWAsIGBuZnRfc2V0X2NvbW1pdF91cGRhdGVgLCBgbmZfdGFibGVzX2NvbW1pdGAsIGFuZCBgX19uZl90YWJsZXNfYWJvcnRgIHRvIGhhbmRsZSB0aGUgbmV3IGxpc3QgYW5kIGVuc3VyZSBwcm9wZXIgb3JkZXJpbmcgb2Ygc2V0IHVwZGF0ZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXRmaWx0ZXIgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgdmlhIG5ldGxpbmsgc29ja2V0cyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBwcmV2ZW50IHJlZ3Jlc3Npb25zIG9yIG1lbW9yeSBjb3JydXB0aW9uIGlzc3Vlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDBkOTMxMmEwZDhkYTZjZTgyZTA1MzY4NDM5YTk5ZjdhNjBkMmY5MWMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEF1ZyAxMiAyMzoyNTozMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L25ldGZpbHRlci9uZl90YWJsZXMuaCBiL2luY2x1ZGUvbmV0L25ldGZpbHRlci9uZl90YWJsZXMuaAppbmRleCAzYmU2MTIxNDVjMTMwLi4yMzhmNmVjYjkwZTk5IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlcy5oCkBAIC0xOTQ5LDYgJiM0MzsxOTQ5LDcgQEAgc3RydWN0IG5mdGFibGVzX3Blcm5ldCB7CiAJc3RydWN0IGxpc3RfaGVhZAliaW5kaW5nX2xpc3Q7CiAJc3RydWN0IGxpc3RfaGVhZAltb2R1bGVfbGlzdDsKIAlzdHJ1Y3QgbGlzdF9oZWFkCW5vdGlmeV9saXN0OwomIzQzOwlzdHJ1Y3QgbGlzdF9oZWFkCXNldF91cGRhdGVfbGlzdDsKIAlzdHJ1Y3QgbXV0ZXgJCWNvbW1pdF9tdXRleDsKIAl1NjQJCQl0YWJsZV9oYW5kbGU7CiAJdTY0CQkJdHN0YW1wOwpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMgYi9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYwppbmRleCBhZjM1N2Y2YzUwNzBiLi41YzRmNmMzNTQ1OTUwIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYwpAQCAtNTk1LDEwICYjNDM7NTk1LDE1IEBAIHN0YXRpYyB2b2lkIG5mdF90cmFuc19jb21taXRfbGlzdF9hZGRfdGFpbChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBuZnRfdHJhbnMgKnRyCiBzdGF0aWMgdm9pZCBuZnRfdHJhbnNfY29tbWl0X2xpc3RfYWRkX2VsZW0oc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmZ0X3RyYW5zICp0cmFucykKIHsKIAlzdHJ1Y3QgbmZ0YWJsZXNfcGVybmV0ICpuZnRfbmV0ID0gbmZ0X3Blcm5ldChuZXQpOwomIzQzOwlzdHJ1Y3QgbmZ0X3RyYW5zX2VsZW0gKnRlOwogCiAJV0FSTl9PTl9PTkNFKHRyYW5zLSZndDttc2dfdHlwZSAhPSBORlRfTVNHX05FV1NFVEVMRU0gJmFtcDsmYW1wOwogCQkgICAgIHRyYW5zLSZndDttc2dfdHlwZSAhPSBORlRfTVNHX0RFTFNFVEVMRU0pOwogCiYjNDM7CXRlID0gbmZ0X3RyYW5zX2NvbnRhaW5lcl9lbGVtKHRyYW5zKTsKJiM0MzsJaWYgKHRlLSZndDtzZXQtJmd0O29wcy0mZ3Q7Y29tbWl0ICZhbXA7JmFtcDsgbGlzdF9lbXB0eSgmYW1wO3RlLSZndDtzZXQtJmd0O3BlbmRpbmdfdXBkYXRlKSkKJiM0MzsJCWxpc3RfYWRkX3RhaWwoJmFtcDt0ZS0mZ3Q7c2V0LSZndDtwZW5kaW5nX3VwZGF0ZSwgJmFtcDtuZnRfbmV0LSZndDtzZXRfdXBkYXRlX2xpc3QpOwomIzQzOwogCWlmIChuZnRfdHJhbnNfdHJ5X2NvbGxhcHNlKG5mdF9uZXQsIHRyYW5zKSkgewogCQlrZnJlZSh0cmFucyk7CiAJCXJldHVybjsKQEAgLTcyMDUsNiAmIzQzOzcyMTAsMjAgQEAgc3RhdGljIHZvaWQgbmZ0X3RyYW5zX2VsZW1zX3JlbW92ZShjb25zdCBzdHJ1Y3QgbmZ0X2N0eCAqY3R4LAogCX0KIH0KIAomIzQzO3N0YXRpYyB2b2lkIG5mdF90cmFuc19lbGVtc19yZW1vdmVfbm90aWZ5KGNvbnN0IHN0cnVjdCBuZnRfY3R4ICpjdHgsCiYjNDM7CQkJCQkgIGNvbnN0IHN0cnVjdCBuZnRfdHJhbnNfZWxlbSAqdGUpCiYjNDM7ewomIzQzOwlpbnQgaTsKJiM0MzsKJiM0MzsJZm9yIChpID0gMDsgaSAmbHQ7IHRlLSZndDtuZWxlbXM7IGkmIzQzOyYjNDM7KSB7CiYjNDM7CQlXQVJOX09OX09OQ0UodGUtJmd0O2VsZW1zW2ldLnVwZGF0ZSk7CiYjNDM7CiYjNDM7CQluZl90YWJsZXNfc2V0ZWxlbV9ub3RpZnkoY3R4LCB0ZS0mZ3Q7c2V0LAomIzQzOwkJCQkJIHRlLSZndDtlbGVtc1tpXS5wcml2LAomIzQzOwkJCQkJIHRlLSZndDtuZnRfdHJhbnMubXNnX3R5cGUpOwomIzQzOwl9CiYjNDM7fQomIzQzOwogc3RhdGljIGJvb2wgbmZ0X3NldGVsZW1fdmFsaWRfa2V5X2VuZChjb25zdCBzdHJ1Y3QgbmZ0X3NldCAqc2V0LAogCQkJCSAgICAgIHN0cnVjdCBubGF0dHIgKipubGEsIHUzMiBmbGFncykKIHsKQEAgLTEwODQ4LDExICYjNDM7MTA4NjcsMzEgQEAgc3RhdGljIHZvaWQgbmZfdGFibGVzX2NvbW1pdF9hdWRpdF9sb2coc3RydWN0IGxpc3RfaGVhZCAqYWRsLCB1MzIgZ2VuZXJhdGlvbikKIAl9CiB9CiAKLXN0YXRpYyB2b2lkIG5mdF9zZXRfY29tbWl0X3VwZGF0ZShzdHJ1Y3QgbGlzdF9oZWFkICpzZXRfdXBkYXRlX2xpc3QpCiYjNDM7c3RhdGljIHZvaWQgbmZ0X3NldF9jb21taXRfdXBkYXRlKHN0cnVjdCBuZnRfY3R4ICpjdHgsCiYjNDM7CQkJCSAgc3RydWN0IG5mdGFibGVzX3Blcm5ldCAqbmZ0X25ldCkKIHsKIAlzdHJ1Y3QgbmZ0X3NldCAqc2V0LCAqbmV4dDsKJiM0MzsJc3RydWN0IG5mdF90cmFuc19lbGVtICp0ZTsKJiM0MzsJc3RydWN0IG5mdF90cmFucyAqdHJhbnM7CiAKLQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoc2V0LCBuZXh0LCBzZXRfdXBkYXRlX2xpc3QsIHBlbmRpbmdfdXBkYXRlKSB7CiYjNDM7CWlmIChsaXN0X2VtcHR5KCZhbXA7bmZ0X25ldC0mZ3Q7c2V0X3VwZGF0ZV9saXN0KSkKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJbGlzdF9mb3JfZWFjaF9lbnRyeSh0cmFucywgJmFtcDtuZnRfbmV0LSZndDtjb21taXRfbGlzdCwgbGlzdCkgewomIzQzOwkJbmZ0X2N0eF91cGRhdGUoY3R4LCB0cmFucyk7CiYjNDM7CiYjNDM7CQlzd2l0Y2ggKHRyYW5zLSZndDttc2dfdHlwZSkgewomIzQzOwkJY2FzZSBORlRfTVNHX0RFTFNFVEVMRU06CiYjNDM7CQkJdGUgPSBuZnRfdHJhbnNfY29udGFpbmVyX2VsZW0odHJhbnMpOwomIzQzOwkJCWlmICghdGUtJmd0O3NldC0mZ3Q7b3BzLSZndDtjb21taXQpCiYjNDM7CQkJCWJyZWFrOwomIzQzOwomIzQzOwkJCW5mdF90cmFuc19lbGVtc19yZW1vdmUoY3R4LCB0ZSk7CiYjNDM7CQkJYnJlYWs7CiYjNDM7CQl9CiYjNDM7CX0KJiM0MzsKJiM0MzsJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHNldCwgbmV4dCwgJmFtcDtuZnRfbmV0LSZndDtzZXRfdXBkYXRlX2xpc3QsIHBlbmRpbmdfdXBkYXRlKSB7CiAJCWxpc3RfZGVsX2luaXQoJmFtcDtzZXQtJmd0O3BlbmRpbmdfdXBkYXRlKTsKIAogCQlpZiAoIXNldC0mZ3Q7b3BzLSZndDtjb21taXQgfHwgc2V0LSZndDtkZWFkKQpAQCAtMTA4ODUsNyAmIzQzOzEwOTI0LDYgQEAgc3RhdGljIGludCBuZl90YWJsZXNfY29tbWl0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAlzdHJ1Y3QgbmZ0X3RyYW5zX2JpbmRpbmcgKnRyYW5zX2JpbmRpbmc7CiAJc3RydWN0IG5mdF90cmFucyAqdHJhbnMsICpuZXh0OwogCXVuc2lnbmVkIGludCBiYXNlX3NlcSwgZ2Nfc2VxOwotCUxJU1RfSEVBRChzZXRfdXBkYXRlX2xpc3QpOwogCXN0cnVjdCBuZnRfdHJhbnNfZWxlbSAqdGU7CiAJc3RydWN0IG5mdF9jaGFpbiAqY2hhaW47CiAJc3RydWN0IG5mdF90YWJsZSAqdGFibGU7CkBAIC0xMDk2MCw2ICYjNDM7MTA5OTgsOCBAQCBzdGF0aWMgaW50IG5mX3RhYmxlc19jb21taXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCX0KIAogCS8qIHN0ZXAgMi4gIE1ha2UgcnVsZXNfZ2VuX1ggdmlzaWJsZSB0byBwYWNrZXQgcGF0aCAqLwomIzQzOwluZnRfc2V0X2NvbW1pdF91cGRhdGUoJmFtcDtjdHgsIG5mdF9uZXQpOwomIzQzOwogCWxpc3RfZm9yX2VhY2hfZW50cnkodGFibGUsICZhbXA7bmZ0X25ldC0mZ3Q7dGFibGVzLCBsaXN0KSB7CiAJCWxpc3RfZm9yX2VhY2hfZW50cnkoY2hhaW4sICZhbXA7dGFibGUtJmd0O2NoYWlucywgbGlzdCkKIAkJCW5mX3RhYmxlc19jb21taXRfY2hhaW4obmV0LCBjaGFpbik7CkBAIC0xMTA5MSwyNyAmIzQzOzExMTMxLDE2IEBAIHN0YXRpYyBpbnQgbmZfdGFibGVzX2NvbW1pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IpCiAJCQlicmVhazsKIAkJY2FzZSBORlRfTVNHX05FV1NFVEVMRU06CiAJCQl0ZSA9IG5mdF90cmFuc19jb250YWluZXJfZWxlbSh0cmFucyk7Ci0KIAkJCW5mdF90cmFuc19lbGVtc19hZGQoJmFtcDtjdHgsIHRlKTsKLQotCQkJaWYgKHRlLSZndDtzZXQtJmd0O29wcy0mZ3Q7Y29tbWl0ICZhbXA7JmFtcDsKLQkJCSAgICBsaXN0X2VtcHR5KCZhbXA7dGUtJmd0O3NldC0mZ3Q7cGVuZGluZ191cGRhdGUpKSB7Ci0JCQkJbGlzdF9hZGRfdGFpbCgmYW1wO3RlLSZndDtzZXQtJmd0O3BlbmRpbmdfdXBkYXRlLAotCQkJCQkgICAgICAmYW1wO3NldF91cGRhdGVfbGlzdCk7Ci0JCQl9CiAJCQluZnRfdHJhbnNfZGVzdHJveSh0cmFucyk7CiAJCQlicmVhazsKIAkJY2FzZSBORlRfTVNHX0RFTFNFVEVMRU06CiAJCWNhc2UgTkZUX01TR19ERVNUUk9ZU0VURUxFTToKIAkJCXRlID0gbmZ0X3RyYW5zX2NvbnRhaW5lcl9lbGVtKHRyYW5zKTsKLQotCQkJbmZ0X3RyYW5zX2VsZW1zX3JlbW92ZSgmYW1wO2N0eCwgdGUpOwotCi0JCQlpZiAodGUtJmd0O3NldC0mZ3Q7b3BzLSZndDtjb21taXQgJmFtcDsmYW1wOwotCQkJICAgIGxpc3RfZW1wdHkoJmFtcDt0ZS0mZ3Q7c2V0LSZndDtwZW5kaW5nX3VwZGF0ZSkpIHsKLQkJCQlsaXN0X2FkZF90YWlsKCZhbXA7dGUtJmd0O3NldC0mZ3Q7cGVuZGluZ191cGRhdGUsCi0JCQkJCSAgICAgICZhbXA7c2V0X3VwZGF0ZV9saXN0KTsKLQkJCX0KJiM0MzsJCQlpZiAodGUtJmd0O3NldC0mZ3Q7b3BzLSZndDtjb21taXQpCiYjNDM7CQkJCW5mdF90cmFuc19lbGVtc19yZW1vdmVfbm90aWZ5KCZhbXA7Y3R4LCB0ZSk7CiYjNDM7CQkJZWxzZQomIzQzOwkJCQluZnRfdHJhbnNfZWxlbXNfcmVtb3ZlKCZhbXA7Y3R4LCB0ZSk7CiAJCQlicmVhazsKIAkJY2FzZSBORlRfTVNHX05FV09CSjoKIAkJCWlmIChuZnRfdHJhbnNfb2JqX3VwZGF0ZSh0cmFucykpIHsKQEAgLTExMTgwLDggJiM0MzsxMTIwOSw2IEBAIHN0YXRpYyBpbnQgbmZfdGFibGVzX2NvbW1pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IpCiAJCX0KIAl9CiAKLQluZnRfc2V0X2NvbW1pdF91cGRhdGUoJmFtcDtzZXRfdXBkYXRlX2xpc3QpOwotCiAJbmZ0X2NvbW1pdF9ub3RpZnkobmV0LCBORVRMSU5LX0NCKHNrYikucG9ydGlkKTsKIAluZl90YWJsZXNfZ2VuX25vdGlmeShuZXQsIHNrYiwgTkZUX01TR19ORVdHRU4pOwogCW5mX3RhYmxlc19jb21taXRfYXVkaXRfbG9nKCZhbXA7YWRsLCBuZnRfYmFzZV9zZXEobmV0KSk7CkBAIC0xMTI0NywxMSAmIzQzOzExMjc0LDExIEBAIHN0YXRpYyB2b2lkIG5mX3RhYmxlc19hYm9ydF9yZWxlYXNlKHN0cnVjdCBuZnRfdHJhbnMgKnRyYW5zKQogCWtmcmVlKHRyYW5zKTsKIH0KIAotc3RhdGljIHZvaWQgbmZ0X3NldF9hYm9ydF91cGRhdGUoc3RydWN0IGxpc3RfaGVhZCAqc2V0X3VwZGF0ZV9saXN0KQomIzQzO3N0YXRpYyB2b2lkIG5mdF9zZXRfYWJvcnRfdXBkYXRlKHN0cnVjdCBuZnRhYmxlc19wZXJuZXQgKm5mdF9uZXQpCiB7CiAJc3RydWN0IG5mdF9zZXQgKnNldCwgKm5leHQ7CiAKLQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoc2V0LCBuZXh0LCBzZXRfdXBkYXRlX2xpc3QsIHBlbmRpbmdfdXBkYXRlKSB7CiYjNDM7CWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShzZXQsIG5leHQsICZhbXA7bmZ0X25ldC0mZ3Q7c2V0X3VwZGF0ZV9saXN0LCBwZW5kaW5nX3VwZGF0ZSkgewogCQlsaXN0X2RlbF9pbml0KCZhbXA7c2V0LSZndDtwZW5kaW5nX3VwZGF0ZSk7CiAKIAkJaWYgKCFzZXQtJmd0O29wcy0mZ3Q7YWJvcnQpCkBAIC0xMTM4NiwzMyAmIzQzOzExNDEzLDIyIEBAIHN0YXRpYyBpbnQgX19uZl90YWJsZXNfYWJvcnQoc3RydWN0IG5ldCAqbmV0LCBlbnVtIG5mbmxfYWJvcnRfYWN0aW9uIGFjdGlvbikKIAkJCW5mdF90cmFuc19kZXN0cm95KHRyYW5zKTsKIAkJCWJyZWFrOwogCQljYXNlIE5GVF9NU0dfTkVXU0VURUxFTToKJiM0MzsJCQl0ZSA9IG5mdF90cmFuc19jb250YWluZXJfZWxlbSh0cmFucyk7CiAJCQlpZiAobmZ0X3RyYW5zX2VsZW1fc2V0X2JvdW5kKHRyYW5zKSkgewomIzQzOwkJCQlsaXN0X2RlbF9pbml0KCZhbXA7dGUtJmd0O3NldC0mZ3Q7cGVuZGluZ191cGRhdGUpOwogCQkJCW5mdF90cmFuc19kZXN0cm95KHRyYW5zKTsKIAkJCQlicmVhazsKIAkJCX0KLQkJCXRlID0gbmZ0X3RyYW5zX2NvbnRhaW5lcl9lbGVtKHRyYW5zKTsKIAkJCWlmICghbmZ0X3RyYW5zX2VsZW1zX25ld19hYm9ydCgmYW1wO2N0eCwgdGUpKSB7CiAJCQkJbmZ0X3RyYW5zX2Rlc3Ryb3kodHJhbnMpOwogCQkJCWJyZWFrOwogCQkJfQotCi0JCQlpZiAodGUtJmd0O3NldC0mZ3Q7b3BzLSZndDthYm9ydCAmYW1wOyZhbXA7Ci0JCQkgICAgbGlzdF9lbXB0eSgmYW1wO3RlLSZndDtzZXQtJmd0O3BlbmRpbmdfdXBkYXRlKSkgewotCQkJCWxpc3RfYWRkX3RhaWwoJmFtcDt0ZS0mZ3Q7c2V0LSZndDtwZW5kaW5nX3VwZGF0ZSwKLQkJCQkJICAgICAgJmFtcDtzZXRfdXBkYXRlX2xpc3QpOwotCQkJfQogCQkJYnJlYWs7CiAJCWNhc2UgTkZUX01TR19ERUxTRVRFTEVNOgogCQljYXNlIE5GVF9NU0dfREVTVFJPWVNFVEVMRU06CiAJCQl0ZSA9IG5mdF90cmFuc19jb250YWluZXJfZWxlbSh0cmFucyk7CiAKIAkJCW5mdF90cmFuc19lbGVtc19kZXN0cm95X2Fib3J0KCZhbXA7Y3R4LCB0ZSk7Ci0KLQkJCWlmICh0ZS0mZ3Q7c2V0LSZndDtvcHMtJmd0O2Fib3J0ICZhbXA7JmFtcDsKLQkJCSAgICBsaXN0X2VtcHR5KCZhbXA7dGUtJmd0O3NldC0mZ3Q7cGVuZGluZ191cGRhdGUpKSB7Ci0JCQkJbGlzdF9hZGRfdGFpbCgmYW1wO3RlLSZndDtzZXQtJmd0O3BlbmRpbmdfdXBkYXRlLAotCQkJCQkgICAgICAmYW1wO3NldF91cGRhdGVfbGlzdCk7Ci0JCQl9CiAJCQluZnRfdHJhbnNfZGVzdHJveSh0cmFucyk7CiAJCQlicmVhazsKIAkJY2FzZSBORlRfTVNHX05FV09CSjoKQEAgLTExNDU4LDcgJiM0MzsxMTQ3NCw3IEBAIHN0YXRpYyBpbnQgX19uZl90YWJsZXNfYWJvcnQoc3RydWN0IG5ldCAqbmV0LCBlbnVtIG5mbmxfYWJvcnRfYWN0aW9uIGFjdGlvbikKIAogCVdBUk5fT05fT05DRSghbGlzdF9lbXB0eSgmYW1wO25mdF9uZXQtJmd0O2NvbW1pdF9zZXRfbGlzdCkpOwogCi0JbmZ0X3NldF9hYm9ydF91cGRhdGUoJmFtcDtzZXRfdXBkYXRlX2xpc3QpOwomIzQzOwluZnRfc2V0X2Fib3J0X3VwZGF0ZShuZnRfbmV0KTsKIAogCXN5bmNocm9uaXplX3JjdSgpOwogCkBAIC0xMjE0Miw2ICYjNDM7MTIxNTgsNyBAQCBzdGF0aWMgaW50IF9fbmV0X2luaXQgbmZfdGFibGVzX2luaXRfbmV0KHN0cnVjdCBuZXQgKm5ldCkKIAlJTklUX0xJU1RfSEVBRCgmYW1wO25mdF9uZXQtJmd0O2JpbmRpbmdfbGlzdCk7CiAJSU5JVF9MSVNUX0hFQUQoJmFtcDtuZnRfbmV0LSZndDttb2R1bGVfbGlzdCk7CiAJSU5JVF9MSVNUX0hFQUQoJmFtcDtuZnRfbmV0LSZndDtub3RpZnlfbGlzdCk7CiYjNDM7CUlOSVRfTElTVF9IRUFEKCZhbXA7bmZ0X25ldC0mZ3Q7c2V0X3VwZGF0ZV9saXN0KTsKIAltdXRleF9pbml0KCZhbXA7bmZ0X25ldC0mZ3Q7Y29tbWl0X211dGV4KTsKIAluZXQtJmd0O25mdC5iYXNlX3NlcSA9IDE7CiAJbmZ0X25ldC0mZ3Q7Z2Nfc2VxID0gMDsKQEAgLTEyMTg2LDYgJiM0MzsxMjIwMyw3IEBAIHN0YXRpYyB2b2lkIF9fbmV0X2V4aXQgbmZfdGFibGVzX2V4aXRfbmV0KHN0cnVjdCBuZXQgKm5ldCkKIAlXQVJOX09OX09OQ0UoIWxpc3RfZW1wdHkoJmFtcDtuZnRfbmV0LSZndDttb2R1bGVfbGlzdCkpOwogCVdBUk5fT05fT05DRSghbGlzdF9lbXB0eSgmYW1wO25mdF9uZXQtJmd0O25vdGlmeV9saXN0KSk7CiAJV0FSTl9PTl9PTkNFKCFsaXN0X2VtcHR5KCZhbXA7bmZ0X25ldC0mZ3Q7ZGVzdHJveV9saXN0KSk7CiYjNDM7CVdBUk5fT05fT05DRSghbGlzdF9lbXB0eSgmYW1wO25mdF9uZXQtJmd0O3NldF91cGRhdGVfbGlzdCkpOwogfQogCiBzdGF0aWMgdm9pZCBuZl90YWJsZXNfZXhpdF9iYXRjaChzdHJ1Y3QgbGlzdF9oZWFkICpuZXRfZXhpdF9saXN0KQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAyMzoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzgwCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIG5mX3RhYmxlcyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IGRpdmVzIHByZXR0eSBkZWVwIGludG8gdGhlIG5mX3RhYmxlcyBjb3JlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGhvdyBzZXQgZWxlbWVudHMgYXJlIGhhbmRsZWQgaW4gbmV0ZmlsdGVyLiBUaGUgY2hhbmdlcyBmb2N1cyBvbiBgbmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmNgIGFuZCBgaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlcy5oYC4gSXQgc2VlbXMgd2UmIzM5O3JlIGludHJvZHVjaW5nIGEgYHNldF91cGRhdGVfbGlzdGAgd2l0aGluIHRoZSBgbmZ0YWJsZXNfcGVybmV0YCBzdHJ1Y3R1cmUuIFRoaXMgaXMgc2lnbmlmaWNhbnQsIGFzIGl0IGluZGljYXRlcyBhIHNoaWZ0IGluIGhvdyBzZXQgdXBkYXRlcyBhcmUgbWFuYWdlZCBkdXJpbmcgdHJhbnNhY3Rpb25zLgoKVGhlIHBhdGNoIG1vZGlmaWVzIHNldmVyYWwgY3J1Y2lhbCBmdW5jdGlvbnM6IGBuZnRfdHJhbnNfY29tbWl0X2xpc3RfYWRkX2VsZW1gIHRvIHBvcHVsYXRlIHRoaXMgbmV3IGBzZXRfdXBkYXRlX2xpc3RgLiBBbHNvLCB3ZSBzZWUgY2hhbmdlcyBpbiBgbmZ0X3NldF9jb21taXRfdXBkYXRlYCwgd2hpY2ggbm93IGl0ZXJhdGVzIG92ZXIgKmJvdGgqIHRoZSBgY29tbWl0X2xpc3RgICphbmQqIHRoZSBuZXcgYHNldF91cGRhdGVfbGlzdGAuICBDcnVjaWFsbHksIGBuZl90YWJsZXNfY29tbWl0YCBpcyBiZWluZyBhbHRlcmVkIHRvIGNhbGwgYG5mdF9zZXRfY29tbWl0X3VwZGF0ZWAgKmJlZm9yZSogdGhlIHJ1bGVzIGJlY29tZSB2aXNpYmxlLiBUaGlzIGlzIGEgZnVuZGFtZW50YWwgY2hhbmdlIGluIGNvbW1pdCBvcmRlci4gIEZpbmFsbHksIGBfX25mX3RhYmxlc19hYm9ydGAgbm93IHVzZXMgYG5mdF9zZXRfYWJvcnRfdXBkYXRlYCwgd2hpY2ggcHJvYmFibHkgdW5kb2VzIHRoZXNlIGNoYW5nZXMuCgpGdW5jdGlvbmFsbHksIHRoaXMgaW1wYWN0cyB0aGUgd2F5IHNldCBlbGVtZW50cyBhcmUgY29tbWl0dGVkIGFuZCBhYm9ydGVkIHdpdGhpbiBuZl90YWJsZXMuIFRoZSBjaGFuZ2UgaXMgZGVmaW5pdGVseSByZWFjaGFibGUsIGFuZCBnaXZlbiBpdHMgY29yZSBuYXR1cmUsIHRoaXMgaXMgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGNvbmZpZ3VyYXRpb25zIGFyZSByZWxldmFudCDigJMgYENPTkZJR19ORl9UQUJMRVNgIHNlZW1zIGxpa2UgdGhlIG9idmlvdXMgc3RhcnRpbmcgcG9pbnQuCgpOb3csIGxldCYjMzk7cyBpZGVudGlmeSB0aGUga2V5IHN5bWJvbHMgbW9kaWZpZWQgYnkgdGhlIHBhdGNoOiBgbmZ0X3RyYW5zX2NvbW1pdF9saXN0X2FkZF9lbGVtYCwgYG5mdF90cmFuc19lbGVtc19yZW1vdmVgLCBgbmZ0X3RyYW5zX2VsZW1zX3JlbW92ZV9ub3RpZnlgLCBgbmZ0X3NldF9jb21taXRfdXBkYXRlYCwgYG5mX3RhYmxlc19jb21taXRgLCBgbmZ0X3NldF9hYm9ydF91cGRhdGVgLCBgX19uZl90YWJsZXNfYWJvcnRgLCBgbmZfdGFibGVzX2luaXRfbmV0YCwgYW5kIGBuZl90YWJsZXNfZXhpdF9uZXRgLiBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIGBuZl90YWJsZXNfY29tbWl0YCBpcyBleHBvcnRlZCBvciBub3QsIGJlY2F1c2UgaXQgc2VlbXMgb2RkIHRoYXQgaXQgd291bGQgYmUgc3RhdGljLiBJIG5lZWQgdG8gbWFrZSBzdXJlLiBJJiMzOTtsbCBjaGVjay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAyMzoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZl90YWJsZXNfY29tbWl0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9MTAzMDU9RVhQT1JUX1NZTUJPTF9HUEwobmZfdGFibGVzX3RyYW5zX2Rlc3Ryb3lfZmx1c2hfd29yayk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDMwNi1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwMzA3OnN0YXRpYyBpbnQgbmZfdGFibGVzX2NvbW1pdF9jaGFpbl9wcmVwYXJlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5mdF9jaGFpbiAqY2hhaW4pXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDMwOC17XG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTAzODEtXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDM4MjpzdGF0aWMgdm9pZCBuZl90YWJsZXNfY29tbWl0X2NoYWluX3ByZXBhcmVfY2FuY2VsKHN0cnVjdCBuZXQgKm5ldClcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwMzgzLXtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDM5Ny1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwMzk4OnN0YXRpYyB2b2lkIF9fbmZfdGFibGVzX2NvbW1pdF9jaGFpbl9mcmVlX3J1bGVzKHN0cnVjdCByY3VfaGVhZCAqaClcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwMzk5LXtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDQwNC1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwNDA1OnN0YXRpYyB2b2lkIG5mX3RhYmxlc19jb21taXRfY2hhaW5fZnJlZV9ydWxlc19vbGQoc3RydWN0IG5mdF9ydWxlX2Jsb2IgKmJsb2IpXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDQwNi17XG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA0MTItXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDQxMzpcdGNhbGxfcmN1KFx1MDAyNmxhc3QtXHUwMDNlaCwgX19uZl90YWJsZXNfY29tbWl0X2NoYWluX2ZyZWVfcnVsZXMpO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA0MTQtfVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA0MTUtXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDQxNjpzdGF0aWMgdm9pZCBuZl90YWJsZXNfY29tbWl0X2NoYWluKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5mdF9jaGFpbiAqY2hhaW4pXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDQxNy17XG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA0MzgtXHRcdFx0cmN1X2Fzc2lnbl9wb2ludGVyKGNoYWluLVx1MDAzZWJsb2JfZ2VuXzEsIGcwKTtcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwNDM5Olx0XHRcdG5mX3RhYmxlc19jb21taXRfY2hhaW5fZnJlZV9ydWxlc19vbGQoZzEpO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA0NDAtXHRcdH0gZWxzZSB7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDQ0MS1cdFx0XHRyY3VfYXNzaWduX3BvaW50ZXIoY2hhaW4tXHUwMDNlYmxvYl9nZW5fMCwgZzEpO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTA0NDI6XHRcdFx0bmZfdGFibGVzX2NvbW1pdF9jaGFpbl9mcmVlX3J1bGVzX29sZChnMCk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDQ0My1cdFx0fVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwNDU4LVx0aWYgKG5leHRfZ2VuYml0KVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTA0NTk6XHRcdG5mX3RhYmxlc19jb21taXRfY2hhaW5fZnJlZV9ydWxlc19vbGQoZzEpO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA0NjAtXHRlbHNlXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDQ2MTpcdFx0bmZfdGFibGVzX2NvbW1pdF9jaGFpbl9mcmVlX3J1bGVzX29sZChnMCk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDQ2Mi19XG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9MTA3MTE9c3RhdGljIHZvaWQgbmZfdGFibGVzX21vZHVsZV9hdXRvbG9hZF9jbGVhbnVwKHN0cnVjdCBuZXQgKm5ldClcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDcyMy1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwNzI0OnN0YXRpYyB2b2lkIG5mX3RhYmxlc19jb21taXRfcmVsZWFzZShzdHJ1Y3QgbmV0ICpuZXQpXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDcyNS17XG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9MTA3NTg9c3RhdGljIHZvaWQgbmZ0X2NvbW1pdF9ub3RpZnkoc3RydWN0IG5ldCAqbmV0LCB1MzIgcG9ydGlkKVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwNzkzLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTA3OTQ6c3RhdGljIGludCBuZl90YWJsZXNfY29tbWl0X2F1ZGl0X2FsbG9jKHN0cnVjdCBsaXN0X2hlYWQgKmFkbCxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwNzk1LVx0XHRcdFx0XHRzdHJ1Y3QgbmZ0X3RhYmxlICp0YWJsZSlcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDgxMC1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwODExOnN0YXRpYyB2b2lkIG5mX3RhYmxlc19jb21taXRfYXVkaXRfZnJlZShzdHJ1Y3QgbGlzdF9oZWFkICphZGwpXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDgxMi17XG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA4MjMtICovXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDgyNDpzdGF0aWMgdW5zaWduZWQgaW50IG5mX3RhYmxlc19jb21taXRfYXVkaXRfZW50cnljb3VudChjb25zdCBzdHJ1Y3QgbmZ0X3RyYW5zICp0cmFucylcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwODI1LXtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDgzNC1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwODM1OnN0YXRpYyB2b2lkIG5mX3RhYmxlc19jb21taXRfYXVkaXRfY29sbGVjdChzdHJ1Y3QgbGlzdF9oZWFkICphZGwsXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDgzNi1cdFx0XHRcdFx0ICAgY29uc3Qgc3RydWN0IG5mdF90cmFucyAqdHJhbnMsIHUzMiBvcClcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDg0Ny1mb3VuZDpcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwODQ4Olx0YWRwLVx1MDAzZWVudHJpZXMgJiM0Mzs9IG5mX3RhYmxlc19jb21taXRfYXVkaXRfZW50cnljb3VudCh0cmFucyk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDg0OS1cdGlmICghYWRwLVx1MDAzZW9wIHx8IGFkcC1cdTAwM2VvcCBcdTAwM2Ugb3ApXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA4NTQtXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDg1NTpzdGF0aWMgdm9pZCBuZl90YWJsZXNfY29tbWl0X2F1ZGl0X2xvZyhzdHJ1Y3QgbGlzdF9oZWFkICphZGwsIHUzMiBnZW5lcmF0aW9uKVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA4NTYte1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTEwOTE1PXN0YXRpYyB2b2lkIG5mdF9nY19zZXFfZW5kKHN0cnVjdCBuZnRhYmxlc19wZXJuZXQgKm5mdF9uZXQsIHVuc2lnbmVkIGludCBnY19zZXEpXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA5MTktXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDkyMDpzdGF0aWMgaW50IG5mX3RhYmxlc19jb21taXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA5MjEte1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwOTgwLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTA5ODE6XHRcdHJldCA9IG5mX3RhYmxlc19jb21taXRfYXVkaXRfYWxsb2MoXHUwMDI2YWRsLCB0YWJsZSk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDk4Mi1cdFx0aWYgKHJldCkge1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTA5ODM6XHRcdFx0bmZfdGFibGVzX2NvbW1pdF9jaGFpbl9wcmVwYXJlX2NhbmNlbChuZXQpO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTA5ODQ6XHRcdFx0bmZfdGFibGVzX2NvbW1pdF9hdWRpdF9mcmVlKFx1MDAyNmFkbCk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDk4NS1cdFx0XHRyZXR1cm4gcmV0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwOTkwLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTA5OTE6XHRcdFx0cmV0ID0gbmZfdGFibGVzX2NvbW1pdF9jaGFpbl9wcmVwYXJlKG5ldCwgY2hhaW4pO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA5OTItXHRcdFx0aWYgKHJldCBcdTAwM2MgMCkge1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTA5OTM6XHRcdFx0XHRuZl90YWJsZXNfY29tbWl0X2NoYWluX3ByZXBhcmVfY2FuY2VsKG5ldCk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDk5NDpcdFx0XHRcdG5mX3RhYmxlc19jb21taXRfYXVkaXRfZnJlZShcdTAwMjZhZGwpO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA5OTUtXHRcdFx0XHRyZXR1cm4gcmV0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExMDA0LVx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGNoYWluLCBcdTAwMjZ0YWJsZS1cdTAwM2VjaGFpbnMsIGxpc3QpXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTAwNTpcdFx0XHRuZl90YWJsZXNfY29tbWl0X2NoYWluKG5ldCwgY2hhaW4pO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTEwMDYtXHR9XG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTEwMjgtXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTAyOTpcdFx0bmZfdGFibGVzX2NvbW1pdF9hdWRpdF9jb2xsZWN0KFx1MDAyNmFkbCwgdHJhbnMsIHRyYW5zLVx1MDAzZW1zZ190eXBlKTtcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExMDMwLVx0XHRzd2l0Y2ggKHRyYW5zLVx1MDAzZW1zZ190eXBlKSB7XG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTEyMTMtXHRuZl90YWJsZXNfZ2VuX25vdGlmeShuZXQsIHNrYiwgTkZUX01TR19ORVdHRU4pO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTEyMTQ6XHRuZl90YWJsZXNfY29tbWl0X2F1ZGl0X2xvZyhcdTAwMjZhZGwsIG5mdF9iYXNlX3NlcShuZXQpKTtcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExMjE1LVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExMjE3LVx0bmZ0X25ldC1cdTAwM2V2YWxpZGF0ZV9zdGF0ZSA9IE5GVF9WQUxJREFURV9TS0lQO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTEyMTg6XHRuZl90YWJsZXNfY29tbWl0X3JlbGVhc2UobmV0KTtcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExMjE5LVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTExNTM5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZuZXRsaW5rX3N1YnN5c3RlbSBuZl90YWJsZXNfc3Vic3lzID0ge1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExNTQzLVx0LmNiXHRcdD0gbmZfdGFibGVzX2NiLFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTE1NDQ6XHQuY29tbWl0XHRcdD0gbmZfdGFibGVzX2NvbW1pdCxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExNTQ1LVx0LmFib3J0XHRcdD0gbmZfdGFibGVzX2Fib3J0LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDIzOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgzMDEKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byBOZXRmaWx0ZXIgVGFibGUgT3BlcmF0aW9ucyoqCgpSaWdodCwgc28gSSBzZWUgYG5mX3RhYmxlc19jb21taXRgIGlzIGNydWNpYWwgd2l0aGluIGBuZl90YWJsZXNfc3Vic3lzYC4gTXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBob3cgdGhpcyB0aWVzIGludG8gZXJyb3IgaGFuZGxpbmcgYW5kIHJvbGxiYWNrIG1lY2hhbmlzbXMuIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byB1bmRlcnN0YW5kIHRoZSBhYm9ydCBwcm9jZXNzLiBJIG5lZWQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyBhIGZhaWxlZCBjb21taXQgaXMgaGFuZGxlZCwgYW5kIHdoYXQgc3RhdGUgdGhlIHRhYmxlcyBhcmUgbGVmdCBpbi4gVGltZSB0byBkZWx2ZSBpbnRvIGBfX25mX3RhYmxlc19hYm9ydGAuIEkmIzM5O20gY3VyaW91cyBhYm91dCB0aGUgc3BlY2lmaWMgbWVjaGFuaXNtcyBpbnZvbHZlZCBpbiByb2xsaW5nIGJhY2sgdGhlIGNoYW5nZXMgYW5kIGVuc3VyaW5nIGEgY29uc2lzdGVudCBzdGF0ZSB3aXRoaW4gdGhlIG5ldGZpbHRlciBmcmFtZXdvcmsuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgcmVzb3VyY2VzIGFyZSByZWxlYXNlZCBhbmQgd2hhdCBzYWZlZ3VhcmRzIGFyZSBpbiBwbGFjZS4gVGhlIGRldmlsJiMzOTtzIGluIHRoZSBkZXRhaWxzIHdpdGggdGhlc2UgY29tcGxleCBzeXN0ZW1zLCBzbyBJJiMzOTtsbCBwcm9iYWJseSBiZSB0cmFjaW5nIGV4ZWN1dGlvbiBmbG93IGFuZCBjaGVja2luZyBpbnZhcmlhbnRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDIzOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fbmZfdGFibGVzX2Fib3J0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9MTEyNzc9c3RhdGljIHZvaWQgbmZ0X3NldF9hYm9ydF91cGRhdGUoc3RydWN0IG5mdGFibGVzX3Blcm5ldCAqbmZ0X25ldClcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTI5MC1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjExMjkxOnN0YXRpYyBpbnQgX19uZl90YWJsZXNfYWJvcnQoc3RydWN0IG5ldCAqbmV0LCBlbnVtIG5mbmxfYWJvcnRfYWN0aW9uIGFjdGlvbilcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExMjkyLXtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz0xMTQ5MD1zdGF0aWMgaW50IG5mX3RhYmxlc19hYm9ydChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE0OTctXHRnY19zZXEgPSBuZnRfZ2Nfc2VxX2JlZ2luKG5mdF9uZXQpO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTE0OTg6XHRyZXQgPSBfX25mX3RhYmxlc19hYm9ydChuZXQsIGFjdGlvbik7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTQ5OS1cdG5mdF9nY19zZXFfZW5kKG5mdF9uZXQsIGdjX3NlcSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMjM6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODg0MgoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDQ2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgTmV0ZmlsdGVyIFRhYmxlcyBmb3IgRm9jdXMgU3ltYm9scyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgdGhlIHJpZ2h0IGZvY3VzIHN5bWJvbHMuIFRoZSBpbnN0cnVjdGlvbnMgYXJlIHByZXR0eSBjbGVhcjogcHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cy4gVGhhdCBzZWVtcyB0byBiZSB0aGUga2V5LiBMZXQmIzM5O3Mgc2VlLi4uIEkmIzM5O3ZlIGdvdCBgbmZfdGFibGVzX2NvbW1pdGAgYW5kIGBuZl90YWJsZXNfYWJvcnRgIGFzIHRoZSBpbml0aWFsIGVudHJ5IHBvaW50cywgYW5kIHllcywgYG5mX3RhYmxlc19jb21taXRgICppcyogc3RhdGljLCBidXQgaXQmIzM5O3MgYXNzaWduZWQgdG8gYSBmdW5jdGlvbiBwb2ludGVyLCBgLmNvbW1pdGAsIGluIGBuZm5ldGxpbmtfc3Vic3lzdGVtYC4gVGhhdCBpbW1lZGlhdGVseSBtYWtlcyBpdCBpbnRlcmVzdGluZywgcmlnaHQ/IFN0YXRpYyBmdW5jdGlvbnMgYXJlIHVzdWFsbHkgaW5saW5lZCwgbG9zaW5nIGRpc3RpbmN0IHN5bWJvbHMsIGJ1dCBhICpsYXJnZSogc3RhdGljIGZ1bmN0aW9uIGFzc2lnbmVkIHRvIGEgZnVuY3Rpb24gcG9pbnRlciwgbGlrZSBgbmZfdGFibGVzX2NvbW1pdGAsIGl0ICpkZWZpbml0ZWx5KiBpc24mIzM5O3QgaW5saW5lZCwgc28gaXQgc2hvdWxkIGJlIGZpbmUgdG8gdGFyZ2V0LiBJIHNlZSB0aGF0IGBuZl90YWJsZXNfdHJhbnNfZGVzdHJveV9mbHVzaF93b3JrYCBpcyBleHBvcnRlZCBidXQgbm90IG1vZGlmaWVkLCBhbmQgdGhlIHBhdGNoIHRvdWNoZXMgc2V2ZXJhbCBmdW5jdGlvbnM6IGBuZnRfdHJhbnNfY29tbWl0X2xpc3RfYWRkX2VsZW1gLCBgbmZ0X3RyYW5zX2VsZW1zX3JlbW92ZWAsIGBuZnRfdHJhbnNfZWxlbXNfcmVtb3ZlX25vdGlmeWAsIGBuZnRfc2V0X2NvbW1pdF91cGRhdGVgLCBgbmZ0X3NldF9hYm9ydF91cGRhdGVgLCBgX19uZl90YWJsZXNfYWJvcnRgLCBgbmZfdGFibGVzX2luaXRfbmV0YCwgYW5kIGBuZl90YWJsZXNfZXhpdF9uZXRgLgoKU28gdGhlIHBhdGNoIG1vZGlmaWVzIGEgaGFuZGZ1bCBvZiBmdW5jdGlvbnMsIHNvbWUgb2Ygd2hpY2ggbWF5IGJlIGlubGluZWQgb3Igc3RhdGljLCBidXQgdGhlIG1haW4gcG9pbnQgaXMgdG8gaWRlbnRpZnkgdGhlIGJlc3QsIG5vbi1pbmxpbmVkIGVudHJ5IHBvaW50cy4KCkkgcmVtZW1iZXIgdGhlIGluc3RydWN0aW9ucy4gV2Ugd2FudCB0aG9zZSBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMuIFNvLCBgbmZfdGFibGVzX2NvbW1pdGAgYW5kIGBuZl90YWJsZXNfYWJvcnRgLCBiZWNhdXNlIHRoZXkgYXJlIGFzc2lnbmVkIHRvIGZ1bmN0aW9uIHBvaW50ZXJzLCB0aGV5IGhhdmUgZGlzdGluY3Qgc3ltYm9scywgYW5kIGFyZSBub3QgaW5saW5lZCwgd2hpY2ggbWFrZXMgdGhlbSBpZGVhbC4KCkkgcGF1c2VkIHRvIGNoZWNrIGlmIEkgYW0gZGVhbGluZyB3aXRoIGEgaG90LXBhdGggZnVuY3Rpb24sIGJ1dCBpdCYjMzk7cyBub3QgYSBwYWNrZXQgcHJvY2Vzc2luZyBob3QtcGF0aC4gSXQmIzM5O3MgYSBuZXRsaW5rIGNvbW1pdCBmdW5jdGlvbiB1c2VkIGZvciBuZXRmaWx0ZXIgcnVsZSBjb25maWd1cmF0aW9uLCB3aGljaCBtYWtlcyBzZW5zZS4gSSBzdXNwZWN0IHRoYXQgYG5mdF9zZXRfY29tbWl0X3VwZGF0ZWAgKm1pZ2h0KiBiZSBpbmxpbmVkLCBzbyBJJiMzOTtsbCBwcm9iYWJseSBsaXN0IGBuZl90YWJsZXNfY29tbWl0YCBhbmQgYG5mX3RhYmxlc19hYm9ydGAgdG8gYmUgc2FmZS4gVGhhdCYjMzk7cyBnb29kIGVub3VnaCBmb3Igbm93LiBUaW1lIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZvciBgTkZfVEFCTEVTYCB0byBtYWtlIHN1cmUgdGhlIG1vZHVsZSBpcyBlbmFibGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDIzOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORl9UQUJMRVMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnPTQ1Mz1lbmRpZiAjIE5GX0NPTk5UUkFDS1xubmV0L25ldGZpbHRlci9LY29uZmlnLTQ1NC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0NTU6Y29uZmlnIE5GX1RBQkxFU1xubmV0L25ldGZpbHRlci9LY29uZmlnLTQ1Ni1cdHNlbGVjdCBORVRGSUxURVJfTkVUTElOS1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz00NzE9aWYgTkZfVEFCTEVTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDcyOmNvbmZpZyBORl9UQUJMRVNfSU5FVFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ3My1cdGRlcGVuZHMgb24gSVBWNlxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NzktXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDgwOmNvbmZpZyBORl9UQUJMRVNfTkVUREVWXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDgxLVx0Ym9vbCBcJiMzNDtOZXRmaWx0ZXIgbmZfdGFibGVzIG5ldGRldiB0YWJsZXMgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDIzOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMDQ3CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzoKCioqQW5hbHl6aW5nIHRoZSBORl9UQUJMRVMgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBzbyBgTkZfVEFCTEVTYCBpcyB0aGUga2V5IGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgaGVyZS4gU2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCDigJMgdGhhdCYjMzk7cyBvdXIgc3RhcnRpbmcgcG9pbnQuIE5vdywgbGV0JiMzOTtzIHNlZSBpZiB0aGVyZSBhcmUgYW55IHJlbGF0ZWQgY29uZmlncyB3ZSBuZWVkIHRvIGNvbnNpZGVyLiBJIGFsd2F5cyBsaWtlIHRvIGdldCBhIGNvbXBsZXRlIHBpY3R1cmUuCgpUaGUgcGF0Y2ggaXMgdG91Y2hpbmcgYG5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jYC4gUmlnaHQsIHNvIHRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgQVBJIGxvZ2ljIGZvciBgbmZfdGFibGVzYCByZXNpZGVzLCBtYWtpbmcgdGhlIGZpbGUgYSBwcmltZSB0YXJnZXQuIEFuZCwgb2YgY291cnNlLCB0aGF0IGZpbGUgaXMgKm9ubHkqIGNvbXBpbGVkIGludG8gdGhlIGtlcm5lbCB3aGVuIGBDT05GSUdfTkZfVEFCTEVTYCBpcyB0dXJuZWQgb24uIE9idmlvdXMsIGJ1dCBpbXBvcnRhbnQgdG8gY2VtZW50IHRoZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBmbG93LiBHb3QgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDIzOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mX3RhYmxlc19hcGkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9ODQ9b2JqLSQoQ09ORklHX05GX0RVUF9ORVRERVYpXHQmIzQzOz0gbmZfZHVwX25ldGRldi5vXG4tLVxubmV0L25ldGZpbHRlci9NYWtlZmlsZS04Ni0jIG5mX3RhYmxlc1xubmV0L25ldGZpbHRlci9NYWtlZmlsZTo4NzpuZl90YWJsZXMtb2JqcyA6PSBuZl90YWJsZXNfY29yZS5vIG5mX3RhYmxlc19hcGkubyBuZnRfY2hhaW5fZmlsdGVyLm8gXFxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtODgtXHRcdCAgbmZfdGFibGVzX3RyYWNlLm8gbmZ0X2ltbWVkaWF0ZS5vIG5mdF9jbXAubyBuZnRfcmFuZ2UubyBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAyMzoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDQ0MQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDEzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBicmVha2Rvd24gb2Ygd2hhdCBJJiMzOTttIGxvb2tpbmcgYXQsIGZyb20gbXkgcGVyc3BlY3RpdmUuIExldCYjMzk7cyBzZWUgaWYgdGhpcyBhbGlnbnMgd2l0aCBteSBjdXJyZW50IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHN1YmplY3QgbWF0dGVyOgoKKipOYXZpZ2F0aW5nIHRoZSBgbmZfdGFibGVzYCBDb2RlYmFzZSoqCgpBbHJpZ2h0LCBzbyB0aGUgY29yZSBxdWVzdGlvbiBpcyBhYm91dCBgbmZfdGFibGVzLW9ianNgLCBhbmQgSSYjMzk7bSBwcmV0dHkgY2VydGFpbiB0aGF0IHRoZSBidWlsZCBwcm9jZXNzIGluY2x1ZGVzIGl0IGlmIGBDT05GSUdfTkZfVEFCTEVTYCBpcyB0dXJuZWQgb24uIENvbmZpcm1hdGlvbiBvZiB0aGUgb2J2aW91cyBpcyBhbHdheXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LgoKTm93LCBJIG5lZWQgdG8gZ2V0IG15IGhlYWQgYXJvdW5kIHRoZSBjcnVjaWFsIGNvbW1pdCBhbmQgYWJvcnQgZnVuY3Rpb25zLiBMZXQmIzM5O3MgbWFrZSBzdXJlIEkmIzM5O3ZlIGdvdCB0aGUgYmFzaWNzIGNvdmVyZWQgdGhlcmUsIGBuZl90YWJsZXNfY29tbWl0YCBhbmQgYG5mX3RhYmxlc19hYm9ydGAuIFRoZXNlIGFyZSB0aGUgc3BpbmUgb2YgYW55IHRyYW5zYWN0aW9uIHN5c3RlbS4gQXJlIHRoZXJlIGFueSBvdGhlciBoaWdoLWxldmVsIHN5bWJvbHMgd2hpY2ggbmVlZCB0byBiZSBhY2NvdW50ZWQgZm9yPwoKSSBzZWUgYG5mdF90cmFuc19jb21taXRfbGlzdF9hZGRfZWxlbWAgZ2V0dGluZyBjYWxsZWQgZnJvbSBgbmZ0X2FkZF9zZXRfZWxlbWAgYW5kIGBuZnRfZGVsX3NldGVsZW1gLiBUaGF0IG1ha2VzIHNlbnNlOyB0aGVzZSBmdW5jdGlvbnMgYXJlIGxpa2VseSBpbnZvbHZlZCBpbiBoYW5kbGluZyB0cmFuc2FjdGlvbiBsaXN0cy4gRm9sbG93aW5nIHRoYXQgbG9naWMsIEkgcmVjYWxsIHRoYXQgYG5mdF9hZGRfc2V0X2VsZW1gIGlzLCBpbiB0dXJuLCBjYWxsZWQgYnkgYG5mX3RhYmxlc19uZXdzZXRlbGVtYCwgYW5kIHNpbWlsYXJseSwgYG5mdF9kZWxfc2V0ZWxlbWAgaXMgY2FsbGVkIGZyb20gYG5mX3RhYmxlc19kZWxzZXRlbGVtYC4gVGhlc2Ugc2hvdWxkIGFsc28gYmUga2V5IGZ1bmN0aW9ucyBJIHNob3VsZCBrZWVwIGluIG1pbmQuIEkga25vdyB3aGF0IHRoZXNlIGZ1bmN0aW9ucyBkbywgYnV0IGl0JiMzOTtzIGltcG9ydGFudCB0byBtYWtlIHN1cmUgdGhleSYjMzk7cmUgaW5jbHVkZWQgaW4gbXkgbWVudGFsIG1vZGVsIG9mIHRoaXMgYXJjaGl0ZWN0dXJlLiBUaGV5IGFyZSBnb29kIGZvY3VzIHBvaW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMjM6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZfdGFibGVzX25ld3NldGVsZW0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz03MjY3PXN0YXRpYyBpbnQgbmZ0X2FkZF9zZXRfZWxlbShzdHJ1Y3QgbmZ0X2N0eCAqY3R4LCBzdHJ1Y3QgbmZ0X3NldCAqc2V0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTc2ODAtXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzo3NjgxOnN0YXRpYyBpbnQgbmZfdGFibGVzX25ld3NldGVsZW0oc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTc2ODItXHRcdFx0XHRjb25zdCBzdHJ1Y3QgbmZubF9pbmZvICppbmZvLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTk5NDI9c3RhdGljIGNvbnN0IHN0cnVjdCBuZm5sX2NhbGxiYWNrIG5mX3RhYmxlc19jYltORlRfTVNHX01BWF0gPSB7XG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTAwNDUtXHRbTkZUX01TR19ORVdTRVRFTEVNXSA9IHtcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwMDQ2Olx0XHQuY2FsbFx0XHQ9IG5mX3RhYmxlc19uZXdzZXRlbGVtLFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTAwNDctXHRcdC50eXBlXHRcdD0gTkZOTF9DQl9CQVRDSCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMjM6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEyMjYKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBpZiBJIHdlcmUgdGhlIG9uZSB0aGlua2luZyB0aGVtOgoKKipJbml0aWFsIEFzc2Vzc21lbnQ6IE5ldHdvcmsgRmlsdGVyaW5nIFNldCBPcGVyYXRpb25zKioKCkFscmlnaHQsIGxldCYjMzk7cyB6ZXJvIGluIG9uIHRoaXMuIEkmIzM5O20gc2VlaW5nIGBuZl90YWJsZXNfbmV3c2V0ZWxlbWAgYW5kIGBuZl90YWJsZXNfZGVsc2V0ZWxlbWAuIEltbWVkaWF0ZWx5LCB0aG9zZSBqdW1wIG91dCBhcyB0aGUgY29yZSBlbnRyeSBwb2ludHMgZm9yIHRoZSBhZGRpdGlvbiBhbmQgcmVtb3ZhbCBvZiBlbGVtZW50cyB3aXRoaW4gYSBzZXQsIGluIHRoZSBjb250ZXh0IG9mIGBuZl90YWJsZXNgLiBUaGF0JiMzOTtzIHByZWNpc2VseSB0aGUga2luZCBvZiBsb3ctbGV2ZWwgZGV0YWlsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmdW5kYW1lbnRhbCBtZWNoYW5pY3Mgb2YgaG93IHRoZXNlIG5ldHdvcmsgZmlsdGVyaW5nIHRhYmxlcyBhcmUgbWFuaXB1bGF0ZWQgYXQgdGhlIHNldCBsZXZlbC4gRXhjZWxsZW50IGZvY3VzIHN5bWJvbHMgdG8gc3RhcnQgZGlnZ2luZyBpbnRvLiBUaGV5IG9mZmVyIGEgZGlyZWN0IHBhdGggdG8gdW5kZXJzdGFuZGluZyB0aGUgY29yZSBmdW5jdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDIzOjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mX3RhYmxlc19kZWxzZXRlbGVtJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9ODAwND1zdGF0aWMgaW50IG5mdF9zZXRfZmx1c2goc3RydWN0IG5mdF9jdHggKmN0eCwgc3RydWN0IG5mdF9zZXQgKnNldCwgdTggZ2VubWFzaylcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy04MDIxLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6ODAyMjpzdGF0aWMgaW50IG5mX3RhYmxlc19kZWxzZXRlbGVtKHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy04MDIzLVx0XHRcdFx0Y29uc3Qgc3RydWN0IG5mbmxfaW5mbyAqaW5mbyxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz05OTQyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZubF9jYWxsYmFjayBuZl90YWJsZXNfY2JbTkZUX01TR19NQVhdID0ge1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwMDYzLVx0W05GVF9NU0dfREVMU0VURUxFTV0gPSB7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDA2NDpcdFx0LmNhbGxcdFx0PSBuZl90YWJsZXNfZGVsc2V0ZWxlbSxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwMDY1LVx0XHQudHlwZVx0XHQ9IE5GTkxfQ0JfQkFUQ0gsXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTAwNjktXHRbTkZUX01TR19ERVNUUk9ZU0VURUxFTV0gPSB7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDA3MDpcdFx0LmNhbGxcdFx0PSBuZl90YWJsZXNfZGVsc2V0ZWxlbSxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwMDcxLVx0XHQudHlwZVx0XHQ9IE5GTkxfQ0JfQkFUQ0gsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDIzOjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExODM3CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogOTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgTmV0ZmlsdGVyIEZvY3VzKioKCk9rYXksIHNvIEkgbmVlZCB0byB6ZXJvIGluIG9uIHRoZXNlIHN5bWJvbHM6IGBuZl90YWJsZXNfY29tbWl0YCwgYG5mX3RhYmxlc19hYm9ydGAsIGBuZl90YWJsZXNfbmV3c2V0ZWxlbWAsIGFuZCBgbmZfdGFibGVzX2RlbHNldGVsZW1gLiBUaGV5JiMzOTtyZSBhbGwgTmV0bGluayBjYWxsYmFja3MsIHdoaWNoIG1lYW5zIHRoZXkgYXJlbiYjMzk7dCBpbmxpbmVkIGFuZCBhcmUgZGVmaW5pdGUgQVBJIGVudHJ5cG9pbnRzLCBwZXJmZWN0IHRhcmdldHMgZm9yIGRlZXBlciBhbmFseXNpcy4KCkJlZm9yZSBJIGdvIGZ1cnRoZXIsIEkgc2hvdWxkIHZlcmlmeSB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIExldCYjMzk7cyBtYWtlIHN1cmUgYE5GX1RBQkxFU2AgZGVwZW5kcyBvbiBgTkVURklMVEVSYC4gR290dGEgY292ZXIgYWxsIHRoZSBiYXNlcyB0byBhdm9pZCBhbnkgdW5leHBlY3RlZCBpc3N1ZXMgZG93biB0aGUgbGluZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMjM6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVEZJTFRFUiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWc9Mj1tZW51IFwmIzM0O0NvcmUgTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb25cJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo1OmNvbmZpZyBORVRGSUxURVJfSU5HUkVTU1xubmV0L25ldGZpbHRlci9LY29uZmlnLTYtXHRib29sIFwmIzM0O05ldGZpbHRlciBpbmdyZXNzIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTItXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTM6Y29uZmlnIE5FVEZJTFRFUl9FR1JFU1Ncbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNC1cdGJvb2wgXCYjMzQ7TmV0ZmlsdGVyIGVncmVzcyBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTIwLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjIxOmNvbmZpZyBORVRGSUxURVJfU0tJUF9FR1JFU1Ncbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yMi1cdGRlZl9ib29sIE5FVEZJTFRFUl9FR1JFU1MgXHUwMDI2XHUwMDI2IChORVRfQ0xTX0FDVCB8fCBJRkIpXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjMtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MjQ6Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjUtXHRib29sXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjYtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mjc6Y29uZmlnIE5FVEZJTFRFUl9GQU1JTFlfQlJJREdFXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjgtXHRib29sXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjktXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MzA6Y29uZmlnIE5FVEZJTFRFUl9GQU1JTFlfQVJQXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzEtXHRib29sXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzItXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MzM6Y29uZmlnIE5FVEZJTFRFUl9CUEZfTElOS1xubmV0L25ldGZpbHRlci9LY29uZmlnLTM0LVx0ZGVmX2Jvb2wgQlBGX1NZU0NBTExcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zNS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozNjpjb25maWcgTkVURklMVEVSX05FVExJTktfSE9PS1xubmV0L25ldGZpbHRlci9LY29uZmlnLTM3LVx0dHJpc3RhdGUgXCYjMzQ7TmV0ZmlsdGVyIGJhc2UgaG9vayBkdW1wIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDUtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDY6Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX0FDQ1Rcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00Ny1cdHRyaXN0YXRlIFwmIzM0O05ldGZpbHRlciBORkFDQ1Qgb3ZlciBORk5FVExJTksgaW50ZXJmYWNlXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTUzLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjU0OmNvbmZpZyBORVRGSUxURVJfTkVUTElOS19RVUVVRVxubmV0L25ldGZpbHRlci9LY29uZmlnLTU1LVx0dHJpc3RhdGUgXCYjMzQ7TmV0ZmlsdGVyIE5GUVVFVUUgb3ZlciBORk5FVExJTksgaW50ZXJmYWNlXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTYxLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjYyOmNvbmZpZyBORVRGSUxURVJfTkVUTElOS19MT0dcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy02My1cdHRyaXN0YXRlIFwmIzM0O05ldGZpbHRlciBMT0cgb3ZlciBORk5FVExJTksgaW50ZXJmYWNlXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTczLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjc0OmNvbmZpZyBORVRGSUxURVJfTkVUTElOS19PU0Zcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03NS1cdHRyaXN0YXRlIFwmIzM0O05ldGZpbHRlciBPU0Ygb3ZlciBORk5FVExJTksgaW50ZXJmYWNlXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnPTExMD1pZiBORl9DT05OVFJBQ0tcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMTE6Y29uZmlnIE5FVEZJTFRFUl9DT05OQ09VTlRcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTItXHR0cmlzdGF0ZVxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz0zODU9Y29uZmlnIE5GX0NUX05FVExJTktfSEVMUEVSXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTM5Ny1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozOTg6Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX0dMVUVfQ1Rcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zOTktXHRib29sIFwmIzM0O05GUVVFVUUgYW5kIE5GTE9HIGludGVncmF0aW9uIHdpdGggQ29ubmVjdGlvbiBUcmFja2luZ1wmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz00NDc9Y29uZmlnIE5GX05BVF9PVlNcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDQ5LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjQ1MDpjb25maWcgTkVURklMVEVSX1NZTlBST1hZXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDUxLVx0dHJpc3RhdGVcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc9NzIxPWNvbmZpZyBORl9GTE9XX1RBQkxFX1BST0NGU1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03MjgtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NzI5OmNvbmZpZyBORVRGSUxURVJfWFRBQkxFU1xubmV0L25ldGZpbHRlci9LY29uZmlnLTczMC1cdHRyaXN0YXRlIFwmIzM0O05ldGZpbHRlciBYdGFibGVzIHN1cHBvcnQgKHJlcXVpcmVkIGZvciBpcF90YWJsZXMpXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnPTczNj1pZiBORVRGSUxURVJfWFRBQkxFU1xubmV0L25ldGZpbHRlci9LY29uZmlnLTczNy1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo3Mzg6Y29uZmlnIE5FVEZJTFRFUl9YVEFCTEVTX0NPTVBBVFxubmV0L25ldGZpbHRlci9LY29uZmlnLTczOS1cdGJvb2wgXCYjMzQ7TmV0ZmlsdGVyIFh0YWJsZXMgMzJiaXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03NDYtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NzQ3OmNvbmZpZyBORVRGSUxURVJfWFRBQkxFU19MRUdBQ1lcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03NDgtXHRib29sIFwmIzM0O05ldGZpbHRlciBsZWdhY3kgdGFibGVzIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc9NzU3PWNvbW1lbnQgXCYjMzQ7WHRhYmxlcyBjb21iaW5lZCBtb2R1bGVzXCYjMzQ7XG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzU4LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjc1OTpjb25maWcgTkVURklMVEVSX1hUX01BUktcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03NjAtXHR0cmlzdGF0ZSAmIzM5O25mbWFyayB0YXJnZXQgYW5kIG1hdGNoIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03NzItXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NzczOmNvbmZpZyBORVRGSUxURVJfWFRfQ09OTk1BUktcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03NzQtXHR0cmlzdGF0ZSAmIzM5O2N0bWFyayB0YXJnZXQgYW5kIG1hdGNoIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03ODQtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Nzg1OmNvbmZpZyBORVRGSUxURVJfWFRfU0VUXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzg2LVx0dHJpc3RhdGUgJiMzOTtzZXQgdGFyZ2V0IGFuZCBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc9Nzk5PWNvbW1lbnQgXCYjMzQ7WHRhYmxlcyB0YXJnZXRzXCYjMzQ7XG5uZXQvbmV0ZmlsdGVyL0tjb25maWctODAwLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjgwMTpjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9BVURJVFxubmV0L25ldGZpbHRlci9LY29uZmlnLTgwMi1cdHRyaXN0YXRlIFwmIzM0O0FVRElUIHRhcmdldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTgxMC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo4MTE6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfQ0hFQ0tTVU1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04MTItXHR0cmlzdGF0ZSBcJiMzNDtDSEVDS1NVTSB0YXJnZXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04MjYtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6ODI3OmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX0NMQVNTSUZZXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctODI4LVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtDTEFTU0lGWVwmIzM0OyB0YXJnZXQgc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTgzOC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo4Mzk6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfQ09OTk1BUktcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04NDAtXHR0cmlzdGF0ZSAgJiMzOTtcJiMzNDtDT05OTUFSS1wmIzM0OyB0YXJnZXQgc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTg0OC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo4NDk6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfQ09OTlNFQ01BUktcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04NTAtXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O0NPTk5TRUNNQVJLXCYjMzQ7IHRhcmdldCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctODYwLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjg2MTpjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9DVFxubmV0L25ldGZpbHRlci9LY29uZmlnLTg2Mi1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7Q1RcJiMzNDsgdGFyZ2V0IHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04NzItXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6ODczOmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX0RTQ1Bcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04NzQtXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O0RTQ1BcJiMzNDsgYW5kIFwmIzM0O1RPU1wmIzM0OyB0YXJnZXQgc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTg4OC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo4ODk6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfSExcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04OTAtXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O0hMXCYjMzQ7IGhvcGxpbWl0IHRhcmdldCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctOTAzLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjkwNDpjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9ITUFSS1xubmV0L25ldGZpbHRlci9LY29uZmlnLTkwNS1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7SE1BUktcJiMzNDsgdGFyZ2V0IHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy05MTctXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6OTE4OmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX0lETEVUSU1FUlxubmV0L25ldGZpbHRlci9LY29uZmlnLTkxOS1cdHRyaXN0YXRlICBcJiMzNDtJRExFVElNRVIgdGFyZ2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctOTI5LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjkzMDpjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9MRURcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy05MzEtXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O0xFRFwmIzM0OyB0YXJnZXQgc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTk1My1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo5NTQ6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfTE9HXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctOTU1LVx0dHJpc3RhdGUgXCYjMzQ7TE9HIHRhcmdldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTk2NC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo5NjU6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfTUFSS1xubmV0L25ldGZpbHRlci9LY29uZmlnLTk2Ni1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7TUFSS1wmIzM0OyB0YXJnZXQgc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTk3My1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo5NzQ6Y29uZmlnIE5FVEZJTFRFUl9YVF9OQVRcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy05NzUtXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O1NOQVQgYW5kIEROQVRcJiMzNDsgdGFyZ2V0cyBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctOTgxLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjk4Mjpjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9ORVRNQVBcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy05ODMtXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O05FVE1BUFwmIzM0OyB0YXJnZXQgc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTk5MS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo5OTI6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfTkZMT0dcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy05OTMtXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O05GTE9HXCYjMzQ7IHRhcmdldCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTAwMS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMDAyOmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX05GUVVFVUVcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMDAzLVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtORlFVRVVFXCYjMzQ7IHRhcmdldCBTdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTAxMy1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMDE0OmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX05PVFJBQ0tcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMDE1LVx0dHJpc3RhdGUgICYjMzk7XCYjMzQ7Tk9UUkFDS1wmIzM0OyB0YXJnZXQgc3VwcG9ydCAoREVQUkVDQVRFRCkmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMDIwLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjEwMjE6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfUkFURUVTVFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEwMjItXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O1JBVEVFU1RcJiMzNDsgdGFyZ2V0IHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMDMwLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjEwMzE6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfUkVESVJFQ1Rcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMDMyLVx0dHJpc3RhdGUgXCYjMzQ7UkVESVJFQ1QgdGFyZ2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTA0Mi1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMDQzOmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX01BU1FVRVJBREVcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMDQ0LVx0dHJpc3RhdGUgXCYjMzQ7TUFTUVVFUkFERSB0YXJnZXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMDU2LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjEwNTc6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfVEVFXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTA1OC1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7VEVFXCYjMzQ7IC0gcGFja2V0IGNsb25pbmcgdG8gYWx0ZXJuYXRlIGRlc3RpbmF0aW9uJiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTA2Ny1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMDY4OmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX1RQUk9YWVxubmV0L25ldGZpbHRlci9LY29uZmlnLTEwNjktXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O1RQUk9YWVwmIzM0OyB0YXJnZXQgdHJhbnNwYXJlbnQgcHJveHlpbmcgc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTEwODgtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTA4OTpjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9UUkFDRVxubmV0L25ldGZpbHRlci9LY29uZmlnLTEwOTAtXHR0cmlzdGF0ZSAgJiMzOTtcJiMzNDtUUkFDRVwmIzM0OyB0YXJnZXQgc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTExMDAtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTEwMTpjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9TRUNNQVJLXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTEwMi1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7U0VDTUFSS1wmIzM0OyB0YXJnZXQgc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTExMTAtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTExMTpjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9UQ1BNU1Ncbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTEyLVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtUQ1BNU1NcJiMzNDsgdGFyZ2V0IHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTM2LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjExMzc6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfVENQT1BUU1RSSVBcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTM4LVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtUQ1BPUFRTVFJJUFwmIzM0OyB0YXJnZXQgc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnPTExNDc9Y29tbWVudCBcJiMzNDtYdGFibGVzIG1hdGNoZXNcJiMzNDtcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTQ4LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjExNDk6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9BRERSVFlQRVxubmV0L25ldGZpbHRlci9LY29uZmlnLTExNTAtXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O2FkZHJ0eXBlXCYjMzQ7IGFkZHJlc3MgdHlwZSBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTE1OC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMTU5OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfQlBGXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTE2MC1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7YnBmXCYjMzQ7IG1hdGNoIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTY3LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjExNjg6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9DR1JPVVBcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTY5LVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtjb250cm9sIGdyb3VwXCYjMzQ7IG1hdGNoIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTc3LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjExNzg6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9DTFVTVEVSXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTE3OS1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7Y2x1c3RlclwmIzM0OyBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTE5My1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMTk0OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfQ09NTUVOVFxubmV0L25ldGZpbHRlci9LY29uZmlnLTExOTUtXHR0cmlzdGF0ZSAgJiMzOTtcJiMzNDtjb21tZW50XCYjMzQ7IG1hdGNoIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjAzLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjEyMDQ6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9DT05OQllURVNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjA1LVx0dHJpc3RhdGUgICYjMzk7XCYjMzQ7Y29ubmJ5dGVzXCYjMzQ7IHBlci1jb25uZWN0aW9uIGNvdW50ZXIgbWF0Y2ggc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTEyMTQtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTIxNTpjb25maWcgTkVURklMVEVSX1hUX01BVENIX0NPTk5MQUJFTFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEyMTYtXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O2Nvbm5sYWJlbFwmIzM0OyBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTIyNy1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMjI4OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfQ09OTkxJTUlUXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTIyOS1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7Y29ubmxpbWl0XCYjMzQ7IG1hdGNoIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjM2LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjEyMzc6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9DT05OTUFSS1xubmV0L25ldGZpbHRlci9LY29uZmlnLTEyMzgtXHR0cmlzdGF0ZSAgJiMzOTtcJiMzNDtjb25ubWFya1wmIzM0OyBjb25uZWN0aW9uIG1hcmsgbWF0Y2ggc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTEyNDYtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTI0Nzpjb25maWcgTkVURklMVEVSX1hUX01BVENIX0NPTk5UUkFDS1xubmV0L25ldGZpbHRlci9LY29uZmlnLTEyNDgtXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O2Nvbm50cmFja1wmIzM0OyBjb25uZWN0aW9uIHRyYWNraW5nIG1hdGNoIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjU5LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjEyNjA6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9DUFVcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjYxLVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtjcHVcJiMzNDsgbWF0Y2ggc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTEyNjgtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTI2OTpjb25maWcgTkVURklMVEVSX1hUX01BVENIX0RDQ1Bcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjcwLVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtkY2NwXCYjMzQ7IHByb3RvY29sIG1hdGNoIHN1cHBvcnQgKERFUFJFQ0FURUQpJiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTI4MC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMjgxOmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfREVWR1JPVVBcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjgyLVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtkZXZncm91cFwmIzM0OyBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTI4OS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMjkwOmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfRFNDUFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEyOTEtXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O2RzY3BcJiMzNDsgYW5kIFwmIzM0O3Rvc1wmIzM0OyBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTMwNC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMzA1OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfRUNOXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTMwNi1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7ZWNuXCYjMzQ7IG1hdGNoIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzEzLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjEzMTQ6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9FU1Bcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzE1LVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtlc3BcJiMzNDsgbWF0Y2ggc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzMjItXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTMyMzpjb25maWcgTkVURklMVEVSX1hUX01BVENIX0hBU0hMSU1JVFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzMjQtXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O2hhc2hsaW1pdFwmIzM0OyBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTMzNy1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMzM4OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfSEVMUEVSXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTMzOS1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7aGVscGVyXCYjMzQ7IG1hdGNoIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzQ3LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjEzNDg6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9ITFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzNDktXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O2hsXCYjMzQ7IGhvcGxpbWl0L1RUTCBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTM1NS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMzU2OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfSVBDT01QXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTM1Ny1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7aXBjb21wXCYjMzQ7IG1hdGNoIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzY0LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjEzNjU6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9JUFJBTkdFXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTM2Ni1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7aXByYW5nZVwmIzM0OyBhZGRyZXNzIHJhbmdlIG1hdGNoIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzc0LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjEzNzU6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9JUFZTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTM3Ni1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7aXB2c1wmIzM0OyBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTM4NC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMzg1OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfTDJUUFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzODYtXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O2wydHBcJiMzNDsgbWF0Y2ggc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzOTQtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTM5NTpjb25maWcgTkVURklMVEVSX1hUX01BVENIX0xFTkdUSFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzOTYtXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O2xlbmd0aFwmIzM0OyBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTQwMy1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNDA0OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfTElNSVRcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDA1LVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtsaW1pdFwmIzM0OyBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTQxMy1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNDE0OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfTUFDXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTQxNS1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7bWFjXCYjMzQ7IGFkZHJlc3MgbWF0Y2ggc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0MjItXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTQyMzpjb25maWcgTkVURklMVEVSX1hUX01BVENIX01BUktcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDI0LVx0dHJpc3RhdGUgJiMzOTtcJiMzNDttYXJrXCYjMzQ7IG1hdGNoIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDMxLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjE0MzI6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9NVUxUSVBPUlRcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDMzLVx0dHJpc3RhdGUgJiMzOTtcJiMzNDttdWx0aXBvcnRcJiMzNDsgTXVsdGlwbGUgcG9ydCBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTQ0MS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNDQyOmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfTkZBQ0NUXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTQ0My1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7bmZhY2N0XCYjMzQ7IG1hdGNoIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDUxLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjE0NTI6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9PU0Zcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDUzLVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtvc2ZcJiMzNDsgUGFzc2l2ZSBPUyBmaW5nZXJwcmludCBtYXRjaCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0NjUtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTQ2Njpjb25maWcgTkVURklMVEVSX1hUX01BVENIX09XTkVSXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTQ2Ny1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7b3duZXJcJiMzNDsgbWF0Y2ggc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0NzMtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTQ3NDpjb25maWcgTkVURklMVEVSX1hUX01BVENIX1BPTElDWVxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0NzUtXHR0cmlzdGF0ZSAmIzM5O0lQc2VjIFwmIzM0O3BvbGljeVwmIzM0OyBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTQ4NC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNDg1OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfUEhZU0RFVlxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0ODYtXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O3BoeXNkZXZcJiMzNDsgbWF0Y2ggc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0OTQtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTQ5NTpjb25maWcgTkVURklMVEVSX1hUX01BVENIX1BLVFRZUEVcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDk2LVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtwa3R0eXBlXCYjMzQ7IHBhY2tldCB0eXBlIG1hdGNoIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTA2LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjE1MDc6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9RVU9UQVxubmV0L25ldGZpbHRlci9LY29uZmlnLTE1MDgtXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O3F1b3RhXCYjMzQ7IG1hdGNoIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTE2LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjE1MTc6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9SQVRFRVNUXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTUxOC1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7cmF0ZWVzdFwmIzM0OyBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTUyNi1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNTI3OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfUkVBTE1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTI4LVx0dHJpc3RhdGUgICYjMzk7XCYjMzQ7cmVhbG1cJiMzNDsgbWF0Y2ggc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTE1NDAtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTU0MTpjb25maWcgTkVURklMVEVSX1hUX01BVENIX1JFQ0VOVFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE1NDItXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O3JlY2VudFwmIzM0OyBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTU1MC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNTUxOmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfU0NUUFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE1NTItXHR0cmlzdGF0ZSAgJiMzOTtcJiMzNDtzY3RwXCYjMzQ7IHByb3RvY29sIG1hdGNoIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTYyLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjE1NjM6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9TT0NLRVRcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTY0LVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtzb2NrZXRcJiMzNDsgbWF0Y2ggc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTE1NzktXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTU4MDpjb25maWcgTkVURklMVEVSX1hUX01BVENIX1NUQVRFXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTU4MS1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7c3RhdGVcJiMzNDsgbWF0Y2ggc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTE1OTAtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTU5MTpjb25maWcgTkVURklMVEVSX1hUX01BVENIX1NUQVRJU1RJQ1xubmV0L25ldGZpbHRlci9LY29uZmlnLTE1OTItXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O3N0YXRpc3RpY1wmIzM0OyBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTU5OS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNjAwOmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfU1RSSU5HXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTYwMS1cdHRyaXN0YXRlICAmIzM5O1wmIzM0O3N0cmluZ1wmIzM0OyBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTYxMi1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNjEzOmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfVENQTVNTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTYxNC1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7dGNwbXNzXCYjMzQ7IG1hdGNoIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNjIyLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjE2MjM6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9USU1FXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTYyNC1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7dGltZVwmIzM0OyBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTYzNi1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNjM3OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfVTMyXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTYzOC1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7dTMyXCYjMzQ7IG1hdGNoIHN1cHBvcnQmIzM5O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAyMzoyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODIwMwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDUwMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIERlcGVuZGVuY2llcyBhbmQgU3ltYm9sIFNjb3BlIGZvciBuZl90YWJsZXMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93biBmb3IgdGhpcyBgbmZfdGFibGVzYCBwYXRjaC4gRmlyc3QsIHRoZSBjb3JlIGRlcGVuZGVuY3kgaXMgYE5FVEZJTFRFUmAsIGFuZCB3aGlsZSBgTkZfVEFCTEVTYCBpdHNlbGYgZGVwZW5kcyBvbiBgTkVURklMVEVSYCwgaXQgc2VlbXMgbGlrZSBlbmFibGluZyBgTkZfVEFCTEVTYCBhbG9uZSBpcyBzdWZmaWNpZW50IGZvciB0aGUgY2hhbmdlcyBpbiB0aGlzIHBhdGNoLCB0aG91Z2ggaW5jbHVkaW5nIGBORVRGSUxURVJgIGZvciBnZW5lcmFsIGNvbmZpZ3VyYXRpb24gaXMgYWx3YXlzIGEgZ29vZCBwcmFjdGljZS4KClNpbmNlIHRoZSBwYXRjaCBtb2RpZmllcyBgbmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmNgLCBhbmQgdGhhdCBmaWxlIGNvbXBpbGVzIG9ubHkgd2hlbiBgQ09ORklHX05GX1RBQkxFU2AgaXMgZW5hYmxlZCwgdGhlbiBlbmFibGluZyBgTkZfVEFCTEVTYCBpcyB0aGUgb25seSBhYnNvbHV0ZWx5IGVzc2VudGlhbCBjb25maWd1cmF0aW9uIG9wdGlvbiBoZXJlLgoKTm93LCBvbiB0byB0aGUgZm9jdXMgc3ltYm9scy4gV2UgaGF2ZSBgbmZfdGFibGVzX2NvbW1pdGAsIGBuZl90YWJsZXNfYWJvcnRgLCBgbmZfdGFibGVzX25ld3NldGVsZW1gLCBhbmQgYG5mX3RhYmxlc19kZWxzZXRlbGVtYC4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBjaGVjayBpZiB0aGV5IHdlcmUgc3RhdGljLCBiZWNhdXNlIHN0YXRpYyBpbmxpbmUgZnVuY3Rpb25zIGFyZSB0byBiZSBhdm9pZGVkIHBlciB0aGUgZ3VpZGVsaW5lcy4gQW5kLCB5ZXMsIHRoZXkgYXJlIGFsbCAqc3RhdGljKi4gV2FpdCBhIHNlY29uZC4uLiB0aGV5IGFyZSBhbGwgc3RhdGljIGJ1dCB0aGV5IGFyZSBhc3NpZ25lZCB0byB0aGUgYG5mX3RhYmxlc19jYmAgYXJyYXkgYW5kIGBuZl90YWJsZXNfc3Vic3lzYCBzdHJ1Y3QuIFRoZXkgYXJlIG5vdCBpbmxpbmVkIGJlY2F1c2UgdGhleSBhcmUgdXNlZCBhcyBmdW5jdGlvbiBwb2ludGVycyEgVGhpcyBtZWFucyB0aGV5IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcywgYW5kIHRoZXkgYXJlIG5vdCBvcHRpbWl6ZWQgYXdheS4gVGhlcmVmb3JlLCB0aGV5IGFyZSBub3QgYSBwcm9ibGVtLgoKVGhlIGtleSBpcyB0aGF0LCBldmVuIHRob3VnaCB0aGV5JiMzOTtyZSBzdGF0aWMsIHRoZXkgc2VydmUgYXMgdGhlICplbnRyeSBwb2ludHMqIHRvIHRoZSBgbmZfdGFibGVzYCBuZXRsaW5rIEFQSS4gVGhlc2UgZnVuY3Rpb25zIGFyZSwgZWZmZWN0aXZlbHksIHRoZSBtZWFucyBieSB3aGljaCBleHRlcm5hbCBjb21wb25lbnRzIGludGVyYWN0IHdpdGggdGhlIG1vZGlmaWVkIGNvZGUuIFRoaXMgaXMgdmVyeSBpbXBvcnRhbnQuCgpJIHNob3VsZCBkb3VibGUgY2hlY2sgdG8gc2VlIGlmIHRoZXJlIGFyZSBvdGhlciwgbm9uLXN0YXRpYyBmdW5jdGlvbnMgaW4gYG5mX3RhYmxlc19hcGkuY2AgdGhhdCBtaWdodCBiZSByZWxldmFudCB0byB0aGUgcGF0Y2guIEFsdGhvdWdoIGl0JiMzOTtzIHVubGlrZWx5LCBpdCYjMzk7cyB3b3J0aCBhIHF1aWNrIGxvb2suIFdlIGhhdmUgdG8gY29uc2lkZXIgdGhhdCBgbmZuZXRsaW5rX3Jjdl9iYXRjaGAgY2FsbHMgYG5mX3RhYmxlc19jb21taXRgIGFuZCBgbmZfdGFibGVzX2Fib3J0YC4gSG93ZXZlciwgYG5mbmV0bGlua19yY3ZfYmF0Y2hgIGlzIGluIGBuZm5ldGxpbmsuY2AsIHdoaWNoIHRlbGxzIG1lIHRoZSBuZXRsaW5rIHN1YnN5c3RlbSBoYW5kbGVzIHRoZSBkaXNwYXRjaC4gU28gdGhlIHN0YXRpYyBmdW5jdGlvbnMgaW4gYG5mX3RhYmxlc19hcGkuY2AgYXJlIGZpbmUgdG8gaW5jbHVkZSBhcyBGb2N1c1N5bWJvbHMgc2luY2UgdGhleSBhY3QgYXMgZW50cnlwb2ludHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDIzOjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0wmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz0xMDc0PV9fcHJpbnRmKDIsIDMpIGludCBuZnRfcmVxdWVzdF9tb2R1bGUoc3RydWN0IG5ldCAqbmV0LCBjb25zdCBjaGFyICpmbXQsXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTEwOS19XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTEwOkVYUE9SVF9TWU1CT0xfR1BMKG5mdF9yZXF1ZXN0X21vZHVsZSk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTExLSNlbmRpZlxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTE4Mzc9dm9pZCBuZnRfcmVnaXN0ZXJfY2hhaW5fdHlwZShjb25zdCBzdHJ1Y3QgbmZ0X2NoYWluX3R5cGUgKmN0eXBlKVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTE4NDYtfVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTg0NzpFWFBPUlRfU1lNQk9MX0dQTChuZnRfcmVnaXN0ZXJfY2hhaW5fdHlwZSk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xODQ4LVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9MTg0OT12b2lkIG5mdF91bnJlZ2lzdGVyX2NoYWluX3R5cGUoY29uc3Qgc3RydWN0IG5mdF9jaGFpbl90eXBlICpjdHlwZSlcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xODU0LX1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjE4NTU6RVhQT1JUX1NZTUJPTF9HUEwobmZ0X3VucmVnaXN0ZXJfY2hhaW5fdHlwZSk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xODU2LVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTMzODk9aW50IG5mdF9yZWdpc3Rlcl9leHByKHN0cnVjdCBuZnRfZXhwcl90eXBlICp0eXBlKVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTM0MDMtfVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MzQwNDpFWFBPUlRfU1lNQk9MX0dQTChuZnRfcmVnaXN0ZXJfZXhwcik7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0zNDA1LVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTM0MTI9dm9pZCBuZnRfdW5yZWdpc3Rlcl9leHByKHN0cnVjdCBuZnRfZXhwcl90eXBlICp0eXBlKVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTM0MTctfVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MzQxODpFWFBPUlRfU1lNQk9MX0dQTChuZnRfdW5yZWdpc3Rlcl9leHByKTtcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTM0MTktXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9ODA4Nj1pbnQgbmZ0X3JlZ2lzdGVyX29iaihzdHJ1Y3QgbmZ0X29iamVjdF90eXBlICpvYmpfdHlwZSlcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy04MDk1LX1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjgwOTY6RVhQT1JUX1NZTUJPTF9HUEwobmZ0X3JlZ2lzdGVyX29iaik7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy04MDk3LVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTgxMDQ9dm9pZCBuZnRfdW5yZWdpc3Rlcl9vYmooc3RydWN0IG5mdF9vYmplY3RfdHlwZSAqb2JqX3R5cGUpXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtODEwOS19XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzo4MTEwOkVYUE9SVF9TWU1CT0xfR1BMKG5mdF91bnJlZ2lzdGVyX29iaik7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy04MTExLVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTg3Njg9dm9pZCBuZnRfb2JqX25vdGlmeShzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IHN0cnVjdCBuZnRfdGFibGUgKnRhYmxlLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTg3ODYtfVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6ODc4NzpFWFBPUlRfU1lNQk9MX0dQTChuZnRfb2JqX25vdGlmeSk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy04Nzg4LVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTg4MDA9dm9pZCBuZnRfcmVnaXN0ZXJfZmxvd3RhYmxlX3R5cGUoc3RydWN0IG5mX2Zsb3d0YWJsZV90eXBlICp0eXBlKVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTg4MDUtfVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6ODgwNjpFWFBPUlRfU1lNQk9MX0dQTChuZnRfcmVnaXN0ZXJfZmxvd3RhYmxlX3R5cGUpO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtODgwNy1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTg4MDg9dm9pZCBuZnRfdW5yZWdpc3Rlcl9mbG93dGFibGVfdHlwZShzdHJ1Y3QgbmZfZmxvd3RhYmxlX3R5cGUgKnR5cGUpXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtODgxMy19XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzo4ODE0OkVYUE9SVF9TWU1CT0xfR1BMKG5mdF91bnJlZ2lzdGVyX2Zsb3d0YWJsZV90eXBlKTtcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTg4MTUtXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9ODgyNj1zdHJ1Y3QgbmZ0X2Zsb3d0YWJsZSAqbmZ0X2Zsb3d0YWJsZV9sb29rdXAoY29uc3Qgc3RydWN0IG5ldCAqbmV0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTg4MzktfVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6ODg0MDpFWFBPUlRfU1lNQk9MX0dQTChuZnRfZmxvd3RhYmxlX2xvb2t1cCk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy04ODQxLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9ODg0Mj12b2lkIG5mX3RhYmxlc19kZWFjdGl2YXRlX2Zsb3d0YWJsZShjb25zdCBzdHJ1Y3QgbmZ0X2N0eCAqY3R4LFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTg4NTYtfVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6ODg1NzpFWFBPUlRfU1lNQk9MX0dQTChuZl90YWJsZXNfZGVhY3RpdmF0ZV9mbG93dGFibGUpO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtODg1OC1cbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz05NzU4PXN0cnVjdCBuZl9ob29rX29wcyAqbmZ0X2hvb2tfZmluZF9vcHMoY29uc3Qgc3RydWN0IG5mdF9ob29rICpob29rLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTk3NjgtfVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6OTc2OTpFWFBPUlRfU1lNQk9MX0dQTChuZnRfaG9va19maW5kX29wcyk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy05NzcwLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9OTc3MT1zdHJ1Y3QgbmZfaG9va19vcHMgKm5mdF9ob29rX2ZpbmRfb3BzX3JjdShjb25zdCBzdHJ1Y3QgbmZ0X2hvb2sgKmhvb2ssXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtOTc4MS19XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzo5NzgyOkVYUE9SVF9TWU1CT0xfR1BMKG5mdF9ob29rX2ZpbmRfb3BzX3JjdSk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy05NzgzLVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTEwMjk5PXZvaWQgbmZfdGFibGVzX3RyYW5zX2Rlc3Ryb3lfZmx1c2hfd29yayhzdHJ1Y3QgbmV0ICpuZXQpXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTAzMDQtfVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTAzMDU6RVhQT1JUX1NZTUJPTF9HUEwobmZfdGFibGVzX3RyYW5zX2Rlc3Ryb3lfZmx1c2hfd29yayk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDMwNi1cbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz0xMTU1MD1pbnQgbmZ0X2NoYWluX3ZhbGlkYXRlX2RlcGVuZGVuY3koY29uc3Qgc3RydWN0IG5mdF9jaGFpbiAqY2hhaW4sXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE1NjEtfVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTE1NjI6RVhQT1JUX1NZTUJPTF9HUEwobmZ0X2NoYWluX3ZhbGlkYXRlX2RlcGVuZGVuY3kpO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE1NjMtXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz0xMTU2ND1pbnQgbmZ0X2NoYWluX3ZhbGlkYXRlX2hvb2tzKGNvbnN0IHN0cnVjdCBuZnRfY2hhaW4gKmNoYWluLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExNTc5LX1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjExNTgwOkVYUE9SVF9TWU1CT0xfR1BMKG5mdF9jaGFpbl92YWxpZGF0ZV9ob29rcyk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTU4MS1cbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz0xMTU5ND1pbnQgbmZ0X3BhcnNlX3UzMl9jaGVjayhjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLCBpbnQgbWF4LCB1MzIgKmRlc3QpXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE2MDQtfVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTE2MDU6RVhQT1JUX1NZTUJPTF9HUEwobmZ0X3BhcnNlX3UzMl9jaGVjayk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTYwNi1cbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz0xMTYzNz1pbnQgbmZ0X2R1bXBfcmVnaXN0ZXIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IGF0dHIsIHVuc2lnbmVkIGludCByZWcpXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE2NDUtfVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTE2NDY6RVhQT1JUX1NZTUJPTF9HUEwobmZ0X2R1bXBfcmVnaXN0ZXIpO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE2NDctXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9MTE2NjA9aW50IG5mdF9wYXJzZV9yZWdpc3Rlcl9sb2FkKGNvbnN0IHN0cnVjdCBuZnRfY3R4ICpjdHgsXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE2OTEtfVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTE2OTI6RVhQT1JUX1NZTUJPTF9HUEwobmZ0X3BhcnNlX3JlZ2lzdGVyX2xvYWQpO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE2OTMtXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9MTE3MzY9aW50IG5mdF9wYXJzZV9yZWdpc3Rlcl9zdG9yZShjb25zdCBzdHJ1Y3QgbmZ0X2N0eCAqY3R4LFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExNzU0LX1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjExNzU1OkVYUE9SVF9TWU1CT0xfR1BMKG5mdF9wYXJzZV9yZWdpc3Rlcl9zdG9yZSk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTc1Ni1cbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz0xMTkyMT1pbnQgbmZ0X2RhdGFfaW5pdChjb25zdCBzdHJ1Y3QgbmZ0X2N0eCAqY3R4LCBzdHJ1Y3QgbmZ0X2RhdGEgKmRhdGEsXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE5NTItfVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTE5NTM6RVhQT1JUX1NZTUJPTF9HUEwobmZ0X2RhdGFfaW5pdCk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTk1NC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMjM6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE3NzgKCQkJCQkJCW91dHB1dDogMjA1CgkJCQkJCQl0aG91Z2h0czogNDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgbmZfdGFibGVzIE5ldGxpbmsgQVBJIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gZGlnZ2luZyBpbnRvIHRoaXMgcGF0Y2guIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoZSBleHBvcnRlZCBmdW5jdGlvbnMgaGVyZSBhcmUgbGFyZ2VseSByZWdpc3RyYXRpb24gdXRpbGl0aWVzIG9yIGhlbHBlcnMsIG5vdCB0aGUgY29yZSBsb2dpYy4gVGhlIG1lYXQgb2YgdGhlIG5ldGxpbmsgaGFuZGxpbmcgaXMgdHVja2VkIGF3YXkgaW4gc3RhdGljIGhhbmRsZXJzLCBhc3NpZ25lZCB0byBgbmZfdGFibGVzX2NiYCBhbmQgYG5mX3RhYmxlc19zdWJzeXNgLgoKTXkga2V5IGZvY3VzIHN5bWJvbHMgZm9yIGZ1enppbmcgd2lsbCBiZSBgbmZfdGFibGVzX2NvbW1pdGAsIGBuZl90YWJsZXNfYWJvcnRgLCBgbmZfdGFibGVzX25ld3NldGVsZW1gLCBhbmQgYG5mX3RhYmxlc19kZWxzZXRlbGVtYC4gKldhaXQqLCByaWdodCwgdGhvc2UgYXJlIHN0YXRpYywgYnV0IHRoZXkgYXJlIGFzc2lnbmVkIHRvIHRoZSBgY29tbWl0YCwgYGFib3J0YCwgYW5kIGBjYWxsYCBtZW1iZXJzIG9mIGBuZm5ldGxpbmtfc3Vic3lzdGVtYCBhbmQgYG5mX3RhYmxlc19jYmAgcmVzcGVjdGl2ZWx5LCBzbyB0aGF0JiMzOTtzIHBlcmZlY3RseSBmaW5lLiBObyBpc3N1ZSB0aGVyZS4KCkxldCYjMzk7cyBkbyBhIHF1aWNrIHNhbml0eSBjaGVjayBmb3IgYW55IG1pc3NpbmcgY29uZmlncywgYnV0IGBORl9UQUJMRVNgIGxvb2tzIHN1ZmZpY2llbnQgZm9yIGNvdmVyYWdlLgoKTm93LCB0byBhcnRpY3VsYXRlIHRoZSByZWFzb25pbmcgYmVoaW5kIHRhcmdldGluZyB0aGVzZSBzeW1ib2xzIGZvciBmdXp6aW5nLiBUaGlzIHBhdGNoIGlzIGZ1bmRhbWVudGFsbHkgYWx0ZXJpbmcgdGhlIG5ldGZpbHRlciBuZl90YWJsZXMgQVBJLCBpbnRyb2R1Y2luZyBhIGBzZXRfdXBkYXRlX2xpc3RgIHdpdGhpbiBgc3RydWN0IG5mdGFibGVzX3Blcm5ldGAuIFRoZSBjaGFuZ2UgaW1wYWN0cyBob3cgc2V0IGVsZW1lbnRzIGFyZSBhZGRlZCwgcmVtb3ZlZCwgYW5kIGFib3J0ZWQgZHVyaW5nIG5ldGxpbmsgdHJhbnNhY3Rpb25zLiBNb3JlIHNwZWNpZmljYWxseSwgaXQmIzM5O3MgbW9kaWZ5aW5nIGZ1bmN0aW9ucyBsaWtlIGBuZnRfdHJhbnNfY29tbWl0X2xpc3RfYWRkX2VsZW1gLCBgbmZ0X3NldF9jb21taXRfdXBkYXRlYCwgYG5mX3RhYmxlc19jb21taXRgLCBhbmQgYF9fbmZfdGFibGVzX2Fib3J0YCB0byBjb3JyZWN0bHkgbWFuYWdlIHRoaXMgbmV3IGxpc3QgYW5kIHRoZSBhc3NvY2lhdGVkIHVwZGF0ZSBvcmRlcmluZy4gR2l2ZW4gdGhhdCB0aGlzIGlzIGEgZnVuY3Rpb25hbCBzaGlmdCBpbiBjb3JlIG5ldGZpbHRlciBsb2dpYywgZXhwb3NlZCB2aWEgbmV0bGluayBzb2NrZXRzLCB3ZSAqYWJzb2x1dGVseSogbmVlZCB0byBmdXp6IGl0LiBJdCYjMzk7cyBhIGNyaXRpY2FsIGFyZWEgZm9yIHByZXZlbnRpbmcgcmVncmVzc2lvbnMgYW5kIHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiB2dWxuZXJhYmlsaXRpZXMuCgpUaW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMjM6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX1RBQkxFUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25mX3RhYmxlc19jb21taXQmIzM0OywKICAgICYjMzQ7bmZfdGFibGVzX2Fib3J0JiMzNDssCiAgICAmIzM0O25mX3RhYmxlc19uZXdzZXRlbGVtJiMzNDssCiAgICAmIzM0O25mX3RhYmxlc19kZWxzZXRlbGVtJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRmaWx0ZXIgbmZfdGFibGVzIEFQSSB0byBpbnRyb2R1Y2UgYSBgc2V0X3VwZGF0ZV9saXN0YCBpbiBgc3RydWN0IG5mdGFibGVzX3Blcm5ldGAuIEl0IGNoYW5nZXMgaG93IHNldCBlbGVtZW50cyBhcmUgYWRkZWQsIHJlbW92ZWQsIGFuZCBhYm9ydGVkIGR1cmluZyBuZXRsaW5rIHRyYW5zYWN0aW9ucy4gU3BlY2lmaWNhbGx5LCBpdCBtb2RpZmllcyBgbmZ0X3RyYW5zX2NvbW1pdF9saXN0X2FkZF9lbGVtYCwgYG5mdF9zZXRfY29tbWl0X3VwZGF0ZWAsIGBuZl90YWJsZXNfY29tbWl0YCwgYW5kIGBfX25mX3RhYmxlc19hYm9ydGAgdG8gaGFuZGxlIHRoZSBuZXcgbGlzdCBhbmQgZW5zdXJlIHByb3BlciBvcmRlcmluZyBvZiBzZXQgdXBkYXRlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldGZpbHRlciBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluayBzb2NrZXRzIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIHByZXZlbnQgcmVncmVzc2lvbnMgb3IgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORl9UQUJMRVMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZl90YWJsZXNfY29tbWl0JiMzNDssCiAgICAmIzM0O25mX3RhYmxlc19hYm9ydCYjMzQ7LAogICAgJiMzNDtuZl90YWJsZXNfbmV3c2V0ZWxlbSYjMzQ7LAogICAgJiMzNDtuZl90YWJsZXNfZGVsc2V0ZWxlbSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbmV0ZmlsdGVyIG5mX3RhYmxlcyBBUEkgdG8gaW50cm9kdWNlIGEgYHNldF91cGRhdGVfbGlzdGAgaW4gYHN0cnVjdCBuZnRhYmxlc19wZXJuZXRgLiBJdCBjaGFuZ2VzIGhvdyBzZXQgZWxlbWVudHMgYXJlIGFkZGVkLCByZW1vdmVkLCBhbmQgYWJvcnRlZCBkdXJpbmcgbmV0bGluayB0cmFuc2FjdGlvbnMuIFNwZWNpZmljYWxseSwgaXQgbW9kaWZpZXMgYG5mdF90cmFuc19jb21taXRfbGlzdF9hZGRfZWxlbWAsIGBuZnRfc2V0X2NvbW1pdF91cGRhdGVgLCBgbmZfdGFibGVzX2NvbW1pdGAsIGFuZCBgX19uZl90YWJsZXNfYWJvcnRgIHRvIGhhbmRsZSB0aGUgbmV3IGxpc3QgYW5kIGVuc3VyZSBwcm9wZXIgb3JkZXJpbmcgb2Ygc2V0IHVwZGF0ZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXRmaWx0ZXIgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgdmlhIG5ldGxpbmsgc29ja2V0cyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBwcmV2ZW50IHJlZ3Jlc3Npb25zIG9yIG1lbW9yeSBjb3JydXB0aW9uIGlzc3Vlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMjM6MjY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAyMzoyNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZWZhY3RvcnMgdGhlIHRyYW5zYWN0aW9uIGNvbW1pdCBhbmQgYWJvcnQgbG9naWMgaW4gbmV0ZmlsdGVyIHRhYmxlcyAobmZfdGFibGVzKS4gSXQgbW92ZXMgdGhlIGBzZXRfdXBkYXRlX2xpc3RgIGZyb20gYmVpbmcgYSBsb2NhbCB2YXJpYWJsZSBpbiBgbmZfdGFibGVzX2NvbW1pdGAgYW5kIGBfX25mX3RhYmxlc19hYm9ydGAgdG8gYSBwZXItbmV0IG5hbWVzcGFjZSBzdHJ1Y3R1cmUgKGBzdHJ1Y3QgbmZ0YWJsZXNfcGVybmV0YCkuIEl0IGFsc28gYWRqdXN0cyB0aGUgb3JkZXIgb2Ygb3BlcmF0aW9ucyBkdXJpbmcgdGhlIGNvbW1pdCBwaGFzZSwgc3BlY2lmaWNhbGx5IGNhbGxpbmcgYG5mdF9zZXRfY29tbWl0X3VwZGF0ZWAgZWFybGllciBhbmQgbW9kaWZ5aW5nIGhvdyBgTkZUX01TR19ERUxTRVRFTEVNYCBtZXNzYWdlcyBhcmUgcHJvY2Vzc2VkIGFuZCBub3RpZmllZC5cblxuVGhlc2UgY2hhbmdlcyBhcmUgcHVyZWx5IHJlbGF0ZWQgdG8gY29udHJvbCBmbG93LCBsaXN0IG1hbmFnZW1lbnQsIGFuZCB0aGUgbmV0ZmlsdGVyIHRyYW5zYWN0aW9uIHN0YXRlIG1hY2hpbmUgKGxpa2VseSB0byBmaXggYSByYWNlIGNvbmRpdGlvbiwgdXNlLWFmdGVyLWZyZWUsIG9yIG9yZGVyaW5nIGlzc3VlKS4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcyB0aGF0IGFyZSBjb3BpZWQgdG8gdXNlciBzcGFjZSwgbm9yIGRvZXMgaXQgbW9kaWZ5IGJ1ZmZlciBhbGxvY2F0aW9ucywgYm91bmRzIGNoZWNraW5nLCBvciBpbml0aWFsaXphdGlvbiBsb2dpYyBpbiBhIHdheSB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIGtlcm5lbCBtZW1vcnkgKGluZm8tbGVha3MpIG9yIGNhdXNlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIGJlIHVzZWQgaW4gY29udHJvbCBmbG93LlxuXG5BbnkgYnVncyBpbnRyb2R1Y2VkIG9yIGZpeGVkIGJ5IHRoaXMgcGF0Y2ggKHN1Y2ggYXMgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZS1mcmVlLCBvciBsaXN0IGNvcnJ1cHRpb24pIHdvdWxkIGJlIHJlbGlhYmx5IGRldGVjdGVkIGJ5IHN0YW5kYXJkIEtBU0FOIGFuZCBzdGFuZGFyZCBrZXJuZWwgZGVidWcgb3B0aW9ucyAobGlrZSBgQ09ORklHX0RFQlVHX0xJU1RgKS4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IGp1c3RpZmllZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMGQ5MzEyYTBkOGRhNmNlODJlMDUzNjg0MzlhOTlmN2E2MGQyZjkxYwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgQXVnIDEyIDIzOjI1OjMyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlcy5oIGIvaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlcy5oCmluZGV4IDNiZTYxMjE0NWMxMzAuLjIzOGY2ZWNiOTBlOTkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L25ldGZpbHRlci9uZl90YWJsZXMuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzLmgKQEAgLTE5NDksNiAmIzQzOzE5NDksNyBAQCBzdHJ1Y3QgbmZ0YWJsZXNfcGVybmV0IHsKIAlzdHJ1Y3QgbGlzdF9oZWFkCWJpbmRpbmdfbGlzdDsKIAlzdHJ1Y3QgbGlzdF9oZWFkCW1vZHVsZV9saXN0OwogCXN0cnVjdCBsaXN0X2hlYWQJbm90aWZ5X2xpc3Q7CiYjNDM7CXN0cnVjdCBsaXN0X2hlYWQJc2V0X3VwZGF0ZV9saXN0OwogCXN0cnVjdCBtdXRleAkJY29tbWl0X211dGV4OwogCXU2NAkJCXRhYmxlX2hhbmRsZTsKIAl1NjQJCQl0c3RhbXA7CmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYyBiL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jCmluZGV4IGFmMzU3ZjZjNTA3MGIuLjVjNGY2YzM1NDU5NTAgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jCkBAIC01OTUsMTAgJiM0Mzs1OTUsMTUgQEAgc3RhdGljIHZvaWQgbmZ0X3RyYW5zX2NvbW1pdF9saXN0X2FkZF90YWlsKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5mdF90cmFucyAqdHIKIHN0YXRpYyB2b2lkIG5mdF90cmFuc19jb21taXRfbGlzdF9hZGRfZWxlbShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBuZnRfdHJhbnMgKnRyYW5zKQogewogCXN0cnVjdCBuZnRhYmxlc19wZXJuZXQgKm5mdF9uZXQgPSBuZnRfcGVybmV0KG5ldCk7CiYjNDM7CXN0cnVjdCBuZnRfdHJhbnNfZWxlbSAqdGU7CiAKIAlXQVJOX09OX09OQ0UodHJhbnMtJmd0O21zZ190eXBlICE9IE5GVF9NU0dfTkVXU0VURUxFTSAmYW1wOyZhbXA7CiAJCSAgICAgdHJhbnMtJmd0O21zZ190eXBlICE9IE5GVF9NU0dfREVMU0VURUxFTSk7CiAKJiM0MzsJdGUgPSBuZnRfdHJhbnNfY29udGFpbmVyX2VsZW0odHJhbnMpOwomIzQzOwlpZiAodGUtJmd0O3NldC0mZ3Q7b3BzLSZndDtjb21taXQgJmFtcDsmYW1wOyBsaXN0X2VtcHR5KCZhbXA7dGUtJmd0O3NldC0mZ3Q7cGVuZGluZ191cGRhdGUpKQomIzQzOwkJbGlzdF9hZGRfdGFpbCgmYW1wO3RlLSZndDtzZXQtJmd0O3BlbmRpbmdfdXBkYXRlLCAmYW1wO25mdF9uZXQtJmd0O3NldF91cGRhdGVfbGlzdCk7CiYjNDM7CiAJaWYgKG5mdF90cmFuc190cnlfY29sbGFwc2UobmZ0X25ldCwgdHJhbnMpKSB7CiAJCWtmcmVlKHRyYW5zKTsKIAkJcmV0dXJuOwpAQCAtNzIwNSw2ICYjNDM7NzIxMCwyMCBAQCBzdGF0aWMgdm9pZCBuZnRfdHJhbnNfZWxlbXNfcmVtb3ZlKGNvbnN0IHN0cnVjdCBuZnRfY3R4ICpjdHgsCiAJfQogfQogCiYjNDM7c3RhdGljIHZvaWQgbmZ0X3RyYW5zX2VsZW1zX3JlbW92ZV9ub3RpZnkoY29uc3Qgc3RydWN0IG5mdF9jdHggKmN0eCwKJiM0MzsJCQkJCSAgY29uc3Qgc3RydWN0IG5mdF90cmFuc19lbGVtICp0ZSkKJiM0Mzt7CiYjNDM7CWludCBpOwomIzQzOwomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgdGUtJmd0O25lbGVtczsgaSYjNDM7JiM0MzspIHsKJiM0MzsJCVdBUk5fT05fT05DRSh0ZS0mZ3Q7ZWxlbXNbaV0udXBkYXRlKTsKJiM0MzsKJiM0MzsJCW5mX3RhYmxlc19zZXRlbGVtX25vdGlmeShjdHgsIHRlLSZndDtzZXQsCiYjNDM7CQkJCQkgdGUtJmd0O2VsZW1zW2ldLnByaXYsCiYjNDM7CQkJCQkgdGUtJmd0O25mdF90cmFucy5tc2dfdHlwZSk7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiBzdGF0aWMgYm9vbCBuZnRfc2V0ZWxlbV92YWxpZF9rZXlfZW5kKGNvbnN0IHN0cnVjdCBuZnRfc2V0ICpzZXQsCiAJCQkJICAgICAgc3RydWN0IG5sYXR0ciAqKm5sYSwgdTMyIGZsYWdzKQogewpAQCAtMTA4NDgsMTEgJiM0MzsxMDg2NywzMSBAQCBzdGF0aWMgdm9pZCBuZl90YWJsZXNfY29tbWl0X2F1ZGl0X2xvZyhzdHJ1Y3QgbGlzdF9oZWFkICphZGwsIHUzMiBnZW5lcmF0aW9uKQogCX0KIH0KIAotc3RhdGljIHZvaWQgbmZ0X3NldF9jb21taXRfdXBkYXRlKHN0cnVjdCBsaXN0X2hlYWQgKnNldF91cGRhdGVfbGlzdCkKJiM0MztzdGF0aWMgdm9pZCBuZnRfc2V0X2NvbW1pdF91cGRhdGUoc3RydWN0IG5mdF9jdHggKmN0eCwKJiM0MzsJCQkJICBzdHJ1Y3QgbmZ0YWJsZXNfcGVybmV0ICpuZnRfbmV0KQogewogCXN0cnVjdCBuZnRfc2V0ICpzZXQsICpuZXh0OwomIzQzOwlzdHJ1Y3QgbmZ0X3RyYW5zX2VsZW0gKnRlOwomIzQzOwlzdHJ1Y3QgbmZ0X3RyYW5zICp0cmFuczsKIAotCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShzZXQsIG5leHQsIHNldF91cGRhdGVfbGlzdCwgcGVuZGluZ191cGRhdGUpIHsKJiM0MzsJaWYgKGxpc3RfZW1wdHkoJmFtcDtuZnRfbmV0LSZndDtzZXRfdXBkYXRlX2xpc3QpKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHRyYW5zLCAmYW1wO25mdF9uZXQtJmd0O2NvbW1pdF9saXN0LCBsaXN0KSB7CiYjNDM7CQluZnRfY3R4X3VwZGF0ZShjdHgsIHRyYW5zKTsKJiM0MzsKJiM0MzsJCXN3aXRjaCAodHJhbnMtJmd0O21zZ190eXBlKSB7CiYjNDM7CQljYXNlIE5GVF9NU0dfREVMU0VURUxFTToKJiM0MzsJCQl0ZSA9IG5mdF90cmFuc19jb250YWluZXJfZWxlbSh0cmFucyk7CiYjNDM7CQkJaWYgKCF0ZS0mZ3Q7c2V0LSZndDtvcHMtJmd0O2NvbW1pdCkKJiM0MzsJCQkJYnJlYWs7CiYjNDM7CiYjNDM7CQkJbmZ0X3RyYW5zX2VsZW1zX3JlbW92ZShjdHgsIHRlKTsKJiM0MzsJCQlicmVhazsKJiM0MzsJCX0KJiM0MzsJfQomIzQzOwomIzQzOwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoc2V0LCBuZXh0LCAmYW1wO25mdF9uZXQtJmd0O3NldF91cGRhdGVfbGlzdCwgcGVuZGluZ191cGRhdGUpIHsKIAkJbGlzdF9kZWxfaW5pdCgmYW1wO3NldC0mZ3Q7cGVuZGluZ191cGRhdGUpOwogCiAJCWlmICghc2V0LSZndDtvcHMtJmd0O2NvbW1pdCB8fCBzZXQtJmd0O2RlYWQpCkBAIC0xMDg4NSw3ICYjNDM7MTA5MjQsNiBAQCBzdGF0aWMgaW50IG5mX3RhYmxlc19jb21taXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCXN0cnVjdCBuZnRfdHJhbnNfYmluZGluZyAqdHJhbnNfYmluZGluZzsKIAlzdHJ1Y3QgbmZ0X3RyYW5zICp0cmFucywgKm5leHQ7CiAJdW5zaWduZWQgaW50IGJhc2Vfc2VxLCBnY19zZXE7Ci0JTElTVF9IRUFEKHNldF91cGRhdGVfbGlzdCk7CiAJc3RydWN0IG5mdF90cmFuc19lbGVtICp0ZTsKIAlzdHJ1Y3QgbmZ0X2NoYWluICpjaGFpbjsKIAlzdHJ1Y3QgbmZ0X3RhYmxlICp0YWJsZTsKQEAgLTEwOTYwLDYgJiM0MzsxMDk5OCw4IEBAIHN0YXRpYyBpbnQgbmZfdGFibGVzX2NvbW1pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IpCiAJfQogCiAJLyogc3RlcCAyLiAgTWFrZSBydWxlc19nZW5fWCB2aXNpYmxlIHRvIHBhY2tldCBwYXRoICovCiYjNDM7CW5mdF9zZXRfY29tbWl0X3VwZGF0ZSgmYW1wO2N0eCwgbmZ0X25ldCk7CiYjNDM7CiAJbGlzdF9mb3JfZWFjaF9lbnRyeSh0YWJsZSwgJmFtcDtuZnRfbmV0LSZndDt0YWJsZXMsIGxpc3QpIHsKIAkJbGlzdF9mb3JfZWFjaF9lbnRyeShjaGFpbiwgJmFtcDt0YWJsZS0mZ3Q7Y2hhaW5zLCBsaXN0KQogCQkJbmZfdGFibGVzX2NvbW1pdF9jaGFpbihuZXQsIGNoYWluKTsKQEAgLTExMDkxLDI3ICYjNDM7MTExMzEsMTYgQEAgc3RhdGljIGludCBuZl90YWJsZXNfY29tbWl0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAkJCWJyZWFrOwogCQljYXNlIE5GVF9NU0dfTkVXU0VURUxFTToKIAkJCXRlID0gbmZ0X3RyYW5zX2NvbnRhaW5lcl9lbGVtKHRyYW5zKTsKLQogCQkJbmZ0X3RyYW5zX2VsZW1zX2FkZCgmYW1wO2N0eCwgdGUpOwotCi0JCQlpZiAodGUtJmd0O3NldC0mZ3Q7b3BzLSZndDtjb21taXQgJmFtcDsmYW1wOwotCQkJICAgIGxpc3RfZW1wdHkoJmFtcDt0ZS0mZ3Q7c2V0LSZndDtwZW5kaW5nX3VwZGF0ZSkpIHsKLQkJCQlsaXN0X2FkZF90YWlsKCZhbXA7dGUtJmd0O3NldC0mZ3Q7cGVuZGluZ191cGRhdGUsCi0JCQkJCSAgICAgICZhbXA7c2V0X3VwZGF0ZV9saXN0KTsKLQkJCX0KIAkJCW5mdF90cmFuc19kZXN0cm95KHRyYW5zKTsKIAkJCWJyZWFrOwogCQljYXNlIE5GVF9NU0dfREVMU0VURUxFTToKIAkJY2FzZSBORlRfTVNHX0RFU1RST1lTRVRFTEVNOgogCQkJdGUgPSBuZnRfdHJhbnNfY29udGFpbmVyX2VsZW0odHJhbnMpOwotCi0JCQluZnRfdHJhbnNfZWxlbXNfcmVtb3ZlKCZhbXA7Y3R4LCB0ZSk7Ci0KLQkJCWlmICh0ZS0mZ3Q7c2V0LSZndDtvcHMtJmd0O2NvbW1pdCAmYW1wOyZhbXA7Ci0JCQkgICAgbGlzdF9lbXB0eSgmYW1wO3RlLSZndDtzZXQtJmd0O3BlbmRpbmdfdXBkYXRlKSkgewotCQkJCWxpc3RfYWRkX3RhaWwoJmFtcDt0ZS0mZ3Q7c2V0LSZndDtwZW5kaW5nX3VwZGF0ZSwKLQkJCQkJICAgICAgJmFtcDtzZXRfdXBkYXRlX2xpc3QpOwotCQkJfQomIzQzOwkJCWlmICh0ZS0mZ3Q7c2V0LSZndDtvcHMtJmd0O2NvbW1pdCkKJiM0MzsJCQkJbmZ0X3RyYW5zX2VsZW1zX3JlbW92ZV9ub3RpZnkoJmFtcDtjdHgsIHRlKTsKJiM0MzsJCQllbHNlCiYjNDM7CQkJCW5mdF90cmFuc19lbGVtc19yZW1vdmUoJmFtcDtjdHgsIHRlKTsKIAkJCWJyZWFrOwogCQljYXNlIE5GVF9NU0dfTkVXT0JKOgogCQkJaWYgKG5mdF90cmFuc19vYmpfdXBkYXRlKHRyYW5zKSkgewpAQCAtMTExODAsOCAmIzQzOzExMjA5LDYgQEAgc3RhdGljIGludCBuZl90YWJsZXNfY29tbWl0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAkJfQogCX0KIAotCW5mdF9zZXRfY29tbWl0X3VwZGF0ZSgmYW1wO3NldF91cGRhdGVfbGlzdCk7Ci0KIAluZnRfY29tbWl0X25vdGlmeShuZXQsIE5FVExJTktfQ0Ioc2tiKS5wb3J0aWQpOwogCW5mX3RhYmxlc19nZW5fbm90aWZ5KG5ldCwgc2tiLCBORlRfTVNHX05FV0dFTik7CiAJbmZfdGFibGVzX2NvbW1pdF9hdWRpdF9sb2coJmFtcDthZGwsIG5mdF9iYXNlX3NlcShuZXQpKTsKQEAgLTExMjQ3LDExICYjNDM7MTEyNzQsMTEgQEAgc3RhdGljIHZvaWQgbmZfdGFibGVzX2Fib3J0X3JlbGVhc2Uoc3RydWN0IG5mdF90cmFucyAqdHJhbnMpCiAJa2ZyZWUodHJhbnMpOwogfQogCi1zdGF0aWMgdm9pZCBuZnRfc2V0X2Fib3J0X3VwZGF0ZShzdHJ1Y3QgbGlzdF9oZWFkICpzZXRfdXBkYXRlX2xpc3QpCiYjNDM7c3RhdGljIHZvaWQgbmZ0X3NldF9hYm9ydF91cGRhdGUoc3RydWN0IG5mdGFibGVzX3Blcm5ldCAqbmZ0X25ldCkKIHsKIAlzdHJ1Y3QgbmZ0X3NldCAqc2V0LCAqbmV4dDsKIAotCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShzZXQsIG5leHQsIHNldF91cGRhdGVfbGlzdCwgcGVuZGluZ191cGRhdGUpIHsKJiM0MzsJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHNldCwgbmV4dCwgJmFtcDtuZnRfbmV0LSZndDtzZXRfdXBkYXRlX2xpc3QsIHBlbmRpbmdfdXBkYXRlKSB7CiAJCWxpc3RfZGVsX2luaXQoJmFtcDtzZXQtJmd0O3BlbmRpbmdfdXBkYXRlKTsKIAogCQlpZiAoIXNldC0mZ3Q7b3BzLSZndDthYm9ydCkKQEAgLTExMzg2LDMzICYjNDM7MTE0MTMsMjIgQEAgc3RhdGljIGludCBfX25mX3RhYmxlc19hYm9ydChzdHJ1Y3QgbmV0ICpuZXQsIGVudW0gbmZubF9hYm9ydF9hY3Rpb24gYWN0aW9uKQogCQkJbmZ0X3RyYW5zX2Rlc3Ryb3kodHJhbnMpOwogCQkJYnJlYWs7CiAJCWNhc2UgTkZUX01TR19ORVdTRVRFTEVNOgomIzQzOwkJCXRlID0gbmZ0X3RyYW5zX2NvbnRhaW5lcl9lbGVtKHRyYW5zKTsKIAkJCWlmIChuZnRfdHJhbnNfZWxlbV9zZXRfYm91bmQodHJhbnMpKSB7CiYjNDM7CQkJCWxpc3RfZGVsX2luaXQoJmFtcDt0ZS0mZ3Q7c2V0LSZndDtwZW5kaW5nX3VwZGF0ZSk7CiAJCQkJbmZ0X3RyYW5zX2Rlc3Ryb3kodHJhbnMpOwogCQkJCWJyZWFrOwogCQkJfQotCQkJdGUgPSBuZnRfdHJhbnNfY29udGFpbmVyX2VsZW0odHJhbnMpOwogCQkJaWYgKCFuZnRfdHJhbnNfZWxlbXNfbmV3X2Fib3J0KCZhbXA7Y3R4LCB0ZSkpIHsKIAkJCQluZnRfdHJhbnNfZGVzdHJveSh0cmFucyk7CiAJCQkJYnJlYWs7CiAJCQl9Ci0KLQkJCWlmICh0ZS0mZ3Q7c2V0LSZndDtvcHMtJmd0O2Fib3J0ICZhbXA7JmFtcDsKLQkJCSAgICBsaXN0X2VtcHR5KCZhbXA7dGUtJmd0O3NldC0mZ3Q7cGVuZGluZ191cGRhdGUpKSB7Ci0JCQkJbGlzdF9hZGRfdGFpbCgmYW1wO3RlLSZndDtzZXQtJmd0O3BlbmRpbmdfdXBkYXRlLAotCQkJCQkgICAgICAmYW1wO3NldF91cGRhdGVfbGlzdCk7Ci0JCQl9CiAJCQlicmVhazsKIAkJY2FzZSBORlRfTVNHX0RFTFNFVEVMRU06CiAJCWNhc2UgTkZUX01TR19ERVNUUk9ZU0VURUxFTToKIAkJCXRlID0gbmZ0X3RyYW5zX2NvbnRhaW5lcl9lbGVtKHRyYW5zKTsKIAogCQkJbmZ0X3RyYW5zX2VsZW1zX2Rlc3Ryb3lfYWJvcnQoJmFtcDtjdHgsIHRlKTsKLQotCQkJaWYgKHRlLSZndDtzZXQtJmd0O29wcy0mZ3Q7YWJvcnQgJmFtcDsmYW1wOwotCQkJICAgIGxpc3RfZW1wdHkoJmFtcDt0ZS0mZ3Q7c2V0LSZndDtwZW5kaW5nX3VwZGF0ZSkpIHsKLQkJCQlsaXN0X2FkZF90YWlsKCZhbXA7dGUtJmd0O3NldC0mZ3Q7cGVuZGluZ191cGRhdGUsCi0JCQkJCSAgICAgICZhbXA7c2V0X3VwZGF0ZV9saXN0KTsKLQkJCX0KIAkJCW5mdF90cmFuc19kZXN0cm95KHRyYW5zKTsKIAkJCWJyZWFrOwogCQljYXNlIE5GVF9NU0dfTkVXT0JKOgpAQCAtMTE0NTgsNyAmIzQzOzExNDc0LDcgQEAgc3RhdGljIGludCBfX25mX3RhYmxlc19hYm9ydChzdHJ1Y3QgbmV0ICpuZXQsIGVudW0gbmZubF9hYm9ydF9hY3Rpb24gYWN0aW9uKQogCiAJV0FSTl9PTl9PTkNFKCFsaXN0X2VtcHR5KCZhbXA7bmZ0X25ldC0mZ3Q7Y29tbWl0X3NldF9saXN0KSk7CiAKLQluZnRfc2V0X2Fib3J0X3VwZGF0ZSgmYW1wO3NldF91cGRhdGVfbGlzdCk7CiYjNDM7CW5mdF9zZXRfYWJvcnRfdXBkYXRlKG5mdF9uZXQpOwogCiAJc3luY2hyb25pemVfcmN1KCk7CiAKQEAgLTEyMTQyLDYgJiM0MzsxMjE1OCw3IEBAIHN0YXRpYyBpbnQgX19uZXRfaW5pdCBuZl90YWJsZXNfaW5pdF9uZXQoc3RydWN0IG5ldCAqbmV0KQogCUlOSVRfTElTVF9IRUFEKCZhbXA7bmZ0X25ldC0mZ3Q7YmluZGluZ19saXN0KTsKIAlJTklUX0xJU1RfSEVBRCgmYW1wO25mdF9uZXQtJmd0O21vZHVsZV9saXN0KTsKIAlJTklUX0xJU1RfSEVBRCgmYW1wO25mdF9uZXQtJmd0O25vdGlmeV9saXN0KTsKJiM0MzsJSU5JVF9MSVNUX0hFQUQoJmFtcDtuZnRfbmV0LSZndDtzZXRfdXBkYXRlX2xpc3QpOwogCW11dGV4X2luaXQoJmFtcDtuZnRfbmV0LSZndDtjb21taXRfbXV0ZXgpOwogCW5ldC0mZ3Q7bmZ0LmJhc2Vfc2VxID0gMTsKIAluZnRfbmV0LSZndDtnY19zZXEgPSAwOwpAQCAtMTIxODYsNiAmIzQzOzEyMjAzLDcgQEAgc3RhdGljIHZvaWQgX19uZXRfZXhpdCBuZl90YWJsZXNfZXhpdF9uZXQoc3RydWN0IG5ldCAqbmV0KQogCVdBUk5fT05fT05DRSghbGlzdF9lbXB0eSgmYW1wO25mdF9uZXQtJmd0O21vZHVsZV9saXN0KSk7CiAJV0FSTl9PTl9PTkNFKCFsaXN0X2VtcHR5KCZhbXA7bmZ0X25ldC0mZ3Q7bm90aWZ5X2xpc3QpKTsKIAlXQVJOX09OX09OQ0UoIWxpc3RfZW1wdHkoJmFtcDtuZnRfbmV0LSZndDtkZXN0cm95X2xpc3QpKTsKJiM0MzsJV0FSTl9PTl9PTkNFKCFsaXN0X2VtcHR5KCZhbXA7bmZ0X25ldC0mZ3Q7c2V0X3VwZGF0ZV9saXN0KSk7CiB9CiAKIHN0YXRpYyB2b2lkIG5mX3RhYmxlc19leGl0X2JhdGNoKHN0cnVjdCBsaXN0X2hlYWQgKm5ldF9leGl0X2xpc3QpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAyMzoyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0Nzc3CgkJCQkJCQlvdXRwdXQ6IDI5MgoJCQkJCQkJdGhvdWdodHM6IDk3NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiB0aGUgTmV0ZmlsdGVyIFRhYmxlcyBDb21taXQvQWJvcnQgUGF0Y2gqKgoKT2theSwgaGVyZSYjMzk7cyB3aGF0IEkmIzM5O3ZlIGdvdCBhZnRlciByZXZpZXdpbmcgdGhpcyBwYXRjaC4gSXQmIzM5O3MgZm9jdXNlZCBvbiByZWZhY3RvcmluZyB0aGUgY29tbWl0IGFuZCBhYm9ydCBsb2dpYyB3aXRoaW4gdGhlIG5ldGZpbHRlciB0YWJsZXMgY29kZS4gVGhlIGNvcmUgY2hhbmdlIGlzIHRoZSByZWxvY2F0aW9uIG9mIHRoZSBgc2V0X3VwZGF0ZV9saXN0YC4gUHJldmlvdXNseSwgdGhpcyBsaXN0IHdhcyBhIGxvY2FsIHZhcmlhYmxlIHdpdGhpbiBgbmZfdGFibGVzX2NvbW1pdGAgYW5kIGBfX25mX3RhYmxlc19hYm9ydGAuIE5vdywgaXQmIzM5O3MgYmVlbiBtb3ZlZCB0byB0aGUgYHN0cnVjdCBuZnRhYmxlc19wZXJuZXRgIHN0cnVjdHVyZSwgbWFraW5nIGl0IGEgcGVyLW5ldCBuYW1lc3BhY2UgcmVzb3VyY2UuCgpUaGUgaW1wbGljYXRpb25zIGFyZSBjbGVhcjogdGhpcyBsaXN0LCB3aGljaCB0cmFja3Mgc2V0cyBwZW5kaW5nIHVwZGF0ZXMsIGNhbiBub3cgYmUgcG9wdWxhdGVkIGR1cmluZyB0aGUgdHJhbnNhY3Rpb24gcHJlcGFyYXRpb24gc3RhZ2UgYW5kIGlzIHRoZW4gcHJvY2Vzc2VkIGR1cmluZyBjb21taXQgb3IgYWJvcnQuIFRoaXMgbGlzdCBtYW5hZ2VtZW50IGFsc28gY2hhbmdlcyBob3cgYE5GVF9NU0dfREVMU0VURUxFTWAgbWVzc2FnZXMgYXJlIGhhbmRsZWQsIHdpdGggYW4gZWFybGllciBjYWxsIHRvIGBuZnRfc2V0X2NvbW1pdF91cGRhdGVgLiBUaGlzIGxpa2VseSBhbHRlcnMgdGhlIHByb2Nlc3Npbmcgb3JkZXIgb2YgdGhlc2UgbWVzc2FnZXMgd2l0aGluIHRoZSBjb21taXQgcHJvY2Vzcy4KCk15IGV4cGVydCBpbnR1aXRpb24sIGNvbWJpbmVkIHdpdGggdGhlIGNvbnRleHQsIHN0cm9uZ2x5IHN1Z2dlc3RzIHRoaXMgaXMgYWJvdXQgZml4aW5nIGEgcmFjZSBjb25kaXRpb24sIGEgdXNlLWFmdGVyLWZyZWUgc2NlbmFyaW8sIG9yIGEgc2ltaWxhciBvcmRlcmluZyBidWcgcmVsYXRlZCB0byBzZXQgZWxlbWVudCB1cGRhdGVzIGFuZCB0aGUgY29tbWl0L2Fib3J0IHByb2Nlc3MuIFRoaXMgaXNuJiMzOTt0IGFib3V0IGludHJvZHVjaW5nIG5ldyBmZWF0dXJlczsgaXQmIzM5O3MgYSBjcml0aWNhbCBidWcgZml4LgoKTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uIGZvciBteSBldmFsdWF0aW9uIGlzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBEb2VzIHRoaXMgcGF0Y2ggaW50cm9kdWNlIGEgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyByZWFkIG9yIHVzZWQgaW4gY29udHJvbCBmbG93PyBBZnRlciBhIGNhcmVmdWwgZXhhbWluYXRpb24sIEkmIzM5O20gY29uZmlkZW50IHRoZSBhbnN3ZXIgaXMgbm8uIFRoaXMgcGF0Y2ggZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSBuZXcgc3RydWN0dXJlcyB0aGF0IGFyZSBwYXNzZWQgdG8gdXNlciBzcGFjZS4gSXQgZG9lc24mIzM5O3QgdG91Y2ggbWVtb3J5IGFsbG9jYXRpb24gb3IgdGhlIGZpZWxkcyBvZiBhbnkgZGF0YSBzdHJ1Y3R1cmVzIGluIGEgd2F5IHRoYXQgd291bGQgaW50cm9kdWNlIGFuIGluZm8tbGVhay4gSXQmIzM5O3MgcHVyZWx5IGFib3V0IGNvbnRyb2wgZmxvdyBhbmQgbGlzdCBtYW5hZ2VtZW50LiBUaGUgYHNldF91cGRhdGVfbGlzdGAgaXMganVzdCBhIGxpc3QgaGVhZC4gVGhlIGZhY3QgdGhhdCB0aGUgbGlzdCBpcyBtb3ZlZCB0byBhIHBlci1uZXQgc3RydWN0dXJlIGRvZXNuJiMzOTt0IGNoYW5nZSBhbnl0aGluZyBhYm91dCBob3cgaXRzIGVsZW1lbnRzIGFyZSBpbml0aWFsaXplZCwgbm9yIGRvZXMgaXQgbWFrZSBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHZ1bG5lcmFiaWxpdGllcy4KClNvLCB3aGlsZSB0aGlzIHBhdGNoIGlzIGNydWNpYWwgZm9yIGZpeGluZyB0aGUgYnVnIGl0IGFkZHJlc3NlcywgaXQgZG9lc24mIzM5O3QgbmVjZXNzaXRhdGUgYSBzcGVjaWFsaXplZCBLTVNBTiAoS2VybmVsIE1lbW9yeSBTYW5pdGl6ZXIpIGZ1enppbmcgc2Vzc2lvbi4gVGhlIHN0YW5kYXJkIEtBU0FOIChLZXJuZWwgQWRkcmVzcyBTYW5pdGl6ZXIpIGFuZCBzdGFuZGFyZCBkZWJ1ZyBvcHRpb25zIChsaWtlIGBDT05GSUdfREVCVUdfTElTVGApIGFyZSBtb3JlIHRoYW4gY2FwYWJsZSBvZiBjYXRjaGluZyBhbnkgdXNlLWFmdGVyLWZyZWUsIGxpc3QgY29ycnVwdGlvbiwgb3IgcmVsYXRlZCBtZW1vcnkgZXJyb3JzIHRoYXQgbWlnaHQgYXJpc2UgZnJvbSB0aGVzZSBjaGFuZ2VzLiBTdGFuZGFyZCBkZWJ1Z2dpbmcgdG9vbHMgYXJlIHN1ZmZpY2llbnQuIEkgY2FuIHJlbHkgb24gdGhvc2UuIEkgZG8gbm90IHNlZSBhbnkgbmV3IGluZm9ybWF0aW9uIGxlYWtzLCB3aGljaCBpcyBnb29kLgoKSSYjMzk7bSByZWFkeSB0byBtb3ZlIG9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAyMzoyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZWZhY3RvcnMgdGhlIHRyYW5zYWN0aW9uIGNvbW1pdCBhbmQgYWJvcnQgbG9naWMgaW4gbmV0ZmlsdGVyIHRhYmxlcyAobmZfdGFibGVzKS4gSXQgbW92ZXMgdGhlIGBzZXRfdXBkYXRlX2xpc3RgIGZyb20gYmVpbmcgYSBsb2NhbCB2YXJpYWJsZSBpbiBgbmZfdGFibGVzX2NvbW1pdGAgYW5kIGBfX25mX3RhYmxlc19hYm9ydGAgdG8gYSBwZXItbmV0IG5hbWVzcGFjZSBzdHJ1Y3R1cmUgKGBzdHJ1Y3QgbmZ0YWJsZXNfcGVybmV0YCkuIEl0IGFsc28gYWRqdXN0cyB0aGUgb3JkZXIgb2Ygb3BlcmF0aW9ucyBkdXJpbmcgdGhlIGNvbW1pdCBwaGFzZSwgc3BlY2lmaWNhbGx5IGNhbGxpbmcgYG5mdF9zZXRfY29tbWl0X3VwZGF0ZWAgZWFybGllciBhbmQgbW9kaWZ5aW5nIGhvdyBgTkZUX01TR19ERUxTRVRFTEVNYCBtZXNzYWdlcyBhcmUgcHJvY2Vzc2VkIGFuZCBub3RpZmllZC5cblxuVGhlc2UgY2hhbmdlcyBhcmUgcHVyZWx5IHJlbGF0ZWQgdG8gY29udHJvbCBmbG93LCBsaXN0IG1hbmFnZW1lbnQsIGFuZCB0aGUgbmV0ZmlsdGVyIHRyYW5zYWN0aW9uIHN0YXRlIG1hY2hpbmUgKGxpa2VseSB0byBmaXggYSByYWNlIGNvbmRpdGlvbiwgdXNlLWFmdGVyLWZyZWUsIG9yIG9yZGVyaW5nIGlzc3VlKS4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcyB0aGF0IGFyZSBjb3BpZWQgdG8gdXNlciBzcGFjZSwgbm9yIGRvZXMgaXQgbW9kaWZ5IGJ1ZmZlciBhbGxvY2F0aW9ucywgYm91bmRzIGNoZWNraW5nLCBvciBpbml0aWFsaXphdGlvbiBsb2dpYyBpbiBhIHdheSB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIGtlcm5lbCBtZW1vcnkgKGluZm8tbGVha3MpIG9yIGNhdXNlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIGJlIHVzZWQgaW4gY29udHJvbCBmbG93LlxuXG5BbnkgYnVncyBpbnRyb2R1Y2VkIG9yIGZpeGVkIGJ5IHRoaXMgcGF0Y2ggKHN1Y2ggYXMgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZS1mcmVlLCBvciBsaXN0IGNvcnJ1cHRpb24pIHdvdWxkIGJlIHJlbGlhYmx5IGRldGVjdGVkIGJ5IHN0YW5kYXJkIEtBU0FOIGFuZCBzdGFuZGFyZCBrZXJuZWwgZGVidWcgb3B0aW9ucyAobGlrZSBgQ09ORklHX0RFQlVHX0xJU1RgKS4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IGp1c3RpZmllZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlZmFjdG9ycyB0aGUgdHJhbnNhY3Rpb24gY29tbWl0IGFuZCBhYm9ydCBsb2dpYyBpbiBuZXRmaWx0ZXIgdGFibGVzIChuZl90YWJsZXMpLiBJdCBtb3ZlcyB0aGUgYHNldF91cGRhdGVfbGlzdGAgZnJvbSBiZWluZyBhIGxvY2FsIHZhcmlhYmxlIGluIGBuZl90YWJsZXNfY29tbWl0YCBhbmQgYF9fbmZfdGFibGVzX2Fib3J0YCB0byBhIHBlci1uZXQgbmFtZXNwYWNlIHN0cnVjdHVyZSAoYHN0cnVjdCBuZnRhYmxlc19wZXJuZXRgKS4gSXQgYWxzbyBhZGp1c3RzIHRoZSBvcmRlciBvZiBvcGVyYXRpb25zIGR1cmluZyB0aGUgY29tbWl0IHBoYXNlLCBzcGVjaWZpY2FsbHkgY2FsbGluZyBgbmZ0X3NldF9jb21taXRfdXBkYXRlYCBlYXJsaWVyIGFuZCBtb2RpZnlpbmcgaG93IGBORlRfTVNHX0RFTFNFVEVMRU1gIG1lc3NhZ2VzIGFyZSBwcm9jZXNzZWQgYW5kIG5vdGlmaWVkLlxuXG5UaGVzZSBjaGFuZ2VzIGFyZSBwdXJlbHkgcmVsYXRlZCB0byBjb250cm9sIGZsb3csIGxpc3QgbWFuYWdlbWVudCwgYW5kIHRoZSBuZXRmaWx0ZXIgdHJhbnNhY3Rpb24gc3RhdGUgbWFjaGluZSAobGlrZWx5IHRvIGZpeCBhIHJhY2UgY29uZGl0aW9uLCB1c2UtYWZ0ZXItZnJlZSwgb3Igb3JkZXJpbmcgaXNzdWUpLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgYXJlIGNvcGllZCB0byB1c2VyIHNwYWNlLCBub3IgZG9lcyBpdCBtb2RpZnkgYnVmZmVyIGFsbG9jYXRpb25zLCBib3VuZHMgY2hlY2tpbmcsIG9yIGluaXRpYWxpemF0aW9uIGxvZ2ljIGluIGEgd2F5IHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQga2VybmVsIG1lbW9yeSAoaW5mby1sZWFrcykgb3IgY2F1c2UgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gYmUgdXNlZCBpbiBjb250cm9sIGZsb3cuXG5cbkFueSBidWdzIGludHJvZHVjZWQgb3IgZml4ZWQgYnkgdGhpcyBwYXRjaCAoc3VjaCBhcyB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlLWZyZWUsIG9yIGxpc3QgY29ycnVwdGlvbikgd291bGQgYmUgcmVsaWFibHkgZGV0ZWN0ZWQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBkZWJ1ZyBvcHRpb25zIChsaWtlIGBDT05GSUdfREVCVUdfTElTVGApLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QganVzdGlmaWVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xMlQyMzoyNTozMy41MTM3NzI0ODVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODM5ODAzOTEyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORl9UQUJMRVNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZl90YWJsZXNfY29tbWl0XCIsXG4gICAgXCJuZl90YWJsZXNfYWJvcnRcIixcbiAgICBcIm5mX3RhYmxlc19uZXdzZXRlbGVtXCIsXG4gICAgXCJuZl90YWJsZXNfZGVsc2V0ZWxlbVwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVmYWN0b3JzIHRoZSB0cmFuc2FjdGlvbiBjb21taXQgYW5kIGFib3J0IGxvZ2ljIGluIG5ldGZpbHRlciB0YWJsZXMgKG5mX3RhYmxlcykuIEl0IG1vdmVzIHRoZSBgc2V0X3VwZGF0ZV9saXN0YCBmcm9tIGJlaW5nIGEgbG9jYWwgdmFyaWFibGUgaW4gYG5mX3RhYmxlc19jb21taXRgIGFuZCBgX19uZl90YWJsZXNfYWJvcnRgIHRvIGEgcGVyLW5ldCBuYW1lc3BhY2Ugc3RydWN0dXJlIChgc3RydWN0IG5mdGFibGVzX3Blcm5ldGApLiBJdCBhbHNvIGFkanVzdHMgdGhlIG9yZGVyIG9mIG9wZXJhdGlvbnMgZHVyaW5nIHRoZSBjb21taXQgcGhhc2UsIHNwZWNpZmljYWxseSBjYWxsaW5nIGBuZnRfc2V0X2NvbW1pdF91cGRhdGVgIGVhcmxpZXIgYW5kIG1vZGlmeWluZyBob3cgYE5GVF9NU0dfREVMU0VURUxFTWAgbWVzc2FnZXMgYXJlIHByb2Nlc3NlZCBhbmQgbm90aWZpZWQuXFxuXFxuVGhlc2UgY2hhbmdlcyBhcmUgcHVyZWx5IHJlbGF0ZWQgdG8gY29udHJvbCBmbG93LCBsaXN0IG1hbmFnZW1lbnQsIGFuZCB0aGUgbmV0ZmlsdGVyIHRyYW5zYWN0aW9uIHN0YXRlIG1hY2hpbmUgKGxpa2VseSB0byBmaXggYSByYWNlIGNvbmRpdGlvbiwgdXNlLWFmdGVyLWZyZWUsIG9yIG9yZGVyaW5nIGlzc3VlKS4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcyB0aGF0IGFyZSBjb3BpZWQgdG8gdXNlciBzcGFjZSwgbm9yIGRvZXMgaXQgbW9kaWZ5IGJ1ZmZlciBhbGxvY2F0aW9ucywgYm91bmRzIGNoZWNraW5nLCBvciBpbml0aWFsaXphdGlvbiBsb2dpYyBpbiBhIHdheSB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIGtlcm5lbCBtZW1vcnkgKGluZm8tbGVha3MpIG9yIGNhdXNlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIGJlIHVzZWQgaW4gY29udHJvbCBmbG93LlxcblxcbkFueSBidWdzIGludHJvZHVjZWQgb3IgZml4ZWQgYnkgdGhpcyBwYXRjaCAoc3VjaCBhcyB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlLWZyZWUsIG9yIGxpc3QgY29ycnVwdGlvbikgd291bGQgYmUgcmVsaWFibHkgZGV0ZWN0ZWQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBkZWJ1ZyBvcHRpb25zIChsaWtlIGBDT05GSUdfREVCVUdfTElTVGApLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QganVzdGlmaWVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRmaWx0ZXIgbmZfdGFibGVzIEFQSSB0byBpbnRyb2R1Y2UgYSBgc2V0X3VwZGF0ZV9saXN0YCBpbiBgc3RydWN0IG5mdGFibGVzX3Blcm5ldGAuIEl0IGNoYW5nZXMgaG93IHNldCBlbGVtZW50cyBhcmUgYWRkZWQsIHJlbW92ZWQsIGFuZCBhYm9ydGVkIGR1cmluZyBuZXRsaW5rIHRyYW5zYWN0aW9ucy4gU3BlY2lmaWNhbGx5LCBpdCBtb2RpZmllcyBgbmZ0X3RyYW5zX2NvbW1pdF9saXN0X2FkZF9lbGVtYCwgYG5mdF9zZXRfY29tbWl0X3VwZGF0ZWAsIGBuZl90YWJsZXNfY29tbWl0YCwgYW5kIGBfX25mX3RhYmxlc19hYm9ydGAgdG8gaGFuZGxlIHRoZSBuZXcgbGlzdCBhbmQgZW5zdXJlIHByb3BlciBvcmRlcmluZyBvZiBzZXQgdXBkYXRlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldGZpbHRlciBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluayBzb2NrZXRzIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIHByZXZlbnQgcmVncmVzc2lvbnMgb3IgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQyMzoyNTozMy41MTM3Nzc5MjVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NzYwMTg5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDBkOTMxMmEwZDhkYTZjZTgyZTA1MzY4NDM5YTk5ZjdhNjBkMmY5MWNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBBdWcgMTIgMjM6MjU6MzIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlcy5oIGIvaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlcy5oXFxuaW5kZXggM2JlNjEyMTQ1YzEzMC4uMjM4ZjZlY2I5MGU5OSAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzLmhcXG4rKysgYi9pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzLmhcXG5AQCAtMTk0OSw2ICsxOTQ5LDcgQEAgc3RydWN0IG5mdGFibGVzX3Blcm5ldCB7XFxuIFxcdHN0cnVjdCBsaXN0X2hlYWRcXHRiaW5kaW5nX2xpc3Q7XFxuIFxcdHN0cnVjdCBsaXN0X2hlYWRcXHRtb2R1bGVfbGlzdDtcXG4gXFx0c3RydWN0IGxpc3RfaGVhZFxcdG5vdGlmeV9saXN0O1xcbitcXHRzdHJ1Y3QgbGlzdF9oZWFkXFx0c2V0X3VwZGF0ZV9saXN0O1xcbiBcXHRzdHJ1Y3QgbXV0ZXhcXHRcXHRjb21taXRfbXV0ZXg7XFxuIFxcdHU2NFxcdFxcdFxcdHRhYmxlX2hhbmRsZTtcXG4gXFx0dTY0XFx0XFx0XFx0dHN0YW1wO1xcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYyBiL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jXFxuaW5kZXggYWYzNTdmNmM1MDcwYi4uNWM0ZjZjMzU0NTk1MCAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jXFxuQEAgLTU5NSwxMCArNTk1LDE1IEBAIHN0YXRpYyB2b2lkIG5mdF90cmFuc19jb21taXRfbGlzdF9hZGRfdGFpbChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBuZnRfdHJhbnMgKnRyXFxuIHN0YXRpYyB2b2lkIG5mdF90cmFuc19jb21taXRfbGlzdF9hZGRfZWxlbShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBuZnRfdHJhbnMgKnRyYW5zKVxcbiB7XFxuIFxcdHN0cnVjdCBuZnRhYmxlc19wZXJuZXQgKm5mdF9uZXQgPSBuZnRfcGVybmV0KG5ldCk7XFxuK1xcdHN0cnVjdCBuZnRfdHJhbnNfZWxlbSAqdGU7XFxuIFxcbiBcXHRXQVJOX09OX09OQ0UodHJhbnMtXFx1MDAzZW1zZ190eXBlICE9IE5GVF9NU0dfTkVXU0VURUxFTSBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHQgICAgIHRyYW5zLVxcdTAwM2Vtc2dfdHlwZSAhPSBORlRfTVNHX0RFTFNFVEVMRU0pO1xcbiBcXG4rXFx0dGUgPSBuZnRfdHJhbnNfY29udGFpbmVyX2VsZW0odHJhbnMpO1xcbitcXHRpZiAodGUtXFx1MDAzZXNldC1cXHUwMDNlb3BzLVxcdTAwM2Vjb21taXQgXFx1MDAyNlxcdTAwMjYgbGlzdF9lbXB0eShcXHUwMDI2dGUtXFx1MDAzZXNldC1cXHUwMDNlcGVuZGluZ191cGRhdGUpKVxcbitcXHRcXHRsaXN0X2FkZF90YWlsKFxcdTAwMjZ0ZS1cXHUwMDNlc2V0LVxcdTAwM2VwZW5kaW5nX3VwZGF0ZSwgXFx1MDAyNm5mdF9uZXQtXFx1MDAzZXNldF91cGRhdGVfbGlzdCk7XFxuK1xcbiBcXHRpZiAobmZ0X3RyYW5zX3RyeV9jb2xsYXBzZShuZnRfbmV0LCB0cmFucykpIHtcXG4gXFx0XFx0a2ZyZWUodHJhbnMpO1xcbiBcXHRcXHRyZXR1cm47XFxuQEAgLTcyMDUsNiArNzIxMCwyMCBAQCBzdGF0aWMgdm9pZCBuZnRfdHJhbnNfZWxlbXNfcmVtb3ZlKGNvbnN0IHN0cnVjdCBuZnRfY3R4ICpjdHgsXFxuIFxcdH1cXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgbmZ0X3RyYW5zX2VsZW1zX3JlbW92ZV9ub3RpZnkoY29uc3Qgc3RydWN0IG5mdF9jdHggKmN0eCxcXG4rXFx0XFx0XFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3QgbmZ0X3RyYW5zX2VsZW0gKnRlKVxcbit7XFxuK1xcdGludCBpO1xcbitcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHRlLVxcdTAwM2VuZWxlbXM7IGkrKykge1xcbitcXHRcXHRXQVJOX09OX09OQ0UodGUtXFx1MDAzZWVsZW1zW2ldLnVwZGF0ZSk7XFxuK1xcbitcXHRcXHRuZl90YWJsZXNfc2V0ZWxlbV9ub3RpZnkoY3R4LCB0ZS1cXHUwMDNlc2V0LFxcbitcXHRcXHRcXHRcXHRcXHQgdGUtXFx1MDAzZWVsZW1zW2ldLnByaXYsXFxuK1xcdFxcdFxcdFxcdFxcdCB0ZS1cXHUwMDNlbmZ0X3RyYW5zLm1zZ190eXBlKTtcXG4rXFx0fVxcbit9XFxuK1xcbiBzdGF0aWMgYm9vbCBuZnRfc2V0ZWxlbV92YWxpZF9rZXlfZW5kKGNvbnN0IHN0cnVjdCBuZnRfc2V0ICpzZXQsXFxuIFxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBubGF0dHIgKipubGEsIHUzMiBmbGFncylcXG4ge1xcbkBAIC0xMDg0OCwxMSArMTA4NjcsMzEgQEAgc3RhdGljIHZvaWQgbmZfdGFibGVzX2NvbW1pdF9hdWRpdF9sb2coc3RydWN0IGxpc3RfaGVhZCAqYWRsLCB1MzIgZ2VuZXJhdGlvbilcXG4gXFx0fVxcbiB9XFxuIFxcbi1zdGF0aWMgdm9pZCBuZnRfc2V0X2NvbW1pdF91cGRhdGUoc3RydWN0IGxpc3RfaGVhZCAqc2V0X3VwZGF0ZV9saXN0KVxcbitzdGF0aWMgdm9pZCBuZnRfc2V0X2NvbW1pdF91cGRhdGUoc3RydWN0IG5mdF9jdHggKmN0eCxcXG4rXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgbmZ0YWJsZXNfcGVybmV0ICpuZnRfbmV0KVxcbiB7XFxuIFxcdHN0cnVjdCBuZnRfc2V0ICpzZXQsICpuZXh0O1xcbitcXHRzdHJ1Y3QgbmZ0X3RyYW5zX2VsZW0gKnRlO1xcbitcXHRzdHJ1Y3QgbmZ0X3RyYW5zICp0cmFucztcXG4gXFxuLVxcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShzZXQsIG5leHQsIHNldF91cGRhdGVfbGlzdCwgcGVuZGluZ191cGRhdGUpIHtcXG4rXFx0aWYgKGxpc3RfZW1wdHkoXFx1MDAyNm5mdF9uZXQtXFx1MDAzZXNldF91cGRhdGVfbGlzdCkpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuK1xcdGxpc3RfZm9yX2VhY2hfZW50cnkodHJhbnMsIFxcdTAwMjZuZnRfbmV0LVxcdTAwM2Vjb21taXRfbGlzdCwgbGlzdCkge1xcbitcXHRcXHRuZnRfY3R4X3VwZGF0ZShjdHgsIHRyYW5zKTtcXG4rXFxuK1xcdFxcdHN3aXRjaCAodHJhbnMtXFx1MDAzZW1zZ190eXBlKSB7XFxuK1xcdFxcdGNhc2UgTkZUX01TR19ERUxTRVRFTEVNOlxcbitcXHRcXHRcXHR0ZSA9IG5mdF90cmFuc19jb250YWluZXJfZWxlbSh0cmFucyk7XFxuK1xcdFxcdFxcdGlmICghdGUtXFx1MDAzZXNldC1cXHUwMDNlb3BzLVxcdTAwM2Vjb21taXQpXFxuK1xcdFxcdFxcdFxcdGJyZWFrO1xcbitcXG4rXFx0XFx0XFx0bmZ0X3RyYW5zX2VsZW1zX3JlbW92ZShjdHgsIHRlKTtcXG4rXFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdH1cXG4rXFx0fVxcbitcXG4rXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHNldCwgbmV4dCwgXFx1MDAyNm5mdF9uZXQtXFx1MDAzZXNldF91cGRhdGVfbGlzdCwgcGVuZGluZ191cGRhdGUpIHtcXG4gXFx0XFx0bGlzdF9kZWxfaW5pdChcXHUwMDI2c2V0LVxcdTAwM2VwZW5kaW5nX3VwZGF0ZSk7XFxuIFxcbiBcXHRcXHRpZiAoIXNldC1cXHUwMDNlb3BzLVxcdTAwM2Vjb21taXQgfHwgc2V0LVxcdTAwM2VkZWFkKVxcbkBAIC0xMDg4NSw3ICsxMDkyNCw2IEBAIHN0YXRpYyBpbnQgbmZfdGFibGVzX2NvbW1pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IpXFxuIFxcdHN0cnVjdCBuZnRfdHJhbnNfYmluZGluZyAqdHJhbnNfYmluZGluZztcXG4gXFx0c3RydWN0IG5mdF90cmFucyAqdHJhbnMsICpuZXh0O1xcbiBcXHR1bnNpZ25lZCBpbnQgYmFzZV9zZXEsIGdjX3NlcTtcXG4tXFx0TElTVF9IRUFEKHNldF91cGRhdGVfbGlzdCk7XFxuIFxcdHN0cnVjdCBuZnRfdHJhbnNfZWxlbSAqdGU7XFxuIFxcdHN0cnVjdCBuZnRfY2hhaW4gKmNoYWluO1xcbiBcXHRzdHJ1Y3QgbmZ0X3RhYmxlICp0YWJsZTtcXG5AQCAtMTA5NjAsNiArMTA5OTgsOCBAQCBzdGF0aWMgaW50IG5mX3RhYmxlc19jb21taXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiBcXHR9XFxuIFxcbiBcXHQvKiBzdGVwIDIuICBNYWtlIHJ1bGVzX2dlbl9YIHZpc2libGUgdG8gcGFja2V0IHBhdGggKi9cXG4rXFx0bmZ0X3NldF9jb21taXRfdXBkYXRlKFxcdTAwMjZjdHgsIG5mdF9uZXQpO1xcbitcXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeSh0YWJsZSwgXFx1MDAyNm5mdF9uZXQtXFx1MDAzZXRhYmxlcywgbGlzdCkge1xcbiBcXHRcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGNoYWluLCBcXHUwMDI2dGFibGUtXFx1MDAzZWNoYWlucywgbGlzdClcXG4gXFx0XFx0XFx0bmZfdGFibGVzX2NvbW1pdF9jaGFpbihuZXQsIGNoYWluKTtcXG5AQCAtMTEwOTEsMjcgKzExMTMxLDE2IEBAIHN0YXRpYyBpbnQgbmZfdGFibGVzX2NvbW1pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IpXFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHRjYXNlIE5GVF9NU0dfTkVXU0VURUxFTTpcXG4gXFx0XFx0XFx0dGUgPSBuZnRfdHJhbnNfY29udGFpbmVyX2VsZW0odHJhbnMpO1xcbi1cXG4gXFx0XFx0XFx0bmZ0X3RyYW5zX2VsZW1zX2FkZChcXHUwMDI2Y3R4LCB0ZSk7XFxuLVxcbi1cXHRcXHRcXHRpZiAodGUtXFx1MDAzZXNldC1cXHUwMDNlb3BzLVxcdTAwM2Vjb21taXQgXFx1MDAyNlxcdTAwMjZcXG4tXFx0XFx0XFx0ICAgIGxpc3RfZW1wdHkoXFx1MDAyNnRlLVxcdTAwM2VzZXQtXFx1MDAzZXBlbmRpbmdfdXBkYXRlKSkge1xcbi1cXHRcXHRcXHRcXHRsaXN0X2FkZF90YWlsKFxcdTAwMjZ0ZS1cXHUwMDNlc2V0LVxcdTAwM2VwZW5kaW5nX3VwZGF0ZSxcXG4tXFx0XFx0XFx0XFx0XFx0ICAgICAgXFx1MDAyNnNldF91cGRhdGVfbGlzdCk7XFxuLVxcdFxcdFxcdH1cXG4gXFx0XFx0XFx0bmZ0X3RyYW5zX2Rlc3Ryb3kodHJhbnMpO1xcbiBcXHRcXHRcXHRicmVhaztcXG4gXFx0XFx0Y2FzZSBORlRfTVNHX0RFTFNFVEVMRU06XFxuIFxcdFxcdGNhc2UgTkZUX01TR19ERVNUUk9ZU0VURUxFTTpcXG4gXFx0XFx0XFx0dGUgPSBuZnRfdHJhbnNfY29udGFpbmVyX2VsZW0odHJhbnMpO1xcbi1cXG4tXFx0XFx0XFx0bmZ0X3RyYW5zX2VsZW1zX3JlbW92ZShcXHUwMDI2Y3R4LCB0ZSk7XFxuLVxcbi1cXHRcXHRcXHRpZiAodGUtXFx1MDAzZXNldC1cXHUwMDNlb3BzLVxcdTAwM2Vjb21taXQgXFx1MDAyNlxcdTAwMjZcXG4tXFx0XFx0XFx0ICAgIGxpc3RfZW1wdHkoXFx1MDAyNnRlLVxcdTAwM2VzZXQtXFx1MDAzZXBlbmRpbmdfdXBkYXRlKSkge1xcbi1cXHRcXHRcXHRcXHRsaXN0X2FkZF90YWlsKFxcdTAwMjZ0ZS1cXHUwMDNlc2V0LVxcdTAwM2VwZW5kaW5nX3VwZGF0ZSxcXG4tXFx0XFx0XFx0XFx0XFx0ICAgICAgXFx1MDAyNnNldF91cGRhdGVfbGlzdCk7XFxuLVxcdFxcdFxcdH1cXG4rXFx0XFx0XFx0aWYgKHRlLVxcdTAwM2VzZXQtXFx1MDAzZW9wcy1cXHUwMDNlY29tbWl0KVxcbitcXHRcXHRcXHRcXHRuZnRfdHJhbnNfZWxlbXNfcmVtb3ZlX25vdGlmeShcXHUwMDI2Y3R4LCB0ZSk7XFxuK1xcdFxcdFxcdGVsc2VcXG4rXFx0XFx0XFx0XFx0bmZ0X3RyYW5zX2VsZW1zX3JlbW92ZShcXHUwMDI2Y3R4LCB0ZSk7XFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHRjYXNlIE5GVF9NU0dfTkVXT0JKOlxcbiBcXHRcXHRcXHRpZiAobmZ0X3RyYW5zX29ial91cGRhdGUodHJhbnMpKSB7XFxuQEAgLTExMTgwLDggKzExMjA5LDYgQEAgc3RhdGljIGludCBuZl90YWJsZXNfY29tbWl0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gXFx0XFx0fVxcbiBcXHR9XFxuIFxcbi1cXHRuZnRfc2V0X2NvbW1pdF91cGRhdGUoXFx1MDAyNnNldF91cGRhdGVfbGlzdCk7XFxuLVxcbiBcXHRuZnRfY29tbWl0X25vdGlmeShuZXQsIE5FVExJTktfQ0Ioc2tiKS5wb3J0aWQpO1xcbiBcXHRuZl90YWJsZXNfZ2VuX25vdGlmeShuZXQsIHNrYiwgTkZUX01TR19ORVdHRU4pO1xcbiBcXHRuZl90YWJsZXNfY29tbWl0X2F1ZGl0X2xvZyhcXHUwMDI2YWRsLCBuZnRfYmFzZV9zZXEobmV0KSk7XFxuQEAgLTExMjQ3LDExICsxMTI3NCwxMSBAQCBzdGF0aWMgdm9pZCBuZl90YWJsZXNfYWJvcnRfcmVsZWFzZShzdHJ1Y3QgbmZ0X3RyYW5zICp0cmFucylcXG4gXFx0a2ZyZWUodHJhbnMpO1xcbiB9XFxuIFxcbi1zdGF0aWMgdm9pZCBuZnRfc2V0X2Fib3J0X3VwZGF0ZShzdHJ1Y3QgbGlzdF9oZWFkICpzZXRfdXBkYXRlX2xpc3QpXFxuK3N0YXRpYyB2b2lkIG5mdF9zZXRfYWJvcnRfdXBkYXRlKHN0cnVjdCBuZnRhYmxlc19wZXJuZXQgKm5mdF9uZXQpXFxuIHtcXG4gXFx0c3RydWN0IG5mdF9zZXQgKnNldCwgKm5leHQ7XFxuIFxcbi1cXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoc2V0LCBuZXh0LCBzZXRfdXBkYXRlX2xpc3QsIHBlbmRpbmdfdXBkYXRlKSB7XFxuK1xcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShzZXQsIG5leHQsIFxcdTAwMjZuZnRfbmV0LVxcdTAwM2VzZXRfdXBkYXRlX2xpc3QsIHBlbmRpbmdfdXBkYXRlKSB7XFxuIFxcdFxcdGxpc3RfZGVsX2luaXQoXFx1MDAyNnNldC1cXHUwMDNlcGVuZGluZ191cGRhdGUpO1xcbiBcXG4gXFx0XFx0aWYgKCFzZXQtXFx1MDAzZW9wcy1cXHUwMDNlYWJvcnQpXFxuQEAgLTExMzg2LDMzICsxMTQxMywyMiBAQCBzdGF0aWMgaW50IF9fbmZfdGFibGVzX2Fib3J0KHN0cnVjdCBuZXQgKm5ldCwgZW51bSBuZm5sX2Fib3J0X2FjdGlvbiBhY3Rpb24pXFxuIFxcdFxcdFxcdG5mdF90cmFuc19kZXN0cm95KHRyYW5zKTtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdGNhc2UgTkZUX01TR19ORVdTRVRFTEVNOlxcbitcXHRcXHRcXHR0ZSA9IG5mdF90cmFuc19jb250YWluZXJfZWxlbSh0cmFucyk7XFxuIFxcdFxcdFxcdGlmIChuZnRfdHJhbnNfZWxlbV9zZXRfYm91bmQodHJhbnMpKSB7XFxuK1xcdFxcdFxcdFxcdGxpc3RfZGVsX2luaXQoXFx1MDAyNnRlLVxcdTAwM2VzZXQtXFx1MDAzZXBlbmRpbmdfdXBkYXRlKTtcXG4gXFx0XFx0XFx0XFx0bmZ0X3RyYW5zX2Rlc3Ryb3kodHJhbnMpO1xcbiBcXHRcXHRcXHRcXHRicmVhaztcXG4gXFx0XFx0XFx0fVxcbi1cXHRcXHRcXHR0ZSA9IG5mdF90cmFuc19jb250YWluZXJfZWxlbSh0cmFucyk7XFxuIFxcdFxcdFxcdGlmICghbmZ0X3RyYW5zX2VsZW1zX25ld19hYm9ydChcXHUwMDI2Y3R4LCB0ZSkpIHtcXG4gXFx0XFx0XFx0XFx0bmZ0X3RyYW5zX2Rlc3Ryb3kodHJhbnMpO1xcbiBcXHRcXHRcXHRcXHRicmVhaztcXG4gXFx0XFx0XFx0fVxcbi1cXG4tXFx0XFx0XFx0aWYgKHRlLVxcdTAwM2VzZXQtXFx1MDAzZW9wcy1cXHUwMDNlYWJvcnQgXFx1MDAyNlxcdTAwMjZcXG4tXFx0XFx0XFx0ICAgIGxpc3RfZW1wdHkoXFx1MDAyNnRlLVxcdTAwM2VzZXQtXFx1MDAzZXBlbmRpbmdfdXBkYXRlKSkge1xcbi1cXHRcXHRcXHRcXHRsaXN0X2FkZF90YWlsKFxcdTAwMjZ0ZS1cXHUwMDNlc2V0LVxcdTAwM2VwZW5kaW5nX3VwZGF0ZSxcXG4tXFx0XFx0XFx0XFx0XFx0ICAgICAgXFx1MDAyNnNldF91cGRhdGVfbGlzdCk7XFxuLVxcdFxcdFxcdH1cXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdGNhc2UgTkZUX01TR19ERUxTRVRFTEVNOlxcbiBcXHRcXHRjYXNlIE5GVF9NU0dfREVTVFJPWVNFVEVMRU06XFxuIFxcdFxcdFxcdHRlID0gbmZ0X3RyYW5zX2NvbnRhaW5lcl9lbGVtKHRyYW5zKTtcXG4gXFxuIFxcdFxcdFxcdG5mdF90cmFuc19lbGVtc19kZXN0cm95X2Fib3J0KFxcdTAwMjZjdHgsIHRlKTtcXG4tXFxuLVxcdFxcdFxcdGlmICh0ZS1cXHUwMDNlc2V0LVxcdTAwM2VvcHMtXFx1MDAzZWFib3J0IFxcdTAwMjZcXHUwMDI2XFxuLVxcdFxcdFxcdCAgICBsaXN0X2VtcHR5KFxcdTAwMjZ0ZS1cXHUwMDNlc2V0LVxcdTAwM2VwZW5kaW5nX3VwZGF0ZSkpIHtcXG4tXFx0XFx0XFx0XFx0bGlzdF9hZGRfdGFpbChcXHUwMDI2dGUtXFx1MDAzZXNldC1cXHUwMDNlcGVuZGluZ191cGRhdGUsXFxuLVxcdFxcdFxcdFxcdFxcdCAgICAgIFxcdTAwMjZzZXRfdXBkYXRlX2xpc3QpO1xcbi1cXHRcXHRcXHR9XFxuIFxcdFxcdFxcdG5mdF90cmFuc19kZXN0cm95KHRyYW5zKTtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdGNhc2UgTkZUX01TR19ORVdPQko6XFxuQEAgLTExNDU4LDcgKzExNDc0LDcgQEAgc3RhdGljIGludCBfX25mX3RhYmxlc19hYm9ydChzdHJ1Y3QgbmV0ICpuZXQsIGVudW0gbmZubF9hYm9ydF9hY3Rpb24gYWN0aW9uKVxcbiBcXG4gXFx0V0FSTl9PTl9PTkNFKCFsaXN0X2VtcHR5KFxcdTAwMjZuZnRfbmV0LVxcdTAwM2Vjb21taXRfc2V0X2xpc3QpKTtcXG4gXFxuLVxcdG5mdF9zZXRfYWJvcnRfdXBkYXRlKFxcdTAwMjZzZXRfdXBkYXRlX2xpc3QpO1xcbitcXHRuZnRfc2V0X2Fib3J0X3VwZGF0ZShuZnRfbmV0KTtcXG4gXFxuIFxcdHN5bmNocm9uaXplX3JjdSgpO1xcbiBcXG5AQCAtMTIxNDIsNiArMTIxNTgsNyBAQCBzdGF0aWMgaW50IF9fbmV0X2luaXQgbmZfdGFibGVzX2luaXRfbmV0KHN0cnVjdCBuZXQgKm5ldClcXG4gXFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNm5mdF9uZXQtXFx1MDAzZWJpbmRpbmdfbGlzdCk7XFxuIFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZuZnRfbmV0LVxcdTAwM2Vtb2R1bGVfbGlzdCk7XFxuIFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZuZnRfbmV0LVxcdTAwM2Vub3RpZnlfbGlzdCk7XFxuK1xcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZuZnRfbmV0LVxcdTAwM2VzZXRfdXBkYXRlX2xpc3QpO1xcbiBcXHRtdXRleF9pbml0KFxcdTAwMjZuZnRfbmV0LVxcdTAwM2Vjb21taXRfbXV0ZXgpO1xcbiBcXHRuZXQtXFx1MDAzZW5mdC5iYXNlX3NlcSA9IDE7XFxuIFxcdG5mdF9uZXQtXFx1MDAzZWdjX3NlcSA9IDA7XFxuQEAgLTEyMTg2LDYgKzEyMjAzLDcgQEAgc3RhdGljIHZvaWQgX19uZXRfZXhpdCBuZl90YWJsZXNfZXhpdF9uZXQoc3RydWN0IG5ldCAqbmV0KVxcbiBcXHRXQVJOX09OX09OQ0UoIWxpc3RfZW1wdHkoXFx1MDAyNm5mdF9uZXQtXFx1MDAzZW1vZHVsZV9saXN0KSk7XFxuIFxcdFdBUk5fT05fT05DRSghbGlzdF9lbXB0eShcXHUwMDI2bmZ0X25ldC1cXHUwMDNlbm90aWZ5X2xpc3QpKTtcXG4gXFx0V0FSTl9PTl9PTkNFKCFsaXN0X2VtcHR5KFxcdTAwMjZuZnRfbmV0LVxcdTAwM2VkZXN0cm95X2xpc3QpKTtcXG4rXFx0V0FSTl9PTl9PTkNFKCFsaXN0X2VtcHR5KFxcdTAwMjZuZnRfbmV0LVxcdTAwM2VzZXRfdXBkYXRlX2xpc3QpKTtcXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQgbmZfdGFibGVzX2V4aXRfYmF0Y2goc3RydWN0IGxpc3RfaGVhZCAqbmV0X2V4aXRfbGlzdClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMjM6MjU6MzMuOTcyMDcxNjAyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NTQ0NzU2Njg4MDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZfVEFCTEVTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmZfdGFibGVzX2NvbW1pdFwiLFxuICAgIFwibmZfdGFibGVzX2Fib3J0XCIsXG4gICAgXCJuZl90YWJsZXNfbmV3c2V0ZWxlbVwiLFxuICAgIFwibmZfdGFibGVzX2RlbHNldGVsZW1cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbmV0ZmlsdGVyIG5mX3RhYmxlcyBBUEkgdG8gaW50cm9kdWNlIGEgYHNldF91cGRhdGVfbGlzdGAgaW4gYHN0cnVjdCBuZnRhYmxlc19wZXJuZXRgLiBJdCBjaGFuZ2VzIGhvdyBzZXQgZWxlbWVudHMgYXJlIGFkZGVkLCByZW1vdmVkLCBhbmQgYWJvcnRlZCBkdXJpbmcgbmV0bGluayB0cmFuc2FjdGlvbnMuIFNwZWNpZmljYWxseSwgaXQgbW9kaWZpZXMgYG5mdF90cmFuc19jb21taXRfbGlzdF9hZGRfZWxlbWAsIGBuZnRfc2V0X2NvbW1pdF91cGRhdGVgLCBgbmZfdGFibGVzX2NvbW1pdGAsIGFuZCBgX19uZl90YWJsZXNfYWJvcnRgIHRvIGhhbmRsZSB0aGUgbmV3IGxpc3QgYW5kIGVuc3VyZSBwcm9wZXIgb3JkZXJpbmcgb2Ygc2V0IHVwZGF0ZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXRmaWx0ZXIgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgdmlhIG5ldGxpbmsgc29ja2V0cyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBwcmV2ZW50IHJlZ3Jlc3Npb25zIG9yIG1lbW9yeSBjb3JydXB0aW9uIGlzc3Vlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMGQ5MzEyYTBkOGRhNmNlODJlMDUzNjg0MzlhOTlmN2E2MGQyZjkxY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDEyIDIzOjI1OjMyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlcy5oIGIvaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlcy5oXG5pbmRleCAzYmU2MTIxNDVjMTMwLi4yMzhmNmVjYjkwZTk5IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlcy5oXG4rKysgYi9pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzLmhcbkBAIC0xOTQ5LDYgKzE5NDksNyBAQCBzdHJ1Y3QgbmZ0YWJsZXNfcGVybmV0IHtcbiBcdHN0cnVjdCBsaXN0X2hlYWRcdGJpbmRpbmdfbGlzdDtcbiBcdHN0cnVjdCBsaXN0X2hlYWRcdG1vZHVsZV9saXN0O1xuIFx0c3RydWN0IGxpc3RfaGVhZFx0bm90aWZ5X2xpc3Q7XG4rXHRzdHJ1Y3QgbGlzdF9oZWFkXHRzZXRfdXBkYXRlX2xpc3Q7XG4gXHRzdHJ1Y3QgbXV0ZXhcdFx0Y29tbWl0X211dGV4O1xuIFx0dTY0XHRcdFx0dGFibGVfaGFuZGxlO1xuIFx0dTY0XHRcdFx0dHN0YW1wO1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jIGIvbmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmNcbmluZGV4IGFmMzU3ZjZjNTA3MGIuLjVjNGY2YzM1NDU5NTAgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuY1xuKysrIGIvbmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmNcbkBAIC01OTUsMTAgKzU5NSwxNSBAQCBzdGF0aWMgdm9pZCBuZnRfdHJhbnNfY29tbWl0X2xpc3RfYWRkX3RhaWwoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmZ0X3RyYW5zICp0clxuIHN0YXRpYyB2b2lkIG5mdF90cmFuc19jb21taXRfbGlzdF9hZGRfZWxlbShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBuZnRfdHJhbnMgKnRyYW5zKVxuIHtcbiBcdHN0cnVjdCBuZnRhYmxlc19wZXJuZXQgKm5mdF9uZXQgPSBuZnRfcGVybmV0KG5ldCk7XG4rXHRzdHJ1Y3QgbmZ0X3RyYW5zX2VsZW0gKnRlO1xuIFxuIFx0V0FSTl9PTl9PTkNFKHRyYW5zLVx1MDAzZW1zZ190eXBlICE9IE5GVF9NU0dfTkVXU0VURUxFTSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgICB0cmFucy1cdTAwM2Vtc2dfdHlwZSAhPSBORlRfTVNHX0RFTFNFVEVMRU0pO1xuIFxuK1x0dGUgPSBuZnRfdHJhbnNfY29udGFpbmVyX2VsZW0odHJhbnMpO1xuK1x0aWYgKHRlLVx1MDAzZXNldC1cdTAwM2VvcHMtXHUwMDNlY29tbWl0IFx1MDAyNlx1MDAyNiBsaXN0X2VtcHR5KFx1MDAyNnRlLVx1MDAzZXNldC1cdTAwM2VwZW5kaW5nX3VwZGF0ZSkpXG4rXHRcdGxpc3RfYWRkX3RhaWwoXHUwMDI2dGUtXHUwMDNlc2V0LVx1MDAzZXBlbmRpbmdfdXBkYXRlLCBcdTAwMjZuZnRfbmV0LVx1MDAzZXNldF91cGRhdGVfbGlzdCk7XG4rXG4gXHRpZiAobmZ0X3RyYW5zX3RyeV9jb2xsYXBzZShuZnRfbmV0LCB0cmFucykpIHtcbiBcdFx0a2ZyZWUodHJhbnMpO1xuIFx0XHRyZXR1cm47XG5AQCAtNzIwNSw2ICs3MjEwLDIwIEBAIHN0YXRpYyB2b2lkIG5mdF90cmFuc19lbGVtc19yZW1vdmUoY29uc3Qgc3RydWN0IG5mdF9jdHggKmN0eCxcbiBcdH1cbiB9XG4gXG4rc3RhdGljIHZvaWQgbmZ0X3RyYW5zX2VsZW1zX3JlbW92ZV9ub3RpZnkoY29uc3Qgc3RydWN0IG5mdF9jdHggKmN0eCxcbitcdFx0XHRcdFx0ICBjb25zdCBzdHJ1Y3QgbmZ0X3RyYW5zX2VsZW0gKnRlKVxuK3tcbitcdGludCBpO1xuK1xuK1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgdGUtXHUwMDNlbmVsZW1zOyBpKyspIHtcbitcdFx0V0FSTl9PTl9PTkNFKHRlLVx1MDAzZWVsZW1zW2ldLnVwZGF0ZSk7XG4rXG4rXHRcdG5mX3RhYmxlc19zZXRlbGVtX25vdGlmeShjdHgsIHRlLVx1MDAzZXNldCxcbitcdFx0XHRcdFx0IHRlLVx1MDAzZWVsZW1zW2ldLnByaXYsXG4rXHRcdFx0XHRcdCB0ZS1cdTAwM2VuZnRfdHJhbnMubXNnX3R5cGUpO1xuK1x0fVxuK31cbitcbiBzdGF0aWMgYm9vbCBuZnRfc2V0ZWxlbV92YWxpZF9rZXlfZW5kKGNvbnN0IHN0cnVjdCBuZnRfc2V0ICpzZXQsXG4gXHRcdFx0XHQgICAgICBzdHJ1Y3QgbmxhdHRyICoqbmxhLCB1MzIgZmxhZ3MpXG4ge1xuQEAgLTEwODQ4LDExICsxMDg2NywzMSBAQCBzdGF0aWMgdm9pZCBuZl90YWJsZXNfY29tbWl0X2F1ZGl0X2xvZyhzdHJ1Y3QgbGlzdF9oZWFkICphZGwsIHUzMiBnZW5lcmF0aW9uKVxuIFx0fVxuIH1cbiBcbi1zdGF0aWMgdm9pZCBuZnRfc2V0X2NvbW1pdF91cGRhdGUoc3RydWN0IGxpc3RfaGVhZCAqc2V0X3VwZGF0ZV9saXN0KVxuK3N0YXRpYyB2b2lkIG5mdF9zZXRfY29tbWl0X3VwZGF0ZShzdHJ1Y3QgbmZ0X2N0eCAqY3R4LFxuK1x0XHRcdFx0ICBzdHJ1Y3QgbmZ0YWJsZXNfcGVybmV0ICpuZnRfbmV0KVxuIHtcbiBcdHN0cnVjdCBuZnRfc2V0ICpzZXQsICpuZXh0O1xuK1x0c3RydWN0IG5mdF90cmFuc19lbGVtICp0ZTtcbitcdHN0cnVjdCBuZnRfdHJhbnMgKnRyYW5zO1xuIFxuLVx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHNldCwgbmV4dCwgc2V0X3VwZGF0ZV9saXN0LCBwZW5kaW5nX3VwZGF0ZSkge1xuK1x0aWYgKGxpc3RfZW1wdHkoXHUwMDI2bmZ0X25ldC1cdTAwM2VzZXRfdXBkYXRlX2xpc3QpKVxuK1x0XHRyZXR1cm47XG4rXG4rXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHRyYW5zLCBcdTAwMjZuZnRfbmV0LVx1MDAzZWNvbW1pdF9saXN0LCBsaXN0KSB7XG4rXHRcdG5mdF9jdHhfdXBkYXRlKGN0eCwgdHJhbnMpO1xuK1xuK1x0XHRzd2l0Y2ggKHRyYW5zLVx1MDAzZW1zZ190eXBlKSB7XG4rXHRcdGNhc2UgTkZUX01TR19ERUxTRVRFTEVNOlxuK1x0XHRcdHRlID0gbmZ0X3RyYW5zX2NvbnRhaW5lcl9lbGVtKHRyYW5zKTtcbitcdFx0XHRpZiAoIXRlLVx1MDAzZXNldC1cdTAwM2VvcHMtXHUwMDNlY29tbWl0KVxuK1x0XHRcdFx0YnJlYWs7XG4rXG4rXHRcdFx0bmZ0X3RyYW5zX2VsZW1zX3JlbW92ZShjdHgsIHRlKTtcbitcdFx0XHRicmVhaztcbitcdFx0fVxuK1x0fVxuK1xuK1x0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHNldCwgbmV4dCwgXHUwMDI2bmZ0X25ldC1cdTAwM2VzZXRfdXBkYXRlX2xpc3QsIHBlbmRpbmdfdXBkYXRlKSB7XG4gXHRcdGxpc3RfZGVsX2luaXQoXHUwMDI2c2V0LVx1MDAzZXBlbmRpbmdfdXBkYXRlKTtcbiBcbiBcdFx0aWYgKCFzZXQtXHUwMDNlb3BzLVx1MDAzZWNvbW1pdCB8fCBzZXQtXHUwMDNlZGVhZClcbkBAIC0xMDg4NSw3ICsxMDkyNCw2IEBAIHN0YXRpYyBpbnQgbmZfdGFibGVzX2NvbW1pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRzdHJ1Y3QgbmZ0X3RyYW5zX2JpbmRpbmcgKnRyYW5zX2JpbmRpbmc7XG4gXHRzdHJ1Y3QgbmZ0X3RyYW5zICp0cmFucywgKm5leHQ7XG4gXHR1bnNpZ25lZCBpbnQgYmFzZV9zZXEsIGdjX3NlcTtcbi1cdExJU1RfSEVBRChzZXRfdXBkYXRlX2xpc3QpO1xuIFx0c3RydWN0IG5mdF90cmFuc19lbGVtICp0ZTtcbiBcdHN0cnVjdCBuZnRfY2hhaW4gKmNoYWluO1xuIFx0c3RydWN0IG5mdF90YWJsZSAqdGFibGU7XG5AQCAtMTA5NjAsNiArMTA5OTgsOCBAQCBzdGF0aWMgaW50IG5mX3RhYmxlc19jb21taXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0fVxuIFxuIFx0Lyogc3RlcCAyLiAgTWFrZSBydWxlc19nZW5fWCB2aXNpYmxlIHRvIHBhY2tldCBwYXRoICovXG4rXHRuZnRfc2V0X2NvbW1pdF91cGRhdGUoXHUwMDI2Y3R4LCBuZnRfbmV0KTtcbitcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnkodGFibGUsIFx1MDAyNm5mdF9uZXQtXHUwMDNldGFibGVzLCBsaXN0KSB7XG4gXHRcdGxpc3RfZm9yX2VhY2hfZW50cnkoY2hhaW4sIFx1MDAyNnRhYmxlLVx1MDAzZWNoYWlucywgbGlzdClcbiBcdFx0XHRuZl90YWJsZXNfY29tbWl0X2NoYWluKG5ldCwgY2hhaW4pO1xuQEAgLTExMDkxLDI3ICsxMTEzMSwxNiBAQCBzdGF0aWMgaW50IG5mX3RhYmxlc19jb21taXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0XHRcdGJyZWFrO1xuIFx0XHRjYXNlIE5GVF9NU0dfTkVXU0VURUxFTTpcbiBcdFx0XHR0ZSA9IG5mdF90cmFuc19jb250YWluZXJfZWxlbSh0cmFucyk7XG4tXG4gXHRcdFx0bmZ0X3RyYW5zX2VsZW1zX2FkZChcdTAwMjZjdHgsIHRlKTtcbi1cbi1cdFx0XHRpZiAodGUtXHUwMDNlc2V0LVx1MDAzZW9wcy1cdTAwM2Vjb21taXQgXHUwMDI2XHUwMDI2XG4tXHRcdFx0ICAgIGxpc3RfZW1wdHkoXHUwMDI2dGUtXHUwMDNlc2V0LVx1MDAzZXBlbmRpbmdfdXBkYXRlKSkge1xuLVx0XHRcdFx0bGlzdF9hZGRfdGFpbChcdTAwMjZ0ZS1cdTAwM2VzZXQtXHUwMDNlcGVuZGluZ191cGRhdGUsXG4tXHRcdFx0XHRcdCAgICAgIFx1MDAyNnNldF91cGRhdGVfbGlzdCk7XG4tXHRcdFx0fVxuIFx0XHRcdG5mdF90cmFuc19kZXN0cm95KHRyYW5zKTtcbiBcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSBORlRfTVNHX0RFTFNFVEVMRU06XG4gXHRcdGNhc2UgTkZUX01TR19ERVNUUk9ZU0VURUxFTTpcbiBcdFx0XHR0ZSA9IG5mdF90cmFuc19jb250YWluZXJfZWxlbSh0cmFucyk7XG4tXG4tXHRcdFx0bmZ0X3RyYW5zX2VsZW1zX3JlbW92ZShcdTAwMjZjdHgsIHRlKTtcbi1cbi1cdFx0XHRpZiAodGUtXHUwMDNlc2V0LVx1MDAzZW9wcy1cdTAwM2Vjb21taXQgXHUwMDI2XHUwMDI2XG4tXHRcdFx0ICAgIGxpc3RfZW1wdHkoXHUwMDI2dGUtXHUwMDNlc2V0LVx1MDAzZXBlbmRpbmdfdXBkYXRlKSkge1xuLVx0XHRcdFx0bGlzdF9hZGRfdGFpbChcdTAwMjZ0ZS1cdTAwM2VzZXQtXHUwMDNlcGVuZGluZ191cGRhdGUsXG4tXHRcdFx0XHRcdCAgICAgIFx1MDAyNnNldF91cGRhdGVfbGlzdCk7XG4tXHRcdFx0fVxuK1x0XHRcdGlmICh0ZS1cdTAwM2VzZXQtXHUwMDNlb3BzLVx1MDAzZWNvbW1pdClcbitcdFx0XHRcdG5mdF90cmFuc19lbGVtc19yZW1vdmVfbm90aWZ5KFx1MDAyNmN0eCwgdGUpO1xuK1x0XHRcdGVsc2VcbitcdFx0XHRcdG5mdF90cmFuc19lbGVtc19yZW1vdmUoXHUwMDI2Y3R4LCB0ZSk7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgTkZUX01TR19ORVdPQko6XG4gXHRcdFx0aWYgKG5mdF90cmFuc19vYmpfdXBkYXRlKHRyYW5zKSkge1xuQEAgLTExMTgwLDggKzExMjA5LDYgQEAgc3RhdGljIGludCBuZl90YWJsZXNfY29tbWl0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdFx0fVxuIFx0fVxuIFxuLVx0bmZ0X3NldF9jb21taXRfdXBkYXRlKFx1MDAyNnNldF91cGRhdGVfbGlzdCk7XG4tXG4gXHRuZnRfY29tbWl0X25vdGlmeShuZXQsIE5FVExJTktfQ0Ioc2tiKS5wb3J0aWQpO1xuIFx0bmZfdGFibGVzX2dlbl9ub3RpZnkobmV0LCBza2IsIE5GVF9NU0dfTkVXR0VOKTtcbiBcdG5mX3RhYmxlc19jb21taXRfYXVkaXRfbG9nKFx1MDAyNmFkbCwgbmZ0X2Jhc2Vfc2VxKG5ldCkpO1xuQEAgLTExMjQ3LDExICsxMTI3NCwxMSBAQCBzdGF0aWMgdm9pZCBuZl90YWJsZXNfYWJvcnRfcmVsZWFzZShzdHJ1Y3QgbmZ0X3RyYW5zICp0cmFucylcbiBcdGtmcmVlKHRyYW5zKTtcbiB9XG4gXG4tc3RhdGljIHZvaWQgbmZ0X3NldF9hYm9ydF91cGRhdGUoc3RydWN0IGxpc3RfaGVhZCAqc2V0X3VwZGF0ZV9saXN0KVxuK3N0YXRpYyB2b2lkIG5mdF9zZXRfYWJvcnRfdXBkYXRlKHN0cnVjdCBuZnRhYmxlc19wZXJuZXQgKm5mdF9uZXQpXG4ge1xuIFx0c3RydWN0IG5mdF9zZXQgKnNldCwgKm5leHQ7XG4gXG4tXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoc2V0LCBuZXh0LCBzZXRfdXBkYXRlX2xpc3QsIHBlbmRpbmdfdXBkYXRlKSB7XG4rXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoc2V0LCBuZXh0LCBcdTAwMjZuZnRfbmV0LVx1MDAzZXNldF91cGRhdGVfbGlzdCwgcGVuZGluZ191cGRhdGUpIHtcbiBcdFx0bGlzdF9kZWxfaW5pdChcdTAwMjZzZXQtXHUwMDNlcGVuZGluZ191cGRhdGUpO1xuIFxuIFx0XHRpZiAoIXNldC1cdTAwM2VvcHMtXHUwMDNlYWJvcnQpXG5AQCAtMTEzODYsMzMgKzExNDEzLDIyIEBAIHN0YXRpYyBpbnQgX19uZl90YWJsZXNfYWJvcnQoc3RydWN0IG5ldCAqbmV0LCBlbnVtIG5mbmxfYWJvcnRfYWN0aW9uIGFjdGlvbilcbiBcdFx0XHRuZnRfdHJhbnNfZGVzdHJveSh0cmFucyk7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgTkZUX01TR19ORVdTRVRFTEVNOlxuK1x0XHRcdHRlID0gbmZ0X3RyYW5zX2NvbnRhaW5lcl9lbGVtKHRyYW5zKTtcbiBcdFx0XHRpZiAobmZ0X3RyYW5zX2VsZW1fc2V0X2JvdW5kKHRyYW5zKSkge1xuK1x0XHRcdFx0bGlzdF9kZWxfaW5pdChcdTAwMjZ0ZS1cdTAwM2VzZXQtXHUwMDNlcGVuZGluZ191cGRhdGUpO1xuIFx0XHRcdFx0bmZ0X3RyYW5zX2Rlc3Ryb3kodHJhbnMpO1xuIFx0XHRcdFx0YnJlYWs7XG4gXHRcdFx0fVxuLVx0XHRcdHRlID0gbmZ0X3RyYW5zX2NvbnRhaW5lcl9lbGVtKHRyYW5zKTtcbiBcdFx0XHRpZiAoIW5mdF90cmFuc19lbGVtc19uZXdfYWJvcnQoXHUwMDI2Y3R4LCB0ZSkpIHtcbiBcdFx0XHRcdG5mdF90cmFuc19kZXN0cm95KHRyYW5zKTtcbiBcdFx0XHRcdGJyZWFrO1xuIFx0XHRcdH1cbi1cbi1cdFx0XHRpZiAodGUtXHUwMDNlc2V0LVx1MDAzZW9wcy1cdTAwM2VhYm9ydCBcdTAwMjZcdTAwMjZcbi1cdFx0XHQgICAgbGlzdF9lbXB0eShcdTAwMjZ0ZS1cdTAwM2VzZXQtXHUwMDNlcGVuZGluZ191cGRhdGUpKSB7XG4tXHRcdFx0XHRsaXN0X2FkZF90YWlsKFx1MDAyNnRlLVx1MDAzZXNldC1cdTAwM2VwZW5kaW5nX3VwZGF0ZSxcbi1cdFx0XHRcdFx0ICAgICAgXHUwMDI2c2V0X3VwZGF0ZV9saXN0KTtcbi1cdFx0XHR9XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgTkZUX01TR19ERUxTRVRFTEVNOlxuIFx0XHRjYXNlIE5GVF9NU0dfREVTVFJPWVNFVEVMRU06XG4gXHRcdFx0dGUgPSBuZnRfdHJhbnNfY29udGFpbmVyX2VsZW0odHJhbnMpO1xuIFxuIFx0XHRcdG5mdF90cmFuc19lbGVtc19kZXN0cm95X2Fib3J0KFx1MDAyNmN0eCwgdGUpO1xuLVxuLVx0XHRcdGlmICh0ZS1cdTAwM2VzZXQtXHUwMDNlb3BzLVx1MDAzZWFib3J0IFx1MDAyNlx1MDAyNlxuLVx0XHRcdCAgICBsaXN0X2VtcHR5KFx1MDAyNnRlLVx1MDAzZXNldC1cdTAwM2VwZW5kaW5nX3VwZGF0ZSkpIHtcbi1cdFx0XHRcdGxpc3RfYWRkX3RhaWwoXHUwMDI2dGUtXHUwMDNlc2V0LVx1MDAzZXBlbmRpbmdfdXBkYXRlLFxuLVx0XHRcdFx0XHQgICAgICBcdTAwMjZzZXRfdXBkYXRlX2xpc3QpO1xuLVx0XHRcdH1cbiBcdFx0XHRuZnRfdHJhbnNfZGVzdHJveSh0cmFucyk7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgTkZUX01TR19ORVdPQko6XG5AQCAtMTE0NTgsNyArMTE0NzQsNyBAQCBzdGF0aWMgaW50IF9fbmZfdGFibGVzX2Fib3J0KHN0cnVjdCBuZXQgKm5ldCwgZW51bSBuZm5sX2Fib3J0X2FjdGlvbiBhY3Rpb24pXG4gXG4gXHRXQVJOX09OX09OQ0UoIWxpc3RfZW1wdHkoXHUwMDI2bmZ0X25ldC1cdTAwM2Vjb21taXRfc2V0X2xpc3QpKTtcbiBcbi1cdG5mdF9zZXRfYWJvcnRfdXBkYXRlKFx1MDAyNnNldF91cGRhdGVfbGlzdCk7XG4rXHRuZnRfc2V0X2Fib3J0X3VwZGF0ZShuZnRfbmV0KTtcbiBcbiBcdHN5bmNocm9uaXplX3JjdSgpO1xuIFxuQEAgLTEyMTQyLDYgKzEyMTU4LDcgQEAgc3RhdGljIGludCBfX25ldF9pbml0IG5mX3RhYmxlc19pbml0X25ldChzdHJ1Y3QgbmV0ICpuZXQpXG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZuZnRfbmV0LVx1MDAzZWJpbmRpbmdfbGlzdCk7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZuZnRfbmV0LVx1MDAzZW1vZHVsZV9saXN0KTtcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNm5mdF9uZXQtXHUwMDNlbm90aWZ5X2xpc3QpO1xuK1x0SU5JVF9MSVNUX0hFQUQoXHUwMDI2bmZ0X25ldC1cdTAwM2VzZXRfdXBkYXRlX2xpc3QpO1xuIFx0bXV0ZXhfaW5pdChcdTAwMjZuZnRfbmV0LVx1MDAzZWNvbW1pdF9tdXRleCk7XG4gXHRuZXQtXHUwMDNlbmZ0LmJhc2Vfc2VxID0gMTtcbiBcdG5mdF9uZXQtXHUwMDNlZ2Nfc2VxID0gMDtcbkBAIC0xMjE4Niw2ICsxMjIwMyw3IEBAIHN0YXRpYyB2b2lkIF9fbmV0X2V4aXQgbmZfdGFibGVzX2V4aXRfbmV0KHN0cnVjdCBuZXQgKm5ldClcbiBcdFdBUk5fT05fT05DRSghbGlzdF9lbXB0eShcdTAwMjZuZnRfbmV0LVx1MDAzZW1vZHVsZV9saXN0KSk7XG4gXHRXQVJOX09OX09OQ0UoIWxpc3RfZW1wdHkoXHUwMDI2bmZ0X25ldC1cdTAwM2Vub3RpZnlfbGlzdCkpO1xuIFx0V0FSTl9PTl9PTkNFKCFsaXN0X2VtcHR5KFx1MDAyNm5mdF9uZXQtXHUwMDNlZGVzdHJveV9saXN0KSk7XG4rXHRXQVJOX09OX09OQ0UoIWxpc3RfZW1wdHkoXHUwMDI2bmZ0X25ldC1cdTAwM2VzZXRfdXBkYXRlX2xpc3QpKTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgbmZfdGFibGVzX2V4aXRfYmF0Y2goc3RydWN0IGxpc3RfaGVhZCAqbmV0X2V4aXRfbGlzdClcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDIzOjI1OjMzLjk3MjA3MzM1MloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjczOTI4NTA2MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgbmZfdGFibGVzIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IGRpdmVzIHByZXR0eSBkZWVwIGludG8gdGhlIG5mX3RhYmxlcyBjb3JlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGhvdyBzZXQgZWxlbWVudHMgYXJlIGhhbmRsZWQgaW4gbmV0ZmlsdGVyLiBUaGUgY2hhbmdlcyBmb2N1cyBvbiBgbmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmNgIGFuZCBgaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlcy5oYC4gSXQgc2VlbXMgd2UncmUgaW50cm9kdWNpbmcgYSBgc2V0X3VwZGF0ZV9saXN0YCB3aXRoaW4gdGhlIGBuZnRhYmxlc19wZXJuZXRgIHN0cnVjdHVyZS4gVGhpcyBpcyBzaWduaWZpY2FudCwgYXMgaXQgaW5kaWNhdGVzIGEgc2hpZnQgaW4gaG93IHNldCB1cGRhdGVzIGFyZSBtYW5hZ2VkIGR1cmluZyB0cmFuc2FjdGlvbnMuXG5cblRoZSBwYXRjaCBtb2RpZmllcyBzZXZlcmFsIGNydWNpYWwgZnVuY3Rpb25zOiBgbmZ0X3RyYW5zX2NvbW1pdF9saXN0X2FkZF9lbGVtYCB0byBwb3B1bGF0ZSB0aGlzIG5ldyBgc2V0X3VwZGF0ZV9saXN0YC4gQWxzbywgd2Ugc2VlIGNoYW5nZXMgaW4gYG5mdF9zZXRfY29tbWl0X3VwZGF0ZWAsIHdoaWNoIG5vdyBpdGVyYXRlcyBvdmVyICpib3RoKiB0aGUgYGNvbW1pdF9saXN0YCAqYW5kKiB0aGUgbmV3IGBzZXRfdXBkYXRlX2xpc3RgLiAgQ3J1Y2lhbGx5LCBgbmZfdGFibGVzX2NvbW1pdGAgaXMgYmVpbmcgYWx0ZXJlZCB0byBjYWxsIGBuZnRfc2V0X2NvbW1pdF91cGRhdGVgICpiZWZvcmUqIHRoZSBydWxlcyBiZWNvbWUgdmlzaWJsZS4gVGhpcyBpcyBhIGZ1bmRhbWVudGFsIGNoYW5nZSBpbiBjb21taXQgb3JkZXIuICBGaW5hbGx5LCBgX19uZl90YWJsZXNfYWJvcnRgIG5vdyB1c2VzIGBuZnRfc2V0X2Fib3J0X3VwZGF0ZWAsIHdoaWNoIHByb2JhYmx5IHVuZG9lcyB0aGVzZSBjaGFuZ2VzLlxuXG5GdW5jdGlvbmFsbHksIHRoaXMgaW1wYWN0cyB0aGUgd2F5IHNldCBlbGVtZW50cyBhcmUgY29tbWl0dGVkIGFuZCBhYm9ydGVkIHdpdGhpbiBuZl90YWJsZXMuIFRoZSBjaGFuZ2UgaXMgZGVmaW5pdGVseSByZWFjaGFibGUsIGFuZCBnaXZlbiBpdHMgY29yZSBuYXR1cmUsIHRoaXMgaXMgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGNvbmZpZ3VyYXRpb25zIGFyZSByZWxldmFudCDigJMgYENPTkZJR19ORl9UQUJMRVNgIHNlZW1zIGxpa2UgdGhlIG9idmlvdXMgc3RhcnRpbmcgcG9pbnQuXG5cbk5vdywgbGV0J3MgaWRlbnRpZnkgdGhlIGtleSBzeW1ib2xzIG1vZGlmaWVkIGJ5IHRoZSBwYXRjaDogYG5mdF90cmFuc19jb21taXRfbGlzdF9hZGRfZWxlbWAsIGBuZnRfdHJhbnNfZWxlbXNfcmVtb3ZlYCwgYG5mdF90cmFuc19lbGVtc19yZW1vdmVfbm90aWZ5YCwgYG5mdF9zZXRfY29tbWl0X3VwZGF0ZWAsIGBuZl90YWJsZXNfY29tbWl0YCwgYG5mdF9zZXRfYWJvcnRfdXBkYXRlYCwgYF9fbmZfdGFibGVzX2Fib3J0YCwgYG5mX3RhYmxlc19pbml0X25ldGAsIGFuZCBgbmZfdGFibGVzX2V4aXRfbmV0YC4gSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciBgbmZfdGFibGVzX2NvbW1pdGAgaXMgZXhwb3J0ZWQgb3Igbm90LCBiZWNhdXNlIGl0IHNlZW1zIG9kZCB0aGF0IGl0IHdvdWxkIGJlIHN0YXRpYy4gSSBuZWVkIHRvIG1ha2Ugc3VyZS4gSSdsbCBjaGVjay5cblxuXG4iLCJJbnB1dFRva2VucyI6NDc4MCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxNywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDIzOjI1OjQxLjM2NDkyNjcxM1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODYyMjQxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZl90YWJsZXNfY29tbWl0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTEwMzA1PUVYUE9SVF9TWU1CT0xfR1BMKG5mX3RhYmxlc190cmFuc19kZXN0cm95X2ZsdXNoX3dvcmspO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwMzA2LVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwMzA3OnN0YXRpYyBpbnQgbmZfdGFibGVzX2NvbW1pdF9jaGFpbl9wcmVwYXJlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5mdF9jaGFpbiAqY2hhaW4pXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTAzMDgte1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTAzODEtXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTAzODI6c3RhdGljIHZvaWQgbmZfdGFibGVzX2NvbW1pdF9jaGFpbl9wcmVwYXJlX2NhbmNlbChzdHJ1Y3QgbmV0ICpuZXQpXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTAzODMte1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTAzOTctXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTAzOTg6c3RhdGljIHZvaWQgX19uZl90YWJsZXNfY29tbWl0X2NoYWluX2ZyZWVfcnVsZXMoc3RydWN0IHJjdV9oZWFkICpoKVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwMzk5LXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwNDA0LVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwNDA1OnN0YXRpYyB2b2lkIG5mX3RhYmxlc19jb21taXRfY2hhaW5fZnJlZV9ydWxlc19vbGQoc3RydWN0IG5mdF9ydWxlX2Jsb2IgKmJsb2IpXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA0MDYte1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA0MTItXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTA0MTM6XFx0Y2FsbF9yY3UoXFx1MDAyNmxhc3QtXFx1MDAzZWgsIF9fbmZfdGFibGVzX2NvbW1pdF9jaGFpbl9mcmVlX3J1bGVzKTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDQxNC19XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA0MTUtXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTA0MTY6c3RhdGljIHZvaWQgbmZfdGFibGVzX2NvbW1pdF9jaGFpbihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBuZnRfY2hhaW4gKmNoYWluKVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwNDE3LXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwNDM4LVxcdFxcdFxcdHJjdV9hc3NpZ25fcG9pbnRlcihjaGFpbi1cXHUwMDNlYmxvYl9nZW5fMSwgZzApO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwNDM5OlxcdFxcdFxcdG5mX3RhYmxlc19jb21taXRfY2hhaW5fZnJlZV9ydWxlc19vbGQoZzEpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwNDQwLVxcdFxcdH0gZWxzZSB7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA0NDEtXFx0XFx0XFx0cmN1X2Fzc2lnbl9wb2ludGVyKGNoYWluLVxcdTAwM2VibG9iX2dlbl8wLCBnMSk7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTA0NDI6XFx0XFx0XFx0bmZfdGFibGVzX2NvbW1pdF9jaGFpbl9mcmVlX3J1bGVzX29sZChnMCk7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA0NDMtXFx0XFx0fVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA0NTgtXFx0aWYgKG5leHRfZ2VuYml0KVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwNDU5OlxcdFxcdG5mX3RhYmxlc19jb21taXRfY2hhaW5fZnJlZV9ydWxlc19vbGQoZzEpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwNDYwLVxcdGVsc2VcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDQ2MTpcXHRcXHRuZl90YWJsZXNfY29tbWl0X2NoYWluX2ZyZWVfcnVsZXNfb2xkKGcwKTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDQ2Mi19XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz0xMDcxMT1zdGF0aWMgdm9pZCBuZl90YWJsZXNfbW9kdWxlX2F1dG9sb2FkX2NsZWFudXAoc3RydWN0IG5ldCAqbmV0KVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA3MjMtXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTA3MjQ6c3RhdGljIHZvaWQgbmZfdGFibGVzX2NvbW1pdF9yZWxlYXNlKHN0cnVjdCBuZXQgKm5ldClcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDcyNS17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz0xMDc1OD1zdGF0aWMgdm9pZCBuZnRfY29tbWl0X25vdGlmeShzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBwb3J0aWQpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDc5My1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDc5NDpzdGF0aWMgaW50IG5mX3RhYmxlc19jb21taXRfYXVkaXRfYWxsb2Moc3RydWN0IGxpc3RfaGVhZCAqYWRsLFxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwNzk1LVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBuZnRfdGFibGUgKnRhYmxlKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA4MTAtXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTA4MTE6c3RhdGljIHZvaWQgbmZfdGFibGVzX2NvbW1pdF9hdWRpdF9mcmVlKHN0cnVjdCBsaXN0X2hlYWQgKmFkbClcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDgxMi17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDgyMy0gKi9cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDgyNDpzdGF0aWMgdW5zaWduZWQgaW50IG5mX3RhYmxlc19jb21taXRfYXVkaXRfZW50cnljb3VudChjb25zdCBzdHJ1Y3QgbmZ0X3RyYW5zICp0cmFucylcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDgyNS17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDgzNC1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDgzNTpzdGF0aWMgdm9pZCBuZl90YWJsZXNfY29tbWl0X2F1ZGl0X2NvbGxlY3Qoc3RydWN0IGxpc3RfaGVhZCAqYWRsLFxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwODM2LVxcdFxcdFxcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCBuZnRfdHJhbnMgKnRyYW5zLCB1MzIgb3ApXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDg0Ny1mb3VuZDpcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDg0ODpcXHRhZHAtXFx1MDAzZWVudHJpZXMgKz0gbmZfdGFibGVzX2NvbW1pdF9hdWRpdF9lbnRyeWNvdW50KHRyYW5zKTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDg0OS1cXHRpZiAoIWFkcC1cXHUwMDNlb3AgfHwgYWRwLVxcdTAwM2VvcCBcXHUwMDNlIG9wKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA4NTQtXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTA4NTU6c3RhdGljIHZvaWQgbmZfdGFibGVzX2NvbW1pdF9hdWRpdF9sb2coc3RydWN0IGxpc3RfaGVhZCAqYWRsLCB1MzIgZ2VuZXJhdGlvbilcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDg1Ni17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz0xMDkxNT1zdGF0aWMgdm9pZCBuZnRfZ2Nfc2VxX2VuZChzdHJ1Y3QgbmZ0YWJsZXNfcGVybmV0ICpuZnRfbmV0LCB1bnNpZ25lZCBpbnQgZ2Nfc2VxKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA5MTktXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTA5MjA6c3RhdGljIGludCBuZl90YWJsZXNfY29tbWl0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDkyMS17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDk4MC1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDk4MTpcXHRcXHRyZXQgPSBuZl90YWJsZXNfY29tbWl0X2F1ZGl0X2FsbG9jKFxcdTAwMjZhZGwsIHRhYmxlKTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDk4Mi1cXHRcXHRpZiAocmV0KSB7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTA5ODM6XFx0XFx0XFx0bmZfdGFibGVzX2NvbW1pdF9jaGFpbl9wcmVwYXJlX2NhbmNlbChuZXQpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwOTg0OlxcdFxcdFxcdG5mX3RhYmxlc19jb21taXRfYXVkaXRfZnJlZShcXHUwMDI2YWRsKTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDk4NS1cXHRcXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA5OTAtXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTA5OTE6XFx0XFx0XFx0cmV0ID0gbmZfdGFibGVzX2NvbW1pdF9jaGFpbl9wcmVwYXJlKG5ldCwgY2hhaW4pO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwOTkyLVxcdFxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTA5OTM6XFx0XFx0XFx0XFx0bmZfdGFibGVzX2NvbW1pdF9jaGFpbl9wcmVwYXJlX2NhbmNlbChuZXQpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwOTk0OlxcdFxcdFxcdFxcdG5mX3RhYmxlc19jb21taXRfYXVkaXRfZnJlZShcXHUwMDI2YWRsKTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDk5NS1cXHRcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTEwMDQtXFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeShjaGFpbiwgXFx1MDAyNnRhYmxlLVxcdTAwM2VjaGFpbnMsIGxpc3QpXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTEwMDU6XFx0XFx0XFx0bmZfdGFibGVzX2NvbW1pdF9jaGFpbihuZXQsIGNoYWluKTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTAwNi1cXHR9XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTAyOC1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTAyOTpcXHRcXHRuZl90YWJsZXNfY29tbWl0X2F1ZGl0X2NvbGxlY3QoXFx1MDAyNmFkbCwgdHJhbnMsIHRyYW5zLVxcdTAwM2Vtc2dfdHlwZSk7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTEwMzAtXFx0XFx0c3dpdGNoICh0cmFucy1cXHUwMDNlbXNnX3R5cGUpIHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExMjEzLVxcdG5mX3RhYmxlc19nZW5fbm90aWZ5KG5ldCwgc2tiLCBORlRfTVNHX05FV0dFTik7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTEyMTQ6XFx0bmZfdGFibGVzX2NvbW1pdF9hdWRpdF9sb2coXFx1MDAyNmFkbCwgbmZ0X2Jhc2Vfc2VxKG5ldCkpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExMjE1LVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTEyMTctXFx0bmZ0X25ldC1cXHUwMDNldmFsaWRhdGVfc3RhdGUgPSBORlRfVkFMSURBVEVfU0tJUDtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTIxODpcXHRuZl90YWJsZXNfY29tbWl0X3JlbGVhc2UobmV0KTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTIxOS1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTExNTM5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZuZXRsaW5rX3N1YnN5c3RlbSBuZl90YWJsZXNfc3Vic3lzID0ge1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE1NDMtXFx0LmNiXFx0XFx0PSBuZl90YWJsZXNfY2IsXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTE1NDQ6XFx0LmNvbW1pdFxcdFxcdD0gbmZfdGFibGVzX2NvbW1pdCxcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTU0NS1cXHQuYWJvcnRcXHRcXHQ9IG5mX3RhYmxlc19hYm9ydCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMjM6MjU6NDEuNDIzNTUzNTcyWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc4Mzk0NjQ5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gTmV0ZmlsdGVyIFRhYmxlIE9wZXJhdGlvbnMqKlxuXG5SaWdodCwgc28gSSBzZWUgYG5mX3RhYmxlc19jb21taXRgIGlzIGNydWNpYWwgd2l0aGluIGBuZl90YWJsZXNfc3Vic3lzYC4gTXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBob3cgdGhpcyB0aWVzIGludG8gZXJyb3IgaGFuZGxpbmcgYW5kIHJvbGxiYWNrIG1lY2hhbmlzbXMuIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byB1bmRlcnN0YW5kIHRoZSBhYm9ydCBwcm9jZXNzLiBJIG5lZWQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyBhIGZhaWxlZCBjb21taXQgaXMgaGFuZGxlZCwgYW5kIHdoYXQgc3RhdGUgdGhlIHRhYmxlcyBhcmUgbGVmdCBpbi4gVGltZSB0byBkZWx2ZSBpbnRvIGBfX25mX3RhYmxlc19hYm9ydGAuIEknbSBjdXJpb3VzIGFib3V0IHRoZSBzcGVjaWZpYyBtZWNoYW5pc21zIGludm9sdmVkIGluIHJvbGxpbmcgYmFjayB0aGUgY2hhbmdlcyBhbmQgZW5zdXJpbmcgYSBjb25zaXN0ZW50IHN0YXRlIHdpdGhpbiB0aGUgbmV0ZmlsdGVyIGZyYW1ld29yay4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCByZXNvdXJjZXMgYXJlIHJlbGVhc2VkIGFuZCB3aGF0IHNhZmVndWFyZHMgYXJlIGluIHBsYWNlLiBUaGUgZGV2aWwncyBpbiB0aGUgZGV0YWlscyB3aXRoIHRoZXNlIGNvbXBsZXggc3lzdGVtcywgc28gSSdsbCBwcm9iYWJseSBiZSB0cmFjaW5nIGV4ZWN1dGlvbiBmbG93IGFuZCBjaGVja2luZyBpbnZhcmlhbnRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MzAxLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMjM6MjU6NDUuMjA3NTAzMTI5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1Nzg1MTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9fbmZfdGFibGVzX2Fib3J0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTExMjc3PXN0YXRpYyB2b2lkIG5mdF9zZXRfYWJvcnRfdXBkYXRlKHN0cnVjdCBuZnRhYmxlc19wZXJuZXQgKm5mdF9uZXQpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTI5MC1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTI5MTpzdGF0aWMgaW50IF9fbmZfdGFibGVzX2Fib3J0KHN0cnVjdCBuZXQgKm5ldCwgZW51bSBuZm5sX2Fib3J0X2FjdGlvbiBhY3Rpb24pXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTEyOTIte1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9MTE0OTA9c3RhdGljIGludCBuZl90YWJsZXNfYWJvcnQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE0OTctXFx0Z2Nfc2VxID0gbmZ0X2djX3NlcV9iZWdpbihuZnRfbmV0KTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTQ5ODpcXHRyZXQgPSBfX25mX3RhYmxlc19hYm9ydChuZXQsIGFjdGlvbik7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE0OTktXFx0bmZ0X2djX3NlcV9lbmQobmZ0X25ldCwgZ2Nfc2VxKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMjM6MjU6NDUuMjUzMjk0OTU4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Nzc2ODE5ODE0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgTmV0ZmlsdGVyIFRhYmxlcyBmb3IgRm9jdXMgU3ltYm9scyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIHRyeWluZyB0byBmaWd1cmUgb3V0IHRoZSByaWdodCBmb2N1cyBzeW1ib2xzLiBUaGUgaW5zdHJ1Y3Rpb25zIGFyZSBwcmV0dHkgY2xlYXI6IHByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMuIFRoYXQgc2VlbXMgdG8gYmUgdGhlIGtleS4gTGV0J3Mgc2VlLi4uIEkndmUgZ290IGBuZl90YWJsZXNfY29tbWl0YCBhbmQgYG5mX3RhYmxlc19hYm9ydGAgYXMgdGhlIGluaXRpYWwgZW50cnkgcG9pbnRzLCBhbmQgeWVzLCBgbmZfdGFibGVzX2NvbW1pdGAgKmlzKiBzdGF0aWMsIGJ1dCBpdCdzIGFzc2lnbmVkIHRvIGEgZnVuY3Rpb24gcG9pbnRlciwgYC5jb21taXRgLCBpbiBgbmZuZXRsaW5rX3N1YnN5c3RlbWAuIFRoYXQgaW1tZWRpYXRlbHkgbWFrZXMgaXQgaW50ZXJlc3RpbmcsIHJpZ2h0PyBTdGF0aWMgZnVuY3Rpb25zIGFyZSB1c3VhbGx5IGlubGluZWQsIGxvc2luZyBkaXN0aW5jdCBzeW1ib2xzLCBidXQgYSAqbGFyZ2UqIHN0YXRpYyBmdW5jdGlvbiBhc3NpZ25lZCB0byBhIGZ1bmN0aW9uIHBvaW50ZXIsIGxpa2UgYG5mX3RhYmxlc19jb21taXRgLCBpdCAqZGVmaW5pdGVseSogaXNuJ3QgaW5saW5lZCwgc28gaXQgc2hvdWxkIGJlIGZpbmUgdG8gdGFyZ2V0LiBJIHNlZSB0aGF0IGBuZl90YWJsZXNfdHJhbnNfZGVzdHJveV9mbHVzaF93b3JrYCBpcyBleHBvcnRlZCBidXQgbm90IG1vZGlmaWVkLCBhbmQgdGhlIHBhdGNoIHRvdWNoZXMgc2V2ZXJhbCBmdW5jdGlvbnM6IGBuZnRfdHJhbnNfY29tbWl0X2xpc3RfYWRkX2VsZW1gLCBgbmZ0X3RyYW5zX2VsZW1zX3JlbW92ZWAsIGBuZnRfdHJhbnNfZWxlbXNfcmVtb3ZlX25vdGlmeWAsIGBuZnRfc2V0X2NvbW1pdF91cGRhdGVgLCBgbmZ0X3NldF9hYm9ydF91cGRhdGVgLCBgX19uZl90YWJsZXNfYWJvcnRgLCBgbmZfdGFibGVzX2luaXRfbmV0YCwgYW5kIGBuZl90YWJsZXNfZXhpdF9uZXRgLlxuXG5TbyB0aGUgcGF0Y2ggbW9kaWZpZXMgYSBoYW5kZnVsIG9mIGZ1bmN0aW9ucywgc29tZSBvZiB3aGljaCBtYXkgYmUgaW5saW5lZCBvciBzdGF0aWMsIGJ1dCB0aGUgbWFpbiBwb2ludCBpcyB0byBpZGVudGlmeSB0aGUgYmVzdCwgbm9uLWlubGluZWQgZW50cnkgcG9pbnRzLlxuXG5JIHJlbWVtYmVyIHRoZSBpbnN0cnVjdGlvbnMuIFdlIHdhbnQgdGhvc2Ugbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzLiBTbywgYG5mX3RhYmxlc19jb21taXRgIGFuZCBgbmZfdGFibGVzX2Fib3J0YCwgYmVjYXVzZSB0aGV5IGFyZSBhc3NpZ25lZCB0byBmdW5jdGlvbiBwb2ludGVycywgdGhleSBoYXZlIGRpc3RpbmN0IHN5bWJvbHMsIGFuZCBhcmUgbm90IGlubGluZWQsIHdoaWNoIG1ha2VzIHRoZW0gaWRlYWwuXG5cbkkgcGF1c2VkIHRvIGNoZWNrIGlmIEkgYW0gZGVhbGluZyB3aXRoIGEgaG90LXBhdGggZnVuY3Rpb24sIGJ1dCBpdCdzIG5vdCBhIHBhY2tldCBwcm9jZXNzaW5nIGhvdC1wYXRoLiBJdCdzIGEgbmV0bGluayBjb21taXQgZnVuY3Rpb24gdXNlZCBmb3IgbmV0ZmlsdGVyIHJ1bGUgY29uZmlndXJhdGlvbiwgd2hpY2ggbWFrZXMgc2Vuc2UuIEkgc3VzcGVjdCB0aGF0IGBuZnRfc2V0X2NvbW1pdF91cGRhdGVgICptaWdodCogYmUgaW5saW5lZCwgc28gSSdsbCBwcm9iYWJseSBsaXN0IGBuZl90YWJsZXNfY29tbWl0YCBhbmQgYG5mX3RhYmxlc19hYm9ydGAgdG8gYmUgc2FmZS4gVGhhdCdzIGdvb2QgZW5vdWdoIGZvciBub3cuIFRpbWUgdG8gY2hlY2sgdGhlIEtjb25maWcgZm9yIGBORl9UQUJMRVNgIHRvIG1ha2Ugc3VyZSB0aGUgbW9kdWxlIGlzIGVuYWJsZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg4NDIsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMjM6MjU6NTMuMDIxNDk1MjQ3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0ODQ0MTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORl9UQUJMRVNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz00NTM9ZW5kaWYgIyBORl9DT05OVFJBQ0tcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDU0LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0NTU6Y29uZmlnIE5GX1RBQkxFU1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NTYtXFx0c2VsZWN0IE5FVEZJTFRFUl9ORVRMSU5LXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc9NDcxPWlmIE5GX1RBQkxFU1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0NzI6Y29uZmlnIE5GX1RBQkxFU19JTkVUXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ3My1cXHRkZXBlbmRzIG9uIElQVjZcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NzktXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjQ4MDpjb25maWcgTkZfVEFCTEVTX05FVERFVlxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00ODEtXFx0Ym9vbCBcXFwiTmV0ZmlsdGVyIG5mX3RhYmxlcyBuZXRkZXYgdGFibGVzIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDIzOjI1OjUzLjA2NjM0NjAyNloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyMjgyNDM3NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOlxuXG4qKkFuYWx5emluZyB0aGUgTkZfVEFCTEVTIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBzbyBgTkZfVEFCTEVTYCBpcyB0aGUga2V5IGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgaGVyZS4gU2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCDigJMgdGhhdCdzIG91ciBzdGFydGluZyBwb2ludC4gTm93LCBsZXQncyBzZWUgaWYgdGhlcmUgYXJlIGFueSByZWxhdGVkIGNvbmZpZ3Mgd2UgbmVlZCB0byBjb25zaWRlci4gSSBhbHdheXMgbGlrZSB0byBnZXQgYSBjb21wbGV0ZSBwaWN0dXJlLlxuXG5UaGUgcGF0Y2ggaXMgdG91Y2hpbmcgYG5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jYC4gUmlnaHQsIHNvIHRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgQVBJIGxvZ2ljIGZvciBgbmZfdGFibGVzYCByZXNpZGVzLCBtYWtpbmcgdGhlIGZpbGUgYSBwcmltZSB0YXJnZXQuIEFuZCwgb2YgY291cnNlLCB0aGF0IGZpbGUgaXMgKm9ubHkqIGNvbXBpbGVkIGludG8gdGhlIGtlcm5lbCB3aGVuIGBDT05GSUdfTkZfVEFCTEVTYCBpcyB0dXJuZWQgb24uIE9idmlvdXMsIGJ1dCBpbXBvcnRhbnQgdG8gY2VtZW50IHRoZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBmbG93LiBHb3QgaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMDQ3LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMjM6MjU6NTguMjk0NTkyMTZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNzY0NDYwMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZl90YWJsZXNfYXBpXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9NYWtlZmlsZT04ND1vYmotJChDT05GSUdfTkZfRFVQX05FVERFVilcXHQrPSBuZl9kdXBfbmV0ZGV2Lm9cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtODYtIyBuZl90YWJsZXNcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjg3Om5mX3RhYmxlcy1vYmpzIDo9IG5mX3RhYmxlc19jb3JlLm8gbmZfdGFibGVzX2FwaS5vIG5mdF9jaGFpbl9maWx0ZXIubyBcXFxcXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS04OC1cXHRcXHQgIG5mX3RhYmxlc190cmFjZS5vIG5mdF9pbW1lZGlhdGUubyBuZnRfY21wLm8gbmZ0X3JhbmdlLm8gXFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQyMzoyNTo1OC41MzIyNDM0ODNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDczODQzNjkzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGJyZWFrZG93biBvZiB3aGF0IEknbSBsb29raW5nIGF0LCBmcm9tIG15IHBlcnNwZWN0aXZlLiBMZXQncyBzZWUgaWYgdGhpcyBhbGlnbnMgd2l0aCBteSBjdXJyZW50IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHN1YmplY3QgbWF0dGVyOlxuXG4qKk5hdmlnYXRpbmcgdGhlIGBuZl90YWJsZXNgIENvZGViYXNlKipcblxuQWxyaWdodCwgc28gdGhlIGNvcmUgcXVlc3Rpb24gaXMgYWJvdXQgYG5mX3RhYmxlcy1vYmpzYCwgYW5kIEknbSBwcmV0dHkgY2VydGFpbiB0aGF0IHRoZSBidWlsZCBwcm9jZXNzIGluY2x1ZGVzIGl0IGlmIGBDT05GSUdfTkZfVEFCTEVTYCBpcyB0dXJuZWQgb24uIENvbmZpcm1hdGlvbiBvZiB0aGUgb2J2aW91cyBpcyBhbHdheXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LlxuXG5Ob3csIEkgbmVlZCB0byBnZXQgbXkgaGVhZCBhcm91bmQgdGhlIGNydWNpYWwgY29tbWl0IGFuZCBhYm9ydCBmdW5jdGlvbnMuIExldCdzIG1ha2Ugc3VyZSBJJ3ZlIGdvdCB0aGUgYmFzaWNzIGNvdmVyZWQgdGhlcmUsIGBuZl90YWJsZXNfY29tbWl0YCBhbmQgYG5mX3RhYmxlc19hYm9ydGAuIFRoZXNlIGFyZSB0aGUgc3BpbmUgb2YgYW55IHRyYW5zYWN0aW9uIHN5c3RlbS4gQXJlIHRoZXJlIGFueSBvdGhlciBoaWdoLWxldmVsIHN5bWJvbHMgd2hpY2ggbmVlZCB0byBiZSBhY2NvdW50ZWQgZm9yP1xuXG5JIHNlZSBgbmZ0X3RyYW5zX2NvbW1pdF9saXN0X2FkZF9lbGVtYCBnZXR0aW5nIGNhbGxlZCBmcm9tIGBuZnRfYWRkX3NldF9lbGVtYCBhbmQgYG5mdF9kZWxfc2V0ZWxlbWAuIFRoYXQgbWFrZXMgc2Vuc2U7IHRoZXNlIGZ1bmN0aW9ucyBhcmUgbGlrZWx5IGludm9sdmVkIGluIGhhbmRsaW5nIHRyYW5zYWN0aW9uIGxpc3RzLiBGb2xsb3dpbmcgdGhhdCBsb2dpYywgSSByZWNhbGwgdGhhdCBgbmZ0X2FkZF9zZXRfZWxlbWAgaXMsIGluIHR1cm4sIGNhbGxlZCBieSBgbmZfdGFibGVzX25ld3NldGVsZW1gLCBhbmQgc2ltaWxhcmx5LCBgbmZ0X2RlbF9zZXRlbGVtYCBpcyBjYWxsZWQgZnJvbSBgbmZfdGFibGVzX2RlbHNldGVsZW1gLiBUaGVzZSBzaG91bGQgYWxzbyBiZSBrZXkgZnVuY3Rpb25zIEkgc2hvdWxkIGtlZXAgaW4gbWluZC4gSSBrbm93IHdoYXQgdGhlc2UgZnVuY3Rpb25zIGRvLCBidXQgaXQncyBpbXBvcnRhbnQgdG8gbWFrZSBzdXJlIHRoZXkncmUgaW5jbHVkZWQgaW4gbXkgbWVudGFsIG1vZGVsIG9mIHRoaXMgYXJjaGl0ZWN0dXJlLiBUaGV5IGFyZSBnb29kIGZvY3VzIHBvaW50cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA0NDEsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMjM6MjY6MDMuMjcwNjg0MDAyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTkzMTAzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZl90YWJsZXNfbmV3c2V0ZWxlbVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz03MjY3PXN0YXRpYyBpbnQgbmZ0X2FkZF9zZXRfZWxlbShzdHJ1Y3QgbmZ0X2N0eCAqY3R4LCBzdHJ1Y3QgbmZ0X3NldCAqc2V0LFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtNzY4MC1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzo3NjgxOnN0YXRpYyBpbnQgbmZfdGFibGVzX25ld3NldGVsZW0oc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy03NjgyLVxcdFxcdFxcdFxcdGNvbnN0IHN0cnVjdCBuZm5sX2luZm8gKmluZm8sXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz05OTQyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZubF9jYWxsYmFjayBuZl90YWJsZXNfY2JbTkZUX01TR19NQVhdID0ge1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTAwNDUtXFx0W05GVF9NU0dfTkVXU0VURUxFTV0gPSB7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTAwNDY6XFx0XFx0LmNhbGxcXHRcXHQ9IG5mX3RhYmxlc19uZXdzZXRlbGVtLFxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwMDQ3LVxcdFxcdC50eXBlXFx0XFx0PSBORk5MX0NCX0JBVENILFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQyMzoyNjowMy4zMzI2MTkyN1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDI4MTM1OTg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgdGhpbmtpbmcgdGhlbTpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQ6IE5ldHdvcmsgRmlsdGVyaW5nIFNldCBPcGVyYXRpb25zKipcblxuQWxyaWdodCwgbGV0J3MgemVybyBpbiBvbiB0aGlzLiBJJ20gc2VlaW5nIGBuZl90YWJsZXNfbmV3c2V0ZWxlbWAgYW5kIGBuZl90YWJsZXNfZGVsc2V0ZWxlbWAuIEltbWVkaWF0ZWx5LCB0aG9zZSBqdW1wIG91dCBhcyB0aGUgY29yZSBlbnRyeSBwb2ludHMgZm9yIHRoZSBhZGRpdGlvbiBhbmQgcmVtb3ZhbCBvZiBlbGVtZW50cyB3aXRoaW4gYSBzZXQsIGluIHRoZSBjb250ZXh0IG9mIGBuZl90YWJsZXNgLiBUaGF0J3MgcHJlY2lzZWx5IHRoZSBraW5kIG9mIGxvdy1sZXZlbCBkZXRhaWwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bmRhbWVudGFsIG1lY2hhbmljcyBvZiBob3cgdGhlc2UgbmV0d29yayBmaWx0ZXJpbmcgdGFibGVzIGFyZSBtYW5pcHVsYXRlZCBhdCB0aGUgc2V0IGxldmVsLiBFeGNlbGxlbnQgZm9jdXMgc3ltYm9scyB0byBzdGFydCBkaWdnaW5nIGludG8uIFRoZXkgb2ZmZXIgYSBkaXJlY3QgcGF0aCB0byB1bmRlcnN0YW5kaW5nIHRoZSBjb3JlIGZ1bmN0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEyMjYsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQyMzoyNjowNi4zNjA3NTgzMTlaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzNTA2Mzk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mX3RhYmxlc19kZWxzZXRlbGVtXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTgwMDQ9c3RhdGljIGludCBuZnRfc2V0X2ZsdXNoKHN0cnVjdCBuZnRfY3R4ICpjdHgsIHN0cnVjdCBuZnRfc2V0ICpzZXQsIHU4IGdlbm1hc2spXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy04MDIxLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjgwMjI6c3RhdGljIGludCBuZl90YWJsZXNfZGVsc2V0ZWxlbShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTgwMjMtXFx0XFx0XFx0XFx0Y29uc3Qgc3RydWN0IG5mbmxfaW5mbyAqaW5mbyxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTk5NDI9c3RhdGljIGNvbnN0IHN0cnVjdCBuZm5sX2NhbGxiYWNrIG5mX3RhYmxlc19jYltORlRfTVNHX01BWF0gPSB7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDA2My1cXHRbTkZUX01TR19ERUxTRVRFTEVNXSA9IHtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDA2NDpcXHRcXHQuY2FsbFxcdFxcdD0gbmZfdGFibGVzX2RlbHNldGVsZW0sXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTAwNjUtXFx0XFx0LnR5cGVcXHRcXHQ9IE5GTkxfQ0JfQkFUQ0gsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDA2OS1cXHRbTkZUX01TR19ERVNUUk9ZU0VURUxFTV0gPSB7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTAwNzA6XFx0XFx0LmNhbGxcXHRcXHQ9IG5mX3RhYmxlc19kZWxzZXRlbGVtLFxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwMDcxLVxcdFxcdC50eXBlXFx0XFx0PSBORk5MX0NCX0JBVENILFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQyMzoyNjowNi40MjQyNjg1MThaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc0MDMzMzY5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBOZXRmaWx0ZXIgRm9jdXMqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gemVybyBpbiBvbiB0aGVzZSBzeW1ib2xzOiBgbmZfdGFibGVzX2NvbW1pdGAsIGBuZl90YWJsZXNfYWJvcnRgLCBgbmZfdGFibGVzX25ld3NldGVsZW1gLCBhbmQgYG5mX3RhYmxlc19kZWxzZXRlbGVtYC4gVGhleSdyZSBhbGwgTmV0bGluayBjYWxsYmFja3MsIHdoaWNoIG1lYW5zIHRoZXkgYXJlbid0IGlubGluZWQgYW5kIGFyZSBkZWZpbml0ZSBBUEkgZW50cnlwb2ludHMsIHBlcmZlY3QgdGFyZ2V0cyBmb3IgZGVlcGVyIGFuYWx5c2lzLlxuXG5CZWZvcmUgSSBnbyBmdXJ0aGVyLCBJIHNob3VsZCB2ZXJpZnkgdGhlIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBMZXQncyBtYWtlIHN1cmUgYE5GX1RBQkxFU2AgZGVwZW5kcyBvbiBgTkVURklMVEVSYC4gR290dGEgY292ZXIgYWxsIHRoZSBiYXNlcyB0byBhdm9pZCBhbnkgdW5leHBlY3RlZCBpc3N1ZXMgZG93biB0aGUgbGluZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE4MzcsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQyMzoyNjoxMC4xNjQ2MDU1NzZaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzNTA4NzU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRGSUxURVJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz0yPW1lbnUgXFxcIkNvcmUgTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb25cXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NTpjb25maWcgTkVURklMVEVSX0lOR1JFU1NcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNi1cXHRib29sIFxcXCJOZXRmaWx0ZXIgaW5ncmVzcyBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEyLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMzpjb25maWcgTkVURklMVEVSX0VHUkVTU1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNC1cXHRib29sIFxcXCJOZXRmaWx0ZXIgZWdyZXNzIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjAtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjIxOmNvbmZpZyBORVRGSUxURVJfU0tJUF9FR1JFU1NcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjItXFx0ZGVmX2Jvb2wgTkVURklMVEVSX0VHUkVTUyBcXHUwMDI2XFx1MDAyNiAoTkVUX0NMU19BQ1QgfHwgSUZCKVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yMy1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MjQ6Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI1LVxcdGJvb2xcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjYtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjI3OmNvbmZpZyBORVRGSUxURVJfRkFNSUxZX0JSSURHRVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yOC1cXHRib29sXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI5LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozMDpjb25maWcgTkVURklMVEVSX0ZBTUlMWV9BUlBcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzEtXFx0Ym9vbFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zMi1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MzM6Y29uZmlnIE5FVEZJTFRFUl9CUEZfTElOS1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zNC1cXHRkZWZfYm9vbCBCUEZfU1lTQ0FMTFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zNS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MzY6Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX0hPT0tcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzctXFx0dHJpc3RhdGUgXFxcIk5ldGZpbHRlciBiYXNlIGhvb2sgZHVtcCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ1LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0Njpjb25maWcgTkVURklMVEVSX05FVExJTktfQUNDVFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00Ny1cXHR0cmlzdGF0ZSBcXFwiTmV0ZmlsdGVyIE5GQUNDVCBvdmVyIE5GTkVUTElOSyBpbnRlcmZhY2VcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNTMtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjU0OmNvbmZpZyBORVRGSUxURVJfTkVUTElOS19RVUVVRVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy01NS1cXHR0cmlzdGF0ZSBcXFwiTmV0ZmlsdGVyIE5GUVVFVUUgb3ZlciBORk5FVExJTksgaW50ZXJmYWNlXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTYxLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo2Mjpjb25maWcgTkVURklMVEVSX05FVExJTktfTE9HXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTYzLVxcdHRyaXN0YXRlIFxcXCJOZXRmaWx0ZXIgTE9HIG92ZXIgTkZORVRMSU5LIGludGVyZmFjZVxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03My1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NzQ6Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX09TRlxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03NS1cXHR0cmlzdGF0ZSBcXFwiTmV0ZmlsdGVyIE9TRiBvdmVyIE5GTkVUTElOSyBpbnRlcmZhY2VcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc9MTEwPWlmIE5GX0NPTk5UUkFDS1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMTE6Y29uZmlnIE5FVEZJTFRFUl9DT05OQ09VTlRcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTEyLVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc9Mzg1PWNvbmZpZyBORl9DVF9ORVRMSU5LX0hFTFBFUlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTM5Ny1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mzk4OmNvbmZpZyBORVRGSUxURVJfTkVUTElOS19HTFVFX0NUXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTM5OS1cXHRib29sIFxcXCJORlFVRVVFIGFuZCBORkxPRyBpbnRlZ3JhdGlvbiB3aXRoIENvbm5lY3Rpb24gVHJhY2tpbmdcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc9NDQ3PWNvbmZpZyBORl9OQVRfT1ZTXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDQ5LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0NTA6Y29uZmlnIE5FVEZJTFRFUl9TWU5QUk9YWVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NTEtXFx0dHJpc3RhdGVcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz03MjE9Y29uZmlnIE5GX0ZMT1dfVEFCTEVfUFJPQ0ZTXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzI4LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo3Mjk6Y29uZmlnIE5FVEZJTFRFUl9YVEFCTEVTXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTczMC1cXHR0cmlzdGF0ZSBcXFwiTmV0ZmlsdGVyIFh0YWJsZXMgc3VwcG9ydCAocmVxdWlyZWQgZm9yIGlwX3RhYmxlcylcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc9NzM2PWlmIE5FVEZJTFRFUl9YVEFCTEVTXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTczNy1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NzM4OmNvbmZpZyBORVRGSUxURVJfWFRBQkxFU19DT01QQVRcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzM5LVxcdGJvb2wgXFxcIk5ldGZpbHRlciBYdGFibGVzIDMyYml0IHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzQ2LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo3NDc6Y29uZmlnIE5FVEZJTFRFUl9YVEFCTEVTX0xFR0FDWVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03NDgtXFx0Ym9vbCBcXFwiTmV0ZmlsdGVyIGxlZ2FjeSB0YWJsZXMgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz03NTc9Y29tbWVudCBcXFwiWHRhYmxlcyBjb21iaW5lZCBtb2R1bGVzXFxcIlxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03NTgtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjc1OTpjb25maWcgTkVURklMVEVSX1hUX01BUktcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzYwLVxcdHRyaXN0YXRlICduZm1hcmsgdGFyZ2V0IGFuZCBtYXRjaCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTc3Mi1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NzczOmNvbmZpZyBORVRGSUxURVJfWFRfQ09OTk1BUktcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzc0LVxcdHRyaXN0YXRlICdjdG1hcmsgdGFyZ2V0IGFuZCBtYXRjaCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTc4NC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Nzg1OmNvbmZpZyBORVRGSUxURVJfWFRfU0VUXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTc4Ni1cXHR0cmlzdGF0ZSAnc2V0IHRhcmdldCBhbmQgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz03OTk9Y29tbWVudCBcXFwiWHRhYmxlcyB0YXJnZXRzXFxcIlxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04MDAtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjgwMTpjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9BVURJVFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04MDItXFx0dHJpc3RhdGUgXFxcIkFVRElUIHRhcmdldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTgxMC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6ODExOmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX0NIRUNLU1VNXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTgxMi1cXHR0cmlzdGF0ZSBcXFwiQ0hFQ0tTVU0gdGFyZ2V0IHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctODI2LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo4Mjc6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfQ0xBU1NJRllcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctODI4LVxcdHRyaXN0YXRlICdcXFwiQ0xBU1NJRllcXFwiIHRhcmdldCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTgzOC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6ODM5OmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX0NPTk5NQVJLXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTg0MC1cXHR0cmlzdGF0ZSAgJ1xcXCJDT05OTUFSS1xcXCIgdGFyZ2V0IHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctODQ4LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo4NDk6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfQ09OTlNFQ01BUktcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctODUwLVxcdHRyaXN0YXRlICdcXFwiQ09OTlNFQ01BUktcXFwiIHRhcmdldCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTg2MC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6ODYxOmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX0NUXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTg2Mi1cXHR0cmlzdGF0ZSAnXFxcIkNUXFxcIiB0YXJnZXQgc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04NzItXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjg3Mzpjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9EU0NQXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTg3NC1cXHR0cmlzdGF0ZSAnXFxcIkRTQ1BcXFwiIGFuZCBcXFwiVE9TXFxcIiB0YXJnZXQgc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04ODgtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjg4OTpjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9ITFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04OTAtXFx0dHJpc3RhdGUgJ1xcXCJITFxcXCIgaG9wbGltaXQgdGFyZ2V0IHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctOTAzLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo5MDQ6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfSE1BUktcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctOTA1LVxcdHRyaXN0YXRlICdcXFwiSE1BUktcXFwiIHRhcmdldCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTkxNy1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6OTE4OmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX0lETEVUSU1FUlxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy05MTktXFx0dHJpc3RhdGUgIFxcXCJJRExFVElNRVIgdGFyZ2V0IHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctOTI5LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo5MzA6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfTEVEXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTkzMS1cXHR0cmlzdGF0ZSAnXFxcIkxFRFxcXCIgdGFyZ2V0IHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctOTUzLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo5NTQ6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfTE9HXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTk1NS1cXHR0cmlzdGF0ZSBcXFwiTE9HIHRhcmdldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTk2NC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6OTY1OmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX01BUktcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctOTY2LVxcdHRyaXN0YXRlICdcXFwiTUFSS1xcXCIgdGFyZ2V0IHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctOTczLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo5NzQ6Y29uZmlnIE5FVEZJTFRFUl9YVF9OQVRcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctOTc1LVxcdHRyaXN0YXRlICdcXFwiU05BVCBhbmQgRE5BVFxcXCIgdGFyZ2V0cyBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTk4MS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6OTgyOmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX05FVE1BUFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy05ODMtXFx0dHJpc3RhdGUgJ1xcXCJORVRNQVBcXFwiIHRhcmdldCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTk5MS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6OTkyOmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX05GTE9HXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTk5My1cXHR0cmlzdGF0ZSAnXFxcIk5GTE9HXFxcIiB0YXJnZXQgc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMDAxLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMDAyOmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX05GUVVFVUVcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTAwMy1cXHR0cmlzdGF0ZSAnXFxcIk5GUVVFVUVcXFwiIHRhcmdldCBTdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEwMTMtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjEwMTQ6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfTk9UUkFDS1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMDE1LVxcdHRyaXN0YXRlICAnXFxcIk5PVFJBQ0tcXFwiIHRhcmdldCBzdXBwb3J0IChERVBSRUNBVEVEKSdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMDIwLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMDIxOmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX1JBVEVFU1RcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTAyMi1cXHR0cmlzdGF0ZSAnXFxcIlJBVEVFU1RcXFwiIHRhcmdldCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEwMzAtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjEwMzE6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfUkVESVJFQ1RcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTAzMi1cXHR0cmlzdGF0ZSBcXFwiUkVESVJFQ1QgdGFyZ2V0IHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTA0Mi1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTA0Mzpjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9NQVNRVUVSQURFXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEwNDQtXFx0dHJpc3RhdGUgXFxcIk1BU1FVRVJBREUgdGFyZ2V0IHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTA1Ni1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTA1Nzpjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9URUVcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTA1OC1cXHR0cmlzdGF0ZSAnXFxcIlRFRVxcXCIgLSBwYWNrZXQgY2xvbmluZyB0byBhbHRlcm5hdGUgZGVzdGluYXRpb24nXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTA2Ny1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTA2ODpjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9UUFJPWFlcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTA2OS1cXHR0cmlzdGF0ZSAnXFxcIlRQUk9YWVxcXCIgdGFyZ2V0IHRyYW5zcGFyZW50IHByb3h5aW5nIHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTA4OC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTA4OTpjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9UUkFDRVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMDkwLVxcdHRyaXN0YXRlICAnXFxcIlRSQUNFXFxcIiB0YXJnZXQgc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTAwLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMTAxOmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX1NFQ01BUktcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTEwMi1cXHR0cmlzdGF0ZSAnXFxcIlNFQ01BUktcXFwiIHRhcmdldCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTExMTAtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjExMTE6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfVENQTVNTXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTExMTItXFx0dHJpc3RhdGUgJ1xcXCJUQ1BNU1NcXFwiIHRhcmdldCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTExMzYtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjExMzc6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfVENQT1BUU1RSSVBcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTEzOC1cXHR0cmlzdGF0ZSAnXFxcIlRDUE9QVFNUUklQXFxcIiB0YXJnZXQgc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz0xMTQ3PWNvbW1lbnQgXFxcIlh0YWJsZXMgbWF0Y2hlc1xcXCJcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTE0OC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTE0OTpjb25maWcgTkVURklMVEVSX1hUX01BVENIX0FERFJUWVBFXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTExNTAtXFx0dHJpc3RhdGUgJ1xcXCJhZGRydHlwZVxcXCIgYWRkcmVzcyB0eXBlIG1hdGNoIHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTE1OC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTE1OTpjb25maWcgTkVURklMVEVSX1hUX01BVENIX0JQRlxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTYwLVxcdHRyaXN0YXRlICdcXFwiYnBmXFxcIiBtYXRjaCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTExNjctXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjExNjg6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9DR1JPVVBcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTE2OS1cXHR0cmlzdGF0ZSAnXFxcImNvbnRyb2wgZ3JvdXBcXFwiIG1hdGNoIHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTE3Ny1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTE3ODpjb25maWcgTkVURklMVEVSX1hUX01BVENIX0NMVVNURVJcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTE3OS1cXHR0cmlzdGF0ZSAnXFxcImNsdXN0ZXJcXFwiIG1hdGNoIHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTE5My1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTE5NDpjb25maWcgTkVURklMVEVSX1hUX01BVENIX0NPTU1FTlRcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTE5NS1cXHR0cmlzdGF0ZSAgJ1xcXCJjb21tZW50XFxcIiBtYXRjaCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEyMDMtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjEyMDQ6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9DT05OQllURVNcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTIwNS1cXHR0cmlzdGF0ZSAgJ1xcXCJjb25uYnl0ZXNcXFwiIHBlci1jb25uZWN0aW9uIGNvdW50ZXIgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjE0LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMjE1OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfQ09OTkxBQkVMXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEyMTYtXFx0dHJpc3RhdGUgJ1xcXCJjb25ubGFiZWxcXFwiIG1hdGNoIHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTIyNy1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTIyODpjb25maWcgTkVURklMVEVSX1hUX01BVENIX0NPTk5MSU1JVFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjI5LVxcdHRyaXN0YXRlICdcXFwiY29ubmxpbWl0XFxcIiBtYXRjaCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEyMzYtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjEyMzc6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9DT05OTUFSS1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjM4LVxcdHRyaXN0YXRlICAnXFxcImNvbm5tYXJrXFxcIiBjb25uZWN0aW9uIG1hcmsgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjQ2LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMjQ3OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfQ09OTlRSQUNLXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEyNDgtXFx0dHJpc3RhdGUgJ1xcXCJjb25udHJhY2tcXFwiIGNvbm5lY3Rpb24gdHJhY2tpbmcgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjU5LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMjYwOmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfQ1BVXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEyNjEtXFx0dHJpc3RhdGUgJ1xcXCJjcHVcXFwiIG1hdGNoIHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTI2OC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTI2OTpjb25maWcgTkVURklMVEVSX1hUX01BVENIX0RDQ1BcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTI3MC1cXHR0cmlzdGF0ZSAnXFxcImRjY3BcXFwiIHByb3RvY29sIG1hdGNoIHN1cHBvcnQgKERFUFJFQ0FURUQpJ1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEyODAtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjEyODE6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9ERVZHUk9VUFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjgyLVxcdHRyaXN0YXRlICdcXFwiZGV2Z3JvdXBcXFwiIG1hdGNoIHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTI4OS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTI5MDpjb25maWcgTkVURklMVEVSX1hUX01BVENIX0RTQ1BcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTI5MS1cXHR0cmlzdGF0ZSAnXFxcImRzY3BcXFwiIGFuZCBcXFwidG9zXFxcIiBtYXRjaCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzMDQtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjEzMDU6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9FQ05cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTMwNi1cXHR0cmlzdGF0ZSAnXFxcImVjblxcXCIgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzEzLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMzE0OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfRVNQXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzMTUtXFx0dHJpc3RhdGUgJ1xcXCJlc3BcXFwiIG1hdGNoIHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTMyMi1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTMyMzpjb25maWcgTkVURklMVEVSX1hUX01BVENIX0hBU0hMSU1JVFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzI0LVxcdHRyaXN0YXRlICdcXFwiaGFzaGxpbWl0XFxcIiBtYXRjaCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzMzctXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjEzMzg6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9IRUxQRVJcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTMzOS1cXHR0cmlzdGF0ZSAnXFxcImhlbHBlclxcXCIgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzQ3LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMzQ4OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfSExcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTM0OS1cXHR0cmlzdGF0ZSAnXFxcImhsXFxcIiBob3BsaW1pdC9UVEwgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzU1LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMzU2OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfSVBDT01QXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzNTctXFx0dHJpc3RhdGUgJ1xcXCJpcGNvbXBcXFwiIG1hdGNoIHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTM2NC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTM2NTpjb25maWcgTkVURklMVEVSX1hUX01BVENIX0lQUkFOR0VcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTM2Ni1cXHR0cmlzdGF0ZSAnXFxcImlwcmFuZ2VcXFwiIGFkZHJlc3MgcmFuZ2UgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzc0LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMzc1OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfSVBWU1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzc2LVxcdHRyaXN0YXRlICdcXFwiaXB2c1xcXCIgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzg0LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMzg1OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfTDJUUFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzg2LVxcdHRyaXN0YXRlICdcXFwibDJ0cFxcXCIgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzk0LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMzk1OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfTEVOR1RIXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzOTYtXFx0dHJpc3RhdGUgJ1xcXCJsZW5ndGhcXFwiIG1hdGNoIHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTQwMy1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTQwNDpjb25maWcgTkVURklMVEVSX1hUX01BVENIX0xJTUlUXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0MDUtXFx0dHJpc3RhdGUgJ1xcXCJsaW1pdFxcXCIgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDEzLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNDE0OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfTUFDXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0MTUtXFx0dHJpc3RhdGUgJ1xcXCJtYWNcXFwiIGFkZHJlc3MgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDIyLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNDIzOmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfTUFSS1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDI0LVxcdHRyaXN0YXRlICdcXFwibWFya1xcXCIgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDMxLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNDMyOmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfTVVMVElQT1JUXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0MzMtXFx0dHJpc3RhdGUgJ1xcXCJtdWx0aXBvcnRcXFwiIE11bHRpcGxlIHBvcnQgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDQxLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNDQyOmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfTkZBQ0NUXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0NDMtXFx0dHJpc3RhdGUgJ1xcXCJuZmFjY3RcXFwiIG1hdGNoIHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTQ1MS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTQ1Mjpjb25maWcgTkVURklMVEVSX1hUX01BVENIX09TRlxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDUzLVxcdHRyaXN0YXRlICdcXFwib3NmXFxcIiBQYXNzaXZlIE9TIGZpbmdlcnByaW50IG1hdGNoJ1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0NjUtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjE0NjY6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9PV05FUlxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDY3LVxcdHRyaXN0YXRlICdcXFwib3duZXJcXFwiIG1hdGNoIHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTQ3My1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTQ3NDpjb25maWcgTkVURklMVEVSX1hUX01BVENIX1BPTElDWVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDc1LVxcdHRyaXN0YXRlICdJUHNlYyBcXFwicG9saWN5XFxcIiBtYXRjaCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0ODQtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjE0ODU6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9QSFlTREVWXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0ODYtXFx0dHJpc3RhdGUgJ1xcXCJwaHlzZGV2XFxcIiBtYXRjaCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0OTQtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjE0OTU6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9QS1RUWVBFXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0OTYtXFx0dHJpc3RhdGUgJ1xcXCJwa3R0eXBlXFxcIiBwYWNrZXQgdHlwZSBtYXRjaCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE1MDYtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjE1MDc6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9RVU9UQVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTA4LVxcdHRyaXN0YXRlICdcXFwicXVvdGFcXFwiIG1hdGNoIHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTUxNi1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTUxNzpjb25maWcgTkVURklMVEVSX1hUX01BVENIX1JBVEVFU1RcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTUxOC1cXHR0cmlzdGF0ZSAnXFxcInJhdGVlc3RcXFwiIG1hdGNoIHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTUyNi1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTUyNzpjb25maWcgTkVURklMVEVSX1hUX01BVENIX1JFQUxNXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE1MjgtXFx0dHJpc3RhdGUgICdcXFwicmVhbG1cXFwiIG1hdGNoIHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTU0MC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTU0MTpjb25maWcgTkVURklMVEVSX1hUX01BVENIX1JFQ0VOVFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTQyLVxcdHRyaXN0YXRlICdcXFwicmVjZW50XFxcIiBtYXRjaCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE1NTAtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjE1NTE6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9TQ1RQXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE1NTItXFx0dHJpc3RhdGUgICdcXFwic2N0cFxcXCIgcHJvdG9jb2wgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTYyLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNTYzOmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfU09DS0VUXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE1NjQtXFx0dHJpc3RhdGUgJ1xcXCJzb2NrZXRcXFwiIG1hdGNoIHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTU3OS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTU4MDpjb25maWcgTkVURklMVEVSX1hUX01BVENIX1NUQVRFXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE1ODEtXFx0dHJpc3RhdGUgJ1xcXCJzdGF0ZVxcXCIgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTkwLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNTkxOmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfU1RBVElTVElDXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE1OTItXFx0dHJpc3RhdGUgJ1xcXCJzdGF0aXN0aWNcXFwiIG1hdGNoIHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTU5OS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTYwMDpjb25maWcgTkVURklMVEVSX1hUX01BVENIX1NUUklOR1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNjAxLVxcdHRyaXN0YXRlICAnXFxcInN0cmluZ1xcXCIgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNjEyLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNjEzOmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfVENQTVNTXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE2MTQtXFx0dHJpc3RhdGUgJ1xcXCJ0Y3Btc3NcXFwiIG1hdGNoIHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTYyMi1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTYyMzpjb25maWcgTkVURklMVEVSX1hUX01BVENIX1RJTUVcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTYyNC1cXHR0cmlzdGF0ZSAnXFxcInRpbWVcXFwiIG1hdGNoIHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTYzNi1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTYzNzpjb25maWcgTkVURklMVEVSX1hUX01BVENIX1UzMlxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNjM4LVxcdHRyaXN0YXRlICdcXFwidTMyXFxcIiBtYXRjaCBzdXBwb3J0J1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQyMzoyNjoxMC4yMjgxMzE2MTRaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODQ0NzkxMTc0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIERlcGVuZGVuY2llcyBhbmQgU3ltYm9sIFNjb3BlIGZvciBuZl90YWJsZXMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24gZm9yIHRoaXMgYG5mX3RhYmxlc2AgcGF0Y2guIEZpcnN0LCB0aGUgY29yZSBkZXBlbmRlbmN5IGlzIGBORVRGSUxURVJgLCBhbmQgd2hpbGUgYE5GX1RBQkxFU2AgaXRzZWxmIGRlcGVuZHMgb24gYE5FVEZJTFRFUmAsIGl0IHNlZW1zIGxpa2UgZW5hYmxpbmcgYE5GX1RBQkxFU2AgYWxvbmUgaXMgc3VmZmljaWVudCBmb3IgdGhlIGNoYW5nZXMgaW4gdGhpcyBwYXRjaCwgdGhvdWdoIGluY2x1ZGluZyBgTkVURklMVEVSYCBmb3IgZ2VuZXJhbCBjb25maWd1cmF0aW9uIGlzIGFsd2F5cyBhIGdvb2QgcHJhY3RpY2UuXG5cblNpbmNlIHRoZSBwYXRjaCBtb2RpZmllcyBgbmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmNgLCBhbmQgdGhhdCBmaWxlIGNvbXBpbGVzIG9ubHkgd2hlbiBgQ09ORklHX05GX1RBQkxFU2AgaXMgZW5hYmxlZCwgdGhlbiBlbmFibGluZyBgTkZfVEFCTEVTYCBpcyB0aGUgb25seSBhYnNvbHV0ZWx5IGVzc2VudGlhbCBjb25maWd1cmF0aW9uIG9wdGlvbiBoZXJlLlxuXG5Ob3csIG9uIHRvIHRoZSBmb2N1cyBzeW1ib2xzLiBXZSBoYXZlIGBuZl90YWJsZXNfY29tbWl0YCwgYG5mX3RhYmxlc19hYm9ydGAsIGBuZl90YWJsZXNfbmV3c2V0ZWxlbWAsIGFuZCBgbmZfdGFibGVzX2RlbHNldGVsZW1gLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGNoZWNrIGlmIHRoZXkgd2VyZSBzdGF0aWMsIGJlY2F1c2Ugc3RhdGljIGlubGluZSBmdW5jdGlvbnMgYXJlIHRvIGJlIGF2b2lkZWQgcGVyIHRoZSBndWlkZWxpbmVzLiBBbmQsIHllcywgdGhleSBhcmUgYWxsICpzdGF0aWMqLiBXYWl0IGEgc2Vjb25kLi4uIHRoZXkgYXJlIGFsbCBzdGF0aWMgYnV0IHRoZXkgYXJlIGFzc2lnbmVkIHRvIHRoZSBgbmZfdGFibGVzX2NiYCBhcnJheSBhbmQgYG5mX3RhYmxlc19zdWJzeXNgIHN0cnVjdC4gVGhleSBhcmUgbm90IGlubGluZWQgYmVjYXVzZSB0aGV5IGFyZSB1c2VkIGFzIGZ1bmN0aW9uIHBvaW50ZXJzISBUaGlzIG1lYW5zIHRoZXkgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzLCBhbmQgdGhleSBhcmUgbm90IG9wdGltaXplZCBhd2F5LiBUaGVyZWZvcmUsIHRoZXkgYXJlIG5vdCBhIHByb2JsZW0uXG5cblRoZSBrZXkgaXMgdGhhdCwgZXZlbiB0aG91Z2ggdGhleSdyZSBzdGF0aWMsIHRoZXkgc2VydmUgYXMgdGhlICplbnRyeSBwb2ludHMqIHRvIHRoZSBgbmZfdGFibGVzYCBuZXRsaW5rIEFQSS4gVGhlc2UgZnVuY3Rpb25zIGFyZSwgZWZmZWN0aXZlbHksIHRoZSBtZWFucyBieSB3aGljaCBleHRlcm5hbCBjb21wb25lbnRzIGludGVyYWN0IHdpdGggdGhlIG1vZGlmaWVkIGNvZGUuIFRoaXMgaXMgdmVyeSBpbXBvcnRhbnQuXG5cbkkgc2hvdWxkIGRvdWJsZSBjaGVjayB0byBzZWUgaWYgdGhlcmUgYXJlIG90aGVyLCBub24tc3RhdGljIGZ1bmN0aW9ucyBpbiBgbmZfdGFibGVzX2FwaS5jYCB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50IHRvIHRoZSBwYXRjaC4gQWx0aG91Z2ggaXQncyB1bmxpa2VseSwgaXQncyB3b3J0aCBhIHF1aWNrIGxvb2suIFdlIGhhdmUgdG8gY29uc2lkZXIgdGhhdCBgbmZuZXRsaW5rX3Jjdl9iYXRjaGAgY2FsbHMgYG5mX3RhYmxlc19jb21taXRgIGFuZCBgbmZfdGFibGVzX2Fib3J0YC4gSG93ZXZlciwgYG5mbmV0bGlua19yY3ZfYmF0Y2hgIGlzIGluIGBuZm5ldGxpbmsuY2AsIHdoaWNoIHRlbGxzIG1lIHRoZSBuZXRsaW5rIHN1YnN5c3RlbSBoYW5kbGVzIHRoZSBkaXNwYXRjaC4gU28gdGhlIHN0YXRpYyBmdW5jdGlvbnMgaW4gYG5mX3RhYmxlc19hcGkuY2AgYXJlIGZpbmUgdG8gaW5jbHVkZSBhcyBGb2N1c1N5bWJvbHMgc2luY2UgdGhleSBhY3QgYXMgZW50cnlwb2ludHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4MjAzLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTAxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDIzOjI2OjE4LjY3NjA0NjUyM1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTkyMDU0NDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhQT1JUX1NZTUJPTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz0xMDc0PV9fcHJpbnRmKDIsIDMpIGludCBuZnRfcmVxdWVzdF9tb2R1bGUoc3RydWN0IG5ldCAqbmV0LCBjb25zdCBjaGFyICpmbXQsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTA5LX1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTEwOkVYUE9SVF9TWU1CT0xfR1BMKG5mdF9yZXF1ZXN0X21vZHVsZSk7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTExMS0jZW5kaWZcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTE4Mzc9dm9pZCBuZnRfcmVnaXN0ZXJfY2hhaW5fdHlwZShjb25zdCBzdHJ1Y3QgbmZ0X2NoYWluX3R5cGUgKmN0eXBlKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTg0Ni19XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTg0NzpFWFBPUlRfU1lNQk9MX0dQTChuZnRfcmVnaXN0ZXJfY2hhaW5fdHlwZSk7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTg0OC1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz0xODQ5PXZvaWQgbmZ0X3VucmVnaXN0ZXJfY2hhaW5fdHlwZShjb25zdCBzdHJ1Y3QgbmZ0X2NoYWluX3R5cGUgKmN0eXBlKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTg1NC19XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTg1NTpFWFBPUlRfU1lNQk9MX0dQTChuZnRfdW5yZWdpc3Rlcl9jaGFpbl90eXBlKTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xODU2LVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9MzM4OT1pbnQgbmZ0X3JlZ2lzdGVyX2V4cHIoc3RydWN0IG5mdF9leHByX3R5cGUgKnR5cGUpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0zNDAzLX1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzozNDA0OkVYUE9SVF9TWU1CT0xfR1BMKG5mdF9yZWdpc3Rlcl9leHByKTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0zNDA1LVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9MzQxMj12b2lkIG5mdF91bnJlZ2lzdGVyX2V4cHIoc3RydWN0IG5mdF9leHByX3R5cGUgKnR5cGUpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0zNDE3LX1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzozNDE4OkVYUE9SVF9TWU1CT0xfR1BMKG5mdF91bnJlZ2lzdGVyX2V4cHIpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTM0MTktXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz04MDg2PWludCBuZnRfcmVnaXN0ZXJfb2JqKHN0cnVjdCBuZnRfb2JqZWN0X3R5cGUgKm9ial90eXBlKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtODA5NS19XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6ODA5NjpFWFBPUlRfU1lNQk9MX0dQTChuZnRfcmVnaXN0ZXJfb2JqKTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy04MDk3LVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9ODEwND12b2lkIG5mdF91bnJlZ2lzdGVyX29iaihzdHJ1Y3QgbmZ0X29iamVjdF90eXBlICpvYmpfdHlwZSlcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTgxMDktfVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjgxMTA6RVhQT1JUX1NZTUJPTF9HUEwobmZ0X3VucmVnaXN0ZXJfb2JqKTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy04MTExLVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9ODc2OD12b2lkIG5mdF9vYmpfbm90aWZ5KHN0cnVjdCBuZXQgKm5ldCwgY29uc3Qgc3RydWN0IG5mdF90YWJsZSAqdGFibGUsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy04Nzg2LX1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzo4Nzg3OkVYUE9SVF9TWU1CT0xfR1BMKG5mdF9vYmpfbm90aWZ5KTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy04Nzg4LVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9ODgwMD12b2lkIG5mdF9yZWdpc3Rlcl9mbG93dGFibGVfdHlwZShzdHJ1Y3QgbmZfZmxvd3RhYmxlX3R5cGUgKnR5cGUpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy04ODA1LX1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzo4ODA2OkVYUE9SVF9TWU1CT0xfR1BMKG5mdF9yZWdpc3Rlcl9mbG93dGFibGVfdHlwZSk7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtODgwNy1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz04ODA4PXZvaWQgbmZ0X3VucmVnaXN0ZXJfZmxvd3RhYmxlX3R5cGUoc3RydWN0IG5mX2Zsb3d0YWJsZV90eXBlICp0eXBlKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtODgxMy19XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6ODgxNDpFWFBPUlRfU1lNQk9MX0dQTChuZnRfdW5yZWdpc3Rlcl9mbG93dGFibGVfdHlwZSk7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtODgxNS1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTg4MjY9c3RydWN0IG5mdF9mbG93dGFibGUgKm5mdF9mbG93dGFibGVfbG9va3VwKGNvbnN0IHN0cnVjdCBuZXQgKm5ldCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTg4MzktfVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjg4NDA6RVhQT1JUX1NZTUJPTF9HUEwobmZ0X2Zsb3d0YWJsZV9sb29rdXApO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTg4NDEtXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9ODg0Mj12b2lkIG5mX3RhYmxlc19kZWFjdGl2YXRlX2Zsb3d0YWJsZShjb25zdCBzdHJ1Y3QgbmZ0X2N0eCAqY3R4LFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtODg1Ni19XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6ODg1NzpFWFBPUlRfU1lNQk9MX0dQTChuZl90YWJsZXNfZGVhY3RpdmF0ZV9mbG93dGFibGUpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTg4NTgtXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz05NzU4PXN0cnVjdCBuZl9ob29rX29wcyAqbmZ0X2hvb2tfZmluZF9vcHMoY29uc3Qgc3RydWN0IG5mdF9ob29rICpob29rLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtOTc2OC19XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6OTc2OTpFWFBPUlRfU1lNQk9MX0dQTChuZnRfaG9va19maW5kX29wcyk7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtOTc3MC1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz05NzcxPXN0cnVjdCBuZl9ob29rX29wcyAqbmZ0X2hvb2tfZmluZF9vcHNfcmN1KGNvbnN0IHN0cnVjdCBuZnRfaG9vayAqaG9vayxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTk3ODEtfVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjk3ODI6RVhQT1JUX1NZTUJPTF9HUEwobmZ0X2hvb2tfZmluZF9vcHNfcmN1KTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy05NzgzLVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9MTAyOTk9dm9pZCBuZl90YWJsZXNfdHJhbnNfZGVzdHJveV9mbHVzaF93b3JrKHN0cnVjdCBuZXQgKm5ldClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwMzA0LX1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDMwNTpFWFBPUlRfU1lNQk9MX0dQTChuZl90YWJsZXNfdHJhbnNfZGVzdHJveV9mbHVzaF93b3JrKTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDMwNi1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTExNTUwPWludCBuZnRfY2hhaW5fdmFsaWRhdGVfZGVwZW5kZW5jeShjb25zdCBzdHJ1Y3QgbmZ0X2NoYWluICpjaGFpbixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExNTYxLX1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTU2MjpFWFBPUlRfU1lNQk9MX0dQTChuZnRfY2hhaW5fdmFsaWRhdGVfZGVwZW5kZW5jeSk7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE1NjMtXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9MTE1NjQ9aW50IG5mdF9jaGFpbl92YWxpZGF0ZV9ob29rcyhjb25zdCBzdHJ1Y3QgbmZ0X2NoYWluICpjaGFpbixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExNTc5LX1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTU4MDpFWFBPUlRfU1lNQk9MX0dQTChuZnRfY2hhaW5fdmFsaWRhdGVfaG9va3MpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExNTgxLVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9MTE1OTQ9aW50IG5mdF9wYXJzZV91MzJfY2hlY2soY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0ciwgaW50IG1heCwgdTMyICpkZXN0KVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE2MDQtfVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjExNjA1OkVYUE9SVF9TWU1CT0xfR1BMKG5mdF9wYXJzZV91MzJfY2hlY2spO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExNjA2LVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9MTE2Mzc9aW50IG5mdF9kdW1wX3JlZ2lzdGVyKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBhdHRyLCB1bnNpZ25lZCBpbnQgcmVnKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE2NDUtfVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjExNjQ2OkVYUE9SVF9TWU1CT0xfR1BMKG5mdF9kdW1wX3JlZ2lzdGVyKTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTY0Ny1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTExNjYwPWludCBuZnRfcGFyc2VfcmVnaXN0ZXJfbG9hZChjb25zdCBzdHJ1Y3QgbmZ0X2N0eCAqY3R4LFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE2OTEtfVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjExNjkyOkVYUE9SVF9TWU1CT0xfR1BMKG5mdF9wYXJzZV9yZWdpc3Rlcl9sb2FkKTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTY5My1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTExNzM2PWludCBuZnRfcGFyc2VfcmVnaXN0ZXJfc3RvcmUoY29uc3Qgc3RydWN0IG5mdF9jdHggKmN0eCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExNzU0LX1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTc1NTpFWFBPUlRfU1lNQk9MX0dQTChuZnRfcGFyc2VfcmVnaXN0ZXJfc3RvcmUpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExNzU2LVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9MTE5MjE9aW50IG5mdF9kYXRhX2luaXQoY29uc3Qgc3RydWN0IG5mdF9jdHggKmN0eCwgc3RydWN0IG5mdF9kYXRhICpkYXRhLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE5NTItfVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjExOTUzOkVYUE9SVF9TWU1CT0xfR1BMKG5mdF9kYXRhX2luaXQpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExOTU0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQyMzoyNjoxOC43MzUyNTc0NDFaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTU4ODI3MDA4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIG5mX3RhYmxlcyBOZXRsaW5rIEFQSSBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBkaWdnaW5nIGludG8gdGhpcyBwYXRjaC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhlIGV4cG9ydGVkIGZ1bmN0aW9ucyBoZXJlIGFyZSBsYXJnZWx5IHJlZ2lzdHJhdGlvbiB1dGlsaXRpZXMgb3IgaGVscGVycywgbm90IHRoZSBjb3JlIGxvZ2ljLiBUaGUgbWVhdCBvZiB0aGUgbmV0bGluayBoYW5kbGluZyBpcyB0dWNrZWQgYXdheSBpbiBzdGF0aWMgaGFuZGxlcnMsIGFzc2lnbmVkIHRvIGBuZl90YWJsZXNfY2JgIGFuZCBgbmZfdGFibGVzX3N1YnN5c2AuXG5cbk15IGtleSBmb2N1cyBzeW1ib2xzIGZvciBmdXp6aW5nIHdpbGwgYmUgYG5mX3RhYmxlc19jb21taXRgLCBgbmZfdGFibGVzX2Fib3J0YCwgYG5mX3RhYmxlc19uZXdzZXRlbGVtYCwgYW5kIGBuZl90YWJsZXNfZGVsc2V0ZWxlbWAuICpXYWl0KiwgcmlnaHQsIHRob3NlIGFyZSBzdGF0aWMsIGJ1dCB0aGV5IGFyZSBhc3NpZ25lZCB0byB0aGUgYGNvbW1pdGAsIGBhYm9ydGAsIGFuZCBgY2FsbGAgbWVtYmVycyBvZiBgbmZuZXRsaW5rX3N1YnN5c3RlbWAgYW5kIGBuZl90YWJsZXNfY2JgIHJlc3BlY3RpdmVseSwgc28gdGhhdCdzIHBlcmZlY3RseSBmaW5lLiBObyBpc3N1ZSB0aGVyZS5cblxuTGV0J3MgZG8gYSBxdWljayBzYW5pdHkgY2hlY2sgZm9yIGFueSBtaXNzaW5nIGNvbmZpZ3MsIGJ1dCBgTkZfVEFCTEVTYCBsb29rcyBzdWZmaWNpZW50IGZvciBjb3ZlcmFnZS5cblxuTm93LCB0byBhcnRpY3VsYXRlIHRoZSByZWFzb25pbmcgYmVoaW5kIHRhcmdldGluZyB0aGVzZSBzeW1ib2xzIGZvciBmdXp6aW5nLiBUaGlzIHBhdGNoIGlzIGZ1bmRhbWVudGFsbHkgYWx0ZXJpbmcgdGhlIG5ldGZpbHRlciBuZl90YWJsZXMgQVBJLCBpbnRyb2R1Y2luZyBhIGBzZXRfdXBkYXRlX2xpc3RgIHdpdGhpbiBgc3RydWN0IG5mdGFibGVzX3Blcm5ldGAuIFRoZSBjaGFuZ2UgaW1wYWN0cyBob3cgc2V0IGVsZW1lbnRzIGFyZSBhZGRlZCwgcmVtb3ZlZCwgYW5kIGFib3J0ZWQgZHVyaW5nIG5ldGxpbmsgdHJhbnNhY3Rpb25zLiBNb3JlIHNwZWNpZmljYWxseSwgaXQncyBtb2RpZnlpbmcgZnVuY3Rpb25zIGxpa2UgYG5mdF90cmFuc19jb21taXRfbGlzdF9hZGRfZWxlbWAsIGBuZnRfc2V0X2NvbW1pdF91cGRhdGVgLCBgbmZfdGFibGVzX2NvbW1pdGAsIGFuZCBgX19uZl90YWJsZXNfYWJvcnRgIHRvIGNvcnJlY3RseSBtYW5hZ2UgdGhpcyBuZXcgbGlzdCBhbmQgdGhlIGFzc29jaWF0ZWQgdXBkYXRlIG9yZGVyaW5nLiBHaXZlbiB0aGF0IHRoaXMgaXMgYSBmdW5jdGlvbmFsIHNoaWZ0IGluIGNvcmUgbmV0ZmlsdGVyIGxvZ2ljLCBleHBvc2VkIHZpYSBuZXRsaW5rIHNvY2tldHMsIHdlICphYnNvbHV0ZWx5KiBuZWVkIHRvIGZ1enogaXQuIEl0J3MgYSBjcml0aWNhbCBhcmVhIGZvciBwcmV2ZW50aW5nIHJlZ3Jlc3Npb25zIGFuZCBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24gdnVsbmVyYWJpbGl0aWVzLlxuXG5UaW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE3NzgsIk91dHB1dFRva2VucyI6MjA1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDIzOjI2OjI4LjMyMzUyOTgxNloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNDIwNTMzNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZfVEFCTEVTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmZfdGFibGVzX2NvbW1pdFwiLFxuICAgIFwibmZfdGFibGVzX2Fib3J0XCIsXG4gICAgXCJuZl90YWJsZXNfbmV3c2V0ZWxlbVwiLFxuICAgIFwibmZfdGFibGVzX2RlbHNldGVsZW1cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbmV0ZmlsdGVyIG5mX3RhYmxlcyBBUEkgdG8gaW50cm9kdWNlIGEgYHNldF91cGRhdGVfbGlzdGAgaW4gYHN0cnVjdCBuZnRhYmxlc19wZXJuZXRgLiBJdCBjaGFuZ2VzIGhvdyBzZXQgZWxlbWVudHMgYXJlIGFkZGVkLCByZW1vdmVkLCBhbmQgYWJvcnRlZCBkdXJpbmcgbmV0bGluayB0cmFuc2FjdGlvbnMuIFNwZWNpZmljYWxseSwgaXQgbW9kaWZpZXMgYG5mdF90cmFuc19jb21taXRfbGlzdF9hZGRfZWxlbWAsIGBuZnRfc2V0X2NvbW1pdF91cGRhdGVgLCBgbmZfdGFibGVzX2NvbW1pdGAsIGFuZCBgX19uZl90YWJsZXNfYWJvcnRgIHRvIGhhbmRsZSB0aGUgbmV3IGxpc3QgYW5kIGVuc3VyZSBwcm9wZXIgb3JkZXJpbmcgb2Ygc2V0IHVwZGF0ZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXRmaWx0ZXIgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgdmlhIG5ldGxpbmsgc29ja2V0cyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBwcmV2ZW50IHJlZ3Jlc3Npb25zIG9yIG1lbW9yeSBjb3JydXB0aW9uIGlzc3Vlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORl9UQUJMRVNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZl90YWJsZXNfY29tbWl0XCIsXG4gICAgXCJuZl90YWJsZXNfYWJvcnRcIixcbiAgICBcIm5mX3RhYmxlc19uZXdzZXRlbGVtXCIsXG4gICAgXCJuZl90YWJsZXNfZGVsc2V0ZWxlbVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRmaWx0ZXIgbmZfdGFibGVzIEFQSSB0byBpbnRyb2R1Y2UgYSBgc2V0X3VwZGF0ZV9saXN0YCBpbiBgc3RydWN0IG5mdGFibGVzX3Blcm5ldGAuIEl0IGNoYW5nZXMgaG93IHNldCBlbGVtZW50cyBhcmUgYWRkZWQsIHJlbW92ZWQsIGFuZCBhYm9ydGVkIGR1cmluZyBuZXRsaW5rIHRyYW5zYWN0aW9ucy4gU3BlY2lmaWNhbGx5LCBpdCBtb2RpZmllcyBgbmZ0X3RyYW5zX2NvbW1pdF9saXN0X2FkZF9lbGVtYCwgYG5mdF9zZXRfY29tbWl0X3VwZGF0ZWAsIGBuZl90YWJsZXNfY29tbWl0YCwgYW5kIGBfX25mX3RhYmxlc19hYm9ydGAgdG8gaGFuZGxlIHRoZSBuZXcgbGlzdCBhbmQgZW5zdXJlIHByb3BlciBvcmRlcmluZyBvZiBzZXQgdXBkYXRlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldGZpbHRlciBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluayBzb2NrZXRzIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIHByZXZlbnQgcmVncmVzc2lvbnMgb3IgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQyMzoyNjoyOC40NDc3NDU5MjJaIiwiU2VxIjoyMSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNDY0MDQwNTYxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMjM6MjY6MjguNDQ4NTU1MzgyWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjIzNDYzMjI3MzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZWZhY3RvcnMgdGhlIHRyYW5zYWN0aW9uIGNvbW1pdCBhbmQgYWJvcnQgbG9naWMgaW4gbmV0ZmlsdGVyIHRhYmxlcyAobmZfdGFibGVzKS4gSXQgbW92ZXMgdGhlIGBzZXRfdXBkYXRlX2xpc3RgIGZyb20gYmVpbmcgYSBsb2NhbCB2YXJpYWJsZSBpbiBgbmZfdGFibGVzX2NvbW1pdGAgYW5kIGBfX25mX3RhYmxlc19hYm9ydGAgdG8gYSBwZXItbmV0IG5hbWVzcGFjZSBzdHJ1Y3R1cmUgKGBzdHJ1Y3QgbmZ0YWJsZXNfcGVybmV0YCkuIEl0IGFsc28gYWRqdXN0cyB0aGUgb3JkZXIgb2Ygb3BlcmF0aW9ucyBkdXJpbmcgdGhlIGNvbW1pdCBwaGFzZSwgc3BlY2lmaWNhbGx5IGNhbGxpbmcgYG5mdF9zZXRfY29tbWl0X3VwZGF0ZWAgZWFybGllciBhbmQgbW9kaWZ5aW5nIGhvdyBgTkZUX01TR19ERUxTRVRFTEVNYCBtZXNzYWdlcyBhcmUgcHJvY2Vzc2VkIGFuZCBub3RpZmllZC5cXG5cXG5UaGVzZSBjaGFuZ2VzIGFyZSBwdXJlbHkgcmVsYXRlZCB0byBjb250cm9sIGZsb3csIGxpc3QgbWFuYWdlbWVudCwgYW5kIHRoZSBuZXRmaWx0ZXIgdHJhbnNhY3Rpb24gc3RhdGUgbWFjaGluZSAobGlrZWx5IHRvIGZpeCBhIHJhY2UgY29uZGl0aW9uLCB1c2UtYWZ0ZXItZnJlZSwgb3Igb3JkZXJpbmcgaXNzdWUpLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgYXJlIGNvcGllZCB0byB1c2VyIHNwYWNlLCBub3IgZG9lcyBpdCBtb2RpZnkgYnVmZmVyIGFsbG9jYXRpb25zLCBib3VuZHMgY2hlY2tpbmcsIG9yIGluaXRpYWxpemF0aW9uIGxvZ2ljIGluIGEgd2F5IHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQga2VybmVsIG1lbW9yeSAoaW5mby1sZWFrcykgb3IgY2F1c2UgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gYmUgdXNlZCBpbiBjb250cm9sIGZsb3cuXFxuXFxuQW55IGJ1Z3MgaW50cm9kdWNlZCBvciBmaXhlZCBieSB0aGlzIHBhdGNoIChzdWNoIGFzIHVzZS1hZnRlci1mcmVlLCBkb3VibGUtZnJlZSwgb3IgbGlzdCBjb3JydXB0aW9uKSB3b3VsZCBiZSByZWxpYWJseSBkZXRlY3RlZCBieSBzdGFuZGFyZCBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIGRlYnVnIG9wdGlvbnMgKGxpa2UgYENPTkZJR19ERUJVR19MSVNUYCkuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBqdXN0aWZpZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMGQ5MzEyYTBkOGRhNmNlODJlMDUzNjg0MzlhOTlmN2E2MGQyZjkxY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDEyIDIzOjI1OjMyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlcy5oIGIvaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlcy5oXG5pbmRleCAzYmU2MTIxNDVjMTMwLi4yMzhmNmVjYjkwZTk5IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlcy5oXG4rKysgYi9pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzLmhcbkBAIC0xOTQ5LDYgKzE5NDksNyBAQCBzdHJ1Y3QgbmZ0YWJsZXNfcGVybmV0IHtcbiBcdHN0cnVjdCBsaXN0X2hlYWRcdGJpbmRpbmdfbGlzdDtcbiBcdHN0cnVjdCBsaXN0X2hlYWRcdG1vZHVsZV9saXN0O1xuIFx0c3RydWN0IGxpc3RfaGVhZFx0bm90aWZ5X2xpc3Q7XG4rXHRzdHJ1Y3QgbGlzdF9oZWFkXHRzZXRfdXBkYXRlX2xpc3Q7XG4gXHRzdHJ1Y3QgbXV0ZXhcdFx0Y29tbWl0X211dGV4O1xuIFx0dTY0XHRcdFx0dGFibGVfaGFuZGxlO1xuIFx0dTY0XHRcdFx0dHN0YW1wO1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jIGIvbmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmNcbmluZGV4IGFmMzU3ZjZjNTA3MGIuLjVjNGY2YzM1NDU5NTAgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuY1xuKysrIGIvbmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmNcbkBAIC01OTUsMTAgKzU5NSwxNSBAQCBzdGF0aWMgdm9pZCBuZnRfdHJhbnNfY29tbWl0X2xpc3RfYWRkX3RhaWwoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmZ0X3RyYW5zICp0clxuIHN0YXRpYyB2b2lkIG5mdF90cmFuc19jb21taXRfbGlzdF9hZGRfZWxlbShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBuZnRfdHJhbnMgKnRyYW5zKVxuIHtcbiBcdHN0cnVjdCBuZnRhYmxlc19wZXJuZXQgKm5mdF9uZXQgPSBuZnRfcGVybmV0KG5ldCk7XG4rXHRzdHJ1Y3QgbmZ0X3RyYW5zX2VsZW0gKnRlO1xuIFxuIFx0V0FSTl9PTl9PTkNFKHRyYW5zLVx1MDAzZW1zZ190eXBlICE9IE5GVF9NU0dfTkVXU0VURUxFTSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgICB0cmFucy1cdTAwM2Vtc2dfdHlwZSAhPSBORlRfTVNHX0RFTFNFVEVMRU0pO1xuIFxuK1x0dGUgPSBuZnRfdHJhbnNfY29udGFpbmVyX2VsZW0odHJhbnMpO1xuK1x0aWYgKHRlLVx1MDAzZXNldC1cdTAwM2VvcHMtXHUwMDNlY29tbWl0IFx1MDAyNlx1MDAyNiBsaXN0X2VtcHR5KFx1MDAyNnRlLVx1MDAzZXNldC1cdTAwM2VwZW5kaW5nX3VwZGF0ZSkpXG4rXHRcdGxpc3RfYWRkX3RhaWwoXHUwMDI2dGUtXHUwMDNlc2V0LVx1MDAzZXBlbmRpbmdfdXBkYXRlLCBcdTAwMjZuZnRfbmV0LVx1MDAzZXNldF91cGRhdGVfbGlzdCk7XG4rXG4gXHRpZiAobmZ0X3RyYW5zX3RyeV9jb2xsYXBzZShuZnRfbmV0LCB0cmFucykpIHtcbiBcdFx0a2ZyZWUodHJhbnMpO1xuIFx0XHRyZXR1cm47XG5AQCAtNzIwNSw2ICs3MjEwLDIwIEBAIHN0YXRpYyB2b2lkIG5mdF90cmFuc19lbGVtc19yZW1vdmUoY29uc3Qgc3RydWN0IG5mdF9jdHggKmN0eCxcbiBcdH1cbiB9XG4gXG4rc3RhdGljIHZvaWQgbmZ0X3RyYW5zX2VsZW1zX3JlbW92ZV9ub3RpZnkoY29uc3Qgc3RydWN0IG5mdF9jdHggKmN0eCxcbitcdFx0XHRcdFx0ICBjb25zdCBzdHJ1Y3QgbmZ0X3RyYW5zX2VsZW0gKnRlKVxuK3tcbitcdGludCBpO1xuK1xuK1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgdGUtXHUwMDNlbmVsZW1zOyBpKyspIHtcbitcdFx0V0FSTl9PTl9PTkNFKHRlLVx1MDAzZWVsZW1zW2ldLnVwZGF0ZSk7XG4rXG4rXHRcdG5mX3RhYmxlc19zZXRlbGVtX25vdGlmeShjdHgsIHRlLVx1MDAzZXNldCxcbitcdFx0XHRcdFx0IHRlLVx1MDAzZWVsZW1zW2ldLnByaXYsXG4rXHRcdFx0XHRcdCB0ZS1cdTAwM2VuZnRfdHJhbnMubXNnX3R5cGUpO1xuK1x0fVxuK31cbitcbiBzdGF0aWMgYm9vbCBuZnRfc2V0ZWxlbV92YWxpZF9rZXlfZW5kKGNvbnN0IHN0cnVjdCBuZnRfc2V0ICpzZXQsXG4gXHRcdFx0XHQgICAgICBzdHJ1Y3QgbmxhdHRyICoqbmxhLCB1MzIgZmxhZ3MpXG4ge1xuQEAgLTEwODQ4LDExICsxMDg2NywzMSBAQCBzdGF0aWMgdm9pZCBuZl90YWJsZXNfY29tbWl0X2F1ZGl0X2xvZyhzdHJ1Y3QgbGlzdF9oZWFkICphZGwsIHUzMiBnZW5lcmF0aW9uKVxuIFx0fVxuIH1cbiBcbi1zdGF0aWMgdm9pZCBuZnRfc2V0X2NvbW1pdF91cGRhdGUoc3RydWN0IGxpc3RfaGVhZCAqc2V0X3VwZGF0ZV9saXN0KVxuK3N0YXRpYyB2b2lkIG5mdF9zZXRfY29tbWl0X3VwZGF0ZShzdHJ1Y3QgbmZ0X2N0eCAqY3R4LFxuK1x0XHRcdFx0ICBzdHJ1Y3QgbmZ0YWJsZXNfcGVybmV0ICpuZnRfbmV0KVxuIHtcbiBcdHN0cnVjdCBuZnRfc2V0ICpzZXQsICpuZXh0O1xuK1x0c3RydWN0IG5mdF90cmFuc19lbGVtICp0ZTtcbitcdHN0cnVjdCBuZnRfdHJhbnMgKnRyYW5zO1xuIFxuLVx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHNldCwgbmV4dCwgc2V0X3VwZGF0ZV9saXN0LCBwZW5kaW5nX3VwZGF0ZSkge1xuK1x0aWYgKGxpc3RfZW1wdHkoXHUwMDI2bmZ0X25ldC1cdTAwM2VzZXRfdXBkYXRlX2xpc3QpKVxuK1x0XHRyZXR1cm47XG4rXG4rXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHRyYW5zLCBcdTAwMjZuZnRfbmV0LVx1MDAzZWNvbW1pdF9saXN0LCBsaXN0KSB7XG4rXHRcdG5mdF9jdHhfdXBkYXRlKGN0eCwgdHJhbnMpO1xuK1xuK1x0XHRzd2l0Y2ggKHRyYW5zLVx1MDAzZW1zZ190eXBlKSB7XG4rXHRcdGNhc2UgTkZUX01TR19ERUxTRVRFTEVNOlxuK1x0XHRcdHRlID0gbmZ0X3RyYW5zX2NvbnRhaW5lcl9lbGVtKHRyYW5zKTtcbitcdFx0XHRpZiAoIXRlLVx1MDAzZXNldC1cdTAwM2VvcHMtXHUwMDNlY29tbWl0KVxuK1x0XHRcdFx0YnJlYWs7XG4rXG4rXHRcdFx0bmZ0X3RyYW5zX2VsZW1zX3JlbW92ZShjdHgsIHRlKTtcbitcdFx0XHRicmVhaztcbitcdFx0fVxuK1x0fVxuK1xuK1x0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHNldCwgbmV4dCwgXHUwMDI2bmZ0X25ldC1cdTAwM2VzZXRfdXBkYXRlX2xpc3QsIHBlbmRpbmdfdXBkYXRlKSB7XG4gXHRcdGxpc3RfZGVsX2luaXQoXHUwMDI2c2V0LVx1MDAzZXBlbmRpbmdfdXBkYXRlKTtcbiBcbiBcdFx0aWYgKCFzZXQtXHUwMDNlb3BzLVx1MDAzZWNvbW1pdCB8fCBzZXQtXHUwMDNlZGVhZClcbkBAIC0xMDg4NSw3ICsxMDkyNCw2IEBAIHN0YXRpYyBpbnQgbmZfdGFibGVzX2NvbW1pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRzdHJ1Y3QgbmZ0X3RyYW5zX2JpbmRpbmcgKnRyYW5zX2JpbmRpbmc7XG4gXHRzdHJ1Y3QgbmZ0X3RyYW5zICp0cmFucywgKm5leHQ7XG4gXHR1bnNpZ25lZCBpbnQgYmFzZV9zZXEsIGdjX3NlcTtcbi1cdExJU1RfSEVBRChzZXRfdXBkYXRlX2xpc3QpO1xuIFx0c3RydWN0IG5mdF90cmFuc19lbGVtICp0ZTtcbiBcdHN0cnVjdCBuZnRfY2hhaW4gKmNoYWluO1xuIFx0c3RydWN0IG5mdF90YWJsZSAqdGFibGU7XG5AQCAtMTA5NjAsNiArMTA5OTgsOCBAQCBzdGF0aWMgaW50IG5mX3RhYmxlc19jb21taXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0fVxuIFxuIFx0Lyogc3RlcCAyLiAgTWFrZSBydWxlc19nZW5fWCB2aXNpYmxlIHRvIHBhY2tldCBwYXRoICovXG4rXHRuZnRfc2V0X2NvbW1pdF91cGRhdGUoXHUwMDI2Y3R4LCBuZnRfbmV0KTtcbitcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnkodGFibGUsIFx1MDAyNm5mdF9uZXQtXHUwMDNldGFibGVzLCBsaXN0KSB7XG4gXHRcdGxpc3RfZm9yX2VhY2hfZW50cnkoY2hhaW4sIFx1MDAyNnRhYmxlLVx1MDAzZWNoYWlucywgbGlzdClcbiBcdFx0XHRuZl90YWJsZXNfY29tbWl0X2NoYWluKG5ldCwgY2hhaW4pO1xuQEAgLTExMDkxLDI3ICsxMTEzMSwxNiBAQCBzdGF0aWMgaW50IG5mX3RhYmxlc19jb21taXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0XHRcdGJyZWFrO1xuIFx0XHRjYXNlIE5GVF9NU0dfTkVXU0VURUxFTTpcbiBcdFx0XHR0ZSA9IG5mdF90cmFuc19jb250YWluZXJfZWxlbSh0cmFucyk7XG4tXG4gXHRcdFx0bmZ0X3RyYW5zX2VsZW1zX2FkZChcdTAwMjZjdHgsIHRlKTtcbi1cbi1cdFx0XHRpZiAodGUtXHUwMDNlc2V0LVx1MDAzZW9wcy1cdTAwM2Vjb21taXQgXHUwMDI2XHUwMDI2XG4tXHRcdFx0ICAgIGxpc3RfZW1wdHkoXHUwMDI2dGUtXHUwMDNlc2V0LVx1MDAzZXBlbmRpbmdfdXBkYXRlKSkge1xuLVx0XHRcdFx0bGlzdF9hZGRfdGFpbChcdTAwMjZ0ZS1cdTAwM2VzZXQtXHUwMDNlcGVuZGluZ191cGRhdGUsXG4tXHRcdFx0XHRcdCAgICAgIFx1MDAyNnNldF91cGRhdGVfbGlzdCk7XG4tXHRcdFx0fVxuIFx0XHRcdG5mdF90cmFuc19kZXN0cm95KHRyYW5zKTtcbiBcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSBORlRfTVNHX0RFTFNFVEVMRU06XG4gXHRcdGNhc2UgTkZUX01TR19ERVNUUk9ZU0VURUxFTTpcbiBcdFx0XHR0ZSA9IG5mdF90cmFuc19jb250YWluZXJfZWxlbSh0cmFucyk7XG4tXG4tXHRcdFx0bmZ0X3RyYW5zX2VsZW1zX3JlbW92ZShcdTAwMjZjdHgsIHRlKTtcbi1cbi1cdFx0XHRpZiAodGUtXHUwMDNlc2V0LVx1MDAzZW9wcy1cdTAwM2Vjb21taXQgXHUwMDI2XHUwMDI2XG4tXHRcdFx0ICAgIGxpc3RfZW1wdHkoXHUwMDI2dGUtXHUwMDNlc2V0LVx1MDAzZXBlbmRpbmdfdXBkYXRlKSkge1xuLVx0XHRcdFx0bGlzdF9hZGRfdGFpbChcdTAwMjZ0ZS1cdTAwM2VzZXQtXHUwMDNlcGVuZGluZ191cGRhdGUsXG4tXHRcdFx0XHRcdCAgICAgIFx1MDAyNnNldF91cGRhdGVfbGlzdCk7XG4tXHRcdFx0fVxuK1x0XHRcdGlmICh0ZS1cdTAwM2VzZXQtXHUwMDNlb3BzLVx1MDAzZWNvbW1pdClcbitcdFx0XHRcdG5mdF90cmFuc19lbGVtc19yZW1vdmVfbm90aWZ5KFx1MDAyNmN0eCwgdGUpO1xuK1x0XHRcdGVsc2VcbitcdFx0XHRcdG5mdF90cmFuc19lbGVtc19yZW1vdmUoXHUwMDI2Y3R4LCB0ZSk7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgTkZUX01TR19ORVdPQko6XG4gXHRcdFx0aWYgKG5mdF90cmFuc19vYmpfdXBkYXRlKHRyYW5zKSkge1xuQEAgLTExMTgwLDggKzExMjA5LDYgQEAgc3RhdGljIGludCBuZl90YWJsZXNfY29tbWl0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdFx0fVxuIFx0fVxuIFxuLVx0bmZ0X3NldF9jb21taXRfdXBkYXRlKFx1MDAyNnNldF91cGRhdGVfbGlzdCk7XG4tXG4gXHRuZnRfY29tbWl0X25vdGlmeShuZXQsIE5FVExJTktfQ0Ioc2tiKS5wb3J0aWQpO1xuIFx0bmZfdGFibGVzX2dlbl9ub3RpZnkobmV0LCBza2IsIE5GVF9NU0dfTkVXR0VOKTtcbiBcdG5mX3RhYmxlc19jb21taXRfYXVkaXRfbG9nKFx1MDAyNmFkbCwgbmZ0X2Jhc2Vfc2VxKG5ldCkpO1xuQEAgLTExMjQ3LDExICsxMTI3NCwxMSBAQCBzdGF0aWMgdm9pZCBuZl90YWJsZXNfYWJvcnRfcmVsZWFzZShzdHJ1Y3QgbmZ0X3RyYW5zICp0cmFucylcbiBcdGtmcmVlKHRyYW5zKTtcbiB9XG4gXG4tc3RhdGljIHZvaWQgbmZ0X3NldF9hYm9ydF91cGRhdGUoc3RydWN0IGxpc3RfaGVhZCAqc2V0X3VwZGF0ZV9saXN0KVxuK3N0YXRpYyB2b2lkIG5mdF9zZXRfYWJvcnRfdXBkYXRlKHN0cnVjdCBuZnRhYmxlc19wZXJuZXQgKm5mdF9uZXQpXG4ge1xuIFx0c3RydWN0IG5mdF9zZXQgKnNldCwgKm5leHQ7XG4gXG4tXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoc2V0LCBuZXh0LCBzZXRfdXBkYXRlX2xpc3QsIHBlbmRpbmdfdXBkYXRlKSB7XG4rXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoc2V0LCBuZXh0LCBcdTAwMjZuZnRfbmV0LVx1MDAzZXNldF91cGRhdGVfbGlzdCwgcGVuZGluZ191cGRhdGUpIHtcbiBcdFx0bGlzdF9kZWxfaW5pdChcdTAwMjZzZXQtXHUwMDNlcGVuZGluZ191cGRhdGUpO1xuIFxuIFx0XHRpZiAoIXNldC1cdTAwM2VvcHMtXHUwMDNlYWJvcnQpXG5AQCAtMTEzODYsMzMgKzExNDEzLDIyIEBAIHN0YXRpYyBpbnQgX19uZl90YWJsZXNfYWJvcnQoc3RydWN0IG5ldCAqbmV0LCBlbnVtIG5mbmxfYWJvcnRfYWN0aW9uIGFjdGlvbilcbiBcdFx0XHRuZnRfdHJhbnNfZGVzdHJveSh0cmFucyk7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgTkZUX01TR19ORVdTRVRFTEVNOlxuK1x0XHRcdHRlID0gbmZ0X3RyYW5zX2NvbnRhaW5lcl9lbGVtKHRyYW5zKTtcbiBcdFx0XHRpZiAobmZ0X3RyYW5zX2VsZW1fc2V0X2JvdW5kKHRyYW5zKSkge1xuK1x0XHRcdFx0bGlzdF9kZWxfaW5pdChcdTAwMjZ0ZS1cdTAwM2VzZXQtXHUwMDNlcGVuZGluZ191cGRhdGUpO1xuIFx0XHRcdFx0bmZ0X3RyYW5zX2Rlc3Ryb3kodHJhbnMpO1xuIFx0XHRcdFx0YnJlYWs7XG4gXHRcdFx0fVxuLVx0XHRcdHRlID0gbmZ0X3RyYW5zX2NvbnRhaW5lcl9lbGVtKHRyYW5zKTtcbiBcdFx0XHRpZiAoIW5mdF90cmFuc19lbGVtc19uZXdfYWJvcnQoXHUwMDI2Y3R4LCB0ZSkpIHtcbiBcdFx0XHRcdG5mdF90cmFuc19kZXN0cm95KHRyYW5zKTtcbiBcdFx0XHRcdGJyZWFrO1xuIFx0XHRcdH1cbi1cbi1cdFx0XHRpZiAodGUtXHUwMDNlc2V0LVx1MDAzZW9wcy1cdTAwM2VhYm9ydCBcdTAwMjZcdTAwMjZcbi1cdFx0XHQgICAgbGlzdF9lbXB0eShcdTAwMjZ0ZS1cdTAwM2VzZXQtXHUwMDNlcGVuZGluZ191cGRhdGUpKSB7XG4tXHRcdFx0XHRsaXN0X2FkZF90YWlsKFx1MDAyNnRlLVx1MDAzZXNldC1cdTAwM2VwZW5kaW5nX3VwZGF0ZSxcbi1cdFx0XHRcdFx0ICAgICAgXHUwMDI2c2V0X3VwZGF0ZV9saXN0KTtcbi1cdFx0XHR9XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgTkZUX01TR19ERUxTRVRFTEVNOlxuIFx0XHRjYXNlIE5GVF9NU0dfREVTVFJPWVNFVEVMRU06XG4gXHRcdFx0dGUgPSBuZnRfdHJhbnNfY29udGFpbmVyX2VsZW0odHJhbnMpO1xuIFxuIFx0XHRcdG5mdF90cmFuc19lbGVtc19kZXN0cm95X2Fib3J0KFx1MDAyNmN0eCwgdGUpO1xuLVxuLVx0XHRcdGlmICh0ZS1cdTAwM2VzZXQtXHUwMDNlb3BzLVx1MDAzZWFib3J0IFx1MDAyNlx1MDAyNlxuLVx0XHRcdCAgICBsaXN0X2VtcHR5KFx1MDAyNnRlLVx1MDAzZXNldC1cdTAwM2VwZW5kaW5nX3VwZGF0ZSkpIHtcbi1cdFx0XHRcdGxpc3RfYWRkX3RhaWwoXHUwMDI2dGUtXHUwMDNlc2V0LVx1MDAzZXBlbmRpbmdfdXBkYXRlLFxuLVx0XHRcdFx0XHQgICAgICBcdTAwMjZzZXRfdXBkYXRlX2xpc3QpO1xuLVx0XHRcdH1cbiBcdFx0XHRuZnRfdHJhbnNfZGVzdHJveSh0cmFucyk7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgTkZUX01TR19ORVdPQko6XG5AQCAtMTE0NTgsNyArMTE0NzQsNyBAQCBzdGF0aWMgaW50IF9fbmZfdGFibGVzX2Fib3J0KHN0cnVjdCBuZXQgKm5ldCwgZW51bSBuZm5sX2Fib3J0X2FjdGlvbiBhY3Rpb24pXG4gXG4gXHRXQVJOX09OX09OQ0UoIWxpc3RfZW1wdHkoXHUwMDI2bmZ0X25ldC1cdTAwM2Vjb21taXRfc2V0X2xpc3QpKTtcbiBcbi1cdG5mdF9zZXRfYWJvcnRfdXBkYXRlKFx1MDAyNnNldF91cGRhdGVfbGlzdCk7XG4rXHRuZnRfc2V0X2Fib3J0X3VwZGF0ZShuZnRfbmV0KTtcbiBcbiBcdHN5bmNocm9uaXplX3JjdSgpO1xuIFxuQEAgLTEyMTQyLDYgKzEyMTU4LDcgQEAgc3RhdGljIGludCBfX25ldF9pbml0IG5mX3RhYmxlc19pbml0X25ldChzdHJ1Y3QgbmV0ICpuZXQpXG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZuZnRfbmV0LVx1MDAzZWJpbmRpbmdfbGlzdCk7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZuZnRfbmV0LVx1MDAzZW1vZHVsZV9saXN0KTtcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNm5mdF9uZXQtXHUwMDNlbm90aWZ5X2xpc3QpO1xuK1x0SU5JVF9MSVNUX0hFQUQoXHUwMDI2bmZ0X25ldC1cdTAwM2VzZXRfdXBkYXRlX2xpc3QpO1xuIFx0bXV0ZXhfaW5pdChcdTAwMjZuZnRfbmV0LVx1MDAzZWNvbW1pdF9tdXRleCk7XG4gXHRuZXQtXHUwMDNlbmZ0LmJhc2Vfc2VxID0gMTtcbiBcdG5mdF9uZXQtXHUwMDNlZ2Nfc2VxID0gMDtcbkBAIC0xMjE4Niw2ICsxMjIwMyw3IEBAIHN0YXRpYyB2b2lkIF9fbmV0X2V4aXQgbmZfdGFibGVzX2V4aXRfbmV0KHN0cnVjdCBuZXQgKm5ldClcbiBcdFdBUk5fT05fT05DRSghbGlzdF9lbXB0eShcdTAwMjZuZnRfbmV0LVx1MDAzZW1vZHVsZV9saXN0KSk7XG4gXHRXQVJOX09OX09OQ0UoIWxpc3RfZW1wdHkoXHUwMDI2bmZ0X25ldC1cdTAwM2Vub3RpZnlfbGlzdCkpO1xuIFx0V0FSTl9PTl9PTkNFKCFsaXN0X2VtcHR5KFx1MDAyNm5mdF9uZXQtXHUwMDNlZGVzdHJveV9saXN0KSk7XG4rXHRXQVJOX09OX09OQ0UoIWxpc3RfZW1wdHkoXHUwMDI2bmZ0X25ldC1cdTAwM2VzZXRfdXBkYXRlX2xpc3QpKTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgbmZfdGFibGVzX2V4aXRfYmF0Y2goc3RydWN0IGxpc3RfaGVhZCAqbmV0X2V4aXRfbGlzdClcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDIzOjI2OjI4LjQ0ODU1NzMyMloiLCJTZXEiOjIzLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMzQ2MzIwNjY0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiB0aGUgTmV0ZmlsdGVyIFRhYmxlcyBDb21taXQvQWJvcnQgUGF0Y2gqKlxuXG5Pa2F5LCBoZXJlJ3Mgd2hhdCBJJ3ZlIGdvdCBhZnRlciByZXZpZXdpbmcgdGhpcyBwYXRjaC4gSXQncyBmb2N1c2VkIG9uIHJlZmFjdG9yaW5nIHRoZSBjb21taXQgYW5kIGFib3J0IGxvZ2ljIHdpdGhpbiB0aGUgbmV0ZmlsdGVyIHRhYmxlcyBjb2RlLiBUaGUgY29yZSBjaGFuZ2UgaXMgdGhlIHJlbG9jYXRpb24gb2YgdGhlIGBzZXRfdXBkYXRlX2xpc3RgLiBQcmV2aW91c2x5LCB0aGlzIGxpc3Qgd2FzIGEgbG9jYWwgdmFyaWFibGUgd2l0aGluIGBuZl90YWJsZXNfY29tbWl0YCBhbmQgYF9fbmZfdGFibGVzX2Fib3J0YC4gTm93LCBpdCdzIGJlZW4gbW92ZWQgdG8gdGhlIGBzdHJ1Y3QgbmZ0YWJsZXNfcGVybmV0YCBzdHJ1Y3R1cmUsIG1ha2luZyBpdCBhIHBlci1uZXQgbmFtZXNwYWNlIHJlc291cmNlLlxuXG5UaGUgaW1wbGljYXRpb25zIGFyZSBjbGVhcjogdGhpcyBsaXN0LCB3aGljaCB0cmFja3Mgc2V0cyBwZW5kaW5nIHVwZGF0ZXMsIGNhbiBub3cgYmUgcG9wdWxhdGVkIGR1cmluZyB0aGUgdHJhbnNhY3Rpb24gcHJlcGFyYXRpb24gc3RhZ2UgYW5kIGlzIHRoZW4gcHJvY2Vzc2VkIGR1cmluZyBjb21taXQgb3IgYWJvcnQuIFRoaXMgbGlzdCBtYW5hZ2VtZW50IGFsc28gY2hhbmdlcyBob3cgYE5GVF9NU0dfREVMU0VURUxFTWAgbWVzc2FnZXMgYXJlIGhhbmRsZWQsIHdpdGggYW4gZWFybGllciBjYWxsIHRvIGBuZnRfc2V0X2NvbW1pdF91cGRhdGVgLiBUaGlzIGxpa2VseSBhbHRlcnMgdGhlIHByb2Nlc3Npbmcgb3JkZXIgb2YgdGhlc2UgbWVzc2FnZXMgd2l0aGluIHRoZSBjb21taXQgcHJvY2Vzcy5cblxuTXkgZXhwZXJ0IGludHVpdGlvbiwgY29tYmluZWQgd2l0aCB0aGUgY29udGV4dCwgc3Ryb25nbHkgc3VnZ2VzdHMgdGhpcyBpcyBhYm91dCBmaXhpbmcgYSByYWNlIGNvbmRpdGlvbiwgYSB1c2UtYWZ0ZXItZnJlZSBzY2VuYXJpbywgb3IgYSBzaW1pbGFyIG9yZGVyaW5nIGJ1ZyByZWxhdGVkIHRvIHNldCBlbGVtZW50IHVwZGF0ZXMgYW5kIHRoZSBjb21taXQvYWJvcnQgcHJvY2Vzcy4gVGhpcyBpc24ndCBhYm91dCBpbnRyb2R1Y2luZyBuZXcgZmVhdHVyZXM7IGl0J3MgYSBjcml0aWNhbCBidWcgZml4LlxuXG5Ob3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb24gZm9yIG15IGV2YWx1YXRpb24gaXMgdW5pbml0aWFsaXplZCBtZW1vcnkuIERvZXMgdGhpcyBwYXRjaCBpbnRyb2R1Y2UgYSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHJlYWQgb3IgdXNlZCBpbiBjb250cm9sIGZsb3c/IEFmdGVyIGEgY2FyZWZ1bCBleGFtaW5hdGlvbiwgSSdtIGNvbmZpZGVudCB0aGUgYW5zd2VyIGlzIG5vLiBUaGlzIHBhdGNoIGRvZXNuJ3QgaW50cm9kdWNlIGFueSBuZXcgc3RydWN0dXJlcyB0aGF0IGFyZSBwYXNzZWQgdG8gdXNlciBzcGFjZS4gSXQgZG9lc24ndCB0b3VjaCBtZW1vcnkgYWxsb2NhdGlvbiBvciB0aGUgZmllbGRzIG9mIGFueSBkYXRhIHN0cnVjdHVyZXMgaW4gYSB3YXkgdGhhdCB3b3VsZCBpbnRyb2R1Y2UgYW4gaW5mby1sZWFrLiBJdCdzIHB1cmVseSBhYm91dCBjb250cm9sIGZsb3cgYW5kIGxpc3QgbWFuYWdlbWVudC4gVGhlIGBzZXRfdXBkYXRlX2xpc3RgIGlzIGp1c3QgYSBsaXN0IGhlYWQuIFRoZSBmYWN0IHRoYXQgdGhlIGxpc3QgaXMgbW92ZWQgdG8gYSBwZXItbmV0IHN0cnVjdHVyZSBkb2Vzbid0IGNoYW5nZSBhbnl0aGluZyBhYm91dCBob3cgaXRzIGVsZW1lbnRzIGFyZSBpbml0aWFsaXplZCwgbm9yIGRvZXMgaXQgbWFrZSBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHZ1bG5lcmFiaWxpdGllcy5cblxuU28sIHdoaWxlIHRoaXMgcGF0Y2ggaXMgY3J1Y2lhbCBmb3IgZml4aW5nIHRoZSBidWcgaXQgYWRkcmVzc2VzLCBpdCBkb2Vzbid0IG5lY2Vzc2l0YXRlIGEgc3BlY2lhbGl6ZWQgS01TQU4gKEtlcm5lbCBNZW1vcnkgU2FuaXRpemVyKSBmdXp6aW5nIHNlc3Npb24uIFRoZSBzdGFuZGFyZCBLQVNBTiAoS2VybmVsIEFkZHJlc3MgU2FuaXRpemVyKSBhbmQgc3RhbmRhcmQgZGVidWcgb3B0aW9ucyAobGlrZSBgQ09ORklHX0RFQlVHX0xJU1RgKSBhcmUgbW9yZSB0aGFuIGNhcGFibGUgb2YgY2F0Y2hpbmcgYW55IHVzZS1hZnRlci1mcmVlLCBsaXN0IGNvcnJ1cHRpb24sIG9yIHJlbGF0ZWQgbWVtb3J5IGVycm9ycyB0aGF0IG1pZ2h0IGFyaXNlIGZyb20gdGhlc2UgY2hhbmdlcy4gU3RhbmRhcmQgZGVidWdnaW5nIHRvb2xzIGFyZSBzdWZmaWNpZW50LiBJIGNhbiByZWx5IG9uIHRob3NlLiBJIGRvIG5vdCBzZWUgYW55IG5ldyBpbmZvcm1hdGlvbiBsZWFrcywgd2hpY2ggaXMgZ29vZC5cblxuSSdtIHJlYWR5IHRvIG1vdmUgb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ3NzcsIk91dHB1dFRva2VucyI6MjkyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTc3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMjM6MjY6NTEuOTExNzY2OTgyWiIsIlNlcSI6MjQsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQyMzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZWZhY3RvcnMgdGhlIHRyYW5zYWN0aW9uIGNvbW1pdCBhbmQgYWJvcnQgbG9naWMgaW4gbmV0ZmlsdGVyIHRhYmxlcyAobmZfdGFibGVzKS4gSXQgbW92ZXMgdGhlIGBzZXRfdXBkYXRlX2xpc3RgIGZyb20gYmVpbmcgYSBsb2NhbCB2YXJpYWJsZSBpbiBgbmZfdGFibGVzX2NvbW1pdGAgYW5kIGBfX25mX3RhYmxlc19hYm9ydGAgdG8gYSBwZXItbmV0IG5hbWVzcGFjZSBzdHJ1Y3R1cmUgKGBzdHJ1Y3QgbmZ0YWJsZXNfcGVybmV0YCkuIEl0IGFsc28gYWRqdXN0cyB0aGUgb3JkZXIgb2Ygb3BlcmF0aW9ucyBkdXJpbmcgdGhlIGNvbW1pdCBwaGFzZSwgc3BlY2lmaWNhbGx5IGNhbGxpbmcgYG5mdF9zZXRfY29tbWl0X3VwZGF0ZWAgZWFybGllciBhbmQgbW9kaWZ5aW5nIGhvdyBgTkZUX01TR19ERUxTRVRFTEVNYCBtZXNzYWdlcyBhcmUgcHJvY2Vzc2VkIGFuZCBub3RpZmllZC5cXG5cXG5UaGVzZSBjaGFuZ2VzIGFyZSBwdXJlbHkgcmVsYXRlZCB0byBjb250cm9sIGZsb3csIGxpc3QgbWFuYWdlbWVudCwgYW5kIHRoZSBuZXRmaWx0ZXIgdHJhbnNhY3Rpb24gc3RhdGUgbWFjaGluZSAobGlrZWx5IHRvIGZpeCBhIHJhY2UgY29uZGl0aW9uLCB1c2UtYWZ0ZXItZnJlZSwgb3Igb3JkZXJpbmcgaXNzdWUpLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgYXJlIGNvcGllZCB0byB1c2VyIHNwYWNlLCBub3IgZG9lcyBpdCBtb2RpZnkgYnVmZmVyIGFsbG9jYXRpb25zLCBib3VuZHMgY2hlY2tpbmcsIG9yIGluaXRpYWxpemF0aW9uIGxvZ2ljIGluIGEgd2F5IHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQga2VybmVsIG1lbW9yeSAoaW5mby1sZWFrcykgb3IgY2F1c2UgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gYmUgdXNlZCBpbiBjb250cm9sIGZsb3cuXFxuXFxuQW55IGJ1Z3MgaW50cm9kdWNlZCBvciBmaXhlZCBieSB0aGlzIHBhdGNoIChzdWNoIGFzIHVzZS1hZnRlci1mcmVlLCBkb3VibGUtZnJlZSwgb3IgbGlzdCBjb3JydXB0aW9uKSB3b3VsZCBiZSByZWxpYWJseSBkZXRlY3RlZCBieSBzdGFuZGFyZCBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIGRlYnVnIG9wdGlvbnMgKGxpa2UgYENPTkZJR19ERUJVR19MSVNUYCkuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBqdXN0aWZpZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVmYWN0b3JzIHRoZSB0cmFuc2FjdGlvbiBjb21taXQgYW5kIGFib3J0IGxvZ2ljIGluIG5ldGZpbHRlciB0YWJsZXMgKG5mX3RhYmxlcykuIEl0IG1vdmVzIHRoZSBgc2V0X3VwZGF0ZV9saXN0YCBmcm9tIGJlaW5nIGEgbG9jYWwgdmFyaWFibGUgaW4gYG5mX3RhYmxlc19jb21taXRgIGFuZCBgX19uZl90YWJsZXNfYWJvcnRgIHRvIGEgcGVyLW5ldCBuYW1lc3BhY2Ugc3RydWN0dXJlIChgc3RydWN0IG5mdGFibGVzX3Blcm5ldGApLiBJdCBhbHNvIGFkanVzdHMgdGhlIG9yZGVyIG9mIG9wZXJhdGlvbnMgZHVyaW5nIHRoZSBjb21taXQgcGhhc2UsIHNwZWNpZmljYWxseSBjYWxsaW5nIGBuZnRfc2V0X2NvbW1pdF91cGRhdGVgIGVhcmxpZXIgYW5kIG1vZGlmeWluZyBob3cgYE5GVF9NU0dfREVMU0VURUxFTWAgbWVzc2FnZXMgYXJlIHByb2Nlc3NlZCBhbmQgbm90aWZpZWQuXFxuXFxuVGhlc2UgY2hhbmdlcyBhcmUgcHVyZWx5IHJlbGF0ZWQgdG8gY29udHJvbCBmbG93LCBsaXN0IG1hbmFnZW1lbnQsIGFuZCB0aGUgbmV0ZmlsdGVyIHRyYW5zYWN0aW9uIHN0YXRlIG1hY2hpbmUgKGxpa2VseSB0byBmaXggYSByYWNlIGNvbmRpdGlvbiwgdXNlLWFmdGVyLWZyZWUsIG9yIG9yZGVyaW5nIGlzc3VlKS4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcyB0aGF0IGFyZSBjb3BpZWQgdG8gdXNlciBzcGFjZSwgbm9yIGRvZXMgaXQgbW9kaWZ5IGJ1ZmZlciBhbGxvY2F0aW9ucywgYm91bmRzIGNoZWNraW5nLCBvciBpbml0aWFsaXphdGlvbiBsb2dpYyBpbiBhIHdheSB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIGtlcm5lbCBtZW1vcnkgKGluZm8tbGVha3MpIG9yIGNhdXNlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIGJlIHVzZWQgaW4gY29udHJvbCBmbG93LlxcblxcbkFueSBidWdzIGludHJvZHVjZWQgb3IgZml4ZWQgYnkgdGhpcyBwYXRjaCAoc3VjaCBhcyB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlLWZyZWUsIG9yIGxpc3QgY29ycnVwdGlvbikgd291bGQgYmUgcmVsaWFibHkgZGV0ZWN0ZWQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBkZWJ1ZyBvcHRpb25zIChsaWtlIGBDT05GSUdfREVCVUdfTElTVGApLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QganVzdGlmaWVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowlrmpm[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-12 23:07:10 +0000 UTC FinishedAt: 2026-08-12 23:26:53 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "7b53449540502cb21b32bca62a6258e22cd97bbe", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_TABLES" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "7b53449540502cb21b32bca62a6258e22cd97bbe", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_TABLES" ], "series_id": "4fcd9f88-13e9-4a38-93f9-55be3132f026" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "nf_tables_commit", "nf_tables_abort", "nf_tables_newsetelem", "nf_tables_delsetelem" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDIzOjI1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX1RBQkxFUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25mX3RhYmxlc19jb21taXQmIzM0OywKICAgICYjMzQ7bmZfdGFibGVzX2Fib3J0JiMzNDssCiAgICAmIzM0O25mX3RhYmxlc19uZXdzZXRlbGVtJiMzNDssCiAgICAmIzM0O25mX3RhYmxlc19kZWxzZXRlbGVtJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVmYWN0b3JzIHRoZSB0cmFuc2FjdGlvbiBjb21taXQgYW5kIGFib3J0IGxvZ2ljIGluIG5ldGZpbHRlciB0YWJsZXMgKG5mX3RhYmxlcykuIEl0IG1vdmVzIHRoZSBgc2V0X3VwZGF0ZV9saXN0YCBmcm9tIGJlaW5nIGEgbG9jYWwgdmFyaWFibGUgaW4gYG5mX3RhYmxlc19jb21taXRgIGFuZCBgX19uZl90YWJsZXNfYWJvcnRgIHRvIGEgcGVyLW5ldCBuYW1lc3BhY2Ugc3RydWN0dXJlIChgc3RydWN0IG5mdGFibGVzX3Blcm5ldGApLiBJdCBhbHNvIGFkanVzdHMgdGhlIG9yZGVyIG9mIG9wZXJhdGlvbnMgZHVyaW5nIHRoZSBjb21taXQgcGhhc2UsIHNwZWNpZmljYWxseSBjYWxsaW5nIGBuZnRfc2V0X2NvbW1pdF91cGRhdGVgIGVhcmxpZXIgYW5kIG1vZGlmeWluZyBob3cgYE5GVF9NU0dfREVMU0VURUxFTWAgbWVzc2FnZXMgYXJlIHByb2Nlc3NlZCBhbmQgbm90aWZpZWQuXG5cblRoZXNlIGNoYW5nZXMgYXJlIHB1cmVseSByZWxhdGVkIHRvIGNvbnRyb2wgZmxvdywgbGlzdCBtYW5hZ2VtZW50LCBhbmQgdGhlIG5ldGZpbHRlciB0cmFuc2FjdGlvbiBzdGF0ZSBtYWNoaW5lIChsaWtlbHkgdG8gZml4IGEgcmFjZSBjb25kaXRpb24sIHVzZS1hZnRlci1mcmVlLCBvciBvcmRlcmluZyBpc3N1ZSkuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMgdGhhdCBhcmUgY29waWVkIHRvIHVzZXIgc3BhY2UsIG5vciBkb2VzIGl0IG1vZGlmeSBidWZmZXIgYWxsb2NhdGlvbnMsIGJvdW5kcyBjaGVja2luZywgb3IgaW5pdGlhbGl6YXRpb24gbG9naWMgaW4gYSB3YXkgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBrZXJuZWwgbWVtb3J5IChpbmZvLWxlYWtzKSBvciBjYXVzZSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byBiZSB1c2VkIGluIGNvbnRyb2wgZmxvdy5cblxuQW55IGJ1Z3MgaW50cm9kdWNlZCBvciBmaXhlZCBieSB0aGlzIHBhdGNoIChzdWNoIGFzIHVzZS1hZnRlci1mcmVlLCBkb3VibGUtZnJlZSwgb3IgbGlzdCBjb3JydXB0aW9uKSB3b3VsZCBiZSByZWxpYWJseSBkZXRlY3RlZCBieSBzdGFuZGFyZCBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIGRlYnVnIG9wdGlvbnMgKGxpa2UgYENPTkZJR19ERUJVR19MSVNUYCkuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBqdXN0aWZpZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRmaWx0ZXIgbmZfdGFibGVzIEFQSSB0byBpbnRyb2R1Y2UgYSBgc2V0X3VwZGF0ZV9saXN0YCBpbiBgc3RydWN0IG5mdGFibGVzX3Blcm5ldGAuIEl0IGNoYW5nZXMgaG93IHNldCBlbGVtZW50cyBhcmUgYWRkZWQsIHJlbW92ZWQsIGFuZCBhYm9ydGVkIGR1cmluZyBuZXRsaW5rIHRyYW5zYWN0aW9ucy4gU3BlY2lmaWNhbGx5LCBpdCBtb2RpZmllcyBgbmZ0X3RyYW5zX2NvbW1pdF9saXN0X2FkZF9lbGVtYCwgYG5mdF9zZXRfY29tbWl0X3VwZGF0ZWAsIGBuZl90YWJsZXNfY29tbWl0YCwgYW5kIGBfX25mX3RhYmxlc19hYm9ydGAgdG8gaGFuZGxlIHRoZSBuZXcgbGlzdCBhbmQgZW5zdXJlIHByb3BlciBvcmRlcmluZyBvZiBzZXQgdXBkYXRlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldGZpbHRlciBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluayBzb2NrZXRzIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIHByZXZlbnQgcmVncmVzc2lvbnMgb3IgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDIzOjI1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMGQ5MzEyYTBkOGRhNmNlODJlMDUzNjg0MzlhOTlmN2E2MGQyZjkxY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDEyIDIzOjI1OjMyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L25ldGZpbHRlci9uZl90YWJsZXMuaCBiL2luY2x1ZGUvbmV0L25ldGZpbHRlci9uZl90YWJsZXMuaFxuaW5kZXggM2JlNjEyMTQ1YzEzMC4uMjM4ZjZlY2I5MGU5OSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L25ldGZpbHRlci9uZl90YWJsZXMuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlcy5oXG5AQCAtMTk0OSw2ICYjNDM7MTk0OSw3IEBAIHN0cnVjdCBuZnRhYmxlc19wZXJuZXQge1xuIFx0c3RydWN0IGxpc3RfaGVhZFx0YmluZGluZ19saXN0O1xuIFx0c3RydWN0IGxpc3RfaGVhZFx0bW9kdWxlX2xpc3Q7XG4gXHRzdHJ1Y3QgbGlzdF9oZWFkXHRub3RpZnlfbGlzdDtcbiYjNDM7XHRzdHJ1Y3QgbGlzdF9oZWFkXHRzZXRfdXBkYXRlX2xpc3Q7XG4gXHRzdHJ1Y3QgbXV0ZXhcdFx0Y29tbWl0X211dGV4O1xuIFx0dTY0XHRcdFx0dGFibGVfaGFuZGxlO1xuIFx0dTY0XHRcdFx0dHN0YW1wO1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jIGIvbmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmNcbmluZGV4IGFmMzU3ZjZjNTA3MGIuLjVjNGY2YzM1NDU5NTAgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmNcbkBAIC01OTUsMTAgJiM0Mzs1OTUsMTUgQEAgc3RhdGljIHZvaWQgbmZ0X3RyYW5zX2NvbW1pdF9saXN0X2FkZF90YWlsKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5mdF90cmFucyAqdHJcbiBzdGF0aWMgdm9pZCBuZnRfdHJhbnNfY29tbWl0X2xpc3RfYWRkX2VsZW0oc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmZ0X3RyYW5zICp0cmFucylcbiB7XG4gXHRzdHJ1Y3QgbmZ0YWJsZXNfcGVybmV0ICpuZnRfbmV0ID0gbmZ0X3Blcm5ldChuZXQpO1xuJiM0MztcdHN0cnVjdCBuZnRfdHJhbnNfZWxlbSAqdGU7XG4gXG4gXHRXQVJOX09OX09OQ0UodHJhbnMtXHUwMDNlbXNnX3R5cGUgIT0gTkZUX01TR19ORVdTRVRFTEVNIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgIHRyYW5zLVx1MDAzZW1zZ190eXBlICE9IE5GVF9NU0dfREVMU0VURUxFTSk7XG4gXG4mIzQzO1x0dGUgPSBuZnRfdHJhbnNfY29udGFpbmVyX2VsZW0odHJhbnMpO1xuJiM0MztcdGlmICh0ZS1cdTAwM2VzZXQtXHUwMDNlb3BzLVx1MDAzZWNvbW1pdCBcdTAwMjZcdTAwMjYgbGlzdF9lbXB0eShcdTAwMjZ0ZS1cdTAwM2VzZXQtXHUwMDNlcGVuZGluZ191cGRhdGUpKVxuJiM0MztcdFx0bGlzdF9hZGRfdGFpbChcdTAwMjZ0ZS1cdTAwM2VzZXQtXHUwMDNlcGVuZGluZ191cGRhdGUsIFx1MDAyNm5mdF9uZXQtXHUwMDNlc2V0X3VwZGF0ZV9saXN0KTtcbiYjNDM7XG4gXHRpZiAobmZ0X3RyYW5zX3RyeV9jb2xsYXBzZShuZnRfbmV0LCB0cmFucykpIHtcbiBcdFx0a2ZyZWUodHJhbnMpO1xuIFx0XHRyZXR1cm47XG5AQCAtNzIwNSw2ICYjNDM7NzIxMCwyMCBAQCBzdGF0aWMgdm9pZCBuZnRfdHJhbnNfZWxlbXNfcmVtb3ZlKGNvbnN0IHN0cnVjdCBuZnRfY3R4ICpjdHgsXG4gXHR9XG4gfVxuIFxuJiM0MztzdGF0aWMgdm9pZCBuZnRfdHJhbnNfZWxlbXNfcmVtb3ZlX25vdGlmeShjb25zdCBzdHJ1Y3QgbmZ0X2N0eCAqY3R4LFxuJiM0MztcdFx0XHRcdFx0ICBjb25zdCBzdHJ1Y3QgbmZ0X3RyYW5zX2VsZW0gKnRlKVxuJiM0Mzt7XG4mIzQzO1x0aW50IGk7XG4mIzQzO1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHRlLVx1MDAzZW5lbGVtczsgaSYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdFdBUk5fT05fT05DRSh0ZS1cdTAwM2VlbGVtc1tpXS51cGRhdGUpO1xuJiM0MztcbiYjNDM7XHRcdG5mX3RhYmxlc19zZXRlbGVtX25vdGlmeShjdHgsIHRlLVx1MDAzZXNldCxcbiYjNDM7XHRcdFx0XHRcdCB0ZS1cdTAwM2VlbGVtc1tpXS5wcml2LFxuJiM0MztcdFx0XHRcdFx0IHRlLVx1MDAzZW5mdF90cmFucy5tc2dfdHlwZSk7XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBib29sIG5mdF9zZXRlbGVtX3ZhbGlkX2tleV9lbmQoY29uc3Qgc3RydWN0IG5mdF9zZXQgKnNldCxcbiBcdFx0XHRcdCAgICAgIHN0cnVjdCBubGF0dHIgKipubGEsIHUzMiBmbGFncylcbiB7XG5AQCAtMTA4NDgsMTEgJiM0MzsxMDg2NywzMSBAQCBzdGF0aWMgdm9pZCBuZl90YWJsZXNfY29tbWl0X2F1ZGl0X2xvZyhzdHJ1Y3QgbGlzdF9oZWFkICphZGwsIHUzMiBnZW5lcmF0aW9uKVxuIFx0fVxuIH1cbiBcbi1zdGF0aWMgdm9pZCBuZnRfc2V0X2NvbW1pdF91cGRhdGUoc3RydWN0IGxpc3RfaGVhZCAqc2V0X3VwZGF0ZV9saXN0KVxuJiM0MztzdGF0aWMgdm9pZCBuZnRfc2V0X2NvbW1pdF91cGRhdGUoc3RydWN0IG5mdF9jdHggKmN0eCxcbiYjNDM7XHRcdFx0XHQgIHN0cnVjdCBuZnRhYmxlc19wZXJuZXQgKm5mdF9uZXQpXG4ge1xuIFx0c3RydWN0IG5mdF9zZXQgKnNldCwgKm5leHQ7XG4mIzQzO1x0c3RydWN0IG5mdF90cmFuc19lbGVtICp0ZTtcbiYjNDM7XHRzdHJ1Y3QgbmZ0X3RyYW5zICp0cmFucztcbiBcbi1cdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShzZXQsIG5leHQsIHNldF91cGRhdGVfbGlzdCwgcGVuZGluZ191cGRhdGUpIHtcbiYjNDM7XHRpZiAobGlzdF9lbXB0eShcdTAwMjZuZnRfbmV0LVx1MDAzZXNldF91cGRhdGVfbGlzdCkpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuJiM0MztcdGxpc3RfZm9yX2VhY2hfZW50cnkodHJhbnMsIFx1MDAyNm5mdF9uZXQtXHUwMDNlY29tbWl0X2xpc3QsIGxpc3QpIHtcbiYjNDM7XHRcdG5mdF9jdHhfdXBkYXRlKGN0eCwgdHJhbnMpO1xuJiM0MztcbiYjNDM7XHRcdHN3aXRjaCAodHJhbnMtXHUwMDNlbXNnX3R5cGUpIHtcbiYjNDM7XHRcdGNhc2UgTkZUX01TR19ERUxTRVRFTEVNOlxuJiM0MztcdFx0XHR0ZSA9IG5mdF90cmFuc19jb250YWluZXJfZWxlbSh0cmFucyk7XG4mIzQzO1x0XHRcdGlmICghdGUtXHUwMDNlc2V0LVx1MDAzZW9wcy1cdTAwM2Vjb21taXQpXG4mIzQzO1x0XHRcdFx0YnJlYWs7XG4mIzQzO1xuJiM0MztcdFx0XHRuZnRfdHJhbnNfZWxlbXNfcmVtb3ZlKGN0eCwgdGUpO1xuJiM0MztcdFx0XHRicmVhaztcbiYjNDM7XHRcdH1cbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShzZXQsIG5leHQsIFx1MDAyNm5mdF9uZXQtXHUwMDNlc2V0X3VwZGF0ZV9saXN0LCBwZW5kaW5nX3VwZGF0ZSkge1xuIFx0XHRsaXN0X2RlbF9pbml0KFx1MDAyNnNldC1cdTAwM2VwZW5kaW5nX3VwZGF0ZSk7XG4gXG4gXHRcdGlmICghc2V0LVx1MDAzZW9wcy1cdTAwM2Vjb21taXQgfHwgc2V0LVx1MDAzZWRlYWQpXG5AQCAtMTA4ODUsNyAmIzQzOzEwOTI0LDYgQEAgc3RhdGljIGludCBuZl90YWJsZXNfY29tbWl0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdHN0cnVjdCBuZnRfdHJhbnNfYmluZGluZyAqdHJhbnNfYmluZGluZztcbiBcdHN0cnVjdCBuZnRfdHJhbnMgKnRyYW5zLCAqbmV4dDtcbiBcdHVuc2lnbmVkIGludCBiYXNlX3NlcSwgZ2Nfc2VxO1xuLVx0TElTVF9IRUFEKHNldF91cGRhdGVfbGlzdCk7XG4gXHRzdHJ1Y3QgbmZ0X3RyYW5zX2VsZW0gKnRlO1xuIFx0c3RydWN0IG5mdF9jaGFpbiAqY2hhaW47XG4gXHRzdHJ1Y3QgbmZ0X3RhYmxlICp0YWJsZTtcbkBAIC0xMDk2MCw2ICYjNDM7MTA5OTgsOCBAQCBzdGF0aWMgaW50IG5mX3RhYmxlc19jb21taXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0fVxuIFxuIFx0Lyogc3RlcCAyLiAgTWFrZSBydWxlc19nZW5fWCB2aXNpYmxlIHRvIHBhY2tldCBwYXRoICovXG4mIzQzO1x0bmZ0X3NldF9jb21taXRfdXBkYXRlKFx1MDAyNmN0eCwgbmZ0X25ldCk7XG4mIzQzO1xuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeSh0YWJsZSwgXHUwMDI2bmZ0X25ldC1cdTAwM2V0YWJsZXMsIGxpc3QpIHtcbiBcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShjaGFpbiwgXHUwMDI2dGFibGUtXHUwMDNlY2hhaW5zLCBsaXN0KVxuIFx0XHRcdG5mX3RhYmxlc19jb21taXRfY2hhaW4obmV0LCBjaGFpbik7XG5AQCAtMTEwOTEsMjcgJiM0MzsxMTEzMSwxNiBAQCBzdGF0aWMgaW50IG5mX3RhYmxlc19jb21taXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0XHRcdGJyZWFrO1xuIFx0XHRjYXNlIE5GVF9NU0dfTkVXU0VURUxFTTpcbiBcdFx0XHR0ZSA9IG5mdF90cmFuc19jb250YWluZXJfZWxlbSh0cmFucyk7XG4tXG4gXHRcdFx0bmZ0X3RyYW5zX2VsZW1zX2FkZChcdTAwMjZjdHgsIHRlKTtcbi1cbi1cdFx0XHRpZiAodGUtXHUwMDNlc2V0LVx1MDAzZW9wcy1cdTAwM2Vjb21taXQgXHUwMDI2XHUwMDI2XG4tXHRcdFx0ICAgIGxpc3RfZW1wdHkoXHUwMDI2dGUtXHUwMDNlc2V0LVx1MDAzZXBlbmRpbmdfdXBkYXRlKSkge1xuLVx0XHRcdFx0bGlzdF9hZGRfdGFpbChcdTAwMjZ0ZS1cdTAwM2VzZXQtXHUwMDNlcGVuZGluZ191cGRhdGUsXG4tXHRcdFx0XHRcdCAgICAgIFx1MDAyNnNldF91cGRhdGVfbGlzdCk7XG4tXHRcdFx0fVxuIFx0XHRcdG5mdF90cmFuc19kZXN0cm95KHRyYW5zKTtcbiBcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSBORlRfTVNHX0RFTFNFVEVMRU06XG4gXHRcdGNhc2UgTkZUX01TR19ERVNUUk9ZU0VURUxFTTpcbiBcdFx0XHR0ZSA9IG5mdF90cmFuc19jb250YWluZXJfZWxlbSh0cmFucyk7XG4tXG4tXHRcdFx0bmZ0X3RyYW5zX2VsZW1zX3JlbW92ZShcdTAwMjZjdHgsIHRlKTtcbi1cbi1cdFx0XHRpZiAodGUtXHUwMDNlc2V0LVx1MDAzZW9wcy1cdTAwM2Vjb21taXQgXHUwMDI2XHUwMDI2XG4tXHRcdFx0ICAgIGxpc3RfZW1wdHkoXHUwMDI2dGUtXHUwMDNlc2V0LVx1MDAzZXBlbmRpbmdfdXBkYXRlKSkge1xuLVx0XHRcdFx0bGlzdF9hZGRfdGFpbChcdTAwMjZ0ZS1cdTAwM2VzZXQtXHUwMDNlcGVuZGluZ191cGRhdGUsXG4tXHRcdFx0XHRcdCAgICAgIFx1MDAyNnNldF91cGRhdGVfbGlzdCk7XG4tXHRcdFx0fVxuJiM0MztcdFx0XHRpZiAodGUtXHUwMDNlc2V0LVx1MDAzZW9wcy1cdTAwM2Vjb21taXQpXG4mIzQzO1x0XHRcdFx0bmZ0X3RyYW5zX2VsZW1zX3JlbW92ZV9ub3RpZnkoXHUwMDI2Y3R4LCB0ZSk7XG4mIzQzO1x0XHRcdGVsc2VcbiYjNDM7XHRcdFx0XHRuZnRfdHJhbnNfZWxlbXNfcmVtb3ZlKFx1MDAyNmN0eCwgdGUpO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHRjYXNlIE5GVF9NU0dfTkVXT0JKOlxuIFx0XHRcdGlmIChuZnRfdHJhbnNfb2JqX3VwZGF0ZSh0cmFucykpIHtcbkBAIC0xMTE4MCw4ICYjNDM7MTEyMDksNiBAQCBzdGF0aWMgaW50IG5mX3RhYmxlc19jb21taXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0XHR9XG4gXHR9XG4gXG4tXHRuZnRfc2V0X2NvbW1pdF91cGRhdGUoXHUwMDI2c2V0X3VwZGF0ZV9saXN0KTtcbi1cbiBcdG5mdF9jb21taXRfbm90aWZ5KG5ldCwgTkVUTElOS19DQihza2IpLnBvcnRpZCk7XG4gXHRuZl90YWJsZXNfZ2VuX25vdGlmeShuZXQsIHNrYiwgTkZUX01TR19ORVdHRU4pO1xuIFx0bmZfdGFibGVzX2NvbW1pdF9hdWRpdF9sb2coXHUwMDI2YWRsLCBuZnRfYmFzZV9zZXEobmV0KSk7XG5AQCAtMTEyNDcsMTEgJiM0MzsxMTI3NCwxMSBAQCBzdGF0aWMgdm9pZCBuZl90YWJsZXNfYWJvcnRfcmVsZWFzZShzdHJ1Y3QgbmZ0X3RyYW5zICp0cmFucylcbiBcdGtmcmVlKHRyYW5zKTtcbiB9XG4gXG4tc3RhdGljIHZvaWQgbmZ0X3NldF9hYm9ydF91cGRhdGUoc3RydWN0IGxpc3RfaGVhZCAqc2V0X3VwZGF0ZV9saXN0KVxuJiM0MztzdGF0aWMgdm9pZCBuZnRfc2V0X2Fib3J0X3VwZGF0ZShzdHJ1Y3QgbmZ0YWJsZXNfcGVybmV0ICpuZnRfbmV0KVxuIHtcbiBcdHN0cnVjdCBuZnRfc2V0ICpzZXQsICpuZXh0O1xuIFxuLVx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHNldCwgbmV4dCwgc2V0X3VwZGF0ZV9saXN0LCBwZW5kaW5nX3VwZGF0ZSkge1xuJiM0MztcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShzZXQsIG5leHQsIFx1MDAyNm5mdF9uZXQtXHUwMDNlc2V0X3VwZGF0ZV9saXN0LCBwZW5kaW5nX3VwZGF0ZSkge1xuIFx0XHRsaXN0X2RlbF9pbml0KFx1MDAyNnNldC1cdTAwM2VwZW5kaW5nX3VwZGF0ZSk7XG4gXG4gXHRcdGlmICghc2V0LVx1MDAzZW9wcy1cdTAwM2VhYm9ydClcbkBAIC0xMTM4NiwzMyAmIzQzOzExNDEzLDIyIEBAIHN0YXRpYyBpbnQgX19uZl90YWJsZXNfYWJvcnQoc3RydWN0IG5ldCAqbmV0LCBlbnVtIG5mbmxfYWJvcnRfYWN0aW9uIGFjdGlvbilcbiBcdFx0XHRuZnRfdHJhbnNfZGVzdHJveSh0cmFucyk7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgTkZUX01TR19ORVdTRVRFTEVNOlxuJiM0MztcdFx0XHR0ZSA9IG5mdF90cmFuc19jb250YWluZXJfZWxlbSh0cmFucyk7XG4gXHRcdFx0aWYgKG5mdF90cmFuc19lbGVtX3NldF9ib3VuZCh0cmFucykpIHtcbiYjNDM7XHRcdFx0XHRsaXN0X2RlbF9pbml0KFx1MDAyNnRlLVx1MDAzZXNldC1cdTAwM2VwZW5kaW5nX3VwZGF0ZSk7XG4gXHRcdFx0XHRuZnRfdHJhbnNfZGVzdHJveSh0cmFucyk7XG4gXHRcdFx0XHRicmVhaztcbiBcdFx0XHR9XG4tXHRcdFx0dGUgPSBuZnRfdHJhbnNfY29udGFpbmVyX2VsZW0odHJhbnMpO1xuIFx0XHRcdGlmICghbmZ0X3RyYW5zX2VsZW1zX25ld19hYm9ydChcdTAwMjZjdHgsIHRlKSkge1xuIFx0XHRcdFx0bmZ0X3RyYW5zX2Rlc3Ryb3kodHJhbnMpO1xuIFx0XHRcdFx0YnJlYWs7XG4gXHRcdFx0fVxuLVxuLVx0XHRcdGlmICh0ZS1cdTAwM2VzZXQtXHUwMDNlb3BzLVx1MDAzZWFib3J0IFx1MDAyNlx1MDAyNlxuLVx0XHRcdCAgICBsaXN0X2VtcHR5KFx1MDAyNnRlLVx1MDAzZXNldC1cdTAwM2VwZW5kaW5nX3VwZGF0ZSkpIHtcbi1cdFx0XHRcdGxpc3RfYWRkX3RhaWwoXHUwMDI2dGUtXHUwMDNlc2V0LVx1MDAzZXBlbmRpbmdfdXBkYXRlLFxuLVx0XHRcdFx0XHQgICAgICBcdTAwMjZzZXRfdXBkYXRlX2xpc3QpO1xuLVx0XHRcdH1cbiBcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSBORlRfTVNHX0RFTFNFVEVMRU06XG4gXHRcdGNhc2UgTkZUX01TR19ERVNUUk9ZU0VURUxFTTpcbiBcdFx0XHR0ZSA9IG5mdF90cmFuc19jb250YWluZXJfZWxlbSh0cmFucyk7XG4gXG4gXHRcdFx0bmZ0X3RyYW5zX2VsZW1zX2Rlc3Ryb3lfYWJvcnQoXHUwMDI2Y3R4LCB0ZSk7XG4tXG4tXHRcdFx0aWYgKHRlLVx1MDAzZXNldC1cdTAwM2VvcHMtXHUwMDNlYWJvcnQgXHUwMDI2XHUwMDI2XG4tXHRcdFx0ICAgIGxpc3RfZW1wdHkoXHUwMDI2dGUtXHUwMDNlc2V0LVx1MDAzZXBlbmRpbmdfdXBkYXRlKSkge1xuLVx0XHRcdFx0bGlzdF9hZGRfdGFpbChcdTAwMjZ0ZS1cdTAwM2VzZXQtXHUwMDNlcGVuZGluZ191cGRhdGUsXG4tXHRcdFx0XHRcdCAgICAgIFx1MDAyNnNldF91cGRhdGVfbGlzdCk7XG4tXHRcdFx0fVxuIFx0XHRcdG5mdF90cmFuc19kZXN0cm95KHRyYW5zKTtcbiBcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSBORlRfTVNHX05FV09CSjpcbkBAIC0xMTQ1OCw3ICYjNDM7MTE0NzQsNyBAQCBzdGF0aWMgaW50IF9fbmZfdGFibGVzX2Fib3J0KHN0cnVjdCBuZXQgKm5ldCwgZW51bSBuZm5sX2Fib3J0X2FjdGlvbiBhY3Rpb24pXG4gXG4gXHRXQVJOX09OX09OQ0UoIWxpc3RfZW1wdHkoXHUwMDI2bmZ0X25ldC1cdTAwM2Vjb21taXRfc2V0X2xpc3QpKTtcbiBcbi1cdG5mdF9zZXRfYWJvcnRfdXBkYXRlKFx1MDAyNnNldF91cGRhdGVfbGlzdCk7XG4mIzQzO1x0bmZ0X3NldF9hYm9ydF91cGRhdGUobmZ0X25ldCk7XG4gXG4gXHRzeW5jaHJvbml6ZV9yY3UoKTtcbiBcbkBAIC0xMjE0Miw2ICYjNDM7MTIxNTgsNyBAQCBzdGF0aWMgaW50IF9fbmV0X2luaXQgbmZfdGFibGVzX2luaXRfbmV0KHN0cnVjdCBuZXQgKm5ldClcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNm5mdF9uZXQtXHUwMDNlYmluZGluZ19saXN0KTtcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNm5mdF9uZXQtXHUwMDNlbW9kdWxlX2xpc3QpO1xuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2bmZ0X25ldC1cdTAwM2Vub3RpZnlfbGlzdCk7XG4mIzQzO1x0SU5JVF9MSVNUX0hFQUQoXHUwMDI2bmZ0X25ldC1cdTAwM2VzZXRfdXBkYXRlX2xpc3QpO1xuIFx0bXV0ZXhfaW5pdChcdTAwMjZuZnRfbmV0LVx1MDAzZWNvbW1pdF9tdXRleCk7XG4gXHRuZXQtXHUwMDNlbmZ0LmJhc2Vfc2VxID0gMTtcbiBcdG5mdF9uZXQtXHUwMDNlZ2Nfc2VxID0gMDtcbkBAIC0xMjE4Niw2ICYjNDM7MTIyMDMsNyBAQCBzdGF0aWMgdm9pZCBfX25ldF9leGl0IG5mX3RhYmxlc19leGl0X25ldChzdHJ1Y3QgbmV0ICpuZXQpXG4gXHRXQVJOX09OX09OQ0UoIWxpc3RfZW1wdHkoXHUwMDI2bmZ0X25ldC1cdTAwM2Vtb2R1bGVfbGlzdCkpO1xuIFx0V0FSTl9PTl9PTkNFKCFsaXN0X2VtcHR5KFx1MDAyNm5mdF9uZXQtXHUwMDNlbm90aWZ5X2xpc3QpKTtcbiBcdFdBUk5fT05fT05DRSghbGlzdF9lbXB0eShcdTAwMjZuZnRfbmV0LVx1MDAzZWRlc3Ryb3lfbGlzdCkpO1xuJiM0MztcdFdBUk5fT05fT05DRSghbGlzdF9lbXB0eShcdTAwMjZuZnRfbmV0LVx1MDAzZXNldF91cGRhdGVfbGlzdCkpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBuZl90YWJsZXNfZXhpdF9iYXRjaChzdHJ1Y3QgbGlzdF9oZWFkICpuZXRfZXhpdF9saXN0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDIzOjI1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORl9UQUJMRVMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZl90YWJsZXNfY29tbWl0JiMzNDssCiAgICAmIzM0O25mX3RhYmxlc19hYm9ydCYjMzQ7LAogICAgJiMzNDtuZl90YWJsZXNfbmV3c2V0ZWxlbSYjMzQ7LAogICAgJiMzNDtuZl90YWJsZXNfZGVsc2V0ZWxlbSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbmV0ZmlsdGVyIG5mX3RhYmxlcyBBUEkgdG8gaW50cm9kdWNlIGEgYHNldF91cGRhdGVfbGlzdGAgaW4gYHN0cnVjdCBuZnRhYmxlc19wZXJuZXRgLiBJdCBjaGFuZ2VzIGhvdyBzZXQgZWxlbWVudHMgYXJlIGFkZGVkLCByZW1vdmVkLCBhbmQgYWJvcnRlZCBkdXJpbmcgbmV0bGluayB0cmFuc2FjdGlvbnMuIFNwZWNpZmljYWxseSwgaXQgbW9kaWZpZXMgYG5mdF90cmFuc19jb21taXRfbGlzdF9hZGRfZWxlbWAsIGBuZnRfc2V0X2NvbW1pdF91cGRhdGVgLCBgbmZfdGFibGVzX2NvbW1pdGAsIGFuZCBgX19uZl90YWJsZXNfYWJvcnRgIHRvIGhhbmRsZSB0aGUgbmV3IGxpc3QgYW5kIGVuc3VyZSBwcm9wZXIgb3JkZXJpbmcgb2Ygc2V0IHVwZGF0ZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXRmaWx0ZXIgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgdmlhIG5ldGxpbmsgc29ja2V0cyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBwcmV2ZW50IHJlZ3Jlc3Npb25zIG9yIG1lbW9yeSBjb3JydXB0aW9uIGlzc3Vlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDBkOTMxMmEwZDhkYTZjZTgyZTA1MzY4NDM5YTk5ZjdhNjBkMmY5MWMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEF1ZyAxMiAyMzoyNTozMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L25ldGZpbHRlci9uZl90YWJsZXMuaCBiL2luY2x1ZGUvbmV0L25ldGZpbHRlci9uZl90YWJsZXMuaAppbmRleCAzYmU2MTIxNDVjMTMwLi4yMzhmNmVjYjkwZTk5IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlcy5oCkBAIC0xOTQ5LDYgJiM0MzsxOTQ5LDcgQEAgc3RydWN0IG5mdGFibGVzX3Blcm5ldCB7CiAJc3RydWN0IGxpc3RfaGVhZAliaW5kaW5nX2xpc3Q7CiAJc3RydWN0IGxpc3RfaGVhZAltb2R1bGVfbGlzdDsKIAlzdHJ1Y3QgbGlzdF9oZWFkCW5vdGlmeV9saXN0OwomIzQzOwlzdHJ1Y3QgbGlzdF9oZWFkCXNldF91cGRhdGVfbGlzdDsKIAlzdHJ1Y3QgbXV0ZXgJCWNvbW1pdF9tdXRleDsKIAl1NjQJCQl0YWJsZV9oYW5kbGU7CiAJdTY0CQkJdHN0YW1wOwpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMgYi9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYwppbmRleCBhZjM1N2Y2YzUwNzBiLi41YzRmNmMzNTQ1OTUwIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYwpAQCAtNTk1LDEwICYjNDM7NTk1LDE1IEBAIHN0YXRpYyB2b2lkIG5mdF90cmFuc19jb21taXRfbGlzdF9hZGRfdGFpbChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBuZnRfdHJhbnMgKnRyCiBzdGF0aWMgdm9pZCBuZnRfdHJhbnNfY29tbWl0X2xpc3RfYWRkX2VsZW0oc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmZ0X3RyYW5zICp0cmFucykKIHsKIAlzdHJ1Y3QgbmZ0YWJsZXNfcGVybmV0ICpuZnRfbmV0ID0gbmZ0X3Blcm5ldChuZXQpOwomIzQzOwlzdHJ1Y3QgbmZ0X3RyYW5zX2VsZW0gKnRlOwogCiAJV0FSTl9PTl9PTkNFKHRyYW5zLSZndDttc2dfdHlwZSAhPSBORlRfTVNHX05FV1NFVEVMRU0gJmFtcDsmYW1wOwogCQkgICAgIHRyYW5zLSZndDttc2dfdHlwZSAhPSBORlRfTVNHX0RFTFNFVEVMRU0pOwogCiYjNDM7CXRlID0gbmZ0X3RyYW5zX2NvbnRhaW5lcl9lbGVtKHRyYW5zKTsKJiM0MzsJaWYgKHRlLSZndDtzZXQtJmd0O29wcy0mZ3Q7Y29tbWl0ICZhbXA7JmFtcDsgbGlzdF9lbXB0eSgmYW1wO3RlLSZndDtzZXQtJmd0O3BlbmRpbmdfdXBkYXRlKSkKJiM0MzsJCWxpc3RfYWRkX3RhaWwoJmFtcDt0ZS0mZ3Q7c2V0LSZndDtwZW5kaW5nX3VwZGF0ZSwgJmFtcDtuZnRfbmV0LSZndDtzZXRfdXBkYXRlX2xpc3QpOwomIzQzOwogCWlmIChuZnRfdHJhbnNfdHJ5X2NvbGxhcHNlKG5mdF9uZXQsIHRyYW5zKSkgewogCQlrZnJlZSh0cmFucyk7CiAJCXJldHVybjsKQEAgLTcyMDUsNiAmIzQzOzcyMTAsMjAgQEAgc3RhdGljIHZvaWQgbmZ0X3RyYW5zX2VsZW1zX3JlbW92ZShjb25zdCBzdHJ1Y3QgbmZ0X2N0eCAqY3R4LAogCX0KIH0KIAomIzQzO3N0YXRpYyB2b2lkIG5mdF90cmFuc19lbGVtc19yZW1vdmVfbm90aWZ5KGNvbnN0IHN0cnVjdCBuZnRfY3R4ICpjdHgsCiYjNDM7CQkJCQkgIGNvbnN0IHN0cnVjdCBuZnRfdHJhbnNfZWxlbSAqdGUpCiYjNDM7ewomIzQzOwlpbnQgaTsKJiM0MzsKJiM0MzsJZm9yIChpID0gMDsgaSAmbHQ7IHRlLSZndDtuZWxlbXM7IGkmIzQzOyYjNDM7KSB7CiYjNDM7CQlXQVJOX09OX09OQ0UodGUtJmd0O2VsZW1zW2ldLnVwZGF0ZSk7CiYjNDM7CiYjNDM7CQluZl90YWJsZXNfc2V0ZWxlbV9ub3RpZnkoY3R4LCB0ZS0mZ3Q7c2V0LAomIzQzOwkJCQkJIHRlLSZndDtlbGVtc1tpXS5wcml2LAomIzQzOwkJCQkJIHRlLSZndDtuZnRfdHJhbnMubXNnX3R5cGUpOwomIzQzOwl9CiYjNDM7fQomIzQzOwogc3RhdGljIGJvb2wgbmZ0X3NldGVsZW1fdmFsaWRfa2V5X2VuZChjb25zdCBzdHJ1Y3QgbmZ0X3NldCAqc2V0LAogCQkJCSAgICAgIHN0cnVjdCBubGF0dHIgKipubGEsIHUzMiBmbGFncykKIHsKQEAgLTEwODQ4LDExICYjNDM7MTA4NjcsMzEgQEAgc3RhdGljIHZvaWQgbmZfdGFibGVzX2NvbW1pdF9hdWRpdF9sb2coc3RydWN0IGxpc3RfaGVhZCAqYWRsLCB1MzIgZ2VuZXJhdGlvbikKIAl9CiB9CiAKLXN0YXRpYyB2b2lkIG5mdF9zZXRfY29tbWl0X3VwZGF0ZShzdHJ1Y3QgbGlzdF9oZWFkICpzZXRfdXBkYXRlX2xpc3QpCiYjNDM7c3RhdGljIHZvaWQgbmZ0X3NldF9jb21taXRfdXBkYXRlKHN0cnVjdCBuZnRfY3R4ICpjdHgsCiYjNDM7CQkJCSAgc3RydWN0IG5mdGFibGVzX3Blcm5ldCAqbmZ0X25ldCkKIHsKIAlzdHJ1Y3QgbmZ0X3NldCAqc2V0LCAqbmV4dDsKJiM0MzsJc3RydWN0IG5mdF90cmFuc19lbGVtICp0ZTsKJiM0MzsJc3RydWN0IG5mdF90cmFucyAqdHJhbnM7CiAKLQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoc2V0LCBuZXh0LCBzZXRfdXBkYXRlX2xpc3QsIHBlbmRpbmdfdXBkYXRlKSB7CiYjNDM7CWlmIChsaXN0X2VtcHR5KCZhbXA7bmZ0X25ldC0mZ3Q7c2V0X3VwZGF0ZV9saXN0KSkKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJbGlzdF9mb3JfZWFjaF9lbnRyeSh0cmFucywgJmFtcDtuZnRfbmV0LSZndDtjb21taXRfbGlzdCwgbGlzdCkgewomIzQzOwkJbmZ0X2N0eF91cGRhdGUoY3R4LCB0cmFucyk7CiYjNDM7CiYjNDM7CQlzd2l0Y2ggKHRyYW5zLSZndDttc2dfdHlwZSkgewomIzQzOwkJY2FzZSBORlRfTVNHX0RFTFNFVEVMRU06CiYjNDM7CQkJdGUgPSBuZnRfdHJhbnNfY29udGFpbmVyX2VsZW0odHJhbnMpOwomIzQzOwkJCWlmICghdGUtJmd0O3NldC0mZ3Q7b3BzLSZndDtjb21taXQpCiYjNDM7CQkJCWJyZWFrOwomIzQzOwomIzQzOwkJCW5mdF90cmFuc19lbGVtc19yZW1vdmUoY3R4LCB0ZSk7CiYjNDM7CQkJYnJlYWs7CiYjNDM7CQl9CiYjNDM7CX0KJiM0MzsKJiM0MzsJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHNldCwgbmV4dCwgJmFtcDtuZnRfbmV0LSZndDtzZXRfdXBkYXRlX2xpc3QsIHBlbmRpbmdfdXBkYXRlKSB7CiAJCWxpc3RfZGVsX2luaXQoJmFtcDtzZXQtJmd0O3BlbmRpbmdfdXBkYXRlKTsKIAogCQlpZiAoIXNldC0mZ3Q7b3BzLSZndDtjb21taXQgfHwgc2V0LSZndDtkZWFkKQpAQCAtMTA4ODUsNyAmIzQzOzEwOTI0LDYgQEAgc3RhdGljIGludCBuZl90YWJsZXNfY29tbWl0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAlzdHJ1Y3QgbmZ0X3RyYW5zX2JpbmRpbmcgKnRyYW5zX2JpbmRpbmc7CiAJc3RydWN0IG5mdF90cmFucyAqdHJhbnMsICpuZXh0OwogCXVuc2lnbmVkIGludCBiYXNlX3NlcSwgZ2Nfc2VxOwotCUxJU1RfSEVBRChzZXRfdXBkYXRlX2xpc3QpOwogCXN0cnVjdCBuZnRfdHJhbnNfZWxlbSAqdGU7CiAJc3RydWN0IG5mdF9jaGFpbiAqY2hhaW47CiAJc3RydWN0IG5mdF90YWJsZSAqdGFibGU7CkBAIC0xMDk2MCw2ICYjNDM7MTA5OTgsOCBAQCBzdGF0aWMgaW50IG5mX3RhYmxlc19jb21taXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCX0KIAogCS8qIHN0ZXAgMi4gIE1ha2UgcnVsZXNfZ2VuX1ggdmlzaWJsZSB0byBwYWNrZXQgcGF0aCAqLwomIzQzOwluZnRfc2V0X2NvbW1pdF91cGRhdGUoJmFtcDtjdHgsIG5mdF9uZXQpOwomIzQzOwogCWxpc3RfZm9yX2VhY2hfZW50cnkodGFibGUsICZhbXA7bmZ0X25ldC0mZ3Q7dGFibGVzLCBsaXN0KSB7CiAJCWxpc3RfZm9yX2VhY2hfZW50cnkoY2hhaW4sICZhbXA7dGFibGUtJmd0O2NoYWlucywgbGlzdCkKIAkJCW5mX3RhYmxlc19jb21taXRfY2hhaW4obmV0LCBjaGFpbik7CkBAIC0xMTA5MSwyNyAmIzQzOzExMTMxLDE2IEBAIHN0YXRpYyBpbnQgbmZfdGFibGVzX2NvbW1pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IpCiAJCQlicmVhazsKIAkJY2FzZSBORlRfTVNHX05FV1NFVEVMRU06CiAJCQl0ZSA9IG5mdF90cmFuc19jb250YWluZXJfZWxlbSh0cmFucyk7Ci0KIAkJCW5mdF90cmFuc19lbGVtc19hZGQoJmFtcDtjdHgsIHRlKTsKLQotCQkJaWYgKHRlLSZndDtzZXQtJmd0O29wcy0mZ3Q7Y29tbWl0ICZhbXA7JmFtcDsKLQkJCSAgICBsaXN0X2VtcHR5KCZhbXA7dGUtJmd0O3NldC0mZ3Q7cGVuZGluZ191cGRhdGUpKSB7Ci0JCQkJbGlzdF9hZGRfdGFpbCgmYW1wO3RlLSZndDtzZXQtJmd0O3BlbmRpbmdfdXBkYXRlLAotCQkJCQkgICAgICAmYW1wO3NldF91cGRhdGVfbGlzdCk7Ci0JCQl9CiAJCQluZnRfdHJhbnNfZGVzdHJveSh0cmFucyk7CiAJCQlicmVhazsKIAkJY2FzZSBORlRfTVNHX0RFTFNFVEVMRU06CiAJCWNhc2UgTkZUX01TR19ERVNUUk9ZU0VURUxFTToKIAkJCXRlID0gbmZ0X3RyYW5zX2NvbnRhaW5lcl9lbGVtKHRyYW5zKTsKLQotCQkJbmZ0X3RyYW5zX2VsZW1zX3JlbW92ZSgmYW1wO2N0eCwgdGUpOwotCi0JCQlpZiAodGUtJmd0O3NldC0mZ3Q7b3BzLSZndDtjb21taXQgJmFtcDsmYW1wOwotCQkJICAgIGxpc3RfZW1wdHkoJmFtcDt0ZS0mZ3Q7c2V0LSZndDtwZW5kaW5nX3VwZGF0ZSkpIHsKLQkJCQlsaXN0X2FkZF90YWlsKCZhbXA7dGUtJmd0O3NldC0mZ3Q7cGVuZGluZ191cGRhdGUsCi0JCQkJCSAgICAgICZhbXA7c2V0X3VwZGF0ZV9saXN0KTsKLQkJCX0KJiM0MzsJCQlpZiAodGUtJmd0O3NldC0mZ3Q7b3BzLSZndDtjb21taXQpCiYjNDM7CQkJCW5mdF90cmFuc19lbGVtc19yZW1vdmVfbm90aWZ5KCZhbXA7Y3R4LCB0ZSk7CiYjNDM7CQkJZWxzZQomIzQzOwkJCQluZnRfdHJhbnNfZWxlbXNfcmVtb3ZlKCZhbXA7Y3R4LCB0ZSk7CiAJCQlicmVhazsKIAkJY2FzZSBORlRfTVNHX05FV09CSjoKIAkJCWlmIChuZnRfdHJhbnNfb2JqX3VwZGF0ZSh0cmFucykpIHsKQEAgLTExMTgwLDggJiM0MzsxMTIwOSw2IEBAIHN0YXRpYyBpbnQgbmZfdGFibGVzX2NvbW1pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IpCiAJCX0KIAl9CiAKLQluZnRfc2V0X2NvbW1pdF91cGRhdGUoJmFtcDtzZXRfdXBkYXRlX2xpc3QpOwotCiAJbmZ0X2NvbW1pdF9ub3RpZnkobmV0LCBORVRMSU5LX0NCKHNrYikucG9ydGlkKTsKIAluZl90YWJsZXNfZ2VuX25vdGlmeShuZXQsIHNrYiwgTkZUX01TR19ORVdHRU4pOwogCW5mX3RhYmxlc19jb21taXRfYXVkaXRfbG9nKCZhbXA7YWRsLCBuZnRfYmFzZV9zZXEobmV0KSk7CkBAIC0xMTI0NywxMSAmIzQzOzExMjc0LDExIEBAIHN0YXRpYyB2b2lkIG5mX3RhYmxlc19hYm9ydF9yZWxlYXNlKHN0cnVjdCBuZnRfdHJhbnMgKnRyYW5zKQogCWtmcmVlKHRyYW5zKTsKIH0KIAotc3RhdGljIHZvaWQgbmZ0X3NldF9hYm9ydF91cGRhdGUoc3RydWN0IGxpc3RfaGVhZCAqc2V0X3VwZGF0ZV9saXN0KQomIzQzO3N0YXRpYyB2b2lkIG5mdF9zZXRfYWJvcnRfdXBkYXRlKHN0cnVjdCBuZnRhYmxlc19wZXJuZXQgKm5mdF9uZXQpCiB7CiAJc3RydWN0IG5mdF9zZXQgKnNldCwgKm5leHQ7CiAKLQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoc2V0LCBuZXh0LCBzZXRfdXBkYXRlX2xpc3QsIHBlbmRpbmdfdXBkYXRlKSB7CiYjNDM7CWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShzZXQsIG5leHQsICZhbXA7bmZ0X25ldC0mZ3Q7c2V0X3VwZGF0ZV9saXN0LCBwZW5kaW5nX3VwZGF0ZSkgewogCQlsaXN0X2RlbF9pbml0KCZhbXA7c2V0LSZndDtwZW5kaW5nX3VwZGF0ZSk7CiAKIAkJaWYgKCFzZXQtJmd0O29wcy0mZ3Q7YWJvcnQpCkBAIC0xMTM4NiwzMyAmIzQzOzExNDEzLDIyIEBAIHN0YXRpYyBpbnQgX19uZl90YWJsZXNfYWJvcnQoc3RydWN0IG5ldCAqbmV0LCBlbnVtIG5mbmxfYWJvcnRfYWN0aW9uIGFjdGlvbikKIAkJCW5mdF90cmFuc19kZXN0cm95KHRyYW5zKTsKIAkJCWJyZWFrOwogCQljYXNlIE5GVF9NU0dfTkVXU0VURUxFTToKJiM0MzsJCQl0ZSA9IG5mdF90cmFuc19jb250YWluZXJfZWxlbSh0cmFucyk7CiAJCQlpZiAobmZ0X3RyYW5zX2VsZW1fc2V0X2JvdW5kKHRyYW5zKSkgewomIzQzOwkJCQlsaXN0X2RlbF9pbml0KCZhbXA7dGUtJmd0O3NldC0mZ3Q7cGVuZGluZ191cGRhdGUpOwogCQkJCW5mdF90cmFuc19kZXN0cm95KHRyYW5zKTsKIAkJCQlicmVhazsKIAkJCX0KLQkJCXRlID0gbmZ0X3RyYW5zX2NvbnRhaW5lcl9lbGVtKHRyYW5zKTsKIAkJCWlmICghbmZ0X3RyYW5zX2VsZW1zX25ld19hYm9ydCgmYW1wO2N0eCwgdGUpKSB7CiAJCQkJbmZ0X3RyYW5zX2Rlc3Ryb3kodHJhbnMpOwogCQkJCWJyZWFrOwogCQkJfQotCi0JCQlpZiAodGUtJmd0O3NldC0mZ3Q7b3BzLSZndDthYm9ydCAmYW1wOyZhbXA7Ci0JCQkgICAgbGlzdF9lbXB0eSgmYW1wO3RlLSZndDtzZXQtJmd0O3BlbmRpbmdfdXBkYXRlKSkgewotCQkJCWxpc3RfYWRkX3RhaWwoJmFtcDt0ZS0mZ3Q7c2V0LSZndDtwZW5kaW5nX3VwZGF0ZSwKLQkJCQkJICAgICAgJmFtcDtzZXRfdXBkYXRlX2xpc3QpOwotCQkJfQogCQkJYnJlYWs7CiAJCWNhc2UgTkZUX01TR19ERUxTRVRFTEVNOgogCQljYXNlIE5GVF9NU0dfREVTVFJPWVNFVEVMRU06CiAJCQl0ZSA9IG5mdF90cmFuc19jb250YWluZXJfZWxlbSh0cmFucyk7CiAKIAkJCW5mdF90cmFuc19lbGVtc19kZXN0cm95X2Fib3J0KCZhbXA7Y3R4LCB0ZSk7Ci0KLQkJCWlmICh0ZS0mZ3Q7c2V0LSZndDtvcHMtJmd0O2Fib3J0ICZhbXA7JmFtcDsKLQkJCSAgICBsaXN0X2VtcHR5KCZhbXA7dGUtJmd0O3NldC0mZ3Q7cGVuZGluZ191cGRhdGUpKSB7Ci0JCQkJbGlzdF9hZGRfdGFpbCgmYW1wO3RlLSZndDtzZXQtJmd0O3BlbmRpbmdfdXBkYXRlLAotCQkJCQkgICAgICAmYW1wO3NldF91cGRhdGVfbGlzdCk7Ci0JCQl9CiAJCQluZnRfdHJhbnNfZGVzdHJveSh0cmFucyk7CiAJCQlicmVhazsKIAkJY2FzZSBORlRfTVNHX05FV09CSjoKQEAgLTExNDU4LDcgJiM0MzsxMTQ3NCw3IEBAIHN0YXRpYyBpbnQgX19uZl90YWJsZXNfYWJvcnQoc3RydWN0IG5ldCAqbmV0LCBlbnVtIG5mbmxfYWJvcnRfYWN0aW9uIGFjdGlvbikKIAogCVdBUk5fT05fT05DRSghbGlzdF9lbXB0eSgmYW1wO25mdF9uZXQtJmd0O2NvbW1pdF9zZXRfbGlzdCkpOwogCi0JbmZ0X3NldF9hYm9ydF91cGRhdGUoJmFtcDtzZXRfdXBkYXRlX2xpc3QpOwomIzQzOwluZnRfc2V0X2Fib3J0X3VwZGF0ZShuZnRfbmV0KTsKIAogCXN5bmNocm9uaXplX3JjdSgpOwogCkBAIC0xMjE0Miw2ICYjNDM7MTIxNTgsNyBAQCBzdGF0aWMgaW50IF9fbmV0X2luaXQgbmZfdGFibGVzX2luaXRfbmV0KHN0cnVjdCBuZXQgKm5ldCkKIAlJTklUX0xJU1RfSEVBRCgmYW1wO25mdF9uZXQtJmd0O2JpbmRpbmdfbGlzdCk7CiAJSU5JVF9MSVNUX0hFQUQoJmFtcDtuZnRfbmV0LSZndDttb2R1bGVfbGlzdCk7CiAJSU5JVF9MSVNUX0hFQUQoJmFtcDtuZnRfbmV0LSZndDtub3RpZnlfbGlzdCk7CiYjNDM7CUlOSVRfTElTVF9IRUFEKCZhbXA7bmZ0X25ldC0mZ3Q7c2V0X3VwZGF0ZV9saXN0KTsKIAltdXRleF9pbml0KCZhbXA7bmZ0X25ldC0mZ3Q7Y29tbWl0X211dGV4KTsKIAluZXQtJmd0O25mdC5iYXNlX3NlcSA9IDE7CiAJbmZ0X25ldC0mZ3Q7Z2Nfc2VxID0gMDsKQEAgLTEyMTg2LDYgJiM0MzsxMjIwMyw3IEBAIHN0YXRpYyB2b2lkIF9fbmV0X2V4aXQgbmZfdGFibGVzX2V4aXRfbmV0KHN0cnVjdCBuZXQgKm5ldCkKIAlXQVJOX09OX09OQ0UoIWxpc3RfZW1wdHkoJmFtcDtuZnRfbmV0LSZndDttb2R1bGVfbGlzdCkpOwogCVdBUk5fT05fT05DRSghbGlzdF9lbXB0eSgmYW1wO25mdF9uZXQtJmd0O25vdGlmeV9saXN0KSk7CiAJV0FSTl9PTl9PTkNFKCFsaXN0X2VtcHR5KCZhbXA7bmZ0X25ldC0mZ3Q7ZGVzdHJveV9saXN0KSk7CiYjNDM7CVdBUk5fT05fT05DRSghbGlzdF9lbXB0eSgmYW1wO25mdF9uZXQtJmd0O3NldF91cGRhdGVfbGlzdCkpOwogfQogCiBzdGF0aWMgdm9pZCBuZl90YWJsZXNfZXhpdF9iYXRjaChzdHJ1Y3QgbGlzdF9oZWFkICpuZXRfZXhpdF9saXN0KQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAyMzoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzgwCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIG5mX3RhYmxlcyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IGRpdmVzIHByZXR0eSBkZWVwIGludG8gdGhlIG5mX3RhYmxlcyBjb3JlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGhvdyBzZXQgZWxlbWVudHMgYXJlIGhhbmRsZWQgaW4gbmV0ZmlsdGVyLiBUaGUgY2hhbmdlcyBmb2N1cyBvbiBgbmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmNgIGFuZCBgaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlcy5oYC4gSXQgc2VlbXMgd2UmIzM5O3JlIGludHJvZHVjaW5nIGEgYHNldF91cGRhdGVfbGlzdGAgd2l0aGluIHRoZSBgbmZ0YWJsZXNfcGVybmV0YCBzdHJ1Y3R1cmUuIFRoaXMgaXMgc2lnbmlmaWNhbnQsIGFzIGl0IGluZGljYXRlcyBhIHNoaWZ0IGluIGhvdyBzZXQgdXBkYXRlcyBhcmUgbWFuYWdlZCBkdXJpbmcgdHJhbnNhY3Rpb25zLgoKVGhlIHBhdGNoIG1vZGlmaWVzIHNldmVyYWwgY3J1Y2lhbCBmdW5jdGlvbnM6IGBuZnRfdHJhbnNfY29tbWl0X2xpc3RfYWRkX2VsZW1gIHRvIHBvcHVsYXRlIHRoaXMgbmV3IGBzZXRfdXBkYXRlX2xpc3RgLiBBbHNvLCB3ZSBzZWUgY2hhbmdlcyBpbiBgbmZ0X3NldF9jb21taXRfdXBkYXRlYCwgd2hpY2ggbm93IGl0ZXJhdGVzIG92ZXIgKmJvdGgqIHRoZSBgY29tbWl0X2xpc3RgICphbmQqIHRoZSBuZXcgYHNldF91cGRhdGVfbGlzdGAuICBDcnVjaWFsbHksIGBuZl90YWJsZXNfY29tbWl0YCBpcyBiZWluZyBhbHRlcmVkIHRvIGNhbGwgYG5mdF9zZXRfY29tbWl0X3VwZGF0ZWAgKmJlZm9yZSogdGhlIHJ1bGVzIGJlY29tZSB2aXNpYmxlLiBUaGlzIGlzIGEgZnVuZGFtZW50YWwgY2hhbmdlIGluIGNvbW1pdCBvcmRlci4gIEZpbmFsbHksIGBfX25mX3RhYmxlc19hYm9ydGAgbm93IHVzZXMgYG5mdF9zZXRfYWJvcnRfdXBkYXRlYCwgd2hpY2ggcHJvYmFibHkgdW5kb2VzIHRoZXNlIGNoYW5nZXMuCgpGdW5jdGlvbmFsbHksIHRoaXMgaW1wYWN0cyB0aGUgd2F5IHNldCBlbGVtZW50cyBhcmUgY29tbWl0dGVkIGFuZCBhYm9ydGVkIHdpdGhpbiBuZl90YWJsZXMuIFRoZSBjaGFuZ2UgaXMgZGVmaW5pdGVseSByZWFjaGFibGUsIGFuZCBnaXZlbiBpdHMgY29yZSBuYXR1cmUsIHRoaXMgaXMgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGNvbmZpZ3VyYXRpb25zIGFyZSByZWxldmFudCDigJMgYENPTkZJR19ORl9UQUJMRVNgIHNlZW1zIGxpa2UgdGhlIG9idmlvdXMgc3RhcnRpbmcgcG9pbnQuCgpOb3csIGxldCYjMzk7cyBpZGVudGlmeSB0aGUga2V5IHN5bWJvbHMgbW9kaWZpZWQgYnkgdGhlIHBhdGNoOiBgbmZ0X3RyYW5zX2NvbW1pdF9saXN0X2FkZF9lbGVtYCwgYG5mdF90cmFuc19lbGVtc19yZW1vdmVgLCBgbmZ0X3RyYW5zX2VsZW1zX3JlbW92ZV9ub3RpZnlgLCBgbmZ0X3NldF9jb21taXRfdXBkYXRlYCwgYG5mX3RhYmxlc19jb21taXRgLCBgbmZ0X3NldF9hYm9ydF91cGRhdGVgLCBgX19uZl90YWJsZXNfYWJvcnRgLCBgbmZfdGFibGVzX2luaXRfbmV0YCwgYW5kIGBuZl90YWJsZXNfZXhpdF9uZXRgLiBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIGBuZl90YWJsZXNfY29tbWl0YCBpcyBleHBvcnRlZCBvciBub3QsIGJlY2F1c2UgaXQgc2VlbXMgb2RkIHRoYXQgaXQgd291bGQgYmUgc3RhdGljLiBJIG5lZWQgdG8gbWFrZSBzdXJlLiBJJiMzOTtsbCBjaGVjay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAyMzoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZl90YWJsZXNfY29tbWl0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9MTAzMDU9RVhQT1JUX1NZTUJPTF9HUEwobmZfdGFibGVzX3RyYW5zX2Rlc3Ryb3lfZmx1c2hfd29yayk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDMwNi1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwMzA3OnN0YXRpYyBpbnQgbmZfdGFibGVzX2NvbW1pdF9jaGFpbl9wcmVwYXJlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5mdF9jaGFpbiAqY2hhaW4pXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDMwOC17XG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTAzODEtXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDM4MjpzdGF0aWMgdm9pZCBuZl90YWJsZXNfY29tbWl0X2NoYWluX3ByZXBhcmVfY2FuY2VsKHN0cnVjdCBuZXQgKm5ldClcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwMzgzLXtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDM5Ny1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwMzk4OnN0YXRpYyB2b2lkIF9fbmZfdGFibGVzX2NvbW1pdF9jaGFpbl9mcmVlX3J1bGVzKHN0cnVjdCByY3VfaGVhZCAqaClcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwMzk5LXtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDQwNC1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwNDA1OnN0YXRpYyB2b2lkIG5mX3RhYmxlc19jb21taXRfY2hhaW5fZnJlZV9ydWxlc19vbGQoc3RydWN0IG5mdF9ydWxlX2Jsb2IgKmJsb2IpXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDQwNi17XG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA0MTItXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDQxMzpcdGNhbGxfcmN1KFx1MDAyNmxhc3QtXHUwMDNlaCwgX19uZl90YWJsZXNfY29tbWl0X2NoYWluX2ZyZWVfcnVsZXMpO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA0MTQtfVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA0MTUtXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDQxNjpzdGF0aWMgdm9pZCBuZl90YWJsZXNfY29tbWl0X2NoYWluKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5mdF9jaGFpbiAqY2hhaW4pXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDQxNy17XG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA0MzgtXHRcdFx0cmN1X2Fzc2lnbl9wb2ludGVyKGNoYWluLVx1MDAzZWJsb2JfZ2VuXzEsIGcwKTtcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwNDM5Olx0XHRcdG5mX3RhYmxlc19jb21taXRfY2hhaW5fZnJlZV9ydWxlc19vbGQoZzEpO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA0NDAtXHRcdH0gZWxzZSB7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDQ0MS1cdFx0XHRyY3VfYXNzaWduX3BvaW50ZXIoY2hhaW4tXHUwMDNlYmxvYl9nZW5fMCwgZzEpO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTA0NDI6XHRcdFx0bmZfdGFibGVzX2NvbW1pdF9jaGFpbl9mcmVlX3J1bGVzX29sZChnMCk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDQ0My1cdFx0fVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwNDU4LVx0aWYgKG5leHRfZ2VuYml0KVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTA0NTk6XHRcdG5mX3RhYmxlc19jb21taXRfY2hhaW5fZnJlZV9ydWxlc19vbGQoZzEpO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA0NjAtXHRlbHNlXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDQ2MTpcdFx0bmZfdGFibGVzX2NvbW1pdF9jaGFpbl9mcmVlX3J1bGVzX29sZChnMCk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDQ2Mi19XG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9MTA3MTE9c3RhdGljIHZvaWQgbmZfdGFibGVzX21vZHVsZV9hdXRvbG9hZF9jbGVhbnVwKHN0cnVjdCBuZXQgKm5ldClcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDcyMy1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwNzI0OnN0YXRpYyB2b2lkIG5mX3RhYmxlc19jb21taXRfcmVsZWFzZShzdHJ1Y3QgbmV0ICpuZXQpXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDcyNS17XG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9MTA3NTg9c3RhdGljIHZvaWQgbmZ0X2NvbW1pdF9ub3RpZnkoc3RydWN0IG5ldCAqbmV0LCB1MzIgcG9ydGlkKVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwNzkzLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTA3OTQ6c3RhdGljIGludCBuZl90YWJsZXNfY29tbWl0X2F1ZGl0X2FsbG9jKHN0cnVjdCBsaXN0X2hlYWQgKmFkbCxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwNzk1LVx0XHRcdFx0XHRzdHJ1Y3QgbmZ0X3RhYmxlICp0YWJsZSlcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDgxMC1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwODExOnN0YXRpYyB2b2lkIG5mX3RhYmxlc19jb21taXRfYXVkaXRfZnJlZShzdHJ1Y3QgbGlzdF9oZWFkICphZGwpXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDgxMi17XG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA4MjMtICovXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDgyNDpzdGF0aWMgdW5zaWduZWQgaW50IG5mX3RhYmxlc19jb21taXRfYXVkaXRfZW50cnljb3VudChjb25zdCBzdHJ1Y3QgbmZ0X3RyYW5zICp0cmFucylcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwODI1LXtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDgzNC1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwODM1OnN0YXRpYyB2b2lkIG5mX3RhYmxlc19jb21taXRfYXVkaXRfY29sbGVjdChzdHJ1Y3QgbGlzdF9oZWFkICphZGwsXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDgzNi1cdFx0XHRcdFx0ICAgY29uc3Qgc3RydWN0IG5mdF90cmFucyAqdHJhbnMsIHUzMiBvcClcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDg0Ny1mb3VuZDpcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwODQ4Olx0YWRwLVx1MDAzZWVudHJpZXMgJiM0Mzs9IG5mX3RhYmxlc19jb21taXRfYXVkaXRfZW50cnljb3VudCh0cmFucyk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDg0OS1cdGlmICghYWRwLVx1MDAzZW9wIHx8IGFkcC1cdTAwM2VvcCBcdTAwM2Ugb3ApXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA4NTQtXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDg1NTpzdGF0aWMgdm9pZCBuZl90YWJsZXNfY29tbWl0X2F1ZGl0X2xvZyhzdHJ1Y3QgbGlzdF9oZWFkICphZGwsIHUzMiBnZW5lcmF0aW9uKVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA4NTYte1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTEwOTE1PXN0YXRpYyB2b2lkIG5mdF9nY19zZXFfZW5kKHN0cnVjdCBuZnRhYmxlc19wZXJuZXQgKm5mdF9uZXQsIHVuc2lnbmVkIGludCBnY19zZXEpXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA5MTktXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDkyMDpzdGF0aWMgaW50IG5mX3RhYmxlc19jb21taXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA5MjEte1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwOTgwLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTA5ODE6XHRcdHJldCA9IG5mX3RhYmxlc19jb21taXRfYXVkaXRfYWxsb2MoXHUwMDI2YWRsLCB0YWJsZSk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDk4Mi1cdFx0aWYgKHJldCkge1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTA5ODM6XHRcdFx0bmZfdGFibGVzX2NvbW1pdF9jaGFpbl9wcmVwYXJlX2NhbmNlbChuZXQpO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTA5ODQ6XHRcdFx0bmZfdGFibGVzX2NvbW1pdF9hdWRpdF9mcmVlKFx1MDAyNmFkbCk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDk4NS1cdFx0XHRyZXR1cm4gcmV0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwOTkwLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTA5OTE6XHRcdFx0cmV0ID0gbmZfdGFibGVzX2NvbW1pdF9jaGFpbl9wcmVwYXJlKG5ldCwgY2hhaW4pO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA5OTItXHRcdFx0aWYgKHJldCBcdTAwM2MgMCkge1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTA5OTM6XHRcdFx0XHRuZl90YWJsZXNfY29tbWl0X2NoYWluX3ByZXBhcmVfY2FuY2VsKG5ldCk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDk5NDpcdFx0XHRcdG5mX3RhYmxlc19jb21taXRfYXVkaXRfZnJlZShcdTAwMjZhZGwpO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA5OTUtXHRcdFx0XHRyZXR1cm4gcmV0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExMDA0LVx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGNoYWluLCBcdTAwMjZ0YWJsZS1cdTAwM2VjaGFpbnMsIGxpc3QpXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTAwNTpcdFx0XHRuZl90YWJsZXNfY29tbWl0X2NoYWluKG5ldCwgY2hhaW4pO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTEwMDYtXHR9XG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTEwMjgtXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTAyOTpcdFx0bmZfdGFibGVzX2NvbW1pdF9hdWRpdF9jb2xsZWN0KFx1MDAyNmFkbCwgdHJhbnMsIHRyYW5zLVx1MDAzZW1zZ190eXBlKTtcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExMDMwLVx0XHRzd2l0Y2ggKHRyYW5zLVx1MDAzZW1zZ190eXBlKSB7XG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTEyMTMtXHRuZl90YWJsZXNfZ2VuX25vdGlmeShuZXQsIHNrYiwgTkZUX01TR19ORVdHRU4pO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTEyMTQ6XHRuZl90YWJsZXNfY29tbWl0X2F1ZGl0X2xvZyhcdTAwMjZhZGwsIG5mdF9iYXNlX3NlcShuZXQpKTtcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExMjE1LVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExMjE3LVx0bmZ0X25ldC1cdTAwM2V2YWxpZGF0ZV9zdGF0ZSA9IE5GVF9WQUxJREFURV9TS0lQO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTEyMTg6XHRuZl90YWJsZXNfY29tbWl0X3JlbGVhc2UobmV0KTtcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExMjE5LVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTExNTM5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZuZXRsaW5rX3N1YnN5c3RlbSBuZl90YWJsZXNfc3Vic3lzID0ge1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExNTQzLVx0LmNiXHRcdD0gbmZfdGFibGVzX2NiLFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTE1NDQ6XHQuY29tbWl0XHRcdD0gbmZfdGFibGVzX2NvbW1pdCxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExNTQ1LVx0LmFib3J0XHRcdD0gbmZfdGFibGVzX2Fib3J0LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDIzOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgzMDEKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byBOZXRmaWx0ZXIgVGFibGUgT3BlcmF0aW9ucyoqCgpSaWdodCwgc28gSSBzZWUgYG5mX3RhYmxlc19jb21taXRgIGlzIGNydWNpYWwgd2l0aGluIGBuZl90YWJsZXNfc3Vic3lzYC4gTXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBob3cgdGhpcyB0aWVzIGludG8gZXJyb3IgaGFuZGxpbmcgYW5kIHJvbGxiYWNrIG1lY2hhbmlzbXMuIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byB1bmRlcnN0YW5kIHRoZSBhYm9ydCBwcm9jZXNzLiBJIG5lZWQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyBhIGZhaWxlZCBjb21taXQgaXMgaGFuZGxlZCwgYW5kIHdoYXQgc3RhdGUgdGhlIHRhYmxlcyBhcmUgbGVmdCBpbi4gVGltZSB0byBkZWx2ZSBpbnRvIGBfX25mX3RhYmxlc19hYm9ydGAuIEkmIzM5O20gY3VyaW91cyBhYm91dCB0aGUgc3BlY2lmaWMgbWVjaGFuaXNtcyBpbnZvbHZlZCBpbiByb2xsaW5nIGJhY2sgdGhlIGNoYW5nZXMgYW5kIGVuc3VyaW5nIGEgY29uc2lzdGVudCBzdGF0ZSB3aXRoaW4gdGhlIG5ldGZpbHRlciBmcmFtZXdvcmsuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgcmVzb3VyY2VzIGFyZSByZWxlYXNlZCBhbmQgd2hhdCBzYWZlZ3VhcmRzIGFyZSBpbiBwbGFjZS4gVGhlIGRldmlsJiMzOTtzIGluIHRoZSBkZXRhaWxzIHdpdGggdGhlc2UgY29tcGxleCBzeXN0ZW1zLCBzbyBJJiMzOTtsbCBwcm9iYWJseSBiZSB0cmFjaW5nIGV4ZWN1dGlvbiBmbG93IGFuZCBjaGVja2luZyBpbnZhcmlhbnRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDIzOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fbmZfdGFibGVzX2Fib3J0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9MTEyNzc9c3RhdGljIHZvaWQgbmZ0X3NldF9hYm9ydF91cGRhdGUoc3RydWN0IG5mdGFibGVzX3Blcm5ldCAqbmZ0X25ldClcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTI5MC1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjExMjkxOnN0YXRpYyBpbnQgX19uZl90YWJsZXNfYWJvcnQoc3RydWN0IG5ldCAqbmV0LCBlbnVtIG5mbmxfYWJvcnRfYWN0aW9uIGFjdGlvbilcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExMjkyLXtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz0xMTQ5MD1zdGF0aWMgaW50IG5mX3RhYmxlc19hYm9ydChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE0OTctXHRnY19zZXEgPSBuZnRfZ2Nfc2VxX2JlZ2luKG5mdF9uZXQpO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTE0OTg6XHRyZXQgPSBfX25mX3RhYmxlc19hYm9ydChuZXQsIGFjdGlvbik7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTQ5OS1cdG5mdF9nY19zZXFfZW5kKG5mdF9uZXQsIGdjX3NlcSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMjM6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODg0MgoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDQ2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgTmV0ZmlsdGVyIFRhYmxlcyBmb3IgRm9jdXMgU3ltYm9scyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgdGhlIHJpZ2h0IGZvY3VzIHN5bWJvbHMuIFRoZSBpbnN0cnVjdGlvbnMgYXJlIHByZXR0eSBjbGVhcjogcHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cy4gVGhhdCBzZWVtcyB0byBiZSB0aGUga2V5LiBMZXQmIzM5O3Mgc2VlLi4uIEkmIzM5O3ZlIGdvdCBgbmZfdGFibGVzX2NvbW1pdGAgYW5kIGBuZl90YWJsZXNfYWJvcnRgIGFzIHRoZSBpbml0aWFsIGVudHJ5IHBvaW50cywgYW5kIHllcywgYG5mX3RhYmxlc19jb21taXRgICppcyogc3RhdGljLCBidXQgaXQmIzM5O3MgYXNzaWduZWQgdG8gYSBmdW5jdGlvbiBwb2ludGVyLCBgLmNvbW1pdGAsIGluIGBuZm5ldGxpbmtfc3Vic3lzdGVtYC4gVGhhdCBpbW1lZGlhdGVseSBtYWtlcyBpdCBpbnRlcmVzdGluZywgcmlnaHQ/IFN0YXRpYyBmdW5jdGlvbnMgYXJlIHVzdWFsbHkgaW5saW5lZCwgbG9zaW5nIGRpc3RpbmN0IHN5bWJvbHMsIGJ1dCBhICpsYXJnZSogc3RhdGljIGZ1bmN0aW9uIGFzc2lnbmVkIHRvIGEgZnVuY3Rpb24gcG9pbnRlciwgbGlrZSBgbmZfdGFibGVzX2NvbW1pdGAsIGl0ICpkZWZpbml0ZWx5KiBpc24mIzM5O3QgaW5saW5lZCwgc28gaXQgc2hvdWxkIGJlIGZpbmUgdG8gdGFyZ2V0LiBJIHNlZSB0aGF0IGBuZl90YWJsZXNfdHJhbnNfZGVzdHJveV9mbHVzaF93b3JrYCBpcyBleHBvcnRlZCBidXQgbm90IG1vZGlmaWVkLCBhbmQgdGhlIHBhdGNoIHRvdWNoZXMgc2V2ZXJhbCBmdW5jdGlvbnM6IGBuZnRfdHJhbnNfY29tbWl0X2xpc3RfYWRkX2VsZW1gLCBgbmZ0X3RyYW5zX2VsZW1zX3JlbW92ZWAsIGBuZnRfdHJhbnNfZWxlbXNfcmVtb3ZlX25vdGlmeWAsIGBuZnRfc2V0X2NvbW1pdF91cGRhdGVgLCBgbmZ0X3NldF9hYm9ydF91cGRhdGVgLCBgX19uZl90YWJsZXNfYWJvcnRgLCBgbmZfdGFibGVzX2luaXRfbmV0YCwgYW5kIGBuZl90YWJsZXNfZXhpdF9uZXRgLgoKU28gdGhlIHBhdGNoIG1vZGlmaWVzIGEgaGFuZGZ1bCBvZiBmdW5jdGlvbnMsIHNvbWUgb2Ygd2hpY2ggbWF5IGJlIGlubGluZWQgb3Igc3RhdGljLCBidXQgdGhlIG1haW4gcG9pbnQgaXMgdG8gaWRlbnRpZnkgdGhlIGJlc3QsIG5vbi1pbmxpbmVkIGVudHJ5IHBvaW50cy4KCkkgcmVtZW1iZXIgdGhlIGluc3RydWN0aW9ucy4gV2Ugd2FudCB0aG9zZSBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMuIFNvLCBgbmZfdGFibGVzX2NvbW1pdGAgYW5kIGBuZl90YWJsZXNfYWJvcnRgLCBiZWNhdXNlIHRoZXkgYXJlIGFzc2lnbmVkIHRvIGZ1bmN0aW9uIHBvaW50ZXJzLCB0aGV5IGhhdmUgZGlzdGluY3Qgc3ltYm9scywgYW5kIGFyZSBub3QgaW5saW5lZCwgd2hpY2ggbWFrZXMgdGhlbSBpZGVhbC4KCkkgcGF1c2VkIHRvIGNoZWNrIGlmIEkgYW0gZGVhbGluZyB3aXRoIGEgaG90LXBhdGggZnVuY3Rpb24sIGJ1dCBpdCYjMzk7cyBub3QgYSBwYWNrZXQgcHJvY2Vzc2luZyBob3QtcGF0aC4gSXQmIzM5O3MgYSBuZXRsaW5rIGNvbW1pdCBmdW5jdGlvbiB1c2VkIGZvciBuZXRmaWx0ZXIgcnVsZSBjb25maWd1cmF0aW9uLCB3aGljaCBtYWtlcyBzZW5zZS4gSSBzdXNwZWN0IHRoYXQgYG5mdF9zZXRfY29tbWl0X3VwZGF0ZWAgKm1pZ2h0KiBiZSBpbmxpbmVkLCBzbyBJJiMzOTtsbCBwcm9iYWJseSBsaXN0IGBuZl90YWJsZXNfY29tbWl0YCBhbmQgYG5mX3RhYmxlc19hYm9ydGAgdG8gYmUgc2FmZS4gVGhhdCYjMzk7cyBnb29kIGVub3VnaCBmb3Igbm93LiBUaW1lIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZvciBgTkZfVEFCTEVTYCB0byBtYWtlIHN1cmUgdGhlIG1vZHVsZSBpcyBlbmFibGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDIzOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORl9UQUJMRVMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnPTQ1Mz1lbmRpZiAjIE5GX0NPTk5UUkFDS1xubmV0L25ldGZpbHRlci9LY29uZmlnLTQ1NC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0NTU6Y29uZmlnIE5GX1RBQkxFU1xubmV0L25ldGZpbHRlci9LY29uZmlnLTQ1Ni1cdHNlbGVjdCBORVRGSUxURVJfTkVUTElOS1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz00NzE9aWYgTkZfVEFCTEVTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDcyOmNvbmZpZyBORl9UQUJMRVNfSU5FVFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ3My1cdGRlcGVuZHMgb24gSVBWNlxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NzktXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDgwOmNvbmZpZyBORl9UQUJMRVNfTkVUREVWXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDgxLVx0Ym9vbCBcJiMzNDtOZXRmaWx0ZXIgbmZfdGFibGVzIG5ldGRldiB0YWJsZXMgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDIzOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMDQ3CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzoKCioqQW5hbHl6aW5nIHRoZSBORl9UQUJMRVMgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBzbyBgTkZfVEFCTEVTYCBpcyB0aGUga2V5IGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgaGVyZS4gU2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCDigJMgdGhhdCYjMzk7cyBvdXIgc3RhcnRpbmcgcG9pbnQuIE5vdywgbGV0JiMzOTtzIHNlZSBpZiB0aGVyZSBhcmUgYW55IHJlbGF0ZWQgY29uZmlncyB3ZSBuZWVkIHRvIGNvbnNpZGVyLiBJIGFsd2F5cyBsaWtlIHRvIGdldCBhIGNvbXBsZXRlIHBpY3R1cmUuCgpUaGUgcGF0Y2ggaXMgdG91Y2hpbmcgYG5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jYC4gUmlnaHQsIHNvIHRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgQVBJIGxvZ2ljIGZvciBgbmZfdGFibGVzYCByZXNpZGVzLCBtYWtpbmcgdGhlIGZpbGUgYSBwcmltZSB0YXJnZXQuIEFuZCwgb2YgY291cnNlLCB0aGF0IGZpbGUgaXMgKm9ubHkqIGNvbXBpbGVkIGludG8gdGhlIGtlcm5lbCB3aGVuIGBDT05GSUdfTkZfVEFCTEVTYCBpcyB0dXJuZWQgb24uIE9idmlvdXMsIGJ1dCBpbXBvcnRhbnQgdG8gY2VtZW50IHRoZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBmbG93LiBHb3QgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDIzOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mX3RhYmxlc19hcGkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9ODQ9b2JqLSQoQ09ORklHX05GX0RVUF9ORVRERVYpXHQmIzQzOz0gbmZfZHVwX25ldGRldi5vXG4tLVxubmV0L25ldGZpbHRlci9NYWtlZmlsZS04Ni0jIG5mX3RhYmxlc1xubmV0L25ldGZpbHRlci9NYWtlZmlsZTo4NzpuZl90YWJsZXMtb2JqcyA6PSBuZl90YWJsZXNfY29yZS5vIG5mX3RhYmxlc19hcGkubyBuZnRfY2hhaW5fZmlsdGVyLm8gXFxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtODgtXHRcdCAgbmZfdGFibGVzX3RyYWNlLm8gbmZ0X2ltbWVkaWF0ZS5vIG5mdF9jbXAubyBuZnRfcmFuZ2UubyBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAyMzoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDQ0MQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDEzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBicmVha2Rvd24gb2Ygd2hhdCBJJiMzOTttIGxvb2tpbmcgYXQsIGZyb20gbXkgcGVyc3BlY3RpdmUuIExldCYjMzk7cyBzZWUgaWYgdGhpcyBhbGlnbnMgd2l0aCBteSBjdXJyZW50IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHN1YmplY3QgbWF0dGVyOgoKKipOYXZpZ2F0aW5nIHRoZSBgbmZfdGFibGVzYCBDb2RlYmFzZSoqCgpBbHJpZ2h0LCBzbyB0aGUgY29yZSBxdWVzdGlvbiBpcyBhYm91dCBgbmZfdGFibGVzLW9ianNgLCBhbmQgSSYjMzk7bSBwcmV0dHkgY2VydGFpbiB0aGF0IHRoZSBidWlsZCBwcm9jZXNzIGluY2x1ZGVzIGl0IGlmIGBDT05GSUdfTkZfVEFCTEVTYCBpcyB0dXJuZWQgb24uIENvbmZpcm1hdGlvbiBvZiB0aGUgb2J2aW91cyBpcyBhbHdheXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LgoKTm93LCBJIG5lZWQgdG8gZ2V0IG15IGhlYWQgYXJvdW5kIHRoZSBjcnVjaWFsIGNvbW1pdCBhbmQgYWJvcnQgZnVuY3Rpb25zLiBMZXQmIzM5O3MgbWFrZSBzdXJlIEkmIzM5O3ZlIGdvdCB0aGUgYmFzaWNzIGNvdmVyZWQgdGhlcmUsIGBuZl90YWJsZXNfY29tbWl0YCBhbmQgYG5mX3RhYmxlc19hYm9ydGAuIFRoZXNlIGFyZSB0aGUgc3BpbmUgb2YgYW55IHRyYW5zYWN0aW9uIHN5c3RlbS4gQXJlIHRoZXJlIGFueSBvdGhlciBoaWdoLWxldmVsIHN5bWJvbHMgd2hpY2ggbmVlZCB0byBiZSBhY2NvdW50ZWQgZm9yPwoKSSBzZWUgYG5mdF90cmFuc19jb21taXRfbGlzdF9hZGRfZWxlbWAgZ2V0dGluZyBjYWxsZWQgZnJvbSBgbmZ0X2FkZF9zZXRfZWxlbWAgYW5kIGBuZnRfZGVsX3NldGVsZW1gLiBUaGF0IG1ha2VzIHNlbnNlOyB0aGVzZSBmdW5jdGlvbnMgYXJlIGxpa2VseSBpbnZvbHZlZCBpbiBoYW5kbGluZyB0cmFuc2FjdGlvbiBsaXN0cy4gRm9sbG93aW5nIHRoYXQgbG9naWMsIEkgcmVjYWxsIHRoYXQgYG5mdF9hZGRfc2V0X2VsZW1gIGlzLCBpbiB0dXJuLCBjYWxsZWQgYnkgYG5mX3RhYmxlc19uZXdzZXRlbGVtYCwgYW5kIHNpbWlsYXJseSwgYG5mdF9kZWxfc2V0ZWxlbWAgaXMgY2FsbGVkIGZyb20gYG5mX3RhYmxlc19kZWxzZXRlbGVtYC4gVGhlc2Ugc2hvdWxkIGFsc28gYmUga2V5IGZ1bmN0aW9ucyBJIHNob3VsZCBrZWVwIGluIG1pbmQuIEkga25vdyB3aGF0IHRoZXNlIGZ1bmN0aW9ucyBkbywgYnV0IGl0JiMzOTtzIGltcG9ydGFudCB0byBtYWtlIHN1cmUgdGhleSYjMzk7cmUgaW5jbHVkZWQgaW4gbXkgbWVudGFsIG1vZGVsIG9mIHRoaXMgYXJjaGl0ZWN0dXJlLiBUaGV5IGFyZSBnb29kIGZvY3VzIHBvaW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMjM6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZfdGFibGVzX25ld3NldGVsZW0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz03MjY3PXN0YXRpYyBpbnQgbmZ0X2FkZF9zZXRfZWxlbShzdHJ1Y3QgbmZ0X2N0eCAqY3R4LCBzdHJ1Y3QgbmZ0X3NldCAqc2V0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTc2ODAtXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzo3NjgxOnN0YXRpYyBpbnQgbmZfdGFibGVzX25ld3NldGVsZW0oc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTc2ODItXHRcdFx0XHRjb25zdCBzdHJ1Y3QgbmZubF9pbmZvICppbmZvLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTk5NDI9c3RhdGljIGNvbnN0IHN0cnVjdCBuZm5sX2NhbGxiYWNrIG5mX3RhYmxlc19jYltORlRfTVNHX01BWF0gPSB7XG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTAwNDUtXHRbTkZUX01TR19ORVdTRVRFTEVNXSA9IHtcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwMDQ2Olx0XHQuY2FsbFx0XHQ9IG5mX3RhYmxlc19uZXdzZXRlbGVtLFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTAwNDctXHRcdC50eXBlXHRcdD0gTkZOTF9DQl9CQVRDSCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMjM6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEyMjYKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBpZiBJIHdlcmUgdGhlIG9uZSB0aGlua2luZyB0aGVtOgoKKipJbml0aWFsIEFzc2Vzc21lbnQ6IE5ldHdvcmsgRmlsdGVyaW5nIFNldCBPcGVyYXRpb25zKioKCkFscmlnaHQsIGxldCYjMzk7cyB6ZXJvIGluIG9uIHRoaXMuIEkmIzM5O20gc2VlaW5nIGBuZl90YWJsZXNfbmV3c2V0ZWxlbWAgYW5kIGBuZl90YWJsZXNfZGVsc2V0ZWxlbWAuIEltbWVkaWF0ZWx5LCB0aG9zZSBqdW1wIG91dCBhcyB0aGUgY29yZSBlbnRyeSBwb2ludHMgZm9yIHRoZSBhZGRpdGlvbiBhbmQgcmVtb3ZhbCBvZiBlbGVtZW50cyB3aXRoaW4gYSBzZXQsIGluIHRoZSBjb250ZXh0IG9mIGBuZl90YWJsZXNgLiBUaGF0JiMzOTtzIHByZWNpc2VseSB0aGUga2luZCBvZiBsb3ctbGV2ZWwgZGV0YWlsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmdW5kYW1lbnRhbCBtZWNoYW5pY3Mgb2YgaG93IHRoZXNlIG5ldHdvcmsgZmlsdGVyaW5nIHRhYmxlcyBhcmUgbWFuaXB1bGF0ZWQgYXQgdGhlIHNldCBsZXZlbC4gRXhjZWxsZW50IGZvY3VzIHN5bWJvbHMgdG8gc3RhcnQgZGlnZ2luZyBpbnRvLiBUaGV5IG9mZmVyIGEgZGlyZWN0IHBhdGggdG8gdW5kZXJzdGFuZGluZyB0aGUgY29yZSBmdW5jdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDIzOjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mX3RhYmxlc19kZWxzZXRlbGVtJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9ODAwND1zdGF0aWMgaW50IG5mdF9zZXRfZmx1c2goc3RydWN0IG5mdF9jdHggKmN0eCwgc3RydWN0IG5mdF9zZXQgKnNldCwgdTggZ2VubWFzaylcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy04MDIxLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6ODAyMjpzdGF0aWMgaW50IG5mX3RhYmxlc19kZWxzZXRlbGVtKHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy04MDIzLVx0XHRcdFx0Y29uc3Qgc3RydWN0IG5mbmxfaW5mbyAqaW5mbyxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz05OTQyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZubF9jYWxsYmFjayBuZl90YWJsZXNfY2JbTkZUX01TR19NQVhdID0ge1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwMDYzLVx0W05GVF9NU0dfREVMU0VURUxFTV0gPSB7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDA2NDpcdFx0LmNhbGxcdFx0PSBuZl90YWJsZXNfZGVsc2V0ZWxlbSxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwMDY1LVx0XHQudHlwZVx0XHQ9IE5GTkxfQ0JfQkFUQ0gsXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTAwNjktXHRbTkZUX01TR19ERVNUUk9ZU0VURUxFTV0gPSB7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDA3MDpcdFx0LmNhbGxcdFx0PSBuZl90YWJsZXNfZGVsc2V0ZWxlbSxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwMDcxLVx0XHQudHlwZVx0XHQ9IE5GTkxfQ0JfQkFUQ0gsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDIzOjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExODM3CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogOTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgTmV0ZmlsdGVyIEZvY3VzKioKCk9rYXksIHNvIEkgbmVlZCB0byB6ZXJvIGluIG9uIHRoZXNlIHN5bWJvbHM6IGBuZl90YWJsZXNfY29tbWl0YCwgYG5mX3RhYmxlc19hYm9ydGAsIGBuZl90YWJsZXNfbmV3c2V0ZWxlbWAsIGFuZCBgbmZfdGFibGVzX2RlbHNldGVsZW1gLiBUaGV5JiMzOTtyZSBhbGwgTmV0bGluayBjYWxsYmFja3MsIHdoaWNoIG1lYW5zIHRoZXkgYXJlbiYjMzk7dCBpbmxpbmVkIGFuZCBhcmUgZGVmaW5pdGUgQVBJIGVudHJ5cG9pbnRzLCBwZXJmZWN0IHRhcmdldHMgZm9yIGRlZXBlciBhbmFseXNpcy4KCkJlZm9yZSBJIGdvIGZ1cnRoZXIsIEkgc2hvdWxkIHZlcmlmeSB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIExldCYjMzk7cyBtYWtlIHN1cmUgYE5GX1RBQkxFU2AgZGVwZW5kcyBvbiBgTkVURklMVEVSYC4gR290dGEgY292ZXIgYWxsIHRoZSBiYXNlcyB0byBhdm9pZCBhbnkgdW5leHBlY3RlZCBpc3N1ZXMgZG93biB0aGUgbGluZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMjM6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVEZJTFRFUiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWc9Mj1tZW51IFwmIzM0O0NvcmUgTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb25cJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo1OmNvbmZpZyBORVRGSUxURVJfSU5HUkVTU1xubmV0L25ldGZpbHRlci9LY29uZmlnLTYtXHRib29sIFwmIzM0O05ldGZpbHRlciBpbmdyZXNzIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTItXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTM6Y29uZmlnIE5FVEZJTFRFUl9FR1JFU1Ncbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNC1cdGJvb2wgXCYjMzQ7TmV0ZmlsdGVyIGVncmVzcyBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTIwLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjIxOmNvbmZpZyBORVRGSUxURVJfU0tJUF9FR1JFU1Ncbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yMi1cdGRlZl9ib29sIE5FVEZJTFRFUl9FR1JFU1MgXHUwMDI2XHUwMDI2IChORVRfQ0xTX0FDVCB8fCBJRkIpXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjMtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MjQ6Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjUtXHRib29sXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjYtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mjc6Y29uZmlnIE5FVEZJTFRFUl9GQU1JTFlfQlJJREdFXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjgtXHRib29sXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjktXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MzA6Y29uZmlnIE5FVEZJTFRFUl9GQU1JTFlfQVJQXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzEtXHRib29sXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzItXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MzM6Y29uZmlnIE5FVEZJTFRFUl9CUEZfTElOS1xubmV0L25ldGZpbHRlci9LY29uZmlnLTM0LVx0ZGVmX2Jvb2wgQlBGX1NZU0NBTExcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zNS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozNjpjb25maWcgTkVURklMVEVSX05FVExJTktfSE9PS1xubmV0L25ldGZpbHRlci9LY29uZmlnLTM3LVx0dHJpc3RhdGUgXCYjMzQ7TmV0ZmlsdGVyIGJhc2UgaG9vayBkdW1wIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDUtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDY6Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX0FDQ1Rcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00Ny1cdHRyaXN0YXRlIFwmIzM0O05ldGZpbHRlciBORkFDQ1Qgb3ZlciBORk5FVExJTksgaW50ZXJmYWNlXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTUzLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjU0OmNvbmZpZyBORVRGSUxURVJfTkVUTElOS19RVUVVRVxubmV0L25ldGZpbHRlci9LY29uZmlnLTU1LVx0dHJpc3RhdGUgXCYjMzQ7TmV0ZmlsdGVyIE5GUVVFVUUgb3ZlciBORk5FVExJTksgaW50ZXJmYWNlXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTYxLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjYyOmNvbmZpZyBORVRGSUxURVJfTkVUTElOS19MT0dcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy02My1cdHRyaXN0YXRlIFwmIzM0O05ldGZpbHRlciBMT0cgb3ZlciBORk5FVExJTksgaW50ZXJmYWNlXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTczLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjc0OmNvbmZpZyBORVRGSUxURVJfTkVUTElOS19PU0Zcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03NS1cdHRyaXN0YXRlIFwmIzM0O05ldGZpbHRlciBPU0Ygb3ZlciBORk5FVExJTksgaW50ZXJmYWNlXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnPTExMD1pZiBORl9DT05OVFJBQ0tcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMTE6Y29uZmlnIE5FVEZJTFRFUl9DT05OQ09VTlRcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTItXHR0cmlzdGF0ZVxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz0zODU9Y29uZmlnIE5GX0NUX05FVExJTktfSEVMUEVSXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTM5Ny1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozOTg6Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX0dMVUVfQ1Rcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zOTktXHRib29sIFwmIzM0O05GUVVFVUUgYW5kIE5GTE9HIGludGVncmF0aW9uIHdpdGggQ29ubmVjdGlvbiBUcmFja2luZ1wmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz00NDc9Y29uZmlnIE5GX05BVF9PVlNcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDQ5LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjQ1MDpjb25maWcgTkVURklMVEVSX1NZTlBST1hZXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDUxLVx0dHJpc3RhdGVcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc9NzIxPWNvbmZpZyBORl9GTE9XX1RBQkxFX1BST0NGU1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03MjgtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NzI5OmNvbmZpZyBORVRGSUxURVJfWFRBQkxFU1xubmV0L25ldGZpbHRlci9LY29uZmlnLTczMC1cdHRyaXN0YXRlIFwmIzM0O05ldGZpbHRlciBYdGFibGVzIHN1cHBvcnQgKHJlcXVpcmVkIGZvciBpcF90YWJsZXMpXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnPTczNj1pZiBORVRGSUxURVJfWFRBQkxFU1xubmV0L25ldGZpbHRlci9LY29uZmlnLTczNy1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo3Mzg6Y29uZmlnIE5FVEZJTFRFUl9YVEFCTEVTX0NPTVBBVFxubmV0L25ldGZpbHRlci9LY29uZmlnLTczOS1cdGJvb2wgXCYjMzQ7TmV0ZmlsdGVyIFh0YWJsZXMgMzJiaXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03NDYtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NzQ3OmNvbmZpZyBORVRGSUxURVJfWFRBQkxFU19MRUdBQ1lcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03NDgtXHRib29sIFwmIzM0O05ldGZpbHRlciBsZWdhY3kgdGFibGVzIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc9NzU3PWNvbW1lbnQgXCYjMzQ7WHRhYmxlcyBjb21iaW5lZCBtb2R1bGVzXCYjMzQ7XG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzU4LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjc1OTpjb25maWcgTkVURklMVEVSX1hUX01BUktcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03NjAtXHR0cmlzdGF0ZSAmIzM5O25mbWFyayB0YXJnZXQgYW5kIG1hdGNoIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03NzItXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NzczOmNvbmZpZyBORVRGSUxURVJfWFRfQ09OTk1BUktcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03NzQtXHR0cmlzdGF0ZSAmIzM5O2N0bWFyayB0YXJnZXQgYW5kIG1hdGNoIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03ODQtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Nzg1OmNvbmZpZyBORVRGSUxURVJfWFRfU0VUXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzg2LVx0dHJpc3RhdGUgJiMzOTtzZXQgdGFyZ2V0IGFuZCBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc9Nzk5PWNvbW1lbnQgXCYjMzQ7WHRhYmxlcyB0YXJnZXRzXCYjMzQ7XG5uZXQvbmV0ZmlsdGVyL0tjb25maWctODAwLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjgwMTpjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9BVURJVFxubmV0L25ldGZpbHRlci9LY29uZmlnLTgwMi1cdHRyaXN0YXRlIFwmIzM0O0FVRElUIHRhcmdldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTgxMC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo4MTE6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfQ0hFQ0tTVU1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04MTItXHR0cmlzdGF0ZSBcJiMzNDtDSEVDS1NVTSB0YXJnZXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04MjYtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6ODI3OmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX0NMQVNTSUZZXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctODI4LVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtDTEFTU0lGWVwmIzM0OyB0YXJnZXQgc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTgzOC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo4Mzk6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfQ09OTk1BUktcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04NDAtXHR0cmlzdGF0ZSAgJiMzOTtcJiMzNDtDT05OTUFSS1wmIzM0OyB0YXJnZXQgc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTg0OC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo4NDk6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfQ09OTlNFQ01BUktcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04NTAtXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O0NPTk5TRUNNQVJLXCYjMzQ7IHRhcmdldCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctODYwLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjg2MTpjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9DVFxubmV0L25ldGZpbHRlci9LY29uZmlnLTg2Mi1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7Q1RcJiMzNDsgdGFyZ2V0IHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04NzItXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6ODczOmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX0RTQ1Bcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04NzQtXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O0RTQ1BcJiMzNDsgYW5kIFwmIzM0O1RPU1wmIzM0OyB0YXJnZXQgc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTg4OC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo4ODk6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfSExcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04OTAtXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O0hMXCYjMzQ7IGhvcGxpbWl0IHRhcmdldCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctOTAzLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjkwNDpjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9ITUFSS1xubmV0L25ldGZpbHRlci9LY29uZmlnLTkwNS1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7SE1BUktcJiMzNDsgdGFyZ2V0IHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy05MTctXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6OTE4OmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX0lETEVUSU1FUlxubmV0L25ldGZpbHRlci9LY29uZmlnLTkxOS1cdHRyaXN0YXRlICBcJiMzNDtJRExFVElNRVIgdGFyZ2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctOTI5LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjkzMDpjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9MRURcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy05MzEtXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O0xFRFwmIzM0OyB0YXJnZXQgc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTk1My1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo5NTQ6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfTE9HXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctOTU1LVx0dHJpc3RhdGUgXCYjMzQ7TE9HIHRhcmdldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTk2NC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo5NjU6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfTUFSS1xubmV0L25ldGZpbHRlci9LY29uZmlnLTk2Ni1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7TUFSS1wmIzM0OyB0YXJnZXQgc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTk3My1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo5NzQ6Y29uZmlnIE5FVEZJTFRFUl9YVF9OQVRcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy05NzUtXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O1NOQVQgYW5kIEROQVRcJiMzNDsgdGFyZ2V0cyBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctOTgxLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjk4Mjpjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9ORVRNQVBcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy05ODMtXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O05FVE1BUFwmIzM0OyB0YXJnZXQgc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTk5MS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo5OTI6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfTkZMT0dcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy05OTMtXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O05GTE9HXCYjMzQ7IHRhcmdldCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTAwMS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMDAyOmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX05GUVVFVUVcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMDAzLVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtORlFVRVVFXCYjMzQ7IHRhcmdldCBTdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTAxMy1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMDE0OmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX05PVFJBQ0tcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMDE1LVx0dHJpc3RhdGUgICYjMzk7XCYjMzQ7Tk9UUkFDS1wmIzM0OyB0YXJnZXQgc3VwcG9ydCAoREVQUkVDQVRFRCkmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMDIwLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjEwMjE6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfUkFURUVTVFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEwMjItXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O1JBVEVFU1RcJiMzNDsgdGFyZ2V0IHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMDMwLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjEwMzE6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfUkVESVJFQ1Rcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMDMyLVx0dHJpc3RhdGUgXCYjMzQ7UkVESVJFQ1QgdGFyZ2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTA0Mi1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMDQzOmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX01BU1FVRVJBREVcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMDQ0LVx0dHJpc3RhdGUgXCYjMzQ7TUFTUVVFUkFERSB0YXJnZXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMDU2LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjEwNTc6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfVEVFXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTA1OC1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7VEVFXCYjMzQ7IC0gcGFja2V0IGNsb25pbmcgdG8gYWx0ZXJuYXRlIGRlc3RpbmF0aW9uJiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTA2Ny1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMDY4OmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX1RQUk9YWVxubmV0L25ldGZpbHRlci9LY29uZmlnLTEwNjktXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O1RQUk9YWVwmIzM0OyB0YXJnZXQgdHJhbnNwYXJlbnQgcHJveHlpbmcgc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTEwODgtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTA4OTpjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9UUkFDRVxubmV0L25ldGZpbHRlci9LY29uZmlnLTEwOTAtXHR0cmlzdGF0ZSAgJiMzOTtcJiMzNDtUUkFDRVwmIzM0OyB0YXJnZXQgc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTExMDAtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTEwMTpjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9TRUNNQVJLXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTEwMi1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7U0VDTUFSS1wmIzM0OyB0YXJnZXQgc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTExMTAtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTExMTpjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9UQ1BNU1Ncbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTEyLVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtUQ1BNU1NcJiMzNDsgdGFyZ2V0IHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTM2LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjExMzc6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfVENQT1BUU1RSSVBcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTM4LVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtUQ1BPUFRTVFJJUFwmIzM0OyB0YXJnZXQgc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnPTExNDc9Y29tbWVudCBcJiMzNDtYdGFibGVzIG1hdGNoZXNcJiMzNDtcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTQ4LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjExNDk6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9BRERSVFlQRVxubmV0L25ldGZpbHRlci9LY29uZmlnLTExNTAtXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O2FkZHJ0eXBlXCYjMzQ7IGFkZHJlc3MgdHlwZSBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTE1OC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMTU5OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfQlBGXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTE2MC1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7YnBmXCYjMzQ7IG1hdGNoIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTY3LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjExNjg6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9DR1JPVVBcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTY5LVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtjb250cm9sIGdyb3VwXCYjMzQ7IG1hdGNoIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTc3LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjExNzg6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9DTFVTVEVSXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTE3OS1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7Y2x1c3RlclwmIzM0OyBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTE5My1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMTk0OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfQ09NTUVOVFxubmV0L25ldGZpbHRlci9LY29uZmlnLTExOTUtXHR0cmlzdGF0ZSAgJiMzOTtcJiMzNDtjb21tZW50XCYjMzQ7IG1hdGNoIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjAzLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjEyMDQ6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9DT05OQllURVNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjA1LVx0dHJpc3RhdGUgICYjMzk7XCYjMzQ7Y29ubmJ5dGVzXCYjMzQ7IHBlci1jb25uZWN0aW9uIGNvdW50ZXIgbWF0Y2ggc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTEyMTQtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTIxNTpjb25maWcgTkVURklMVEVSX1hUX01BVENIX0NPTk5MQUJFTFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEyMTYtXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O2Nvbm5sYWJlbFwmIzM0OyBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTIyNy1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMjI4OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfQ09OTkxJTUlUXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTIyOS1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7Y29ubmxpbWl0XCYjMzQ7IG1hdGNoIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjM2LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjEyMzc6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9DT05OTUFSS1xubmV0L25ldGZpbHRlci9LY29uZmlnLTEyMzgtXHR0cmlzdGF0ZSAgJiMzOTtcJiMzNDtjb25ubWFya1wmIzM0OyBjb25uZWN0aW9uIG1hcmsgbWF0Y2ggc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTEyNDYtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTI0Nzpjb25maWcgTkVURklMVEVSX1hUX01BVENIX0NPTk5UUkFDS1xubmV0L25ldGZpbHRlci9LY29uZmlnLTEyNDgtXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O2Nvbm50cmFja1wmIzM0OyBjb25uZWN0aW9uIHRyYWNraW5nIG1hdGNoIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjU5LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjEyNjA6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9DUFVcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjYxLVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtjcHVcJiMzNDsgbWF0Y2ggc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTEyNjgtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTI2OTpjb25maWcgTkVURklMVEVSX1hUX01BVENIX0RDQ1Bcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjcwLVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtkY2NwXCYjMzQ7IHByb3RvY29sIG1hdGNoIHN1cHBvcnQgKERFUFJFQ0FURUQpJiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTI4MC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMjgxOmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfREVWR1JPVVBcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjgyLVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtkZXZncm91cFwmIzM0OyBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTI4OS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMjkwOmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfRFNDUFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEyOTEtXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O2RzY3BcJiMzNDsgYW5kIFwmIzM0O3Rvc1wmIzM0OyBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTMwNC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMzA1OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfRUNOXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTMwNi1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7ZWNuXCYjMzQ7IG1hdGNoIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzEzLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjEzMTQ6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9FU1Bcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzE1LVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtlc3BcJiMzNDsgbWF0Y2ggc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzMjItXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTMyMzpjb25maWcgTkVURklMVEVSX1hUX01BVENIX0hBU0hMSU1JVFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzMjQtXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O2hhc2hsaW1pdFwmIzM0OyBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTMzNy1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMzM4OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfSEVMUEVSXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTMzOS1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7aGVscGVyXCYjMzQ7IG1hdGNoIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzQ3LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjEzNDg6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9ITFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzNDktXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O2hsXCYjMzQ7IGhvcGxpbWl0L1RUTCBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTM1NS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMzU2OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfSVBDT01QXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTM1Ny1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7aXBjb21wXCYjMzQ7IG1hdGNoIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzY0LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjEzNjU6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9JUFJBTkdFXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTM2Ni1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7aXByYW5nZVwmIzM0OyBhZGRyZXNzIHJhbmdlIG1hdGNoIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzc0LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjEzNzU6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9JUFZTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTM3Ni1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7aXB2c1wmIzM0OyBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTM4NC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMzg1OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfTDJUUFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzODYtXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O2wydHBcJiMzNDsgbWF0Y2ggc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzOTQtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTM5NTpjb25maWcgTkVURklMVEVSX1hUX01BVENIX0xFTkdUSFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzOTYtXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O2xlbmd0aFwmIzM0OyBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTQwMy1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNDA0OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfTElNSVRcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDA1LVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtsaW1pdFwmIzM0OyBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTQxMy1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNDE0OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfTUFDXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTQxNS1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7bWFjXCYjMzQ7IGFkZHJlc3MgbWF0Y2ggc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0MjItXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTQyMzpjb25maWcgTkVURklMVEVSX1hUX01BVENIX01BUktcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDI0LVx0dHJpc3RhdGUgJiMzOTtcJiMzNDttYXJrXCYjMzQ7IG1hdGNoIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDMxLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjE0MzI6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9NVUxUSVBPUlRcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDMzLVx0dHJpc3RhdGUgJiMzOTtcJiMzNDttdWx0aXBvcnRcJiMzNDsgTXVsdGlwbGUgcG9ydCBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTQ0MS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNDQyOmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfTkZBQ0NUXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTQ0My1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7bmZhY2N0XCYjMzQ7IG1hdGNoIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDUxLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjE0NTI6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9PU0Zcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDUzLVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtvc2ZcJiMzNDsgUGFzc2l2ZSBPUyBmaW5nZXJwcmludCBtYXRjaCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0NjUtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTQ2Njpjb25maWcgTkVURklMVEVSX1hUX01BVENIX09XTkVSXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTQ2Ny1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7b3duZXJcJiMzNDsgbWF0Y2ggc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0NzMtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTQ3NDpjb25maWcgTkVURklMVEVSX1hUX01BVENIX1BPTElDWVxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0NzUtXHR0cmlzdGF0ZSAmIzM5O0lQc2VjIFwmIzM0O3BvbGljeVwmIzM0OyBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTQ4NC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNDg1OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfUEhZU0RFVlxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0ODYtXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O3BoeXNkZXZcJiMzNDsgbWF0Y2ggc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0OTQtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTQ5NTpjb25maWcgTkVURklMVEVSX1hUX01BVENIX1BLVFRZUEVcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDk2LVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtwa3R0eXBlXCYjMzQ7IHBhY2tldCB0eXBlIG1hdGNoIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTA2LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjE1MDc6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9RVU9UQVxubmV0L25ldGZpbHRlci9LY29uZmlnLTE1MDgtXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O3F1b3RhXCYjMzQ7IG1hdGNoIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTE2LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjE1MTc6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9SQVRFRVNUXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTUxOC1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7cmF0ZWVzdFwmIzM0OyBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTUyNi1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNTI3OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfUkVBTE1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTI4LVx0dHJpc3RhdGUgICYjMzk7XCYjMzQ7cmVhbG1cJiMzNDsgbWF0Y2ggc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTE1NDAtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTU0MTpjb25maWcgTkVURklMVEVSX1hUX01BVENIX1JFQ0VOVFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE1NDItXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O3JlY2VudFwmIzM0OyBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTU1MC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNTUxOmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfU0NUUFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE1NTItXHR0cmlzdGF0ZSAgJiMzOTtcJiMzNDtzY3RwXCYjMzQ7IHByb3RvY29sIG1hdGNoIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTYyLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjE1NjM6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9TT0NLRVRcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTY0LVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtzb2NrZXRcJiMzNDsgbWF0Y2ggc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTE1NzktXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTU4MDpjb25maWcgTkVURklMVEVSX1hUX01BVENIX1NUQVRFXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTU4MS1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7c3RhdGVcJiMzNDsgbWF0Y2ggc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTE1OTAtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTU5MTpjb25maWcgTkVURklMVEVSX1hUX01BVENIX1NUQVRJU1RJQ1xubmV0L25ldGZpbHRlci9LY29uZmlnLTE1OTItXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O3N0YXRpc3RpY1wmIzM0OyBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTU5OS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNjAwOmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfU1RSSU5HXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTYwMS1cdHRyaXN0YXRlICAmIzM5O1wmIzM0O3N0cmluZ1wmIzM0OyBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTYxMi1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNjEzOmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfVENQTVNTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTYxNC1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7dGNwbXNzXCYjMzQ7IG1hdGNoIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNjIyLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjE2MjM6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9USU1FXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTYyNC1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7dGltZVwmIzM0OyBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTYzNi1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNjM3OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfVTMyXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTYzOC1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7dTMyXCYjMzQ7IG1hdGNoIHN1cHBvcnQmIzM5O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAyMzoyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODIwMwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDUwMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIERlcGVuZGVuY2llcyBhbmQgU3ltYm9sIFNjb3BlIGZvciBuZl90YWJsZXMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93biBmb3IgdGhpcyBgbmZfdGFibGVzYCBwYXRjaC4gRmlyc3QsIHRoZSBjb3JlIGRlcGVuZGVuY3kgaXMgYE5FVEZJTFRFUmAsIGFuZCB3aGlsZSBgTkZfVEFCTEVTYCBpdHNlbGYgZGVwZW5kcyBvbiBgTkVURklMVEVSYCwgaXQgc2VlbXMgbGlrZSBlbmFibGluZyBgTkZfVEFCTEVTYCBhbG9uZSBpcyBzdWZmaWNpZW50IGZvciB0aGUgY2hhbmdlcyBpbiB0aGlzIHBhdGNoLCB0aG91Z2ggaW5jbHVkaW5nIGBORVRGSUxURVJgIGZvciBnZW5lcmFsIGNvbmZpZ3VyYXRpb24gaXMgYWx3YXlzIGEgZ29vZCBwcmFjdGljZS4KClNpbmNlIHRoZSBwYXRjaCBtb2RpZmllcyBgbmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmNgLCBhbmQgdGhhdCBmaWxlIGNvbXBpbGVzIG9ubHkgd2hlbiBgQ09ORklHX05GX1RBQkxFU2AgaXMgZW5hYmxlZCwgdGhlbiBlbmFibGluZyBgTkZfVEFCTEVTYCBpcyB0aGUgb25seSBhYnNvbHV0ZWx5IGVzc2VudGlhbCBjb25maWd1cmF0aW9uIG9wdGlvbiBoZXJlLgoKTm93LCBvbiB0byB0aGUgZm9jdXMgc3ltYm9scy4gV2UgaGF2ZSBgbmZfdGFibGVzX2NvbW1pdGAsIGBuZl90YWJsZXNfYWJvcnRgLCBgbmZfdGFibGVzX25ld3NldGVsZW1gLCBhbmQgYG5mX3RhYmxlc19kZWxzZXRlbGVtYC4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBjaGVjayBpZiB0aGV5IHdlcmUgc3RhdGljLCBiZWNhdXNlIHN0YXRpYyBpbmxpbmUgZnVuY3Rpb25zIGFyZSB0byBiZSBhdm9pZGVkIHBlciB0aGUgZ3VpZGVsaW5lcy4gQW5kLCB5ZXMsIHRoZXkgYXJlIGFsbCAqc3RhdGljKi4gV2FpdCBhIHNlY29uZC4uLiB0aGV5IGFyZSBhbGwgc3RhdGljIGJ1dCB0aGV5IGFyZSBhc3NpZ25lZCB0byB0aGUgYG5mX3RhYmxlc19jYmAgYXJyYXkgYW5kIGBuZl90YWJsZXNfc3Vic3lzYCBzdHJ1Y3QuIFRoZXkgYXJlIG5vdCBpbmxpbmVkIGJlY2F1c2UgdGhleSBhcmUgdXNlZCBhcyBmdW5jdGlvbiBwb2ludGVycyEgVGhpcyBtZWFucyB0aGV5IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcywgYW5kIHRoZXkgYXJlIG5vdCBvcHRpbWl6ZWQgYXdheS4gVGhlcmVmb3JlLCB0aGV5IGFyZSBub3QgYSBwcm9ibGVtLgoKVGhlIGtleSBpcyB0aGF0LCBldmVuIHRob3VnaCB0aGV5JiMzOTtyZSBzdGF0aWMsIHRoZXkgc2VydmUgYXMgdGhlICplbnRyeSBwb2ludHMqIHRvIHRoZSBgbmZfdGFibGVzYCBuZXRsaW5rIEFQSS4gVGhlc2UgZnVuY3Rpb25zIGFyZSwgZWZmZWN0aXZlbHksIHRoZSBtZWFucyBieSB3aGljaCBleHRlcm5hbCBjb21wb25lbnRzIGludGVyYWN0IHdpdGggdGhlIG1vZGlmaWVkIGNvZGUuIFRoaXMgaXMgdmVyeSBpbXBvcnRhbnQuCgpJIHNob3VsZCBkb3VibGUgY2hlY2sgdG8gc2VlIGlmIHRoZXJlIGFyZSBvdGhlciwgbm9uLXN0YXRpYyBmdW5jdGlvbnMgaW4gYG5mX3RhYmxlc19hcGkuY2AgdGhhdCBtaWdodCBiZSByZWxldmFudCB0byB0aGUgcGF0Y2guIEFsdGhvdWdoIGl0JiMzOTtzIHVubGlrZWx5LCBpdCYjMzk7cyB3b3J0aCBhIHF1aWNrIGxvb2suIFdlIGhhdmUgdG8gY29uc2lkZXIgdGhhdCBgbmZuZXRsaW5rX3Jjdl9iYXRjaGAgY2FsbHMgYG5mX3RhYmxlc19jb21taXRgIGFuZCBgbmZfdGFibGVzX2Fib3J0YC4gSG93ZXZlciwgYG5mbmV0bGlua19yY3ZfYmF0Y2hgIGlzIGluIGBuZm5ldGxpbmsuY2AsIHdoaWNoIHRlbGxzIG1lIHRoZSBuZXRsaW5rIHN1YnN5c3RlbSBoYW5kbGVzIHRoZSBkaXNwYXRjaC4gU28gdGhlIHN0YXRpYyBmdW5jdGlvbnMgaW4gYG5mX3RhYmxlc19hcGkuY2AgYXJlIGZpbmUgdG8gaW5jbHVkZSBhcyBGb2N1c1N5bWJvbHMgc2luY2UgdGhleSBhY3QgYXMgZW50cnlwb2ludHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDIzOjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0wmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz0xMDc0PV9fcHJpbnRmKDIsIDMpIGludCBuZnRfcmVxdWVzdF9tb2R1bGUoc3RydWN0IG5ldCAqbmV0LCBjb25zdCBjaGFyICpmbXQsXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTEwOS19XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTEwOkVYUE9SVF9TWU1CT0xfR1BMKG5mdF9yZXF1ZXN0X21vZHVsZSk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTExLSNlbmRpZlxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTE4Mzc9dm9pZCBuZnRfcmVnaXN0ZXJfY2hhaW5fdHlwZShjb25zdCBzdHJ1Y3QgbmZ0X2NoYWluX3R5cGUgKmN0eXBlKVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTE4NDYtfVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTg0NzpFWFBPUlRfU1lNQk9MX0dQTChuZnRfcmVnaXN0ZXJfY2hhaW5fdHlwZSk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xODQ4LVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9MTg0OT12b2lkIG5mdF91bnJlZ2lzdGVyX2NoYWluX3R5cGUoY29uc3Qgc3RydWN0IG5mdF9jaGFpbl90eXBlICpjdHlwZSlcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xODU0LX1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjE4NTU6RVhQT1JUX1NZTUJPTF9HUEwobmZ0X3VucmVnaXN0ZXJfY2hhaW5fdHlwZSk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xODU2LVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTMzODk9aW50IG5mdF9yZWdpc3Rlcl9leHByKHN0cnVjdCBuZnRfZXhwcl90eXBlICp0eXBlKVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTM0MDMtfVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MzQwNDpFWFBPUlRfU1lNQk9MX0dQTChuZnRfcmVnaXN0ZXJfZXhwcik7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0zNDA1LVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTM0MTI9dm9pZCBuZnRfdW5yZWdpc3Rlcl9leHByKHN0cnVjdCBuZnRfZXhwcl90eXBlICp0eXBlKVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTM0MTctfVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MzQxODpFWFBPUlRfU1lNQk9MX0dQTChuZnRfdW5yZWdpc3Rlcl9leHByKTtcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTM0MTktXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9ODA4Nj1pbnQgbmZ0X3JlZ2lzdGVyX29iaihzdHJ1Y3QgbmZ0X29iamVjdF90eXBlICpvYmpfdHlwZSlcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy04MDk1LX1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjgwOTY6RVhQT1JUX1NZTUJPTF9HUEwobmZ0X3JlZ2lzdGVyX29iaik7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy04MDk3LVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTgxMDQ9dm9pZCBuZnRfdW5yZWdpc3Rlcl9vYmooc3RydWN0IG5mdF9vYmplY3RfdHlwZSAqb2JqX3R5cGUpXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtODEwOS19XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzo4MTEwOkVYUE9SVF9TWU1CT0xfR1BMKG5mdF91bnJlZ2lzdGVyX29iaik7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy04MTExLVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTg3Njg9dm9pZCBuZnRfb2JqX25vdGlmeShzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IHN0cnVjdCBuZnRfdGFibGUgKnRhYmxlLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTg3ODYtfVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6ODc4NzpFWFBPUlRfU1lNQk9MX0dQTChuZnRfb2JqX25vdGlmeSk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy04Nzg4LVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTg4MDA9dm9pZCBuZnRfcmVnaXN0ZXJfZmxvd3RhYmxlX3R5cGUoc3RydWN0IG5mX2Zsb3d0YWJsZV90eXBlICp0eXBlKVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTg4MDUtfVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6ODgwNjpFWFBPUlRfU1lNQk9MX0dQTChuZnRfcmVnaXN0ZXJfZmxvd3RhYmxlX3R5cGUpO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtODgwNy1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTg4MDg9dm9pZCBuZnRfdW5yZWdpc3Rlcl9mbG93dGFibGVfdHlwZShzdHJ1Y3QgbmZfZmxvd3RhYmxlX3R5cGUgKnR5cGUpXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtODgxMy19XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzo4ODE0OkVYUE9SVF9TWU1CT0xfR1BMKG5mdF91bnJlZ2lzdGVyX2Zsb3d0YWJsZV90eXBlKTtcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTg4MTUtXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9ODgyNj1zdHJ1Y3QgbmZ0X2Zsb3d0YWJsZSAqbmZ0X2Zsb3d0YWJsZV9sb29rdXAoY29uc3Qgc3RydWN0IG5ldCAqbmV0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTg4MzktfVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6ODg0MDpFWFBPUlRfU1lNQk9MX0dQTChuZnRfZmxvd3RhYmxlX2xvb2t1cCk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy04ODQxLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9ODg0Mj12b2lkIG5mX3RhYmxlc19kZWFjdGl2YXRlX2Zsb3d0YWJsZShjb25zdCBzdHJ1Y3QgbmZ0X2N0eCAqY3R4LFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTg4NTYtfVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6ODg1NzpFWFBPUlRfU1lNQk9MX0dQTChuZl90YWJsZXNfZGVhY3RpdmF0ZV9mbG93dGFibGUpO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtODg1OC1cbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz05NzU4PXN0cnVjdCBuZl9ob29rX29wcyAqbmZ0X2hvb2tfZmluZF9vcHMoY29uc3Qgc3RydWN0IG5mdF9ob29rICpob29rLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTk3NjgtfVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6OTc2OTpFWFBPUlRfU1lNQk9MX0dQTChuZnRfaG9va19maW5kX29wcyk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy05NzcwLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9OTc3MT1zdHJ1Y3QgbmZfaG9va19vcHMgKm5mdF9ob29rX2ZpbmRfb3BzX3JjdShjb25zdCBzdHJ1Y3QgbmZ0X2hvb2sgKmhvb2ssXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtOTc4MS19XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzo5NzgyOkVYUE9SVF9TWU1CT0xfR1BMKG5mdF9ob29rX2ZpbmRfb3BzX3JjdSk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy05NzgzLVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTEwMjk5PXZvaWQgbmZfdGFibGVzX3RyYW5zX2Rlc3Ryb3lfZmx1c2hfd29yayhzdHJ1Y3QgbmV0ICpuZXQpXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTAzMDQtfVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTAzMDU6RVhQT1JUX1NZTUJPTF9HUEwobmZfdGFibGVzX3RyYW5zX2Rlc3Ryb3lfZmx1c2hfd29yayk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDMwNi1cbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz0xMTU1MD1pbnQgbmZ0X2NoYWluX3ZhbGlkYXRlX2RlcGVuZGVuY3koY29uc3Qgc3RydWN0IG5mdF9jaGFpbiAqY2hhaW4sXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE1NjEtfVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTE1NjI6RVhQT1JUX1NZTUJPTF9HUEwobmZ0X2NoYWluX3ZhbGlkYXRlX2RlcGVuZGVuY3kpO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE1NjMtXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz0xMTU2ND1pbnQgbmZ0X2NoYWluX3ZhbGlkYXRlX2hvb2tzKGNvbnN0IHN0cnVjdCBuZnRfY2hhaW4gKmNoYWluLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExNTc5LX1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjExNTgwOkVYUE9SVF9TWU1CT0xfR1BMKG5mdF9jaGFpbl92YWxpZGF0ZV9ob29rcyk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTU4MS1cbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz0xMTU5ND1pbnQgbmZ0X3BhcnNlX3UzMl9jaGVjayhjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLCBpbnQgbWF4LCB1MzIgKmRlc3QpXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE2MDQtfVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTE2MDU6RVhQT1JUX1NZTUJPTF9HUEwobmZ0X3BhcnNlX3UzMl9jaGVjayk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTYwNi1cbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz0xMTYzNz1pbnQgbmZ0X2R1bXBfcmVnaXN0ZXIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IGF0dHIsIHVuc2lnbmVkIGludCByZWcpXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE2NDUtfVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTE2NDY6RVhQT1JUX1NZTUJPTF9HUEwobmZ0X2R1bXBfcmVnaXN0ZXIpO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE2NDctXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9MTE2NjA9aW50IG5mdF9wYXJzZV9yZWdpc3Rlcl9sb2FkKGNvbnN0IHN0cnVjdCBuZnRfY3R4ICpjdHgsXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE2OTEtfVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTE2OTI6RVhQT1JUX1NZTUJPTF9HUEwobmZ0X3BhcnNlX3JlZ2lzdGVyX2xvYWQpO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE2OTMtXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9MTE3MzY9aW50IG5mdF9wYXJzZV9yZWdpc3Rlcl9zdG9yZShjb25zdCBzdHJ1Y3QgbmZ0X2N0eCAqY3R4LFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExNzU0LX1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjExNzU1OkVYUE9SVF9TWU1CT0xfR1BMKG5mdF9wYXJzZV9yZWdpc3Rlcl9zdG9yZSk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTc1Ni1cbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz0xMTkyMT1pbnQgbmZ0X2RhdGFfaW5pdChjb25zdCBzdHJ1Y3QgbmZ0X2N0eCAqY3R4LCBzdHJ1Y3QgbmZ0X2RhdGEgKmRhdGEsXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE5NTItfVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTE5NTM6RVhQT1JUX1NZTUJPTF9HUEwobmZ0X2RhdGFfaW5pdCk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTk1NC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMjM6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE3NzgKCQkJCQkJCW91dHB1dDogMjA1CgkJCQkJCQl0aG91Z2h0czogNDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgbmZfdGFibGVzIE5ldGxpbmsgQVBJIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gZGlnZ2luZyBpbnRvIHRoaXMgcGF0Y2guIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoZSBleHBvcnRlZCBmdW5jdGlvbnMgaGVyZSBhcmUgbGFyZ2VseSByZWdpc3RyYXRpb24gdXRpbGl0aWVzIG9yIGhlbHBlcnMsIG5vdCB0aGUgY29yZSBsb2dpYy4gVGhlIG1lYXQgb2YgdGhlIG5ldGxpbmsgaGFuZGxpbmcgaXMgdHVja2VkIGF3YXkgaW4gc3RhdGljIGhhbmRsZXJzLCBhc3NpZ25lZCB0byBgbmZfdGFibGVzX2NiYCBhbmQgYG5mX3RhYmxlc19zdWJzeXNgLgoKTXkga2V5IGZvY3VzIHN5bWJvbHMgZm9yIGZ1enppbmcgd2lsbCBiZSBgbmZfdGFibGVzX2NvbW1pdGAsIGBuZl90YWJsZXNfYWJvcnRgLCBgbmZfdGFibGVzX25ld3NldGVsZW1gLCBhbmQgYG5mX3RhYmxlc19kZWxzZXRlbGVtYC4gKldhaXQqLCByaWdodCwgdGhvc2UgYXJlIHN0YXRpYywgYnV0IHRoZXkgYXJlIGFzc2lnbmVkIHRvIHRoZSBgY29tbWl0YCwgYGFib3J0YCwgYW5kIGBjYWxsYCBtZW1iZXJzIG9mIGBuZm5ldGxpbmtfc3Vic3lzdGVtYCBhbmQgYG5mX3RhYmxlc19jYmAgcmVzcGVjdGl2ZWx5LCBzbyB0aGF0JiMzOTtzIHBlcmZlY3RseSBmaW5lLiBObyBpc3N1ZSB0aGVyZS4KCkxldCYjMzk7cyBkbyBhIHF1aWNrIHNhbml0eSBjaGVjayBmb3IgYW55IG1pc3NpbmcgY29uZmlncywgYnV0IGBORl9UQUJMRVNgIGxvb2tzIHN1ZmZpY2llbnQgZm9yIGNvdmVyYWdlLgoKTm93LCB0byBhcnRpY3VsYXRlIHRoZSByZWFzb25pbmcgYmVoaW5kIHRhcmdldGluZyB0aGVzZSBzeW1ib2xzIGZvciBmdXp6aW5nLiBUaGlzIHBhdGNoIGlzIGZ1bmRhbWVudGFsbHkgYWx0ZXJpbmcgdGhlIG5ldGZpbHRlciBuZl90YWJsZXMgQVBJLCBpbnRyb2R1Y2luZyBhIGBzZXRfdXBkYXRlX2xpc3RgIHdpdGhpbiBgc3RydWN0IG5mdGFibGVzX3Blcm5ldGAuIFRoZSBjaGFuZ2UgaW1wYWN0cyBob3cgc2V0IGVsZW1lbnRzIGFyZSBhZGRlZCwgcmVtb3ZlZCwgYW5kIGFib3J0ZWQgZHVyaW5nIG5ldGxpbmsgdHJhbnNhY3Rpb25zLiBNb3JlIHNwZWNpZmljYWxseSwgaXQmIzM5O3MgbW9kaWZ5aW5nIGZ1bmN0aW9ucyBsaWtlIGBuZnRfdHJhbnNfY29tbWl0X2xpc3RfYWRkX2VsZW1gLCBgbmZ0X3NldF9jb21taXRfdXBkYXRlYCwgYG5mX3RhYmxlc19jb21taXRgLCBhbmQgYF9fbmZfdGFibGVzX2Fib3J0YCB0byBjb3JyZWN0bHkgbWFuYWdlIHRoaXMgbmV3IGxpc3QgYW5kIHRoZSBhc3NvY2lhdGVkIHVwZGF0ZSBvcmRlcmluZy4gR2l2ZW4gdGhhdCB0aGlzIGlzIGEgZnVuY3Rpb25hbCBzaGlmdCBpbiBjb3JlIG5ldGZpbHRlciBsb2dpYywgZXhwb3NlZCB2aWEgbmV0bGluayBzb2NrZXRzLCB3ZSAqYWJzb2x1dGVseSogbmVlZCB0byBmdXp6IGl0LiBJdCYjMzk7cyBhIGNyaXRpY2FsIGFyZWEgZm9yIHByZXZlbnRpbmcgcmVncmVzc2lvbnMgYW5kIHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiB2dWxuZXJhYmlsaXRpZXMuCgpUaW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMjM6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX1RBQkxFUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25mX3RhYmxlc19jb21taXQmIzM0OywKICAgICYjMzQ7bmZfdGFibGVzX2Fib3J0JiMzNDssCiAgICAmIzM0O25mX3RhYmxlc19uZXdzZXRlbGVtJiMzNDssCiAgICAmIzM0O25mX3RhYmxlc19kZWxzZXRlbGVtJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRmaWx0ZXIgbmZfdGFibGVzIEFQSSB0byBpbnRyb2R1Y2UgYSBgc2V0X3VwZGF0ZV9saXN0YCBpbiBgc3RydWN0IG5mdGFibGVzX3Blcm5ldGAuIEl0IGNoYW5nZXMgaG93IHNldCBlbGVtZW50cyBhcmUgYWRkZWQsIHJlbW92ZWQsIGFuZCBhYm9ydGVkIGR1cmluZyBuZXRsaW5rIHRyYW5zYWN0aW9ucy4gU3BlY2lmaWNhbGx5LCBpdCBtb2RpZmllcyBgbmZ0X3RyYW5zX2NvbW1pdF9saXN0X2FkZF9lbGVtYCwgYG5mdF9zZXRfY29tbWl0X3VwZGF0ZWAsIGBuZl90YWJsZXNfY29tbWl0YCwgYW5kIGBfX25mX3RhYmxlc19hYm9ydGAgdG8gaGFuZGxlIHRoZSBuZXcgbGlzdCBhbmQgZW5zdXJlIHByb3BlciBvcmRlcmluZyBvZiBzZXQgdXBkYXRlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldGZpbHRlciBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluayBzb2NrZXRzIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIHByZXZlbnQgcmVncmVzc2lvbnMgb3IgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORl9UQUJMRVMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZl90YWJsZXNfY29tbWl0JiMzNDssCiAgICAmIzM0O25mX3RhYmxlc19hYm9ydCYjMzQ7LAogICAgJiMzNDtuZl90YWJsZXNfbmV3c2V0ZWxlbSYjMzQ7LAogICAgJiMzNDtuZl90YWJsZXNfZGVsc2V0ZWxlbSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbmV0ZmlsdGVyIG5mX3RhYmxlcyBBUEkgdG8gaW50cm9kdWNlIGEgYHNldF91cGRhdGVfbGlzdGAgaW4gYHN0cnVjdCBuZnRhYmxlc19wZXJuZXRgLiBJdCBjaGFuZ2VzIGhvdyBzZXQgZWxlbWVudHMgYXJlIGFkZGVkLCByZW1vdmVkLCBhbmQgYWJvcnRlZCBkdXJpbmcgbmV0bGluayB0cmFuc2FjdGlvbnMuIFNwZWNpZmljYWxseSwgaXQgbW9kaWZpZXMgYG5mdF90cmFuc19jb21taXRfbGlzdF9hZGRfZWxlbWAsIGBuZnRfc2V0X2NvbW1pdF91cGRhdGVgLCBgbmZfdGFibGVzX2NvbW1pdGAsIGFuZCBgX19uZl90YWJsZXNfYWJvcnRgIHRvIGhhbmRsZSB0aGUgbmV3IGxpc3QgYW5kIGVuc3VyZSBwcm9wZXIgb3JkZXJpbmcgb2Ygc2V0IHVwZGF0ZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXRmaWx0ZXIgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgdmlhIG5ldGxpbmsgc29ja2V0cyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBwcmV2ZW50IHJlZ3Jlc3Npb25zIG9yIG1lbW9yeSBjb3JydXB0aW9uIGlzc3Vlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMjM6MjY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAyMzoyNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZWZhY3RvcnMgdGhlIHRyYW5zYWN0aW9uIGNvbW1pdCBhbmQgYWJvcnQgbG9naWMgaW4gbmV0ZmlsdGVyIHRhYmxlcyAobmZfdGFibGVzKS4gSXQgbW92ZXMgdGhlIGBzZXRfdXBkYXRlX2xpc3RgIGZyb20gYmVpbmcgYSBsb2NhbCB2YXJpYWJsZSBpbiBgbmZfdGFibGVzX2NvbW1pdGAgYW5kIGBfX25mX3RhYmxlc19hYm9ydGAgdG8gYSBwZXItbmV0IG5hbWVzcGFjZSBzdHJ1Y3R1cmUgKGBzdHJ1Y3QgbmZ0YWJsZXNfcGVybmV0YCkuIEl0IGFsc28gYWRqdXN0cyB0aGUgb3JkZXIgb2Ygb3BlcmF0aW9ucyBkdXJpbmcgdGhlIGNvbW1pdCBwaGFzZSwgc3BlY2lmaWNhbGx5IGNhbGxpbmcgYG5mdF9zZXRfY29tbWl0X3VwZGF0ZWAgZWFybGllciBhbmQgbW9kaWZ5aW5nIGhvdyBgTkZUX01TR19ERUxTRVRFTEVNYCBtZXNzYWdlcyBhcmUgcHJvY2Vzc2VkIGFuZCBub3RpZmllZC5cblxuVGhlc2UgY2hhbmdlcyBhcmUgcHVyZWx5IHJlbGF0ZWQgdG8gY29udHJvbCBmbG93LCBsaXN0IG1hbmFnZW1lbnQsIGFuZCB0aGUgbmV0ZmlsdGVyIHRyYW5zYWN0aW9uIHN0YXRlIG1hY2hpbmUgKGxpa2VseSB0byBmaXggYSByYWNlIGNvbmRpdGlvbiwgdXNlLWFmdGVyLWZyZWUsIG9yIG9yZGVyaW5nIGlzc3VlKS4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcyB0aGF0IGFyZSBjb3BpZWQgdG8gdXNlciBzcGFjZSwgbm9yIGRvZXMgaXQgbW9kaWZ5IGJ1ZmZlciBhbGxvY2F0aW9ucywgYm91bmRzIGNoZWNraW5nLCBvciBpbml0aWFsaXphdGlvbiBsb2dpYyBpbiBhIHdheSB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIGtlcm5lbCBtZW1vcnkgKGluZm8tbGVha3MpIG9yIGNhdXNlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIGJlIHVzZWQgaW4gY29udHJvbCBmbG93LlxuXG5BbnkgYnVncyBpbnRyb2R1Y2VkIG9yIGZpeGVkIGJ5IHRoaXMgcGF0Y2ggKHN1Y2ggYXMgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZS1mcmVlLCBvciBsaXN0IGNvcnJ1cHRpb24pIHdvdWxkIGJlIHJlbGlhYmx5IGRldGVjdGVkIGJ5IHN0YW5kYXJkIEtBU0FOIGFuZCBzdGFuZGFyZCBrZXJuZWwgZGVidWcgb3B0aW9ucyAobGlrZSBgQ09ORklHX0RFQlVHX0xJU1RgKS4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IGp1c3RpZmllZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMGQ5MzEyYTBkOGRhNmNlODJlMDUzNjg0MzlhOTlmN2E2MGQyZjkxYwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgQXVnIDEyIDIzOjI1OjMyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlcy5oIGIvaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlcy5oCmluZGV4IDNiZTYxMjE0NWMxMzAuLjIzOGY2ZWNiOTBlOTkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L25ldGZpbHRlci9uZl90YWJsZXMuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzLmgKQEAgLTE5NDksNiAmIzQzOzE5NDksNyBAQCBzdHJ1Y3QgbmZ0YWJsZXNfcGVybmV0IHsKIAlzdHJ1Y3QgbGlzdF9oZWFkCWJpbmRpbmdfbGlzdDsKIAlzdHJ1Y3QgbGlzdF9oZWFkCW1vZHVsZV9saXN0OwogCXN0cnVjdCBsaXN0X2hlYWQJbm90aWZ5X2xpc3Q7CiYjNDM7CXN0cnVjdCBsaXN0X2hlYWQJc2V0X3VwZGF0ZV9saXN0OwogCXN0cnVjdCBtdXRleAkJY29tbWl0X211dGV4OwogCXU2NAkJCXRhYmxlX2hhbmRsZTsKIAl1NjQJCQl0c3RhbXA7CmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYyBiL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jCmluZGV4IGFmMzU3ZjZjNTA3MGIuLjVjNGY2YzM1NDU5NTAgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jCkBAIC01OTUsMTAgJiM0Mzs1OTUsMTUgQEAgc3RhdGljIHZvaWQgbmZ0X3RyYW5zX2NvbW1pdF9saXN0X2FkZF90YWlsKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5mdF90cmFucyAqdHIKIHN0YXRpYyB2b2lkIG5mdF90cmFuc19jb21taXRfbGlzdF9hZGRfZWxlbShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBuZnRfdHJhbnMgKnRyYW5zKQogewogCXN0cnVjdCBuZnRhYmxlc19wZXJuZXQgKm5mdF9uZXQgPSBuZnRfcGVybmV0KG5ldCk7CiYjNDM7CXN0cnVjdCBuZnRfdHJhbnNfZWxlbSAqdGU7CiAKIAlXQVJOX09OX09OQ0UodHJhbnMtJmd0O21zZ190eXBlICE9IE5GVF9NU0dfTkVXU0VURUxFTSAmYW1wOyZhbXA7CiAJCSAgICAgdHJhbnMtJmd0O21zZ190eXBlICE9IE5GVF9NU0dfREVMU0VURUxFTSk7CiAKJiM0MzsJdGUgPSBuZnRfdHJhbnNfY29udGFpbmVyX2VsZW0odHJhbnMpOwomIzQzOwlpZiAodGUtJmd0O3NldC0mZ3Q7b3BzLSZndDtjb21taXQgJmFtcDsmYW1wOyBsaXN0X2VtcHR5KCZhbXA7dGUtJmd0O3NldC0mZ3Q7cGVuZGluZ191cGRhdGUpKQomIzQzOwkJbGlzdF9hZGRfdGFpbCgmYW1wO3RlLSZndDtzZXQtJmd0O3BlbmRpbmdfdXBkYXRlLCAmYW1wO25mdF9uZXQtJmd0O3NldF91cGRhdGVfbGlzdCk7CiYjNDM7CiAJaWYgKG5mdF90cmFuc190cnlfY29sbGFwc2UobmZ0X25ldCwgdHJhbnMpKSB7CiAJCWtmcmVlKHRyYW5zKTsKIAkJcmV0dXJuOwpAQCAtNzIwNSw2ICYjNDM7NzIxMCwyMCBAQCBzdGF0aWMgdm9pZCBuZnRfdHJhbnNfZWxlbXNfcmVtb3ZlKGNvbnN0IHN0cnVjdCBuZnRfY3R4ICpjdHgsCiAJfQogfQogCiYjNDM7c3RhdGljIHZvaWQgbmZ0X3RyYW5zX2VsZW1zX3JlbW92ZV9ub3RpZnkoY29uc3Qgc3RydWN0IG5mdF9jdHggKmN0eCwKJiM0MzsJCQkJCSAgY29uc3Qgc3RydWN0IG5mdF90cmFuc19lbGVtICp0ZSkKJiM0Mzt7CiYjNDM7CWludCBpOwomIzQzOwomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgdGUtJmd0O25lbGVtczsgaSYjNDM7JiM0MzspIHsKJiM0MzsJCVdBUk5fT05fT05DRSh0ZS0mZ3Q7ZWxlbXNbaV0udXBkYXRlKTsKJiM0MzsKJiM0MzsJCW5mX3RhYmxlc19zZXRlbGVtX25vdGlmeShjdHgsIHRlLSZndDtzZXQsCiYjNDM7CQkJCQkgdGUtJmd0O2VsZW1zW2ldLnByaXYsCiYjNDM7CQkJCQkgdGUtJmd0O25mdF90cmFucy5tc2dfdHlwZSk7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiBzdGF0aWMgYm9vbCBuZnRfc2V0ZWxlbV92YWxpZF9rZXlfZW5kKGNvbnN0IHN0cnVjdCBuZnRfc2V0ICpzZXQsCiAJCQkJICAgICAgc3RydWN0IG5sYXR0ciAqKm5sYSwgdTMyIGZsYWdzKQogewpAQCAtMTA4NDgsMTEgJiM0MzsxMDg2NywzMSBAQCBzdGF0aWMgdm9pZCBuZl90YWJsZXNfY29tbWl0X2F1ZGl0X2xvZyhzdHJ1Y3QgbGlzdF9oZWFkICphZGwsIHUzMiBnZW5lcmF0aW9uKQogCX0KIH0KIAotc3RhdGljIHZvaWQgbmZ0X3NldF9jb21taXRfdXBkYXRlKHN0cnVjdCBsaXN0X2hlYWQgKnNldF91cGRhdGVfbGlzdCkKJiM0MztzdGF0aWMgdm9pZCBuZnRfc2V0X2NvbW1pdF91cGRhdGUoc3RydWN0IG5mdF9jdHggKmN0eCwKJiM0MzsJCQkJICBzdHJ1Y3QgbmZ0YWJsZXNfcGVybmV0ICpuZnRfbmV0KQogewogCXN0cnVjdCBuZnRfc2V0ICpzZXQsICpuZXh0OwomIzQzOwlzdHJ1Y3QgbmZ0X3RyYW5zX2VsZW0gKnRlOwomIzQzOwlzdHJ1Y3QgbmZ0X3RyYW5zICp0cmFuczsKIAotCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShzZXQsIG5leHQsIHNldF91cGRhdGVfbGlzdCwgcGVuZGluZ191cGRhdGUpIHsKJiM0MzsJaWYgKGxpc3RfZW1wdHkoJmFtcDtuZnRfbmV0LSZndDtzZXRfdXBkYXRlX2xpc3QpKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHRyYW5zLCAmYW1wO25mdF9uZXQtJmd0O2NvbW1pdF9saXN0LCBsaXN0KSB7CiYjNDM7CQluZnRfY3R4X3VwZGF0ZShjdHgsIHRyYW5zKTsKJiM0MzsKJiM0MzsJCXN3aXRjaCAodHJhbnMtJmd0O21zZ190eXBlKSB7CiYjNDM7CQljYXNlIE5GVF9NU0dfREVMU0VURUxFTToKJiM0MzsJCQl0ZSA9IG5mdF90cmFuc19jb250YWluZXJfZWxlbSh0cmFucyk7CiYjNDM7CQkJaWYgKCF0ZS0mZ3Q7c2V0LSZndDtvcHMtJmd0O2NvbW1pdCkKJiM0MzsJCQkJYnJlYWs7CiYjNDM7CiYjNDM7CQkJbmZ0X3RyYW5zX2VsZW1zX3JlbW92ZShjdHgsIHRlKTsKJiM0MzsJCQlicmVhazsKJiM0MzsJCX0KJiM0MzsJfQomIzQzOwomIzQzOwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoc2V0LCBuZXh0LCAmYW1wO25mdF9uZXQtJmd0O3NldF91cGRhdGVfbGlzdCwgcGVuZGluZ191cGRhdGUpIHsKIAkJbGlzdF9kZWxfaW5pdCgmYW1wO3NldC0mZ3Q7cGVuZGluZ191cGRhdGUpOwogCiAJCWlmICghc2V0LSZndDtvcHMtJmd0O2NvbW1pdCB8fCBzZXQtJmd0O2RlYWQpCkBAIC0xMDg4NSw3ICYjNDM7MTA5MjQsNiBAQCBzdGF0aWMgaW50IG5mX3RhYmxlc19jb21taXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCXN0cnVjdCBuZnRfdHJhbnNfYmluZGluZyAqdHJhbnNfYmluZGluZzsKIAlzdHJ1Y3QgbmZ0X3RyYW5zICp0cmFucywgKm5leHQ7CiAJdW5zaWduZWQgaW50IGJhc2Vfc2VxLCBnY19zZXE7Ci0JTElTVF9IRUFEKHNldF91cGRhdGVfbGlzdCk7CiAJc3RydWN0IG5mdF90cmFuc19lbGVtICp0ZTsKIAlzdHJ1Y3QgbmZ0X2NoYWluICpjaGFpbjsKIAlzdHJ1Y3QgbmZ0X3RhYmxlICp0YWJsZTsKQEAgLTEwOTYwLDYgJiM0MzsxMDk5OCw4IEBAIHN0YXRpYyBpbnQgbmZfdGFibGVzX2NvbW1pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IpCiAJfQogCiAJLyogc3RlcCAyLiAgTWFrZSBydWxlc19nZW5fWCB2aXNpYmxlIHRvIHBhY2tldCBwYXRoICovCiYjNDM7CW5mdF9zZXRfY29tbWl0X3VwZGF0ZSgmYW1wO2N0eCwgbmZ0X25ldCk7CiYjNDM7CiAJbGlzdF9mb3JfZWFjaF9lbnRyeSh0YWJsZSwgJmFtcDtuZnRfbmV0LSZndDt0YWJsZXMsIGxpc3QpIHsKIAkJbGlzdF9mb3JfZWFjaF9lbnRyeShjaGFpbiwgJmFtcDt0YWJsZS0mZ3Q7Y2hhaW5zLCBsaXN0KQogCQkJbmZfdGFibGVzX2NvbW1pdF9jaGFpbihuZXQsIGNoYWluKTsKQEAgLTExMDkxLDI3ICYjNDM7MTExMzEsMTYgQEAgc3RhdGljIGludCBuZl90YWJsZXNfY29tbWl0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAkJCWJyZWFrOwogCQljYXNlIE5GVF9NU0dfTkVXU0VURUxFTToKIAkJCXRlID0gbmZ0X3RyYW5zX2NvbnRhaW5lcl9lbGVtKHRyYW5zKTsKLQogCQkJbmZ0X3RyYW5zX2VsZW1zX2FkZCgmYW1wO2N0eCwgdGUpOwotCi0JCQlpZiAodGUtJmd0O3NldC0mZ3Q7b3BzLSZndDtjb21taXQgJmFtcDsmYW1wOwotCQkJICAgIGxpc3RfZW1wdHkoJmFtcDt0ZS0mZ3Q7c2V0LSZndDtwZW5kaW5nX3VwZGF0ZSkpIHsKLQkJCQlsaXN0X2FkZF90YWlsKCZhbXA7dGUtJmd0O3NldC0mZ3Q7cGVuZGluZ191cGRhdGUsCi0JCQkJCSAgICAgICZhbXA7c2V0X3VwZGF0ZV9saXN0KTsKLQkJCX0KIAkJCW5mdF90cmFuc19kZXN0cm95KHRyYW5zKTsKIAkJCWJyZWFrOwogCQljYXNlIE5GVF9NU0dfREVMU0VURUxFTToKIAkJY2FzZSBORlRfTVNHX0RFU1RST1lTRVRFTEVNOgogCQkJdGUgPSBuZnRfdHJhbnNfY29udGFpbmVyX2VsZW0odHJhbnMpOwotCi0JCQluZnRfdHJhbnNfZWxlbXNfcmVtb3ZlKCZhbXA7Y3R4LCB0ZSk7Ci0KLQkJCWlmICh0ZS0mZ3Q7c2V0LSZndDtvcHMtJmd0O2NvbW1pdCAmYW1wOyZhbXA7Ci0JCQkgICAgbGlzdF9lbXB0eSgmYW1wO3RlLSZndDtzZXQtJmd0O3BlbmRpbmdfdXBkYXRlKSkgewotCQkJCWxpc3RfYWRkX3RhaWwoJmFtcDt0ZS0mZ3Q7c2V0LSZndDtwZW5kaW5nX3VwZGF0ZSwKLQkJCQkJICAgICAgJmFtcDtzZXRfdXBkYXRlX2xpc3QpOwotCQkJfQomIzQzOwkJCWlmICh0ZS0mZ3Q7c2V0LSZndDtvcHMtJmd0O2NvbW1pdCkKJiM0MzsJCQkJbmZ0X3RyYW5zX2VsZW1zX3JlbW92ZV9ub3RpZnkoJmFtcDtjdHgsIHRlKTsKJiM0MzsJCQllbHNlCiYjNDM7CQkJCW5mdF90cmFuc19lbGVtc19yZW1vdmUoJmFtcDtjdHgsIHRlKTsKIAkJCWJyZWFrOwogCQljYXNlIE5GVF9NU0dfTkVXT0JKOgogCQkJaWYgKG5mdF90cmFuc19vYmpfdXBkYXRlKHRyYW5zKSkgewpAQCAtMTExODAsOCAmIzQzOzExMjA5LDYgQEAgc3RhdGljIGludCBuZl90YWJsZXNfY29tbWl0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAkJfQogCX0KIAotCW5mdF9zZXRfY29tbWl0X3VwZGF0ZSgmYW1wO3NldF91cGRhdGVfbGlzdCk7Ci0KIAluZnRfY29tbWl0X25vdGlmeShuZXQsIE5FVExJTktfQ0Ioc2tiKS5wb3J0aWQpOwogCW5mX3RhYmxlc19nZW5fbm90aWZ5KG5ldCwgc2tiLCBORlRfTVNHX05FV0dFTik7CiAJbmZfdGFibGVzX2NvbW1pdF9hdWRpdF9sb2coJmFtcDthZGwsIG5mdF9iYXNlX3NlcShuZXQpKTsKQEAgLTExMjQ3LDExICYjNDM7MTEyNzQsMTEgQEAgc3RhdGljIHZvaWQgbmZfdGFibGVzX2Fib3J0X3JlbGVhc2Uoc3RydWN0IG5mdF90cmFucyAqdHJhbnMpCiAJa2ZyZWUodHJhbnMpOwogfQogCi1zdGF0aWMgdm9pZCBuZnRfc2V0X2Fib3J0X3VwZGF0ZShzdHJ1Y3QgbGlzdF9oZWFkICpzZXRfdXBkYXRlX2xpc3QpCiYjNDM7c3RhdGljIHZvaWQgbmZ0X3NldF9hYm9ydF91cGRhdGUoc3RydWN0IG5mdGFibGVzX3Blcm5ldCAqbmZ0X25ldCkKIHsKIAlzdHJ1Y3QgbmZ0X3NldCAqc2V0LCAqbmV4dDsKIAotCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShzZXQsIG5leHQsIHNldF91cGRhdGVfbGlzdCwgcGVuZGluZ191cGRhdGUpIHsKJiM0MzsJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHNldCwgbmV4dCwgJmFtcDtuZnRfbmV0LSZndDtzZXRfdXBkYXRlX2xpc3QsIHBlbmRpbmdfdXBkYXRlKSB7CiAJCWxpc3RfZGVsX2luaXQoJmFtcDtzZXQtJmd0O3BlbmRpbmdfdXBkYXRlKTsKIAogCQlpZiAoIXNldC0mZ3Q7b3BzLSZndDthYm9ydCkKQEAgLTExMzg2LDMzICYjNDM7MTE0MTMsMjIgQEAgc3RhdGljIGludCBfX25mX3RhYmxlc19hYm9ydChzdHJ1Y3QgbmV0ICpuZXQsIGVudW0gbmZubF9hYm9ydF9hY3Rpb24gYWN0aW9uKQogCQkJbmZ0X3RyYW5zX2Rlc3Ryb3kodHJhbnMpOwogCQkJYnJlYWs7CiAJCWNhc2UgTkZUX01TR19ORVdTRVRFTEVNOgomIzQzOwkJCXRlID0gbmZ0X3RyYW5zX2NvbnRhaW5lcl9lbGVtKHRyYW5zKTsKIAkJCWlmIChuZnRfdHJhbnNfZWxlbV9zZXRfYm91bmQodHJhbnMpKSB7CiYjNDM7CQkJCWxpc3RfZGVsX2luaXQoJmFtcDt0ZS0mZ3Q7c2V0LSZndDtwZW5kaW5nX3VwZGF0ZSk7CiAJCQkJbmZ0X3RyYW5zX2Rlc3Ryb3kodHJhbnMpOwogCQkJCWJyZWFrOwogCQkJfQotCQkJdGUgPSBuZnRfdHJhbnNfY29udGFpbmVyX2VsZW0odHJhbnMpOwogCQkJaWYgKCFuZnRfdHJhbnNfZWxlbXNfbmV3X2Fib3J0KCZhbXA7Y3R4LCB0ZSkpIHsKIAkJCQluZnRfdHJhbnNfZGVzdHJveSh0cmFucyk7CiAJCQkJYnJlYWs7CiAJCQl9Ci0KLQkJCWlmICh0ZS0mZ3Q7c2V0LSZndDtvcHMtJmd0O2Fib3J0ICZhbXA7JmFtcDsKLQkJCSAgICBsaXN0X2VtcHR5KCZhbXA7dGUtJmd0O3NldC0mZ3Q7cGVuZGluZ191cGRhdGUpKSB7Ci0JCQkJbGlzdF9hZGRfdGFpbCgmYW1wO3RlLSZndDtzZXQtJmd0O3BlbmRpbmdfdXBkYXRlLAotCQkJCQkgICAgICAmYW1wO3NldF91cGRhdGVfbGlzdCk7Ci0JCQl9CiAJCQlicmVhazsKIAkJY2FzZSBORlRfTVNHX0RFTFNFVEVMRU06CiAJCWNhc2UgTkZUX01TR19ERVNUUk9ZU0VURUxFTToKIAkJCXRlID0gbmZ0X3RyYW5zX2NvbnRhaW5lcl9lbGVtKHRyYW5zKTsKIAogCQkJbmZ0X3RyYW5zX2VsZW1zX2Rlc3Ryb3lfYWJvcnQoJmFtcDtjdHgsIHRlKTsKLQotCQkJaWYgKHRlLSZndDtzZXQtJmd0O29wcy0mZ3Q7YWJvcnQgJmFtcDsmYW1wOwotCQkJICAgIGxpc3RfZW1wdHkoJmFtcDt0ZS0mZ3Q7c2V0LSZndDtwZW5kaW5nX3VwZGF0ZSkpIHsKLQkJCQlsaXN0X2FkZF90YWlsKCZhbXA7dGUtJmd0O3NldC0mZ3Q7cGVuZGluZ191cGRhdGUsCi0JCQkJCSAgICAgICZhbXA7c2V0X3VwZGF0ZV9saXN0KTsKLQkJCX0KIAkJCW5mdF90cmFuc19kZXN0cm95KHRyYW5zKTsKIAkJCWJyZWFrOwogCQljYXNlIE5GVF9NU0dfTkVXT0JKOgpAQCAtMTE0NTgsNyAmIzQzOzExNDc0LDcgQEAgc3RhdGljIGludCBfX25mX3RhYmxlc19hYm9ydChzdHJ1Y3QgbmV0ICpuZXQsIGVudW0gbmZubF9hYm9ydF9hY3Rpb24gYWN0aW9uKQogCiAJV0FSTl9PTl9PTkNFKCFsaXN0X2VtcHR5KCZhbXA7bmZ0X25ldC0mZ3Q7Y29tbWl0X3NldF9saXN0KSk7CiAKLQluZnRfc2V0X2Fib3J0X3VwZGF0ZSgmYW1wO3NldF91cGRhdGVfbGlzdCk7CiYjNDM7CW5mdF9zZXRfYWJvcnRfdXBkYXRlKG5mdF9uZXQpOwogCiAJc3luY2hyb25pemVfcmN1KCk7CiAKQEAgLTEyMTQyLDYgJiM0MzsxMjE1OCw3IEBAIHN0YXRpYyBpbnQgX19uZXRfaW5pdCBuZl90YWJsZXNfaW5pdF9uZXQoc3RydWN0IG5ldCAqbmV0KQogCUlOSVRfTElTVF9IRUFEKCZhbXA7bmZ0X25ldC0mZ3Q7YmluZGluZ19saXN0KTsKIAlJTklUX0xJU1RfSEVBRCgmYW1wO25mdF9uZXQtJmd0O21vZHVsZV9saXN0KTsKIAlJTklUX0xJU1RfSEVBRCgmYW1wO25mdF9uZXQtJmd0O25vdGlmeV9saXN0KTsKJiM0MzsJSU5JVF9MSVNUX0hFQUQoJmFtcDtuZnRfbmV0LSZndDtzZXRfdXBkYXRlX2xpc3QpOwogCW11dGV4X2luaXQoJmFtcDtuZnRfbmV0LSZndDtjb21taXRfbXV0ZXgpOwogCW5ldC0mZ3Q7bmZ0LmJhc2Vfc2VxID0gMTsKIAluZnRfbmV0LSZndDtnY19zZXEgPSAwOwpAQCAtMTIxODYsNiAmIzQzOzEyMjAzLDcgQEAgc3RhdGljIHZvaWQgX19uZXRfZXhpdCBuZl90YWJsZXNfZXhpdF9uZXQoc3RydWN0IG5ldCAqbmV0KQogCVdBUk5fT05fT05DRSghbGlzdF9lbXB0eSgmYW1wO25mdF9uZXQtJmd0O21vZHVsZV9saXN0KSk7CiAJV0FSTl9PTl9PTkNFKCFsaXN0X2VtcHR5KCZhbXA7bmZ0X25ldC0mZ3Q7bm90aWZ5X2xpc3QpKTsKIAlXQVJOX09OX09OQ0UoIWxpc3RfZW1wdHkoJmFtcDtuZnRfbmV0LSZndDtkZXN0cm95X2xpc3QpKTsKJiM0MzsJV0FSTl9PTl9PTkNFKCFsaXN0X2VtcHR5KCZhbXA7bmZ0X25ldC0mZ3Q7c2V0X3VwZGF0ZV9saXN0KSk7CiB9CiAKIHN0YXRpYyB2b2lkIG5mX3RhYmxlc19leGl0X2JhdGNoKHN0cnVjdCBsaXN0X2hlYWQgKm5ldF9leGl0X2xpc3QpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAyMzoyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0Nzc3CgkJCQkJCQlvdXRwdXQ6IDI5MgoJCQkJCQkJdGhvdWdodHM6IDk3NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiB0aGUgTmV0ZmlsdGVyIFRhYmxlcyBDb21taXQvQWJvcnQgUGF0Y2gqKgoKT2theSwgaGVyZSYjMzk7cyB3aGF0IEkmIzM5O3ZlIGdvdCBhZnRlciByZXZpZXdpbmcgdGhpcyBwYXRjaC4gSXQmIzM5O3MgZm9jdXNlZCBvbiByZWZhY3RvcmluZyB0aGUgY29tbWl0IGFuZCBhYm9ydCBsb2dpYyB3aXRoaW4gdGhlIG5ldGZpbHRlciB0YWJsZXMgY29kZS4gVGhlIGNvcmUgY2hhbmdlIGlzIHRoZSByZWxvY2F0aW9uIG9mIHRoZSBgc2V0X3VwZGF0ZV9saXN0YC4gUHJldmlvdXNseSwgdGhpcyBsaXN0IHdhcyBhIGxvY2FsIHZhcmlhYmxlIHdpdGhpbiBgbmZfdGFibGVzX2NvbW1pdGAgYW5kIGBfX25mX3RhYmxlc19hYm9ydGAuIE5vdywgaXQmIzM5O3MgYmVlbiBtb3ZlZCB0byB0aGUgYHN0cnVjdCBuZnRhYmxlc19wZXJuZXRgIHN0cnVjdHVyZSwgbWFraW5nIGl0IGEgcGVyLW5ldCBuYW1lc3BhY2UgcmVzb3VyY2UuCgpUaGUgaW1wbGljYXRpb25zIGFyZSBjbGVhcjogdGhpcyBsaXN0LCB3aGljaCB0cmFja3Mgc2V0cyBwZW5kaW5nIHVwZGF0ZXMsIGNhbiBub3cgYmUgcG9wdWxhdGVkIGR1cmluZyB0aGUgdHJhbnNhY3Rpb24gcHJlcGFyYXRpb24gc3RhZ2UgYW5kIGlzIHRoZW4gcHJvY2Vzc2VkIGR1cmluZyBjb21taXQgb3IgYWJvcnQuIFRoaXMgbGlzdCBtYW5hZ2VtZW50IGFsc28gY2hhbmdlcyBob3cgYE5GVF9NU0dfREVMU0VURUxFTWAgbWVzc2FnZXMgYXJlIGhhbmRsZWQsIHdpdGggYW4gZWFybGllciBjYWxsIHRvIGBuZnRfc2V0X2NvbW1pdF91cGRhdGVgLiBUaGlzIGxpa2VseSBhbHRlcnMgdGhlIHByb2Nlc3Npbmcgb3JkZXIgb2YgdGhlc2UgbWVzc2FnZXMgd2l0aGluIHRoZSBjb21taXQgcHJvY2Vzcy4KCk15IGV4cGVydCBpbnR1aXRpb24sIGNvbWJpbmVkIHdpdGggdGhlIGNvbnRleHQsIHN0cm9uZ2x5IHN1Z2dlc3RzIHRoaXMgaXMgYWJvdXQgZml4aW5nIGEgcmFjZSBjb25kaXRpb24sIGEgdXNlLWFmdGVyLWZyZWUgc2NlbmFyaW8sIG9yIGEgc2ltaWxhciBvcmRlcmluZyBidWcgcmVsYXRlZCB0byBzZXQgZWxlbWVudCB1cGRhdGVzIGFuZCB0aGUgY29tbWl0L2Fib3J0IHByb2Nlc3MuIFRoaXMgaXNuJiMzOTt0IGFib3V0IGludHJvZHVjaW5nIG5ldyBmZWF0dXJlczsgaXQmIzM5O3MgYSBjcml0aWNhbCBidWcgZml4LgoKTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uIGZvciBteSBldmFsdWF0aW9uIGlzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBEb2VzIHRoaXMgcGF0Y2ggaW50cm9kdWNlIGEgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyByZWFkIG9yIHVzZWQgaW4gY29udHJvbCBmbG93PyBBZnRlciBhIGNhcmVmdWwgZXhhbWluYXRpb24sIEkmIzM5O20gY29uZmlkZW50IHRoZSBhbnN3ZXIgaXMgbm8uIFRoaXMgcGF0Y2ggZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSBuZXcgc3RydWN0dXJlcyB0aGF0IGFyZSBwYXNzZWQgdG8gdXNlciBzcGFjZS4gSXQgZG9lc24mIzM5O3QgdG91Y2ggbWVtb3J5IGFsbG9jYXRpb24gb3IgdGhlIGZpZWxkcyBvZiBhbnkgZGF0YSBzdHJ1Y3R1cmVzIGluIGEgd2F5IHRoYXQgd291bGQgaW50cm9kdWNlIGFuIGluZm8tbGVhay4gSXQmIzM5O3MgcHVyZWx5IGFib3V0IGNvbnRyb2wgZmxvdyBhbmQgbGlzdCBtYW5hZ2VtZW50LiBUaGUgYHNldF91cGRhdGVfbGlzdGAgaXMganVzdCBhIGxpc3QgaGVhZC4gVGhlIGZhY3QgdGhhdCB0aGUgbGlzdCBpcyBtb3ZlZCB0byBhIHBlci1uZXQgc3RydWN0dXJlIGRvZXNuJiMzOTt0IGNoYW5nZSBhbnl0aGluZyBhYm91dCBob3cgaXRzIGVsZW1lbnRzIGFyZSBpbml0aWFsaXplZCwgbm9yIGRvZXMgaXQgbWFrZSBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHZ1bG5lcmFiaWxpdGllcy4KClNvLCB3aGlsZSB0aGlzIHBhdGNoIGlzIGNydWNpYWwgZm9yIGZpeGluZyB0aGUgYnVnIGl0IGFkZHJlc3NlcywgaXQgZG9lc24mIzM5O3QgbmVjZXNzaXRhdGUgYSBzcGVjaWFsaXplZCBLTVNBTiAoS2VybmVsIE1lbW9yeSBTYW5pdGl6ZXIpIGZ1enppbmcgc2Vzc2lvbi4gVGhlIHN0YW5kYXJkIEtBU0FOIChLZXJuZWwgQWRkcmVzcyBTYW5pdGl6ZXIpIGFuZCBzdGFuZGFyZCBkZWJ1ZyBvcHRpb25zIChsaWtlIGBDT05GSUdfREVCVUdfTElTVGApIGFyZSBtb3JlIHRoYW4gY2FwYWJsZSBvZiBjYXRjaGluZyBhbnkgdXNlLWFmdGVyLWZyZWUsIGxpc3QgY29ycnVwdGlvbiwgb3IgcmVsYXRlZCBtZW1vcnkgZXJyb3JzIHRoYXQgbWlnaHQgYXJpc2UgZnJvbSB0aGVzZSBjaGFuZ2VzLiBTdGFuZGFyZCBkZWJ1Z2dpbmcgdG9vbHMgYXJlIHN1ZmZpY2llbnQuIEkgY2FuIHJlbHkgb24gdGhvc2UuIEkgZG8gbm90IHNlZSBhbnkgbmV3IGluZm9ybWF0aW9uIGxlYWtzLCB3aGljaCBpcyBnb29kLgoKSSYjMzk7bSByZWFkeSB0byBtb3ZlIG9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAyMzoyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZWZhY3RvcnMgdGhlIHRyYW5zYWN0aW9uIGNvbW1pdCBhbmQgYWJvcnQgbG9naWMgaW4gbmV0ZmlsdGVyIHRhYmxlcyAobmZfdGFibGVzKS4gSXQgbW92ZXMgdGhlIGBzZXRfdXBkYXRlX2xpc3RgIGZyb20gYmVpbmcgYSBsb2NhbCB2YXJpYWJsZSBpbiBgbmZfdGFibGVzX2NvbW1pdGAgYW5kIGBfX25mX3RhYmxlc19hYm9ydGAgdG8gYSBwZXItbmV0IG5hbWVzcGFjZSBzdHJ1Y3R1cmUgKGBzdHJ1Y3QgbmZ0YWJsZXNfcGVybmV0YCkuIEl0IGFsc28gYWRqdXN0cyB0aGUgb3JkZXIgb2Ygb3BlcmF0aW9ucyBkdXJpbmcgdGhlIGNvbW1pdCBwaGFzZSwgc3BlY2lmaWNhbGx5IGNhbGxpbmcgYG5mdF9zZXRfY29tbWl0X3VwZGF0ZWAgZWFybGllciBhbmQgbW9kaWZ5aW5nIGhvdyBgTkZUX01TR19ERUxTRVRFTEVNYCBtZXNzYWdlcyBhcmUgcHJvY2Vzc2VkIGFuZCBub3RpZmllZC5cblxuVGhlc2UgY2hhbmdlcyBhcmUgcHVyZWx5IHJlbGF0ZWQgdG8gY29udHJvbCBmbG93LCBsaXN0IG1hbmFnZW1lbnQsIGFuZCB0aGUgbmV0ZmlsdGVyIHRyYW5zYWN0aW9uIHN0YXRlIG1hY2hpbmUgKGxpa2VseSB0byBmaXggYSByYWNlIGNvbmRpdGlvbiwgdXNlLWFmdGVyLWZyZWUsIG9yIG9yZGVyaW5nIGlzc3VlKS4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcyB0aGF0IGFyZSBjb3BpZWQgdG8gdXNlciBzcGFjZSwgbm9yIGRvZXMgaXQgbW9kaWZ5IGJ1ZmZlciBhbGxvY2F0aW9ucywgYm91bmRzIGNoZWNraW5nLCBvciBpbml0aWFsaXphdGlvbiBsb2dpYyBpbiBhIHdheSB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIGtlcm5lbCBtZW1vcnkgKGluZm8tbGVha3MpIG9yIGNhdXNlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIGJlIHVzZWQgaW4gY29udHJvbCBmbG93LlxuXG5BbnkgYnVncyBpbnRyb2R1Y2VkIG9yIGZpeGVkIGJ5IHRoaXMgcGF0Y2ggKHN1Y2ggYXMgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZS1mcmVlLCBvciBsaXN0IGNvcnJ1cHRpb24pIHdvdWxkIGJlIHJlbGlhYmx5IGRldGVjdGVkIGJ5IHN0YW5kYXJkIEtBU0FOIGFuZCBzdGFuZGFyZCBrZXJuZWwgZGVidWcgb3B0aW9ucyAobGlrZSBgQ09ORklHX0RFQlVHX0xJU1RgKS4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IGp1c3RpZmllZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlZmFjdG9ycyB0aGUgdHJhbnNhY3Rpb24gY29tbWl0IGFuZCBhYm9ydCBsb2dpYyBpbiBuZXRmaWx0ZXIgdGFibGVzIChuZl90YWJsZXMpLiBJdCBtb3ZlcyB0aGUgYHNldF91cGRhdGVfbGlzdGAgZnJvbSBiZWluZyBhIGxvY2FsIHZhcmlhYmxlIGluIGBuZl90YWJsZXNfY29tbWl0YCBhbmQgYF9fbmZfdGFibGVzX2Fib3J0YCB0byBhIHBlci1uZXQgbmFtZXNwYWNlIHN0cnVjdHVyZSAoYHN0cnVjdCBuZnRhYmxlc19wZXJuZXRgKS4gSXQgYWxzbyBhZGp1c3RzIHRoZSBvcmRlciBvZiBvcGVyYXRpb25zIGR1cmluZyB0aGUgY29tbWl0IHBoYXNlLCBzcGVjaWZpY2FsbHkgY2FsbGluZyBgbmZ0X3NldF9jb21taXRfdXBkYXRlYCBlYXJsaWVyIGFuZCBtb2RpZnlpbmcgaG93IGBORlRfTVNHX0RFTFNFVEVMRU1gIG1lc3NhZ2VzIGFyZSBwcm9jZXNzZWQgYW5kIG5vdGlmaWVkLlxuXG5UaGVzZSBjaGFuZ2VzIGFyZSBwdXJlbHkgcmVsYXRlZCB0byBjb250cm9sIGZsb3csIGxpc3QgbWFuYWdlbWVudCwgYW5kIHRoZSBuZXRmaWx0ZXIgdHJhbnNhY3Rpb24gc3RhdGUgbWFjaGluZSAobGlrZWx5IHRvIGZpeCBhIHJhY2UgY29uZGl0aW9uLCB1c2UtYWZ0ZXItZnJlZSwgb3Igb3JkZXJpbmcgaXNzdWUpLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgYXJlIGNvcGllZCB0byB1c2VyIHNwYWNlLCBub3IgZG9lcyBpdCBtb2RpZnkgYnVmZmVyIGFsbG9jYXRpb25zLCBib3VuZHMgY2hlY2tpbmcsIG9yIGluaXRpYWxpemF0aW9uIGxvZ2ljIGluIGEgd2F5IHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQga2VybmVsIG1lbW9yeSAoaW5mby1sZWFrcykgb3IgY2F1c2UgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gYmUgdXNlZCBpbiBjb250cm9sIGZsb3cuXG5cbkFueSBidWdzIGludHJvZHVjZWQgb3IgZml4ZWQgYnkgdGhpcyBwYXRjaCAoc3VjaCBhcyB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlLWZyZWUsIG9yIGxpc3QgY29ycnVwdGlvbikgd291bGQgYmUgcmVsaWFibHkgZGV0ZWN0ZWQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBkZWJ1ZyBvcHRpb25zIChsaWtlIGBDT05GSUdfREVCVUdfTElTVGApLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QganVzdGlmaWVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xMlQyMzoyNTozMy41MTM3NzI0ODVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODM5ODAzOTEyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORl9UQUJMRVNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZl90YWJsZXNfY29tbWl0XCIsXG4gICAgXCJuZl90YWJsZXNfYWJvcnRcIixcbiAgICBcIm5mX3RhYmxlc19uZXdzZXRlbGVtXCIsXG4gICAgXCJuZl90YWJsZXNfZGVsc2V0ZWxlbVwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVmYWN0b3JzIHRoZSB0cmFuc2FjdGlvbiBjb21taXQgYW5kIGFib3J0IGxvZ2ljIGluIG5ldGZpbHRlciB0YWJsZXMgKG5mX3RhYmxlcykuIEl0IG1vdmVzIHRoZSBgc2V0X3VwZGF0ZV9saXN0YCBmcm9tIGJlaW5nIGEgbG9jYWwgdmFyaWFibGUgaW4gYG5mX3RhYmxlc19jb21taXRgIGFuZCBgX19uZl90YWJsZXNfYWJvcnRgIHRvIGEgcGVyLW5ldCBuYW1lc3BhY2Ugc3RydWN0dXJlIChgc3RydWN0IG5mdGFibGVzX3Blcm5ldGApLiBJdCBhbHNvIGFkanVzdHMgdGhlIG9yZGVyIG9mIG9wZXJhdGlvbnMgZHVyaW5nIHRoZSBjb21taXQgcGhhc2UsIHNwZWNpZmljYWxseSBjYWxsaW5nIGBuZnRfc2V0X2NvbW1pdF91cGRhdGVgIGVhcmxpZXIgYW5kIG1vZGlmeWluZyBob3cgYE5GVF9NU0dfREVMU0VURUxFTWAgbWVzc2FnZXMgYXJlIHByb2Nlc3NlZCBhbmQgbm90aWZpZWQuXFxuXFxuVGhlc2UgY2hhbmdlcyBhcmUgcHVyZWx5IHJlbGF0ZWQgdG8gY29udHJvbCBmbG93LCBsaXN0IG1hbmFnZW1lbnQsIGFuZCB0aGUgbmV0ZmlsdGVyIHRyYW5zYWN0aW9uIHN0YXRlIG1hY2hpbmUgKGxpa2VseSB0byBmaXggYSByYWNlIGNvbmRpdGlvbiwgdXNlLWFmdGVyLWZyZWUsIG9yIG9yZGVyaW5nIGlzc3VlKS4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcyB0aGF0IGFyZSBjb3BpZWQgdG8gdXNlciBzcGFjZSwgbm9yIGRvZXMgaXQgbW9kaWZ5IGJ1ZmZlciBhbGxvY2F0aW9ucywgYm91bmRzIGNoZWNraW5nLCBvciBpbml0aWFsaXphdGlvbiBsb2dpYyBpbiBhIHdheSB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIGtlcm5lbCBtZW1vcnkgKGluZm8tbGVha3MpIG9yIGNhdXNlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIGJlIHVzZWQgaW4gY29udHJvbCBmbG93LlxcblxcbkFueSBidWdzIGludHJvZHVjZWQgb3IgZml4ZWQgYnkgdGhpcyBwYXRjaCAoc3VjaCBhcyB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlLWZyZWUsIG9yIGxpc3QgY29ycnVwdGlvbikgd291bGQgYmUgcmVsaWFibHkgZGV0ZWN0ZWQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBkZWJ1ZyBvcHRpb25zIChsaWtlIGBDT05GSUdfREVCVUdfTElTVGApLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QganVzdGlmaWVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRmaWx0ZXIgbmZfdGFibGVzIEFQSSB0byBpbnRyb2R1Y2UgYSBgc2V0X3VwZGF0ZV9saXN0YCBpbiBgc3RydWN0IG5mdGFibGVzX3Blcm5ldGAuIEl0IGNoYW5nZXMgaG93IHNldCBlbGVtZW50cyBhcmUgYWRkZWQsIHJlbW92ZWQsIGFuZCBhYm9ydGVkIGR1cmluZyBuZXRsaW5rIHRyYW5zYWN0aW9ucy4gU3BlY2lmaWNhbGx5LCBpdCBtb2RpZmllcyBgbmZ0X3RyYW5zX2NvbW1pdF9saXN0X2FkZF9lbGVtYCwgYG5mdF9zZXRfY29tbWl0X3VwZGF0ZWAsIGBuZl90YWJsZXNfY29tbWl0YCwgYW5kIGBfX25mX3RhYmxlc19hYm9ydGAgdG8gaGFuZGxlIHRoZSBuZXcgbGlzdCBhbmQgZW5zdXJlIHByb3BlciBvcmRlcmluZyBvZiBzZXQgdXBkYXRlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldGZpbHRlciBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluayBzb2NrZXRzIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIHByZXZlbnQgcmVncmVzc2lvbnMgb3IgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQyMzoyNTozMy41MTM3Nzc5MjVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NzYwMTg5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDBkOTMxMmEwZDhkYTZjZTgyZTA1MzY4NDM5YTk5ZjdhNjBkMmY5MWNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBBdWcgMTIgMjM6MjU6MzIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlcy5oIGIvaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlcy5oXFxuaW5kZXggM2JlNjEyMTQ1YzEzMC4uMjM4ZjZlY2I5MGU5OSAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzLmhcXG4rKysgYi9pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzLmhcXG5AQCAtMTk0OSw2ICsxOTQ5LDcgQEAgc3RydWN0IG5mdGFibGVzX3Blcm5ldCB7XFxuIFxcdHN0cnVjdCBsaXN0X2hlYWRcXHRiaW5kaW5nX2xpc3Q7XFxuIFxcdHN0cnVjdCBsaXN0X2hlYWRcXHRtb2R1bGVfbGlzdDtcXG4gXFx0c3RydWN0IGxpc3RfaGVhZFxcdG5vdGlmeV9saXN0O1xcbitcXHRzdHJ1Y3QgbGlzdF9oZWFkXFx0c2V0X3VwZGF0ZV9saXN0O1xcbiBcXHRzdHJ1Y3QgbXV0ZXhcXHRcXHRjb21taXRfbXV0ZXg7XFxuIFxcdHU2NFxcdFxcdFxcdHRhYmxlX2hhbmRsZTtcXG4gXFx0dTY0XFx0XFx0XFx0dHN0YW1wO1xcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYyBiL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jXFxuaW5kZXggYWYzNTdmNmM1MDcwYi4uNWM0ZjZjMzU0NTk1MCAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jXFxuQEAgLTU5NSwxMCArNTk1LDE1IEBAIHN0YXRpYyB2b2lkIG5mdF90cmFuc19jb21taXRfbGlzdF9hZGRfdGFpbChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBuZnRfdHJhbnMgKnRyXFxuIHN0YXRpYyB2b2lkIG5mdF90cmFuc19jb21taXRfbGlzdF9hZGRfZWxlbShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBuZnRfdHJhbnMgKnRyYW5zKVxcbiB7XFxuIFxcdHN0cnVjdCBuZnRhYmxlc19wZXJuZXQgKm5mdF9uZXQgPSBuZnRfcGVybmV0KG5ldCk7XFxuK1xcdHN0cnVjdCBuZnRfdHJhbnNfZWxlbSAqdGU7XFxuIFxcbiBcXHRXQVJOX09OX09OQ0UodHJhbnMtXFx1MDAzZW1zZ190eXBlICE9IE5GVF9NU0dfTkVXU0VURUxFTSBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHQgICAgIHRyYW5zLVxcdTAwM2Vtc2dfdHlwZSAhPSBORlRfTVNHX0RFTFNFVEVMRU0pO1xcbiBcXG4rXFx0dGUgPSBuZnRfdHJhbnNfY29udGFpbmVyX2VsZW0odHJhbnMpO1xcbitcXHRpZiAodGUtXFx1MDAzZXNldC1cXHUwMDNlb3BzLVxcdTAwM2Vjb21taXQgXFx1MDAyNlxcdTAwMjYgbGlzdF9lbXB0eShcXHUwMDI2dGUtXFx1MDAzZXNldC1cXHUwMDNlcGVuZGluZ191cGRhdGUpKVxcbitcXHRcXHRsaXN0X2FkZF90YWlsKFxcdTAwMjZ0ZS1cXHUwMDNlc2V0LVxcdTAwM2VwZW5kaW5nX3VwZGF0ZSwgXFx1MDAyNm5mdF9uZXQtXFx1MDAzZXNldF91cGRhdGVfbGlzdCk7XFxuK1xcbiBcXHRpZiAobmZ0X3RyYW5zX3RyeV9jb2xsYXBzZShuZnRfbmV0LCB0cmFucykpIHtcXG4gXFx0XFx0a2ZyZWUodHJhbnMpO1xcbiBcXHRcXHRyZXR1cm47XFxuQEAgLTcyMDUsNiArNzIxMCwyMCBAQCBzdGF0aWMgdm9pZCBuZnRfdHJhbnNfZWxlbXNfcmVtb3ZlKGNvbnN0IHN0cnVjdCBuZnRfY3R4ICpjdHgsXFxuIFxcdH1cXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgbmZ0X3RyYW5zX2VsZW1zX3JlbW92ZV9ub3RpZnkoY29uc3Qgc3RydWN0IG5mdF9jdHggKmN0eCxcXG4rXFx0XFx0XFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3QgbmZ0X3RyYW5zX2VsZW0gKnRlKVxcbit7XFxuK1xcdGludCBpO1xcbitcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHRlLVxcdTAwM2VuZWxlbXM7IGkrKykge1xcbitcXHRcXHRXQVJOX09OX09OQ0UodGUtXFx1MDAzZWVsZW1zW2ldLnVwZGF0ZSk7XFxuK1xcbitcXHRcXHRuZl90YWJsZXNfc2V0ZWxlbV9ub3RpZnkoY3R4LCB0ZS1cXHUwMDNlc2V0LFxcbitcXHRcXHRcXHRcXHRcXHQgdGUtXFx1MDAzZWVsZW1zW2ldLnByaXYsXFxuK1xcdFxcdFxcdFxcdFxcdCB0ZS1cXHUwMDNlbmZ0X3RyYW5zLm1zZ190eXBlKTtcXG4rXFx0fVxcbit9XFxuK1xcbiBzdGF0aWMgYm9vbCBuZnRfc2V0ZWxlbV92YWxpZF9rZXlfZW5kKGNvbnN0IHN0cnVjdCBuZnRfc2V0ICpzZXQsXFxuIFxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBubGF0dHIgKipubGEsIHUzMiBmbGFncylcXG4ge1xcbkBAIC0xMDg0OCwxMSArMTA4NjcsMzEgQEAgc3RhdGljIHZvaWQgbmZfdGFibGVzX2NvbW1pdF9hdWRpdF9sb2coc3RydWN0IGxpc3RfaGVhZCAqYWRsLCB1MzIgZ2VuZXJhdGlvbilcXG4gXFx0fVxcbiB9XFxuIFxcbi1zdGF0aWMgdm9pZCBuZnRfc2V0X2NvbW1pdF91cGRhdGUoc3RydWN0IGxpc3RfaGVhZCAqc2V0X3VwZGF0ZV9saXN0KVxcbitzdGF0aWMgdm9pZCBuZnRfc2V0X2NvbW1pdF91cGRhdGUoc3RydWN0IG5mdF9jdHggKmN0eCxcXG4rXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgbmZ0YWJsZXNfcGVybmV0ICpuZnRfbmV0KVxcbiB7XFxuIFxcdHN0cnVjdCBuZnRfc2V0ICpzZXQsICpuZXh0O1xcbitcXHRzdHJ1Y3QgbmZ0X3RyYW5zX2VsZW0gKnRlO1xcbitcXHRzdHJ1Y3QgbmZ0X3RyYW5zICp0cmFucztcXG4gXFxuLVxcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShzZXQsIG5leHQsIHNldF91cGRhdGVfbGlzdCwgcGVuZGluZ191cGRhdGUpIHtcXG4rXFx0aWYgKGxpc3RfZW1wdHkoXFx1MDAyNm5mdF9uZXQtXFx1MDAzZXNldF91cGRhdGVfbGlzdCkpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuK1xcdGxpc3RfZm9yX2VhY2hfZW50cnkodHJhbnMsIFxcdTAwMjZuZnRfbmV0LVxcdTAwM2Vjb21taXRfbGlzdCwgbGlzdCkge1xcbitcXHRcXHRuZnRfY3R4X3VwZGF0ZShjdHgsIHRyYW5zKTtcXG4rXFxuK1xcdFxcdHN3aXRjaCAodHJhbnMtXFx1MDAzZW1zZ190eXBlKSB7XFxuK1xcdFxcdGNhc2UgTkZUX01TR19ERUxTRVRFTEVNOlxcbitcXHRcXHRcXHR0ZSA9IG5mdF90cmFuc19jb250YWluZXJfZWxlbSh0cmFucyk7XFxuK1xcdFxcdFxcdGlmICghdGUtXFx1MDAzZXNldC1cXHUwMDNlb3BzLVxcdTAwM2Vjb21taXQpXFxuK1xcdFxcdFxcdFxcdGJyZWFrO1xcbitcXG4rXFx0XFx0XFx0bmZ0X3RyYW5zX2VsZW1zX3JlbW92ZShjdHgsIHRlKTtcXG4rXFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdH1cXG4rXFx0fVxcbitcXG4rXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHNldCwgbmV4dCwgXFx1MDAyNm5mdF9uZXQtXFx1MDAzZXNldF91cGRhdGVfbGlzdCwgcGVuZGluZ191cGRhdGUpIHtcXG4gXFx0XFx0bGlzdF9kZWxfaW5pdChcXHUwMDI2c2V0LVxcdTAwM2VwZW5kaW5nX3VwZGF0ZSk7XFxuIFxcbiBcXHRcXHRpZiAoIXNldC1cXHUwMDNlb3BzLVxcdTAwM2Vjb21taXQgfHwgc2V0LVxcdTAwM2VkZWFkKVxcbkBAIC0xMDg4NSw3ICsxMDkyNCw2IEBAIHN0YXRpYyBpbnQgbmZfdGFibGVzX2NvbW1pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IpXFxuIFxcdHN0cnVjdCBuZnRfdHJhbnNfYmluZGluZyAqdHJhbnNfYmluZGluZztcXG4gXFx0c3RydWN0IG5mdF90cmFucyAqdHJhbnMsICpuZXh0O1xcbiBcXHR1bnNpZ25lZCBpbnQgYmFzZV9zZXEsIGdjX3NlcTtcXG4tXFx0TElTVF9IRUFEKHNldF91cGRhdGVfbGlzdCk7XFxuIFxcdHN0cnVjdCBuZnRfdHJhbnNfZWxlbSAqdGU7XFxuIFxcdHN0cnVjdCBuZnRfY2hhaW4gKmNoYWluO1xcbiBcXHRzdHJ1Y3QgbmZ0X3RhYmxlICp0YWJsZTtcXG5AQCAtMTA5NjAsNiArMTA5OTgsOCBAQCBzdGF0aWMgaW50IG5mX3RhYmxlc19jb21taXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiBcXHR9XFxuIFxcbiBcXHQvKiBzdGVwIDIuICBNYWtlIHJ1bGVzX2dlbl9YIHZpc2libGUgdG8gcGFja2V0IHBhdGggKi9cXG4rXFx0bmZ0X3NldF9jb21taXRfdXBkYXRlKFxcdTAwMjZjdHgsIG5mdF9uZXQpO1xcbitcXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeSh0YWJsZSwgXFx1MDAyNm5mdF9uZXQtXFx1MDAzZXRhYmxlcywgbGlzdCkge1xcbiBcXHRcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGNoYWluLCBcXHUwMDI2dGFibGUtXFx1MDAzZWNoYWlucywgbGlzdClcXG4gXFx0XFx0XFx0bmZfdGFibGVzX2NvbW1pdF9jaGFpbihuZXQsIGNoYWluKTtcXG5AQCAtMTEwOTEsMjcgKzExMTMxLDE2IEBAIHN0YXRpYyBpbnQgbmZfdGFibGVzX2NvbW1pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IpXFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHRjYXNlIE5GVF9NU0dfTkVXU0VURUxFTTpcXG4gXFx0XFx0XFx0dGUgPSBuZnRfdHJhbnNfY29udGFpbmVyX2VsZW0odHJhbnMpO1xcbi1cXG4gXFx0XFx0XFx0bmZ0X3RyYW5zX2VsZW1zX2FkZChcXHUwMDI2Y3R4LCB0ZSk7XFxuLVxcbi1cXHRcXHRcXHRpZiAodGUtXFx1MDAzZXNldC1cXHUwMDNlb3BzLVxcdTAwM2Vjb21taXQgXFx1MDAyNlxcdTAwMjZcXG4tXFx0XFx0XFx0ICAgIGxpc3RfZW1wdHkoXFx1MDAyNnRlLVxcdTAwM2VzZXQtXFx1MDAzZXBlbmRpbmdfdXBkYXRlKSkge1xcbi1cXHRcXHRcXHRcXHRsaXN0X2FkZF90YWlsKFxcdTAwMjZ0ZS1cXHUwMDNlc2V0LVxcdTAwM2VwZW5kaW5nX3VwZGF0ZSxcXG4tXFx0XFx0XFx0XFx0XFx0ICAgICAgXFx1MDAyNnNldF91cGRhdGVfbGlzdCk7XFxuLVxcdFxcdFxcdH1cXG4gXFx0XFx0XFx0bmZ0X3RyYW5zX2Rlc3Ryb3kodHJhbnMpO1xcbiBcXHRcXHRcXHRicmVhaztcXG4gXFx0XFx0Y2FzZSBORlRfTVNHX0RFTFNFVEVMRU06XFxuIFxcdFxcdGNhc2UgTkZUX01TR19ERVNUUk9ZU0VURUxFTTpcXG4gXFx0XFx0XFx0dGUgPSBuZnRfdHJhbnNfY29udGFpbmVyX2VsZW0odHJhbnMpO1xcbi1cXG4tXFx0XFx0XFx0bmZ0X3RyYW5zX2VsZW1zX3JlbW92ZShcXHUwMDI2Y3R4LCB0ZSk7XFxuLVxcbi1cXHRcXHRcXHRpZiAodGUtXFx1MDAzZXNldC1cXHUwMDNlb3BzLVxcdTAwM2Vjb21taXQgXFx1MDAyNlxcdTAwMjZcXG4tXFx0XFx0XFx0ICAgIGxpc3RfZW1wdHkoXFx1MDAyNnRlLVxcdTAwM2VzZXQtXFx1MDAzZXBlbmRpbmdfdXBkYXRlKSkge1xcbi1cXHRcXHRcXHRcXHRsaXN0X2FkZF90YWlsKFxcdTAwMjZ0ZS1cXHUwMDNlc2V0LVxcdTAwM2VwZW5kaW5nX3VwZGF0ZSxcXG4tXFx0XFx0XFx0XFx0XFx0ICAgICAgXFx1MDAyNnNldF91cGRhdGVfbGlzdCk7XFxuLVxcdFxcdFxcdH1cXG4rXFx0XFx0XFx0aWYgKHRlLVxcdTAwM2VzZXQtXFx1MDAzZW9wcy1cXHUwMDNlY29tbWl0KVxcbitcXHRcXHRcXHRcXHRuZnRfdHJhbnNfZWxlbXNfcmVtb3ZlX25vdGlmeShcXHUwMDI2Y3R4LCB0ZSk7XFxuK1xcdFxcdFxcdGVsc2VcXG4rXFx0XFx0XFx0XFx0bmZ0X3RyYW5zX2VsZW1zX3JlbW92ZShcXHUwMDI2Y3R4LCB0ZSk7XFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHRjYXNlIE5GVF9NU0dfTkVXT0JKOlxcbiBcXHRcXHRcXHRpZiAobmZ0X3RyYW5zX29ial91cGRhdGUodHJhbnMpKSB7XFxuQEAgLTExMTgwLDggKzExMjA5LDYgQEAgc3RhdGljIGludCBuZl90YWJsZXNfY29tbWl0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gXFx0XFx0fVxcbiBcXHR9XFxuIFxcbi1cXHRuZnRfc2V0X2NvbW1pdF91cGRhdGUoXFx1MDAyNnNldF91cGRhdGVfbGlzdCk7XFxuLVxcbiBcXHRuZnRfY29tbWl0X25vdGlmeShuZXQsIE5FVExJTktfQ0Ioc2tiKS5wb3J0aWQpO1xcbiBcXHRuZl90YWJsZXNfZ2VuX25vdGlmeShuZXQsIHNrYiwgTkZUX01TR19ORVdHRU4pO1xcbiBcXHRuZl90YWJsZXNfY29tbWl0X2F1ZGl0X2xvZyhcXHUwMDI2YWRsLCBuZnRfYmFzZV9zZXEobmV0KSk7XFxuQEAgLTExMjQ3LDExICsxMTI3NCwxMSBAQCBzdGF0aWMgdm9pZCBuZl90YWJsZXNfYWJvcnRfcmVsZWFzZShzdHJ1Y3QgbmZ0X3RyYW5zICp0cmFucylcXG4gXFx0a2ZyZWUodHJhbnMpO1xcbiB9XFxuIFxcbi1zdGF0aWMgdm9pZCBuZnRfc2V0X2Fib3J0X3VwZGF0ZShzdHJ1Y3QgbGlzdF9oZWFkICpzZXRfdXBkYXRlX2xpc3QpXFxuK3N0YXRpYyB2b2lkIG5mdF9zZXRfYWJvcnRfdXBkYXRlKHN0cnVjdCBuZnRhYmxlc19wZXJuZXQgKm5mdF9uZXQpXFxuIHtcXG4gXFx0c3RydWN0IG5mdF9zZXQgKnNldCwgKm5leHQ7XFxuIFxcbi1cXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoc2V0LCBuZXh0LCBzZXRfdXBkYXRlX2xpc3QsIHBlbmRpbmdfdXBkYXRlKSB7XFxuK1xcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShzZXQsIG5leHQsIFxcdTAwMjZuZnRfbmV0LVxcdTAwM2VzZXRfdXBkYXRlX2xpc3QsIHBlbmRpbmdfdXBkYXRlKSB7XFxuIFxcdFxcdGxpc3RfZGVsX2luaXQoXFx1MDAyNnNldC1cXHUwMDNlcGVuZGluZ191cGRhdGUpO1xcbiBcXG4gXFx0XFx0aWYgKCFzZXQtXFx1MDAzZW9wcy1cXHUwMDNlYWJvcnQpXFxuQEAgLTExMzg2LDMzICsxMTQxMywyMiBAQCBzdGF0aWMgaW50IF9fbmZfdGFibGVzX2Fib3J0KHN0cnVjdCBuZXQgKm5ldCwgZW51bSBuZm5sX2Fib3J0X2FjdGlvbiBhY3Rpb24pXFxuIFxcdFxcdFxcdG5mdF90cmFuc19kZXN0cm95KHRyYW5zKTtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdGNhc2UgTkZUX01TR19ORVdTRVRFTEVNOlxcbitcXHRcXHRcXHR0ZSA9IG5mdF90cmFuc19jb250YWluZXJfZWxlbSh0cmFucyk7XFxuIFxcdFxcdFxcdGlmIChuZnRfdHJhbnNfZWxlbV9zZXRfYm91bmQodHJhbnMpKSB7XFxuK1xcdFxcdFxcdFxcdGxpc3RfZGVsX2luaXQoXFx1MDAyNnRlLVxcdTAwM2VzZXQtXFx1MDAzZXBlbmRpbmdfdXBkYXRlKTtcXG4gXFx0XFx0XFx0XFx0bmZ0X3RyYW5zX2Rlc3Ryb3kodHJhbnMpO1xcbiBcXHRcXHRcXHRcXHRicmVhaztcXG4gXFx0XFx0XFx0fVxcbi1cXHRcXHRcXHR0ZSA9IG5mdF90cmFuc19jb250YWluZXJfZWxlbSh0cmFucyk7XFxuIFxcdFxcdFxcdGlmICghbmZ0X3RyYW5zX2VsZW1zX25ld19hYm9ydChcXHUwMDI2Y3R4LCB0ZSkpIHtcXG4gXFx0XFx0XFx0XFx0bmZ0X3RyYW5zX2Rlc3Ryb3kodHJhbnMpO1xcbiBcXHRcXHRcXHRcXHRicmVhaztcXG4gXFx0XFx0XFx0fVxcbi1cXG4tXFx0XFx0XFx0aWYgKHRlLVxcdTAwM2VzZXQtXFx1MDAzZW9wcy1cXHUwMDNlYWJvcnQgXFx1MDAyNlxcdTAwMjZcXG4tXFx0XFx0XFx0ICAgIGxpc3RfZW1wdHkoXFx1MDAyNnRlLVxcdTAwM2VzZXQtXFx1MDAzZXBlbmRpbmdfdXBkYXRlKSkge1xcbi1cXHRcXHRcXHRcXHRsaXN0X2FkZF90YWlsKFxcdTAwMjZ0ZS1cXHUwMDNlc2V0LVxcdTAwM2VwZW5kaW5nX3VwZGF0ZSxcXG4tXFx0XFx0XFx0XFx0XFx0ICAgICAgXFx1MDAyNnNldF91cGRhdGVfbGlzdCk7XFxuLVxcdFxcdFxcdH1cXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdGNhc2UgTkZUX01TR19ERUxTRVRFTEVNOlxcbiBcXHRcXHRjYXNlIE5GVF9NU0dfREVTVFJPWVNFVEVMRU06XFxuIFxcdFxcdFxcdHRlID0gbmZ0X3RyYW5zX2NvbnRhaW5lcl9lbGVtKHRyYW5zKTtcXG4gXFxuIFxcdFxcdFxcdG5mdF90cmFuc19lbGVtc19kZXN0cm95X2Fib3J0KFxcdTAwMjZjdHgsIHRlKTtcXG4tXFxuLVxcdFxcdFxcdGlmICh0ZS1cXHUwMDNlc2V0LVxcdTAwM2VvcHMtXFx1MDAzZWFib3J0IFxcdTAwMjZcXHUwMDI2XFxuLVxcdFxcdFxcdCAgICBsaXN0X2VtcHR5KFxcdTAwMjZ0ZS1cXHUwMDNlc2V0LVxcdTAwM2VwZW5kaW5nX3VwZGF0ZSkpIHtcXG4tXFx0XFx0XFx0XFx0bGlzdF9hZGRfdGFpbChcXHUwMDI2dGUtXFx1MDAzZXNldC1cXHUwMDNlcGVuZGluZ191cGRhdGUsXFxuLVxcdFxcdFxcdFxcdFxcdCAgICAgIFxcdTAwMjZzZXRfdXBkYXRlX2xpc3QpO1xcbi1cXHRcXHRcXHR9XFxuIFxcdFxcdFxcdG5mdF90cmFuc19kZXN0cm95KHRyYW5zKTtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdGNhc2UgTkZUX01TR19ORVdPQko6XFxuQEAgLTExNDU4LDcgKzExNDc0LDcgQEAgc3RhdGljIGludCBfX25mX3RhYmxlc19hYm9ydChzdHJ1Y3QgbmV0ICpuZXQsIGVudW0gbmZubF9hYm9ydF9hY3Rpb24gYWN0aW9uKVxcbiBcXG4gXFx0V0FSTl9PTl9PTkNFKCFsaXN0X2VtcHR5KFxcdTAwMjZuZnRfbmV0LVxcdTAwM2Vjb21taXRfc2V0X2xpc3QpKTtcXG4gXFxuLVxcdG5mdF9zZXRfYWJvcnRfdXBkYXRlKFxcdTAwMjZzZXRfdXBkYXRlX2xpc3QpO1xcbitcXHRuZnRfc2V0X2Fib3J0X3VwZGF0ZShuZnRfbmV0KTtcXG4gXFxuIFxcdHN5bmNocm9uaXplX3JjdSgpO1xcbiBcXG5AQCAtMTIxNDIsNiArMTIxNTgsNyBAQCBzdGF0aWMgaW50IF9fbmV0X2luaXQgbmZfdGFibGVzX2luaXRfbmV0KHN0cnVjdCBuZXQgKm5ldClcXG4gXFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNm5mdF9uZXQtXFx1MDAzZWJpbmRpbmdfbGlzdCk7XFxuIFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZuZnRfbmV0LVxcdTAwM2Vtb2R1bGVfbGlzdCk7XFxuIFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZuZnRfbmV0LVxcdTAwM2Vub3RpZnlfbGlzdCk7XFxuK1xcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZuZnRfbmV0LVxcdTAwM2VzZXRfdXBkYXRlX2xpc3QpO1xcbiBcXHRtdXRleF9pbml0KFxcdTAwMjZuZnRfbmV0LVxcdTAwM2Vjb21taXRfbXV0ZXgpO1xcbiBcXHRuZXQtXFx1MDAzZW5mdC5iYXNlX3NlcSA9IDE7XFxuIFxcdG5mdF9uZXQtXFx1MDAzZWdjX3NlcSA9IDA7XFxuQEAgLTEyMTg2LDYgKzEyMjAzLDcgQEAgc3RhdGljIHZvaWQgX19uZXRfZXhpdCBuZl90YWJsZXNfZXhpdF9uZXQoc3RydWN0IG5ldCAqbmV0KVxcbiBcXHRXQVJOX09OX09OQ0UoIWxpc3RfZW1wdHkoXFx1MDAyNm5mdF9uZXQtXFx1MDAzZW1vZHVsZV9saXN0KSk7XFxuIFxcdFdBUk5fT05fT05DRSghbGlzdF9lbXB0eShcXHUwMDI2bmZ0X25ldC1cXHUwMDNlbm90aWZ5X2xpc3QpKTtcXG4gXFx0V0FSTl9PTl9PTkNFKCFsaXN0X2VtcHR5KFxcdTAwMjZuZnRfbmV0LVxcdTAwM2VkZXN0cm95X2xpc3QpKTtcXG4rXFx0V0FSTl9PTl9PTkNFKCFsaXN0X2VtcHR5KFxcdTAwMjZuZnRfbmV0LVxcdTAwM2VzZXRfdXBkYXRlX2xpc3QpKTtcXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQgbmZfdGFibGVzX2V4aXRfYmF0Y2goc3RydWN0IGxpc3RfaGVhZCAqbmV0X2V4aXRfbGlzdClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMjM6MjU6MzMuOTcyMDcxNjAyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NTQ0NzU2Njg4MDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZfVEFCTEVTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmZfdGFibGVzX2NvbW1pdFwiLFxuICAgIFwibmZfdGFibGVzX2Fib3J0XCIsXG4gICAgXCJuZl90YWJsZXNfbmV3c2V0ZWxlbVwiLFxuICAgIFwibmZfdGFibGVzX2RlbHNldGVsZW1cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbmV0ZmlsdGVyIG5mX3RhYmxlcyBBUEkgdG8gaW50cm9kdWNlIGEgYHNldF91cGRhdGVfbGlzdGAgaW4gYHN0cnVjdCBuZnRhYmxlc19wZXJuZXRgLiBJdCBjaGFuZ2VzIGhvdyBzZXQgZWxlbWVudHMgYXJlIGFkZGVkLCByZW1vdmVkLCBhbmQgYWJvcnRlZCBkdXJpbmcgbmV0bGluayB0cmFuc2FjdGlvbnMuIFNwZWNpZmljYWxseSwgaXQgbW9kaWZpZXMgYG5mdF90cmFuc19jb21taXRfbGlzdF9hZGRfZWxlbWAsIGBuZnRfc2V0X2NvbW1pdF91cGRhdGVgLCBgbmZfdGFibGVzX2NvbW1pdGAsIGFuZCBgX19uZl90YWJsZXNfYWJvcnRgIHRvIGhhbmRsZSB0aGUgbmV3IGxpc3QgYW5kIGVuc3VyZSBwcm9wZXIgb3JkZXJpbmcgb2Ygc2V0IHVwZGF0ZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXRmaWx0ZXIgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgdmlhIG5ldGxpbmsgc29ja2V0cyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBwcmV2ZW50IHJlZ3Jlc3Npb25zIG9yIG1lbW9yeSBjb3JydXB0aW9uIGlzc3Vlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMGQ5MzEyYTBkOGRhNmNlODJlMDUzNjg0MzlhOTlmN2E2MGQyZjkxY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDEyIDIzOjI1OjMyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlcy5oIGIvaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlcy5oXG5pbmRleCAzYmU2MTIxNDVjMTMwLi4yMzhmNmVjYjkwZTk5IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlcy5oXG4rKysgYi9pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzLmhcbkBAIC0xOTQ5LDYgKzE5NDksNyBAQCBzdHJ1Y3QgbmZ0YWJsZXNfcGVybmV0IHtcbiBcdHN0cnVjdCBsaXN0X2hlYWRcdGJpbmRpbmdfbGlzdDtcbiBcdHN0cnVjdCBsaXN0X2hlYWRcdG1vZHVsZV9saXN0O1xuIFx0c3RydWN0IGxpc3RfaGVhZFx0bm90aWZ5X2xpc3Q7XG4rXHRzdHJ1Y3QgbGlzdF9oZWFkXHRzZXRfdXBkYXRlX2xpc3Q7XG4gXHRzdHJ1Y3QgbXV0ZXhcdFx0Y29tbWl0X211dGV4O1xuIFx0dTY0XHRcdFx0dGFibGVfaGFuZGxlO1xuIFx0dTY0XHRcdFx0dHN0YW1wO1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jIGIvbmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmNcbmluZGV4IGFmMzU3ZjZjNTA3MGIuLjVjNGY2YzM1NDU5NTAgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuY1xuKysrIGIvbmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmNcbkBAIC01OTUsMTAgKzU5NSwxNSBAQCBzdGF0aWMgdm9pZCBuZnRfdHJhbnNfY29tbWl0X2xpc3RfYWRkX3RhaWwoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmZ0X3RyYW5zICp0clxuIHN0YXRpYyB2b2lkIG5mdF90cmFuc19jb21taXRfbGlzdF9hZGRfZWxlbShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBuZnRfdHJhbnMgKnRyYW5zKVxuIHtcbiBcdHN0cnVjdCBuZnRhYmxlc19wZXJuZXQgKm5mdF9uZXQgPSBuZnRfcGVybmV0KG5ldCk7XG4rXHRzdHJ1Y3QgbmZ0X3RyYW5zX2VsZW0gKnRlO1xuIFxuIFx0V0FSTl9PTl9PTkNFKHRyYW5zLVx1MDAzZW1zZ190eXBlICE9IE5GVF9NU0dfTkVXU0VURUxFTSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgICB0cmFucy1cdTAwM2Vtc2dfdHlwZSAhPSBORlRfTVNHX0RFTFNFVEVMRU0pO1xuIFxuK1x0dGUgPSBuZnRfdHJhbnNfY29udGFpbmVyX2VsZW0odHJhbnMpO1xuK1x0aWYgKHRlLVx1MDAzZXNldC1cdTAwM2VvcHMtXHUwMDNlY29tbWl0IFx1MDAyNlx1MDAyNiBsaXN0X2VtcHR5KFx1MDAyNnRlLVx1MDAzZXNldC1cdTAwM2VwZW5kaW5nX3VwZGF0ZSkpXG4rXHRcdGxpc3RfYWRkX3RhaWwoXHUwMDI2dGUtXHUwMDNlc2V0LVx1MDAzZXBlbmRpbmdfdXBkYXRlLCBcdTAwMjZuZnRfbmV0LVx1MDAzZXNldF91cGRhdGVfbGlzdCk7XG4rXG4gXHRpZiAobmZ0X3RyYW5zX3RyeV9jb2xsYXBzZShuZnRfbmV0LCB0cmFucykpIHtcbiBcdFx0a2ZyZWUodHJhbnMpO1xuIFx0XHRyZXR1cm47XG5AQCAtNzIwNSw2ICs3MjEwLDIwIEBAIHN0YXRpYyB2b2lkIG5mdF90cmFuc19lbGVtc19yZW1vdmUoY29uc3Qgc3RydWN0IG5mdF9jdHggKmN0eCxcbiBcdH1cbiB9XG4gXG4rc3RhdGljIHZvaWQgbmZ0X3RyYW5zX2VsZW1zX3JlbW92ZV9ub3RpZnkoY29uc3Qgc3RydWN0IG5mdF9jdHggKmN0eCxcbitcdFx0XHRcdFx0ICBjb25zdCBzdHJ1Y3QgbmZ0X3RyYW5zX2VsZW0gKnRlKVxuK3tcbitcdGludCBpO1xuK1xuK1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgdGUtXHUwMDNlbmVsZW1zOyBpKyspIHtcbitcdFx0V0FSTl9PTl9PTkNFKHRlLVx1MDAzZWVsZW1zW2ldLnVwZGF0ZSk7XG4rXG4rXHRcdG5mX3RhYmxlc19zZXRlbGVtX25vdGlmeShjdHgsIHRlLVx1MDAzZXNldCxcbitcdFx0XHRcdFx0IHRlLVx1MDAzZWVsZW1zW2ldLnByaXYsXG4rXHRcdFx0XHRcdCB0ZS1cdTAwM2VuZnRfdHJhbnMubXNnX3R5cGUpO1xuK1x0fVxuK31cbitcbiBzdGF0aWMgYm9vbCBuZnRfc2V0ZWxlbV92YWxpZF9rZXlfZW5kKGNvbnN0IHN0cnVjdCBuZnRfc2V0ICpzZXQsXG4gXHRcdFx0XHQgICAgICBzdHJ1Y3QgbmxhdHRyICoqbmxhLCB1MzIgZmxhZ3MpXG4ge1xuQEAgLTEwODQ4LDExICsxMDg2NywzMSBAQCBzdGF0aWMgdm9pZCBuZl90YWJsZXNfY29tbWl0X2F1ZGl0X2xvZyhzdHJ1Y3QgbGlzdF9oZWFkICphZGwsIHUzMiBnZW5lcmF0aW9uKVxuIFx0fVxuIH1cbiBcbi1zdGF0aWMgdm9pZCBuZnRfc2V0X2NvbW1pdF91cGRhdGUoc3RydWN0IGxpc3RfaGVhZCAqc2V0X3VwZGF0ZV9saXN0KVxuK3N0YXRpYyB2b2lkIG5mdF9zZXRfY29tbWl0X3VwZGF0ZShzdHJ1Y3QgbmZ0X2N0eCAqY3R4LFxuK1x0XHRcdFx0ICBzdHJ1Y3QgbmZ0YWJsZXNfcGVybmV0ICpuZnRfbmV0KVxuIHtcbiBcdHN0cnVjdCBuZnRfc2V0ICpzZXQsICpuZXh0O1xuK1x0c3RydWN0IG5mdF90cmFuc19lbGVtICp0ZTtcbitcdHN0cnVjdCBuZnRfdHJhbnMgKnRyYW5zO1xuIFxuLVx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHNldCwgbmV4dCwgc2V0X3VwZGF0ZV9saXN0LCBwZW5kaW5nX3VwZGF0ZSkge1xuK1x0aWYgKGxpc3RfZW1wdHkoXHUwMDI2bmZ0X25ldC1cdTAwM2VzZXRfdXBkYXRlX2xpc3QpKVxuK1x0XHRyZXR1cm47XG4rXG4rXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHRyYW5zLCBcdTAwMjZuZnRfbmV0LVx1MDAzZWNvbW1pdF9saXN0LCBsaXN0KSB7XG4rXHRcdG5mdF9jdHhfdXBkYXRlKGN0eCwgdHJhbnMpO1xuK1xuK1x0XHRzd2l0Y2ggKHRyYW5zLVx1MDAzZW1zZ190eXBlKSB7XG4rXHRcdGNhc2UgTkZUX01TR19ERUxTRVRFTEVNOlxuK1x0XHRcdHRlID0gbmZ0X3RyYW5zX2NvbnRhaW5lcl9lbGVtKHRyYW5zKTtcbitcdFx0XHRpZiAoIXRlLVx1MDAzZXNldC1cdTAwM2VvcHMtXHUwMDNlY29tbWl0KVxuK1x0XHRcdFx0YnJlYWs7XG4rXG4rXHRcdFx0bmZ0X3RyYW5zX2VsZW1zX3JlbW92ZShjdHgsIHRlKTtcbitcdFx0XHRicmVhaztcbitcdFx0fVxuK1x0fVxuK1xuK1x0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHNldCwgbmV4dCwgXHUwMDI2bmZ0X25ldC1cdTAwM2VzZXRfdXBkYXRlX2xpc3QsIHBlbmRpbmdfdXBkYXRlKSB7XG4gXHRcdGxpc3RfZGVsX2luaXQoXHUwMDI2c2V0LVx1MDAzZXBlbmRpbmdfdXBkYXRlKTtcbiBcbiBcdFx0aWYgKCFzZXQtXHUwMDNlb3BzLVx1MDAzZWNvbW1pdCB8fCBzZXQtXHUwMDNlZGVhZClcbkBAIC0xMDg4NSw3ICsxMDkyNCw2IEBAIHN0YXRpYyBpbnQgbmZfdGFibGVzX2NvbW1pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRzdHJ1Y3QgbmZ0X3RyYW5zX2JpbmRpbmcgKnRyYW5zX2JpbmRpbmc7XG4gXHRzdHJ1Y3QgbmZ0X3RyYW5zICp0cmFucywgKm5leHQ7XG4gXHR1bnNpZ25lZCBpbnQgYmFzZV9zZXEsIGdjX3NlcTtcbi1cdExJU1RfSEVBRChzZXRfdXBkYXRlX2xpc3QpO1xuIFx0c3RydWN0IG5mdF90cmFuc19lbGVtICp0ZTtcbiBcdHN0cnVjdCBuZnRfY2hhaW4gKmNoYWluO1xuIFx0c3RydWN0IG5mdF90YWJsZSAqdGFibGU7XG5AQCAtMTA5NjAsNiArMTA5OTgsOCBAQCBzdGF0aWMgaW50IG5mX3RhYmxlc19jb21taXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0fVxuIFxuIFx0Lyogc3RlcCAyLiAgTWFrZSBydWxlc19nZW5fWCB2aXNpYmxlIHRvIHBhY2tldCBwYXRoICovXG4rXHRuZnRfc2V0X2NvbW1pdF91cGRhdGUoXHUwMDI2Y3R4LCBuZnRfbmV0KTtcbitcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnkodGFibGUsIFx1MDAyNm5mdF9uZXQtXHUwMDNldGFibGVzLCBsaXN0KSB7XG4gXHRcdGxpc3RfZm9yX2VhY2hfZW50cnkoY2hhaW4sIFx1MDAyNnRhYmxlLVx1MDAzZWNoYWlucywgbGlzdClcbiBcdFx0XHRuZl90YWJsZXNfY29tbWl0X2NoYWluKG5ldCwgY2hhaW4pO1xuQEAgLTExMDkxLDI3ICsxMTEzMSwxNiBAQCBzdGF0aWMgaW50IG5mX3RhYmxlc19jb21taXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0XHRcdGJyZWFrO1xuIFx0XHRjYXNlIE5GVF9NU0dfTkVXU0VURUxFTTpcbiBcdFx0XHR0ZSA9IG5mdF90cmFuc19jb250YWluZXJfZWxlbSh0cmFucyk7XG4tXG4gXHRcdFx0bmZ0X3RyYW5zX2VsZW1zX2FkZChcdTAwMjZjdHgsIHRlKTtcbi1cbi1cdFx0XHRpZiAodGUtXHUwMDNlc2V0LVx1MDAzZW9wcy1cdTAwM2Vjb21taXQgXHUwMDI2XHUwMDI2XG4tXHRcdFx0ICAgIGxpc3RfZW1wdHkoXHUwMDI2dGUtXHUwMDNlc2V0LVx1MDAzZXBlbmRpbmdfdXBkYXRlKSkge1xuLVx0XHRcdFx0bGlzdF9hZGRfdGFpbChcdTAwMjZ0ZS1cdTAwM2VzZXQtXHUwMDNlcGVuZGluZ191cGRhdGUsXG4tXHRcdFx0XHRcdCAgICAgIFx1MDAyNnNldF91cGRhdGVfbGlzdCk7XG4tXHRcdFx0fVxuIFx0XHRcdG5mdF90cmFuc19kZXN0cm95KHRyYW5zKTtcbiBcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSBORlRfTVNHX0RFTFNFVEVMRU06XG4gXHRcdGNhc2UgTkZUX01TR19ERVNUUk9ZU0VURUxFTTpcbiBcdFx0XHR0ZSA9IG5mdF90cmFuc19jb250YWluZXJfZWxlbSh0cmFucyk7XG4tXG4tXHRcdFx0bmZ0X3RyYW5zX2VsZW1zX3JlbW92ZShcdTAwMjZjdHgsIHRlKTtcbi1cbi1cdFx0XHRpZiAodGUtXHUwMDNlc2V0LVx1MDAzZW9wcy1cdTAwM2Vjb21taXQgXHUwMDI2XHUwMDI2XG4tXHRcdFx0ICAgIGxpc3RfZW1wdHkoXHUwMDI2dGUtXHUwMDNlc2V0LVx1MDAzZXBlbmRpbmdfdXBkYXRlKSkge1xuLVx0XHRcdFx0bGlzdF9hZGRfdGFpbChcdTAwMjZ0ZS1cdTAwM2VzZXQtXHUwMDNlcGVuZGluZ191cGRhdGUsXG4tXHRcdFx0XHRcdCAgICAgIFx1MDAyNnNldF91cGRhdGVfbGlzdCk7XG4tXHRcdFx0fVxuK1x0XHRcdGlmICh0ZS1cdTAwM2VzZXQtXHUwMDNlb3BzLVx1MDAzZWNvbW1pdClcbitcdFx0XHRcdG5mdF90cmFuc19lbGVtc19yZW1vdmVfbm90aWZ5KFx1MDAyNmN0eCwgdGUpO1xuK1x0XHRcdGVsc2VcbitcdFx0XHRcdG5mdF90cmFuc19lbGVtc19yZW1vdmUoXHUwMDI2Y3R4LCB0ZSk7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgTkZUX01TR19ORVdPQko6XG4gXHRcdFx0aWYgKG5mdF90cmFuc19vYmpfdXBkYXRlKHRyYW5zKSkge1xuQEAgLTExMTgwLDggKzExMjA5LDYgQEAgc3RhdGljIGludCBuZl90YWJsZXNfY29tbWl0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdFx0fVxuIFx0fVxuIFxuLVx0bmZ0X3NldF9jb21taXRfdXBkYXRlKFx1MDAyNnNldF91cGRhdGVfbGlzdCk7XG4tXG4gXHRuZnRfY29tbWl0X25vdGlmeShuZXQsIE5FVExJTktfQ0Ioc2tiKS5wb3J0aWQpO1xuIFx0bmZfdGFibGVzX2dlbl9ub3RpZnkobmV0LCBza2IsIE5GVF9NU0dfTkVXR0VOKTtcbiBcdG5mX3RhYmxlc19jb21taXRfYXVkaXRfbG9nKFx1MDAyNmFkbCwgbmZ0X2Jhc2Vfc2VxKG5ldCkpO1xuQEAgLTExMjQ3LDExICsxMTI3NCwxMSBAQCBzdGF0aWMgdm9pZCBuZl90YWJsZXNfYWJvcnRfcmVsZWFzZShzdHJ1Y3QgbmZ0X3RyYW5zICp0cmFucylcbiBcdGtmcmVlKHRyYW5zKTtcbiB9XG4gXG4tc3RhdGljIHZvaWQgbmZ0X3NldF9hYm9ydF91cGRhdGUoc3RydWN0IGxpc3RfaGVhZCAqc2V0X3VwZGF0ZV9saXN0KVxuK3N0YXRpYyB2b2lkIG5mdF9zZXRfYWJvcnRfdXBkYXRlKHN0cnVjdCBuZnRhYmxlc19wZXJuZXQgKm5mdF9uZXQpXG4ge1xuIFx0c3RydWN0IG5mdF9zZXQgKnNldCwgKm5leHQ7XG4gXG4tXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoc2V0LCBuZXh0LCBzZXRfdXBkYXRlX2xpc3QsIHBlbmRpbmdfdXBkYXRlKSB7XG4rXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoc2V0LCBuZXh0LCBcdTAwMjZuZnRfbmV0LVx1MDAzZXNldF91cGRhdGVfbGlzdCwgcGVuZGluZ191cGRhdGUpIHtcbiBcdFx0bGlzdF9kZWxfaW5pdChcdTAwMjZzZXQtXHUwMDNlcGVuZGluZ191cGRhdGUpO1xuIFxuIFx0XHRpZiAoIXNldC1cdTAwM2VvcHMtXHUwMDNlYWJvcnQpXG5AQCAtMTEzODYsMzMgKzExNDEzLDIyIEBAIHN0YXRpYyBpbnQgX19uZl90YWJsZXNfYWJvcnQoc3RydWN0IG5ldCAqbmV0LCBlbnVtIG5mbmxfYWJvcnRfYWN0aW9uIGFjdGlvbilcbiBcdFx0XHRuZnRfdHJhbnNfZGVzdHJveSh0cmFucyk7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgTkZUX01TR19ORVdTRVRFTEVNOlxuK1x0XHRcdHRlID0gbmZ0X3RyYW5zX2NvbnRhaW5lcl9lbGVtKHRyYW5zKTtcbiBcdFx0XHRpZiAobmZ0X3RyYW5zX2VsZW1fc2V0X2JvdW5kKHRyYW5zKSkge1xuK1x0XHRcdFx0bGlzdF9kZWxfaW5pdChcdTAwMjZ0ZS1cdTAwM2VzZXQtXHUwMDNlcGVuZGluZ191cGRhdGUpO1xuIFx0XHRcdFx0bmZ0X3RyYW5zX2Rlc3Ryb3kodHJhbnMpO1xuIFx0XHRcdFx0YnJlYWs7XG4gXHRcdFx0fVxuLVx0XHRcdHRlID0gbmZ0X3RyYW5zX2NvbnRhaW5lcl9lbGVtKHRyYW5zKTtcbiBcdFx0XHRpZiAoIW5mdF90cmFuc19lbGVtc19uZXdfYWJvcnQoXHUwMDI2Y3R4LCB0ZSkpIHtcbiBcdFx0XHRcdG5mdF90cmFuc19kZXN0cm95KHRyYW5zKTtcbiBcdFx0XHRcdGJyZWFrO1xuIFx0XHRcdH1cbi1cbi1cdFx0XHRpZiAodGUtXHUwMDNlc2V0LVx1MDAzZW9wcy1cdTAwM2VhYm9ydCBcdTAwMjZcdTAwMjZcbi1cdFx0XHQgICAgbGlzdF9lbXB0eShcdTAwMjZ0ZS1cdTAwM2VzZXQtXHUwMDNlcGVuZGluZ191cGRhdGUpKSB7XG4tXHRcdFx0XHRsaXN0X2FkZF90YWlsKFx1MDAyNnRlLVx1MDAzZXNldC1cdTAwM2VwZW5kaW5nX3VwZGF0ZSxcbi1cdFx0XHRcdFx0ICAgICAgXHUwMDI2c2V0X3VwZGF0ZV9saXN0KTtcbi1cdFx0XHR9XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgTkZUX01TR19ERUxTRVRFTEVNOlxuIFx0XHRjYXNlIE5GVF9NU0dfREVTVFJPWVNFVEVMRU06XG4gXHRcdFx0dGUgPSBuZnRfdHJhbnNfY29udGFpbmVyX2VsZW0odHJhbnMpO1xuIFxuIFx0XHRcdG5mdF90cmFuc19lbGVtc19kZXN0cm95X2Fib3J0KFx1MDAyNmN0eCwgdGUpO1xuLVxuLVx0XHRcdGlmICh0ZS1cdTAwM2VzZXQtXHUwMDNlb3BzLVx1MDAzZWFib3J0IFx1MDAyNlx1MDAyNlxuLVx0XHRcdCAgICBsaXN0X2VtcHR5KFx1MDAyNnRlLVx1MDAzZXNldC1cdTAwM2VwZW5kaW5nX3VwZGF0ZSkpIHtcbi1cdFx0XHRcdGxpc3RfYWRkX3RhaWwoXHUwMDI2dGUtXHUwMDNlc2V0LVx1MDAzZXBlbmRpbmdfdXBkYXRlLFxuLVx0XHRcdFx0XHQgICAgICBcdTAwMjZzZXRfdXBkYXRlX2xpc3QpO1xuLVx0XHRcdH1cbiBcdFx0XHRuZnRfdHJhbnNfZGVzdHJveSh0cmFucyk7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgTkZUX01TR19ORVdPQko6XG5AQCAtMTE0NTgsNyArMTE0NzQsNyBAQCBzdGF0aWMgaW50IF9fbmZfdGFibGVzX2Fib3J0KHN0cnVjdCBuZXQgKm5ldCwgZW51bSBuZm5sX2Fib3J0X2FjdGlvbiBhY3Rpb24pXG4gXG4gXHRXQVJOX09OX09OQ0UoIWxpc3RfZW1wdHkoXHUwMDI2bmZ0X25ldC1cdTAwM2Vjb21taXRfc2V0X2xpc3QpKTtcbiBcbi1cdG5mdF9zZXRfYWJvcnRfdXBkYXRlKFx1MDAyNnNldF91cGRhdGVfbGlzdCk7XG4rXHRuZnRfc2V0X2Fib3J0X3VwZGF0ZShuZnRfbmV0KTtcbiBcbiBcdHN5bmNocm9uaXplX3JjdSgpO1xuIFxuQEAgLTEyMTQyLDYgKzEyMTU4LDcgQEAgc3RhdGljIGludCBfX25ldF9pbml0IG5mX3RhYmxlc19pbml0X25ldChzdHJ1Y3QgbmV0ICpuZXQpXG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZuZnRfbmV0LVx1MDAzZWJpbmRpbmdfbGlzdCk7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZuZnRfbmV0LVx1MDAzZW1vZHVsZV9saXN0KTtcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNm5mdF9uZXQtXHUwMDNlbm90aWZ5X2xpc3QpO1xuK1x0SU5JVF9MSVNUX0hFQUQoXHUwMDI2bmZ0X25ldC1cdTAwM2VzZXRfdXBkYXRlX2xpc3QpO1xuIFx0bXV0ZXhfaW5pdChcdTAwMjZuZnRfbmV0LVx1MDAzZWNvbW1pdF9tdXRleCk7XG4gXHRuZXQtXHUwMDNlbmZ0LmJhc2Vfc2VxID0gMTtcbiBcdG5mdF9uZXQtXHUwMDNlZ2Nfc2VxID0gMDtcbkBAIC0xMjE4Niw2ICsxMjIwMyw3IEBAIHN0YXRpYyB2b2lkIF9fbmV0X2V4aXQgbmZfdGFibGVzX2V4aXRfbmV0KHN0cnVjdCBuZXQgKm5ldClcbiBcdFdBUk5fT05fT05DRSghbGlzdF9lbXB0eShcdTAwMjZuZnRfbmV0LVx1MDAzZW1vZHVsZV9saXN0KSk7XG4gXHRXQVJOX09OX09OQ0UoIWxpc3RfZW1wdHkoXHUwMDI2bmZ0X25ldC1cdTAwM2Vub3RpZnlfbGlzdCkpO1xuIFx0V0FSTl9PTl9PTkNFKCFsaXN0X2VtcHR5KFx1MDAyNm5mdF9uZXQtXHUwMDNlZGVzdHJveV9saXN0KSk7XG4rXHRXQVJOX09OX09OQ0UoIWxpc3RfZW1wdHkoXHUwMDI2bmZ0X25ldC1cdTAwM2VzZXRfdXBkYXRlX2xpc3QpKTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgbmZfdGFibGVzX2V4aXRfYmF0Y2goc3RydWN0IGxpc3RfaGVhZCAqbmV0X2V4aXRfbGlzdClcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDIzOjI1OjMzLjk3MjA3MzM1MloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjczOTI4NTA2MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgbmZfdGFibGVzIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IGRpdmVzIHByZXR0eSBkZWVwIGludG8gdGhlIG5mX3RhYmxlcyBjb3JlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGhvdyBzZXQgZWxlbWVudHMgYXJlIGhhbmRsZWQgaW4gbmV0ZmlsdGVyLiBUaGUgY2hhbmdlcyBmb2N1cyBvbiBgbmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmNgIGFuZCBgaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlcy5oYC4gSXQgc2VlbXMgd2UncmUgaW50cm9kdWNpbmcgYSBgc2V0X3VwZGF0ZV9saXN0YCB3aXRoaW4gdGhlIGBuZnRhYmxlc19wZXJuZXRgIHN0cnVjdHVyZS4gVGhpcyBpcyBzaWduaWZpY2FudCwgYXMgaXQgaW5kaWNhdGVzIGEgc2hpZnQgaW4gaG93IHNldCB1cGRhdGVzIGFyZSBtYW5hZ2VkIGR1cmluZyB0cmFuc2FjdGlvbnMuXG5cblRoZSBwYXRjaCBtb2RpZmllcyBzZXZlcmFsIGNydWNpYWwgZnVuY3Rpb25zOiBgbmZ0X3RyYW5zX2NvbW1pdF9saXN0X2FkZF9lbGVtYCB0byBwb3B1bGF0ZSB0aGlzIG5ldyBgc2V0X3VwZGF0ZV9saXN0YC4gQWxzbywgd2Ugc2VlIGNoYW5nZXMgaW4gYG5mdF9zZXRfY29tbWl0X3VwZGF0ZWAsIHdoaWNoIG5vdyBpdGVyYXRlcyBvdmVyICpib3RoKiB0aGUgYGNvbW1pdF9saXN0YCAqYW5kKiB0aGUgbmV3IGBzZXRfdXBkYXRlX2xpc3RgLiAgQ3J1Y2lhbGx5LCBgbmZfdGFibGVzX2NvbW1pdGAgaXMgYmVpbmcgYWx0ZXJlZCB0byBjYWxsIGBuZnRfc2V0X2NvbW1pdF91cGRhdGVgICpiZWZvcmUqIHRoZSBydWxlcyBiZWNvbWUgdmlzaWJsZS4gVGhpcyBpcyBhIGZ1bmRhbWVudGFsIGNoYW5nZSBpbiBjb21taXQgb3JkZXIuICBGaW5hbGx5LCBgX19uZl90YWJsZXNfYWJvcnRgIG5vdyB1c2VzIGBuZnRfc2V0X2Fib3J0X3VwZGF0ZWAsIHdoaWNoIHByb2JhYmx5IHVuZG9lcyB0aGVzZSBjaGFuZ2VzLlxuXG5GdW5jdGlvbmFsbHksIHRoaXMgaW1wYWN0cyB0aGUgd2F5IHNldCBlbGVtZW50cyBhcmUgY29tbWl0dGVkIGFuZCBhYm9ydGVkIHdpdGhpbiBuZl90YWJsZXMuIFRoZSBjaGFuZ2UgaXMgZGVmaW5pdGVseSByZWFjaGFibGUsIGFuZCBnaXZlbiBpdHMgY29yZSBuYXR1cmUsIHRoaXMgaXMgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGNvbmZpZ3VyYXRpb25zIGFyZSByZWxldmFudCDigJMgYENPTkZJR19ORl9UQUJMRVNgIHNlZW1zIGxpa2UgdGhlIG9idmlvdXMgc3RhcnRpbmcgcG9pbnQuXG5cbk5vdywgbGV0J3MgaWRlbnRpZnkgdGhlIGtleSBzeW1ib2xzIG1vZGlmaWVkIGJ5IHRoZSBwYXRjaDogYG5mdF90cmFuc19jb21taXRfbGlzdF9hZGRfZWxlbWAsIGBuZnRfdHJhbnNfZWxlbXNfcmVtb3ZlYCwgYG5mdF90cmFuc19lbGVtc19yZW1vdmVfbm90aWZ5YCwgYG5mdF9zZXRfY29tbWl0X3VwZGF0ZWAsIGBuZl90YWJsZXNfY29tbWl0YCwgYG5mdF9zZXRfYWJvcnRfdXBkYXRlYCwgYF9fbmZfdGFibGVzX2Fib3J0YCwgYG5mX3RhYmxlc19pbml0X25ldGAsIGFuZCBgbmZfdGFibGVzX2V4aXRfbmV0YC4gSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciBgbmZfdGFibGVzX2NvbW1pdGAgaXMgZXhwb3J0ZWQgb3Igbm90LCBiZWNhdXNlIGl0IHNlZW1zIG9kZCB0aGF0IGl0IHdvdWxkIGJlIHN0YXRpYy4gSSBuZWVkIHRvIG1ha2Ugc3VyZS4gSSdsbCBjaGVjay5cblxuXG4iLCJJbnB1dFRva2VucyI6NDc4MCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxNywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDIzOjI1OjQxLjM2NDkyNjcxM1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODYyMjQxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZl90YWJsZXNfY29tbWl0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTEwMzA1PUVYUE9SVF9TWU1CT0xfR1BMKG5mX3RhYmxlc190cmFuc19kZXN0cm95X2ZsdXNoX3dvcmspO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwMzA2LVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwMzA3OnN0YXRpYyBpbnQgbmZfdGFibGVzX2NvbW1pdF9jaGFpbl9wcmVwYXJlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5mdF9jaGFpbiAqY2hhaW4pXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTAzMDgte1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTAzODEtXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTAzODI6c3RhdGljIHZvaWQgbmZfdGFibGVzX2NvbW1pdF9jaGFpbl9wcmVwYXJlX2NhbmNlbChzdHJ1Y3QgbmV0ICpuZXQpXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTAzODMte1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTAzOTctXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTAzOTg6c3RhdGljIHZvaWQgX19uZl90YWJsZXNfY29tbWl0X2NoYWluX2ZyZWVfcnVsZXMoc3RydWN0IHJjdV9oZWFkICpoKVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwMzk5LXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwNDA0LVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwNDA1OnN0YXRpYyB2b2lkIG5mX3RhYmxlc19jb21taXRfY2hhaW5fZnJlZV9ydWxlc19vbGQoc3RydWN0IG5mdF9ydWxlX2Jsb2IgKmJsb2IpXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA0MDYte1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA0MTItXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTA0MTM6XFx0Y2FsbF9yY3UoXFx1MDAyNmxhc3QtXFx1MDAzZWgsIF9fbmZfdGFibGVzX2NvbW1pdF9jaGFpbl9mcmVlX3J1bGVzKTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDQxNC19XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA0MTUtXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTA0MTY6c3RhdGljIHZvaWQgbmZfdGFibGVzX2NvbW1pdF9jaGFpbihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBuZnRfY2hhaW4gKmNoYWluKVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwNDE3LXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwNDM4LVxcdFxcdFxcdHJjdV9hc3NpZ25fcG9pbnRlcihjaGFpbi1cXHUwMDNlYmxvYl9nZW5fMSwgZzApO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwNDM5OlxcdFxcdFxcdG5mX3RhYmxlc19jb21taXRfY2hhaW5fZnJlZV9ydWxlc19vbGQoZzEpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwNDQwLVxcdFxcdH0gZWxzZSB7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA0NDEtXFx0XFx0XFx0cmN1X2Fzc2lnbl9wb2ludGVyKGNoYWluLVxcdTAwM2VibG9iX2dlbl8wLCBnMSk7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTA0NDI6XFx0XFx0XFx0bmZfdGFibGVzX2NvbW1pdF9jaGFpbl9mcmVlX3J1bGVzX29sZChnMCk7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA0NDMtXFx0XFx0fVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA0NTgtXFx0aWYgKG5leHRfZ2VuYml0KVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwNDU5OlxcdFxcdG5mX3RhYmxlc19jb21taXRfY2hhaW5fZnJlZV9ydWxlc19vbGQoZzEpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwNDYwLVxcdGVsc2VcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDQ2MTpcXHRcXHRuZl90YWJsZXNfY29tbWl0X2NoYWluX2ZyZWVfcnVsZXNfb2xkKGcwKTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDQ2Mi19XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz0xMDcxMT1zdGF0aWMgdm9pZCBuZl90YWJsZXNfbW9kdWxlX2F1dG9sb2FkX2NsZWFudXAoc3RydWN0IG5ldCAqbmV0KVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA3MjMtXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTA3MjQ6c3RhdGljIHZvaWQgbmZfdGFibGVzX2NvbW1pdF9yZWxlYXNlKHN0cnVjdCBuZXQgKm5ldClcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDcyNS17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz0xMDc1OD1zdGF0aWMgdm9pZCBuZnRfY29tbWl0X25vdGlmeShzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBwb3J0aWQpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDc5My1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDc5NDpzdGF0aWMgaW50IG5mX3RhYmxlc19jb21taXRfYXVkaXRfYWxsb2Moc3RydWN0IGxpc3RfaGVhZCAqYWRsLFxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwNzk1LVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBuZnRfdGFibGUgKnRhYmxlKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA4MTAtXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTA4MTE6c3RhdGljIHZvaWQgbmZfdGFibGVzX2NvbW1pdF9hdWRpdF9mcmVlKHN0cnVjdCBsaXN0X2hlYWQgKmFkbClcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDgxMi17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDgyMy0gKi9cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDgyNDpzdGF0aWMgdW5zaWduZWQgaW50IG5mX3RhYmxlc19jb21taXRfYXVkaXRfZW50cnljb3VudChjb25zdCBzdHJ1Y3QgbmZ0X3RyYW5zICp0cmFucylcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDgyNS17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDgzNC1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDgzNTpzdGF0aWMgdm9pZCBuZl90YWJsZXNfY29tbWl0X2F1ZGl0X2NvbGxlY3Qoc3RydWN0IGxpc3RfaGVhZCAqYWRsLFxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwODM2LVxcdFxcdFxcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCBuZnRfdHJhbnMgKnRyYW5zLCB1MzIgb3ApXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDg0Ny1mb3VuZDpcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDg0ODpcXHRhZHAtXFx1MDAzZWVudHJpZXMgKz0gbmZfdGFibGVzX2NvbW1pdF9hdWRpdF9lbnRyeWNvdW50KHRyYW5zKTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDg0OS1cXHRpZiAoIWFkcC1cXHUwMDNlb3AgfHwgYWRwLVxcdTAwM2VvcCBcXHUwMDNlIG9wKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA4NTQtXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTA4NTU6c3RhdGljIHZvaWQgbmZfdGFibGVzX2NvbW1pdF9hdWRpdF9sb2coc3RydWN0IGxpc3RfaGVhZCAqYWRsLCB1MzIgZ2VuZXJhdGlvbilcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDg1Ni17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz0xMDkxNT1zdGF0aWMgdm9pZCBuZnRfZ2Nfc2VxX2VuZChzdHJ1Y3QgbmZ0YWJsZXNfcGVybmV0ICpuZnRfbmV0LCB1bnNpZ25lZCBpbnQgZ2Nfc2VxKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA5MTktXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTA5MjA6c3RhdGljIGludCBuZl90YWJsZXNfY29tbWl0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDkyMS17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDk4MC1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDk4MTpcXHRcXHRyZXQgPSBuZl90YWJsZXNfY29tbWl0X2F1ZGl0X2FsbG9jKFxcdTAwMjZhZGwsIHRhYmxlKTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDk4Mi1cXHRcXHRpZiAocmV0KSB7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTA5ODM6XFx0XFx0XFx0bmZfdGFibGVzX2NvbW1pdF9jaGFpbl9wcmVwYXJlX2NhbmNlbChuZXQpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwOTg0OlxcdFxcdFxcdG5mX3RhYmxlc19jb21taXRfYXVkaXRfZnJlZShcXHUwMDI2YWRsKTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDk4NS1cXHRcXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA5OTAtXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTA5OTE6XFx0XFx0XFx0cmV0ID0gbmZfdGFibGVzX2NvbW1pdF9jaGFpbl9wcmVwYXJlKG5ldCwgY2hhaW4pO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwOTkyLVxcdFxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTA5OTM6XFx0XFx0XFx0XFx0bmZfdGFibGVzX2NvbW1pdF9jaGFpbl9wcmVwYXJlX2NhbmNlbChuZXQpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwOTk0OlxcdFxcdFxcdFxcdG5mX3RhYmxlc19jb21taXRfYXVkaXRfZnJlZShcXHUwMDI2YWRsKTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDk5NS1cXHRcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTEwMDQtXFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeShjaGFpbiwgXFx1MDAyNnRhYmxlLVxcdTAwM2VjaGFpbnMsIGxpc3QpXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTEwMDU6XFx0XFx0XFx0bmZfdGFibGVzX2NvbW1pdF9jaGFpbihuZXQsIGNoYWluKTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTAwNi1cXHR9XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTAyOC1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTAyOTpcXHRcXHRuZl90YWJsZXNfY29tbWl0X2F1ZGl0X2NvbGxlY3QoXFx1MDAyNmFkbCwgdHJhbnMsIHRyYW5zLVxcdTAwM2Vtc2dfdHlwZSk7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTEwMzAtXFx0XFx0c3dpdGNoICh0cmFucy1cXHUwMDNlbXNnX3R5cGUpIHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExMjEzLVxcdG5mX3RhYmxlc19nZW5fbm90aWZ5KG5ldCwgc2tiLCBORlRfTVNHX05FV0dFTik7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTEyMTQ6XFx0bmZfdGFibGVzX2NvbW1pdF9hdWRpdF9sb2coXFx1MDAyNmFkbCwgbmZ0X2Jhc2Vfc2VxKG5ldCkpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExMjE1LVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTEyMTctXFx0bmZ0X25ldC1cXHUwMDNldmFsaWRhdGVfc3RhdGUgPSBORlRfVkFMSURBVEVfU0tJUDtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTIxODpcXHRuZl90YWJsZXNfY29tbWl0X3JlbGVhc2UobmV0KTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTIxOS1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTExNTM5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZuZXRsaW5rX3N1YnN5c3RlbSBuZl90YWJsZXNfc3Vic3lzID0ge1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE1NDMtXFx0LmNiXFx0XFx0PSBuZl90YWJsZXNfY2IsXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTE1NDQ6XFx0LmNvbW1pdFxcdFxcdD0gbmZfdGFibGVzX2NvbW1pdCxcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTU0NS1cXHQuYWJvcnRcXHRcXHQ9IG5mX3RhYmxlc19hYm9ydCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMjM6MjU6NDEuNDIzNTUzNTcyWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc4Mzk0NjQ5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gTmV0ZmlsdGVyIFRhYmxlIE9wZXJhdGlvbnMqKlxuXG5SaWdodCwgc28gSSBzZWUgYG5mX3RhYmxlc19jb21taXRgIGlzIGNydWNpYWwgd2l0aGluIGBuZl90YWJsZXNfc3Vic3lzYC4gTXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBob3cgdGhpcyB0aWVzIGludG8gZXJyb3IgaGFuZGxpbmcgYW5kIHJvbGxiYWNrIG1lY2hhbmlzbXMuIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byB1bmRlcnN0YW5kIHRoZSBhYm9ydCBwcm9jZXNzLiBJIG5lZWQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyBhIGZhaWxlZCBjb21taXQgaXMgaGFuZGxlZCwgYW5kIHdoYXQgc3RhdGUgdGhlIHRhYmxlcyBhcmUgbGVmdCBpbi4gVGltZSB0byBkZWx2ZSBpbnRvIGBfX25mX3RhYmxlc19hYm9ydGAuIEknbSBjdXJpb3VzIGFib3V0IHRoZSBzcGVjaWZpYyBtZWNoYW5pc21zIGludm9sdmVkIGluIHJvbGxpbmcgYmFjayB0aGUgY2hhbmdlcyBhbmQgZW5zdXJpbmcgYSBjb25zaXN0ZW50IHN0YXRlIHdpdGhpbiB0aGUgbmV0ZmlsdGVyIGZyYW1ld29yay4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCByZXNvdXJjZXMgYXJlIHJlbGVhc2VkIGFuZCB3aGF0IHNhZmVndWFyZHMgYXJlIGluIHBsYWNlLiBUaGUgZGV2aWwncyBpbiB0aGUgZGV0YWlscyB3aXRoIHRoZXNlIGNvbXBsZXggc3lzdGVtcywgc28gSSdsbCBwcm9iYWJseSBiZSB0cmFjaW5nIGV4ZWN1dGlvbiBmbG93IGFuZCBjaGVja2luZyBpbnZhcmlhbnRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MzAxLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMjM6MjU6NDUuMjA3NTAzMTI5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1Nzg1MTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9fbmZfdGFibGVzX2Fib3J0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTExMjc3PXN0YXRpYyB2b2lkIG5mdF9zZXRfYWJvcnRfdXBkYXRlKHN0cnVjdCBuZnRhYmxlc19wZXJuZXQgKm5mdF9uZXQpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTI5MC1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTI5MTpzdGF0aWMgaW50IF9fbmZfdGFibGVzX2Fib3J0KHN0cnVjdCBuZXQgKm5ldCwgZW51bSBuZm5sX2Fib3J0X2FjdGlvbiBhY3Rpb24pXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTEyOTIte1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9MTE0OTA9c3RhdGljIGludCBuZl90YWJsZXNfYWJvcnQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE0OTctXFx0Z2Nfc2VxID0gbmZ0X2djX3NlcV9iZWdpbihuZnRfbmV0KTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTQ5ODpcXHRyZXQgPSBfX25mX3RhYmxlc19hYm9ydChuZXQsIGFjdGlvbik7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE0OTktXFx0bmZ0X2djX3NlcV9lbmQobmZ0X25ldCwgZ2Nfc2VxKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMjM6MjU6NDUuMjUzMjk0OTU4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Nzc2ODE5ODE0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgTmV0ZmlsdGVyIFRhYmxlcyBmb3IgRm9jdXMgU3ltYm9scyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIHRyeWluZyB0byBmaWd1cmUgb3V0IHRoZSByaWdodCBmb2N1cyBzeW1ib2xzLiBUaGUgaW5zdHJ1Y3Rpb25zIGFyZSBwcmV0dHkgY2xlYXI6IHByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMuIFRoYXQgc2VlbXMgdG8gYmUgdGhlIGtleS4gTGV0J3Mgc2VlLi4uIEkndmUgZ290IGBuZl90YWJsZXNfY29tbWl0YCBhbmQgYG5mX3RhYmxlc19hYm9ydGAgYXMgdGhlIGluaXRpYWwgZW50cnkgcG9pbnRzLCBhbmQgeWVzLCBgbmZfdGFibGVzX2NvbW1pdGAgKmlzKiBzdGF0aWMsIGJ1dCBpdCdzIGFzc2lnbmVkIHRvIGEgZnVuY3Rpb24gcG9pbnRlciwgYC5jb21taXRgLCBpbiBgbmZuZXRsaW5rX3N1YnN5c3RlbWAuIFRoYXQgaW1tZWRpYXRlbHkgbWFrZXMgaXQgaW50ZXJlc3RpbmcsIHJpZ2h0PyBTdGF0aWMgZnVuY3Rpb25zIGFyZSB1c3VhbGx5IGlubGluZWQsIGxvc2luZyBkaXN0aW5jdCBzeW1ib2xzLCBidXQgYSAqbGFyZ2UqIHN0YXRpYyBmdW5jdGlvbiBhc3NpZ25lZCB0byBhIGZ1bmN0aW9uIHBvaW50ZXIsIGxpa2UgYG5mX3RhYmxlc19jb21taXRgLCBpdCAqZGVmaW5pdGVseSogaXNuJ3QgaW5saW5lZCwgc28gaXQgc2hvdWxkIGJlIGZpbmUgdG8gdGFyZ2V0LiBJIHNlZSB0aGF0IGBuZl90YWJsZXNfdHJhbnNfZGVzdHJveV9mbHVzaF93b3JrYCBpcyBleHBvcnRlZCBidXQgbm90IG1vZGlmaWVkLCBhbmQgdGhlIHBhdGNoIHRvdWNoZXMgc2V2ZXJhbCBmdW5jdGlvbnM6IGBuZnRfdHJhbnNfY29tbWl0X2xpc3RfYWRkX2VsZW1gLCBgbmZ0X3RyYW5zX2VsZW1zX3JlbW92ZWAsIGBuZnRfdHJhbnNfZWxlbXNfcmVtb3ZlX25vdGlmeWAsIGBuZnRfc2V0X2NvbW1pdF91cGRhdGVgLCBgbmZ0X3NldF9hYm9ydF91cGRhdGVgLCBgX19uZl90YWJsZXNfYWJvcnRgLCBgbmZfdGFibGVzX2luaXRfbmV0YCwgYW5kIGBuZl90YWJsZXNfZXhpdF9uZXRgLlxuXG5TbyB0aGUgcGF0Y2ggbW9kaWZpZXMgYSBoYW5kZnVsIG9mIGZ1bmN0aW9ucywgc29tZSBvZiB3aGljaCBtYXkgYmUgaW5saW5lZCBvciBzdGF0aWMsIGJ1dCB0aGUgbWFpbiBwb2ludCBpcyB0byBpZGVudGlmeSB0aGUgYmVzdCwgbm9uLWlubGluZWQgZW50cnkgcG9pbnRzLlxuXG5JIHJlbWVtYmVyIHRoZSBpbnN0cnVjdGlvbnMuIFdlIHdhbnQgdGhvc2Ugbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzLiBTbywgYG5mX3RhYmxlc19jb21taXRgIGFuZCBgbmZfdGFibGVzX2Fib3J0YCwgYmVjYXVzZSB0aGV5IGFyZSBhc3NpZ25lZCB0byBmdW5jdGlvbiBwb2ludGVycywgdGhleSBoYXZlIGRpc3RpbmN0IHN5bWJvbHMsIGFuZCBhcmUgbm90IGlubGluZWQsIHdoaWNoIG1ha2VzIHRoZW0gaWRlYWwuXG5cbkkgcGF1c2VkIHRvIGNoZWNrIGlmIEkgYW0gZGVhbGluZyB3aXRoIGEgaG90LXBhdGggZnVuY3Rpb24sIGJ1dCBpdCdzIG5vdCBhIHBhY2tldCBwcm9jZXNzaW5nIGhvdC1wYXRoLiBJdCdzIGEgbmV0bGluayBjb21taXQgZnVuY3Rpb24gdXNlZCBmb3IgbmV0ZmlsdGVyIHJ1bGUgY29uZmlndXJhdGlvbiwgd2hpY2ggbWFrZXMgc2Vuc2UuIEkgc3VzcGVjdCB0aGF0IGBuZnRfc2V0X2NvbW1pdF91cGRhdGVgICptaWdodCogYmUgaW5saW5lZCwgc28gSSdsbCBwcm9iYWJseSBsaXN0IGBuZl90YWJsZXNfY29tbWl0YCBhbmQgYG5mX3RhYmxlc19hYm9ydGAgdG8gYmUgc2FmZS4gVGhhdCdzIGdvb2QgZW5vdWdoIGZvciBub3cuIFRpbWUgdG8gY2hlY2sgdGhlIEtjb25maWcgZm9yIGBORl9UQUJMRVNgIHRvIG1ha2Ugc3VyZSB0aGUgbW9kdWxlIGlzIGVuYWJsZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg4NDIsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMjM6MjU6NTMuMDIxNDk1MjQ3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0ODQ0MTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORl9UQUJMRVNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz00NTM9ZW5kaWYgIyBORl9DT05OVFJBQ0tcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDU0LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0NTU6Y29uZmlnIE5GX1RBQkxFU1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NTYtXFx0c2VsZWN0IE5FVEZJTFRFUl9ORVRMSU5LXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc9NDcxPWlmIE5GX1RBQkxFU1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0NzI6Y29uZmlnIE5GX1RBQkxFU19JTkVUXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ3My1cXHRkZXBlbmRzIG9uIElQVjZcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NzktXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjQ4MDpjb25maWcgTkZfVEFCTEVTX05FVERFVlxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00ODEtXFx0Ym9vbCBcXFwiTmV0ZmlsdGVyIG5mX3RhYmxlcyBuZXRkZXYgdGFibGVzIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDIzOjI1OjUzLjA2NjM0NjAyNloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyMjgyNDM3NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOlxuXG4qKkFuYWx5emluZyB0aGUgTkZfVEFCTEVTIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBzbyBgTkZfVEFCTEVTYCBpcyB0aGUga2V5IGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgaGVyZS4gU2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCDigJMgdGhhdCdzIG91ciBzdGFydGluZyBwb2ludC4gTm93LCBsZXQncyBzZWUgaWYgdGhlcmUgYXJlIGFueSByZWxhdGVkIGNvbmZpZ3Mgd2UgbmVlZCB0byBjb25zaWRlci4gSSBhbHdheXMgbGlrZSB0byBnZXQgYSBjb21wbGV0ZSBwaWN0dXJlLlxuXG5UaGUgcGF0Y2ggaXMgdG91Y2hpbmcgYG5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jYC4gUmlnaHQsIHNvIHRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgQVBJIGxvZ2ljIGZvciBgbmZfdGFibGVzYCByZXNpZGVzLCBtYWtpbmcgdGhlIGZpbGUgYSBwcmltZSB0YXJnZXQuIEFuZCwgb2YgY291cnNlLCB0aGF0IGZpbGUgaXMgKm9ubHkqIGNvbXBpbGVkIGludG8gdGhlIGtlcm5lbCB3aGVuIGBDT05GSUdfTkZfVEFCTEVTYCBpcyB0dXJuZWQgb24uIE9idmlvdXMsIGJ1dCBpbXBvcnRhbnQgdG8gY2VtZW50IHRoZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBmbG93LiBHb3QgaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMDQ3LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMjM6MjU6NTguMjk0NTkyMTZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNzY0NDYwMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZl90YWJsZXNfYXBpXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9NYWtlZmlsZT04ND1vYmotJChDT05GSUdfTkZfRFVQX05FVERFVilcXHQrPSBuZl9kdXBfbmV0ZGV2Lm9cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtODYtIyBuZl90YWJsZXNcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjg3Om5mX3RhYmxlcy1vYmpzIDo9IG5mX3RhYmxlc19jb3JlLm8gbmZfdGFibGVzX2FwaS5vIG5mdF9jaGFpbl9maWx0ZXIubyBcXFxcXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS04OC1cXHRcXHQgIG5mX3RhYmxlc190cmFjZS5vIG5mdF9pbW1lZGlhdGUubyBuZnRfY21wLm8gbmZ0X3JhbmdlLm8gXFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQyMzoyNTo1OC41MzIyNDM0ODNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDczODQzNjkzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGJyZWFrZG93biBvZiB3aGF0IEknbSBsb29raW5nIGF0LCBmcm9tIG15IHBlcnNwZWN0aXZlLiBMZXQncyBzZWUgaWYgdGhpcyBhbGlnbnMgd2l0aCBteSBjdXJyZW50IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHN1YmplY3QgbWF0dGVyOlxuXG4qKk5hdmlnYXRpbmcgdGhlIGBuZl90YWJsZXNgIENvZGViYXNlKipcblxuQWxyaWdodCwgc28gdGhlIGNvcmUgcXVlc3Rpb24gaXMgYWJvdXQgYG5mX3RhYmxlcy1vYmpzYCwgYW5kIEknbSBwcmV0dHkgY2VydGFpbiB0aGF0IHRoZSBidWlsZCBwcm9jZXNzIGluY2x1ZGVzIGl0IGlmIGBDT05GSUdfTkZfVEFCTEVTYCBpcyB0dXJuZWQgb24uIENvbmZpcm1hdGlvbiBvZiB0aGUgb2J2aW91cyBpcyBhbHdheXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LlxuXG5Ob3csIEkgbmVlZCB0byBnZXQgbXkgaGVhZCBhcm91bmQgdGhlIGNydWNpYWwgY29tbWl0IGFuZCBhYm9ydCBmdW5jdGlvbnMuIExldCdzIG1ha2Ugc3VyZSBJJ3ZlIGdvdCB0aGUgYmFzaWNzIGNvdmVyZWQgdGhlcmUsIGBuZl90YWJsZXNfY29tbWl0YCBhbmQgYG5mX3RhYmxlc19hYm9ydGAuIFRoZXNlIGFyZSB0aGUgc3BpbmUgb2YgYW55IHRyYW5zYWN0aW9uIHN5c3RlbS4gQXJlIHRoZXJlIGFueSBvdGhlciBoaWdoLWxldmVsIHN5bWJvbHMgd2hpY2ggbmVlZCB0byBiZSBhY2NvdW50ZWQgZm9yP1xuXG5JIHNlZSBgbmZ0X3RyYW5zX2NvbW1pdF9saXN0X2FkZF9lbGVtYCBnZXR0aW5nIGNhbGxlZCBmcm9tIGBuZnRfYWRkX3NldF9lbGVtYCBhbmQgYG5mdF9kZWxfc2V0ZWxlbWAuIFRoYXQgbWFrZXMgc2Vuc2U7IHRoZXNlIGZ1bmN0aW9ucyBhcmUgbGlrZWx5IGludm9sdmVkIGluIGhhbmRsaW5nIHRyYW5zYWN0aW9uIGxpc3RzLiBGb2xsb3dpbmcgdGhhdCBsb2dpYywgSSByZWNhbGwgdGhhdCBgbmZ0X2FkZF9zZXRfZWxlbWAgaXMsIGluIHR1cm4sIGNhbGxlZCBieSBgbmZfdGFibGVzX25ld3NldGVsZW1gLCBhbmQgc2ltaWxhcmx5LCBgbmZ0X2RlbF9zZXRlbGVtYCBpcyBjYWxsZWQgZnJvbSBgbmZfdGFibGVzX2RlbHNldGVsZW1gLiBUaGVzZSBzaG91bGQgYWxzbyBiZSBrZXkgZnVuY3Rpb25zIEkgc2hvdWxkIGtlZXAgaW4gbWluZC4gSSBrbm93IHdoYXQgdGhlc2UgZnVuY3Rpb25zIGRvLCBidXQgaXQncyBpbXBvcnRhbnQgdG8gbWFrZSBzdXJlIHRoZXkncmUgaW5jbHVkZWQgaW4gbXkgbWVudGFsIG1vZGVsIG9mIHRoaXMgYXJjaGl0ZWN0dXJlLiBUaGV5IGFyZSBnb29kIGZvY3VzIHBvaW50cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA0NDEsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMjM6MjY6MDMuMjcwNjg0MDAyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTkzMTAzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZl90YWJsZXNfbmV3c2V0ZWxlbVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz03MjY3PXN0YXRpYyBpbnQgbmZ0X2FkZF9zZXRfZWxlbShzdHJ1Y3QgbmZ0X2N0eCAqY3R4LCBzdHJ1Y3QgbmZ0X3NldCAqc2V0LFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtNzY4MC1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzo3NjgxOnN0YXRpYyBpbnQgbmZfdGFibGVzX25ld3NldGVsZW0oc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy03NjgyLVxcdFxcdFxcdFxcdGNvbnN0IHN0cnVjdCBuZm5sX2luZm8gKmluZm8sXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz05OTQyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZubF9jYWxsYmFjayBuZl90YWJsZXNfY2JbTkZUX01TR19NQVhdID0ge1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTAwNDUtXFx0W05GVF9NU0dfTkVXU0VURUxFTV0gPSB7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTAwNDY6XFx0XFx0LmNhbGxcXHRcXHQ9IG5mX3RhYmxlc19uZXdzZXRlbGVtLFxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwMDQ3LVxcdFxcdC50eXBlXFx0XFx0PSBORk5MX0NCX0JBVENILFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQyMzoyNjowMy4zMzI2MTkyN1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDI4MTM1OTg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgdGhpbmtpbmcgdGhlbTpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQ6IE5ldHdvcmsgRmlsdGVyaW5nIFNldCBPcGVyYXRpb25zKipcblxuQWxyaWdodCwgbGV0J3MgemVybyBpbiBvbiB0aGlzLiBJJ20gc2VlaW5nIGBuZl90YWJsZXNfbmV3c2V0ZWxlbWAgYW5kIGBuZl90YWJsZXNfZGVsc2V0ZWxlbWAuIEltbWVkaWF0ZWx5LCB0aG9zZSBqdW1wIG91dCBhcyB0aGUgY29yZSBlbnRyeSBwb2ludHMgZm9yIHRoZSBhZGRpdGlvbiBhbmQgcmVtb3ZhbCBvZiBlbGVtZW50cyB3aXRoaW4gYSBzZXQsIGluIHRoZSBjb250ZXh0IG9mIGBuZl90YWJsZXNgLiBUaGF0J3MgcHJlY2lzZWx5IHRoZSBraW5kIG9mIGxvdy1sZXZlbCBkZXRhaWwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bmRhbWVudGFsIG1lY2hhbmljcyBvZiBob3cgdGhlc2UgbmV0d29yayBmaWx0ZXJpbmcgdGFibGVzIGFyZSBtYW5pcHVsYXRlZCBhdCB0aGUgc2V0IGxldmVsLiBFeGNlbGxlbnQgZm9jdXMgc3ltYm9scyB0byBzdGFydCBkaWdnaW5nIGludG8uIFRoZXkgb2ZmZXIgYSBkaXJlY3QgcGF0aCB0byB1bmRlcnN0YW5kaW5nIHRoZSBjb3JlIGZ1bmN0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEyMjYsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQyMzoyNjowNi4zNjA3NTgzMTlaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzNTA2Mzk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mX3RhYmxlc19kZWxzZXRlbGVtXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTgwMDQ9c3RhdGljIGludCBuZnRfc2V0X2ZsdXNoKHN0cnVjdCBuZnRfY3R4ICpjdHgsIHN0cnVjdCBuZnRfc2V0ICpzZXQsIHU4IGdlbm1hc2spXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy04MDIxLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjgwMjI6c3RhdGljIGludCBuZl90YWJsZXNfZGVsc2V0ZWxlbShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTgwMjMtXFx0XFx0XFx0XFx0Y29uc3Qgc3RydWN0IG5mbmxfaW5mbyAqaW5mbyxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTk5NDI9c3RhdGljIGNvbnN0IHN0cnVjdCBuZm5sX2NhbGxiYWNrIG5mX3RhYmxlc19jYltORlRfTVNHX01BWF0gPSB7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDA2My1cXHRbTkZUX01TR19ERUxTRVRFTEVNXSA9IHtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDA2NDpcXHRcXHQuY2FsbFxcdFxcdD0gbmZfdGFibGVzX2RlbHNldGVsZW0sXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTAwNjUtXFx0XFx0LnR5cGVcXHRcXHQ9IE5GTkxfQ0JfQkFUQ0gsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDA2OS1cXHRbTkZUX01TR19ERVNUUk9ZU0VURUxFTV0gPSB7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTAwNzA6XFx0XFx0LmNhbGxcXHRcXHQ9IG5mX3RhYmxlc19kZWxzZXRlbGVtLFxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwMDcxLVxcdFxcdC50eXBlXFx0XFx0PSBORk5MX0NCX0JBVENILFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQyMzoyNjowNi40MjQyNjg1MThaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc0MDMzMzY5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBOZXRmaWx0ZXIgRm9jdXMqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gemVybyBpbiBvbiB0aGVzZSBzeW1ib2xzOiBgbmZfdGFibGVzX2NvbW1pdGAsIGBuZl90YWJsZXNfYWJvcnRgLCBgbmZfdGFibGVzX25ld3NldGVsZW1gLCBhbmQgYG5mX3RhYmxlc19kZWxzZXRlbGVtYC4gVGhleSdyZSBhbGwgTmV0bGluayBjYWxsYmFja3MsIHdoaWNoIG1lYW5zIHRoZXkgYXJlbid0IGlubGluZWQgYW5kIGFyZSBkZWZpbml0ZSBBUEkgZW50cnlwb2ludHMsIHBlcmZlY3QgdGFyZ2V0cyBmb3IgZGVlcGVyIGFuYWx5c2lzLlxuXG5CZWZvcmUgSSBnbyBmdXJ0aGVyLCBJIHNob3VsZCB2ZXJpZnkgdGhlIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBMZXQncyBtYWtlIHN1cmUgYE5GX1RBQkxFU2AgZGVwZW5kcyBvbiBgTkVURklMVEVSYC4gR290dGEgY292ZXIgYWxsIHRoZSBiYXNlcyB0byBhdm9pZCBhbnkgdW5leHBlY3RlZCBpc3N1ZXMgZG93biB0aGUgbGluZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE4MzcsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQyMzoyNjoxMC4xNjQ2MDU1NzZaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzNTA4NzU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRGSUxURVJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz0yPW1lbnUgXFxcIkNvcmUgTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb25cXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NTpjb25maWcgTkVURklMVEVSX0lOR1JFU1NcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNi1cXHRib29sIFxcXCJOZXRmaWx0ZXIgaW5ncmVzcyBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEyLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMzpjb25maWcgTkVURklMVEVSX0VHUkVTU1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNC1cXHRib29sIFxcXCJOZXRmaWx0ZXIgZWdyZXNzIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjAtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjIxOmNvbmZpZyBORVRGSUxURVJfU0tJUF9FR1JFU1NcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjItXFx0ZGVmX2Jvb2wgTkVURklMVEVSX0VHUkVTUyBcXHUwMDI2XFx1MDAyNiAoTkVUX0NMU19BQ1QgfHwgSUZCKVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yMy1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MjQ6Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI1LVxcdGJvb2xcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjYtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjI3OmNvbmZpZyBORVRGSUxURVJfRkFNSUxZX0JSSURHRVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yOC1cXHRib29sXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI5LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozMDpjb25maWcgTkVURklMVEVSX0ZBTUlMWV9BUlBcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzEtXFx0Ym9vbFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zMi1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MzM6Y29uZmlnIE5FVEZJTFRFUl9CUEZfTElOS1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zNC1cXHRkZWZfYm9vbCBCUEZfU1lTQ0FMTFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zNS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MzY6Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX0hPT0tcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzctXFx0dHJpc3RhdGUgXFxcIk5ldGZpbHRlciBiYXNlIGhvb2sgZHVtcCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ1LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0Njpjb25maWcgTkVURklMVEVSX05FVExJTktfQUNDVFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00Ny1cXHR0cmlzdGF0ZSBcXFwiTmV0ZmlsdGVyIE5GQUNDVCBvdmVyIE5GTkVUTElOSyBpbnRlcmZhY2VcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNTMtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjU0OmNvbmZpZyBORVRGSUxURVJfTkVUTElOS19RVUVVRVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy01NS1cXHR0cmlzdGF0ZSBcXFwiTmV0ZmlsdGVyIE5GUVVFVUUgb3ZlciBORk5FVExJTksgaW50ZXJmYWNlXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTYxLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo2Mjpjb25maWcgTkVURklMVEVSX05FVExJTktfTE9HXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTYzLVxcdHRyaXN0YXRlIFxcXCJOZXRmaWx0ZXIgTE9HIG92ZXIgTkZORVRMSU5LIGludGVyZmFjZVxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03My1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NzQ6Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX09TRlxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03NS1cXHR0cmlzdGF0ZSBcXFwiTmV0ZmlsdGVyIE9TRiBvdmVyIE5GTkVUTElOSyBpbnRlcmZhY2VcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc9MTEwPWlmIE5GX0NPTk5UUkFDS1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMTE6Y29uZmlnIE5FVEZJTFRFUl9DT05OQ09VTlRcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTEyLVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc9Mzg1PWNvbmZpZyBORl9DVF9ORVRMSU5LX0hFTFBFUlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTM5Ny1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mzk4OmNvbmZpZyBORVRGSUxURVJfTkVUTElOS19HTFVFX0NUXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTM5OS1cXHRib29sIFxcXCJORlFVRVVFIGFuZCBORkxPRyBpbnRlZ3JhdGlvbiB3aXRoIENvbm5lY3Rpb24gVHJhY2tpbmdcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc9NDQ3PWNvbmZpZyBORl9OQVRfT1ZTXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDQ5LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0NTA6Y29uZmlnIE5FVEZJTFRFUl9TWU5QUk9YWVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NTEtXFx0dHJpc3RhdGVcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz03MjE9Y29uZmlnIE5GX0ZMT1dfVEFCTEVfUFJPQ0ZTXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzI4LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo3Mjk6Y29uZmlnIE5FVEZJTFRFUl9YVEFCTEVTXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTczMC1cXHR0cmlzdGF0ZSBcXFwiTmV0ZmlsdGVyIFh0YWJsZXMgc3VwcG9ydCAocmVxdWlyZWQgZm9yIGlwX3RhYmxlcylcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc9NzM2PWlmIE5FVEZJTFRFUl9YVEFCTEVTXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTczNy1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NzM4OmNvbmZpZyBORVRGSUxURVJfWFRBQkxFU19DT01QQVRcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzM5LVxcdGJvb2wgXFxcIk5ldGZpbHRlciBYdGFibGVzIDMyYml0IHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzQ2LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo3NDc6Y29uZmlnIE5FVEZJTFRFUl9YVEFCTEVTX0xFR0FDWVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03NDgtXFx0Ym9vbCBcXFwiTmV0ZmlsdGVyIGxlZ2FjeSB0YWJsZXMgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz03NTc9Y29tbWVudCBcXFwiWHRhYmxlcyBjb21iaW5lZCBtb2R1bGVzXFxcIlxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03NTgtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjc1OTpjb25maWcgTkVURklMVEVSX1hUX01BUktcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzYwLVxcdHRyaXN0YXRlICduZm1hcmsgdGFyZ2V0IGFuZCBtYXRjaCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTc3Mi1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NzczOmNvbmZpZyBORVRGSUxURVJfWFRfQ09OTk1BUktcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzc0LVxcdHRyaXN0YXRlICdjdG1hcmsgdGFyZ2V0IGFuZCBtYXRjaCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTc4NC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Nzg1OmNvbmZpZyBORVRGSUxURVJfWFRfU0VUXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTc4Ni1cXHR0cmlzdGF0ZSAnc2V0IHRhcmdldCBhbmQgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz03OTk9Y29tbWVudCBcXFwiWHRhYmxlcyB0YXJnZXRzXFxcIlxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04MDAtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjgwMTpjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9BVURJVFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04MDItXFx0dHJpc3RhdGUgXFxcIkFVRElUIHRhcmdldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTgxMC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6ODExOmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX0NIRUNLU1VNXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTgxMi1cXHR0cmlzdGF0ZSBcXFwiQ0hFQ0tTVU0gdGFyZ2V0IHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctODI2LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo4Mjc6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfQ0xBU1NJRllcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctODI4LVxcdHRyaXN0YXRlICdcXFwiQ0xBU1NJRllcXFwiIHRhcmdldCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTgzOC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6ODM5OmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX0NPTk5NQVJLXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTg0MC1cXHR0cmlzdGF0ZSAgJ1xcXCJDT05OTUFSS1xcXCIgdGFyZ2V0IHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctODQ4LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo4NDk6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfQ09OTlNFQ01BUktcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctODUwLVxcdHRyaXN0YXRlICdcXFwiQ09OTlNFQ01BUktcXFwiIHRhcmdldCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTg2MC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6ODYxOmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX0NUXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTg2Mi1cXHR0cmlzdGF0ZSAnXFxcIkNUXFxcIiB0YXJnZXQgc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04NzItXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjg3Mzpjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9EU0NQXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTg3NC1cXHR0cmlzdGF0ZSAnXFxcIkRTQ1BcXFwiIGFuZCBcXFwiVE9TXFxcIiB0YXJnZXQgc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04ODgtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjg4OTpjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9ITFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04OTAtXFx0dHJpc3RhdGUgJ1xcXCJITFxcXCIgaG9wbGltaXQgdGFyZ2V0IHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctOTAzLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo5MDQ6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfSE1BUktcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctOTA1LVxcdHRyaXN0YXRlICdcXFwiSE1BUktcXFwiIHRhcmdldCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTkxNy1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6OTE4OmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX0lETEVUSU1FUlxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy05MTktXFx0dHJpc3RhdGUgIFxcXCJJRExFVElNRVIgdGFyZ2V0IHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctOTI5LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo5MzA6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfTEVEXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTkzMS1cXHR0cmlzdGF0ZSAnXFxcIkxFRFxcXCIgdGFyZ2V0IHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctOTUzLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo5NTQ6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfTE9HXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTk1NS1cXHR0cmlzdGF0ZSBcXFwiTE9HIHRhcmdldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTk2NC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6OTY1OmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX01BUktcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctOTY2LVxcdHRyaXN0YXRlICdcXFwiTUFSS1xcXCIgdGFyZ2V0IHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctOTczLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo5NzQ6Y29uZmlnIE5FVEZJTFRFUl9YVF9OQVRcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctOTc1LVxcdHRyaXN0YXRlICdcXFwiU05BVCBhbmQgRE5BVFxcXCIgdGFyZ2V0cyBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTk4MS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6OTgyOmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX05FVE1BUFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy05ODMtXFx0dHJpc3RhdGUgJ1xcXCJORVRNQVBcXFwiIHRhcmdldCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTk5MS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6OTkyOmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX05GTE9HXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTk5My1cXHR0cmlzdGF0ZSAnXFxcIk5GTE9HXFxcIiB0YXJnZXQgc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMDAxLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMDAyOmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX05GUVVFVUVcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTAwMy1cXHR0cmlzdGF0ZSAnXFxcIk5GUVVFVUVcXFwiIHRhcmdldCBTdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEwMTMtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjEwMTQ6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfTk9UUkFDS1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMDE1LVxcdHRyaXN0YXRlICAnXFxcIk5PVFJBQ0tcXFwiIHRhcmdldCBzdXBwb3J0IChERVBSRUNBVEVEKSdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMDIwLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMDIxOmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX1JBVEVFU1RcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTAyMi1cXHR0cmlzdGF0ZSAnXFxcIlJBVEVFU1RcXFwiIHRhcmdldCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEwMzAtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjEwMzE6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfUkVESVJFQ1RcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTAzMi1cXHR0cmlzdGF0ZSBcXFwiUkVESVJFQ1QgdGFyZ2V0IHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTA0Mi1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTA0Mzpjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9NQVNRVUVSQURFXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEwNDQtXFx0dHJpc3RhdGUgXFxcIk1BU1FVRVJBREUgdGFyZ2V0IHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTA1Ni1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTA1Nzpjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9URUVcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTA1OC1cXHR0cmlzdGF0ZSAnXFxcIlRFRVxcXCIgLSBwYWNrZXQgY2xvbmluZyB0byBhbHRlcm5hdGUgZGVzdGluYXRpb24nXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTA2Ny1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTA2ODpjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9UUFJPWFlcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTA2OS1cXHR0cmlzdGF0ZSAnXFxcIlRQUk9YWVxcXCIgdGFyZ2V0IHRyYW5zcGFyZW50IHByb3h5aW5nIHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTA4OC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTA4OTpjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9UUkFDRVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMDkwLVxcdHRyaXN0YXRlICAnXFxcIlRSQUNFXFxcIiB0YXJnZXQgc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTAwLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMTAxOmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX1NFQ01BUktcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTEwMi1cXHR0cmlzdGF0ZSAnXFxcIlNFQ01BUktcXFwiIHRhcmdldCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTExMTAtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjExMTE6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfVENQTVNTXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTExMTItXFx0dHJpc3RhdGUgJ1xcXCJUQ1BNU1NcXFwiIHRhcmdldCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTExMzYtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjExMzc6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfVENQT1BUU1RSSVBcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTEzOC1cXHR0cmlzdGF0ZSAnXFxcIlRDUE9QVFNUUklQXFxcIiB0YXJnZXQgc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz0xMTQ3PWNvbW1lbnQgXFxcIlh0YWJsZXMgbWF0Y2hlc1xcXCJcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTE0OC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTE0OTpjb25maWcgTkVURklMVEVSX1hUX01BVENIX0FERFJUWVBFXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTExNTAtXFx0dHJpc3RhdGUgJ1xcXCJhZGRydHlwZVxcXCIgYWRkcmVzcyB0eXBlIG1hdGNoIHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTE1OC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTE1OTpjb25maWcgTkVURklMVEVSX1hUX01BVENIX0JQRlxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTYwLVxcdHRyaXN0YXRlICdcXFwiYnBmXFxcIiBtYXRjaCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTExNjctXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjExNjg6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9DR1JPVVBcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTE2OS1cXHR0cmlzdGF0ZSAnXFxcImNvbnRyb2wgZ3JvdXBcXFwiIG1hdGNoIHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTE3Ny1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTE3ODpjb25maWcgTkVURklMVEVSX1hUX01BVENIX0NMVVNURVJcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTE3OS1cXHR0cmlzdGF0ZSAnXFxcImNsdXN0ZXJcXFwiIG1hdGNoIHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTE5My1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTE5NDpjb25maWcgTkVURklMVEVSX1hUX01BVENIX0NPTU1FTlRcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTE5NS1cXHR0cmlzdGF0ZSAgJ1xcXCJjb21tZW50XFxcIiBtYXRjaCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEyMDMtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjEyMDQ6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9DT05OQllURVNcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTIwNS1cXHR0cmlzdGF0ZSAgJ1xcXCJjb25uYnl0ZXNcXFwiIHBlci1jb25uZWN0aW9uIGNvdW50ZXIgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjE0LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMjE1OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfQ09OTkxBQkVMXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEyMTYtXFx0dHJpc3RhdGUgJ1xcXCJjb25ubGFiZWxcXFwiIG1hdGNoIHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTIyNy1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTIyODpjb25maWcgTkVURklMVEVSX1hUX01BVENIX0NPTk5MSU1JVFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjI5LVxcdHRyaXN0YXRlICdcXFwiY29ubmxpbWl0XFxcIiBtYXRjaCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEyMzYtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjEyMzc6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9DT05OTUFSS1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjM4LVxcdHRyaXN0YXRlICAnXFxcImNvbm5tYXJrXFxcIiBjb25uZWN0aW9uIG1hcmsgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjQ2LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMjQ3OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfQ09OTlRSQUNLXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEyNDgtXFx0dHJpc3RhdGUgJ1xcXCJjb25udHJhY2tcXFwiIGNvbm5lY3Rpb24gdHJhY2tpbmcgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjU5LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMjYwOmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfQ1BVXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEyNjEtXFx0dHJpc3RhdGUgJ1xcXCJjcHVcXFwiIG1hdGNoIHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTI2OC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTI2OTpjb25maWcgTkVURklMVEVSX1hUX01BVENIX0RDQ1BcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTI3MC1cXHR0cmlzdGF0ZSAnXFxcImRjY3BcXFwiIHByb3RvY29sIG1hdGNoIHN1cHBvcnQgKERFUFJFQ0FURUQpJ1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEyODAtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjEyODE6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9ERVZHUk9VUFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjgyLVxcdHRyaXN0YXRlICdcXFwiZGV2Z3JvdXBcXFwiIG1hdGNoIHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTI4OS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTI5MDpjb25maWcgTkVURklMVEVSX1hUX01BVENIX0RTQ1BcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTI5MS1cXHR0cmlzdGF0ZSAnXFxcImRzY3BcXFwiIGFuZCBcXFwidG9zXFxcIiBtYXRjaCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzMDQtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjEzMDU6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9FQ05cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTMwNi1cXHR0cmlzdGF0ZSAnXFxcImVjblxcXCIgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzEzLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMzE0OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfRVNQXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzMTUtXFx0dHJpc3RhdGUgJ1xcXCJlc3BcXFwiIG1hdGNoIHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTMyMi1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTMyMzpjb25maWcgTkVURklMVEVSX1hUX01BVENIX0hBU0hMSU1JVFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzI0LVxcdHRyaXN0YXRlICdcXFwiaGFzaGxpbWl0XFxcIiBtYXRjaCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzMzctXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjEzMzg6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9IRUxQRVJcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTMzOS1cXHR0cmlzdGF0ZSAnXFxcImhlbHBlclxcXCIgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzQ3LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMzQ4OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfSExcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTM0OS1cXHR0cmlzdGF0ZSAnXFxcImhsXFxcIiBob3BsaW1pdC9UVEwgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzU1LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMzU2OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfSVBDT01QXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzNTctXFx0dHJpc3RhdGUgJ1xcXCJpcGNvbXBcXFwiIG1hdGNoIHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTM2NC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTM2NTpjb25maWcgTkVURklMVEVSX1hUX01BVENIX0lQUkFOR0VcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTM2Ni1cXHR0cmlzdGF0ZSAnXFxcImlwcmFuZ2VcXFwiIGFkZHJlc3MgcmFuZ2UgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzc0LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMzc1OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfSVBWU1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzc2LVxcdHRyaXN0YXRlICdcXFwiaXB2c1xcXCIgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzg0LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMzg1OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfTDJUUFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzg2LVxcdHRyaXN0YXRlICdcXFwibDJ0cFxcXCIgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzk0LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMzk1OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfTEVOR1RIXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzOTYtXFx0dHJpc3RhdGUgJ1xcXCJsZW5ndGhcXFwiIG1hdGNoIHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTQwMy1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTQwNDpjb25maWcgTkVURklMVEVSX1hUX01BVENIX0xJTUlUXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0MDUtXFx0dHJpc3RhdGUgJ1xcXCJsaW1pdFxcXCIgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDEzLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNDE0OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfTUFDXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0MTUtXFx0dHJpc3RhdGUgJ1xcXCJtYWNcXFwiIGFkZHJlc3MgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDIyLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNDIzOmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfTUFSS1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDI0LVxcdHRyaXN0YXRlICdcXFwibWFya1xcXCIgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDMxLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNDMyOmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfTVVMVElQT1JUXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0MzMtXFx0dHJpc3RhdGUgJ1xcXCJtdWx0aXBvcnRcXFwiIE11bHRpcGxlIHBvcnQgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDQxLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNDQyOmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfTkZBQ0NUXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0NDMtXFx0dHJpc3RhdGUgJ1xcXCJuZmFjY3RcXFwiIG1hdGNoIHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTQ1MS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTQ1Mjpjb25maWcgTkVURklMVEVSX1hUX01BVENIX09TRlxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDUzLVxcdHRyaXN0YXRlICdcXFwib3NmXFxcIiBQYXNzaXZlIE9TIGZpbmdlcnByaW50IG1hdGNoJ1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0NjUtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjE0NjY6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9PV05FUlxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDY3LVxcdHRyaXN0YXRlICdcXFwib3duZXJcXFwiIG1hdGNoIHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTQ3My1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTQ3NDpjb25maWcgTkVURklMVEVSX1hUX01BVENIX1BPTElDWVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDc1LVxcdHRyaXN0YXRlICdJUHNlYyBcXFwicG9saWN5XFxcIiBtYXRjaCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0ODQtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjE0ODU6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9QSFlTREVWXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0ODYtXFx0dHJpc3RhdGUgJ1xcXCJwaHlzZGV2XFxcIiBtYXRjaCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0OTQtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjE0OTU6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9QS1RUWVBFXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0OTYtXFx0dHJpc3RhdGUgJ1xcXCJwa3R0eXBlXFxcIiBwYWNrZXQgdHlwZSBtYXRjaCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE1MDYtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjE1MDc6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9RVU9UQVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTA4LVxcdHRyaXN0YXRlICdcXFwicXVvdGFcXFwiIG1hdGNoIHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTUxNi1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTUxNzpjb25maWcgTkVURklMVEVSX1hUX01BVENIX1JBVEVFU1RcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTUxOC1cXHR0cmlzdGF0ZSAnXFxcInJhdGVlc3RcXFwiIG1hdGNoIHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTUyNi1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTUyNzpjb25maWcgTkVURklMVEVSX1hUX01BVENIX1JFQUxNXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE1MjgtXFx0dHJpc3RhdGUgICdcXFwicmVhbG1cXFwiIG1hdGNoIHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTU0MC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTU0MTpjb25maWcgTkVURklMVEVSX1hUX01BVENIX1JFQ0VOVFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTQyLVxcdHRyaXN0YXRlICdcXFwicmVjZW50XFxcIiBtYXRjaCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE1NTAtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjE1NTE6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9TQ1RQXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE1NTItXFx0dHJpc3RhdGUgICdcXFwic2N0cFxcXCIgcHJvdG9jb2wgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTYyLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNTYzOmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfU09DS0VUXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE1NjQtXFx0dHJpc3RhdGUgJ1xcXCJzb2NrZXRcXFwiIG1hdGNoIHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTU3OS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTU4MDpjb25maWcgTkVURklMVEVSX1hUX01BVENIX1NUQVRFXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE1ODEtXFx0dHJpc3RhdGUgJ1xcXCJzdGF0ZVxcXCIgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTkwLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNTkxOmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfU1RBVElTVElDXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE1OTItXFx0dHJpc3RhdGUgJ1xcXCJzdGF0aXN0aWNcXFwiIG1hdGNoIHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTU5OS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTYwMDpjb25maWcgTkVURklMVEVSX1hUX01BVENIX1NUUklOR1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNjAxLVxcdHRyaXN0YXRlICAnXFxcInN0cmluZ1xcXCIgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNjEyLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNjEzOmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfVENQTVNTXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE2MTQtXFx0dHJpc3RhdGUgJ1xcXCJ0Y3Btc3NcXFwiIG1hdGNoIHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTYyMi1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTYyMzpjb25maWcgTkVURklMVEVSX1hUX01BVENIX1RJTUVcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTYyNC1cXHR0cmlzdGF0ZSAnXFxcInRpbWVcXFwiIG1hdGNoIHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTYzNi1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTYzNzpjb25maWcgTkVURklMVEVSX1hUX01BVENIX1UzMlxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNjM4LVxcdHRyaXN0YXRlICdcXFwidTMyXFxcIiBtYXRjaCBzdXBwb3J0J1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQyMzoyNjoxMC4yMjgxMzE2MTRaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODQ0NzkxMTc0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIERlcGVuZGVuY2llcyBhbmQgU3ltYm9sIFNjb3BlIGZvciBuZl90YWJsZXMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24gZm9yIHRoaXMgYG5mX3RhYmxlc2AgcGF0Y2guIEZpcnN0LCB0aGUgY29yZSBkZXBlbmRlbmN5IGlzIGBORVRGSUxURVJgLCBhbmQgd2hpbGUgYE5GX1RBQkxFU2AgaXRzZWxmIGRlcGVuZHMgb24gYE5FVEZJTFRFUmAsIGl0IHNlZW1zIGxpa2UgZW5hYmxpbmcgYE5GX1RBQkxFU2AgYWxvbmUgaXMgc3VmZmljaWVudCBmb3IgdGhlIGNoYW5nZXMgaW4gdGhpcyBwYXRjaCwgdGhvdWdoIGluY2x1ZGluZyBgTkVURklMVEVSYCBmb3IgZ2VuZXJhbCBjb25maWd1cmF0aW9uIGlzIGFsd2F5cyBhIGdvb2QgcHJhY3RpY2UuXG5cblNpbmNlIHRoZSBwYXRjaCBtb2RpZmllcyBgbmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmNgLCBhbmQgdGhhdCBmaWxlIGNvbXBpbGVzIG9ubHkgd2hlbiBgQ09ORklHX05GX1RBQkxFU2AgaXMgZW5hYmxlZCwgdGhlbiBlbmFibGluZyBgTkZfVEFCTEVTYCBpcyB0aGUgb25seSBhYnNvbHV0ZWx5IGVzc2VudGlhbCBjb25maWd1cmF0aW9uIG9wdGlvbiBoZXJlLlxuXG5Ob3csIG9uIHRvIHRoZSBmb2N1cyBzeW1ib2xzLiBXZSBoYXZlIGBuZl90YWJsZXNfY29tbWl0YCwgYG5mX3RhYmxlc19hYm9ydGAsIGBuZl90YWJsZXNfbmV3c2V0ZWxlbWAsIGFuZCBgbmZfdGFibGVzX2RlbHNldGVsZW1gLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGNoZWNrIGlmIHRoZXkgd2VyZSBzdGF0aWMsIGJlY2F1c2Ugc3RhdGljIGlubGluZSBmdW5jdGlvbnMgYXJlIHRvIGJlIGF2b2lkZWQgcGVyIHRoZSBndWlkZWxpbmVzLiBBbmQsIHllcywgdGhleSBhcmUgYWxsICpzdGF0aWMqLiBXYWl0IGEgc2Vjb25kLi4uIHRoZXkgYXJlIGFsbCBzdGF0aWMgYnV0IHRoZXkgYXJlIGFzc2lnbmVkIHRvIHRoZSBgbmZfdGFibGVzX2NiYCBhcnJheSBhbmQgYG5mX3RhYmxlc19zdWJzeXNgIHN0cnVjdC4gVGhleSBhcmUgbm90IGlubGluZWQgYmVjYXVzZSB0aGV5IGFyZSB1c2VkIGFzIGZ1bmN0aW9uIHBvaW50ZXJzISBUaGlzIG1lYW5zIHRoZXkgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzLCBhbmQgdGhleSBhcmUgbm90IG9wdGltaXplZCBhd2F5LiBUaGVyZWZvcmUsIHRoZXkgYXJlIG5vdCBhIHByb2JsZW0uXG5cblRoZSBrZXkgaXMgdGhhdCwgZXZlbiB0aG91Z2ggdGhleSdyZSBzdGF0aWMsIHRoZXkgc2VydmUgYXMgdGhlICplbnRyeSBwb2ludHMqIHRvIHRoZSBgbmZfdGFibGVzYCBuZXRsaW5rIEFQSS4gVGhlc2UgZnVuY3Rpb25zIGFyZSwgZWZmZWN0aXZlbHksIHRoZSBtZWFucyBieSB3aGljaCBleHRlcm5hbCBjb21wb25lbnRzIGludGVyYWN0IHdpdGggdGhlIG1vZGlmaWVkIGNvZGUuIFRoaXMgaXMgdmVyeSBpbXBvcnRhbnQuXG5cbkkgc2hvdWxkIGRvdWJsZSBjaGVjayB0byBzZWUgaWYgdGhlcmUgYXJlIG90aGVyLCBub24tc3RhdGljIGZ1bmN0aW9ucyBpbiBgbmZfdGFibGVzX2FwaS5jYCB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50IHRvIHRoZSBwYXRjaC4gQWx0aG91Z2ggaXQncyB1bmxpa2VseSwgaXQncyB3b3J0aCBhIHF1aWNrIGxvb2suIFdlIGhhdmUgdG8gY29uc2lkZXIgdGhhdCBgbmZuZXRsaW5rX3Jjdl9iYXRjaGAgY2FsbHMgYG5mX3RhYmxlc19jb21taXRgIGFuZCBgbmZfdGFibGVzX2Fib3J0YC4gSG93ZXZlciwgYG5mbmV0bGlua19yY3ZfYmF0Y2hgIGlzIGluIGBuZm5ldGxpbmsuY2AsIHdoaWNoIHRlbGxzIG1lIHRoZSBuZXRsaW5rIHN1YnN5c3RlbSBoYW5kbGVzIHRoZSBkaXNwYXRjaC4gU28gdGhlIHN0YXRpYyBmdW5jdGlvbnMgaW4gYG5mX3RhYmxlc19hcGkuY2AgYXJlIGZpbmUgdG8gaW5jbHVkZSBhcyBGb2N1c1N5bWJvbHMgc2luY2UgdGhleSBhY3QgYXMgZW50cnlwb2ludHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4MjAzLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTAxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDIzOjI2OjE4LjY3NjA0NjUyM1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTkyMDU0NDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhQT1JUX1NZTUJPTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz0xMDc0PV9fcHJpbnRmKDIsIDMpIGludCBuZnRfcmVxdWVzdF9tb2R1bGUoc3RydWN0IG5ldCAqbmV0LCBjb25zdCBjaGFyICpmbXQsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTA5LX1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTEwOkVYUE9SVF9TWU1CT0xfR1BMKG5mdF9yZXF1ZXN0X21vZHVsZSk7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTExMS0jZW5kaWZcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTE4Mzc9dm9pZCBuZnRfcmVnaXN0ZXJfY2hhaW5fdHlwZShjb25zdCBzdHJ1Y3QgbmZ0X2NoYWluX3R5cGUgKmN0eXBlKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTg0Ni19XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTg0NzpFWFBPUlRfU1lNQk9MX0dQTChuZnRfcmVnaXN0ZXJfY2hhaW5fdHlwZSk7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTg0OC1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz0xODQ5PXZvaWQgbmZ0X3VucmVnaXN0ZXJfY2hhaW5fdHlwZShjb25zdCBzdHJ1Y3QgbmZ0X2NoYWluX3R5cGUgKmN0eXBlKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTg1NC19XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTg1NTpFWFBPUlRfU1lNQk9MX0dQTChuZnRfdW5yZWdpc3Rlcl9jaGFpbl90eXBlKTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xODU2LVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9MzM4OT1pbnQgbmZ0X3JlZ2lzdGVyX2V4cHIoc3RydWN0IG5mdF9leHByX3R5cGUgKnR5cGUpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0zNDAzLX1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzozNDA0OkVYUE9SVF9TWU1CT0xfR1BMKG5mdF9yZWdpc3Rlcl9leHByKTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0zNDA1LVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9MzQxMj12b2lkIG5mdF91bnJlZ2lzdGVyX2V4cHIoc3RydWN0IG5mdF9leHByX3R5cGUgKnR5cGUpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0zNDE3LX1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzozNDE4OkVYUE9SVF9TWU1CT0xfR1BMKG5mdF91bnJlZ2lzdGVyX2V4cHIpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTM0MTktXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz04MDg2PWludCBuZnRfcmVnaXN0ZXJfb2JqKHN0cnVjdCBuZnRfb2JqZWN0X3R5cGUgKm9ial90eXBlKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtODA5NS19XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6ODA5NjpFWFBPUlRfU1lNQk9MX0dQTChuZnRfcmVnaXN0ZXJfb2JqKTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy04MDk3LVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9ODEwND12b2lkIG5mdF91bnJlZ2lzdGVyX29iaihzdHJ1Y3QgbmZ0X29iamVjdF90eXBlICpvYmpfdHlwZSlcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTgxMDktfVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjgxMTA6RVhQT1JUX1NZTUJPTF9HUEwobmZ0X3VucmVnaXN0ZXJfb2JqKTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy04MTExLVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9ODc2OD12b2lkIG5mdF9vYmpfbm90aWZ5KHN0cnVjdCBuZXQgKm5ldCwgY29uc3Qgc3RydWN0IG5mdF90YWJsZSAqdGFibGUsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy04Nzg2LX1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzo4Nzg3OkVYUE9SVF9TWU1CT0xfR1BMKG5mdF9vYmpfbm90aWZ5KTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy04Nzg4LVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9ODgwMD12b2lkIG5mdF9yZWdpc3Rlcl9mbG93dGFibGVfdHlwZShzdHJ1Y3QgbmZfZmxvd3RhYmxlX3R5cGUgKnR5cGUpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy04ODA1LX1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzo4ODA2OkVYUE9SVF9TWU1CT0xfR1BMKG5mdF9yZWdpc3Rlcl9mbG93dGFibGVfdHlwZSk7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtODgwNy1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz04ODA4PXZvaWQgbmZ0X3VucmVnaXN0ZXJfZmxvd3RhYmxlX3R5cGUoc3RydWN0IG5mX2Zsb3d0YWJsZV90eXBlICp0eXBlKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtODgxMy19XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6ODgxNDpFWFBPUlRfU1lNQk9MX0dQTChuZnRfdW5yZWdpc3Rlcl9mbG93dGFibGVfdHlwZSk7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtODgxNS1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTg4MjY9c3RydWN0IG5mdF9mbG93dGFibGUgKm5mdF9mbG93dGFibGVfbG9va3VwKGNvbnN0IHN0cnVjdCBuZXQgKm5ldCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTg4MzktfVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjg4NDA6RVhQT1JUX1NZTUJPTF9HUEwobmZ0X2Zsb3d0YWJsZV9sb29rdXApO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTg4NDEtXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9ODg0Mj12b2lkIG5mX3RhYmxlc19kZWFjdGl2YXRlX2Zsb3d0YWJsZShjb25zdCBzdHJ1Y3QgbmZ0X2N0eCAqY3R4LFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtODg1Ni19XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6ODg1NzpFWFBPUlRfU1lNQk9MX0dQTChuZl90YWJsZXNfZGVhY3RpdmF0ZV9mbG93dGFibGUpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTg4NTgtXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz05NzU4PXN0cnVjdCBuZl9ob29rX29wcyAqbmZ0X2hvb2tfZmluZF9vcHMoY29uc3Qgc3RydWN0IG5mdF9ob29rICpob29rLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtOTc2OC19XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6OTc2OTpFWFBPUlRfU1lNQk9MX0dQTChuZnRfaG9va19maW5kX29wcyk7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtOTc3MC1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz05NzcxPXN0cnVjdCBuZl9ob29rX29wcyAqbmZ0X2hvb2tfZmluZF9vcHNfcmN1KGNvbnN0IHN0cnVjdCBuZnRfaG9vayAqaG9vayxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTk3ODEtfVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjk3ODI6RVhQT1JUX1NZTUJPTF9HUEwobmZ0X2hvb2tfZmluZF9vcHNfcmN1KTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy05NzgzLVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9MTAyOTk9dm9pZCBuZl90YWJsZXNfdHJhbnNfZGVzdHJveV9mbHVzaF93b3JrKHN0cnVjdCBuZXQgKm5ldClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwMzA0LX1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDMwNTpFWFBPUlRfU1lNQk9MX0dQTChuZl90YWJsZXNfdHJhbnNfZGVzdHJveV9mbHVzaF93b3JrKTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDMwNi1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTExNTUwPWludCBuZnRfY2hhaW5fdmFsaWRhdGVfZGVwZW5kZW5jeShjb25zdCBzdHJ1Y3QgbmZ0X2NoYWluICpjaGFpbixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExNTYxLX1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTU2MjpFWFBPUlRfU1lNQk9MX0dQTChuZnRfY2hhaW5fdmFsaWRhdGVfZGVwZW5kZW5jeSk7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE1NjMtXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9MTE1NjQ9aW50IG5mdF9jaGFpbl92YWxpZGF0ZV9ob29rcyhjb25zdCBzdHJ1Y3QgbmZ0X2NoYWluICpjaGFpbixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExNTc5LX1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTU4MDpFWFBPUlRfU1lNQk9MX0dQTChuZnRfY2hhaW5fdmFsaWRhdGVfaG9va3MpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExNTgxLVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9MTE1OTQ9aW50IG5mdF9wYXJzZV91MzJfY2hlY2soY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0ciwgaW50IG1heCwgdTMyICpkZXN0KVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE2MDQtfVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjExNjA1OkVYUE9SVF9TWU1CT0xfR1BMKG5mdF9wYXJzZV91MzJfY2hlY2spO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExNjA2LVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9MTE2Mzc9aW50IG5mdF9kdW1wX3JlZ2lzdGVyKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBhdHRyLCB1bnNpZ25lZCBpbnQgcmVnKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE2NDUtfVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjExNjQ2OkVYUE9SVF9TWU1CT0xfR1BMKG5mdF9kdW1wX3JlZ2lzdGVyKTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTY0Ny1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTExNjYwPWludCBuZnRfcGFyc2VfcmVnaXN0ZXJfbG9hZChjb25zdCBzdHJ1Y3QgbmZ0X2N0eCAqY3R4LFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE2OTEtfVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjExNjkyOkVYUE9SVF9TWU1CT0xfR1BMKG5mdF9wYXJzZV9yZWdpc3Rlcl9sb2FkKTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTY5My1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTExNzM2PWludCBuZnRfcGFyc2VfcmVnaXN0ZXJfc3RvcmUoY29uc3Qgc3RydWN0IG5mdF9jdHggKmN0eCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExNzU0LX1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTc1NTpFWFBPUlRfU1lNQk9MX0dQTChuZnRfcGFyc2VfcmVnaXN0ZXJfc3RvcmUpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExNzU2LVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9MTE5MjE9aW50IG5mdF9kYXRhX2luaXQoY29uc3Qgc3RydWN0IG5mdF9jdHggKmN0eCwgc3RydWN0IG5mdF9kYXRhICpkYXRhLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE5NTItfVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjExOTUzOkVYUE9SVF9TWU1CT0xfR1BMKG5mdF9kYXRhX2luaXQpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExOTU0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQyMzoyNjoxOC43MzUyNTc0NDFaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTU4ODI3MDA4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIG5mX3RhYmxlcyBOZXRsaW5rIEFQSSBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBkaWdnaW5nIGludG8gdGhpcyBwYXRjaC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhlIGV4cG9ydGVkIGZ1bmN0aW9ucyBoZXJlIGFyZSBsYXJnZWx5IHJlZ2lzdHJhdGlvbiB1dGlsaXRpZXMgb3IgaGVscGVycywgbm90IHRoZSBjb3JlIGxvZ2ljLiBUaGUgbWVhdCBvZiB0aGUgbmV0bGluayBoYW5kbGluZyBpcyB0dWNrZWQgYXdheSBpbiBzdGF0aWMgaGFuZGxlcnMsIGFzc2lnbmVkIHRvIGBuZl90YWJsZXNfY2JgIGFuZCBgbmZfdGFibGVzX3N1YnN5c2AuXG5cbk15IGtleSBmb2N1cyBzeW1ib2xzIGZvciBmdXp6aW5nIHdpbGwgYmUgYG5mX3RhYmxlc19jb21taXRgLCBgbmZfdGFibGVzX2Fib3J0YCwgYG5mX3RhYmxlc19uZXdzZXRlbGVtYCwgYW5kIGBuZl90YWJsZXNfZGVsc2V0ZWxlbWAuICpXYWl0KiwgcmlnaHQsIHRob3NlIGFyZSBzdGF0aWMsIGJ1dCB0aGV5IGFyZSBhc3NpZ25lZCB0byB0aGUgYGNvbW1pdGAsIGBhYm9ydGAsIGFuZCBgY2FsbGAgbWVtYmVycyBvZiBgbmZuZXRsaW5rX3N1YnN5c3RlbWAgYW5kIGBuZl90YWJsZXNfY2JgIHJlc3BlY3RpdmVseSwgc28gdGhhdCdzIHBlcmZlY3RseSBmaW5lLiBObyBpc3N1ZSB0aGVyZS5cblxuTGV0J3MgZG8gYSBxdWljayBzYW5pdHkgY2hlY2sgZm9yIGFueSBtaXNzaW5nIGNvbmZpZ3MsIGJ1dCBgTkZfVEFCTEVTYCBsb29rcyBzdWZmaWNpZW50IGZvciBjb3ZlcmFnZS5cblxuTm93LCB0byBhcnRpY3VsYXRlIHRoZSByZWFzb25pbmcgYmVoaW5kIHRhcmdldGluZyB0aGVzZSBzeW1ib2xzIGZvciBmdXp6aW5nLiBUaGlzIHBhdGNoIGlzIGZ1bmRhbWVudGFsbHkgYWx0ZXJpbmcgdGhlIG5ldGZpbHRlciBuZl90YWJsZXMgQVBJLCBpbnRyb2R1Y2luZyBhIGBzZXRfdXBkYXRlX2xpc3RgIHdpdGhpbiBgc3RydWN0IG5mdGFibGVzX3Blcm5ldGAuIFRoZSBjaGFuZ2UgaW1wYWN0cyBob3cgc2V0IGVsZW1lbnRzIGFyZSBhZGRlZCwgcmVtb3ZlZCwgYW5kIGFib3J0ZWQgZHVyaW5nIG5ldGxpbmsgdHJhbnNhY3Rpb25zLiBNb3JlIHNwZWNpZmljYWxseSwgaXQncyBtb2RpZnlpbmcgZnVuY3Rpb25zIGxpa2UgYG5mdF90cmFuc19jb21taXRfbGlzdF9hZGRfZWxlbWAsIGBuZnRfc2V0X2NvbW1pdF91cGRhdGVgLCBgbmZfdGFibGVzX2NvbW1pdGAsIGFuZCBgX19uZl90YWJsZXNfYWJvcnRgIHRvIGNvcnJlY3RseSBtYW5hZ2UgdGhpcyBuZXcgbGlzdCBhbmQgdGhlIGFzc29jaWF0ZWQgdXBkYXRlIG9yZGVyaW5nLiBHaXZlbiB0aGF0IHRoaXMgaXMgYSBmdW5jdGlvbmFsIHNoaWZ0IGluIGNvcmUgbmV0ZmlsdGVyIGxvZ2ljLCBleHBvc2VkIHZpYSBuZXRsaW5rIHNvY2tldHMsIHdlICphYnNvbHV0ZWx5KiBuZWVkIHRvIGZ1enogaXQuIEl0J3MgYSBjcml0aWNhbCBhcmVhIGZvciBwcmV2ZW50aW5nIHJlZ3Jlc3Npb25zIGFuZCBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24gdnVsbmVyYWJpbGl0aWVzLlxuXG5UaW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE3NzgsIk91dHB1dFRva2VucyI6MjA1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDIzOjI2OjI4LjMyMzUyOTgxNloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNDIwNTMzNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZfVEFCTEVTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmZfdGFibGVzX2NvbW1pdFwiLFxuICAgIFwibmZfdGFibGVzX2Fib3J0XCIsXG4gICAgXCJuZl90YWJsZXNfbmV3c2V0ZWxlbVwiLFxuICAgIFwibmZfdGFibGVzX2RlbHNldGVsZW1cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbmV0ZmlsdGVyIG5mX3RhYmxlcyBBUEkgdG8gaW50cm9kdWNlIGEgYHNldF91cGRhdGVfbGlzdGAgaW4gYHN0cnVjdCBuZnRhYmxlc19wZXJuZXRgLiBJdCBjaGFuZ2VzIGhvdyBzZXQgZWxlbWVudHMgYXJlIGFkZGVkLCByZW1vdmVkLCBhbmQgYWJvcnRlZCBkdXJpbmcgbmV0bGluayB0cmFuc2FjdGlvbnMuIFNwZWNpZmljYWxseSwgaXQgbW9kaWZpZXMgYG5mdF90cmFuc19jb21taXRfbGlzdF9hZGRfZWxlbWAsIGBuZnRfc2V0X2NvbW1pdF91cGRhdGVgLCBgbmZfdGFibGVzX2NvbW1pdGAsIGFuZCBgX19uZl90YWJsZXNfYWJvcnRgIHRvIGhhbmRsZSB0aGUgbmV3IGxpc3QgYW5kIGVuc3VyZSBwcm9wZXIgb3JkZXJpbmcgb2Ygc2V0IHVwZGF0ZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXRmaWx0ZXIgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgdmlhIG5ldGxpbmsgc29ja2V0cyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBwcmV2ZW50IHJlZ3Jlc3Npb25zIG9yIG1lbW9yeSBjb3JydXB0aW9uIGlzc3Vlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORl9UQUJMRVNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZl90YWJsZXNfY29tbWl0XCIsXG4gICAgXCJuZl90YWJsZXNfYWJvcnRcIixcbiAgICBcIm5mX3RhYmxlc19uZXdzZXRlbGVtXCIsXG4gICAgXCJuZl90YWJsZXNfZGVsc2V0ZWxlbVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRmaWx0ZXIgbmZfdGFibGVzIEFQSSB0byBpbnRyb2R1Y2UgYSBgc2V0X3VwZGF0ZV9saXN0YCBpbiBgc3RydWN0IG5mdGFibGVzX3Blcm5ldGAuIEl0IGNoYW5nZXMgaG93IHNldCBlbGVtZW50cyBhcmUgYWRkZWQsIHJlbW92ZWQsIGFuZCBhYm9ydGVkIGR1cmluZyBuZXRsaW5rIHRyYW5zYWN0aW9ucy4gU3BlY2lmaWNhbGx5LCBpdCBtb2RpZmllcyBgbmZ0X3RyYW5zX2NvbW1pdF9saXN0X2FkZF9lbGVtYCwgYG5mdF9zZXRfY29tbWl0X3VwZGF0ZWAsIGBuZl90YWJsZXNfY29tbWl0YCwgYW5kIGBfX25mX3RhYmxlc19hYm9ydGAgdG8gaGFuZGxlIHRoZSBuZXcgbGlzdCBhbmQgZW5zdXJlIHByb3BlciBvcmRlcmluZyBvZiBzZXQgdXBkYXRlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldGZpbHRlciBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluayBzb2NrZXRzIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIHByZXZlbnQgcmVncmVzc2lvbnMgb3IgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQyMzoyNjoyOC40NDc3NDU5MjJaIiwiU2VxIjoyMSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNDY0MDQwNTYxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMjM6MjY6MjguNDQ4NTU1MzgyWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjIzNDYzMjI3MzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZWZhY3RvcnMgdGhlIHRyYW5zYWN0aW9uIGNvbW1pdCBhbmQgYWJvcnQgbG9naWMgaW4gbmV0ZmlsdGVyIHRhYmxlcyAobmZfdGFibGVzKS4gSXQgbW92ZXMgdGhlIGBzZXRfdXBkYXRlX2xpc3RgIGZyb20gYmVpbmcgYSBsb2NhbCB2YXJpYWJsZSBpbiBgbmZfdGFibGVzX2NvbW1pdGAgYW5kIGBfX25mX3RhYmxlc19hYm9ydGAgdG8gYSBwZXItbmV0IG5hbWVzcGFjZSBzdHJ1Y3R1cmUgKGBzdHJ1Y3QgbmZ0YWJsZXNfcGVybmV0YCkuIEl0IGFsc28gYWRqdXN0cyB0aGUgb3JkZXIgb2Ygb3BlcmF0aW9ucyBkdXJpbmcgdGhlIGNvbW1pdCBwaGFzZSwgc3BlY2lmaWNhbGx5IGNhbGxpbmcgYG5mdF9zZXRfY29tbWl0X3VwZGF0ZWAgZWFybGllciBhbmQgbW9kaWZ5aW5nIGhvdyBgTkZUX01TR19ERUxTRVRFTEVNYCBtZXNzYWdlcyBhcmUgcHJvY2Vzc2VkIGFuZCBub3RpZmllZC5cXG5cXG5UaGVzZSBjaGFuZ2VzIGFyZSBwdXJlbHkgcmVsYXRlZCB0byBjb250cm9sIGZsb3csIGxpc3QgbWFuYWdlbWVudCwgYW5kIHRoZSBuZXRmaWx0ZXIgdHJhbnNhY3Rpb24gc3RhdGUgbWFjaGluZSAobGlrZWx5IHRvIGZpeCBhIHJhY2UgY29uZGl0aW9uLCB1c2UtYWZ0ZXItZnJlZSwgb3Igb3JkZXJpbmcgaXNzdWUpLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgYXJlIGNvcGllZCB0byB1c2VyIHNwYWNlLCBub3IgZG9lcyBpdCBtb2RpZnkgYnVmZmVyIGFsbG9jYXRpb25zLCBib3VuZHMgY2hlY2tpbmcsIG9yIGluaXRpYWxpemF0aW9uIGxvZ2ljIGluIGEgd2F5IHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQga2VybmVsIG1lbW9yeSAoaW5mby1sZWFrcykgb3IgY2F1c2UgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gYmUgdXNlZCBpbiBjb250cm9sIGZsb3cuXFxuXFxuQW55IGJ1Z3MgaW50cm9kdWNlZCBvciBmaXhlZCBieSB0aGlzIHBhdGNoIChzdWNoIGFzIHVzZS1hZnRlci1mcmVlLCBkb3VibGUtZnJlZSwgb3IgbGlzdCBjb3JydXB0aW9uKSB3b3VsZCBiZSByZWxpYWJseSBkZXRlY3RlZCBieSBzdGFuZGFyZCBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIGRlYnVnIG9wdGlvbnMgKGxpa2UgYENPTkZJR19ERUJVR19MSVNUYCkuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBqdXN0aWZpZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMGQ5MzEyYTBkOGRhNmNlODJlMDUzNjg0MzlhOTlmN2E2MGQyZjkxY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDEyIDIzOjI1OjMyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlcy5oIGIvaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlcy5oXG5pbmRleCAzYmU2MTIxNDVjMTMwLi4yMzhmNmVjYjkwZTk5IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlcy5oXG4rKysgYi9pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzLmhcbkBAIC0xOTQ5LDYgKzE5NDksNyBAQCBzdHJ1Y3QgbmZ0YWJsZXNfcGVybmV0IHtcbiBcdHN0cnVjdCBsaXN0X2hlYWRcdGJpbmRpbmdfbGlzdDtcbiBcdHN0cnVjdCBsaXN0X2hlYWRcdG1vZHVsZV9saXN0O1xuIFx0c3RydWN0IGxpc3RfaGVhZFx0bm90aWZ5X2xpc3Q7XG4rXHRzdHJ1Y3QgbGlzdF9oZWFkXHRzZXRfdXBkYXRlX2xpc3Q7XG4gXHRzdHJ1Y3QgbXV0ZXhcdFx0Y29tbWl0X211dGV4O1xuIFx0dTY0XHRcdFx0dGFibGVfaGFuZGxlO1xuIFx0dTY0XHRcdFx0dHN0YW1wO1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jIGIvbmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmNcbmluZGV4IGFmMzU3ZjZjNTA3MGIuLjVjNGY2YzM1NDU5NTAgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuY1xuKysrIGIvbmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmNcbkBAIC01OTUsMTAgKzU5NSwxNSBAQCBzdGF0aWMgdm9pZCBuZnRfdHJhbnNfY29tbWl0X2xpc3RfYWRkX3RhaWwoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmZ0X3RyYW5zICp0clxuIHN0YXRpYyB2b2lkIG5mdF90cmFuc19jb21taXRfbGlzdF9hZGRfZWxlbShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBuZnRfdHJhbnMgKnRyYW5zKVxuIHtcbiBcdHN0cnVjdCBuZnRhYmxlc19wZXJuZXQgKm5mdF9uZXQgPSBuZnRfcGVybmV0KG5ldCk7XG4rXHRzdHJ1Y3QgbmZ0X3RyYW5zX2VsZW0gKnRlO1xuIFxuIFx0V0FSTl9PTl9PTkNFKHRyYW5zLVx1MDAzZW1zZ190eXBlICE9IE5GVF9NU0dfTkVXU0VURUxFTSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgICB0cmFucy1cdTAwM2Vtc2dfdHlwZSAhPSBORlRfTVNHX0RFTFNFVEVMRU0pO1xuIFxuK1x0dGUgPSBuZnRfdHJhbnNfY29udGFpbmVyX2VsZW0odHJhbnMpO1xuK1x0aWYgKHRlLVx1MDAzZXNldC1cdTAwM2VvcHMtXHUwMDNlY29tbWl0IFx1MDAyNlx1MDAyNiBsaXN0X2VtcHR5KFx1MDAyNnRlLVx1MDAzZXNldC1cdTAwM2VwZW5kaW5nX3VwZGF0ZSkpXG4rXHRcdGxpc3RfYWRkX3RhaWwoXHUwMDI2dGUtXHUwMDNlc2V0LVx1MDAzZXBlbmRpbmdfdXBkYXRlLCBcdTAwMjZuZnRfbmV0LVx1MDAzZXNldF91cGRhdGVfbGlzdCk7XG4rXG4gXHRpZiAobmZ0X3RyYW5zX3RyeV9jb2xsYXBzZShuZnRfbmV0LCB0cmFucykpIHtcbiBcdFx0a2ZyZWUodHJhbnMpO1xuIFx0XHRyZXR1cm47XG5AQCAtNzIwNSw2ICs3MjEwLDIwIEBAIHN0YXRpYyB2b2lkIG5mdF90cmFuc19lbGVtc19yZW1vdmUoY29uc3Qgc3RydWN0IG5mdF9jdHggKmN0eCxcbiBcdH1cbiB9XG4gXG4rc3RhdGljIHZvaWQgbmZ0X3RyYW5zX2VsZW1zX3JlbW92ZV9ub3RpZnkoY29uc3Qgc3RydWN0IG5mdF9jdHggKmN0eCxcbitcdFx0XHRcdFx0ICBjb25zdCBzdHJ1Y3QgbmZ0X3RyYW5zX2VsZW0gKnRlKVxuK3tcbitcdGludCBpO1xuK1xuK1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgdGUtXHUwMDNlbmVsZW1zOyBpKyspIHtcbitcdFx0V0FSTl9PTl9PTkNFKHRlLVx1MDAzZWVsZW1zW2ldLnVwZGF0ZSk7XG4rXG4rXHRcdG5mX3RhYmxlc19zZXRlbGVtX25vdGlmeShjdHgsIHRlLVx1MDAzZXNldCxcbitcdFx0XHRcdFx0IHRlLVx1MDAzZWVsZW1zW2ldLnByaXYsXG4rXHRcdFx0XHRcdCB0ZS1cdTAwM2VuZnRfdHJhbnMubXNnX3R5cGUpO1xuK1x0fVxuK31cbitcbiBzdGF0aWMgYm9vbCBuZnRfc2V0ZWxlbV92YWxpZF9rZXlfZW5kKGNvbnN0IHN0cnVjdCBuZnRfc2V0ICpzZXQsXG4gXHRcdFx0XHQgICAgICBzdHJ1Y3QgbmxhdHRyICoqbmxhLCB1MzIgZmxhZ3MpXG4ge1xuQEAgLTEwODQ4LDExICsxMDg2NywzMSBAQCBzdGF0aWMgdm9pZCBuZl90YWJsZXNfY29tbWl0X2F1ZGl0X2xvZyhzdHJ1Y3QgbGlzdF9oZWFkICphZGwsIHUzMiBnZW5lcmF0aW9uKVxuIFx0fVxuIH1cbiBcbi1zdGF0aWMgdm9pZCBuZnRfc2V0X2NvbW1pdF91cGRhdGUoc3RydWN0IGxpc3RfaGVhZCAqc2V0X3VwZGF0ZV9saXN0KVxuK3N0YXRpYyB2b2lkIG5mdF9zZXRfY29tbWl0X3VwZGF0ZShzdHJ1Y3QgbmZ0X2N0eCAqY3R4LFxuK1x0XHRcdFx0ICBzdHJ1Y3QgbmZ0YWJsZXNfcGVybmV0ICpuZnRfbmV0KVxuIHtcbiBcdHN0cnVjdCBuZnRfc2V0ICpzZXQsICpuZXh0O1xuK1x0c3RydWN0IG5mdF90cmFuc19lbGVtICp0ZTtcbitcdHN0cnVjdCBuZnRfdHJhbnMgKnRyYW5zO1xuIFxuLVx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHNldCwgbmV4dCwgc2V0X3VwZGF0ZV9saXN0LCBwZW5kaW5nX3VwZGF0ZSkge1xuK1x0aWYgKGxpc3RfZW1wdHkoXHUwMDI2bmZ0X25ldC1cdTAwM2VzZXRfdXBkYXRlX2xpc3QpKVxuK1x0XHRyZXR1cm47XG4rXG4rXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHRyYW5zLCBcdTAwMjZuZnRfbmV0LVx1MDAzZWNvbW1pdF9saXN0LCBsaXN0KSB7XG4rXHRcdG5mdF9jdHhfdXBkYXRlKGN0eCwgdHJhbnMpO1xuK1xuK1x0XHRzd2l0Y2ggKHRyYW5zLVx1MDAzZW1zZ190eXBlKSB7XG4rXHRcdGNhc2UgTkZUX01TR19ERUxTRVRFTEVNOlxuK1x0XHRcdHRlID0gbmZ0X3RyYW5zX2NvbnRhaW5lcl9lbGVtKHRyYW5zKTtcbitcdFx0XHRpZiAoIXRlLVx1MDAzZXNldC1cdTAwM2VvcHMtXHUwMDNlY29tbWl0KVxuK1x0XHRcdFx0YnJlYWs7XG4rXG4rXHRcdFx0bmZ0X3RyYW5zX2VsZW1zX3JlbW92ZShjdHgsIHRlKTtcbitcdFx0XHRicmVhaztcbitcdFx0fVxuK1x0fVxuK1xuK1x0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHNldCwgbmV4dCwgXHUwMDI2bmZ0X25ldC1cdTAwM2VzZXRfdXBkYXRlX2xpc3QsIHBlbmRpbmdfdXBkYXRlKSB7XG4gXHRcdGxpc3RfZGVsX2luaXQoXHUwMDI2c2V0LVx1MDAzZXBlbmRpbmdfdXBkYXRlKTtcbiBcbiBcdFx0aWYgKCFzZXQtXHUwMDNlb3BzLVx1MDAzZWNvbW1pdCB8fCBzZXQtXHUwMDNlZGVhZClcbkBAIC0xMDg4NSw3ICsxMDkyNCw2IEBAIHN0YXRpYyBpbnQgbmZfdGFibGVzX2NvbW1pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRzdHJ1Y3QgbmZ0X3RyYW5zX2JpbmRpbmcgKnRyYW5zX2JpbmRpbmc7XG4gXHRzdHJ1Y3QgbmZ0X3RyYW5zICp0cmFucywgKm5leHQ7XG4gXHR1bnNpZ25lZCBpbnQgYmFzZV9zZXEsIGdjX3NlcTtcbi1cdExJU1RfSEVBRChzZXRfdXBkYXRlX2xpc3QpO1xuIFx0c3RydWN0IG5mdF90cmFuc19lbGVtICp0ZTtcbiBcdHN0cnVjdCBuZnRfY2hhaW4gKmNoYWluO1xuIFx0c3RydWN0IG5mdF90YWJsZSAqdGFibGU7XG5AQCAtMTA5NjAsNiArMTA5OTgsOCBAQCBzdGF0aWMgaW50IG5mX3RhYmxlc19jb21taXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0fVxuIFxuIFx0Lyogc3RlcCAyLiAgTWFrZSBydWxlc19nZW5fWCB2aXNpYmxlIHRvIHBhY2tldCBwYXRoICovXG4rXHRuZnRfc2V0X2NvbW1pdF91cGRhdGUoXHUwMDI2Y3R4LCBuZnRfbmV0KTtcbitcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnkodGFibGUsIFx1MDAyNm5mdF9uZXQtXHUwMDNldGFibGVzLCBsaXN0KSB7XG4gXHRcdGxpc3RfZm9yX2VhY2hfZW50cnkoY2hhaW4sIFx1MDAyNnRhYmxlLVx1MDAzZWNoYWlucywgbGlzdClcbiBcdFx0XHRuZl90YWJsZXNfY29tbWl0X2NoYWluKG5ldCwgY2hhaW4pO1xuQEAgLTExMDkxLDI3ICsxMTEzMSwxNiBAQCBzdGF0aWMgaW50IG5mX3RhYmxlc19jb21taXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0XHRcdGJyZWFrO1xuIFx0XHRjYXNlIE5GVF9NU0dfTkVXU0VURUxFTTpcbiBcdFx0XHR0ZSA9IG5mdF90cmFuc19jb250YWluZXJfZWxlbSh0cmFucyk7XG4tXG4gXHRcdFx0bmZ0X3RyYW5zX2VsZW1zX2FkZChcdTAwMjZjdHgsIHRlKTtcbi1cbi1cdFx0XHRpZiAodGUtXHUwMDNlc2V0LVx1MDAzZW9wcy1cdTAwM2Vjb21taXQgXHUwMDI2XHUwMDI2XG4tXHRcdFx0ICAgIGxpc3RfZW1wdHkoXHUwMDI2dGUtXHUwMDNlc2V0LVx1MDAzZXBlbmRpbmdfdXBkYXRlKSkge1xuLVx0XHRcdFx0bGlzdF9hZGRfdGFpbChcdTAwMjZ0ZS1cdTAwM2VzZXQtXHUwMDNlcGVuZGluZ191cGRhdGUsXG4tXHRcdFx0XHRcdCAgICAgIFx1MDAyNnNldF91cGRhdGVfbGlzdCk7XG4tXHRcdFx0fVxuIFx0XHRcdG5mdF90cmFuc19kZXN0cm95KHRyYW5zKTtcbiBcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSBORlRfTVNHX0RFTFNFVEVMRU06XG4gXHRcdGNhc2UgTkZUX01TR19ERVNUUk9ZU0VURUxFTTpcbiBcdFx0XHR0ZSA9IG5mdF90cmFuc19jb250YWluZXJfZWxlbSh0cmFucyk7XG4tXG4tXHRcdFx0bmZ0X3RyYW5zX2VsZW1zX3JlbW92ZShcdTAwMjZjdHgsIHRlKTtcbi1cbi1cdFx0XHRpZiAodGUtXHUwMDNlc2V0LVx1MDAzZW9wcy1cdTAwM2Vjb21taXQgXHUwMDI2XHUwMDI2XG4tXHRcdFx0ICAgIGxpc3RfZW1wdHkoXHUwMDI2dGUtXHUwMDNlc2V0LVx1MDAzZXBlbmRpbmdfdXBkYXRlKSkge1xuLVx0XHRcdFx0bGlzdF9hZGRfdGFpbChcdTAwMjZ0ZS1cdTAwM2VzZXQtXHUwMDNlcGVuZGluZ191cGRhdGUsXG4tXHRcdFx0XHRcdCAgICAgIFx1MDAyNnNldF91cGRhdGVfbGlzdCk7XG4tXHRcdFx0fVxuK1x0XHRcdGlmICh0ZS1cdTAwM2VzZXQtXHUwMDNlb3BzLVx1MDAzZWNvbW1pdClcbitcdFx0XHRcdG5mdF90cmFuc19lbGVtc19yZW1vdmVfbm90aWZ5KFx1MDAyNmN0eCwgdGUpO1xuK1x0XHRcdGVsc2VcbitcdFx0XHRcdG5mdF90cmFuc19lbGVtc19yZW1vdmUoXHUwMDI2Y3R4LCB0ZSk7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgTkZUX01TR19ORVdPQko6XG4gXHRcdFx0aWYgKG5mdF90cmFuc19vYmpfdXBkYXRlKHRyYW5zKSkge1xuQEAgLTExMTgwLDggKzExMjA5LDYgQEAgc3RhdGljIGludCBuZl90YWJsZXNfY29tbWl0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdFx0fVxuIFx0fVxuIFxuLVx0bmZ0X3NldF9jb21taXRfdXBkYXRlKFx1MDAyNnNldF91cGRhdGVfbGlzdCk7XG4tXG4gXHRuZnRfY29tbWl0X25vdGlmeShuZXQsIE5FVExJTktfQ0Ioc2tiKS5wb3J0aWQpO1xuIFx0bmZfdGFibGVzX2dlbl9ub3RpZnkobmV0LCBza2IsIE5GVF9NU0dfTkVXR0VOKTtcbiBcdG5mX3RhYmxlc19jb21taXRfYXVkaXRfbG9nKFx1MDAyNmFkbCwgbmZ0X2Jhc2Vfc2VxKG5ldCkpO1xuQEAgLTExMjQ3LDExICsxMTI3NCwxMSBAQCBzdGF0aWMgdm9pZCBuZl90YWJsZXNfYWJvcnRfcmVsZWFzZShzdHJ1Y3QgbmZ0X3RyYW5zICp0cmFucylcbiBcdGtmcmVlKHRyYW5zKTtcbiB9XG4gXG4tc3RhdGljIHZvaWQgbmZ0X3NldF9hYm9ydF91cGRhdGUoc3RydWN0IGxpc3RfaGVhZCAqc2V0X3VwZGF0ZV9saXN0KVxuK3N0YXRpYyB2b2lkIG5mdF9zZXRfYWJvcnRfdXBkYXRlKHN0cnVjdCBuZnRhYmxlc19wZXJuZXQgKm5mdF9uZXQpXG4ge1xuIFx0c3RydWN0IG5mdF9zZXQgKnNldCwgKm5leHQ7XG4gXG4tXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoc2V0LCBuZXh0LCBzZXRfdXBkYXRlX2xpc3QsIHBlbmRpbmdfdXBkYXRlKSB7XG4rXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoc2V0LCBuZXh0LCBcdTAwMjZuZnRfbmV0LVx1MDAzZXNldF91cGRhdGVfbGlzdCwgcGVuZGluZ191cGRhdGUpIHtcbiBcdFx0bGlzdF9kZWxfaW5pdChcdTAwMjZzZXQtXHUwMDNlcGVuZGluZ191cGRhdGUpO1xuIFxuIFx0XHRpZiAoIXNldC1cdTAwM2VvcHMtXHUwMDNlYWJvcnQpXG5AQCAtMTEzODYsMzMgKzExNDEzLDIyIEBAIHN0YXRpYyBpbnQgX19uZl90YWJsZXNfYWJvcnQoc3RydWN0IG5ldCAqbmV0LCBlbnVtIG5mbmxfYWJvcnRfYWN0aW9uIGFjdGlvbilcbiBcdFx0XHRuZnRfdHJhbnNfZGVzdHJveSh0cmFucyk7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgTkZUX01TR19ORVdTRVRFTEVNOlxuK1x0XHRcdHRlID0gbmZ0X3RyYW5zX2NvbnRhaW5lcl9lbGVtKHRyYW5zKTtcbiBcdFx0XHRpZiAobmZ0X3RyYW5zX2VsZW1fc2V0X2JvdW5kKHRyYW5zKSkge1xuK1x0XHRcdFx0bGlzdF9kZWxfaW5pdChcdTAwMjZ0ZS1cdTAwM2VzZXQtXHUwMDNlcGVuZGluZ191cGRhdGUpO1xuIFx0XHRcdFx0bmZ0X3RyYW5zX2Rlc3Ryb3kodHJhbnMpO1xuIFx0XHRcdFx0YnJlYWs7XG4gXHRcdFx0fVxuLVx0XHRcdHRlID0gbmZ0X3RyYW5zX2NvbnRhaW5lcl9lbGVtKHRyYW5zKTtcbiBcdFx0XHRpZiAoIW5mdF90cmFuc19lbGVtc19uZXdfYWJvcnQoXHUwMDI2Y3R4LCB0ZSkpIHtcbiBcdFx0XHRcdG5mdF90cmFuc19kZXN0cm95KHRyYW5zKTtcbiBcdFx0XHRcdGJyZWFrO1xuIFx0XHRcdH1cbi1cbi1cdFx0XHRpZiAodGUtXHUwMDNlc2V0LVx1MDAzZW9wcy1cdTAwM2VhYm9ydCBcdTAwMjZcdTAwMjZcbi1cdFx0XHQgICAgbGlzdF9lbXB0eShcdTAwMjZ0ZS1cdTAwM2VzZXQtXHUwMDNlcGVuZGluZ191cGRhdGUpKSB7XG4tXHRcdFx0XHRsaXN0X2FkZF90YWlsKFx1MDAyNnRlLVx1MDAzZXNldC1cdTAwM2VwZW5kaW5nX3VwZGF0ZSxcbi1cdFx0XHRcdFx0ICAgICAgXHUwMDI2c2V0X3VwZGF0ZV9saXN0KTtcbi1cdFx0XHR9XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgTkZUX01TR19ERUxTRVRFTEVNOlxuIFx0XHRjYXNlIE5GVF9NU0dfREVTVFJPWVNFVEVMRU06XG4gXHRcdFx0dGUgPSBuZnRfdHJhbnNfY29udGFpbmVyX2VsZW0odHJhbnMpO1xuIFxuIFx0XHRcdG5mdF90cmFuc19lbGVtc19kZXN0cm95X2Fib3J0KFx1MDAyNmN0eCwgdGUpO1xuLVxuLVx0XHRcdGlmICh0ZS1cdTAwM2VzZXQtXHUwMDNlb3BzLVx1MDAzZWFib3J0IFx1MDAyNlx1MDAyNlxuLVx0XHRcdCAgICBsaXN0X2VtcHR5KFx1MDAyNnRlLVx1MDAzZXNldC1cdTAwM2VwZW5kaW5nX3VwZGF0ZSkpIHtcbi1cdFx0XHRcdGxpc3RfYWRkX3RhaWwoXHUwMDI2dGUtXHUwMDNlc2V0LVx1MDAzZXBlbmRpbmdfdXBkYXRlLFxuLVx0XHRcdFx0XHQgICAgICBcdTAwMjZzZXRfdXBkYXRlX2xpc3QpO1xuLVx0XHRcdH1cbiBcdFx0XHRuZnRfdHJhbnNfZGVzdHJveSh0cmFucyk7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgTkZUX01TR19ORVdPQko6XG5AQCAtMTE0NTgsNyArMTE0NzQsNyBAQCBzdGF0aWMgaW50IF9fbmZfdGFibGVzX2Fib3J0KHN0cnVjdCBuZXQgKm5ldCwgZW51bSBuZm5sX2Fib3J0X2FjdGlvbiBhY3Rpb24pXG4gXG4gXHRXQVJOX09OX09OQ0UoIWxpc3RfZW1wdHkoXHUwMDI2bmZ0X25ldC1cdTAwM2Vjb21taXRfc2V0X2xpc3QpKTtcbiBcbi1cdG5mdF9zZXRfYWJvcnRfdXBkYXRlKFx1MDAyNnNldF91cGRhdGVfbGlzdCk7XG4rXHRuZnRfc2V0X2Fib3J0X3VwZGF0ZShuZnRfbmV0KTtcbiBcbiBcdHN5bmNocm9uaXplX3JjdSgpO1xuIFxuQEAgLTEyMTQyLDYgKzEyMTU4LDcgQEAgc3RhdGljIGludCBfX25ldF9pbml0IG5mX3RhYmxlc19pbml0X25ldChzdHJ1Y3QgbmV0ICpuZXQpXG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZuZnRfbmV0LVx1MDAzZWJpbmRpbmdfbGlzdCk7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZuZnRfbmV0LVx1MDAzZW1vZHVsZV9saXN0KTtcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNm5mdF9uZXQtXHUwMDNlbm90aWZ5X2xpc3QpO1xuK1x0SU5JVF9MSVNUX0hFQUQoXHUwMDI2bmZ0X25ldC1cdTAwM2VzZXRfdXBkYXRlX2xpc3QpO1xuIFx0bXV0ZXhfaW5pdChcdTAwMjZuZnRfbmV0LVx1MDAzZWNvbW1pdF9tdXRleCk7XG4gXHRuZXQtXHUwMDNlbmZ0LmJhc2Vfc2VxID0gMTtcbiBcdG5mdF9uZXQtXHUwMDNlZ2Nfc2VxID0gMDtcbkBAIC0xMjE4Niw2ICsxMjIwMyw3IEBAIHN0YXRpYyB2b2lkIF9fbmV0X2V4aXQgbmZfdGFibGVzX2V4aXRfbmV0KHN0cnVjdCBuZXQgKm5ldClcbiBcdFdBUk5fT05fT05DRSghbGlzdF9lbXB0eShcdTAwMjZuZnRfbmV0LVx1MDAzZW1vZHVsZV9saXN0KSk7XG4gXHRXQVJOX09OX09OQ0UoIWxpc3RfZW1wdHkoXHUwMDI2bmZ0X25ldC1cdTAwM2Vub3RpZnlfbGlzdCkpO1xuIFx0V0FSTl9PTl9PTkNFKCFsaXN0X2VtcHR5KFx1MDAyNm5mdF9uZXQtXHUwMDNlZGVzdHJveV9saXN0KSk7XG4rXHRXQVJOX09OX09OQ0UoIWxpc3RfZW1wdHkoXHUwMDI2bmZ0X25ldC1cdTAwM2VzZXRfdXBkYXRlX2xpc3QpKTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgbmZfdGFibGVzX2V4aXRfYmF0Y2goc3RydWN0IGxpc3RfaGVhZCAqbmV0X2V4aXRfbGlzdClcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDIzOjI2OjI4LjQ0ODU1NzMyMloiLCJTZXEiOjIzLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMzQ2MzIwNjY0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiB0aGUgTmV0ZmlsdGVyIFRhYmxlcyBDb21taXQvQWJvcnQgUGF0Y2gqKlxuXG5Pa2F5LCBoZXJlJ3Mgd2hhdCBJJ3ZlIGdvdCBhZnRlciByZXZpZXdpbmcgdGhpcyBwYXRjaC4gSXQncyBmb2N1c2VkIG9uIHJlZmFjdG9yaW5nIHRoZSBjb21taXQgYW5kIGFib3J0IGxvZ2ljIHdpdGhpbiB0aGUgbmV0ZmlsdGVyIHRhYmxlcyBjb2RlLiBUaGUgY29yZSBjaGFuZ2UgaXMgdGhlIHJlbG9jYXRpb24gb2YgdGhlIGBzZXRfdXBkYXRlX2xpc3RgLiBQcmV2aW91c2x5LCB0aGlzIGxpc3Qgd2FzIGEgbG9jYWwgdmFyaWFibGUgd2l0aGluIGBuZl90YWJsZXNfY29tbWl0YCBhbmQgYF9fbmZfdGFibGVzX2Fib3J0YC4gTm93LCBpdCdzIGJlZW4gbW92ZWQgdG8gdGhlIGBzdHJ1Y3QgbmZ0YWJsZXNfcGVybmV0YCBzdHJ1Y3R1cmUsIG1ha2luZyBpdCBhIHBlci1uZXQgbmFtZXNwYWNlIHJlc291cmNlLlxuXG5UaGUgaW1wbGljYXRpb25zIGFyZSBjbGVhcjogdGhpcyBsaXN0LCB3aGljaCB0cmFja3Mgc2V0cyBwZW5kaW5nIHVwZGF0ZXMsIGNhbiBub3cgYmUgcG9wdWxhdGVkIGR1cmluZyB0aGUgdHJhbnNhY3Rpb24gcHJlcGFyYXRpb24gc3RhZ2UgYW5kIGlzIHRoZW4gcHJvY2Vzc2VkIGR1cmluZyBjb21taXQgb3IgYWJvcnQuIFRoaXMgbGlzdCBtYW5hZ2VtZW50IGFsc28gY2hhbmdlcyBob3cgYE5GVF9NU0dfREVMU0VURUxFTWAgbWVzc2FnZXMgYXJlIGhhbmRsZWQsIHdpdGggYW4gZWFybGllciBjYWxsIHRvIGBuZnRfc2V0X2NvbW1pdF91cGRhdGVgLiBUaGlzIGxpa2VseSBhbHRlcnMgdGhlIHByb2Nlc3Npbmcgb3JkZXIgb2YgdGhlc2UgbWVzc2FnZXMgd2l0aGluIHRoZSBjb21taXQgcHJvY2Vzcy5cblxuTXkgZXhwZXJ0IGludHVpdGlvbiwgY29tYmluZWQgd2l0aCB0aGUgY29udGV4dCwgc3Ryb25nbHkgc3VnZ2VzdHMgdGhpcyBpcyBhYm91dCBmaXhpbmcgYSByYWNlIGNvbmRpdGlvbiwgYSB1c2UtYWZ0ZXItZnJlZSBzY2VuYXJpbywgb3IgYSBzaW1pbGFyIG9yZGVyaW5nIGJ1ZyByZWxhdGVkIHRvIHNldCBlbGVtZW50IHVwZGF0ZXMgYW5kIHRoZSBjb21taXQvYWJvcnQgcHJvY2Vzcy4gVGhpcyBpc24ndCBhYm91dCBpbnRyb2R1Y2luZyBuZXcgZmVhdHVyZXM7IGl0J3MgYSBjcml0aWNhbCBidWcgZml4LlxuXG5Ob3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb24gZm9yIG15IGV2YWx1YXRpb24gaXMgdW5pbml0aWFsaXplZCBtZW1vcnkuIERvZXMgdGhpcyBwYXRjaCBpbnRyb2R1Y2UgYSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHJlYWQgb3IgdXNlZCBpbiBjb250cm9sIGZsb3c/IEFmdGVyIGEgY2FyZWZ1bCBleGFtaW5hdGlvbiwgSSdtIGNvbmZpZGVudCB0aGUgYW5zd2VyIGlzIG5vLiBUaGlzIHBhdGNoIGRvZXNuJ3QgaW50cm9kdWNlIGFueSBuZXcgc3RydWN0dXJlcyB0aGF0IGFyZSBwYXNzZWQgdG8gdXNlciBzcGFjZS4gSXQgZG9lc24ndCB0b3VjaCBtZW1vcnkgYWxsb2NhdGlvbiBvciB0aGUgZmllbGRzIG9mIGFueSBkYXRhIHN0cnVjdHVyZXMgaW4gYSB3YXkgdGhhdCB3b3VsZCBpbnRyb2R1Y2UgYW4gaW5mby1sZWFrLiBJdCdzIHB1cmVseSBhYm91dCBjb250cm9sIGZsb3cgYW5kIGxpc3QgbWFuYWdlbWVudC4gVGhlIGBzZXRfdXBkYXRlX2xpc3RgIGlzIGp1c3QgYSBsaXN0IGhlYWQuIFRoZSBmYWN0IHRoYXQgdGhlIGxpc3QgaXMgbW92ZWQgdG8gYSBwZXItbmV0IHN0cnVjdHVyZSBkb2Vzbid0IGNoYW5nZSBhbnl0aGluZyBhYm91dCBob3cgaXRzIGVsZW1lbnRzIGFyZSBpbml0aWFsaXplZCwgbm9yIGRvZXMgaXQgbWFrZSBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHZ1bG5lcmFiaWxpdGllcy5cblxuU28sIHdoaWxlIHRoaXMgcGF0Y2ggaXMgY3J1Y2lhbCBmb3IgZml4aW5nIHRoZSBidWcgaXQgYWRkcmVzc2VzLCBpdCBkb2Vzbid0IG5lY2Vzc2l0YXRlIGEgc3BlY2lhbGl6ZWQgS01TQU4gKEtlcm5lbCBNZW1vcnkgU2FuaXRpemVyKSBmdXp6aW5nIHNlc3Npb24uIFRoZSBzdGFuZGFyZCBLQVNBTiAoS2VybmVsIEFkZHJlc3MgU2FuaXRpemVyKSBhbmQgc3RhbmRhcmQgZGVidWcgb3B0aW9ucyAobGlrZSBgQ09ORklHX0RFQlVHX0xJU1RgKSBhcmUgbW9yZSB0aGFuIGNhcGFibGUgb2YgY2F0Y2hpbmcgYW55IHVzZS1hZnRlci1mcmVlLCBsaXN0IGNvcnJ1cHRpb24sIG9yIHJlbGF0ZWQgbWVtb3J5IGVycm9ycyB0aGF0IG1pZ2h0IGFyaXNlIGZyb20gdGhlc2UgY2hhbmdlcy4gU3RhbmRhcmQgZGVidWdnaW5nIHRvb2xzIGFyZSBzdWZmaWNpZW50LiBJIGNhbiByZWx5IG9uIHRob3NlLiBJIGRvIG5vdCBzZWUgYW55IG5ldyBpbmZvcm1hdGlvbiBsZWFrcywgd2hpY2ggaXMgZ29vZC5cblxuSSdtIHJlYWR5IHRvIG1vdmUgb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ3NzcsIk91dHB1dFRva2VucyI6MjkyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTc3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMjM6MjY6NTEuOTExNzY2OTgyWiIsIlNlcSI6MjQsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQyMzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZWZhY3RvcnMgdGhlIHRyYW5zYWN0aW9uIGNvbW1pdCBhbmQgYWJvcnQgbG9naWMgaW4gbmV0ZmlsdGVyIHRhYmxlcyAobmZfdGFibGVzKS4gSXQgbW92ZXMgdGhlIGBzZXRfdXBkYXRlX2xpc3RgIGZyb20gYmVpbmcgYSBsb2NhbCB2YXJpYWJsZSBpbiBgbmZfdGFibGVzX2NvbW1pdGAgYW5kIGBfX25mX3RhYmxlc19hYm9ydGAgdG8gYSBwZXItbmV0IG5hbWVzcGFjZSBzdHJ1Y3R1cmUgKGBzdHJ1Y3QgbmZ0YWJsZXNfcGVybmV0YCkuIEl0IGFsc28gYWRqdXN0cyB0aGUgb3JkZXIgb2Ygb3BlcmF0aW9ucyBkdXJpbmcgdGhlIGNvbW1pdCBwaGFzZSwgc3BlY2lmaWNhbGx5IGNhbGxpbmcgYG5mdF9zZXRfY29tbWl0X3VwZGF0ZWAgZWFybGllciBhbmQgbW9kaWZ5aW5nIGhvdyBgTkZUX01TR19ERUxTRVRFTEVNYCBtZXNzYWdlcyBhcmUgcHJvY2Vzc2VkIGFuZCBub3RpZmllZC5cXG5cXG5UaGVzZSBjaGFuZ2VzIGFyZSBwdXJlbHkgcmVsYXRlZCB0byBjb250cm9sIGZsb3csIGxpc3QgbWFuYWdlbWVudCwgYW5kIHRoZSBuZXRmaWx0ZXIgdHJhbnNhY3Rpb24gc3RhdGUgbWFjaGluZSAobGlrZWx5IHRvIGZpeCBhIHJhY2UgY29uZGl0aW9uLCB1c2UtYWZ0ZXItZnJlZSwgb3Igb3JkZXJpbmcgaXNzdWUpLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgYXJlIGNvcGllZCB0byB1c2VyIHNwYWNlLCBub3IgZG9lcyBpdCBtb2RpZnkgYnVmZmVyIGFsbG9jYXRpb25zLCBib3VuZHMgY2hlY2tpbmcsIG9yIGluaXRpYWxpemF0aW9uIGxvZ2ljIGluIGEgd2F5IHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQga2VybmVsIG1lbW9yeSAoaW5mby1sZWFrcykgb3IgY2F1c2UgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gYmUgdXNlZCBpbiBjb250cm9sIGZsb3cuXFxuXFxuQW55IGJ1Z3MgaW50cm9kdWNlZCBvciBmaXhlZCBieSB0aGlzIHBhdGNoIChzdWNoIGFzIHVzZS1hZnRlci1mcmVlLCBkb3VibGUtZnJlZSwgb3IgbGlzdCBjb3JydXB0aW9uKSB3b3VsZCBiZSByZWxpYWJseSBkZXRlY3RlZCBieSBzdGFuZGFyZCBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIGRlYnVnIG9wdGlvbnMgKGxpa2UgYENPTkZJR19ERUJVR19MSVNUYCkuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBqdXN0aWZpZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVmYWN0b3JzIHRoZSB0cmFuc2FjdGlvbiBjb21taXQgYW5kIGFib3J0IGxvZ2ljIGluIG5ldGZpbHRlciB0YWJsZXMgKG5mX3RhYmxlcykuIEl0IG1vdmVzIHRoZSBgc2V0X3VwZGF0ZV9saXN0YCBmcm9tIGJlaW5nIGEgbG9jYWwgdmFyaWFibGUgaW4gYG5mX3RhYmxlc19jb21taXRgIGFuZCBgX19uZl90YWJsZXNfYWJvcnRgIHRvIGEgcGVyLW5ldCBuYW1lc3BhY2Ugc3RydWN0dXJlIChgc3RydWN0IG5mdGFibGVzX3Blcm5ldGApLiBJdCBhbHNvIGFkanVzdHMgdGhlIG9yZGVyIG9mIG9wZXJhdGlvbnMgZHVyaW5nIHRoZSBjb21taXQgcGhhc2UsIHNwZWNpZmljYWxseSBjYWxsaW5nIGBuZnRfc2V0X2NvbW1pdF91cGRhdGVgIGVhcmxpZXIgYW5kIG1vZGlmeWluZyBob3cgYE5GVF9NU0dfREVMU0VURUxFTWAgbWVzc2FnZXMgYXJlIHByb2Nlc3NlZCBhbmQgbm90aWZpZWQuXFxuXFxuVGhlc2UgY2hhbmdlcyBhcmUgcHVyZWx5IHJlbGF0ZWQgdG8gY29udHJvbCBmbG93LCBsaXN0IG1hbmFnZW1lbnQsIGFuZCB0aGUgbmV0ZmlsdGVyIHRyYW5zYWN0aW9uIHN0YXRlIG1hY2hpbmUgKGxpa2VseSB0byBmaXggYSByYWNlIGNvbmRpdGlvbiwgdXNlLWFmdGVyLWZyZWUsIG9yIG9yZGVyaW5nIGlzc3VlKS4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcyB0aGF0IGFyZSBjb3BpZWQgdG8gdXNlciBzcGFjZSwgbm9yIGRvZXMgaXQgbW9kaWZ5IGJ1ZmZlciBhbGxvY2F0aW9ucywgYm91bmRzIGNoZWNraW5nLCBvciBpbml0aWFsaXphdGlvbiBsb2dpYyBpbiBhIHdheSB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIGtlcm5lbCBtZW1vcnkgKGluZm8tbGVha3MpIG9yIGNhdXNlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIGJlIHVzZWQgaW4gY29udHJvbCBmbG93LlxcblxcbkFueSBidWdzIGludHJvZHVjZWQgb3IgZml4ZWQgYnkgdGhpcyBwYXRjaCAoc3VjaCBhcyB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlLWZyZWUsIG9yIGxpc3QgY29ycnVwdGlvbikgd291bGQgYmUgcmVsaWFibHkgZGV0ZWN0ZWQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBkZWJ1ZyBvcHRpb25zIChsaWtlIGBDT05GSUdfREVCVUdfTElTVGApLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QganVzdGlmaWVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowlrmpm[1] Phase: Succeeded StartedAt: 2026-08-12 23:27:02 +0000 UTC FinishedAt: 2026-08-12 23:27:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrmpm[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-12 23:27:02 +0000 UTC FinishedAt: 2026-08-12 23:27:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrmpm[2] Phase: Succeeded StartedAt: 2026-08-12 23:27:02 +0000 UTC FinishedAt: 2026-08-13 03:20:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrmpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort","nf_tables_newsetelem","nf_tables_delsetelem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES"],"series_id":"4fcd9f88-13e9-4a38-93f9-55be3132f026","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-12 23:27:03 +0000 UTC FinishedAt: 2026-08-13 03:20:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort","nf_tables_newsetelem","nf_tables_delsetelem"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES"],"series_id":"4fcd9f88-13e9-4a38-93f9-55be3132f026","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowlrmpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort","nf_tables_newsetelem","nf_tables_delsetelem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES"],"series_id":"4fcd9f88-13e9-4a38-93f9-55be3132f026","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-12 23:27:03 +0000 UTC FinishedAt: 2026-08-12 23:27:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrmpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort","nf_tables_newsetelem","nf_tables_delsetelem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES"],"series_id":"4fcd9f88-13e9-4a38-93f9-55be3132f026","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-12 23:27:03 +0000 UTC FinishedAt: 2026-08-12 23:27:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.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-workflowlrmpm/series-workflowlrmpm-convert-artifact-3109954670/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlrmpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort","nf_tables_newsetelem","nf_tables_delsetelem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES"],"series_id":"4fcd9f88-13e9-4a38-93f9-55be3132f026","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-12 23:27:13 +0000 UTC FinishedAt: 2026-08-12 23:48:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrmpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort","nf_tables_newsetelem","nf_tables_delsetelem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES"],"series_id":"4fcd9f88-13e9-4a38-93f9-55be3132f026","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-12 23:27:13 +0000 UTC FinishedAt: 2026-08-12 23:48:59 +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:*3c8a9c23-200a-4d7d-b202-9059b3ab3321,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-workflowlrmpm/series-workflowlrmpm-convert-artifact-3109954670/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": "71ddc2d6-2df9-400b-989c-afcd025a63ea", "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-workflowlrmpm/series-workflowlrmpm-build-action-966683604/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlrmpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort","nf_tables_newsetelem","nf_tables_delsetelem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES"],"series_id":"4fcd9f88-13e9-4a38-93f9-55be3132f026","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-12 23:27:13 +0000 UTC FinishedAt: 2026-08-12 23:48:49 +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:*3c8a9c23-200a-4d7d-b202-9059b3ab3321,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-workflowlrmpm/series-workflowlrmpm-convert-artifact-3109954670/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": "71ddc2d6-2df9-400b-989c-afcd025a63ea", "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-workflowlrmpm/series-workflowlrmpm-build-action-966683604/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlrmpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort","nf_tables_newsetelem","nf_tables_delsetelem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES"],"series_id":"4fcd9f88-13e9-4a38-93f9-55be3132f026","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-12 23:48:59 +0000 UTC FinishedAt: 2026-08-12 23:48:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrmpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort","nf_tables_newsetelem","nf_tables_delsetelem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES"],"series_id":"4fcd9f88-13e9-4a38-93f9-55be3132f026","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-12 23:48:59 +0000 UTC FinishedAt: 2026-08-12 23:48:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrmpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort","nf_tables_newsetelem","nf_tables_delsetelem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES"],"series_id":"4fcd9f88-13e9-4a38-93f9-55be3132f026","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-12 23:48:59 +0000 UTC FinishedAt: 2026-08-12 23:49:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrmpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort","nf_tables_newsetelem","nf_tables_delsetelem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES"],"series_id":"4fcd9f88-13e9-4a38-93f9-55be3132f026","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-12 23:48:59 +0000 UTC FinishedAt: 2026-08-12 23:49:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES"],"series_id":"4fcd9f88-13e9-4a38-93f9-55be3132f026","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.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-workflowlrmpm/series-workflowlrmpm-convert-artifact-1988864865/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlrmpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort","nf_tables_newsetelem","nf_tables_delsetelem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES"],"series_id":"4fcd9f88-13e9-4a38-93f9-55be3132f026","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-12 23:49:09 +0000 UTC FinishedAt: 2026-08-12 23:51:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrmpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort","nf_tables_newsetelem","nf_tables_delsetelem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES"],"series_id":"4fcd9f88-13e9-4a38-93f9-55be3132f026","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-12 23:49:09 +0000 UTC FinishedAt: 2026-08-12 23:50:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*71ddc2d6-2df9-400b-989c-afcd025a63ea,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-workflowlrmpm/series-workflowlrmpm-build-action-966683604/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-workflowlrmpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort","nf_tables_newsetelem","nf_tables_delsetelem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES"],"series_id":"4fcd9f88-13e9-4a38-93f9-55be3132f026","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-12 23:51:08 +0000 UTC FinishedAt: 2026-08-12 23:51:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrmpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort","nf_tables_newsetelem","nf_tables_delsetelem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES"],"series_id":"4fcd9f88-13e9-4a38-93f9-55be3132f026","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-12 23:51:08 +0000 UTC FinishedAt: 2026-08-12 23:51:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrmpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort","nf_tables_newsetelem","nf_tables_delsetelem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES"],"series_id":"4fcd9f88-13e9-4a38-93f9-55be3132f026","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-12 23:51:08 +0000 UTC FinishedAt: 2026-08-13 00:11:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrmpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort","nf_tables_newsetelem","nf_tables_delsetelem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES"],"series_id":"4fcd9f88-13e9-4a38-93f9-55be3132f026","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-12 23:51:08 +0000 UTC FinishedAt: 2026-08-13 00:11:20 +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:*3c8a9c23-200a-4d7d-b202-9059b3ab3321,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-workflowlrmpm/series-workflowlrmpm-convert-artifact-1988864865/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": "26e2591f-fd7f-48ac-89fe-341dab08ef6a", "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-workflowlrmpm/series-workflowlrmpm-build-action-2539859053/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlrmpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort","nf_tables_newsetelem","nf_tables_delsetelem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES"],"series_id":"4fcd9f88-13e9-4a38-93f9-55be3132f026","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-12 23:51:08 +0000 UTC FinishedAt: 2026-08-13 00:11:10 +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:*3c8a9c23-200a-4d7d-b202-9059b3ab3321,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-workflowlrmpm/series-workflowlrmpm-convert-artifact-1988864865/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": "26e2591f-fd7f-48ac-89fe-341dab08ef6a", "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-workflowlrmpm/series-workflowlrmpm-build-action-2539859053/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlrmpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort","nf_tables_newsetelem","nf_tables_delsetelem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES"],"series_id":"4fcd9f88-13e9-4a38-93f9-55be3132f026","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-13 00:11:20 +0000 UTC FinishedAt: 2026-08-13 00:11:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrmpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort","nf_tables_newsetelem","nf_tables_delsetelem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES"],"series_id":"4fcd9f88-13e9-4a38-93f9-55be3132f026","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-13 00:11:20 +0000 UTC FinishedAt: 2026-08-13 00:11:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrmpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort","nf_tables_newsetelem","nf_tables_delsetelem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES"],"series_id":"4fcd9f88-13e9-4a38-93f9-55be3132f026","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-13 00:11:20 +0000 UTC FinishedAt: 2026-08-13 00:13:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrmpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort","nf_tables_newsetelem","nf_tables_delsetelem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES"],"series_id":"4fcd9f88-13e9-4a38-93f9-55be3132f026","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-13 00:11:20 +0000 UTC FinishedAt: 2026-08-13 00:13:11 +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:*26e2591f-fd7f-48ac-89fe-341dab08ef6a,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-workflowlrmpm/series-workflowlrmpm-build-action-2539859053/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-workflowlrmpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort","nf_tables_newsetelem","nf_tables_delsetelem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES"],"series_id":"4fcd9f88-13e9-4a38-93f9-55be3132f026","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-13 00:13:21 +0000 UTC FinishedAt: 2026-08-13 03:20:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrmpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort","nf_tables_newsetelem","nf_tables_delsetelem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES"],"series_id":"4fcd9f88-13e9-4a38-93f9-55be3132f026","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-13 00:13:21 +0000 UTC FinishedAt: 2026-08-13 03:20:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort","nf_tables_newsetelem","nf_tables_delsetelem"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*71ddc2d6-2df9-400b-989c-afcd025a63ea,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*26e2591f-fd7f-48ac-89fe-341dab08ef6a,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-workflowlrmpm/series-workflowlrmpm-build-action-966683604/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-workflowlrmpm/series-workflowlrmpm-build-action-2539859053/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowlrmpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort","nf_tables_newsetelem","nf_tables_delsetelem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES"],"series_id":"4fcd9f88-13e9-4a38-93f9-55be3132f026","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-13 00:13:21 +0000 UTC FinishedAt: 2026-08-13 00:13:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrmpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort","nf_tables_newsetelem","nf_tables_delsetelem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES"],"series_id":"4fcd9f88-13e9-4a38-93f9-55be3132f026","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-13 00:13:21 +0000 UTC FinishedAt: 2026-08-13 00:13:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort","nf_tables_newsetelem","nf_tables_delsetelem"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowlrmpm/series-workflowlrmpm-convert-artifact-16456438/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlrmpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort","nf_tables_newsetelem","nf_tables_delsetelem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES"],"series_id":"4fcd9f88-13e9-4a38-93f9-55be3132f026","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-13 00:13:21 +0000 UTC FinishedAt: 2026-08-13 00:13:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrmpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort","nf_tables_newsetelem","nf_tables_delsetelem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES"],"series_id":"4fcd9f88-13e9-4a38-93f9-55be3132f026","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-13 00:13:21 +0000 UTC FinishedAt: 2026-08-13 00:13:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrmpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort","nf_tables_newsetelem","nf_tables_delsetelem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES"],"series_id":"4fcd9f88-13e9-4a38-93f9-55be3132f026","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-13 00:13:21 +0000 UTC FinishedAt: 2026-08-13 00:13:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrmpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort","nf_tables_newsetelem","nf_tables_delsetelem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES"],"series_id":"4fcd9f88-13e9-4a38-93f9-55be3132f026","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-13 00:13:31 +0000 UTC FinishedAt: 2026-08-13 03:20:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrmpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort","nf_tables_newsetelem","nf_tables_delsetelem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES"],"series_id":"4fcd9f88-13e9-4a38-93f9-55be3132f026","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-13 00:13:31 +0000 UTC FinishedAt: 2026-08-13 03:19:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*71ddc2d6-2df9-400b-989c-afcd025a63ea,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*26e2591f-fd7f-48ac-89fe-341dab08ef6a,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-workflowlrmpm/series-workflowlrmpm-build-action-966683604/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-workflowlrmpm/series-workflowlrmpm-build-action-2539859053/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-workflowlrmpm/series-workflowlrmpm-convert-artifact-16456438/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,}