Name: series-workflowkdnsh Phase: Succeeded StartedAt: 2026-07-19 14:33:59 +0000 UTC FinishedAt: 2026-07-19 16:17:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkdnsh[0] Phase: Succeeded StartedAt: 2026-07-19 14:33:59 +0000 UTC FinishedAt: 2026-07-19 15:08:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkdnsh[0].run-triage Phase: Succeeded StartedAt: 2026-07-19 14:33:59 +0000 UTC FinishedAt: 2026-07-19 15:08:09 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "0718283ab28bc3907e10b61a6b4be6fefa1cbb2f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "0718283ab28bc3907e10b61a6b4be6fefa1cbb2f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "777e6de1-a4e6-4347-8c77-69a9dde24c7f" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "btf_parse_fields", "btf_parse_struct_metas" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-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+CgkJCTx0ZD4yMDI2LzA3LzE5IDE1OjA2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnRmX3BhcnNlX2ZpZWxkcyYjMzQ7LAogICAgJiMzNDtidGZfcGFyc2Vfc3RydWN0X21ldGFzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIEJURiBwYXJzaW5nIHdoZXJlIGR1cGxpY2F0ZSB1bmlxdWUgZmllbGRzIChsaWtlIGBicGZfc3Bpbl9sb2NrYCkgY291bGQgYmUgbmVzdGVkIGluIHN0cnVjdHMsIGFuZCB0aGUgYHNlZW5fbWFza2AgY2hlY2sgd291bGRuJiMzOTt0IGNhdGNoIGl0IGJlY2F1c2UgZWFjaCBsZXZlbCBvZiBuZXN0aW5nIGhhZCBpdHMgb3duIGBzZWVuX21hc2tgLiBQYXNzaW5nIGEgcG9pbnRlciB0byBgc2Vlbl9tYXNrYCBmaXhlcyB0aGlzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEJQRiBzdWJzeXN0ZW0sIHNwZWNpZmljYWxseSBpbiBCVEYgcGFyc2luZy92YWxpZGF0aW9uLCB3aGljaCBpcyByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIHZpYSB0aGUgYGJwZigpYCBzeXNjYWxsIChlLmcuLCBgQlBGX0JURl9MT0FEYCBvciBtYXAgY3JlYXRpb24pLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDE1OjA2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMmIzOTRmYjA5YmVmMGYxZWE2MTEyMGNmMDNjODJhMjZkMjZkMTJjYVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gSnVsIDE5IDE1OjA2OjU4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvYnRmLmMgYi9rZXJuZWwvYnBmL2J0Zi5jXG5pbmRleCBjYmIxZTQ5YjliY2JmNS4uOGQ2Mjg1NTJlZjk5ZWIgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL2J0Zi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL2J0Zi5jXG5AQCAtMzc1MSw3ICYjNDM7Mzc1MSw3IEBAIHN0YXRpYyBpbnQgYnRmX3JlcGVhdF9maWVsZHMoc3RydWN0IGJ0Zl9maWVsZF9pbmZvICppbmZvLCBpbnQgaW5mb19jbnQsXG4gc3RhdGljIGludCBidGZfZmluZF9zdHJ1Y3RfZmllbGQoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLFxuIFx0XHRcdFx0IGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdCwgdTMyIGZpZWxkX21hc2ssXG4gXHRcdFx0XHQgc3RydWN0IGJ0Zl9maWVsZF9pbmZvICppbmZvLCBpbnQgaW5mb19jbnQsXG4tXHRcdFx0XHQgdTMyIGxldmVsKTtcbiYjNDM7XHRcdFx0XHQgdTMyIGxldmVsLCB1MzIgKnNlZW5fbWFzayk7XG4gXG4gLyogRmluZCBzcGVjaWFsIGZpZWxkcyBpbiB0aGUgc3RydWN0IHR5cGUgb2YgYSBmaWVsZC5cbiAgKlxuQEAgLTM3NjIsNyAmIzQzOzM3NjIsNyBAQCBzdGF0aWMgaW50IGJ0Zl9maW5kX3N0cnVjdF9maWVsZChjb25zdCBzdHJ1Y3QgYnRmICpidGYsXG4gc3RhdGljIGludCBidGZfZmluZF9uZXN0ZWRfc3RydWN0KGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgY29uc3Qgc3RydWN0IGJ0Zl90eXBlICp0LFxuIFx0XHRcdFx0ICB1MzIgb2ZmLCB1MzIgbmVsZW1zLFxuIFx0XHRcdFx0ICB1MzIgZmllbGRfbWFzaywgc3RydWN0IGJ0Zl9maWVsZF9pbmZvICppbmZvLFxuLVx0XHRcdFx0ICBpbnQgaW5mb19jbnQsIHUzMiBsZXZlbClcbiYjNDM7XHRcdFx0XHQgIGludCBpbmZvX2NudCwgdTMyIGxldmVsLCB1MzIgKnNlZW5fbWFzaylcbiB7XG4gXHRpbnQgcmV0LCBlcnIsIGk7XG4gXG5AQCAtMzc3MCw3ICYjNDM7Mzc3MCw3IEBAIHN0YXRpYyBpbnQgYnRmX2ZpbmRfbmVzdGVkX3N0cnVjdChjb25zdCBzdHJ1Y3QgYnRmICpidGYsIGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqXG4gXHRpZiAobGV2ZWwgXHUwMDNlPSBNQVhfUkVTT0xWRV9ERVBUSClcbiBcdFx0cmV0dXJuIC1FMkJJRztcbiBcbi1cdHJldCA9IGJ0Zl9maW5kX3N0cnVjdF9maWVsZChidGYsIHQsIGZpZWxkX21hc2ssIGluZm8sIGluZm9fY250LCBsZXZlbCk7XG4mIzQzO1x0cmV0ID0gYnRmX2ZpbmRfc3RydWN0X2ZpZWxkKGJ0ZiwgdCwgZmllbGRfbWFzaywgaW5mbywgaW5mb19jbnQsIGxldmVsLCBzZWVuX21hc2spO1xuIFxuIFx0aWYgKHJldCBcdTAwM2M9IDApXG4gXHRcdHJldHVybiByZXQ7XG5AQCAtMzgyNyw3ICYjNDM7MzgyNyw3IEBAIHN0YXRpYyBpbnQgYnRmX2ZpbmRfZmllbGRfb25lKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZixcbiBcdFx0aWYgKGV4cGVjdGVkX3NpemUgXHUwMDI2XHUwMDI2IGV4cGVjdGVkX3NpemUgIT0gc3ogKiBuZWxlbXMpXG4gXHRcdFx0cmV0dXJuIDA7XG4gXHRcdHJldCA9IGJ0Zl9maW5kX25lc3RlZF9zdHJ1Y3QoYnRmLCB2YXJfdHlwZSwgb2ZmLCBuZWxlbXMsIGZpZWxkX21hc2ssXG4tXHRcdFx0XHRcdCAgICAgXHUwMDI2aW5mb1swXSwgaW5mb19jbnQsIGxldmVsKTtcbiYjNDM7XHRcdFx0XHRcdCAgICAgXHUwMDI2aW5mb1swXSwgaW5mb19jbnQsIGxldmVsLCBzZWVuX21hc2spO1xuIFx0XHRyZXR1cm4gcmV0O1xuIFx0fVxuIFxuQEAgLTM4OTIsMTEgJiM0MzszODkyLDExIEBAIHN0YXRpYyBpbnQgYnRmX2ZpbmRfZmllbGRfb25lKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZixcbiBzdGF0aWMgaW50IGJ0Zl9maW5kX3N0cnVjdF9maWVsZChjb25zdCBzdHJ1Y3QgYnRmICpidGYsXG4gXHRcdFx0XHQgY29uc3Qgc3RydWN0IGJ0Zl90eXBlICp0LCB1MzIgZmllbGRfbWFzayxcbiBcdFx0XHRcdCBzdHJ1Y3QgYnRmX2ZpZWxkX2luZm8gKmluZm8sIGludCBpbmZvX2NudCxcbi1cdFx0XHRcdCB1MzIgbGV2ZWwpXG4mIzQzO1x0XHRcdFx0IHUzMiBsZXZlbCwgdTMyICpzZWVuX21hc2spXG4ge1xuIFx0aW50IHJldCwgaWR4ID0gMDtcbiBcdGNvbnN0IHN0cnVjdCBidGZfbWVtYmVyICptZW1iZXI7XG4tXHR1MzIgaSwgb2ZmLCBzZWVuX21hc2sgPSAwO1xuJiM0MztcdHUzMiBpLCBvZmY7XG4gXG4gXHRmb3JfZWFjaF9tZW1iZXIoaSwgdCwgbWVtYmVyKSB7XG4gXHRcdGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqbWVtYmVyX3R5cGUgPSBidGZfdHlwZV9ieV9pZChidGYsXG5AQCAtMzkxMCw3ICYjNDM7MzkxMCw3IEBAIHN0YXRpYyBpbnQgYnRmX2ZpbmRfc3RydWN0X2ZpZWxkKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZixcbiBcbiBcdFx0cmV0ID0gYnRmX2ZpbmRfZmllbGRfb25lKGJ0ZiwgdCwgbWVtYmVyX3R5cGUsIGksXG4gXHRcdFx0XHRcdCBvZmYsIDAsXG4tXHRcdFx0XHRcdCBmaWVsZF9tYXNrLCBcdTAwMjZzZWVuX21hc2ssXG4mIzQzO1x0XHRcdFx0XHQgZmllbGRfbWFzaywgc2Vlbl9tYXNrLFxuIFx0XHRcdFx0XHQgXHUwMDI2aW5mb1tpZHhdLCBpbmZvX2NudCAtIGlkeCwgbGV2ZWwpO1xuIFx0XHRpZiAocmV0IFx1MDAzYyAwKVxuIFx0XHRcdHJldHVybiByZXQ7XG5AQCAtMzkyMSwxMSAmIzQzOzM5MjEsMTEgQEAgc3RhdGljIGludCBidGZfZmluZF9zdHJ1Y3RfZmllbGQoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLFxuIFxuIHN0YXRpYyBpbnQgYnRmX2ZpbmRfZGF0YXNlY192YXIoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCBjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKnQsXG4gXHRcdFx0XHR1MzIgZmllbGRfbWFzaywgc3RydWN0IGJ0Zl9maWVsZF9pbmZvICppbmZvLFxuLVx0XHRcdFx0aW50IGluZm9fY250LCB1MzIgbGV2ZWwpXG4mIzQzO1x0XHRcdFx0aW50IGluZm9fY250LCB1MzIgbGV2ZWwsIHUzMiAqc2Vlbl9tYXNrKVxuIHtcbiBcdGludCByZXQsIGlkeCA9IDA7XG4gXHRjb25zdCBzdHJ1Y3QgYnRmX3Zhcl9zZWNpbmZvICp2c2k7XG4tXHR1MzIgaSwgb2ZmLCBzZWVuX21hc2sgPSAwO1xuJiM0MztcdHUzMiBpLCBvZmY7XG4gXG4gXHRmb3JfZWFjaF92c2koaSwgdCwgdnNpKSB7XG4gXHRcdGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdmFyID0gYnRmX3R5cGVfYnlfaWQoYnRmLCB2c2ktXHUwMDNldHlwZSk7XG5AQCAtMzkzMyw3ICYjNDM7MzkzMyw3IEBAIHN0YXRpYyBpbnQgYnRmX2ZpbmRfZGF0YXNlY192YXIoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCBjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKnQsXG4gXG4gXHRcdG9mZiA9IHZzaS1cdTAwM2VvZmZzZXQ7XG4gXHRcdHJldCA9IGJ0Zl9maW5kX2ZpZWxkX29uZShidGYsIHZhciwgdmFyX3R5cGUsIC0xLCBvZmYsIHZzaS1cdTAwM2VzaXplLFxuLVx0XHRcdFx0XHQgZmllbGRfbWFzaywgXHUwMDI2c2Vlbl9tYXNrLFxuJiM0MztcdFx0XHRcdFx0IGZpZWxkX21hc2ssIHNlZW5fbWFzayxcbiBcdFx0XHRcdFx0IFx1MDAyNmluZm9baWR4XSwgaW5mb19jbnQgLSBpZHgsXG4gXHRcdFx0XHRcdCBsZXZlbCk7XG4gXHRcdGlmIChyZXQgXHUwMDNjIDApXG5AQCAtMzk0NywxMCAmIzQzOzM5NDcsMTIgQEAgc3RhdGljIGludCBidGZfZmluZF9maWVsZChjb25zdCBzdHJ1Y3QgYnRmICpidGYsIGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdCxcbiBcdFx0XHQgIHUzMiBmaWVsZF9tYXNrLCBzdHJ1Y3QgYnRmX2ZpZWxkX2luZm8gKmluZm8sXG4gXHRcdFx0ICBpbnQgaW5mb19jbnQpXG4ge1xuJiM0MztcdHUzMiBzZWVuX21hc2sgPSAwO1xuJiM0MztcbiBcdGlmIChfX2J0Zl90eXBlX2lzX3N0cnVjdCh0KSlcbi1cdFx0cmV0dXJuIGJ0Zl9maW5kX3N0cnVjdF9maWVsZChidGYsIHQsIGZpZWxkX21hc2ssIGluZm8sIGluZm9fY250LCAwKTtcbiYjNDM7XHRcdHJldHVybiBidGZfZmluZF9zdHJ1Y3RfZmllbGQoYnRmLCB0LCBmaWVsZF9tYXNrLCBpbmZvLCBpbmZvX2NudCwgMCwgXHUwMDI2c2Vlbl9tYXNrKTtcbiBcdGVsc2UgaWYgKGJ0Zl90eXBlX2lzX2RhdGFzZWModCkpXG4tXHRcdHJldHVybiBidGZfZmluZF9kYXRhc2VjX3ZhcihidGYsIHQsIGZpZWxkX21hc2ssIGluZm8sIGluZm9fY250LCAwKTtcbiYjNDM7XHRcdHJldHVybiBidGZfZmluZF9kYXRhc2VjX3ZhcihidGYsIHQsIGZpZWxkX21hc2ssIGluZm8sIGluZm9fY250LCAwLCBcdTAwMjZzZWVuX21hc2spO1xuIFx0cmV0dXJuIC1FSU5WQUw7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnRmLmNcbmluZGV4IDY2ODU1Y2JkNmI3M2Y2Li4wMmM0YzYwYzg0MWVlZiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zi5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9idGYuY1xuQEAgLTQyNTAsNiAmIzQzOzQyNTAsMzIgQEAgc3RhdGljIHN0cnVjdCBidGZfcmF3X3Rlc3QgcmF3X3Rlc3RzW10gPSB7XG4gXHQubWF4X2VudHJpZXMgPSAxLFxuIH0sXG4gXG4mIzQzOy8qIHN0cnVjdCBpbm5lciB7XG4mIzQzOyAqICAgICBzdHJ1Y3QgYnBmX3NwaW5fbG9jayBsb2NrO1xuJiM0MzsgKiB9O1xuJiM0MzsgKlxuJiM0MzsgKiBzdHJ1Y3QgdmFsdWUge1xuJiM0MzsgKiAgICAgc3RydWN0IGJwZl9zcGluX2xvY2sgbG9jaztcbiYjNDM7ICogICAgIHN0cnVjdCBpbm5lciBuZXN0ZWQ7XG4mIzQzOyAqIH07XG4mIzQzOyAqL1xuJiM0Mzt7XG4mIzQzO1x0LmRlc2NyID0gXCYjMzQ7c3RydWN0IHRlc3QgZHVwbGljYXRlIG5lc3RlZCB1bmlxdWUgZmllbGRzXCYjMzQ7LFxuJiM0MztcdC5yYXdfdHlwZXMgPSB7XG4mIzQzO1x0XHRCVEZfVFlQRV9JTlRfRU5DKE5BTUVfVEJELCBCVEZfSU5UX1NJR05FRCwgMCwgMzIsIDQpLFx0LyogWzFdICovXG4mIzQzO1x0XHRCVEZfU1RSVUNUX0VOQyhOQU1FX1RCRCwgMSwgNCksXHRcdFx0XHQvKiBbMl0gKi9cbiYjNDM7XHRcdEJURl9NRU1CRVJfRU5DKE5BTUVfVEJELCAxLCAwKSxcbiYjNDM7XHRcdEJURl9TVFJVQ1RfRU5DKE5BTUVfVEJELCAxLCA0KSxcdFx0XHRcdC8qIFszXSAqL1xuJiM0MztcdFx0QlRGX01FTUJFUl9FTkMoTkFNRV9UQkQsIDIsIDApLFxuJiM0MztcdFx0QlRGX1NUUlVDVF9FTkMoTkFNRV9UQkQsIDIsIDgpLFx0XHRcdFx0LyogWzRdICovXG4mIzQzO1x0XHRCVEZfTUVNQkVSX0VOQyhOQU1FX1RCRCwgMiwgMCksXG4mIzQzO1x0XHRCVEZfTUVNQkVSX0VOQyhOQU1FX1RCRCwgMywgMzIpLFxuJiM0MztcdFx0QlRGX0VORF9SQVcsXG4mIzQzO1x0fSxcbiYjNDM7XHRCVEZfU1RSX1NFQyhcJiMzNDtcXDBpbnRcXDBicGZfc3Bpbl9sb2NrXFwwdmFsXFwwaW5uZXJcXDBsb2NrXFwwdmFsdWVcXDBsb2NrXFwwbmVzdGVkXCYjMzQ7KSxcbiYjNDM7XHQuYnRmX2xvYWRfZXJyID0gdHJ1ZSxcbiYjNDM7fSxcbiYjNDM7XG4ge1xuIFx0LmRlc2NyID0gXCYjMzQ7c3RydWN0IHRlc3QgcmVwZWF0ZWQgZmllbGRzIGNvdW50IG92ZXJmbG93XCYjMzQ7LFxuIFx0LnJhd190eXBlcyA9IHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAxNTowNzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2J0Zl9wYXJzZV9maWVsZHMmIzM0OywKICAgICYjMzQ7YnRmX3BhcnNlX3N0cnVjdF9tZXRhcyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBCVEYgcGFyc2luZyB3aGVyZSBkdXBsaWNhdGUgdW5pcXVlIGZpZWxkcyAobGlrZSBgYnBmX3NwaW5fbG9ja2ApIGNvdWxkIGJlIG5lc3RlZCBpbiBzdHJ1Y3RzLCBhbmQgdGhlIGBzZWVuX21hc2tgIGNoZWNrIHdvdWxkbiYjMzk7dCBjYXRjaCBpdCBiZWNhdXNlIGVhY2ggbGV2ZWwgb2YgbmVzdGluZyBoYWQgaXRzIG93biBgc2Vlbl9tYXNrYC4gUGFzc2luZyBhIHBvaW50ZXIgdG8gYHNlZW5fbWFza2AgZml4ZXMgdGhpcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBCUEYgc3Vic3lzdGVtLCBzcGVjaWZpY2FsbHkgaW4gQlRGIHBhcnNpbmcvdmFsaWRhdGlvbiwgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSB2aWEgdGhlIGBicGYoKWAgc3lzY2FsbCAoZS5nLiwgYEJQRl9CVEZfTE9BRGAgb3IgbWFwIGNyZWF0aW9uKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMmIzOTRmYjA5YmVmMGYxZWE2MTEyMGNmMDNjODJhMjZkMjZkMTJjYQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gSnVsIDE5IDE1OjA2OjU4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9idGYuYyBiL2tlcm5lbC9icGYvYnRmLmMKaW5kZXggY2JiMWU0OWI5YmNiZjUuLjhkNjI4NTUyZWY5OWViIDEwMDY0NAotLS0gYS9rZXJuZWwvYnBmL2J0Zi5jCiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvYnRmLmMKQEAgLTM3NTEsNyAmIzQzOzM3NTEsNyBAQCBzdGF0aWMgaW50IGJ0Zl9yZXBlYXRfZmllbGRzKHN0cnVjdCBidGZfZmllbGRfaW5mbyAqaW5mbywgaW50IGluZm9fY250LAogc3RhdGljIGludCBidGZfZmluZF9zdHJ1Y3RfZmllbGQoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLAogCQkJCSBjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKnQsIHUzMiBmaWVsZF9tYXNrLAogCQkJCSBzdHJ1Y3QgYnRmX2ZpZWxkX2luZm8gKmluZm8sIGludCBpbmZvX2NudCwKLQkJCQkgdTMyIGxldmVsKTsKJiM0MzsJCQkJIHUzMiBsZXZlbCwgdTMyICpzZWVuX21hc2spOwogCiAvKiBGaW5kIHNwZWNpYWwgZmllbGRzIGluIHRoZSBzdHJ1Y3QgdHlwZSBvZiBhIGZpZWxkLgogICoKQEAgLTM3NjIsNyAmIzQzOzM3NjIsNyBAQCBzdGF0aWMgaW50IGJ0Zl9maW5kX3N0cnVjdF9maWVsZChjb25zdCBzdHJ1Y3QgYnRmICpidGYsCiBzdGF0aWMgaW50IGJ0Zl9maW5kX25lc3RlZF9zdHJ1Y3QoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCBjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKnQsCiAJCQkJICB1MzIgb2ZmLCB1MzIgbmVsZW1zLAogCQkJCSAgdTMyIGZpZWxkX21hc2ssIHN0cnVjdCBidGZfZmllbGRfaW5mbyAqaW5mbywKLQkJCQkgIGludCBpbmZvX2NudCwgdTMyIGxldmVsKQomIzQzOwkJCQkgIGludCBpbmZvX2NudCwgdTMyIGxldmVsLCB1MzIgKnNlZW5fbWFzaykKIHsKIAlpbnQgcmV0LCBlcnIsIGk7CiAKQEAgLTM3NzAsNyAmIzQzOzM3NzAsNyBAQCBzdGF0aWMgaW50IGJ0Zl9maW5kX25lc3RlZF9zdHJ1Y3QoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCBjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKgogCWlmIChsZXZlbCAmZ3Q7PSBNQVhfUkVTT0xWRV9ERVBUSCkKIAkJcmV0dXJuIC1FMkJJRzsKIAotCXJldCA9IGJ0Zl9maW5kX3N0cnVjdF9maWVsZChidGYsIHQsIGZpZWxkX21hc2ssIGluZm8sIGluZm9fY250LCBsZXZlbCk7CiYjNDM7CXJldCA9IGJ0Zl9maW5kX3N0cnVjdF9maWVsZChidGYsIHQsIGZpZWxkX21hc2ssIGluZm8sIGluZm9fY250LCBsZXZlbCwgc2Vlbl9tYXNrKTsKIAogCWlmIChyZXQgJmx0Oz0gMCkKIAkJcmV0dXJuIHJldDsKQEAgLTM4MjcsNyAmIzQzOzM4MjcsNyBAQCBzdGF0aWMgaW50IGJ0Zl9maW5kX2ZpZWxkX29uZShjb25zdCBzdHJ1Y3QgYnRmICpidGYsCiAJCWlmIChleHBlY3RlZF9zaXplICZhbXA7JmFtcDsgZXhwZWN0ZWRfc2l6ZSAhPSBzeiAqIG5lbGVtcykKIAkJCXJldHVybiAwOwogCQlyZXQgPSBidGZfZmluZF9uZXN0ZWRfc3RydWN0KGJ0ZiwgdmFyX3R5cGUsIG9mZiwgbmVsZW1zLCBmaWVsZF9tYXNrLAotCQkJCQkgICAgICZhbXA7aW5mb1swXSwgaW5mb19jbnQsIGxldmVsKTsKJiM0MzsJCQkJCSAgICAgJmFtcDtpbmZvWzBdLCBpbmZvX2NudCwgbGV2ZWwsIHNlZW5fbWFzayk7CiAJCXJldHVybiByZXQ7CiAJfQogCkBAIC0zODkyLDExICYjNDM7Mzg5MiwxMSBAQCBzdGF0aWMgaW50IGJ0Zl9maW5kX2ZpZWxkX29uZShjb25zdCBzdHJ1Y3QgYnRmICpidGYsCiBzdGF0aWMgaW50IGJ0Zl9maW5kX3N0cnVjdF9maWVsZChjb25zdCBzdHJ1Y3QgYnRmICpidGYsCiAJCQkJIGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdCwgdTMyIGZpZWxkX21hc2ssCiAJCQkJIHN0cnVjdCBidGZfZmllbGRfaW5mbyAqaW5mbywgaW50IGluZm9fY250LAotCQkJCSB1MzIgbGV2ZWwpCiYjNDM7CQkJCSB1MzIgbGV2ZWwsIHUzMiAqc2Vlbl9tYXNrKQogewogCWludCByZXQsIGlkeCA9IDA7CiAJY29uc3Qgc3RydWN0IGJ0Zl9tZW1iZXIgKm1lbWJlcjsKLQl1MzIgaSwgb2ZmLCBzZWVuX21hc2sgPSAwOwomIzQzOwl1MzIgaSwgb2ZmOwogCiAJZm9yX2VhY2hfbWVtYmVyKGksIHQsIG1lbWJlcikgewogCQljb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKm1lbWJlcl90eXBlID0gYnRmX3R5cGVfYnlfaWQoYnRmLApAQCAtMzkxMCw3ICYjNDM7MzkxMCw3IEBAIHN0YXRpYyBpbnQgYnRmX2ZpbmRfc3RydWN0X2ZpZWxkKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwKIAogCQlyZXQgPSBidGZfZmluZF9maWVsZF9vbmUoYnRmLCB0LCBtZW1iZXJfdHlwZSwgaSwKIAkJCQkJIG9mZiwgMCwKLQkJCQkJIGZpZWxkX21hc2ssICZhbXA7c2Vlbl9tYXNrLAomIzQzOwkJCQkJIGZpZWxkX21hc2ssIHNlZW5fbWFzaywKIAkJCQkJICZhbXA7aW5mb1tpZHhdLCBpbmZvX2NudCAtIGlkeCwgbGV2ZWwpOwogCQlpZiAocmV0ICZsdDsgMCkKIAkJCXJldHVybiByZXQ7CkBAIC0zOTIxLDExICYjNDM7MzkyMSwxMSBAQCBzdGF0aWMgaW50IGJ0Zl9maW5kX3N0cnVjdF9maWVsZChjb25zdCBzdHJ1Y3QgYnRmICpidGYsCiAKIHN0YXRpYyBpbnQgYnRmX2ZpbmRfZGF0YXNlY192YXIoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCBjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKnQsCiAJCQkJdTMyIGZpZWxkX21hc2ssIHN0cnVjdCBidGZfZmllbGRfaW5mbyAqaW5mbywKLQkJCQlpbnQgaW5mb19jbnQsIHUzMiBsZXZlbCkKJiM0MzsJCQkJaW50IGluZm9fY250LCB1MzIgbGV2ZWwsIHUzMiAqc2Vlbl9tYXNrKQogewogCWludCByZXQsIGlkeCA9IDA7CiAJY29uc3Qgc3RydWN0IGJ0Zl92YXJfc2VjaW5mbyAqdnNpOwotCXUzMiBpLCBvZmYsIHNlZW5fbWFzayA9IDA7CiYjNDM7CXUzMiBpLCBvZmY7CiAKIAlmb3JfZWFjaF92c2koaSwgdCwgdnNpKSB7CiAJCWNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdmFyID0gYnRmX3R5cGVfYnlfaWQoYnRmLCB2c2ktJmd0O3R5cGUpOwpAQCAtMzkzMyw3ICYjNDM7MzkzMyw3IEBAIHN0YXRpYyBpbnQgYnRmX2ZpbmRfZGF0YXNlY192YXIoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCBjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKnQsCiAKIAkJb2ZmID0gdnNpLSZndDtvZmZzZXQ7CiAJCXJldCA9IGJ0Zl9maW5kX2ZpZWxkX29uZShidGYsIHZhciwgdmFyX3R5cGUsIC0xLCBvZmYsIHZzaS0mZ3Q7c2l6ZSwKLQkJCQkJIGZpZWxkX21hc2ssICZhbXA7c2Vlbl9tYXNrLAomIzQzOwkJCQkJIGZpZWxkX21hc2ssIHNlZW5fbWFzaywKIAkJCQkJICZhbXA7aW5mb1tpZHhdLCBpbmZvX2NudCAtIGlkeCwKIAkJCQkJIGxldmVsKTsKIAkJaWYgKHJldCAmbHQ7IDApCkBAIC0zOTQ3LDEwICYjNDM7Mzk0NywxMiBAQCBzdGF0aWMgaW50IGJ0Zl9maW5kX2ZpZWxkKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgY29uc3Qgc3RydWN0IGJ0Zl90eXBlICp0LAogCQkJICB1MzIgZmllbGRfbWFzaywgc3RydWN0IGJ0Zl9maWVsZF9pbmZvICppbmZvLAogCQkJICBpbnQgaW5mb19jbnQpCiB7CiYjNDM7CXUzMiBzZWVuX21hc2sgPSAwOwomIzQzOwogCWlmIChfX2J0Zl90eXBlX2lzX3N0cnVjdCh0KSkKLQkJcmV0dXJuIGJ0Zl9maW5kX3N0cnVjdF9maWVsZChidGYsIHQsIGZpZWxkX21hc2ssIGluZm8sIGluZm9fY250LCAwKTsKJiM0MzsJCXJldHVybiBidGZfZmluZF9zdHJ1Y3RfZmllbGQoYnRmLCB0LCBmaWVsZF9tYXNrLCBpbmZvLCBpbmZvX2NudCwgMCwgJmFtcDtzZWVuX21hc2spOwogCWVsc2UgaWYgKGJ0Zl90eXBlX2lzX2RhdGFzZWModCkpCi0JCXJldHVybiBidGZfZmluZF9kYXRhc2VjX3ZhcihidGYsIHQsIGZpZWxkX21hc2ssIGluZm8sIGluZm9fY250LCAwKTsKJiM0MzsJCXJldHVybiBidGZfZmluZF9kYXRhc2VjX3ZhcihidGYsIHQsIGZpZWxkX21hc2ssIGluZm8sIGluZm9fY250LCAwLCAmYW1wO3NlZW5fbWFzayk7CiAJcmV0dXJuIC1FSU5WQUw7CiB9CiAKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnRmLmMKaW5kZXggNjY4NTVjYmQ2YjczZjYuLjAyYzRjNjBjODQxZWVmIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9idGYuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9idGYuYwpAQCAtNDI1MCw2ICYjNDM7NDI1MCwzMiBAQCBzdGF0aWMgc3RydWN0IGJ0Zl9yYXdfdGVzdCByYXdfdGVzdHNbXSA9IHsKIAkubWF4X2VudHJpZXMgPSAxLAogfSwKIAomIzQzOy8qIHN0cnVjdCBpbm5lciB7CiYjNDM7ICogICAgIHN0cnVjdCBicGZfc3Bpbl9sb2NrIGxvY2s7CiYjNDM7ICogfTsKJiM0MzsgKgomIzQzOyAqIHN0cnVjdCB2YWx1ZSB7CiYjNDM7ICogICAgIHN0cnVjdCBicGZfc3Bpbl9sb2NrIGxvY2s7CiYjNDM7ICogICAgIHN0cnVjdCBpbm5lciBuZXN0ZWQ7CiYjNDM7ICogfTsKJiM0MzsgKi8KJiM0Mzt7CiYjNDM7CS5kZXNjciA9ICYjMzQ7c3RydWN0IHRlc3QgZHVwbGljYXRlIG5lc3RlZCB1bmlxdWUgZmllbGRzJiMzNDssCiYjNDM7CS5yYXdfdHlwZXMgPSB7CiYjNDM7CQlCVEZfVFlQRV9JTlRfRU5DKE5BTUVfVEJELCBCVEZfSU5UX1NJR05FRCwgMCwgMzIsIDQpLAkvKiBbMV0gKi8KJiM0MzsJCUJURl9TVFJVQ1RfRU5DKE5BTUVfVEJELCAxLCA0KSwJCQkJLyogWzJdICovCiYjNDM7CQlCVEZfTUVNQkVSX0VOQyhOQU1FX1RCRCwgMSwgMCksCiYjNDM7CQlCVEZfU1RSVUNUX0VOQyhOQU1FX1RCRCwgMSwgNCksCQkJCS8qIFszXSAqLwomIzQzOwkJQlRGX01FTUJFUl9FTkMoTkFNRV9UQkQsIDIsIDApLAomIzQzOwkJQlRGX1NUUlVDVF9FTkMoTkFNRV9UQkQsIDIsIDgpLAkJCQkvKiBbNF0gKi8KJiM0MzsJCUJURl9NRU1CRVJfRU5DKE5BTUVfVEJELCAyLCAwKSwKJiM0MzsJCUJURl9NRU1CRVJfRU5DKE5BTUVfVEJELCAzLCAzMiksCiYjNDM7CQlCVEZfRU5EX1JBVywKJiM0MzsJfSwKJiM0MzsJQlRGX1NUUl9TRUMoJiMzNDtcMGludFwwYnBmX3NwaW5fbG9ja1wwdmFsXDBpbm5lclwwbG9ja1wwdmFsdWVcMGxvY2tcMG5lc3RlZCYjMzQ7KSwKJiM0MzsJLmJ0Zl9sb2FkX2VyciA9IHRydWUsCiYjNDM7fSwKJiM0MzsKIHsKIAkuZGVzY3IgPSAmIzM0O3N0cnVjdCB0ZXN0IHJlcGVhdGVkIGZpZWxkcyBjb3VudCBvdmVyZmxvdyYjMzQ7LAogCS5yYXdfdHlwZXMgPSB7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDE1OjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4NDQKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAzNjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgS2VybmVsIEJURiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBhZmZlY3RpbmcgdGhlIGtlcm5lbCwgc3BlY2lmaWNhbGx5IHdpdGhpbiBga2VybmVsL2JwZi9idGYuY2AuIEl0IGxvb2tzIGxpa2UgdGhleSYjMzk7dmUgbW9kaWZpZWQgdGhlIHNpZ25hdHVyZXMgb2YgYGJ0Zl9maW5kX3N0cnVjdF9maWVsZGAsIGBidGZfZmluZF9uZXN0ZWRfc3RydWN0YCwgYW5kIGBidGZfZmluZF9kYXRhc2VjX3ZhcmAuIFRoZXkmIzM5O3ZlIHN3aXRjaGVkIGZyb20gbG9jYWwgYHNlZW5fbWFza2AgdmFyaWFibGVzIHRvIHBhc3NpbmcgYSBgdTMyICpzZWVuX21hc2tgIHBvaW50ZXIuIEFoLCByaWdodCwgSSBzZWUuIFRoaXMgaXMgdG8gYWRkcmVzcyBhIHByb2JsZW0gd2l0aCBkdXBsaWNhdGUgdW5pcXVlIGZpZWxkcywgbGlrZSBhIGBicGZfc3Bpbl9sb2NrYCwgZ2V0dGluZyBuZXN0ZWQgd2l0aGluIHN0cnVjdHMuIFRoZSBvcmlnaW5hbCBpbXBsZW1lbnRhdGlvbiwgd2l0aCBpdHMgbG9jYWwgbWFza3MsIHdvdWxkbiYjMzk7dCBjYXRjaCB0aGVzZSBkdXBsaWNhdGVzIGFjcm9zcyBtdWx0aXBsZSBsZXZlbHMgb2YgbmVzdGluZy4gQnkgc2hhcmluZyB0aGUgYHNlZW5fbWFza2AgcG9pbnRlciwgdGhleSYjMzk7cmUgZW5zdXJpbmcgdGhhdCB0aGUgd2hvbGUgaGllcmFyY2h5IGlzIGNoZWNrZWQsIHdoaWNoIG1ha2VzIHNlbnNlLgoKU28sIGZ1bmN0aW9uYWxseSwgdGhpcyBpcyBhIGNoYW5nZSB3aXRoaW4gdGhlIEJQRiBzdWJzeXN0ZW0sIGFuZCwgbW9yZSBwcmVjaXNlbHksIHJlbGF0ZWQgdG8gQlRGIHBhcnNpbmcgYW5kIHZhbGlkYXRpb24uIERlZmluaXRlbHkgc29tZXRoaW5nIHdlIG5lZWQgdG8gY29uc2lkZXIgZm9yIGZ1enppbmcuIEdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIGNoYW5nZSwgaXQmIzM5O3MgZWFzaWx5IHJlYWNoYWJsZSwgc28gd2Ugc2hvdWxkIGZvY3VzIHNvbWUgYXR0ZW50aW9uIGhlcmUuCgpOb3csIGxldCYjMzk7cyBuYWlsIGRvd24gdGhlIHNwZWNpZmljIGZ1bmN0aW9ucyB3ZSBuZWVkIHRvIGZvY3VzIG9uIGZvciBmdXp6aW5nLiBXZSBoYXZlIHRob3NlIHByaW1hcnkgZnVuY3Rpb25zOiBgYnRmX2ZpbmRfc3RydWN0X2ZpZWxkYCwgYGJ0Zl9maW5kX25lc3RlZF9zdHJ1Y3RgLCBhbmQgYGJ0Zl9maW5kX2RhdGFzZWNfdmFyYCwgYW5kIGBidGZfZmluZF9maWVsZF9vbmVgLCBhbmQgYGJ0Zl9maW5kX2ZpZWxkYC4gTmV4dCBzdGVwLCBJIG5lZWQgdG8gY2hlY2sgaWYgdGhleSYjMzk7cmUgc3RhdGljIG9yIGV4cG9ydGVkLiBMZXQmIzM5O3Mgc2VlLi4uIGBidGZfZmluZF9zdHJ1Y3RfZmllbGRgIGlzIHN0YXRpYy4gU2FtZSBmb3IgYGJ0Zl9maW5kX25lc3RlZF9zdHJ1Y3RgIGFuZCBgYnRmX2ZpbmRfZGF0YXNlY192YXJgLiBOb3csIGBidGZfZmluZF9maWVsZGAuLi4gSGFuZyBvbiwgSSB0aGluayBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgbGFzdCBvbmUuIExldCYjMzk7cyBnbyBsb29rIGF0IGBrZXJuZWwvYnBmL2J0Zi5jYCBkaXJlY3RseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAxNTowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtidGZfZmluZF9maWVsZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvYnRmLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9idGYuYz0zNzYyPXN0YXRpYyBpbnQgYnRmX2ZpbmRfbmVzdGVkX3N0cnVjdChjb25zdCBzdHJ1Y3QgYnRmICpidGYsIGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdCxcbi0tXG5rZXJuZWwvYnBmL2J0Zi5jLTM3OTQtXG5rZXJuZWwvYnBmL2J0Zi5jOjM3OTU6c3RhdGljIGludCBidGZfZmluZF9maWVsZF9vbmUoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLFxua2VybmVsL2JwZi9idGYuYy0zNzk2LVx0XHRcdCAgICAgIGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdmFyLFxuLS1cbmtlcm5lbC9icGYvYnRmLmM9Mzg5Mj1zdGF0aWMgaW50IGJ0Zl9maW5kX3N0cnVjdF9maWVsZChjb25zdCBzdHJ1Y3QgYnRmICpidGYsXG4tLVxua2VybmVsL2JwZi9idGYuYy0zOTEwLVxua2VybmVsL2JwZi9idGYuYzozOTExOlx0XHRyZXQgPSBidGZfZmluZF9maWVsZF9vbmUoYnRmLCB0LCBtZW1iZXJfdHlwZSwgaSxcbmtlcm5lbC9icGYvYnRmLmMtMzkxMi1cdFx0XHRcdFx0IG9mZiwgMCxcbi0tXG5rZXJuZWwvYnBmL2J0Zi5jPTM5MjI9c3RhdGljIGludCBidGZfZmluZF9kYXRhc2VjX3Zhcihjb25zdCBzdHJ1Y3QgYnRmICpidGYsIGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdCxcbi0tXG5rZXJuZWwvYnBmL2J0Zi5jLTM5MzQtXHRcdG9mZiA9IHZzaS1cdTAwM2VvZmZzZXQ7XG5rZXJuZWwvYnBmL2J0Zi5jOjM5MzU6XHRcdHJldCA9IGJ0Zl9maW5kX2ZpZWxkX29uZShidGYsIHZhciwgdmFyX3R5cGUsIC0xLCBvZmYsIHZzaS1cdTAwM2VzaXplLFxua2VybmVsL2JwZi9idGYuYy0zOTM2LVx0XHRcdFx0XHQgZmllbGRfbWFzaywgc2Vlbl9tYXNrLFxuLS1cbmtlcm5lbC9icGYvYnRmLmMtMzk0NS1cbmtlcm5lbC9icGYvYnRmLmM6Mzk0NjpzdGF0aWMgaW50IGJ0Zl9maW5kX2ZpZWxkKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgY29uc3Qgc3RydWN0IGJ0Zl90eXBlICp0LFxua2VybmVsL2JwZi9idGYuYy0zOTQ3LVx0XHRcdCAgdTMyIGZpZWxkX21hc2ssIHN0cnVjdCBidGZfZmllbGRfaW5mbyAqaW5mbyxcbi0tXG5rZXJuZWwvYnBmL2J0Zi5jPTQxMjA9c3RydWN0IGJ0Zl9yZWNvcmQgKmJ0Zl9wYXJzZV9maWVsZHMoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCBjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKnQsXG4tLVxua2VybmVsL2JwZi9idGYuYy00MTI3LVxua2VybmVsL2JwZi9idGYuYzo0MTI4Olx0cmV0ID0gYnRmX2ZpbmRfZmllbGQoYnRmLCB0LCBmaWVsZF9tYXNrLCBpbmZvX2FyciwgQVJSQVlfU0laRShpbmZvX2FycikpO1xua2VybmVsL2JwZi9idGYuYy00MTI5LVx0aWYgKHJldCBcdTAwM2MgMClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAxNTowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1Mjk3CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBCVEYgRmllbGQgUGFyc2luZyBMb2dpYyoqCgpSaWdodCwgbGV0JiMzOTtzIHRyYWNlIHRoaXMuIGBidGZfcGFyc2VfZmllbGRzYCBpcyBjbGVhcmx5IHRoZSB3b3JraG9yc2UgZm9yIHBhcnNpbmcgZmllbGRzIGluIHRoZSBCVEYgKEJQRiBUeXBlIEZvcm1hdCkgZGF0YS4gQW5kIGl0IHNlZW1zIHRvIGxldmVyYWdlIGBidGZfZmluZF9maWVsZGAgYXMgYSBoZWxwZXIgZnVuY3Rpb24uIFRoZSBuYXR1cmFsIG5leHQgc3RlcCBpcyB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIHRoZSBjYWxsaW5nIGZ1bmN0aW9uLiBTbywgSSBuZWVkIHRvIHBpbnBvaW50IGV2ZXJ5d2hlcmUgYGJ0Zl9wYXJzZV9maWVsZHNgIGlzIGludm9rZWQgd2l0aGluIHRoZSBjb2RlYmFzZS4gS25vd2luZyB3aGVyZSBpdCYjMzk7cyB1c2VkIGlzIGNydWNpYWwgdG8gdW5kZXJzdGFuZGluZyB0aGUgZGlmZmVyZW50IHNjZW5hcmlvcyBhbmQgZGF0YSBzdHJ1Y3R1cmVzIGl0IG9wZXJhdGVzIG9uLiBUaGlzIHdpbGwgZXhwb3NlIHRoZSBsYXJnZXIgYXJjaGl0ZWN0dXJlIG9mIGhvdyB0aGUgQlRGIGRhdGEgaXMgcHJvY2Vzc2VkIGFuZCBpbnRlcnByZXRlZCBieSB0aGUgQlBGIGluZnJhc3RydWN0dXJlLiBMZXQmIzM5O3Mgc2VlIHdoZXJlIHRob3NlIGNhbGxzIGFyZSBtYWRlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDE1OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2J0Zl9wYXJzZV9maWVsZHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL2J0Zi5jPTQxMDg9c3RhdGljIGludCBidGZfZmllbGRfY21wKGNvbnN0IHZvaWQgKl9hLCBjb25zdCB2b2lkICpfYiwgY29uc3Qgdm9pZCAqcHJpdilcbi0tXG5rZXJuZWwvYnBmL2J0Zi5jLTQxMTktXG5rZXJuZWwvYnBmL2J0Zi5jOjQxMjA6c3RydWN0IGJ0Zl9yZWNvcmQgKmJ0Zl9wYXJzZV9maWVsZHMoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCBjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKnQsXG5rZXJuZWwvYnBmL2J0Zi5jLTQxMjEtXHRcdFx0XHQgICAgdTMyIGZpZWxkX21hc2ssIHUzMiB2YWx1ZV9zaXplKVxuLS1cbmtlcm5lbC9icGYvYnRmLmM9NTc4MD1idGZfcGFyc2Vfc3RydWN0X21ldGFzKHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csIHN0cnVjdCBidGYgKmJ0Zilcbi0tXG5rZXJuZWwvYnBmL2J0Zi5jLTU4ODAtXHRcdHR5cGUtXHUwMDNlYnRmX2lkID0gaTtcbmtlcm5lbC9icGYvYnRmLmM6NTg4MTpcdFx0cmVjb3JkID0gYnRmX3BhcnNlX2ZpZWxkcyhidGYsIHQsIEJQRl9TUElOX0xPQ0sgfCBCUEZfUkVTX1NQSU5fTE9DSyB8IEJQRl9MSVNUX0hFQUQgfCBCUEZfTElTVF9OT0RFIHxcbmtlcm5lbC9icGYvYnRmLmMtNTg4Mi1cdFx0XHRcdFx0XHQgIEJQRl9SQl9ST09UIHwgQlBGX1JCX05PREUgfCBCUEZfUkVGQ09VTlQgfFxuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jPTc2MD1ib29sIGJ0Zl9yZWNvcmRfZXF1YWwoY29uc3Qgc3RydWN0IGJ0Zl9yZWNvcmQgKnJlY19hLCBjb25zdCBzdHJ1Y3QgYnRmX3JlY29yZCAqcmVjX2IpXG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmMtNzcxLVx0c2l6ZSA9IHN0cnVjdF9zaXplKHJlY19hLCBmaWVsZHMsIHJlY19hLVx1MDAzZWNudCk7XG5rZXJuZWwvYnBmL3N5c2NhbGwuYzo3NzI6XHQvKiBidGZfcGFyc2VfZmllbGRzIHVzZXMga3phbGxvYyB0byBhbGxvY2F0ZSBhIGJ0Zl9yZWNvcmQsIHNvIHVudXNlZFxua2VybmVsL2JwZi9zeXNjYWxsLmMtNzczLVx0ICogbWVtYmVycyBhcmUgemVyb2VkIG91dC4gU28gbWVtY21wIGlzIHNhZmUgdG8gZG8gd2l0aG91dCB3b3JyeWluZ1xuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jPTEyNDM9c3RhdGljIGludCBtYXBfY2hlY2tfYnRmKHN0cnVjdCBicGZfbWFwICptYXAsIHN0cnVjdCBicGZfdG9rZW4gKnRva2VuLFxuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jLTEyNjQtXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzoxMjY1Olx0bWFwLVx1MDAzZXJlY29yZCA9IGJ0Zl9wYXJzZV9maWVsZHMoYnRmLCB2YWx1ZV90eXBlLFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMTI2Ni1cdFx0XHRcdCAgICAgICBCUEZfU1BJTl9MT0NLIHwgQlBGX1JFU19TUElOX0xPQ0sgfCBCUEZfVElNRVIgfCBCUEZfS1BUUiB8IEJQRl9MSVNUX0hFQUQgfFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDE1OjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYxNDcKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBidGZfcGFyc2VfZmllbGRzIEZ1bmN0aW9uKioKCk9rYXksIHNvIGBidGZfcGFyc2VfZmllbGRzYCBpcyBkZWZpbml0ZWx5IHNpZ25pZmljYW50OyBpdCBzZWVtcyB0byBiZSBleHBvcnRlZCBvciwgYXQgdGhlIHZlcnkgbGVhc3QsIGFjdGl2ZWx5IHVzZWQgYWNyb3NzIG11bHRpcGxlIGZpbGVzIHdpdGhpbiBga2VybmVsL2JwZi9gLiBUaGlzIHdhcnJhbnRzIGNsb3NlciBpbnNwZWN0aW9uLiBNeSBpbW1lZGlhdGUgdGhvdWdodHMgYXJlIHRvIHRyYWNlIGl0cyB1c2FnZS4KCkFoYSEgSXQmIzM5O3MgY2FsbGVkIGZyb20gYG1hcF9jaGVja19idGZgIHdpdGhpbiBga2VybmVsL2JwZi9zeXNjYWxsLmNgIGFuZCBhbHNvIGZyb20gYGJ0Zl9wYXJzZV9zdHJ1Y3RfbWV0YXNgIGluIGBrZXJuZWwvYnBmL2J0Zi5jYC4gVGhhdCBnaXZlcyBtZSBhIGZldyBzb2xpZCBzdGFydGluZyBwb2ludHMgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZS4KCk5vdywgd2hpY2ggZnVuY3Rpb25zIGhhdmUgYmVlbiBtb2RpZmllZD8gTG9va3MgbGlrZSB0aGUgY2hhbmdlcyBhcmUgY29uY2VudHJhdGVkIG9uOgoqICAgYGJ0Zl9maW5kX3N0cnVjdF9maWVsZGAKKiAgIGBidGZfZmluZF9uZXN0ZWRfc3RydWN0YAoqICAgYGJ0Zl9maW5kX2RhdGFzZWNfdmFyYAoqICAgYGJ0Zl9maW5kX2ZpZWxkX29uZWAKKiAgIGBidGZfZmluZF9maWVsZGAKCkludGVyZXN0aW5nLiBUaGVzZSBhcmUgYWxsIHN0YXRpYyBmdW5jdGlvbnMsIGFuZCB0aGV5JiMzOTtyZSBhbGwgZGVmaW5lZCB3aXRoaW4gYGtlcm5lbC9icGYvYnRmLmNgLiBTbywgdGhleSYjMzk7cmUgcHJvYmFibHkgaGVscGVyIGZ1bmN0aW9ucyB3aXRoaW4gdGhlIHNhbWUgbW9kdWxlLCB3aGljaCBpcyBjb21tb24gaW4gY29kZWJhc2VzLgoKV2l0aCB0aGlzIHVuZGVyc3RhbmRpbmcsIEkgY2FuIHNlZSBob3cgSSBjb3VsZCB6ZXJvIGluIG9uIGBidGZfcGFyc2VfZmllbGRzYCB0byBmaW5kIG91dCB3aGF0IGl0IGRvZXMgaW4gZGV0YWlsLiBJIGNvdWxkIGFsc28gaW52ZXN0aWdhdGUgYGJ0Zl9wYXJzZV9zdHJ1Y3RfbWV0YXNgLCBvciBwZXJoYXBzIGV2ZW4gbG9vayBhdCBgbWFwX2NoZWNrX2J0ZmAgd2hpY2ggY2FsbHMgYGJ0Zl9wYXJzZV9maWVsZHNgLiBNeSBmaXJzdCBzdGVwLCB0aG91Z2gsIGlzIHRvIGNvbmZpcm0gd2hldGhlciBgYnRmX3BhcnNlX2ZpZWxkc2AgaXMgZXhwb3J0ZWQsIGFzIGl0IG1pZ2h0IGluZm9ybSBob3cgSSBzaG91bGQgbG9vayBhdCB0aGUgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAxNTowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0wuKmJ0Zl9wYXJzZV9maWVsZHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMTU6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjc3OQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDM3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipBbmFseXppbmcgS2VybmVsIEZ1bmN0aW9uIFNjb3BlKioKClJpZ2h0LCBzbyB0aGlzIGZ1bmN0aW9uIGlzbiYjMzk7dCBiZWluZyBleHBsaWNpdGx5IGV4cG9ydGVkIHRvIGFueSBwYXJ0aWN1bGFyIG1vZHVsZTsgaXQmIzM5O3MgaGFuZ2luZyBvdXQgZ2xvYmFsbHksIHdpdGhpbiB0aGUga2VybmVsIGl0c2VsZiwgYnV0IGl0JiMzOTtzICpub3QqIHN0YXRpYywgd2hpY2ggZ2l2ZXMgaXQgYSBkaWZmZXJlbnQgY29ubm90YXRpb24uIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcsIGFuZCBpdCBzdWdnZXN0cyBwb3RlbnRpYWwgYWNjZXNzaWJpbGl0eSBmcm9tIGRpZmZlcmVudCBwYXJ0cyBvZiB0aGUga2VybmVsLiBUbyB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBzY29wZSwgbXkgbmV4dCBzdGVwIGlzIGNsZWFyLiBJIG5lZWQgdG8gZGl2ZSBzdHJhaWdodCBpbnRvIHRoZSBkZWZpbml0aW9uIG9mIGBidGZfcGFyc2VfZmllbGRzYC4gVW5kZXJzdGFuZGluZyAqaG93KiBpdCYjMzk7cyBkZWZpbmVkIHdpbGwgc2hlZCBsaWdodCBvbiB3aGVyZSBhbmQgaG93IGl0JiMzOTtzIGludGVuZGVkIHRvIGJlIHVzZWQgYW5kLCBjb25zZXF1ZW50bHksIGl0cyBicm9hZGVyIGltcGFjdCB3aXRoaW4gdGhlIGtlcm5lbCYjMzk7cyBhcmNoaXRlY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDE1OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0cnVjdCBidGZfcmVjb3JkIFxcKmJ0Zl9wYXJzZV9maWVsZHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL2J0Zi5jPTQxMDg9c3RhdGljIGludCBidGZfZmllbGRfY21wKGNvbnN0IHZvaWQgKl9hLCBjb25zdCB2b2lkICpfYiwgY29uc3Qgdm9pZCAqcHJpdilcbi0tXG5rZXJuZWwvYnBmL2J0Zi5jLTQxMTktXG5rZXJuZWwvYnBmL2J0Zi5jOjQxMjA6c3RydWN0IGJ0Zl9yZWNvcmQgKmJ0Zl9wYXJzZV9maWVsZHMoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCBjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKnQsXG5rZXJuZWwvYnBmL2J0Zi5jLTQxMjEtXHRcdFx0XHQgICAgdTMyIGZpZWxkX21hc2ssIHUzMiB2YWx1ZV9zaXplKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAxNTowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MTU0CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkluaXRpYWwgQXNzZXNzbWVudDogTmF2aWdhdGluZyBCVEYgQ29kZSoqCgpSaWdodCwgc28gdGhpcyBpc24mIzM5O3QgYSBzaW1wbGUsIHVuY2hhbmdpbmcgc2l0dWF0aW9uOyB0aGVyZSYjMzk7cyBzb21lIGR5bmFtaWMgYXNwZWN0IHRvIHRoaXMgcHJvYmxlbS4gVGhhdCBzdWdnZXN0cyB3ZSBjYW4mIzM5O3QganVzdCBsb29rIGluIG9uZSBwbGFjZSBhbmQgYmUgZG9uZSB3aXRoIGl0LiBUaGUgdmFyaWFiaWxpdHkgbWVhbnMgd2UgbmVlZCB0byBkcmlsbCBkb3duIGFuZCB1bmRlcnN0YW5kIHRoZSBmbG93LiBNeSBpbnN0aW5jdCBpcyB0aGF0IHRoZXJlIGFyZSBhIGZldyBrZXkgZnVuY3Rpb25zIHRvIGV4YW1pbmUuIEZpcnN0LCBgYnRmX3BhcnNlX2ZpZWxkc2AgLSB0aGF0IGZlZWxzIGxpa2UgYSBnb29kIGNlbnRyYWwgcG9pbnQsIGxpa2UgYSAmIzM0O2ZvY3VzIHN5bWJvbCYjMzQ7IGZvciB3aGVyZSB3ZSBjYW4gemVybyBpbiBvbiB0aGUgcmVsZXZhbnQgZnVuY3Rpb25hbGl0eS4gQWRkaXRpb25hbGx5LCBJIHRoaW5rIGBidGZfcGFyc2Vfc3RydWN0X21ldGFzYCBjb3VsZCBvZmZlciBzb21lIHZhbHVhYmxlIGNvbnRleHQuIEFub3RoZXIgbGlrZWx5IGNhbmRpZGF0ZSBzZWVtcyB0byBiZSBgbWFwX2NoZWNrX2J0ZmAuIFJpZ2h0LCBsZXQmIzM5O3Mgc3RhcnQgYnkgY2hlY2tpbmcgYG1hcF9jaGVja19idGZgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAxNTowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttYXBfY2hlY2tfYnRmJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9hcmVuYS5jPTQwMj1zdGF0aWMgbG9uZyBhcmVuYV9tYXBfdXBkYXRlX2VsZW0oc3RydWN0IGJwZl9tYXAgKm1hcCwgdm9pZCAqa2V5LFxuLS1cbmtlcm5lbC9icGYvYXJlbmEuYy00MDctXG5rZXJuZWwvYnBmL2FyZW5hLmM6NDA4OnN0YXRpYyBpbnQgYXJlbmFfbWFwX2NoZWNrX2J0ZihzdHJ1Y3QgYnBmX21hcCAqbWFwLCBjb25zdCBzdHJ1Y3QgYnRmICpidGYsXG5rZXJuZWwvYnBmL2FyZW5hLmMtNDA5LVx0XHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKmtleV90eXBlLCBjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKnZhbHVlX3R5cGUpXG4tLVxua2VybmVsL2JwZi9hcmVuYS5jPTYzMT1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgYXJlbmFfbWFwX29wcyA9IHtcbi0tXG5rZXJuZWwvYnBmL2FyZW5hLmMtNjQ0LVx0Lm1hcF9kZWxldGVfZWxlbSA9IGFyZW5hX21hcF9kZWxldGVfZWxlbSxcbmtlcm5lbC9icGYvYXJlbmEuYzo2NDU6XHQubWFwX2NoZWNrX2J0ZiA9IGFyZW5hX21hcF9jaGVja19idGYsXG5rZXJuZWwvYnBmL2FyZW5hLmMtNjQ2LVx0Lm1hcF9tZW1fdXNhZ2UgPSBhcmVuYV9tYXBfbWVtX3VzYWdlLFxuLS1cbmtlcm5lbC9icGYvYXJyYXltYXAuYz01MjY9c3RhdGljIHZvaWQgcGVyY3B1X2FycmF5X21hcF9zZXFfc2hvd19lbGVtKHN0cnVjdCBicGZfbWFwICptYXAsIHZvaWQgKmtleSxcbi0tXG5rZXJuZWwvYnBmL2FycmF5bWFwLmMtNTQ4LVxua2VybmVsL2JwZi9hcnJheW1hcC5jOjU0OTpzdGF0aWMgaW50IGFycmF5X21hcF9jaGVja19idGYoc3RydWN0IGJwZl9tYXAgKm1hcCxcbmtlcm5lbC9icGYvYXJyYXltYXAuYy01NTAtXHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBidGYgKmJ0Zixcbi0tXG5rZXJuZWwvYnBmL2FycmF5bWFwLmM9ODAxPWNvbnN0IHN0cnVjdCBicGZfbWFwX29wcyBhcnJheV9tYXBfb3BzID0ge1xuLS1cbmtlcm5lbC9icGYvYXJyYXltYXAuYy04MTUtXHQubWFwX3NlcV9zaG93X2VsZW0gPSBhcnJheV9tYXBfc2VxX3Nob3dfZWxlbSxcbmtlcm5lbC9icGYvYXJyYXltYXAuYzo4MTY6XHQubWFwX2NoZWNrX2J0ZiA9IGFycmF5X21hcF9jaGVja19idGYsXG5rZXJuZWwvYnBmL2FycmF5bWFwLmMtODE3LVx0Lm1hcF9sb29rdXBfYmF0Y2ggPSBnZW5lcmljX21hcF9sb29rdXBfYmF0Y2gsXG4tLVxua2VybmVsL2JwZi9hcnJheW1hcC5jPTgyNz1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgcGVyY3B1X2FycmF5X21hcF9vcHMgPSB7XG4tLVxua2VybmVsL2JwZi9hcnJheW1hcC5jLTgzOC1cdC5tYXBfc2VxX3Nob3dfZWxlbSA9IHBlcmNwdV9hcnJheV9tYXBfc2VxX3Nob3dfZWxlbSxcbmtlcm5lbC9icGYvYXJyYXltYXAuYzo4Mzk6XHQubWFwX2NoZWNrX2J0ZiA9IGFycmF5X21hcF9jaGVja19idGYsXG5rZXJuZWwvYnBmL2FycmF5bWFwLmMtODQwLVx0Lm1hcF9sb29rdXBfYmF0Y2ggPSBnZW5lcmljX21hcF9sb29rdXBfYmF0Y2gsXG4tLVxua2VybmVsL2JwZi9hcnJheW1hcC5jPTEzMjI9Y29uc3Qgc3RydWN0IGJwZl9tYXBfb3BzIHBlcmZfZXZlbnRfYXJyYXlfbWFwX29wcyA9IHtcbi0tXG5rZXJuZWwvYnBmL2FycmF5bWFwLmMtMTMzMi1cdC5tYXBfcmVsZWFzZSA9IHBlcmZfZXZlbnRfZmRfYXJyYXlfcmVsZWFzZSxcbmtlcm5lbC9icGYvYXJyYXltYXAuYzoxMzMzOlx0Lm1hcF9jaGVja19idGYgPSBtYXBfY2hlY2tfbm9fYnRmLFxua2VybmVsL2JwZi9hcnJheW1hcC5jLTEzMzQtXHQubWFwX21lbV91c2FnZSA9IGFycmF5X21hcF9tZW1fdXNhZ2UsXG4tLVxua2VybmVsL2JwZi9hcnJheW1hcC5jPTEzNTg9Y29uc3Qgc3RydWN0IGJwZl9tYXBfb3BzIGNncm91cF9hcnJheV9tYXBfb3BzID0ge1xuLS1cbmtlcm5lbC9icGYvYXJyYXltYXAuYy0xMzY3LVx0Lm1hcF9mZF9wdXRfcHRyID0gY2dyb3VwX2ZkX2FycmF5X3B1dF9wdHIsXG5rZXJuZWwvYnBmL2FycmF5bWFwLmM6MTM2ODpcdC5tYXBfY2hlY2tfYnRmID0gbWFwX2NoZWNrX25vX2J0Zixcbmtlcm5lbC9icGYvYXJyYXltYXAuYy0xMzY5LVx0Lm1hcF9tZW1fdXNhZ2UgPSBhcnJheV9tYXBfbWVtX3VzYWdlLFxuLS1cbmtlcm5lbC9icGYvYXJyYXltYXAuYz0xNDQ0PWNvbnN0IHN0cnVjdCBicGZfbWFwX29wcyBhcnJheV9vZl9tYXBzX21hcF9vcHMgPSB7XG4tLVxua2VybmVsL2JwZi9hcnJheW1hcC5jLTE0NTYtXHQubWFwX3VwZGF0ZV9iYXRjaCA9IGdlbmVyaWNfbWFwX3VwZGF0ZV9iYXRjaCxcbmtlcm5lbC9icGYvYXJyYXltYXAuYzoxNDU3Olx0Lm1hcF9jaGVja19idGYgPSBtYXBfY2hlY2tfbm9fYnRmLFxua2VybmVsL2JwZi9hcnJheW1hcC5jLTE0NTgtXHQubWFwX21lbV91c2FnZSA9IGFycmF5X21hcF9tZW1fdXNhZ2UsXG4tLVxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYz0xNzY9c3RhdGljIGxvbmcgYmxvb21fbWFwX3VwZGF0ZV9lbGVtKHN0cnVjdCBicGZfbWFwICptYXAsIHZvaWQgKmtleSxcbi0tXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jLTE4Mi1cbmtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmM6MTgzOnN0YXRpYyBpbnQgYmxvb21fbWFwX2NoZWNrX2J0ZihzdHJ1Y3QgYnBmX21hcCAqbWFwLFxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYy0xODQtXHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBidGYgKmJ0Zixcbi0tXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jPTIwND1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgYmxvb21fZmlsdGVyX21hcF9vcHMgPSB7XG4tLVxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYy0yMTUtXHQubWFwX2RlbGV0ZV9lbGVtID0gYmxvb21fbWFwX2RlbGV0ZV9lbGVtLFxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYzoyMTY6XHQubWFwX2NoZWNrX2J0ZiA9IGJsb29tX21hcF9jaGVja19idGYsXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jLTIxNy1cdC5tYXBfbWVtX3VzYWdlID0gYmxvb21fbWFwX21lbV91c2FnZSxcbi0tXG5rZXJuZWwvYnBmL2JwZl9jZ3JwX3N0b3JhZ2UuYz0xNjA9Y29uc3Qgc3RydWN0IGJwZl9tYXBfb3BzIGNncnBfc3RvcmFnZV9tYXBfb3BzID0ge1xuLS1cbmtlcm5lbC9icGYvYnBmX2NncnBfc3RvcmFnZS5jLTE2OC1cdC5tYXBfZGVsZXRlX2VsZW0gPSBicGZfY2dycF9zdG9yYWdlX2RlbGV0ZV9lbGVtLFxua2VybmVsL2JwZi9icGZfY2dycF9zdG9yYWdlLmM6MTY5Olx0Lm1hcF9jaGVja19idGYgPSBicGZfbG9jYWxfc3RvcmFnZV9tYXBfY2hlY2tfYnRmLFxua2VybmVsL2JwZi9icGZfY2dycF9zdG9yYWdlLmMtMTcwLVx0Lm1hcF9tZW1fdXNhZ2UgPSBicGZfbG9jYWxfc3RvcmFnZV9tYXBfbWVtX3VzYWdlLFxuLS1cbmtlcm5lbC9icGYvYnBmX2lub2RlX3N0b3JhZ2UuYz0xOTg9Y29uc3Qgc3RydWN0IGJwZl9tYXBfb3BzIGlub2RlX3N0b3JhZ2VfbWFwX29wcyA9IHtcbi0tXG5rZXJuZWwvYnBmL2JwZl9pbm9kZV9zdG9yYWdlLmMtMjA2LVx0Lm1hcF9kZWxldGVfZWxlbSA9IGJwZl9mZF9pbm9kZV9zdG9yYWdlX2RlbGV0ZV9lbGVtLFxua2VybmVsL2JwZi9icGZfaW5vZGVfc3RvcmFnZS5jOjIwNzpcdC5tYXBfY2hlY2tfYnRmID0gYnBmX2xvY2FsX3N0b3JhZ2VfbWFwX2NoZWNrX2J0Zixcbmtlcm5lbC9icGYvYnBmX2lub2RlX3N0b3JhZ2UuYy0yMDgtXHQubWFwX21lbV91c2FnZSA9IGJwZl9sb2NhbF9zdG9yYWdlX21hcF9tZW1fdXNhZ2UsXG4tLVxua2VybmVsL2JwZi9icGZfaW5zbl9hcnJheS5jPTEzNj1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgaW5zbl9hcnJheV9tYXBfb3BzID0ge1xuLS1cbmtlcm5lbC9icGYvYnBmX2luc25fYXJyYXkuYy0xNDMtXHQubWFwX2RlbGV0ZV9lbGVtID0gaW5zbl9hcnJheV9kZWxldGVfZWxlbSxcbmtlcm5lbC9icGYvYnBmX2luc25fYXJyYXkuYzoxNDQ6XHQubWFwX2NoZWNrX2J0ZiA9IGluc25fYXJyYXlfY2hlY2tfYnRmLFxua2VybmVsL2JwZi9icGZfaW5zbl9hcnJheS5jLTE0NS1cdC5tYXBfbWVtX3VzYWdlID0gaW5zbl9hcnJheV9tZW1fdXNhZ2UsXG4tLVxua2VybmVsL2JwZi9icGZfbG9jYWxfc3RvcmFnZS5jPTcwMj1pbnQgYnBmX2xvY2FsX3N0b3JhZ2VfbWFwX2FsbG9jX2NoZWNrKHVuaW9uIGJwZl9hdHRyICphdHRyKVxuLS1cbmtlcm5lbC9icGYvYnBmX2xvY2FsX3N0b3JhZ2UuYy03MTctXG5rZXJuZWwvYnBmL2JwZl9sb2NhbF9zdG9yYWdlLmM6NzE4OmludCBicGZfbG9jYWxfc3RvcmFnZV9tYXBfY2hlY2tfYnRmKHN0cnVjdCBicGZfbWFwICptYXAsXG5rZXJuZWwvYnBmL2JwZl9sb2NhbF9zdG9yYWdlLmMtNzE5LVx0XHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBidGYgKmJ0Zixcbi0tXG5rZXJuZWwvYnBmL2JwZl90YXNrX3N0b3JhZ2UuYz0yMjM9Y29uc3Qgc3RydWN0IGJwZl9tYXBfb3BzIHRhc2tfc3RvcmFnZV9tYXBfb3BzID0ge1xuLS1cbmtlcm5lbC9icGYvYnBmX3Rhc2tfc3RvcmFnZS5jLTIzMS1cdC5tYXBfZGVsZXRlX2VsZW0gPSBicGZfcGlkX3Rhc2tfc3RvcmFnZV9kZWxldGVfZWxlbSxcbmtlcm5lbC9icGYvYnBmX3Rhc2tfc3RvcmFnZS5jOjIzMjpcdC5tYXBfY2hlY2tfYnRmID0gYnBmX2xvY2FsX3N0b3JhZ2VfbWFwX2NoZWNrX2J0Zixcbmtlcm5lbC9icGYvYnBmX3Rhc2tfc3RvcmFnZS5jLTIzMy1cdC5tYXBfbWVtX3VzYWdlID0gYnBmX2xvY2FsX3N0b3JhZ2VfbWFwX21lbV91c2FnZSxcbi0tXG5rZXJuZWwvYnBmL2NwdW1hcC5jPTcwOT1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgY3B1X21hcF9vcHMgPSB7XG4tLVxua2VybmVsL2JwZi9jcHVtYXAuYy03MTYtXHQubWFwX2dldF9uZXh0X2tleVx0PSBjcHVfbWFwX2dldF9uZXh0X2tleSxcbmtlcm5lbC9icGYvY3B1bWFwLmM6NzE3Olx0Lm1hcF9jaGVja19idGZcdFx0PSBtYXBfY2hlY2tfbm9fYnRmLFxua2VybmVsL2JwZi9jcHVtYXAuYy03MTgtXHQubWFwX21lbV91c2FnZVx0XHQ9IGNwdV9tYXBfbWVtX3VzYWdlLFxuLS1cbmtlcm5lbC9icGYvZGV2bWFwLmM9MTA4Nz1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgZGV2X21hcF9vcHMgPSB7XG4tLVxua2VybmVsL2JwZi9kZXZtYXAuYy0xMDk1LVx0Lm1hcF9kZWxldGVfZWxlbSA9IGRldl9tYXBfZGVsZXRlX2VsZW0sXG5rZXJuZWwvYnBmL2Rldm1hcC5jOjEwOTY6XHQubWFwX2NoZWNrX2J0ZiA9IG1hcF9jaGVja19ub19idGYsXG5rZXJuZWwvYnBmL2Rldm1hcC5jLTEwOTctXHQubWFwX21lbV91c2FnZSA9IGRldl9tYXBfbWVtX3VzYWdlLFxuLS1cbmtlcm5lbC9icGYvZGV2bWFwLmM9MTEwMj1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgZGV2X21hcF9oYXNoX29wcyA9IHtcbi0tXG5rZXJuZWwvYnBmL2Rldm1hcC5jLTExMTAtXHQubWFwX2RlbGV0ZV9lbGVtID0gZGV2X21hcF9oYXNoX2RlbGV0ZV9lbGVtLFxua2VybmVsL2JwZi9kZXZtYXAuYzoxMTExOlx0Lm1hcF9jaGVja19idGYgPSBtYXBfY2hlY2tfbm9fYnRmLFxua2VybmVsL2JwZi9kZXZtYXAuYy0xMTEyLVx0Lm1hcF9tZW1fdXNhZ2UgPSBkZXZfbWFwX21lbV91c2FnZSxcbi0tXG5rZXJuZWwvYnBmL2hhc2h0YWIuYz01MDQ9c3RhdGljIGludCBicGZfbWFfc2V0X2R0b3Ioc3RydWN0IGJwZl9tYXAgKm1hcCwgc3RydWN0IGJwZl9tZW1fYWxsb2MgKm1hLFxuLS1cbmtlcm5lbC9icGYvaGFzaHRhYi5jLTUyNy1cbmtlcm5lbC9icGYvaGFzaHRhYi5jOjUyODpzdGF0aWMgaW50IGh0YWJfbWFwX2NoZWNrX2J0ZihzdHJ1Y3QgYnBmX21hcCAqbWFwLCBjb25zdCBzdHJ1Y3QgYnRmICpidGYsXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy01MjktXHRcdFx0ICAgICAgY29uc3Qgc3RydWN0IGJ0Zl90eXBlICprZXlfdHlwZSwgY29uc3Qgc3RydWN0IGJ0Zl90eXBlICp2YWx1ZV90eXBlKVxuLS1cbmtlcm5lbC9icGYvaGFzaHRhYi5jPTIzNTg9Y29uc3Qgc3RydWN0IGJwZl9tYXBfb3BzIGh0YWJfbWFwX29wcyA9IHtcbi0tXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0yMzcyLVx0Lm1hcF9mb3JfZWFjaF9jYWxsYmFjayA9IGJwZl9mb3JfZWFjaF9oYXNoX2VsZW0sXG5rZXJuZWwvYnBmL2hhc2h0YWIuYzoyMzczOlx0Lm1hcF9jaGVja19idGYgPSBodGFiX21hcF9jaGVja19idGYsXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0yMzc0LVx0Lm1hcF9tZW1fdXNhZ2UgPSBodGFiX21hcF9tZW1fdXNhZ2UsXG4tLVxua2VybmVsL2JwZi9oYXNodGFiLmM9MjM4MD1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgaHRhYl9scnVfbWFwX29wcyA9IHtcbi0tXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0yMzk1LVx0Lm1hcF9mb3JfZWFjaF9jYWxsYmFjayA9IGJwZl9mb3JfZWFjaF9oYXNoX2VsZW0sXG5rZXJuZWwvYnBmL2hhc2h0YWIuYzoyMzk2Olx0Lm1hcF9jaGVja19idGYgPSBodGFiX21hcF9jaGVja19idGYsXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0yMzk3LVx0Lm1hcF9tZW1fdXNhZ2UgPSBodGFiX21hcF9tZW1fdXNhZ2UsXG4tLVxua2VybmVsL2JwZi9oYXNodGFiLmM9MjU2MT1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgaHRhYl9wZXJjcHVfbWFwX29wcyA9IHtcbi0tXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0yNTc1LVx0Lm1hcF9mb3JfZWFjaF9jYWxsYmFjayA9IGJwZl9mb3JfZWFjaF9oYXNoX2VsZW0sXG5rZXJuZWwvYnBmL2hhc2h0YWIuYzoyNTc2Olx0Lm1hcF9jaGVja19idGYgPSBodGFiX21hcF9jaGVja19idGYsXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0yNTc3LVx0Lm1hcF9tZW1fdXNhZ2UgPSBodGFiX21hcF9tZW1fdXNhZ2UsXG4tLVxua2VybmVsL2JwZi9oYXNodGFiLmM9MjU4Mz1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgaHRhYl9scnVfcGVyY3B1X21hcF9vcHMgPSB7XG4tLVxua2VybmVsL2JwZi9oYXNodGFiLmMtMjU5Ni1cdC5tYXBfZm9yX2VhY2hfY2FsbGJhY2sgPSBicGZfZm9yX2VhY2hfaGFzaF9lbGVtLFxua2VybmVsL2JwZi9oYXNodGFiLmM6MjU5NzpcdC5tYXBfY2hlY2tfYnRmID0gaHRhYl9tYXBfY2hlY2tfYnRmLFxua2VybmVsL2JwZi9oYXNodGFiLmMtMjU5OC1cdC5tYXBfbWVtX3VzYWdlID0gaHRhYl9tYXBfbWVtX3VzYWdlLFxuLS1cbmtlcm5lbC9icGYvaGFzaHRhYi5jPTI3Mjk9Y29uc3Qgc3RydWN0IGJwZl9tYXBfb3BzIGh0YWJfb2ZfbWFwc19tYXBfb3BzID0ge1xuLS1cbmtlcm5lbC9icGYvaGFzaHRhYi5jLTI3MzktXHQubWFwX2dlbl9sb29rdXAgPSBodGFiX29mX21hcF9nZW5fbG9va3VwLFxua2VybmVsL2JwZi9oYXNodGFiLmM6Mjc0MDpcdC5tYXBfY2hlY2tfYnRmID0gbWFwX2NoZWNrX25vX2J0Zixcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTI3NDEtXHQubWFwX21lbV91c2FnZSA9IGh0YWJfbWFwX21lbV91c2FnZSxcbi0tXG5rZXJuZWwvYnBmL2hhc2h0YWIuYz0zMDk0PXN0YXRpYyBpbnQgcmh0YWJfbWFwX2dlbl9sb29rdXAoc3RydWN0IGJwZl9tYXAgKm1hcCwgc3RydWN0IGJwZl9pbnNuICppbnNuX2J1Zilcbi0tXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0zMTA4LVxua2VybmVsL2JwZi9oYXNodGFiLmM6MzEwOTpzdGF0aWMgaW50IHJodGFiX21hcF9jaGVja19idGYoc3RydWN0IGJwZl9tYXAgKm1hcCwgY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLFxua2VybmVsL2JwZi9oYXNodGFiLmMtMzExMC1cdFx0XHQgICAgICAgY29uc3Qgc3RydWN0IGJ0Zl90eXBlICprZXlfdHlwZSxcbi0tXG5rZXJuZWwvYnBmL2hhc2h0YWIuYz0zNTE1PWNvbnN0IHN0cnVjdCBicGZfbWFwX29wcyByaHRhYl9tYXBfb3BzID0ge1xuLS1cbmtlcm5lbC9icGYvaGFzaHRhYi5jLTM1MjEtXHQubWFwX3JlbGVhc2VfdXJlZiA9IHJodGFiX21hcF9mcmVlX2ludGVybmFsX3N0cnVjdHMsXG5rZXJuZWwvYnBmL2hhc2h0YWIuYzozNTIyOlx0Lm1hcF9jaGVja19idGYgPSByaHRhYl9tYXBfY2hlY2tfYnRmLFxua2VybmVsL2JwZi9oYXNodGFiLmMtMzUyMy1cdC5tYXBfbG9va3VwX2VsZW0gPSByaHRhYl9tYXBfbG9va3VwX2VsZW0sXG4tLVxua2VybmVsL2JwZi9sb2NhbF9zdG9yYWdlLmM9NDYxPWNvbnN0IHN0cnVjdCBicGZfbWFwX29wcyBjZ3JvdXBfc3RvcmFnZV9tYXBfb3BzID0ge1xuLS1cbmtlcm5lbC9icGYvbG9jYWxfc3RvcmFnZS5jLTQ2Ny1cdC5tYXBfZGVsZXRlX2VsZW0gPSBjZ3JvdXBfc3RvcmFnZV9kZWxldGVfZWxlbSxcbmtlcm5lbC9icGYvbG9jYWxfc3RvcmFnZS5jOjQ2ODpcdC5tYXBfY2hlY2tfYnRmID0gY2dyb3VwX3N0b3JhZ2VfY2hlY2tfYnRmLFxua2VybmVsL2JwZi9sb2NhbF9zdG9yYWdlLmMtNDY5LVx0Lm1hcF9zZXFfc2hvd19lbGVtID0gY2dyb3VwX3N0b3JhZ2Vfc2VxX3Nob3dfZWxlbSxcbi0tXG5rZXJuZWwvYnBmL2xwbV90cmllLmM9Nzc1PWNvbnN0IHN0cnVjdCBicGZfbWFwX29wcyB0cmllX21hcF9vcHMgPSB7XG4tLVxua2VybmVsL2JwZi9scG1fdHJpZS5jLTc4NS1cdC5tYXBfZGVsZXRlX2JhdGNoID0gZ2VuZXJpY19tYXBfZGVsZXRlX2JhdGNoLFxua2VybmVsL2JwZi9scG1fdHJpZS5jOjc4NjpcdC5tYXBfY2hlY2tfYnRmID0gdHJpZV9jaGVja19idGYsXG5rZXJuZWwvYnBmL2xwbV90cmllLmMtNzg3LVx0Lm1hcF9tZW1fdXNhZ2UgPSB0cmllX21lbV91c2FnZSxcbi0tXG5rZXJuZWwvYnBmL3N0YWNrbWFwLmM9MTAzOD1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgc3RhY2tfdHJhY2VfbWFwX29wcyA9IHtcbi0tXG5rZXJuZWwvYnBmL3N0YWNrbWFwLmMtMTA0Ni1cdC5tYXBfZGVsZXRlX2VsZW0gPSBzdGFja19tYXBfZGVsZXRlX2VsZW0sXG5rZXJuZWwvYnBmL3N0YWNrbWFwLmM6MTA0NzpcdC5tYXBfY2hlY2tfYnRmID0gbWFwX2NoZWNrX25vX2J0Zixcbmtlcm5lbC9icGYvc3RhY2ttYXAuYy0xMDQ4LVx0Lm1hcF9tZW1fdXNhZ2UgPSBzdGFja19tYXBfbWVtX3VzYWdlLFxuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jPTExND1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgYnBmX21hcF9vZmZsb2FkX29wcyA9IHtcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xMTctXHQubWFwX2ZyZWUgPSBicGZfbWFwX29mZmxvYWRfbWFwX2ZyZWUsXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzoxMTg6XHQubWFwX2NoZWNrX2J0ZiA9IG1hcF9jaGVja19ub19idGYsXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xMTktXHQubWFwX21lbV91c2FnZSA9IGJwZl9tYXBfb2ZmbG9hZF9tYXBfbWVtX3VzYWdlLFxuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jPTEyMzU9aW50IG1hcF9jaGVja19ub19idGYoc3RydWN0IGJwZl9tYXAgKm1hcCxcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xMjQyLVxua2VybmVsL2JwZi9zeXNjYWxsLmM6MTI0MzpzdGF0aWMgaW50IG1hcF9jaGVja19idGYoc3RydWN0IGJwZl9tYXAgKm1hcCwgc3RydWN0IGJwZl90b2tlbiAqdG9rZW4sXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xMjQ0LVx0XHRcdCBjb25zdCBzdHJ1Y3QgYnRmICpidGYsIHUzMiBidGZfa2V5X2lkLCB1MzIgYnRmX3ZhbHVlX2lkKVxuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jLTEyNTYtXHRcdGtleV90eXBlID0gYnRmX3R5cGVfYnlfaWQoYnRmLCAwKTtcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjEyNTc6XHRcdGlmICghbWFwLVx1MDAzZW9wcy1cdTAwM2VtYXBfY2hlY2tfYnRmKVxua2VybmVsL2JwZi9zeXNjYWxsLmMtMTI1OC1cdFx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xMzU1LVxua2VybmVsL2JwZi9zeXNjYWxsLmM6MTM1NjpcdGlmIChtYXAtXHUwMDNlb3BzLVx1MDAzZW1hcF9jaGVja19idGYpIHtcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjEzNTc6XHRcdHJldCA9IG1hcC1cdTAwM2VvcHMtXHUwMDNlbWFwX2NoZWNrX2J0ZihtYXAsIGJ0Ziwga2V5X3R5cGUsIHZhbHVlX3R5cGUpO1xua2VybmVsL2JwZi9zeXNjYWxsLmMtMTM1OC1cdFx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz0xMzcwPXN0YXRpYyBpbnQgbWFwX2NyZWF0ZV9hbGxvYyh1bmlvbiBicGZfYXR0ciAqYXR0ciwgYnBmcHRyX3QgdWF0dHIsIHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csXG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmMtMTU2OS1cdFx0aWYgKGF0dHItXHUwMDNlYnRmX3ZhbHVlX3R5cGVfaWQpIHtcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjE1NzA6XHRcdFx0ZXJyID0gbWFwX2NoZWNrX2J0ZihtYXAsIHRva2VuLCBidGYsIGF0dHItXHUwMDNlYnRmX2tleV90eXBlX2lkLFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMTU3MS1cdFx0XHRcdFx0ICAgIGF0dHItXHUwMDNlYnRmX3ZhbHVlX3R5cGVfaWQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAxNTowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjEzNQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDEwMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgQlBGIEJURiBTeW1ib2wgUmVmZXJlbmNlcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgQlBGIGFuZCB0aGlua2luZyBhYm91dCBob3cgdGhlc2UgQlRGIHN0cnVjdHVyZXMgYXJlIHBhcnNlZC4gSSBzZWUgYG1hcF9jaGVja19idGZgIGlzIGRlZmluZWQgYXMgc3RhdGljIHdpdGhpbiBga2VybmVsL2JwZi9zeXNjYWxsLmNgLCBzbyBpdCYjMzk7cyBwcm9iYWJseSBub3QgdGhlIGNvcmUgZnVuY3Rpb24gSSYjMzk7bSBhZnRlci4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBkaWcgaW50byBgYnRmX3BhcnNlX2ZpZWxkc2AsIHNpbmNlIGl0JiMzOTtzIGEgZ2xvYmFsIGZ1bmN0aW9uIGluIGBrZXJuZWwvYnBmL2J0Zi5jYCwgYW5kIHRoYXQgc2VlbXMgbGlrZSBhIGxvZ2ljYWwgZW50cnkgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBCVEYgc3RydWN0dXJlcyBhcmUgaGFuZGxlZC4gSG93ZXZlciwgd2FpdCwgbGV0JiMzOTtzIGFsc28gZ2l2ZSBzb21lIGF0dGVudGlvbiB0byBgYnRmX3BhcnNlX3N0cnVjdF9tZXRhc2AuIFRoYXQgbG9va3MgbGlrZSBhbm90aGVyIHZpYWJsZSBmdW5jdGlvbiBmb3IgcGFyc2luZyBCVEYgc3RydWN0IG1ldGFkYXRhLCBhbmQgaXQgbWlnaHQgYmUgYSBtb3JlIGltcG9ydGFudCBwYXJ0IG9mIHRoZSBwdXp6bGUuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBjbG9zZWx5IGF0IGJvdGggbm93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAxNTowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtidGZfcGFyc2Vfc3RydWN0X21ldGFzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9idGYuYz01Nzc5PXN0YXRpYyBzdHJ1Y3QgYnRmX3N0cnVjdF9tZXRhcyAqXG5rZXJuZWwvYnBmL2J0Zi5jOjU3ODA6YnRmX3BhcnNlX3N0cnVjdF9tZXRhcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLCBzdHJ1Y3QgYnRmICpidGYpXG5rZXJuZWwvYnBmL2J0Zi5jLTU3ODEte1xuLS1cbmtlcm5lbC9icGYvYnRmLmM9NTk1MD1zdGF0aWMgc3RydWN0IGJ0ZiAqYnRmX3BhcnNlKGNvbnN0IHVuaW9uIGJwZl9hdHRyICphdHRyLCBicGZwdHJfdCB1YXR0cixcbi0tXG5rZXJuZWwvYnBmL2J0Zi5jLTYwMTctXG5rZXJuZWwvYnBmL2J0Zi5jOjYwMTg6XHRzdHJ1Y3RfbWV0YV90YWIgPSBidGZfcGFyc2Vfc3RydWN0X21ldGFzKFx1MDAyNmVudi1cdTAwM2Vsb2csIGJ0Zik7XG5rZXJuZWwvYnBmL2J0Zi5jLTYwMTktXHRpZiAoSVNfRVJSKHN0cnVjdF9tZXRhX3RhYikpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMTU6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI2ODEKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAxMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBCVEYgUGFyc2luZyBMYW5kc2NhcGUqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIEJURiBwYXJzaW5nIGZ1bmN0aW9ucy4gYGJ0Zl9wYXJzZV9zdHJ1Y3RfbWV0YXNgIGlzIGRlZmluZWQgYXMgYHN0YXRpY2AsIHdoaWNoIG1lYW5zIGl0JiMzOTtzIGludGVybmFsIHRvIGl0cyBjb21waWxhdGlvbiB1bml0LiBUaGF0IG1ha2VzIGl0IGEgbm9uLXN0YXJ0ZXIgZm9yIG15IHB1cnBvc2VzLiBJIG5lZWQgc29tZXRoaW5nIGFjY2Vzc2libGUsIGFuZCBJIG5lZWQgc29tZXRoaW5nIHRoYXQgZGlyZWN0bHkgY2FsbHMgaW50byB0aGUgZnVuY3Rpb25zIEkmIzM5O20gaW50ZXJlc3RlZCBpbiBtb2RpZnlpbmcuCgpgYnRmX3BhcnNlX2ZpZWxkc2AgbG9va3MgbGlrZSB0aGUgbW9zdCBwcm9taXNpbmcgY2FuZGlkYXRlIGluaXRpYWxseS4gSXQmIzM5O3MgZ2xvYmFsLCBhbmQgc2VlbXMgdG8gYmUgYSBkaXJlY3QgY2FsbGVyLiBCdXQgd2FpdC4uLiBvbiBjbG9zZXIgaW5zcGVjdGlvbiwgaXQgbG9va3MgbGlrZSBgYnRmX3BhcnNlX2ZpZWxkc2AgaXMgYWxzbyBub3QgZXhwb3J0ZWQsIGFuZCBpcyBsb2NhbC4gU3RpbGwsIHRoZSBiZWF1dHkgaXMgdGhhdCBzeXprYWxsZXIgY2FuIHRhcmdldCBhbnkgZ2xvYmFsIGZ1bmN0aW9uLCBleHBvcnRlZCBvciBub3QsIHNvIHRoYXQmIzM5O3Mgc29tZXRoaW5nIEkgY2FuIHVzZS4KCkhtbSwgd2hhdCBhYm91dCBgYnRmX3BhcnNlYD8gTm9wZSwgdGhhdCYjMzk7cyBhbHNvIHN0YXRpYywgc28gaXQmIzM5O3Mgb3V0LiBPa2F5LCBsZXQmIzM5O3MgYWxzbyB0YWtlIGEgcXVpY2sgbG9vayBhdCBgYnRmX25ld19mZGAsIGp1c3QgaW4gY2FzZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAxNTowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtidGZfbmV3X2ZkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9idGYuYz04MzE3PWNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgYnRmX2ZvcHMgPSB7XG4tLVxua2VybmVsL2JwZi9idGYuYy04MzIzLVxua2VybmVsL2JwZi9idGYuYzo4MzI0OnN0YXRpYyBpbnQgX19idGZfbmV3X2ZkKHN0cnVjdCBidGYgKmJ0Zilcbmtlcm5lbC9icGYvYnRmLmMtODMyNS17XG4tLVxua2VybmVsL2JwZi9idGYuYy04MzI4LVxua2VybmVsL2JwZi9idGYuYzo4MzI5OmludCBidGZfbmV3X2ZkKGNvbnN0IHVuaW9uIGJwZl9hdHRyICphdHRyLCBicGZwdHJfdCB1YXR0ciwgc3RydWN0IGJwZl9sb2dfYXR0ciAqYXR0cl9sb2cpXG5rZXJuZWwvYnBmL2J0Zi5jLTgzMzAte1xuLS1cbmtlcm5lbC9icGYvYnRmLmMtODM0OS1cbmtlcm5lbC9icGYvYnRmLmM6ODM1MDpcdHJldCA9IF9fYnRmX25ld19mZChidGYpO1xua2VybmVsL2JwZi9idGYuYy04MzUxLVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5rZXJuZWwvYnBmL2J0Zi5jPTg0Mjk9aW50IGJ0Zl9nZXRfZmRfYnlfaWQodTMyIGlkKVxuLS1cbmtlcm5lbC9icGYvYnRmLmMtODQ0Mi1cbmtlcm5lbC9icGYvYnRmLmM6ODQ0MzpcdGZkID0gX19idGZfbmV3X2ZkKGJ0Zik7XG5rZXJuZWwvYnBmL2J0Zi5jLTg0NDQtXHRpZiAoZmQgXHUwMDNjIDApXG4tLVxua2VybmVsL2JwZi9idGYuYz04NjgxPUJQRl9DQUxMXzQoYnBmX2J0Zl9maW5kX2J5X25hbWVfa2luZCwgY2hhciAqLCBuYW1lLCBpbnQsIG5hbWVfc3osIHUzMiwga2luZCwgaW50LCBmbGFncylcbi0tXG5rZXJuZWwvYnBmL2J0Zi5jLTg2OTQtXHRpZiAocmV0IFx1MDAzZSAwIFx1MDAyNlx1MDAyNiBidGZfaXNfbW9kdWxlKGJ0ZikpIHtcbmtlcm5lbC9icGYvYnRmLmM6ODY5NTpcdFx0YnRmX29ial9mZCA9IF9fYnRmX25ld19mZChidGYpO1xua2VybmVsL2JwZi9idGYuYy04Njk2LVx0XHRpZiAoYnRmX29ial9mZCBcdTAwM2MgMCkge1xuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jPTU1MzY9c3RhdGljIGludCBicGZfYnRmX2xvYWQoY29uc3QgdW5pb24gYnBmX2F0dHIgKmF0dHIsIGJwZnB0cl90IHVhdHRyLCBzdHJ1Y3QgYnBmX2xvZ19hdHRyICphdHRyX2xvZylcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy01NTYyLVxua2VybmVsL2JwZi9zeXNjYWxsLmM6NTU2MzpcdHJldHVybiBidGZfbmV3X2ZkKGF0dHIsIHVhdHRyLCBhdHRyX2xvZyk7XG5rZXJuZWwvYnBmL3N5c2NhbGwuYy01NTY0LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMTU6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM2OTkKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA1NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byBCVEYgRmllbGQgUGFyc2luZyoqCgpSaWdodCwgYGJ0Zl9wYXJzZV9maWVsZHNgIC0gdGhhdCYjMzk7cyB3aGVyZSB0aGUgcnViYmVyIG1lZXRzIHRoZSByb2FkLCB0aGUgY29yZSBvZiB0aGlzIG9wZXJhdGlvbi4gQmVmb3JlIEkgZGlnIHRvbyBkZWVwLCBsZXQmIzM5O3MgcXVpY2tseSBjb25maXJtIHdoZXRoZXIgdGhlIHN5c3RlbSYjMzk7cyBldmVuIGNvbmZpZ3VyZWQgdG8gaGFuZGxlIHRoaXMuIEl0IGxvb2tzIGxpa2UgQlBGIGl0c2VsZiBpcyB0aWVkIHRvIGBDT05GSUdfQlBGX1NZU0NBTExgLCBzbyBsZXQmIzM5O3MgY2hlY2sgdGhhdC4gSSBzaG91bGQgYWxzbyB0YWtlIGEgcGVlayBhcm91bmQgdG8gc2VlIGlmIHRoZXJlIGFyZSAqb3RoZXIqIGNvbmZpZ3VyYXRpb25zIHRoYXQgbWlnaHQgaW1wYWN0IGhvdyBgYnRmX3BhcnNlX2ZpZWxkc2AgZnVuY3Rpb25zLiBJIHdhbnQgdG8gbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55IHBpZWNlcyBvZiB0aGUgcHV6emxlIHRoYXQgbWlnaHQgaW5mbHVlbmNlIG15IGFuYWx5c2lzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAxNTowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfQlBGJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9LY29uZmlnPTU4PWNvbmZpZyBCUEZfSklUX0FMV0FZU19PTlxuLS1cbmtlcm5lbC9icGYvS2NvbmZpZy02NC1cbmtlcm5lbC9icGYvS2NvbmZpZzo2NTpcdCAgV2hlbiBDT05GSUdfQlBGX0pJVF9BTFdBWVNfT04gaXMgZW5hYmxlZCwgL3Byb2Mvc3lzL25ldC9jb3JlL2JwZl9qaXRfZW5hYmxlXG5rZXJuZWwvYnBmL0tjb25maWctNjYtXHQgIGlzIHBlcm1hbmVudGx5IHNldCB0byAxIGFuZCBzZXR0aW5nIGFueSBvdGhlciB2YWx1ZSB0aGFuIHRoYXQgd2lsbFxuLS1cbmtlcm5lbC9icGYvTWFrZWZpbGU9Mj1vYmoteSA6PSBjb3JlLm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6MzppZm5lcSAoJChDT05GSUdfQlBGX0pJVF9BTFdBWVNfT04pLHkpXG5rZXJuZWwvYnBmL01ha2VmaWxlLTQtIyBfX19icGZfcHJvZ19ydW4oKSBuZWVkcyBHQ1NFIGRpc2FibGVkIG9uIHg4Njsgc2VlIDMxOTNjMDgzNmYyMDMgZm9yIGRldGFpbHNcbi0tXG5rZXJuZWwvYnBmL01ha2VmaWxlPTc9Q0ZMQUdTX2NvcmUubyAmIzQzOz0gLVduby1vdmVycmlkZS1pbml0ICQoY2ZsYWdzLW5vZ2NzZS15eSlcbmtlcm5lbC9icGYvTWFrZWZpbGUtOC1cbmtlcm5lbC9icGYvTWFrZWZpbGU6OTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBzeXNjYWxsLm8gdmVyaWZpZXIubyBpbm9kZS5vIGhlbHBlcnMubyB0bnVtLm8gY251bS5vIGxvZy5vIHRva2VuLm8gbGl2ZW5lc3MubyBjb25zdF9mb2xkLm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6MTA6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gYnBmX2l0ZXIubyBtYXBfaXRlci5vIHRhc2tfaXRlci5vIHByb2dfaXRlci5vIGxpbmtfaXRlci5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjExOm9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGhhc2h0YWIubyBhcnJheW1hcC5vIHBlcmNwdV9mcmVlbGlzdC5vIGJwZl9scnVfbGlzdC5vIGxwbV90cmllLm8gbWFwX2luX21hcC5vIGJsb29tX2ZpbHRlci5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjEyOm9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGxvY2FsX3N0b3JhZ2UubyBxdWV1ZV9zdGFja19tYXBzLm8gcmluZ2J1Zi5vIGJwZl9pbnNuX2FycmF5Lm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6MTM6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gYnBmX2xvY2FsX3N0b3JhZ2UubyBicGZfdGFza19zdG9yYWdlLm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6MTQ6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gZml4dXBzLm8gY2ZnLm8gc3RhdGVzLm8gYmFja3RyYWNrLm8gY2hlY2tfYnRmLm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6MTU6b2JqLSR7Q09ORklHX0JQRl9MU019XHQgICYjNDM7PSBicGZfaW5vZGVfc3RvcmFnZS5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjE2Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGRpc2FzbS5vIG1wcm9nLm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6MTc6b2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSB0cmFtcG9saW5lLm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6MTg6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gYnRmLm8gbWVtYWxsb2MubyBycXNwaW5sb2NrLm8gc3RyZWFtLm9cbmtlcm5lbC9icGYvTWFrZWZpbGUtMTktaWZlcSAoJChDT05GSUdfTU1VKSQoQ09ORklHXzY0QklUKSx5eSlcbmtlcm5lbC9icGYvTWFrZWZpbGU6MjA6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gYXJlbmEubyByYW5nZV90cmVlLm9cbmtlcm5lbC9icGYvTWFrZWZpbGUtMjEtZW5kaWZcbmtlcm5lbC9icGYvTWFrZWZpbGU6MjI6b2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSBkaXNwYXRjaGVyLm9cbmtlcm5lbC9icGYvTWFrZWZpbGUtMjMtaWZlcSAoJChDT05GSUdfTkVUKSx5KVxua2VybmVsL2JwZi9NYWtlZmlsZToyNDpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBkZXZtYXAub1xua2VybmVsL2JwZi9NYWtlZmlsZToyNTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBjcHVtYXAub1xua2VybmVsL2JwZi9NYWtlZmlsZToyNjpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBvZmZsb2FkLm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6Mjc6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gbmV0X25hbWVzcGFjZS5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjI4Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IHRjeC5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTI5LWVuZGlmXG5rZXJuZWwvYnBmL01ha2VmaWxlPTMwPWlmZXEgKCQoQ09ORklHX1BFUkZfRVZFTlRTKSx5KVxua2VybmVsL2JwZi9NYWtlZmlsZTozMTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBzdGFja21hcC5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTMyLWVuZGlmXG5rZXJuZWwvYnBmL01ha2VmaWxlPTMzPWlmZXEgKCQoQ09ORklHX0NHUk9VUFMpLHkpXG5rZXJuZWwvYnBmL01ha2VmaWxlOjM0Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGNncm91cF9pdGVyLm8gYnBmX2NncnBfc3RvcmFnZS5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTM1LWVuZGlmXG4tLVxua2VybmVsL2JwZi9NYWtlZmlsZT0zNz1pZmVxICgkKENPTkZJR19JTkVUKSx5KVxua2VybmVsL2JwZi9NYWtlZmlsZTozODpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSByZXVzZXBvcnRfYXJyYXkub1xua2VybmVsL2JwZi9NYWtlZmlsZS0zOS1lbmRpZlxuLS1cbmtlcm5lbC9icGYvTWFrZWZpbGU9NDI9ZW5kaWZcbmtlcm5lbC9icGYvTWFrZWZpbGU6NDM6aWZlcSAoJChDT05GSUdfQlBGX0pJVCkseSlcbmtlcm5lbC9icGYvTWFrZWZpbGU6NDQ6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gYnBmX3N0cnVjdF9vcHMub1xua2VybmVsL2JwZi9NYWtlZmlsZTo0NTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBjcHVtYXNrLm9cbmtlcm5lbC9icGYvTWFrZWZpbGUtNDYtIyBicGZfbHNtX3Byb3RvLm8gbXVzdCBwcmVjZWRlIGJwZl9sc20uby4gVGhlIGN1cnJlbnQgcGFob2xlIGxvZ2ljXG4tLVxua2VybmVsL2JwZi9NYWtlZmlsZS01NS0jIHNlbWFudGljcyB3aXRoaW4gcGFob2xlIGFyZSByZXZpc2l0ZWQgYWNjb3JkaW5nbHkuXG5rZXJuZWwvYnBmL01ha2VmaWxlOjU2Om9iai0ke0NPTkZJR19CUEZfTFNNfSAmIzQzOz0gYnBmX2xzbV9wcm90by5vIGJwZl9sc20ub1xua2VybmVsL2JwZi9NYWtlZmlsZS01Ny1lbmRpZlxua2VybmVsL2JwZi9NYWtlZmlsZT01OD1pZm5lcSAoJChDT05GSUdfQ1JZUFRPKSwpXG5rZXJuZWwvYnBmL01ha2VmaWxlOjU5Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGNyeXB0by5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTYwLWVuZGlmXG5rZXJuZWwvYnBmL01ha2VmaWxlOjYxOm9iai0kKENPTkZJR19CUEZfUFJFTE9BRCkgJiM0Mzs9IHByZWxvYWQvXG5rZXJuZWwvYnBmL01ha2VmaWxlLTYyLVxua2VybmVsL2JwZi9NYWtlZmlsZTo2MzpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSByZWxvX2NvcmUub1xua2VybmVsL2JwZi9NYWtlZmlsZTo2NDpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBidGZfaXRlci5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjY1Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGJ0Zl9yZWxvY2F0ZS5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjY2Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGttZW1fY2FjaGVfaXRlci5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTY3LWlmZXEgKCQoQ09ORklHX0RNQV9TSEFSRURfQlVGRkVSKSx5KVxua2VybmVsL2JwZi9NYWtlZmlsZTo2ODpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBkbWFidWZfaXRlci5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTY5LWVuZGlmXG4tLVxua2VybmVsL2JwZi9idGYuYz05ODE0PWJvb2wgYnRmX3R5cGVfaWRzX25vY2FzdF9hbGlhcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxuLS1cbmtlcm5lbC9icGYvYnRmLmMtOTg2OC1cbmtlcm5lbC9icGYvYnRmLmM6OTg2OTojaWZkZWYgQ09ORklHX0JQRl9KSVRcbmtlcm5lbC9icGYvYnRmLmMtOTg3MC1zdGF0aWMgaW50XG4tLVxua2VybmVsL2JwZi9jZ3JvdXAuYz01Mj12b2lkIF9faW5pdCBjZ3JvdXBfYnBmX2xpZmV0aW1lX25vdGlmaWVyX2luaXQodm9pZClcbi0tXG5rZXJuZWwvYnBmL2Nncm91cC5jLTU3LVxua2VybmVsL2JwZi9jZ3JvdXAuYzo1ODojaWZkZWYgQ09ORklHX0JQRl9MU01cbmtlcm5lbC9icGYvY2dyb3VwLmMtNTktc3RydWN0IGNncm91cF9sc21fYXR5cGUge1xuLS1cbmtlcm5lbC9icGYvY2dyb3VwLmM9MTYyPXVuc2lnbmVkIGludCBfX2Nncm91cF9icGZfcnVuX2xzbV9jdXJyZW50KGNvbnN0IHZvaWQgKmN0eCxcbi0tXG5rZXJuZWwvYnBmL2Nncm91cC5jLTE4MC1cbmtlcm5lbC9icGYvY2dyb3VwLmM6MTgxOiNpZmRlZiBDT05GSUdfQlBGX0xTTVxua2VybmVsL2JwZi9jZ3JvdXAuYy0xODItc3RhdGljIGVudW0gY2dyb3VwX2JwZl9hdHRhY2hfdHlwZVxuLS1cbmtlcm5lbC9icGYvY2dyb3VwLmM9MjM0PWJwZl9jZ3JvdXBfYXR5cGVfZmluZChlbnVtIGJwZl9hdHRhY2hfdHlwZSBhdHRhY2hfdHlwZSwgdTMyIGF0dGFjaF9idGZfaWQpXG4tLVxua2VybmVsL2JwZi9jZ3JvdXAuYy0yMzktfVxua2VybmVsL2JwZi9jZ3JvdXAuYzoyNDA6I2VuZGlmIC8qIENPTkZJR19CUEZfTFNNICovXG5rZXJuZWwvYnBmL2Nncm91cC5jLTI0MS1cbi0tXG5rZXJuZWwvYnBmL2NvcmUuYz0xMDA9c3RydWN0IGJwZl9wcm9nICpicGZfcHJvZ19hbGxvY19ub19zdGF0cyh1bnNpZ25lZCBpbnQgc2l6ZSwgZ2ZwX3QgZ2ZwX2V4dHJhX2ZsYWdzKVxuLS1cbmtlcm5lbC9icGYvY29yZS5jLTEyOC1cdGZwLVx1MDAzZWppdF9yZXF1ZXN0ZWQgPSBlYnBmX2ppdF9lbmFibGVkKCk7XG5rZXJuZWwvYnBmL2NvcmUuYzoxMjk6XHRmcC1cdTAwM2VqaXRfcmVxdWlyZWQgPSBJU19FTkFCTEVEKENPTkZJR19CUEZfSklUX0FMV0FZU19PTik7XG5rZXJuZWwvYnBmL2NvcmUuYy0xMzAtXHRmcC1cdTAwM2VibGluZGluZ19yZXF1ZXN0ZWQgPSBicGZfaml0X2JsaW5kaW5nX2VuYWJsZWQoZnApO1xuLS1cbmtlcm5lbC9icGYvY29yZS5jLTE0My1cbmtlcm5lbC9icGYvY29yZS5jOjE0NDojaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXG5rZXJuZWwvYnBmL2NvcmUuYy0xNDUtXHRicGZfcHJvZ19zdHJlYW1faW5pdChmcCk7XG4tLVxua2VybmVsL2JwZi9jb3JlLmM9NTQxPXZvaWQgYnBmX3Byb2dfa2FsbHN5bXNfZGVsX2FsbChzdHJ1Y3QgYnBmX3Byb2cgKmZwKVxuLS1cbmtlcm5lbC9icGYvY29yZS5jLTU0Ni1cbmtlcm5lbC9icGYvY29yZS5jOjU0NzojaWZkZWYgQ09ORklHX0JQRl9KSVRcbmtlcm5lbC9icGYvY29yZS5jLTU0OC0vKiBBbGwgQlBGIEpJVCBzeXNjdGwga25vYnMgaGVyZS4gKi9cbmtlcm5lbC9icGYvY29yZS5jOjU0OTppbnQgYnBmX2ppdF9lbmFibGUgICBfX3JlYWRfbW9zdGx5ID0gSVNfQlVJTFRJTihDT05GSUdfQlBGX0pJVF9ERUZBVUxUX09OKTtcbmtlcm5lbC9icGYvY29yZS5jOjU1MDppbnQgYnBmX2ppdF9rYWxsc3ltcyBfX3JlYWRfbW9zdGx5ID0gSVNfQlVJTFRJTihDT05GSUdfQlBGX0pJVF9ERUZBVUxUX09OKTtcbmtlcm5lbC9icGYvY29yZS5jLTU1MS1pbnQgYnBmX2ppdF9oYXJkZW4gICBfX3JlYWRfbW9zdGx5O1xuLS1cbmtlcm5lbC9icGYvY29yZS5jPTE2NDM9dTE2IGJwZl9vdXRfc3RhY2tfYXJnX2NudChjb25zdCBzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXG4tLVxua2VybmVsL2JwZi9jb3JlLmMtMTY1MS19XG5rZXJuZWwvYnBmL2NvcmUuYzoxNjUyOiNlbmRpZiAvKiBDT05GSUdfQlBGX0pJVCAqL1xua2VybmVsL2JwZi9jb3JlLmMtMTY1My1cbi0tXG5rZXJuZWwvYnBmL2NvcmUuYz0xODExPWJvb2wgYnBmX29wY29kZV9pbl9pbnNudGFibGUodTggY29kZSlcbi0tXG5rZXJuZWwvYnBmL2NvcmUuYy0xODMzLVxua2VybmVsL2JwZi9jb3JlLmM6MTgzNDojaWZuZGVmIENPTkZJR19CUEZfSklUX0FMV0FZU19PTlxua2VybmVsL2JwZi9jb3JlLmMtMTgzNS0vKiBBYnNvbHV0ZSB2YWx1ZSBvZiBzMzIgd2l0aG91dCB1bmRlZmluZWQgYmVoYXZpb3IgZm9yIFMzMl9NSU4gKi9cbi0tXG5rZXJuZWwvYnBmL2NvcmUuYz0yNDYxPUVWQUw0KFBST0dfTkFNRV9MSVNULCA0MTYsIDQ0OCwgNDgwLCA1MTIpXG4tLVxua2VybmVsL2JwZi9jb3JlLmMtMjQ2NC1cbmtlcm5lbC9icGYvY29yZS5jOjI0NjU6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxua2VybmVsL2JwZi9jb3JlLmMtMjQ2Ni1pbnQgYnBmX3BhdGNoX2NhbGxfYXJncyhzdHJ1Y3QgYnBmX2luc24gKmluc24sIHUzMiBzdGFja19kZXB0aClcbi0tXG5rZXJuZWwvYnBmL2NvcmUuYz0yNTk4PXN0YXRpYyBib29sIGJwZl9wcm9nX3NlbGVjdF9pbnRlcnByZXRlcihzdHJ1Y3QgYnBmX3Byb2cgKmZwKVxuLS1cbmtlcm5lbC9icGYvY29yZS5jLTI2MDAtXHRib29sIHNlbGVjdF9pbnRlcnByZXRlciA9IGZhbHNlO1xua2VybmVsL2JwZi9jb3JlLmM6MjYwMTojaWZuZGVmIENPTkZJR19CUEZfSklUX0FMV0FZU19PTlxua2VybmVsL2JwZi9jb3JlLmMtMjYwMi1cdHUzMiBzdGFja19kZXB0aCA9IG1heF90KHUzMiwgZnAtXHUwMDNlYXV4LVx1MDAzZXN0YWNrX2RlcHRoLCAxKTtcbi0tXG5rZXJuZWwvYnBmL2NvcmUuYz0yNjIxPXN0YXRpYyBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9wcm9nX2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZylcbmtlcm5lbC9icGYvY29yZS5jLTI2MjIte1xua2VybmVsL2JwZi9jb3JlLmM6MjYyMzojaWZkZWYgQ09ORklHX0JQRl9KSVRcbmtlcm5lbC9icGYvY29yZS5jLTI2MjQtXHRzdHJ1Y3QgYnBmX3Byb2cgKm9yaWdfcHJvZztcbi0tXG5rZXJuZWwvYnBmL2NvcmUuYz0zMDQ1PXZvaWQgX19icGZfZnJlZV91c2VkX2J0ZnMoc3RydWN0IGJ0Zl9tb2RfcGFpciAqdXNlZF9idGZzLCB1MzIgbGVuKVxua2VybmVsL2JwZi9jb3JlLmMtMzA0Ni17XG5rZXJuZWwvYnBmL2NvcmUuYzozMDQ3OiNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcbmtlcm5lbC9icGYvY29yZS5jLTMwNDgtXHRzdHJ1Y3QgYnRmX21vZF9wYWlyICpidGZfbW9kO1xuLS1cbmtlcm5lbC9icGYvY29yZS5jPTMwNjY9c3RhdGljIHZvaWQgYnBmX3Byb2dfZnJlZV9kZWZlcnJlZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxua2VybmVsL2JwZi9jb3JlLmMtMzA3MS1cdGF1eCA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgYnBmX3Byb2dfYXV4LCB3b3JrKTtcbmtlcm5lbC9icGYvY29yZS5jOjMwNzI6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxua2VybmVsL2JwZi9jb3JlLmMtMzA3My1cdGJwZl9mcmVlX2tmdW5jX2J0Zl90YWIoYXV4LVx1MDAzZWtmdW5jX2J0Zl90YWIpO1xuLS1cbmtlcm5lbC9icGYvY29yZS5jPTMzODg9c3RhdGljIG5vaW5saW5lIHZvaWQgYnBmX3Byb2dfcmVwb3J0X21heV9nb3RvX3Zpb2xhdGlvbih2b2lkKVxua2VybmVsL2JwZi9jb3JlLmMtMzM4OS17XG5rZXJuZWwvYnBmL2NvcmUuYzozMzkwOiNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcbmtlcm5lbC9icGYvY29yZS5jLTMzOTEtXHRzdHJ1Y3QgYnBmX3N0cmVhbV9zdGFnZSBzcztcbi0tXG5rZXJuZWwvYnBmL2NvcmUuYz0zNDI4PV9fd2VhayB1NjQgYnBmX2FyZW5hX2dldF9rZXJuX3ZtX3N0YXJ0KHN0cnVjdCBicGZfYXJlbmEgKmFyZW5hKVxuLS1cbmtlcm5lbC9icGYvY29yZS5jLTM0MzItXG5rZXJuZWwvYnBmL2NvcmUuYzozNDMzOiNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcbmtlcm5lbC9icGYvY29yZS5jLTM0MzQtX193ZWFrIGJvb2wgYnBmX2FyZW5hX2hhbmRsZV9wYWdlX2ZhdWx0KHVuc2lnbmVkIGxvbmcgYWRkciwgYm9vbCBpc193cml0ZSxcbi0tXG5rZXJuZWwvYnBmL2NvcmUuYz0zNDU5PUVYUE9SVF9UUkFDRVBPSU5UX1NZTUJPTF9HUEwoeGRwX2J1bGtfdHgpO1xua2VybmVsL2JwZi9jb3JlLmMtMzQ2MC1cbmtlcm5lbC9icGYvY29yZS5jOjM0NjE6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxua2VybmVsL2JwZi9jb3JlLmMtMzQ2Mi1cbi0tXG5rZXJuZWwvYnBmL2ZpeHVwcy5jPTEyNz1zdGF0aWMgaW50IGFkZF9rZnVuY19pbl9pbnNucyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuLS1cbmtlcm5lbC9icGYvZml4dXBzLmMtMTQxLVxua2VybmVsL2JwZi9maXh1cHMuYzoxNDI6I2lmbmRlZiBDT05GSUdfQlBGX0pJVF9BTFdBWVNfT05cbmtlcm5lbC9icGYvZml4dXBzLmMtMTQzLXN0YXRpYyBpbnQgZ2V0X2NhbGxlZV9zdGFja19kZXB0aChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuLS1cbmtlcm5lbC9icGYvZml4dXBzLmM9MTM3Nj1pbnQgYnBmX2ZpeHVwX2NhbGxfYXJncyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxua2VybmVsL2JwZi9maXh1cHMuYy0xMzc3LXtcbmtlcm5lbC9icGYvZml4dXBzLmM6MTM3ODojaWZuZGVmIENPTkZJR19CUEZfSklUX0FMV0FZU19PTlxua2VybmVsL2JwZi9maXh1cHMuYy0xMzc5LVx0c3RydWN0IGJwZl9wcm9nICpwcm9nID0gZW52LVx1MDAzZXByb2c7XG4tLVxua2VybmVsL2JwZi9maXh1cHMuYy0xNDA0LVx0fVxua2VybmVsL2JwZi9maXh1cHMuYzoxNDA1OiNpZm5kZWYgQ09ORklHX0JQRl9KSVRfQUxXQVlTX09OXG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTE0MDYtXHRpZiAocHJvZy1cdTAwM2VqaXRfcmVxdWlyZWQpIHtcbi0tXG5rZXJuZWwvYnBmL2hlbHBlcnMuYz0yNzY9Y29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9nZXRfY3VycmVudF9jb21tX3Byb3RvID0ge1xuLS1cbmtlcm5lbC9icGYvaGVscGVycy5jLTI4My1cbmtlcm5lbC9icGYvaGVscGVycy5jOjI4NDojaWYgZGVmaW5lZChDT05GSUdfUVVFVUVEX1NQSU5MT0NLUykgfHwgZGVmaW5lZChDT05GSUdfQlBGX0FSQ0hfU1BJTkxPQ0spXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy0yODUtXG4tLVxua2VybmVsL2JwZi9oZWxwZXJzLmM9NDg0OT1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3Rocm93KVxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDg1MDojaWZkZWYgQ09ORklHX0JQRl9FVkVOVFNcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ4NTEtQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zZW5kX3NpZ25hbF90YXNrKVxuLS1cbmtlcm5lbC9icGYvaGVscGVycy5jPTQ5Mjk9QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9sb2NhbF9pcnFfcmVzdG9yZSlcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ5MzA6I2lmZGVmIENPTkZJR19CUEZfRVZFTlRTXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00OTMxLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcHJvYmVfcmVhZF91c2VyX2R5bnB0cilcbi0tXG5rZXJuZWwvYnBmL2hlbHBlcnMuYz00OTYwPUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RybmNhc2VzdHIpO1xua2VybmVsL2JwZi9oZWxwZXJzLmM6NDk2MTojaWYgZGVmaW5lZChDT05GSUdfQlBGX0xTTSkgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX0NHUk9VUFMpXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00OTYyLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfY2dyb3VwX3JlYWRfeGF0dHIsIEtGX1JDVSlcbi0tXG5rZXJuZWwvYnBmL3ByZWxvYWQvTWFrZWZpbGU9Mz1MSUJCUEZfSU5DTFVERSA9ICQoc3JjdHJlZSkvdG9vbHMvbGliXG5rZXJuZWwvYnBmL3ByZWxvYWQvTWFrZWZpbGUtNC1cbmtlcm5lbC9icGYvcHJlbG9hZC9NYWtlZmlsZTo1Om9iai0kKENPTkZJR19CUEZfUFJFTE9BRF9VTUQpICYjNDM7PSBicGZfcHJlbG9hZC5vXG5rZXJuZWwvYnBmL3ByZWxvYWQvTWFrZWZpbGUtNi1DRkxBR1NfYnBmX3ByZWxvYWRfa2Vybi5vICYjNDM7PSAtSSQoTElCQlBGX0lOQ0xVREUpXG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmM9Njg9aW50IHN5c2N0bF91bnByaXZpbGVnZWRfYnBmX2Rpc2FibGVkIF9fcmVhZF9tb3N0bHkgPVxua2VybmVsL2JwZi9zeXNjYWxsLmM6Njk6XHRJU19CVUlMVElOKENPTkZJR19CUEZfVU5QUklWX0RFRkFVTFRfT0ZGKSA/IDIgOiAwO1xua2VybmVsL2JwZi9zeXNjYWxsLmMtNzAtXG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmM9NjQ5OT1pbnQga2Vybl9zeXNfYnBmKGludCBjbWQsIHVuaW9uIGJwZl9hdHRyICphdHRyLCB1bnNpZ25lZCBpbnQgc2l6ZSlcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy02NTA0LVx0c3dpdGNoIChjbWQpIHtcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjY1MDU6I2lmZGVmIENPTkZJR19CUEZfSklUIC8qIF9fYnBmX3Byb2dfZW50ZXJfc2xlZXBhYmxlIHVzZWQgYnkgdHJhbXBvbGluZSBhbmQgSklUICovXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy02NTA2LVx0Y2FzZSBCUEZfUFJPR19URVNUX1JVTjpcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz05ODM9aW50IGJwZl90cmFtcG9saW5lX3VubGlua19wcm9nKHN0cnVjdCBicGZfdHJhbXBfbm9kZSAqbm9kZSxcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy05OTQtXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzo5OTU6I2lmIGRlZmluZWQoQ09ORklHX0NHUk9VUF9CUEYpIFx1MDAyNlx1MDAyNiBkZWZpbmVkKENPTkZJR19CUEZfTFNNKVxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtOTk2LXN0YXRpYyB2b2lkIGJwZl9zaGltX3RyYW1wX2xpbmtfcmVsZWFzZShzdHJ1Y3QgYnBmX2xpbmsgKmxpbmspXG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9MTQ2Nz1pbnQgX193ZWFrIGFyY2hfYnBmX3RyYW1wb2xpbmVfc2l6ZShjb25zdCBzdHJ1Y3QgYnRmX2Z1bmNfbW9kZWwgKm0sIHUzMiBmbGFncyxcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNDc0LSAgICBkZWZpbmVkKENPTkZJR19IQVZFX1NJTkdMRV9GVFJBQ0VfRElSRUNUX09QUykgXHUwMDI2XHUwMDI2IFxcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoxNDc1OiAgICBkZWZpbmVkKENPTkZJR19CUEZfU1lTQ0FMTClcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE0NzYtXG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9MTcxMj1pbnQgYnBmX3RyYW1wb2xpbmVfbXVsdGlfZGV0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgc3RydWN0IGJwZl90cmFjaW5nX211bHRpX2xpbmsgKmxpbmspXG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTc0OC1cdCAgQ09ORklHX0hBVkVfU0lOR0xFX0ZUUkFDRV9ESVJFQ1RfT1BTIFx1MDAyNlx1MDAyNlxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6MTc0OTpcdCAgQ09ORklHX0JQRl9TWVNDQUxMICovXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNzUwLVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz00NDYwPUJURl9JRChzdHJ1Y3QsIGNncm91cClcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy00NDYxLSNlbmRpZlxua2VybmVsL2JwZi92ZXJpZmllci5jOjQ0NjI6I2lmZGVmIENPTkZJR19CUEZfSklUXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNDQ2My1CVEZfSUQoc3RydWN0LCBicGZfY3B1bWFzaylcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTEyMTU9QlRGX0lEX1VOVVNFRFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjE2LSNlbmRpZlxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjE3OiNpZmRlZiBDT05GSUdfQlBGX0VWRU5UU1xua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjE4LUJURl9JRChmdW5jLCBicGZfc2Vzc2lvbl9jb29raWUpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTExMjI3PUJURl9JRChmdW5jLCBicGZfaXRlcl9udW1fZGVzdHJveSlcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTIyODojaWZkZWYgQ09ORklHX0JQRl9MU01cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTIyOS1CVEZfSUQoZnVuYywgYnBmX3NldF9kZW50cnlfeGF0dHIpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTExMjQ2PUJURl9JRChmdW5jLCBicGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcylcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTI0NzojaWZkZWYgQ09ORklHX0JQRl9FVkVOVFNcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTI0OC1CVEZfSUQoZnVuYywgYnBmX3Nlc3Npb25faXNfcmV0dXJuKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAxNTowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTM1NQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gcmVhc29uaW5nOgoKKipCVEYgQ29uZmlndXJhdGlvbiBEZWVwIERpdmUqKgoKQWxyaWdodCwgc28gdGhlIHByaW1hcnkgY29uZmlndXJhdGlvbiBpdGVtIHdlJiMzOTtyZSBjb25jZXJuZWQgd2l0aCBmb3IgQlRGIGlzLCBvZiBjb3Vyc2UsIGBDT05GSUdfQlBGX1NZU0NBTExgLiBUaGF0JiMzOTtzIHRoZSBsaW5jaHBpbiwgdGhlIGJpZyBvbmUuIEJ1dCwga25vd2luZyBob3cgdGhlc2UgdGhpbmdzIHRlbmQgdG8gaW50ZXJ3ZWF2ZSwgSSBuZWVkIHRvIG1ha2UgKmFic29sdXRlbHkqIHN1cmUgd2UgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueSBvdGhlciBjb25maWcgb3B0aW9ucyB0aGF0IG1pZ2h0IHN1YnRseSBpbmZsdWVuY2UgdGhlIGJlaGF2aW9yIG9yIGF2YWlsYWJpbGl0eSBvZiBCVEYgc3VwcG9ydCB3aXRoaW4gdGhlIGtlcm5lbC4gSSBuZWVkIHRvIGRvIGEgdGhvcm91Z2ggY2hlY2sgdG8gYXZvaWQgYW55IHVuZXhwZWN0ZWQgaW50ZXJhY3Rpb25zIG9yIGRlcGVuZGVuY2llcy4gVGltZSB0byBkaWcgZGVlcGVyIGFuZCBzZWUgd2hhdCBlbHNlIGNvdWxkIGJlIGx1cmtpbmcuLi4gSSBuZWVkIHRvIGNvbnNpZGVyIGFsbCBhbmdsZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDE1OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19ERUJVR19JTkZPX0JURiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvTWFrZWZpbGU9NDA9aWZlcSAoJChDT05GSUdfU1lTRlMpLHkpXG5rZXJuZWwvYnBmL01ha2VmaWxlOjQxOm9iai0kKENPTkZJR19ERUJVR19JTkZPX0JURikgJiM0Mzs9IHN5c2ZzX2J0Zi5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTQyLWVuZGlmXG4tLVxua2VybmVsL2JwZi9idGYuYz02Mzg2PXN0YXRpYyBzdHJ1Y3QgYnRmICpidGZfcGFyc2VfYmFzZShzdHJ1Y3QgYnRmX3ZlcmlmaWVyX2VudiAqZW52LCBjb25zdCBjaGFyICpuYW1lLFxuLS1cbmtlcm5lbC9icGYvYnRmLmMtNjM5MS1cbmtlcm5lbC9icGYvYnRmLmM6NjM5MjpcdGlmICghSVNfRU5BQkxFRChDT05GSUdfREVCVUdfSU5GT19CVEYpKVxua2VybmVsL2JwZi9idGYuYy02MzkzLVx0XHRyZXR1cm4gRVJSX1BUUigtRU5PRU5UKTtcbi0tXG5rZXJuZWwvYnBmL2J0Zi5jPTY0NzI9c3RhdGljIF9fdTMyIGJ0Zl9yZWxvY2F0ZV9pZChjb25zdCBzdHJ1Y3QgYnRmICpidGYsIF9fdTMyIGlkKVxuLS1cbmtlcm5lbC9icGYvYnRmLmMtNjQ3OC1cbmtlcm5lbC9icGYvYnRmLmM6NjQ3OTojaWZkZWYgQ09ORklHX0RFQlVHX0lORk9fQlRGX01PRFVMRVNcbmtlcm5lbC9icGYvYnRmLmMtNjQ4MC1cbmtlcm5lbC9icGYvYnRmLmM9NjQ4MT1zdGF0aWMgc3RydWN0IGJ0ZiAqYnRmX3BhcnNlX21vZHVsZShjb25zdCBjaGFyICptb2R1bGVfbmFtZSwgY29uc3Qgdm9pZCAqZGF0YSxcbi0tXG5rZXJuZWwvYnBmL2J0Zi5jLTY1NzYtXG5rZXJuZWwvYnBmL2J0Zi5jOjY1Nzc6I2VuZGlmIC8qIENPTkZJR19ERUJVR19JTkZPX0JURl9NT0RVTEVTICovXG5rZXJuZWwvYnBmL2J0Zi5jLTY1NzgtXG4tLVxua2VybmVsL2JwZi9idGYuYz04NDY1PWVudW0ge1xuLS1cbmtlcm5lbC9icGYvYnRmLmMtODQ2OC1cbmtlcm5lbC9icGYvYnRmLmM6ODQ2OTojaWZkZWYgQ09ORklHX0RFQlVHX0lORk9fQlRGX01PRFVMRVNcbmtlcm5lbC9icGYvYnRmLmMtODQ3MC1zdHJ1Y3QgYnRmX21vZHVsZSB7XG4tLVxua2VybmVsL2JwZi9idGYuYz04NjA3PWZzX2luaXRjYWxsKGJ0Zl9tb2R1bGVfaW5pdCk7XG5rZXJuZWwvYnBmL2J0Zi5jOjg2MDg6I2VuZGlmIC8qIENPTkZJR19ERUJVR19JTkZPX0JURl9NT0RVTEVTICovXG5rZXJuZWwvYnBmL2J0Zi5jLTg2MDktXG5rZXJuZWwvYnBmL2J0Zi5jPTg2MTA9c3RydWN0IG1vZHVsZSAqYnRmX3RyeV9nZXRfbW9kdWxlKGNvbnN0IHN0cnVjdCBidGYgKmJ0Zilcbi0tXG5rZXJuZWwvYnBmL2J0Zi5jLTg2MTItXHRzdHJ1Y3QgbW9kdWxlICpyZXMgPSBOVUxMO1xua2VybmVsL2JwZi9idGYuYzo4NjEzOiNpZmRlZiBDT05GSUdfREVCVUdfSU5GT19CVEZfTU9EVUxFU1xua2VybmVsL2JwZi9idGYuYy04NjE0LVx0c3RydWN0IGJ0Zl9tb2R1bGUgKmJ0Zl9tb2QsICp0bXA7XG4tLVxua2VybmVsL2JwZi9idGYuYz04NjQwPXN0YXRpYyBzdHJ1Y3QgYnRmICpidGZfZ2V0X21vZHVsZV9idGYoY29uc3Qgc3RydWN0IG1vZHVsZSAqbW9kdWxlKVxua2VybmVsL2JwZi9idGYuYy04NjQxLXtcbmtlcm5lbC9icGYvYnRmLmM6ODY0MjojaWZkZWYgQ09ORklHX0RFQlVHX0lORk9fQlRGX01PRFVMRVNcbmtlcm5lbC9icGYvYnRmLmMtODY0My1cdHN0cnVjdCBidGZfbW9kdWxlICpidGZfbW9kLCAqdG1wO1xuLS1cbmtlcm5lbC9icGYvYnRmLmMtODY1My1cbmtlcm5lbC9icGYvYnRmLmM6ODY1NDojaWZkZWYgQ09ORklHX0RFQlVHX0lORk9fQlRGX01PRFVMRVNcbmtlcm5lbC9icGYvYnRmLmMtODY1NS1cdG11dGV4X2xvY2soXHUwMDI2YnRmX21vZHVsZV9tdXRleCk7XG4tLVxua2VybmVsL2JwZi9idGYuYz04NjcwPXN0YXRpYyBpbnQgY2hlY2tfYnRmX2tjb25maWdzKGNvbnN0IHN0cnVjdCBtb2R1bGUgKm1vZHVsZSwgY29uc3QgY2hhciAqZmVhdHVyZSlcbmtlcm5lbC9icGYvYnRmLmMtODY3MS17XG5rZXJuZWwvYnBmL2J0Zi5jOjg2NzI6XHRpZiAoIW1vZHVsZSBcdTAwMjZcdTAwMjYgSVNfRU5BQkxFRChDT05GSUdfREVCVUdfSU5GT19CVEYpKSB7XG5rZXJuZWwvYnBmL2J0Zi5jLTg2NzMtXHRcdHByX2VycihcJiMzNDttaXNzaW5nIHZtbGludXggQlRGLCBjYW5ub3QgcmVnaXN0ZXIgJXNcXG5cJiMzNDssIGZlYXR1cmUpO1xuLS1cbmtlcm5lbC9icGYvYnRmLmMtODY3NS1cdH1cbmtlcm5lbC9icGYvYnRmLmM6ODY3NjpcdGlmIChtb2R1bGUgXHUwMDI2XHUwMDI2IElTX0VOQUJMRUQoQ09ORklHX0RFQlVHX0lORk9fQlRGX01PRFVMRVMpKVxua2VybmVsL2JwZi9idGYuYy04Njc3LVx0XHRwcl93YXJuKFwmIzM0O21pc3NpbmcgbW9kdWxlIEJURiwgY2Fubm90IHJlZ2lzdGVyICVzXFxuXCYjMzQ7LCBmZWF0dXJlKTtcbi0tXG5rZXJuZWwvYnBmL2J0Zi5jPTg4MTc9c3RhdGljIGludCBidGZfY2hlY2tfa2Z1bmNfbmFtZShzdHJ1Y3QgYnRmICpidGYsIGNvbnN0IGNoYXIgKmZ1bmNfbmFtZSwgdTMyIGtpbmQpXG5rZXJuZWwvYnBmL2J0Zi5jLTg4MTgte1xua2VybmVsL2JwZi9idGYuYzo4ODE5OiNpZmRlZiBDT05GSUdfREVCVUdfSU5GT19CVEZfTU9EVUxFU1xua2VybmVsL2JwZi9idGYuYy04ODIwLVx0c3RydWN0IGJ0Zl9tb2R1bGUgKmJ0Zl9tb2QsICp0bXA7XG4tLVxua2VybmVsL2JwZi9idGYuYy04ODMzLVxua2VybmVsL2JwZi9idGYuYzo4ODM0OiNpZmRlZiBDT05GSUdfREVCVUdfSU5GT19CVEZfTU9EVUxFU1xua2VybmVsL2JwZi9idGYuYy04ODM1LVx0Z3VhcmQobXV0ZXgpKFx1MDAyNmJ0Zl9tb2R1bGVfbXV0ZXgpO1xuLS1cbmtlcm5lbC9icGYvYnRmLmM9OTQ4Mj1zdGF0aWMgc3RydWN0IGJwZl9jYW5kX2NhY2hlICpwb3B1bGF0ZV9jYW5kX2NhY2hlKHN0cnVjdCBicGZfY2FuZF9jYWNoZSAqY2FuZHMsXG4tLVxua2VybmVsL2JwZi9idGYuYy05NTA5LVxua2VybmVsL2JwZi9idGYuYzo5NTEwOiNpZmRlZiBDT05GSUdfREVCVUdfSU5GT19CVEZfTU9EVUxFU1xua2VybmVsL2JwZi9idGYuYy05NTExLXN0YXRpYyB2b2lkIF9fcHVyZ2VfY2FuZF9jYWNoZShzdHJ1Y3QgYnRmICpidGYsIHN0cnVjdCBicGZfY2FuZF9jYWNoZSAqKmNhY2hlLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0yNzQzPWludCBicGZfYWRkX2tmdW5jX2NhbGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgdTMyIGZ1bmNfaWQsIHUxNiBvZmZzZXQpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTI3NTgtXHRcdGlmICghYnRmX3ZtbGludXgpIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoyNzU5Olx0XHRcdHZlcmJvc2UoZW52LCBcJiMzNDtjYWxsaW5nIGtlcm5lbCBmdW5jdGlvbiBpcyBub3Qgc3VwcG9ydGVkIHdpdGhvdXQgQ09ORklHX0RFQlVHX0lORk9fQlRGXFxuXCYjMzQ7KTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yNzYwLVx0XHRcdHJldHVybiAtRU5PVFNVUFA7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTU5Njk9c3RhdGljIGludCBjaGVja19wdHJfdG9fbWFwX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01OTgzLVx0aWYgKCFidGZfdm1saW51eCkge1xua2VybmVsL2JwZi92ZXJpZmllci5jOjU5ODQ6XHRcdHZlcmJvc2UoZW52LCBcJiMzNDttYXBfcHRyIGFjY2VzcyBub3Qgc3VwcG9ydGVkIHdpdGhvdXQgQ09ORklHX0RFQlVHX0lORk9fQlRGXFxuXCYjMzQ7KTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01OTg1LVx0XHRyZXR1cm4gLUVOT1RTVVBQO1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xNzc3Nz1zdGF0aWMgaW50IGNoZWNrX3BzZXVkb19idGZfaWQoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTc3OTMtXHRcdGlmICghYnRmX3ZtbGludXgpIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxNzc5NDpcdFx0XHR2ZXJib3NlKGVudiwgXCYjMzQ7a2VybmVsIGlzIG1pc3NpbmcgQlRGLCBtYWtlIHN1cmUgQ09ORklHX0RFQlVHX0lORk9fQlRGPXkgaXMgc3BlY2lmaWVkIGluIEtjb25maWcuXFxuXCYjMzQ7KTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNzc5NS1cdFx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTk2MjI9c3RydWN0IGJ0ZiAqYnBmX2dldF9idGZfdm1saW51eCh2b2lkKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTYyNi1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTYyNzpcdGlmICghYnRmIFx1MDAyNlx1MDAyNiBJU19FTkFCTEVEKENPTkZJR19ERUJVR19JTkZPX0JURikpIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTYyOC1cdFx0bXV0ZXhfbG9jayhcdTAwMjZidGZfdm1saW51eF9sb2NrKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMTU6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE1MjIKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyODYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEJURiBMb2FkaW5nIGFuZCBgYnRmX3BhcnNlX2ZpZWxkc2AqKgoKT2theSwgc28gYENPTkZJR19ERUJVR19JTkZPX0JURmAgaXMgb2J2aW91c2x5IHJlbGV2YW50IGZvciBnZW5lcmF0aW5nIHRoZSB2bWxpbnV4IEJURiBkYXRhLCBidXQgdGhhdCYjMzk7cyBub3QgdGhlIGNvcmUgb2YgdGhlIHRlc3QuIFRoZSB0ZXN0IGNhc2UgSSYjMzk7bSBmb2N1c2luZyBvbiBzZWVtcyB0byB1dGlsaXplIGVpdGhlciBgQlBGX1BST0dfVEVTVF9SVU5gIG9yIGxvYWRzIHRoZSBCVEYgZGlyZWN0bHkgdXNpbmcgYGJwZihCUEZfQlRGX0xPQUQsIC4uLilgLiBBbmQgcmVtZW1iZXIsIGBCUEZfQlRGX0xPQURgIGhhcyBhIGRlcGVuZGVuY3k6IGl0IHJlcXVpcmVzIGBDT05GSUdfQlBGX1NZU0NBTExgIHRvIGJlIGVuYWJsZWQuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIGhvdyBpdCBsb2FkcyByYXcgQlRGIGRhdGEgZnJvbSBhIGZpbGUsIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoYXQgc3lzY2FsbC4gVGhlIHRlc3QgaXRzZWxmIHJlc2lkZXMgaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zi5jYC4gVGhhdCB0ZWxscyBtZSBJIHNob3VsZCBmb2N1cyBvbiB0aGF0IHRlc3QmIzM5O3MgdXNlIG9mIGBCUEZfQlRGX0xPQURgIGFuZCByYXcgQlRGIGRhdGEuIFNpbmNlIGl0JiMzOTtzIGEgdGVzdCBvZiB0aGUgbG9hZGluZyBtZWNoYW5pc20sIGBDT05GSUdfQlBGX1NZU0NBTExgIHNlZW1zIHRvIGJlIHRoZSBjcml0aWNhbCBwcmVyZXF1aXNpdGUgaGVyZS4KCk5vdywgbGV0JiMzOTtzIHJlZm9jdXMgb24gdGhlIGZ1bmN0aW9uIEkmIzM5O20gY29uc2lkZXJpbmcuIElzIGBidGZfcGFyc2VfZmllbGRzYCB0aGUgcmlnaHQgc3ltYm9sIHRvIGZvY3VzIG9uPyBJIG5lZWQgdG8gYW5hbHl6ZSBpdHMgY2FsbCBwYXRocy4gSXQgYXBwZWFycyB0aGF0IGBidGZfcGFyc2VfZmllbGRzYCBpcyBjYWxsZWQgYnkgYG1hcF9jaGVja19idGZgIGFuZCBgYnRmX3BhcnNlX3N0cnVjdF9tZXRhc2AuIGBtYXBfY2hlY2tfYnRmYCBpcyBpbnZva2VkIGJ5IGBtYXBfY3JlYXRlX2FsbG9jYCwgc3BlY2lmaWNhbGx5IHdoZW4gYSBtYXAgaXMgYmVpbmcgY3JlYXRlZCBhbmQgQlRGIGlzIGludm9sdmVkLiBBbmQsIGBidGZfcGFyc2Vfc3RydWN0X21ldGFzYCBpcyBjYWxsZWQgYnkgYGJ0Zl9wYXJzZWAgd2hlbiBCVEYgaXMgbG9hZGVkLiBIb2xkIG9uLCBgYnRmX3BhcnNlX3N0cnVjdF9tZXRhc2AgaXMgcGFyc2luZyB0aGUgbWV0YWRhdGEgKndpdGhpbiogdGhlIEJURiBpdHNlbGYhIFRoYXQgbWFrZXMgaXQgYW4gaW50ZXJlc3Rpbmcgc3ltYm9sIHRvIHRyYWNlLiBJJiMzOTttIGdvaW5nIHRvIHJldmlzaXQgYGJ0Zl9wYXJzZV9zdHJ1Y3RfbWV0YXNgIHRvIHVuZGVyc3RhbmQgdGhhdCBiZXR0ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDE1OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2J0Zl9wYXJzZV9zdHJ1Y3RfbWV0YXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL2J0Zi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvYnRmLmM9NTc3OT1zdGF0aWMgc3RydWN0IGJ0Zl9zdHJ1Y3RfbWV0YXMgKlxua2VybmVsL2JwZi9idGYuYzo1NzgwOmJ0Zl9wYXJzZV9zdHJ1Y3RfbWV0YXMoc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZywgc3RydWN0IGJ0ZiAqYnRmKVxua2VybmVsL2JwZi9idGYuYy01NzgxLXtcbi0tXG5rZXJuZWwvYnBmL2J0Zi5jPTU5NTA9c3RhdGljIHN0cnVjdCBidGYgKmJ0Zl9wYXJzZShjb25zdCB1bmlvbiBicGZfYXR0ciAqYXR0ciwgYnBmcHRyX3QgdWF0dHIsXG4tLVxua2VybmVsL2JwZi9idGYuYy02MDE3LVxua2VybmVsL2JwZi9idGYuYzo2MDE4Olx0c3RydWN0X21ldGFfdGFiID0gYnRmX3BhcnNlX3N0cnVjdF9tZXRhcyhcdTAwMjZlbnYtXHUwMDNlbG9nLCBidGYpO1xua2VybmVsL2JwZi9idGYuYy02MDE5LVx0aWYgKElTX0VSUihzdHJ1Y3RfbWV0YV90YWIpKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDE1OjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNTA0CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTc5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZvY3VzaW5nIG9uIEJURiBQYXJzaW5nKioKCk9rYXksIHNvICpidGZcX3BhcnNlXF9zdHJ1Y3RcX21ldGFzKiBnZXRzIGNhbGxlZCBmcm9tICpidGZcX3BhcnNlKiwgYW5kIHRoYXQmIzM5O3MgY2FsbGVkIGR1cmluZyAqQlBGXF9CVEZcX0xPQUQqLiBSaWdodCwgdGhhdCBtYWtlcyBpdCBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgZGlnZ2luZyBpbnRvLiBUaGUgdGVzdCBpbiAqdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dcX3Rlc3RzL2J0Zi5jKiBhY3R1YWxseSB1c2VzICpCUEZcX0JURlxfTE9BRCosIHNvIHdlJiMzOTt2ZSBnb3QgYSBkaXJlY3QgbGluayB0aGVyZS4gKmJ0ZlxfcGFyc2VcX3N0cnVjdFxfbWV0YXMqIHNlZW1zIGxpa2UgYW4gZXhjZWxsZW50IGZvY3VzIHN5bWJvbC4gSG1tLCBidXQgaGFuZyBvbuKApiBpdCYjMzk7cyBzdGF0aWMuIENhbiB3ZSBldmVuIHVzZSBzdGF0aWMgZnVuY3Rpb25zIGxpa2UgdGhhdD8gQWgsIHllcywgc3l6a2FsbGVyICpkb2VzKiBzdXBwb3J0IHRob3NlLCBhcyBsb25nIGFzIGl0JiMzOTtzIHVuaXF1ZWx5IGlkZW50aWZpYWJsZSBvciB3ZSBjYW4ganVzdCBzcGVjaWZ5IHRoZSBuYW1lLCBhbmQgd2l0aCB0aGlzIG9uZSBiZWluZyBjYWxsZWQgZHVyaW5nIGEgc3BlY2lmaWMgZnVuY3Rpb24gaXQgaXMuIFdhaXQgYSBtaW51dGUsICpidGZcX3BhcnNlXF9maWVsZHMqIGlzIGdsb2JhbCwgZXZlbiBiZXR0ZXIgdGhlbiwgbGV0IG1lIGNvbmZpcm0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDE1OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2J0Zl9wYXJzZV9maWVsZHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL2J0Zi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvYnRmLmM9NDEwOD1zdGF0aWMgaW50IGJ0Zl9maWVsZF9jbXAoY29uc3Qgdm9pZCAqX2EsIGNvbnN0IHZvaWQgKl9iLCBjb25zdCB2b2lkICpwcml2KVxuLS1cbmtlcm5lbC9icGYvYnRmLmMtNDExOS1cbmtlcm5lbC9icGYvYnRmLmM6NDEyMDpzdHJ1Y3QgYnRmX3JlY29yZCAqYnRmX3BhcnNlX2ZpZWxkcyhjb25zdCBzdHJ1Y3QgYnRmICpidGYsIGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdCxcbmtlcm5lbC9icGYvYnRmLmMtNDEyMS1cdFx0XHRcdCAgICB1MzIgZmllbGRfbWFzaywgdTMyIHZhbHVlX3NpemUpXG4tLVxua2VybmVsL2JwZi9idGYuYz01NzgwPWJ0Zl9wYXJzZV9zdHJ1Y3RfbWV0YXMoc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZywgc3RydWN0IGJ0ZiAqYnRmKVxuLS1cbmtlcm5lbC9icGYvYnRmLmMtNTg4MC1cdFx0dHlwZS1cdTAwM2VidGZfaWQgPSBpO1xua2VybmVsL2JwZi9idGYuYzo1ODgxOlx0XHRyZWNvcmQgPSBidGZfcGFyc2VfZmllbGRzKGJ0ZiwgdCwgQlBGX1NQSU5fTE9DSyB8IEJQRl9SRVNfU1BJTl9MT0NLIHwgQlBGX0xJU1RfSEVBRCB8IEJQRl9MSVNUX05PREUgfFxua2VybmVsL2JwZi9idGYuYy01ODgyLVx0XHRcdFx0XHRcdCAgQlBGX1JCX1JPT1QgfCBCUEZfUkJfTk9ERSB8IEJQRl9SRUZDT1VOVCB8XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDE1OjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMjQ4CgkJCQkJCQlvdXRwdXQ6IDE3NgoJCQkJCQkJdGhvdWdodHM6IDUyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBhIEJQRiBCVEYgUGFyc2luZyBCdWcgRml4KioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIHBhdGNoIHJlbGF0ZWQgdG8gQlRGIChCUEYgVHlwZSBGb3JtYXQpIHBhcnNpbmcgd2l0aGluIHRoZSBrZXJuZWwsIGFuZCBoZXJlJiMzOTtzIG15IGJyZWFrZG93biBvZiB3aGF0JiMzOTtzIGdvaW5nIG9uLiBGaXJzdCwgYGJ0Zl9wYXJzZV9maWVsZHNgIGlzIGEgZ2xvYmFsbHkgYWNjZXNzaWJsZSBmdW5jdGlvbiwgd2hpY2ggbWFrZXMgaXQgYSBnb29kIGNlbnRyYWwgcG9pbnQgdG8gaW52ZXN0aWdhdGUuIEl0JiMzOTtzIG5vdCBkZWNsYXJlZCBzdGF0aWMsIHdoaWNoIGlzIGdvb2QgdG8ga25vdyBmb3IgcmVhY2hhYmlsaXR5LgoKSSBhbHNvIHNlZSBhIGZldyBvdGhlciByZWxhdGVkIGZ1bmN0aW9ucyBpbnZvbHZlZCBsaWtlIGBidGZfZmluZF9zdHJ1Y3RfZmllbGRgLCBgYnRmX2ZpbmRfbmVzdGVkX3N0cnVjdGAsIGBidGZfZmluZF9kYXRhc2VjX3ZhcmAsIGBidGZfZmluZF9maWVsZF9vbmVgLCBhbmQgYGJ0Zl9maW5kX2ZpZWxkYC4gU2luY2Ugd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBmaWVsZCBwYXJzaW5nLCBJJiMzOTtsbCBkZWZpbml0ZWx5IGtlZXAgdGhvc2UgaW4gbWluZC4gV2Ugc2hvdWxkIHByb2JhYmx5IGZvY3VzIG91ciBhdHRlbnRpb24gb24gYGJ0Zl9wYXJzZV9maWVsZHNgIGFuZCBgYnRmX3BhcnNlX3N0cnVjdF9tZXRhc2AuCgpMb29raW5nIGNsb3NlciBhdCB0aGUgcGF0Y2gsIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gYmUgd2l0aGluIGBidGZfZmluZF9zdHJ1Y3RfZmllbGRgLiBJdCBsb29rcyBsaWtlIHRoZXJlJiMzOTtzIGEgcHJvYmxlbSB3aGVyZSBkdXBsaWNhdGUgZmllbGRzIHRoYXQgc2hvdWxkIGJlIHVuaXF1ZSwgc3VjaCBhcyBgYnBmX3NwaW5fbG9ja2AsIGNvdWxkIGJlIG5lc3RlZCBkZWVwbHkgd2l0aGluIHN0cnVjdHMsIGFuZCB0aGUgZXhpc3RpbmcgYHNlZW5fbWFza2AgY2hlY2sgd291bGRuJiMzOTt0IGNhdGNoIHRoZXNlIGR1cGxpY2F0ZXMgcHJvcGVybHkuIFRoZSBmaXggaW52b2x2ZXMgcGFzc2luZyBhIHBvaW50ZXIgdG8gdGhlIGBzZWVuX21hc2tgIHZhcmlhYmxlLCBzbyB0aGF0IGFsbCBuZXN0ZWQgbGV2ZWxzIHVzZSB0aGUgc2FtZSBgc2Vlbl9tYXNrYCwgd2hpY2ggc2hvdWxkIHNvbHZlIHRoZSBkdXBsaWNhdGUgZmllbGQgaXNzdWUuCgpUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGRpcmVjdGx5IHJlbGF0ZWQgdG8gdGhlIEJQRiBzdWJzeXN0ZW0sIHNwZWNpZmljYWxseSBCVEYgcGFyc2luZyBhbmQgdmFsaWRhdGlvbi4gR2l2ZW4gdGhhdCwgaXQgKnNob3VsZCogYmUgcmVhY2hhYmxlIHZpYSB0aGUgYGJwZigpYCBzeXNjYWxsLiBTbyB3ZSBjYW4gaW50ZXJhY3Qgd2l0aCBpdCB2aWEgYEJQRl9CVEZfTE9BRGAgZm9yIGV4YW1wbGUuCgpUbyBlbnN1cmUgdGhpcyBpcyB0ZXN0YWJsZSBhbmQgcmVhY2hhYmxlLCBJIHNob3VsZCBtYWtlIHN1cmUgdGhlIGBCUEZfU1lTQ0FMTGAgY29uZmlnIGlzIGVuYWJsZWQuIEl0IGxvb2tzIGxpa2UgdGhhdCBpcyB0aGUgY29ycmVjdCBjb25maWcgdG8gYWxsb3cgdGhlIGBicGYoKWAgc3lzY2FsbCBhbmQgZW5hYmxlIEJURiBwYXJzaW5nLiBMZXQgbWUgZG91YmxlIGNoZWNrLi4uIFllcywgaXQgYXBwZWFycyB0aGF0IGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIGluZGVlZCB0aGUgbWFpbiBjb25maWcgbmVlZGVkIHRvIGV4cG9zZSB0aGlzIGZ1bmN0aW9uYWxpdHkuIE9rYXksIEkmIzM5O20gY29uZmlkZW50LiBUaW1lIHRvIHN1Ym1pdCB0aGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAxNTowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtidGZfcGFyc2VfZmllbGRzJiMzNDssCiAgICAmIzM0O2J0Zl9wYXJzZV9zdHJ1Y3RfbWV0YXMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gQlRGIHBhcnNpbmcgd2hlcmUgZHVwbGljYXRlIHVuaXF1ZSBmaWVsZHMgKGxpa2UgYGJwZl9zcGluX2xvY2tgKSBjb3VsZCBiZSBuZXN0ZWQgaW4gc3RydWN0cywgYW5kIHRoZSBgc2Vlbl9tYXNrYCBjaGVjayB3b3VsZG4mIzM5O3QgY2F0Y2ggaXQgYmVjYXVzZSBlYWNoIGxldmVsIG9mIG5lc3RpbmcgaGFkIGl0cyBvd24gYHNlZW5fbWFza2AuIFBhc3NpbmcgYSBwb2ludGVyIHRvIGBzZWVuX21hc2tgIGZpeGVzIHRoaXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgQlBGIHN1YnN5c3RlbSwgc3BlY2lmaWNhbGx5IGluIEJURiBwYXJzaW5nL3ZhbGlkYXRpb24sIHdoaWNoIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgdmlhIHRoZSBgYnBmKClgIHN5c2NhbGwgKGUuZy4sIGBCUEZfQlRGX0xPQURgIG9yIG1hcCBjcmVhdGlvbikuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnRmX3BhcnNlX2ZpZWxkcyYjMzQ7LAogICAgJiMzNDtidGZfcGFyc2Vfc3RydWN0X21ldGFzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIEJURiBwYXJzaW5nIHdoZXJlIGR1cGxpY2F0ZSB1bmlxdWUgZmllbGRzIChsaWtlIGBicGZfc3Bpbl9sb2NrYCkgY291bGQgYmUgbmVzdGVkIGluIHN0cnVjdHMsIGFuZCB0aGUgYHNlZW5fbWFza2AgY2hlY2sgd291bGRuJiMzOTt0IGNhdGNoIGl0IGJlY2F1c2UgZWFjaCBsZXZlbCBvZiBuZXN0aW5nIGhhZCBpdHMgb3duIGBzZWVuX21hc2tgLiBQYXNzaW5nIGEgcG9pbnRlciB0byBgc2Vlbl9tYXNrYCBmaXhlcyB0aGlzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEJQRiBzdWJzeXN0ZW0sIHNwZWNpZmljYWxseSBpbiBCVEYgcGFyc2luZy92YWxpZGF0aW9uLCB3aGljaCBpcyByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIHZpYSB0aGUgYGJwZigpYCBzeXNjYWxsIChlLmcuLCBgQlBGX0JURl9MT0FEYCBvciBtYXAgY3JlYXRpb24pLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTlUMTU6MDY6NTkuOTYxMTcwMzVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzY0MjU5MTU3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJ0Zl9wYXJzZV9maWVsZHNcIixcbiAgICBcImJ0Zl9wYXJzZV9zdHJ1Y3RfbWV0YXNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBCVEYgcGFyc2luZyB3aGVyZSBkdXBsaWNhdGUgdW5pcXVlIGZpZWxkcyAobGlrZSBgYnBmX3NwaW5fbG9ja2ApIGNvdWxkIGJlIG5lc3RlZCBpbiBzdHJ1Y3RzLCBhbmQgdGhlIGBzZWVuX21hc2tgIGNoZWNrIHdvdWxkbid0IGNhdGNoIGl0IGJlY2F1c2UgZWFjaCBsZXZlbCBvZiBuZXN0aW5nIGhhZCBpdHMgb3duIGBzZWVuX21hc2tgLiBQYXNzaW5nIGEgcG9pbnRlciB0byBgc2Vlbl9tYXNrYCBmaXhlcyB0aGlzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEJQRiBzdWJzeXN0ZW0sIHNwZWNpZmljYWxseSBpbiBCVEYgcGFyc2luZy92YWxpZGF0aW9uLCB3aGljaCBpcyByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIHZpYSB0aGUgYGJwZigpYCBzeXNjYWxsIChlLmcuLCBgQlBGX0JURl9MT0FEYCBvciBtYXAgY3JlYXRpb24pLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQxNTowNjo1OS45NjExNzcyOVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDEyNTc1ODExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMmIzOTRmYjA5YmVmMGYxZWE2MTEyMGNmMDNjODJhMjZkMjZkMTJjYVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEp1bCAxOSAxNTowNjo1OCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2J0Zi5jIGIva2VybmVsL2JwZi9idGYuY1xcbmluZGV4IGNiYjFlNDliOWJjYmY1Li44ZDYyODU1MmVmOTllYiAxMDA2NDRcXG4tLS0gYS9rZXJuZWwvYnBmL2J0Zi5jXFxuKysrIGIva2VybmVsL2JwZi9idGYuY1xcbkBAIC0zNzUxLDcgKzM3NTEsNyBAQCBzdGF0aWMgaW50IGJ0Zl9yZXBlYXRfZmllbGRzKHN0cnVjdCBidGZfZmllbGRfaW5mbyAqaW5mbywgaW50IGluZm9fY250LFxcbiBzdGF0aWMgaW50IGJ0Zl9maW5kX3N0cnVjdF9maWVsZChjb25zdCBzdHJ1Y3QgYnRmICpidGYsXFxuIFxcdFxcdFxcdFxcdCBjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKnQsIHUzMiBmaWVsZF9tYXNrLFxcbiBcXHRcXHRcXHRcXHQgc3RydWN0IGJ0Zl9maWVsZF9pbmZvICppbmZvLCBpbnQgaW5mb19jbnQsXFxuLVxcdFxcdFxcdFxcdCB1MzIgbGV2ZWwpO1xcbitcXHRcXHRcXHRcXHQgdTMyIGxldmVsLCB1MzIgKnNlZW5fbWFzayk7XFxuIFxcbiAvKiBGaW5kIHNwZWNpYWwgZmllbGRzIGluIHRoZSBzdHJ1Y3QgdHlwZSBvZiBhIGZpZWxkLlxcbiAgKlxcbkBAIC0zNzYyLDcgKzM3NjIsNyBAQCBzdGF0aWMgaW50IGJ0Zl9maW5kX3N0cnVjdF9maWVsZChjb25zdCBzdHJ1Y3QgYnRmICpidGYsXFxuIHN0YXRpYyBpbnQgYnRmX2ZpbmRfbmVzdGVkX3N0cnVjdChjb25zdCBzdHJ1Y3QgYnRmICpidGYsIGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdCxcXG4gXFx0XFx0XFx0XFx0ICB1MzIgb2ZmLCB1MzIgbmVsZW1zLFxcbiBcXHRcXHRcXHRcXHQgIHUzMiBmaWVsZF9tYXNrLCBzdHJ1Y3QgYnRmX2ZpZWxkX2luZm8gKmluZm8sXFxuLVxcdFxcdFxcdFxcdCAgaW50IGluZm9fY250LCB1MzIgbGV2ZWwpXFxuK1xcdFxcdFxcdFxcdCAgaW50IGluZm9fY250LCB1MzIgbGV2ZWwsIHUzMiAqc2Vlbl9tYXNrKVxcbiB7XFxuIFxcdGludCByZXQsIGVyciwgaTtcXG4gXFxuQEAgLTM3NzAsNyArMzc3MCw3IEBAIHN0YXRpYyBpbnQgYnRmX2ZpbmRfbmVzdGVkX3N0cnVjdChjb25zdCBzdHJ1Y3QgYnRmICpidGYsIGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqXFxuIFxcdGlmIChsZXZlbCBcXHUwMDNlPSBNQVhfUkVTT0xWRV9ERVBUSClcXG4gXFx0XFx0cmV0dXJuIC1FMkJJRztcXG4gXFxuLVxcdHJldCA9IGJ0Zl9maW5kX3N0cnVjdF9maWVsZChidGYsIHQsIGZpZWxkX21hc2ssIGluZm8sIGluZm9fY250LCBsZXZlbCk7XFxuK1xcdHJldCA9IGJ0Zl9maW5kX3N0cnVjdF9maWVsZChidGYsIHQsIGZpZWxkX21hc2ssIGluZm8sIGluZm9fY250LCBsZXZlbCwgc2Vlbl9tYXNrKTtcXG4gXFxuIFxcdGlmIChyZXQgXFx1MDAzYz0gMClcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG5AQCAtMzgyNyw3ICszODI3LDcgQEAgc3RhdGljIGludCBidGZfZmluZF9maWVsZF9vbmUoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLFxcbiBcXHRcXHRpZiAoZXhwZWN0ZWRfc2l6ZSBcXHUwMDI2XFx1MDAyNiBleHBlY3RlZF9zaXplICE9IHN6ICogbmVsZW1zKVxcbiBcXHRcXHRcXHRyZXR1cm4gMDtcXG4gXFx0XFx0cmV0ID0gYnRmX2ZpbmRfbmVzdGVkX3N0cnVjdChidGYsIHZhcl90eXBlLCBvZmYsIG5lbGVtcywgZmllbGRfbWFzayxcXG4tXFx0XFx0XFx0XFx0XFx0ICAgICBcXHUwMDI2aW5mb1swXSwgaW5mb19jbnQsIGxldmVsKTtcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICBcXHUwMDI2aW5mb1swXSwgaW5mb19jbnQsIGxldmVsLCBzZWVuX21hc2spO1xcbiBcXHRcXHRyZXR1cm4gcmV0O1xcbiBcXHR9XFxuIFxcbkBAIC0zODkyLDExICszODkyLDExIEBAIHN0YXRpYyBpbnQgYnRmX2ZpbmRfZmllbGRfb25lKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZixcXG4gc3RhdGljIGludCBidGZfZmluZF9zdHJ1Y3RfZmllbGQoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLFxcbiBcXHRcXHRcXHRcXHQgY29uc3Qgc3RydWN0IGJ0Zl90eXBlICp0LCB1MzIgZmllbGRfbWFzayxcXG4gXFx0XFx0XFx0XFx0IHN0cnVjdCBidGZfZmllbGRfaW5mbyAqaW5mbywgaW50IGluZm9fY250LFxcbi1cXHRcXHRcXHRcXHQgdTMyIGxldmVsKVxcbitcXHRcXHRcXHRcXHQgdTMyIGxldmVsLCB1MzIgKnNlZW5fbWFzaylcXG4ge1xcbiBcXHRpbnQgcmV0LCBpZHggPSAwO1xcbiBcXHRjb25zdCBzdHJ1Y3QgYnRmX21lbWJlciAqbWVtYmVyO1xcbi1cXHR1MzIgaSwgb2ZmLCBzZWVuX21hc2sgPSAwO1xcbitcXHR1MzIgaSwgb2ZmO1xcbiBcXG4gXFx0Zm9yX2VhY2hfbWVtYmVyKGksIHQsIG1lbWJlcikge1xcbiBcXHRcXHRjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKm1lbWJlcl90eXBlID0gYnRmX3R5cGVfYnlfaWQoYnRmLFxcbkBAIC0zOTEwLDcgKzM5MTAsNyBAQCBzdGF0aWMgaW50IGJ0Zl9maW5kX3N0cnVjdF9maWVsZChjb25zdCBzdHJ1Y3QgYnRmICpidGYsXFxuIFxcbiBcXHRcXHRyZXQgPSBidGZfZmluZF9maWVsZF9vbmUoYnRmLCB0LCBtZW1iZXJfdHlwZSwgaSxcXG4gXFx0XFx0XFx0XFx0XFx0IG9mZiwgMCxcXG4tXFx0XFx0XFx0XFx0XFx0IGZpZWxkX21hc2ssIFxcdTAwMjZzZWVuX21hc2ssXFxuK1xcdFxcdFxcdFxcdFxcdCBmaWVsZF9tYXNrLCBzZWVuX21hc2ssXFxuIFxcdFxcdFxcdFxcdFxcdCBcXHUwMDI2aW5mb1tpZHhdLCBpbmZvX2NudCAtIGlkeCwgbGV2ZWwpO1xcbiBcXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4gXFx0XFx0XFx0cmV0dXJuIHJldDtcXG5AQCAtMzkyMSwxMSArMzkyMSwxMSBAQCBzdGF0aWMgaW50IGJ0Zl9maW5kX3N0cnVjdF9maWVsZChjb25zdCBzdHJ1Y3QgYnRmICpidGYsXFxuIFxcbiBzdGF0aWMgaW50IGJ0Zl9maW5kX2RhdGFzZWNfdmFyKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgY29uc3Qgc3RydWN0IGJ0Zl90eXBlICp0LFxcbiBcXHRcXHRcXHRcXHR1MzIgZmllbGRfbWFzaywgc3RydWN0IGJ0Zl9maWVsZF9pbmZvICppbmZvLFxcbi1cXHRcXHRcXHRcXHRpbnQgaW5mb19jbnQsIHUzMiBsZXZlbClcXG4rXFx0XFx0XFx0XFx0aW50IGluZm9fY250LCB1MzIgbGV2ZWwsIHUzMiAqc2Vlbl9tYXNrKVxcbiB7XFxuIFxcdGludCByZXQsIGlkeCA9IDA7XFxuIFxcdGNvbnN0IHN0cnVjdCBidGZfdmFyX3NlY2luZm8gKnZzaTtcXG4tXFx0dTMyIGksIG9mZiwgc2Vlbl9tYXNrID0gMDtcXG4rXFx0dTMyIGksIG9mZjtcXG4gXFxuIFxcdGZvcl9lYWNoX3ZzaShpLCB0LCB2c2kpIHtcXG4gXFx0XFx0Y29uc3Qgc3RydWN0IGJ0Zl90eXBlICp2YXIgPSBidGZfdHlwZV9ieV9pZChidGYsIHZzaS1cXHUwMDNldHlwZSk7XFxuQEAgLTM5MzMsNyArMzkzMyw3IEBAIHN0YXRpYyBpbnQgYnRmX2ZpbmRfZGF0YXNlY192YXIoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCBjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKnQsXFxuIFxcbiBcXHRcXHRvZmYgPSB2c2ktXFx1MDAzZW9mZnNldDtcXG4gXFx0XFx0cmV0ID0gYnRmX2ZpbmRfZmllbGRfb25lKGJ0ZiwgdmFyLCB2YXJfdHlwZSwgLTEsIG9mZiwgdnNpLVxcdTAwM2VzaXplLFxcbi1cXHRcXHRcXHRcXHRcXHQgZmllbGRfbWFzaywgXFx1MDAyNnNlZW5fbWFzayxcXG4rXFx0XFx0XFx0XFx0XFx0IGZpZWxkX21hc2ssIHNlZW5fbWFzayxcXG4gXFx0XFx0XFx0XFx0XFx0IFxcdTAwMjZpbmZvW2lkeF0sIGluZm9fY250IC0gaWR4LFxcbiBcXHRcXHRcXHRcXHRcXHQgbGV2ZWwpO1xcbiBcXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG5AQCAtMzk0NywxMCArMzk0NywxMiBAQCBzdGF0aWMgaW50IGJ0Zl9maW5kX2ZpZWxkKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgY29uc3Qgc3RydWN0IGJ0Zl90eXBlICp0LFxcbiBcXHRcXHRcXHQgIHUzMiBmaWVsZF9tYXNrLCBzdHJ1Y3QgYnRmX2ZpZWxkX2luZm8gKmluZm8sXFxuIFxcdFxcdFxcdCAgaW50IGluZm9fY250KVxcbiB7XFxuK1xcdHUzMiBzZWVuX21hc2sgPSAwO1xcbitcXG4gXFx0aWYgKF9fYnRmX3R5cGVfaXNfc3RydWN0KHQpKVxcbi1cXHRcXHRyZXR1cm4gYnRmX2ZpbmRfc3RydWN0X2ZpZWxkKGJ0ZiwgdCwgZmllbGRfbWFzaywgaW5mbywgaW5mb19jbnQsIDApO1xcbitcXHRcXHRyZXR1cm4gYnRmX2ZpbmRfc3RydWN0X2ZpZWxkKGJ0ZiwgdCwgZmllbGRfbWFzaywgaW5mbywgaW5mb19jbnQsIDAsIFxcdTAwMjZzZWVuX21hc2spO1xcbiBcXHRlbHNlIGlmIChidGZfdHlwZV9pc19kYXRhc2VjKHQpKVxcbi1cXHRcXHRyZXR1cm4gYnRmX2ZpbmRfZGF0YXNlY192YXIoYnRmLCB0LCBmaWVsZF9tYXNrLCBpbmZvLCBpbmZvX2NudCwgMCk7XFxuK1xcdFxcdHJldHVybiBidGZfZmluZF9kYXRhc2VjX3ZhcihidGYsIHQsIGZpZWxkX21hc2ssIGluZm8sIGluZm9fY250LCAwLCBcXHUwMDI2c2Vlbl9tYXNrKTtcXG4gXFx0cmV0dXJuIC1FSU5WQUw7XFxuIH1cXG4gXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnRmLmNcXG5pbmRleCA2Njg1NWNiZDZiNzNmNi4uMDJjNGM2MGM4NDFlZWYgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnRmLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9idGYuY1xcbkBAIC00MjUwLDYgKzQyNTAsMzIgQEAgc3RhdGljIHN0cnVjdCBidGZfcmF3X3Rlc3QgcmF3X3Rlc3RzW10gPSB7XFxuIFxcdC5tYXhfZW50cmllcyA9IDEsXFxuIH0sXFxuIFxcbisvKiBzdHJ1Y3QgaW5uZXIge1xcbisgKiAgICAgc3RydWN0IGJwZl9zcGluX2xvY2sgbG9jaztcXG4rICogfTtcXG4rICpcXG4rICogc3RydWN0IHZhbHVlIHtcXG4rICogICAgIHN0cnVjdCBicGZfc3Bpbl9sb2NrIGxvY2s7XFxuKyAqICAgICBzdHJ1Y3QgaW5uZXIgbmVzdGVkO1xcbisgKiB9O1xcbisgKi9cXG4re1xcbitcXHQuZGVzY3IgPSBcXFwic3RydWN0IHRlc3QgZHVwbGljYXRlIG5lc3RlZCB1bmlxdWUgZmllbGRzXFxcIixcXG4rXFx0LnJhd190eXBlcyA9IHtcXG4rXFx0XFx0QlRGX1RZUEVfSU5UX0VOQyhOQU1FX1RCRCwgQlRGX0lOVF9TSUdORUQsIDAsIDMyLCA0KSxcXHQvKiBbMV0gKi9cXG4rXFx0XFx0QlRGX1NUUlVDVF9FTkMoTkFNRV9UQkQsIDEsIDQpLFxcdFxcdFxcdFxcdC8qIFsyXSAqL1xcbitcXHRcXHRCVEZfTUVNQkVSX0VOQyhOQU1FX1RCRCwgMSwgMCksXFxuK1xcdFxcdEJURl9TVFJVQ1RfRU5DKE5BTUVfVEJELCAxLCA0KSxcXHRcXHRcXHRcXHQvKiBbM10gKi9cXG4rXFx0XFx0QlRGX01FTUJFUl9FTkMoTkFNRV9UQkQsIDIsIDApLFxcbitcXHRcXHRCVEZfU1RSVUNUX0VOQyhOQU1FX1RCRCwgMiwgOCksXFx0XFx0XFx0XFx0LyogWzRdICovXFxuK1xcdFxcdEJURl9NRU1CRVJfRU5DKE5BTUVfVEJELCAyLCAwKSxcXG4rXFx0XFx0QlRGX01FTUJFUl9FTkMoTkFNRV9UQkQsIDMsIDMyKSxcXG4rXFx0XFx0QlRGX0VORF9SQVcsXFxuK1xcdH0sXFxuK1xcdEJURl9TVFJfU0VDKFxcXCJcXFxcMGludFxcXFwwYnBmX3NwaW5fbG9ja1xcXFwwdmFsXFxcXDBpbm5lclxcXFwwbG9ja1xcXFwwdmFsdWVcXFxcMGxvY2tcXFxcMG5lc3RlZFxcXCIpLFxcbitcXHQuYnRmX2xvYWRfZXJyID0gdHJ1ZSxcXG4rfSxcXG4rXFxuIHtcXG4gXFx0LmRlc2NyID0gXFxcInN0cnVjdCB0ZXN0IHJlcGVhdGVkIGZpZWxkcyBjb3VudCBvdmVyZmxvd1xcXCIsXFxuIFxcdC5yYXdfdHlwZXMgPSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDE1OjA3OjAwLjM3NDM4NzAwMVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTcyMjkzNjA5NjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJidGZfcGFyc2VfZmllbGRzXCIsXG4gICAgXCJidGZfcGFyc2Vfc3RydWN0X21ldGFzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gQlRGIHBhcnNpbmcgd2hlcmUgZHVwbGljYXRlIHVuaXF1ZSBmaWVsZHMgKGxpa2UgYGJwZl9zcGluX2xvY2tgKSBjb3VsZCBiZSBuZXN0ZWQgaW4gc3RydWN0cywgYW5kIHRoZSBgc2Vlbl9tYXNrYCBjaGVjayB3b3VsZG4ndCBjYXRjaCBpdCBiZWNhdXNlIGVhY2ggbGV2ZWwgb2YgbmVzdGluZyBoYWQgaXRzIG93biBgc2Vlbl9tYXNrYC4gUGFzc2luZyBhIHBvaW50ZXIgdG8gYHNlZW5fbWFza2AgZml4ZXMgdGhpcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBCUEYgc3Vic3lzdGVtLCBzcGVjaWZpY2FsbHkgaW4gQlRGIHBhcnNpbmcvdmFsaWRhdGlvbiwgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSB2aWEgdGhlIGBicGYoKWAgc3lzY2FsbCAoZS5nLiwgYEJQRl9CVEZfTE9BRGAgb3IgbWFwIGNyZWF0aW9uKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyYjM5NGZiMDliZWYwZjFlYTYxMTIwY2YwM2M4MmEyNmQyNmQxMmNhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgMTkgMTU6MDY6NTggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2J0Zi5jIGIva2VybmVsL2JwZi9idGYuY1xuaW5kZXggY2JiMWU0OWI5YmNiZjUuLjhkNjI4NTUyZWY5OWViIDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi9idGYuY1xuKysrIGIva2VybmVsL2JwZi9idGYuY1xuQEAgLTM3NTEsNyArMzc1MSw3IEBAIHN0YXRpYyBpbnQgYnRmX3JlcGVhdF9maWVsZHMoc3RydWN0IGJ0Zl9maWVsZF9pbmZvICppbmZvLCBpbnQgaW5mb19jbnQsXG4gc3RhdGljIGludCBidGZfZmluZF9zdHJ1Y3RfZmllbGQoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLFxuIFx0XHRcdFx0IGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdCwgdTMyIGZpZWxkX21hc2ssXG4gXHRcdFx0XHQgc3RydWN0IGJ0Zl9maWVsZF9pbmZvICppbmZvLCBpbnQgaW5mb19jbnQsXG4tXHRcdFx0XHQgdTMyIGxldmVsKTtcbitcdFx0XHRcdCB1MzIgbGV2ZWwsIHUzMiAqc2Vlbl9tYXNrKTtcbiBcbiAvKiBGaW5kIHNwZWNpYWwgZmllbGRzIGluIHRoZSBzdHJ1Y3QgdHlwZSBvZiBhIGZpZWxkLlxuICAqXG5AQCAtMzc2Miw3ICszNzYyLDcgQEAgc3RhdGljIGludCBidGZfZmluZF9zdHJ1Y3RfZmllbGQoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLFxuIHN0YXRpYyBpbnQgYnRmX2ZpbmRfbmVzdGVkX3N0cnVjdChjb25zdCBzdHJ1Y3QgYnRmICpidGYsIGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdCxcbiBcdFx0XHRcdCAgdTMyIG9mZiwgdTMyIG5lbGVtcyxcbiBcdFx0XHRcdCAgdTMyIGZpZWxkX21hc2ssIHN0cnVjdCBidGZfZmllbGRfaW5mbyAqaW5mbyxcbi1cdFx0XHRcdCAgaW50IGluZm9fY250LCB1MzIgbGV2ZWwpXG4rXHRcdFx0XHQgIGludCBpbmZvX2NudCwgdTMyIGxldmVsLCB1MzIgKnNlZW5fbWFzaylcbiB7XG4gXHRpbnQgcmV0LCBlcnIsIGk7XG4gXG5AQCAtMzc3MCw3ICszNzcwLDcgQEAgc3RhdGljIGludCBidGZfZmluZF9uZXN0ZWRfc3RydWN0KGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgY29uc3Qgc3RydWN0IGJ0Zl90eXBlICpcbiBcdGlmIChsZXZlbCBcdTAwM2U9IE1BWF9SRVNPTFZFX0RFUFRIKVxuIFx0XHRyZXR1cm4gLUUyQklHO1xuIFxuLVx0cmV0ID0gYnRmX2ZpbmRfc3RydWN0X2ZpZWxkKGJ0ZiwgdCwgZmllbGRfbWFzaywgaW5mbywgaW5mb19jbnQsIGxldmVsKTtcbitcdHJldCA9IGJ0Zl9maW5kX3N0cnVjdF9maWVsZChidGYsIHQsIGZpZWxkX21hc2ssIGluZm8sIGluZm9fY250LCBsZXZlbCwgc2Vlbl9tYXNrKTtcbiBcbiBcdGlmIChyZXQgXHUwMDNjPSAwKVxuIFx0XHRyZXR1cm4gcmV0O1xuQEAgLTM4MjcsNyArMzgyNyw3IEBAIHN0YXRpYyBpbnQgYnRmX2ZpbmRfZmllbGRfb25lKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZixcbiBcdFx0aWYgKGV4cGVjdGVkX3NpemUgXHUwMDI2XHUwMDI2IGV4cGVjdGVkX3NpemUgIT0gc3ogKiBuZWxlbXMpXG4gXHRcdFx0cmV0dXJuIDA7XG4gXHRcdHJldCA9IGJ0Zl9maW5kX25lc3RlZF9zdHJ1Y3QoYnRmLCB2YXJfdHlwZSwgb2ZmLCBuZWxlbXMsIGZpZWxkX21hc2ssXG4tXHRcdFx0XHRcdCAgICAgXHUwMDI2aW5mb1swXSwgaW5mb19jbnQsIGxldmVsKTtcbitcdFx0XHRcdFx0ICAgICBcdTAwMjZpbmZvWzBdLCBpbmZvX2NudCwgbGV2ZWwsIHNlZW5fbWFzayk7XG4gXHRcdHJldHVybiByZXQ7XG4gXHR9XG4gXG5AQCAtMzg5MiwxMSArMzg5MiwxMSBAQCBzdGF0aWMgaW50IGJ0Zl9maW5kX2ZpZWxkX29uZShjb25zdCBzdHJ1Y3QgYnRmICpidGYsXG4gc3RhdGljIGludCBidGZfZmluZF9zdHJ1Y3RfZmllbGQoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLFxuIFx0XHRcdFx0IGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdCwgdTMyIGZpZWxkX21hc2ssXG4gXHRcdFx0XHQgc3RydWN0IGJ0Zl9maWVsZF9pbmZvICppbmZvLCBpbnQgaW5mb19jbnQsXG4tXHRcdFx0XHQgdTMyIGxldmVsKVxuK1x0XHRcdFx0IHUzMiBsZXZlbCwgdTMyICpzZWVuX21hc2spXG4ge1xuIFx0aW50IHJldCwgaWR4ID0gMDtcbiBcdGNvbnN0IHN0cnVjdCBidGZfbWVtYmVyICptZW1iZXI7XG4tXHR1MzIgaSwgb2ZmLCBzZWVuX21hc2sgPSAwO1xuK1x0dTMyIGksIG9mZjtcbiBcbiBcdGZvcl9lYWNoX21lbWJlcihpLCB0LCBtZW1iZXIpIHtcbiBcdFx0Y29uc3Qgc3RydWN0IGJ0Zl90eXBlICptZW1iZXJfdHlwZSA9IGJ0Zl90eXBlX2J5X2lkKGJ0ZixcbkBAIC0zOTEwLDcgKzM5MTAsNyBAQCBzdGF0aWMgaW50IGJ0Zl9maW5kX3N0cnVjdF9maWVsZChjb25zdCBzdHJ1Y3QgYnRmICpidGYsXG4gXG4gXHRcdHJldCA9IGJ0Zl9maW5kX2ZpZWxkX29uZShidGYsIHQsIG1lbWJlcl90eXBlLCBpLFxuIFx0XHRcdFx0XHQgb2ZmLCAwLFxuLVx0XHRcdFx0XHQgZmllbGRfbWFzaywgXHUwMDI2c2Vlbl9tYXNrLFxuK1x0XHRcdFx0XHQgZmllbGRfbWFzaywgc2Vlbl9tYXNrLFxuIFx0XHRcdFx0XHQgXHUwMDI2aW5mb1tpZHhdLCBpbmZvX2NudCAtIGlkeCwgbGV2ZWwpO1xuIFx0XHRpZiAocmV0IFx1MDAzYyAwKVxuIFx0XHRcdHJldHVybiByZXQ7XG5AQCAtMzkyMSwxMSArMzkyMSwxMSBAQCBzdGF0aWMgaW50IGJ0Zl9maW5kX3N0cnVjdF9maWVsZChjb25zdCBzdHJ1Y3QgYnRmICpidGYsXG4gXG4gc3RhdGljIGludCBidGZfZmluZF9kYXRhc2VjX3Zhcihjb25zdCBzdHJ1Y3QgYnRmICpidGYsIGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdCxcbiBcdFx0XHRcdHUzMiBmaWVsZF9tYXNrLCBzdHJ1Y3QgYnRmX2ZpZWxkX2luZm8gKmluZm8sXG4tXHRcdFx0XHRpbnQgaW5mb19jbnQsIHUzMiBsZXZlbClcbitcdFx0XHRcdGludCBpbmZvX2NudCwgdTMyIGxldmVsLCB1MzIgKnNlZW5fbWFzaylcbiB7XG4gXHRpbnQgcmV0LCBpZHggPSAwO1xuIFx0Y29uc3Qgc3RydWN0IGJ0Zl92YXJfc2VjaW5mbyAqdnNpO1xuLVx0dTMyIGksIG9mZiwgc2Vlbl9tYXNrID0gMDtcbitcdHUzMiBpLCBvZmY7XG4gXG4gXHRmb3JfZWFjaF92c2koaSwgdCwgdnNpKSB7XG4gXHRcdGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdmFyID0gYnRmX3R5cGVfYnlfaWQoYnRmLCB2c2ktXHUwMDNldHlwZSk7XG5AQCAtMzkzMyw3ICszOTMzLDcgQEAgc3RhdGljIGludCBidGZfZmluZF9kYXRhc2VjX3Zhcihjb25zdCBzdHJ1Y3QgYnRmICpidGYsIGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdCxcbiBcbiBcdFx0b2ZmID0gdnNpLVx1MDAzZW9mZnNldDtcbiBcdFx0cmV0ID0gYnRmX2ZpbmRfZmllbGRfb25lKGJ0ZiwgdmFyLCB2YXJfdHlwZSwgLTEsIG9mZiwgdnNpLVx1MDAzZXNpemUsXG4tXHRcdFx0XHRcdCBmaWVsZF9tYXNrLCBcdTAwMjZzZWVuX21hc2ssXG4rXHRcdFx0XHRcdCBmaWVsZF9tYXNrLCBzZWVuX21hc2ssXG4gXHRcdFx0XHRcdCBcdTAwMjZpbmZvW2lkeF0sIGluZm9fY250IC0gaWR4LFxuIFx0XHRcdFx0XHQgbGV2ZWwpO1xuIFx0XHRpZiAocmV0IFx1MDAzYyAwKVxuQEAgLTM5NDcsMTAgKzM5NDcsMTIgQEAgc3RhdGljIGludCBidGZfZmluZF9maWVsZChjb25zdCBzdHJ1Y3QgYnRmICpidGYsIGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdCxcbiBcdFx0XHQgIHUzMiBmaWVsZF9tYXNrLCBzdHJ1Y3QgYnRmX2ZpZWxkX2luZm8gKmluZm8sXG4gXHRcdFx0ICBpbnQgaW5mb19jbnQpXG4ge1xuK1x0dTMyIHNlZW5fbWFzayA9IDA7XG4rXG4gXHRpZiAoX19idGZfdHlwZV9pc19zdHJ1Y3QodCkpXG4tXHRcdHJldHVybiBidGZfZmluZF9zdHJ1Y3RfZmllbGQoYnRmLCB0LCBmaWVsZF9tYXNrLCBpbmZvLCBpbmZvX2NudCwgMCk7XG4rXHRcdHJldHVybiBidGZfZmluZF9zdHJ1Y3RfZmllbGQoYnRmLCB0LCBmaWVsZF9tYXNrLCBpbmZvLCBpbmZvX2NudCwgMCwgXHUwMDI2c2Vlbl9tYXNrKTtcbiBcdGVsc2UgaWYgKGJ0Zl90eXBlX2lzX2RhdGFzZWModCkpXG4tXHRcdHJldHVybiBidGZfZmluZF9kYXRhc2VjX3ZhcihidGYsIHQsIGZpZWxkX21hc2ssIGluZm8sIGluZm9fY250LCAwKTtcbitcdFx0cmV0dXJuIGJ0Zl9maW5kX2RhdGFzZWNfdmFyKGJ0ZiwgdCwgZmllbGRfbWFzaywgaW5mbywgaW5mb19jbnQsIDAsIFx1MDAyNnNlZW5fbWFzayk7XG4gXHRyZXR1cm4gLUVJTlZBTDtcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnRmLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9idGYuY1xuaW5kZXggNjY4NTVjYmQ2YjczZjYuLjAyYzRjNjBjODQxZWVmIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnRmLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zi5jXG5AQCAtNDI1MCw2ICs0MjUwLDMyIEBAIHN0YXRpYyBzdHJ1Y3QgYnRmX3Jhd190ZXN0IHJhd190ZXN0c1tdID0ge1xuIFx0Lm1heF9lbnRyaWVzID0gMSxcbiB9LFxuIFxuKy8qIHN0cnVjdCBpbm5lciB7XG4rICogICAgIHN0cnVjdCBicGZfc3Bpbl9sb2NrIGxvY2s7XG4rICogfTtcbisgKlxuKyAqIHN0cnVjdCB2YWx1ZSB7XG4rICogICAgIHN0cnVjdCBicGZfc3Bpbl9sb2NrIGxvY2s7XG4rICogICAgIHN0cnVjdCBpbm5lciBuZXN0ZWQ7XG4rICogfTtcbisgKi9cbit7XG4rXHQuZGVzY3IgPSBcInN0cnVjdCB0ZXN0IGR1cGxpY2F0ZSBuZXN0ZWQgdW5pcXVlIGZpZWxkc1wiLFxuK1x0LnJhd190eXBlcyA9IHtcbitcdFx0QlRGX1RZUEVfSU5UX0VOQyhOQU1FX1RCRCwgQlRGX0lOVF9TSUdORUQsIDAsIDMyLCA0KSxcdC8qIFsxXSAqL1xuK1x0XHRCVEZfU1RSVUNUX0VOQyhOQU1FX1RCRCwgMSwgNCksXHRcdFx0XHQvKiBbMl0gKi9cbitcdFx0QlRGX01FTUJFUl9FTkMoTkFNRV9UQkQsIDEsIDApLFxuK1x0XHRCVEZfU1RSVUNUX0VOQyhOQU1FX1RCRCwgMSwgNCksXHRcdFx0XHQvKiBbM10gKi9cbitcdFx0QlRGX01FTUJFUl9FTkMoTkFNRV9UQkQsIDIsIDApLFxuK1x0XHRCVEZfU1RSVUNUX0VOQyhOQU1FX1RCRCwgMiwgOCksXHRcdFx0XHQvKiBbNF0gKi9cbitcdFx0QlRGX01FTUJFUl9FTkMoTkFNRV9UQkQsIDIsIDApLFxuK1x0XHRCVEZfTUVNQkVSX0VOQyhOQU1FX1RCRCwgMywgMzIpLFxuK1x0XHRCVEZfRU5EX1JBVyxcbitcdH0sXG4rXHRCVEZfU1RSX1NFQyhcIlxcMGludFxcMGJwZl9zcGluX2xvY2tcXDB2YWxcXDBpbm5lclxcMGxvY2tcXDB2YWx1ZVxcMGxvY2tcXDBuZXN0ZWRcIiksXG4rXHQuYnRmX2xvYWRfZXJyID0gdHJ1ZSxcbit9LFxuK1xuIHtcbiBcdC5kZXNjciA9IFwic3RydWN0IHRlc3QgcmVwZWF0ZWQgZmllbGRzIGNvdW50IG92ZXJmbG93XCIsXG4gXHQucmF3X3R5cGVzID0ge1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMTU6MDc6MDAuMzc0Mzg4ODMxWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjkzNTI2Mzg4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBLZXJuZWwgQlRGIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBhZmZlY3RpbmcgdGhlIGtlcm5lbCwgc3BlY2lmaWNhbGx5IHdpdGhpbiBga2VybmVsL2JwZi9idGYuY2AuIEl0IGxvb2tzIGxpa2UgdGhleSd2ZSBtb2RpZmllZCB0aGUgc2lnbmF0dXJlcyBvZiBgYnRmX2ZpbmRfc3RydWN0X2ZpZWxkYCwgYGJ0Zl9maW5kX25lc3RlZF9zdHJ1Y3RgLCBhbmQgYGJ0Zl9maW5kX2RhdGFzZWNfdmFyYC4gVGhleSd2ZSBzd2l0Y2hlZCBmcm9tIGxvY2FsIGBzZWVuX21hc2tgIHZhcmlhYmxlcyB0byBwYXNzaW5nIGEgYHUzMiAqc2Vlbl9tYXNrYCBwb2ludGVyLiBBaCwgcmlnaHQsIEkgc2VlLiBUaGlzIGlzIHRvIGFkZHJlc3MgYSBwcm9ibGVtIHdpdGggZHVwbGljYXRlIHVuaXF1ZSBmaWVsZHMsIGxpa2UgYSBgYnBmX3NwaW5fbG9ja2AsIGdldHRpbmcgbmVzdGVkIHdpdGhpbiBzdHJ1Y3RzLiBUaGUgb3JpZ2luYWwgaW1wbGVtZW50YXRpb24sIHdpdGggaXRzIGxvY2FsIG1hc2tzLCB3b3VsZG4ndCBjYXRjaCB0aGVzZSBkdXBsaWNhdGVzIGFjcm9zcyBtdWx0aXBsZSBsZXZlbHMgb2YgbmVzdGluZy4gQnkgc2hhcmluZyB0aGUgYHNlZW5fbWFza2AgcG9pbnRlciwgdGhleSdyZSBlbnN1cmluZyB0aGF0IHRoZSB3aG9sZSBoaWVyYXJjaHkgaXMgY2hlY2tlZCwgd2hpY2ggbWFrZXMgc2Vuc2UuXG5cblNvLCBmdW5jdGlvbmFsbHksIHRoaXMgaXMgYSBjaGFuZ2Ugd2l0aGluIHRoZSBCUEYgc3Vic3lzdGVtLCBhbmQsIG1vcmUgcHJlY2lzZWx5LCByZWxhdGVkIHRvIEJURiBwYXJzaW5nIGFuZCB2YWxpZGF0aW9uLiBEZWZpbml0ZWx5IHNvbWV0aGluZyB3ZSBuZWVkIHRvIGNvbnNpZGVyIGZvciBmdXp6aW5nLiBHaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBjaGFuZ2UsIGl0J3MgZWFzaWx5IHJlYWNoYWJsZSwgc28gd2Ugc2hvdWxkIGZvY3VzIHNvbWUgYXR0ZW50aW9uIGhlcmUuXG5cbk5vdywgbGV0J3MgbmFpbCBkb3duIHRoZSBzcGVjaWZpYyBmdW5jdGlvbnMgd2UgbmVlZCB0byBmb2N1cyBvbiBmb3IgZnV6emluZy4gV2UgaGF2ZSB0aG9zZSBwcmltYXJ5IGZ1bmN0aW9uczogYGJ0Zl9maW5kX3N0cnVjdF9maWVsZGAsIGBidGZfZmluZF9uZXN0ZWRfc3RydWN0YCwgYW5kIGBidGZfZmluZF9kYXRhc2VjX3ZhcmAsIGFuZCBgYnRmX2ZpbmRfZmllbGRfb25lYCwgYW5kIGBidGZfZmluZF9maWVsZGAuIE5leHQgc3RlcCwgSSBuZWVkIHRvIGNoZWNrIGlmIHRoZXkncmUgc3RhdGljIG9yIGV4cG9ydGVkLiBMZXQncyBzZWUuLi4gYGJ0Zl9maW5kX3N0cnVjdF9maWVsZGAgaXMgc3RhdGljLiBTYW1lIGZvciBgYnRmX2ZpbmRfbmVzdGVkX3N0cnVjdGAgYW5kIGBidGZfZmluZF9kYXRhc2VjX3ZhcmAuIE5vdywgYGJ0Zl9maW5kX2ZpZWxkYC4uLiBIYW5nIG9uLCBJIHRoaW5rIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCBsYXN0IG9uZS4gTGV0J3MgZ28gbG9vayBhdCBga2VybmVsL2JwZi9idGYuY2AgZGlyZWN0bHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4NDQsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNjMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQxNTowNzowNy4zMDk2NTQ4NTZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkxMTI4MjQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJ0Zl9maW5kX2ZpZWxkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvYnRmLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9idGYuYz0zNzYyPXN0YXRpYyBpbnQgYnRmX2ZpbmRfbmVzdGVkX3N0cnVjdChjb25zdCBzdHJ1Y3QgYnRmICpidGYsIGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdCxcXG4tLVxcbmtlcm5lbC9icGYvYnRmLmMtMzc5NC1cXG5rZXJuZWwvYnBmL2J0Zi5jOjM3OTU6c3RhdGljIGludCBidGZfZmluZF9maWVsZF9vbmUoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLFxcbmtlcm5lbC9icGYvYnRmLmMtMzc5Ni1cXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKnZhcixcXG4tLVxcbmtlcm5lbC9icGYvYnRmLmM9Mzg5Mj1zdGF0aWMgaW50IGJ0Zl9maW5kX3N0cnVjdF9maWVsZChjb25zdCBzdHJ1Y3QgYnRmICpidGYsXFxuLS1cXG5rZXJuZWwvYnBmL2J0Zi5jLTM5MTAtXFxua2VybmVsL2JwZi9idGYuYzozOTExOlxcdFxcdHJldCA9IGJ0Zl9maW5kX2ZpZWxkX29uZShidGYsIHQsIG1lbWJlcl90eXBlLCBpLFxcbmtlcm5lbC9icGYvYnRmLmMtMzkxMi1cXHRcXHRcXHRcXHRcXHQgb2ZmLCAwLFxcbi0tXFxua2VybmVsL2JwZi9idGYuYz0zOTIyPXN0YXRpYyBpbnQgYnRmX2ZpbmRfZGF0YXNlY192YXIoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCBjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKnQsXFxuLS1cXG5rZXJuZWwvYnBmL2J0Zi5jLTM5MzQtXFx0XFx0b2ZmID0gdnNpLVxcdTAwM2VvZmZzZXQ7XFxua2VybmVsL2JwZi9idGYuYzozOTM1OlxcdFxcdHJldCA9IGJ0Zl9maW5kX2ZpZWxkX29uZShidGYsIHZhciwgdmFyX3R5cGUsIC0xLCBvZmYsIHZzaS1cXHUwMDNlc2l6ZSxcXG5rZXJuZWwvYnBmL2J0Zi5jLTM5MzYtXFx0XFx0XFx0XFx0XFx0IGZpZWxkX21hc2ssIHNlZW5fbWFzayxcXG4tLVxcbmtlcm5lbC9icGYvYnRmLmMtMzk0NS1cXG5rZXJuZWwvYnBmL2J0Zi5jOjM5NDY6c3RhdGljIGludCBidGZfZmluZF9maWVsZChjb25zdCBzdHJ1Y3QgYnRmICpidGYsIGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdCxcXG5rZXJuZWwvYnBmL2J0Zi5jLTM5NDctXFx0XFx0XFx0ICB1MzIgZmllbGRfbWFzaywgc3RydWN0IGJ0Zl9maWVsZF9pbmZvICppbmZvLFxcbi0tXFxua2VybmVsL2JwZi9idGYuYz00MTIwPXN0cnVjdCBidGZfcmVjb3JkICpidGZfcGFyc2VfZmllbGRzKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgY29uc3Qgc3RydWN0IGJ0Zl90eXBlICp0LFxcbi0tXFxua2VybmVsL2JwZi9idGYuYy00MTI3LVxcbmtlcm5lbC9icGYvYnRmLmM6NDEyODpcXHRyZXQgPSBidGZfZmluZF9maWVsZChidGYsIHQsIGZpZWxkX21hc2ssIGluZm9fYXJyLCBBUlJBWV9TSVpFKGluZm9fYXJyKSk7XFxua2VybmVsL2JwZi9idGYuYy00MTI5LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQxNTowNzowNy41MDA3OTA3NTJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTAyOTM3Mjk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIEJURiBGaWVsZCBQYXJzaW5nIExvZ2ljKipcblxuUmlnaHQsIGxldCdzIHRyYWNlIHRoaXMuIGBidGZfcGFyc2VfZmllbGRzYCBpcyBjbGVhcmx5IHRoZSB3b3JraG9yc2UgZm9yIHBhcnNpbmcgZmllbGRzIGluIHRoZSBCVEYgKEJQRiBUeXBlIEZvcm1hdCkgZGF0YS4gQW5kIGl0IHNlZW1zIHRvIGxldmVyYWdlIGBidGZfZmluZF9maWVsZGAgYXMgYSBoZWxwZXIgZnVuY3Rpb24uIFRoZSBuYXR1cmFsIG5leHQgc3RlcCBpcyB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIHRoZSBjYWxsaW5nIGZ1bmN0aW9uLiBTbywgSSBuZWVkIHRvIHBpbnBvaW50IGV2ZXJ5d2hlcmUgYGJ0Zl9wYXJzZV9maWVsZHNgIGlzIGludm9rZWQgd2l0aGluIHRoZSBjb2RlYmFzZS4gS25vd2luZyB3aGVyZSBpdCdzIHVzZWQgaXMgY3J1Y2lhbCB0byB1bmRlcnN0YW5kaW5nIHRoZSBkaWZmZXJlbnQgc2NlbmFyaW9zIGFuZCBkYXRhIHN0cnVjdHVyZXMgaXQgb3BlcmF0ZXMgb24uIFRoaXMgd2lsbCBleHBvc2UgdGhlIGxhcmdlciBhcmNoaXRlY3R1cmUgb2YgaG93IHRoZSBCVEYgZGF0YSBpcyBwcm9jZXNzZWQgYW5kIGludGVycHJldGVkIGJ5IHRoZSBCUEYgaW5mcmFzdHJ1Y3R1cmUuIExldCdzIHNlZSB3aGVyZSB0aG9zZSBjYWxscyBhcmUgbWFkZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTI5NywiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDE1OjA3OjEwLjQwMzcyOTY1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3MDQ2MzE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJ0Zl9wYXJzZV9maWVsZHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9idGYuYz00MTA4PXN0YXRpYyBpbnQgYnRmX2ZpZWxkX2NtcChjb25zdCB2b2lkICpfYSwgY29uc3Qgdm9pZCAqX2IsIGNvbnN0IHZvaWQgKnByaXYpXFxuLS1cXG5rZXJuZWwvYnBmL2J0Zi5jLTQxMTktXFxua2VybmVsL2JwZi9idGYuYzo0MTIwOnN0cnVjdCBidGZfcmVjb3JkICpidGZfcGFyc2VfZmllbGRzKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgY29uc3Qgc3RydWN0IGJ0Zl90eXBlICp0LFxcbmtlcm5lbC9icGYvYnRmLmMtNDEyMS1cXHRcXHRcXHRcXHQgICAgdTMyIGZpZWxkX21hc2ssIHUzMiB2YWx1ZV9zaXplKVxcbi0tXFxua2VybmVsL2JwZi9idGYuYz01NzgwPWJ0Zl9wYXJzZV9zdHJ1Y3RfbWV0YXMoc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZywgc3RydWN0IGJ0ZiAqYnRmKVxcbi0tXFxua2VybmVsL2JwZi9idGYuYy01ODgwLVxcdFxcdHR5cGUtXFx1MDAzZWJ0Zl9pZCA9IGk7XFxua2VybmVsL2JwZi9idGYuYzo1ODgxOlxcdFxcdHJlY29yZCA9IGJ0Zl9wYXJzZV9maWVsZHMoYnRmLCB0LCBCUEZfU1BJTl9MT0NLIHwgQlBGX1JFU19TUElOX0xPQ0sgfCBCUEZfTElTVF9IRUFEIHwgQlBGX0xJU1RfTk9ERSB8XFxua2VybmVsL2JwZi9idGYuYy01ODgyLVxcdFxcdFxcdFxcdFxcdFxcdCAgQlBGX1JCX1JPT1QgfCBCUEZfUkJfTk9ERSB8IEJQRl9SRUZDT1VOVCB8XFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz03NjA9Ym9vbCBidGZfcmVjb3JkX2VxdWFsKGNvbnN0IHN0cnVjdCBidGZfcmVjb3JkICpyZWNfYSwgY29uc3Qgc3RydWN0IGJ0Zl9yZWNvcmQgKnJlY19iKVxcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtNzcxLVxcdHNpemUgPSBzdHJ1Y3Rfc2l6ZShyZWNfYSwgZmllbGRzLCByZWNfYS1cXHUwMDNlY250KTtcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzo3NzI6XFx0LyogYnRmX3BhcnNlX2ZpZWxkcyB1c2VzIGt6YWxsb2MgdG8gYWxsb2NhdGUgYSBidGZfcmVjb3JkLCBzbyB1bnVzZWRcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy03NzMtXFx0ICogbWVtYmVycyBhcmUgemVyb2VkIG91dC4gU28gbWVtY21wIGlzIHNhZmUgdG8gZG8gd2l0aG91dCB3b3JyeWluZ1xcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmM9MTI0Mz1zdGF0aWMgaW50IG1hcF9jaGVja19idGYoc3RydWN0IGJwZl9tYXAgKm1hcCwgc3RydWN0IGJwZl90b2tlbiAqdG9rZW4sXFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xMjY0LVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjEyNjU6XFx0bWFwLVxcdTAwM2VyZWNvcmQgPSBidGZfcGFyc2VfZmllbGRzKGJ0ZiwgdmFsdWVfdHlwZSxcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xMjY2LVxcdFxcdFxcdFxcdCAgICAgICBCUEZfU1BJTl9MT0NLIHwgQlBGX1JFU19TUElOX0xPQ0sgfCBCUEZfVElNRVIgfCBCUEZfS1BUUiB8IEJQRl9MSVNUX0hFQUQgfFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQxNTowNzoxMC40NjA3ODAzOTlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODg4NzgyMTA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYnRmX3BhcnNlX2ZpZWxkcyBGdW5jdGlvbioqXG5cbk9rYXksIHNvIGBidGZfcGFyc2VfZmllbGRzYCBpcyBkZWZpbml0ZWx5IHNpZ25pZmljYW50OyBpdCBzZWVtcyB0byBiZSBleHBvcnRlZCBvciwgYXQgdGhlIHZlcnkgbGVhc3QsIGFjdGl2ZWx5IHVzZWQgYWNyb3NzIG11bHRpcGxlIGZpbGVzIHdpdGhpbiBga2VybmVsL2JwZi9gLiBUaGlzIHdhcnJhbnRzIGNsb3NlciBpbnNwZWN0aW9uLiBNeSBpbW1lZGlhdGUgdGhvdWdodHMgYXJlIHRvIHRyYWNlIGl0cyB1c2FnZS5cblxuQWhhISBJdCdzIGNhbGxlZCBmcm9tIGBtYXBfY2hlY2tfYnRmYCB3aXRoaW4gYGtlcm5lbC9icGYvc3lzY2FsbC5jYCBhbmQgYWxzbyBmcm9tIGBidGZfcGFyc2Vfc3RydWN0X21ldGFzYCBpbiBga2VybmVsL2JwZi9idGYuY2AuIFRoYXQgZ2l2ZXMgbWUgYSBmZXcgc29saWQgc3RhcnRpbmcgcG9pbnRzIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUuXG5cbk5vdywgd2hpY2ggZnVuY3Rpb25zIGhhdmUgYmVlbiBtb2RpZmllZD8gTG9va3MgbGlrZSB0aGUgY2hhbmdlcyBhcmUgY29uY2VudHJhdGVkIG9uOlxuKiAgIGBidGZfZmluZF9zdHJ1Y3RfZmllbGRgXG4qICAgYGJ0Zl9maW5kX25lc3RlZF9zdHJ1Y3RgXG4qICAgYGJ0Zl9maW5kX2RhdGFzZWNfdmFyYFxuKiAgIGBidGZfZmluZF9maWVsZF9vbmVgXG4qICAgYGJ0Zl9maW5kX2ZpZWxkYFxuXG5JbnRlcmVzdGluZy4gVGhlc2UgYXJlIGFsbCBzdGF0aWMgZnVuY3Rpb25zLCBhbmQgdGhleSdyZSBhbGwgZGVmaW5lZCB3aXRoaW4gYGtlcm5lbC9icGYvYnRmLmNgLiBTbywgdGhleSdyZSBwcm9iYWJseSBoZWxwZXIgZnVuY3Rpb25zIHdpdGhpbiB0aGUgc2FtZSBtb2R1bGUsIHdoaWNoIGlzIGNvbW1vbiBpbiBjb2RlYmFzZXMuXG5cbldpdGggdGhpcyB1bmRlcnN0YW5kaW5nLCBJIGNhbiBzZWUgaG93IEkgY291bGQgemVybyBpbiBvbiBgYnRmX3BhcnNlX2ZpZWxkc2AgdG8gZmluZCBvdXQgd2hhdCBpdCBkb2VzIGluIGRldGFpbC4gSSBjb3VsZCBhbHNvIGludmVzdGlnYXRlIGBidGZfcGFyc2Vfc3RydWN0X21ldGFzYCwgb3IgcGVyaGFwcyBldmVuIGxvb2sgYXQgYG1hcF9jaGVja19idGZgIHdoaWNoIGNhbGxzIGBidGZfcGFyc2VfZmllbGRzYC4gTXkgZmlyc3Qgc3RlcCwgdGhvdWdoLCBpcyB0byBjb25maXJtIHdoZXRoZXIgYGJ0Zl9wYXJzZV9maWVsZHNgIGlzIGV4cG9ydGVkLCBhcyBpdCBtaWdodCBpbmZvcm0gaG93IEkgc2hvdWxkIGxvb2sgYXQgdGhlIGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxNDcsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMTU6MDc6MTUuMzQ5NTY1MjA2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5ODQ1MTk5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJFWFBPUlRfU1lNQk9MLipidGZfcGFyc2VfZmllbGRzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQxNTowNzoxNS40MDk0MTg2ODVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjYzMzMxMDExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqQW5hbHl6aW5nIEtlcm5lbCBGdW5jdGlvbiBTY29wZSoqXG5cblJpZ2h0LCBzbyB0aGlzIGZ1bmN0aW9uIGlzbid0IGJlaW5nIGV4cGxpY2l0bHkgZXhwb3J0ZWQgdG8gYW55IHBhcnRpY3VsYXIgbW9kdWxlOyBpdCdzIGhhbmdpbmcgb3V0IGdsb2JhbGx5LCB3aXRoaW4gdGhlIGtlcm5lbCBpdHNlbGYsIGJ1dCBpdCdzICpub3QqIHN0YXRpYywgd2hpY2ggZ2l2ZXMgaXQgYSBkaWZmZXJlbnQgY29ubm90YXRpb24uIFRoYXQncyBpbnRlcmVzdGluZywgYW5kIGl0IHN1Z2dlc3RzIHBvdGVudGlhbCBhY2Nlc3NpYmlsaXR5IGZyb20gZGlmZmVyZW50IHBhcnRzIG9mIHRoZSBrZXJuZWwuIFRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIHNjb3BlLCBteSBuZXh0IHN0ZXAgaXMgY2xlYXIuIEkgbmVlZCB0byBkaXZlIHN0cmFpZ2h0IGludG8gdGhlIGRlZmluaXRpb24gb2YgYGJ0Zl9wYXJzZV9maWVsZHNgLiBVbmRlcnN0YW5kaW5nICpob3cqIGl0J3MgZGVmaW5lZCB3aWxsIHNoZWQgbGlnaHQgb24gd2hlcmUgYW5kIGhvdyBpdCdzIGludGVuZGVkIHRvIGJlIHVzZWQgYW5kLCBjb25zZXF1ZW50bHksIGl0cyBicm9hZGVyIGltcGFjdCB3aXRoaW4gdGhlIGtlcm5lbCdzIGFyY2hpdGVjdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Njc3OSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDE1OjA3OjE4LjY3Mjc1MTU4NloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTk3NzQ3MjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RydWN0IGJ0Zl9yZWNvcmQgXFxcXCpidGZfcGFyc2VfZmllbGRzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvYnRmLmM9NDEwOD1zdGF0aWMgaW50IGJ0Zl9maWVsZF9jbXAoY29uc3Qgdm9pZCAqX2EsIGNvbnN0IHZvaWQgKl9iLCBjb25zdCB2b2lkICpwcml2KVxcbi0tXFxua2VybmVsL2JwZi9idGYuYy00MTE5LVxcbmtlcm5lbC9icGYvYnRmLmM6NDEyMDpzdHJ1Y3QgYnRmX3JlY29yZCAqYnRmX3BhcnNlX2ZpZWxkcyhjb25zdCBzdHJ1Y3QgYnRmICpidGYsIGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdCxcXG5rZXJuZWwvYnBmL2J0Zi5jLTQxMjEtXFx0XFx0XFx0XFx0ICAgIHUzMiBmaWVsZF9tYXNrLCB1MzIgdmFsdWVfc2l6ZSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMTU6MDc6MTguNzMyNTMyNTE1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5NjgxMzYzMTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipJbml0aWFsIEFzc2Vzc21lbnQ6IE5hdmlnYXRpbmcgQlRGIENvZGUqKlxuXG5SaWdodCwgc28gdGhpcyBpc24ndCBhIHNpbXBsZSwgdW5jaGFuZ2luZyBzaXR1YXRpb247IHRoZXJlJ3Mgc29tZSBkeW5hbWljIGFzcGVjdCB0byB0aGlzIHByb2JsZW0uIFRoYXQgc3VnZ2VzdHMgd2UgY2FuJ3QganVzdCBsb29rIGluIG9uZSBwbGFjZSBhbmQgYmUgZG9uZSB3aXRoIGl0LiBUaGUgdmFyaWFiaWxpdHkgbWVhbnMgd2UgbmVlZCB0byBkcmlsbCBkb3duIGFuZCB1bmRlcnN0YW5kIHRoZSBmbG93LiBNeSBpbnN0aW5jdCBpcyB0aGF0IHRoZXJlIGFyZSBhIGZldyBrZXkgZnVuY3Rpb25zIHRvIGV4YW1pbmUuIEZpcnN0LCBgYnRmX3BhcnNlX2ZpZWxkc2AgLSB0aGF0IGZlZWxzIGxpa2UgYSBnb29kIGNlbnRyYWwgcG9pbnQsIGxpa2UgYSBcImZvY3VzIHN5bWJvbFwiIGZvciB3aGVyZSB3ZSBjYW4gemVybyBpbiBvbiB0aGUgcmVsZXZhbnQgZnVuY3Rpb25hbGl0eS4gQWRkaXRpb25hbGx5LCBJIHRoaW5rIGBidGZfcGFyc2Vfc3RydWN0X21ldGFzYCBjb3VsZCBvZmZlciBzb21lIHZhbHVhYmxlIGNvbnRleHQuIEFub3RoZXIgbGlrZWx5IGNhbmRpZGF0ZSBzZWVtcyB0byBiZSBgbWFwX2NoZWNrX2J0ZmAuIFJpZ2h0LCBsZXQncyBzdGFydCBieSBjaGVja2luZyBgbWFwX2NoZWNrX2J0ZmAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcxNTQsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQxNTowNzoyMi43MDA2NzExMjFaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5MjgxMDk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hcF9jaGVja19idGZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9hcmVuYS5jPTQwMj1zdGF0aWMgbG9uZyBhcmVuYV9tYXBfdXBkYXRlX2VsZW0oc3RydWN0IGJwZl9tYXAgKm1hcCwgdm9pZCAqa2V5LFxcbi0tXFxua2VybmVsL2JwZi9hcmVuYS5jLTQwNy1cXG5rZXJuZWwvYnBmL2FyZW5hLmM6NDA4OnN0YXRpYyBpbnQgYXJlbmFfbWFwX2NoZWNrX2J0ZihzdHJ1Y3QgYnBmX21hcCAqbWFwLCBjb25zdCBzdHJ1Y3QgYnRmICpidGYsXFxua2VybmVsL2JwZi9hcmVuYS5jLTQwOS1cXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IGJ0Zl90eXBlICprZXlfdHlwZSwgY29uc3Qgc3RydWN0IGJ0Zl90eXBlICp2YWx1ZV90eXBlKVxcbi0tXFxua2VybmVsL2JwZi9hcmVuYS5jPTYzMT1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgYXJlbmFfbWFwX29wcyA9IHtcXG4tLVxcbmtlcm5lbC9icGYvYXJlbmEuYy02NDQtXFx0Lm1hcF9kZWxldGVfZWxlbSA9IGFyZW5hX21hcF9kZWxldGVfZWxlbSxcXG5rZXJuZWwvYnBmL2FyZW5hLmM6NjQ1OlxcdC5tYXBfY2hlY2tfYnRmID0gYXJlbmFfbWFwX2NoZWNrX2J0ZixcXG5rZXJuZWwvYnBmL2FyZW5hLmMtNjQ2LVxcdC5tYXBfbWVtX3VzYWdlID0gYXJlbmFfbWFwX21lbV91c2FnZSxcXG4tLVxcbmtlcm5lbC9icGYvYXJyYXltYXAuYz01MjY9c3RhdGljIHZvaWQgcGVyY3B1X2FycmF5X21hcF9zZXFfc2hvd19lbGVtKHN0cnVjdCBicGZfbWFwICptYXAsIHZvaWQgKmtleSxcXG4tLVxcbmtlcm5lbC9icGYvYXJyYXltYXAuYy01NDgtXFxua2VybmVsL2JwZi9hcnJheW1hcC5jOjU0OTpzdGF0aWMgaW50IGFycmF5X21hcF9jaGVja19idGYoc3RydWN0IGJwZl9tYXAgKm1hcCxcXG5rZXJuZWwvYnBmL2FycmF5bWFwLmMtNTUwLVxcdFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgYnRmICpidGYsXFxuLS1cXG5rZXJuZWwvYnBmL2FycmF5bWFwLmM9ODAxPWNvbnN0IHN0cnVjdCBicGZfbWFwX29wcyBhcnJheV9tYXBfb3BzID0ge1xcbi0tXFxua2VybmVsL2JwZi9hcnJheW1hcC5jLTgxNS1cXHQubWFwX3NlcV9zaG93X2VsZW0gPSBhcnJheV9tYXBfc2VxX3Nob3dfZWxlbSxcXG5rZXJuZWwvYnBmL2FycmF5bWFwLmM6ODE2OlxcdC5tYXBfY2hlY2tfYnRmID0gYXJyYXlfbWFwX2NoZWNrX2J0ZixcXG5rZXJuZWwvYnBmL2FycmF5bWFwLmMtODE3LVxcdC5tYXBfbG9va3VwX2JhdGNoID0gZ2VuZXJpY19tYXBfbG9va3VwX2JhdGNoLFxcbi0tXFxua2VybmVsL2JwZi9hcnJheW1hcC5jPTgyNz1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgcGVyY3B1X2FycmF5X21hcF9vcHMgPSB7XFxuLS1cXG5rZXJuZWwvYnBmL2FycmF5bWFwLmMtODM4LVxcdC5tYXBfc2VxX3Nob3dfZWxlbSA9IHBlcmNwdV9hcnJheV9tYXBfc2VxX3Nob3dfZWxlbSxcXG5rZXJuZWwvYnBmL2FycmF5bWFwLmM6ODM5OlxcdC5tYXBfY2hlY2tfYnRmID0gYXJyYXlfbWFwX2NoZWNrX2J0ZixcXG5rZXJuZWwvYnBmL2FycmF5bWFwLmMtODQwLVxcdC5tYXBfbG9va3VwX2JhdGNoID0gZ2VuZXJpY19tYXBfbG9va3VwX2JhdGNoLFxcbi0tXFxua2VybmVsL2JwZi9hcnJheW1hcC5jPTEzMjI9Y29uc3Qgc3RydWN0IGJwZl9tYXBfb3BzIHBlcmZfZXZlbnRfYXJyYXlfbWFwX29wcyA9IHtcXG4tLVxcbmtlcm5lbC9icGYvYXJyYXltYXAuYy0xMzMyLVxcdC5tYXBfcmVsZWFzZSA9IHBlcmZfZXZlbnRfZmRfYXJyYXlfcmVsZWFzZSxcXG5rZXJuZWwvYnBmL2FycmF5bWFwLmM6MTMzMzpcXHQubWFwX2NoZWNrX2J0ZiA9IG1hcF9jaGVja19ub19idGYsXFxua2VybmVsL2JwZi9hcnJheW1hcC5jLTEzMzQtXFx0Lm1hcF9tZW1fdXNhZ2UgPSBhcnJheV9tYXBfbWVtX3VzYWdlLFxcbi0tXFxua2VybmVsL2JwZi9hcnJheW1hcC5jPTEzNTg9Y29uc3Qgc3RydWN0IGJwZl9tYXBfb3BzIGNncm91cF9hcnJheV9tYXBfb3BzID0ge1xcbi0tXFxua2VybmVsL2JwZi9hcnJheW1hcC5jLTEzNjctXFx0Lm1hcF9mZF9wdXRfcHRyID0gY2dyb3VwX2ZkX2FycmF5X3B1dF9wdHIsXFxua2VybmVsL2JwZi9hcnJheW1hcC5jOjEzNjg6XFx0Lm1hcF9jaGVja19idGYgPSBtYXBfY2hlY2tfbm9fYnRmLFxcbmtlcm5lbC9icGYvYXJyYXltYXAuYy0xMzY5LVxcdC5tYXBfbWVtX3VzYWdlID0gYXJyYXlfbWFwX21lbV91c2FnZSxcXG4tLVxcbmtlcm5lbC9icGYvYXJyYXltYXAuYz0xNDQ0PWNvbnN0IHN0cnVjdCBicGZfbWFwX29wcyBhcnJheV9vZl9tYXBzX21hcF9vcHMgPSB7XFxuLS1cXG5rZXJuZWwvYnBmL2FycmF5bWFwLmMtMTQ1Ni1cXHQubWFwX3VwZGF0ZV9iYXRjaCA9IGdlbmVyaWNfbWFwX3VwZGF0ZV9iYXRjaCxcXG5rZXJuZWwvYnBmL2FycmF5bWFwLmM6MTQ1NzpcXHQubWFwX2NoZWNrX2J0ZiA9IG1hcF9jaGVja19ub19idGYsXFxua2VybmVsL2JwZi9hcnJheW1hcC5jLTE0NTgtXFx0Lm1hcF9tZW1fdXNhZ2UgPSBhcnJheV9tYXBfbWVtX3VzYWdlLFxcbi0tXFxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYz0xNzY9c3RhdGljIGxvbmcgYmxvb21fbWFwX3VwZGF0ZV9lbGVtKHN0cnVjdCBicGZfbWFwICptYXAsIHZvaWQgKmtleSxcXG4tLVxcbmtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmMtMTgyLVxcbmtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmM6MTgzOnN0YXRpYyBpbnQgYmxvb21fbWFwX2NoZWNrX2J0ZihzdHJ1Y3QgYnBmX21hcCAqbWFwLFxcbmtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmMtMTg0LVxcdFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgYnRmICpidGYsXFxuLS1cXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jPTIwND1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgYmxvb21fZmlsdGVyX21hcF9vcHMgPSB7XFxuLS1cXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jLTIxNS1cXHQubWFwX2RlbGV0ZV9lbGVtID0gYmxvb21fbWFwX2RlbGV0ZV9lbGVtLFxcbmtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmM6MjE2OlxcdC5tYXBfY2hlY2tfYnRmID0gYmxvb21fbWFwX2NoZWNrX2J0ZixcXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jLTIxNy1cXHQubWFwX21lbV91c2FnZSA9IGJsb29tX21hcF9tZW1fdXNhZ2UsXFxuLS1cXG5rZXJuZWwvYnBmL2JwZl9jZ3JwX3N0b3JhZ2UuYz0xNjA9Y29uc3Qgc3RydWN0IGJwZl9tYXBfb3BzIGNncnBfc3RvcmFnZV9tYXBfb3BzID0ge1xcbi0tXFxua2VybmVsL2JwZi9icGZfY2dycF9zdG9yYWdlLmMtMTY4LVxcdC5tYXBfZGVsZXRlX2VsZW0gPSBicGZfY2dycF9zdG9yYWdlX2RlbGV0ZV9lbGVtLFxcbmtlcm5lbC9icGYvYnBmX2NncnBfc3RvcmFnZS5jOjE2OTpcXHQubWFwX2NoZWNrX2J0ZiA9IGJwZl9sb2NhbF9zdG9yYWdlX21hcF9jaGVja19idGYsXFxua2VybmVsL2JwZi9icGZfY2dycF9zdG9yYWdlLmMtMTcwLVxcdC5tYXBfbWVtX3VzYWdlID0gYnBmX2xvY2FsX3N0b3JhZ2VfbWFwX21lbV91c2FnZSxcXG4tLVxcbmtlcm5lbC9icGYvYnBmX2lub2RlX3N0b3JhZ2UuYz0xOTg9Y29uc3Qgc3RydWN0IGJwZl9tYXBfb3BzIGlub2RlX3N0b3JhZ2VfbWFwX29wcyA9IHtcXG4tLVxcbmtlcm5lbC9icGYvYnBmX2lub2RlX3N0b3JhZ2UuYy0yMDYtXFx0Lm1hcF9kZWxldGVfZWxlbSA9IGJwZl9mZF9pbm9kZV9zdG9yYWdlX2RlbGV0ZV9lbGVtLFxcbmtlcm5lbC9icGYvYnBmX2lub2RlX3N0b3JhZ2UuYzoyMDc6XFx0Lm1hcF9jaGVja19idGYgPSBicGZfbG9jYWxfc3RvcmFnZV9tYXBfY2hlY2tfYnRmLFxcbmtlcm5lbC9icGYvYnBmX2lub2RlX3N0b3JhZ2UuYy0yMDgtXFx0Lm1hcF9tZW1fdXNhZ2UgPSBicGZfbG9jYWxfc3RvcmFnZV9tYXBfbWVtX3VzYWdlLFxcbi0tXFxua2VybmVsL2JwZi9icGZfaW5zbl9hcnJheS5jPTEzNj1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgaW5zbl9hcnJheV9tYXBfb3BzID0ge1xcbi0tXFxua2VybmVsL2JwZi9icGZfaW5zbl9hcnJheS5jLTE0My1cXHQubWFwX2RlbGV0ZV9lbGVtID0gaW5zbl9hcnJheV9kZWxldGVfZWxlbSxcXG5rZXJuZWwvYnBmL2JwZl9pbnNuX2FycmF5LmM6MTQ0OlxcdC5tYXBfY2hlY2tfYnRmID0gaW5zbl9hcnJheV9jaGVja19idGYsXFxua2VybmVsL2JwZi9icGZfaW5zbl9hcnJheS5jLTE0NS1cXHQubWFwX21lbV91c2FnZSA9IGluc25fYXJyYXlfbWVtX3VzYWdlLFxcbi0tXFxua2VybmVsL2JwZi9icGZfbG9jYWxfc3RvcmFnZS5jPTcwMj1pbnQgYnBmX2xvY2FsX3N0b3JhZ2VfbWFwX2FsbG9jX2NoZWNrKHVuaW9uIGJwZl9hdHRyICphdHRyKVxcbi0tXFxua2VybmVsL2JwZi9icGZfbG9jYWxfc3RvcmFnZS5jLTcxNy1cXG5rZXJuZWwvYnBmL2JwZl9sb2NhbF9zdG9yYWdlLmM6NzE4OmludCBicGZfbG9jYWxfc3RvcmFnZV9tYXBfY2hlY2tfYnRmKHN0cnVjdCBicGZfbWFwICptYXAsXFxua2VybmVsL2JwZi9icGZfbG9jYWxfc3RvcmFnZS5jLTcxOS1cXHRcXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLFxcbi0tXFxua2VybmVsL2JwZi9icGZfdGFza19zdG9yYWdlLmM9MjIzPWNvbnN0IHN0cnVjdCBicGZfbWFwX29wcyB0YXNrX3N0b3JhZ2VfbWFwX29wcyA9IHtcXG4tLVxcbmtlcm5lbC9icGYvYnBmX3Rhc2tfc3RvcmFnZS5jLTIzMS1cXHQubWFwX2RlbGV0ZV9lbGVtID0gYnBmX3BpZF90YXNrX3N0b3JhZ2VfZGVsZXRlX2VsZW0sXFxua2VybmVsL2JwZi9icGZfdGFza19zdG9yYWdlLmM6MjMyOlxcdC5tYXBfY2hlY2tfYnRmID0gYnBmX2xvY2FsX3N0b3JhZ2VfbWFwX2NoZWNrX2J0ZixcXG5rZXJuZWwvYnBmL2JwZl90YXNrX3N0b3JhZ2UuYy0yMzMtXFx0Lm1hcF9tZW1fdXNhZ2UgPSBicGZfbG9jYWxfc3RvcmFnZV9tYXBfbWVtX3VzYWdlLFxcbi0tXFxua2VybmVsL2JwZi9jcHVtYXAuYz03MDk9Y29uc3Qgc3RydWN0IGJwZl9tYXBfb3BzIGNwdV9tYXBfb3BzID0ge1xcbi0tXFxua2VybmVsL2JwZi9jcHVtYXAuYy03MTYtXFx0Lm1hcF9nZXRfbmV4dF9rZXlcXHQ9IGNwdV9tYXBfZ2V0X25leHRfa2V5LFxcbmtlcm5lbC9icGYvY3B1bWFwLmM6NzE3OlxcdC5tYXBfY2hlY2tfYnRmXFx0XFx0PSBtYXBfY2hlY2tfbm9fYnRmLFxcbmtlcm5lbC9icGYvY3B1bWFwLmMtNzE4LVxcdC5tYXBfbWVtX3VzYWdlXFx0XFx0PSBjcHVfbWFwX21lbV91c2FnZSxcXG4tLVxcbmtlcm5lbC9icGYvZGV2bWFwLmM9MTA4Nz1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgZGV2X21hcF9vcHMgPSB7XFxuLS1cXG5rZXJuZWwvYnBmL2Rldm1hcC5jLTEwOTUtXFx0Lm1hcF9kZWxldGVfZWxlbSA9IGRldl9tYXBfZGVsZXRlX2VsZW0sXFxua2VybmVsL2JwZi9kZXZtYXAuYzoxMDk2OlxcdC5tYXBfY2hlY2tfYnRmID0gbWFwX2NoZWNrX25vX2J0ZixcXG5rZXJuZWwvYnBmL2Rldm1hcC5jLTEwOTctXFx0Lm1hcF9tZW1fdXNhZ2UgPSBkZXZfbWFwX21lbV91c2FnZSxcXG4tLVxcbmtlcm5lbC9icGYvZGV2bWFwLmM9MTEwMj1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgZGV2X21hcF9oYXNoX29wcyA9IHtcXG4tLVxcbmtlcm5lbC9icGYvZGV2bWFwLmMtMTExMC1cXHQubWFwX2RlbGV0ZV9lbGVtID0gZGV2X21hcF9oYXNoX2RlbGV0ZV9lbGVtLFxcbmtlcm5lbC9icGYvZGV2bWFwLmM6MTExMTpcXHQubWFwX2NoZWNrX2J0ZiA9IG1hcF9jaGVja19ub19idGYsXFxua2VybmVsL2JwZi9kZXZtYXAuYy0xMTEyLVxcdC5tYXBfbWVtX3VzYWdlID0gZGV2X21hcF9tZW1fdXNhZ2UsXFxuLS1cXG5rZXJuZWwvYnBmL2hhc2h0YWIuYz01MDQ9c3RhdGljIGludCBicGZfbWFfc2V0X2R0b3Ioc3RydWN0IGJwZl9tYXAgKm1hcCwgc3RydWN0IGJwZl9tZW1fYWxsb2MgKm1hLFxcbi0tXFxua2VybmVsL2JwZi9oYXNodGFiLmMtNTI3LVxcbmtlcm5lbC9icGYvaGFzaHRhYi5jOjUyODpzdGF0aWMgaW50IGh0YWJfbWFwX2NoZWNrX2J0ZihzdHJ1Y3QgYnBmX21hcCAqbWFwLCBjb25zdCBzdHJ1Y3QgYnRmICpidGYsXFxua2VybmVsL2JwZi9oYXNodGFiLmMtNTI5LVxcdFxcdFxcdCAgICAgIGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqa2V5X3R5cGUsIGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdmFsdWVfdHlwZSlcXG4tLVxcbmtlcm5lbC9icGYvaGFzaHRhYi5jPTIzNTg9Y29uc3Qgc3RydWN0IGJwZl9tYXBfb3BzIGh0YWJfbWFwX29wcyA9IHtcXG4tLVxcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTIzNzItXFx0Lm1hcF9mb3JfZWFjaF9jYWxsYmFjayA9IGJwZl9mb3JfZWFjaF9oYXNoX2VsZW0sXFxua2VybmVsL2JwZi9oYXNodGFiLmM6MjM3MzpcXHQubWFwX2NoZWNrX2J0ZiA9IGh0YWJfbWFwX2NoZWNrX2J0ZixcXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0yMzc0LVxcdC5tYXBfbWVtX3VzYWdlID0gaHRhYl9tYXBfbWVtX3VzYWdlLFxcbi0tXFxua2VybmVsL2JwZi9oYXNodGFiLmM9MjM4MD1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgaHRhYl9scnVfbWFwX29wcyA9IHtcXG4tLVxcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTIzOTUtXFx0Lm1hcF9mb3JfZWFjaF9jYWxsYmFjayA9IGJwZl9mb3JfZWFjaF9oYXNoX2VsZW0sXFxua2VybmVsL2JwZi9oYXNodGFiLmM6MjM5NjpcXHQubWFwX2NoZWNrX2J0ZiA9IGh0YWJfbWFwX2NoZWNrX2J0ZixcXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0yMzk3LVxcdC5tYXBfbWVtX3VzYWdlID0gaHRhYl9tYXBfbWVtX3VzYWdlLFxcbi0tXFxua2VybmVsL2JwZi9oYXNodGFiLmM9MjU2MT1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgaHRhYl9wZXJjcHVfbWFwX29wcyA9IHtcXG4tLVxcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTI1NzUtXFx0Lm1hcF9mb3JfZWFjaF9jYWxsYmFjayA9IGJwZl9mb3JfZWFjaF9oYXNoX2VsZW0sXFxua2VybmVsL2JwZi9oYXNodGFiLmM6MjU3NjpcXHQubWFwX2NoZWNrX2J0ZiA9IGh0YWJfbWFwX2NoZWNrX2J0ZixcXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0yNTc3LVxcdC5tYXBfbWVtX3VzYWdlID0gaHRhYl9tYXBfbWVtX3VzYWdlLFxcbi0tXFxua2VybmVsL2JwZi9oYXNodGFiLmM9MjU4Mz1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgaHRhYl9scnVfcGVyY3B1X21hcF9vcHMgPSB7XFxuLS1cXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0yNTk2LVxcdC5tYXBfZm9yX2VhY2hfY2FsbGJhY2sgPSBicGZfZm9yX2VhY2hfaGFzaF9lbGVtLFxcbmtlcm5lbC9icGYvaGFzaHRhYi5jOjI1OTc6XFx0Lm1hcF9jaGVja19idGYgPSBodGFiX21hcF9jaGVja19idGYsXFxua2VybmVsL2JwZi9oYXNodGFiLmMtMjU5OC1cXHQubWFwX21lbV91c2FnZSA9IGh0YWJfbWFwX21lbV91c2FnZSxcXG4tLVxcbmtlcm5lbC9icGYvaGFzaHRhYi5jPTI3Mjk9Y29uc3Qgc3RydWN0IGJwZl9tYXBfb3BzIGh0YWJfb2ZfbWFwc19tYXBfb3BzID0ge1xcbi0tXFxua2VybmVsL2JwZi9oYXNodGFiLmMtMjczOS1cXHQubWFwX2dlbl9sb29rdXAgPSBodGFiX29mX21hcF9nZW5fbG9va3VwLFxcbmtlcm5lbC9icGYvaGFzaHRhYi5jOjI3NDA6XFx0Lm1hcF9jaGVja19idGYgPSBtYXBfY2hlY2tfbm9fYnRmLFxcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTI3NDEtXFx0Lm1hcF9tZW1fdXNhZ2UgPSBodGFiX21hcF9tZW1fdXNhZ2UsXFxuLS1cXG5rZXJuZWwvYnBmL2hhc2h0YWIuYz0zMDk0PXN0YXRpYyBpbnQgcmh0YWJfbWFwX2dlbl9sb29rdXAoc3RydWN0IGJwZl9tYXAgKm1hcCwgc3RydWN0IGJwZl9pbnNuICppbnNuX2J1ZilcXG4tLVxcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTMxMDgtXFxua2VybmVsL2JwZi9oYXNodGFiLmM6MzEwOTpzdGF0aWMgaW50IHJodGFiX21hcF9jaGVja19idGYoc3RydWN0IGJwZl9tYXAgKm1hcCwgY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLFxcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTMxMTAtXFx0XFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqa2V5X3R5cGUsXFxuLS1cXG5rZXJuZWwvYnBmL2hhc2h0YWIuYz0zNTE1PWNvbnN0IHN0cnVjdCBicGZfbWFwX29wcyByaHRhYl9tYXBfb3BzID0ge1xcbi0tXFxua2VybmVsL2JwZi9oYXNodGFiLmMtMzUyMS1cXHQubWFwX3JlbGVhc2VfdXJlZiA9IHJodGFiX21hcF9mcmVlX2ludGVybmFsX3N0cnVjdHMsXFxua2VybmVsL2JwZi9oYXNodGFiLmM6MzUyMjpcXHQubWFwX2NoZWNrX2J0ZiA9IHJodGFiX21hcF9jaGVja19idGYsXFxua2VybmVsL2JwZi9oYXNodGFiLmMtMzUyMy1cXHQubWFwX2xvb2t1cF9lbGVtID0gcmh0YWJfbWFwX2xvb2t1cF9lbGVtLFxcbi0tXFxua2VybmVsL2JwZi9sb2NhbF9zdG9yYWdlLmM9NDYxPWNvbnN0IHN0cnVjdCBicGZfbWFwX29wcyBjZ3JvdXBfc3RvcmFnZV9tYXBfb3BzID0ge1xcbi0tXFxua2VybmVsL2JwZi9sb2NhbF9zdG9yYWdlLmMtNDY3LVxcdC5tYXBfZGVsZXRlX2VsZW0gPSBjZ3JvdXBfc3RvcmFnZV9kZWxldGVfZWxlbSxcXG5rZXJuZWwvYnBmL2xvY2FsX3N0b3JhZ2UuYzo0Njg6XFx0Lm1hcF9jaGVja19idGYgPSBjZ3JvdXBfc3RvcmFnZV9jaGVja19idGYsXFxua2VybmVsL2JwZi9sb2NhbF9zdG9yYWdlLmMtNDY5LVxcdC5tYXBfc2VxX3Nob3dfZWxlbSA9IGNncm91cF9zdG9yYWdlX3NlcV9zaG93X2VsZW0sXFxuLS1cXG5rZXJuZWwvYnBmL2xwbV90cmllLmM9Nzc1PWNvbnN0IHN0cnVjdCBicGZfbWFwX29wcyB0cmllX21hcF9vcHMgPSB7XFxuLS1cXG5rZXJuZWwvYnBmL2xwbV90cmllLmMtNzg1LVxcdC5tYXBfZGVsZXRlX2JhdGNoID0gZ2VuZXJpY19tYXBfZGVsZXRlX2JhdGNoLFxcbmtlcm5lbC9icGYvbHBtX3RyaWUuYzo3ODY6XFx0Lm1hcF9jaGVja19idGYgPSB0cmllX2NoZWNrX2J0ZixcXG5rZXJuZWwvYnBmL2xwbV90cmllLmMtNzg3LVxcdC5tYXBfbWVtX3VzYWdlID0gdHJpZV9tZW1fdXNhZ2UsXFxuLS1cXG5rZXJuZWwvYnBmL3N0YWNrbWFwLmM9MTAzOD1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgc3RhY2tfdHJhY2VfbWFwX29wcyA9IHtcXG4tLVxcbmtlcm5lbC9icGYvc3RhY2ttYXAuYy0xMDQ2LVxcdC5tYXBfZGVsZXRlX2VsZW0gPSBzdGFja19tYXBfZGVsZXRlX2VsZW0sXFxua2VybmVsL2JwZi9zdGFja21hcC5jOjEwNDc6XFx0Lm1hcF9jaGVja19idGYgPSBtYXBfY2hlY2tfbm9fYnRmLFxcbmtlcm5lbC9icGYvc3RhY2ttYXAuYy0xMDQ4LVxcdC5tYXBfbWVtX3VzYWdlID0gc3RhY2tfbWFwX21lbV91c2FnZSxcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jPTExND1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgYnBmX21hcF9vZmZsb2FkX29wcyA9IHtcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTExNy1cXHQubWFwX2ZyZWUgPSBicGZfbWFwX29mZmxvYWRfbWFwX2ZyZWUsXFxua2VybmVsL2JwZi9zeXNjYWxsLmM6MTE4OlxcdC5tYXBfY2hlY2tfYnRmID0gbWFwX2NoZWNrX25vX2J0ZixcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xMTktXFx0Lm1hcF9tZW1fdXNhZ2UgPSBicGZfbWFwX29mZmxvYWRfbWFwX21lbV91c2FnZSxcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jPTEyMzU9aW50IG1hcF9jaGVja19ub19idGYoc3RydWN0IGJwZl9tYXAgKm1hcCxcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTEyNDItXFxua2VybmVsL2JwZi9zeXNjYWxsLmM6MTI0MzpzdGF0aWMgaW50IG1hcF9jaGVja19idGYoc3RydWN0IGJwZl9tYXAgKm1hcCwgc3RydWN0IGJwZl90b2tlbiAqdG9rZW4sXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMTI0NC1cXHRcXHRcXHQgY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCB1MzIgYnRmX2tleV9pZCwgdTMyIGJ0Zl92YWx1ZV9pZClcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTEyNTYtXFx0XFx0a2V5X3R5cGUgPSBidGZfdHlwZV9ieV9pZChidGYsIDApO1xcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjEyNTc6XFx0XFx0aWYgKCFtYXAtXFx1MDAzZW9wcy1cXHUwMDNlbWFwX2NoZWNrX2J0ZilcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xMjU4LVxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMTM1NS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzoxMzU2OlxcdGlmIChtYXAtXFx1MDAzZW9wcy1cXHUwMDNlbWFwX2NoZWNrX2J0Zikge1xcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjEzNTc6XFx0XFx0cmV0ID0gbWFwLVxcdTAwM2VvcHMtXFx1MDAzZW1hcF9jaGVja19idGYobWFwLCBidGYsIGtleV90eXBlLCB2YWx1ZV90eXBlKTtcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xMzU4LVxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmM9MTM3MD1zdGF0aWMgaW50IG1hcF9jcmVhdGVfYWxsb2ModW5pb24gYnBmX2F0dHIgKmF0dHIsIGJwZnB0cl90IHVhdHRyLCBzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMTU2OS1cXHRcXHRpZiAoYXR0ci1cXHUwMDNlYnRmX3ZhbHVlX3R5cGVfaWQpIHtcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzoxNTcwOlxcdFxcdFxcdGVyciA9IG1hcF9jaGVja19idGYobWFwLCB0b2tlbiwgYnRmLCBhdHRyLVxcdTAwM2VidGZfa2V5X3R5cGVfaWQsXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMTU3MS1cXHRcXHRcXHRcXHRcXHQgICAgYXR0ci1cXHUwMDNlYnRmX3ZhbHVlX3R5cGVfaWQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQxNTowNzoyMi43NTk5NTc0N1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTc2NDEyMjc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBCUEYgQlRGIFN5bWJvbCBSZWZlcmVuY2VzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgQlBGIGFuZCB0aGlua2luZyBhYm91dCBob3cgdGhlc2UgQlRGIHN0cnVjdHVyZXMgYXJlIHBhcnNlZC4gSSBzZWUgYG1hcF9jaGVja19idGZgIGlzIGRlZmluZWQgYXMgc3RhdGljIHdpdGhpbiBga2VybmVsL2JwZi9zeXNjYWxsLmNgLCBzbyBpdCdzIHByb2JhYmx5IG5vdCB0aGUgY29yZSBmdW5jdGlvbiBJJ20gYWZ0ZXIuIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdG8gZGlnIGludG8gYGJ0Zl9wYXJzZV9maWVsZHNgLCBzaW5jZSBpdCdzIGEgZ2xvYmFsIGZ1bmN0aW9uIGluIGBrZXJuZWwvYnBmL2J0Zi5jYCwgYW5kIHRoYXQgc2VlbXMgbGlrZSBhIGxvZ2ljYWwgZW50cnkgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBCVEYgc3RydWN0dXJlcyBhcmUgaGFuZGxlZC4gSG93ZXZlciwgd2FpdCwgbGV0J3MgYWxzbyBnaXZlIHNvbWUgYXR0ZW50aW9uIHRvIGBidGZfcGFyc2Vfc3RydWN0X21ldGFzYC4gVGhhdCBsb29rcyBsaWtlIGFub3RoZXIgdmlhYmxlIGZ1bmN0aW9uIGZvciBwYXJzaW5nIEJURiBzdHJ1Y3QgbWV0YWRhdGEsIGFuZCBpdCBtaWdodCBiZSBhIG1vcmUgaW1wb3J0YW50IHBhcnQgb2YgdGhlIHB1enpsZS4gSSdsbCBuZWVkIHRvIGxvb2sgY2xvc2VseSBhdCBib3RoIG5vdy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIxMzUsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMTU6MDc6MjYuMzM2MzcyNDI1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODc5MDY0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJidGZfcGFyc2Vfc3RydWN0X21ldGFzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvYnRmLmM9NTc3OT1zdGF0aWMgc3RydWN0IGJ0Zl9zdHJ1Y3RfbWV0YXMgKlxcbmtlcm5lbC9icGYvYnRmLmM6NTc4MDpidGZfcGFyc2Vfc3RydWN0X21ldGFzKHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csIHN0cnVjdCBidGYgKmJ0ZilcXG5rZXJuZWwvYnBmL2J0Zi5jLTU3ODEte1xcbi0tXFxua2VybmVsL2JwZi9idGYuYz01OTUwPXN0YXRpYyBzdHJ1Y3QgYnRmICpidGZfcGFyc2UoY29uc3QgdW5pb24gYnBmX2F0dHIgKmF0dHIsIGJwZnB0cl90IHVhdHRyLFxcbi0tXFxua2VybmVsL2JwZi9idGYuYy02MDE3LVxcbmtlcm5lbC9icGYvYnRmLmM6NjAxODpcXHRzdHJ1Y3RfbWV0YV90YWIgPSBidGZfcGFyc2Vfc3RydWN0X21ldGFzKFxcdTAwMjZlbnYtXFx1MDAzZWxvZywgYnRmKTtcXG5rZXJuZWwvYnBmL2J0Zi5jLTYwMTktXFx0aWYgKElTX0VSUihzdHJ1Y3RfbWV0YV90YWIpKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDE1OjA3OjI2LjQwNTE3MzI5NFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDIxNjIzMTg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQlRGIFBhcnNpbmcgTGFuZHNjYXBlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgQlRGIHBhcnNpbmcgZnVuY3Rpb25zLiBgYnRmX3BhcnNlX3N0cnVjdF9tZXRhc2AgaXMgZGVmaW5lZCBhcyBgc3RhdGljYCwgd2hpY2ggbWVhbnMgaXQncyBpbnRlcm5hbCB0byBpdHMgY29tcGlsYXRpb24gdW5pdC4gVGhhdCBtYWtlcyBpdCBhIG5vbi1zdGFydGVyIGZvciBteSBwdXJwb3Nlcy4gSSBuZWVkIHNvbWV0aGluZyBhY2Nlc3NpYmxlLCBhbmQgSSBuZWVkIHNvbWV0aGluZyB0aGF0IGRpcmVjdGx5IGNhbGxzIGludG8gdGhlIGZ1bmN0aW9ucyBJJ20gaW50ZXJlc3RlZCBpbiBtb2RpZnlpbmcuXG5cbmBidGZfcGFyc2VfZmllbGRzYCBsb29rcyBsaWtlIHRoZSBtb3N0IHByb21pc2luZyBjYW5kaWRhdGUgaW5pdGlhbGx5LiBJdCdzIGdsb2JhbCwgYW5kIHNlZW1zIHRvIGJlIGEgZGlyZWN0IGNhbGxlci4gQnV0IHdhaXQuLi4gb24gY2xvc2VyIGluc3BlY3Rpb24sIGl0IGxvb2tzIGxpa2UgYGJ0Zl9wYXJzZV9maWVsZHNgIGlzIGFsc28gbm90IGV4cG9ydGVkLCBhbmQgaXMgbG9jYWwuIFN0aWxsLCB0aGUgYmVhdXR5IGlzIHRoYXQgc3l6a2FsbGVyIGNhbiB0YXJnZXQgYW55IGdsb2JhbCBmdW5jdGlvbiwgZXhwb3J0ZWQgb3Igbm90LCBzbyB0aGF0J3Mgc29tZXRoaW5nIEkgY2FuIHVzZS5cblxuSG1tLCB3aGF0IGFib3V0IGBidGZfcGFyc2VgPyBOb3BlLCB0aGF0J3MgYWxzbyBzdGF0aWMsIHNvIGl0J3Mgb3V0LiBPa2F5LCBsZXQncyBhbHNvIHRha2UgYSBxdWljayBsb29rIGF0IGBidGZfbmV3X2ZkYCwganVzdCBpbiBjYXNlLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNjgxLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDE1OjA3OjMwLjgyNjc5ODk0MVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTg1ODcyOTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnRmX25ld19mZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL2J0Zi5jPTgzMTc9Y29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBidGZfZm9wcyA9IHtcXG4tLVxcbmtlcm5lbC9icGYvYnRmLmMtODMyMy1cXG5rZXJuZWwvYnBmL2J0Zi5jOjgzMjQ6c3RhdGljIGludCBfX2J0Zl9uZXdfZmQoc3RydWN0IGJ0ZiAqYnRmKVxcbmtlcm5lbC9icGYvYnRmLmMtODMyNS17XFxuLS1cXG5rZXJuZWwvYnBmL2J0Zi5jLTgzMjgtXFxua2VybmVsL2JwZi9idGYuYzo4MzI5OmludCBidGZfbmV3X2ZkKGNvbnN0IHVuaW9uIGJwZl9hdHRyICphdHRyLCBicGZwdHJfdCB1YXR0ciwgc3RydWN0IGJwZl9sb2dfYXR0ciAqYXR0cl9sb2cpXFxua2VybmVsL2JwZi9idGYuYy04MzMwLXtcXG4tLVxcbmtlcm5lbC9icGYvYnRmLmMtODM0OS1cXG5rZXJuZWwvYnBmL2J0Zi5jOjgzNTA6XFx0cmV0ID0gX19idGZfbmV3X2ZkKGJ0Zik7XFxua2VybmVsL2JwZi9idGYuYy04MzUxLVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxua2VybmVsL2JwZi9idGYuYz04NDI5PWludCBidGZfZ2V0X2ZkX2J5X2lkKHUzMiBpZClcXG4tLVxcbmtlcm5lbC9icGYvYnRmLmMtODQ0Mi1cXG5rZXJuZWwvYnBmL2J0Zi5jOjg0NDM6XFx0ZmQgPSBfX2J0Zl9uZXdfZmQoYnRmKTtcXG5rZXJuZWwvYnBmL2J0Zi5jLTg0NDQtXFx0aWYgKGZkIFxcdTAwM2MgMClcXG4tLVxcbmtlcm5lbC9icGYvYnRmLmM9ODY4MT1CUEZfQ0FMTF80KGJwZl9idGZfZmluZF9ieV9uYW1lX2tpbmQsIGNoYXIgKiwgbmFtZSwgaW50LCBuYW1lX3N6LCB1MzIsIGtpbmQsIGludCwgZmxhZ3MpXFxuLS1cXG5rZXJuZWwvYnBmL2J0Zi5jLTg2OTQtXFx0aWYgKHJldCBcXHUwMDNlIDAgXFx1MDAyNlxcdTAwMjYgYnRmX2lzX21vZHVsZShidGYpKSB7XFxua2VybmVsL2JwZi9idGYuYzo4Njk1OlxcdFxcdGJ0Zl9vYmpfZmQgPSBfX2J0Zl9uZXdfZmQoYnRmKTtcXG5rZXJuZWwvYnBmL2J0Zi5jLTg2OTYtXFx0XFx0aWYgKGJ0Zl9vYmpfZmQgXFx1MDAzYyAwKSB7XFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz01NTM2PXN0YXRpYyBpbnQgYnBmX2J0Zl9sb2FkKGNvbnN0IHVuaW9uIGJwZl9hdHRyICphdHRyLCBicGZwdHJfdCB1YXR0ciwgc3RydWN0IGJwZl9sb2dfYXR0ciAqYXR0cl9sb2cpXFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy01NTYyLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjU1NjM6XFx0cmV0dXJuIGJ0Zl9uZXdfZmQoYXR0ciwgdWF0dHIsIGF0dHJfbG9nKTtcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy01NTY0LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMTU6MDc6MzAuODg1MzkwOTU5WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMTEyMzIyNDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIEJURiBGaWVsZCBQYXJzaW5nKipcblxuUmlnaHQsIGBidGZfcGFyc2VfZmllbGRzYCAtIHRoYXQncyB3aGVyZSB0aGUgcnViYmVyIG1lZXRzIHRoZSByb2FkLCB0aGUgY29yZSBvZiB0aGlzIG9wZXJhdGlvbi4gQmVmb3JlIEkgZGlnIHRvbyBkZWVwLCBsZXQncyBxdWlja2x5IGNvbmZpcm0gd2hldGhlciB0aGUgc3lzdGVtJ3MgZXZlbiBjb25maWd1cmVkIHRvIGhhbmRsZSB0aGlzLiBJdCBsb29rcyBsaWtlIEJQRiBpdHNlbGYgaXMgdGllZCB0byBgQ09ORklHX0JQRl9TWVNDQUxMYCwgc28gbGV0J3MgY2hlY2sgdGhhdC4gSSBzaG91bGQgYWxzbyB0YWtlIGEgcGVlayBhcm91bmQgdG8gc2VlIGlmIHRoZXJlIGFyZSAqb3RoZXIqIGNvbmZpZ3VyYXRpb25zIHRoYXQgbWlnaHQgaW1wYWN0IGhvdyBgYnRmX3BhcnNlX2ZpZWxkc2AgZnVuY3Rpb25zLiBJIHdhbnQgdG8gbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnkgcGllY2VzIG9mIHRoZSBwdXp6bGUgdGhhdCBtaWdodCBpbmZsdWVuY2UgbXkgYW5hbHlzaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNjk5LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMTU6MDc6MzQuOTk2NjI1NTUzWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Njg0NTg5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfQlBGXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvS2NvbmZpZz01OD1jb25maWcgQlBGX0pJVF9BTFdBWVNfT05cXG4tLVxcbmtlcm5lbC9icGYvS2NvbmZpZy02NC1cXG5rZXJuZWwvYnBmL0tjb25maWc6NjU6XFx0ICBXaGVuIENPTkZJR19CUEZfSklUX0FMV0FZU19PTiBpcyBlbmFibGVkLCAvcHJvYy9zeXMvbmV0L2NvcmUvYnBmX2ppdF9lbmFibGVcXG5rZXJuZWwvYnBmL0tjb25maWctNjYtXFx0ICBpcyBwZXJtYW5lbnRseSBzZXQgdG8gMSBhbmQgc2V0dGluZyBhbnkgb3RoZXIgdmFsdWUgdGhhbiB0aGF0IHdpbGxcXG4tLVxcbmtlcm5lbC9icGYvTWFrZWZpbGU9Mj1vYmoteSA6PSBjb3JlLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjM6aWZuZXEgKCQoQ09ORklHX0JQRl9KSVRfQUxXQVlTX09OKSx5KVxcbmtlcm5lbC9icGYvTWFrZWZpbGUtNC0jIF9fX2JwZl9wcm9nX3J1bigpIG5lZWRzIEdDU0UgZGlzYWJsZWQgb24geDg2OyBzZWUgMzE5M2MwODM2ZjIwMyBmb3IgZGV0YWlsc1xcbi0tXFxua2VybmVsL2JwZi9NYWtlZmlsZT03PUNGTEFHU19jb3JlLm8gKz0gLVduby1vdmVycmlkZS1pbml0ICQoY2ZsYWdzLW5vZ2NzZS15eSlcXG5rZXJuZWwvYnBmL01ha2VmaWxlLTgtXFxua2VybmVsL2JwZi9NYWtlZmlsZTo5Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gc3lzY2FsbC5vIHZlcmlmaWVyLm8gaW5vZGUubyBoZWxwZXJzLm8gdG51bS5vIGNudW0ubyBsb2cubyB0b2tlbi5vIGxpdmVuZXNzLm8gY29uc3RfZm9sZC5vXFxua2VybmVsL2JwZi9NYWtlZmlsZToxMDpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGJwZl9pdGVyLm8gbWFwX2l0ZXIubyB0YXNrX2l0ZXIubyBwcm9nX2l0ZXIubyBsaW5rX2l0ZXIub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6MTE6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBoYXNodGFiLm8gYXJyYXltYXAubyBwZXJjcHVfZnJlZWxpc3QubyBicGZfbHJ1X2xpc3QubyBscG1fdHJpZS5vIG1hcF9pbl9tYXAubyBibG9vbV9maWx0ZXIub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6MTI6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBsb2NhbF9zdG9yYWdlLm8gcXVldWVfc3RhY2tfbWFwcy5vIHJpbmdidWYubyBicGZfaW5zbl9hcnJheS5vXFxua2VybmVsL2JwZi9NYWtlZmlsZToxMzpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGJwZl9sb2NhbF9zdG9yYWdlLm8gYnBmX3Rhc2tfc3RvcmFnZS5vXFxua2VybmVsL2JwZi9NYWtlZmlsZToxNDpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGZpeHVwcy5vIGNmZy5vIHN0YXRlcy5vIGJhY2t0cmFjay5vIGNoZWNrX2J0Zi5vXFxua2VybmVsL2JwZi9NYWtlZmlsZToxNTpvYmotJHtDT05GSUdfQlBGX0xTTX1cXHQgICs9IGJwZl9pbm9kZV9zdG9yYWdlLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjE2Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gZGlzYXNtLm8gbXByb2cub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6MTc6b2JqLSQoQ09ORklHX0JQRl9KSVQpICs9IHRyYW1wb2xpbmUub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6MTg6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBidGYubyBtZW1hbGxvYy5vIHJxc3BpbmxvY2subyBzdHJlYW0ub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtMTktaWZlcSAoJChDT05GSUdfTU1VKSQoQ09ORklHXzY0QklUKSx5eSlcXG5rZXJuZWwvYnBmL01ha2VmaWxlOjIwOm9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gYXJlbmEubyByYW5nZV90cmVlLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlLTIxLWVuZGlmXFxua2VybmVsL2JwZi9NYWtlZmlsZToyMjpvYmotJChDT05GSUdfQlBGX0pJVCkgKz0gZGlzcGF0Y2hlci5vXFxua2VybmVsL2JwZi9NYWtlZmlsZS0yMy1pZmVxICgkKENPTkZJR19ORVQpLHkpXFxua2VybmVsL2JwZi9NYWtlZmlsZToyNDpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGRldm1hcC5vXFxua2VybmVsL2JwZi9NYWtlZmlsZToyNTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGNwdW1hcC5vXFxua2VybmVsL2JwZi9NYWtlZmlsZToyNjpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IG9mZmxvYWQub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6Mjc6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBuZXRfbmFtZXNwYWNlLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjI4Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gdGN4Lm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlLTI5LWVuZGlmXFxua2VybmVsL2JwZi9NYWtlZmlsZT0zMD1pZmVxICgkKENPTkZJR19QRVJGX0VWRU5UUykseSlcXG5rZXJuZWwvYnBmL01ha2VmaWxlOjMxOm9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gc3RhY2ttYXAub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtMzItZW5kaWZcXG5rZXJuZWwvYnBmL01ha2VmaWxlPTMzPWlmZXEgKCQoQ09ORklHX0NHUk9VUFMpLHkpXFxua2VybmVsL2JwZi9NYWtlZmlsZTozNDpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGNncm91cF9pdGVyLm8gYnBmX2NncnBfc3RvcmFnZS5vXFxua2VybmVsL2JwZi9NYWtlZmlsZS0zNS1lbmRpZlxcbi0tXFxua2VybmVsL2JwZi9NYWtlZmlsZT0zNz1pZmVxICgkKENPTkZJR19JTkVUKSx5KVxcbmtlcm5lbC9icGYvTWFrZWZpbGU6Mzg6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSByZXVzZXBvcnRfYXJyYXkub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtMzktZW5kaWZcXG4tLVxcbmtlcm5lbC9icGYvTWFrZWZpbGU9NDI9ZW5kaWZcXG5rZXJuZWwvYnBmL01ha2VmaWxlOjQzOmlmZXEgKCQoQ09ORklHX0JQRl9KSVQpLHkpXFxua2VybmVsL2JwZi9NYWtlZmlsZTo0NDpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGJwZl9zdHJ1Y3Rfb3BzLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjQ1Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gY3B1bWFzay5vXFxua2VybmVsL2JwZi9NYWtlZmlsZS00Ni0jIGJwZl9sc21fcHJvdG8ubyBtdXN0IHByZWNlZGUgYnBmX2xzbS5vLiBUaGUgY3VycmVudCBwYWhvbGUgbG9naWNcXG4tLVxcbmtlcm5lbC9icGYvTWFrZWZpbGUtNTUtIyBzZW1hbnRpY3Mgd2l0aGluIHBhaG9sZSBhcmUgcmV2aXNpdGVkIGFjY29yZGluZ2x5Llxcbmtlcm5lbC9icGYvTWFrZWZpbGU6NTY6b2JqLSR7Q09ORklHX0JQRl9MU019ICs9IGJwZl9sc21fcHJvdG8ubyBicGZfbHNtLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlLTU3LWVuZGlmXFxua2VybmVsL2JwZi9NYWtlZmlsZT01OD1pZm5lcSAoJChDT05GSUdfQ1JZUFRPKSwpXFxua2VybmVsL2JwZi9NYWtlZmlsZTo1OTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGNyeXB0by5vXFxua2VybmVsL2JwZi9NYWtlZmlsZS02MC1lbmRpZlxcbmtlcm5lbC9icGYvTWFrZWZpbGU6NjE6b2JqLSQoQ09ORklHX0JQRl9QUkVMT0FEKSArPSBwcmVsb2FkL1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtNjItXFxua2VybmVsL2JwZi9NYWtlZmlsZTo2MzpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IHJlbG9fY29yZS5vXFxua2VybmVsL2JwZi9NYWtlZmlsZTo2NDpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGJ0Zl9pdGVyLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjY1Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gYnRmX3JlbG9jYXRlLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjY2Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0ga21lbV9jYWNoZV9pdGVyLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlLTY3LWlmZXEgKCQoQ09ORklHX0RNQV9TSEFSRURfQlVGRkVSKSx5KVxcbmtlcm5lbC9icGYvTWFrZWZpbGU6Njg6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBkbWFidWZfaXRlci5vXFxua2VybmVsL2JwZi9NYWtlZmlsZS02OS1lbmRpZlxcbi0tXFxua2VybmVsL2JwZi9idGYuYz05ODE0PWJvb2wgYnRmX3R5cGVfaWRzX25vY2FzdF9hbGlhcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxcbi0tXFxua2VybmVsL2JwZi9idGYuYy05ODY4LVxcbmtlcm5lbC9icGYvYnRmLmM6OTg2OTojaWZkZWYgQ09ORklHX0JQRl9KSVRcXG5rZXJuZWwvYnBmL2J0Zi5jLTk4NzAtc3RhdGljIGludFxcbi0tXFxua2VybmVsL2JwZi9jZ3JvdXAuYz01Mj12b2lkIF9faW5pdCBjZ3JvdXBfYnBmX2xpZmV0aW1lX25vdGlmaWVyX2luaXQodm9pZClcXG4tLVxcbmtlcm5lbC9icGYvY2dyb3VwLmMtNTctXFxua2VybmVsL2JwZi9jZ3JvdXAuYzo1ODojaWZkZWYgQ09ORklHX0JQRl9MU01cXG5rZXJuZWwvYnBmL2Nncm91cC5jLTU5LXN0cnVjdCBjZ3JvdXBfbHNtX2F0eXBlIHtcXG4tLVxcbmtlcm5lbC9icGYvY2dyb3VwLmM9MTYyPXVuc2lnbmVkIGludCBfX2Nncm91cF9icGZfcnVuX2xzbV9jdXJyZW50KGNvbnN0IHZvaWQgKmN0eCxcXG4tLVxcbmtlcm5lbC9icGYvY2dyb3VwLmMtMTgwLVxcbmtlcm5lbC9icGYvY2dyb3VwLmM6MTgxOiNpZmRlZiBDT05GSUdfQlBGX0xTTVxcbmtlcm5lbC9icGYvY2dyb3VwLmMtMTgyLXN0YXRpYyBlbnVtIGNncm91cF9icGZfYXR0YWNoX3R5cGVcXG4tLVxcbmtlcm5lbC9icGYvY2dyb3VwLmM9MjM0PWJwZl9jZ3JvdXBfYXR5cGVfZmluZChlbnVtIGJwZl9hdHRhY2hfdHlwZSBhdHRhY2hfdHlwZSwgdTMyIGF0dGFjaF9idGZfaWQpXFxuLS1cXG5rZXJuZWwvYnBmL2Nncm91cC5jLTIzOS19XFxua2VybmVsL2JwZi9jZ3JvdXAuYzoyNDA6I2VuZGlmIC8qIENPTkZJR19CUEZfTFNNICovXFxua2VybmVsL2JwZi9jZ3JvdXAuYy0yNDEtXFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYz0xMDA9c3RydWN0IGJwZl9wcm9nICpicGZfcHJvZ19hbGxvY19ub19zdGF0cyh1bnNpZ25lZCBpbnQgc2l6ZSwgZ2ZwX3QgZ2ZwX2V4dHJhX2ZsYWdzKVxcbi0tXFxua2VybmVsL2JwZi9jb3JlLmMtMTI4LVxcdGZwLVxcdTAwM2VqaXRfcmVxdWVzdGVkID0gZWJwZl9qaXRfZW5hYmxlZCgpO1xcbmtlcm5lbC9icGYvY29yZS5jOjEyOTpcXHRmcC1cXHUwMDNlaml0X3JlcXVpcmVkID0gSVNfRU5BQkxFRChDT05GSUdfQlBGX0pJVF9BTFdBWVNfT04pO1xcbmtlcm5lbC9icGYvY29yZS5jLTEzMC1cXHRmcC1cXHUwMDNlYmxpbmRpbmdfcmVxdWVzdGVkID0gYnBmX2ppdF9ibGluZGluZ19lbmFibGVkKGZwKTtcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jLTE0My1cXG5rZXJuZWwvYnBmL2NvcmUuYzoxNDQ6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxcbmtlcm5lbC9icGYvY29yZS5jLTE0NS1cXHRicGZfcHJvZ19zdHJlYW1faW5pdChmcCk7XFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYz01NDE9dm9pZCBicGZfcHJvZ19rYWxsc3ltc19kZWxfYWxsKHN0cnVjdCBicGZfcHJvZyAqZnApXFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYy01NDYtXFxua2VybmVsL2JwZi9jb3JlLmM6NTQ3OiNpZmRlZiBDT05GSUdfQlBGX0pJVFxcbmtlcm5lbC9icGYvY29yZS5jLTU0OC0vKiBBbGwgQlBGIEpJVCBzeXNjdGwga25vYnMgaGVyZS4gKi9cXG5rZXJuZWwvYnBmL2NvcmUuYzo1NDk6aW50IGJwZl9qaXRfZW5hYmxlICAgX19yZWFkX21vc3RseSA9IElTX0JVSUxUSU4oQ09ORklHX0JQRl9KSVRfREVGQVVMVF9PTik7XFxua2VybmVsL2JwZi9jb3JlLmM6NTUwOmludCBicGZfaml0X2thbGxzeW1zIF9fcmVhZF9tb3N0bHkgPSBJU19CVUlMVElOKENPTkZJR19CUEZfSklUX0RFRkFVTFRfT04pO1xcbmtlcm5lbC9icGYvY29yZS5jLTU1MS1pbnQgYnBmX2ppdF9oYXJkZW4gICBfX3JlYWRfbW9zdGx5O1xcbi0tXFxua2VybmVsL2JwZi9jb3JlLmM9MTY0Mz11MTYgYnBmX291dF9zdGFja19hcmdfY250KGNvbnN0IHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZylcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jLTE2NTEtfVxcbmtlcm5lbC9icGYvY29yZS5jOjE2NTI6I2VuZGlmIC8qIENPTkZJR19CUEZfSklUICovXFxua2VybmVsL2JwZi9jb3JlLmMtMTY1My1cXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jPTE4MTE9Ym9vbCBicGZfb3Bjb2RlX2luX2luc250YWJsZSh1OCBjb2RlKVxcbi0tXFxua2VybmVsL2JwZi9jb3JlLmMtMTgzMy1cXG5rZXJuZWwvYnBmL2NvcmUuYzoxODM0OiNpZm5kZWYgQ09ORklHX0JQRl9KSVRfQUxXQVlTX09OXFxua2VybmVsL2JwZi9jb3JlLmMtMTgzNS0vKiBBYnNvbHV0ZSB2YWx1ZSBvZiBzMzIgd2l0aG91dCB1bmRlZmluZWQgYmVoYXZpb3IgZm9yIFMzMl9NSU4gKi9cXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jPTI0NjE9RVZBTDQoUFJPR19OQU1FX0xJU1QsIDQxNiwgNDQ4LCA0ODAsIDUxMilcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jLTI0NjQtXFxua2VybmVsL2JwZi9jb3JlLmM6MjQ2NTojaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXFxua2VybmVsL2JwZi9jb3JlLmMtMjQ2Ni1pbnQgYnBmX3BhdGNoX2NhbGxfYXJncyhzdHJ1Y3QgYnBmX2luc24gKmluc24sIHUzMiBzdGFja19kZXB0aClcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jPTI1OTg9c3RhdGljIGJvb2wgYnBmX3Byb2dfc2VsZWN0X2ludGVycHJldGVyKHN0cnVjdCBicGZfcHJvZyAqZnApXFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYy0yNjAwLVxcdGJvb2wgc2VsZWN0X2ludGVycHJldGVyID0gZmFsc2U7XFxua2VybmVsL2JwZi9jb3JlLmM6MjYwMTojaWZuZGVmIENPTkZJR19CUEZfSklUX0FMV0FZU19PTlxcbmtlcm5lbC9icGYvY29yZS5jLTI2MDItXFx0dTMyIHN0YWNrX2RlcHRoID0gbWF4X3QodTMyLCBmcC1cXHUwMDNlYXV4LVxcdTAwM2VzdGFja19kZXB0aCwgMSk7XFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYz0yNjIxPXN0YXRpYyBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9wcm9nX2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZylcXG5rZXJuZWwvYnBmL2NvcmUuYy0yNjIyLXtcXG5rZXJuZWwvYnBmL2NvcmUuYzoyNjIzOiNpZmRlZiBDT05GSUdfQlBGX0pJVFxcbmtlcm5lbC9icGYvY29yZS5jLTI2MjQtXFx0c3RydWN0IGJwZl9wcm9nICpvcmlnX3Byb2c7XFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYz0zMDQ1PXZvaWQgX19icGZfZnJlZV91c2VkX2J0ZnMoc3RydWN0IGJ0Zl9tb2RfcGFpciAqdXNlZF9idGZzLCB1MzIgbGVuKVxcbmtlcm5lbC9icGYvY29yZS5jLTMwNDYte1xcbmtlcm5lbC9icGYvY29yZS5jOjMwNDc6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxcbmtlcm5lbC9icGYvY29yZS5jLTMwNDgtXFx0c3RydWN0IGJ0Zl9tb2RfcGFpciAqYnRmX21vZDtcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jPTMwNjY9c3RhdGljIHZvaWQgYnBmX3Byb2dfZnJlZV9kZWZlcnJlZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYy0zMDcxLVxcdGF1eCA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgYnBmX3Byb2dfYXV4LCB3b3JrKTtcXG5rZXJuZWwvYnBmL2NvcmUuYzozMDcyOiNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcXG5rZXJuZWwvYnBmL2NvcmUuYy0zMDczLVxcdGJwZl9mcmVlX2tmdW5jX2J0Zl90YWIoYXV4LVxcdTAwM2VrZnVuY19idGZfdGFiKTtcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jPTMzODg9c3RhdGljIG5vaW5saW5lIHZvaWQgYnBmX3Byb2dfcmVwb3J0X21heV9nb3RvX3Zpb2xhdGlvbih2b2lkKVxcbmtlcm5lbC9icGYvY29yZS5jLTMzODkte1xcbmtlcm5lbC9icGYvY29yZS5jOjMzOTA6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxcbmtlcm5lbC9icGYvY29yZS5jLTMzOTEtXFx0c3RydWN0IGJwZl9zdHJlYW1fc3RhZ2Ugc3M7XFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYz0zNDI4PV9fd2VhayB1NjQgYnBmX2FyZW5hX2dldF9rZXJuX3ZtX3N0YXJ0KHN0cnVjdCBicGZfYXJlbmEgKmFyZW5hKVxcbi0tXFxua2VybmVsL2JwZi9jb3JlLmMtMzQzMi1cXG5rZXJuZWwvYnBmL2NvcmUuYzozNDMzOiNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcXG5rZXJuZWwvYnBmL2NvcmUuYy0zNDM0LV9fd2VhayBib29sIGJwZl9hcmVuYV9oYW5kbGVfcGFnZV9mYXVsdCh1bnNpZ25lZCBsb25nIGFkZHIsIGJvb2wgaXNfd3JpdGUsXFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYz0zNDU5PUVYUE9SVF9UUkFDRVBPSU5UX1NZTUJPTF9HUEwoeGRwX2J1bGtfdHgpO1xcbmtlcm5lbC9icGYvY29yZS5jLTM0NjAtXFxua2VybmVsL2JwZi9jb3JlLmM6MzQ2MTojaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXFxua2VybmVsL2JwZi9jb3JlLmMtMzQ2Mi1cXG4tLVxcbmtlcm5lbC9icGYvZml4dXBzLmM9MTI3PXN0YXRpYyBpbnQgYWRkX2tmdW5jX2luX2luc25zKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuLS1cXG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTE0MS1cXG5rZXJuZWwvYnBmL2ZpeHVwcy5jOjE0MjojaWZuZGVmIENPTkZJR19CUEZfSklUX0FMV0FZU19PTlxcbmtlcm5lbC9icGYvZml4dXBzLmMtMTQzLXN0YXRpYyBpbnQgZ2V0X2NhbGxlZV9zdGFja19kZXB0aChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbi0tXFxua2VybmVsL2JwZi9maXh1cHMuYz0xMzc2PWludCBicGZfZml4dXBfY2FsbF9hcmdzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXFxua2VybmVsL2JwZi9maXh1cHMuYy0xMzc3LXtcXG5rZXJuZWwvYnBmL2ZpeHVwcy5jOjEzNzg6I2lmbmRlZiBDT05GSUdfQlBGX0pJVF9BTFdBWVNfT05cXG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTEzNzktXFx0c3RydWN0IGJwZl9wcm9nICpwcm9nID0gZW52LVxcdTAwM2Vwcm9nO1xcbi0tXFxua2VybmVsL2JwZi9maXh1cHMuYy0xNDA0LVxcdH1cXG5rZXJuZWwvYnBmL2ZpeHVwcy5jOjE0MDU6I2lmbmRlZiBDT05GSUdfQlBGX0pJVF9BTFdBWVNfT05cXG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTE0MDYtXFx0aWYgKHByb2ctXFx1MDAzZWppdF9yZXF1aXJlZCkge1xcbi0tXFxua2VybmVsL2JwZi9oZWxwZXJzLmM9Mjc2PWNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfZ2V0X2N1cnJlbnRfY29tbV9wcm90byA9IHtcXG4tLVxcbmtlcm5lbC9icGYvaGVscGVycy5jLTI4My1cXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzoyODQ6I2lmIGRlZmluZWQoQ09ORklHX1FVRVVFRF9TUElOTE9DS1MpIHx8IGRlZmluZWQoQ09ORklHX0JQRl9BUkNIX1NQSU5MT0NLKVxcbmtlcm5lbC9icGYvaGVscGVycy5jLTI4NS1cXG4tLVxcbmtlcm5lbC9icGYvaGVscGVycy5jPTQ4NDk9QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl90aHJvdylcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0ODUwOiNpZmRlZiBDT05GSUdfQlBGX0VWRU5UU1xcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ4NTEtQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zZW5kX3NpZ25hbF90YXNrKVxcbi0tXFxua2VybmVsL2JwZi9oZWxwZXJzLmM9NDkyOT1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2xvY2FsX2lycV9yZXN0b3JlKVxcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ5MzA6I2lmZGVmIENPTkZJR19CUEZfRVZFTlRTXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDkzMS1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3Byb2JlX3JlYWRfdXNlcl9keW5wdHIpXFxuLS1cXG5rZXJuZWwvYnBmL2hlbHBlcnMuYz00OTYwPUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RybmNhc2VzdHIpO1xcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ5NjE6I2lmIGRlZmluZWQoQ09ORklHX0JQRl9MU00pIFxcdTAwMjZcXHUwMDI2IGRlZmluZWQoQ09ORklHX0NHUk9VUFMpXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDk2Mi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2Nncm91cF9yZWFkX3hhdHRyLCBLRl9SQ1UpXFxuLS1cXG5rZXJuZWwvYnBmL3ByZWxvYWQvTWFrZWZpbGU9Mz1MSUJCUEZfSU5DTFVERSA9ICQoc3JjdHJlZSkvdG9vbHMvbGliXFxua2VybmVsL2JwZi9wcmVsb2FkL01ha2VmaWxlLTQtXFxua2VybmVsL2JwZi9wcmVsb2FkL01ha2VmaWxlOjU6b2JqLSQoQ09ORklHX0JQRl9QUkVMT0FEX1VNRCkgKz0gYnBmX3ByZWxvYWQub1xcbmtlcm5lbC9icGYvcHJlbG9hZC9NYWtlZmlsZS02LUNGTEFHU19icGZfcHJlbG9hZF9rZXJuLm8gKz0gLUkkKExJQkJQRl9JTkNMVURFKVxcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmM9Njg9aW50IHN5c2N0bF91bnByaXZpbGVnZWRfYnBmX2Rpc2FibGVkIF9fcmVhZF9tb3N0bHkgPVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjY5OlxcdElTX0JVSUxUSU4oQ09ORklHX0JQRl9VTlBSSVZfREVGQVVMVF9PRkYpID8gMiA6IDA7XFxua2VybmVsL2JwZi9zeXNjYWxsLmMtNzAtXFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz02NDk5PWludCBrZXJuX3N5c19icGYoaW50IGNtZCwgdW5pb24gYnBmX2F0dHIgKmF0dHIsIHVuc2lnbmVkIGludCBzaXplKVxcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtNjUwNC1cXHRzd2l0Y2ggKGNtZCkge1xcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjY1MDU6I2lmZGVmIENPTkZJR19CUEZfSklUIC8qIF9fYnBmX3Byb2dfZW50ZXJfc2xlZXBhYmxlIHVzZWQgYnkgdHJhbXBvbGluZSBhbmQgSklUICovXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtNjUwNi1cXHRjYXNlIEJQRl9QUk9HX1RFU1RfUlVOOlxcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9OTgzPWludCBicGZfdHJhbXBvbGluZV91bmxpbmtfcHJvZyhzdHJ1Y3QgYnBmX3RyYW1wX25vZGUgKm5vZGUsXFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy05OTQtXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6OTk1OiNpZiBkZWZpbmVkKENPTkZJR19DR1JPVVBfQlBGKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKENPTkZJR19CUEZfTFNNKVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTk5Ni1zdGF0aWMgdm9pZCBicGZfc2hpbV90cmFtcF9saW5rX3JlbGVhc2Uoc3RydWN0IGJwZl9saW5rICpsaW5rKVxcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9MTQ2Nz1pbnQgX193ZWFrIGFyY2hfYnBmX3RyYW1wb2xpbmVfc2l6ZShjb25zdCBzdHJ1Y3QgYnRmX2Z1bmNfbW9kZWwgKm0sIHUzMiBmbGFncyxcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE0NzQtICAgIGRlZmluZWQoQ09ORklHX0hBVkVfU0lOR0xFX0ZUUkFDRV9ESVJFQ1RfT1BTKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6MTQ3NTogICAgZGVmaW5lZChDT05GSUdfQlBGX1NZU0NBTEwpXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTQ3Ni1cXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTE3MTI9aW50IGJwZl90cmFtcG9saW5lX211bHRpX2RldGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHN0cnVjdCBicGZfdHJhY2luZ19tdWx0aV9saW5rICpsaW5rKVxcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTc0OC1cXHQgIENPTkZJR19IQVZFX1NJTkdMRV9GVFJBQ0VfRElSRUNUX09QUyBcXHUwMDI2XFx1MDAyNlxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjE3NDk6XFx0ICBDT05GSUdfQlBGX1NZU0NBTEwgKi9cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNzUwLVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTQ0NjA9QlRGX0lEKHN0cnVjdCwgY2dyb3VwKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy00NDYxLSNlbmRpZlxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo0NDYyOiNpZmRlZiBDT05GSUdfQlBGX0pJVFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy00NDYzLUJURl9JRChzdHJ1Y3QsIGJwZl9jcHVtYXNrKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTExMjE1PUJURl9JRF9VTlVTRURcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyMTYtI2VuZGlmXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjE3OiNpZmRlZiBDT05GSUdfQlBGX0VWRU5UU1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTIxOC1CVEZfSUQoZnVuYywgYnBmX3Nlc3Npb25fY29va2llKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTExMjI3PUJURl9JRChmdW5jLCBicGZfaXRlcl9udW1fZGVzdHJveSlcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyMjg6I2lmZGVmIENPTkZJR19CUEZfTFNNXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjI5LUJURl9JRChmdW5jLCBicGZfc2V0X2RlbnRyeV94YXR0cilcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTI0Nj1CVEZfSUQoZnVuYywgYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXMpXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjQ3OiNpZmRlZiBDT05GSUdfQlBGX0VWRU5UU1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTI0OC1CVEZfSUQoZnVuYywgYnBmX3Nlc3Npb25faXNfcmV0dXJuKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQxNTowNzozNS4wNTM0Nzc0ODFaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIzNjgwNjAzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gcmVhc29uaW5nOlxuXG4qKkJURiBDb25maWd1cmF0aW9uIERlZXAgRGl2ZSoqXG5cbkFscmlnaHQsIHNvIHRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24gaXRlbSB3ZSdyZSBjb25jZXJuZWQgd2l0aCBmb3IgQlRGIGlzLCBvZiBjb3Vyc2UsIGBDT05GSUdfQlBGX1NZU0NBTExgLiBUaGF0J3MgdGhlIGxpbmNocGluLCB0aGUgYmlnIG9uZS4gQnV0LCBrbm93aW5nIGhvdyB0aGVzZSB0aGluZ3MgdGVuZCB0byBpbnRlcndlYXZlLCBJIG5lZWQgdG8gbWFrZSAqYWJzb2x1dGVseSogc3VyZSB3ZSBoYXZlbid0IG1pc3NlZCBhbnkgb3RoZXIgY29uZmlnIG9wdGlvbnMgdGhhdCBtaWdodCBzdWJ0bHkgaW5mbHVlbmNlIHRoZSBiZWhhdmlvciBvciBhdmFpbGFiaWxpdHkgb2YgQlRGIHN1cHBvcnQgd2l0aGluIHRoZSBrZXJuZWwuIEkgbmVlZCB0byBkbyBhIHRob3JvdWdoIGNoZWNrIHRvIGF2b2lkIGFueSB1bmV4cGVjdGVkIGludGVyYWN0aW9ucyBvciBkZXBlbmRlbmNpZXMuIFRpbWUgdG8gZGlnIGRlZXBlciBhbmQgc2VlIHdoYXQgZWxzZSBjb3VsZCBiZSBsdXJraW5nLi4uIEkgbmVlZCB0byBjb25zaWRlciBhbGwgYW5nbGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTM1NSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDE1OjA3OjM4LjI5MDI4NjIxM1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjE3ODQ1MjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQ09ORklHX0RFQlVHX0lORk9fQlRGXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvTWFrZWZpbGU9NDA9aWZlcSAoJChDT05GSUdfU1lTRlMpLHkpXFxua2VybmVsL2JwZi9NYWtlZmlsZTo0MTpvYmotJChDT05GSUdfREVCVUdfSU5GT19CVEYpICs9IHN5c2ZzX2J0Zi5vXFxua2VybmVsL2JwZi9NYWtlZmlsZS00Mi1lbmRpZlxcbi0tXFxua2VybmVsL2JwZi9idGYuYz02Mzg2PXN0YXRpYyBzdHJ1Y3QgYnRmICpidGZfcGFyc2VfYmFzZShzdHJ1Y3QgYnRmX3ZlcmlmaWVyX2VudiAqZW52LCBjb25zdCBjaGFyICpuYW1lLFxcbi0tXFxua2VybmVsL2JwZi9idGYuYy02MzkxLVxcbmtlcm5lbC9icGYvYnRmLmM6NjM5MjpcXHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0RFQlVHX0lORk9fQlRGKSlcXG5rZXJuZWwvYnBmL2J0Zi5jLTYzOTMtXFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVOT0VOVCk7XFxuLS1cXG5rZXJuZWwvYnBmL2J0Zi5jPTY0NzI9c3RhdGljIF9fdTMyIGJ0Zl9yZWxvY2F0ZV9pZChjb25zdCBzdHJ1Y3QgYnRmICpidGYsIF9fdTMyIGlkKVxcbi0tXFxua2VybmVsL2JwZi9idGYuYy02NDc4LVxcbmtlcm5lbC9icGYvYnRmLmM6NjQ3OTojaWZkZWYgQ09ORklHX0RFQlVHX0lORk9fQlRGX01PRFVMRVNcXG5rZXJuZWwvYnBmL2J0Zi5jLTY0ODAtXFxua2VybmVsL2JwZi9idGYuYz02NDgxPXN0YXRpYyBzdHJ1Y3QgYnRmICpidGZfcGFyc2VfbW9kdWxlKGNvbnN0IGNoYXIgKm1vZHVsZV9uYW1lLCBjb25zdCB2b2lkICpkYXRhLFxcbi0tXFxua2VybmVsL2JwZi9idGYuYy02NTc2LVxcbmtlcm5lbC9icGYvYnRmLmM6NjU3NzojZW5kaWYgLyogQ09ORklHX0RFQlVHX0lORk9fQlRGX01PRFVMRVMgKi9cXG5rZXJuZWwvYnBmL2J0Zi5jLTY1NzgtXFxuLS1cXG5rZXJuZWwvYnBmL2J0Zi5jPTg0NjU9ZW51bSB7XFxuLS1cXG5rZXJuZWwvYnBmL2J0Zi5jLTg0NjgtXFxua2VybmVsL2JwZi9idGYuYzo4NDY5OiNpZmRlZiBDT05GSUdfREVCVUdfSU5GT19CVEZfTU9EVUxFU1xcbmtlcm5lbC9icGYvYnRmLmMtODQ3MC1zdHJ1Y3QgYnRmX21vZHVsZSB7XFxuLS1cXG5rZXJuZWwvYnBmL2J0Zi5jPTg2MDc9ZnNfaW5pdGNhbGwoYnRmX21vZHVsZV9pbml0KTtcXG5rZXJuZWwvYnBmL2J0Zi5jOjg2MDg6I2VuZGlmIC8qIENPTkZJR19ERUJVR19JTkZPX0JURl9NT0RVTEVTICovXFxua2VybmVsL2JwZi9idGYuYy04NjA5LVxcbmtlcm5lbC9icGYvYnRmLmM9ODYxMD1zdHJ1Y3QgbW9kdWxlICpidGZfdHJ5X2dldF9tb2R1bGUoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmKVxcbi0tXFxua2VybmVsL2JwZi9idGYuYy04NjEyLVxcdHN0cnVjdCBtb2R1bGUgKnJlcyA9IE5VTEw7XFxua2VybmVsL2JwZi9idGYuYzo4NjEzOiNpZmRlZiBDT05GSUdfREVCVUdfSU5GT19CVEZfTU9EVUxFU1xcbmtlcm5lbC9icGYvYnRmLmMtODYxNC1cXHRzdHJ1Y3QgYnRmX21vZHVsZSAqYnRmX21vZCwgKnRtcDtcXG4tLVxcbmtlcm5lbC9icGYvYnRmLmM9ODY0MD1zdGF0aWMgc3RydWN0IGJ0ZiAqYnRmX2dldF9tb2R1bGVfYnRmKGNvbnN0IHN0cnVjdCBtb2R1bGUgKm1vZHVsZSlcXG5rZXJuZWwvYnBmL2J0Zi5jLTg2NDEte1xcbmtlcm5lbC9icGYvYnRmLmM6ODY0MjojaWZkZWYgQ09ORklHX0RFQlVHX0lORk9fQlRGX01PRFVMRVNcXG5rZXJuZWwvYnBmL2J0Zi5jLTg2NDMtXFx0c3RydWN0IGJ0Zl9tb2R1bGUgKmJ0Zl9tb2QsICp0bXA7XFxuLS1cXG5rZXJuZWwvYnBmL2J0Zi5jLTg2NTMtXFxua2VybmVsL2JwZi9idGYuYzo4NjU0OiNpZmRlZiBDT05GSUdfREVCVUdfSU5GT19CVEZfTU9EVUxFU1xcbmtlcm5lbC9icGYvYnRmLmMtODY1NS1cXHRtdXRleF9sb2NrKFxcdTAwMjZidGZfbW9kdWxlX211dGV4KTtcXG4tLVxcbmtlcm5lbC9icGYvYnRmLmM9ODY3MD1zdGF0aWMgaW50IGNoZWNrX2J0Zl9rY29uZmlncyhjb25zdCBzdHJ1Y3QgbW9kdWxlICptb2R1bGUsIGNvbnN0IGNoYXIgKmZlYXR1cmUpXFxua2VybmVsL2JwZi9idGYuYy04NjcxLXtcXG5rZXJuZWwvYnBmL2J0Zi5jOjg2NzI6XFx0aWYgKCFtb2R1bGUgXFx1MDAyNlxcdTAwMjYgSVNfRU5BQkxFRChDT05GSUdfREVCVUdfSU5GT19CVEYpKSB7XFxua2VybmVsL2JwZi9idGYuYy04NjczLVxcdFxcdHByX2VycihcXFwibWlzc2luZyB2bWxpbnV4IEJURiwgY2Fubm90IHJlZ2lzdGVyICVzXFxcXG5cXFwiLCBmZWF0dXJlKTtcXG4tLVxcbmtlcm5lbC9icGYvYnRmLmMtODY3NS1cXHR9XFxua2VybmVsL2JwZi9idGYuYzo4Njc2OlxcdGlmIChtb2R1bGUgXFx1MDAyNlxcdTAwMjYgSVNfRU5BQkxFRChDT05GSUdfREVCVUdfSU5GT19CVEZfTU9EVUxFUykpXFxua2VybmVsL2JwZi9idGYuYy04Njc3LVxcdFxcdHByX3dhcm4oXFxcIm1pc3NpbmcgbW9kdWxlIEJURiwgY2Fubm90IHJlZ2lzdGVyICVzXFxcXG5cXFwiLCBmZWF0dXJlKTtcXG4tLVxcbmtlcm5lbC9icGYvYnRmLmM9ODgxNz1zdGF0aWMgaW50IGJ0Zl9jaGVja19rZnVuY19uYW1lKHN0cnVjdCBidGYgKmJ0ZiwgY29uc3QgY2hhciAqZnVuY19uYW1lLCB1MzIga2luZClcXG5rZXJuZWwvYnBmL2J0Zi5jLTg4MTgte1xcbmtlcm5lbC9icGYvYnRmLmM6ODgxOTojaWZkZWYgQ09ORklHX0RFQlVHX0lORk9fQlRGX01PRFVMRVNcXG5rZXJuZWwvYnBmL2J0Zi5jLTg4MjAtXFx0c3RydWN0IGJ0Zl9tb2R1bGUgKmJ0Zl9tb2QsICp0bXA7XFxuLS1cXG5rZXJuZWwvYnBmL2J0Zi5jLTg4MzMtXFxua2VybmVsL2JwZi9idGYuYzo4ODM0OiNpZmRlZiBDT05GSUdfREVCVUdfSU5GT19CVEZfTU9EVUxFU1xcbmtlcm5lbC9icGYvYnRmLmMtODgzNS1cXHRndWFyZChtdXRleCkoXFx1MDAyNmJ0Zl9tb2R1bGVfbXV0ZXgpO1xcbi0tXFxua2VybmVsL2JwZi9idGYuYz05NDgyPXN0YXRpYyBzdHJ1Y3QgYnBmX2NhbmRfY2FjaGUgKnBvcHVsYXRlX2NhbmRfY2FjaGUoc3RydWN0IGJwZl9jYW5kX2NhY2hlICpjYW5kcyxcXG4tLVxcbmtlcm5lbC9icGYvYnRmLmMtOTUwOS1cXG5rZXJuZWwvYnBmL2J0Zi5jOjk1MTA6I2lmZGVmIENPTkZJR19ERUJVR19JTkZPX0JURl9NT0RVTEVTXFxua2VybmVsL2JwZi9idGYuYy05NTExLXN0YXRpYyB2b2lkIF9fcHVyZ2VfY2FuZF9jYWNoZShzdHJ1Y3QgYnRmICpidGYsIHN0cnVjdCBicGZfY2FuZF9jYWNoZSAqKmNhY2hlLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTI3NDM9aW50IGJwZl9hZGRfa2Z1bmNfY2FsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCB1MzIgZnVuY19pZCwgdTE2IG9mZnNldClcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yNzU4LVxcdFxcdGlmICghYnRmX3ZtbGludXgpIHtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6Mjc1OTpcXHRcXHRcXHR2ZXJib3NlKGVudiwgXFxcImNhbGxpbmcga2VybmVsIGZ1bmN0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aG91dCBDT05GSUdfREVCVUdfSU5GT19CVEZcXFxcblxcXCIpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yNzYwLVxcdFxcdFxcdHJldHVybiAtRU5PVFNVUFA7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NTk2OT1zdGF0aWMgaW50IGNoZWNrX3B0cl90b19tYXBfYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTk4My1cXHRpZiAoIWJ0Zl92bWxpbnV4KSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjU5ODQ6XFx0XFx0dmVyYm9zZShlbnYsIFxcXCJtYXBfcHRyIGFjY2VzcyBub3Qgc3VwcG9ydGVkIHdpdGhvdXQgQ09ORklHX0RFQlVHX0lORk9fQlRGXFxcXG5cXFwiKTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTk4NS1cXHRcXHRyZXR1cm4gLUVOT1RTVVBQO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTE3Nzc3PXN0YXRpYyBpbnQgY2hlY2tfcHNldWRvX2J0Zl9pZChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE3NzkzLVxcdFxcdGlmICghYnRmX3ZtbGludXgpIHtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTc3OTQ6XFx0XFx0XFx0dmVyYm9zZShlbnYsIFxcXCJrZXJuZWwgaXMgbWlzc2luZyBCVEYsIG1ha2Ugc3VyZSBDT05GSUdfREVCVUdfSU5GT19CVEY9eSBpcyBzcGVjaWZpZWQgaW4gS2NvbmZpZy5cXFxcblxcXCIpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNzc5NS1cXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xOTYyMj1zdHJ1Y3QgYnRmICpicGZfZ2V0X2J0Zl92bWxpbnV4KHZvaWQpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk2MjYtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5NjI3OlxcdGlmICghYnRmIFxcdTAwMjZcXHUwMDI2IElTX0VOQUJMRUQoQ09ORklHX0RFQlVHX0lORk9fQlRGKSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTYyOC1cXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZidGZfdm1saW51eF9sb2NrKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMTU6MDc6MzguMzUyMDc2MjEyWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYxOTE5MjAxMzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEJURiBMb2FkaW5nIGFuZCBgYnRmX3BhcnNlX2ZpZWxkc2AqKlxuXG5Pa2F5LCBzbyBgQ09ORklHX0RFQlVHX0lORk9fQlRGYCBpcyBvYnZpb3VzbHkgcmVsZXZhbnQgZm9yIGdlbmVyYXRpbmcgdGhlIHZtbGludXggQlRGIGRhdGEsIGJ1dCB0aGF0J3Mgbm90IHRoZSBjb3JlIG9mIHRoZSB0ZXN0LiBUaGUgdGVzdCBjYXNlIEknbSBmb2N1c2luZyBvbiBzZWVtcyB0byB1dGlsaXplIGVpdGhlciBgQlBGX1BST0dfVEVTVF9SVU5gIG9yIGxvYWRzIHRoZSBCVEYgZGlyZWN0bHkgdXNpbmcgYGJwZihCUEZfQlRGX0xPQUQsIC4uLilgLiBBbmQgcmVtZW1iZXIsIGBCUEZfQlRGX0xPQURgIGhhcyBhIGRlcGVuZGVuY3k6IGl0IHJlcXVpcmVzIGBDT05GSUdfQlBGX1NZU0NBTExgIHRvIGJlIGVuYWJsZWQuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIGhvdyBpdCBsb2FkcyByYXcgQlRGIGRhdGEgZnJvbSBhIGZpbGUsIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoYXQgc3lzY2FsbC4gVGhlIHRlc3QgaXRzZWxmIHJlc2lkZXMgaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zi5jYC4gVGhhdCB0ZWxscyBtZSBJIHNob3VsZCBmb2N1cyBvbiB0aGF0IHRlc3QncyB1c2Ugb2YgYEJQRl9CVEZfTE9BRGAgYW5kIHJhdyBCVEYgZGF0YS4gU2luY2UgaXQncyBhIHRlc3Qgb2YgdGhlIGxvYWRpbmcgbWVjaGFuaXNtLCBgQ09ORklHX0JQRl9TWVNDQUxMYCBzZWVtcyB0byBiZSB0aGUgY3JpdGljYWwgcHJlcmVxdWlzaXRlIGhlcmUuXG5cbk5vdywgbGV0J3MgcmVmb2N1cyBvbiB0aGUgZnVuY3Rpb24gSSdtIGNvbnNpZGVyaW5nLiBJcyBgYnRmX3BhcnNlX2ZpZWxkc2AgdGhlIHJpZ2h0IHN5bWJvbCB0byBmb2N1cyBvbj8gSSBuZWVkIHRvIGFuYWx5emUgaXRzIGNhbGwgcGF0aHMuIEl0IGFwcGVhcnMgdGhhdCBgYnRmX3BhcnNlX2ZpZWxkc2AgaXMgY2FsbGVkIGJ5IGBtYXBfY2hlY2tfYnRmYCBhbmQgYGJ0Zl9wYXJzZV9zdHJ1Y3RfbWV0YXNgLiBgbWFwX2NoZWNrX2J0ZmAgaXMgaW52b2tlZCBieSBgbWFwX2NyZWF0ZV9hbGxvY2AsIHNwZWNpZmljYWxseSB3aGVuIGEgbWFwIGlzIGJlaW5nIGNyZWF0ZWQgYW5kIEJURiBpcyBpbnZvbHZlZC4gQW5kLCBgYnRmX3BhcnNlX3N0cnVjdF9tZXRhc2AgaXMgY2FsbGVkIGJ5IGBidGZfcGFyc2VgIHdoZW4gQlRGIGlzIGxvYWRlZC4gSG9sZCBvbiwgYGJ0Zl9wYXJzZV9zdHJ1Y3RfbWV0YXNgIGlzIHBhcnNpbmcgdGhlIG1ldGFkYXRhICp3aXRoaW4qIHRoZSBCVEYgaXRzZWxmISBUaGF0IG1ha2VzIGl0IGFuIGludGVyZXN0aW5nIHN5bWJvbCB0byB0cmFjZS4gSSdtIGdvaW5nIHRvIHJldmlzaXQgYGJ0Zl9wYXJzZV9zdHJ1Y3RfbWV0YXNgIHRvIHVuZGVyc3RhbmQgdGhhdCBiZXR0ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxNTIyLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjg2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDE1OjA3OjQ0LjU0Mzk5ODcxMloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTgzMjYyNDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnRmX3BhcnNlX3N0cnVjdF9tZXRhc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL2J0Zi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvYnRmLmM9NTc3OT1zdGF0aWMgc3RydWN0IGJ0Zl9zdHJ1Y3RfbWV0YXMgKlxcbmtlcm5lbC9icGYvYnRmLmM6NTc4MDpidGZfcGFyc2Vfc3RydWN0X21ldGFzKHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csIHN0cnVjdCBidGYgKmJ0ZilcXG5rZXJuZWwvYnBmL2J0Zi5jLTU3ODEte1xcbi0tXFxua2VybmVsL2JwZi9idGYuYz01OTUwPXN0YXRpYyBzdHJ1Y3QgYnRmICpidGZfcGFyc2UoY29uc3QgdW5pb24gYnBmX2F0dHIgKmF0dHIsIGJwZnB0cl90IHVhdHRyLFxcbi0tXFxua2VybmVsL2JwZi9idGYuYy02MDE3LVxcbmtlcm5lbC9icGYvYnRmLmM6NjAxODpcXHRzdHJ1Y3RfbWV0YV90YWIgPSBidGZfcGFyc2Vfc3RydWN0X21ldGFzKFxcdTAwMjZlbnYtXFx1MDAzZWxvZywgYnRmKTtcXG5rZXJuZWwvYnBmL2J0Zi5jLTYwMTktXFx0aWYgKElTX0VSUihzdHJ1Y3RfbWV0YV90YWIpKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDE1OjA3OjQ0LjYwMjMzNDU4WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0OTUxMDAxOTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRm9jdXNpbmcgb24gQlRGIFBhcnNpbmcqKlxuXG5Pa2F5LCBzbyAqYnRmXFxfcGFyc2VcXF9zdHJ1Y3RcXF9tZXRhcyogZ2V0cyBjYWxsZWQgZnJvbSAqYnRmXFxfcGFyc2UqLCBhbmQgdGhhdCdzIGNhbGxlZCBkdXJpbmcgKkJQRlxcX0JURlxcX0xPQUQqLiBSaWdodCwgdGhhdCBtYWtlcyBpdCBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgZGlnZ2luZyBpbnRvLiBUaGUgdGVzdCBpbiAqdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dcXF90ZXN0cy9idGYuYyogYWN0dWFsbHkgdXNlcyAqQlBGXFxfQlRGXFxfTE9BRCosIHNvIHdlJ3ZlIGdvdCBhIGRpcmVjdCBsaW5rIHRoZXJlLiAqYnRmXFxfcGFyc2VcXF9zdHJ1Y3RcXF9tZXRhcyogc2VlbXMgbGlrZSBhbiBleGNlbGxlbnQgZm9jdXMgc3ltYm9sLiBIbW0sIGJ1dCBoYW5nIG9u4oCmIGl0J3Mgc3RhdGljLiBDYW4gd2UgZXZlbiB1c2Ugc3RhdGljIGZ1bmN0aW9ucyBsaWtlIHRoYXQ/IEFoLCB5ZXMsIHN5emthbGxlciAqZG9lcyogc3VwcG9ydCB0aG9zZSwgYXMgbG9uZyBhcyBpdCdzIHVuaXF1ZWx5IGlkZW50aWZpYWJsZSBvciB3ZSBjYW4ganVzdCBzcGVjaWZ5IHRoZSBuYW1lLCBhbmQgd2l0aCB0aGlzIG9uZSBiZWluZyBjYWxsZWQgZHVyaW5nIGEgc3BlY2lmaWMgZnVuY3Rpb24gaXQgaXMuIFdhaXQgYSBtaW51dGUsICpidGZcXF9wYXJzZVxcX2ZpZWxkcyogaXMgZ2xvYmFsLCBldmVuIGJldHRlciB0aGVuLCBsZXQgbWUgY29uZmlybS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI1MDQsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMTU6MDc6NDkuMDk3NDM2OTY2WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDQxMDcwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJidGZfcGFyc2VfZmllbGRzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvYnRmLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9idGYuYz00MTA4PXN0YXRpYyBpbnQgYnRmX2ZpZWxkX2NtcChjb25zdCB2b2lkICpfYSwgY29uc3Qgdm9pZCAqX2IsIGNvbnN0IHZvaWQgKnByaXYpXFxuLS1cXG5rZXJuZWwvYnBmL2J0Zi5jLTQxMTktXFxua2VybmVsL2JwZi9idGYuYzo0MTIwOnN0cnVjdCBidGZfcmVjb3JkICpidGZfcGFyc2VfZmllbGRzKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgY29uc3Qgc3RydWN0IGJ0Zl90eXBlICp0LFxcbmtlcm5lbC9icGYvYnRmLmMtNDEyMS1cXHRcXHRcXHRcXHQgICAgdTMyIGZpZWxkX21hc2ssIHUzMiB2YWx1ZV9zaXplKVxcbi0tXFxua2VybmVsL2JwZi9idGYuYz01NzgwPWJ0Zl9wYXJzZV9zdHJ1Y3RfbWV0YXMoc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZywgc3RydWN0IGJ0ZiAqYnRmKVxcbi0tXFxua2VybmVsL2JwZi9idGYuYy01ODgwLVxcdFxcdHR5cGUtXFx1MDAzZWJ0Zl9pZCA9IGk7XFxua2VybmVsL2JwZi9idGYuYzo1ODgxOlxcdFxcdHJlY29yZCA9IGJ0Zl9wYXJzZV9maWVsZHMoYnRmLCB0LCBCUEZfU1BJTl9MT0NLIHwgQlBGX1JFU19TUElOX0xPQ0sgfCBCUEZfTElTVF9IRUFEIHwgQlBGX0xJU1RfTk9ERSB8XFxua2VybmVsL2JwZi9idGYuYy01ODgyLVxcdFxcdFxcdFxcdFxcdFxcdCAgQlBGX1JCX1JPT1QgfCBCUEZfUkJfTk9ERSB8IEJQRl9SRUZDT1VOVCB8XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDE1OjA3OjQ5LjE1MTg1MzcxNVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MzY2OTQyODI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIGEgQlBGIEJURiBQYXJzaW5nIEJ1ZyBGaXgqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIHBhdGNoIHJlbGF0ZWQgdG8gQlRGIChCUEYgVHlwZSBGb3JtYXQpIHBhcnNpbmcgd2l0aGluIHRoZSBrZXJuZWwsIGFuZCBoZXJlJ3MgbXkgYnJlYWtkb3duIG9mIHdoYXQncyBnb2luZyBvbi4gRmlyc3QsIGBidGZfcGFyc2VfZmllbGRzYCBpcyBhIGdsb2JhbGx5IGFjY2Vzc2libGUgZnVuY3Rpb24sIHdoaWNoIG1ha2VzIGl0IGEgZ29vZCBjZW50cmFsIHBvaW50IHRvIGludmVzdGlnYXRlLiBJdCdzIG5vdCBkZWNsYXJlZCBzdGF0aWMsIHdoaWNoIGlzIGdvb2QgdG8ga25vdyBmb3IgcmVhY2hhYmlsaXR5LlxuXG5JIGFsc28gc2VlIGEgZmV3IG90aGVyIHJlbGF0ZWQgZnVuY3Rpb25zIGludm9sdmVkIGxpa2UgYGJ0Zl9maW5kX3N0cnVjdF9maWVsZGAsIGBidGZfZmluZF9uZXN0ZWRfc3RydWN0YCwgYGJ0Zl9maW5kX2RhdGFzZWNfdmFyYCwgYGJ0Zl9maW5kX2ZpZWxkX29uZWAsIGFuZCBgYnRmX2ZpbmRfZmllbGRgLiBTaW5jZSB3ZSdyZSBkZWFsaW5nIHdpdGggZmllbGQgcGFyc2luZywgSSdsbCBkZWZpbml0ZWx5IGtlZXAgdGhvc2UgaW4gbWluZC4gV2Ugc2hvdWxkIHByb2JhYmx5IGZvY3VzIG91ciBhdHRlbnRpb24gb24gYGJ0Zl9wYXJzZV9maWVsZHNgIGFuZCBgYnRmX3BhcnNlX3N0cnVjdF9tZXRhc2AuXG5cbkxvb2tpbmcgY2xvc2VyIGF0IHRoZSBwYXRjaCwgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSB3aXRoaW4gYGJ0Zl9maW5kX3N0cnVjdF9maWVsZGAuIEl0IGxvb2tzIGxpa2UgdGhlcmUncyBhIHByb2JsZW0gd2hlcmUgZHVwbGljYXRlIGZpZWxkcyB0aGF0IHNob3VsZCBiZSB1bmlxdWUsIHN1Y2ggYXMgYGJwZl9zcGluX2xvY2tgLCBjb3VsZCBiZSBuZXN0ZWQgZGVlcGx5IHdpdGhpbiBzdHJ1Y3RzLCBhbmQgdGhlIGV4aXN0aW5nIGBzZWVuX21hc2tgIGNoZWNrIHdvdWxkbid0IGNhdGNoIHRoZXNlIGR1cGxpY2F0ZXMgcHJvcGVybHkuIFRoZSBmaXggaW52b2x2ZXMgcGFzc2luZyBhIHBvaW50ZXIgdG8gdGhlIGBzZWVuX21hc2tgIHZhcmlhYmxlLCBzbyB0aGF0IGFsbCBuZXN0ZWQgbGV2ZWxzIHVzZSB0aGUgc2FtZSBgc2Vlbl9tYXNrYCwgd2hpY2ggc2hvdWxkIHNvbHZlIHRoZSBkdXBsaWNhdGUgZmllbGQgaXNzdWUuXG5cblRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgZGlyZWN0bHkgcmVsYXRlZCB0byB0aGUgQlBGIHN1YnN5c3RlbSwgc3BlY2lmaWNhbGx5IEJURiBwYXJzaW5nIGFuZCB2YWxpZGF0aW9uLiBHaXZlbiB0aGF0LCBpdCAqc2hvdWxkKiBiZSByZWFjaGFibGUgdmlhIHRoZSBgYnBmKClgIHN5c2NhbGwuIFNvIHdlIGNhbiBpbnRlcmFjdCB3aXRoIGl0IHZpYSBgQlBGX0JURl9MT0FEYCBmb3IgZXhhbXBsZS5cblxuVG8gZW5zdXJlIHRoaXMgaXMgdGVzdGFibGUgYW5kIHJlYWNoYWJsZSwgSSBzaG91bGQgbWFrZSBzdXJlIHRoZSBgQlBGX1NZU0NBTExgIGNvbmZpZyBpcyBlbmFibGVkLiBJdCBsb29rcyBsaWtlIHRoYXQgaXMgdGhlIGNvcnJlY3QgY29uZmlnIHRvIGFsbG93IHRoZSBgYnBmKClgIHN5c2NhbGwgYW5kIGVuYWJsZSBCVEYgcGFyc2luZy4gTGV0IG1lIGRvdWJsZSBjaGVjay4uLiBZZXMsIGl0IGFwcGVhcnMgdGhhdCBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyBpbmRlZWQgdGhlIG1haW4gY29uZmlnIG5lZWRlZCB0byBleHBvc2UgdGhpcyBmdW5jdGlvbmFsaXR5LiBPa2F5LCBJJ20gY29uZmlkZW50LiBUaW1lIHRvIHN1Ym1pdCB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzI0OCwiT3V0cHV0VG9rZW5zIjoxNzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMTU6MDc6NTcuNTE4Nzk4NjE5WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODQ5NDQ4NjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnRmX3BhcnNlX2ZpZWxkc1wiLFxuICAgIFwiYnRmX3BhcnNlX3N0cnVjdF9tZXRhc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIEJURiBwYXJzaW5nIHdoZXJlIGR1cGxpY2F0ZSB1bmlxdWUgZmllbGRzIChsaWtlIGBicGZfc3Bpbl9sb2NrYCkgY291bGQgYmUgbmVzdGVkIGluIHN0cnVjdHMsIGFuZCB0aGUgYHNlZW5fbWFza2AgY2hlY2sgd291bGRuJ3QgY2F0Y2ggaXQgYmVjYXVzZSBlYWNoIGxldmVsIG9mIG5lc3RpbmcgaGFkIGl0cyBvd24gYHNlZW5fbWFza2AuIFBhc3NpbmcgYSBwb2ludGVyIHRvIGBzZWVuX21hc2tgIGZpeGVzIHRoaXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgQlBGIHN1YnN5c3RlbSwgc3BlY2lmaWNhbGx5IGluIEJURiBwYXJzaW5nL3ZhbGlkYXRpb24sIHdoaWNoIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgdmlhIHRoZSBgYnBmKClgIHN5c2NhbGwgKGUuZy4sIGBCUEZfQlRGX0xPQURgIG9yIG1hcCBjcmVhdGlvbikuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJidGZfcGFyc2VfZmllbGRzXCIsXG4gICAgXCJidGZfcGFyc2Vfc3RydWN0X21ldGFzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gQlRGIHBhcnNpbmcgd2hlcmUgZHVwbGljYXRlIHVuaXF1ZSBmaWVsZHMgKGxpa2UgYGJwZl9zcGluX2xvY2tgKSBjb3VsZCBiZSBuZXN0ZWQgaW4gc3RydWN0cywgYW5kIHRoZSBgc2Vlbl9tYXNrYCBjaGVjayB3b3VsZG4ndCBjYXRjaCBpdCBiZWNhdXNlIGVhY2ggbGV2ZWwgb2YgbmVzdGluZyBoYWQgaXRzIG93biBgc2Vlbl9tYXNrYC4gUGFzc2luZyBhIHBvaW50ZXIgdG8gYHNlZW5fbWFza2AgZml4ZXMgdGhpcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBCUEYgc3Vic3lzdGVtLCBzcGVjaWZpY2FsbHkgaW4gQlRGIHBhcnNpbmcvdmFsaWRhdGlvbiwgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSB2aWEgdGhlIGBicGYoKWAgc3lzY2FsbCAoZS5nLiwgYEJQRl9CVEZfTE9BRGAgb3IgbWFwIGNyZWF0aW9uKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowkdnsh[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-19 14:33:59 +0000 UTC FinishedAt: 2026-07-19 15:07:59 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "0718283ab28bc3907e10b61a6b4be6fefa1cbb2f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "0718283ab28bc3907e10b61a6b4be6fefa1cbb2f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "777e6de1-a4e6-4347-8c77-69a9dde24c7f" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "btf_parse_fields", "btf_parse_struct_metas" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-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+CgkJCTx0ZD4yMDI2LzA3LzE5IDE1OjA2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnRmX3BhcnNlX2ZpZWxkcyYjMzQ7LAogICAgJiMzNDtidGZfcGFyc2Vfc3RydWN0X21ldGFzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIEJURiBwYXJzaW5nIHdoZXJlIGR1cGxpY2F0ZSB1bmlxdWUgZmllbGRzIChsaWtlIGBicGZfc3Bpbl9sb2NrYCkgY291bGQgYmUgbmVzdGVkIGluIHN0cnVjdHMsIGFuZCB0aGUgYHNlZW5fbWFza2AgY2hlY2sgd291bGRuJiMzOTt0IGNhdGNoIGl0IGJlY2F1c2UgZWFjaCBsZXZlbCBvZiBuZXN0aW5nIGhhZCBpdHMgb3duIGBzZWVuX21hc2tgLiBQYXNzaW5nIGEgcG9pbnRlciB0byBgc2Vlbl9tYXNrYCBmaXhlcyB0aGlzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEJQRiBzdWJzeXN0ZW0sIHNwZWNpZmljYWxseSBpbiBCVEYgcGFyc2luZy92YWxpZGF0aW9uLCB3aGljaCBpcyByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIHZpYSB0aGUgYGJwZigpYCBzeXNjYWxsIChlLmcuLCBgQlBGX0JURl9MT0FEYCBvciBtYXAgY3JlYXRpb24pLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDE1OjA2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMmIzOTRmYjA5YmVmMGYxZWE2MTEyMGNmMDNjODJhMjZkMjZkMTJjYVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gSnVsIDE5IDE1OjA2OjU4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvYnRmLmMgYi9rZXJuZWwvYnBmL2J0Zi5jXG5pbmRleCBjYmIxZTQ5YjliY2JmNS4uOGQ2Mjg1NTJlZjk5ZWIgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL2J0Zi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL2J0Zi5jXG5AQCAtMzc1MSw3ICYjNDM7Mzc1MSw3IEBAIHN0YXRpYyBpbnQgYnRmX3JlcGVhdF9maWVsZHMoc3RydWN0IGJ0Zl9maWVsZF9pbmZvICppbmZvLCBpbnQgaW5mb19jbnQsXG4gc3RhdGljIGludCBidGZfZmluZF9zdHJ1Y3RfZmllbGQoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLFxuIFx0XHRcdFx0IGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdCwgdTMyIGZpZWxkX21hc2ssXG4gXHRcdFx0XHQgc3RydWN0IGJ0Zl9maWVsZF9pbmZvICppbmZvLCBpbnQgaW5mb19jbnQsXG4tXHRcdFx0XHQgdTMyIGxldmVsKTtcbiYjNDM7XHRcdFx0XHQgdTMyIGxldmVsLCB1MzIgKnNlZW5fbWFzayk7XG4gXG4gLyogRmluZCBzcGVjaWFsIGZpZWxkcyBpbiB0aGUgc3RydWN0IHR5cGUgb2YgYSBmaWVsZC5cbiAgKlxuQEAgLTM3NjIsNyAmIzQzOzM3NjIsNyBAQCBzdGF0aWMgaW50IGJ0Zl9maW5kX3N0cnVjdF9maWVsZChjb25zdCBzdHJ1Y3QgYnRmICpidGYsXG4gc3RhdGljIGludCBidGZfZmluZF9uZXN0ZWRfc3RydWN0KGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgY29uc3Qgc3RydWN0IGJ0Zl90eXBlICp0LFxuIFx0XHRcdFx0ICB1MzIgb2ZmLCB1MzIgbmVsZW1zLFxuIFx0XHRcdFx0ICB1MzIgZmllbGRfbWFzaywgc3RydWN0IGJ0Zl9maWVsZF9pbmZvICppbmZvLFxuLVx0XHRcdFx0ICBpbnQgaW5mb19jbnQsIHUzMiBsZXZlbClcbiYjNDM7XHRcdFx0XHQgIGludCBpbmZvX2NudCwgdTMyIGxldmVsLCB1MzIgKnNlZW5fbWFzaylcbiB7XG4gXHRpbnQgcmV0LCBlcnIsIGk7XG4gXG5AQCAtMzc3MCw3ICYjNDM7Mzc3MCw3IEBAIHN0YXRpYyBpbnQgYnRmX2ZpbmRfbmVzdGVkX3N0cnVjdChjb25zdCBzdHJ1Y3QgYnRmICpidGYsIGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqXG4gXHRpZiAobGV2ZWwgXHUwMDNlPSBNQVhfUkVTT0xWRV9ERVBUSClcbiBcdFx0cmV0dXJuIC1FMkJJRztcbiBcbi1cdHJldCA9IGJ0Zl9maW5kX3N0cnVjdF9maWVsZChidGYsIHQsIGZpZWxkX21hc2ssIGluZm8sIGluZm9fY250LCBsZXZlbCk7XG4mIzQzO1x0cmV0ID0gYnRmX2ZpbmRfc3RydWN0X2ZpZWxkKGJ0ZiwgdCwgZmllbGRfbWFzaywgaW5mbywgaW5mb19jbnQsIGxldmVsLCBzZWVuX21hc2spO1xuIFxuIFx0aWYgKHJldCBcdTAwM2M9IDApXG4gXHRcdHJldHVybiByZXQ7XG5AQCAtMzgyNyw3ICYjNDM7MzgyNyw3IEBAIHN0YXRpYyBpbnQgYnRmX2ZpbmRfZmllbGRfb25lKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZixcbiBcdFx0aWYgKGV4cGVjdGVkX3NpemUgXHUwMDI2XHUwMDI2IGV4cGVjdGVkX3NpemUgIT0gc3ogKiBuZWxlbXMpXG4gXHRcdFx0cmV0dXJuIDA7XG4gXHRcdHJldCA9IGJ0Zl9maW5kX25lc3RlZF9zdHJ1Y3QoYnRmLCB2YXJfdHlwZSwgb2ZmLCBuZWxlbXMsIGZpZWxkX21hc2ssXG4tXHRcdFx0XHRcdCAgICAgXHUwMDI2aW5mb1swXSwgaW5mb19jbnQsIGxldmVsKTtcbiYjNDM7XHRcdFx0XHRcdCAgICAgXHUwMDI2aW5mb1swXSwgaW5mb19jbnQsIGxldmVsLCBzZWVuX21hc2spO1xuIFx0XHRyZXR1cm4gcmV0O1xuIFx0fVxuIFxuQEAgLTM4OTIsMTEgJiM0MzszODkyLDExIEBAIHN0YXRpYyBpbnQgYnRmX2ZpbmRfZmllbGRfb25lKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZixcbiBzdGF0aWMgaW50IGJ0Zl9maW5kX3N0cnVjdF9maWVsZChjb25zdCBzdHJ1Y3QgYnRmICpidGYsXG4gXHRcdFx0XHQgY29uc3Qgc3RydWN0IGJ0Zl90eXBlICp0LCB1MzIgZmllbGRfbWFzayxcbiBcdFx0XHRcdCBzdHJ1Y3QgYnRmX2ZpZWxkX2luZm8gKmluZm8sIGludCBpbmZvX2NudCxcbi1cdFx0XHRcdCB1MzIgbGV2ZWwpXG4mIzQzO1x0XHRcdFx0IHUzMiBsZXZlbCwgdTMyICpzZWVuX21hc2spXG4ge1xuIFx0aW50IHJldCwgaWR4ID0gMDtcbiBcdGNvbnN0IHN0cnVjdCBidGZfbWVtYmVyICptZW1iZXI7XG4tXHR1MzIgaSwgb2ZmLCBzZWVuX21hc2sgPSAwO1xuJiM0MztcdHUzMiBpLCBvZmY7XG4gXG4gXHRmb3JfZWFjaF9tZW1iZXIoaSwgdCwgbWVtYmVyKSB7XG4gXHRcdGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqbWVtYmVyX3R5cGUgPSBidGZfdHlwZV9ieV9pZChidGYsXG5AQCAtMzkxMCw3ICYjNDM7MzkxMCw3IEBAIHN0YXRpYyBpbnQgYnRmX2ZpbmRfc3RydWN0X2ZpZWxkKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZixcbiBcbiBcdFx0cmV0ID0gYnRmX2ZpbmRfZmllbGRfb25lKGJ0ZiwgdCwgbWVtYmVyX3R5cGUsIGksXG4gXHRcdFx0XHRcdCBvZmYsIDAsXG4tXHRcdFx0XHRcdCBmaWVsZF9tYXNrLCBcdTAwMjZzZWVuX21hc2ssXG4mIzQzO1x0XHRcdFx0XHQgZmllbGRfbWFzaywgc2Vlbl9tYXNrLFxuIFx0XHRcdFx0XHQgXHUwMDI2aW5mb1tpZHhdLCBpbmZvX2NudCAtIGlkeCwgbGV2ZWwpO1xuIFx0XHRpZiAocmV0IFx1MDAzYyAwKVxuIFx0XHRcdHJldHVybiByZXQ7XG5AQCAtMzkyMSwxMSAmIzQzOzM5MjEsMTEgQEAgc3RhdGljIGludCBidGZfZmluZF9zdHJ1Y3RfZmllbGQoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLFxuIFxuIHN0YXRpYyBpbnQgYnRmX2ZpbmRfZGF0YXNlY192YXIoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCBjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKnQsXG4gXHRcdFx0XHR1MzIgZmllbGRfbWFzaywgc3RydWN0IGJ0Zl9maWVsZF9pbmZvICppbmZvLFxuLVx0XHRcdFx0aW50IGluZm9fY250LCB1MzIgbGV2ZWwpXG4mIzQzO1x0XHRcdFx0aW50IGluZm9fY250LCB1MzIgbGV2ZWwsIHUzMiAqc2Vlbl9tYXNrKVxuIHtcbiBcdGludCByZXQsIGlkeCA9IDA7XG4gXHRjb25zdCBzdHJ1Y3QgYnRmX3Zhcl9zZWNpbmZvICp2c2k7XG4tXHR1MzIgaSwgb2ZmLCBzZWVuX21hc2sgPSAwO1xuJiM0MztcdHUzMiBpLCBvZmY7XG4gXG4gXHRmb3JfZWFjaF92c2koaSwgdCwgdnNpKSB7XG4gXHRcdGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdmFyID0gYnRmX3R5cGVfYnlfaWQoYnRmLCB2c2ktXHUwMDNldHlwZSk7XG5AQCAtMzkzMyw3ICYjNDM7MzkzMyw3IEBAIHN0YXRpYyBpbnQgYnRmX2ZpbmRfZGF0YXNlY192YXIoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCBjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKnQsXG4gXG4gXHRcdG9mZiA9IHZzaS1cdTAwM2VvZmZzZXQ7XG4gXHRcdHJldCA9IGJ0Zl9maW5kX2ZpZWxkX29uZShidGYsIHZhciwgdmFyX3R5cGUsIC0xLCBvZmYsIHZzaS1cdTAwM2VzaXplLFxuLVx0XHRcdFx0XHQgZmllbGRfbWFzaywgXHUwMDI2c2Vlbl9tYXNrLFxuJiM0MztcdFx0XHRcdFx0IGZpZWxkX21hc2ssIHNlZW5fbWFzayxcbiBcdFx0XHRcdFx0IFx1MDAyNmluZm9baWR4XSwgaW5mb19jbnQgLSBpZHgsXG4gXHRcdFx0XHRcdCBsZXZlbCk7XG4gXHRcdGlmIChyZXQgXHUwMDNjIDApXG5AQCAtMzk0NywxMCAmIzQzOzM5NDcsMTIgQEAgc3RhdGljIGludCBidGZfZmluZF9maWVsZChjb25zdCBzdHJ1Y3QgYnRmICpidGYsIGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdCxcbiBcdFx0XHQgIHUzMiBmaWVsZF9tYXNrLCBzdHJ1Y3QgYnRmX2ZpZWxkX2luZm8gKmluZm8sXG4gXHRcdFx0ICBpbnQgaW5mb19jbnQpXG4ge1xuJiM0MztcdHUzMiBzZWVuX21hc2sgPSAwO1xuJiM0MztcbiBcdGlmIChfX2J0Zl90eXBlX2lzX3N0cnVjdCh0KSlcbi1cdFx0cmV0dXJuIGJ0Zl9maW5kX3N0cnVjdF9maWVsZChidGYsIHQsIGZpZWxkX21hc2ssIGluZm8sIGluZm9fY250LCAwKTtcbiYjNDM7XHRcdHJldHVybiBidGZfZmluZF9zdHJ1Y3RfZmllbGQoYnRmLCB0LCBmaWVsZF9tYXNrLCBpbmZvLCBpbmZvX2NudCwgMCwgXHUwMDI2c2Vlbl9tYXNrKTtcbiBcdGVsc2UgaWYgKGJ0Zl90eXBlX2lzX2RhdGFzZWModCkpXG4tXHRcdHJldHVybiBidGZfZmluZF9kYXRhc2VjX3ZhcihidGYsIHQsIGZpZWxkX21hc2ssIGluZm8sIGluZm9fY250LCAwKTtcbiYjNDM7XHRcdHJldHVybiBidGZfZmluZF9kYXRhc2VjX3ZhcihidGYsIHQsIGZpZWxkX21hc2ssIGluZm8sIGluZm9fY250LCAwLCBcdTAwMjZzZWVuX21hc2spO1xuIFx0cmV0dXJuIC1FSU5WQUw7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnRmLmNcbmluZGV4IDY2ODU1Y2JkNmI3M2Y2Li4wMmM0YzYwYzg0MWVlZiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zi5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9idGYuY1xuQEAgLTQyNTAsNiAmIzQzOzQyNTAsMzIgQEAgc3RhdGljIHN0cnVjdCBidGZfcmF3X3Rlc3QgcmF3X3Rlc3RzW10gPSB7XG4gXHQubWF4X2VudHJpZXMgPSAxLFxuIH0sXG4gXG4mIzQzOy8qIHN0cnVjdCBpbm5lciB7XG4mIzQzOyAqICAgICBzdHJ1Y3QgYnBmX3NwaW5fbG9jayBsb2NrO1xuJiM0MzsgKiB9O1xuJiM0MzsgKlxuJiM0MzsgKiBzdHJ1Y3QgdmFsdWUge1xuJiM0MzsgKiAgICAgc3RydWN0IGJwZl9zcGluX2xvY2sgbG9jaztcbiYjNDM7ICogICAgIHN0cnVjdCBpbm5lciBuZXN0ZWQ7XG4mIzQzOyAqIH07XG4mIzQzOyAqL1xuJiM0Mzt7XG4mIzQzO1x0LmRlc2NyID0gXCYjMzQ7c3RydWN0IHRlc3QgZHVwbGljYXRlIG5lc3RlZCB1bmlxdWUgZmllbGRzXCYjMzQ7LFxuJiM0MztcdC5yYXdfdHlwZXMgPSB7XG4mIzQzO1x0XHRCVEZfVFlQRV9JTlRfRU5DKE5BTUVfVEJELCBCVEZfSU5UX1NJR05FRCwgMCwgMzIsIDQpLFx0LyogWzFdICovXG4mIzQzO1x0XHRCVEZfU1RSVUNUX0VOQyhOQU1FX1RCRCwgMSwgNCksXHRcdFx0XHQvKiBbMl0gKi9cbiYjNDM7XHRcdEJURl9NRU1CRVJfRU5DKE5BTUVfVEJELCAxLCAwKSxcbiYjNDM7XHRcdEJURl9TVFJVQ1RfRU5DKE5BTUVfVEJELCAxLCA0KSxcdFx0XHRcdC8qIFszXSAqL1xuJiM0MztcdFx0QlRGX01FTUJFUl9FTkMoTkFNRV9UQkQsIDIsIDApLFxuJiM0MztcdFx0QlRGX1NUUlVDVF9FTkMoTkFNRV9UQkQsIDIsIDgpLFx0XHRcdFx0LyogWzRdICovXG4mIzQzO1x0XHRCVEZfTUVNQkVSX0VOQyhOQU1FX1RCRCwgMiwgMCksXG4mIzQzO1x0XHRCVEZfTUVNQkVSX0VOQyhOQU1FX1RCRCwgMywgMzIpLFxuJiM0MztcdFx0QlRGX0VORF9SQVcsXG4mIzQzO1x0fSxcbiYjNDM7XHRCVEZfU1RSX1NFQyhcJiMzNDtcXDBpbnRcXDBicGZfc3Bpbl9sb2NrXFwwdmFsXFwwaW5uZXJcXDBsb2NrXFwwdmFsdWVcXDBsb2NrXFwwbmVzdGVkXCYjMzQ7KSxcbiYjNDM7XHQuYnRmX2xvYWRfZXJyID0gdHJ1ZSxcbiYjNDM7fSxcbiYjNDM7XG4ge1xuIFx0LmRlc2NyID0gXCYjMzQ7c3RydWN0IHRlc3QgcmVwZWF0ZWQgZmllbGRzIGNvdW50IG92ZXJmbG93XCYjMzQ7LFxuIFx0LnJhd190eXBlcyA9IHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAxNTowNzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2J0Zl9wYXJzZV9maWVsZHMmIzM0OywKICAgICYjMzQ7YnRmX3BhcnNlX3N0cnVjdF9tZXRhcyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBCVEYgcGFyc2luZyB3aGVyZSBkdXBsaWNhdGUgdW5pcXVlIGZpZWxkcyAobGlrZSBgYnBmX3NwaW5fbG9ja2ApIGNvdWxkIGJlIG5lc3RlZCBpbiBzdHJ1Y3RzLCBhbmQgdGhlIGBzZWVuX21hc2tgIGNoZWNrIHdvdWxkbiYjMzk7dCBjYXRjaCBpdCBiZWNhdXNlIGVhY2ggbGV2ZWwgb2YgbmVzdGluZyBoYWQgaXRzIG93biBgc2Vlbl9tYXNrYC4gUGFzc2luZyBhIHBvaW50ZXIgdG8gYHNlZW5fbWFza2AgZml4ZXMgdGhpcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBCUEYgc3Vic3lzdGVtLCBzcGVjaWZpY2FsbHkgaW4gQlRGIHBhcnNpbmcvdmFsaWRhdGlvbiwgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSB2aWEgdGhlIGBicGYoKWAgc3lzY2FsbCAoZS5nLiwgYEJQRl9CVEZfTE9BRGAgb3IgbWFwIGNyZWF0aW9uKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMmIzOTRmYjA5YmVmMGYxZWE2MTEyMGNmMDNjODJhMjZkMjZkMTJjYQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gSnVsIDE5IDE1OjA2OjU4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9idGYuYyBiL2tlcm5lbC9icGYvYnRmLmMKaW5kZXggY2JiMWU0OWI5YmNiZjUuLjhkNjI4NTUyZWY5OWViIDEwMDY0NAotLS0gYS9rZXJuZWwvYnBmL2J0Zi5jCiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvYnRmLmMKQEAgLTM3NTEsNyAmIzQzOzM3NTEsNyBAQCBzdGF0aWMgaW50IGJ0Zl9yZXBlYXRfZmllbGRzKHN0cnVjdCBidGZfZmllbGRfaW5mbyAqaW5mbywgaW50IGluZm9fY250LAogc3RhdGljIGludCBidGZfZmluZF9zdHJ1Y3RfZmllbGQoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLAogCQkJCSBjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKnQsIHUzMiBmaWVsZF9tYXNrLAogCQkJCSBzdHJ1Y3QgYnRmX2ZpZWxkX2luZm8gKmluZm8sIGludCBpbmZvX2NudCwKLQkJCQkgdTMyIGxldmVsKTsKJiM0MzsJCQkJIHUzMiBsZXZlbCwgdTMyICpzZWVuX21hc2spOwogCiAvKiBGaW5kIHNwZWNpYWwgZmllbGRzIGluIHRoZSBzdHJ1Y3QgdHlwZSBvZiBhIGZpZWxkLgogICoKQEAgLTM3NjIsNyAmIzQzOzM3NjIsNyBAQCBzdGF0aWMgaW50IGJ0Zl9maW5kX3N0cnVjdF9maWVsZChjb25zdCBzdHJ1Y3QgYnRmICpidGYsCiBzdGF0aWMgaW50IGJ0Zl9maW5kX25lc3RlZF9zdHJ1Y3QoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCBjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKnQsCiAJCQkJICB1MzIgb2ZmLCB1MzIgbmVsZW1zLAogCQkJCSAgdTMyIGZpZWxkX21hc2ssIHN0cnVjdCBidGZfZmllbGRfaW5mbyAqaW5mbywKLQkJCQkgIGludCBpbmZvX2NudCwgdTMyIGxldmVsKQomIzQzOwkJCQkgIGludCBpbmZvX2NudCwgdTMyIGxldmVsLCB1MzIgKnNlZW5fbWFzaykKIHsKIAlpbnQgcmV0LCBlcnIsIGk7CiAKQEAgLTM3NzAsNyAmIzQzOzM3NzAsNyBAQCBzdGF0aWMgaW50IGJ0Zl9maW5kX25lc3RlZF9zdHJ1Y3QoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCBjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKgogCWlmIChsZXZlbCAmZ3Q7PSBNQVhfUkVTT0xWRV9ERVBUSCkKIAkJcmV0dXJuIC1FMkJJRzsKIAotCXJldCA9IGJ0Zl9maW5kX3N0cnVjdF9maWVsZChidGYsIHQsIGZpZWxkX21hc2ssIGluZm8sIGluZm9fY250LCBsZXZlbCk7CiYjNDM7CXJldCA9IGJ0Zl9maW5kX3N0cnVjdF9maWVsZChidGYsIHQsIGZpZWxkX21hc2ssIGluZm8sIGluZm9fY250LCBsZXZlbCwgc2Vlbl9tYXNrKTsKIAogCWlmIChyZXQgJmx0Oz0gMCkKIAkJcmV0dXJuIHJldDsKQEAgLTM4MjcsNyAmIzQzOzM4MjcsNyBAQCBzdGF0aWMgaW50IGJ0Zl9maW5kX2ZpZWxkX29uZShjb25zdCBzdHJ1Y3QgYnRmICpidGYsCiAJCWlmIChleHBlY3RlZF9zaXplICZhbXA7JmFtcDsgZXhwZWN0ZWRfc2l6ZSAhPSBzeiAqIG5lbGVtcykKIAkJCXJldHVybiAwOwogCQlyZXQgPSBidGZfZmluZF9uZXN0ZWRfc3RydWN0KGJ0ZiwgdmFyX3R5cGUsIG9mZiwgbmVsZW1zLCBmaWVsZF9tYXNrLAotCQkJCQkgICAgICZhbXA7aW5mb1swXSwgaW5mb19jbnQsIGxldmVsKTsKJiM0MzsJCQkJCSAgICAgJmFtcDtpbmZvWzBdLCBpbmZvX2NudCwgbGV2ZWwsIHNlZW5fbWFzayk7CiAJCXJldHVybiByZXQ7CiAJfQogCkBAIC0zODkyLDExICYjNDM7Mzg5MiwxMSBAQCBzdGF0aWMgaW50IGJ0Zl9maW5kX2ZpZWxkX29uZShjb25zdCBzdHJ1Y3QgYnRmICpidGYsCiBzdGF0aWMgaW50IGJ0Zl9maW5kX3N0cnVjdF9maWVsZChjb25zdCBzdHJ1Y3QgYnRmICpidGYsCiAJCQkJIGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdCwgdTMyIGZpZWxkX21hc2ssCiAJCQkJIHN0cnVjdCBidGZfZmllbGRfaW5mbyAqaW5mbywgaW50IGluZm9fY250LAotCQkJCSB1MzIgbGV2ZWwpCiYjNDM7CQkJCSB1MzIgbGV2ZWwsIHUzMiAqc2Vlbl9tYXNrKQogewogCWludCByZXQsIGlkeCA9IDA7CiAJY29uc3Qgc3RydWN0IGJ0Zl9tZW1iZXIgKm1lbWJlcjsKLQl1MzIgaSwgb2ZmLCBzZWVuX21hc2sgPSAwOwomIzQzOwl1MzIgaSwgb2ZmOwogCiAJZm9yX2VhY2hfbWVtYmVyKGksIHQsIG1lbWJlcikgewogCQljb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKm1lbWJlcl90eXBlID0gYnRmX3R5cGVfYnlfaWQoYnRmLApAQCAtMzkxMCw3ICYjNDM7MzkxMCw3IEBAIHN0YXRpYyBpbnQgYnRmX2ZpbmRfc3RydWN0X2ZpZWxkKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwKIAogCQlyZXQgPSBidGZfZmluZF9maWVsZF9vbmUoYnRmLCB0LCBtZW1iZXJfdHlwZSwgaSwKIAkJCQkJIG9mZiwgMCwKLQkJCQkJIGZpZWxkX21hc2ssICZhbXA7c2Vlbl9tYXNrLAomIzQzOwkJCQkJIGZpZWxkX21hc2ssIHNlZW5fbWFzaywKIAkJCQkJICZhbXA7aW5mb1tpZHhdLCBpbmZvX2NudCAtIGlkeCwgbGV2ZWwpOwogCQlpZiAocmV0ICZsdDsgMCkKIAkJCXJldHVybiByZXQ7CkBAIC0zOTIxLDExICYjNDM7MzkyMSwxMSBAQCBzdGF0aWMgaW50IGJ0Zl9maW5kX3N0cnVjdF9maWVsZChjb25zdCBzdHJ1Y3QgYnRmICpidGYsCiAKIHN0YXRpYyBpbnQgYnRmX2ZpbmRfZGF0YXNlY192YXIoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCBjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKnQsCiAJCQkJdTMyIGZpZWxkX21hc2ssIHN0cnVjdCBidGZfZmllbGRfaW5mbyAqaW5mbywKLQkJCQlpbnQgaW5mb19jbnQsIHUzMiBsZXZlbCkKJiM0MzsJCQkJaW50IGluZm9fY250LCB1MzIgbGV2ZWwsIHUzMiAqc2Vlbl9tYXNrKQogewogCWludCByZXQsIGlkeCA9IDA7CiAJY29uc3Qgc3RydWN0IGJ0Zl92YXJfc2VjaW5mbyAqdnNpOwotCXUzMiBpLCBvZmYsIHNlZW5fbWFzayA9IDA7CiYjNDM7CXUzMiBpLCBvZmY7CiAKIAlmb3JfZWFjaF92c2koaSwgdCwgdnNpKSB7CiAJCWNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdmFyID0gYnRmX3R5cGVfYnlfaWQoYnRmLCB2c2ktJmd0O3R5cGUpOwpAQCAtMzkzMyw3ICYjNDM7MzkzMyw3IEBAIHN0YXRpYyBpbnQgYnRmX2ZpbmRfZGF0YXNlY192YXIoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCBjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKnQsCiAKIAkJb2ZmID0gdnNpLSZndDtvZmZzZXQ7CiAJCXJldCA9IGJ0Zl9maW5kX2ZpZWxkX29uZShidGYsIHZhciwgdmFyX3R5cGUsIC0xLCBvZmYsIHZzaS0mZ3Q7c2l6ZSwKLQkJCQkJIGZpZWxkX21hc2ssICZhbXA7c2Vlbl9tYXNrLAomIzQzOwkJCQkJIGZpZWxkX21hc2ssIHNlZW5fbWFzaywKIAkJCQkJICZhbXA7aW5mb1tpZHhdLCBpbmZvX2NudCAtIGlkeCwKIAkJCQkJIGxldmVsKTsKIAkJaWYgKHJldCAmbHQ7IDApCkBAIC0zOTQ3LDEwICYjNDM7Mzk0NywxMiBAQCBzdGF0aWMgaW50IGJ0Zl9maW5kX2ZpZWxkKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgY29uc3Qgc3RydWN0IGJ0Zl90eXBlICp0LAogCQkJICB1MzIgZmllbGRfbWFzaywgc3RydWN0IGJ0Zl9maWVsZF9pbmZvICppbmZvLAogCQkJICBpbnQgaW5mb19jbnQpCiB7CiYjNDM7CXUzMiBzZWVuX21hc2sgPSAwOwomIzQzOwogCWlmIChfX2J0Zl90eXBlX2lzX3N0cnVjdCh0KSkKLQkJcmV0dXJuIGJ0Zl9maW5kX3N0cnVjdF9maWVsZChidGYsIHQsIGZpZWxkX21hc2ssIGluZm8sIGluZm9fY250LCAwKTsKJiM0MzsJCXJldHVybiBidGZfZmluZF9zdHJ1Y3RfZmllbGQoYnRmLCB0LCBmaWVsZF9tYXNrLCBpbmZvLCBpbmZvX2NudCwgMCwgJmFtcDtzZWVuX21hc2spOwogCWVsc2UgaWYgKGJ0Zl90eXBlX2lzX2RhdGFzZWModCkpCi0JCXJldHVybiBidGZfZmluZF9kYXRhc2VjX3ZhcihidGYsIHQsIGZpZWxkX21hc2ssIGluZm8sIGluZm9fY250LCAwKTsKJiM0MzsJCXJldHVybiBidGZfZmluZF9kYXRhc2VjX3ZhcihidGYsIHQsIGZpZWxkX21hc2ssIGluZm8sIGluZm9fY250LCAwLCAmYW1wO3NlZW5fbWFzayk7CiAJcmV0dXJuIC1FSU5WQUw7CiB9CiAKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnRmLmMKaW5kZXggNjY4NTVjYmQ2YjczZjYuLjAyYzRjNjBjODQxZWVmIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9idGYuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9idGYuYwpAQCAtNDI1MCw2ICYjNDM7NDI1MCwzMiBAQCBzdGF0aWMgc3RydWN0IGJ0Zl9yYXdfdGVzdCByYXdfdGVzdHNbXSA9IHsKIAkubWF4X2VudHJpZXMgPSAxLAogfSwKIAomIzQzOy8qIHN0cnVjdCBpbm5lciB7CiYjNDM7ICogICAgIHN0cnVjdCBicGZfc3Bpbl9sb2NrIGxvY2s7CiYjNDM7ICogfTsKJiM0MzsgKgomIzQzOyAqIHN0cnVjdCB2YWx1ZSB7CiYjNDM7ICogICAgIHN0cnVjdCBicGZfc3Bpbl9sb2NrIGxvY2s7CiYjNDM7ICogICAgIHN0cnVjdCBpbm5lciBuZXN0ZWQ7CiYjNDM7ICogfTsKJiM0MzsgKi8KJiM0Mzt7CiYjNDM7CS5kZXNjciA9ICYjMzQ7c3RydWN0IHRlc3QgZHVwbGljYXRlIG5lc3RlZCB1bmlxdWUgZmllbGRzJiMzNDssCiYjNDM7CS5yYXdfdHlwZXMgPSB7CiYjNDM7CQlCVEZfVFlQRV9JTlRfRU5DKE5BTUVfVEJELCBCVEZfSU5UX1NJR05FRCwgMCwgMzIsIDQpLAkvKiBbMV0gKi8KJiM0MzsJCUJURl9TVFJVQ1RfRU5DKE5BTUVfVEJELCAxLCA0KSwJCQkJLyogWzJdICovCiYjNDM7CQlCVEZfTUVNQkVSX0VOQyhOQU1FX1RCRCwgMSwgMCksCiYjNDM7CQlCVEZfU1RSVUNUX0VOQyhOQU1FX1RCRCwgMSwgNCksCQkJCS8qIFszXSAqLwomIzQzOwkJQlRGX01FTUJFUl9FTkMoTkFNRV9UQkQsIDIsIDApLAomIzQzOwkJQlRGX1NUUlVDVF9FTkMoTkFNRV9UQkQsIDIsIDgpLAkJCQkvKiBbNF0gKi8KJiM0MzsJCUJURl9NRU1CRVJfRU5DKE5BTUVfVEJELCAyLCAwKSwKJiM0MzsJCUJURl9NRU1CRVJfRU5DKE5BTUVfVEJELCAzLCAzMiksCiYjNDM7CQlCVEZfRU5EX1JBVywKJiM0MzsJfSwKJiM0MzsJQlRGX1NUUl9TRUMoJiMzNDtcMGludFwwYnBmX3NwaW5fbG9ja1wwdmFsXDBpbm5lclwwbG9ja1wwdmFsdWVcMGxvY2tcMG5lc3RlZCYjMzQ7KSwKJiM0MzsJLmJ0Zl9sb2FkX2VyciA9IHRydWUsCiYjNDM7fSwKJiM0MzsKIHsKIAkuZGVzY3IgPSAmIzM0O3N0cnVjdCB0ZXN0IHJlcGVhdGVkIGZpZWxkcyBjb3VudCBvdmVyZmxvdyYjMzQ7LAogCS5yYXdfdHlwZXMgPSB7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDE1OjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4NDQKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAzNjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgS2VybmVsIEJURiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBhZmZlY3RpbmcgdGhlIGtlcm5lbCwgc3BlY2lmaWNhbGx5IHdpdGhpbiBga2VybmVsL2JwZi9idGYuY2AuIEl0IGxvb2tzIGxpa2UgdGhleSYjMzk7dmUgbW9kaWZpZWQgdGhlIHNpZ25hdHVyZXMgb2YgYGJ0Zl9maW5kX3N0cnVjdF9maWVsZGAsIGBidGZfZmluZF9uZXN0ZWRfc3RydWN0YCwgYW5kIGBidGZfZmluZF9kYXRhc2VjX3ZhcmAuIFRoZXkmIzM5O3ZlIHN3aXRjaGVkIGZyb20gbG9jYWwgYHNlZW5fbWFza2AgdmFyaWFibGVzIHRvIHBhc3NpbmcgYSBgdTMyICpzZWVuX21hc2tgIHBvaW50ZXIuIEFoLCByaWdodCwgSSBzZWUuIFRoaXMgaXMgdG8gYWRkcmVzcyBhIHByb2JsZW0gd2l0aCBkdXBsaWNhdGUgdW5pcXVlIGZpZWxkcywgbGlrZSBhIGBicGZfc3Bpbl9sb2NrYCwgZ2V0dGluZyBuZXN0ZWQgd2l0aGluIHN0cnVjdHMuIFRoZSBvcmlnaW5hbCBpbXBsZW1lbnRhdGlvbiwgd2l0aCBpdHMgbG9jYWwgbWFza3MsIHdvdWxkbiYjMzk7dCBjYXRjaCB0aGVzZSBkdXBsaWNhdGVzIGFjcm9zcyBtdWx0aXBsZSBsZXZlbHMgb2YgbmVzdGluZy4gQnkgc2hhcmluZyB0aGUgYHNlZW5fbWFza2AgcG9pbnRlciwgdGhleSYjMzk7cmUgZW5zdXJpbmcgdGhhdCB0aGUgd2hvbGUgaGllcmFyY2h5IGlzIGNoZWNrZWQsIHdoaWNoIG1ha2VzIHNlbnNlLgoKU28sIGZ1bmN0aW9uYWxseSwgdGhpcyBpcyBhIGNoYW5nZSB3aXRoaW4gdGhlIEJQRiBzdWJzeXN0ZW0sIGFuZCwgbW9yZSBwcmVjaXNlbHksIHJlbGF0ZWQgdG8gQlRGIHBhcnNpbmcgYW5kIHZhbGlkYXRpb24uIERlZmluaXRlbHkgc29tZXRoaW5nIHdlIG5lZWQgdG8gY29uc2lkZXIgZm9yIGZ1enppbmcuIEdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIGNoYW5nZSwgaXQmIzM5O3MgZWFzaWx5IHJlYWNoYWJsZSwgc28gd2Ugc2hvdWxkIGZvY3VzIHNvbWUgYXR0ZW50aW9uIGhlcmUuCgpOb3csIGxldCYjMzk7cyBuYWlsIGRvd24gdGhlIHNwZWNpZmljIGZ1bmN0aW9ucyB3ZSBuZWVkIHRvIGZvY3VzIG9uIGZvciBmdXp6aW5nLiBXZSBoYXZlIHRob3NlIHByaW1hcnkgZnVuY3Rpb25zOiBgYnRmX2ZpbmRfc3RydWN0X2ZpZWxkYCwgYGJ0Zl9maW5kX25lc3RlZF9zdHJ1Y3RgLCBhbmQgYGJ0Zl9maW5kX2RhdGFzZWNfdmFyYCwgYW5kIGBidGZfZmluZF9maWVsZF9vbmVgLCBhbmQgYGJ0Zl9maW5kX2ZpZWxkYC4gTmV4dCBzdGVwLCBJIG5lZWQgdG8gY2hlY2sgaWYgdGhleSYjMzk7cmUgc3RhdGljIG9yIGV4cG9ydGVkLiBMZXQmIzM5O3Mgc2VlLi4uIGBidGZfZmluZF9zdHJ1Y3RfZmllbGRgIGlzIHN0YXRpYy4gU2FtZSBmb3IgYGJ0Zl9maW5kX25lc3RlZF9zdHJ1Y3RgIGFuZCBgYnRmX2ZpbmRfZGF0YXNlY192YXJgLiBOb3csIGBidGZfZmluZF9maWVsZGAuLi4gSGFuZyBvbiwgSSB0aGluayBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgbGFzdCBvbmUuIExldCYjMzk7cyBnbyBsb29rIGF0IGBrZXJuZWwvYnBmL2J0Zi5jYCBkaXJlY3RseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAxNTowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtidGZfZmluZF9maWVsZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvYnRmLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9idGYuYz0zNzYyPXN0YXRpYyBpbnQgYnRmX2ZpbmRfbmVzdGVkX3N0cnVjdChjb25zdCBzdHJ1Y3QgYnRmICpidGYsIGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdCxcbi0tXG5rZXJuZWwvYnBmL2J0Zi5jLTM3OTQtXG5rZXJuZWwvYnBmL2J0Zi5jOjM3OTU6c3RhdGljIGludCBidGZfZmluZF9maWVsZF9vbmUoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLFxua2VybmVsL2JwZi9idGYuYy0zNzk2LVx0XHRcdCAgICAgIGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdmFyLFxuLS1cbmtlcm5lbC9icGYvYnRmLmM9Mzg5Mj1zdGF0aWMgaW50IGJ0Zl9maW5kX3N0cnVjdF9maWVsZChjb25zdCBzdHJ1Y3QgYnRmICpidGYsXG4tLVxua2VybmVsL2JwZi9idGYuYy0zOTEwLVxua2VybmVsL2JwZi9idGYuYzozOTExOlx0XHRyZXQgPSBidGZfZmluZF9maWVsZF9vbmUoYnRmLCB0LCBtZW1iZXJfdHlwZSwgaSxcbmtlcm5lbC9icGYvYnRmLmMtMzkxMi1cdFx0XHRcdFx0IG9mZiwgMCxcbi0tXG5rZXJuZWwvYnBmL2J0Zi5jPTM5MjI9c3RhdGljIGludCBidGZfZmluZF9kYXRhc2VjX3Zhcihjb25zdCBzdHJ1Y3QgYnRmICpidGYsIGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdCxcbi0tXG5rZXJuZWwvYnBmL2J0Zi5jLTM5MzQtXHRcdG9mZiA9IHZzaS1cdTAwM2VvZmZzZXQ7XG5rZXJuZWwvYnBmL2J0Zi5jOjM5MzU6XHRcdHJldCA9IGJ0Zl9maW5kX2ZpZWxkX29uZShidGYsIHZhciwgdmFyX3R5cGUsIC0xLCBvZmYsIHZzaS1cdTAwM2VzaXplLFxua2VybmVsL2JwZi9idGYuYy0zOTM2LVx0XHRcdFx0XHQgZmllbGRfbWFzaywgc2Vlbl9tYXNrLFxuLS1cbmtlcm5lbC9icGYvYnRmLmMtMzk0NS1cbmtlcm5lbC9icGYvYnRmLmM6Mzk0NjpzdGF0aWMgaW50IGJ0Zl9maW5kX2ZpZWxkKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgY29uc3Qgc3RydWN0IGJ0Zl90eXBlICp0LFxua2VybmVsL2JwZi9idGYuYy0zOTQ3LVx0XHRcdCAgdTMyIGZpZWxkX21hc2ssIHN0cnVjdCBidGZfZmllbGRfaW5mbyAqaW5mbyxcbi0tXG5rZXJuZWwvYnBmL2J0Zi5jPTQxMjA9c3RydWN0IGJ0Zl9yZWNvcmQgKmJ0Zl9wYXJzZV9maWVsZHMoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCBjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKnQsXG4tLVxua2VybmVsL2JwZi9idGYuYy00MTI3LVxua2VybmVsL2JwZi9idGYuYzo0MTI4Olx0cmV0ID0gYnRmX2ZpbmRfZmllbGQoYnRmLCB0LCBmaWVsZF9tYXNrLCBpbmZvX2FyciwgQVJSQVlfU0laRShpbmZvX2FycikpO1xua2VybmVsL2JwZi9idGYuYy00MTI5LVx0aWYgKHJldCBcdTAwM2MgMClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAxNTowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1Mjk3CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBCVEYgRmllbGQgUGFyc2luZyBMb2dpYyoqCgpSaWdodCwgbGV0JiMzOTtzIHRyYWNlIHRoaXMuIGBidGZfcGFyc2VfZmllbGRzYCBpcyBjbGVhcmx5IHRoZSB3b3JraG9yc2UgZm9yIHBhcnNpbmcgZmllbGRzIGluIHRoZSBCVEYgKEJQRiBUeXBlIEZvcm1hdCkgZGF0YS4gQW5kIGl0IHNlZW1zIHRvIGxldmVyYWdlIGBidGZfZmluZF9maWVsZGAgYXMgYSBoZWxwZXIgZnVuY3Rpb24uIFRoZSBuYXR1cmFsIG5leHQgc3RlcCBpcyB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIHRoZSBjYWxsaW5nIGZ1bmN0aW9uLiBTbywgSSBuZWVkIHRvIHBpbnBvaW50IGV2ZXJ5d2hlcmUgYGJ0Zl9wYXJzZV9maWVsZHNgIGlzIGludm9rZWQgd2l0aGluIHRoZSBjb2RlYmFzZS4gS25vd2luZyB3aGVyZSBpdCYjMzk7cyB1c2VkIGlzIGNydWNpYWwgdG8gdW5kZXJzdGFuZGluZyB0aGUgZGlmZmVyZW50IHNjZW5hcmlvcyBhbmQgZGF0YSBzdHJ1Y3R1cmVzIGl0IG9wZXJhdGVzIG9uLiBUaGlzIHdpbGwgZXhwb3NlIHRoZSBsYXJnZXIgYXJjaGl0ZWN0dXJlIG9mIGhvdyB0aGUgQlRGIGRhdGEgaXMgcHJvY2Vzc2VkIGFuZCBpbnRlcnByZXRlZCBieSB0aGUgQlBGIGluZnJhc3RydWN0dXJlLiBMZXQmIzM5O3Mgc2VlIHdoZXJlIHRob3NlIGNhbGxzIGFyZSBtYWRlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDE1OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2J0Zl9wYXJzZV9maWVsZHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL2J0Zi5jPTQxMDg9c3RhdGljIGludCBidGZfZmllbGRfY21wKGNvbnN0IHZvaWQgKl9hLCBjb25zdCB2b2lkICpfYiwgY29uc3Qgdm9pZCAqcHJpdilcbi0tXG5rZXJuZWwvYnBmL2J0Zi5jLTQxMTktXG5rZXJuZWwvYnBmL2J0Zi5jOjQxMjA6c3RydWN0IGJ0Zl9yZWNvcmQgKmJ0Zl9wYXJzZV9maWVsZHMoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCBjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKnQsXG5rZXJuZWwvYnBmL2J0Zi5jLTQxMjEtXHRcdFx0XHQgICAgdTMyIGZpZWxkX21hc2ssIHUzMiB2YWx1ZV9zaXplKVxuLS1cbmtlcm5lbC9icGYvYnRmLmM9NTc4MD1idGZfcGFyc2Vfc3RydWN0X21ldGFzKHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csIHN0cnVjdCBidGYgKmJ0Zilcbi0tXG5rZXJuZWwvYnBmL2J0Zi5jLTU4ODAtXHRcdHR5cGUtXHUwMDNlYnRmX2lkID0gaTtcbmtlcm5lbC9icGYvYnRmLmM6NTg4MTpcdFx0cmVjb3JkID0gYnRmX3BhcnNlX2ZpZWxkcyhidGYsIHQsIEJQRl9TUElOX0xPQ0sgfCBCUEZfUkVTX1NQSU5fTE9DSyB8IEJQRl9MSVNUX0hFQUQgfCBCUEZfTElTVF9OT0RFIHxcbmtlcm5lbC9icGYvYnRmLmMtNTg4Mi1cdFx0XHRcdFx0XHQgIEJQRl9SQl9ST09UIHwgQlBGX1JCX05PREUgfCBCUEZfUkVGQ09VTlQgfFxuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jPTc2MD1ib29sIGJ0Zl9yZWNvcmRfZXF1YWwoY29uc3Qgc3RydWN0IGJ0Zl9yZWNvcmQgKnJlY19hLCBjb25zdCBzdHJ1Y3QgYnRmX3JlY29yZCAqcmVjX2IpXG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmMtNzcxLVx0c2l6ZSA9IHN0cnVjdF9zaXplKHJlY19hLCBmaWVsZHMsIHJlY19hLVx1MDAzZWNudCk7XG5rZXJuZWwvYnBmL3N5c2NhbGwuYzo3NzI6XHQvKiBidGZfcGFyc2VfZmllbGRzIHVzZXMga3phbGxvYyB0byBhbGxvY2F0ZSBhIGJ0Zl9yZWNvcmQsIHNvIHVudXNlZFxua2VybmVsL2JwZi9zeXNjYWxsLmMtNzczLVx0ICogbWVtYmVycyBhcmUgemVyb2VkIG91dC4gU28gbWVtY21wIGlzIHNhZmUgdG8gZG8gd2l0aG91dCB3b3JyeWluZ1xuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jPTEyNDM9c3RhdGljIGludCBtYXBfY2hlY2tfYnRmKHN0cnVjdCBicGZfbWFwICptYXAsIHN0cnVjdCBicGZfdG9rZW4gKnRva2VuLFxuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jLTEyNjQtXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzoxMjY1Olx0bWFwLVx1MDAzZXJlY29yZCA9IGJ0Zl9wYXJzZV9maWVsZHMoYnRmLCB2YWx1ZV90eXBlLFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMTI2Ni1cdFx0XHRcdCAgICAgICBCUEZfU1BJTl9MT0NLIHwgQlBGX1JFU19TUElOX0xPQ0sgfCBCUEZfVElNRVIgfCBCUEZfS1BUUiB8IEJQRl9MSVNUX0hFQUQgfFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDE1OjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYxNDcKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBidGZfcGFyc2VfZmllbGRzIEZ1bmN0aW9uKioKCk9rYXksIHNvIGBidGZfcGFyc2VfZmllbGRzYCBpcyBkZWZpbml0ZWx5IHNpZ25pZmljYW50OyBpdCBzZWVtcyB0byBiZSBleHBvcnRlZCBvciwgYXQgdGhlIHZlcnkgbGVhc3QsIGFjdGl2ZWx5IHVzZWQgYWNyb3NzIG11bHRpcGxlIGZpbGVzIHdpdGhpbiBga2VybmVsL2JwZi9gLiBUaGlzIHdhcnJhbnRzIGNsb3NlciBpbnNwZWN0aW9uLiBNeSBpbW1lZGlhdGUgdGhvdWdodHMgYXJlIHRvIHRyYWNlIGl0cyB1c2FnZS4KCkFoYSEgSXQmIzM5O3MgY2FsbGVkIGZyb20gYG1hcF9jaGVja19idGZgIHdpdGhpbiBga2VybmVsL2JwZi9zeXNjYWxsLmNgIGFuZCBhbHNvIGZyb20gYGJ0Zl9wYXJzZV9zdHJ1Y3RfbWV0YXNgIGluIGBrZXJuZWwvYnBmL2J0Zi5jYC4gVGhhdCBnaXZlcyBtZSBhIGZldyBzb2xpZCBzdGFydGluZyBwb2ludHMgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZS4KCk5vdywgd2hpY2ggZnVuY3Rpb25zIGhhdmUgYmVlbiBtb2RpZmllZD8gTG9va3MgbGlrZSB0aGUgY2hhbmdlcyBhcmUgY29uY2VudHJhdGVkIG9uOgoqICAgYGJ0Zl9maW5kX3N0cnVjdF9maWVsZGAKKiAgIGBidGZfZmluZF9uZXN0ZWRfc3RydWN0YAoqICAgYGJ0Zl9maW5kX2RhdGFzZWNfdmFyYAoqICAgYGJ0Zl9maW5kX2ZpZWxkX29uZWAKKiAgIGBidGZfZmluZF9maWVsZGAKCkludGVyZXN0aW5nLiBUaGVzZSBhcmUgYWxsIHN0YXRpYyBmdW5jdGlvbnMsIGFuZCB0aGV5JiMzOTtyZSBhbGwgZGVmaW5lZCB3aXRoaW4gYGtlcm5lbC9icGYvYnRmLmNgLiBTbywgdGhleSYjMzk7cmUgcHJvYmFibHkgaGVscGVyIGZ1bmN0aW9ucyB3aXRoaW4gdGhlIHNhbWUgbW9kdWxlLCB3aGljaCBpcyBjb21tb24gaW4gY29kZWJhc2VzLgoKV2l0aCB0aGlzIHVuZGVyc3RhbmRpbmcsIEkgY2FuIHNlZSBob3cgSSBjb3VsZCB6ZXJvIGluIG9uIGBidGZfcGFyc2VfZmllbGRzYCB0byBmaW5kIG91dCB3aGF0IGl0IGRvZXMgaW4gZGV0YWlsLiBJIGNvdWxkIGFsc28gaW52ZXN0aWdhdGUgYGJ0Zl9wYXJzZV9zdHJ1Y3RfbWV0YXNgLCBvciBwZXJoYXBzIGV2ZW4gbG9vayBhdCBgbWFwX2NoZWNrX2J0ZmAgd2hpY2ggY2FsbHMgYGJ0Zl9wYXJzZV9maWVsZHNgLiBNeSBmaXJzdCBzdGVwLCB0aG91Z2gsIGlzIHRvIGNvbmZpcm0gd2hldGhlciBgYnRmX3BhcnNlX2ZpZWxkc2AgaXMgZXhwb3J0ZWQsIGFzIGl0IG1pZ2h0IGluZm9ybSBob3cgSSBzaG91bGQgbG9vayBhdCB0aGUgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAxNTowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0wuKmJ0Zl9wYXJzZV9maWVsZHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMTU6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjc3OQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDM3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipBbmFseXppbmcgS2VybmVsIEZ1bmN0aW9uIFNjb3BlKioKClJpZ2h0LCBzbyB0aGlzIGZ1bmN0aW9uIGlzbiYjMzk7dCBiZWluZyBleHBsaWNpdGx5IGV4cG9ydGVkIHRvIGFueSBwYXJ0aWN1bGFyIG1vZHVsZTsgaXQmIzM5O3MgaGFuZ2luZyBvdXQgZ2xvYmFsbHksIHdpdGhpbiB0aGUga2VybmVsIGl0c2VsZiwgYnV0IGl0JiMzOTtzICpub3QqIHN0YXRpYywgd2hpY2ggZ2l2ZXMgaXQgYSBkaWZmZXJlbnQgY29ubm90YXRpb24uIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcsIGFuZCBpdCBzdWdnZXN0cyBwb3RlbnRpYWwgYWNjZXNzaWJpbGl0eSBmcm9tIGRpZmZlcmVudCBwYXJ0cyBvZiB0aGUga2VybmVsLiBUbyB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBzY29wZSwgbXkgbmV4dCBzdGVwIGlzIGNsZWFyLiBJIG5lZWQgdG8gZGl2ZSBzdHJhaWdodCBpbnRvIHRoZSBkZWZpbml0aW9uIG9mIGBidGZfcGFyc2VfZmllbGRzYC4gVW5kZXJzdGFuZGluZyAqaG93KiBpdCYjMzk7cyBkZWZpbmVkIHdpbGwgc2hlZCBsaWdodCBvbiB3aGVyZSBhbmQgaG93IGl0JiMzOTtzIGludGVuZGVkIHRvIGJlIHVzZWQgYW5kLCBjb25zZXF1ZW50bHksIGl0cyBicm9hZGVyIGltcGFjdCB3aXRoaW4gdGhlIGtlcm5lbCYjMzk7cyBhcmNoaXRlY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDE1OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0cnVjdCBidGZfcmVjb3JkIFxcKmJ0Zl9wYXJzZV9maWVsZHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL2J0Zi5jPTQxMDg9c3RhdGljIGludCBidGZfZmllbGRfY21wKGNvbnN0IHZvaWQgKl9hLCBjb25zdCB2b2lkICpfYiwgY29uc3Qgdm9pZCAqcHJpdilcbi0tXG5rZXJuZWwvYnBmL2J0Zi5jLTQxMTktXG5rZXJuZWwvYnBmL2J0Zi5jOjQxMjA6c3RydWN0IGJ0Zl9yZWNvcmQgKmJ0Zl9wYXJzZV9maWVsZHMoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCBjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKnQsXG5rZXJuZWwvYnBmL2J0Zi5jLTQxMjEtXHRcdFx0XHQgICAgdTMyIGZpZWxkX21hc2ssIHUzMiB2YWx1ZV9zaXplKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAxNTowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MTU0CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkluaXRpYWwgQXNzZXNzbWVudDogTmF2aWdhdGluZyBCVEYgQ29kZSoqCgpSaWdodCwgc28gdGhpcyBpc24mIzM5O3QgYSBzaW1wbGUsIHVuY2hhbmdpbmcgc2l0dWF0aW9uOyB0aGVyZSYjMzk7cyBzb21lIGR5bmFtaWMgYXNwZWN0IHRvIHRoaXMgcHJvYmxlbS4gVGhhdCBzdWdnZXN0cyB3ZSBjYW4mIzM5O3QganVzdCBsb29rIGluIG9uZSBwbGFjZSBhbmQgYmUgZG9uZSB3aXRoIGl0LiBUaGUgdmFyaWFiaWxpdHkgbWVhbnMgd2UgbmVlZCB0byBkcmlsbCBkb3duIGFuZCB1bmRlcnN0YW5kIHRoZSBmbG93LiBNeSBpbnN0aW5jdCBpcyB0aGF0IHRoZXJlIGFyZSBhIGZldyBrZXkgZnVuY3Rpb25zIHRvIGV4YW1pbmUuIEZpcnN0LCBgYnRmX3BhcnNlX2ZpZWxkc2AgLSB0aGF0IGZlZWxzIGxpa2UgYSBnb29kIGNlbnRyYWwgcG9pbnQsIGxpa2UgYSAmIzM0O2ZvY3VzIHN5bWJvbCYjMzQ7IGZvciB3aGVyZSB3ZSBjYW4gemVybyBpbiBvbiB0aGUgcmVsZXZhbnQgZnVuY3Rpb25hbGl0eS4gQWRkaXRpb25hbGx5LCBJIHRoaW5rIGBidGZfcGFyc2Vfc3RydWN0X21ldGFzYCBjb3VsZCBvZmZlciBzb21lIHZhbHVhYmxlIGNvbnRleHQuIEFub3RoZXIgbGlrZWx5IGNhbmRpZGF0ZSBzZWVtcyB0byBiZSBgbWFwX2NoZWNrX2J0ZmAuIFJpZ2h0LCBsZXQmIzM5O3Mgc3RhcnQgYnkgY2hlY2tpbmcgYG1hcF9jaGVja19idGZgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAxNTowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttYXBfY2hlY2tfYnRmJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9hcmVuYS5jPTQwMj1zdGF0aWMgbG9uZyBhcmVuYV9tYXBfdXBkYXRlX2VsZW0oc3RydWN0IGJwZl9tYXAgKm1hcCwgdm9pZCAqa2V5LFxuLS1cbmtlcm5lbC9icGYvYXJlbmEuYy00MDctXG5rZXJuZWwvYnBmL2FyZW5hLmM6NDA4OnN0YXRpYyBpbnQgYXJlbmFfbWFwX2NoZWNrX2J0ZihzdHJ1Y3QgYnBmX21hcCAqbWFwLCBjb25zdCBzdHJ1Y3QgYnRmICpidGYsXG5rZXJuZWwvYnBmL2FyZW5hLmMtNDA5LVx0XHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKmtleV90eXBlLCBjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKnZhbHVlX3R5cGUpXG4tLVxua2VybmVsL2JwZi9hcmVuYS5jPTYzMT1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgYXJlbmFfbWFwX29wcyA9IHtcbi0tXG5rZXJuZWwvYnBmL2FyZW5hLmMtNjQ0LVx0Lm1hcF9kZWxldGVfZWxlbSA9IGFyZW5hX21hcF9kZWxldGVfZWxlbSxcbmtlcm5lbC9icGYvYXJlbmEuYzo2NDU6XHQubWFwX2NoZWNrX2J0ZiA9IGFyZW5hX21hcF9jaGVja19idGYsXG5rZXJuZWwvYnBmL2FyZW5hLmMtNjQ2LVx0Lm1hcF9tZW1fdXNhZ2UgPSBhcmVuYV9tYXBfbWVtX3VzYWdlLFxuLS1cbmtlcm5lbC9icGYvYXJyYXltYXAuYz01MjY9c3RhdGljIHZvaWQgcGVyY3B1X2FycmF5X21hcF9zZXFfc2hvd19lbGVtKHN0cnVjdCBicGZfbWFwICptYXAsIHZvaWQgKmtleSxcbi0tXG5rZXJuZWwvYnBmL2FycmF5bWFwLmMtNTQ4LVxua2VybmVsL2JwZi9hcnJheW1hcC5jOjU0OTpzdGF0aWMgaW50IGFycmF5X21hcF9jaGVja19idGYoc3RydWN0IGJwZl9tYXAgKm1hcCxcbmtlcm5lbC9icGYvYXJyYXltYXAuYy01NTAtXHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBidGYgKmJ0Zixcbi0tXG5rZXJuZWwvYnBmL2FycmF5bWFwLmM9ODAxPWNvbnN0IHN0cnVjdCBicGZfbWFwX29wcyBhcnJheV9tYXBfb3BzID0ge1xuLS1cbmtlcm5lbC9icGYvYXJyYXltYXAuYy04MTUtXHQubWFwX3NlcV9zaG93X2VsZW0gPSBhcnJheV9tYXBfc2VxX3Nob3dfZWxlbSxcbmtlcm5lbC9icGYvYXJyYXltYXAuYzo4MTY6XHQubWFwX2NoZWNrX2J0ZiA9IGFycmF5X21hcF9jaGVja19idGYsXG5rZXJuZWwvYnBmL2FycmF5bWFwLmMtODE3LVx0Lm1hcF9sb29rdXBfYmF0Y2ggPSBnZW5lcmljX21hcF9sb29rdXBfYmF0Y2gsXG4tLVxua2VybmVsL2JwZi9hcnJheW1hcC5jPTgyNz1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgcGVyY3B1X2FycmF5X21hcF9vcHMgPSB7XG4tLVxua2VybmVsL2JwZi9hcnJheW1hcC5jLTgzOC1cdC5tYXBfc2VxX3Nob3dfZWxlbSA9IHBlcmNwdV9hcnJheV9tYXBfc2VxX3Nob3dfZWxlbSxcbmtlcm5lbC9icGYvYXJyYXltYXAuYzo4Mzk6XHQubWFwX2NoZWNrX2J0ZiA9IGFycmF5X21hcF9jaGVja19idGYsXG5rZXJuZWwvYnBmL2FycmF5bWFwLmMtODQwLVx0Lm1hcF9sb29rdXBfYmF0Y2ggPSBnZW5lcmljX21hcF9sb29rdXBfYmF0Y2gsXG4tLVxua2VybmVsL2JwZi9hcnJheW1hcC5jPTEzMjI9Y29uc3Qgc3RydWN0IGJwZl9tYXBfb3BzIHBlcmZfZXZlbnRfYXJyYXlfbWFwX29wcyA9IHtcbi0tXG5rZXJuZWwvYnBmL2FycmF5bWFwLmMtMTMzMi1cdC5tYXBfcmVsZWFzZSA9IHBlcmZfZXZlbnRfZmRfYXJyYXlfcmVsZWFzZSxcbmtlcm5lbC9icGYvYXJyYXltYXAuYzoxMzMzOlx0Lm1hcF9jaGVja19idGYgPSBtYXBfY2hlY2tfbm9fYnRmLFxua2VybmVsL2JwZi9hcnJheW1hcC5jLTEzMzQtXHQubWFwX21lbV91c2FnZSA9IGFycmF5X21hcF9tZW1fdXNhZ2UsXG4tLVxua2VybmVsL2JwZi9hcnJheW1hcC5jPTEzNTg9Y29uc3Qgc3RydWN0IGJwZl9tYXBfb3BzIGNncm91cF9hcnJheV9tYXBfb3BzID0ge1xuLS1cbmtlcm5lbC9icGYvYXJyYXltYXAuYy0xMzY3LVx0Lm1hcF9mZF9wdXRfcHRyID0gY2dyb3VwX2ZkX2FycmF5X3B1dF9wdHIsXG5rZXJuZWwvYnBmL2FycmF5bWFwLmM6MTM2ODpcdC5tYXBfY2hlY2tfYnRmID0gbWFwX2NoZWNrX25vX2J0Zixcbmtlcm5lbC9icGYvYXJyYXltYXAuYy0xMzY5LVx0Lm1hcF9tZW1fdXNhZ2UgPSBhcnJheV9tYXBfbWVtX3VzYWdlLFxuLS1cbmtlcm5lbC9icGYvYXJyYXltYXAuYz0xNDQ0PWNvbnN0IHN0cnVjdCBicGZfbWFwX29wcyBhcnJheV9vZl9tYXBzX21hcF9vcHMgPSB7XG4tLVxua2VybmVsL2JwZi9hcnJheW1hcC5jLTE0NTYtXHQubWFwX3VwZGF0ZV9iYXRjaCA9IGdlbmVyaWNfbWFwX3VwZGF0ZV9iYXRjaCxcbmtlcm5lbC9icGYvYXJyYXltYXAuYzoxNDU3Olx0Lm1hcF9jaGVja19idGYgPSBtYXBfY2hlY2tfbm9fYnRmLFxua2VybmVsL2JwZi9hcnJheW1hcC5jLTE0NTgtXHQubWFwX21lbV91c2FnZSA9IGFycmF5X21hcF9tZW1fdXNhZ2UsXG4tLVxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYz0xNzY9c3RhdGljIGxvbmcgYmxvb21fbWFwX3VwZGF0ZV9lbGVtKHN0cnVjdCBicGZfbWFwICptYXAsIHZvaWQgKmtleSxcbi0tXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jLTE4Mi1cbmtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmM6MTgzOnN0YXRpYyBpbnQgYmxvb21fbWFwX2NoZWNrX2J0ZihzdHJ1Y3QgYnBmX21hcCAqbWFwLFxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYy0xODQtXHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBidGYgKmJ0Zixcbi0tXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jPTIwND1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgYmxvb21fZmlsdGVyX21hcF9vcHMgPSB7XG4tLVxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYy0yMTUtXHQubWFwX2RlbGV0ZV9lbGVtID0gYmxvb21fbWFwX2RlbGV0ZV9lbGVtLFxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYzoyMTY6XHQubWFwX2NoZWNrX2J0ZiA9IGJsb29tX21hcF9jaGVja19idGYsXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jLTIxNy1cdC5tYXBfbWVtX3VzYWdlID0gYmxvb21fbWFwX21lbV91c2FnZSxcbi0tXG5rZXJuZWwvYnBmL2JwZl9jZ3JwX3N0b3JhZ2UuYz0xNjA9Y29uc3Qgc3RydWN0IGJwZl9tYXBfb3BzIGNncnBfc3RvcmFnZV9tYXBfb3BzID0ge1xuLS1cbmtlcm5lbC9icGYvYnBmX2NncnBfc3RvcmFnZS5jLTE2OC1cdC5tYXBfZGVsZXRlX2VsZW0gPSBicGZfY2dycF9zdG9yYWdlX2RlbGV0ZV9lbGVtLFxua2VybmVsL2JwZi9icGZfY2dycF9zdG9yYWdlLmM6MTY5Olx0Lm1hcF9jaGVja19idGYgPSBicGZfbG9jYWxfc3RvcmFnZV9tYXBfY2hlY2tfYnRmLFxua2VybmVsL2JwZi9icGZfY2dycF9zdG9yYWdlLmMtMTcwLVx0Lm1hcF9tZW1fdXNhZ2UgPSBicGZfbG9jYWxfc3RvcmFnZV9tYXBfbWVtX3VzYWdlLFxuLS1cbmtlcm5lbC9icGYvYnBmX2lub2RlX3N0b3JhZ2UuYz0xOTg9Y29uc3Qgc3RydWN0IGJwZl9tYXBfb3BzIGlub2RlX3N0b3JhZ2VfbWFwX29wcyA9IHtcbi0tXG5rZXJuZWwvYnBmL2JwZl9pbm9kZV9zdG9yYWdlLmMtMjA2LVx0Lm1hcF9kZWxldGVfZWxlbSA9IGJwZl9mZF9pbm9kZV9zdG9yYWdlX2RlbGV0ZV9lbGVtLFxua2VybmVsL2JwZi9icGZfaW5vZGVfc3RvcmFnZS5jOjIwNzpcdC5tYXBfY2hlY2tfYnRmID0gYnBmX2xvY2FsX3N0b3JhZ2VfbWFwX2NoZWNrX2J0Zixcbmtlcm5lbC9icGYvYnBmX2lub2RlX3N0b3JhZ2UuYy0yMDgtXHQubWFwX21lbV91c2FnZSA9IGJwZl9sb2NhbF9zdG9yYWdlX21hcF9tZW1fdXNhZ2UsXG4tLVxua2VybmVsL2JwZi9icGZfaW5zbl9hcnJheS5jPTEzNj1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgaW5zbl9hcnJheV9tYXBfb3BzID0ge1xuLS1cbmtlcm5lbC9icGYvYnBmX2luc25fYXJyYXkuYy0xNDMtXHQubWFwX2RlbGV0ZV9lbGVtID0gaW5zbl9hcnJheV9kZWxldGVfZWxlbSxcbmtlcm5lbC9icGYvYnBmX2luc25fYXJyYXkuYzoxNDQ6XHQubWFwX2NoZWNrX2J0ZiA9IGluc25fYXJyYXlfY2hlY2tfYnRmLFxua2VybmVsL2JwZi9icGZfaW5zbl9hcnJheS5jLTE0NS1cdC5tYXBfbWVtX3VzYWdlID0gaW5zbl9hcnJheV9tZW1fdXNhZ2UsXG4tLVxua2VybmVsL2JwZi9icGZfbG9jYWxfc3RvcmFnZS5jPTcwMj1pbnQgYnBmX2xvY2FsX3N0b3JhZ2VfbWFwX2FsbG9jX2NoZWNrKHVuaW9uIGJwZl9hdHRyICphdHRyKVxuLS1cbmtlcm5lbC9icGYvYnBmX2xvY2FsX3N0b3JhZ2UuYy03MTctXG5rZXJuZWwvYnBmL2JwZl9sb2NhbF9zdG9yYWdlLmM6NzE4OmludCBicGZfbG9jYWxfc3RvcmFnZV9tYXBfY2hlY2tfYnRmKHN0cnVjdCBicGZfbWFwICptYXAsXG5rZXJuZWwvYnBmL2JwZl9sb2NhbF9zdG9yYWdlLmMtNzE5LVx0XHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBidGYgKmJ0Zixcbi0tXG5rZXJuZWwvYnBmL2JwZl90YXNrX3N0b3JhZ2UuYz0yMjM9Y29uc3Qgc3RydWN0IGJwZl9tYXBfb3BzIHRhc2tfc3RvcmFnZV9tYXBfb3BzID0ge1xuLS1cbmtlcm5lbC9icGYvYnBmX3Rhc2tfc3RvcmFnZS5jLTIzMS1cdC5tYXBfZGVsZXRlX2VsZW0gPSBicGZfcGlkX3Rhc2tfc3RvcmFnZV9kZWxldGVfZWxlbSxcbmtlcm5lbC9icGYvYnBmX3Rhc2tfc3RvcmFnZS5jOjIzMjpcdC5tYXBfY2hlY2tfYnRmID0gYnBmX2xvY2FsX3N0b3JhZ2VfbWFwX2NoZWNrX2J0Zixcbmtlcm5lbC9icGYvYnBmX3Rhc2tfc3RvcmFnZS5jLTIzMy1cdC5tYXBfbWVtX3VzYWdlID0gYnBmX2xvY2FsX3N0b3JhZ2VfbWFwX21lbV91c2FnZSxcbi0tXG5rZXJuZWwvYnBmL2NwdW1hcC5jPTcwOT1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgY3B1X21hcF9vcHMgPSB7XG4tLVxua2VybmVsL2JwZi9jcHVtYXAuYy03MTYtXHQubWFwX2dldF9uZXh0X2tleVx0PSBjcHVfbWFwX2dldF9uZXh0X2tleSxcbmtlcm5lbC9icGYvY3B1bWFwLmM6NzE3Olx0Lm1hcF9jaGVja19idGZcdFx0PSBtYXBfY2hlY2tfbm9fYnRmLFxua2VybmVsL2JwZi9jcHVtYXAuYy03MTgtXHQubWFwX21lbV91c2FnZVx0XHQ9IGNwdV9tYXBfbWVtX3VzYWdlLFxuLS1cbmtlcm5lbC9icGYvZGV2bWFwLmM9MTA4Nz1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgZGV2X21hcF9vcHMgPSB7XG4tLVxua2VybmVsL2JwZi9kZXZtYXAuYy0xMDk1LVx0Lm1hcF9kZWxldGVfZWxlbSA9IGRldl9tYXBfZGVsZXRlX2VsZW0sXG5rZXJuZWwvYnBmL2Rldm1hcC5jOjEwOTY6XHQubWFwX2NoZWNrX2J0ZiA9IG1hcF9jaGVja19ub19idGYsXG5rZXJuZWwvYnBmL2Rldm1hcC5jLTEwOTctXHQubWFwX21lbV91c2FnZSA9IGRldl9tYXBfbWVtX3VzYWdlLFxuLS1cbmtlcm5lbC9icGYvZGV2bWFwLmM9MTEwMj1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgZGV2X21hcF9oYXNoX29wcyA9IHtcbi0tXG5rZXJuZWwvYnBmL2Rldm1hcC5jLTExMTAtXHQubWFwX2RlbGV0ZV9lbGVtID0gZGV2X21hcF9oYXNoX2RlbGV0ZV9lbGVtLFxua2VybmVsL2JwZi9kZXZtYXAuYzoxMTExOlx0Lm1hcF9jaGVja19idGYgPSBtYXBfY2hlY2tfbm9fYnRmLFxua2VybmVsL2JwZi9kZXZtYXAuYy0xMTEyLVx0Lm1hcF9tZW1fdXNhZ2UgPSBkZXZfbWFwX21lbV91c2FnZSxcbi0tXG5rZXJuZWwvYnBmL2hhc2h0YWIuYz01MDQ9c3RhdGljIGludCBicGZfbWFfc2V0X2R0b3Ioc3RydWN0IGJwZl9tYXAgKm1hcCwgc3RydWN0IGJwZl9tZW1fYWxsb2MgKm1hLFxuLS1cbmtlcm5lbC9icGYvaGFzaHRhYi5jLTUyNy1cbmtlcm5lbC9icGYvaGFzaHRhYi5jOjUyODpzdGF0aWMgaW50IGh0YWJfbWFwX2NoZWNrX2J0ZihzdHJ1Y3QgYnBmX21hcCAqbWFwLCBjb25zdCBzdHJ1Y3QgYnRmICpidGYsXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy01MjktXHRcdFx0ICAgICAgY29uc3Qgc3RydWN0IGJ0Zl90eXBlICprZXlfdHlwZSwgY29uc3Qgc3RydWN0IGJ0Zl90eXBlICp2YWx1ZV90eXBlKVxuLS1cbmtlcm5lbC9icGYvaGFzaHRhYi5jPTIzNTg9Y29uc3Qgc3RydWN0IGJwZl9tYXBfb3BzIGh0YWJfbWFwX29wcyA9IHtcbi0tXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0yMzcyLVx0Lm1hcF9mb3JfZWFjaF9jYWxsYmFjayA9IGJwZl9mb3JfZWFjaF9oYXNoX2VsZW0sXG5rZXJuZWwvYnBmL2hhc2h0YWIuYzoyMzczOlx0Lm1hcF9jaGVja19idGYgPSBodGFiX21hcF9jaGVja19idGYsXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0yMzc0LVx0Lm1hcF9tZW1fdXNhZ2UgPSBodGFiX21hcF9tZW1fdXNhZ2UsXG4tLVxua2VybmVsL2JwZi9oYXNodGFiLmM9MjM4MD1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgaHRhYl9scnVfbWFwX29wcyA9IHtcbi0tXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0yMzk1LVx0Lm1hcF9mb3JfZWFjaF9jYWxsYmFjayA9IGJwZl9mb3JfZWFjaF9oYXNoX2VsZW0sXG5rZXJuZWwvYnBmL2hhc2h0YWIuYzoyMzk2Olx0Lm1hcF9jaGVja19idGYgPSBodGFiX21hcF9jaGVja19idGYsXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0yMzk3LVx0Lm1hcF9tZW1fdXNhZ2UgPSBodGFiX21hcF9tZW1fdXNhZ2UsXG4tLVxua2VybmVsL2JwZi9oYXNodGFiLmM9MjU2MT1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgaHRhYl9wZXJjcHVfbWFwX29wcyA9IHtcbi0tXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0yNTc1LVx0Lm1hcF9mb3JfZWFjaF9jYWxsYmFjayA9IGJwZl9mb3JfZWFjaF9oYXNoX2VsZW0sXG5rZXJuZWwvYnBmL2hhc2h0YWIuYzoyNTc2Olx0Lm1hcF9jaGVja19idGYgPSBodGFiX21hcF9jaGVja19idGYsXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0yNTc3LVx0Lm1hcF9tZW1fdXNhZ2UgPSBodGFiX21hcF9tZW1fdXNhZ2UsXG4tLVxua2VybmVsL2JwZi9oYXNodGFiLmM9MjU4Mz1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgaHRhYl9scnVfcGVyY3B1X21hcF9vcHMgPSB7XG4tLVxua2VybmVsL2JwZi9oYXNodGFiLmMtMjU5Ni1cdC5tYXBfZm9yX2VhY2hfY2FsbGJhY2sgPSBicGZfZm9yX2VhY2hfaGFzaF9lbGVtLFxua2VybmVsL2JwZi9oYXNodGFiLmM6MjU5NzpcdC5tYXBfY2hlY2tfYnRmID0gaHRhYl9tYXBfY2hlY2tfYnRmLFxua2VybmVsL2JwZi9oYXNodGFiLmMtMjU5OC1cdC5tYXBfbWVtX3VzYWdlID0gaHRhYl9tYXBfbWVtX3VzYWdlLFxuLS1cbmtlcm5lbC9icGYvaGFzaHRhYi5jPTI3Mjk9Y29uc3Qgc3RydWN0IGJwZl9tYXBfb3BzIGh0YWJfb2ZfbWFwc19tYXBfb3BzID0ge1xuLS1cbmtlcm5lbC9icGYvaGFzaHRhYi5jLTI3MzktXHQubWFwX2dlbl9sb29rdXAgPSBodGFiX29mX21hcF9nZW5fbG9va3VwLFxua2VybmVsL2JwZi9oYXNodGFiLmM6Mjc0MDpcdC5tYXBfY2hlY2tfYnRmID0gbWFwX2NoZWNrX25vX2J0Zixcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTI3NDEtXHQubWFwX21lbV91c2FnZSA9IGh0YWJfbWFwX21lbV91c2FnZSxcbi0tXG5rZXJuZWwvYnBmL2hhc2h0YWIuYz0zMDk0PXN0YXRpYyBpbnQgcmh0YWJfbWFwX2dlbl9sb29rdXAoc3RydWN0IGJwZl9tYXAgKm1hcCwgc3RydWN0IGJwZl9pbnNuICppbnNuX2J1Zilcbi0tXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0zMTA4LVxua2VybmVsL2JwZi9oYXNodGFiLmM6MzEwOTpzdGF0aWMgaW50IHJodGFiX21hcF9jaGVja19idGYoc3RydWN0IGJwZl9tYXAgKm1hcCwgY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLFxua2VybmVsL2JwZi9oYXNodGFiLmMtMzExMC1cdFx0XHQgICAgICAgY29uc3Qgc3RydWN0IGJ0Zl90eXBlICprZXlfdHlwZSxcbi0tXG5rZXJuZWwvYnBmL2hhc2h0YWIuYz0zNTE1PWNvbnN0IHN0cnVjdCBicGZfbWFwX29wcyByaHRhYl9tYXBfb3BzID0ge1xuLS1cbmtlcm5lbC9icGYvaGFzaHRhYi5jLTM1MjEtXHQubWFwX3JlbGVhc2VfdXJlZiA9IHJodGFiX21hcF9mcmVlX2ludGVybmFsX3N0cnVjdHMsXG5rZXJuZWwvYnBmL2hhc2h0YWIuYzozNTIyOlx0Lm1hcF9jaGVja19idGYgPSByaHRhYl9tYXBfY2hlY2tfYnRmLFxua2VybmVsL2JwZi9oYXNodGFiLmMtMzUyMy1cdC5tYXBfbG9va3VwX2VsZW0gPSByaHRhYl9tYXBfbG9va3VwX2VsZW0sXG4tLVxua2VybmVsL2JwZi9sb2NhbF9zdG9yYWdlLmM9NDYxPWNvbnN0IHN0cnVjdCBicGZfbWFwX29wcyBjZ3JvdXBfc3RvcmFnZV9tYXBfb3BzID0ge1xuLS1cbmtlcm5lbC9icGYvbG9jYWxfc3RvcmFnZS5jLTQ2Ny1cdC5tYXBfZGVsZXRlX2VsZW0gPSBjZ3JvdXBfc3RvcmFnZV9kZWxldGVfZWxlbSxcbmtlcm5lbC9icGYvbG9jYWxfc3RvcmFnZS5jOjQ2ODpcdC5tYXBfY2hlY2tfYnRmID0gY2dyb3VwX3N0b3JhZ2VfY2hlY2tfYnRmLFxua2VybmVsL2JwZi9sb2NhbF9zdG9yYWdlLmMtNDY5LVx0Lm1hcF9zZXFfc2hvd19lbGVtID0gY2dyb3VwX3N0b3JhZ2Vfc2VxX3Nob3dfZWxlbSxcbi0tXG5rZXJuZWwvYnBmL2xwbV90cmllLmM9Nzc1PWNvbnN0IHN0cnVjdCBicGZfbWFwX29wcyB0cmllX21hcF9vcHMgPSB7XG4tLVxua2VybmVsL2JwZi9scG1fdHJpZS5jLTc4NS1cdC5tYXBfZGVsZXRlX2JhdGNoID0gZ2VuZXJpY19tYXBfZGVsZXRlX2JhdGNoLFxua2VybmVsL2JwZi9scG1fdHJpZS5jOjc4NjpcdC5tYXBfY2hlY2tfYnRmID0gdHJpZV9jaGVja19idGYsXG5rZXJuZWwvYnBmL2xwbV90cmllLmMtNzg3LVx0Lm1hcF9tZW1fdXNhZ2UgPSB0cmllX21lbV91c2FnZSxcbi0tXG5rZXJuZWwvYnBmL3N0YWNrbWFwLmM9MTAzOD1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgc3RhY2tfdHJhY2VfbWFwX29wcyA9IHtcbi0tXG5rZXJuZWwvYnBmL3N0YWNrbWFwLmMtMTA0Ni1cdC5tYXBfZGVsZXRlX2VsZW0gPSBzdGFja19tYXBfZGVsZXRlX2VsZW0sXG5rZXJuZWwvYnBmL3N0YWNrbWFwLmM6MTA0NzpcdC5tYXBfY2hlY2tfYnRmID0gbWFwX2NoZWNrX25vX2J0Zixcbmtlcm5lbC9icGYvc3RhY2ttYXAuYy0xMDQ4LVx0Lm1hcF9tZW1fdXNhZ2UgPSBzdGFja19tYXBfbWVtX3VzYWdlLFxuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jPTExND1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgYnBmX21hcF9vZmZsb2FkX29wcyA9IHtcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xMTctXHQubWFwX2ZyZWUgPSBicGZfbWFwX29mZmxvYWRfbWFwX2ZyZWUsXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzoxMTg6XHQubWFwX2NoZWNrX2J0ZiA9IG1hcF9jaGVja19ub19idGYsXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xMTktXHQubWFwX21lbV91c2FnZSA9IGJwZl9tYXBfb2ZmbG9hZF9tYXBfbWVtX3VzYWdlLFxuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jPTEyMzU9aW50IG1hcF9jaGVja19ub19idGYoc3RydWN0IGJwZl9tYXAgKm1hcCxcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xMjQyLVxua2VybmVsL2JwZi9zeXNjYWxsLmM6MTI0MzpzdGF0aWMgaW50IG1hcF9jaGVja19idGYoc3RydWN0IGJwZl9tYXAgKm1hcCwgc3RydWN0IGJwZl90b2tlbiAqdG9rZW4sXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xMjQ0LVx0XHRcdCBjb25zdCBzdHJ1Y3QgYnRmICpidGYsIHUzMiBidGZfa2V5X2lkLCB1MzIgYnRmX3ZhbHVlX2lkKVxuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jLTEyNTYtXHRcdGtleV90eXBlID0gYnRmX3R5cGVfYnlfaWQoYnRmLCAwKTtcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjEyNTc6XHRcdGlmICghbWFwLVx1MDAzZW9wcy1cdTAwM2VtYXBfY2hlY2tfYnRmKVxua2VybmVsL2JwZi9zeXNjYWxsLmMtMTI1OC1cdFx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xMzU1LVxua2VybmVsL2JwZi9zeXNjYWxsLmM6MTM1NjpcdGlmIChtYXAtXHUwMDNlb3BzLVx1MDAzZW1hcF9jaGVja19idGYpIHtcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjEzNTc6XHRcdHJldCA9IG1hcC1cdTAwM2VvcHMtXHUwMDNlbWFwX2NoZWNrX2J0ZihtYXAsIGJ0Ziwga2V5X3R5cGUsIHZhbHVlX3R5cGUpO1xua2VybmVsL2JwZi9zeXNjYWxsLmMtMTM1OC1cdFx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz0xMzcwPXN0YXRpYyBpbnQgbWFwX2NyZWF0ZV9hbGxvYyh1bmlvbiBicGZfYXR0ciAqYXR0ciwgYnBmcHRyX3QgdWF0dHIsIHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csXG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmMtMTU2OS1cdFx0aWYgKGF0dHItXHUwMDNlYnRmX3ZhbHVlX3R5cGVfaWQpIHtcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjE1NzA6XHRcdFx0ZXJyID0gbWFwX2NoZWNrX2J0ZihtYXAsIHRva2VuLCBidGYsIGF0dHItXHUwMDNlYnRmX2tleV90eXBlX2lkLFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMTU3MS1cdFx0XHRcdFx0ICAgIGF0dHItXHUwMDNlYnRmX3ZhbHVlX3R5cGVfaWQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAxNTowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjEzNQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDEwMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgQlBGIEJURiBTeW1ib2wgUmVmZXJlbmNlcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgQlBGIGFuZCB0aGlua2luZyBhYm91dCBob3cgdGhlc2UgQlRGIHN0cnVjdHVyZXMgYXJlIHBhcnNlZC4gSSBzZWUgYG1hcF9jaGVja19idGZgIGlzIGRlZmluZWQgYXMgc3RhdGljIHdpdGhpbiBga2VybmVsL2JwZi9zeXNjYWxsLmNgLCBzbyBpdCYjMzk7cyBwcm9iYWJseSBub3QgdGhlIGNvcmUgZnVuY3Rpb24gSSYjMzk7bSBhZnRlci4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBkaWcgaW50byBgYnRmX3BhcnNlX2ZpZWxkc2AsIHNpbmNlIGl0JiMzOTtzIGEgZ2xvYmFsIGZ1bmN0aW9uIGluIGBrZXJuZWwvYnBmL2J0Zi5jYCwgYW5kIHRoYXQgc2VlbXMgbGlrZSBhIGxvZ2ljYWwgZW50cnkgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBCVEYgc3RydWN0dXJlcyBhcmUgaGFuZGxlZC4gSG93ZXZlciwgd2FpdCwgbGV0JiMzOTtzIGFsc28gZ2l2ZSBzb21lIGF0dGVudGlvbiB0byBgYnRmX3BhcnNlX3N0cnVjdF9tZXRhc2AuIFRoYXQgbG9va3MgbGlrZSBhbm90aGVyIHZpYWJsZSBmdW5jdGlvbiBmb3IgcGFyc2luZyBCVEYgc3RydWN0IG1ldGFkYXRhLCBhbmQgaXQgbWlnaHQgYmUgYSBtb3JlIGltcG9ydGFudCBwYXJ0IG9mIHRoZSBwdXp6bGUuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBjbG9zZWx5IGF0IGJvdGggbm93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAxNTowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtidGZfcGFyc2Vfc3RydWN0X21ldGFzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9idGYuYz01Nzc5PXN0YXRpYyBzdHJ1Y3QgYnRmX3N0cnVjdF9tZXRhcyAqXG5rZXJuZWwvYnBmL2J0Zi5jOjU3ODA6YnRmX3BhcnNlX3N0cnVjdF9tZXRhcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLCBzdHJ1Y3QgYnRmICpidGYpXG5rZXJuZWwvYnBmL2J0Zi5jLTU3ODEte1xuLS1cbmtlcm5lbC9icGYvYnRmLmM9NTk1MD1zdGF0aWMgc3RydWN0IGJ0ZiAqYnRmX3BhcnNlKGNvbnN0IHVuaW9uIGJwZl9hdHRyICphdHRyLCBicGZwdHJfdCB1YXR0cixcbi0tXG5rZXJuZWwvYnBmL2J0Zi5jLTYwMTctXG5rZXJuZWwvYnBmL2J0Zi5jOjYwMTg6XHRzdHJ1Y3RfbWV0YV90YWIgPSBidGZfcGFyc2Vfc3RydWN0X21ldGFzKFx1MDAyNmVudi1cdTAwM2Vsb2csIGJ0Zik7XG5rZXJuZWwvYnBmL2J0Zi5jLTYwMTktXHRpZiAoSVNfRVJSKHN0cnVjdF9tZXRhX3RhYikpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMTU6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI2ODEKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAxMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBCVEYgUGFyc2luZyBMYW5kc2NhcGUqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIEJURiBwYXJzaW5nIGZ1bmN0aW9ucy4gYGJ0Zl9wYXJzZV9zdHJ1Y3RfbWV0YXNgIGlzIGRlZmluZWQgYXMgYHN0YXRpY2AsIHdoaWNoIG1lYW5zIGl0JiMzOTtzIGludGVybmFsIHRvIGl0cyBjb21waWxhdGlvbiB1bml0LiBUaGF0IG1ha2VzIGl0IGEgbm9uLXN0YXJ0ZXIgZm9yIG15IHB1cnBvc2VzLiBJIG5lZWQgc29tZXRoaW5nIGFjY2Vzc2libGUsIGFuZCBJIG5lZWQgc29tZXRoaW5nIHRoYXQgZGlyZWN0bHkgY2FsbHMgaW50byB0aGUgZnVuY3Rpb25zIEkmIzM5O20gaW50ZXJlc3RlZCBpbiBtb2RpZnlpbmcuCgpgYnRmX3BhcnNlX2ZpZWxkc2AgbG9va3MgbGlrZSB0aGUgbW9zdCBwcm9taXNpbmcgY2FuZGlkYXRlIGluaXRpYWxseS4gSXQmIzM5O3MgZ2xvYmFsLCBhbmQgc2VlbXMgdG8gYmUgYSBkaXJlY3QgY2FsbGVyLiBCdXQgd2FpdC4uLiBvbiBjbG9zZXIgaW5zcGVjdGlvbiwgaXQgbG9va3MgbGlrZSBgYnRmX3BhcnNlX2ZpZWxkc2AgaXMgYWxzbyBub3QgZXhwb3J0ZWQsIGFuZCBpcyBsb2NhbC4gU3RpbGwsIHRoZSBiZWF1dHkgaXMgdGhhdCBzeXprYWxsZXIgY2FuIHRhcmdldCBhbnkgZ2xvYmFsIGZ1bmN0aW9uLCBleHBvcnRlZCBvciBub3QsIHNvIHRoYXQmIzM5O3Mgc29tZXRoaW5nIEkgY2FuIHVzZS4KCkhtbSwgd2hhdCBhYm91dCBgYnRmX3BhcnNlYD8gTm9wZSwgdGhhdCYjMzk7cyBhbHNvIHN0YXRpYywgc28gaXQmIzM5O3Mgb3V0LiBPa2F5LCBsZXQmIzM5O3MgYWxzbyB0YWtlIGEgcXVpY2sgbG9vayBhdCBgYnRmX25ld19mZGAsIGp1c3QgaW4gY2FzZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAxNTowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtidGZfbmV3X2ZkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9idGYuYz04MzE3PWNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgYnRmX2ZvcHMgPSB7XG4tLVxua2VybmVsL2JwZi9idGYuYy04MzIzLVxua2VybmVsL2JwZi9idGYuYzo4MzI0OnN0YXRpYyBpbnQgX19idGZfbmV3X2ZkKHN0cnVjdCBidGYgKmJ0Zilcbmtlcm5lbC9icGYvYnRmLmMtODMyNS17XG4tLVxua2VybmVsL2JwZi9idGYuYy04MzI4LVxua2VybmVsL2JwZi9idGYuYzo4MzI5OmludCBidGZfbmV3X2ZkKGNvbnN0IHVuaW9uIGJwZl9hdHRyICphdHRyLCBicGZwdHJfdCB1YXR0ciwgc3RydWN0IGJwZl9sb2dfYXR0ciAqYXR0cl9sb2cpXG5rZXJuZWwvYnBmL2J0Zi5jLTgzMzAte1xuLS1cbmtlcm5lbC9icGYvYnRmLmMtODM0OS1cbmtlcm5lbC9icGYvYnRmLmM6ODM1MDpcdHJldCA9IF9fYnRmX25ld19mZChidGYpO1xua2VybmVsL2JwZi9idGYuYy04MzUxLVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5rZXJuZWwvYnBmL2J0Zi5jPTg0Mjk9aW50IGJ0Zl9nZXRfZmRfYnlfaWQodTMyIGlkKVxuLS1cbmtlcm5lbC9icGYvYnRmLmMtODQ0Mi1cbmtlcm5lbC9icGYvYnRmLmM6ODQ0MzpcdGZkID0gX19idGZfbmV3X2ZkKGJ0Zik7XG5rZXJuZWwvYnBmL2J0Zi5jLTg0NDQtXHRpZiAoZmQgXHUwMDNjIDApXG4tLVxua2VybmVsL2JwZi9idGYuYz04NjgxPUJQRl9DQUxMXzQoYnBmX2J0Zl9maW5kX2J5X25hbWVfa2luZCwgY2hhciAqLCBuYW1lLCBpbnQsIG5hbWVfc3osIHUzMiwga2luZCwgaW50LCBmbGFncylcbi0tXG5rZXJuZWwvYnBmL2J0Zi5jLTg2OTQtXHRpZiAocmV0IFx1MDAzZSAwIFx1MDAyNlx1MDAyNiBidGZfaXNfbW9kdWxlKGJ0ZikpIHtcbmtlcm5lbC9icGYvYnRmLmM6ODY5NTpcdFx0YnRmX29ial9mZCA9IF9fYnRmX25ld19mZChidGYpO1xua2VybmVsL2JwZi9idGYuYy04Njk2LVx0XHRpZiAoYnRmX29ial9mZCBcdTAwM2MgMCkge1xuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jPTU1MzY9c3RhdGljIGludCBicGZfYnRmX2xvYWQoY29uc3QgdW5pb24gYnBmX2F0dHIgKmF0dHIsIGJwZnB0cl90IHVhdHRyLCBzdHJ1Y3QgYnBmX2xvZ19hdHRyICphdHRyX2xvZylcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy01NTYyLVxua2VybmVsL2JwZi9zeXNjYWxsLmM6NTU2MzpcdHJldHVybiBidGZfbmV3X2ZkKGF0dHIsIHVhdHRyLCBhdHRyX2xvZyk7XG5rZXJuZWwvYnBmL3N5c2NhbGwuYy01NTY0LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMTU6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM2OTkKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA1NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byBCVEYgRmllbGQgUGFyc2luZyoqCgpSaWdodCwgYGJ0Zl9wYXJzZV9maWVsZHNgIC0gdGhhdCYjMzk7cyB3aGVyZSB0aGUgcnViYmVyIG1lZXRzIHRoZSByb2FkLCB0aGUgY29yZSBvZiB0aGlzIG9wZXJhdGlvbi4gQmVmb3JlIEkgZGlnIHRvbyBkZWVwLCBsZXQmIzM5O3MgcXVpY2tseSBjb25maXJtIHdoZXRoZXIgdGhlIHN5c3RlbSYjMzk7cyBldmVuIGNvbmZpZ3VyZWQgdG8gaGFuZGxlIHRoaXMuIEl0IGxvb2tzIGxpa2UgQlBGIGl0c2VsZiBpcyB0aWVkIHRvIGBDT05GSUdfQlBGX1NZU0NBTExgLCBzbyBsZXQmIzM5O3MgY2hlY2sgdGhhdC4gSSBzaG91bGQgYWxzbyB0YWtlIGEgcGVlayBhcm91bmQgdG8gc2VlIGlmIHRoZXJlIGFyZSAqb3RoZXIqIGNvbmZpZ3VyYXRpb25zIHRoYXQgbWlnaHQgaW1wYWN0IGhvdyBgYnRmX3BhcnNlX2ZpZWxkc2AgZnVuY3Rpb25zLiBJIHdhbnQgdG8gbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55IHBpZWNlcyBvZiB0aGUgcHV6emxlIHRoYXQgbWlnaHQgaW5mbHVlbmNlIG15IGFuYWx5c2lzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAxNTowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfQlBGJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9LY29uZmlnPTU4PWNvbmZpZyBCUEZfSklUX0FMV0FZU19PTlxuLS1cbmtlcm5lbC9icGYvS2NvbmZpZy02NC1cbmtlcm5lbC9icGYvS2NvbmZpZzo2NTpcdCAgV2hlbiBDT05GSUdfQlBGX0pJVF9BTFdBWVNfT04gaXMgZW5hYmxlZCwgL3Byb2Mvc3lzL25ldC9jb3JlL2JwZl9qaXRfZW5hYmxlXG5rZXJuZWwvYnBmL0tjb25maWctNjYtXHQgIGlzIHBlcm1hbmVudGx5IHNldCB0byAxIGFuZCBzZXR0aW5nIGFueSBvdGhlciB2YWx1ZSB0aGFuIHRoYXQgd2lsbFxuLS1cbmtlcm5lbC9icGYvTWFrZWZpbGU9Mj1vYmoteSA6PSBjb3JlLm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6MzppZm5lcSAoJChDT05GSUdfQlBGX0pJVF9BTFdBWVNfT04pLHkpXG5rZXJuZWwvYnBmL01ha2VmaWxlLTQtIyBfX19icGZfcHJvZ19ydW4oKSBuZWVkcyBHQ1NFIGRpc2FibGVkIG9uIHg4Njsgc2VlIDMxOTNjMDgzNmYyMDMgZm9yIGRldGFpbHNcbi0tXG5rZXJuZWwvYnBmL01ha2VmaWxlPTc9Q0ZMQUdTX2NvcmUubyAmIzQzOz0gLVduby1vdmVycmlkZS1pbml0ICQoY2ZsYWdzLW5vZ2NzZS15eSlcbmtlcm5lbC9icGYvTWFrZWZpbGUtOC1cbmtlcm5lbC9icGYvTWFrZWZpbGU6OTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBzeXNjYWxsLm8gdmVyaWZpZXIubyBpbm9kZS5vIGhlbHBlcnMubyB0bnVtLm8gY251bS5vIGxvZy5vIHRva2VuLm8gbGl2ZW5lc3MubyBjb25zdF9mb2xkLm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6MTA6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gYnBmX2l0ZXIubyBtYXBfaXRlci5vIHRhc2tfaXRlci5vIHByb2dfaXRlci5vIGxpbmtfaXRlci5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjExOm9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGhhc2h0YWIubyBhcnJheW1hcC5vIHBlcmNwdV9mcmVlbGlzdC5vIGJwZl9scnVfbGlzdC5vIGxwbV90cmllLm8gbWFwX2luX21hcC5vIGJsb29tX2ZpbHRlci5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjEyOm9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGxvY2FsX3N0b3JhZ2UubyBxdWV1ZV9zdGFja19tYXBzLm8gcmluZ2J1Zi5vIGJwZl9pbnNuX2FycmF5Lm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6MTM6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gYnBmX2xvY2FsX3N0b3JhZ2UubyBicGZfdGFza19zdG9yYWdlLm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6MTQ6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gZml4dXBzLm8gY2ZnLm8gc3RhdGVzLm8gYmFja3RyYWNrLm8gY2hlY2tfYnRmLm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6MTU6b2JqLSR7Q09ORklHX0JQRl9MU019XHQgICYjNDM7PSBicGZfaW5vZGVfc3RvcmFnZS5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjE2Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGRpc2FzbS5vIG1wcm9nLm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6MTc6b2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSB0cmFtcG9saW5lLm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6MTg6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gYnRmLm8gbWVtYWxsb2MubyBycXNwaW5sb2NrLm8gc3RyZWFtLm9cbmtlcm5lbC9icGYvTWFrZWZpbGUtMTktaWZlcSAoJChDT05GSUdfTU1VKSQoQ09ORklHXzY0QklUKSx5eSlcbmtlcm5lbC9icGYvTWFrZWZpbGU6MjA6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gYXJlbmEubyByYW5nZV90cmVlLm9cbmtlcm5lbC9icGYvTWFrZWZpbGUtMjEtZW5kaWZcbmtlcm5lbC9icGYvTWFrZWZpbGU6MjI6b2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSBkaXNwYXRjaGVyLm9cbmtlcm5lbC9icGYvTWFrZWZpbGUtMjMtaWZlcSAoJChDT05GSUdfTkVUKSx5KVxua2VybmVsL2JwZi9NYWtlZmlsZToyNDpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBkZXZtYXAub1xua2VybmVsL2JwZi9NYWtlZmlsZToyNTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBjcHVtYXAub1xua2VybmVsL2JwZi9NYWtlZmlsZToyNjpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBvZmZsb2FkLm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6Mjc6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gbmV0X25hbWVzcGFjZS5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjI4Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IHRjeC5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTI5LWVuZGlmXG5rZXJuZWwvYnBmL01ha2VmaWxlPTMwPWlmZXEgKCQoQ09ORklHX1BFUkZfRVZFTlRTKSx5KVxua2VybmVsL2JwZi9NYWtlZmlsZTozMTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBzdGFja21hcC5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTMyLWVuZGlmXG5rZXJuZWwvYnBmL01ha2VmaWxlPTMzPWlmZXEgKCQoQ09ORklHX0NHUk9VUFMpLHkpXG5rZXJuZWwvYnBmL01ha2VmaWxlOjM0Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGNncm91cF9pdGVyLm8gYnBmX2NncnBfc3RvcmFnZS5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTM1LWVuZGlmXG4tLVxua2VybmVsL2JwZi9NYWtlZmlsZT0zNz1pZmVxICgkKENPTkZJR19JTkVUKSx5KVxua2VybmVsL2JwZi9NYWtlZmlsZTozODpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSByZXVzZXBvcnRfYXJyYXkub1xua2VybmVsL2JwZi9NYWtlZmlsZS0zOS1lbmRpZlxuLS1cbmtlcm5lbC9icGYvTWFrZWZpbGU9NDI9ZW5kaWZcbmtlcm5lbC9icGYvTWFrZWZpbGU6NDM6aWZlcSAoJChDT05GSUdfQlBGX0pJVCkseSlcbmtlcm5lbC9icGYvTWFrZWZpbGU6NDQ6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gYnBmX3N0cnVjdF9vcHMub1xua2VybmVsL2JwZi9NYWtlZmlsZTo0NTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBjcHVtYXNrLm9cbmtlcm5lbC9icGYvTWFrZWZpbGUtNDYtIyBicGZfbHNtX3Byb3RvLm8gbXVzdCBwcmVjZWRlIGJwZl9sc20uby4gVGhlIGN1cnJlbnQgcGFob2xlIGxvZ2ljXG4tLVxua2VybmVsL2JwZi9NYWtlZmlsZS01NS0jIHNlbWFudGljcyB3aXRoaW4gcGFob2xlIGFyZSByZXZpc2l0ZWQgYWNjb3JkaW5nbHkuXG5rZXJuZWwvYnBmL01ha2VmaWxlOjU2Om9iai0ke0NPTkZJR19CUEZfTFNNfSAmIzQzOz0gYnBmX2xzbV9wcm90by5vIGJwZl9sc20ub1xua2VybmVsL2JwZi9NYWtlZmlsZS01Ny1lbmRpZlxua2VybmVsL2JwZi9NYWtlZmlsZT01OD1pZm5lcSAoJChDT05GSUdfQ1JZUFRPKSwpXG5rZXJuZWwvYnBmL01ha2VmaWxlOjU5Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGNyeXB0by5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTYwLWVuZGlmXG5rZXJuZWwvYnBmL01ha2VmaWxlOjYxOm9iai0kKENPTkZJR19CUEZfUFJFTE9BRCkgJiM0Mzs9IHByZWxvYWQvXG5rZXJuZWwvYnBmL01ha2VmaWxlLTYyLVxua2VybmVsL2JwZi9NYWtlZmlsZTo2MzpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSByZWxvX2NvcmUub1xua2VybmVsL2JwZi9NYWtlZmlsZTo2NDpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBidGZfaXRlci5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjY1Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGJ0Zl9yZWxvY2F0ZS5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjY2Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGttZW1fY2FjaGVfaXRlci5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTY3LWlmZXEgKCQoQ09ORklHX0RNQV9TSEFSRURfQlVGRkVSKSx5KVxua2VybmVsL2JwZi9NYWtlZmlsZTo2ODpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBkbWFidWZfaXRlci5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTY5LWVuZGlmXG4tLVxua2VybmVsL2JwZi9idGYuYz05ODE0PWJvb2wgYnRmX3R5cGVfaWRzX25vY2FzdF9hbGlhcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxuLS1cbmtlcm5lbC9icGYvYnRmLmMtOTg2OC1cbmtlcm5lbC9icGYvYnRmLmM6OTg2OTojaWZkZWYgQ09ORklHX0JQRl9KSVRcbmtlcm5lbC9icGYvYnRmLmMtOTg3MC1zdGF0aWMgaW50XG4tLVxua2VybmVsL2JwZi9jZ3JvdXAuYz01Mj12b2lkIF9faW5pdCBjZ3JvdXBfYnBmX2xpZmV0aW1lX25vdGlmaWVyX2luaXQodm9pZClcbi0tXG5rZXJuZWwvYnBmL2Nncm91cC5jLTU3LVxua2VybmVsL2JwZi9jZ3JvdXAuYzo1ODojaWZkZWYgQ09ORklHX0JQRl9MU01cbmtlcm5lbC9icGYvY2dyb3VwLmMtNTktc3RydWN0IGNncm91cF9sc21fYXR5cGUge1xuLS1cbmtlcm5lbC9icGYvY2dyb3VwLmM9MTYyPXVuc2lnbmVkIGludCBfX2Nncm91cF9icGZfcnVuX2xzbV9jdXJyZW50KGNvbnN0IHZvaWQgKmN0eCxcbi0tXG5rZXJuZWwvYnBmL2Nncm91cC5jLTE4MC1cbmtlcm5lbC9icGYvY2dyb3VwLmM6MTgxOiNpZmRlZiBDT05GSUdfQlBGX0xTTVxua2VybmVsL2JwZi9jZ3JvdXAuYy0xODItc3RhdGljIGVudW0gY2dyb3VwX2JwZl9hdHRhY2hfdHlwZVxuLS1cbmtlcm5lbC9icGYvY2dyb3VwLmM9MjM0PWJwZl9jZ3JvdXBfYXR5cGVfZmluZChlbnVtIGJwZl9hdHRhY2hfdHlwZSBhdHRhY2hfdHlwZSwgdTMyIGF0dGFjaF9idGZfaWQpXG4tLVxua2VybmVsL2JwZi9jZ3JvdXAuYy0yMzktfVxua2VybmVsL2JwZi9jZ3JvdXAuYzoyNDA6I2VuZGlmIC8qIENPTkZJR19CUEZfTFNNICovXG5rZXJuZWwvYnBmL2Nncm91cC5jLTI0MS1cbi0tXG5rZXJuZWwvYnBmL2NvcmUuYz0xMDA9c3RydWN0IGJwZl9wcm9nICpicGZfcHJvZ19hbGxvY19ub19zdGF0cyh1bnNpZ25lZCBpbnQgc2l6ZSwgZ2ZwX3QgZ2ZwX2V4dHJhX2ZsYWdzKVxuLS1cbmtlcm5lbC9icGYvY29yZS5jLTEyOC1cdGZwLVx1MDAzZWppdF9yZXF1ZXN0ZWQgPSBlYnBmX2ppdF9lbmFibGVkKCk7XG5rZXJuZWwvYnBmL2NvcmUuYzoxMjk6XHRmcC1cdTAwM2VqaXRfcmVxdWlyZWQgPSBJU19FTkFCTEVEKENPTkZJR19CUEZfSklUX0FMV0FZU19PTik7XG5rZXJuZWwvYnBmL2NvcmUuYy0xMzAtXHRmcC1cdTAwM2VibGluZGluZ19yZXF1ZXN0ZWQgPSBicGZfaml0X2JsaW5kaW5nX2VuYWJsZWQoZnApO1xuLS1cbmtlcm5lbC9icGYvY29yZS5jLTE0My1cbmtlcm5lbC9icGYvY29yZS5jOjE0NDojaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXG5rZXJuZWwvYnBmL2NvcmUuYy0xNDUtXHRicGZfcHJvZ19zdHJlYW1faW5pdChmcCk7XG4tLVxua2VybmVsL2JwZi9jb3JlLmM9NTQxPXZvaWQgYnBmX3Byb2dfa2FsbHN5bXNfZGVsX2FsbChzdHJ1Y3QgYnBmX3Byb2cgKmZwKVxuLS1cbmtlcm5lbC9icGYvY29yZS5jLTU0Ni1cbmtlcm5lbC9icGYvY29yZS5jOjU0NzojaWZkZWYgQ09ORklHX0JQRl9KSVRcbmtlcm5lbC9icGYvY29yZS5jLTU0OC0vKiBBbGwgQlBGIEpJVCBzeXNjdGwga25vYnMgaGVyZS4gKi9cbmtlcm5lbC9icGYvY29yZS5jOjU0OTppbnQgYnBmX2ppdF9lbmFibGUgICBfX3JlYWRfbW9zdGx5ID0gSVNfQlVJTFRJTihDT05GSUdfQlBGX0pJVF9ERUZBVUxUX09OKTtcbmtlcm5lbC9icGYvY29yZS5jOjU1MDppbnQgYnBmX2ppdF9rYWxsc3ltcyBfX3JlYWRfbW9zdGx5ID0gSVNfQlVJTFRJTihDT05GSUdfQlBGX0pJVF9ERUZBVUxUX09OKTtcbmtlcm5lbC9icGYvY29yZS5jLTU1MS1pbnQgYnBmX2ppdF9oYXJkZW4gICBfX3JlYWRfbW9zdGx5O1xuLS1cbmtlcm5lbC9icGYvY29yZS5jPTE2NDM9dTE2IGJwZl9vdXRfc3RhY2tfYXJnX2NudChjb25zdCBzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXG4tLVxua2VybmVsL2JwZi9jb3JlLmMtMTY1MS19XG5rZXJuZWwvYnBmL2NvcmUuYzoxNjUyOiNlbmRpZiAvKiBDT05GSUdfQlBGX0pJVCAqL1xua2VybmVsL2JwZi9jb3JlLmMtMTY1My1cbi0tXG5rZXJuZWwvYnBmL2NvcmUuYz0xODExPWJvb2wgYnBmX29wY29kZV9pbl9pbnNudGFibGUodTggY29kZSlcbi0tXG5rZXJuZWwvYnBmL2NvcmUuYy0xODMzLVxua2VybmVsL2JwZi9jb3JlLmM6MTgzNDojaWZuZGVmIENPTkZJR19CUEZfSklUX0FMV0FZU19PTlxua2VybmVsL2JwZi9jb3JlLmMtMTgzNS0vKiBBYnNvbHV0ZSB2YWx1ZSBvZiBzMzIgd2l0aG91dCB1bmRlZmluZWQgYmVoYXZpb3IgZm9yIFMzMl9NSU4gKi9cbi0tXG5rZXJuZWwvYnBmL2NvcmUuYz0yNDYxPUVWQUw0KFBST0dfTkFNRV9MSVNULCA0MTYsIDQ0OCwgNDgwLCA1MTIpXG4tLVxua2VybmVsL2JwZi9jb3JlLmMtMjQ2NC1cbmtlcm5lbC9icGYvY29yZS5jOjI0NjU6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxua2VybmVsL2JwZi9jb3JlLmMtMjQ2Ni1pbnQgYnBmX3BhdGNoX2NhbGxfYXJncyhzdHJ1Y3QgYnBmX2luc24gKmluc24sIHUzMiBzdGFja19kZXB0aClcbi0tXG5rZXJuZWwvYnBmL2NvcmUuYz0yNTk4PXN0YXRpYyBib29sIGJwZl9wcm9nX3NlbGVjdF9pbnRlcnByZXRlcihzdHJ1Y3QgYnBmX3Byb2cgKmZwKVxuLS1cbmtlcm5lbC9icGYvY29yZS5jLTI2MDAtXHRib29sIHNlbGVjdF9pbnRlcnByZXRlciA9IGZhbHNlO1xua2VybmVsL2JwZi9jb3JlLmM6MjYwMTojaWZuZGVmIENPTkZJR19CUEZfSklUX0FMV0FZU19PTlxua2VybmVsL2JwZi9jb3JlLmMtMjYwMi1cdHUzMiBzdGFja19kZXB0aCA9IG1heF90KHUzMiwgZnAtXHUwMDNlYXV4LVx1MDAzZXN0YWNrX2RlcHRoLCAxKTtcbi0tXG5rZXJuZWwvYnBmL2NvcmUuYz0yNjIxPXN0YXRpYyBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9wcm9nX2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZylcbmtlcm5lbC9icGYvY29yZS5jLTI2MjIte1xua2VybmVsL2JwZi9jb3JlLmM6MjYyMzojaWZkZWYgQ09ORklHX0JQRl9KSVRcbmtlcm5lbC9icGYvY29yZS5jLTI2MjQtXHRzdHJ1Y3QgYnBmX3Byb2cgKm9yaWdfcHJvZztcbi0tXG5rZXJuZWwvYnBmL2NvcmUuYz0zMDQ1PXZvaWQgX19icGZfZnJlZV91c2VkX2J0ZnMoc3RydWN0IGJ0Zl9tb2RfcGFpciAqdXNlZF9idGZzLCB1MzIgbGVuKVxua2VybmVsL2JwZi9jb3JlLmMtMzA0Ni17XG5rZXJuZWwvYnBmL2NvcmUuYzozMDQ3OiNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcbmtlcm5lbC9icGYvY29yZS5jLTMwNDgtXHRzdHJ1Y3QgYnRmX21vZF9wYWlyICpidGZfbW9kO1xuLS1cbmtlcm5lbC9icGYvY29yZS5jPTMwNjY9c3RhdGljIHZvaWQgYnBmX3Byb2dfZnJlZV9kZWZlcnJlZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxua2VybmVsL2JwZi9jb3JlLmMtMzA3MS1cdGF1eCA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgYnBmX3Byb2dfYXV4LCB3b3JrKTtcbmtlcm5lbC9icGYvY29yZS5jOjMwNzI6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxua2VybmVsL2JwZi9jb3JlLmMtMzA3My1cdGJwZl9mcmVlX2tmdW5jX2J0Zl90YWIoYXV4LVx1MDAzZWtmdW5jX2J0Zl90YWIpO1xuLS1cbmtlcm5lbC9icGYvY29yZS5jPTMzODg9c3RhdGljIG5vaW5saW5lIHZvaWQgYnBmX3Byb2dfcmVwb3J0X21heV9nb3RvX3Zpb2xhdGlvbih2b2lkKVxua2VybmVsL2JwZi9jb3JlLmMtMzM4OS17XG5rZXJuZWwvYnBmL2NvcmUuYzozMzkwOiNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcbmtlcm5lbC9icGYvY29yZS5jLTMzOTEtXHRzdHJ1Y3QgYnBmX3N0cmVhbV9zdGFnZSBzcztcbi0tXG5rZXJuZWwvYnBmL2NvcmUuYz0zNDI4PV9fd2VhayB1NjQgYnBmX2FyZW5hX2dldF9rZXJuX3ZtX3N0YXJ0KHN0cnVjdCBicGZfYXJlbmEgKmFyZW5hKVxuLS1cbmtlcm5lbC9icGYvY29yZS5jLTM0MzItXG5rZXJuZWwvYnBmL2NvcmUuYzozNDMzOiNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcbmtlcm5lbC9icGYvY29yZS5jLTM0MzQtX193ZWFrIGJvb2wgYnBmX2FyZW5hX2hhbmRsZV9wYWdlX2ZhdWx0KHVuc2lnbmVkIGxvbmcgYWRkciwgYm9vbCBpc193cml0ZSxcbi0tXG5rZXJuZWwvYnBmL2NvcmUuYz0zNDU5PUVYUE9SVF9UUkFDRVBPSU5UX1NZTUJPTF9HUEwoeGRwX2J1bGtfdHgpO1xua2VybmVsL2JwZi9jb3JlLmMtMzQ2MC1cbmtlcm5lbC9icGYvY29yZS5jOjM0NjE6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxua2VybmVsL2JwZi9jb3JlLmMtMzQ2Mi1cbi0tXG5rZXJuZWwvYnBmL2ZpeHVwcy5jPTEyNz1zdGF0aWMgaW50IGFkZF9rZnVuY19pbl9pbnNucyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuLS1cbmtlcm5lbC9icGYvZml4dXBzLmMtMTQxLVxua2VybmVsL2JwZi9maXh1cHMuYzoxNDI6I2lmbmRlZiBDT05GSUdfQlBGX0pJVF9BTFdBWVNfT05cbmtlcm5lbC9icGYvZml4dXBzLmMtMTQzLXN0YXRpYyBpbnQgZ2V0X2NhbGxlZV9zdGFja19kZXB0aChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuLS1cbmtlcm5lbC9icGYvZml4dXBzLmM9MTM3Nj1pbnQgYnBmX2ZpeHVwX2NhbGxfYXJncyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxua2VybmVsL2JwZi9maXh1cHMuYy0xMzc3LXtcbmtlcm5lbC9icGYvZml4dXBzLmM6MTM3ODojaWZuZGVmIENPTkZJR19CUEZfSklUX0FMV0FZU19PTlxua2VybmVsL2JwZi9maXh1cHMuYy0xMzc5LVx0c3RydWN0IGJwZl9wcm9nICpwcm9nID0gZW52LVx1MDAzZXByb2c7XG4tLVxua2VybmVsL2JwZi9maXh1cHMuYy0xNDA0LVx0fVxua2VybmVsL2JwZi9maXh1cHMuYzoxNDA1OiNpZm5kZWYgQ09ORklHX0JQRl9KSVRfQUxXQVlTX09OXG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTE0MDYtXHRpZiAocHJvZy1cdTAwM2VqaXRfcmVxdWlyZWQpIHtcbi0tXG5rZXJuZWwvYnBmL2hlbHBlcnMuYz0yNzY9Y29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9nZXRfY3VycmVudF9jb21tX3Byb3RvID0ge1xuLS1cbmtlcm5lbC9icGYvaGVscGVycy5jLTI4My1cbmtlcm5lbC9icGYvaGVscGVycy5jOjI4NDojaWYgZGVmaW5lZChDT05GSUdfUVVFVUVEX1NQSU5MT0NLUykgfHwgZGVmaW5lZChDT05GSUdfQlBGX0FSQ0hfU1BJTkxPQ0spXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy0yODUtXG4tLVxua2VybmVsL2JwZi9oZWxwZXJzLmM9NDg0OT1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3Rocm93KVxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDg1MDojaWZkZWYgQ09ORklHX0JQRl9FVkVOVFNcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ4NTEtQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zZW5kX3NpZ25hbF90YXNrKVxuLS1cbmtlcm5lbC9icGYvaGVscGVycy5jPTQ5Mjk9QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9sb2NhbF9pcnFfcmVzdG9yZSlcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ5MzA6I2lmZGVmIENPTkZJR19CUEZfRVZFTlRTXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00OTMxLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcHJvYmVfcmVhZF91c2VyX2R5bnB0cilcbi0tXG5rZXJuZWwvYnBmL2hlbHBlcnMuYz00OTYwPUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RybmNhc2VzdHIpO1xua2VybmVsL2JwZi9oZWxwZXJzLmM6NDk2MTojaWYgZGVmaW5lZChDT05GSUdfQlBGX0xTTSkgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX0NHUk9VUFMpXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00OTYyLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfY2dyb3VwX3JlYWRfeGF0dHIsIEtGX1JDVSlcbi0tXG5rZXJuZWwvYnBmL3ByZWxvYWQvTWFrZWZpbGU9Mz1MSUJCUEZfSU5DTFVERSA9ICQoc3JjdHJlZSkvdG9vbHMvbGliXG5rZXJuZWwvYnBmL3ByZWxvYWQvTWFrZWZpbGUtNC1cbmtlcm5lbC9icGYvcHJlbG9hZC9NYWtlZmlsZTo1Om9iai0kKENPTkZJR19CUEZfUFJFTE9BRF9VTUQpICYjNDM7PSBicGZfcHJlbG9hZC5vXG5rZXJuZWwvYnBmL3ByZWxvYWQvTWFrZWZpbGUtNi1DRkxBR1NfYnBmX3ByZWxvYWRfa2Vybi5vICYjNDM7PSAtSSQoTElCQlBGX0lOQ0xVREUpXG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmM9Njg9aW50IHN5c2N0bF91bnByaXZpbGVnZWRfYnBmX2Rpc2FibGVkIF9fcmVhZF9tb3N0bHkgPVxua2VybmVsL2JwZi9zeXNjYWxsLmM6Njk6XHRJU19CVUlMVElOKENPTkZJR19CUEZfVU5QUklWX0RFRkFVTFRfT0ZGKSA/IDIgOiAwO1xua2VybmVsL2JwZi9zeXNjYWxsLmMtNzAtXG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmM9NjQ5OT1pbnQga2Vybl9zeXNfYnBmKGludCBjbWQsIHVuaW9uIGJwZl9hdHRyICphdHRyLCB1bnNpZ25lZCBpbnQgc2l6ZSlcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy02NTA0LVx0c3dpdGNoIChjbWQpIHtcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjY1MDU6I2lmZGVmIENPTkZJR19CUEZfSklUIC8qIF9fYnBmX3Byb2dfZW50ZXJfc2xlZXBhYmxlIHVzZWQgYnkgdHJhbXBvbGluZSBhbmQgSklUICovXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy02NTA2LVx0Y2FzZSBCUEZfUFJPR19URVNUX1JVTjpcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz05ODM9aW50IGJwZl90cmFtcG9saW5lX3VubGlua19wcm9nKHN0cnVjdCBicGZfdHJhbXBfbm9kZSAqbm9kZSxcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy05OTQtXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzo5OTU6I2lmIGRlZmluZWQoQ09ORklHX0NHUk9VUF9CUEYpIFx1MDAyNlx1MDAyNiBkZWZpbmVkKENPTkZJR19CUEZfTFNNKVxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtOTk2LXN0YXRpYyB2b2lkIGJwZl9zaGltX3RyYW1wX2xpbmtfcmVsZWFzZShzdHJ1Y3QgYnBmX2xpbmsgKmxpbmspXG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9MTQ2Nz1pbnQgX193ZWFrIGFyY2hfYnBmX3RyYW1wb2xpbmVfc2l6ZShjb25zdCBzdHJ1Y3QgYnRmX2Z1bmNfbW9kZWwgKm0sIHUzMiBmbGFncyxcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNDc0LSAgICBkZWZpbmVkKENPTkZJR19IQVZFX1NJTkdMRV9GVFJBQ0VfRElSRUNUX09QUykgXHUwMDI2XHUwMDI2IFxcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoxNDc1OiAgICBkZWZpbmVkKENPTkZJR19CUEZfU1lTQ0FMTClcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE0NzYtXG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9MTcxMj1pbnQgYnBmX3RyYW1wb2xpbmVfbXVsdGlfZGV0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgc3RydWN0IGJwZl90cmFjaW5nX211bHRpX2xpbmsgKmxpbmspXG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTc0OC1cdCAgQ09ORklHX0hBVkVfU0lOR0xFX0ZUUkFDRV9ESVJFQ1RfT1BTIFx1MDAyNlx1MDAyNlxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6MTc0OTpcdCAgQ09ORklHX0JQRl9TWVNDQUxMICovXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNzUwLVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz00NDYwPUJURl9JRChzdHJ1Y3QsIGNncm91cClcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy00NDYxLSNlbmRpZlxua2VybmVsL2JwZi92ZXJpZmllci5jOjQ0NjI6I2lmZGVmIENPTkZJR19CUEZfSklUXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNDQ2My1CVEZfSUQoc3RydWN0LCBicGZfY3B1bWFzaylcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTEyMTU9QlRGX0lEX1VOVVNFRFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjE2LSNlbmRpZlxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjE3OiNpZmRlZiBDT05GSUdfQlBGX0VWRU5UU1xua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjE4LUJURl9JRChmdW5jLCBicGZfc2Vzc2lvbl9jb29raWUpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTExMjI3PUJURl9JRChmdW5jLCBicGZfaXRlcl9udW1fZGVzdHJveSlcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTIyODojaWZkZWYgQ09ORklHX0JQRl9MU01cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTIyOS1CVEZfSUQoZnVuYywgYnBmX3NldF9kZW50cnlfeGF0dHIpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTExMjQ2PUJURl9JRChmdW5jLCBicGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcylcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTI0NzojaWZkZWYgQ09ORklHX0JQRl9FVkVOVFNcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTI0OC1CVEZfSUQoZnVuYywgYnBmX3Nlc3Npb25faXNfcmV0dXJuKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAxNTowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTM1NQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gcmVhc29uaW5nOgoKKipCVEYgQ29uZmlndXJhdGlvbiBEZWVwIERpdmUqKgoKQWxyaWdodCwgc28gdGhlIHByaW1hcnkgY29uZmlndXJhdGlvbiBpdGVtIHdlJiMzOTtyZSBjb25jZXJuZWQgd2l0aCBmb3IgQlRGIGlzLCBvZiBjb3Vyc2UsIGBDT05GSUdfQlBGX1NZU0NBTExgLiBUaGF0JiMzOTtzIHRoZSBsaW5jaHBpbiwgdGhlIGJpZyBvbmUuIEJ1dCwga25vd2luZyBob3cgdGhlc2UgdGhpbmdzIHRlbmQgdG8gaW50ZXJ3ZWF2ZSwgSSBuZWVkIHRvIG1ha2UgKmFic29sdXRlbHkqIHN1cmUgd2UgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueSBvdGhlciBjb25maWcgb3B0aW9ucyB0aGF0IG1pZ2h0IHN1YnRseSBpbmZsdWVuY2UgdGhlIGJlaGF2aW9yIG9yIGF2YWlsYWJpbGl0eSBvZiBCVEYgc3VwcG9ydCB3aXRoaW4gdGhlIGtlcm5lbC4gSSBuZWVkIHRvIGRvIGEgdGhvcm91Z2ggY2hlY2sgdG8gYXZvaWQgYW55IHVuZXhwZWN0ZWQgaW50ZXJhY3Rpb25zIG9yIGRlcGVuZGVuY2llcy4gVGltZSB0byBkaWcgZGVlcGVyIGFuZCBzZWUgd2hhdCBlbHNlIGNvdWxkIGJlIGx1cmtpbmcuLi4gSSBuZWVkIHRvIGNvbnNpZGVyIGFsbCBhbmdsZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDE1OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19ERUJVR19JTkZPX0JURiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvTWFrZWZpbGU9NDA9aWZlcSAoJChDT05GSUdfU1lTRlMpLHkpXG5rZXJuZWwvYnBmL01ha2VmaWxlOjQxOm9iai0kKENPTkZJR19ERUJVR19JTkZPX0JURikgJiM0Mzs9IHN5c2ZzX2J0Zi5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTQyLWVuZGlmXG4tLVxua2VybmVsL2JwZi9idGYuYz02Mzg2PXN0YXRpYyBzdHJ1Y3QgYnRmICpidGZfcGFyc2VfYmFzZShzdHJ1Y3QgYnRmX3ZlcmlmaWVyX2VudiAqZW52LCBjb25zdCBjaGFyICpuYW1lLFxuLS1cbmtlcm5lbC9icGYvYnRmLmMtNjM5MS1cbmtlcm5lbC9icGYvYnRmLmM6NjM5MjpcdGlmICghSVNfRU5BQkxFRChDT05GSUdfREVCVUdfSU5GT19CVEYpKVxua2VybmVsL2JwZi9idGYuYy02MzkzLVx0XHRyZXR1cm4gRVJSX1BUUigtRU5PRU5UKTtcbi0tXG5rZXJuZWwvYnBmL2J0Zi5jPTY0NzI9c3RhdGljIF9fdTMyIGJ0Zl9yZWxvY2F0ZV9pZChjb25zdCBzdHJ1Y3QgYnRmICpidGYsIF9fdTMyIGlkKVxuLS1cbmtlcm5lbC9icGYvYnRmLmMtNjQ3OC1cbmtlcm5lbC9icGYvYnRmLmM6NjQ3OTojaWZkZWYgQ09ORklHX0RFQlVHX0lORk9fQlRGX01PRFVMRVNcbmtlcm5lbC9icGYvYnRmLmMtNjQ4MC1cbmtlcm5lbC9icGYvYnRmLmM9NjQ4MT1zdGF0aWMgc3RydWN0IGJ0ZiAqYnRmX3BhcnNlX21vZHVsZShjb25zdCBjaGFyICptb2R1bGVfbmFtZSwgY29uc3Qgdm9pZCAqZGF0YSxcbi0tXG5rZXJuZWwvYnBmL2J0Zi5jLTY1NzYtXG5rZXJuZWwvYnBmL2J0Zi5jOjY1Nzc6I2VuZGlmIC8qIENPTkZJR19ERUJVR19JTkZPX0JURl9NT0RVTEVTICovXG5rZXJuZWwvYnBmL2J0Zi5jLTY1NzgtXG4tLVxua2VybmVsL2JwZi9idGYuYz04NDY1PWVudW0ge1xuLS1cbmtlcm5lbC9icGYvYnRmLmMtODQ2OC1cbmtlcm5lbC9icGYvYnRmLmM6ODQ2OTojaWZkZWYgQ09ORklHX0RFQlVHX0lORk9fQlRGX01PRFVMRVNcbmtlcm5lbC9icGYvYnRmLmMtODQ3MC1zdHJ1Y3QgYnRmX21vZHVsZSB7XG4tLVxua2VybmVsL2JwZi9idGYuYz04NjA3PWZzX2luaXRjYWxsKGJ0Zl9tb2R1bGVfaW5pdCk7XG5rZXJuZWwvYnBmL2J0Zi5jOjg2MDg6I2VuZGlmIC8qIENPTkZJR19ERUJVR19JTkZPX0JURl9NT0RVTEVTICovXG5rZXJuZWwvYnBmL2J0Zi5jLTg2MDktXG5rZXJuZWwvYnBmL2J0Zi5jPTg2MTA9c3RydWN0IG1vZHVsZSAqYnRmX3RyeV9nZXRfbW9kdWxlKGNvbnN0IHN0cnVjdCBidGYgKmJ0Zilcbi0tXG5rZXJuZWwvYnBmL2J0Zi5jLTg2MTItXHRzdHJ1Y3QgbW9kdWxlICpyZXMgPSBOVUxMO1xua2VybmVsL2JwZi9idGYuYzo4NjEzOiNpZmRlZiBDT05GSUdfREVCVUdfSU5GT19CVEZfTU9EVUxFU1xua2VybmVsL2JwZi9idGYuYy04NjE0LVx0c3RydWN0IGJ0Zl9tb2R1bGUgKmJ0Zl9tb2QsICp0bXA7XG4tLVxua2VybmVsL2JwZi9idGYuYz04NjQwPXN0YXRpYyBzdHJ1Y3QgYnRmICpidGZfZ2V0X21vZHVsZV9idGYoY29uc3Qgc3RydWN0IG1vZHVsZSAqbW9kdWxlKVxua2VybmVsL2JwZi9idGYuYy04NjQxLXtcbmtlcm5lbC9icGYvYnRmLmM6ODY0MjojaWZkZWYgQ09ORklHX0RFQlVHX0lORk9fQlRGX01PRFVMRVNcbmtlcm5lbC9icGYvYnRmLmMtODY0My1cdHN0cnVjdCBidGZfbW9kdWxlICpidGZfbW9kLCAqdG1wO1xuLS1cbmtlcm5lbC9icGYvYnRmLmMtODY1My1cbmtlcm5lbC9icGYvYnRmLmM6ODY1NDojaWZkZWYgQ09ORklHX0RFQlVHX0lORk9fQlRGX01PRFVMRVNcbmtlcm5lbC9icGYvYnRmLmMtODY1NS1cdG11dGV4X2xvY2soXHUwMDI2YnRmX21vZHVsZV9tdXRleCk7XG4tLVxua2VybmVsL2JwZi9idGYuYz04NjcwPXN0YXRpYyBpbnQgY2hlY2tfYnRmX2tjb25maWdzKGNvbnN0IHN0cnVjdCBtb2R1bGUgKm1vZHVsZSwgY29uc3QgY2hhciAqZmVhdHVyZSlcbmtlcm5lbC9icGYvYnRmLmMtODY3MS17XG5rZXJuZWwvYnBmL2J0Zi5jOjg2NzI6XHRpZiAoIW1vZHVsZSBcdTAwMjZcdTAwMjYgSVNfRU5BQkxFRChDT05GSUdfREVCVUdfSU5GT19CVEYpKSB7XG5rZXJuZWwvYnBmL2J0Zi5jLTg2NzMtXHRcdHByX2VycihcJiMzNDttaXNzaW5nIHZtbGludXggQlRGLCBjYW5ub3QgcmVnaXN0ZXIgJXNcXG5cJiMzNDssIGZlYXR1cmUpO1xuLS1cbmtlcm5lbC9icGYvYnRmLmMtODY3NS1cdH1cbmtlcm5lbC9icGYvYnRmLmM6ODY3NjpcdGlmIChtb2R1bGUgXHUwMDI2XHUwMDI2IElTX0VOQUJMRUQoQ09ORklHX0RFQlVHX0lORk9fQlRGX01PRFVMRVMpKVxua2VybmVsL2JwZi9idGYuYy04Njc3LVx0XHRwcl93YXJuKFwmIzM0O21pc3NpbmcgbW9kdWxlIEJURiwgY2Fubm90IHJlZ2lzdGVyICVzXFxuXCYjMzQ7LCBmZWF0dXJlKTtcbi0tXG5rZXJuZWwvYnBmL2J0Zi5jPTg4MTc9c3RhdGljIGludCBidGZfY2hlY2tfa2Z1bmNfbmFtZShzdHJ1Y3QgYnRmICpidGYsIGNvbnN0IGNoYXIgKmZ1bmNfbmFtZSwgdTMyIGtpbmQpXG5rZXJuZWwvYnBmL2J0Zi5jLTg4MTgte1xua2VybmVsL2JwZi9idGYuYzo4ODE5OiNpZmRlZiBDT05GSUdfREVCVUdfSU5GT19CVEZfTU9EVUxFU1xua2VybmVsL2JwZi9idGYuYy04ODIwLVx0c3RydWN0IGJ0Zl9tb2R1bGUgKmJ0Zl9tb2QsICp0bXA7XG4tLVxua2VybmVsL2JwZi9idGYuYy04ODMzLVxua2VybmVsL2JwZi9idGYuYzo4ODM0OiNpZmRlZiBDT05GSUdfREVCVUdfSU5GT19CVEZfTU9EVUxFU1xua2VybmVsL2JwZi9idGYuYy04ODM1LVx0Z3VhcmQobXV0ZXgpKFx1MDAyNmJ0Zl9tb2R1bGVfbXV0ZXgpO1xuLS1cbmtlcm5lbC9icGYvYnRmLmM9OTQ4Mj1zdGF0aWMgc3RydWN0IGJwZl9jYW5kX2NhY2hlICpwb3B1bGF0ZV9jYW5kX2NhY2hlKHN0cnVjdCBicGZfY2FuZF9jYWNoZSAqY2FuZHMsXG4tLVxua2VybmVsL2JwZi9idGYuYy05NTA5LVxua2VybmVsL2JwZi9idGYuYzo5NTEwOiNpZmRlZiBDT05GSUdfREVCVUdfSU5GT19CVEZfTU9EVUxFU1xua2VybmVsL2JwZi9idGYuYy05NTExLXN0YXRpYyB2b2lkIF9fcHVyZ2VfY2FuZF9jYWNoZShzdHJ1Y3QgYnRmICpidGYsIHN0cnVjdCBicGZfY2FuZF9jYWNoZSAqKmNhY2hlLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0yNzQzPWludCBicGZfYWRkX2tmdW5jX2NhbGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgdTMyIGZ1bmNfaWQsIHUxNiBvZmZzZXQpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTI3NTgtXHRcdGlmICghYnRmX3ZtbGludXgpIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoyNzU5Olx0XHRcdHZlcmJvc2UoZW52LCBcJiMzNDtjYWxsaW5nIGtlcm5lbCBmdW5jdGlvbiBpcyBub3Qgc3VwcG9ydGVkIHdpdGhvdXQgQ09ORklHX0RFQlVHX0lORk9fQlRGXFxuXCYjMzQ7KTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yNzYwLVx0XHRcdHJldHVybiAtRU5PVFNVUFA7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTU5Njk9c3RhdGljIGludCBjaGVja19wdHJfdG9fbWFwX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01OTgzLVx0aWYgKCFidGZfdm1saW51eCkge1xua2VybmVsL2JwZi92ZXJpZmllci5jOjU5ODQ6XHRcdHZlcmJvc2UoZW52LCBcJiMzNDttYXBfcHRyIGFjY2VzcyBub3Qgc3VwcG9ydGVkIHdpdGhvdXQgQ09ORklHX0RFQlVHX0lORk9fQlRGXFxuXCYjMzQ7KTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01OTg1LVx0XHRyZXR1cm4gLUVOT1RTVVBQO1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xNzc3Nz1zdGF0aWMgaW50IGNoZWNrX3BzZXVkb19idGZfaWQoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTc3OTMtXHRcdGlmICghYnRmX3ZtbGludXgpIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxNzc5NDpcdFx0XHR2ZXJib3NlKGVudiwgXCYjMzQ7a2VybmVsIGlzIG1pc3NpbmcgQlRGLCBtYWtlIHN1cmUgQ09ORklHX0RFQlVHX0lORk9fQlRGPXkgaXMgc3BlY2lmaWVkIGluIEtjb25maWcuXFxuXCYjMzQ7KTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNzc5NS1cdFx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTk2MjI9c3RydWN0IGJ0ZiAqYnBmX2dldF9idGZfdm1saW51eCh2b2lkKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTYyNi1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTYyNzpcdGlmICghYnRmIFx1MDAyNlx1MDAyNiBJU19FTkFCTEVEKENPTkZJR19ERUJVR19JTkZPX0JURikpIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTYyOC1cdFx0bXV0ZXhfbG9jayhcdTAwMjZidGZfdm1saW51eF9sb2NrKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMTU6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE1MjIKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyODYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEJURiBMb2FkaW5nIGFuZCBgYnRmX3BhcnNlX2ZpZWxkc2AqKgoKT2theSwgc28gYENPTkZJR19ERUJVR19JTkZPX0JURmAgaXMgb2J2aW91c2x5IHJlbGV2YW50IGZvciBnZW5lcmF0aW5nIHRoZSB2bWxpbnV4IEJURiBkYXRhLCBidXQgdGhhdCYjMzk7cyBub3QgdGhlIGNvcmUgb2YgdGhlIHRlc3QuIFRoZSB0ZXN0IGNhc2UgSSYjMzk7bSBmb2N1c2luZyBvbiBzZWVtcyB0byB1dGlsaXplIGVpdGhlciBgQlBGX1BST0dfVEVTVF9SVU5gIG9yIGxvYWRzIHRoZSBCVEYgZGlyZWN0bHkgdXNpbmcgYGJwZihCUEZfQlRGX0xPQUQsIC4uLilgLiBBbmQgcmVtZW1iZXIsIGBCUEZfQlRGX0xPQURgIGhhcyBhIGRlcGVuZGVuY3k6IGl0IHJlcXVpcmVzIGBDT05GSUdfQlBGX1NZU0NBTExgIHRvIGJlIGVuYWJsZWQuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIGhvdyBpdCBsb2FkcyByYXcgQlRGIGRhdGEgZnJvbSBhIGZpbGUsIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoYXQgc3lzY2FsbC4gVGhlIHRlc3QgaXRzZWxmIHJlc2lkZXMgaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zi5jYC4gVGhhdCB0ZWxscyBtZSBJIHNob3VsZCBmb2N1cyBvbiB0aGF0IHRlc3QmIzM5O3MgdXNlIG9mIGBCUEZfQlRGX0xPQURgIGFuZCByYXcgQlRGIGRhdGEuIFNpbmNlIGl0JiMzOTtzIGEgdGVzdCBvZiB0aGUgbG9hZGluZyBtZWNoYW5pc20sIGBDT05GSUdfQlBGX1NZU0NBTExgIHNlZW1zIHRvIGJlIHRoZSBjcml0aWNhbCBwcmVyZXF1aXNpdGUgaGVyZS4KCk5vdywgbGV0JiMzOTtzIHJlZm9jdXMgb24gdGhlIGZ1bmN0aW9uIEkmIzM5O20gY29uc2lkZXJpbmcuIElzIGBidGZfcGFyc2VfZmllbGRzYCB0aGUgcmlnaHQgc3ltYm9sIHRvIGZvY3VzIG9uPyBJIG5lZWQgdG8gYW5hbHl6ZSBpdHMgY2FsbCBwYXRocy4gSXQgYXBwZWFycyB0aGF0IGBidGZfcGFyc2VfZmllbGRzYCBpcyBjYWxsZWQgYnkgYG1hcF9jaGVja19idGZgIGFuZCBgYnRmX3BhcnNlX3N0cnVjdF9tZXRhc2AuIGBtYXBfY2hlY2tfYnRmYCBpcyBpbnZva2VkIGJ5IGBtYXBfY3JlYXRlX2FsbG9jYCwgc3BlY2lmaWNhbGx5IHdoZW4gYSBtYXAgaXMgYmVpbmcgY3JlYXRlZCBhbmQgQlRGIGlzIGludm9sdmVkLiBBbmQsIGBidGZfcGFyc2Vfc3RydWN0X21ldGFzYCBpcyBjYWxsZWQgYnkgYGJ0Zl9wYXJzZWAgd2hlbiBCVEYgaXMgbG9hZGVkLiBIb2xkIG9uLCBgYnRmX3BhcnNlX3N0cnVjdF9tZXRhc2AgaXMgcGFyc2luZyB0aGUgbWV0YWRhdGEgKndpdGhpbiogdGhlIEJURiBpdHNlbGYhIFRoYXQgbWFrZXMgaXQgYW4gaW50ZXJlc3Rpbmcgc3ltYm9sIHRvIHRyYWNlLiBJJiMzOTttIGdvaW5nIHRvIHJldmlzaXQgYGJ0Zl9wYXJzZV9zdHJ1Y3RfbWV0YXNgIHRvIHVuZGVyc3RhbmQgdGhhdCBiZXR0ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDE1OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2J0Zl9wYXJzZV9zdHJ1Y3RfbWV0YXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL2J0Zi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvYnRmLmM9NTc3OT1zdGF0aWMgc3RydWN0IGJ0Zl9zdHJ1Y3RfbWV0YXMgKlxua2VybmVsL2JwZi9idGYuYzo1NzgwOmJ0Zl9wYXJzZV9zdHJ1Y3RfbWV0YXMoc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZywgc3RydWN0IGJ0ZiAqYnRmKVxua2VybmVsL2JwZi9idGYuYy01NzgxLXtcbi0tXG5rZXJuZWwvYnBmL2J0Zi5jPTU5NTA9c3RhdGljIHN0cnVjdCBidGYgKmJ0Zl9wYXJzZShjb25zdCB1bmlvbiBicGZfYXR0ciAqYXR0ciwgYnBmcHRyX3QgdWF0dHIsXG4tLVxua2VybmVsL2JwZi9idGYuYy02MDE3LVxua2VybmVsL2JwZi9idGYuYzo2MDE4Olx0c3RydWN0X21ldGFfdGFiID0gYnRmX3BhcnNlX3N0cnVjdF9tZXRhcyhcdTAwMjZlbnYtXHUwMDNlbG9nLCBidGYpO1xua2VybmVsL2JwZi9idGYuYy02MDE5LVx0aWYgKElTX0VSUihzdHJ1Y3RfbWV0YV90YWIpKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDE1OjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNTA0CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTc5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZvY3VzaW5nIG9uIEJURiBQYXJzaW5nKioKCk9rYXksIHNvICpidGZcX3BhcnNlXF9zdHJ1Y3RcX21ldGFzKiBnZXRzIGNhbGxlZCBmcm9tICpidGZcX3BhcnNlKiwgYW5kIHRoYXQmIzM5O3MgY2FsbGVkIGR1cmluZyAqQlBGXF9CVEZcX0xPQUQqLiBSaWdodCwgdGhhdCBtYWtlcyBpdCBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgZGlnZ2luZyBpbnRvLiBUaGUgdGVzdCBpbiAqdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dcX3Rlc3RzL2J0Zi5jKiBhY3R1YWxseSB1c2VzICpCUEZcX0JURlxfTE9BRCosIHNvIHdlJiMzOTt2ZSBnb3QgYSBkaXJlY3QgbGluayB0aGVyZS4gKmJ0ZlxfcGFyc2VcX3N0cnVjdFxfbWV0YXMqIHNlZW1zIGxpa2UgYW4gZXhjZWxsZW50IGZvY3VzIHN5bWJvbC4gSG1tLCBidXQgaGFuZyBvbuKApiBpdCYjMzk7cyBzdGF0aWMuIENhbiB3ZSBldmVuIHVzZSBzdGF0aWMgZnVuY3Rpb25zIGxpa2UgdGhhdD8gQWgsIHllcywgc3l6a2FsbGVyICpkb2VzKiBzdXBwb3J0IHRob3NlLCBhcyBsb25nIGFzIGl0JiMzOTtzIHVuaXF1ZWx5IGlkZW50aWZpYWJsZSBvciB3ZSBjYW4ganVzdCBzcGVjaWZ5IHRoZSBuYW1lLCBhbmQgd2l0aCB0aGlzIG9uZSBiZWluZyBjYWxsZWQgZHVyaW5nIGEgc3BlY2lmaWMgZnVuY3Rpb24gaXQgaXMuIFdhaXQgYSBtaW51dGUsICpidGZcX3BhcnNlXF9maWVsZHMqIGlzIGdsb2JhbCwgZXZlbiBiZXR0ZXIgdGhlbiwgbGV0IG1lIGNvbmZpcm0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDE1OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2J0Zl9wYXJzZV9maWVsZHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL2J0Zi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvYnRmLmM9NDEwOD1zdGF0aWMgaW50IGJ0Zl9maWVsZF9jbXAoY29uc3Qgdm9pZCAqX2EsIGNvbnN0IHZvaWQgKl9iLCBjb25zdCB2b2lkICpwcml2KVxuLS1cbmtlcm5lbC9icGYvYnRmLmMtNDExOS1cbmtlcm5lbC9icGYvYnRmLmM6NDEyMDpzdHJ1Y3QgYnRmX3JlY29yZCAqYnRmX3BhcnNlX2ZpZWxkcyhjb25zdCBzdHJ1Y3QgYnRmICpidGYsIGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdCxcbmtlcm5lbC9icGYvYnRmLmMtNDEyMS1cdFx0XHRcdCAgICB1MzIgZmllbGRfbWFzaywgdTMyIHZhbHVlX3NpemUpXG4tLVxua2VybmVsL2JwZi9idGYuYz01NzgwPWJ0Zl9wYXJzZV9zdHJ1Y3RfbWV0YXMoc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZywgc3RydWN0IGJ0ZiAqYnRmKVxuLS1cbmtlcm5lbC9icGYvYnRmLmMtNTg4MC1cdFx0dHlwZS1cdTAwM2VidGZfaWQgPSBpO1xua2VybmVsL2JwZi9idGYuYzo1ODgxOlx0XHRyZWNvcmQgPSBidGZfcGFyc2VfZmllbGRzKGJ0ZiwgdCwgQlBGX1NQSU5fTE9DSyB8IEJQRl9SRVNfU1BJTl9MT0NLIHwgQlBGX0xJU1RfSEVBRCB8IEJQRl9MSVNUX05PREUgfFxua2VybmVsL2JwZi9idGYuYy01ODgyLVx0XHRcdFx0XHRcdCAgQlBGX1JCX1JPT1QgfCBCUEZfUkJfTk9ERSB8IEJQRl9SRUZDT1VOVCB8XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDE1OjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMjQ4CgkJCQkJCQlvdXRwdXQ6IDE3NgoJCQkJCQkJdGhvdWdodHM6IDUyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBhIEJQRiBCVEYgUGFyc2luZyBCdWcgRml4KioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIHBhdGNoIHJlbGF0ZWQgdG8gQlRGIChCUEYgVHlwZSBGb3JtYXQpIHBhcnNpbmcgd2l0aGluIHRoZSBrZXJuZWwsIGFuZCBoZXJlJiMzOTtzIG15IGJyZWFrZG93biBvZiB3aGF0JiMzOTtzIGdvaW5nIG9uLiBGaXJzdCwgYGJ0Zl9wYXJzZV9maWVsZHNgIGlzIGEgZ2xvYmFsbHkgYWNjZXNzaWJsZSBmdW5jdGlvbiwgd2hpY2ggbWFrZXMgaXQgYSBnb29kIGNlbnRyYWwgcG9pbnQgdG8gaW52ZXN0aWdhdGUuIEl0JiMzOTtzIG5vdCBkZWNsYXJlZCBzdGF0aWMsIHdoaWNoIGlzIGdvb2QgdG8ga25vdyBmb3IgcmVhY2hhYmlsaXR5LgoKSSBhbHNvIHNlZSBhIGZldyBvdGhlciByZWxhdGVkIGZ1bmN0aW9ucyBpbnZvbHZlZCBsaWtlIGBidGZfZmluZF9zdHJ1Y3RfZmllbGRgLCBgYnRmX2ZpbmRfbmVzdGVkX3N0cnVjdGAsIGBidGZfZmluZF9kYXRhc2VjX3ZhcmAsIGBidGZfZmluZF9maWVsZF9vbmVgLCBhbmQgYGJ0Zl9maW5kX2ZpZWxkYC4gU2luY2Ugd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBmaWVsZCBwYXJzaW5nLCBJJiMzOTtsbCBkZWZpbml0ZWx5IGtlZXAgdGhvc2UgaW4gbWluZC4gV2Ugc2hvdWxkIHByb2JhYmx5IGZvY3VzIG91ciBhdHRlbnRpb24gb24gYGJ0Zl9wYXJzZV9maWVsZHNgIGFuZCBgYnRmX3BhcnNlX3N0cnVjdF9tZXRhc2AuCgpMb29raW5nIGNsb3NlciBhdCB0aGUgcGF0Y2gsIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gYmUgd2l0aGluIGBidGZfZmluZF9zdHJ1Y3RfZmllbGRgLiBJdCBsb29rcyBsaWtlIHRoZXJlJiMzOTtzIGEgcHJvYmxlbSB3aGVyZSBkdXBsaWNhdGUgZmllbGRzIHRoYXQgc2hvdWxkIGJlIHVuaXF1ZSwgc3VjaCBhcyBgYnBmX3NwaW5fbG9ja2AsIGNvdWxkIGJlIG5lc3RlZCBkZWVwbHkgd2l0aGluIHN0cnVjdHMsIGFuZCB0aGUgZXhpc3RpbmcgYHNlZW5fbWFza2AgY2hlY2sgd291bGRuJiMzOTt0IGNhdGNoIHRoZXNlIGR1cGxpY2F0ZXMgcHJvcGVybHkuIFRoZSBmaXggaW52b2x2ZXMgcGFzc2luZyBhIHBvaW50ZXIgdG8gdGhlIGBzZWVuX21hc2tgIHZhcmlhYmxlLCBzbyB0aGF0IGFsbCBuZXN0ZWQgbGV2ZWxzIHVzZSB0aGUgc2FtZSBgc2Vlbl9tYXNrYCwgd2hpY2ggc2hvdWxkIHNvbHZlIHRoZSBkdXBsaWNhdGUgZmllbGQgaXNzdWUuCgpUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGRpcmVjdGx5IHJlbGF0ZWQgdG8gdGhlIEJQRiBzdWJzeXN0ZW0sIHNwZWNpZmljYWxseSBCVEYgcGFyc2luZyBhbmQgdmFsaWRhdGlvbi4gR2l2ZW4gdGhhdCwgaXQgKnNob3VsZCogYmUgcmVhY2hhYmxlIHZpYSB0aGUgYGJwZigpYCBzeXNjYWxsLiBTbyB3ZSBjYW4gaW50ZXJhY3Qgd2l0aCBpdCB2aWEgYEJQRl9CVEZfTE9BRGAgZm9yIGV4YW1wbGUuCgpUbyBlbnN1cmUgdGhpcyBpcyB0ZXN0YWJsZSBhbmQgcmVhY2hhYmxlLCBJIHNob3VsZCBtYWtlIHN1cmUgdGhlIGBCUEZfU1lTQ0FMTGAgY29uZmlnIGlzIGVuYWJsZWQuIEl0IGxvb2tzIGxpa2UgdGhhdCBpcyB0aGUgY29ycmVjdCBjb25maWcgdG8gYWxsb3cgdGhlIGBicGYoKWAgc3lzY2FsbCBhbmQgZW5hYmxlIEJURiBwYXJzaW5nLiBMZXQgbWUgZG91YmxlIGNoZWNrLi4uIFllcywgaXQgYXBwZWFycyB0aGF0IGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIGluZGVlZCB0aGUgbWFpbiBjb25maWcgbmVlZGVkIHRvIGV4cG9zZSB0aGlzIGZ1bmN0aW9uYWxpdHkuIE9rYXksIEkmIzM5O20gY29uZmlkZW50LiBUaW1lIHRvIHN1Ym1pdCB0aGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAxNTowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtidGZfcGFyc2VfZmllbGRzJiMzNDssCiAgICAmIzM0O2J0Zl9wYXJzZV9zdHJ1Y3RfbWV0YXMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gQlRGIHBhcnNpbmcgd2hlcmUgZHVwbGljYXRlIHVuaXF1ZSBmaWVsZHMgKGxpa2UgYGJwZl9zcGluX2xvY2tgKSBjb3VsZCBiZSBuZXN0ZWQgaW4gc3RydWN0cywgYW5kIHRoZSBgc2Vlbl9tYXNrYCBjaGVjayB3b3VsZG4mIzM5O3QgY2F0Y2ggaXQgYmVjYXVzZSBlYWNoIGxldmVsIG9mIG5lc3RpbmcgaGFkIGl0cyBvd24gYHNlZW5fbWFza2AuIFBhc3NpbmcgYSBwb2ludGVyIHRvIGBzZWVuX21hc2tgIGZpeGVzIHRoaXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgQlBGIHN1YnN5c3RlbSwgc3BlY2lmaWNhbGx5IGluIEJURiBwYXJzaW5nL3ZhbGlkYXRpb24sIHdoaWNoIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgdmlhIHRoZSBgYnBmKClgIHN5c2NhbGwgKGUuZy4sIGBCUEZfQlRGX0xPQURgIG9yIG1hcCBjcmVhdGlvbikuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnRmX3BhcnNlX2ZpZWxkcyYjMzQ7LAogICAgJiMzNDtidGZfcGFyc2Vfc3RydWN0X21ldGFzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIEJURiBwYXJzaW5nIHdoZXJlIGR1cGxpY2F0ZSB1bmlxdWUgZmllbGRzIChsaWtlIGBicGZfc3Bpbl9sb2NrYCkgY291bGQgYmUgbmVzdGVkIGluIHN0cnVjdHMsIGFuZCB0aGUgYHNlZW5fbWFza2AgY2hlY2sgd291bGRuJiMzOTt0IGNhdGNoIGl0IGJlY2F1c2UgZWFjaCBsZXZlbCBvZiBuZXN0aW5nIGhhZCBpdHMgb3duIGBzZWVuX21hc2tgLiBQYXNzaW5nIGEgcG9pbnRlciB0byBgc2Vlbl9tYXNrYCBmaXhlcyB0aGlzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEJQRiBzdWJzeXN0ZW0sIHNwZWNpZmljYWxseSBpbiBCVEYgcGFyc2luZy92YWxpZGF0aW9uLCB3aGljaCBpcyByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIHZpYSB0aGUgYGJwZigpYCBzeXNjYWxsIChlLmcuLCBgQlBGX0JURl9MT0FEYCBvciBtYXAgY3JlYXRpb24pLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTlUMTU6MDY6NTkuOTYxMTcwMzVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzY0MjU5MTU3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJ0Zl9wYXJzZV9maWVsZHNcIixcbiAgICBcImJ0Zl9wYXJzZV9zdHJ1Y3RfbWV0YXNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBCVEYgcGFyc2luZyB3aGVyZSBkdXBsaWNhdGUgdW5pcXVlIGZpZWxkcyAobGlrZSBgYnBmX3NwaW5fbG9ja2ApIGNvdWxkIGJlIG5lc3RlZCBpbiBzdHJ1Y3RzLCBhbmQgdGhlIGBzZWVuX21hc2tgIGNoZWNrIHdvdWxkbid0IGNhdGNoIGl0IGJlY2F1c2UgZWFjaCBsZXZlbCBvZiBuZXN0aW5nIGhhZCBpdHMgb3duIGBzZWVuX21hc2tgLiBQYXNzaW5nIGEgcG9pbnRlciB0byBgc2Vlbl9tYXNrYCBmaXhlcyB0aGlzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEJQRiBzdWJzeXN0ZW0sIHNwZWNpZmljYWxseSBpbiBCVEYgcGFyc2luZy92YWxpZGF0aW9uLCB3aGljaCBpcyByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIHZpYSB0aGUgYGJwZigpYCBzeXNjYWxsIChlLmcuLCBgQlBGX0JURl9MT0FEYCBvciBtYXAgY3JlYXRpb24pLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQxNTowNjo1OS45NjExNzcyOVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDEyNTc1ODExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMmIzOTRmYjA5YmVmMGYxZWE2MTEyMGNmMDNjODJhMjZkMjZkMTJjYVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEp1bCAxOSAxNTowNjo1OCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2J0Zi5jIGIva2VybmVsL2JwZi9idGYuY1xcbmluZGV4IGNiYjFlNDliOWJjYmY1Li44ZDYyODU1MmVmOTllYiAxMDA2NDRcXG4tLS0gYS9rZXJuZWwvYnBmL2J0Zi5jXFxuKysrIGIva2VybmVsL2JwZi9idGYuY1xcbkBAIC0zNzUxLDcgKzM3NTEsNyBAQCBzdGF0aWMgaW50IGJ0Zl9yZXBlYXRfZmllbGRzKHN0cnVjdCBidGZfZmllbGRfaW5mbyAqaW5mbywgaW50IGluZm9fY250LFxcbiBzdGF0aWMgaW50IGJ0Zl9maW5kX3N0cnVjdF9maWVsZChjb25zdCBzdHJ1Y3QgYnRmICpidGYsXFxuIFxcdFxcdFxcdFxcdCBjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKnQsIHUzMiBmaWVsZF9tYXNrLFxcbiBcXHRcXHRcXHRcXHQgc3RydWN0IGJ0Zl9maWVsZF9pbmZvICppbmZvLCBpbnQgaW5mb19jbnQsXFxuLVxcdFxcdFxcdFxcdCB1MzIgbGV2ZWwpO1xcbitcXHRcXHRcXHRcXHQgdTMyIGxldmVsLCB1MzIgKnNlZW5fbWFzayk7XFxuIFxcbiAvKiBGaW5kIHNwZWNpYWwgZmllbGRzIGluIHRoZSBzdHJ1Y3QgdHlwZSBvZiBhIGZpZWxkLlxcbiAgKlxcbkBAIC0zNzYyLDcgKzM3NjIsNyBAQCBzdGF0aWMgaW50IGJ0Zl9maW5kX3N0cnVjdF9maWVsZChjb25zdCBzdHJ1Y3QgYnRmICpidGYsXFxuIHN0YXRpYyBpbnQgYnRmX2ZpbmRfbmVzdGVkX3N0cnVjdChjb25zdCBzdHJ1Y3QgYnRmICpidGYsIGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdCxcXG4gXFx0XFx0XFx0XFx0ICB1MzIgb2ZmLCB1MzIgbmVsZW1zLFxcbiBcXHRcXHRcXHRcXHQgIHUzMiBmaWVsZF9tYXNrLCBzdHJ1Y3QgYnRmX2ZpZWxkX2luZm8gKmluZm8sXFxuLVxcdFxcdFxcdFxcdCAgaW50IGluZm9fY250LCB1MzIgbGV2ZWwpXFxuK1xcdFxcdFxcdFxcdCAgaW50IGluZm9fY250LCB1MzIgbGV2ZWwsIHUzMiAqc2Vlbl9tYXNrKVxcbiB7XFxuIFxcdGludCByZXQsIGVyciwgaTtcXG4gXFxuQEAgLTM3NzAsNyArMzc3MCw3IEBAIHN0YXRpYyBpbnQgYnRmX2ZpbmRfbmVzdGVkX3N0cnVjdChjb25zdCBzdHJ1Y3QgYnRmICpidGYsIGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqXFxuIFxcdGlmIChsZXZlbCBcXHUwMDNlPSBNQVhfUkVTT0xWRV9ERVBUSClcXG4gXFx0XFx0cmV0dXJuIC1FMkJJRztcXG4gXFxuLVxcdHJldCA9IGJ0Zl9maW5kX3N0cnVjdF9maWVsZChidGYsIHQsIGZpZWxkX21hc2ssIGluZm8sIGluZm9fY250LCBsZXZlbCk7XFxuK1xcdHJldCA9IGJ0Zl9maW5kX3N0cnVjdF9maWVsZChidGYsIHQsIGZpZWxkX21hc2ssIGluZm8sIGluZm9fY250LCBsZXZlbCwgc2Vlbl9tYXNrKTtcXG4gXFxuIFxcdGlmIChyZXQgXFx1MDAzYz0gMClcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG5AQCAtMzgyNyw3ICszODI3LDcgQEAgc3RhdGljIGludCBidGZfZmluZF9maWVsZF9vbmUoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLFxcbiBcXHRcXHRpZiAoZXhwZWN0ZWRfc2l6ZSBcXHUwMDI2XFx1MDAyNiBleHBlY3RlZF9zaXplICE9IHN6ICogbmVsZW1zKVxcbiBcXHRcXHRcXHRyZXR1cm4gMDtcXG4gXFx0XFx0cmV0ID0gYnRmX2ZpbmRfbmVzdGVkX3N0cnVjdChidGYsIHZhcl90eXBlLCBvZmYsIG5lbGVtcywgZmllbGRfbWFzayxcXG4tXFx0XFx0XFx0XFx0XFx0ICAgICBcXHUwMDI2aW5mb1swXSwgaW5mb19jbnQsIGxldmVsKTtcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICBcXHUwMDI2aW5mb1swXSwgaW5mb19jbnQsIGxldmVsLCBzZWVuX21hc2spO1xcbiBcXHRcXHRyZXR1cm4gcmV0O1xcbiBcXHR9XFxuIFxcbkBAIC0zODkyLDExICszODkyLDExIEBAIHN0YXRpYyBpbnQgYnRmX2ZpbmRfZmllbGRfb25lKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZixcXG4gc3RhdGljIGludCBidGZfZmluZF9zdHJ1Y3RfZmllbGQoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLFxcbiBcXHRcXHRcXHRcXHQgY29uc3Qgc3RydWN0IGJ0Zl90eXBlICp0LCB1MzIgZmllbGRfbWFzayxcXG4gXFx0XFx0XFx0XFx0IHN0cnVjdCBidGZfZmllbGRfaW5mbyAqaW5mbywgaW50IGluZm9fY250LFxcbi1cXHRcXHRcXHRcXHQgdTMyIGxldmVsKVxcbitcXHRcXHRcXHRcXHQgdTMyIGxldmVsLCB1MzIgKnNlZW5fbWFzaylcXG4ge1xcbiBcXHRpbnQgcmV0LCBpZHggPSAwO1xcbiBcXHRjb25zdCBzdHJ1Y3QgYnRmX21lbWJlciAqbWVtYmVyO1xcbi1cXHR1MzIgaSwgb2ZmLCBzZWVuX21hc2sgPSAwO1xcbitcXHR1MzIgaSwgb2ZmO1xcbiBcXG4gXFx0Zm9yX2VhY2hfbWVtYmVyKGksIHQsIG1lbWJlcikge1xcbiBcXHRcXHRjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKm1lbWJlcl90eXBlID0gYnRmX3R5cGVfYnlfaWQoYnRmLFxcbkBAIC0zOTEwLDcgKzM5MTAsNyBAQCBzdGF0aWMgaW50IGJ0Zl9maW5kX3N0cnVjdF9maWVsZChjb25zdCBzdHJ1Y3QgYnRmICpidGYsXFxuIFxcbiBcXHRcXHRyZXQgPSBidGZfZmluZF9maWVsZF9vbmUoYnRmLCB0LCBtZW1iZXJfdHlwZSwgaSxcXG4gXFx0XFx0XFx0XFx0XFx0IG9mZiwgMCxcXG4tXFx0XFx0XFx0XFx0XFx0IGZpZWxkX21hc2ssIFxcdTAwMjZzZWVuX21hc2ssXFxuK1xcdFxcdFxcdFxcdFxcdCBmaWVsZF9tYXNrLCBzZWVuX21hc2ssXFxuIFxcdFxcdFxcdFxcdFxcdCBcXHUwMDI2aW5mb1tpZHhdLCBpbmZvX2NudCAtIGlkeCwgbGV2ZWwpO1xcbiBcXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4gXFx0XFx0XFx0cmV0dXJuIHJldDtcXG5AQCAtMzkyMSwxMSArMzkyMSwxMSBAQCBzdGF0aWMgaW50IGJ0Zl9maW5kX3N0cnVjdF9maWVsZChjb25zdCBzdHJ1Y3QgYnRmICpidGYsXFxuIFxcbiBzdGF0aWMgaW50IGJ0Zl9maW5kX2RhdGFzZWNfdmFyKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgY29uc3Qgc3RydWN0IGJ0Zl90eXBlICp0LFxcbiBcXHRcXHRcXHRcXHR1MzIgZmllbGRfbWFzaywgc3RydWN0IGJ0Zl9maWVsZF9pbmZvICppbmZvLFxcbi1cXHRcXHRcXHRcXHRpbnQgaW5mb19jbnQsIHUzMiBsZXZlbClcXG4rXFx0XFx0XFx0XFx0aW50IGluZm9fY250LCB1MzIgbGV2ZWwsIHUzMiAqc2Vlbl9tYXNrKVxcbiB7XFxuIFxcdGludCByZXQsIGlkeCA9IDA7XFxuIFxcdGNvbnN0IHN0cnVjdCBidGZfdmFyX3NlY2luZm8gKnZzaTtcXG4tXFx0dTMyIGksIG9mZiwgc2Vlbl9tYXNrID0gMDtcXG4rXFx0dTMyIGksIG9mZjtcXG4gXFxuIFxcdGZvcl9lYWNoX3ZzaShpLCB0LCB2c2kpIHtcXG4gXFx0XFx0Y29uc3Qgc3RydWN0IGJ0Zl90eXBlICp2YXIgPSBidGZfdHlwZV9ieV9pZChidGYsIHZzaS1cXHUwMDNldHlwZSk7XFxuQEAgLTM5MzMsNyArMzkzMyw3IEBAIHN0YXRpYyBpbnQgYnRmX2ZpbmRfZGF0YXNlY192YXIoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCBjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKnQsXFxuIFxcbiBcXHRcXHRvZmYgPSB2c2ktXFx1MDAzZW9mZnNldDtcXG4gXFx0XFx0cmV0ID0gYnRmX2ZpbmRfZmllbGRfb25lKGJ0ZiwgdmFyLCB2YXJfdHlwZSwgLTEsIG9mZiwgdnNpLVxcdTAwM2VzaXplLFxcbi1cXHRcXHRcXHRcXHRcXHQgZmllbGRfbWFzaywgXFx1MDAyNnNlZW5fbWFzayxcXG4rXFx0XFx0XFx0XFx0XFx0IGZpZWxkX21hc2ssIHNlZW5fbWFzayxcXG4gXFx0XFx0XFx0XFx0XFx0IFxcdTAwMjZpbmZvW2lkeF0sIGluZm9fY250IC0gaWR4LFxcbiBcXHRcXHRcXHRcXHRcXHQgbGV2ZWwpO1xcbiBcXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG5AQCAtMzk0NywxMCArMzk0NywxMiBAQCBzdGF0aWMgaW50IGJ0Zl9maW5kX2ZpZWxkKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgY29uc3Qgc3RydWN0IGJ0Zl90eXBlICp0LFxcbiBcXHRcXHRcXHQgIHUzMiBmaWVsZF9tYXNrLCBzdHJ1Y3QgYnRmX2ZpZWxkX2luZm8gKmluZm8sXFxuIFxcdFxcdFxcdCAgaW50IGluZm9fY250KVxcbiB7XFxuK1xcdHUzMiBzZWVuX21hc2sgPSAwO1xcbitcXG4gXFx0aWYgKF9fYnRmX3R5cGVfaXNfc3RydWN0KHQpKVxcbi1cXHRcXHRyZXR1cm4gYnRmX2ZpbmRfc3RydWN0X2ZpZWxkKGJ0ZiwgdCwgZmllbGRfbWFzaywgaW5mbywgaW5mb19jbnQsIDApO1xcbitcXHRcXHRyZXR1cm4gYnRmX2ZpbmRfc3RydWN0X2ZpZWxkKGJ0ZiwgdCwgZmllbGRfbWFzaywgaW5mbywgaW5mb19jbnQsIDAsIFxcdTAwMjZzZWVuX21hc2spO1xcbiBcXHRlbHNlIGlmIChidGZfdHlwZV9pc19kYXRhc2VjKHQpKVxcbi1cXHRcXHRyZXR1cm4gYnRmX2ZpbmRfZGF0YXNlY192YXIoYnRmLCB0LCBmaWVsZF9tYXNrLCBpbmZvLCBpbmZvX2NudCwgMCk7XFxuK1xcdFxcdHJldHVybiBidGZfZmluZF9kYXRhc2VjX3ZhcihidGYsIHQsIGZpZWxkX21hc2ssIGluZm8sIGluZm9fY250LCAwLCBcXHUwMDI2c2Vlbl9tYXNrKTtcXG4gXFx0cmV0dXJuIC1FSU5WQUw7XFxuIH1cXG4gXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnRmLmNcXG5pbmRleCA2Njg1NWNiZDZiNzNmNi4uMDJjNGM2MGM4NDFlZWYgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnRmLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9idGYuY1xcbkBAIC00MjUwLDYgKzQyNTAsMzIgQEAgc3RhdGljIHN0cnVjdCBidGZfcmF3X3Rlc3QgcmF3X3Rlc3RzW10gPSB7XFxuIFxcdC5tYXhfZW50cmllcyA9IDEsXFxuIH0sXFxuIFxcbisvKiBzdHJ1Y3QgaW5uZXIge1xcbisgKiAgICAgc3RydWN0IGJwZl9zcGluX2xvY2sgbG9jaztcXG4rICogfTtcXG4rICpcXG4rICogc3RydWN0IHZhbHVlIHtcXG4rICogICAgIHN0cnVjdCBicGZfc3Bpbl9sb2NrIGxvY2s7XFxuKyAqICAgICBzdHJ1Y3QgaW5uZXIgbmVzdGVkO1xcbisgKiB9O1xcbisgKi9cXG4re1xcbitcXHQuZGVzY3IgPSBcXFwic3RydWN0IHRlc3QgZHVwbGljYXRlIG5lc3RlZCB1bmlxdWUgZmllbGRzXFxcIixcXG4rXFx0LnJhd190eXBlcyA9IHtcXG4rXFx0XFx0QlRGX1RZUEVfSU5UX0VOQyhOQU1FX1RCRCwgQlRGX0lOVF9TSUdORUQsIDAsIDMyLCA0KSxcXHQvKiBbMV0gKi9cXG4rXFx0XFx0QlRGX1NUUlVDVF9FTkMoTkFNRV9UQkQsIDEsIDQpLFxcdFxcdFxcdFxcdC8qIFsyXSAqL1xcbitcXHRcXHRCVEZfTUVNQkVSX0VOQyhOQU1FX1RCRCwgMSwgMCksXFxuK1xcdFxcdEJURl9TVFJVQ1RfRU5DKE5BTUVfVEJELCAxLCA0KSxcXHRcXHRcXHRcXHQvKiBbM10gKi9cXG4rXFx0XFx0QlRGX01FTUJFUl9FTkMoTkFNRV9UQkQsIDIsIDApLFxcbitcXHRcXHRCVEZfU1RSVUNUX0VOQyhOQU1FX1RCRCwgMiwgOCksXFx0XFx0XFx0XFx0LyogWzRdICovXFxuK1xcdFxcdEJURl9NRU1CRVJfRU5DKE5BTUVfVEJELCAyLCAwKSxcXG4rXFx0XFx0QlRGX01FTUJFUl9FTkMoTkFNRV9UQkQsIDMsIDMyKSxcXG4rXFx0XFx0QlRGX0VORF9SQVcsXFxuK1xcdH0sXFxuK1xcdEJURl9TVFJfU0VDKFxcXCJcXFxcMGludFxcXFwwYnBmX3NwaW5fbG9ja1xcXFwwdmFsXFxcXDBpbm5lclxcXFwwbG9ja1xcXFwwdmFsdWVcXFxcMGxvY2tcXFxcMG5lc3RlZFxcXCIpLFxcbitcXHQuYnRmX2xvYWRfZXJyID0gdHJ1ZSxcXG4rfSxcXG4rXFxuIHtcXG4gXFx0LmRlc2NyID0gXFxcInN0cnVjdCB0ZXN0IHJlcGVhdGVkIGZpZWxkcyBjb3VudCBvdmVyZmxvd1xcXCIsXFxuIFxcdC5yYXdfdHlwZXMgPSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDE1OjA3OjAwLjM3NDM4NzAwMVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTcyMjkzNjA5NjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJidGZfcGFyc2VfZmllbGRzXCIsXG4gICAgXCJidGZfcGFyc2Vfc3RydWN0X21ldGFzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gQlRGIHBhcnNpbmcgd2hlcmUgZHVwbGljYXRlIHVuaXF1ZSBmaWVsZHMgKGxpa2UgYGJwZl9zcGluX2xvY2tgKSBjb3VsZCBiZSBuZXN0ZWQgaW4gc3RydWN0cywgYW5kIHRoZSBgc2Vlbl9tYXNrYCBjaGVjayB3b3VsZG4ndCBjYXRjaCBpdCBiZWNhdXNlIGVhY2ggbGV2ZWwgb2YgbmVzdGluZyBoYWQgaXRzIG93biBgc2Vlbl9tYXNrYC4gUGFzc2luZyBhIHBvaW50ZXIgdG8gYHNlZW5fbWFza2AgZml4ZXMgdGhpcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBCUEYgc3Vic3lzdGVtLCBzcGVjaWZpY2FsbHkgaW4gQlRGIHBhcnNpbmcvdmFsaWRhdGlvbiwgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSB2aWEgdGhlIGBicGYoKWAgc3lzY2FsbCAoZS5nLiwgYEJQRl9CVEZfTE9BRGAgb3IgbWFwIGNyZWF0aW9uKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyYjM5NGZiMDliZWYwZjFlYTYxMTIwY2YwM2M4MmEyNmQyNmQxMmNhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgMTkgMTU6MDY6NTggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2J0Zi5jIGIva2VybmVsL2JwZi9idGYuY1xuaW5kZXggY2JiMWU0OWI5YmNiZjUuLjhkNjI4NTUyZWY5OWViIDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi9idGYuY1xuKysrIGIva2VybmVsL2JwZi9idGYuY1xuQEAgLTM3NTEsNyArMzc1MSw3IEBAIHN0YXRpYyBpbnQgYnRmX3JlcGVhdF9maWVsZHMoc3RydWN0IGJ0Zl9maWVsZF9pbmZvICppbmZvLCBpbnQgaW5mb19jbnQsXG4gc3RhdGljIGludCBidGZfZmluZF9zdHJ1Y3RfZmllbGQoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLFxuIFx0XHRcdFx0IGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdCwgdTMyIGZpZWxkX21hc2ssXG4gXHRcdFx0XHQgc3RydWN0IGJ0Zl9maWVsZF9pbmZvICppbmZvLCBpbnQgaW5mb19jbnQsXG4tXHRcdFx0XHQgdTMyIGxldmVsKTtcbitcdFx0XHRcdCB1MzIgbGV2ZWwsIHUzMiAqc2Vlbl9tYXNrKTtcbiBcbiAvKiBGaW5kIHNwZWNpYWwgZmllbGRzIGluIHRoZSBzdHJ1Y3QgdHlwZSBvZiBhIGZpZWxkLlxuICAqXG5AQCAtMzc2Miw3ICszNzYyLDcgQEAgc3RhdGljIGludCBidGZfZmluZF9zdHJ1Y3RfZmllbGQoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLFxuIHN0YXRpYyBpbnQgYnRmX2ZpbmRfbmVzdGVkX3N0cnVjdChjb25zdCBzdHJ1Y3QgYnRmICpidGYsIGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdCxcbiBcdFx0XHRcdCAgdTMyIG9mZiwgdTMyIG5lbGVtcyxcbiBcdFx0XHRcdCAgdTMyIGZpZWxkX21hc2ssIHN0cnVjdCBidGZfZmllbGRfaW5mbyAqaW5mbyxcbi1cdFx0XHRcdCAgaW50IGluZm9fY250LCB1MzIgbGV2ZWwpXG4rXHRcdFx0XHQgIGludCBpbmZvX2NudCwgdTMyIGxldmVsLCB1MzIgKnNlZW5fbWFzaylcbiB7XG4gXHRpbnQgcmV0LCBlcnIsIGk7XG4gXG5AQCAtMzc3MCw3ICszNzcwLDcgQEAgc3RhdGljIGludCBidGZfZmluZF9uZXN0ZWRfc3RydWN0KGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgY29uc3Qgc3RydWN0IGJ0Zl90eXBlICpcbiBcdGlmIChsZXZlbCBcdTAwM2U9IE1BWF9SRVNPTFZFX0RFUFRIKVxuIFx0XHRyZXR1cm4gLUUyQklHO1xuIFxuLVx0cmV0ID0gYnRmX2ZpbmRfc3RydWN0X2ZpZWxkKGJ0ZiwgdCwgZmllbGRfbWFzaywgaW5mbywgaW5mb19jbnQsIGxldmVsKTtcbitcdHJldCA9IGJ0Zl9maW5kX3N0cnVjdF9maWVsZChidGYsIHQsIGZpZWxkX21hc2ssIGluZm8sIGluZm9fY250LCBsZXZlbCwgc2Vlbl9tYXNrKTtcbiBcbiBcdGlmIChyZXQgXHUwMDNjPSAwKVxuIFx0XHRyZXR1cm4gcmV0O1xuQEAgLTM4MjcsNyArMzgyNyw3IEBAIHN0YXRpYyBpbnQgYnRmX2ZpbmRfZmllbGRfb25lKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZixcbiBcdFx0aWYgKGV4cGVjdGVkX3NpemUgXHUwMDI2XHUwMDI2IGV4cGVjdGVkX3NpemUgIT0gc3ogKiBuZWxlbXMpXG4gXHRcdFx0cmV0dXJuIDA7XG4gXHRcdHJldCA9IGJ0Zl9maW5kX25lc3RlZF9zdHJ1Y3QoYnRmLCB2YXJfdHlwZSwgb2ZmLCBuZWxlbXMsIGZpZWxkX21hc2ssXG4tXHRcdFx0XHRcdCAgICAgXHUwMDI2aW5mb1swXSwgaW5mb19jbnQsIGxldmVsKTtcbitcdFx0XHRcdFx0ICAgICBcdTAwMjZpbmZvWzBdLCBpbmZvX2NudCwgbGV2ZWwsIHNlZW5fbWFzayk7XG4gXHRcdHJldHVybiByZXQ7XG4gXHR9XG4gXG5AQCAtMzg5MiwxMSArMzg5MiwxMSBAQCBzdGF0aWMgaW50IGJ0Zl9maW5kX2ZpZWxkX29uZShjb25zdCBzdHJ1Y3QgYnRmICpidGYsXG4gc3RhdGljIGludCBidGZfZmluZF9zdHJ1Y3RfZmllbGQoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLFxuIFx0XHRcdFx0IGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdCwgdTMyIGZpZWxkX21hc2ssXG4gXHRcdFx0XHQgc3RydWN0IGJ0Zl9maWVsZF9pbmZvICppbmZvLCBpbnQgaW5mb19jbnQsXG4tXHRcdFx0XHQgdTMyIGxldmVsKVxuK1x0XHRcdFx0IHUzMiBsZXZlbCwgdTMyICpzZWVuX21hc2spXG4ge1xuIFx0aW50IHJldCwgaWR4ID0gMDtcbiBcdGNvbnN0IHN0cnVjdCBidGZfbWVtYmVyICptZW1iZXI7XG4tXHR1MzIgaSwgb2ZmLCBzZWVuX21hc2sgPSAwO1xuK1x0dTMyIGksIG9mZjtcbiBcbiBcdGZvcl9lYWNoX21lbWJlcihpLCB0LCBtZW1iZXIpIHtcbiBcdFx0Y29uc3Qgc3RydWN0IGJ0Zl90eXBlICptZW1iZXJfdHlwZSA9IGJ0Zl90eXBlX2J5X2lkKGJ0ZixcbkBAIC0zOTEwLDcgKzM5MTAsNyBAQCBzdGF0aWMgaW50IGJ0Zl9maW5kX3N0cnVjdF9maWVsZChjb25zdCBzdHJ1Y3QgYnRmICpidGYsXG4gXG4gXHRcdHJldCA9IGJ0Zl9maW5kX2ZpZWxkX29uZShidGYsIHQsIG1lbWJlcl90eXBlLCBpLFxuIFx0XHRcdFx0XHQgb2ZmLCAwLFxuLVx0XHRcdFx0XHQgZmllbGRfbWFzaywgXHUwMDI2c2Vlbl9tYXNrLFxuK1x0XHRcdFx0XHQgZmllbGRfbWFzaywgc2Vlbl9tYXNrLFxuIFx0XHRcdFx0XHQgXHUwMDI2aW5mb1tpZHhdLCBpbmZvX2NudCAtIGlkeCwgbGV2ZWwpO1xuIFx0XHRpZiAocmV0IFx1MDAzYyAwKVxuIFx0XHRcdHJldHVybiByZXQ7XG5AQCAtMzkyMSwxMSArMzkyMSwxMSBAQCBzdGF0aWMgaW50IGJ0Zl9maW5kX3N0cnVjdF9maWVsZChjb25zdCBzdHJ1Y3QgYnRmICpidGYsXG4gXG4gc3RhdGljIGludCBidGZfZmluZF9kYXRhc2VjX3Zhcihjb25zdCBzdHJ1Y3QgYnRmICpidGYsIGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdCxcbiBcdFx0XHRcdHUzMiBmaWVsZF9tYXNrLCBzdHJ1Y3QgYnRmX2ZpZWxkX2luZm8gKmluZm8sXG4tXHRcdFx0XHRpbnQgaW5mb19jbnQsIHUzMiBsZXZlbClcbitcdFx0XHRcdGludCBpbmZvX2NudCwgdTMyIGxldmVsLCB1MzIgKnNlZW5fbWFzaylcbiB7XG4gXHRpbnQgcmV0LCBpZHggPSAwO1xuIFx0Y29uc3Qgc3RydWN0IGJ0Zl92YXJfc2VjaW5mbyAqdnNpO1xuLVx0dTMyIGksIG9mZiwgc2Vlbl9tYXNrID0gMDtcbitcdHUzMiBpLCBvZmY7XG4gXG4gXHRmb3JfZWFjaF92c2koaSwgdCwgdnNpKSB7XG4gXHRcdGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdmFyID0gYnRmX3R5cGVfYnlfaWQoYnRmLCB2c2ktXHUwMDNldHlwZSk7XG5AQCAtMzkzMyw3ICszOTMzLDcgQEAgc3RhdGljIGludCBidGZfZmluZF9kYXRhc2VjX3Zhcihjb25zdCBzdHJ1Y3QgYnRmICpidGYsIGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdCxcbiBcbiBcdFx0b2ZmID0gdnNpLVx1MDAzZW9mZnNldDtcbiBcdFx0cmV0ID0gYnRmX2ZpbmRfZmllbGRfb25lKGJ0ZiwgdmFyLCB2YXJfdHlwZSwgLTEsIG9mZiwgdnNpLVx1MDAzZXNpemUsXG4tXHRcdFx0XHRcdCBmaWVsZF9tYXNrLCBcdTAwMjZzZWVuX21hc2ssXG4rXHRcdFx0XHRcdCBmaWVsZF9tYXNrLCBzZWVuX21hc2ssXG4gXHRcdFx0XHRcdCBcdTAwMjZpbmZvW2lkeF0sIGluZm9fY250IC0gaWR4LFxuIFx0XHRcdFx0XHQgbGV2ZWwpO1xuIFx0XHRpZiAocmV0IFx1MDAzYyAwKVxuQEAgLTM5NDcsMTAgKzM5NDcsMTIgQEAgc3RhdGljIGludCBidGZfZmluZF9maWVsZChjb25zdCBzdHJ1Y3QgYnRmICpidGYsIGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdCxcbiBcdFx0XHQgIHUzMiBmaWVsZF9tYXNrLCBzdHJ1Y3QgYnRmX2ZpZWxkX2luZm8gKmluZm8sXG4gXHRcdFx0ICBpbnQgaW5mb19jbnQpXG4ge1xuK1x0dTMyIHNlZW5fbWFzayA9IDA7XG4rXG4gXHRpZiAoX19idGZfdHlwZV9pc19zdHJ1Y3QodCkpXG4tXHRcdHJldHVybiBidGZfZmluZF9zdHJ1Y3RfZmllbGQoYnRmLCB0LCBmaWVsZF9tYXNrLCBpbmZvLCBpbmZvX2NudCwgMCk7XG4rXHRcdHJldHVybiBidGZfZmluZF9zdHJ1Y3RfZmllbGQoYnRmLCB0LCBmaWVsZF9tYXNrLCBpbmZvLCBpbmZvX2NudCwgMCwgXHUwMDI2c2Vlbl9tYXNrKTtcbiBcdGVsc2UgaWYgKGJ0Zl90eXBlX2lzX2RhdGFzZWModCkpXG4tXHRcdHJldHVybiBidGZfZmluZF9kYXRhc2VjX3ZhcihidGYsIHQsIGZpZWxkX21hc2ssIGluZm8sIGluZm9fY250LCAwKTtcbitcdFx0cmV0dXJuIGJ0Zl9maW5kX2RhdGFzZWNfdmFyKGJ0ZiwgdCwgZmllbGRfbWFzaywgaW5mbywgaW5mb19jbnQsIDAsIFx1MDAyNnNlZW5fbWFzayk7XG4gXHRyZXR1cm4gLUVJTlZBTDtcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnRmLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9idGYuY1xuaW5kZXggNjY4NTVjYmQ2YjczZjYuLjAyYzRjNjBjODQxZWVmIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnRmLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zi5jXG5AQCAtNDI1MCw2ICs0MjUwLDMyIEBAIHN0YXRpYyBzdHJ1Y3QgYnRmX3Jhd190ZXN0IHJhd190ZXN0c1tdID0ge1xuIFx0Lm1heF9lbnRyaWVzID0gMSxcbiB9LFxuIFxuKy8qIHN0cnVjdCBpbm5lciB7XG4rICogICAgIHN0cnVjdCBicGZfc3Bpbl9sb2NrIGxvY2s7XG4rICogfTtcbisgKlxuKyAqIHN0cnVjdCB2YWx1ZSB7XG4rICogICAgIHN0cnVjdCBicGZfc3Bpbl9sb2NrIGxvY2s7XG4rICogICAgIHN0cnVjdCBpbm5lciBuZXN0ZWQ7XG4rICogfTtcbisgKi9cbit7XG4rXHQuZGVzY3IgPSBcInN0cnVjdCB0ZXN0IGR1cGxpY2F0ZSBuZXN0ZWQgdW5pcXVlIGZpZWxkc1wiLFxuK1x0LnJhd190eXBlcyA9IHtcbitcdFx0QlRGX1RZUEVfSU5UX0VOQyhOQU1FX1RCRCwgQlRGX0lOVF9TSUdORUQsIDAsIDMyLCA0KSxcdC8qIFsxXSAqL1xuK1x0XHRCVEZfU1RSVUNUX0VOQyhOQU1FX1RCRCwgMSwgNCksXHRcdFx0XHQvKiBbMl0gKi9cbitcdFx0QlRGX01FTUJFUl9FTkMoTkFNRV9UQkQsIDEsIDApLFxuK1x0XHRCVEZfU1RSVUNUX0VOQyhOQU1FX1RCRCwgMSwgNCksXHRcdFx0XHQvKiBbM10gKi9cbitcdFx0QlRGX01FTUJFUl9FTkMoTkFNRV9UQkQsIDIsIDApLFxuK1x0XHRCVEZfU1RSVUNUX0VOQyhOQU1FX1RCRCwgMiwgOCksXHRcdFx0XHQvKiBbNF0gKi9cbitcdFx0QlRGX01FTUJFUl9FTkMoTkFNRV9UQkQsIDIsIDApLFxuK1x0XHRCVEZfTUVNQkVSX0VOQyhOQU1FX1RCRCwgMywgMzIpLFxuK1x0XHRCVEZfRU5EX1JBVyxcbitcdH0sXG4rXHRCVEZfU1RSX1NFQyhcIlxcMGludFxcMGJwZl9zcGluX2xvY2tcXDB2YWxcXDBpbm5lclxcMGxvY2tcXDB2YWx1ZVxcMGxvY2tcXDBuZXN0ZWRcIiksXG4rXHQuYnRmX2xvYWRfZXJyID0gdHJ1ZSxcbit9LFxuK1xuIHtcbiBcdC5kZXNjciA9IFwic3RydWN0IHRlc3QgcmVwZWF0ZWQgZmllbGRzIGNvdW50IG92ZXJmbG93XCIsXG4gXHQucmF3X3R5cGVzID0ge1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMTU6MDc6MDAuMzc0Mzg4ODMxWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjkzNTI2Mzg4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBLZXJuZWwgQlRGIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBhZmZlY3RpbmcgdGhlIGtlcm5lbCwgc3BlY2lmaWNhbGx5IHdpdGhpbiBga2VybmVsL2JwZi9idGYuY2AuIEl0IGxvb2tzIGxpa2UgdGhleSd2ZSBtb2RpZmllZCB0aGUgc2lnbmF0dXJlcyBvZiBgYnRmX2ZpbmRfc3RydWN0X2ZpZWxkYCwgYGJ0Zl9maW5kX25lc3RlZF9zdHJ1Y3RgLCBhbmQgYGJ0Zl9maW5kX2RhdGFzZWNfdmFyYC4gVGhleSd2ZSBzd2l0Y2hlZCBmcm9tIGxvY2FsIGBzZWVuX21hc2tgIHZhcmlhYmxlcyB0byBwYXNzaW5nIGEgYHUzMiAqc2Vlbl9tYXNrYCBwb2ludGVyLiBBaCwgcmlnaHQsIEkgc2VlLiBUaGlzIGlzIHRvIGFkZHJlc3MgYSBwcm9ibGVtIHdpdGggZHVwbGljYXRlIHVuaXF1ZSBmaWVsZHMsIGxpa2UgYSBgYnBmX3NwaW5fbG9ja2AsIGdldHRpbmcgbmVzdGVkIHdpdGhpbiBzdHJ1Y3RzLiBUaGUgb3JpZ2luYWwgaW1wbGVtZW50YXRpb24sIHdpdGggaXRzIGxvY2FsIG1hc2tzLCB3b3VsZG4ndCBjYXRjaCB0aGVzZSBkdXBsaWNhdGVzIGFjcm9zcyBtdWx0aXBsZSBsZXZlbHMgb2YgbmVzdGluZy4gQnkgc2hhcmluZyB0aGUgYHNlZW5fbWFza2AgcG9pbnRlciwgdGhleSdyZSBlbnN1cmluZyB0aGF0IHRoZSB3aG9sZSBoaWVyYXJjaHkgaXMgY2hlY2tlZCwgd2hpY2ggbWFrZXMgc2Vuc2UuXG5cblNvLCBmdW5jdGlvbmFsbHksIHRoaXMgaXMgYSBjaGFuZ2Ugd2l0aGluIHRoZSBCUEYgc3Vic3lzdGVtLCBhbmQsIG1vcmUgcHJlY2lzZWx5LCByZWxhdGVkIHRvIEJURiBwYXJzaW5nIGFuZCB2YWxpZGF0aW9uLiBEZWZpbml0ZWx5IHNvbWV0aGluZyB3ZSBuZWVkIHRvIGNvbnNpZGVyIGZvciBmdXp6aW5nLiBHaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBjaGFuZ2UsIGl0J3MgZWFzaWx5IHJlYWNoYWJsZSwgc28gd2Ugc2hvdWxkIGZvY3VzIHNvbWUgYXR0ZW50aW9uIGhlcmUuXG5cbk5vdywgbGV0J3MgbmFpbCBkb3duIHRoZSBzcGVjaWZpYyBmdW5jdGlvbnMgd2UgbmVlZCB0byBmb2N1cyBvbiBmb3IgZnV6emluZy4gV2UgaGF2ZSB0aG9zZSBwcmltYXJ5IGZ1bmN0aW9uczogYGJ0Zl9maW5kX3N0cnVjdF9maWVsZGAsIGBidGZfZmluZF9uZXN0ZWRfc3RydWN0YCwgYW5kIGBidGZfZmluZF9kYXRhc2VjX3ZhcmAsIGFuZCBgYnRmX2ZpbmRfZmllbGRfb25lYCwgYW5kIGBidGZfZmluZF9maWVsZGAuIE5leHQgc3RlcCwgSSBuZWVkIHRvIGNoZWNrIGlmIHRoZXkncmUgc3RhdGljIG9yIGV4cG9ydGVkLiBMZXQncyBzZWUuLi4gYGJ0Zl9maW5kX3N0cnVjdF9maWVsZGAgaXMgc3RhdGljLiBTYW1lIGZvciBgYnRmX2ZpbmRfbmVzdGVkX3N0cnVjdGAgYW5kIGBidGZfZmluZF9kYXRhc2VjX3ZhcmAuIE5vdywgYGJ0Zl9maW5kX2ZpZWxkYC4uLiBIYW5nIG9uLCBJIHRoaW5rIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCBsYXN0IG9uZS4gTGV0J3MgZ28gbG9vayBhdCBga2VybmVsL2JwZi9idGYuY2AgZGlyZWN0bHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4NDQsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNjMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQxNTowNzowNy4zMDk2NTQ4NTZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkxMTI4MjQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJ0Zl9maW5kX2ZpZWxkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvYnRmLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9idGYuYz0zNzYyPXN0YXRpYyBpbnQgYnRmX2ZpbmRfbmVzdGVkX3N0cnVjdChjb25zdCBzdHJ1Y3QgYnRmICpidGYsIGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdCxcXG4tLVxcbmtlcm5lbC9icGYvYnRmLmMtMzc5NC1cXG5rZXJuZWwvYnBmL2J0Zi5jOjM3OTU6c3RhdGljIGludCBidGZfZmluZF9maWVsZF9vbmUoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLFxcbmtlcm5lbC9icGYvYnRmLmMtMzc5Ni1cXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKnZhcixcXG4tLVxcbmtlcm5lbC9icGYvYnRmLmM9Mzg5Mj1zdGF0aWMgaW50IGJ0Zl9maW5kX3N0cnVjdF9maWVsZChjb25zdCBzdHJ1Y3QgYnRmICpidGYsXFxuLS1cXG5rZXJuZWwvYnBmL2J0Zi5jLTM5MTAtXFxua2VybmVsL2JwZi9idGYuYzozOTExOlxcdFxcdHJldCA9IGJ0Zl9maW5kX2ZpZWxkX29uZShidGYsIHQsIG1lbWJlcl90eXBlLCBpLFxcbmtlcm5lbC9icGYvYnRmLmMtMzkxMi1cXHRcXHRcXHRcXHRcXHQgb2ZmLCAwLFxcbi0tXFxua2VybmVsL2JwZi9idGYuYz0zOTIyPXN0YXRpYyBpbnQgYnRmX2ZpbmRfZGF0YXNlY192YXIoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCBjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKnQsXFxuLS1cXG5rZXJuZWwvYnBmL2J0Zi5jLTM5MzQtXFx0XFx0b2ZmID0gdnNpLVxcdTAwM2VvZmZzZXQ7XFxua2VybmVsL2JwZi9idGYuYzozOTM1OlxcdFxcdHJldCA9IGJ0Zl9maW5kX2ZpZWxkX29uZShidGYsIHZhciwgdmFyX3R5cGUsIC0xLCBvZmYsIHZzaS1cXHUwMDNlc2l6ZSxcXG5rZXJuZWwvYnBmL2J0Zi5jLTM5MzYtXFx0XFx0XFx0XFx0XFx0IGZpZWxkX21hc2ssIHNlZW5fbWFzayxcXG4tLVxcbmtlcm5lbC9icGYvYnRmLmMtMzk0NS1cXG5rZXJuZWwvYnBmL2J0Zi5jOjM5NDY6c3RhdGljIGludCBidGZfZmluZF9maWVsZChjb25zdCBzdHJ1Y3QgYnRmICpidGYsIGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdCxcXG5rZXJuZWwvYnBmL2J0Zi5jLTM5NDctXFx0XFx0XFx0ICB1MzIgZmllbGRfbWFzaywgc3RydWN0IGJ0Zl9maWVsZF9pbmZvICppbmZvLFxcbi0tXFxua2VybmVsL2JwZi9idGYuYz00MTIwPXN0cnVjdCBidGZfcmVjb3JkICpidGZfcGFyc2VfZmllbGRzKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgY29uc3Qgc3RydWN0IGJ0Zl90eXBlICp0LFxcbi0tXFxua2VybmVsL2JwZi9idGYuYy00MTI3LVxcbmtlcm5lbC9icGYvYnRmLmM6NDEyODpcXHRyZXQgPSBidGZfZmluZF9maWVsZChidGYsIHQsIGZpZWxkX21hc2ssIGluZm9fYXJyLCBBUlJBWV9TSVpFKGluZm9fYXJyKSk7XFxua2VybmVsL2JwZi9idGYuYy00MTI5LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQxNTowNzowNy41MDA3OTA3NTJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTAyOTM3Mjk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIEJURiBGaWVsZCBQYXJzaW5nIExvZ2ljKipcblxuUmlnaHQsIGxldCdzIHRyYWNlIHRoaXMuIGBidGZfcGFyc2VfZmllbGRzYCBpcyBjbGVhcmx5IHRoZSB3b3JraG9yc2UgZm9yIHBhcnNpbmcgZmllbGRzIGluIHRoZSBCVEYgKEJQRiBUeXBlIEZvcm1hdCkgZGF0YS4gQW5kIGl0IHNlZW1zIHRvIGxldmVyYWdlIGBidGZfZmluZF9maWVsZGAgYXMgYSBoZWxwZXIgZnVuY3Rpb24uIFRoZSBuYXR1cmFsIG5leHQgc3RlcCBpcyB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIHRoZSBjYWxsaW5nIGZ1bmN0aW9uLiBTbywgSSBuZWVkIHRvIHBpbnBvaW50IGV2ZXJ5d2hlcmUgYGJ0Zl9wYXJzZV9maWVsZHNgIGlzIGludm9rZWQgd2l0aGluIHRoZSBjb2RlYmFzZS4gS25vd2luZyB3aGVyZSBpdCdzIHVzZWQgaXMgY3J1Y2lhbCB0byB1bmRlcnN0YW5kaW5nIHRoZSBkaWZmZXJlbnQgc2NlbmFyaW9zIGFuZCBkYXRhIHN0cnVjdHVyZXMgaXQgb3BlcmF0ZXMgb24uIFRoaXMgd2lsbCBleHBvc2UgdGhlIGxhcmdlciBhcmNoaXRlY3R1cmUgb2YgaG93IHRoZSBCVEYgZGF0YSBpcyBwcm9jZXNzZWQgYW5kIGludGVycHJldGVkIGJ5IHRoZSBCUEYgaW5mcmFzdHJ1Y3R1cmUuIExldCdzIHNlZSB3aGVyZSB0aG9zZSBjYWxscyBhcmUgbWFkZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTI5NywiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDE1OjA3OjEwLjQwMzcyOTY1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3MDQ2MzE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJ0Zl9wYXJzZV9maWVsZHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9idGYuYz00MTA4PXN0YXRpYyBpbnQgYnRmX2ZpZWxkX2NtcChjb25zdCB2b2lkICpfYSwgY29uc3Qgdm9pZCAqX2IsIGNvbnN0IHZvaWQgKnByaXYpXFxuLS1cXG5rZXJuZWwvYnBmL2J0Zi5jLTQxMTktXFxua2VybmVsL2JwZi9idGYuYzo0MTIwOnN0cnVjdCBidGZfcmVjb3JkICpidGZfcGFyc2VfZmllbGRzKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgY29uc3Qgc3RydWN0IGJ0Zl90eXBlICp0LFxcbmtlcm5lbC9icGYvYnRmLmMtNDEyMS1cXHRcXHRcXHRcXHQgICAgdTMyIGZpZWxkX21hc2ssIHUzMiB2YWx1ZV9zaXplKVxcbi0tXFxua2VybmVsL2JwZi9idGYuYz01NzgwPWJ0Zl9wYXJzZV9zdHJ1Y3RfbWV0YXMoc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZywgc3RydWN0IGJ0ZiAqYnRmKVxcbi0tXFxua2VybmVsL2JwZi9idGYuYy01ODgwLVxcdFxcdHR5cGUtXFx1MDAzZWJ0Zl9pZCA9IGk7XFxua2VybmVsL2JwZi9idGYuYzo1ODgxOlxcdFxcdHJlY29yZCA9IGJ0Zl9wYXJzZV9maWVsZHMoYnRmLCB0LCBCUEZfU1BJTl9MT0NLIHwgQlBGX1JFU19TUElOX0xPQ0sgfCBCUEZfTElTVF9IRUFEIHwgQlBGX0xJU1RfTk9ERSB8XFxua2VybmVsL2JwZi9idGYuYy01ODgyLVxcdFxcdFxcdFxcdFxcdFxcdCAgQlBGX1JCX1JPT1QgfCBCUEZfUkJfTk9ERSB8IEJQRl9SRUZDT1VOVCB8XFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz03NjA9Ym9vbCBidGZfcmVjb3JkX2VxdWFsKGNvbnN0IHN0cnVjdCBidGZfcmVjb3JkICpyZWNfYSwgY29uc3Qgc3RydWN0IGJ0Zl9yZWNvcmQgKnJlY19iKVxcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtNzcxLVxcdHNpemUgPSBzdHJ1Y3Rfc2l6ZShyZWNfYSwgZmllbGRzLCByZWNfYS1cXHUwMDNlY250KTtcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzo3NzI6XFx0LyogYnRmX3BhcnNlX2ZpZWxkcyB1c2VzIGt6YWxsb2MgdG8gYWxsb2NhdGUgYSBidGZfcmVjb3JkLCBzbyB1bnVzZWRcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy03NzMtXFx0ICogbWVtYmVycyBhcmUgemVyb2VkIG91dC4gU28gbWVtY21wIGlzIHNhZmUgdG8gZG8gd2l0aG91dCB3b3JyeWluZ1xcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmM9MTI0Mz1zdGF0aWMgaW50IG1hcF9jaGVja19idGYoc3RydWN0IGJwZl9tYXAgKm1hcCwgc3RydWN0IGJwZl90b2tlbiAqdG9rZW4sXFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xMjY0LVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjEyNjU6XFx0bWFwLVxcdTAwM2VyZWNvcmQgPSBidGZfcGFyc2VfZmllbGRzKGJ0ZiwgdmFsdWVfdHlwZSxcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xMjY2LVxcdFxcdFxcdFxcdCAgICAgICBCUEZfU1BJTl9MT0NLIHwgQlBGX1JFU19TUElOX0xPQ0sgfCBCUEZfVElNRVIgfCBCUEZfS1BUUiB8IEJQRl9MSVNUX0hFQUQgfFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQxNTowNzoxMC40NjA3ODAzOTlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODg4NzgyMTA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYnRmX3BhcnNlX2ZpZWxkcyBGdW5jdGlvbioqXG5cbk9rYXksIHNvIGBidGZfcGFyc2VfZmllbGRzYCBpcyBkZWZpbml0ZWx5IHNpZ25pZmljYW50OyBpdCBzZWVtcyB0byBiZSBleHBvcnRlZCBvciwgYXQgdGhlIHZlcnkgbGVhc3QsIGFjdGl2ZWx5IHVzZWQgYWNyb3NzIG11bHRpcGxlIGZpbGVzIHdpdGhpbiBga2VybmVsL2JwZi9gLiBUaGlzIHdhcnJhbnRzIGNsb3NlciBpbnNwZWN0aW9uLiBNeSBpbW1lZGlhdGUgdGhvdWdodHMgYXJlIHRvIHRyYWNlIGl0cyB1c2FnZS5cblxuQWhhISBJdCdzIGNhbGxlZCBmcm9tIGBtYXBfY2hlY2tfYnRmYCB3aXRoaW4gYGtlcm5lbC9icGYvc3lzY2FsbC5jYCBhbmQgYWxzbyBmcm9tIGBidGZfcGFyc2Vfc3RydWN0X21ldGFzYCBpbiBga2VybmVsL2JwZi9idGYuY2AuIFRoYXQgZ2l2ZXMgbWUgYSBmZXcgc29saWQgc3RhcnRpbmcgcG9pbnRzIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUuXG5cbk5vdywgd2hpY2ggZnVuY3Rpb25zIGhhdmUgYmVlbiBtb2RpZmllZD8gTG9va3MgbGlrZSB0aGUgY2hhbmdlcyBhcmUgY29uY2VudHJhdGVkIG9uOlxuKiAgIGBidGZfZmluZF9zdHJ1Y3RfZmllbGRgXG4qICAgYGJ0Zl9maW5kX25lc3RlZF9zdHJ1Y3RgXG4qICAgYGJ0Zl9maW5kX2RhdGFzZWNfdmFyYFxuKiAgIGBidGZfZmluZF9maWVsZF9vbmVgXG4qICAgYGJ0Zl9maW5kX2ZpZWxkYFxuXG5JbnRlcmVzdGluZy4gVGhlc2UgYXJlIGFsbCBzdGF0aWMgZnVuY3Rpb25zLCBhbmQgdGhleSdyZSBhbGwgZGVmaW5lZCB3aXRoaW4gYGtlcm5lbC9icGYvYnRmLmNgLiBTbywgdGhleSdyZSBwcm9iYWJseSBoZWxwZXIgZnVuY3Rpb25zIHdpdGhpbiB0aGUgc2FtZSBtb2R1bGUsIHdoaWNoIGlzIGNvbW1vbiBpbiBjb2RlYmFzZXMuXG5cbldpdGggdGhpcyB1bmRlcnN0YW5kaW5nLCBJIGNhbiBzZWUgaG93IEkgY291bGQgemVybyBpbiBvbiBgYnRmX3BhcnNlX2ZpZWxkc2AgdG8gZmluZCBvdXQgd2hhdCBpdCBkb2VzIGluIGRldGFpbC4gSSBjb3VsZCBhbHNvIGludmVzdGlnYXRlIGBidGZfcGFyc2Vfc3RydWN0X21ldGFzYCwgb3IgcGVyaGFwcyBldmVuIGxvb2sgYXQgYG1hcF9jaGVja19idGZgIHdoaWNoIGNhbGxzIGBidGZfcGFyc2VfZmllbGRzYC4gTXkgZmlyc3Qgc3RlcCwgdGhvdWdoLCBpcyB0byBjb25maXJtIHdoZXRoZXIgYGJ0Zl9wYXJzZV9maWVsZHNgIGlzIGV4cG9ydGVkLCBhcyBpdCBtaWdodCBpbmZvcm0gaG93IEkgc2hvdWxkIGxvb2sgYXQgdGhlIGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxNDcsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMTU6MDc6MTUuMzQ5NTY1MjA2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5ODQ1MTk5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJFWFBPUlRfU1lNQk9MLipidGZfcGFyc2VfZmllbGRzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQxNTowNzoxNS40MDk0MTg2ODVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjYzMzMxMDExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqQW5hbHl6aW5nIEtlcm5lbCBGdW5jdGlvbiBTY29wZSoqXG5cblJpZ2h0LCBzbyB0aGlzIGZ1bmN0aW9uIGlzbid0IGJlaW5nIGV4cGxpY2l0bHkgZXhwb3J0ZWQgdG8gYW55IHBhcnRpY3VsYXIgbW9kdWxlOyBpdCdzIGhhbmdpbmcgb3V0IGdsb2JhbGx5LCB3aXRoaW4gdGhlIGtlcm5lbCBpdHNlbGYsIGJ1dCBpdCdzICpub3QqIHN0YXRpYywgd2hpY2ggZ2l2ZXMgaXQgYSBkaWZmZXJlbnQgY29ubm90YXRpb24uIFRoYXQncyBpbnRlcmVzdGluZywgYW5kIGl0IHN1Z2dlc3RzIHBvdGVudGlhbCBhY2Nlc3NpYmlsaXR5IGZyb20gZGlmZmVyZW50IHBhcnRzIG9mIHRoZSBrZXJuZWwuIFRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIHNjb3BlLCBteSBuZXh0IHN0ZXAgaXMgY2xlYXIuIEkgbmVlZCB0byBkaXZlIHN0cmFpZ2h0IGludG8gdGhlIGRlZmluaXRpb24gb2YgYGJ0Zl9wYXJzZV9maWVsZHNgLiBVbmRlcnN0YW5kaW5nICpob3cqIGl0J3MgZGVmaW5lZCB3aWxsIHNoZWQgbGlnaHQgb24gd2hlcmUgYW5kIGhvdyBpdCdzIGludGVuZGVkIHRvIGJlIHVzZWQgYW5kLCBjb25zZXF1ZW50bHksIGl0cyBicm9hZGVyIGltcGFjdCB3aXRoaW4gdGhlIGtlcm5lbCdzIGFyY2hpdGVjdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Njc3OSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDE1OjA3OjE4LjY3Mjc1MTU4NloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTk3NzQ3MjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RydWN0IGJ0Zl9yZWNvcmQgXFxcXCpidGZfcGFyc2VfZmllbGRzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvYnRmLmM9NDEwOD1zdGF0aWMgaW50IGJ0Zl9maWVsZF9jbXAoY29uc3Qgdm9pZCAqX2EsIGNvbnN0IHZvaWQgKl9iLCBjb25zdCB2b2lkICpwcml2KVxcbi0tXFxua2VybmVsL2JwZi9idGYuYy00MTE5LVxcbmtlcm5lbC9icGYvYnRmLmM6NDEyMDpzdHJ1Y3QgYnRmX3JlY29yZCAqYnRmX3BhcnNlX2ZpZWxkcyhjb25zdCBzdHJ1Y3QgYnRmICpidGYsIGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdCxcXG5rZXJuZWwvYnBmL2J0Zi5jLTQxMjEtXFx0XFx0XFx0XFx0ICAgIHUzMiBmaWVsZF9tYXNrLCB1MzIgdmFsdWVfc2l6ZSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMTU6MDc6MTguNzMyNTMyNTE1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5NjgxMzYzMTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipJbml0aWFsIEFzc2Vzc21lbnQ6IE5hdmlnYXRpbmcgQlRGIENvZGUqKlxuXG5SaWdodCwgc28gdGhpcyBpc24ndCBhIHNpbXBsZSwgdW5jaGFuZ2luZyBzaXR1YXRpb247IHRoZXJlJ3Mgc29tZSBkeW5hbWljIGFzcGVjdCB0byB0aGlzIHByb2JsZW0uIFRoYXQgc3VnZ2VzdHMgd2UgY2FuJ3QganVzdCBsb29rIGluIG9uZSBwbGFjZSBhbmQgYmUgZG9uZSB3aXRoIGl0LiBUaGUgdmFyaWFiaWxpdHkgbWVhbnMgd2UgbmVlZCB0byBkcmlsbCBkb3duIGFuZCB1bmRlcnN0YW5kIHRoZSBmbG93LiBNeSBpbnN0aW5jdCBpcyB0aGF0IHRoZXJlIGFyZSBhIGZldyBrZXkgZnVuY3Rpb25zIHRvIGV4YW1pbmUuIEZpcnN0LCBgYnRmX3BhcnNlX2ZpZWxkc2AgLSB0aGF0IGZlZWxzIGxpa2UgYSBnb29kIGNlbnRyYWwgcG9pbnQsIGxpa2UgYSBcImZvY3VzIHN5bWJvbFwiIGZvciB3aGVyZSB3ZSBjYW4gemVybyBpbiBvbiB0aGUgcmVsZXZhbnQgZnVuY3Rpb25hbGl0eS4gQWRkaXRpb25hbGx5LCBJIHRoaW5rIGBidGZfcGFyc2Vfc3RydWN0X21ldGFzYCBjb3VsZCBvZmZlciBzb21lIHZhbHVhYmxlIGNvbnRleHQuIEFub3RoZXIgbGlrZWx5IGNhbmRpZGF0ZSBzZWVtcyB0byBiZSBgbWFwX2NoZWNrX2J0ZmAuIFJpZ2h0LCBsZXQncyBzdGFydCBieSBjaGVja2luZyBgbWFwX2NoZWNrX2J0ZmAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcxNTQsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQxNTowNzoyMi43MDA2NzExMjFaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5MjgxMDk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hcF9jaGVja19idGZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9hcmVuYS5jPTQwMj1zdGF0aWMgbG9uZyBhcmVuYV9tYXBfdXBkYXRlX2VsZW0oc3RydWN0IGJwZl9tYXAgKm1hcCwgdm9pZCAqa2V5LFxcbi0tXFxua2VybmVsL2JwZi9hcmVuYS5jLTQwNy1cXG5rZXJuZWwvYnBmL2FyZW5hLmM6NDA4OnN0YXRpYyBpbnQgYXJlbmFfbWFwX2NoZWNrX2J0ZihzdHJ1Y3QgYnBmX21hcCAqbWFwLCBjb25zdCBzdHJ1Y3QgYnRmICpidGYsXFxua2VybmVsL2JwZi9hcmVuYS5jLTQwOS1cXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IGJ0Zl90eXBlICprZXlfdHlwZSwgY29uc3Qgc3RydWN0IGJ0Zl90eXBlICp2YWx1ZV90eXBlKVxcbi0tXFxua2VybmVsL2JwZi9hcmVuYS5jPTYzMT1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgYXJlbmFfbWFwX29wcyA9IHtcXG4tLVxcbmtlcm5lbC9icGYvYXJlbmEuYy02NDQtXFx0Lm1hcF9kZWxldGVfZWxlbSA9IGFyZW5hX21hcF9kZWxldGVfZWxlbSxcXG5rZXJuZWwvYnBmL2FyZW5hLmM6NjQ1OlxcdC5tYXBfY2hlY2tfYnRmID0gYXJlbmFfbWFwX2NoZWNrX2J0ZixcXG5rZXJuZWwvYnBmL2FyZW5hLmMtNjQ2LVxcdC5tYXBfbWVtX3VzYWdlID0gYXJlbmFfbWFwX21lbV91c2FnZSxcXG4tLVxcbmtlcm5lbC9icGYvYXJyYXltYXAuYz01MjY9c3RhdGljIHZvaWQgcGVyY3B1X2FycmF5X21hcF9zZXFfc2hvd19lbGVtKHN0cnVjdCBicGZfbWFwICptYXAsIHZvaWQgKmtleSxcXG4tLVxcbmtlcm5lbC9icGYvYXJyYXltYXAuYy01NDgtXFxua2VybmVsL2JwZi9hcnJheW1hcC5jOjU0OTpzdGF0aWMgaW50IGFycmF5X21hcF9jaGVja19idGYoc3RydWN0IGJwZl9tYXAgKm1hcCxcXG5rZXJuZWwvYnBmL2FycmF5bWFwLmMtNTUwLVxcdFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgYnRmICpidGYsXFxuLS1cXG5rZXJuZWwvYnBmL2FycmF5bWFwLmM9ODAxPWNvbnN0IHN0cnVjdCBicGZfbWFwX29wcyBhcnJheV9tYXBfb3BzID0ge1xcbi0tXFxua2VybmVsL2JwZi9hcnJheW1hcC5jLTgxNS1cXHQubWFwX3NlcV9zaG93X2VsZW0gPSBhcnJheV9tYXBfc2VxX3Nob3dfZWxlbSxcXG5rZXJuZWwvYnBmL2FycmF5bWFwLmM6ODE2OlxcdC5tYXBfY2hlY2tfYnRmID0gYXJyYXlfbWFwX2NoZWNrX2J0ZixcXG5rZXJuZWwvYnBmL2FycmF5bWFwLmMtODE3LVxcdC5tYXBfbG9va3VwX2JhdGNoID0gZ2VuZXJpY19tYXBfbG9va3VwX2JhdGNoLFxcbi0tXFxua2VybmVsL2JwZi9hcnJheW1hcC5jPTgyNz1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgcGVyY3B1X2FycmF5X21hcF9vcHMgPSB7XFxuLS1cXG5rZXJuZWwvYnBmL2FycmF5bWFwLmMtODM4LVxcdC5tYXBfc2VxX3Nob3dfZWxlbSA9IHBlcmNwdV9hcnJheV9tYXBfc2VxX3Nob3dfZWxlbSxcXG5rZXJuZWwvYnBmL2FycmF5bWFwLmM6ODM5OlxcdC5tYXBfY2hlY2tfYnRmID0gYXJyYXlfbWFwX2NoZWNrX2J0ZixcXG5rZXJuZWwvYnBmL2FycmF5bWFwLmMtODQwLVxcdC5tYXBfbG9va3VwX2JhdGNoID0gZ2VuZXJpY19tYXBfbG9va3VwX2JhdGNoLFxcbi0tXFxua2VybmVsL2JwZi9hcnJheW1hcC5jPTEzMjI9Y29uc3Qgc3RydWN0IGJwZl9tYXBfb3BzIHBlcmZfZXZlbnRfYXJyYXlfbWFwX29wcyA9IHtcXG4tLVxcbmtlcm5lbC9icGYvYXJyYXltYXAuYy0xMzMyLVxcdC5tYXBfcmVsZWFzZSA9IHBlcmZfZXZlbnRfZmRfYXJyYXlfcmVsZWFzZSxcXG5rZXJuZWwvYnBmL2FycmF5bWFwLmM6MTMzMzpcXHQubWFwX2NoZWNrX2J0ZiA9IG1hcF9jaGVja19ub19idGYsXFxua2VybmVsL2JwZi9hcnJheW1hcC5jLTEzMzQtXFx0Lm1hcF9tZW1fdXNhZ2UgPSBhcnJheV9tYXBfbWVtX3VzYWdlLFxcbi0tXFxua2VybmVsL2JwZi9hcnJheW1hcC5jPTEzNTg9Y29uc3Qgc3RydWN0IGJwZl9tYXBfb3BzIGNncm91cF9hcnJheV9tYXBfb3BzID0ge1xcbi0tXFxua2VybmVsL2JwZi9hcnJheW1hcC5jLTEzNjctXFx0Lm1hcF9mZF9wdXRfcHRyID0gY2dyb3VwX2ZkX2FycmF5X3B1dF9wdHIsXFxua2VybmVsL2JwZi9hcnJheW1hcC5jOjEzNjg6XFx0Lm1hcF9jaGVja19idGYgPSBtYXBfY2hlY2tfbm9fYnRmLFxcbmtlcm5lbC9icGYvYXJyYXltYXAuYy0xMzY5LVxcdC5tYXBfbWVtX3VzYWdlID0gYXJyYXlfbWFwX21lbV91c2FnZSxcXG4tLVxcbmtlcm5lbC9icGYvYXJyYXltYXAuYz0xNDQ0PWNvbnN0IHN0cnVjdCBicGZfbWFwX29wcyBhcnJheV9vZl9tYXBzX21hcF9vcHMgPSB7XFxuLS1cXG5rZXJuZWwvYnBmL2FycmF5bWFwLmMtMTQ1Ni1cXHQubWFwX3VwZGF0ZV9iYXRjaCA9IGdlbmVyaWNfbWFwX3VwZGF0ZV9iYXRjaCxcXG5rZXJuZWwvYnBmL2FycmF5bWFwLmM6MTQ1NzpcXHQubWFwX2NoZWNrX2J0ZiA9IG1hcF9jaGVja19ub19idGYsXFxua2VybmVsL2JwZi9hcnJheW1hcC5jLTE0NTgtXFx0Lm1hcF9tZW1fdXNhZ2UgPSBhcnJheV9tYXBfbWVtX3VzYWdlLFxcbi0tXFxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYz0xNzY9c3RhdGljIGxvbmcgYmxvb21fbWFwX3VwZGF0ZV9lbGVtKHN0cnVjdCBicGZfbWFwICptYXAsIHZvaWQgKmtleSxcXG4tLVxcbmtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmMtMTgyLVxcbmtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmM6MTgzOnN0YXRpYyBpbnQgYmxvb21fbWFwX2NoZWNrX2J0ZihzdHJ1Y3QgYnBmX21hcCAqbWFwLFxcbmtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmMtMTg0LVxcdFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgYnRmICpidGYsXFxuLS1cXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jPTIwND1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgYmxvb21fZmlsdGVyX21hcF9vcHMgPSB7XFxuLS1cXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jLTIxNS1cXHQubWFwX2RlbGV0ZV9lbGVtID0gYmxvb21fbWFwX2RlbGV0ZV9lbGVtLFxcbmtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmM6MjE2OlxcdC5tYXBfY2hlY2tfYnRmID0gYmxvb21fbWFwX2NoZWNrX2J0ZixcXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jLTIxNy1cXHQubWFwX21lbV91c2FnZSA9IGJsb29tX21hcF9tZW1fdXNhZ2UsXFxuLS1cXG5rZXJuZWwvYnBmL2JwZl9jZ3JwX3N0b3JhZ2UuYz0xNjA9Y29uc3Qgc3RydWN0IGJwZl9tYXBfb3BzIGNncnBfc3RvcmFnZV9tYXBfb3BzID0ge1xcbi0tXFxua2VybmVsL2JwZi9icGZfY2dycF9zdG9yYWdlLmMtMTY4LVxcdC5tYXBfZGVsZXRlX2VsZW0gPSBicGZfY2dycF9zdG9yYWdlX2RlbGV0ZV9lbGVtLFxcbmtlcm5lbC9icGYvYnBmX2NncnBfc3RvcmFnZS5jOjE2OTpcXHQubWFwX2NoZWNrX2J0ZiA9IGJwZl9sb2NhbF9zdG9yYWdlX21hcF9jaGVja19idGYsXFxua2VybmVsL2JwZi9icGZfY2dycF9zdG9yYWdlLmMtMTcwLVxcdC5tYXBfbWVtX3VzYWdlID0gYnBmX2xvY2FsX3N0b3JhZ2VfbWFwX21lbV91c2FnZSxcXG4tLVxcbmtlcm5lbC9icGYvYnBmX2lub2RlX3N0b3JhZ2UuYz0xOTg9Y29uc3Qgc3RydWN0IGJwZl9tYXBfb3BzIGlub2RlX3N0b3JhZ2VfbWFwX29wcyA9IHtcXG4tLVxcbmtlcm5lbC9icGYvYnBmX2lub2RlX3N0b3JhZ2UuYy0yMDYtXFx0Lm1hcF9kZWxldGVfZWxlbSA9IGJwZl9mZF9pbm9kZV9zdG9yYWdlX2RlbGV0ZV9lbGVtLFxcbmtlcm5lbC9icGYvYnBmX2lub2RlX3N0b3JhZ2UuYzoyMDc6XFx0Lm1hcF9jaGVja19idGYgPSBicGZfbG9jYWxfc3RvcmFnZV9tYXBfY2hlY2tfYnRmLFxcbmtlcm5lbC9icGYvYnBmX2lub2RlX3N0b3JhZ2UuYy0yMDgtXFx0Lm1hcF9tZW1fdXNhZ2UgPSBicGZfbG9jYWxfc3RvcmFnZV9tYXBfbWVtX3VzYWdlLFxcbi0tXFxua2VybmVsL2JwZi9icGZfaW5zbl9hcnJheS5jPTEzNj1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgaW5zbl9hcnJheV9tYXBfb3BzID0ge1xcbi0tXFxua2VybmVsL2JwZi9icGZfaW5zbl9hcnJheS5jLTE0My1cXHQubWFwX2RlbGV0ZV9lbGVtID0gaW5zbl9hcnJheV9kZWxldGVfZWxlbSxcXG5rZXJuZWwvYnBmL2JwZl9pbnNuX2FycmF5LmM6MTQ0OlxcdC5tYXBfY2hlY2tfYnRmID0gaW5zbl9hcnJheV9jaGVja19idGYsXFxua2VybmVsL2JwZi9icGZfaW5zbl9hcnJheS5jLTE0NS1cXHQubWFwX21lbV91c2FnZSA9IGluc25fYXJyYXlfbWVtX3VzYWdlLFxcbi0tXFxua2VybmVsL2JwZi9icGZfbG9jYWxfc3RvcmFnZS5jPTcwMj1pbnQgYnBmX2xvY2FsX3N0b3JhZ2VfbWFwX2FsbG9jX2NoZWNrKHVuaW9uIGJwZl9hdHRyICphdHRyKVxcbi0tXFxua2VybmVsL2JwZi9icGZfbG9jYWxfc3RvcmFnZS5jLTcxNy1cXG5rZXJuZWwvYnBmL2JwZl9sb2NhbF9zdG9yYWdlLmM6NzE4OmludCBicGZfbG9jYWxfc3RvcmFnZV9tYXBfY2hlY2tfYnRmKHN0cnVjdCBicGZfbWFwICptYXAsXFxua2VybmVsL2JwZi9icGZfbG9jYWxfc3RvcmFnZS5jLTcxOS1cXHRcXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLFxcbi0tXFxua2VybmVsL2JwZi9icGZfdGFza19zdG9yYWdlLmM9MjIzPWNvbnN0IHN0cnVjdCBicGZfbWFwX29wcyB0YXNrX3N0b3JhZ2VfbWFwX29wcyA9IHtcXG4tLVxcbmtlcm5lbC9icGYvYnBmX3Rhc2tfc3RvcmFnZS5jLTIzMS1cXHQubWFwX2RlbGV0ZV9lbGVtID0gYnBmX3BpZF90YXNrX3N0b3JhZ2VfZGVsZXRlX2VsZW0sXFxua2VybmVsL2JwZi9icGZfdGFza19zdG9yYWdlLmM6MjMyOlxcdC5tYXBfY2hlY2tfYnRmID0gYnBmX2xvY2FsX3N0b3JhZ2VfbWFwX2NoZWNrX2J0ZixcXG5rZXJuZWwvYnBmL2JwZl90YXNrX3N0b3JhZ2UuYy0yMzMtXFx0Lm1hcF9tZW1fdXNhZ2UgPSBicGZfbG9jYWxfc3RvcmFnZV9tYXBfbWVtX3VzYWdlLFxcbi0tXFxua2VybmVsL2JwZi9jcHVtYXAuYz03MDk9Y29uc3Qgc3RydWN0IGJwZl9tYXBfb3BzIGNwdV9tYXBfb3BzID0ge1xcbi0tXFxua2VybmVsL2JwZi9jcHVtYXAuYy03MTYtXFx0Lm1hcF9nZXRfbmV4dF9rZXlcXHQ9IGNwdV9tYXBfZ2V0X25leHRfa2V5LFxcbmtlcm5lbC9icGYvY3B1bWFwLmM6NzE3OlxcdC5tYXBfY2hlY2tfYnRmXFx0XFx0PSBtYXBfY2hlY2tfbm9fYnRmLFxcbmtlcm5lbC9icGYvY3B1bWFwLmMtNzE4LVxcdC5tYXBfbWVtX3VzYWdlXFx0XFx0PSBjcHVfbWFwX21lbV91c2FnZSxcXG4tLVxcbmtlcm5lbC9icGYvZGV2bWFwLmM9MTA4Nz1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgZGV2X21hcF9vcHMgPSB7XFxuLS1cXG5rZXJuZWwvYnBmL2Rldm1hcC5jLTEwOTUtXFx0Lm1hcF9kZWxldGVfZWxlbSA9IGRldl9tYXBfZGVsZXRlX2VsZW0sXFxua2VybmVsL2JwZi9kZXZtYXAuYzoxMDk2OlxcdC5tYXBfY2hlY2tfYnRmID0gbWFwX2NoZWNrX25vX2J0ZixcXG5rZXJuZWwvYnBmL2Rldm1hcC5jLTEwOTctXFx0Lm1hcF9tZW1fdXNhZ2UgPSBkZXZfbWFwX21lbV91c2FnZSxcXG4tLVxcbmtlcm5lbC9icGYvZGV2bWFwLmM9MTEwMj1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgZGV2X21hcF9oYXNoX29wcyA9IHtcXG4tLVxcbmtlcm5lbC9icGYvZGV2bWFwLmMtMTExMC1cXHQubWFwX2RlbGV0ZV9lbGVtID0gZGV2X21hcF9oYXNoX2RlbGV0ZV9lbGVtLFxcbmtlcm5lbC9icGYvZGV2bWFwLmM6MTExMTpcXHQubWFwX2NoZWNrX2J0ZiA9IG1hcF9jaGVja19ub19idGYsXFxua2VybmVsL2JwZi9kZXZtYXAuYy0xMTEyLVxcdC5tYXBfbWVtX3VzYWdlID0gZGV2X21hcF9tZW1fdXNhZ2UsXFxuLS1cXG5rZXJuZWwvYnBmL2hhc2h0YWIuYz01MDQ9c3RhdGljIGludCBicGZfbWFfc2V0X2R0b3Ioc3RydWN0IGJwZl9tYXAgKm1hcCwgc3RydWN0IGJwZl9tZW1fYWxsb2MgKm1hLFxcbi0tXFxua2VybmVsL2JwZi9oYXNodGFiLmMtNTI3LVxcbmtlcm5lbC9icGYvaGFzaHRhYi5jOjUyODpzdGF0aWMgaW50IGh0YWJfbWFwX2NoZWNrX2J0ZihzdHJ1Y3QgYnBmX21hcCAqbWFwLCBjb25zdCBzdHJ1Y3QgYnRmICpidGYsXFxua2VybmVsL2JwZi9oYXNodGFiLmMtNTI5LVxcdFxcdFxcdCAgICAgIGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqa2V5X3R5cGUsIGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdmFsdWVfdHlwZSlcXG4tLVxcbmtlcm5lbC9icGYvaGFzaHRhYi5jPTIzNTg9Y29uc3Qgc3RydWN0IGJwZl9tYXBfb3BzIGh0YWJfbWFwX29wcyA9IHtcXG4tLVxcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTIzNzItXFx0Lm1hcF9mb3JfZWFjaF9jYWxsYmFjayA9IGJwZl9mb3JfZWFjaF9oYXNoX2VsZW0sXFxua2VybmVsL2JwZi9oYXNodGFiLmM6MjM3MzpcXHQubWFwX2NoZWNrX2J0ZiA9IGh0YWJfbWFwX2NoZWNrX2J0ZixcXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0yMzc0LVxcdC5tYXBfbWVtX3VzYWdlID0gaHRhYl9tYXBfbWVtX3VzYWdlLFxcbi0tXFxua2VybmVsL2JwZi9oYXNodGFiLmM9MjM4MD1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgaHRhYl9scnVfbWFwX29wcyA9IHtcXG4tLVxcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTIzOTUtXFx0Lm1hcF9mb3JfZWFjaF9jYWxsYmFjayA9IGJwZl9mb3JfZWFjaF9oYXNoX2VsZW0sXFxua2VybmVsL2JwZi9oYXNodGFiLmM6MjM5NjpcXHQubWFwX2NoZWNrX2J0ZiA9IGh0YWJfbWFwX2NoZWNrX2J0ZixcXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0yMzk3LVxcdC5tYXBfbWVtX3VzYWdlID0gaHRhYl9tYXBfbWVtX3VzYWdlLFxcbi0tXFxua2VybmVsL2JwZi9oYXNodGFiLmM9MjU2MT1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgaHRhYl9wZXJjcHVfbWFwX29wcyA9IHtcXG4tLVxcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTI1NzUtXFx0Lm1hcF9mb3JfZWFjaF9jYWxsYmFjayA9IGJwZl9mb3JfZWFjaF9oYXNoX2VsZW0sXFxua2VybmVsL2JwZi9oYXNodGFiLmM6MjU3NjpcXHQubWFwX2NoZWNrX2J0ZiA9IGh0YWJfbWFwX2NoZWNrX2J0ZixcXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0yNTc3LVxcdC5tYXBfbWVtX3VzYWdlID0gaHRhYl9tYXBfbWVtX3VzYWdlLFxcbi0tXFxua2VybmVsL2JwZi9oYXNodGFiLmM9MjU4Mz1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgaHRhYl9scnVfcGVyY3B1X21hcF9vcHMgPSB7XFxuLS1cXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0yNTk2LVxcdC5tYXBfZm9yX2VhY2hfY2FsbGJhY2sgPSBicGZfZm9yX2VhY2hfaGFzaF9lbGVtLFxcbmtlcm5lbC9icGYvaGFzaHRhYi5jOjI1OTc6XFx0Lm1hcF9jaGVja19idGYgPSBodGFiX21hcF9jaGVja19idGYsXFxua2VybmVsL2JwZi9oYXNodGFiLmMtMjU5OC1cXHQubWFwX21lbV91c2FnZSA9IGh0YWJfbWFwX21lbV91c2FnZSxcXG4tLVxcbmtlcm5lbC9icGYvaGFzaHRhYi5jPTI3Mjk9Y29uc3Qgc3RydWN0IGJwZl9tYXBfb3BzIGh0YWJfb2ZfbWFwc19tYXBfb3BzID0ge1xcbi0tXFxua2VybmVsL2JwZi9oYXNodGFiLmMtMjczOS1cXHQubWFwX2dlbl9sb29rdXAgPSBodGFiX29mX21hcF9nZW5fbG9va3VwLFxcbmtlcm5lbC9icGYvaGFzaHRhYi5jOjI3NDA6XFx0Lm1hcF9jaGVja19idGYgPSBtYXBfY2hlY2tfbm9fYnRmLFxcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTI3NDEtXFx0Lm1hcF9tZW1fdXNhZ2UgPSBodGFiX21hcF9tZW1fdXNhZ2UsXFxuLS1cXG5rZXJuZWwvYnBmL2hhc2h0YWIuYz0zMDk0PXN0YXRpYyBpbnQgcmh0YWJfbWFwX2dlbl9sb29rdXAoc3RydWN0IGJwZl9tYXAgKm1hcCwgc3RydWN0IGJwZl9pbnNuICppbnNuX2J1ZilcXG4tLVxcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTMxMDgtXFxua2VybmVsL2JwZi9oYXNodGFiLmM6MzEwOTpzdGF0aWMgaW50IHJodGFiX21hcF9jaGVja19idGYoc3RydWN0IGJwZl9tYXAgKm1hcCwgY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLFxcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTMxMTAtXFx0XFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqa2V5X3R5cGUsXFxuLS1cXG5rZXJuZWwvYnBmL2hhc2h0YWIuYz0zNTE1PWNvbnN0IHN0cnVjdCBicGZfbWFwX29wcyByaHRhYl9tYXBfb3BzID0ge1xcbi0tXFxua2VybmVsL2JwZi9oYXNodGFiLmMtMzUyMS1cXHQubWFwX3JlbGVhc2VfdXJlZiA9IHJodGFiX21hcF9mcmVlX2ludGVybmFsX3N0cnVjdHMsXFxua2VybmVsL2JwZi9oYXNodGFiLmM6MzUyMjpcXHQubWFwX2NoZWNrX2J0ZiA9IHJodGFiX21hcF9jaGVja19idGYsXFxua2VybmVsL2JwZi9oYXNodGFiLmMtMzUyMy1cXHQubWFwX2xvb2t1cF9lbGVtID0gcmh0YWJfbWFwX2xvb2t1cF9lbGVtLFxcbi0tXFxua2VybmVsL2JwZi9sb2NhbF9zdG9yYWdlLmM9NDYxPWNvbnN0IHN0cnVjdCBicGZfbWFwX29wcyBjZ3JvdXBfc3RvcmFnZV9tYXBfb3BzID0ge1xcbi0tXFxua2VybmVsL2JwZi9sb2NhbF9zdG9yYWdlLmMtNDY3LVxcdC5tYXBfZGVsZXRlX2VsZW0gPSBjZ3JvdXBfc3RvcmFnZV9kZWxldGVfZWxlbSxcXG5rZXJuZWwvYnBmL2xvY2FsX3N0b3JhZ2UuYzo0Njg6XFx0Lm1hcF9jaGVja19idGYgPSBjZ3JvdXBfc3RvcmFnZV9jaGVja19idGYsXFxua2VybmVsL2JwZi9sb2NhbF9zdG9yYWdlLmMtNDY5LVxcdC5tYXBfc2VxX3Nob3dfZWxlbSA9IGNncm91cF9zdG9yYWdlX3NlcV9zaG93X2VsZW0sXFxuLS1cXG5rZXJuZWwvYnBmL2xwbV90cmllLmM9Nzc1PWNvbnN0IHN0cnVjdCBicGZfbWFwX29wcyB0cmllX21hcF9vcHMgPSB7XFxuLS1cXG5rZXJuZWwvYnBmL2xwbV90cmllLmMtNzg1LVxcdC5tYXBfZGVsZXRlX2JhdGNoID0gZ2VuZXJpY19tYXBfZGVsZXRlX2JhdGNoLFxcbmtlcm5lbC9icGYvbHBtX3RyaWUuYzo3ODY6XFx0Lm1hcF9jaGVja19idGYgPSB0cmllX2NoZWNrX2J0ZixcXG5rZXJuZWwvYnBmL2xwbV90cmllLmMtNzg3LVxcdC5tYXBfbWVtX3VzYWdlID0gdHJpZV9tZW1fdXNhZ2UsXFxuLS1cXG5rZXJuZWwvYnBmL3N0YWNrbWFwLmM9MTAzOD1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgc3RhY2tfdHJhY2VfbWFwX29wcyA9IHtcXG4tLVxcbmtlcm5lbC9icGYvc3RhY2ttYXAuYy0xMDQ2LVxcdC5tYXBfZGVsZXRlX2VsZW0gPSBzdGFja19tYXBfZGVsZXRlX2VsZW0sXFxua2VybmVsL2JwZi9zdGFja21hcC5jOjEwNDc6XFx0Lm1hcF9jaGVja19idGYgPSBtYXBfY2hlY2tfbm9fYnRmLFxcbmtlcm5lbC9icGYvc3RhY2ttYXAuYy0xMDQ4LVxcdC5tYXBfbWVtX3VzYWdlID0gc3RhY2tfbWFwX21lbV91c2FnZSxcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jPTExND1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgYnBmX21hcF9vZmZsb2FkX29wcyA9IHtcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTExNy1cXHQubWFwX2ZyZWUgPSBicGZfbWFwX29mZmxvYWRfbWFwX2ZyZWUsXFxua2VybmVsL2JwZi9zeXNjYWxsLmM6MTE4OlxcdC5tYXBfY2hlY2tfYnRmID0gbWFwX2NoZWNrX25vX2J0ZixcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xMTktXFx0Lm1hcF9tZW1fdXNhZ2UgPSBicGZfbWFwX29mZmxvYWRfbWFwX21lbV91c2FnZSxcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jPTEyMzU9aW50IG1hcF9jaGVja19ub19idGYoc3RydWN0IGJwZl9tYXAgKm1hcCxcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTEyNDItXFxua2VybmVsL2JwZi9zeXNjYWxsLmM6MTI0MzpzdGF0aWMgaW50IG1hcF9jaGVja19idGYoc3RydWN0IGJwZl9tYXAgKm1hcCwgc3RydWN0IGJwZl90b2tlbiAqdG9rZW4sXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMTI0NC1cXHRcXHRcXHQgY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCB1MzIgYnRmX2tleV9pZCwgdTMyIGJ0Zl92YWx1ZV9pZClcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTEyNTYtXFx0XFx0a2V5X3R5cGUgPSBidGZfdHlwZV9ieV9pZChidGYsIDApO1xcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjEyNTc6XFx0XFx0aWYgKCFtYXAtXFx1MDAzZW9wcy1cXHUwMDNlbWFwX2NoZWNrX2J0ZilcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xMjU4LVxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMTM1NS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzoxMzU2OlxcdGlmIChtYXAtXFx1MDAzZW9wcy1cXHUwMDNlbWFwX2NoZWNrX2J0Zikge1xcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjEzNTc6XFx0XFx0cmV0ID0gbWFwLVxcdTAwM2VvcHMtXFx1MDAzZW1hcF9jaGVja19idGYobWFwLCBidGYsIGtleV90eXBlLCB2YWx1ZV90eXBlKTtcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xMzU4LVxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmM9MTM3MD1zdGF0aWMgaW50IG1hcF9jcmVhdGVfYWxsb2ModW5pb24gYnBmX2F0dHIgKmF0dHIsIGJwZnB0cl90IHVhdHRyLCBzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMTU2OS1cXHRcXHRpZiAoYXR0ci1cXHUwMDNlYnRmX3ZhbHVlX3R5cGVfaWQpIHtcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzoxNTcwOlxcdFxcdFxcdGVyciA9IG1hcF9jaGVja19idGYobWFwLCB0b2tlbiwgYnRmLCBhdHRyLVxcdTAwM2VidGZfa2V5X3R5cGVfaWQsXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMTU3MS1cXHRcXHRcXHRcXHRcXHQgICAgYXR0ci1cXHUwMDNlYnRmX3ZhbHVlX3R5cGVfaWQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQxNTowNzoyMi43NTk5NTc0N1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTc2NDEyMjc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBCUEYgQlRGIFN5bWJvbCBSZWZlcmVuY2VzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgQlBGIGFuZCB0aGlua2luZyBhYm91dCBob3cgdGhlc2UgQlRGIHN0cnVjdHVyZXMgYXJlIHBhcnNlZC4gSSBzZWUgYG1hcF9jaGVja19idGZgIGlzIGRlZmluZWQgYXMgc3RhdGljIHdpdGhpbiBga2VybmVsL2JwZi9zeXNjYWxsLmNgLCBzbyBpdCdzIHByb2JhYmx5IG5vdCB0aGUgY29yZSBmdW5jdGlvbiBJJ20gYWZ0ZXIuIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdG8gZGlnIGludG8gYGJ0Zl9wYXJzZV9maWVsZHNgLCBzaW5jZSBpdCdzIGEgZ2xvYmFsIGZ1bmN0aW9uIGluIGBrZXJuZWwvYnBmL2J0Zi5jYCwgYW5kIHRoYXQgc2VlbXMgbGlrZSBhIGxvZ2ljYWwgZW50cnkgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBCVEYgc3RydWN0dXJlcyBhcmUgaGFuZGxlZC4gSG93ZXZlciwgd2FpdCwgbGV0J3MgYWxzbyBnaXZlIHNvbWUgYXR0ZW50aW9uIHRvIGBidGZfcGFyc2Vfc3RydWN0X21ldGFzYC4gVGhhdCBsb29rcyBsaWtlIGFub3RoZXIgdmlhYmxlIGZ1bmN0aW9uIGZvciBwYXJzaW5nIEJURiBzdHJ1Y3QgbWV0YWRhdGEsIGFuZCBpdCBtaWdodCBiZSBhIG1vcmUgaW1wb3J0YW50IHBhcnQgb2YgdGhlIHB1enpsZS4gSSdsbCBuZWVkIHRvIGxvb2sgY2xvc2VseSBhdCBib3RoIG5vdy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIxMzUsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMTU6MDc6MjYuMzM2MzcyNDI1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODc5MDY0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJidGZfcGFyc2Vfc3RydWN0X21ldGFzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvYnRmLmM9NTc3OT1zdGF0aWMgc3RydWN0IGJ0Zl9zdHJ1Y3RfbWV0YXMgKlxcbmtlcm5lbC9icGYvYnRmLmM6NTc4MDpidGZfcGFyc2Vfc3RydWN0X21ldGFzKHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csIHN0cnVjdCBidGYgKmJ0ZilcXG5rZXJuZWwvYnBmL2J0Zi5jLTU3ODEte1xcbi0tXFxua2VybmVsL2JwZi9idGYuYz01OTUwPXN0YXRpYyBzdHJ1Y3QgYnRmICpidGZfcGFyc2UoY29uc3QgdW5pb24gYnBmX2F0dHIgKmF0dHIsIGJwZnB0cl90IHVhdHRyLFxcbi0tXFxua2VybmVsL2JwZi9idGYuYy02MDE3LVxcbmtlcm5lbC9icGYvYnRmLmM6NjAxODpcXHRzdHJ1Y3RfbWV0YV90YWIgPSBidGZfcGFyc2Vfc3RydWN0X21ldGFzKFxcdTAwMjZlbnYtXFx1MDAzZWxvZywgYnRmKTtcXG5rZXJuZWwvYnBmL2J0Zi5jLTYwMTktXFx0aWYgKElTX0VSUihzdHJ1Y3RfbWV0YV90YWIpKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDE1OjA3OjI2LjQwNTE3MzI5NFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDIxNjIzMTg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQlRGIFBhcnNpbmcgTGFuZHNjYXBlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgQlRGIHBhcnNpbmcgZnVuY3Rpb25zLiBgYnRmX3BhcnNlX3N0cnVjdF9tZXRhc2AgaXMgZGVmaW5lZCBhcyBgc3RhdGljYCwgd2hpY2ggbWVhbnMgaXQncyBpbnRlcm5hbCB0byBpdHMgY29tcGlsYXRpb24gdW5pdC4gVGhhdCBtYWtlcyBpdCBhIG5vbi1zdGFydGVyIGZvciBteSBwdXJwb3Nlcy4gSSBuZWVkIHNvbWV0aGluZyBhY2Nlc3NpYmxlLCBhbmQgSSBuZWVkIHNvbWV0aGluZyB0aGF0IGRpcmVjdGx5IGNhbGxzIGludG8gdGhlIGZ1bmN0aW9ucyBJJ20gaW50ZXJlc3RlZCBpbiBtb2RpZnlpbmcuXG5cbmBidGZfcGFyc2VfZmllbGRzYCBsb29rcyBsaWtlIHRoZSBtb3N0IHByb21pc2luZyBjYW5kaWRhdGUgaW5pdGlhbGx5LiBJdCdzIGdsb2JhbCwgYW5kIHNlZW1zIHRvIGJlIGEgZGlyZWN0IGNhbGxlci4gQnV0IHdhaXQuLi4gb24gY2xvc2VyIGluc3BlY3Rpb24sIGl0IGxvb2tzIGxpa2UgYGJ0Zl9wYXJzZV9maWVsZHNgIGlzIGFsc28gbm90IGV4cG9ydGVkLCBhbmQgaXMgbG9jYWwuIFN0aWxsLCB0aGUgYmVhdXR5IGlzIHRoYXQgc3l6a2FsbGVyIGNhbiB0YXJnZXQgYW55IGdsb2JhbCBmdW5jdGlvbiwgZXhwb3J0ZWQgb3Igbm90LCBzbyB0aGF0J3Mgc29tZXRoaW5nIEkgY2FuIHVzZS5cblxuSG1tLCB3aGF0IGFib3V0IGBidGZfcGFyc2VgPyBOb3BlLCB0aGF0J3MgYWxzbyBzdGF0aWMsIHNvIGl0J3Mgb3V0LiBPa2F5LCBsZXQncyBhbHNvIHRha2UgYSBxdWljayBsb29rIGF0IGBidGZfbmV3X2ZkYCwganVzdCBpbiBjYXNlLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNjgxLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDE1OjA3OjMwLjgyNjc5ODk0MVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTg1ODcyOTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnRmX25ld19mZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL2J0Zi5jPTgzMTc9Y29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBidGZfZm9wcyA9IHtcXG4tLVxcbmtlcm5lbC9icGYvYnRmLmMtODMyMy1cXG5rZXJuZWwvYnBmL2J0Zi5jOjgzMjQ6c3RhdGljIGludCBfX2J0Zl9uZXdfZmQoc3RydWN0IGJ0ZiAqYnRmKVxcbmtlcm5lbC9icGYvYnRmLmMtODMyNS17XFxuLS1cXG5rZXJuZWwvYnBmL2J0Zi5jLTgzMjgtXFxua2VybmVsL2JwZi9idGYuYzo4MzI5OmludCBidGZfbmV3X2ZkKGNvbnN0IHVuaW9uIGJwZl9hdHRyICphdHRyLCBicGZwdHJfdCB1YXR0ciwgc3RydWN0IGJwZl9sb2dfYXR0ciAqYXR0cl9sb2cpXFxua2VybmVsL2JwZi9idGYuYy04MzMwLXtcXG4tLVxcbmtlcm5lbC9icGYvYnRmLmMtODM0OS1cXG5rZXJuZWwvYnBmL2J0Zi5jOjgzNTA6XFx0cmV0ID0gX19idGZfbmV3X2ZkKGJ0Zik7XFxua2VybmVsL2JwZi9idGYuYy04MzUxLVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxua2VybmVsL2JwZi9idGYuYz04NDI5PWludCBidGZfZ2V0X2ZkX2J5X2lkKHUzMiBpZClcXG4tLVxcbmtlcm5lbC9icGYvYnRmLmMtODQ0Mi1cXG5rZXJuZWwvYnBmL2J0Zi5jOjg0NDM6XFx0ZmQgPSBfX2J0Zl9uZXdfZmQoYnRmKTtcXG5rZXJuZWwvYnBmL2J0Zi5jLTg0NDQtXFx0aWYgKGZkIFxcdTAwM2MgMClcXG4tLVxcbmtlcm5lbC9icGYvYnRmLmM9ODY4MT1CUEZfQ0FMTF80KGJwZl9idGZfZmluZF9ieV9uYW1lX2tpbmQsIGNoYXIgKiwgbmFtZSwgaW50LCBuYW1lX3N6LCB1MzIsIGtpbmQsIGludCwgZmxhZ3MpXFxuLS1cXG5rZXJuZWwvYnBmL2J0Zi5jLTg2OTQtXFx0aWYgKHJldCBcXHUwMDNlIDAgXFx1MDAyNlxcdTAwMjYgYnRmX2lzX21vZHVsZShidGYpKSB7XFxua2VybmVsL2JwZi9idGYuYzo4Njk1OlxcdFxcdGJ0Zl9vYmpfZmQgPSBfX2J0Zl9uZXdfZmQoYnRmKTtcXG5rZXJuZWwvYnBmL2J0Zi5jLTg2OTYtXFx0XFx0aWYgKGJ0Zl9vYmpfZmQgXFx1MDAzYyAwKSB7XFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz01NTM2PXN0YXRpYyBpbnQgYnBmX2J0Zl9sb2FkKGNvbnN0IHVuaW9uIGJwZl9hdHRyICphdHRyLCBicGZwdHJfdCB1YXR0ciwgc3RydWN0IGJwZl9sb2dfYXR0ciAqYXR0cl9sb2cpXFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy01NTYyLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjU1NjM6XFx0cmV0dXJuIGJ0Zl9uZXdfZmQoYXR0ciwgdWF0dHIsIGF0dHJfbG9nKTtcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy01NTY0LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMTU6MDc6MzAuODg1MzkwOTU5WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMTEyMzIyNDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIEJURiBGaWVsZCBQYXJzaW5nKipcblxuUmlnaHQsIGBidGZfcGFyc2VfZmllbGRzYCAtIHRoYXQncyB3aGVyZSB0aGUgcnViYmVyIG1lZXRzIHRoZSByb2FkLCB0aGUgY29yZSBvZiB0aGlzIG9wZXJhdGlvbi4gQmVmb3JlIEkgZGlnIHRvbyBkZWVwLCBsZXQncyBxdWlja2x5IGNvbmZpcm0gd2hldGhlciB0aGUgc3lzdGVtJ3MgZXZlbiBjb25maWd1cmVkIHRvIGhhbmRsZSB0aGlzLiBJdCBsb29rcyBsaWtlIEJQRiBpdHNlbGYgaXMgdGllZCB0byBgQ09ORklHX0JQRl9TWVNDQUxMYCwgc28gbGV0J3MgY2hlY2sgdGhhdC4gSSBzaG91bGQgYWxzbyB0YWtlIGEgcGVlayBhcm91bmQgdG8gc2VlIGlmIHRoZXJlIGFyZSAqb3RoZXIqIGNvbmZpZ3VyYXRpb25zIHRoYXQgbWlnaHQgaW1wYWN0IGhvdyBgYnRmX3BhcnNlX2ZpZWxkc2AgZnVuY3Rpb25zLiBJIHdhbnQgdG8gbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnkgcGllY2VzIG9mIHRoZSBwdXp6bGUgdGhhdCBtaWdodCBpbmZsdWVuY2UgbXkgYW5hbHlzaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNjk5LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMTU6MDc6MzQuOTk2NjI1NTUzWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Njg0NTg5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfQlBGXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvS2NvbmZpZz01OD1jb25maWcgQlBGX0pJVF9BTFdBWVNfT05cXG4tLVxcbmtlcm5lbC9icGYvS2NvbmZpZy02NC1cXG5rZXJuZWwvYnBmL0tjb25maWc6NjU6XFx0ICBXaGVuIENPTkZJR19CUEZfSklUX0FMV0FZU19PTiBpcyBlbmFibGVkLCAvcHJvYy9zeXMvbmV0L2NvcmUvYnBmX2ppdF9lbmFibGVcXG5rZXJuZWwvYnBmL0tjb25maWctNjYtXFx0ICBpcyBwZXJtYW5lbnRseSBzZXQgdG8gMSBhbmQgc2V0dGluZyBhbnkgb3RoZXIgdmFsdWUgdGhhbiB0aGF0IHdpbGxcXG4tLVxcbmtlcm5lbC9icGYvTWFrZWZpbGU9Mj1vYmoteSA6PSBjb3JlLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjM6aWZuZXEgKCQoQ09ORklHX0JQRl9KSVRfQUxXQVlTX09OKSx5KVxcbmtlcm5lbC9icGYvTWFrZWZpbGUtNC0jIF9fX2JwZl9wcm9nX3J1bigpIG5lZWRzIEdDU0UgZGlzYWJsZWQgb24geDg2OyBzZWUgMzE5M2MwODM2ZjIwMyBmb3IgZGV0YWlsc1xcbi0tXFxua2VybmVsL2JwZi9NYWtlZmlsZT03PUNGTEFHU19jb3JlLm8gKz0gLVduby1vdmVycmlkZS1pbml0ICQoY2ZsYWdzLW5vZ2NzZS15eSlcXG5rZXJuZWwvYnBmL01ha2VmaWxlLTgtXFxua2VybmVsL2JwZi9NYWtlZmlsZTo5Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gc3lzY2FsbC5vIHZlcmlmaWVyLm8gaW5vZGUubyBoZWxwZXJzLm8gdG51bS5vIGNudW0ubyBsb2cubyB0b2tlbi5vIGxpdmVuZXNzLm8gY29uc3RfZm9sZC5vXFxua2VybmVsL2JwZi9NYWtlZmlsZToxMDpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGJwZl9pdGVyLm8gbWFwX2l0ZXIubyB0YXNrX2l0ZXIubyBwcm9nX2l0ZXIubyBsaW5rX2l0ZXIub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6MTE6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBoYXNodGFiLm8gYXJyYXltYXAubyBwZXJjcHVfZnJlZWxpc3QubyBicGZfbHJ1X2xpc3QubyBscG1fdHJpZS5vIG1hcF9pbl9tYXAubyBibG9vbV9maWx0ZXIub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6MTI6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBsb2NhbF9zdG9yYWdlLm8gcXVldWVfc3RhY2tfbWFwcy5vIHJpbmdidWYubyBicGZfaW5zbl9hcnJheS5vXFxua2VybmVsL2JwZi9NYWtlZmlsZToxMzpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGJwZl9sb2NhbF9zdG9yYWdlLm8gYnBmX3Rhc2tfc3RvcmFnZS5vXFxua2VybmVsL2JwZi9NYWtlZmlsZToxNDpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGZpeHVwcy5vIGNmZy5vIHN0YXRlcy5vIGJhY2t0cmFjay5vIGNoZWNrX2J0Zi5vXFxua2VybmVsL2JwZi9NYWtlZmlsZToxNTpvYmotJHtDT05GSUdfQlBGX0xTTX1cXHQgICs9IGJwZl9pbm9kZV9zdG9yYWdlLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjE2Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gZGlzYXNtLm8gbXByb2cub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6MTc6b2JqLSQoQ09ORklHX0JQRl9KSVQpICs9IHRyYW1wb2xpbmUub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6MTg6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBidGYubyBtZW1hbGxvYy5vIHJxc3BpbmxvY2subyBzdHJlYW0ub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtMTktaWZlcSAoJChDT05GSUdfTU1VKSQoQ09ORklHXzY0QklUKSx5eSlcXG5rZXJuZWwvYnBmL01ha2VmaWxlOjIwOm9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gYXJlbmEubyByYW5nZV90cmVlLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlLTIxLWVuZGlmXFxua2VybmVsL2JwZi9NYWtlZmlsZToyMjpvYmotJChDT05GSUdfQlBGX0pJVCkgKz0gZGlzcGF0Y2hlci5vXFxua2VybmVsL2JwZi9NYWtlZmlsZS0yMy1pZmVxICgkKENPTkZJR19ORVQpLHkpXFxua2VybmVsL2JwZi9NYWtlZmlsZToyNDpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGRldm1hcC5vXFxua2VybmVsL2JwZi9NYWtlZmlsZToyNTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGNwdW1hcC5vXFxua2VybmVsL2JwZi9NYWtlZmlsZToyNjpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IG9mZmxvYWQub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6Mjc6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBuZXRfbmFtZXNwYWNlLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjI4Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gdGN4Lm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlLTI5LWVuZGlmXFxua2VybmVsL2JwZi9NYWtlZmlsZT0zMD1pZmVxICgkKENPTkZJR19QRVJGX0VWRU5UUykseSlcXG5rZXJuZWwvYnBmL01ha2VmaWxlOjMxOm9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gc3RhY2ttYXAub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtMzItZW5kaWZcXG5rZXJuZWwvYnBmL01ha2VmaWxlPTMzPWlmZXEgKCQoQ09ORklHX0NHUk9VUFMpLHkpXFxua2VybmVsL2JwZi9NYWtlZmlsZTozNDpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGNncm91cF9pdGVyLm8gYnBmX2NncnBfc3RvcmFnZS5vXFxua2VybmVsL2JwZi9NYWtlZmlsZS0zNS1lbmRpZlxcbi0tXFxua2VybmVsL2JwZi9NYWtlZmlsZT0zNz1pZmVxICgkKENPTkZJR19JTkVUKSx5KVxcbmtlcm5lbC9icGYvTWFrZWZpbGU6Mzg6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSByZXVzZXBvcnRfYXJyYXkub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtMzktZW5kaWZcXG4tLVxcbmtlcm5lbC9icGYvTWFrZWZpbGU9NDI9ZW5kaWZcXG5rZXJuZWwvYnBmL01ha2VmaWxlOjQzOmlmZXEgKCQoQ09ORklHX0JQRl9KSVQpLHkpXFxua2VybmVsL2JwZi9NYWtlZmlsZTo0NDpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGJwZl9zdHJ1Y3Rfb3BzLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjQ1Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gY3B1bWFzay5vXFxua2VybmVsL2JwZi9NYWtlZmlsZS00Ni0jIGJwZl9sc21fcHJvdG8ubyBtdXN0IHByZWNlZGUgYnBmX2xzbS5vLiBUaGUgY3VycmVudCBwYWhvbGUgbG9naWNcXG4tLVxcbmtlcm5lbC9icGYvTWFrZWZpbGUtNTUtIyBzZW1hbnRpY3Mgd2l0aGluIHBhaG9sZSBhcmUgcmV2aXNpdGVkIGFjY29yZGluZ2x5Llxcbmtlcm5lbC9icGYvTWFrZWZpbGU6NTY6b2JqLSR7Q09ORklHX0JQRl9MU019ICs9IGJwZl9sc21fcHJvdG8ubyBicGZfbHNtLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlLTU3LWVuZGlmXFxua2VybmVsL2JwZi9NYWtlZmlsZT01OD1pZm5lcSAoJChDT05GSUdfQ1JZUFRPKSwpXFxua2VybmVsL2JwZi9NYWtlZmlsZTo1OTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGNyeXB0by5vXFxua2VybmVsL2JwZi9NYWtlZmlsZS02MC1lbmRpZlxcbmtlcm5lbC9icGYvTWFrZWZpbGU6NjE6b2JqLSQoQ09ORklHX0JQRl9QUkVMT0FEKSArPSBwcmVsb2FkL1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtNjItXFxua2VybmVsL2JwZi9NYWtlZmlsZTo2MzpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IHJlbG9fY29yZS5vXFxua2VybmVsL2JwZi9NYWtlZmlsZTo2NDpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGJ0Zl9pdGVyLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjY1Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gYnRmX3JlbG9jYXRlLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjY2Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0ga21lbV9jYWNoZV9pdGVyLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlLTY3LWlmZXEgKCQoQ09ORklHX0RNQV9TSEFSRURfQlVGRkVSKSx5KVxcbmtlcm5lbC9icGYvTWFrZWZpbGU6Njg6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBkbWFidWZfaXRlci5vXFxua2VybmVsL2JwZi9NYWtlZmlsZS02OS1lbmRpZlxcbi0tXFxua2VybmVsL2JwZi9idGYuYz05ODE0PWJvb2wgYnRmX3R5cGVfaWRzX25vY2FzdF9hbGlhcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxcbi0tXFxua2VybmVsL2JwZi9idGYuYy05ODY4LVxcbmtlcm5lbC9icGYvYnRmLmM6OTg2OTojaWZkZWYgQ09ORklHX0JQRl9KSVRcXG5rZXJuZWwvYnBmL2J0Zi5jLTk4NzAtc3RhdGljIGludFxcbi0tXFxua2VybmVsL2JwZi9jZ3JvdXAuYz01Mj12b2lkIF9faW5pdCBjZ3JvdXBfYnBmX2xpZmV0aW1lX25vdGlmaWVyX2luaXQodm9pZClcXG4tLVxcbmtlcm5lbC9icGYvY2dyb3VwLmMtNTctXFxua2VybmVsL2JwZi9jZ3JvdXAuYzo1ODojaWZkZWYgQ09ORklHX0JQRl9MU01cXG5rZXJuZWwvYnBmL2Nncm91cC5jLTU5LXN0cnVjdCBjZ3JvdXBfbHNtX2F0eXBlIHtcXG4tLVxcbmtlcm5lbC9icGYvY2dyb3VwLmM9MTYyPXVuc2lnbmVkIGludCBfX2Nncm91cF9icGZfcnVuX2xzbV9jdXJyZW50KGNvbnN0IHZvaWQgKmN0eCxcXG4tLVxcbmtlcm5lbC9icGYvY2dyb3VwLmMtMTgwLVxcbmtlcm5lbC9icGYvY2dyb3VwLmM6MTgxOiNpZmRlZiBDT05GSUdfQlBGX0xTTVxcbmtlcm5lbC9icGYvY2dyb3VwLmMtMTgyLXN0YXRpYyBlbnVtIGNncm91cF9icGZfYXR0YWNoX3R5cGVcXG4tLVxcbmtlcm5lbC9icGYvY2dyb3VwLmM9MjM0PWJwZl9jZ3JvdXBfYXR5cGVfZmluZChlbnVtIGJwZl9hdHRhY2hfdHlwZSBhdHRhY2hfdHlwZSwgdTMyIGF0dGFjaF9idGZfaWQpXFxuLS1cXG5rZXJuZWwvYnBmL2Nncm91cC5jLTIzOS19XFxua2VybmVsL2JwZi9jZ3JvdXAuYzoyNDA6I2VuZGlmIC8qIENPTkZJR19CUEZfTFNNICovXFxua2VybmVsL2JwZi9jZ3JvdXAuYy0yNDEtXFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYz0xMDA9c3RydWN0IGJwZl9wcm9nICpicGZfcHJvZ19hbGxvY19ub19zdGF0cyh1bnNpZ25lZCBpbnQgc2l6ZSwgZ2ZwX3QgZ2ZwX2V4dHJhX2ZsYWdzKVxcbi0tXFxua2VybmVsL2JwZi9jb3JlLmMtMTI4LVxcdGZwLVxcdTAwM2VqaXRfcmVxdWVzdGVkID0gZWJwZl9qaXRfZW5hYmxlZCgpO1xcbmtlcm5lbC9icGYvY29yZS5jOjEyOTpcXHRmcC1cXHUwMDNlaml0X3JlcXVpcmVkID0gSVNfRU5BQkxFRChDT05GSUdfQlBGX0pJVF9BTFdBWVNfT04pO1xcbmtlcm5lbC9icGYvY29yZS5jLTEzMC1cXHRmcC1cXHUwMDNlYmxpbmRpbmdfcmVxdWVzdGVkID0gYnBmX2ppdF9ibGluZGluZ19lbmFibGVkKGZwKTtcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jLTE0My1cXG5rZXJuZWwvYnBmL2NvcmUuYzoxNDQ6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxcbmtlcm5lbC9icGYvY29yZS5jLTE0NS1cXHRicGZfcHJvZ19zdHJlYW1faW5pdChmcCk7XFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYz01NDE9dm9pZCBicGZfcHJvZ19rYWxsc3ltc19kZWxfYWxsKHN0cnVjdCBicGZfcHJvZyAqZnApXFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYy01NDYtXFxua2VybmVsL2JwZi9jb3JlLmM6NTQ3OiNpZmRlZiBDT05GSUdfQlBGX0pJVFxcbmtlcm5lbC9icGYvY29yZS5jLTU0OC0vKiBBbGwgQlBGIEpJVCBzeXNjdGwga25vYnMgaGVyZS4gKi9cXG5rZXJuZWwvYnBmL2NvcmUuYzo1NDk6aW50IGJwZl9qaXRfZW5hYmxlICAgX19yZWFkX21vc3RseSA9IElTX0JVSUxUSU4oQ09ORklHX0JQRl9KSVRfREVGQVVMVF9PTik7XFxua2VybmVsL2JwZi9jb3JlLmM6NTUwOmludCBicGZfaml0X2thbGxzeW1zIF9fcmVhZF9tb3N0bHkgPSBJU19CVUlMVElOKENPTkZJR19CUEZfSklUX0RFRkFVTFRfT04pO1xcbmtlcm5lbC9icGYvY29yZS5jLTU1MS1pbnQgYnBmX2ppdF9oYXJkZW4gICBfX3JlYWRfbW9zdGx5O1xcbi0tXFxua2VybmVsL2JwZi9jb3JlLmM9MTY0Mz11MTYgYnBmX291dF9zdGFja19hcmdfY250KGNvbnN0IHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZylcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jLTE2NTEtfVxcbmtlcm5lbC9icGYvY29yZS5jOjE2NTI6I2VuZGlmIC8qIENPTkZJR19CUEZfSklUICovXFxua2VybmVsL2JwZi9jb3JlLmMtMTY1My1cXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jPTE4MTE9Ym9vbCBicGZfb3Bjb2RlX2luX2luc250YWJsZSh1OCBjb2RlKVxcbi0tXFxua2VybmVsL2JwZi9jb3JlLmMtMTgzMy1cXG5rZXJuZWwvYnBmL2NvcmUuYzoxODM0OiNpZm5kZWYgQ09ORklHX0JQRl9KSVRfQUxXQVlTX09OXFxua2VybmVsL2JwZi9jb3JlLmMtMTgzNS0vKiBBYnNvbHV0ZSB2YWx1ZSBvZiBzMzIgd2l0aG91dCB1bmRlZmluZWQgYmVoYXZpb3IgZm9yIFMzMl9NSU4gKi9cXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jPTI0NjE9RVZBTDQoUFJPR19OQU1FX0xJU1QsIDQxNiwgNDQ4LCA0ODAsIDUxMilcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jLTI0NjQtXFxua2VybmVsL2JwZi9jb3JlLmM6MjQ2NTojaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXFxua2VybmVsL2JwZi9jb3JlLmMtMjQ2Ni1pbnQgYnBmX3BhdGNoX2NhbGxfYXJncyhzdHJ1Y3QgYnBmX2luc24gKmluc24sIHUzMiBzdGFja19kZXB0aClcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jPTI1OTg9c3RhdGljIGJvb2wgYnBmX3Byb2dfc2VsZWN0X2ludGVycHJldGVyKHN0cnVjdCBicGZfcHJvZyAqZnApXFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYy0yNjAwLVxcdGJvb2wgc2VsZWN0X2ludGVycHJldGVyID0gZmFsc2U7XFxua2VybmVsL2JwZi9jb3JlLmM6MjYwMTojaWZuZGVmIENPTkZJR19CUEZfSklUX0FMV0FZU19PTlxcbmtlcm5lbC9icGYvY29yZS5jLTI2MDItXFx0dTMyIHN0YWNrX2RlcHRoID0gbWF4X3QodTMyLCBmcC1cXHUwMDNlYXV4LVxcdTAwM2VzdGFja19kZXB0aCwgMSk7XFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYz0yNjIxPXN0YXRpYyBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9wcm9nX2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZylcXG5rZXJuZWwvYnBmL2NvcmUuYy0yNjIyLXtcXG5rZXJuZWwvYnBmL2NvcmUuYzoyNjIzOiNpZmRlZiBDT05GSUdfQlBGX0pJVFxcbmtlcm5lbC9icGYvY29yZS5jLTI2MjQtXFx0c3RydWN0IGJwZl9wcm9nICpvcmlnX3Byb2c7XFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYz0zMDQ1PXZvaWQgX19icGZfZnJlZV91c2VkX2J0ZnMoc3RydWN0IGJ0Zl9tb2RfcGFpciAqdXNlZF9idGZzLCB1MzIgbGVuKVxcbmtlcm5lbC9icGYvY29yZS5jLTMwNDYte1xcbmtlcm5lbC9icGYvY29yZS5jOjMwNDc6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxcbmtlcm5lbC9icGYvY29yZS5jLTMwNDgtXFx0c3RydWN0IGJ0Zl9tb2RfcGFpciAqYnRmX21vZDtcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jPTMwNjY9c3RhdGljIHZvaWQgYnBmX3Byb2dfZnJlZV9kZWZlcnJlZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYy0zMDcxLVxcdGF1eCA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgYnBmX3Byb2dfYXV4LCB3b3JrKTtcXG5rZXJuZWwvYnBmL2NvcmUuYzozMDcyOiNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcXG5rZXJuZWwvYnBmL2NvcmUuYy0zMDczLVxcdGJwZl9mcmVlX2tmdW5jX2J0Zl90YWIoYXV4LVxcdTAwM2VrZnVuY19idGZfdGFiKTtcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jPTMzODg9c3RhdGljIG5vaW5saW5lIHZvaWQgYnBmX3Byb2dfcmVwb3J0X21heV9nb3RvX3Zpb2xhdGlvbih2b2lkKVxcbmtlcm5lbC9icGYvY29yZS5jLTMzODkte1xcbmtlcm5lbC9icGYvY29yZS5jOjMzOTA6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxcbmtlcm5lbC9icGYvY29yZS5jLTMzOTEtXFx0c3RydWN0IGJwZl9zdHJlYW1fc3RhZ2Ugc3M7XFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYz0zNDI4PV9fd2VhayB1NjQgYnBmX2FyZW5hX2dldF9rZXJuX3ZtX3N0YXJ0KHN0cnVjdCBicGZfYXJlbmEgKmFyZW5hKVxcbi0tXFxua2VybmVsL2JwZi9jb3JlLmMtMzQzMi1cXG5rZXJuZWwvYnBmL2NvcmUuYzozNDMzOiNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcXG5rZXJuZWwvYnBmL2NvcmUuYy0zNDM0LV9fd2VhayBib29sIGJwZl9hcmVuYV9oYW5kbGVfcGFnZV9mYXVsdCh1bnNpZ25lZCBsb25nIGFkZHIsIGJvb2wgaXNfd3JpdGUsXFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYz0zNDU5PUVYUE9SVF9UUkFDRVBPSU5UX1NZTUJPTF9HUEwoeGRwX2J1bGtfdHgpO1xcbmtlcm5lbC9icGYvY29yZS5jLTM0NjAtXFxua2VybmVsL2JwZi9jb3JlLmM6MzQ2MTojaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXFxua2VybmVsL2JwZi9jb3JlLmMtMzQ2Mi1cXG4tLVxcbmtlcm5lbC9icGYvZml4dXBzLmM9MTI3PXN0YXRpYyBpbnQgYWRkX2tmdW5jX2luX2luc25zKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuLS1cXG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTE0MS1cXG5rZXJuZWwvYnBmL2ZpeHVwcy5jOjE0MjojaWZuZGVmIENPTkZJR19CUEZfSklUX0FMV0FZU19PTlxcbmtlcm5lbC9icGYvZml4dXBzLmMtMTQzLXN0YXRpYyBpbnQgZ2V0X2NhbGxlZV9zdGFja19kZXB0aChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbi0tXFxua2VybmVsL2JwZi9maXh1cHMuYz0xMzc2PWludCBicGZfZml4dXBfY2FsbF9hcmdzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXFxua2VybmVsL2JwZi9maXh1cHMuYy0xMzc3LXtcXG5rZXJuZWwvYnBmL2ZpeHVwcy5jOjEzNzg6I2lmbmRlZiBDT05GSUdfQlBGX0pJVF9BTFdBWVNfT05cXG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTEzNzktXFx0c3RydWN0IGJwZl9wcm9nICpwcm9nID0gZW52LVxcdTAwM2Vwcm9nO1xcbi0tXFxua2VybmVsL2JwZi9maXh1cHMuYy0xNDA0LVxcdH1cXG5rZXJuZWwvYnBmL2ZpeHVwcy5jOjE0MDU6I2lmbmRlZiBDT05GSUdfQlBGX0pJVF9BTFdBWVNfT05cXG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTE0MDYtXFx0aWYgKHByb2ctXFx1MDAzZWppdF9yZXF1aXJlZCkge1xcbi0tXFxua2VybmVsL2JwZi9oZWxwZXJzLmM9Mjc2PWNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfZ2V0X2N1cnJlbnRfY29tbV9wcm90byA9IHtcXG4tLVxcbmtlcm5lbC9icGYvaGVscGVycy5jLTI4My1cXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzoyODQ6I2lmIGRlZmluZWQoQ09ORklHX1FVRVVFRF9TUElOTE9DS1MpIHx8IGRlZmluZWQoQ09ORklHX0JQRl9BUkNIX1NQSU5MT0NLKVxcbmtlcm5lbC9icGYvaGVscGVycy5jLTI4NS1cXG4tLVxcbmtlcm5lbC9icGYvaGVscGVycy5jPTQ4NDk9QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl90aHJvdylcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0ODUwOiNpZmRlZiBDT05GSUdfQlBGX0VWRU5UU1xcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ4NTEtQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zZW5kX3NpZ25hbF90YXNrKVxcbi0tXFxua2VybmVsL2JwZi9oZWxwZXJzLmM9NDkyOT1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2xvY2FsX2lycV9yZXN0b3JlKVxcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ5MzA6I2lmZGVmIENPTkZJR19CUEZfRVZFTlRTXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDkzMS1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3Byb2JlX3JlYWRfdXNlcl9keW5wdHIpXFxuLS1cXG5rZXJuZWwvYnBmL2hlbHBlcnMuYz00OTYwPUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RybmNhc2VzdHIpO1xcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ5NjE6I2lmIGRlZmluZWQoQ09ORklHX0JQRl9MU00pIFxcdTAwMjZcXHUwMDI2IGRlZmluZWQoQ09ORklHX0NHUk9VUFMpXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDk2Mi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2Nncm91cF9yZWFkX3hhdHRyLCBLRl9SQ1UpXFxuLS1cXG5rZXJuZWwvYnBmL3ByZWxvYWQvTWFrZWZpbGU9Mz1MSUJCUEZfSU5DTFVERSA9ICQoc3JjdHJlZSkvdG9vbHMvbGliXFxua2VybmVsL2JwZi9wcmVsb2FkL01ha2VmaWxlLTQtXFxua2VybmVsL2JwZi9wcmVsb2FkL01ha2VmaWxlOjU6b2JqLSQoQ09ORklHX0JQRl9QUkVMT0FEX1VNRCkgKz0gYnBmX3ByZWxvYWQub1xcbmtlcm5lbC9icGYvcHJlbG9hZC9NYWtlZmlsZS02LUNGTEFHU19icGZfcHJlbG9hZF9rZXJuLm8gKz0gLUkkKExJQkJQRl9JTkNMVURFKVxcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmM9Njg9aW50IHN5c2N0bF91bnByaXZpbGVnZWRfYnBmX2Rpc2FibGVkIF9fcmVhZF9tb3N0bHkgPVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjY5OlxcdElTX0JVSUxUSU4oQ09ORklHX0JQRl9VTlBSSVZfREVGQVVMVF9PRkYpID8gMiA6IDA7XFxua2VybmVsL2JwZi9zeXNjYWxsLmMtNzAtXFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz02NDk5PWludCBrZXJuX3N5c19icGYoaW50IGNtZCwgdW5pb24gYnBmX2F0dHIgKmF0dHIsIHVuc2lnbmVkIGludCBzaXplKVxcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtNjUwNC1cXHRzd2l0Y2ggKGNtZCkge1xcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjY1MDU6I2lmZGVmIENPTkZJR19CUEZfSklUIC8qIF9fYnBmX3Byb2dfZW50ZXJfc2xlZXBhYmxlIHVzZWQgYnkgdHJhbXBvbGluZSBhbmQgSklUICovXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtNjUwNi1cXHRjYXNlIEJQRl9QUk9HX1RFU1RfUlVOOlxcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9OTgzPWludCBicGZfdHJhbXBvbGluZV91bmxpbmtfcHJvZyhzdHJ1Y3QgYnBmX3RyYW1wX25vZGUgKm5vZGUsXFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy05OTQtXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6OTk1OiNpZiBkZWZpbmVkKENPTkZJR19DR1JPVVBfQlBGKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKENPTkZJR19CUEZfTFNNKVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTk5Ni1zdGF0aWMgdm9pZCBicGZfc2hpbV90cmFtcF9saW5rX3JlbGVhc2Uoc3RydWN0IGJwZl9saW5rICpsaW5rKVxcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9MTQ2Nz1pbnQgX193ZWFrIGFyY2hfYnBmX3RyYW1wb2xpbmVfc2l6ZShjb25zdCBzdHJ1Y3QgYnRmX2Z1bmNfbW9kZWwgKm0sIHUzMiBmbGFncyxcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE0NzQtICAgIGRlZmluZWQoQ09ORklHX0hBVkVfU0lOR0xFX0ZUUkFDRV9ESVJFQ1RfT1BTKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6MTQ3NTogICAgZGVmaW5lZChDT05GSUdfQlBGX1NZU0NBTEwpXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTQ3Ni1cXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTE3MTI9aW50IGJwZl90cmFtcG9saW5lX211bHRpX2RldGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHN0cnVjdCBicGZfdHJhY2luZ19tdWx0aV9saW5rICpsaW5rKVxcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTc0OC1cXHQgIENPTkZJR19IQVZFX1NJTkdMRV9GVFJBQ0VfRElSRUNUX09QUyBcXHUwMDI2XFx1MDAyNlxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjE3NDk6XFx0ICBDT05GSUdfQlBGX1NZU0NBTEwgKi9cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNzUwLVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTQ0NjA9QlRGX0lEKHN0cnVjdCwgY2dyb3VwKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy00NDYxLSNlbmRpZlxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo0NDYyOiNpZmRlZiBDT05GSUdfQlBGX0pJVFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy00NDYzLUJURl9JRChzdHJ1Y3QsIGJwZl9jcHVtYXNrKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTExMjE1PUJURl9JRF9VTlVTRURcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyMTYtI2VuZGlmXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjE3OiNpZmRlZiBDT05GSUdfQlBGX0VWRU5UU1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTIxOC1CVEZfSUQoZnVuYywgYnBmX3Nlc3Npb25fY29va2llKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTExMjI3PUJURl9JRChmdW5jLCBicGZfaXRlcl9udW1fZGVzdHJveSlcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyMjg6I2lmZGVmIENPTkZJR19CUEZfTFNNXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjI5LUJURl9JRChmdW5jLCBicGZfc2V0X2RlbnRyeV94YXR0cilcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTI0Nj1CVEZfSUQoZnVuYywgYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXMpXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjQ3OiNpZmRlZiBDT05GSUdfQlBGX0VWRU5UU1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTI0OC1CVEZfSUQoZnVuYywgYnBmX3Nlc3Npb25faXNfcmV0dXJuKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQxNTowNzozNS4wNTM0Nzc0ODFaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIzNjgwNjAzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gcmVhc29uaW5nOlxuXG4qKkJURiBDb25maWd1cmF0aW9uIERlZXAgRGl2ZSoqXG5cbkFscmlnaHQsIHNvIHRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24gaXRlbSB3ZSdyZSBjb25jZXJuZWQgd2l0aCBmb3IgQlRGIGlzLCBvZiBjb3Vyc2UsIGBDT05GSUdfQlBGX1NZU0NBTExgLiBUaGF0J3MgdGhlIGxpbmNocGluLCB0aGUgYmlnIG9uZS4gQnV0LCBrbm93aW5nIGhvdyB0aGVzZSB0aGluZ3MgdGVuZCB0byBpbnRlcndlYXZlLCBJIG5lZWQgdG8gbWFrZSAqYWJzb2x1dGVseSogc3VyZSB3ZSBoYXZlbid0IG1pc3NlZCBhbnkgb3RoZXIgY29uZmlnIG9wdGlvbnMgdGhhdCBtaWdodCBzdWJ0bHkgaW5mbHVlbmNlIHRoZSBiZWhhdmlvciBvciBhdmFpbGFiaWxpdHkgb2YgQlRGIHN1cHBvcnQgd2l0aGluIHRoZSBrZXJuZWwuIEkgbmVlZCB0byBkbyBhIHRob3JvdWdoIGNoZWNrIHRvIGF2b2lkIGFueSB1bmV4cGVjdGVkIGludGVyYWN0aW9ucyBvciBkZXBlbmRlbmNpZXMuIFRpbWUgdG8gZGlnIGRlZXBlciBhbmQgc2VlIHdoYXQgZWxzZSBjb3VsZCBiZSBsdXJraW5nLi4uIEkgbmVlZCB0byBjb25zaWRlciBhbGwgYW5nbGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTM1NSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDE1OjA3OjM4LjI5MDI4NjIxM1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjE3ODQ1MjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQ09ORklHX0RFQlVHX0lORk9fQlRGXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvTWFrZWZpbGU9NDA9aWZlcSAoJChDT05GSUdfU1lTRlMpLHkpXFxua2VybmVsL2JwZi9NYWtlZmlsZTo0MTpvYmotJChDT05GSUdfREVCVUdfSU5GT19CVEYpICs9IHN5c2ZzX2J0Zi5vXFxua2VybmVsL2JwZi9NYWtlZmlsZS00Mi1lbmRpZlxcbi0tXFxua2VybmVsL2JwZi9idGYuYz02Mzg2PXN0YXRpYyBzdHJ1Y3QgYnRmICpidGZfcGFyc2VfYmFzZShzdHJ1Y3QgYnRmX3ZlcmlmaWVyX2VudiAqZW52LCBjb25zdCBjaGFyICpuYW1lLFxcbi0tXFxua2VybmVsL2JwZi9idGYuYy02MzkxLVxcbmtlcm5lbC9icGYvYnRmLmM6NjM5MjpcXHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0RFQlVHX0lORk9fQlRGKSlcXG5rZXJuZWwvYnBmL2J0Zi5jLTYzOTMtXFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVOT0VOVCk7XFxuLS1cXG5rZXJuZWwvYnBmL2J0Zi5jPTY0NzI9c3RhdGljIF9fdTMyIGJ0Zl9yZWxvY2F0ZV9pZChjb25zdCBzdHJ1Y3QgYnRmICpidGYsIF9fdTMyIGlkKVxcbi0tXFxua2VybmVsL2JwZi9idGYuYy02NDc4LVxcbmtlcm5lbC9icGYvYnRmLmM6NjQ3OTojaWZkZWYgQ09ORklHX0RFQlVHX0lORk9fQlRGX01PRFVMRVNcXG5rZXJuZWwvYnBmL2J0Zi5jLTY0ODAtXFxua2VybmVsL2JwZi9idGYuYz02NDgxPXN0YXRpYyBzdHJ1Y3QgYnRmICpidGZfcGFyc2VfbW9kdWxlKGNvbnN0IGNoYXIgKm1vZHVsZV9uYW1lLCBjb25zdCB2b2lkICpkYXRhLFxcbi0tXFxua2VybmVsL2JwZi9idGYuYy02NTc2LVxcbmtlcm5lbC9icGYvYnRmLmM6NjU3NzojZW5kaWYgLyogQ09ORklHX0RFQlVHX0lORk9fQlRGX01PRFVMRVMgKi9cXG5rZXJuZWwvYnBmL2J0Zi5jLTY1NzgtXFxuLS1cXG5rZXJuZWwvYnBmL2J0Zi5jPTg0NjU9ZW51bSB7XFxuLS1cXG5rZXJuZWwvYnBmL2J0Zi5jLTg0NjgtXFxua2VybmVsL2JwZi9idGYuYzo4NDY5OiNpZmRlZiBDT05GSUdfREVCVUdfSU5GT19CVEZfTU9EVUxFU1xcbmtlcm5lbC9icGYvYnRmLmMtODQ3MC1zdHJ1Y3QgYnRmX21vZHVsZSB7XFxuLS1cXG5rZXJuZWwvYnBmL2J0Zi5jPTg2MDc9ZnNfaW5pdGNhbGwoYnRmX21vZHVsZV9pbml0KTtcXG5rZXJuZWwvYnBmL2J0Zi5jOjg2MDg6I2VuZGlmIC8qIENPTkZJR19ERUJVR19JTkZPX0JURl9NT0RVTEVTICovXFxua2VybmVsL2JwZi9idGYuYy04NjA5LVxcbmtlcm5lbC9icGYvYnRmLmM9ODYxMD1zdHJ1Y3QgbW9kdWxlICpidGZfdHJ5X2dldF9tb2R1bGUoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmKVxcbi0tXFxua2VybmVsL2JwZi9idGYuYy04NjEyLVxcdHN0cnVjdCBtb2R1bGUgKnJlcyA9IE5VTEw7XFxua2VybmVsL2JwZi9idGYuYzo4NjEzOiNpZmRlZiBDT05GSUdfREVCVUdfSU5GT19CVEZfTU9EVUxFU1xcbmtlcm5lbC9icGYvYnRmLmMtODYxNC1cXHRzdHJ1Y3QgYnRmX21vZHVsZSAqYnRmX21vZCwgKnRtcDtcXG4tLVxcbmtlcm5lbC9icGYvYnRmLmM9ODY0MD1zdGF0aWMgc3RydWN0IGJ0ZiAqYnRmX2dldF9tb2R1bGVfYnRmKGNvbnN0IHN0cnVjdCBtb2R1bGUgKm1vZHVsZSlcXG5rZXJuZWwvYnBmL2J0Zi5jLTg2NDEte1xcbmtlcm5lbC9icGYvYnRmLmM6ODY0MjojaWZkZWYgQ09ORklHX0RFQlVHX0lORk9fQlRGX01PRFVMRVNcXG5rZXJuZWwvYnBmL2J0Zi5jLTg2NDMtXFx0c3RydWN0IGJ0Zl9tb2R1bGUgKmJ0Zl9tb2QsICp0bXA7XFxuLS1cXG5rZXJuZWwvYnBmL2J0Zi5jLTg2NTMtXFxua2VybmVsL2JwZi9idGYuYzo4NjU0OiNpZmRlZiBDT05GSUdfREVCVUdfSU5GT19CVEZfTU9EVUxFU1xcbmtlcm5lbC9icGYvYnRmLmMtODY1NS1cXHRtdXRleF9sb2NrKFxcdTAwMjZidGZfbW9kdWxlX211dGV4KTtcXG4tLVxcbmtlcm5lbC9icGYvYnRmLmM9ODY3MD1zdGF0aWMgaW50IGNoZWNrX2J0Zl9rY29uZmlncyhjb25zdCBzdHJ1Y3QgbW9kdWxlICptb2R1bGUsIGNvbnN0IGNoYXIgKmZlYXR1cmUpXFxua2VybmVsL2JwZi9idGYuYy04NjcxLXtcXG5rZXJuZWwvYnBmL2J0Zi5jOjg2NzI6XFx0aWYgKCFtb2R1bGUgXFx1MDAyNlxcdTAwMjYgSVNfRU5BQkxFRChDT05GSUdfREVCVUdfSU5GT19CVEYpKSB7XFxua2VybmVsL2JwZi9idGYuYy04NjczLVxcdFxcdHByX2VycihcXFwibWlzc2luZyB2bWxpbnV4IEJURiwgY2Fubm90IHJlZ2lzdGVyICVzXFxcXG5cXFwiLCBmZWF0dXJlKTtcXG4tLVxcbmtlcm5lbC9icGYvYnRmLmMtODY3NS1cXHR9XFxua2VybmVsL2JwZi9idGYuYzo4Njc2OlxcdGlmIChtb2R1bGUgXFx1MDAyNlxcdTAwMjYgSVNfRU5BQkxFRChDT05GSUdfREVCVUdfSU5GT19CVEZfTU9EVUxFUykpXFxua2VybmVsL2JwZi9idGYuYy04Njc3LVxcdFxcdHByX3dhcm4oXFxcIm1pc3NpbmcgbW9kdWxlIEJURiwgY2Fubm90IHJlZ2lzdGVyICVzXFxcXG5cXFwiLCBmZWF0dXJlKTtcXG4tLVxcbmtlcm5lbC9icGYvYnRmLmM9ODgxNz1zdGF0aWMgaW50IGJ0Zl9jaGVja19rZnVuY19uYW1lKHN0cnVjdCBidGYgKmJ0ZiwgY29uc3QgY2hhciAqZnVuY19uYW1lLCB1MzIga2luZClcXG5rZXJuZWwvYnBmL2J0Zi5jLTg4MTgte1xcbmtlcm5lbC9icGYvYnRmLmM6ODgxOTojaWZkZWYgQ09ORklHX0RFQlVHX0lORk9fQlRGX01PRFVMRVNcXG5rZXJuZWwvYnBmL2J0Zi5jLTg4MjAtXFx0c3RydWN0IGJ0Zl9tb2R1bGUgKmJ0Zl9tb2QsICp0bXA7XFxuLS1cXG5rZXJuZWwvYnBmL2J0Zi5jLTg4MzMtXFxua2VybmVsL2JwZi9idGYuYzo4ODM0OiNpZmRlZiBDT05GSUdfREVCVUdfSU5GT19CVEZfTU9EVUxFU1xcbmtlcm5lbC9icGYvYnRmLmMtODgzNS1cXHRndWFyZChtdXRleCkoXFx1MDAyNmJ0Zl9tb2R1bGVfbXV0ZXgpO1xcbi0tXFxua2VybmVsL2JwZi9idGYuYz05NDgyPXN0YXRpYyBzdHJ1Y3QgYnBmX2NhbmRfY2FjaGUgKnBvcHVsYXRlX2NhbmRfY2FjaGUoc3RydWN0IGJwZl9jYW5kX2NhY2hlICpjYW5kcyxcXG4tLVxcbmtlcm5lbC9icGYvYnRmLmMtOTUwOS1cXG5rZXJuZWwvYnBmL2J0Zi5jOjk1MTA6I2lmZGVmIENPTkZJR19ERUJVR19JTkZPX0JURl9NT0RVTEVTXFxua2VybmVsL2JwZi9idGYuYy05NTExLXN0YXRpYyB2b2lkIF9fcHVyZ2VfY2FuZF9jYWNoZShzdHJ1Y3QgYnRmICpidGYsIHN0cnVjdCBicGZfY2FuZF9jYWNoZSAqKmNhY2hlLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTI3NDM9aW50IGJwZl9hZGRfa2Z1bmNfY2FsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCB1MzIgZnVuY19pZCwgdTE2IG9mZnNldClcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yNzU4LVxcdFxcdGlmICghYnRmX3ZtbGludXgpIHtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6Mjc1OTpcXHRcXHRcXHR2ZXJib3NlKGVudiwgXFxcImNhbGxpbmcga2VybmVsIGZ1bmN0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aG91dCBDT05GSUdfREVCVUdfSU5GT19CVEZcXFxcblxcXCIpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yNzYwLVxcdFxcdFxcdHJldHVybiAtRU5PVFNVUFA7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NTk2OT1zdGF0aWMgaW50IGNoZWNrX3B0cl90b19tYXBfYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTk4My1cXHRpZiAoIWJ0Zl92bWxpbnV4KSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjU5ODQ6XFx0XFx0dmVyYm9zZShlbnYsIFxcXCJtYXBfcHRyIGFjY2VzcyBub3Qgc3VwcG9ydGVkIHdpdGhvdXQgQ09ORklHX0RFQlVHX0lORk9fQlRGXFxcXG5cXFwiKTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTk4NS1cXHRcXHRyZXR1cm4gLUVOT1RTVVBQO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTE3Nzc3PXN0YXRpYyBpbnQgY2hlY2tfcHNldWRvX2J0Zl9pZChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE3NzkzLVxcdFxcdGlmICghYnRmX3ZtbGludXgpIHtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTc3OTQ6XFx0XFx0XFx0dmVyYm9zZShlbnYsIFxcXCJrZXJuZWwgaXMgbWlzc2luZyBCVEYsIG1ha2Ugc3VyZSBDT05GSUdfREVCVUdfSU5GT19CVEY9eSBpcyBzcGVjaWZpZWQgaW4gS2NvbmZpZy5cXFxcblxcXCIpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNzc5NS1cXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xOTYyMj1zdHJ1Y3QgYnRmICpicGZfZ2V0X2J0Zl92bWxpbnV4KHZvaWQpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk2MjYtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5NjI3OlxcdGlmICghYnRmIFxcdTAwMjZcXHUwMDI2IElTX0VOQUJMRUQoQ09ORklHX0RFQlVHX0lORk9fQlRGKSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTYyOC1cXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZidGZfdm1saW51eF9sb2NrKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMTU6MDc6MzguMzUyMDc2MjEyWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYxOTE5MjAxMzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEJURiBMb2FkaW5nIGFuZCBgYnRmX3BhcnNlX2ZpZWxkc2AqKlxuXG5Pa2F5LCBzbyBgQ09ORklHX0RFQlVHX0lORk9fQlRGYCBpcyBvYnZpb3VzbHkgcmVsZXZhbnQgZm9yIGdlbmVyYXRpbmcgdGhlIHZtbGludXggQlRGIGRhdGEsIGJ1dCB0aGF0J3Mgbm90IHRoZSBjb3JlIG9mIHRoZSB0ZXN0LiBUaGUgdGVzdCBjYXNlIEknbSBmb2N1c2luZyBvbiBzZWVtcyB0byB1dGlsaXplIGVpdGhlciBgQlBGX1BST0dfVEVTVF9SVU5gIG9yIGxvYWRzIHRoZSBCVEYgZGlyZWN0bHkgdXNpbmcgYGJwZihCUEZfQlRGX0xPQUQsIC4uLilgLiBBbmQgcmVtZW1iZXIsIGBCUEZfQlRGX0xPQURgIGhhcyBhIGRlcGVuZGVuY3k6IGl0IHJlcXVpcmVzIGBDT05GSUdfQlBGX1NZU0NBTExgIHRvIGJlIGVuYWJsZWQuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIGhvdyBpdCBsb2FkcyByYXcgQlRGIGRhdGEgZnJvbSBhIGZpbGUsIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoYXQgc3lzY2FsbC4gVGhlIHRlc3QgaXRzZWxmIHJlc2lkZXMgaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zi5jYC4gVGhhdCB0ZWxscyBtZSBJIHNob3VsZCBmb2N1cyBvbiB0aGF0IHRlc3QncyB1c2Ugb2YgYEJQRl9CVEZfTE9BRGAgYW5kIHJhdyBCVEYgZGF0YS4gU2luY2UgaXQncyBhIHRlc3Qgb2YgdGhlIGxvYWRpbmcgbWVjaGFuaXNtLCBgQ09ORklHX0JQRl9TWVNDQUxMYCBzZWVtcyB0byBiZSB0aGUgY3JpdGljYWwgcHJlcmVxdWlzaXRlIGhlcmUuXG5cbk5vdywgbGV0J3MgcmVmb2N1cyBvbiB0aGUgZnVuY3Rpb24gSSdtIGNvbnNpZGVyaW5nLiBJcyBgYnRmX3BhcnNlX2ZpZWxkc2AgdGhlIHJpZ2h0IHN5bWJvbCB0byBmb2N1cyBvbj8gSSBuZWVkIHRvIGFuYWx5emUgaXRzIGNhbGwgcGF0aHMuIEl0IGFwcGVhcnMgdGhhdCBgYnRmX3BhcnNlX2ZpZWxkc2AgaXMgY2FsbGVkIGJ5IGBtYXBfY2hlY2tfYnRmYCBhbmQgYGJ0Zl9wYXJzZV9zdHJ1Y3RfbWV0YXNgLiBgbWFwX2NoZWNrX2J0ZmAgaXMgaW52b2tlZCBieSBgbWFwX2NyZWF0ZV9hbGxvY2AsIHNwZWNpZmljYWxseSB3aGVuIGEgbWFwIGlzIGJlaW5nIGNyZWF0ZWQgYW5kIEJURiBpcyBpbnZvbHZlZC4gQW5kLCBgYnRmX3BhcnNlX3N0cnVjdF9tZXRhc2AgaXMgY2FsbGVkIGJ5IGBidGZfcGFyc2VgIHdoZW4gQlRGIGlzIGxvYWRlZC4gSG9sZCBvbiwgYGJ0Zl9wYXJzZV9zdHJ1Y3RfbWV0YXNgIGlzIHBhcnNpbmcgdGhlIG1ldGFkYXRhICp3aXRoaW4qIHRoZSBCVEYgaXRzZWxmISBUaGF0IG1ha2VzIGl0IGFuIGludGVyZXN0aW5nIHN5bWJvbCB0byB0cmFjZS4gSSdtIGdvaW5nIHRvIHJldmlzaXQgYGJ0Zl9wYXJzZV9zdHJ1Y3RfbWV0YXNgIHRvIHVuZGVyc3RhbmQgdGhhdCBiZXR0ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxNTIyLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjg2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDE1OjA3OjQ0LjU0Mzk5ODcxMloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTgzMjYyNDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnRmX3BhcnNlX3N0cnVjdF9tZXRhc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL2J0Zi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvYnRmLmM9NTc3OT1zdGF0aWMgc3RydWN0IGJ0Zl9zdHJ1Y3RfbWV0YXMgKlxcbmtlcm5lbC9icGYvYnRmLmM6NTc4MDpidGZfcGFyc2Vfc3RydWN0X21ldGFzKHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csIHN0cnVjdCBidGYgKmJ0ZilcXG5rZXJuZWwvYnBmL2J0Zi5jLTU3ODEte1xcbi0tXFxua2VybmVsL2JwZi9idGYuYz01OTUwPXN0YXRpYyBzdHJ1Y3QgYnRmICpidGZfcGFyc2UoY29uc3QgdW5pb24gYnBmX2F0dHIgKmF0dHIsIGJwZnB0cl90IHVhdHRyLFxcbi0tXFxua2VybmVsL2JwZi9idGYuYy02MDE3LVxcbmtlcm5lbC9icGYvYnRmLmM6NjAxODpcXHRzdHJ1Y3RfbWV0YV90YWIgPSBidGZfcGFyc2Vfc3RydWN0X21ldGFzKFxcdTAwMjZlbnYtXFx1MDAzZWxvZywgYnRmKTtcXG5rZXJuZWwvYnBmL2J0Zi5jLTYwMTktXFx0aWYgKElTX0VSUihzdHJ1Y3RfbWV0YV90YWIpKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDE1OjA3OjQ0LjYwMjMzNDU4WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0OTUxMDAxOTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRm9jdXNpbmcgb24gQlRGIFBhcnNpbmcqKlxuXG5Pa2F5LCBzbyAqYnRmXFxfcGFyc2VcXF9zdHJ1Y3RcXF9tZXRhcyogZ2V0cyBjYWxsZWQgZnJvbSAqYnRmXFxfcGFyc2UqLCBhbmQgdGhhdCdzIGNhbGxlZCBkdXJpbmcgKkJQRlxcX0JURlxcX0xPQUQqLiBSaWdodCwgdGhhdCBtYWtlcyBpdCBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgZGlnZ2luZyBpbnRvLiBUaGUgdGVzdCBpbiAqdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dcXF90ZXN0cy9idGYuYyogYWN0dWFsbHkgdXNlcyAqQlBGXFxfQlRGXFxfTE9BRCosIHNvIHdlJ3ZlIGdvdCBhIGRpcmVjdCBsaW5rIHRoZXJlLiAqYnRmXFxfcGFyc2VcXF9zdHJ1Y3RcXF9tZXRhcyogc2VlbXMgbGlrZSBhbiBleGNlbGxlbnQgZm9jdXMgc3ltYm9sLiBIbW0sIGJ1dCBoYW5nIG9u4oCmIGl0J3Mgc3RhdGljLiBDYW4gd2UgZXZlbiB1c2Ugc3RhdGljIGZ1bmN0aW9ucyBsaWtlIHRoYXQ/IEFoLCB5ZXMsIHN5emthbGxlciAqZG9lcyogc3VwcG9ydCB0aG9zZSwgYXMgbG9uZyBhcyBpdCdzIHVuaXF1ZWx5IGlkZW50aWZpYWJsZSBvciB3ZSBjYW4ganVzdCBzcGVjaWZ5IHRoZSBuYW1lLCBhbmQgd2l0aCB0aGlzIG9uZSBiZWluZyBjYWxsZWQgZHVyaW5nIGEgc3BlY2lmaWMgZnVuY3Rpb24gaXQgaXMuIFdhaXQgYSBtaW51dGUsICpidGZcXF9wYXJzZVxcX2ZpZWxkcyogaXMgZ2xvYmFsLCBldmVuIGJldHRlciB0aGVuLCBsZXQgbWUgY29uZmlybS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI1MDQsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMTU6MDc6NDkuMDk3NDM2OTY2WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDQxMDcwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJidGZfcGFyc2VfZmllbGRzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvYnRmLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9idGYuYz00MTA4PXN0YXRpYyBpbnQgYnRmX2ZpZWxkX2NtcChjb25zdCB2b2lkICpfYSwgY29uc3Qgdm9pZCAqX2IsIGNvbnN0IHZvaWQgKnByaXYpXFxuLS1cXG5rZXJuZWwvYnBmL2J0Zi5jLTQxMTktXFxua2VybmVsL2JwZi9idGYuYzo0MTIwOnN0cnVjdCBidGZfcmVjb3JkICpidGZfcGFyc2VfZmllbGRzKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgY29uc3Qgc3RydWN0IGJ0Zl90eXBlICp0LFxcbmtlcm5lbC9icGYvYnRmLmMtNDEyMS1cXHRcXHRcXHRcXHQgICAgdTMyIGZpZWxkX21hc2ssIHUzMiB2YWx1ZV9zaXplKVxcbi0tXFxua2VybmVsL2JwZi9idGYuYz01NzgwPWJ0Zl9wYXJzZV9zdHJ1Y3RfbWV0YXMoc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZywgc3RydWN0IGJ0ZiAqYnRmKVxcbi0tXFxua2VybmVsL2JwZi9idGYuYy01ODgwLVxcdFxcdHR5cGUtXFx1MDAzZWJ0Zl9pZCA9IGk7XFxua2VybmVsL2JwZi9idGYuYzo1ODgxOlxcdFxcdHJlY29yZCA9IGJ0Zl9wYXJzZV9maWVsZHMoYnRmLCB0LCBCUEZfU1BJTl9MT0NLIHwgQlBGX1JFU19TUElOX0xPQ0sgfCBCUEZfTElTVF9IRUFEIHwgQlBGX0xJU1RfTk9ERSB8XFxua2VybmVsL2JwZi9idGYuYy01ODgyLVxcdFxcdFxcdFxcdFxcdFxcdCAgQlBGX1JCX1JPT1QgfCBCUEZfUkJfTk9ERSB8IEJQRl9SRUZDT1VOVCB8XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDE1OjA3OjQ5LjE1MTg1MzcxNVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MzY2OTQyODI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIGEgQlBGIEJURiBQYXJzaW5nIEJ1ZyBGaXgqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIHBhdGNoIHJlbGF0ZWQgdG8gQlRGIChCUEYgVHlwZSBGb3JtYXQpIHBhcnNpbmcgd2l0aGluIHRoZSBrZXJuZWwsIGFuZCBoZXJlJ3MgbXkgYnJlYWtkb3duIG9mIHdoYXQncyBnb2luZyBvbi4gRmlyc3QsIGBidGZfcGFyc2VfZmllbGRzYCBpcyBhIGdsb2JhbGx5IGFjY2Vzc2libGUgZnVuY3Rpb24sIHdoaWNoIG1ha2VzIGl0IGEgZ29vZCBjZW50cmFsIHBvaW50IHRvIGludmVzdGlnYXRlLiBJdCdzIG5vdCBkZWNsYXJlZCBzdGF0aWMsIHdoaWNoIGlzIGdvb2QgdG8ga25vdyBmb3IgcmVhY2hhYmlsaXR5LlxuXG5JIGFsc28gc2VlIGEgZmV3IG90aGVyIHJlbGF0ZWQgZnVuY3Rpb25zIGludm9sdmVkIGxpa2UgYGJ0Zl9maW5kX3N0cnVjdF9maWVsZGAsIGBidGZfZmluZF9uZXN0ZWRfc3RydWN0YCwgYGJ0Zl9maW5kX2RhdGFzZWNfdmFyYCwgYGJ0Zl9maW5kX2ZpZWxkX29uZWAsIGFuZCBgYnRmX2ZpbmRfZmllbGRgLiBTaW5jZSB3ZSdyZSBkZWFsaW5nIHdpdGggZmllbGQgcGFyc2luZywgSSdsbCBkZWZpbml0ZWx5IGtlZXAgdGhvc2UgaW4gbWluZC4gV2Ugc2hvdWxkIHByb2JhYmx5IGZvY3VzIG91ciBhdHRlbnRpb24gb24gYGJ0Zl9wYXJzZV9maWVsZHNgIGFuZCBgYnRmX3BhcnNlX3N0cnVjdF9tZXRhc2AuXG5cbkxvb2tpbmcgY2xvc2VyIGF0IHRoZSBwYXRjaCwgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSB3aXRoaW4gYGJ0Zl9maW5kX3N0cnVjdF9maWVsZGAuIEl0IGxvb2tzIGxpa2UgdGhlcmUncyBhIHByb2JsZW0gd2hlcmUgZHVwbGljYXRlIGZpZWxkcyB0aGF0IHNob3VsZCBiZSB1bmlxdWUsIHN1Y2ggYXMgYGJwZl9zcGluX2xvY2tgLCBjb3VsZCBiZSBuZXN0ZWQgZGVlcGx5IHdpdGhpbiBzdHJ1Y3RzLCBhbmQgdGhlIGV4aXN0aW5nIGBzZWVuX21hc2tgIGNoZWNrIHdvdWxkbid0IGNhdGNoIHRoZXNlIGR1cGxpY2F0ZXMgcHJvcGVybHkuIFRoZSBmaXggaW52b2x2ZXMgcGFzc2luZyBhIHBvaW50ZXIgdG8gdGhlIGBzZWVuX21hc2tgIHZhcmlhYmxlLCBzbyB0aGF0IGFsbCBuZXN0ZWQgbGV2ZWxzIHVzZSB0aGUgc2FtZSBgc2Vlbl9tYXNrYCwgd2hpY2ggc2hvdWxkIHNvbHZlIHRoZSBkdXBsaWNhdGUgZmllbGQgaXNzdWUuXG5cblRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgZGlyZWN0bHkgcmVsYXRlZCB0byB0aGUgQlBGIHN1YnN5c3RlbSwgc3BlY2lmaWNhbGx5IEJURiBwYXJzaW5nIGFuZCB2YWxpZGF0aW9uLiBHaXZlbiB0aGF0LCBpdCAqc2hvdWxkKiBiZSByZWFjaGFibGUgdmlhIHRoZSBgYnBmKClgIHN5c2NhbGwuIFNvIHdlIGNhbiBpbnRlcmFjdCB3aXRoIGl0IHZpYSBgQlBGX0JURl9MT0FEYCBmb3IgZXhhbXBsZS5cblxuVG8gZW5zdXJlIHRoaXMgaXMgdGVzdGFibGUgYW5kIHJlYWNoYWJsZSwgSSBzaG91bGQgbWFrZSBzdXJlIHRoZSBgQlBGX1NZU0NBTExgIGNvbmZpZyBpcyBlbmFibGVkLiBJdCBsb29rcyBsaWtlIHRoYXQgaXMgdGhlIGNvcnJlY3QgY29uZmlnIHRvIGFsbG93IHRoZSBgYnBmKClgIHN5c2NhbGwgYW5kIGVuYWJsZSBCVEYgcGFyc2luZy4gTGV0IG1lIGRvdWJsZSBjaGVjay4uLiBZZXMsIGl0IGFwcGVhcnMgdGhhdCBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyBpbmRlZWQgdGhlIG1haW4gY29uZmlnIG5lZWRlZCB0byBleHBvc2UgdGhpcyBmdW5jdGlvbmFsaXR5LiBPa2F5LCBJJ20gY29uZmlkZW50LiBUaW1lIHRvIHN1Ym1pdCB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzI0OCwiT3V0cHV0VG9rZW5zIjoxNzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMTU6MDc6NTcuNTE4Nzk4NjE5WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODQ5NDQ4NjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnRmX3BhcnNlX2ZpZWxkc1wiLFxuICAgIFwiYnRmX3BhcnNlX3N0cnVjdF9tZXRhc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIEJURiBwYXJzaW5nIHdoZXJlIGR1cGxpY2F0ZSB1bmlxdWUgZmllbGRzIChsaWtlIGBicGZfc3Bpbl9sb2NrYCkgY291bGQgYmUgbmVzdGVkIGluIHN0cnVjdHMsIGFuZCB0aGUgYHNlZW5fbWFza2AgY2hlY2sgd291bGRuJ3QgY2F0Y2ggaXQgYmVjYXVzZSBlYWNoIGxldmVsIG9mIG5lc3RpbmcgaGFkIGl0cyBvd24gYHNlZW5fbWFza2AuIFBhc3NpbmcgYSBwb2ludGVyIHRvIGBzZWVuX21hc2tgIGZpeGVzIHRoaXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgQlBGIHN1YnN5c3RlbSwgc3BlY2lmaWNhbGx5IGluIEJURiBwYXJzaW5nL3ZhbGlkYXRpb24sIHdoaWNoIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgdmlhIHRoZSBgYnBmKClgIHN5c2NhbGwgKGUuZy4sIGBCUEZfQlRGX0xPQURgIG9yIG1hcCBjcmVhdGlvbikuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJidGZfcGFyc2VfZmllbGRzXCIsXG4gICAgXCJidGZfcGFyc2Vfc3RydWN0X21ldGFzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gQlRGIHBhcnNpbmcgd2hlcmUgZHVwbGljYXRlIHVuaXF1ZSBmaWVsZHMgKGxpa2UgYGJwZl9zcGluX2xvY2tgKSBjb3VsZCBiZSBuZXN0ZWQgaW4gc3RydWN0cywgYW5kIHRoZSBgc2Vlbl9tYXNrYCBjaGVjayB3b3VsZG4ndCBjYXRjaCBpdCBiZWNhdXNlIGVhY2ggbGV2ZWwgb2YgbmVzdGluZyBoYWQgaXRzIG93biBgc2Vlbl9tYXNrYC4gUGFzc2luZyBhIHBvaW50ZXIgdG8gYHNlZW5fbWFza2AgZml4ZXMgdGhpcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBCUEYgc3Vic3lzdGVtLCBzcGVjaWZpY2FsbHkgaW4gQlRGIHBhcnNpbmcvdmFsaWRhdGlvbiwgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSB2aWEgdGhlIGBicGYoKWAgc3lzY2FsbCAoZS5nLiwgYEJQRl9CVEZfTE9BRGAgb3IgbWFwIGNyZWF0aW9uKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowkdnsh[1] Phase: Succeeded StartedAt: 2026-07-19 15:08:09 +0000 UTC FinishedAt: 2026-07-19 15:08:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkdnsh[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-19 15:08:09 +0000 UTC FinishedAt: 2026-07-19 15:08:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkdnsh[2] Phase: Succeeded StartedAt: 2026-07-19 15:08:09 +0000 UTC FinishedAt: 2026-07-19 16:17:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkdnsh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0718283ab28bc3907e10b61a6b4be6fefa1cbb2f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["btf_parse_fields","btf_parse_struct_metas"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0718283ab28bc3907e10b61a6b4be6fefa1cbb2f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"777e6de1-a4e6-4347-8c77-69a9dde24c7f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Failed StartedAt: 2026-07-19 15:08:09 +0000 UTC FinishedAt: 2026-07-19 16:17:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"0718283ab28bc3907e10b61a6b4be6fefa1cbb2f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["btf_parse_fields","btf_parse_struct_metas"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"0718283ab28bc3907e10b61a6b4be6fefa1cbb2f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"777e6de1-a4e6-4347-8c77-69a9dde24c7f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowkdnsh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0718283ab28bc3907e10b61a6b4be6fefa1cbb2f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["btf_parse_fields","btf_parse_struct_metas"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0718283ab28bc3907e10b61a6b4be6fefa1cbb2f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"777e6de1-a4e6-4347-8c77-69a9dde24c7f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-19 15:08:09 +0000 UTC FinishedAt: 2026-07-19 15:08:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkdnsh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0718283ab28bc3907e10b61a6b4be6fefa1cbb2f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["btf_parse_fields","btf_parse_struct_metas"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0718283ab28bc3907e10b61a6b4be6fefa1cbb2f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"777e6de1-a4e6-4347-8c77-69a9dde24c7f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-19 15:08:09 +0000 UTC FinishedAt: 2026-07-19 15:08:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"0718283ab28bc3907e10b61a6b4be6fefa1cbb2f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflowkdnsh/series-workflowkdnsh-convert-artifact-1612831537/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkdnsh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0718283ab28bc3907e10b61a6b4be6fefa1cbb2f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["btf_parse_fields","btf_parse_struct_metas"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0718283ab28bc3907e10b61a6b4be6fefa1cbb2f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"777e6de1-a4e6-4347-8c77-69a9dde24c7f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-19 15:08:19 +0000 UTC FinishedAt: 2026-07-19 15:46:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkdnsh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0718283ab28bc3907e10b61a6b4be6fefa1cbb2f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["btf_parse_fields","btf_parse_struct_metas"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0718283ab28bc3907e10b61a6b4be6fefa1cbb2f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"777e6de1-a4e6-4347-8c77-69a9dde24c7f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-19 15:08:19 +0000 UTC FinishedAt: 2026-07-19 15:46:16 +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:*0e3dccd3-5a64-4f7d-aa56-b5e92e9cae80,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-workflowkdnsh/series-workflowkdnsh-convert-artifact-1612831537/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": "340d201e-ca00-403c-b678-93ed25b82e1c", "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-workflowkdnsh/series-workflowkdnsh-build-action-1880521055/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkdnsh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0718283ab28bc3907e10b61a6b4be6fefa1cbb2f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["btf_parse_fields","btf_parse_struct_metas"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0718283ab28bc3907e10b61a6b4be6fefa1cbb2f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"777e6de1-a4e6-4347-8c77-69a9dde24c7f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-19 15:08:19 +0000 UTC FinishedAt: 2026-07-19 15:46:06 +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:*0e3dccd3-5a64-4f7d-aa56-b5e92e9cae80,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-workflowkdnsh/series-workflowkdnsh-convert-artifact-1612831537/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": "340d201e-ca00-403c-b678-93ed25b82e1c", "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-workflowkdnsh/series-workflowkdnsh-build-action-1880521055/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkdnsh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0718283ab28bc3907e10b61a6b4be6fefa1cbb2f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["btf_parse_fields","btf_parse_struct_metas"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0718283ab28bc3907e10b61a6b4be6fefa1cbb2f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"777e6de1-a4e6-4347-8c77-69a9dde24c7f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-19 15:46:16 +0000 UTC FinishedAt: 2026-07-19 15:46:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkdnsh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0718283ab28bc3907e10b61a6b4be6fefa1cbb2f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["btf_parse_fields","btf_parse_struct_metas"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0718283ab28bc3907e10b61a6b4be6fefa1cbb2f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"777e6de1-a4e6-4347-8c77-69a9dde24c7f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-19 15:46:16 +0000 UTC FinishedAt: 2026-07-19 15:46:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkdnsh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0718283ab28bc3907e10b61a6b4be6fefa1cbb2f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["btf_parse_fields","btf_parse_struct_metas"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0718283ab28bc3907e10b61a6b4be6fefa1cbb2f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"777e6de1-a4e6-4347-8c77-69a9dde24c7f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-19 15:46:16 +0000 UTC FinishedAt: 2026-07-19 15:46:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkdnsh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0718283ab28bc3907e10b61a6b4be6fefa1cbb2f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["btf_parse_fields","btf_parse_struct_metas"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0718283ab28bc3907e10b61a6b4be6fefa1cbb2f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"777e6de1-a4e6-4347-8c77-69a9dde24c7f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-19 15:46:16 +0000 UTC FinishedAt: 2026-07-19 15:46:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"0718283ab28bc3907e10b61a6b4be6fefa1cbb2f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"777e6de1-a4e6-4347-8c77-69a9dde24c7f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflowkdnsh/series-workflowkdnsh-convert-artifact-1075287172/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkdnsh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0718283ab28bc3907e10b61a6b4be6fefa1cbb2f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["btf_parse_fields","btf_parse_struct_metas"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0718283ab28bc3907e10b61a6b4be6fefa1cbb2f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"777e6de1-a4e6-4347-8c77-69a9dde24c7f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-19 15:46:26 +0000 UTC FinishedAt: 2026-07-19 16:17:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkdnsh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0718283ab28bc3907e10b61a6b4be6fefa1cbb2f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["btf_parse_fields","btf_parse_struct_metas"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0718283ab28bc3907e10b61a6b4be6fefa1cbb2f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"777e6de1-a4e6-4347-8c77-69a9dde24c7f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-19 15:46:26 +0000 UTC FinishedAt: 2026-07-19 16:17:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*340d201e-ca00-403c-b678-93ed25b82e1c,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-workflowkdnsh/series-workflowkdnsh-build-action-1880521055/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": false },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-workflowkdnsh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0718283ab28bc3907e10b61a6b4be6fefa1cbb2f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["btf_parse_fields","btf_parse_struct_metas"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0718283ab28bc3907e10b61a6b4be6fefa1cbb2f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"777e6de1-a4e6-4347-8c77-69a9dde24c7f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Failed StartedAt: 2026-07-19 16:17:37 +0000 UTC FinishedAt: 2026-07-19 16:17:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkdnsh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0718283ab28bc3907e10b61a6b4be6fefa1cbb2f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["btf_parse_fields","btf_parse_struct_metas"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0718283ab28bc3907e10b61a6b4be6fefa1cbb2f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"777e6de1-a4e6-4347-8c77-69a9dde24c7f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Failed StartedAt: 2026-07-19 16:17:37 +0000 UTC FinishedAt: 2026-07-19 16:17:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}