Name: series-workflowvq44m Phase: Succeeded StartedAt: 2026-08-05 08:29:44 +0000 UTC FinishedAt: 2026-08-05 10:06:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvq44m[0] Phase: Succeeded StartedAt: 2026-08-05 08:29:44 +0000 UTC FinishedAt: 2026-08-05 09:19:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvq44m[0].run-triage Phase: Succeeded StartedAt: 2026-08-05 08:29:44 +0000 UTC FinishedAt: 2026-08-05 09:19:31 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "6c5fc504d0d6934132637aa3db4b9b58148eaa78", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT7925U", "MT7925E", "MAC80211", "CFG80211", "USB", "PCI", "DEBUG_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "6c5fc504d0d6934132637aa3db4b9b58148eaa78", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT7925U", "MT7925E", "MAC80211", "CFG80211", "USB", "PCI", "DEBUG_FS" ], "series_id": "7113c193-4a7e-4459-bac5-b3e20ddaef37" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mt7925_run_firmware", "mt7925_mcu_read_vefuse" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA5OjE3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzkyNVUmIzM0OywKICAgICYjMzQ7TVQ3OTI1RSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OywKICAgICYjMzQ7UENJJiMzNDssCiAgICAmIzM0O0RFQlVHX0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXQ3OTI1X3J1bl9maXJtd2FyZSYjMzQ7LAogICAgJiMzNDttdDc5MjVfbWN1X3JlYWRfdmVmdXNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgbG9hZGluZyAmIzM5O3ZpcnR1YWwgZWZ1c2UmIzM5OyAodmVmdXNlKSBkYXRhIGZyb20gZmlybXdhcmUgZm9yIHRoZSBNZWRpYVRlayBNVDc5MjUgd2lyZWxlc3MgZHJpdmVyLiBUaGUgZHJpdmVyIGhhcyBhIFVTQiB2YXJpYW50IChNVDc5MjVVKSB3aGljaCBjYW4gYmUgZnV6emVkIHVzaW5nIHN5emthbGxlciYjMzk7cyBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXMuIFRoZSBmaXJtd2FyZSBsb2FkaW5nIGxvZ2ljIGluIGBtdDc5MjVfcnVuX2Zpcm13YXJlYCBhbmQgdGhlIGRlYnVnZnMgcmVhZCBmdW5jdGlvbiBgbXQ3OTI1X21jdV9yZWFkX3ZlZnVzZWAgYXJlIHJlYWNoYWJsZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwOToxNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDFlOGVkNDc2NzAzMmI4NzZjYTk1MWQ5Y2FkNjUyZWQyN2Y0ZjVlZjVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyA1IDA5OjE3OjI5IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5oXG5pbmRleCAwZWRlZGE1NjllOWE1Li45Yzg0NGJlZjkyYzlmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuaFxuQEAgLTQ0LDYgJiM0Mzs0NCw3IEBAXG4gZW51bSB7XG4gXHRGV19UWVBFX0RFRkFVTFQgPSAwLFxuIFx0RldfVFlQRV9DTEMgPSAyLFxuJiM0MztcdEZXX1RZUEVfRVhURU5EX0JJTl9FRlVTRSA9IDMsXG4gXHRGV19UWVBFX01BWF9OVU0gPSAyNTVcbiB9O1xuIFxuQEAgLTE0ODEsNiAmIzQzOzE0ODIsNyBAQCBlbnVtIHtcbiBcdE1UX05JQ19DQVBfNkcsXG4gXHRNVF9OSUNfQ0FQX0NISVBfQ0FQID0gMHgyMCxcbiBcdE1UX05JQ19DQVBfRU1MX0NBUCA9IDB4MjIsXG4mIzQzO1x0TVRfTklDX0NBUF9WRUZVU0VfSU5GTyA9IDB4NDQsXG4gfTtcbiBcbiAjZGVmaW5lIFVOSV9XT1dfREVURUNUX1RZUEVfTUFHSUNcdFx0QklUKDApXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jXG5pbmRleCBkMDFmZjQ5ZGU0N2FmLi4zNGUyNjFlMjQ3ZmNkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmNcbkBAIC0yODYsNiAmIzQzOzI4Niw1MSBAQCBzdGF0aWMgaW50IG10NzkyNV9jaGlwX3Jlc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXG4gXG4gREVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcmVzZXQsIE5VTEwsIG10NzkyNV9jaGlwX3Jlc2V0LCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbiBcbiYjNDM7c3RhdGljIGludFxuJiM0MzttdDc5MjVfdmVmdXNlX3JlYWQoc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICpkYXRhKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IG10NzkyeF9kZXYgKmRldiA9IGRldl9nZXRfZHJ2ZGF0YShzLVx1MDAzZXByaXZhdGUpO1xuJiM0MztcdHUxNiBzaXplID0gZGV2LVx1MDAzZXZlZnVzZV9jYXAuc2l6ZTtcbiYjNDM7XHRpbnQgb2ZmID0gMDtcbiYjNDM7XHR1OCAqYnVmO1xuJiM0MztcdGludCByZXQgPSAwO1xuJiM0MztcbiYjNDM7XHRpZiAoIWRldi1cdTAwM2V2ZWZ1c2VfY2FwLnByZXNlbnQgfHwgIXNpemUpIHtcbiYjNDM7XHRcdHNlcV9wdXRzKHMsIFwmIzM0O3ZlZnVzZTogbm8gcmVnaW9uIGluIEZXIGltYWdlXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0YnVmID0ga3phbGxvYyhzaXplLCBHRlBfS0VSTkVMKTtcbiYjNDM7XHRpZiAoIWJ1ZilcbiYjNDM7XHRcdHJldHVybiAtRU5PTUVNO1xuJiM0MztcbiYjNDM7XHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShkZXYpO1xuJiM0MztcdHdoaWxlIChvZmYgXHUwMDNjIChpbnQpc2l6ZSkge1xuJiM0MztcdFx0dTE2IGNodW5rID0gbWluX3QodTE2LCA1MTIsIHNpemUgLSBvZmYpO1xuJiM0MztcbiYjNDM7XHRcdHJldCA9IG10NzkyNV9tY3VfcmVhZF92ZWZ1c2UoZGV2LCBvZmYsIGNodW5rLCBidWYgJiM0Mzsgb2ZmKTtcbiYjNDM7XHRcdGlmIChyZXQpXG4mIzQzO1x0XHRcdGJyZWFrO1xuJiM0MztcdFx0b2ZmICYjNDM7PSBjaHVuaztcbiYjNDM7XHR9XG4mIzQzO1x0bXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTtcbiYjNDM7XG4mIzQzO1x0aWYgKHJldCkge1xuJiM0MztcdFx0c2VxX3ByaW50ZihzLCBcJiMzNDt2ZWZ1c2U6IHJlYWQgZmFpbGVkIGF0IDB4JTA0eCAoJWQpXFxuXCYjMzQ7LCBvZmYsIHJldCk7XG4mIzQzO1x0XHRrZnJlZShidWYpO1xuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRzZXFfcHJpbnRmKHMsIFwmIzM0O3ZlZnVzZSBjb250ZW50OiAldSBieXRlc1xcblwmIzM0Oywgc2l6ZSk7XG4mIzQzO1x0Zm9yIChvZmYgPSAwOyBvZmYgXHUwMDNjIChpbnQpc2l6ZTsgb2ZmICYjNDM7PSAxNilcbiYjNDM7XHRcdHNlcV9wcmludGYocywgXCYjMzQ7JTA0eDogJSpwaFxcblwmIzM0Oywgb2ZmLFxuJiM0MztcdFx0XHQgICAoaW50KW1pbl90KHUxNiwgMTYsIHNpemUgLSBvZmYpLCBidWYgJiM0Mzsgb2ZmKTtcbiYjNDM7XG4mIzQzO1x0a2ZyZWUoYnVmKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4gaW50IG10NzkyNV9pbml0X2RlYnVnZnMoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbiB7XG4gXHRzdHJ1Y3QgZGVudHJ5ICpkaXI7XG5AQCAtMzA5LDYgJiM0MzszNTQsMTMgQEAgaW50IG10NzkyNV9pbml0X2RlYnVnZnMoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbiBcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCYjMzQ7aWRsZS10aW1lb3V0XCYjMzQ7LCAwNjAwLCBkaXIsIGRldixcbiBcdFx0XHQgICAgXHUwMDI2Zm9wc19wbV9pZGxlX3RpbWVvdXQpO1xuIFx0ZGVidWdmc19jcmVhdGVfZmlsZShcJiMzNDtjaGlwX3Jlc2V0XCYjMzQ7LCAwNjAwLCBkaXIsIGRldiwgXHUwMDI2Zm9wc19yZXNldCk7XG4mIzQzO1x0Lyogb25seSBleHBvc2UgdGhlIHZlZnVzZSByZWFkIG5vZGUgd2hlbiBhIHZlZnVzZSByZWdpb24gd2FzIGZvdW5kIGluIHRoZVxuJiM0MztcdCAqIEZXIGltYWdlIChGVyByZXBvcnRzIHRoZSBjYXBhYmlsaXR5IHVuY29uZGl0aW9uYWxseSwgc28gZ2F0ZSBvbiB0aGVcbiYjNDM7XHQgKiBhY3R1YWwgcmVnaW9uIHByZXNlbmNlIGluc3RlYWQpXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKGRldi1cdTAwM2V2ZWZ1c2VfY2FwLnByZXNlbnQpXG4mIzQzO1x0XHRkZWJ1Z2ZzX2NyZWF0ZV9kZXZtX3NlcWZpbGUoZGV2LVx1MDAzZW10NzYuZGV2LCBcJiMzNDt2ZWZ1c2VcJiMzNDssIGRpcixcbiYjNDM7XHRcdFx0XHRcdCAgICBtdDc5MjVfdmVmdXNlX3JlYWQpO1xuIFx0ZGVidWdmc19jcmVhdGVfZGV2bV9zZXFmaWxlKGRldi1cdTAwM2VtdDc2LmRldiwgXCYjMzQ7cnVudGltZV9wbV9zdGF0c1wmIzM0OywgZGlyLFxuIFx0XHRcdFx0ICAgIG10NzkyeF9wbV9zdGF0cyk7XG4gXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFwmIzM0O2RlZXAtc2xlZXBcJiMzNDssIDA2MDAsIGRpciwgZGV2LCBcdTAwMjZmb3BzX2RzKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jXG5pbmRleCBmYTI5YzQ4NmE0NTUzLi44MDBkNDhiZWUxMTBjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jXG5AQCAtODcxLDYgJiM0Mzs4NzEsMjE0IEBAIHN0YXRpYyBpbnQgbXQ3OTI1X21jdV9yZWFkX2VlcHJvbShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1MzIgb2Zmc2V0LCB1OCAqdmFsKVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuJiM0MztzdGF0aWMgaW50XG4mIzQzO210NzkyNV9tY3Vfc2VuZF92ZWZ1c2VfcGFnZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LFxuJiM0MztcdFx0XHQgICAgY29uc3QgdTggKmRhdGEsIHUzMiB0b3RhbF9sZW4sXG4mIzQzO1x0XHRcdCAgICBpbnQgcGFnZV9pZHgsIGludCB0b3RhbF9wYWdlcylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBtdDc5MjVfdmVmdXNlX3BhZ2VfY21kICpjbWQ7XG4mIzQzO1x0c2l6ZV90IG9mZnNldCA9IChzaXplX3QpcGFnZV9pZHggKiBNVDc5MjVfVkVGVVNFX1BBR0VfU0laRTtcbiYjNDM7XHR1MTYgcGFnZV9sZW4gPSAodTE2KW1pbl90KHNpemVfdCxcbiYjNDM7XHRcdFx0XHQgIE1UNzkyNV9WRUZVU0VfUEFHRV9TSVpFLFxuJiM0MztcdFx0XHRcdCAgdG90YWxfbGVuIC0gb2Zmc2V0KTtcbiYjNDM7XHRpbnQgcmV0O1xuJiM0MztcbiYjNDM7XHRjbWQgPSBremFsbG9jKHNpemVvZigqY21kKSwgR0ZQX0tFUk5FTCk7XG4mIzQzO1x0aWYgKCFjbWQpXG4mIzQzO1x0XHRyZXR1cm4gLUVOT01FTTtcbiYjNDM7XG4mIzQzO1x0Y21kLVx1MDAzZXRhZyAgICAgICAgICAgID0gY3B1X3RvX2xlMTYoVU5JX0VGVVNFX0JVRkZFUl9NT0RFKTtcbiYjNDM7XHRjbWQtXHUwMDNlbGVuICAgICAgICAgICAgPSBjcHVfdG9fbGUxNihzaXplb2YoKmNtZCkgLSBzaXplb2YoY21kLVx1MDAzZXJzdikpO1xuJiM0MztcdGNtZC1cdTAwM2Vzb3VyY2VfbW9kZSAgICA9IFVOSV9FRlVTRV9TT1VSQ0VfVkVGVVNFO1xuJiM0MztcdGNtZC1cdTAwM2Vjb250ZW50X2Zvcm1hdCA9IEZJRUxEX1BSRVAoTVQ3OTI1X1ZFRlVTRV9UT1RBTF9QQUdFLCB0b3RhbF9wYWdlcykgfFxuJiM0MztcdFx0XHQgICAgICBGSUVMRF9QUkVQKE1UNzkyNV9WRUZVU0VfUEFHRV9JTkRFWCwgcGFnZV9pZHgpO1xuJiM0MztcdGNtZC1cdTAwM2Vjb3VudCAgICAgICAgICA9IGNwdV90b19sZTE2KHBhZ2VfbGVuKTtcbiYjNDM7XHRtZW1jcHkoY21kLVx1MDAzZWJpbl9jb250ZW50LCBkYXRhICYjNDM7IG9mZnNldCwgcGFnZV9sZW4pO1xuJiM0MztcbiYjNDM7XHRyZXQgPSBtdDc2X21jdV9zZW5kX21zZyhcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgTUNVX1VOSV9DTUQoRUZVU0VfQ1RSTCksXG4mIzQzO1x0XHRcdFx0Y21kLCBzaXplb2YoKmNtZCksIHRydWUpO1xuJiM0MztcdGtmcmVlKGNtZCk7XG4mIzQzO1x0cmV0dXJuIHJldDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7LyogUmVhZCBiYWNrIHZlZnVzZSBjb250ZW50IGZyb20gRlcgKFVOSSBFRlVTRV9DVFJMIHF1ZXJ5LCBCVUZGRVJfUkQgdGFnKS5cbiYjNDM7ICogb2Zmc2V0IGlzIHRoZSByYXcgMC1iYXNlZCBpbmRleCBpbnRvIHRoZSBGVyB2ZWZ1c2UgYnVmZmVyOyBzb3VyY2VfbW9kZVxuJiM0MzsgKiBzZWxlY3RzIHRoZSBWRUZVU0UgcmVnaW9uLiBFeHBvc2VkIGZvciB0aGUgZGVidWdmcyBcJiMzNDt2ZWZ1c2VcJiMzNDsgbm9kZS5cbiYjNDM7ICovXG4mIzQzO2ludCBtdDc5MjVfbWN1X3JlYWRfdmVmdXNlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHUxNiBvZmZzZXQsIHUxNiBjb3VudCxcbiYjNDM7XHRcdFx0ICAgdTggKm91dClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCB7XG4mIzQzO1x0XHR1OCByc3ZbNF07XG4mIzQzO1xuJiM0MztcdFx0X19sZTE2IHRhZztcbiYjNDM7XHRcdF9fbGUxNiBsZW47XG4mIzQzO1xuJiM0MztcdFx0dTggc291cmNlX21vZGU7XG4mIzQzO1x0XHR1OCBjb250ZW50X2Zvcm1hdDtcbiYjNDM7XHRcdF9fbGUxNiBvZmZzZXQ7XG4mIzQzO1x0XHRfX2xlMTYgY291bnQ7XG4mIzQzO1x0XHRfX2xlMTYgcnN2MTtcbiYjNDM7XHR9IF9fcGFja2VkIHJlcSA9IHtcbiYjNDM7XHRcdC50YWcgPSBjcHVfdG9fbGUxNihVTklfRUZVU0VfQlVGRkVSX1JEKSxcbiYjNDM7XHRcdC5sZW4gPSBjcHVfdG9fbGUxNihzaXplb2YocmVxKSAtIHNpemVvZihyZXEucnN2KSksXG4mIzQzO1x0XHQuc291cmNlX21vZGUgPSBVTklfRUZVU0VfU09VUkNFX1ZFRlVTRSxcbiYjNDM7XHRcdC5vZmZzZXQgPSBjcHVfdG9fbGUxNihvZmZzZXQpLFxuJiM0MztcdFx0LmNvdW50ID0gY3B1X3RvX2xlMTYoY291bnQpLFxuJiM0MztcdH07XG4mIzQzO1x0c3RydWN0IHtcbiYjNDM7XHRcdHU4IHJzdls0XTtcbiYjNDM7XG4mIzQzO1x0XHRfX2xlMTYgdGFnO1xuJiM0MztcdFx0X19sZTE2IGxlbjtcbiYjNDM7XG4mIzQzO1x0XHR1OCBzb3VyY2VfbW9kZTtcbiYjNDM7XHRcdHU4IGNvbnRlbnRfZm9ybWF0O1xuJiM0MztcdFx0X19sZTE2IG9mZnNldDtcbiYjNDM7XHRcdF9fbGUxNiBjb3VudDtcbiYjNDM7XHRcdHU4IHJzdjFbMl07XG4mIzQzO1x0XHR1OCBkYXRhW107XG4mIzQzO1x0fSBfX3BhY2tlZCAqIHJlcztcbiYjNDM7XHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdHJldCA9IG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2coXHUwMDI2ZGV2LVx1MDAzZW10NzYsIE1DVV9XTV9VTklfQ01EX1FVRVJZKEVGVVNFX0NUUkwpLFxuJiM0MztcdFx0XHRcdFx0XHUwMDI2cmVxLCBzaXplb2YocmVxKSwgdHJ1ZSwgXHUwMDI2c2tiKTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XG4mIzQzO1x0cmVzID0gKHZvaWQgKilza2ItXHUwMDNlZGF0YTtcbiYjNDM7XHRpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2Mgc2l6ZW9mKCpyZXMpICYjNDM7IGNvdW50KSB7XG4mIzQzO1x0XHRkZXZfa2ZyZWVfc2tiKHNrYik7XG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdG1lbWNweShvdXQsIHJlcy1cdTAwM2VkYXRhLCBjb3VudCk7XG4mIzQzO1x0ZGV2X2tmcmVlX3NrYihza2IpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludFxuJiM0MzttdDc5MjVfbG9hZF92ZWZ1c2VfZnJvbV9mdyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBjb25zdCBjaGFyICpmd19uYW1lKVxuJiM0Mzt7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IG10NzZfY29ubmFjMl9md190cmFpbGVyICpoZHI7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IG10NzZfY29ubmFjMl9md19yZWdpb24gKnJlZ2lvbjtcbiYjNDM7XHRzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYgPSBcdTAwMjZkZXYtXHUwMDNlbXQ3NjtcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3ID0gTlVMTDtcbiYjNDM7XHRjb25zdCB1OCAqdmVmdXNlX2Jhc2UgPSBOVUxMO1xuJiM0MztcdHUzMiBvZmZzZXQgPSAwLCBsZW4gPSAwLCBwYXlsb2FkO1xuJiM0MztcdGludCBpLCB0b3RhbF9wYWdlcywgcmV0ID0gMDtcbiYjNDM7XG4mIzQzO1x0aWYgKCFkZXYtXHUwMDNldmVmdXNlX2NhcC5lbmFibGVkKVxuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1xuJiM0MztcdC8qIHJlY29tcHV0ZWQgb24gZXZlcnkgRlcgbG9hZDsgc2V0IHRydWUgb25seSBvbmNlIGEgdmVmdXNlIHJlZ2lvbiBpc1xuJiM0MztcdCAqIGZvdW5kIGluIHRoZSBpbWFnZSBiZWxvdyAodGhlIGRlYnVnZnMgbm9kZSBpcyBnYXRlZCBvbiB0aGlzKS5cbiYjNDM7XHQgKi9cbiYjNDM7XHRkZXYtXHUwMDNldmVmdXNlX2NhcC5wcmVzZW50ID0gZmFsc2U7XG4mIzQzO1xuJiM0MztcdHJldCA9IHJlcXVlc3RfZmlybXdhcmUoXHUwMDI2ZncsIGZ3X25hbWUsIG1kZXYtXHUwMDNlZGV2KTtcbiYjNDM7XHRpZiAocmV0KSB7XG4mIzQzO1x0XHRkZXZfd2FybihtZGV2LVx1MDAzZWRldixcbiYjNDM7XHRcdFx0IFwmIzM0O3ZlZnVzZTogZmlybXdhcmUgJXMgbm90IGF2YWlsYWJsZSAoJWQpLCBza2lwcGluZ1xcblwmIzM0OyxcbiYjNDM7XHRcdFx0IGZ3X25hbWUsIHJldCk7XG4mIzQzO1x0XHRyZXQgPSAwO1xuJiM0MztcdFx0Z290byBvdXQ7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRpZiAoIWZ3IHx8ICFmdy1cdTAwM2VkYXRhIHx8IGZ3LVx1MDAzZXNpemUgXHUwMDNjIHNpemVvZigqaGRyKSkge1xuJiM0MztcdFx0ZGV2X3dhcm4obWRldi1cdTAwM2VkZXYsIFwmIzM0O3ZlZnVzZTogaW52YWxpZCBmaXJtd2FyZSwgc2tpcHBpbmdcXG5cJiMzNDspO1xuJiM0MztcdFx0Z290byBvdXQ7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRoZHIgPSAoY29uc3Qgdm9pZCAqKShmdy1cdTAwM2VkYXRhICYjNDM7IGZ3LVx1MDAzZXNpemUgLSBzaXplb2YoKmhkcikpO1xuJiM0MztcbiYjNDM7XHQvKiBSZWdpb24gZGVzY3JpcHRvcnMgc2l0IHJpZ2h0IGJlZm9yZSB0aGUgdHJhaWxlci4gTWFrZSBzdXJlIHRoZSB3aG9sZVxuJiM0MztcdCAqIGRlc2NyaXB0b3IgYXJyYXkgaXMgd2l0aGluIHRoZSBpbWFnZSBiZWZvcmUgZGVyZWZlcmVuY2luZyB0aGVtLCBzbyBhXG4mIzQzO1x0ICogY29ycnVwdCBuX3JlZ2lvbiBjYW5ub3Qgd2FsayB0aGUgcmVnaW9uIHBvaW50ZXIgYmVmb3JlIGZ3LVx1MDAzZWRhdGEuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKGZ3LVx1MDAzZXNpemUgXHUwMDNjIHNpemVvZigqaGRyKSAmIzQzOyAoc2l6ZV90KWhkci1cdTAwM2VuX3JlZ2lvbiAqIHNpemVvZigqcmVnaW9uKSkge1xuJiM0MztcdFx0ZGV2X3dhcm4obWRldi1cdTAwM2VkZXYsXG4mIzQzO1x0XHRcdCBcJiMzNDt2ZWZ1c2U6IGZpcm13YXJlIHRvbyBzbWFsbCBmb3IgJXUgcmVnaW9uIGRlc2NyaXB0b3JzLCBza2lwcGluZ1xcblwmIzM0OyxcbiYjNDM7XHRcdFx0IGhkci1cdTAwM2VuX3JlZ2lvbik7XG4mIzQzO1x0XHRnb3RvIG91dDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGhkci1cdTAwM2VuX3JlZ2lvbjsgaSYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdHJlZ2lvbiA9IChjb25zdCB2b2lkICopKChjb25zdCB1OCAqKWhkciAtXG4mIzQzO1x0XHRcdFx0XHQoaGRyLVx1MDAzZW5fcmVnaW9uIC0gaSkgKiBzaXplb2YoKnJlZ2lvbikpO1xuJiM0MztcdFx0bGVuID0gbGUzMl90b19jcHUocmVnaW9uLVx1MDAzZWxlbik7XG4mIzQzO1xuJiM0MztcdFx0aWYgKGxlbiBcdTAwM2UgZnctXHUwMDNlc2l6ZSAtIG9mZnNldCkge1xuJiM0MztcdFx0XHRkZXZfd2FybihtZGV2LVx1MDAzZWRldiwgXCYjMzQ7dmVmdXNlOiBpbnZhbGlkIGZpcm13YXJlIHJlZ2lvbiwgc2tpcHBpbmdcXG5cJiMzNDspO1xuJiM0MztcdFx0XHRnb3RvIG91dDtcbiYjNDM7XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHRpZiAoKHJlZ2lvbi1cdTAwM2VmZWF0dXJlX3NldCBcdTAwMjYgRldfRkVBVFVSRV9OT05fREwpIFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0ICAgIHJlZ2lvbi1cdTAwM2V0eXBlID09IEZXX1RZUEVfRVhURU5EX0JJTl9FRlVTRSkge1xuJiM0MztcdFx0XHR2ZWZ1c2VfYmFzZSA9IGZ3LVx1MDAzZWRhdGEgJiM0Mzsgb2Zmc2V0O1xuJiM0MztcdFx0XHRkZXYtXHUwMDNldmVmdXNlX2NhcC5wcmVzZW50ID0gdHJ1ZTtcbiYjNDM7XHRcdFx0YnJlYWs7XG4mIzQzO1x0XHR9XG4mIzQzO1x0XHRvZmZzZXQgJiM0Mzs9IGxlbjtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGlmICghdmVmdXNlX2Jhc2UpIHtcbiYjNDM7XHRcdGRldl93YXJuKG1kZXYtXHUwMDNlZGV2LFxuJiM0MztcdFx0XHQgXCYjMzQ7RldfVFlQRV9FWFRFTkRfQklOX0VGVVNFIGNodW5rIG5vdCBmb3VuZCBpbiBGVyBpbWFnZSwgdmlydHVhbCBlZnVzZSBza2lwcGVkXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdC8qIHZlZnVzZV9jYXAucHJlc2VudCBzdGF5cyBmYWxzZSAtXHUwMDNlIGRlYnVnZnMgbm9kZSBub3QgZXhwb3NlZCBvbiBhXG4mIzQzO1x0XHQgKiBXRiB3aXRob3V0IGEgdmlydHVhbCBlZnVzZS4gdmVmdXNlX2NhcC5lbmFibGVkICh0aGUgRlctcmVwb3J0ZWRcbiYjNDM7XHRcdCAqIGNhcGFiaWxpdHkpIGlzIGxlZnQgdW50b3VjaGVkLlxuJiM0MztcdFx0ICovXG4mIzQzO1x0XHRnb3RvIG91dDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdC8qIFRoZSBwYWNrZWQgRlcgcmVnaW9uIGNhcnJpZXMgdGhlIHZlZnVzZSBwYXlsb2FkIHBsdXMgY29ubmFjXG4mIzQzO1x0ICogcGVyLXJlZ2lvbiBmcmFtaW5nICg0LWJ5dGUgQ1JDICYjNDM7IDE2LWJ5dGUgYWxpZ25tZW50KSwgc28gcmVnaW9uXG4mIzQzO1x0ICogbGVuZ3RoIGlzIGxhcmdlciB0aGFuIHRoZSBGVy1yZXBvcnRlZCBwYXlsb2FkLiBPbmx5IHRoZSBsZWFkaW5nXG4mIzQzO1x0ICogdmVmdXNlX2NhcC5zaXplIGJ5dGVzIGFyZSB0aGUgYWN0dWFsIHZlZnVzZSBjb250ZW50IHRvIHB1c2guXG4mIzQzO1x0ICovXG4mIzQzO1x0cGF5bG9hZCA9IGRldi1cdTAwM2V2ZWZ1c2VfY2FwLnNpemU7XG4mIzQzO1xuJiM0MztcdC8qIHZpcnR1YWwgZWZ1c2UgaXMgYW4gb3B0aW9uYWwgb3ZlcnJpZGU6IGlmIGl0IGNhbm5vdCBiZSBhcHBsaWVkIHRoZVxuJiM0MztcdCAqIGNoaXAgc3RpbGwgd29ya3Mgb24gaXRzIGRlZmF1bHQgZWZ1c2UgdmFsdWVzLCBzbyB0aGUgY2hlY2tzIGJlbG93XG4mIzQzO1x0ICogb25seSB3YXJuIGFuZCBza2lwIC0gdGhleSBtdXN0IG5vdCBmYWlsIGZpcm13YXJlIGJyaW5nLXVwLlxuJiM0MztcdCAqL1xuJiM0MztcbiYjNDM7XHQvKiBbQ2hlY2sgIzFdIHJlZ2lvbiBtdXN0IGhvbGQgYXQgbGVhc3QgdGhlIEZXLXJlcG9ydGVkIHBheWxvYWQgKi9cbiYjNDM7XHRpZiAobGVuIFx1MDAzYyBwYXlsb2FkKSB7XG4mIzQzO1x0XHRkZXZfd2FybihtZGV2LVx1MDAzZWRldixcbiYjNDM7XHRcdFx0IFwmIzM0O3ZlZnVzZTogcmVnaW9uIHNpemUgJXUgc21hbGxlciB0aGFuIEZXIGNhcGFiaWxpdHkgJXUsIHNraXBwaW5nXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHQgbGVuLCBwYXlsb2FkKTtcbiYjNDM7XHRcdGdvdG8gb3V0O1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0dG90YWxfcGFnZXMgPSBESVZfUk9VTkRfVVAocGF5bG9hZCwgTVQ3OTI1X1ZFRlVTRV9QQUdFX1NJWkUpO1xuJiM0MztcdGlmICh0b3RhbF9wYWdlcyBcdTAwM2UgTVQ3OTI1X1ZFRlVTRV9NQVhfUEFHRVMpIHtcbiYjNDM7XHRcdGRldl93YXJuKG1kZXYtXHUwMDNlZGV2LFxuJiM0MztcdFx0XHQgXCYjMzQ7dmVmdXNlOiBwYXlsb2FkIHRvbyBsYXJnZTogJXUgYnl0ZXMgKCVkIHBhZ2VzKSwgbWF4ICVkIHBhZ2VzIHN1cHBvcnRlZCwgc2tpcHBpbmdcXG5cJiMzNDssXG4mIzQzO1x0XHRcdCBwYXlsb2FkLCB0b3RhbF9wYWdlcywgTVQ3OTI1X1ZFRlVTRV9NQVhfUEFHRVMpO1xuJiM0MztcdFx0Z290byBvdXQ7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB0b3RhbF9wYWdlczsgaSYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdHJldCA9IG10NzkyNV9tY3Vfc2VuZF92ZWZ1c2VfcGFnZShkZXYsIHZlZnVzZV9iYXNlLCBwYXlsb2FkLFxuJiM0MztcdFx0XHRcdFx0XHQgIGksIHRvdGFsX3BhZ2VzKTtcbiYjNDM7XHRcdGlmIChyZXQpIHtcbiYjNDM7XHRcdFx0ZGV2X3dhcm4obWRldi1cdTAwM2VkZXYsXG4mIzQzO1x0XHRcdFx0IFwmIzM0O3ZlZnVzZSBwYWdlICVkLyVkIHNlbmQgZmFpbGVkOiAlZCwgc2tpcHBpbmdcXG5cJiMzNDssXG4mIzQzO1x0XHRcdFx0IGkgJiM0MzsgMSwgdG90YWxfcGFnZXMsIHJldCk7XG4mIzQzO1x0XHRcdHJldCA9IDA7XG4mIzQzO1x0XHRcdGdvdG8gb3V0O1xuJiM0MztcdFx0fVxuJiM0MztcdH1cbiYjNDM7XG4mIzQzO291dDpcbiYjNDM7XHRyZWxlYXNlX2Zpcm13YXJlKGZ3KTtcbiYjNDM7XHRyZXR1cm4gcmV0O1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBpbnQgbXQ3OTI1X2xvYWRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIGNvbnN0IGNoYXIgKmZ3X25hbWUpXG4ge1xuIFx0Y29uc3Qgc3RydWN0IG10NzZfY29ubmFjMl9md190cmFpbGVyICpoZHI7XG5AQCAtMTEyNiw2ICYjNDM7MTMzNCwxNyBAQCBtdDc5MjVfbWN1X2dldF9uaWNfY2FwYWJpbGl0eShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuIFx0XHRjYXNlIE1UX05JQ19DQVBfRU1MX0NBUDpcbiBcdFx0XHRtdDc5MjVfbWN1X3BhcnNlX2VtbF9jYXAoZGV2LCB0bHYtXHUwMDNlZGF0YSk7XG4gXHRcdFx0YnJlYWs7XG4mIzQzO1x0XHRjYXNlIE1UX05JQ19DQVBfVkVGVVNFX0lORk86IHtcbiYjNDM7XHRcdFx0c3RydWN0IG10NzkyNV92ZWZ1c2VfY2FwICpjYXA7XG4mIzQzO1xuJiM0MztcdFx0XHRpZiAobGVuIFx1MDAzYyBzaXplb2YoKnRsdikgJiM0Mzsgc2l6ZW9mKCpjYXApKVxuJiM0MztcdFx0XHRcdGJyZWFrO1xuJiM0MztcbiYjNDM7XHRcdFx0Y2FwID0gKHN0cnVjdCBtdDc5MjVfdmVmdXNlX2NhcCAqKXRsdi1cdTAwM2VkYXRhO1xuJiM0MztcdFx0XHRkZXYtXHUwMDNldmVmdXNlX2NhcC5lbmFibGVkICAgPSBjYXAtXHUwMDNlZW5hYmxlZDtcbiYjNDM7XHRcdFx0ZGV2LVx1MDAzZXZlZnVzZV9jYXAuc2l6ZSAgICAgID0gbGUxNl90b19jcHUoY2FwLVx1MDAzZXNpemUpO1xuJiM0MztcdFx0XHRicmVhaztcbiYjNDM7XHRcdH1cbiBcdFx0ZGVmYXVsdDpcbiBcdFx0XHRicmVhaztcbiBcdFx0fVxuQEAgLTExOTksNiAmIzQzOzE0MTgsMTMgQEAgaW50IG10NzkyNV9ydW5fZmlybXdhcmUoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbiBcdGlmIChlcnIpXG4gXHRcdHJldHVybiBlcnI7XG4gXG4mIzQzO1x0LyogVmlydHVhbCBlZnVzZSBpcyBiZXN0LWVmZm9ydCBhbmQgY3VycmVudGx5IG5ldmVyIGZhaWxzIGJyaW5nLXVwLCBidXRcbiYjNDM7XHQgKiBrZWVwIHRoZSBlcnJvciBwcm9wYWdhdGlvbiBmb3IgYSBwb3NzaWJsZSBmdXR1cmUgZmF0YWwgdmVmdXNlIGVycm9yLlxuJiM0MztcdCAqL1xuJiM0MztcdGVyciA9IG10NzkyNV9sb2FkX3ZlZnVzZV9mcm9tX2Z3KGRldiwgbXQ3OTJ4X3JhbV9uYW1lKGRldikpO1xuJiM0MztcdGlmIChlcnIpXG4mIzQzO1x0XHRyZXR1cm4gZXJyO1xuJiM0MztcbiBcdGVyciA9IG10NzkyNV9sb2FkX2NsYyhkZXYsIG10NzkyeF9yYW1fbmFtZShkZXYpKTtcbiBcdGlmIChlcnIpXG4gXHRcdHJldHVybiBlcnI7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuaFxuaW5kZXggMTFmOWVhYzEzZmZjNi4uYTBlYjMwZDI1NzBkZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuaFxuQEAgLTEzNyw2ICYjNDM7MTM3LDQxIEBAIGVudW0ge1xuIFx0VU5JX0VGVVNFX0JVRkZFUl9SRCxcbiB9O1xuIFxuJiM0MzsvKiBwYWdlIHNpemUgYW5kIGNvbnRlbnRfZm9ybWF0IGxheW91dCBmb2xsb3cgdGhlIEZXIGJ1ZmZlci1tb2RlIEFCSSAqL1xuJiM0MzsjZGVmaW5lIE1UNzkyNV9WRUZVU0VfUEFHRV9TSVpFXHRcdDEwMjRcdC8qIEZXIEJVRkZFUl9CSU5fUEFHRV9TSVpFICgweDQwMCkgKi9cbiYjNDM7I2RlZmluZSBNVDc5MjVfVkVGVVNFX01BWF9QQUdFU1x0XHQ3XHQvKiBjb250ZW50X2Zvcm1hdCBwYWdlIGZpZWxkcyBhcmUgMy1iaXQgKi9cbiYjNDM7XG4mIzQzOyNkZWZpbmUgTVQ3OTI1X1ZFRlVTRV9UT1RBTF9QQUdFXHRHRU5NQVNLKDcsIDUpXHQvKiBGVyBCVUZGRVJfQklOX1RPVEFMX1BBR0UgKi9cbiYjNDM7I2RlZmluZSBNVDc5MjVfVkVGVVNFX1BBR0VfSU5ERVhcdEdFTk1BU0soNCwgMilcdC8qIEZXIEJVRkZFUl9CSU5fUEFHRV9JTkRFWCAqL1xuJiM0MztcbiYjNDM7LyogYnVmZmVyIG1vZGUgY29udGVudCBzb3VyY2UsIGFsaWducyB3aXRoIEZXIEJVRkZFUl9TT1VSQ0VfTU9ERV9JTkZPXyogKi9cbiYjNDM7ZW51bSB7XG4mIzQzO1x0VU5JX0VGVVNFX1NPVVJDRV9FRlVTRSA9IDAsXG4mIzQzO1x0VU5JX0VGVVNFX1NPVVJDRV9FRVBST00gPSAxLFxuJiM0MztcdFVOSV9FRlVTRV9TT1VSQ0VfVkVGVVNFID0gMixcbiYjNDM7fTtcbiYjNDM7XG4mIzQzO3N0cnVjdCBtdDc5MjVfdmVmdXNlX2NhcCB7XG4mIzQzO1x0dTggdmVyc2lvbjtcbiYjNDM7XHR1OCBlbmFibGVkO1xuJiM0MztcdF9fbGUxNiBzaXplO1xuJiM0MztcdF9fbGUzMiBoYXNoX2FkZHI7XG4mIzQzO30gX19wYWNrZWQ7XG4mIzQzO1xuJiM0MztzdHJ1Y3QgbXQ3OTI1X3ZlZnVzZV9wYWdlX2NtZCB7XG4mIzQzO1x0dTggcnN2WzRdO1x0XHQvKiBVTklfQ01EX0VGVVNFX0NPTlRST0wgaGVhZGVyIGJlZm9yZSBUTFYgKi9cbiYjNDM7XG4mIzQzO1x0X19sZTE2IHRhZztcdFx0LyogVU5JX0VGVVNFX0JVRkZFUl9NT0RFICovXG4mIzQzO1x0X19sZTE2IGxlbjtcbiYjNDM7XHR1OCBzb3VyY2VfbW9kZTtcdFx0LyogVU5JX0VGVVNFX1NPVVJDRV9WRUZVU0UgKi9cbiYjNDM7XHR1OCBjb250ZW50X2Zvcm1hdDtcdC8qIFs3OjVdPXRvdGFsX3BhZ2VzIFs0OjJdPXBhZ2VfaWR4ICovXG4mIzQzO1x0X19sZTE2IGNvdW50O1x0XHQvKiB2YWxpZCBieXRlcyBpbiB0aGlzIHBhZ2UgKi9cbiYjNDM7XHR1OCBiaW5fY29udGVudFtNVDc5MjVfVkVGVVNFX1BBR0VfU0laRV07XG4mIzQzO30gX19wYWNrZWQ7XG4mIzQzO1xuJiM0MztpbnQgbXQ3OTI1X21jdV9yZWFkX3ZlZnVzZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1MTYgb2Zmc2V0LCB1MTYgY291bnQsXG4mIzQzO1x0XHRcdCAgIHU4ICpvdXQpO1xuJiM0MztcbiBlbnVtIHtcbiBcdFVOSV9DTURfQUNDRVNTX1JFR19CQVNJQyA9IDB4MCxcbiBcdFVOSV9DTURfQUNDRVNTX1JGX1JFR19CQVNJQyxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaFxuaW5kZXggOWVmYzI1MWNiNzQ1Zi4uNzBhNzRlMDcxYjE3YiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmhcbkBAIC0zNDIsNiAmIzQzOzM0MiwxMiBAQCBzdHJ1Y3QgbXQ3OTJ4X2RldiB7XG4gXHRzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqbmFuX3ZpZjtcbiBcdGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfaWZhY2VfY29tYmluYXRpb24gKmlmYWNlX2NvbWJpbmF0aW9ucztcbiBcdGludCBuX2lmYWNlX2NvbWJpbmF0aW9ucztcbiYjNDM7XG4mIzQzO1x0c3RydWN0IHtcbiYjNDM7XHRcdGJvb2wgZW5hYmxlZDtcdC8qIEZXIHJlcG9ydHMgdmVmdXNlIGNhcGFiaWxpdHkgKHVuY29uZGl0aW9uYWwpICovXG4mIzQzO1x0XHRib29sIHByZXNlbnQ7XHQvKiBhIHZlZnVzZSByZWdpb24gd2FzIGZvdW5kIGluIHRoZSBGVyBpbWFnZSAqL1xuJiM0MztcdFx0dTE2IHNpemU7XG4mIzQzO1x0fSB2ZWZ1c2VfY2FwO1xuIH07XG4gXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgbXQ3OTJ4X2Jzc19jb25mICpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwOToxNzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TVQ3OTI1VSYjMzQ7LAogICAgJiMzNDtNVDc5MjVFJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7LAogICAgJiMzNDtQQ0kmIzM0OywKICAgICYjMzQ7REVCVUdfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc5MjVfcnVuX2Zpcm13YXJlJiMzNDssCiAgICAmIzM0O210NzkyNV9tY3VfcmVhZF92ZWZ1c2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBsb2FkaW5nICYjMzk7dmlydHVhbCBlZnVzZSYjMzk7ICh2ZWZ1c2UpIGRhdGEgZnJvbSBmaXJtd2FyZSBmb3IgdGhlIE1lZGlhVGVrIE1UNzkyNSB3aXJlbGVzcyBkcml2ZXIuIFRoZSBkcml2ZXIgaGFzIGEgVVNCIHZhcmlhbnQgKE1UNzkyNVUpIHdoaWNoIGNhbiBiZSBmdXp6ZWQgdXNpbmcgc3l6a2FsbGVyJiMzOTtzIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcy4gVGhlIGZpcm13YXJlIGxvYWRpbmcgbG9naWMgaW4gYG10NzkyNV9ydW5fZmlybXdhcmVgIGFuZCB0aGUgZGVidWdmcyByZWFkIGZ1bmN0aW9uIGBtdDc5MjVfbWN1X3JlYWRfdmVmdXNlYCBhcmUgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMWU4ZWQ0NzY3MDMyYjg3NmNhOTUxZDljYWQ2NTJlZDI3ZjRmNWVmNQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgQXVnIDUgMDk6MTc6MjkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuaAppbmRleCAwZWRlZGE1NjllOWE1Li45Yzg0NGJlZjkyYzlmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmgKQEAgLTQ0LDYgJiM0Mzs0NCw3IEBACiBlbnVtIHsKIAlGV19UWVBFX0RFRkFVTFQgPSAwLAogCUZXX1RZUEVfQ0xDID0gMiwKJiM0MzsJRldfVFlQRV9FWFRFTkRfQklOX0VGVVNFID0gMywKIAlGV19UWVBFX01BWF9OVU0gPSAyNTUKIH07CiAKQEAgLTE0ODEsNiAmIzQzOzE0ODIsNyBAQCBlbnVtIHsKIAlNVF9OSUNfQ0FQXzZHLAogCU1UX05JQ19DQVBfQ0hJUF9DQVAgPSAweDIwLAogCU1UX05JQ19DQVBfRU1MX0NBUCA9IDB4MjIsCiYjNDM7CU1UX05JQ19DQVBfVkVGVVNFX0lORk8gPSAweDQ0LAogfTsKIAogI2RlZmluZSBVTklfV09XX0RFVEVDVF9UWVBFX01BR0lDCQlCSVQoMCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYwppbmRleCBkMDFmZjQ5ZGU0N2FmLi4zNGUyNjFlMjQ3ZmNkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jCkBAIC0yODYsNiAmIzQzOzI4Niw1MSBAQCBzdGF0aWMgaW50IG10NzkyNV9jaGlwX3Jlc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpCiAKIERFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3Jlc2V0LCBOVUxMLCBtdDc5MjVfY2hpcF9yZXNldCwgJiMzNDslbGxkXG4mIzM0Oyk7CiAKJiM0MztzdGF0aWMgaW50CiYjNDM7bXQ3OTI1X3ZlZnVzZV9yZWFkKHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBkZXZfZ2V0X2RydmRhdGEocy0mZ3Q7cHJpdmF0ZSk7CiYjNDM7CXUxNiBzaXplID0gZGV2LSZndDt2ZWZ1c2VfY2FwLnNpemU7CiYjNDM7CWludCBvZmYgPSAwOwomIzQzOwl1OCAqYnVmOwomIzQzOwlpbnQgcmV0ID0gMDsKJiM0MzsKJiM0MzsJaWYgKCFkZXYtJmd0O3ZlZnVzZV9jYXAucHJlc2VudCB8fCAhc2l6ZSkgewomIzQzOwkJc2VxX3B1dHMocywgJiMzNDt2ZWZ1c2U6IG5vIHJlZ2lvbiBpbiBGVyBpbWFnZVxuJiMzNDspOwomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CX0KJiM0MzsKJiM0MzsJYnVmID0ga3phbGxvYyhzaXplLCBHRlBfS0VSTkVMKTsKJiM0MzsJaWYgKCFidWYpCiYjNDM7CQlyZXR1cm4gLUVOT01FTTsKJiM0MzsKJiM0MzsJbXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTsKJiM0MzsJd2hpbGUgKG9mZiAmbHQ7IChpbnQpc2l6ZSkgewomIzQzOwkJdTE2IGNodW5rID0gbWluX3QodTE2LCA1MTIsIHNpemUgLSBvZmYpOwomIzQzOwomIzQzOwkJcmV0ID0gbXQ3OTI1X21jdV9yZWFkX3ZlZnVzZShkZXYsIG9mZiwgY2h1bmssIGJ1ZiAmIzQzOyBvZmYpOwomIzQzOwkJaWYgKHJldCkKJiM0MzsJCQlicmVhazsKJiM0MzsJCW9mZiAmIzQzOz0gY2h1bms7CiYjNDM7CX0KJiM0MzsJbXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTsKJiM0MzsKJiM0MzsJaWYgKHJldCkgewomIzQzOwkJc2VxX3ByaW50ZihzLCAmIzM0O3ZlZnVzZTogcmVhZCBmYWlsZWQgYXQgMHglMDR4ICglZClcbiYjMzQ7LCBvZmYsIHJldCk7CiYjNDM7CQlrZnJlZShidWYpOwomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CX0KJiM0MzsKJiM0MzsJc2VxX3ByaW50ZihzLCAmIzM0O3ZlZnVzZSBjb250ZW50OiAldSBieXRlc1xuJiMzNDssIHNpemUpOwomIzQzOwlmb3IgKG9mZiA9IDA7IG9mZiAmbHQ7IChpbnQpc2l6ZTsgb2ZmICYjNDM7PSAxNikKJiM0MzsJCXNlcV9wcmludGYocywgJiMzNDslMDR4OiAlKnBoXG4mIzM0Oywgb2ZmLAomIzQzOwkJCSAgIChpbnQpbWluX3QodTE2LCAxNiwgc2l6ZSAtIG9mZiksIGJ1ZiAmIzQzOyBvZmYpOwomIzQzOwomIzQzOwlrZnJlZShidWYpOwomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiBpbnQgbXQ3OTI1X2luaXRfZGVidWdmcyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KQogewogCXN0cnVjdCBkZW50cnkgKmRpcjsKQEAgLTMwOSw2ICYjNDM7MzU0LDEzIEBAIGludCBtdDc5MjVfaW5pdF9kZWJ1Z2ZzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpCiAJZGVidWdmc19jcmVhdGVfZmlsZSgmIzM0O2lkbGUtdGltZW91dCYjMzQ7LCAwNjAwLCBkaXIsIGRldiwKIAkJCSAgICAmYW1wO2ZvcHNfcG1faWRsZV90aW1lb3V0KTsKIAlkZWJ1Z2ZzX2NyZWF0ZV9maWxlKCYjMzQ7Y2hpcF9yZXNldCYjMzQ7LCAwNjAwLCBkaXIsIGRldiwgJmFtcDtmb3BzX3Jlc2V0KTsKJiM0MzsJLyogb25seSBleHBvc2UgdGhlIHZlZnVzZSByZWFkIG5vZGUgd2hlbiBhIHZlZnVzZSByZWdpb24gd2FzIGZvdW5kIGluIHRoZQomIzQzOwkgKiBGVyBpbWFnZSAoRlcgcmVwb3J0cyB0aGUgY2FwYWJpbGl0eSB1bmNvbmRpdGlvbmFsbHksIHNvIGdhdGUgb24gdGhlCiYjNDM7CSAqIGFjdHVhbCByZWdpb24gcHJlc2VuY2UgaW5zdGVhZCkKJiM0MzsJICovCiYjNDM7CWlmIChkZXYtJmd0O3ZlZnVzZV9jYXAucHJlc2VudCkKJiM0MzsJCWRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZShkZXYtJmd0O210NzYuZGV2LCAmIzM0O3ZlZnVzZSYjMzQ7LCBkaXIsCiYjNDM7CQkJCQkgICAgbXQ3OTI1X3ZlZnVzZV9yZWFkKTsKIAlkZWJ1Z2ZzX2NyZWF0ZV9kZXZtX3NlcWZpbGUoZGV2LSZndDttdDc2LmRldiwgJiMzNDtydW50aW1lX3BtX3N0YXRzJiMzNDssIGRpciwKIAkJCQkgICAgbXQ3OTJ4X3BtX3N0YXRzKTsKIAlkZWJ1Z2ZzX2NyZWF0ZV9maWxlKCYjMzQ7ZGVlcC1zbGVlcCYjMzQ7LCAwNjAwLCBkaXIsIGRldiwgJmFtcDtmb3BzX2RzKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMKaW5kZXggZmEyOWM0ODZhNDU1My4uODAwZDQ4YmVlMTEwYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMKQEAgLTg3MSw2ICYjNDM7ODcxLDIxNCBAQCBzdGF0aWMgaW50IG10NzkyNV9tY3VfcmVhZF9lZXByb20oc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTMyIG9mZnNldCwgdTggKnZhbCkKIAlyZXR1cm4gMDsKIH0KIAomIzQzO3N0YXRpYyBpbnQKJiM0MzttdDc5MjVfbWN1X3NlbmRfdmVmdXNlX3BhZ2Uoc3RydWN0IG10NzkyeF9kZXYgKmRldiwKJiM0MzsJCQkgICAgY29uc3QgdTggKmRhdGEsIHUzMiB0b3RhbF9sZW4sCiYjNDM7CQkJICAgIGludCBwYWdlX2lkeCwgaW50IHRvdGFsX3BhZ2VzKQomIzQzO3sKJiM0MzsJc3RydWN0IG10NzkyNV92ZWZ1c2VfcGFnZV9jbWQgKmNtZDsKJiM0MzsJc2l6ZV90IG9mZnNldCA9IChzaXplX3QpcGFnZV9pZHggKiBNVDc5MjVfVkVGVVNFX1BBR0VfU0laRTsKJiM0MzsJdTE2IHBhZ2VfbGVuID0gKHUxNiltaW5fdChzaXplX3QsCiYjNDM7CQkJCSAgTVQ3OTI1X1ZFRlVTRV9QQUdFX1NJWkUsCiYjNDM7CQkJCSAgdG90YWxfbGVuIC0gb2Zmc2V0KTsKJiM0MzsJaW50IHJldDsKJiM0MzsKJiM0MzsJY21kID0ga3phbGxvYyhzaXplb2YoKmNtZCksIEdGUF9LRVJORUwpOwomIzQzOwlpZiAoIWNtZCkKJiM0MzsJCXJldHVybiAtRU5PTUVNOwomIzQzOwomIzQzOwljbWQtJmd0O3RhZyAgICAgICAgICAgID0gY3B1X3RvX2xlMTYoVU5JX0VGVVNFX0JVRkZFUl9NT0RFKTsKJiM0MzsJY21kLSZndDtsZW4gICAgICAgICAgICA9IGNwdV90b19sZTE2KHNpemVvZigqY21kKSAtIHNpemVvZihjbWQtJmd0O3JzdikpOwomIzQzOwljbWQtJmd0O3NvdXJjZV9tb2RlICAgID0gVU5JX0VGVVNFX1NPVVJDRV9WRUZVU0U7CiYjNDM7CWNtZC0mZ3Q7Y29udGVudF9mb3JtYXQgPSBGSUVMRF9QUkVQKE1UNzkyNV9WRUZVU0VfVE9UQUxfUEFHRSwgdG90YWxfcGFnZXMpIHwKJiM0MzsJCQkgICAgICBGSUVMRF9QUkVQKE1UNzkyNV9WRUZVU0VfUEFHRV9JTkRFWCwgcGFnZV9pZHgpOwomIzQzOwljbWQtJmd0O2NvdW50ICAgICAgICAgID0gY3B1X3RvX2xlMTYocGFnZV9sZW4pOwomIzQzOwltZW1jcHkoY21kLSZndDtiaW5fY29udGVudCwgZGF0YSAmIzQzOyBvZmZzZXQsIHBhZ2VfbGVuKTsKJiM0MzsKJiM0MzsJcmV0ID0gbXQ3Nl9tY3Vfc2VuZF9tc2coJmFtcDtkZXYtJmd0O210NzYsIE1DVV9VTklfQ01EKEVGVVNFX0NUUkwpLAomIzQzOwkJCQljbWQsIHNpemVvZigqY21kKSwgdHJ1ZSk7CiYjNDM7CWtmcmVlKGNtZCk7CiYjNDM7CXJldHVybiByZXQ7CiYjNDM7fQomIzQzOwomIzQzOy8qIFJlYWQgYmFjayB2ZWZ1c2UgY29udGVudCBmcm9tIEZXIChVTkkgRUZVU0VfQ1RSTCBxdWVyeSwgQlVGRkVSX1JEIHRhZykuCiYjNDM7ICogb2Zmc2V0IGlzIHRoZSByYXcgMC1iYXNlZCBpbmRleCBpbnRvIHRoZSBGVyB2ZWZ1c2UgYnVmZmVyOyBzb3VyY2VfbW9kZQomIzQzOyAqIHNlbGVjdHMgdGhlIFZFRlVTRSByZWdpb24uIEV4cG9zZWQgZm9yIHRoZSBkZWJ1Z2ZzICYjMzQ7dmVmdXNlJiMzNDsgbm9kZS4KJiM0MzsgKi8KJiM0MztpbnQgbXQ3OTI1X21jdV9yZWFkX3ZlZnVzZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1MTYgb2Zmc2V0LCB1MTYgY291bnQsCiYjNDM7CQkJICAgdTggKm91dCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCB7CiYjNDM7CQl1OCByc3ZbNF07CiYjNDM7CiYjNDM7CQlfX2xlMTYgdGFnOwomIzQzOwkJX19sZTE2IGxlbjsKJiM0MzsKJiM0MzsJCXU4IHNvdXJjZV9tb2RlOwomIzQzOwkJdTggY29udGVudF9mb3JtYXQ7CiYjNDM7CQlfX2xlMTYgb2Zmc2V0OwomIzQzOwkJX19sZTE2IGNvdW50OwomIzQzOwkJX19sZTE2IHJzdjE7CiYjNDM7CX0gX19wYWNrZWQgcmVxID0gewomIzQzOwkJLnRhZyA9IGNwdV90b19sZTE2KFVOSV9FRlVTRV9CVUZGRVJfUkQpLAomIzQzOwkJLmxlbiA9IGNwdV90b19sZTE2KHNpemVvZihyZXEpIC0gc2l6ZW9mKHJlcS5yc3YpKSwKJiM0MzsJCS5zb3VyY2VfbW9kZSA9IFVOSV9FRlVTRV9TT1VSQ0VfVkVGVVNFLAomIzQzOwkJLm9mZnNldCA9IGNwdV90b19sZTE2KG9mZnNldCksCiYjNDM7CQkuY291bnQgPSBjcHVfdG9fbGUxNihjb3VudCksCiYjNDM7CX07CiYjNDM7CXN0cnVjdCB7CiYjNDM7CQl1OCByc3ZbNF07CiYjNDM7CiYjNDM7CQlfX2xlMTYgdGFnOwomIzQzOwkJX19sZTE2IGxlbjsKJiM0MzsKJiM0MzsJCXU4IHNvdXJjZV9tb2RlOwomIzQzOwkJdTggY29udGVudF9mb3JtYXQ7CiYjNDM7CQlfX2xlMTYgb2Zmc2V0OwomIzQzOwkJX19sZTE2IGNvdW50OwomIzQzOwkJdTggcnN2MVsyXTsKJiM0MzsJCXU4IGRhdGFbXTsKJiM0MzsJfSBfX3BhY2tlZCAqIHJlczsKJiM0MzsJc3RydWN0IHNrX2J1ZmYgKnNrYjsKJiM0MzsJaW50IHJldDsKJiM0MzsKJiM0MzsJcmV0ID0gbXQ3Nl9tY3Vfc2VuZF9hbmRfZ2V0X21zZygmYW1wO2Rldi0mZ3Q7bXQ3NiwgTUNVX1dNX1VOSV9DTURfUVVFUlkoRUZVU0VfQ1RSTCksCiYjNDM7CQkJCQkmYW1wO3JlcSwgc2l6ZW9mKHJlcSksIHRydWUsICZhbXA7c2tiKTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CiYjNDM7CXJlcyA9ICh2b2lkICopc2tiLSZndDtkYXRhOwomIzQzOwlpZiAoc2tiLSZndDtsZW4gJmx0OyBzaXplb2YoKnJlcykgJiM0MzsgY291bnQpIHsKJiM0MzsJCWRldl9rZnJlZV9za2Ioc2tiKTsKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwl9CiYjNDM7CiYjNDM7CW1lbWNweShvdXQsIHJlcy0mZ3Q7ZGF0YSwgY291bnQpOwomIzQzOwlkZXZfa2ZyZWVfc2tiKHNrYik7CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50CiYjNDM7bXQ3OTI1X2xvYWRfdmVmdXNlX2Zyb21fZncoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgY29uc3QgY2hhciAqZndfbmFtZSkKJiM0Mzt7CiYjNDM7CWNvbnN0IHN0cnVjdCBtdDc2X2Nvbm5hYzJfZndfdHJhaWxlciAqaGRyOwomIzQzOwljb25zdCBzdHJ1Y3QgbXQ3Nl9jb25uYWMyX2Z3X3JlZ2lvbiAqcmVnaW9uOwomIzQzOwlzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYgPSAmYW1wO2Rldi0mZ3Q7bXQ3NjsKJiM0MzsJY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdyA9IE5VTEw7CiYjNDM7CWNvbnN0IHU4ICp2ZWZ1c2VfYmFzZSA9IE5VTEw7CiYjNDM7CXUzMiBvZmZzZXQgPSAwLCBsZW4gPSAwLCBwYXlsb2FkOwomIzQzOwlpbnQgaSwgdG90YWxfcGFnZXMsIHJldCA9IDA7CiYjNDM7CiYjNDM7CWlmICghZGV2LSZndDt2ZWZ1c2VfY2FwLmVuYWJsZWQpCiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsKJiM0MzsJLyogcmVjb21wdXRlZCBvbiBldmVyeSBGVyBsb2FkOyBzZXQgdHJ1ZSBvbmx5IG9uY2UgYSB2ZWZ1c2UgcmVnaW9uIGlzCiYjNDM7CSAqIGZvdW5kIGluIHRoZSBpbWFnZSBiZWxvdyAodGhlIGRlYnVnZnMgbm9kZSBpcyBnYXRlZCBvbiB0aGlzKS4KJiM0MzsJICovCiYjNDM7CWRldi0mZ3Q7dmVmdXNlX2NhcC5wcmVzZW50ID0gZmFsc2U7CiYjNDM7CiYjNDM7CXJldCA9IHJlcXVlc3RfZmlybXdhcmUoJmFtcDtmdywgZndfbmFtZSwgbWRldi0mZ3Q7ZGV2KTsKJiM0MzsJaWYgKHJldCkgewomIzQzOwkJZGV2X3dhcm4obWRldi0mZ3Q7ZGV2LAomIzQzOwkJCSAmIzM0O3ZlZnVzZTogZmlybXdhcmUgJXMgbm90IGF2YWlsYWJsZSAoJWQpLCBza2lwcGluZ1xuJiMzNDssCiYjNDM7CQkJIGZ3X25hbWUsIHJldCk7CiYjNDM7CQlyZXQgPSAwOwomIzQzOwkJZ290byBvdXQ7CiYjNDM7CX0KJiM0MzsKJiM0MzsJaWYgKCFmdyB8fCAhZnctJmd0O2RhdGEgfHwgZnctJmd0O3NpemUgJmx0OyBzaXplb2YoKmhkcikpIHsKJiM0MzsJCWRldl93YXJuKG1kZXYtJmd0O2RldiwgJiMzNDt2ZWZ1c2U6IGludmFsaWQgZmlybXdhcmUsIHNraXBwaW5nXG4mIzM0Oyk7CiYjNDM7CQlnb3RvIG91dDsKJiM0MzsJfQomIzQzOwomIzQzOwloZHIgPSAoY29uc3Qgdm9pZCAqKShmdy0mZ3Q7ZGF0YSAmIzQzOyBmdy0mZ3Q7c2l6ZSAtIHNpemVvZigqaGRyKSk7CiYjNDM7CiYjNDM7CS8qIFJlZ2lvbiBkZXNjcmlwdG9ycyBzaXQgcmlnaHQgYmVmb3JlIHRoZSB0cmFpbGVyLiBNYWtlIHN1cmUgdGhlIHdob2xlCiYjNDM7CSAqIGRlc2NyaXB0b3IgYXJyYXkgaXMgd2l0aGluIHRoZSBpbWFnZSBiZWZvcmUgZGVyZWZlcmVuY2luZyB0aGVtLCBzbyBhCiYjNDM7CSAqIGNvcnJ1cHQgbl9yZWdpb24gY2Fubm90IHdhbGsgdGhlIHJlZ2lvbiBwb2ludGVyIGJlZm9yZSBmdy0mZ3Q7ZGF0YS4KJiM0MzsJICovCiYjNDM7CWlmIChmdy0mZ3Q7c2l6ZSAmbHQ7IHNpemVvZigqaGRyKSAmIzQzOyAoc2l6ZV90KWhkci0mZ3Q7bl9yZWdpb24gKiBzaXplb2YoKnJlZ2lvbikpIHsKJiM0MzsJCWRldl93YXJuKG1kZXYtJmd0O2RldiwKJiM0MzsJCQkgJiMzNDt2ZWZ1c2U6IGZpcm13YXJlIHRvbyBzbWFsbCBmb3IgJXUgcmVnaW9uIGRlc2NyaXB0b3JzLCBza2lwcGluZ1xuJiMzNDssCiYjNDM7CQkJIGhkci0mZ3Q7bl9yZWdpb24pOwomIzQzOwkJZ290byBvdXQ7CiYjNDM7CX0KJiM0MzsKJiM0MzsJZm9yIChpID0gMDsgaSAmbHQ7IGhkci0mZ3Q7bl9yZWdpb247IGkmIzQzOyYjNDM7KSB7CiYjNDM7CQlyZWdpb24gPSAoY29uc3Qgdm9pZCAqKSgoY29uc3QgdTggKiloZHIgLQomIzQzOwkJCQkJKGhkci0mZ3Q7bl9yZWdpb24gLSBpKSAqIHNpemVvZigqcmVnaW9uKSk7CiYjNDM7CQlsZW4gPSBsZTMyX3RvX2NwdShyZWdpb24tJmd0O2xlbik7CiYjNDM7CiYjNDM7CQlpZiAobGVuICZndDsgZnctJmd0O3NpemUgLSBvZmZzZXQpIHsKJiM0MzsJCQlkZXZfd2FybihtZGV2LSZndDtkZXYsICYjMzQ7dmVmdXNlOiBpbnZhbGlkIGZpcm13YXJlIHJlZ2lvbiwgc2tpcHBpbmdcbiYjMzQ7KTsKJiM0MzsJCQlnb3RvIG91dDsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCWlmICgocmVnaW9uLSZndDtmZWF0dXJlX3NldCAmYW1wOyBGV19GRUFUVVJFX05PTl9ETCkgJmFtcDsmYW1wOwomIzQzOwkJICAgIHJlZ2lvbi0mZ3Q7dHlwZSA9PSBGV19UWVBFX0VYVEVORF9CSU5fRUZVU0UpIHsKJiM0MzsJCQl2ZWZ1c2VfYmFzZSA9IGZ3LSZndDtkYXRhICYjNDM7IG9mZnNldDsKJiM0MzsJCQlkZXYtJmd0O3ZlZnVzZV9jYXAucHJlc2VudCA9IHRydWU7CiYjNDM7CQkJYnJlYWs7CiYjNDM7CQl9CiYjNDM7CQlvZmZzZXQgJiM0Mzs9IGxlbjsKJiM0MzsJfQomIzQzOwomIzQzOwlpZiAoIXZlZnVzZV9iYXNlKSB7CiYjNDM7CQlkZXZfd2FybihtZGV2LSZndDtkZXYsCiYjNDM7CQkJICYjMzQ7RldfVFlQRV9FWFRFTkRfQklOX0VGVVNFIGNodW5rIG5vdCBmb3VuZCBpbiBGVyBpbWFnZSwgdmlydHVhbCBlZnVzZSBza2lwcGVkXG4mIzM0Oyk7CiYjNDM7CQkvKiB2ZWZ1c2VfY2FwLnByZXNlbnQgc3RheXMgZmFsc2UgLSZndDsgZGVidWdmcyBub2RlIG5vdCBleHBvc2VkIG9uIGEKJiM0MzsJCSAqIFdGIHdpdGhvdXQgYSB2aXJ0dWFsIGVmdXNlLiB2ZWZ1c2VfY2FwLmVuYWJsZWQgKHRoZSBGVy1yZXBvcnRlZAomIzQzOwkJICogY2FwYWJpbGl0eSkgaXMgbGVmdCB1bnRvdWNoZWQuCiYjNDM7CQkgKi8KJiM0MzsJCWdvdG8gb3V0OwomIzQzOwl9CiYjNDM7CiYjNDM7CS8qIFRoZSBwYWNrZWQgRlcgcmVnaW9uIGNhcnJpZXMgdGhlIHZlZnVzZSBwYXlsb2FkIHBsdXMgY29ubmFjCiYjNDM7CSAqIHBlci1yZWdpb24gZnJhbWluZyAoNC1ieXRlIENSQyAmIzQzOyAxNi1ieXRlIGFsaWdubWVudCksIHNvIHJlZ2lvbgomIzQzOwkgKiBsZW5ndGggaXMgbGFyZ2VyIHRoYW4gdGhlIEZXLXJlcG9ydGVkIHBheWxvYWQuIE9ubHkgdGhlIGxlYWRpbmcKJiM0MzsJICogdmVmdXNlX2NhcC5zaXplIGJ5dGVzIGFyZSB0aGUgYWN0dWFsIHZlZnVzZSBjb250ZW50IHRvIHB1c2guCiYjNDM7CSAqLwomIzQzOwlwYXlsb2FkID0gZGV2LSZndDt2ZWZ1c2VfY2FwLnNpemU7CiYjNDM7CiYjNDM7CS8qIHZpcnR1YWwgZWZ1c2UgaXMgYW4gb3B0aW9uYWwgb3ZlcnJpZGU6IGlmIGl0IGNhbm5vdCBiZSBhcHBsaWVkIHRoZQomIzQzOwkgKiBjaGlwIHN0aWxsIHdvcmtzIG9uIGl0cyBkZWZhdWx0IGVmdXNlIHZhbHVlcywgc28gdGhlIGNoZWNrcyBiZWxvdwomIzQzOwkgKiBvbmx5IHdhcm4gYW5kIHNraXAgLSB0aGV5IG11c3Qgbm90IGZhaWwgZmlybXdhcmUgYnJpbmctdXAuCiYjNDM7CSAqLwomIzQzOwomIzQzOwkvKiBbQ2hlY2sgIzFdIHJlZ2lvbiBtdXN0IGhvbGQgYXQgbGVhc3QgdGhlIEZXLXJlcG9ydGVkIHBheWxvYWQgKi8KJiM0MzsJaWYgKGxlbiAmbHQ7IHBheWxvYWQpIHsKJiM0MzsJCWRldl93YXJuKG1kZXYtJmd0O2RldiwKJiM0MzsJCQkgJiMzNDt2ZWZ1c2U6IHJlZ2lvbiBzaXplICV1IHNtYWxsZXIgdGhhbiBGVyBjYXBhYmlsaXR5ICV1LCBza2lwcGluZ1xuJiMzNDssCiYjNDM7CQkJIGxlbiwgcGF5bG9hZCk7CiYjNDM7CQlnb3RvIG91dDsKJiM0MzsJfQomIzQzOwomIzQzOwl0b3RhbF9wYWdlcyA9IERJVl9ST1VORF9VUChwYXlsb2FkLCBNVDc5MjVfVkVGVVNFX1BBR0VfU0laRSk7CiYjNDM7CWlmICh0b3RhbF9wYWdlcyAmZ3Q7IE1UNzkyNV9WRUZVU0VfTUFYX1BBR0VTKSB7CiYjNDM7CQlkZXZfd2FybihtZGV2LSZndDtkZXYsCiYjNDM7CQkJICYjMzQ7dmVmdXNlOiBwYXlsb2FkIHRvbyBsYXJnZTogJXUgYnl0ZXMgKCVkIHBhZ2VzKSwgbWF4ICVkIHBhZ2VzIHN1cHBvcnRlZCwgc2tpcHBpbmdcbiYjMzQ7LAomIzQzOwkJCSBwYXlsb2FkLCB0b3RhbF9wYWdlcywgTVQ3OTI1X1ZFRlVTRV9NQVhfUEFHRVMpOwomIzQzOwkJZ290byBvdXQ7CiYjNDM7CX0KJiM0MzsKJiM0MzsJZm9yIChpID0gMDsgaSAmbHQ7IHRvdGFsX3BhZ2VzOyBpJiM0MzsmIzQzOykgewomIzQzOwkJcmV0ID0gbXQ3OTI1X21jdV9zZW5kX3ZlZnVzZV9wYWdlKGRldiwgdmVmdXNlX2Jhc2UsIHBheWxvYWQsCiYjNDM7CQkJCQkJICBpLCB0b3RhbF9wYWdlcyk7CiYjNDM7CQlpZiAocmV0KSB7CiYjNDM7CQkJZGV2X3dhcm4obWRldi0mZ3Q7ZGV2LAomIzQzOwkJCQkgJiMzNDt2ZWZ1c2UgcGFnZSAlZC8lZCBzZW5kIGZhaWxlZDogJWQsIHNraXBwaW5nXG4mIzM0OywKJiM0MzsJCQkJIGkgJiM0MzsgMSwgdG90YWxfcGFnZXMsIHJldCk7CiYjNDM7CQkJcmV0ID0gMDsKJiM0MzsJCQlnb3RvIG91dDsKJiM0MzsJCX0KJiM0MzsJfQomIzQzOwomIzQzO291dDoKJiM0MzsJcmVsZWFzZV9maXJtd2FyZShmdyk7CiYjNDM7CXJldHVybiByZXQ7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBtdDc5MjVfbG9hZF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgY29uc3QgY2hhciAqZndfbmFtZSkKIHsKIAljb25zdCBzdHJ1Y3QgbXQ3Nl9jb25uYWMyX2Z3X3RyYWlsZXIgKmhkcjsKQEAgLTExMjYsNiAmIzQzOzEzMzQsMTcgQEAgbXQ3OTI1X21jdV9nZXRfbmljX2NhcGFiaWxpdHkoc3RydWN0IG10NzkyeF9kZXYgKmRldikKIAkJY2FzZSBNVF9OSUNfQ0FQX0VNTF9DQVA6CiAJCQltdDc5MjVfbWN1X3BhcnNlX2VtbF9jYXAoZGV2LCB0bHYtJmd0O2RhdGEpOwogCQkJYnJlYWs7CiYjNDM7CQljYXNlIE1UX05JQ19DQVBfVkVGVVNFX0lORk86IHsKJiM0MzsJCQlzdHJ1Y3QgbXQ3OTI1X3ZlZnVzZV9jYXAgKmNhcDsKJiM0MzsKJiM0MzsJCQlpZiAobGVuICZsdDsgc2l6ZW9mKCp0bHYpICYjNDM7IHNpemVvZigqY2FwKSkKJiM0MzsJCQkJYnJlYWs7CiYjNDM7CiYjNDM7CQkJY2FwID0gKHN0cnVjdCBtdDc5MjVfdmVmdXNlX2NhcCAqKXRsdi0mZ3Q7ZGF0YTsKJiM0MzsJCQlkZXYtJmd0O3ZlZnVzZV9jYXAuZW5hYmxlZCAgID0gY2FwLSZndDtlbmFibGVkOwomIzQzOwkJCWRldi0mZ3Q7dmVmdXNlX2NhcC5zaXplICAgICAgPSBsZTE2X3RvX2NwdShjYXAtJmd0O3NpemUpOwomIzQzOwkJCWJyZWFrOwomIzQzOwkJfQogCQlkZWZhdWx0OgogCQkJYnJlYWs7CiAJCX0KQEAgLTExOTksNiAmIzQzOzE0MTgsMTMgQEAgaW50IG10NzkyNV9ydW5fZmlybXdhcmUoc3RydWN0IG10NzkyeF9kZXYgKmRldikKIAlpZiAoZXJyKQogCQlyZXR1cm4gZXJyOwogCiYjNDM7CS8qIFZpcnR1YWwgZWZ1c2UgaXMgYmVzdC1lZmZvcnQgYW5kIGN1cnJlbnRseSBuZXZlciBmYWlscyBicmluZy11cCwgYnV0CiYjNDM7CSAqIGtlZXAgdGhlIGVycm9yIHByb3BhZ2F0aW9uIGZvciBhIHBvc3NpYmxlIGZ1dHVyZSBmYXRhbCB2ZWZ1c2UgZXJyb3IuCiYjNDM7CSAqLwomIzQzOwllcnIgPSBtdDc5MjVfbG9hZF92ZWZ1c2VfZnJvbV9mdyhkZXYsIG10NzkyeF9yYW1fbmFtZShkZXYpKTsKJiM0MzsJaWYgKGVycikKJiM0MzsJCXJldHVybiBlcnI7CiYjNDM7CiAJZXJyID0gbXQ3OTI1X2xvYWRfY2xjKGRldiwgbXQ3OTJ4X3JhbV9uYW1lKGRldikpOwogCWlmIChlcnIpCiAJCXJldHVybiBlcnI7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5oCmluZGV4IDExZjllYWMxM2ZmYzYuLmEwZWIzMGQyNTcwZGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5oCkBAIC0xMzcsNiAmIzQzOzEzNyw0MSBAQCBlbnVtIHsKIAlVTklfRUZVU0VfQlVGRkVSX1JELAogfTsKIAomIzQzOy8qIHBhZ2Ugc2l6ZSBhbmQgY29udGVudF9mb3JtYXQgbGF5b3V0IGZvbGxvdyB0aGUgRlcgYnVmZmVyLW1vZGUgQUJJICovCiYjNDM7I2RlZmluZSBNVDc5MjVfVkVGVVNFX1BBR0VfU0laRQkJMTAyNAkvKiBGVyBCVUZGRVJfQklOX1BBR0VfU0laRSAoMHg0MDApICovCiYjNDM7I2RlZmluZSBNVDc5MjVfVkVGVVNFX01BWF9QQUdFUwkJNwkvKiBjb250ZW50X2Zvcm1hdCBwYWdlIGZpZWxkcyBhcmUgMy1iaXQgKi8KJiM0MzsKJiM0MzsjZGVmaW5lIE1UNzkyNV9WRUZVU0VfVE9UQUxfUEFHRQlHRU5NQVNLKDcsIDUpCS8qIEZXIEJVRkZFUl9CSU5fVE9UQUxfUEFHRSAqLwomIzQzOyNkZWZpbmUgTVQ3OTI1X1ZFRlVTRV9QQUdFX0lOREVYCUdFTk1BU0soNCwgMikJLyogRlcgQlVGRkVSX0JJTl9QQUdFX0lOREVYICovCiYjNDM7CiYjNDM7LyogYnVmZmVyIG1vZGUgY29udGVudCBzb3VyY2UsIGFsaWducyB3aXRoIEZXIEJVRkZFUl9TT1VSQ0VfTU9ERV9JTkZPXyogKi8KJiM0MztlbnVtIHsKJiM0MzsJVU5JX0VGVVNFX1NPVVJDRV9FRlVTRSA9IDAsCiYjNDM7CVVOSV9FRlVTRV9TT1VSQ0VfRUVQUk9NID0gMSwKJiM0MzsJVU5JX0VGVVNFX1NPVVJDRV9WRUZVU0UgPSAyLAomIzQzO307CiYjNDM7CiYjNDM7c3RydWN0IG10NzkyNV92ZWZ1c2VfY2FwIHsKJiM0MzsJdTggdmVyc2lvbjsKJiM0MzsJdTggZW5hYmxlZDsKJiM0MzsJX19sZTE2IHNpemU7CiYjNDM7CV9fbGUzMiBoYXNoX2FkZHI7CiYjNDM7fSBfX3BhY2tlZDsKJiM0MzsKJiM0MztzdHJ1Y3QgbXQ3OTI1X3ZlZnVzZV9wYWdlX2NtZCB7CiYjNDM7CXU4IHJzdls0XTsJCS8qIFVOSV9DTURfRUZVU0VfQ09OVFJPTCBoZWFkZXIgYmVmb3JlIFRMViAqLwomIzQzOwomIzQzOwlfX2xlMTYgdGFnOwkJLyogVU5JX0VGVVNFX0JVRkZFUl9NT0RFICovCiYjNDM7CV9fbGUxNiBsZW47CiYjNDM7CXU4IHNvdXJjZV9tb2RlOwkJLyogVU5JX0VGVVNFX1NPVVJDRV9WRUZVU0UgKi8KJiM0MzsJdTggY29udGVudF9mb3JtYXQ7CS8qIFs3OjVdPXRvdGFsX3BhZ2VzIFs0OjJdPXBhZ2VfaWR4ICovCiYjNDM7CV9fbGUxNiBjb3VudDsJCS8qIHZhbGlkIGJ5dGVzIGluIHRoaXMgcGFnZSAqLwomIzQzOwl1OCBiaW5fY29udGVudFtNVDc5MjVfVkVGVVNFX1BBR0VfU0laRV07CiYjNDM7fSBfX3BhY2tlZDsKJiM0MzsKJiM0MztpbnQgbXQ3OTI1X21jdV9yZWFkX3ZlZnVzZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1MTYgb2Zmc2V0LCB1MTYgY291bnQsCiYjNDM7CQkJICAgdTggKm91dCk7CiYjNDM7CiBlbnVtIHsKIAlVTklfQ01EX0FDQ0VTU19SRUdfQkFTSUMgPSAweDAsCiAJVU5JX0NNRF9BQ0NFU1NfUkZfUkVHX0JBU0lDLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmgKaW5kZXggOWVmYzI1MWNiNzQ1Zi4uNzBhNzRlMDcxYjE3YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oCkBAIC0zNDIsNiAmIzQzOzM0MiwxMiBAQCBzdHJ1Y3QgbXQ3OTJ4X2RldiB7CiAJc3RydWN0IGllZWU4MDIxMV92aWYgKm5hbl92aWY7CiAJY29uc3Qgc3RydWN0IGllZWU4MDIxMV9pZmFjZV9jb21iaW5hdGlvbiAqaWZhY2VfY29tYmluYXRpb25zOwogCWludCBuX2lmYWNlX2NvbWJpbmF0aW9uczsKJiM0MzsKJiM0MzsJc3RydWN0IHsKJiM0MzsJCWJvb2wgZW5hYmxlZDsJLyogRlcgcmVwb3J0cyB2ZWZ1c2UgY2FwYWJpbGl0eSAodW5jb25kaXRpb25hbCkgKi8KJiM0MzsJCWJvb2wgcHJlc2VudDsJLyogYSB2ZWZ1c2UgcmVnaW9uIHdhcyBmb3VuZCBpbiB0aGUgRlcgaW1hZ2UgKi8KJiM0MzsJCXUxNiBzaXplOwomIzQzOwl9IHZlZnVzZV9jYXA7CiB9OwogCiBzdGF0aWMgaW5saW5lIHN0cnVjdCBtdDc5MnhfYnNzX2NvbmYgKgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwOToxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MzY0CgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogNDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFzc2Vzc2luZyB0aGUgRnV6emluZyBQb3RlbnRpYWwgb2YgYSBLZXJuZWwgUGF0Y2gqKgoKT2theSwgc28gd2UgaGF2ZSB0aGlzIHBhdGNoLCByaWdodD8gSXQmIzM5O3MgYXBwbGllZCB0byB0aGUgTGludXgga2VybmVsIGFuZCBzcGVjaWZpY2FsbHkgdHdlYWtzIHRoZSBgbXQ3NmAgd2lyZWxlc3MgZHJpdmVyLCB0YXJnZXRpbmcgdGhlIE1lZGlhdGVrIGBtdDc5MjVgIGhhcmR3YXJlLiBUaGUgcGF0Y2gmIzM5O3MgY29yZSBmdW5jdGlvbiBpcyBhZGRpbmcgc3VwcG9ydCBmb3IgJiMzNDt2aXJ0dWFsIGVmdXNlJiMzNDsg4oCTIGB2ZWZ1c2VgIOKAkyB0byBiZSBsb2FkZWQgZnJvbSB0aGUgZmlybXdhcmUuIEl0IGFsc28gcHJvdmlkZXMgYSBkZWJ1Z2ZzIGludGVyZmFjZSBmb3IgcmVhZGluZyB0aGlzIHZlZnVzZSBkYXRhLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtjYW4gd2UgYWN0dWFsbHkgZ2V0IHRvIHRoaXMgY29kZSwgYW5kIGlzIGl0IGV2ZW4gd29ydGggZnV6emluZz8mIzM0OwoKVGhlIGRyaXZlciBpdHNlbGYgaXMgYG10NzZgLCBtb3JlIHByZWNpc2VseSBgbXQ3OTI1YCwgc28gSSYjMzk7bGwgbmVlZCB0byBmb2N1cyBvbiBjb2RlIHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvYC4gSSBjYW4gc2VlIGZyb20gdGhlIHBhdGNoIHRoYXQgYG10NzkyNV92ZWZ1c2VfcmVhZGAgaGFzIGJlZW4gYWRkZWQgaW4gYGRlYnVnZnMuY2AsIGV4cG9zZWQgdmlhIGRlYnVnZnMsIGFuZCBgbXQ3OTI1X2xvYWRfdmVmdXNlX2Zyb21fZndgIGhhcyBiZWVuIGFkZGVkIGluIGBtY3UuY2AsIGNhbGxlZCBmcm9tIGBtdDc5MjVfcnVuX2Zpcm13YXJlYC4gSXQgbG9va3MgbGlrZSBgbXQ3OTI1X3J1bl9maXJtd2FyZWAgaXMgdHJpZ2dlcmVkIGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24uCgpTaW5jZSB0aGlzIGlzIGEgd2lyZWxlc3MgZHJpdmVyLCBteSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIHJlYWNoIGZvciBgbWFjODAyMTFfaHdzaW1gLiBCdXQgd2FpdCwgdGhhdCYjMzk7cyBqdXN0IGEgc29mdHdhcmUgc2ltdWxhdG9yLCBpdCBkb2VzbiYjMzk7dCByZXByZXNlbnQgTWVkaWF0ZWsgaGFyZHdhcmUsIHNvIHRoYXQmIzM5O3Mgbm90IGdvaW5nIHRvIHdvcmsuIENhbiB3ZSBzaW11bGF0ZSBgbXQ3OTI1YCBzb21laG93PyBXaXJlbGVzcyBkcml2ZXJzIGFyZSB1c3VhbGx5IGhhcmR3YXJlLWRlcGVuZGVudCwgbmVlZGluZyBQQ0llLCBVU0IsIG9yIFNESU8uIE5vdywgdGhlIHF1ZXN0aW9uIGlzLCBjYW4gd2UgZW11bGF0ZSB0aGUgaGFyZHdhcmUgaW4gb3VyIGZ1enppbmcgc2V0dXA/IAoKVGhlbiBpdCBoaXRzIG1lLCB3ZSBzaG91bGQgc2VlIHdoYXQgYnVzIHR5cGVzIGBtdDc5MjVgIHN1cHBvcnRzLiBBbmQgd2UgYXJlIGluIGx1Y2shIExvb2tzIGxpa2UgdGhlIGBtdDc5MjVgIGRyaXZlciBzdXBwb3J0cyBib3RoIFBDSWUgYW5kIFVTQi4gU3l6a2FsbGVyIGhhcyBhIFVTQiBmdXp6ZXIsIHdoaWNoIHVzZXMgYSBkdW1teSBob3N0IGNvbnRyb2xsZXIgKGhjZCkgYW5kIHJhdyBnYWRnZXQgbW9kZSwgc28gaWYgaXQmIzM5O3MgYSBVU0IgZHJpdmVyLCB3ZSYjMzk7cmUgaW4gYnVzaW5lc3MhIFRoYXTigJlzIHByb21pc2luZywgbGV0JiMzOTtzIHNlZSBpZiB0aGUgYG10NzkyNWAgZHJpdmVyIGhhcyBhIFVTQiBpbXBsZW1lbnRhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwOToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5MjUuKnVzYiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZT05PW10NzkyNWUteSA6PSBwY2kubyBwY2lfbWFjLm8gcGNpX21jdS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZToxMDptdDc5MjV1LXkgOj0gdXNiLm9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz0xNjIwPXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNjIxOm10NzkyNV91c2Jfc2Rpb193cml0ZV90eHdpKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNjIyLVx0XHRcdCAgIGVudW0gbXQ3Nl90eHFfaWQgcWlkLCBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE2MzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNjMzOmludCBtdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCB2b2lkICp0eHdpX3B0cixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE2MzQtXHRcdFx0XHQgICBlbnVtIG10NzZfdHhxX2lkIHFpZCwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNjYzLVx0cGt0aWQgPSBtdDc2X3R4X3N0YXR1c19za2JfYWRkKFx1MDAyNmRldi1cdTAwM2VtdDc2LCB3Y2lkLCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTY2NDpcdG10NzkyNV91c2Jfc2Rpb193cml0ZV90eHdpKGRldiwgd2NpZCwgcWlkLCBzdGEsIGtleSwgcGt0aWQsIHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNjY1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE2NzctfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTY3ODpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTY3OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE2ODA6dm9pZCBtdDc5MjVfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE2ODEtXHRcdFx0XHQgICAgIHN0cnVjdCBtdDc2X3F1ZXVlX2VudHJ5ICplKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE2OTgtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTY5OTpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE3MDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNzAxOmJvb2wgbXQ3OTI1X3VzYl9zZGlvX3R4X3N0YXR1c19kYXRhKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdTggKnVwZGF0ZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE3MDIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE3MTAtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTcxMTpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfdXNiX3NkaW9fdHhfc3RhdHVzX2RhdGEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTcxMi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaD0zNjk9aW50IG10NzkyNV9tY3VfZ2V0X3RlbXBlcmF0dXJlKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMzcwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg6MzcxOmludCBtdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCB2b2lkICp0eHdpX3B0cixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTM3Mi1cdFx0XHRcdCAgIGVudW0gbXQ3Nl90eHFfaWQgcWlkLCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTM3NC1cdFx0XHRcdCAgIHN0cnVjdCBtdDc2X3R4X2luZm8gKnR4X2luZm8pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg6Mzc1OnZvaWQgbXQ3OTI1X3VzYl9zZGlvX3R4X2NvbXBsZXRlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaC0zNzYtXHRcdFx0XHQgICAgIHN0cnVjdCBtdDc2X3F1ZXVlX2VudHJ5ICplKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oOjM3Nzpib29sIG10NzkyNV91c2Jfc2Rpb190eF9zdGF0dXNfZGF0YShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHU4ICp1cGRhdGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMzc4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jPTgwPXN0YXRpYyBpbnQgbXQ3OTI1dV9tYWNfcmVzZXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0xNDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzoxNTA6c3RhdGljIGludCBtdDc5MjV1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE1MS1cdFx0XHQgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE1OS1cdFx0XHRcdFNVUlZFWV9JTkZPX1RJTUVfQlNTX1JYLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6MTYwOlx0XHQudHhfcHJlcGFyZV9za2IgPSBtdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzoxNjE6XHRcdC50eF9jb21wbGV0ZV9za2IgPSBtdDc5MjVfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6MTYyOlx0XHQudHhfc3RhdHVzX2RhdGEgPSBtdDc5MjVfdXNiX3NkaW9fdHhfc3RhdHVzX2RhdGEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0xNjMtXHRcdC5yeF9za2IgPSBtdDc5MjVfcXVldWVfcnhfc2tiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTI2OS0jaWZkZWYgQ09ORklHX1BNXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzoyNzA6c3RhdGljIGludCBtdDc5MjV1X3N1c3BlbmQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIHBtX21lc3NhZ2VfdCBzdGF0ZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTI3MS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMzAyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6MzAzOnN0YXRpYyBpbnQgbXQ3OTI1dV9yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0zMDQte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA5OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNTA4CgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogODgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGlzOgoKKipBbmFseXppbmcgdGhlIG10NzkyNSBVU0IgRHJpdmVyIFBhdGNoKioKCkFscmlnaHQsIHNvIGl0IGxvb2tzIGxpa2UgdGhlIGBtdDc5MjVgIGhhcyBhIFVTQiBkcml2ZXIsIHdoaWNoIGlzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gVGhlIHBhdGNoIEkmIzM5O20gZXhhbWluaW5nIGZvY3VzZXMgb24gbW9kaWZ5aW5nIGBtdDc5MjVfcnVuX2Zpcm13YXJlYC4gU3BlY2lmaWNhbGx5LCBpdCBpbnRyb2R1Y2VzIGEgY2FsbCB0byBgbXQ3OTI1X2xvYWRfdmVmdXNlX2Zyb21fZndgIHdpdGhpbiB0aGF0IGZ1bmN0aW9uLiBUaGlzIGlzIGludGVyZXN0aW5nLCBhcyB0aGF0IHN1Z2dlc3RzIHRoZSBWRSBmdXNlIGxvYWRpbmcgcHJvY2VzcyBpcyBub3cgaW50ZWdyYXRlZCBkaXJlY3RseSBpbnRvIHRoZSBmaXJtd2FyZSBydW50aW1lIHByb2Nlc3MuIFRoaW5raW5nIGFib3V0IHRoZSBjb250ZXh0LCB0aGlzIGNhbGwgb2NjdXJzIGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24uIE5vdywgc2luY2UgdGhpcyBpcyBhIFVTQiBkZXZpY2UsIGRldmljZSBpbml0aWFsaXphdGlvbiBpcyBuYXR1cmFsbHkgZ29pbmcgdG8gYmUgdHJpZ2dlcmVkIHdoZW4gdGhlIFVTQiBkZXZpY2UgaXMgcHJvYmVkLiBTbywgdGhlIGNvcmUgcXVlc3Rpb24gaXM6IGlzIGBtdDc5MjVfcnVuX2Zpcm13YXJlYCBhY3R1YWxseSBjYWxsZWQgZHVyaW5nIHRoYXQgcHJvYmUgcHJvY2Vzcz8gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IHRoaXMgY2FsbCBjaGFpbiBpcyBoYXBwZW5pbmcgYXMgZXhwZWN0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDk6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTI1X3J1bl9maXJtd2FyZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYz0xNDA3PUVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV9tY3Vfc2V0X3RoZXJtYWxfcHJvdGVjdCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0xNDA4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM6MTQwOTppbnQgbXQ3OTI1X3J1bl9maXJtd2FyZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtMTQxMC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtMTQzNC19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYzoxNDM1OkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV9ydW5fZmlybXdhcmUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtMTQzNi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaD0yNzk9dm9pZCBtdDc5MjVfdW5yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaDoyODA6aW50IG10NzkyNV9ydW5fZmlybXdhcmUoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaC0yODEtaW50IG10NzkyNV9tY3Vfc2V0X2Jzc19wbShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tYWMuYz03MT1pbnQgbXQ3OTI1ZV9tYWNfcmVzZXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWFjLmMtMTMzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21hYy5jOjEzNDpcdGVyciA9IG10NzkyNV9ydW5fZmlybXdhcmUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tYWMuYy0xMzUtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tY3UuYz0yNz1pbnQgbXQ3OTI1ZV9tY3VfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tY3UuYy00Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tY3UuYzo0ODpcdGVyciA9IG10NzkyNV9ydW5fZmlybXdhcmUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tY3UuYy00OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYz01Nj1zdGF0aWMgaW50IG10NzkyNXVfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy02OS1cdG10NzZfc2V0KGRldiwgTVRfVURNQV9UWF9RU0VMLCBNVF9GV19ETF9FTik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzo3MDpcdHJldCA9IG10NzkyNV9ydW5fZmlybXdhcmUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTcxLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYz04MD1zdGF0aWMgaW50IG10NzkyNXVfbWFjX3Jlc2V0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMTIwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6MTIxOlx0ZXJyID0gbXQ3OTI1X3J1bl9maXJtd2FyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMTIyLVx0aWYgKGVycilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwOToxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTk4MwoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDM5MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgYG10NzkyNWAgRmlybXdhcmUgTG9hZGluZyBhbmQgVVNCIFJlYWNoYWJpbGl0eSoqCgpPa2F5LCBzbyBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGcm9tIHdoYXQgSSBzZWUsIGBtdDc5MjVfcnVuX2Zpcm13YXJlYCBpcyBhIGtleSBmdW5jdGlvbi4gSXQmIzM5O3MgY2FsbGVkIGRpcmVjdGx5IGZyb20gYG10NzkyNXVfbWN1X2luaXRgIGFuZCBgbXQ3OTI1dV9tYWNfcmVzZXRgIHdpdGhpbiBgdXNiLmNgLiBUaGlzIGlzIHNpZ25pZmljYW50IGJlY2F1c2UgdGhhdCBtZWFucyB3ZSBoYXZlIGEgZGlyZWN0IHBhdGggdG8gdGhpcyBjb2RlIHZpYSBVU0IgaW50ZXJhY3Rpb24sIG1ha2luZyBpdCBhIHZpYWJsZSB0YXJnZXQgZm9yIFVTQiBmdXp6aW5nIGNhbXBhaWducy4KClRoZSBwYXRjaCBpbnRyb2R1Y2VzIGBtdDc5MjVfbG9hZF92ZWZ1c2VfZnJvbV9md2AsIHdoaWNoIGlzIHRoZSBjcnVjaWFsIHBvaW50IGhlcmUgYmVjYXVzZSBpdCBkZWFscyB3aXRoIHBhcnNpbmcgZmlybXdhcmUgZGF0YS4gSXQgYWxzbyBhZGRzIGEgZGVidWdmcyBmaWxlIG5hbWVkIGB2ZWZ1c2VgLCB3aGljaCwgdXBvbiByZWFkaW5nLCB0cmlnZ2VycyBgbXQ3OTI1X3ZlZnVzZV9yZWFkYC4gVGhlIGNyZWF0aW9uIG9mIHRoaXMgZGVidWdmcyBlbnRyeSBpcyBjb25kaXRpb25hbDsgaXQgaGFwcGVucyB3aXRoaW4gYG10NzkyNV9pbml0X2RlYnVnZnNgIGJ1dCAqb25seSogaWYgYGRldi0mZ3Q7dmVmdXNlX2NhcC5wcmVzZW50YCBpcyB0cnVlLCB3aGljaCBpbiB0dXJuIG1lYW5zIHRoZSBmaXJtd2FyZSBtdXN0IGNvbnRhaW4gdGhlIGBGV19UWVBFX0VYVEVORF9CSU5fRUZVU0VgIGZsYWcuCgpOb3csIGhlcmUmIzM5O3Mgd2hlcmUgaXQgZ2V0cyBpbnRlcmVzdGluZy4gSSYjMzk7bSB0aGlua2luZywgJiMzNDtzeXprYWxsZXImIzM0Oy4gSXQgY2FuIHVzZSBgcmVxdWVzdF9maXJtd2FyZWAgaW50ZXJjZXB0aW9uIHRvIHByb3ZpZGUgY3VzdG9tIGZpcm13YXJlIGlmIGl0IGtub3dzIHRoZSBmaXJtd2FyZSBuYW1lLCByaWdodD8gRXZlbiBpZiBzeXprYWxsZXIgKmRvZXNuJiMzOTt0KiBrbm93IHRoZSBmaXJtd2FyZSBuYW1lIGluaXRpYWxseSwgdGhlIHBhcnNpbmcgY29kZSB3aXRoaW4gYG10NzkyNV9sb2FkX3ZlZnVzZV9mcm9tX2Z3YCB3aWxsIHN0aWxsIGJlIGV4ZWN1dGVkLiBXZSBhbHJlYWR5IGtub3cgdGhhdCBpdCBleGVjdXRlcyBgcmVxdWVzdF9maXJtd2FyZSgmYW1wO2Z3LCBmd19uYW1lLCBtZGV2LSZndDtkZXYpO2AuIElmIHRoZSBmaXJtd2FyZSBpcyBub3QgaW1tZWRpYXRlbHkgYXZhaWxhYmxlLCBpdCBzaW1wbHkgc2tpcHMgdGhhdCBwYXJ0LiBJZiBpdCAqaXMqIGF2YWlsYWJsZSwgaXQgcGFyc2VzIGl0LgoKU28sIHRoZSBxdWVzdGlvbiBpcywgY2FuIHN5emthbGxlciBmdXp6IHRoaXMgbG9hZGluZyBwcm9jZXNzPyBUaGUgYW5zd2VyIGlzIGEgY2xlYXIgJiMzNDt5ZXMuJiMzNDsgSXQgY2FuIGRlZmluaXRlbHkgZnV6eiB0aGUgZmlybXdhcmUgbG9hZGluZyBpZiB0aGUgZmlybXdhcmUgbmFtZSBpcyBrbm93biBvciBkeW5hbWljYWxseSByZXF1ZXN0ZWQuIFdlIHNob3VsZCBiZSBhYmxlIHRvIGxldmVyYWdlIHN5emthbGxlciYjMzk7cyBmaXJtd2FyZSBsb2FkaW5nIGNhcGFiaWxpdGllcywgbGlrZWx5IHVzaW5nIGBzeXpfbW91bnRfaW1hZ2VgIG9yIGEgc2ltaWxhciBjb25zdHJ1Y3QsIGJ1dCBhZGFwdGVkIGZvciBmaXJtd2FyZSB3aGVyZSBpdCBpbnRlcmNlcHRzIGByZXF1ZXN0X2Zpcm13YXJlYC4KCk5vdywgdGhlIG5leHQgY29uc2lkZXJhdGlvbjogYXJlIHRoZXJlIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cz8gV2UgbmVlZCB0byBlbnN1cmUgZWl0aGVyIGBDT05GSUdfTVQ3OTI1RWAgb3IgYENPTkZJR19NVDc5MjVVYCBpcyBlbmFibGVkLiBMZXQmIzM5O3MgZGlnIGludG8gdGhlIGBtdDc5MjVgIEtjb25maWcgZmlsZSB0byBjb25maXJtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA5OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNVDc5MjUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZzoyOmNvbmZpZyBNVDc5MjVfQ09NTU9OXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTMtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc6Nzpjb25maWcgTVQ3OTI1RVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy04LVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3OTI1RSAoUENJZSkgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjE5OmNvbmZpZyBNVDc5MjVVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTIwLVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3OTI1VSAoVVNCKSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDk6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMyNzIKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGUgZGVwZW5kZW5jaWVzIG9mIGBNVDc5MjVVYDoKCioqQ2hlY2tpbmcgdGhlIERlcGVuZGVuY2llcyBvZiBNVDc5MjVVKioKCk9rYXksIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IGBNVDc5MjVVYC4gVGltZSB0byBydW4gdGhyb3VnaCB0aGUgbWVudGFsIGNoZWNrbGlzdC4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBjb21wb25lbnQgKmRvZXMqLiBJcyB0aGlzIGEgZHJpdmVyLCBhIGZpcm13YXJlIG1vZHVsZSwgYSBzcGVjaWZpYyBoYXJkd2FyZSBibG9jaywgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IFRoZSBuYW1lIGl0c2VsZiBzdWdnZXN0cyBhIE1lZGlhVGVrIGNoaXBzZXQsIHBvdGVudGlhbGx5IGEgV2lGaSBvciBCbHVldG9vdGggc29sdXRpb24uICYjMzQ7VSYjMzQ7IHVzdWFsbHkgaW1wbGllcyBhIFVTQiBpbnRlcmZhY2UsIHJpZ2h0PyBTbyB3ZSYjMzk7cmUgbGlrZWx5IGRlYWxpbmcgd2l0aCBhIFVTQi1jb25uZWN0ZWQgd2lyZWxlc3Mgc29sdXRpb24sIHdoaWNoIGltbWVkaWF0ZWx5IG5hcnJvd3MgZG93biB0aGUgcGxheWluZyBmaWVsZC4KCk5vdywgdGhlIGRlcGVuZGVuY3kgYW5hbHlzaXMgYmVnaW5zLiBXaGVyZSBkb2VzIGBNVDc5MjVVYCBzaXQgaW4gdGhlIHN5c3RlbSBhcmNoaXRlY3R1cmU/IElzIGl0IGRpcmVjdGx5IGNvbW11bmljYXRpbmcgd2l0aCB0aGUga2VybmVsJiMzOTtzIFVTQiBzdGFjaz8gRG9lcyBpdCByZWx5IG9uIHNwZWNpZmljIFVTQiBkcml2ZXIgbW9kdWxlcz8gQXJlIHRoZXJlIGFueSBhc3NvY2lhdGVkIGZpcm13YXJlIGJsb2JzIHRoYXQgbmVlZCB0byBiZSBsb2FkZWQ/IFRoaW5raW5nIGFib3V0IHRoZSBwb3RlbnRpYWwgZGVwZW5kZW5jaWVzLCBJIGV4cGVjdCB0byBzZWUga2VybmVsIG1vZHVsZXMgcmVsYXRlZCB0byBVU0IgZGV2aWNlIGRyaXZlcnMgYW5kIHBvdGVudGlhbGx5IHNvbWUgZmlybXdhcmUgbG9hZGluZyBtZWNoYW5pc21zLiBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgZm9yIGNhbGxzIHRvIHRoZSBzdGFuZGFyZCBVU0IgaW50ZXJmYWNlIGZ1bmN0aW9ucy4KCkZ1cnRoZXJtb3JlLCBJIGhhdmUgdG8gY29uc2lkZXIgdGhlIHBvdGVudGlhbCBmb3IgZGVwZW5kZW5jaWVzIG9uIHNwZWNpZmljIG5ldHdvcmsgY29uZmlndXJhdGlvbiB0b29scyBvciBsaWJyYXJpZXMuIERvZXMgYE1UNzkyNVVgIGludGVyZmFjZSB3aXRoIGBpd2x3aWZpYCwgb3IgYW5vdGhlciBjb21tb24gbmV0d29ya2luZyBzdGFjayBjb21wb25lbnQ/IEFyZSB0aGVyZSBhbnkgZmlybXdhcmUgdmVyc2lvbnMgdGhhdCBhcmUgc3VwcG9ydGVkIG9yIGtub3duIHRvIGJlIHJlcXVpcmVkPyBBcmUgdGhlcmUgYW55IGtub3duIGNvbmZsaWN0cyB3aXRoIHNwZWNpZmljIGtlcm5lbCB2ZXJzaW9ucyBvciBvdGhlciBoYXJkd2FyZSBjb25maWd1cmF0aW9ucz8gVGhvc2Ugd291bGQgYmUgY3JpdGljYWwuCgpUaGVuIHRoZXJlIGlzIHRoZSByZWd1bGF0b3J5IGFzcGVjdC4gRG9lcyBgTVQ3OTI1VWAgaGF2ZSBhbnkgZGVwZW5kZW5jaWVzIG9uIHJlZ3VsYXRvcnkgZGF0YWJhc2VzIG9yIGNvdW50cnkgY29kZSBzZXR0aW5ncz8gU29tZSB3aXJlbGVzcyBkcml2ZXJzIGFyZSB2ZXJ5IHRpZ2h0bHkgY291cGxlZCB0byByZWd1bGF0b3J5IHJlcXVpcmVtZW50cyBmb3IgZWFjaCByZWdpb24uCgpBbHJpZ2h0LCBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSByZWxldmFudCBzb3VyY2UgY29kZSwgZG9jdW1lbnRhdGlvbiwgYW5kIHBvdGVudGlhbGx5IGV4aXN0aW5nIGtlcm5lbCBjb25maWdzLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGlzIHRoaW5nICppbnRlZ3JhdGVzKiBhbmQgKmludGVyYWN0cyogd2l0aCB0aGUgcmVzdCBvZiB0aGUgc3lzdGVtLiBJJiMzOTtsbCBiZSBsb29raW5nIGF0IHRoZSBNYWtlZmlsZSwgS2NvbmZpZyBmaWxlcywgYW5kIGFueSBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24sIGxvb2tpbmcgZm9yIGV4cGxpY2l0IGRlcGVuZGVuY2llcyBvciBpbXBsaWNpdCByZXF1aXJlbWVudHMuIFRoaXMgd2lsbCBiZSB0aGUgZmlyc3Qgc3RlcCB0b3dhcmRzIHVuZGVyc3RhbmRpbmcgaG93IHRvIGRlYWwgd2l0aCB0aGlzIG1vZHVsZS4gVGhpcyBpcyBhIGJpdCBvZiBhIGRldGVjdGl2ZSBqb2IsIGJ1dCBpdCBpcyBpbXBvcnRhbnQgdG8ga25vdyBldmVyeXRoaW5nIGFib3V0IHRoaXMgY29tcG9uZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwOToxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTVQ3OTI1VSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnPTc9Y29uZmlnIE1UNzkyNUVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTE4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZzoxOTpjb25maWcgTVQ3OTI1VVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0yMC1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyNVUgKFVTQikgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwOToxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzk0NAoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipEaXZpbmcgaW50byB0aGUgTVQ3OTI1IEtjb25maWcqKgoKQWxyaWdodCwgdGltZSB0byBjcmFjayBvcGVuIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZ2AgZmlsZS4gSSYjMzk7bSBhc3N1bWluZywgYXMgYWx3YXlzIHdpdGggdGhlc2UgTWVkaWF0ZWsgY29uZmlndXJhdGlvbnMsIHRoYXQgaXQmIzM5O3MgZ29pbmcgdG8gYmUgYSB3ZWxsLXN0cnVjdHVyZWQgc2V0IG9mIGRlcGVuZGVuY2llcyBhbmQgZmVhdHVyZSBmbGFncyBmb3IgdGhlIE1UNzkyNSB3aXJlbGVzcyBjaGlwc2V0LiBJIGV4cGVjdCB0byBzZWUgdGhlIHVzdWFsIHN1c3BlY3RzIOKAkyBlbmFibGluZy9kaXNhYmxpbmcgb2YgdmFyaW91cyA4MDIuMTEgc3RhbmRhcmRzLCBwcm9iYWJseSBzb21lIGNvbmZpZ3VyYXRpb24gZm9yIHBvd2VyIG1hbmFnZW1lbnQsIGRlZmluaXRlbHkgb3B0aW9ucyBmb3IgZGVidWcgZmVhdHVyZXMsIGFuZCBvZiBjb3Vyc2UsIHRoZSBldmVyLXByZXNlbnQgY2FsaWJyYXRpb24gYW5kIGhhcmR3YXJlLXNwZWNpZmljIHNldHRpbmdzLiBJJiMzOTtsbCBiZSBsb29raW5nIHRvIHNlZSBob3cgdGhleSYjMzk7dmUgc3RydWN0dXJlZCB0aGUgZHJpdmVyIG9wdGlvbnMgZm9yIG11bHRpcGxlIGhhcmR3YXJlIHJldmlzaW9ucy4gR2l2ZW4gdGhlIE1UNzYmIzM5O3MgbW9kdWxhciBhcHByb2FjaCwgSSBhbnRpY2lwYXRlIGNsZWFuIHNlcGFyYXRpb24gb2YgY29yZSBmdW5jdGlvbmFsaXR5IGFuZCB0aGUgTVQ3OTI1LXNwZWNpZmljIGdsdWUgY29kZS4gSSB3aWxsIGNoZWNrIGZvciBhbnkgdW51c3VhbCwgcGxhdGZvcm0tc3BlY2lmaWMgY29uc3RyYWludHMgb3IgYW55dGhpbmcgdGhhdCBtaWdodCBpbXBhY3Qgb3ZlcmFsbCBwZXJmb3JtYW5jZSBvciBwb3dlciBjb25zdW1wdGlvbi4gTGV0JiMzOTtzIGdldCB0byBpdCBhbmQgc2VlIHdoYXQgaW50ZXJlc3Rpbmcgb3B0aW1pemF0aW9ucyB0aGV5JiMzOTt2ZSBpbXBsZW1lbnRlZCwgb3IgYXJlYXMgd2hlcmUgdGhleSYjMzk7dmUgbWF5YmUgZmFsbGVuIHNob3J0IGFuZCBJIGNhbiBzdWdnZXN0IGltcHJvdmVtZW50cy4gSSYjMzk7bSBob3BpbmcgaXQmIzM5O3MgYSBjbGVhbiwgd2VsbC1jb21tZW50ZWQgS2NvbmZpZywgYWx3YXlzIG1ha2VzIGxpZmUgZWFzaWVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwOToxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbiAgIDI6XHRjb25maWcgTVQ3OTI1X0NPTU1PTlxuICAgMzpcdFx0dHJpc3RhdGVcbiAgIDQ6XHRcdHNlbGVjdCBNVDc5MnhfTElCXG4gICA1Olx0XHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcbiAgIDY6XHRcbiAgIDc6XHRjb25maWcgTVQ3OTI1RVxuICAgODpcdFx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3OTI1RSAoUENJZSkgc3VwcG9ydFwmIzM0O1xuICAgOTpcdFx0c2VsZWN0IE1UNzkyNV9DT01NT05cbiAgMTA6XHRcdGRlcGVuZHMgb24gTUFDODAyMTFcbiAgMTE6XHRcdGRlcGVuZHMgb24gUENJXG4gIDEyOlx0XHRoZWxwXG4gIDEzOlx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc5MjUtYmFzZWQgd2lyZWxlc3MgUENJZSBkZXZpY2VzLFxuICAxNDpcdFx0ICB3aGljaCBzdXBwb3J0IG9wZXJhdGlvbiBhdCA2R0h6LCA1R0h6LCBhbmQgMi40R0h6IElFRUUgODAyLjExYmVcbiAgMTU6XHRcdCAgMngyOjJTUyA0MDk2LVFBTSwgMTYwTUh6IGNoYW5uZWxzLlxuICAxNjpcdFxuICAxNzpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxuICAxODpcdFxuICAxOTpcdGNvbmZpZyBNVDc5MjVVXG4gIDIwOlx0XHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc5MjVVIChVU0IpIHN1cHBvcnRcJiMzNDtcbiAgMjE6XHRcdHNlbGVjdCBNVDc5MnhfVVNCXG4gIDIyOlx0XHRzZWxlY3QgTVQ3OTI1X0NPTU1PTlxuICAyMzpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuICAyNDpcdFx0ZGVwZW5kcyBvbiBVU0JcbiAgMjU6XHRcdGhlbHBcbiAgMjY6XHRcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzkyNS1iYXNlZCB3aXJlbGVzcyBVU0IgZGV2aWNlcyxcbiAgMjc6XHRcdCAgd2hpY2ggc3VwcG9ydCBvcGVyYXRpb24gYXQgNkdIeiwgNUdIeiwgYW5kIDIuNEdIeiBJRUVFIDgwMi4xMWJlXG4gIDI4Olx0XHQgIDJ4MjoyU1MgNDA5Ni1RQU0sIDE2ME1IeiBjaGFubmVscy5cbiAgMjk6XHRcbiAgMzA6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDk6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ3ODQKCQkJCQkJCW91dHB1dDogNTIKCQkJCQkJCXRob3VnaHRzOiAzODgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIE1UNzkyNVUgRHJpdmVyJiMzOTtzIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBNVDc5MjVVYCBkcml2ZXIsIHdoaWNoIGhpbmdlcyBvbiBgTUFDODAyMTFgIGFuZCB0aGUgVVNCIHN1YnN5c3RlbS4gVGhhdCBpbW1lZGlhdGVseSBzdWdnZXN0cyBzb21lIHByb21pc2luZyBhdmVudWVzIGZvciBmdXp6aW5nLiBUaGlzIHBhdGNoIGludHJvZHVjZXMgYSBmZXcgbmV3IGZ1bmN0aW9uczogYG10NzkyNV9sb2FkX3ZlZnVzZV9mcm9tX2Z3YCwgYG10NzkyNV9tY3VfcmVhZF92ZWZ1c2VgLCBhbmQgYG10NzkyNV9tY3Vfc2VuZF92ZWZ1c2VfcGFnZWAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGVzZSBhcmUgZGVmaW5pdGVseSByZWFjaGFibGUgdmlhIFVTQiBmdXp6aW5nIHRlY2huaXF1ZXM7IGl0JiMzOTtzIHByYWN0aWNhbGx5IGEgZ2l2ZW4uIEFuZCBvZiBjb3Vyc2UsIHRoZSBkZWJ1Z2ZzIGludGVyZmFjZSBjb21lcyBpbnRvIHBsYXkgaWYgdGhlIGZpcm13YXJlIGluY2x1ZGVzIHRoYXQgdmVmdXNlIHJlZ2lvbi4KCk5vdywgdGhlIGZpcm13YXJlIHBhcnNpbmcgd2l0aGluIGBtdDc5MjVfbG9hZF92ZWZ1c2VfZnJvbV9md2AgcmVhbGx5IGdyYWJzIG15IGF0dGVudGlvbi4gVGhlIGZhY3QgdGhhdCB0aGlzIHBhcnNpbmcgY29kZSBpcyAqcmVhY2hhYmxlIGV2ZW4gd2l0aCBtYWxmb3JtZWQgZmlybXdhcmUqLi4uIHRoYXQgc2NyZWFtcyAmIzM0O2Z1enppbmcgdGFyZ2V0LiYjMzQ7IFRoaXMgaXMgd2hlcmUgU3l6a2FsbGVyIHJlYWxseSBzaGluZXM6IGl0IGNhbiBmdXp6IGZpcm13YXJlIGxvYWRpbmcuIFNvLCB0aGUga2V5IGZ1bmN0aW9ucyB0byBjb25jZW50cmF0ZSBvbiBzZWVtIHRvIGJlOgoKKiAgIGBtdDc5MjVfbG9hZF92ZWZ1c2VfZnJvbV9md2AKKiAgIGBtdDc5MjVfbWN1X3JlYWRfdmVmdXNlYAoqICAgYG10NzkyNV9tY3Vfc2VuZF92ZWZ1c2VfcGFnZWAKKiAgIGBtdDc5MjVfdmVmdXNlX3JlYWRgCgpJIHNob3VsZCBjaGVjayBpZiBgbXQ3OTI1X3ZlZnVzZV9yZWFkYCBpcyBzdGF0aWMuIExvb2tzIGxpa2UgaXQgaXM6IGBzdGF0aWMgaW50IG10NzkyNV92ZWZ1c2VfcmVhZChzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpYC4gQWgsIHN0YXRpYy4uLiBpdCBtaWdodCBiZSBpbmxpbmVkIG9yIG1pZ2h0IG5vdCBoYXZlIGEgZGlzdGluY3Qgc3ltYm9sLiBCdXQgYG10NzkyNV9tY3VfcmVhZF92ZWZ1c2VgICppc24mIzM5O3QqIHN0YXRpYy4gSG9sZCBvbiwgaXNuJiMzOTt0IGBtdDc5MjVfbWN1X3JlYWRfdmVmdXNlYCBpbiBgbWN1LmNgIGFuZCBleHBvcnRlZD8gVGltZSB0byBjaGVjayB0aGUgc291cmNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwOToxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5MjVfbWN1X3JlYWRfdmVmdXNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz0yOTA9bXQ3OTI1X3ZlZnVzZV9yZWFkKHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMzEwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjMxMTpcdFx0cmV0ID0gbXQ3OTI1X21jdV9yZWFkX3ZlZnVzZShkZXYsIG9mZiwgY2h1bmssIGJ1ZiAmIzQzOyBvZmYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTMxMi1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYz04NzU9bXQ3OTI1X21jdV9zZW5kX3ZlZnVzZV9wYWdlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtOTA3LSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM6OTA4OmludCBtdDc5MjVfbWN1X3JlYWRfdmVmdXNlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHUxNiBvZmZzZXQsIHUxNiBjb3VudCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTkwOS1cdFx0XHQgICB1OCAqb3V0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5oPTE2MT1zdHJ1Y3QgbXQ3OTI1X3ZlZnVzZV9wYWdlX2NtZCB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmgtMTcxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1Lmg6MTcyOmludCBtdDc5MjVfbWN1X3JlYWRfdmVmdXNlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHUxNiBvZmZzZXQsIHUxNiBjb3VudCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5oLTE3My1cdFx0XHQgICB1OCAqb3V0KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDk6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTYyMTkKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiA1MzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNVDc5MjUgVkVmdXNlIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24gc3lzdGVtYXRpY2FsbHkuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGBtdDc5MjVfbWN1X3JlYWRfdmVmdXNlYCBpc24mIzM5O3Qgc3RhdGljLCB3aGljaCBpbW1lZGlhdGVseSBmbGFncyBpdCBhcyBzb21ldGhpbmcgdG8gcGF5IGF0dGVudGlvbiB0by4gQnV0LCBgbXQ3OTI1X2xvYWRfdmVmdXNlX2Zyb21fZndgICppcyogc3RhdGljLiBUaGlzIHJhaXNlcyB0aGUgcXVlc3Rpb24gb2YgaW5saW5pbmcuIFNpbmNlIGl0JiMzOTtzIHN0YXRpYywgaXQgY291bGQgYmUgaW5saW5lZCBpbnRvIGBtdDc5MjVfcnVuX2Zpcm13YXJlYC4gTGV0JiMzOTtzIHVzZSBgbXQ3OTI1X3J1bl9maXJtd2FyZWAgYXMgYSBmb2N1cyBzeW1ib2wuIEFoLCBidXQgd2FpdCwgYG10NzkyNV9ydW5fZmlybXdhcmVgIGlzIGluaXQgdGltZSwgc28gaXQgaXMgYSBnb29kIGZvY3VzIHN5bWJvbC4gT24gdGhlIG90aGVyIGhhbmQsIGBtdDc5MjVfbWN1X3JlYWRfdmVmdXNlYCBpcyBhbHNvIHdvcnRoIGZvY3VzaW5nIG9uLgoKTm93LCB3aGF0IGFib3V0IGBtdDc5MjVfbWN1X3NlbmRfdmVmdXNlX3BhZ2VgPyBUaGF0JiMzOTtzIHN0YXRpYyB0b28sIHNvIGl0IGNvdWxkIHBvdGVudGlhbGx5IGJlIGlubGluZWQgaW50byBgbXQ3OTI1X2xvYWRfdmVmdXNlX2Zyb21fZndgLiAgV2Ugc2hvdWxkIGNoZWNrIGBtdDc5MjVfdmVmdXNlX3JlYWRgLCB3aGljaCBpcyBzdGF0aWMsIGJ1dCBhbHNvIHBhc3NlZCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXIgdG8gYGRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZWAuIFRoYXQgbWVhbnMgaXQgKmNhbiYjMzk7dCogYmUgZnVsbHkgaW5saW5lZCBiZWNhdXNlIGl0cyBhZGRyZXNzIGlzIGJlaW5nIHRha2VuLiAgU3RpbGwsIGl0IG1pZ2h0IG5vdCBiZSBleHBvcnRlZCwgc28gaXRzIHNjb3BlIG1heSBiZSBsaW1pdGVkLgoKSW4gY29uY2x1c2lvbiwgSSB0aGluayB3ZSYjMzk7cmUgc2FmZSB0byB1c2UgYG10NzkyNV9ydW5fZmlybXdhcmVgIGFuZCBgbXQ3OTI1X21jdV9yZWFkX3ZlZnVzZWAgYXMgb3VyIHByaW1hcnkgZm9jdXMgc3ltYm9scy4KCk5vdywgbGV0JiMzOTtzIHJlLWV4YW1pbmUgdGhlIHBhdGNoIGl0c2VsZi4gSXQmIzM5O3MgYWRkaW5nOgoKKiAgIGBtdDc5MjVfdmVmdXNlX3JlYWRgIChzdGF0aWMsIGFkZHJlc3MgdGFrZW4gLSB0aGF0IGZ1bmN0aW9uIHBvaW50ZXIgYWdhaW4hKQoqICAgYG10NzkyNV9tY3Vfc2VuZF92ZWZ1c2VfcGFnZWAgKHN0YXRpYykKKiAgIGBtdDc5MjVfbWN1X3JlYWRfdmVmdXNlYCAobm9uLXN0YXRpYyAtIG91ciBtYWluIGNvbmNlcm4hKQoqICAgYG10NzkyNV9sb2FkX3ZlZnVzZV9mcm9tX2Z3YCAoc3RhdGljKQoKU28sIG15IGtleSBmb2N1cyBzeW1ib2xzIHJlbWFpbjoKCiogICBgbXQ3OTI1X3J1bl9maXJtd2FyZWAKKiAgIGBtdDc5MjVfbWN1X3JlYWRfdmVmdXNlYAoKUmVnYXJkaW5nIGNvbmZpZ3VyYXRpb25zLCB3ZSYjMzk7cmUgbG9va2luZyBhdCBgTVQ3OTI1VWAsIGBNQUM4MDIxMWAsIGFuZCBgVVNCYC4gSGFuZyBvbuKApiBgTVQ3OTI1VWAgZGVwZW5kcyBvbiBib3RoIGBNQUM4MDIxMWAgYW5kIGBVU0JgLiBUaGlzIGlzIHByZXR0eSBzdGFuZGFyZCBmb3IgdGhpcyB0eXBlIG9mIGhhcmR3YXJlLCBidXQgbGV0JiMzOTtzIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJiMzOTt0IGFueSBvdGhlciBkZXBlbmRlbmNpZXMgaW4gcGxheS4gTGV0JiMzOTtzIGJyaWVmbHkgY2hlY2sgYE1UNzkyeF9VU0JgIGFuZCBgTVQ3OTI1X0NPTU1PTmAgdG8gYmUgc3VyZS4gSXQmIzM5O3MgaW1wb3J0YW50IHRvIHJ1bGUgb3V0IGFueSB1bmV4cGVjdGVkIGludGVyYWN0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDk6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1UNzkyeF9VU0ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc9MzI9Y29uZmlnIE1UNzkyeF9MSUJcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6MzY6Y29uZmlnIE1UNzkyeF9VU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0zNy1cdHRyaXN0YXRlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA5OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3NTU0CgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogODQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgTVQ3OTI1VSBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJIGluaXRpYWxseSB0aG91Z2h0IGBNVDc5MjVVYCB3b3VsZCBiZSBlbm91Z2ggdG8gZ2V0IHRoZSBiYWxsIHJvbGxpbmcuIEJ1dCB3YWl0LCBhIGxpdHRsZSBtb3JlIGRpZ2dpbmcsIGFuZCBpdCBzZWVtcyB0aGF0IGBNVDc5MjVVYCBpc24mIzM5O3QgYSBzaW1wbGUgb24vb2ZmLCBidXQgYSB0cmlzdGF0ZSBjb25maWd1cmF0aW9uLiBMZXQgbWUgbWFrZSBzdXJlIEkmIzM5O20gY29uZmlndXJpbmcgdGhlIGRyaXZlciBhcHByb3ByaWF0ZWx5LgoKU28sIEkmIzM5O20gZ29pbmcgdG8gZW5hYmxlIGBNVDc5MjVVYCB0byBlbnN1cmUgdGhlIGRyaXZlciBpcyBmdW5jdGlvbmFsLgoKQWxzbywgaWYgSSB3YW50IHRvIHBsYXkgd2l0aCB0aGUgZGVidWcgZmlsZXN5c3RlbSwgYERFQlVHX0ZTYCBpcyByZXF1aXJlZC4gVGhhdCYjMzk7cyBhIG11c3QuIE5vdywgYmVmb3JlIEkganVtcCBpbiwgSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIHRoYXQgYG10NzkyNV9pbml0X2RlYnVnZnNgIGlzIGNvbXBpbGVkIGluIGEgY29uZGl0aW9uYWwgbWFubmVyLiBJIG5lZWQgdG8ga25vdyBpdCYjMzk7cyBvbmx5IGVuYWJsZWQgaWYgYERFQlVHX0ZTYCBpcyBkZWZpbmVkLCBvdGhlcndpc2UgSSB3aWxsIHdhc3RlIG15IHRpbWUgY2hhc2luZyBhIG5vbi1leGlzdGVudCBmdW5jdGlvbi4gVGhpcyBjb25kaXRpb25hbCBjb21waWxlIGNoZWNrIGlzIGtleSB0byBlbnN1cmluZyBhIGNsZWFuIGFuZCBlZmZlY3RpdmUgZGVidWdnaW5nIHN0cmF0ZWd5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwOToxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5MjVfaW5pdF9kZWJ1Z2ZzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz0yOTA9bXQ3OTI1X3ZlZnVzZV9yZWFkKHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMzMzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjMzNDppbnQgbXQ3OTI1X2luaXRfZGVidWdmcyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTMzNS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jPTE5MD1zdGF0aWMgdm9pZCBtdDc5MjVfaW5pdF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjE4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjIxOTpcdHJldCA9IG10NzkyNV9pbml0X2RlYnVnZnMoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMjAtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg9MzIxPWludCBtdDc5MjVfaW5pdF9tbG9fY2FwcyhzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oOjMyMjppbnQgbXQ3OTI1X2luaXRfZGVidWdmcyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTMyMy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDk6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgzODEKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqRGVidWdnaW5nIHRoZSBDb25kaXRpb25hbCBDb21waWxhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYGRlYnVnZnMuY2AuIE15IGluaXRpYWwgcXVlc3Rpb24gaXMgd2hldGhlciBvciBub3QgdGhpcyBmaWxlIGlzIGNvbXBpbGVkIHVuZGVyIHNwZWNpZmljIGNvbmRpdGlvbnMuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZXJlJiMzOTtzIGFueSBjb25kaXRpb25hbCBsb2dpYyBhdCBwbGF5IGhlcmUuIEFyZSB0aGVyZSBgI2lmZGVmYCBibG9ja3Mgb3Igc29tZXRoaW5nIHNpbWlsYXIgdGhhdCB3b3VsZCBwcmV2ZW50IHRoaXMgZmlsZSBmcm9tIGJlaW5nIGluY2x1ZGVkIGluIGV2ZXJ5IGJ1aWxkPyBJcyB0aGlzIGZ1bmN0aW9uYWxpdHkgZW5hYmxlZCBvciBkaXNhYmxlZCBieSBhIGZlYXR1cmUgZmxhZywgYSBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb24sIG9yIHBlcmhhcHMgYSBidWlsZCBlbnZpcm9ubWVudCBzZXR0aW5nPyBUaGlzIGlzIGNydWNpYWwgYmVjYXVzZSBpZiBpdCYjMzk7cyAqbm90KiBhbHdheXMgY29tcGlsZWQsIGFueSBkZWJ1Z2dpbmcgcmVsYXRlZCB0byB0aGlzIGZpbGUgY291bGQgYmUgbWlzbGVhZGluZyB3aXRob3V0IHRoZSBzcGVjaWZpYyBjb25kaXRpb25zIHRoYXQgY2F1c2UgY29tcGlsYXRpb24gYmVpbmcgbWV0LiBJIGhhdmUgdG8gY29uZmlybSBpdHMgcHJlc2VuY2UgYmVmb3JlIEkgc3RhcnQgZGVidWdnaW5nLCB0byBhdm9pZCB3YXN0aW5nIHRpbWUuIEkgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZywgTWFrZWZpbGVzLCBvciBldmVuIHRoZSBidWlsZCBzY3JpcHRzIHRvIHVuZGVyc3RhbmQgdGhlIGluY2x1c2lvbiBjcml0ZXJpYS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDk6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVidWdmcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlPTU9b2JqLSQoQ09ORklHX01UNzkyNVUpICYjNDM7PSBtdDc5MjV1Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlLTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZTo3Om10NzkyNS1jb21tb24teSA6PSBtYWMubyBtY3UubyByZWdkLm8gbWFpbi5vIGluaXQubyBkZWJ1Z2ZzLm8gbmFuLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlLTgtbXQ3OTI1LWNvbW1vbi0kKENPTkZJR19OTDgwMjExX1RFU1RNT0RFKSAmIzQzOz0gdGVzdG1vZGUub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwOToxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODgwMwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDM4MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDb25maWd1cmF0aW9uIENvbnNpZGVyYXRpb25zIGZvciBGdXp6aW5nIHRoZSBNVDc5MjUgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gcHV0dGluZyB0b2dldGhlciBhIGZ1enppbmcgY29uZmlndXJhdGlvbiBmb3IgdGhlIE1UNzkyNSBkcml2ZXIuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBjb3ZlciBhbGwgdGhlIGJhc2VzLiBJJiMzOTttIHN0YXJ0aW5nIGJ5IHJlbWVtYmVyaW5nIHRoYXQgY29kZSBpcyBjb21waWxlZCBidXQgdGhlcmUmIzM5O3MgYSBjaGFuY2UgYGRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZWAgY291bGQgYmUgYSBzdHViIGlmIGBERUJVR19GU2AgaXMgZGlzYWJsZWQsIHNvIEkgbmVlZCB0byBleHBsaWNpdGx5IGVuYWJsZSB0aGF0IHRvIGJlIG9uIHRoZSBzYWZlIHNpZGUuIEl0JiMzOTtzIGxpa2VseSBlbmFibGVkIGJ5IGRlZmF1bHQgaW4gc3l6a2FsbGVyIGNvbmZpZ3MsIGJ1dCBpdCYjMzk7cyBnb29kIHRvIGJlIGV4cGxpY2l0LgoKTm93LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBkaWZmZXJlbnQgTVQ3OTI1IHZhcmlhbnRzLiBgTVQ3OTI1RWAgaXMgZm9yIFBDSWUsIGFuZCB3aGlsZSBzeXprYWxsZXImIzM5O3Mgbm90ICppZGVhbCogZm9yIGZ1enppbmcgUENJZSB1bmxlc3MgaXQmIzM5O3MgYSB2ZXJ5IHNwZWNpZmljIGRyaXZlciB3aXRoIGEgZmFrZSBQQ0kgZGV2aWNlLCBJJiMzOTt2ZSBnb3QgYE1UNzkyNVVgIChVU0IpIHdoaWNoIGlzIGRlZmluaXRlbHkgZnV6emFibGUgd2l0aCBzeXprYWxsZXIuIEkmIzM5O2xsIGluY2x1ZGUgYm90aCBgTVQ3OTI1RWAgYW5kIGBNVDc5MjVVYCBqdXN0IGluIGNhc2UsIGJldHRlciBzYWZlIHRoYW4gc29ycnkuCgpTbywgaGVyZSYjMzk7cyBteSBpbml0aWFsIHN1bW1hcnk6IEkmIzM5O20gY29uZmlkZW50IHRoaXMgaXMgd29ydGggZnV6emluZywgYW5kIEkgd2FudCB0byBmb2N1cyBvbiBmdW5jdGlvbnMgbGlrZSBgbXQ3OTI1X3J1bl9maXJtd2FyZWAgYW5kIGBtdDc5MjVfbWN1X3JlYWRfdmVmdXNlYC4gTXkgaW5pdGlhbCBjb25maWcgbG9va3MgbGlrZSB0aGlzOgoKKiAgICoqV29ydGhGdXp6aW5nOioqIGB0cnVlYAoqICAgKipGb2N1c1N5bWJvbHM6KioKICAgICogICBgbXQ3OTI1X3J1bl9maXJtd2FyZWAKICAgICogICBgbXQ3OTI1X21jdV9yZWFkX3ZlZnVzZWAKKiAgICoqRW5hYmxlQ29uZmlnczoqKgogICAgKiAgIGBNVDc5MjVVYAogICAgKiAgIGBNVDc5MjVFYAogICAgKiAgIGBNQUM4MDIxMWAKICAgICogICBgVVNCYAogICAgKiAgIGBERUJVR19GU2AKCkJ1dCwgd2FpdCwgSSBuZWVkIHRvIGFjY291bnQgZm9yIGRlcGVuZGVuY2llcy4gYE1UNzkyNUVgIGRlcGVuZHMgb24gYFBDSWAsIHNvIEkgaGF2ZSB0byBpbmNsdWRlIGBQQ0lgIG5vdy4gQWxzbywgYE1UNzkyNVVgIGRlcGVuZHMgb24gYE1BQzgwMjExYCBhbmQgYFVTQmAuIGBNQUM4MDIxMWAgaW4gdHVybiBkZXBlbmRzIG9uIGBDRkc4MDIxMWAsIHNvIEkmIzM5O2xsIGFkZCB0aGF0IHRvIHRoZSBlbmFibGUgbGlzdCBhcyB3ZWxsLiBKdXN0IHRvIGJlIHRob3JvdWdoIEkgbmVlZCB0byBjaGVjayBgTUFDODAyMTFgIGRlcGVuZGVuY2llcyB0b28sIGNhbiYjMzk7dCBiZSB0b28gY2FyZWZ1bCBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwOToxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTUFDODAyMTEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOmNvbmZpZyBNQUM4MDIxMVxubmV0L21hYzgwMjExL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgSUVFRSA4MDIuMTEgTmV0d29ya2luZyBTdGFjayAobWFjODAyMTEpXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9MTk9aWYgTUFDODAyMTEgIT0gblxubmV0L21hYzgwMjExL0tjb25maWctMjAtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMTpjb25maWcgTUFDODAyMTFfSEFTX1JDXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMi1cdGJvb2xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzLVxubmV0L21hYzgwMjExL0tjb25maWc6MjQ6Y29uZmlnIE1BQzgwMjExX1JDX01JTlNUUkVMXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNS1cdGJvb2wgXCYjMzQ7TWluc3RyZWxcJiMzNDsgaWYgRVhQRVJUXG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9MzE9Y2hvaWNlXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNDAtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo0MTpjb25maWcgTUFDODAyMTFfUkNfREVGQVVMVF9NSU5TVFJFTFxubmV0L21hYzgwMjExL0tjb25maWctNDItXHRib29sIFwmIzM0O01pbnN0cmVsXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9NDg9ZW5kY2hvaWNlXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjUwOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01MS1cdHN0cmluZ1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTU3PWNvbW1lbnQgXCYjMzQ7U29tZSB3aXJlbGVzcyBkcml2ZXJzIHJlcXVpcmUgYSByYXRlIGNvbnRyb2wgYWxnb3JpdGhtXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNTktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo2MDpjb25maWcgTUFDODAyMTFfS1VOSVRfVEVTVFxubmV0L21hYzgwMjExL0tjb25maWctNjEtXHR0cmlzdGF0ZSBcJiMzNDtLVW5pdCB0ZXN0cyBmb3IgbWFjODAyMTFcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTY5LVxubmV0L21hYzgwMjExL0tjb25maWc6NzA6Y29uZmlnIE1BQzgwMjExX01FU0hcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTcxLVx0Ym9vbCBcJiMzNDtFbmFibGUgbWFjODAyMTEgbWVzaCBuZXR3b3JraW5nIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03OC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjc5OmNvbmZpZyBNQUM4MDIxMV9MRURTXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04MC1cdGJvb2wgXCYjMzQ7RW5hYmxlIExFRCB0cmlnZ2Vyc1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg3LVxubmV0L21hYzgwMjExL0tjb25maWc6ODg6Y29uZmlnIE1BQzgwMjExX0RFQlVHRlNcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg5LVx0Ym9vbCBcJiMzNDtFeHBvcnQgbWFjODAyMTEgaW50ZXJuYWxzIGluIERlYnVnRlNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05Ni1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjk3OmNvbmZpZyBNQUM4MDIxMV9NRVNTQUdFX1RSQUNJTkdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTk4LVx0Ym9vbCBcJiMzNDtUcmFjZSBhbGwgbWFjODAyMTEgZGVidWcgbWVzc2FnZXNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMDktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTA6bWVudWNvbmZpZyBNQUM4MDIxMV9ERUJVR19NRU5VXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTEtXHRib29sIFwmIzM0O1NlbGVjdCBtYWM4MDIxMSBkZWJ1Z2dpbmcgZmVhdHVyZXNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTUtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTY6Y29uZmlnIE1BQzgwMjExX05PSU5MSU5FXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTctXHRib29sIFwmIzM0O0RvIG5vdCBpbmxpbmUgVFgvUlggaGFuZGxlcnNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzEtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMzI6Y29uZmlnIE1BQzgwMjExX1ZFUkJPU0VfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEzMy1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBkZWJ1Z2dpbmcgb3V0cHV0XCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTQyLVxubmV0L21hYzgwMjExL0tjb25maWc6MTQzOmNvbmZpZyBNQUM4MDIxMV9NTE1FX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDQtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWFuYWdlZCBNTE1FIG91dHB1dFwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1My1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE1NDpjb25maWcgTUFDODAyMTFfU1RBX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTUtXHRib29sIFwmIzM0O1ZlcmJvc2Ugc3RhdGlvbiBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjItXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNjM6Y29uZmlnIE1BQzgwMjExX0hUX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjQtXHRib29sIFwmIzM0O1ZlcmJvc2UgSFQgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTc0LVxubmV0L21hYzgwMjExL0tjb25maWc6MTc1OmNvbmZpZyBNQUM4MDIxMV9PQ0JfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3Ni1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBPQ0IgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTg1LVxubmV0L21hYzgwMjExL0tjb25maWc6MTg2OmNvbmZpZyBNQUM4MDIxMV9JQlNTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODctXHRib29sIFwmIzM0O1ZlcmJvc2UgSUJTUyBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTYtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxOTc6Y29uZmlnIE1BQzgwMjExX1BTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTgtXHRib29sIFwmIzM0O1ZlcmJvc2UgcG93ZXJzYXZlIG1vZGUgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjA4LVxubmV0L21hYzgwMjExL0tjb25maWc6MjA5OmNvbmZpZyBNQUM4MDIxMV9NUExfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIxMC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIHBlZXIgbGluayBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjEtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMjI6Y29uZmlnIE1BQzgwMjExX01QQVRIX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjMtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBwYXRoIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIzNTpjb25maWcgTUFDODAyMTFfTUhXTVBfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNi1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIEhXTVAgcm91dGluZyBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDg6Y29uZmlnIE1BQzgwMjExX01FU0hfU1lOQ19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjQ5LVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggc3luY2hyb25pemF0aW9uIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1OC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI1OTpjb25maWcgTUFDODAyMTFfTUVTSF9DU0FfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2MC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIGNoYW5uZWwgc3dpdGNoIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI3MDpjb25maWcgTUFDODAyMTFfTUVTSF9QU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjcxLVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggcG93ZXJzYXZlIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI4MC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI4MTpjb25maWcgTUFDODAyMTFfVERMU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjgyLVx0Ym9vbCBcJiMzNDtWZXJib3NlIFRETFMgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjkyLVxubmV0L21hYzgwMjExL0tjb25maWc6MjkzOmNvbmZpZyBNQUM4MDIxMV9ERUJVR19DT1VOVEVSU1xubmV0L21hYzgwMjExL0tjb25maWctMjk0LVx0Ym9vbCBcJiMzNDtFeHRyYSBzdGF0aXN0aWNzIGZvciBUWC9SWCBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzozMDg6Y29uZmlnIE1BQzgwMjExX1NUQV9IQVNIX01BWF9TSVpFXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDktXHRpbnQgXCYjMzQ7U3RhdGlvbiBoYXNoIHRhYmxlIG1heGltdW0gc2l6ZVwmIzM0OyBpZiBNQUM4MDIxMV9ERUJVR19NRU5VXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA5OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxOTM5CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgZXhwZXJ0IHBlcnNwZWN0aXZlOgoKKipEZXBlbmRlbmN5IERlZXAgRGl2ZSoqCgpSaWdodCwgc28gYE1BQzgwMjExYCBoaW5nZXMgb24gYENGRzgwMjExYC4gVGhhdCYjMzk7cyBzdGFuZGFyZCBmYXJlLCBidXQgaXQmIzM5O3MgY3J1Y2lhbCB0byB1bmRlcnN0YW5kIHdoZXJlICp0aGF0KiBkZXBlbmRlbmN5IGNoYWluIGxlYWRzLiBJdCYjMzk7cyB0aW1lIHRvIGRpZyBpbnRvIHRoZSBgQ0ZHODAyMTFgIGRlcGVuZGVuY2llcyB0aGVtc2VsdmVzLiBXZSBuZWVkIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBvZiB0aGUgc3VwcG9ydGluZyBpbmZyYXN0cnVjdHVyZS4gSSYjMzk7bSB0aGlua2luZywgYXJlIHRoZXJlIGFueSBwb3RlbnRpYWwgY29uZmxpY3RzIGx1cmtpbmcgaW4gdGhvc2UgZGVwZW5kZW5jaWVzPyBBcmUgd2UgbG9va2luZyBhdCBhIGNsZWFuLCB3ZWxsLWRlZmluZWQgYXJjaGl0ZWN0dXJlLCBvciBzb21ldGhpbmcgdGhhdCBjb3VsZCBjYXVzZSBpc3N1ZXMgZG93biB0aGUgbGluZT8gTGV0JiMzOTtzIGdldCBhIGhhbmRsZSBvbiB0aGUgbGFuZHNjYXBlIGJlZm9yZSB3ZSBwcm9jZWVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwOToxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQ0ZHODAyMTEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9LY29uZmlnPTE0PWNvbmZpZyBXRVhUX1BSSVZcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNi1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE3OmNvbmZpZyBDRkc4MDIxMVxubmV0L3dpcmVsZXNzL0tjb25maWctMTgtXHR0cmlzdGF0ZSBcJiMzNDtjZmc4MDIxMSAtIHdpcmVsZXNzIGNvbmZpZ3VyYXRpb24gQVBJXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWc9Mzg9Y29uZmlnIE5MODAyMTFfVEVTVE1PREVcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy01MS1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjUyOmNvbmZpZyBDRkc4MDIxMV9ERVZFTE9QRVJfV0FSTklOR1Ncbm5ldC93aXJlbGVzcy9LY29uZmlnLTUzLVx0Ym9vbCBcJiMzNDtlbmFibGUgZGV2ZWxvcGVyIHdhcm5pbmdzXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctNjctXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo2ODpjb25maWcgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy02OS1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgY2VydGlmaWNhdGlvbiBvbnVzXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctODgtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo4OTpjb25maWcgQ0ZHODAyMTFfUkVRVUlSRV9TSUdORURfUkVHREJcbm5ldC93aXJlbGVzcy9LY29uZmlnLTkwLVx0Ym9vbCBcJiMzNDtyZXF1aXJlIHJlZ2RiIHNpZ25hdHVyZVwmIzM0OyBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy05OC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjk5OmNvbmZpZyBDRkc4MDIxMV9VU0VfS0VSTkVMX1JFR0RCX0tFWVNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEwMC1cdGJvb2wgXCYjMzQ7YWxsb3cgcmVnZGIga2V5cyBzaGlwcGVkIHdpdGggdGhlIGtlcm5lbFwmIzM0OyBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMTAtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMTE6Y29uZmlnIENGRzgwMjExX0VYVFJBX1JFR0RCX0tFWURJUlxubmV0L3dpcmVsZXNzL0tjb25maWctMTEyLVx0c3RyaW5nIFwmIzM0O2FkZGl0aW9uYWwgcmVnZGIga2V5IGRpcmVjdG9yeVwmIzM0OyBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMjEtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMjI6Y29uZmlnIENGRzgwMjExX1JFR19DRUxMVUxBUl9ISU5UU1xubmV0L3dpcmVsZXNzL0tjb25maWctMTIzLVx0Ym9vbCBcJiMzNDtjZmc4MDIxMSByZWd1bGF0b3J5IHN1cHBvcnQgZm9yIGNlbGx1bGFyIGJhc2Ugc3RhdGlvbiBoaW50c1wmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTEzNC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjEzNTpjb25maWcgQ0ZHODAyMTFfUkVHX1JFTEFYX05PX0lSXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMzYtXHRib29sIFwmIzM0O2NmZzgwMjExIHN1cHBvcnQgZm9yIE5PX0lSIHJlbGF4YXRpb25cJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNTgtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNTk6Y29uZmlnIENGRzgwMjExX0RFRkFVTFRfUFNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2MC1cdGJvb2wgXCYjMzQ7ZW5hYmxlIHBvd2Vyc2F2ZSBieSBkZWZhdWx0XCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTY4LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTY5OmNvbmZpZyBDRkc4MDIxMV9ERUJVR0ZTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzAtXHRib29sIFwmIzM0O2NmZzgwMjExIERlYnVnRlMgZW50cmllc1wmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3Ni1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE3Nzpjb25maWcgQ0ZHODAyMTFfQ1JEQV9TVVBQT1JUXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzgtXHRib29sIFwmIzM0O3N1cHBvcnQgQ1JEQVwmIzM0OyBpZiBFWFBFUlRcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xODYtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxODc6Y29uZmlnIENGRzgwMjExX1dFWFRcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4OC1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgd2lyZWxlc3MgZXh0ZW5zaW9ucyBjb21wYXRpYmlsaXR5XCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTkzLVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTk0OmNvbmZpZyBDRkc4MDIxMV9LVU5JVF9URVNUXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOTUtXHR0cmlzdGF0ZSBcJiMzNDtLVW5pdCB0ZXN0cyBmb3IgY2ZnODAyMTFcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwOToxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzA3MgoJCQkJCQkJb3V0cHV0OiAyMTcKCQkJCQkJCXRob3VnaHRzOiAzNjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgTVQ3OTI1IERyaXZlciBQYXRjaCBmb3IgRnV6emluZyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gbGFuZHNjYXBlLiBgQ0ZHODAyMTFgIGFwcGVhcnMgdG8gYmUgdGhlIGNvcmUsIHdpdGggbm8gc2lnbmlmaWNhbnQgZGVwZW5kZW5jaWVzLCBwZXJoYXBzIGp1c3QgYE5FVGAuIFRoZSBzcGVjaWZpYyBoYXJkd2FyZSBjb25maWd1cmF0aW9ucyBhcmUgYE1UNzkyNVVgIGFuZCBgTVQ3OTI1RWAsIGFuZCB0aGVuIHRoZSBjb21tb24gY29tcG9uZW50cyBsaWtlIGBNQUM4MDIxMWAsIGBDRkc4MDIxMWAsIGBVU0JgLCBgUENJYCwgYW5kIGBERUJVR19GU2AuCgpBIHF1aWNrIHNhbml0eSBjaGVjayByZXZlYWxzIHNvbWUgZGVwZW5kZW5jaWVzIEkgbmVlZCB0byBrZWVwIGluIG1pbmQuIGBNVDc5MjVVYCBuZWVkcyBgVVNCYCwgYW5kIGBNVDc5MjVFYCBuZWVkcyBgUENJYC4gT2J2aW91c2x5LCBgTUFDODAyMTFgIGRlcGVuZHMgb24gYENGRzgwMjExYCwgc28gSSYjMzk7bGwgaW5jbHVkZSBhbGwgb2YgdGhlbS4KCk5vdywgZm9yIGZ1enppbmcsIEkgbmVlZCB0byBpZGVudGlmeSBnb29kIGZvY3VzIHN5bWJvbHMuICBJIGluaXRpYWxseSB0aG91Z2h0IGBtdDc5MjVfcnVuX2Zpcm13YXJlYCB3b3VsZCBiZSBzdWl0YWJsZSwgYW5kIGl0IHNlZW1zIHRvIGJlIGNhbGxlZCBkdXJpbmcgZGV2aWNlIGluaXRpYWxpemF0aW9uLCB3aGljaCBpcyBwcm9taXNpbmcuIGBtdDc5MjVfbWN1X3JlYWRfdmVmdXNlYCBpcyBhbHNvIGludHJpZ3VpbmcsIGFuZCBpdCBhcHBlYXJzIGR1cmluZyB0aGUgcmVhZGluZyBvZiB0aGUgZGVidWdmcyBmaWxlIHdoaWNoIHNlZW1zIGxpa2UgYSBnb29kIHRhcmdldC4gSSBsaWtlIHRoYXQsIGFzIGl0IGltcGxpZXMgdXNlciBpbnRlcmFjdGlvbiBhbmQgcG90ZW50aWFsIGZvciBmdXp6aW5nLiBUaGlzIHBhdGNoIGFwcGVhcnMgdG8gaW1wbGVtZW50IGEgbmV3IGZlYXR1cmUgKHZpcnR1YWwgZWZ1c2UgbG9hZGluZyBmcm9tIGZpcm13YXJlKSwgc28gaXQmIzM5O3MgYSBnb29kIGNhbmRpZGF0ZSBmb3IgdGhvcm91Z2ggdGVzdGluZy4KCkxldCYjMzk7cyBkb3VibGUtY2hlY2sgZm9yIGFueSBub24tc3RhdGljIGZ1bmN0aW9ucyBhZGRlZCBieSB0aGlzIHBhdGNoLCB0byBicm9hZGVuIG15IGZ1enppbmcgY292ZXJhZ2UuIGBtdDc5MjVfbWN1X3JlYWRfdmVmdXNlYCBzZWVtcyB0byBiZSB0aGUgb25seSBvbmUuIFRoZSBvdGhlciBwb3RlbnRpYWxseSByZWxldmFudCBmdW5jdGlvbnMsIGBtdDc5MjVfbWN1X3NlbmRfdmVmdXNlX3BhZ2VgLCBgbXQ3OTI1X2xvYWRfdmVmdXNlX2Zyb21fZndgLCBhbmQgYG10NzkyNV92ZWZ1c2VfcmVhZGAsIGFyZSBzdGF0aWMsIHdoaWNoIEkgd2lsbCBub3QgYmUgZGlyZWN0bHkgdGFyZ2V0aW5nLgoKVGhlcmVmb3JlLCB0aGUgbWFpbiBmb2N1cyBzeW1ib2xzIGZvciBmdXp6aW5nIHdpbGwgYmU6CgoqICAgYG10NzkyNV9ydW5fZmlybXdhcmVgCiogICBgbXQ3OTI1X21jdV9yZWFkX3ZlZnVzZWAKClRpbWUgdG8gc2V0IHRoZSByZXN1bHRzIGFuZCBtb3ZlIGZvcndhcmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA5OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNVDc5MjVVJiMzNDssCiAgICAmIzM0O01UNzkyNUUmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7Q0ZHODAyMTEmIzM0OywKICAgICYjMzQ7VVNCJiMzNDssCiAgICAmIzM0O1BDSSYjMzQ7LAogICAgJiMzNDtERUJVR19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzkyNV9ydW5fZmlybXdhcmUmIzM0OywKICAgICYjMzQ7bXQ3OTI1X21jdV9yZWFkX3ZlZnVzZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIGxvYWRpbmcgJiMzOTt2aXJ0dWFsIGVmdXNlJiMzOTsgKHZlZnVzZSkgZGF0YSBmcm9tIGZpcm13YXJlIGZvciB0aGUgTWVkaWFUZWsgTVQ3OTI1IHdpcmVsZXNzIGRyaXZlci4gVGhlIGRyaXZlciBoYXMgYSBVU0IgdmFyaWFudCAoTVQ3OTI1VSkgd2hpY2ggY2FuIGJlIGZ1enplZCB1c2luZyBzeXprYWxsZXImIzM5O3MgVVNCIGZ1enppbmcgY2FwYWJpbGl0aWVzLiBUaGUgZmlybXdhcmUgbG9hZGluZyBsb2dpYyBpbiBgbXQ3OTI1X3J1bl9maXJtd2FyZWAgYW5kIHRoZSBkZWJ1Z2ZzIHJlYWQgZnVuY3Rpb24gYG10NzkyNV9tY3VfcmVhZF92ZWZ1c2VgIGFyZSByZWFjaGFibGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzkyNVUmIzM0OywKICAgICYjMzQ7TVQ3OTI1RSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OywKICAgICYjMzQ7UENJJiMzNDssCiAgICAmIzM0O0RFQlVHX0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXQ3OTI1X3J1bl9maXJtd2FyZSYjMzQ7LAogICAgJiMzNDttdDc5MjVfbWN1X3JlYWRfdmVmdXNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgbG9hZGluZyAmIzM5O3ZpcnR1YWwgZWZ1c2UmIzM5OyAodmVmdXNlKSBkYXRhIGZyb20gZmlybXdhcmUgZm9yIHRoZSBNZWRpYVRlayBNVDc5MjUgd2lyZWxlc3MgZHJpdmVyLiBUaGUgZHJpdmVyIGhhcyBhIFVTQiB2YXJpYW50IChNVDc5MjVVKSB3aGljaCBjYW4gYmUgZnV6emVkIHVzaW5nIHN5emthbGxlciYjMzk7cyBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXMuIFRoZSBmaXJtd2FyZSBsb2FkaW5nIGxvZ2ljIGluIGBtdDc5MjVfcnVuX2Zpcm13YXJlYCBhbmQgdGhlIGRlYnVnZnMgcmVhZCBmdW5jdGlvbiBgbXQ3OTI1X21jdV9yZWFkX3ZlZnVzZWAgYXJlIHJlYWNoYWJsZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA5OjE3OjMwLjgzODM4NzhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDkyMzQ4OTY4MDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVQ3OTI1VVwiLFxuICAgIFwiTVQ3OTI1RVwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIkNGRzgwMjExXCIsXG4gICAgXCJVU0JcIixcbiAgICBcIlBDSVwiLFxuICAgIFwiREVCVUdfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc5MjVfcnVuX2Zpcm13YXJlXCIsXG4gICAgXCJtdDc5MjVfbWN1X3JlYWRfdmVmdXNlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBsb2FkaW5nICd2aXJ0dWFsIGVmdXNlJyAodmVmdXNlKSBkYXRhIGZyb20gZmlybXdhcmUgZm9yIHRoZSBNZWRpYVRlayBNVDc5MjUgd2lyZWxlc3MgZHJpdmVyLiBUaGUgZHJpdmVyIGhhcyBhIFVTQiB2YXJpYW50IChNVDc5MjVVKSB3aGljaCBjYW4gYmUgZnV6emVkIHVzaW5nIHN5emthbGxlcidzIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcy4gVGhlIGZpcm13YXJlIGxvYWRpbmcgbG9naWMgaW4gYG10NzkyNV9ydW5fZmlybXdhcmVgIGFuZCB0aGUgZGVidWdmcyByZWFkIGZ1bmN0aW9uIGBtdDc5MjVfbWN1X3JlYWRfdmVmdXNlYCBhcmUgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwOToxNzozMC44MzgzOTQ2NFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgzMTU4MjcwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDFlOGVkNDc2NzAzMmI4NzZjYTk1MWQ5Y2FkNjUyZWQyN2Y0ZjVlZjVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBBdWcgNSAwOToxNzoyOSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuaFxcbmluZGV4IDBlZGVkYTU2OWU5YTUuLjljODQ0YmVmOTJjOWYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuaFxcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmhcXG5AQCAtNDQsNiArNDQsNyBAQFxcbiBlbnVtIHtcXG4gXFx0RldfVFlQRV9ERUZBVUxUID0gMCxcXG4gXFx0RldfVFlQRV9DTEMgPSAyLFxcbitcXHRGV19UWVBFX0VYVEVORF9CSU5fRUZVU0UgPSAzLFxcbiBcXHRGV19UWVBFX01BWF9OVU0gPSAyNTVcXG4gfTtcXG4gXFxuQEAgLTE0ODEsNiArMTQ4Miw3IEBAIGVudW0ge1xcbiBcXHRNVF9OSUNfQ0FQXzZHLFxcbiBcXHRNVF9OSUNfQ0FQX0NISVBfQ0FQID0gMHgyMCxcXG4gXFx0TVRfTklDX0NBUF9FTUxfQ0FQID0gMHgyMixcXG4rXFx0TVRfTklDX0NBUF9WRUZVU0VfSU5GTyA9IDB4NDQsXFxuIH07XFxuIFxcbiAjZGVmaW5lIFVOSV9XT1dfREVURUNUX1RZUEVfTUFHSUNcXHRcXHRCSVQoMClcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jXFxuaW5kZXggZDAxZmY0OWRlNDdhZi4uMzRlMjYxZTI0N2ZjZCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmNcXG5AQCAtMjg2LDYgKzI4Niw1MSBAQCBzdGF0aWMgaW50IG10NzkyNV9jaGlwX3Jlc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuIFxcbiBERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19yZXNldCwgTlVMTCwgbXQ3OTI1X2NoaXBfcmVzZXQsIFxcXCIlbGxkXFxcXG5cXFwiKTtcXG4gXFxuK3N0YXRpYyBpbnRcXG4rbXQ3OTI1X3ZlZnVzZV9yZWFkKHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSlcXG4re1xcbitcXHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gZGV2X2dldF9kcnZkYXRhKHMtXFx1MDAzZXByaXZhdGUpO1xcbitcXHR1MTYgc2l6ZSA9IGRldi1cXHUwMDNldmVmdXNlX2NhcC5zaXplO1xcbitcXHRpbnQgb2ZmID0gMDtcXG4rXFx0dTggKmJ1ZjtcXG4rXFx0aW50IHJldCA9IDA7XFxuK1xcbitcXHRpZiAoIWRldi1cXHUwMDNldmVmdXNlX2NhcC5wcmVzZW50IHx8ICFzaXplKSB7XFxuK1xcdFxcdHNlcV9wdXRzKHMsIFxcXCJ2ZWZ1c2U6IG5vIHJlZ2lvbiBpbiBGVyBpbWFnZVxcXFxuXFxcIik7XFxuK1xcdFxcdHJldHVybiAwO1xcbitcXHR9XFxuK1xcbitcXHRidWYgPSBremFsbG9jKHNpemUsIEdGUF9LRVJORUwpO1xcbitcXHRpZiAoIWJ1ZilcXG4rXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuK1xcbitcXHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShkZXYpO1xcbitcXHR3aGlsZSAob2ZmIFxcdTAwM2MgKGludClzaXplKSB7XFxuK1xcdFxcdHUxNiBjaHVuayA9IG1pbl90KHUxNiwgNTEyLCBzaXplIC0gb2ZmKTtcXG4rXFxuK1xcdFxcdHJldCA9IG10NzkyNV9tY3VfcmVhZF92ZWZ1c2UoZGV2LCBvZmYsIGNodW5rLCBidWYgKyBvZmYpO1xcbitcXHRcXHRpZiAocmV0KVxcbitcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0b2ZmICs9IGNodW5rO1xcbitcXHR9XFxuK1xcdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XFxuK1xcbitcXHRpZiAocmV0KSB7XFxuK1xcdFxcdHNlcV9wcmludGYocywgXFxcInZlZnVzZTogcmVhZCBmYWlsZWQgYXQgMHglMDR4ICglZClcXFxcblxcXCIsIG9mZiwgcmV0KTtcXG4rXFx0XFx0a2ZyZWUoYnVmKTtcXG4rXFx0XFx0cmV0dXJuIDA7XFxuK1xcdH1cXG4rXFxuK1xcdHNlcV9wcmludGYocywgXFxcInZlZnVzZSBjb250ZW50OiAldSBieXRlc1xcXFxuXFxcIiwgc2l6ZSk7XFxuK1xcdGZvciAob2ZmID0gMDsgb2ZmIFxcdTAwM2MgKGludClzaXplOyBvZmYgKz0gMTYpXFxuK1xcdFxcdHNlcV9wcmludGYocywgXFxcIiUwNHg6ICUqcGhcXFxcblxcXCIsIG9mZixcXG4rXFx0XFx0XFx0ICAgKGludCltaW5fdCh1MTYsIDE2LCBzaXplIC0gb2ZmKSwgYnVmICsgb2ZmKTtcXG4rXFxuK1xcdGtmcmVlKGJ1Zik7XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4gaW50IG10NzkyNV9pbml0X2RlYnVnZnMoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG4ge1xcbiBcXHRzdHJ1Y3QgZGVudHJ5ICpkaXI7XFxuQEAgLTMwOSw2ICszNTQsMTMgQEAgaW50IG10NzkyNV9pbml0X2RlYnVnZnMoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG4gXFx0ZGVidWdmc19jcmVhdGVfZmlsZShcXFwiaWRsZS10aW1lb3V0XFxcIiwgMDYwMCwgZGlyLCBkZXYsXFxuIFxcdFxcdFxcdCAgICBcXHUwMDI2Zm9wc19wbV9pZGxlX3RpbWVvdXQpO1xcbiBcXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFxcXCJjaGlwX3Jlc2V0XFxcIiwgMDYwMCwgZGlyLCBkZXYsIFxcdTAwMjZmb3BzX3Jlc2V0KTtcXG4rXFx0Lyogb25seSBleHBvc2UgdGhlIHZlZnVzZSByZWFkIG5vZGUgd2hlbiBhIHZlZnVzZSByZWdpb24gd2FzIGZvdW5kIGluIHRoZVxcbitcXHQgKiBGVyBpbWFnZSAoRlcgcmVwb3J0cyB0aGUgY2FwYWJpbGl0eSB1bmNvbmRpdGlvbmFsbHksIHNvIGdhdGUgb24gdGhlXFxuK1xcdCAqIGFjdHVhbCByZWdpb24gcHJlc2VuY2UgaW5zdGVhZClcXG4rXFx0ICovXFxuK1xcdGlmIChkZXYtXFx1MDAzZXZlZnVzZV9jYXAucHJlc2VudClcXG4rXFx0XFx0ZGVidWdmc19jcmVhdGVfZGV2bV9zZXFmaWxlKGRldi1cXHUwMDNlbXQ3Ni5kZXYsIFxcXCJ2ZWZ1c2VcXFwiLCBkaXIsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICBtdDc5MjVfdmVmdXNlX3JlYWQpO1xcbiBcXHRkZWJ1Z2ZzX2NyZWF0ZV9kZXZtX3NlcWZpbGUoZGV2LVxcdTAwM2VtdDc2LmRldiwgXFxcInJ1bnRpbWVfcG1fc3RhdHNcXFwiLCBkaXIsXFxuIFxcdFxcdFxcdFxcdCAgICBtdDc5MnhfcG1fc3RhdHMpO1xcbiBcXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFxcXCJkZWVwLXNsZWVwXFxcIiwgMDYwMCwgZGlyLCBkZXYsIFxcdTAwMjZmb3BzX2RzKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuY1xcbmluZGV4IGZhMjljNDg2YTQ1NTMuLjgwMGQ0OGJlZTExMGMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuY1xcbkBAIC04NzEsNiArODcxLDIxNCBAQCBzdGF0aWMgaW50IG10NzkyNV9tY3VfcmVhZF9lZXByb20oc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTMyIG9mZnNldCwgdTggKnZhbClcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuK3N0YXRpYyBpbnRcXG4rbXQ3OTI1X21jdV9zZW5kX3ZlZnVzZV9wYWdlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsXFxuK1xcdFxcdFxcdCAgICBjb25zdCB1OCAqZGF0YSwgdTMyIHRvdGFsX2xlbixcXG4rXFx0XFx0XFx0ICAgIGludCBwYWdlX2lkeCwgaW50IHRvdGFsX3BhZ2VzKVxcbit7XFxuK1xcdHN0cnVjdCBtdDc5MjVfdmVmdXNlX3BhZ2VfY21kICpjbWQ7XFxuK1xcdHNpemVfdCBvZmZzZXQgPSAoc2l6ZV90KXBhZ2VfaWR4ICogTVQ3OTI1X1ZFRlVTRV9QQUdFX1NJWkU7XFxuK1xcdHUxNiBwYWdlX2xlbiA9ICh1MTYpbWluX3Qoc2l6ZV90LFxcbitcXHRcXHRcXHRcXHQgIE1UNzkyNV9WRUZVU0VfUEFHRV9TSVpFLFxcbitcXHRcXHRcXHRcXHQgIHRvdGFsX2xlbiAtIG9mZnNldCk7XFxuK1xcdGludCByZXQ7XFxuK1xcbitcXHRjbWQgPSBremFsbG9jKHNpemVvZigqY21kKSwgR0ZQX0tFUk5FTCk7XFxuK1xcdGlmICghY21kKVxcbitcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4rXFxuK1xcdGNtZC1cXHUwMDNldGFnICAgICAgICAgICAgPSBjcHVfdG9fbGUxNihVTklfRUZVU0VfQlVGRkVSX01PREUpO1xcbitcXHRjbWQtXFx1MDAzZWxlbiAgICAgICAgICAgID0gY3B1X3RvX2xlMTYoc2l6ZW9mKCpjbWQpIC0gc2l6ZW9mKGNtZC1cXHUwMDNlcnN2KSk7XFxuK1xcdGNtZC1cXHUwMDNlc291cmNlX21vZGUgICAgPSBVTklfRUZVU0VfU09VUkNFX1ZFRlVTRTtcXG4rXFx0Y21kLVxcdTAwM2Vjb250ZW50X2Zvcm1hdCA9IEZJRUxEX1BSRVAoTVQ3OTI1X1ZFRlVTRV9UT1RBTF9QQUdFLCB0b3RhbF9wYWdlcykgfFxcbitcXHRcXHRcXHQgICAgICBGSUVMRF9QUkVQKE1UNzkyNV9WRUZVU0VfUEFHRV9JTkRFWCwgcGFnZV9pZHgpO1xcbitcXHRjbWQtXFx1MDAzZWNvdW50ICAgICAgICAgID0gY3B1X3RvX2xlMTYocGFnZV9sZW4pO1xcbitcXHRtZW1jcHkoY21kLVxcdTAwM2ViaW5fY29udGVudCwgZGF0YSArIG9mZnNldCwgcGFnZV9sZW4pO1xcbitcXG4rXFx0cmV0ID0gbXQ3Nl9tY3Vfc2VuZF9tc2coXFx1MDAyNmRldi1cXHUwMDNlbXQ3NiwgTUNVX1VOSV9DTUQoRUZVU0VfQ1RSTCksXFxuK1xcdFxcdFxcdFxcdGNtZCwgc2l6ZW9mKCpjbWQpLCB0cnVlKTtcXG4rXFx0a2ZyZWUoY21kKTtcXG4rXFx0cmV0dXJuIHJldDtcXG4rfVxcbitcXG4rLyogUmVhZCBiYWNrIHZlZnVzZSBjb250ZW50IGZyb20gRlcgKFVOSSBFRlVTRV9DVFJMIHF1ZXJ5LCBCVUZGRVJfUkQgdGFnKS5cXG4rICogb2Zmc2V0IGlzIHRoZSByYXcgMC1iYXNlZCBpbmRleCBpbnRvIHRoZSBGVyB2ZWZ1c2UgYnVmZmVyOyBzb3VyY2VfbW9kZVxcbisgKiBzZWxlY3RzIHRoZSBWRUZVU0UgcmVnaW9uLiBFeHBvc2VkIGZvciB0aGUgZGVidWdmcyBcXFwidmVmdXNlXFxcIiBub2RlLlxcbisgKi9cXG4raW50IG10NzkyNV9tY3VfcmVhZF92ZWZ1c2Uoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTE2IG9mZnNldCwgdTE2IGNvdW50LFxcbitcXHRcXHRcXHQgICB1OCAqb3V0KVxcbit7XFxuK1xcdHN0cnVjdCB7XFxuK1xcdFxcdHU4IHJzdls0XTtcXG4rXFxuK1xcdFxcdF9fbGUxNiB0YWc7XFxuK1xcdFxcdF9fbGUxNiBsZW47XFxuK1xcbitcXHRcXHR1OCBzb3VyY2VfbW9kZTtcXG4rXFx0XFx0dTggY29udGVudF9mb3JtYXQ7XFxuK1xcdFxcdF9fbGUxNiBvZmZzZXQ7XFxuK1xcdFxcdF9fbGUxNiBjb3VudDtcXG4rXFx0XFx0X19sZTE2IHJzdjE7XFxuK1xcdH0gX19wYWNrZWQgcmVxID0ge1xcbitcXHRcXHQudGFnID0gY3B1X3RvX2xlMTYoVU5JX0VGVVNFX0JVRkZFUl9SRCksXFxuK1xcdFxcdC5sZW4gPSBjcHVfdG9fbGUxNihzaXplb2YocmVxKSAtIHNpemVvZihyZXEucnN2KSksXFxuK1xcdFxcdC5zb3VyY2VfbW9kZSA9IFVOSV9FRlVTRV9TT1VSQ0VfVkVGVVNFLFxcbitcXHRcXHQub2Zmc2V0ID0gY3B1X3RvX2xlMTYob2Zmc2V0KSxcXG4rXFx0XFx0LmNvdW50ID0gY3B1X3RvX2xlMTYoY291bnQpLFxcbitcXHR9O1xcbitcXHRzdHJ1Y3Qge1xcbitcXHRcXHR1OCByc3ZbNF07XFxuK1xcbitcXHRcXHRfX2xlMTYgdGFnO1xcbitcXHRcXHRfX2xlMTYgbGVuO1xcbitcXG4rXFx0XFx0dTggc291cmNlX21vZGU7XFxuK1xcdFxcdHU4IGNvbnRlbnRfZm9ybWF0O1xcbitcXHRcXHRfX2xlMTYgb2Zmc2V0O1xcbitcXHRcXHRfX2xlMTYgY291bnQ7XFxuK1xcdFxcdHU4IHJzdjFbMl07XFxuK1xcdFxcdHU4IGRhdGFbXTtcXG4rXFx0fSBfX3BhY2tlZCAqIHJlcztcXG4rXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4rXFx0aW50IHJldDtcXG4rXFxuK1xcdHJldCA9IG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2coXFx1MDAyNmRldi1cXHUwMDNlbXQ3NiwgTUNVX1dNX1VOSV9DTURfUVVFUlkoRUZVU0VfQ1RSTCksXFxuK1xcdFxcdFxcdFxcdFxcdFxcdTAwMjZyZXEsIHNpemVvZihyZXEpLCB0cnVlLCBcXHUwMDI2c2tiKTtcXG4rXFx0aWYgKHJldClcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFxuK1xcdHJlcyA9ICh2b2lkICopc2tiLVxcdTAwM2VkYXRhO1xcbitcXHRpZiAoc2tiLVxcdTAwM2VsZW4gXFx1MDAzYyBzaXplb2YoKnJlcykgKyBjb3VudCkge1xcbitcXHRcXHRkZXZfa2ZyZWVfc2tiKHNrYik7XFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHR9XFxuK1xcbitcXHRtZW1jcHkob3V0LCByZXMtXFx1MDAzZWRhdGEsIGNvdW50KTtcXG4rXFx0ZGV2X2tmcmVlX3NrYihza2IpO1xcbitcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK3N0YXRpYyBpbnRcXG4rbXQ3OTI1X2xvYWRfdmVmdXNlX2Zyb21fZncoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgY29uc3QgY2hhciAqZndfbmFtZSlcXG4re1xcbitcXHRjb25zdCBzdHJ1Y3QgbXQ3Nl9jb25uYWMyX2Z3X3RyYWlsZXIgKmhkcjtcXG4rXFx0Y29uc3Qgc3RydWN0IG10NzZfY29ubmFjMl9md19yZWdpb24gKnJlZ2lvbjtcXG4rXFx0c3RydWN0IG10NzZfZGV2ICptZGV2ID0gXFx1MDAyNmRldi1cXHUwMDNlbXQ3NjtcXG4rXFx0Y29uc3Qgc3RydWN0IGZpcm13YXJlICpmdyA9IE5VTEw7XFxuK1xcdGNvbnN0IHU4ICp2ZWZ1c2VfYmFzZSA9IE5VTEw7XFxuK1xcdHUzMiBvZmZzZXQgPSAwLCBsZW4gPSAwLCBwYXlsb2FkO1xcbitcXHRpbnQgaSwgdG90YWxfcGFnZXMsIHJldCA9IDA7XFxuK1xcbitcXHRpZiAoIWRldi1cXHUwMDNldmVmdXNlX2NhcC5lbmFibGVkKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFxuK1xcdC8qIHJlY29tcHV0ZWQgb24gZXZlcnkgRlcgbG9hZDsgc2V0IHRydWUgb25seSBvbmNlIGEgdmVmdXNlIHJlZ2lvbiBpc1xcbitcXHQgKiBmb3VuZCBpbiB0aGUgaW1hZ2UgYmVsb3cgKHRoZSBkZWJ1Z2ZzIG5vZGUgaXMgZ2F0ZWQgb24gdGhpcykuXFxuK1xcdCAqL1xcbitcXHRkZXYtXFx1MDAzZXZlZnVzZV9jYXAucHJlc2VudCA9IGZhbHNlO1xcbitcXG4rXFx0cmV0ID0gcmVxdWVzdF9maXJtd2FyZShcXHUwMDI2ZncsIGZ3X25hbWUsIG1kZXYtXFx1MDAzZWRldik7XFxuK1xcdGlmIChyZXQpIHtcXG4rXFx0XFx0ZGV2X3dhcm4obWRldi1cXHUwMDNlZGV2LFxcbitcXHRcXHRcXHQgXFxcInZlZnVzZTogZmlybXdhcmUgJXMgbm90IGF2YWlsYWJsZSAoJWQpLCBza2lwcGluZ1xcXFxuXFxcIixcXG4rXFx0XFx0XFx0IGZ3X25hbWUsIHJldCk7XFxuK1xcdFxcdHJldCA9IDA7XFxuK1xcdFxcdGdvdG8gb3V0O1xcbitcXHR9XFxuK1xcbitcXHRpZiAoIWZ3IHx8ICFmdy1cXHUwMDNlZGF0YSB8fCBmdy1cXHUwMDNlc2l6ZSBcXHUwMDNjIHNpemVvZigqaGRyKSkge1xcbitcXHRcXHRkZXZfd2FybihtZGV2LVxcdTAwM2VkZXYsIFxcXCJ2ZWZ1c2U6IGludmFsaWQgZmlybXdhcmUsIHNraXBwaW5nXFxcXG5cXFwiKTtcXG4rXFx0XFx0Z290byBvdXQ7XFxuK1xcdH1cXG4rXFxuK1xcdGhkciA9IChjb25zdCB2b2lkICopKGZ3LVxcdTAwM2VkYXRhICsgZnctXFx1MDAzZXNpemUgLSBzaXplb2YoKmhkcikpO1xcbitcXG4rXFx0LyogUmVnaW9uIGRlc2NyaXB0b3JzIHNpdCByaWdodCBiZWZvcmUgdGhlIHRyYWlsZXIuIE1ha2Ugc3VyZSB0aGUgd2hvbGVcXG4rXFx0ICogZGVzY3JpcHRvciBhcnJheSBpcyB3aXRoaW4gdGhlIGltYWdlIGJlZm9yZSBkZXJlZmVyZW5jaW5nIHRoZW0sIHNvIGFcXG4rXFx0ICogY29ycnVwdCBuX3JlZ2lvbiBjYW5ub3Qgd2FsayB0aGUgcmVnaW9uIHBvaW50ZXIgYmVmb3JlIGZ3LVxcdTAwM2VkYXRhLlxcbitcXHQgKi9cXG4rXFx0aWYgKGZ3LVxcdTAwM2VzaXplIFxcdTAwM2Mgc2l6ZW9mKCpoZHIpICsgKHNpemVfdCloZHItXFx1MDAzZW5fcmVnaW9uICogc2l6ZW9mKCpyZWdpb24pKSB7XFxuK1xcdFxcdGRldl93YXJuKG1kZXYtXFx1MDAzZWRldixcXG4rXFx0XFx0XFx0IFxcXCJ2ZWZ1c2U6IGZpcm13YXJlIHRvbyBzbWFsbCBmb3IgJXUgcmVnaW9uIGRlc2NyaXB0b3JzLCBza2lwcGluZ1xcXFxuXFxcIixcXG4rXFx0XFx0XFx0IGhkci1cXHUwMDNlbl9yZWdpb24pO1xcbitcXHRcXHRnb3RvIG91dDtcXG4rXFx0fVxcbitcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGhkci1cXHUwMDNlbl9yZWdpb247IGkrKykge1xcbitcXHRcXHRyZWdpb24gPSAoY29uc3Qgdm9pZCAqKSgoY29uc3QgdTggKiloZHIgLVxcbitcXHRcXHRcXHRcXHRcXHQoaGRyLVxcdTAwM2VuX3JlZ2lvbiAtIGkpICogc2l6ZW9mKCpyZWdpb24pKTtcXG4rXFx0XFx0bGVuID0gbGUzMl90b19jcHUocmVnaW9uLVxcdTAwM2VsZW4pO1xcbitcXG4rXFx0XFx0aWYgKGxlbiBcXHUwMDNlIGZ3LVxcdTAwM2VzaXplIC0gb2Zmc2V0KSB7XFxuK1xcdFxcdFxcdGRldl93YXJuKG1kZXYtXFx1MDAzZWRldiwgXFxcInZlZnVzZTogaW52YWxpZCBmaXJtd2FyZSByZWdpb24sIHNraXBwaW5nXFxcXG5cXFwiKTtcXG4rXFx0XFx0XFx0Z290byBvdXQ7XFxuK1xcdFxcdH1cXG4rXFxuK1xcdFxcdGlmICgocmVnaW9uLVxcdTAwM2VmZWF0dXJlX3NldCBcXHUwMDI2IEZXX0ZFQVRVUkVfTk9OX0RMKSBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHQgICAgcmVnaW9uLVxcdTAwM2V0eXBlID09IEZXX1RZUEVfRVhURU5EX0JJTl9FRlVTRSkge1xcbitcXHRcXHRcXHR2ZWZ1c2VfYmFzZSA9IGZ3LVxcdTAwM2VkYXRhICsgb2Zmc2V0O1xcbitcXHRcXHRcXHRkZXYtXFx1MDAzZXZlZnVzZV9jYXAucHJlc2VudCA9IHRydWU7XFxuK1xcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHR9XFxuK1xcdFxcdG9mZnNldCArPSBsZW47XFxuK1xcdH1cXG4rXFxuK1xcdGlmICghdmVmdXNlX2Jhc2UpIHtcXG4rXFx0XFx0ZGV2X3dhcm4obWRldi1cXHUwMDNlZGV2LFxcbitcXHRcXHRcXHQgXFxcIkZXX1RZUEVfRVhURU5EX0JJTl9FRlVTRSBjaHVuayBub3QgZm91bmQgaW4gRlcgaW1hZ2UsIHZpcnR1YWwgZWZ1c2Ugc2tpcHBlZFxcXFxuXFxcIik7XFxuK1xcdFxcdC8qIHZlZnVzZV9jYXAucHJlc2VudCBzdGF5cyBmYWxzZSAtXFx1MDAzZSBkZWJ1Z2ZzIG5vZGUgbm90IGV4cG9zZWQgb24gYVxcbitcXHRcXHQgKiBXRiB3aXRob3V0IGEgdmlydHVhbCBlZnVzZS4gdmVmdXNlX2NhcC5lbmFibGVkICh0aGUgRlctcmVwb3J0ZWRcXG4rXFx0XFx0ICogY2FwYWJpbGl0eSkgaXMgbGVmdCB1bnRvdWNoZWQuXFxuK1xcdFxcdCAqL1xcbitcXHRcXHRnb3RvIG91dDtcXG4rXFx0fVxcbitcXG4rXFx0LyogVGhlIHBhY2tlZCBGVyByZWdpb24gY2FycmllcyB0aGUgdmVmdXNlIHBheWxvYWQgcGx1cyBjb25uYWNcXG4rXFx0ICogcGVyLXJlZ2lvbiBmcmFtaW5nICg0LWJ5dGUgQ1JDICsgMTYtYnl0ZSBhbGlnbm1lbnQpLCBzbyByZWdpb25cXG4rXFx0ICogbGVuZ3RoIGlzIGxhcmdlciB0aGFuIHRoZSBGVy1yZXBvcnRlZCBwYXlsb2FkLiBPbmx5IHRoZSBsZWFkaW5nXFxuK1xcdCAqIHZlZnVzZV9jYXAuc2l6ZSBieXRlcyBhcmUgdGhlIGFjdHVhbCB2ZWZ1c2UgY29udGVudCB0byBwdXNoLlxcbitcXHQgKi9cXG4rXFx0cGF5bG9hZCA9IGRldi1cXHUwMDNldmVmdXNlX2NhcC5zaXplO1xcbitcXG4rXFx0LyogdmlydHVhbCBlZnVzZSBpcyBhbiBvcHRpb25hbCBvdmVycmlkZTogaWYgaXQgY2Fubm90IGJlIGFwcGxpZWQgdGhlXFxuK1xcdCAqIGNoaXAgc3RpbGwgd29ya3Mgb24gaXRzIGRlZmF1bHQgZWZ1c2UgdmFsdWVzLCBzbyB0aGUgY2hlY2tzIGJlbG93XFxuK1xcdCAqIG9ubHkgd2FybiBhbmQgc2tpcCAtIHRoZXkgbXVzdCBub3QgZmFpbCBmaXJtd2FyZSBicmluZy11cC5cXG4rXFx0ICovXFxuK1xcbitcXHQvKiBbQ2hlY2sgIzFdIHJlZ2lvbiBtdXN0IGhvbGQgYXQgbGVhc3QgdGhlIEZXLXJlcG9ydGVkIHBheWxvYWQgKi9cXG4rXFx0aWYgKGxlbiBcXHUwMDNjIHBheWxvYWQpIHtcXG4rXFx0XFx0ZGV2X3dhcm4obWRldi1cXHUwMDNlZGV2LFxcbitcXHRcXHRcXHQgXFxcInZlZnVzZTogcmVnaW9uIHNpemUgJXUgc21hbGxlciB0aGFuIEZXIGNhcGFiaWxpdHkgJXUsIHNraXBwaW5nXFxcXG5cXFwiLFxcbitcXHRcXHRcXHQgbGVuLCBwYXlsb2FkKTtcXG4rXFx0XFx0Z290byBvdXQ7XFxuK1xcdH1cXG4rXFxuK1xcdHRvdGFsX3BhZ2VzID0gRElWX1JPVU5EX1VQKHBheWxvYWQsIE1UNzkyNV9WRUZVU0VfUEFHRV9TSVpFKTtcXG4rXFx0aWYgKHRvdGFsX3BhZ2VzIFxcdTAwM2UgTVQ3OTI1X1ZFRlVTRV9NQVhfUEFHRVMpIHtcXG4rXFx0XFx0ZGV2X3dhcm4obWRldi1cXHUwMDNlZGV2LFxcbitcXHRcXHRcXHQgXFxcInZlZnVzZTogcGF5bG9hZCB0b28gbGFyZ2U6ICV1IGJ5dGVzICglZCBwYWdlcyksIG1heCAlZCBwYWdlcyBzdXBwb3J0ZWQsIHNraXBwaW5nXFxcXG5cXFwiLFxcbitcXHRcXHRcXHQgcGF5bG9hZCwgdG90YWxfcGFnZXMsIE1UNzkyNV9WRUZVU0VfTUFYX1BBR0VTKTtcXG4rXFx0XFx0Z290byBvdXQ7XFxuK1xcdH1cXG4rXFxuK1xcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyB0b3RhbF9wYWdlczsgaSsrKSB7XFxuK1xcdFxcdHJldCA9IG10NzkyNV9tY3Vfc2VuZF92ZWZ1c2VfcGFnZShkZXYsIHZlZnVzZV9iYXNlLCBwYXlsb2FkLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgIGksIHRvdGFsX3BhZ2VzKTtcXG4rXFx0XFx0aWYgKHJldCkge1xcbitcXHRcXHRcXHRkZXZfd2FybihtZGV2LVxcdTAwM2VkZXYsXFxuK1xcdFxcdFxcdFxcdCBcXFwidmVmdXNlIHBhZ2UgJWQvJWQgc2VuZCBmYWlsZWQ6ICVkLCBza2lwcGluZ1xcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0IGkgKyAxLCB0b3RhbF9wYWdlcywgcmV0KTtcXG4rXFx0XFx0XFx0cmV0ID0gMDtcXG4rXFx0XFx0XFx0Z290byBvdXQ7XFxuK1xcdFxcdH1cXG4rXFx0fVxcbitcXG4rb3V0OlxcbitcXHRyZWxlYXNlX2Zpcm13YXJlKGZ3KTtcXG4rXFx0cmV0dXJuIHJldDtcXG4rfVxcbitcXG4gc3RhdGljIGludCBtdDc5MjVfbG9hZF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgY29uc3QgY2hhciAqZndfbmFtZSlcXG4ge1xcbiBcXHRjb25zdCBzdHJ1Y3QgbXQ3Nl9jb25uYWMyX2Z3X3RyYWlsZXIgKmhkcjtcXG5AQCAtMTEyNiw2ICsxMzM0LDE3IEBAIG10NzkyNV9tY3VfZ2V0X25pY19jYXBhYmlsaXR5KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuIFxcdFxcdGNhc2UgTVRfTklDX0NBUF9FTUxfQ0FQOlxcbiBcXHRcXHRcXHRtdDc5MjVfbWN1X3BhcnNlX2VtbF9jYXAoZGV2LCB0bHYtXFx1MDAzZWRhdGEpO1xcbiBcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0Y2FzZSBNVF9OSUNfQ0FQX1ZFRlVTRV9JTkZPOiB7XFxuK1xcdFxcdFxcdHN0cnVjdCBtdDc5MjVfdmVmdXNlX2NhcCAqY2FwO1xcbitcXG4rXFx0XFx0XFx0aWYgKGxlbiBcXHUwMDNjIHNpemVvZigqdGx2KSArIHNpemVvZigqY2FwKSlcXG4rXFx0XFx0XFx0XFx0YnJlYWs7XFxuK1xcbitcXHRcXHRcXHRjYXAgPSAoc3RydWN0IG10NzkyNV92ZWZ1c2VfY2FwICopdGx2LVxcdTAwM2VkYXRhO1xcbitcXHRcXHRcXHRkZXYtXFx1MDAzZXZlZnVzZV9jYXAuZW5hYmxlZCAgID0gY2FwLVxcdTAwM2VlbmFibGVkO1xcbitcXHRcXHRcXHRkZXYtXFx1MDAzZXZlZnVzZV9jYXAuc2l6ZSAgICAgID0gbGUxNl90b19jcHUoY2FwLVxcdTAwM2VzaXplKTtcXG4rXFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdH1cXG4gXFx0XFx0ZGVmYXVsdDpcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdH1cXG5AQCAtMTE5OSw2ICsxNDE4LDEzIEBAIGludCBtdDc5MjVfcnVuX2Zpcm13YXJlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuIFxcdGlmIChlcnIpXFxuIFxcdFxcdHJldHVybiBlcnI7XFxuIFxcbitcXHQvKiBWaXJ0dWFsIGVmdXNlIGlzIGJlc3QtZWZmb3J0IGFuZCBjdXJyZW50bHkgbmV2ZXIgZmFpbHMgYnJpbmctdXAsIGJ1dFxcbitcXHQgKiBrZWVwIHRoZSBlcnJvciBwcm9wYWdhdGlvbiBmb3IgYSBwb3NzaWJsZSBmdXR1cmUgZmF0YWwgdmVmdXNlIGVycm9yLlxcbitcXHQgKi9cXG4rXFx0ZXJyID0gbXQ3OTI1X2xvYWRfdmVmdXNlX2Zyb21fZncoZGV2LCBtdDc5MnhfcmFtX25hbWUoZGV2KSk7XFxuK1xcdGlmIChlcnIpXFxuK1xcdFxcdHJldHVybiBlcnI7XFxuK1xcbiBcXHRlcnIgPSBtdDc5MjVfbG9hZF9jbGMoZGV2LCBtdDc5MnhfcmFtX25hbWUoZGV2KSk7XFxuIFxcdGlmIChlcnIpXFxuIFxcdFxcdHJldHVybiBlcnI7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmhcXG5pbmRleCAxMWY5ZWFjMTNmZmM2Li5hMGViMzBkMjU3MGRkIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5oXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmhcXG5AQCAtMTM3LDYgKzEzNyw0MSBAQCBlbnVtIHtcXG4gXFx0VU5JX0VGVVNFX0JVRkZFUl9SRCxcXG4gfTtcXG4gXFxuKy8qIHBhZ2Ugc2l6ZSBhbmQgY29udGVudF9mb3JtYXQgbGF5b3V0IGZvbGxvdyB0aGUgRlcgYnVmZmVyLW1vZGUgQUJJICovXFxuKyNkZWZpbmUgTVQ3OTI1X1ZFRlVTRV9QQUdFX1NJWkVcXHRcXHQxMDI0XFx0LyogRlcgQlVGRkVSX0JJTl9QQUdFX1NJWkUgKDB4NDAwKSAqL1xcbisjZGVmaW5lIE1UNzkyNV9WRUZVU0VfTUFYX1BBR0VTXFx0XFx0N1xcdC8qIGNvbnRlbnRfZm9ybWF0IHBhZ2UgZmllbGRzIGFyZSAzLWJpdCAqL1xcbitcXG4rI2RlZmluZSBNVDc5MjVfVkVGVVNFX1RPVEFMX1BBR0VcXHRHRU5NQVNLKDcsIDUpXFx0LyogRlcgQlVGRkVSX0JJTl9UT1RBTF9QQUdFICovXFxuKyNkZWZpbmUgTVQ3OTI1X1ZFRlVTRV9QQUdFX0lOREVYXFx0R0VOTUFTSyg0LCAyKVxcdC8qIEZXIEJVRkZFUl9CSU5fUEFHRV9JTkRFWCAqL1xcbitcXG4rLyogYnVmZmVyIG1vZGUgY29udGVudCBzb3VyY2UsIGFsaWducyB3aXRoIEZXIEJVRkZFUl9TT1VSQ0VfTU9ERV9JTkZPXyogKi9cXG4rZW51bSB7XFxuK1xcdFVOSV9FRlVTRV9TT1VSQ0VfRUZVU0UgPSAwLFxcbitcXHRVTklfRUZVU0VfU09VUkNFX0VFUFJPTSA9IDEsXFxuK1xcdFVOSV9FRlVTRV9TT1VSQ0VfVkVGVVNFID0gMixcXG4rfTtcXG4rXFxuK3N0cnVjdCBtdDc5MjVfdmVmdXNlX2NhcCB7XFxuK1xcdHU4IHZlcnNpb247XFxuK1xcdHU4IGVuYWJsZWQ7XFxuK1xcdF9fbGUxNiBzaXplO1xcbitcXHRfX2xlMzIgaGFzaF9hZGRyO1xcbit9IF9fcGFja2VkO1xcbitcXG4rc3RydWN0IG10NzkyNV92ZWZ1c2VfcGFnZV9jbWQge1xcbitcXHR1OCByc3ZbNF07XFx0XFx0LyogVU5JX0NNRF9FRlVTRV9DT05UUk9MIGhlYWRlciBiZWZvcmUgVExWICovXFxuK1xcbitcXHRfX2xlMTYgdGFnO1xcdFxcdC8qIFVOSV9FRlVTRV9CVUZGRVJfTU9ERSAqL1xcbitcXHRfX2xlMTYgbGVuO1xcbitcXHR1OCBzb3VyY2VfbW9kZTtcXHRcXHQvKiBVTklfRUZVU0VfU09VUkNFX1ZFRlVTRSAqL1xcbitcXHR1OCBjb250ZW50X2Zvcm1hdDtcXHQvKiBbNzo1XT10b3RhbF9wYWdlcyBbNDoyXT1wYWdlX2lkeCAqL1xcbitcXHRfX2xlMTYgY291bnQ7XFx0XFx0LyogdmFsaWQgYnl0ZXMgaW4gdGhpcyBwYWdlICovXFxuK1xcdHU4IGJpbl9jb250ZW50W01UNzkyNV9WRUZVU0VfUEFHRV9TSVpFXTtcXG4rfSBfX3BhY2tlZDtcXG4rXFxuK2ludCBtdDc5MjVfbWN1X3JlYWRfdmVmdXNlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHUxNiBvZmZzZXQsIHUxNiBjb3VudCxcXG4rXFx0XFx0XFx0ICAgdTggKm91dCk7XFxuK1xcbiBlbnVtIHtcXG4gXFx0VU5JX0NNRF9BQ0NFU1NfUkVHX0JBU0lDID0gMHgwLFxcbiBcXHRVTklfQ01EX0FDQ0VTU19SRl9SRUdfQkFTSUMsXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oXFxuaW5kZXggOWVmYzI1MWNiNzQ1Zi4uNzBhNzRlMDcxYjE3YiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaFxcbkBAIC0zNDIsNiArMzQyLDEyIEBAIHN0cnVjdCBtdDc5MnhfZGV2IHtcXG4gXFx0c3RydWN0IGllZWU4MDIxMV92aWYgKm5hbl92aWY7XFxuIFxcdGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfaWZhY2VfY29tYmluYXRpb24gKmlmYWNlX2NvbWJpbmF0aW9ucztcXG4gXFx0aW50IG5faWZhY2VfY29tYmluYXRpb25zO1xcbitcXG4rXFx0c3RydWN0IHtcXG4rXFx0XFx0Ym9vbCBlbmFibGVkO1xcdC8qIEZXIHJlcG9ydHMgdmVmdXNlIGNhcGFiaWxpdHkgKHVuY29uZGl0aW9uYWwpICovXFxuK1xcdFxcdGJvb2wgcHJlc2VudDtcXHQvKiBhIHZlZnVzZSByZWdpb24gd2FzIGZvdW5kIGluIHRoZSBGVyBpbWFnZSAqL1xcbitcXHRcXHR1MTYgc2l6ZTtcXG4rXFx0fSB2ZWZ1c2VfY2FwO1xcbiB9O1xcbiBcXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgbXQ3OTJ4X2Jzc19jb25mICpcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDk6MTc6MzIuNjcwNzUxMzUyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTA3NDAyNTI0MDg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzkyNVVcIixcbiAgICBcIk1UNzkyNUVcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJDRkc4MDIxMVwiLFxuICAgIFwiVVNCXCIsXG4gICAgXCJQQ0lcIixcbiAgICBcIkRFQlVHX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3OTI1X3J1bl9maXJtd2FyZVwiLFxuICAgIFwibXQ3OTI1X21jdV9yZWFkX3ZlZnVzZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgbG9hZGluZyAndmlydHVhbCBlZnVzZScgKHZlZnVzZSkgZGF0YSBmcm9tIGZpcm13YXJlIGZvciB0aGUgTWVkaWFUZWsgTVQ3OTI1IHdpcmVsZXNzIGRyaXZlci4gVGhlIGRyaXZlciBoYXMgYSBVU0IgdmFyaWFudCAoTVQ3OTI1VSkgd2hpY2ggY2FuIGJlIGZ1enplZCB1c2luZyBzeXprYWxsZXIncyBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXMuIFRoZSBmaXJtd2FyZSBsb2FkaW5nIGxvZ2ljIGluIGBtdDc5MjVfcnVuX2Zpcm13YXJlYCBhbmQgdGhlIGRlYnVnZnMgcmVhZCBmdW5jdGlvbiBgbXQ3OTI1X21jdV9yZWFkX3ZlZnVzZWAgYXJlIHJlYWNoYWJsZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMWU4ZWQ0NzY3MDMyYjg3NmNhOTUxZDljYWQ2NTJlZDI3ZjRmNWVmNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDUgMDk6MTc6MjkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuaFxuaW5kZXggMGVkZWRhNTY5ZTlhNS4uOWM4NDRiZWY5MmM5ZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmhcbkBAIC00NCw2ICs0NCw3IEBAXG4gZW51bSB7XG4gXHRGV19UWVBFX0RFRkFVTFQgPSAwLFxuIFx0RldfVFlQRV9DTEMgPSAyLFxuK1x0RldfVFlQRV9FWFRFTkRfQklOX0VGVVNFID0gMyxcbiBcdEZXX1RZUEVfTUFYX05VTSA9IDI1NVxuIH07XG4gXG5AQCAtMTQ4MSw2ICsxNDgyLDcgQEAgZW51bSB7XG4gXHRNVF9OSUNfQ0FQXzZHLFxuIFx0TVRfTklDX0NBUF9DSElQX0NBUCA9IDB4MjAsXG4gXHRNVF9OSUNfQ0FQX0VNTF9DQVAgPSAweDIyLFxuK1x0TVRfTklDX0NBUF9WRUZVU0VfSU5GTyA9IDB4NDQsXG4gfTtcbiBcbiAjZGVmaW5lIFVOSV9XT1dfREVURUNUX1RZUEVfTUFHSUNcdFx0QklUKDApXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jXG5pbmRleCBkMDFmZjQ5ZGU0N2FmLi4zNGUyNjFlMjQ3ZmNkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmNcbkBAIC0yODYsNiArMjg2LDUxIEBAIHN0YXRpYyBpbnQgbXQ3OTI1X2NoaXBfcmVzZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcbiBcbiBERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19yZXNldCwgTlVMTCwgbXQ3OTI1X2NoaXBfcmVzZXQsIFwiJWxsZFxcblwiKTtcbiBcbitzdGF0aWMgaW50XG4rbXQ3OTI1X3ZlZnVzZV9yZWFkKHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSlcbit7XG4rXHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gZGV2X2dldF9kcnZkYXRhKHMtXHUwMDNlcHJpdmF0ZSk7XG4rXHR1MTYgc2l6ZSA9IGRldi1cdTAwM2V2ZWZ1c2VfY2FwLnNpemU7XG4rXHRpbnQgb2ZmID0gMDtcbitcdHU4ICpidWY7XG4rXHRpbnQgcmV0ID0gMDtcbitcbitcdGlmICghZGV2LVx1MDAzZXZlZnVzZV9jYXAucHJlc2VudCB8fCAhc2l6ZSkge1xuK1x0XHRzZXFfcHV0cyhzLCBcInZlZnVzZTogbm8gcmVnaW9uIGluIEZXIGltYWdlXFxuXCIpO1xuK1x0XHRyZXR1cm4gMDtcbitcdH1cbitcbitcdGJ1ZiA9IGt6YWxsb2Moc2l6ZSwgR0ZQX0tFUk5FTCk7XG4rXHRpZiAoIWJ1ZilcbitcdFx0cmV0dXJuIC1FTk9NRU07XG4rXG4rXHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShkZXYpO1xuK1x0d2hpbGUgKG9mZiBcdTAwM2MgKGludClzaXplKSB7XG4rXHRcdHUxNiBjaHVuayA9IG1pbl90KHUxNiwgNTEyLCBzaXplIC0gb2ZmKTtcbitcbitcdFx0cmV0ID0gbXQ3OTI1X21jdV9yZWFkX3ZlZnVzZShkZXYsIG9mZiwgY2h1bmssIGJ1ZiArIG9mZik7XG4rXHRcdGlmIChyZXQpXG4rXHRcdFx0YnJlYWs7XG4rXHRcdG9mZiArPSBjaHVuaztcbitcdH1cbitcdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XG4rXG4rXHRpZiAocmV0KSB7XG4rXHRcdHNlcV9wcmludGYocywgXCJ2ZWZ1c2U6IHJlYWQgZmFpbGVkIGF0IDB4JTA0eCAoJWQpXFxuXCIsIG9mZiwgcmV0KTtcbitcdFx0a2ZyZWUoYnVmKTtcbitcdFx0cmV0dXJuIDA7XG4rXHR9XG4rXG4rXHRzZXFfcHJpbnRmKHMsIFwidmVmdXNlIGNvbnRlbnQ6ICV1IGJ5dGVzXFxuXCIsIHNpemUpO1xuK1x0Zm9yIChvZmYgPSAwOyBvZmYgXHUwMDNjIChpbnQpc2l6ZTsgb2ZmICs9IDE2KVxuK1x0XHRzZXFfcHJpbnRmKHMsIFwiJTA0eDogJSpwaFxcblwiLCBvZmYsXG4rXHRcdFx0ICAgKGludCltaW5fdCh1MTYsIDE2LCBzaXplIC0gb2ZmKSwgYnVmICsgb2ZmKTtcbitcbitcdGtmcmVlKGJ1Zik7XG4rXG4rXHRyZXR1cm4gMDtcbit9XG4rXG4gaW50IG10NzkyNV9pbml0X2RlYnVnZnMoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbiB7XG4gXHRzdHJ1Y3QgZGVudHJ5ICpkaXI7XG5AQCAtMzA5LDYgKzM1NCwxMyBAQCBpbnQgbXQ3OTI1X2luaXRfZGVidWdmcyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuIFx0ZGVidWdmc19jcmVhdGVfZmlsZShcImlkbGUtdGltZW91dFwiLCAwNjAwLCBkaXIsIGRldixcbiBcdFx0XHQgICAgXHUwMDI2Zm9wc19wbV9pZGxlX3RpbWVvdXQpO1xuIFx0ZGVidWdmc19jcmVhdGVfZmlsZShcImNoaXBfcmVzZXRcIiwgMDYwMCwgZGlyLCBkZXYsIFx1MDAyNmZvcHNfcmVzZXQpO1xuK1x0Lyogb25seSBleHBvc2UgdGhlIHZlZnVzZSByZWFkIG5vZGUgd2hlbiBhIHZlZnVzZSByZWdpb24gd2FzIGZvdW5kIGluIHRoZVxuK1x0ICogRlcgaW1hZ2UgKEZXIHJlcG9ydHMgdGhlIGNhcGFiaWxpdHkgdW5jb25kaXRpb25hbGx5LCBzbyBnYXRlIG9uIHRoZVxuK1x0ICogYWN0dWFsIHJlZ2lvbiBwcmVzZW5jZSBpbnN0ZWFkKVxuK1x0ICovXG4rXHRpZiAoZGV2LVx1MDAzZXZlZnVzZV9jYXAucHJlc2VudClcbitcdFx0ZGVidWdmc19jcmVhdGVfZGV2bV9zZXFmaWxlKGRldi1cdTAwM2VtdDc2LmRldiwgXCJ2ZWZ1c2VcIiwgZGlyLFxuK1x0XHRcdFx0XHQgICAgbXQ3OTI1X3ZlZnVzZV9yZWFkKTtcbiBcdGRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZShkZXYtXHUwMDNlbXQ3Ni5kZXYsIFwicnVudGltZV9wbV9zdGF0c1wiLCBkaXIsXG4gXHRcdFx0XHQgICAgbXQ3OTJ4X3BtX3N0YXRzKTtcbiBcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCJkZWVwLXNsZWVwXCIsIDA2MDAsIGRpciwgZGV2LCBcdTAwMjZmb3BzX2RzKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jXG5pbmRleCBmYTI5YzQ4NmE0NTUzLi44MDBkNDhiZWUxMTBjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jXG5AQCAtODcxLDYgKzg3MSwyMTQgQEAgc3RhdGljIGludCBtdDc5MjVfbWN1X3JlYWRfZWVwcm9tKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHUzMiBvZmZzZXQsIHU4ICp2YWwpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4rc3RhdGljIGludFxuK210NzkyNV9tY3Vfc2VuZF92ZWZ1c2VfcGFnZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LFxuK1x0XHRcdCAgICBjb25zdCB1OCAqZGF0YSwgdTMyIHRvdGFsX2xlbixcbitcdFx0XHQgICAgaW50IHBhZ2VfaWR4LCBpbnQgdG90YWxfcGFnZXMpXG4re1xuK1x0c3RydWN0IG10NzkyNV92ZWZ1c2VfcGFnZV9jbWQgKmNtZDtcbitcdHNpemVfdCBvZmZzZXQgPSAoc2l6ZV90KXBhZ2VfaWR4ICogTVQ3OTI1X1ZFRlVTRV9QQUdFX1NJWkU7XG4rXHR1MTYgcGFnZV9sZW4gPSAodTE2KW1pbl90KHNpemVfdCxcbitcdFx0XHRcdCAgTVQ3OTI1X1ZFRlVTRV9QQUdFX1NJWkUsXG4rXHRcdFx0XHQgIHRvdGFsX2xlbiAtIG9mZnNldCk7XG4rXHRpbnQgcmV0O1xuK1xuK1x0Y21kID0ga3phbGxvYyhzaXplb2YoKmNtZCksIEdGUF9LRVJORUwpO1xuK1x0aWYgKCFjbWQpXG4rXHRcdHJldHVybiAtRU5PTUVNO1xuK1xuK1x0Y21kLVx1MDAzZXRhZyAgICAgICAgICAgID0gY3B1X3RvX2xlMTYoVU5JX0VGVVNFX0JVRkZFUl9NT0RFKTtcbitcdGNtZC1cdTAwM2VsZW4gICAgICAgICAgICA9IGNwdV90b19sZTE2KHNpemVvZigqY21kKSAtIHNpemVvZihjbWQtXHUwMDNlcnN2KSk7XG4rXHRjbWQtXHUwMDNlc291cmNlX21vZGUgICAgPSBVTklfRUZVU0VfU09VUkNFX1ZFRlVTRTtcbitcdGNtZC1cdTAwM2Vjb250ZW50X2Zvcm1hdCA9IEZJRUxEX1BSRVAoTVQ3OTI1X1ZFRlVTRV9UT1RBTF9QQUdFLCB0b3RhbF9wYWdlcykgfFxuK1x0XHRcdCAgICAgIEZJRUxEX1BSRVAoTVQ3OTI1X1ZFRlVTRV9QQUdFX0lOREVYLCBwYWdlX2lkeCk7XG4rXHRjbWQtXHUwMDNlY291bnQgICAgICAgICAgPSBjcHVfdG9fbGUxNihwYWdlX2xlbik7XG4rXHRtZW1jcHkoY21kLVx1MDAzZWJpbl9jb250ZW50LCBkYXRhICsgb2Zmc2V0LCBwYWdlX2xlbik7XG4rXG4rXHRyZXQgPSBtdDc2X21jdV9zZW5kX21zZyhcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgTUNVX1VOSV9DTUQoRUZVU0VfQ1RSTCksXG4rXHRcdFx0XHRjbWQsIHNpemVvZigqY21kKSwgdHJ1ZSk7XG4rXHRrZnJlZShjbWQpO1xuK1x0cmV0dXJuIHJldDtcbit9XG4rXG4rLyogUmVhZCBiYWNrIHZlZnVzZSBjb250ZW50IGZyb20gRlcgKFVOSSBFRlVTRV9DVFJMIHF1ZXJ5LCBCVUZGRVJfUkQgdGFnKS5cbisgKiBvZmZzZXQgaXMgdGhlIHJhdyAwLWJhc2VkIGluZGV4IGludG8gdGhlIEZXIHZlZnVzZSBidWZmZXI7IHNvdXJjZV9tb2RlXG4rICogc2VsZWN0cyB0aGUgVkVGVVNFIHJlZ2lvbi4gRXhwb3NlZCBmb3IgdGhlIGRlYnVnZnMgXCJ2ZWZ1c2VcIiBub2RlLlxuKyAqL1xuK2ludCBtdDc5MjVfbWN1X3JlYWRfdmVmdXNlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHUxNiBvZmZzZXQsIHUxNiBjb3VudCxcbitcdFx0XHQgICB1OCAqb3V0KVxuK3tcbitcdHN0cnVjdCB7XG4rXHRcdHU4IHJzdls0XTtcbitcbitcdFx0X19sZTE2IHRhZztcbitcdFx0X19sZTE2IGxlbjtcbitcbitcdFx0dTggc291cmNlX21vZGU7XG4rXHRcdHU4IGNvbnRlbnRfZm9ybWF0O1xuK1x0XHRfX2xlMTYgb2Zmc2V0O1xuK1x0XHRfX2xlMTYgY291bnQ7XG4rXHRcdF9fbGUxNiByc3YxO1xuK1x0fSBfX3BhY2tlZCByZXEgPSB7XG4rXHRcdC50YWcgPSBjcHVfdG9fbGUxNihVTklfRUZVU0VfQlVGRkVSX1JEKSxcbitcdFx0LmxlbiA9IGNwdV90b19sZTE2KHNpemVvZihyZXEpIC0gc2l6ZW9mKHJlcS5yc3YpKSxcbitcdFx0LnNvdXJjZV9tb2RlID0gVU5JX0VGVVNFX1NPVVJDRV9WRUZVU0UsXG4rXHRcdC5vZmZzZXQgPSBjcHVfdG9fbGUxNihvZmZzZXQpLFxuK1x0XHQuY291bnQgPSBjcHVfdG9fbGUxNihjb3VudCksXG4rXHR9O1xuK1x0c3RydWN0IHtcbitcdFx0dTggcnN2WzRdO1xuK1xuK1x0XHRfX2xlMTYgdGFnO1xuK1x0XHRfX2xlMTYgbGVuO1xuK1xuK1x0XHR1OCBzb3VyY2VfbW9kZTtcbitcdFx0dTggY29udGVudF9mb3JtYXQ7XG4rXHRcdF9fbGUxNiBvZmZzZXQ7XG4rXHRcdF9fbGUxNiBjb3VudDtcbitcdFx0dTggcnN2MVsyXTtcbitcdFx0dTggZGF0YVtdO1xuK1x0fSBfX3BhY2tlZCAqIHJlcztcbitcdHN0cnVjdCBza19idWZmICpza2I7XG4rXHRpbnQgcmV0O1xuK1xuK1x0cmV0ID0gbXQ3Nl9tY3Vfc2VuZF9hbmRfZ2V0X21zZyhcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgTUNVX1dNX1VOSV9DTURfUVVFUlkoRUZVU0VfQ1RSTCksXG4rXHRcdFx0XHRcdFx1MDAyNnJlcSwgc2l6ZW9mKHJlcSksIHRydWUsIFx1MDAyNnNrYik7XG4rXHRpZiAocmV0KVxuK1x0XHRyZXR1cm4gcmV0O1xuK1xuK1x0cmVzID0gKHZvaWQgKilza2ItXHUwMDNlZGF0YTtcbitcdGlmIChza2ItXHUwMDNlbGVuIFx1MDAzYyBzaXplb2YoKnJlcykgKyBjb3VudCkge1xuK1x0XHRkZXZfa2ZyZWVfc2tiKHNrYik7XG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1x0fVxuK1xuK1x0bWVtY3B5KG91dCwgcmVzLVx1MDAzZWRhdGEsIGNvdW50KTtcbitcdGRldl9rZnJlZV9za2Ioc2tiKTtcbitcbitcdHJldHVybiAwO1xuK31cbitcbitzdGF0aWMgaW50XG4rbXQ3OTI1X2xvYWRfdmVmdXNlX2Zyb21fZncoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgY29uc3QgY2hhciAqZndfbmFtZSlcbit7XG4rXHRjb25zdCBzdHJ1Y3QgbXQ3Nl9jb25uYWMyX2Z3X3RyYWlsZXIgKmhkcjtcbitcdGNvbnN0IHN0cnVjdCBtdDc2X2Nvbm5hYzJfZndfcmVnaW9uICpyZWdpb247XG4rXHRzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYgPSBcdTAwMjZkZXYtXHUwMDNlbXQ3NjtcbitcdGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZncgPSBOVUxMO1xuK1x0Y29uc3QgdTggKnZlZnVzZV9iYXNlID0gTlVMTDtcbitcdHUzMiBvZmZzZXQgPSAwLCBsZW4gPSAwLCBwYXlsb2FkO1xuK1x0aW50IGksIHRvdGFsX3BhZ2VzLCByZXQgPSAwO1xuK1xuK1x0aWYgKCFkZXYtXHUwMDNldmVmdXNlX2NhcC5lbmFibGVkKVxuK1x0XHRyZXR1cm4gMDtcbitcbitcdC8qIHJlY29tcHV0ZWQgb24gZXZlcnkgRlcgbG9hZDsgc2V0IHRydWUgb25seSBvbmNlIGEgdmVmdXNlIHJlZ2lvbiBpc1xuK1x0ICogZm91bmQgaW4gdGhlIGltYWdlIGJlbG93ICh0aGUgZGVidWdmcyBub2RlIGlzIGdhdGVkIG9uIHRoaXMpLlxuK1x0ICovXG4rXHRkZXYtXHUwMDNldmVmdXNlX2NhcC5wcmVzZW50ID0gZmFsc2U7XG4rXG4rXHRyZXQgPSByZXF1ZXN0X2Zpcm13YXJlKFx1MDAyNmZ3LCBmd19uYW1lLCBtZGV2LVx1MDAzZWRldik7XG4rXHRpZiAocmV0KSB7XG4rXHRcdGRldl93YXJuKG1kZXYtXHUwMDNlZGV2LFxuK1x0XHRcdCBcInZlZnVzZTogZmlybXdhcmUgJXMgbm90IGF2YWlsYWJsZSAoJWQpLCBza2lwcGluZ1xcblwiLFxuK1x0XHRcdCBmd19uYW1lLCByZXQpO1xuK1x0XHRyZXQgPSAwO1xuK1x0XHRnb3RvIG91dDtcbitcdH1cbitcbitcdGlmICghZncgfHwgIWZ3LVx1MDAzZWRhdGEgfHwgZnctXHUwMDNlc2l6ZSBcdTAwM2Mgc2l6ZW9mKCpoZHIpKSB7XG4rXHRcdGRldl93YXJuKG1kZXYtXHUwMDNlZGV2LCBcInZlZnVzZTogaW52YWxpZCBmaXJtd2FyZSwgc2tpcHBpbmdcXG5cIik7XG4rXHRcdGdvdG8gb3V0O1xuK1x0fVxuK1xuK1x0aGRyID0gKGNvbnN0IHZvaWQgKikoZnctXHUwMDNlZGF0YSArIGZ3LVx1MDAzZXNpemUgLSBzaXplb2YoKmhkcikpO1xuK1xuK1x0LyogUmVnaW9uIGRlc2NyaXB0b3JzIHNpdCByaWdodCBiZWZvcmUgdGhlIHRyYWlsZXIuIE1ha2Ugc3VyZSB0aGUgd2hvbGVcbitcdCAqIGRlc2NyaXB0b3IgYXJyYXkgaXMgd2l0aGluIHRoZSBpbWFnZSBiZWZvcmUgZGVyZWZlcmVuY2luZyB0aGVtLCBzbyBhXG4rXHQgKiBjb3JydXB0IG5fcmVnaW9uIGNhbm5vdCB3YWxrIHRoZSByZWdpb24gcG9pbnRlciBiZWZvcmUgZnctXHUwMDNlZGF0YS5cbitcdCAqL1xuK1x0aWYgKGZ3LVx1MDAzZXNpemUgXHUwMDNjIHNpemVvZigqaGRyKSArIChzaXplX3QpaGRyLVx1MDAzZW5fcmVnaW9uICogc2l6ZW9mKCpyZWdpb24pKSB7XG4rXHRcdGRldl93YXJuKG1kZXYtXHUwMDNlZGV2LFxuK1x0XHRcdCBcInZlZnVzZTogZmlybXdhcmUgdG9vIHNtYWxsIGZvciAldSByZWdpb24gZGVzY3JpcHRvcnMsIHNraXBwaW5nXFxuXCIsXG4rXHRcdFx0IGhkci1cdTAwM2VuX3JlZ2lvbik7XG4rXHRcdGdvdG8gb3V0O1xuK1x0fVxuK1xuK1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgaGRyLVx1MDAzZW5fcmVnaW9uOyBpKyspIHtcbitcdFx0cmVnaW9uID0gKGNvbnN0IHZvaWQgKikoKGNvbnN0IHU4ICopaGRyIC1cbitcdFx0XHRcdFx0KGhkci1cdTAwM2VuX3JlZ2lvbiAtIGkpICogc2l6ZW9mKCpyZWdpb24pKTtcbitcdFx0bGVuID0gbGUzMl90b19jcHUocmVnaW9uLVx1MDAzZWxlbik7XG4rXG4rXHRcdGlmIChsZW4gXHUwMDNlIGZ3LVx1MDAzZXNpemUgLSBvZmZzZXQpIHtcbitcdFx0XHRkZXZfd2FybihtZGV2LVx1MDAzZWRldiwgXCJ2ZWZ1c2U6IGludmFsaWQgZmlybXdhcmUgcmVnaW9uLCBza2lwcGluZ1xcblwiKTtcbitcdFx0XHRnb3RvIG91dDtcbitcdFx0fVxuK1xuK1x0XHRpZiAoKHJlZ2lvbi1cdTAwM2VmZWF0dXJlX3NldCBcdTAwMjYgRldfRkVBVFVSRV9OT05fREwpIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgcmVnaW9uLVx1MDAzZXR5cGUgPT0gRldfVFlQRV9FWFRFTkRfQklOX0VGVVNFKSB7XG4rXHRcdFx0dmVmdXNlX2Jhc2UgPSBmdy1cdTAwM2VkYXRhICsgb2Zmc2V0O1xuK1x0XHRcdGRldi1cdTAwM2V2ZWZ1c2VfY2FwLnByZXNlbnQgPSB0cnVlO1xuK1x0XHRcdGJyZWFrO1xuK1x0XHR9XG4rXHRcdG9mZnNldCArPSBsZW47XG4rXHR9XG4rXG4rXHRpZiAoIXZlZnVzZV9iYXNlKSB7XG4rXHRcdGRldl93YXJuKG1kZXYtXHUwMDNlZGV2LFxuK1x0XHRcdCBcIkZXX1RZUEVfRVhURU5EX0JJTl9FRlVTRSBjaHVuayBub3QgZm91bmQgaW4gRlcgaW1hZ2UsIHZpcnR1YWwgZWZ1c2Ugc2tpcHBlZFxcblwiKTtcbitcdFx0LyogdmVmdXNlX2NhcC5wcmVzZW50IHN0YXlzIGZhbHNlIC1cdTAwM2UgZGVidWdmcyBub2RlIG5vdCBleHBvc2VkIG9uIGFcbitcdFx0ICogV0Ygd2l0aG91dCBhIHZpcnR1YWwgZWZ1c2UuIHZlZnVzZV9jYXAuZW5hYmxlZCAodGhlIEZXLXJlcG9ydGVkXG4rXHRcdCAqIGNhcGFiaWxpdHkpIGlzIGxlZnQgdW50b3VjaGVkLlxuK1x0XHQgKi9cbitcdFx0Z290byBvdXQ7XG4rXHR9XG4rXG4rXHQvKiBUaGUgcGFja2VkIEZXIHJlZ2lvbiBjYXJyaWVzIHRoZSB2ZWZ1c2UgcGF5bG9hZCBwbHVzIGNvbm5hY1xuK1x0ICogcGVyLXJlZ2lvbiBmcmFtaW5nICg0LWJ5dGUgQ1JDICsgMTYtYnl0ZSBhbGlnbm1lbnQpLCBzbyByZWdpb25cbitcdCAqIGxlbmd0aCBpcyBsYXJnZXIgdGhhbiB0aGUgRlctcmVwb3J0ZWQgcGF5bG9hZC4gT25seSB0aGUgbGVhZGluZ1xuK1x0ICogdmVmdXNlX2NhcC5zaXplIGJ5dGVzIGFyZSB0aGUgYWN0dWFsIHZlZnVzZSBjb250ZW50IHRvIHB1c2guXG4rXHQgKi9cbitcdHBheWxvYWQgPSBkZXYtXHUwMDNldmVmdXNlX2NhcC5zaXplO1xuK1xuK1x0LyogdmlydHVhbCBlZnVzZSBpcyBhbiBvcHRpb25hbCBvdmVycmlkZTogaWYgaXQgY2Fubm90IGJlIGFwcGxpZWQgdGhlXG4rXHQgKiBjaGlwIHN0aWxsIHdvcmtzIG9uIGl0cyBkZWZhdWx0IGVmdXNlIHZhbHVlcywgc28gdGhlIGNoZWNrcyBiZWxvd1xuK1x0ICogb25seSB3YXJuIGFuZCBza2lwIC0gdGhleSBtdXN0IG5vdCBmYWlsIGZpcm13YXJlIGJyaW5nLXVwLlxuK1x0ICovXG4rXG4rXHQvKiBbQ2hlY2sgIzFdIHJlZ2lvbiBtdXN0IGhvbGQgYXQgbGVhc3QgdGhlIEZXLXJlcG9ydGVkIHBheWxvYWQgKi9cbitcdGlmIChsZW4gXHUwMDNjIHBheWxvYWQpIHtcbitcdFx0ZGV2X3dhcm4obWRldi1cdTAwM2VkZXYsXG4rXHRcdFx0IFwidmVmdXNlOiByZWdpb24gc2l6ZSAldSBzbWFsbGVyIHRoYW4gRlcgY2FwYWJpbGl0eSAldSwgc2tpcHBpbmdcXG5cIixcbitcdFx0XHQgbGVuLCBwYXlsb2FkKTtcbitcdFx0Z290byBvdXQ7XG4rXHR9XG4rXG4rXHR0b3RhbF9wYWdlcyA9IERJVl9ST1VORF9VUChwYXlsb2FkLCBNVDc5MjVfVkVGVVNFX1BBR0VfU0laRSk7XG4rXHRpZiAodG90YWxfcGFnZXMgXHUwMDNlIE1UNzkyNV9WRUZVU0VfTUFYX1BBR0VTKSB7XG4rXHRcdGRldl93YXJuKG1kZXYtXHUwMDNlZGV2LFxuK1x0XHRcdCBcInZlZnVzZTogcGF5bG9hZCB0b28gbGFyZ2U6ICV1IGJ5dGVzICglZCBwYWdlcyksIG1heCAlZCBwYWdlcyBzdXBwb3J0ZWQsIHNraXBwaW5nXFxuXCIsXG4rXHRcdFx0IHBheWxvYWQsIHRvdGFsX3BhZ2VzLCBNVDc5MjVfVkVGVVNFX01BWF9QQUdFUyk7XG4rXHRcdGdvdG8gb3V0O1xuK1x0fVxuK1xuK1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgdG90YWxfcGFnZXM7IGkrKykge1xuK1x0XHRyZXQgPSBtdDc5MjVfbWN1X3NlbmRfdmVmdXNlX3BhZ2UoZGV2LCB2ZWZ1c2VfYmFzZSwgcGF5bG9hZCxcbitcdFx0XHRcdFx0XHQgIGksIHRvdGFsX3BhZ2VzKTtcbitcdFx0aWYgKHJldCkge1xuK1x0XHRcdGRldl93YXJuKG1kZXYtXHUwMDNlZGV2LFxuK1x0XHRcdFx0IFwidmVmdXNlIHBhZ2UgJWQvJWQgc2VuZCBmYWlsZWQ6ICVkLCBza2lwcGluZ1xcblwiLFxuK1x0XHRcdFx0IGkgKyAxLCB0b3RhbF9wYWdlcywgcmV0KTtcbitcdFx0XHRyZXQgPSAwO1xuK1x0XHRcdGdvdG8gb3V0O1xuK1x0XHR9XG4rXHR9XG4rXG4rb3V0OlxuK1x0cmVsZWFzZV9maXJtd2FyZShmdyk7XG4rXHRyZXR1cm4gcmV0O1xuK31cbitcbiBzdGF0aWMgaW50IG10NzkyNV9sb2FkX2NsYyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBjb25zdCBjaGFyICpmd19uYW1lKVxuIHtcbiBcdGNvbnN0IHN0cnVjdCBtdDc2X2Nvbm5hYzJfZndfdHJhaWxlciAqaGRyO1xuQEAgLTExMjYsNiArMTMzNCwxNyBAQCBtdDc5MjVfbWN1X2dldF9uaWNfY2FwYWJpbGl0eShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuIFx0XHRjYXNlIE1UX05JQ19DQVBfRU1MX0NBUDpcbiBcdFx0XHRtdDc5MjVfbWN1X3BhcnNlX2VtbF9jYXAoZGV2LCB0bHYtXHUwMDNlZGF0YSk7XG4gXHRcdFx0YnJlYWs7XG4rXHRcdGNhc2UgTVRfTklDX0NBUF9WRUZVU0VfSU5GTzoge1xuK1x0XHRcdHN0cnVjdCBtdDc5MjVfdmVmdXNlX2NhcCAqY2FwO1xuK1xuK1x0XHRcdGlmIChsZW4gXHUwMDNjIHNpemVvZigqdGx2KSArIHNpemVvZigqY2FwKSlcbitcdFx0XHRcdGJyZWFrO1xuK1xuK1x0XHRcdGNhcCA9IChzdHJ1Y3QgbXQ3OTI1X3ZlZnVzZV9jYXAgKil0bHYtXHUwMDNlZGF0YTtcbitcdFx0XHRkZXYtXHUwMDNldmVmdXNlX2NhcC5lbmFibGVkICAgPSBjYXAtXHUwMDNlZW5hYmxlZDtcbitcdFx0XHRkZXYtXHUwMDNldmVmdXNlX2NhcC5zaXplICAgICAgPSBsZTE2X3RvX2NwdShjYXAtXHUwMDNlc2l6ZSk7XG4rXHRcdFx0YnJlYWs7XG4rXHRcdH1cbiBcdFx0ZGVmYXVsdDpcbiBcdFx0XHRicmVhaztcbiBcdFx0fVxuQEAgLTExOTksNiArMTQxOCwxMyBAQCBpbnQgbXQ3OTI1X3J1bl9maXJtd2FyZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuIFx0aWYgKGVycilcbiBcdFx0cmV0dXJuIGVycjtcbiBcbitcdC8qIFZpcnR1YWwgZWZ1c2UgaXMgYmVzdC1lZmZvcnQgYW5kIGN1cnJlbnRseSBuZXZlciBmYWlscyBicmluZy11cCwgYnV0XG4rXHQgKiBrZWVwIHRoZSBlcnJvciBwcm9wYWdhdGlvbiBmb3IgYSBwb3NzaWJsZSBmdXR1cmUgZmF0YWwgdmVmdXNlIGVycm9yLlxuK1x0ICovXG4rXHRlcnIgPSBtdDc5MjVfbG9hZF92ZWZ1c2VfZnJvbV9mdyhkZXYsIG10NzkyeF9yYW1fbmFtZShkZXYpKTtcbitcdGlmIChlcnIpXG4rXHRcdHJldHVybiBlcnI7XG4rXG4gXHRlcnIgPSBtdDc5MjVfbG9hZF9jbGMoZGV2LCBtdDc5MnhfcmFtX25hbWUoZGV2KSk7XG4gXHRpZiAoZXJyKVxuIFx0XHRyZXR1cm4gZXJyO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmhcbmluZGV4IDExZjllYWMxM2ZmYzYuLmEwZWIzMGQyNTcwZGQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmhcbkBAIC0xMzcsNiArMTM3LDQxIEBAIGVudW0ge1xuIFx0VU5JX0VGVVNFX0JVRkZFUl9SRCxcbiB9O1xuIFxuKy8qIHBhZ2Ugc2l6ZSBhbmQgY29udGVudF9mb3JtYXQgbGF5b3V0IGZvbGxvdyB0aGUgRlcgYnVmZmVyLW1vZGUgQUJJICovXG4rI2RlZmluZSBNVDc5MjVfVkVGVVNFX1BBR0VfU0laRVx0XHQxMDI0XHQvKiBGVyBCVUZGRVJfQklOX1BBR0VfU0laRSAoMHg0MDApICovXG4rI2RlZmluZSBNVDc5MjVfVkVGVVNFX01BWF9QQUdFU1x0XHQ3XHQvKiBjb250ZW50X2Zvcm1hdCBwYWdlIGZpZWxkcyBhcmUgMy1iaXQgKi9cbitcbisjZGVmaW5lIE1UNzkyNV9WRUZVU0VfVE9UQUxfUEFHRVx0R0VOTUFTSyg3LCA1KVx0LyogRlcgQlVGRkVSX0JJTl9UT1RBTF9QQUdFICovXG4rI2RlZmluZSBNVDc5MjVfVkVGVVNFX1BBR0VfSU5ERVhcdEdFTk1BU0soNCwgMilcdC8qIEZXIEJVRkZFUl9CSU5fUEFHRV9JTkRFWCAqL1xuK1xuKy8qIGJ1ZmZlciBtb2RlIGNvbnRlbnQgc291cmNlLCBhbGlnbnMgd2l0aCBGVyBCVUZGRVJfU09VUkNFX01PREVfSU5GT18qICovXG4rZW51bSB7XG4rXHRVTklfRUZVU0VfU09VUkNFX0VGVVNFID0gMCxcbitcdFVOSV9FRlVTRV9TT1VSQ0VfRUVQUk9NID0gMSxcbitcdFVOSV9FRlVTRV9TT1VSQ0VfVkVGVVNFID0gMixcbit9O1xuK1xuK3N0cnVjdCBtdDc5MjVfdmVmdXNlX2NhcCB7XG4rXHR1OCB2ZXJzaW9uO1xuK1x0dTggZW5hYmxlZDtcbitcdF9fbGUxNiBzaXplO1xuK1x0X19sZTMyIGhhc2hfYWRkcjtcbit9IF9fcGFja2VkO1xuK1xuK3N0cnVjdCBtdDc5MjVfdmVmdXNlX3BhZ2VfY21kIHtcbitcdHU4IHJzdls0XTtcdFx0LyogVU5JX0NNRF9FRlVTRV9DT05UUk9MIGhlYWRlciBiZWZvcmUgVExWICovXG4rXG4rXHRfX2xlMTYgdGFnO1x0XHQvKiBVTklfRUZVU0VfQlVGRkVSX01PREUgKi9cbitcdF9fbGUxNiBsZW47XG4rXHR1OCBzb3VyY2VfbW9kZTtcdFx0LyogVU5JX0VGVVNFX1NPVVJDRV9WRUZVU0UgKi9cbitcdHU4IGNvbnRlbnRfZm9ybWF0O1x0LyogWzc6NV09dG90YWxfcGFnZXMgWzQ6Ml09cGFnZV9pZHggKi9cbitcdF9fbGUxNiBjb3VudDtcdFx0LyogdmFsaWQgYnl0ZXMgaW4gdGhpcyBwYWdlICovXG4rXHR1OCBiaW5fY29udGVudFtNVDc5MjVfVkVGVVNFX1BBR0VfU0laRV07XG4rfSBfX3BhY2tlZDtcbitcbitpbnQgbXQ3OTI1X21jdV9yZWFkX3ZlZnVzZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1MTYgb2Zmc2V0LCB1MTYgY291bnQsXG4rXHRcdFx0ICAgdTggKm91dCk7XG4rXG4gZW51bSB7XG4gXHRVTklfQ01EX0FDQ0VTU19SRUdfQkFTSUMgPSAweDAsXG4gXHRVTklfQ01EX0FDQ0VTU19SRl9SRUdfQkFTSUMsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmhcbmluZGV4IDllZmMyNTFjYjc0NWYuLjcwYTc0ZTA3MWIxN2IgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oXG5AQCAtMzQyLDYgKzM0MiwxMiBAQCBzdHJ1Y3QgbXQ3OTJ4X2RldiB7XG4gXHRzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqbmFuX3ZpZjtcbiBcdGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfaWZhY2VfY29tYmluYXRpb24gKmlmYWNlX2NvbWJpbmF0aW9ucztcbiBcdGludCBuX2lmYWNlX2NvbWJpbmF0aW9ucztcbitcbitcdHN0cnVjdCB7XG4rXHRcdGJvb2wgZW5hYmxlZDtcdC8qIEZXIHJlcG9ydHMgdmVmdXNlIGNhcGFiaWxpdHkgKHVuY29uZGl0aW9uYWwpICovXG4rXHRcdGJvb2wgcHJlc2VudDtcdC8qIGEgdmVmdXNlIHJlZ2lvbiB3YXMgZm91bmQgaW4gdGhlIEZXIGltYWdlICovXG4rXHRcdHUxNiBzaXplO1xuK1x0fSB2ZWZ1c2VfY2FwO1xuIH07XG4gXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgbXQ3OTJ4X2Jzc19jb25mICpcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA5OjE3OjMyLjY3MDc1MjM3MloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg4MjgzMTA3MDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQXNzZXNzaW5nIHRoZSBGdXp6aW5nIFBvdGVudGlhbCBvZiBhIEtlcm5lbCBQYXRjaCoqXG5cbk9rYXksIHNvIHdlIGhhdmUgdGhpcyBwYXRjaCwgcmlnaHQ/IEl0J3MgYXBwbGllZCB0byB0aGUgTGludXgga2VybmVsIGFuZCBzcGVjaWZpY2FsbHkgdHdlYWtzIHRoZSBgbXQ3NmAgd2lyZWxlc3MgZHJpdmVyLCB0YXJnZXRpbmcgdGhlIE1lZGlhdGVrIGBtdDc5MjVgIGhhcmR3YXJlLiBUaGUgcGF0Y2gncyBjb3JlIGZ1bmN0aW9uIGlzIGFkZGluZyBzdXBwb3J0IGZvciBcInZpcnR1YWwgZWZ1c2VcIiDigJMgYHZlZnVzZWAg4oCTIHRvIGJlIGxvYWRlZCBmcm9tIHRoZSBmaXJtd2FyZS4gSXQgYWxzbyBwcm92aWRlcyBhIGRlYnVnZnMgaW50ZXJmYWNlIGZvciByZWFkaW5nIHRoaXMgdmVmdXNlIGRhdGEuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcImNhbiB3ZSBhY3R1YWxseSBnZXQgdG8gdGhpcyBjb2RlLCBhbmQgaXMgaXQgZXZlbiB3b3J0aCBmdXp6aW5nP1wiXG5cblRoZSBkcml2ZXIgaXRzZWxmIGlzIGBtdDc2YCwgbW9yZSBwcmVjaXNlbHkgYG10NzkyNWAsIHNvIEknbGwgbmVlZCB0byBmb2N1cyBvbiBjb2RlIHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvYC4gSSBjYW4gc2VlIGZyb20gdGhlIHBhdGNoIHRoYXQgYG10NzkyNV92ZWZ1c2VfcmVhZGAgaGFzIGJlZW4gYWRkZWQgaW4gYGRlYnVnZnMuY2AsIGV4cG9zZWQgdmlhIGRlYnVnZnMsIGFuZCBgbXQ3OTI1X2xvYWRfdmVmdXNlX2Zyb21fZndgIGhhcyBiZWVuIGFkZGVkIGluIGBtY3UuY2AsIGNhbGxlZCBmcm9tIGBtdDc5MjVfcnVuX2Zpcm13YXJlYC4gSXQgbG9va3MgbGlrZSBgbXQ3OTI1X3J1bl9maXJtd2FyZWAgaXMgdHJpZ2dlcmVkIGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24uXG5cblNpbmNlIHRoaXMgaXMgYSB3aXJlbGVzcyBkcml2ZXIsIG15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gcmVhY2ggZm9yIGBtYWM4MDIxMV9od3NpbWAuIEJ1dCB3YWl0LCB0aGF0J3MganVzdCBhIHNvZnR3YXJlIHNpbXVsYXRvciwgaXQgZG9lc24ndCByZXByZXNlbnQgTWVkaWF0ZWsgaGFyZHdhcmUsIHNvIHRoYXQncyBub3QgZ29pbmcgdG8gd29yay4gQ2FuIHdlIHNpbXVsYXRlIGBtdDc5MjVgIHNvbWVob3c/IFdpcmVsZXNzIGRyaXZlcnMgYXJlIHVzdWFsbHkgaGFyZHdhcmUtZGVwZW5kZW50LCBuZWVkaW5nIFBDSWUsIFVTQiwgb3IgU0RJTy4gTm93LCB0aGUgcXVlc3Rpb24gaXMsIGNhbiB3ZSBlbXVsYXRlIHRoZSBoYXJkd2FyZSBpbiBvdXIgZnV6emluZyBzZXR1cD8gXG5cblRoZW4gaXQgaGl0cyBtZSwgd2Ugc2hvdWxkIHNlZSB3aGF0IGJ1cyB0eXBlcyBgbXQ3OTI1YCBzdXBwb3J0cy4gQW5kIHdlIGFyZSBpbiBsdWNrISBMb29rcyBsaWtlIHRoZSBgbXQ3OTI1YCBkcml2ZXIgc3VwcG9ydHMgYm90aCBQQ0llIGFuZCBVU0IuIFN5emthbGxlciBoYXMgYSBVU0IgZnV6emVyLCB3aGljaCB1c2VzIGEgZHVtbXkgaG9zdCBjb250cm9sbGVyIChoY2QpIGFuZCByYXcgZ2FkZ2V0IG1vZGUsIHNvIGlmIGl0J3MgYSBVU0IgZHJpdmVyLCB3ZSdyZSBpbiBidXNpbmVzcyEgVGhhdOKAmXMgcHJvbWlzaW5nLCBsZXQncyBzZWUgaWYgdGhlIGBtdDc5MjVgIGRyaXZlciBoYXMgYSBVU0IgaW1wbGVtZW50YXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjczNjQsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MTMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwOToxNzo0MS40OTkwNjQ2MTdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ5NjAwNjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTI1Lip1c2JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlPTk9bXQ3OTI1ZS15IDo9IHBjaS5vIHBjaV9tYWMubyBwY2lfbWN1Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZToxMDptdDc5MjV1LXkgOj0gdXNiLm9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTE2MjA9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNjIxOm10NzkyNV91c2Jfc2Rpb193cml0ZV90eHdpKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTYyMi1cXHRcXHRcXHQgICBlbnVtIG10NzZfdHhxX2lkIHFpZCwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE2MzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTYzMzppbnQgbXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqdHh3aV9wdHIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTYzNC1cXHRcXHRcXHRcXHQgICBlbnVtIG10NzZfdHhxX2lkIHFpZCwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE2NjMtXFx0cGt0aWQgPSBtdDc2X3R4X3N0YXR1c19za2JfYWRkKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIHdjaWQsIHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTY2NDpcXHRtdDc5MjVfdXNiX3NkaW9fd3JpdGVfdHh3aShkZXYsIHdjaWQsIHFpZCwgc3RhLCBrZXksIHBrdGlkLCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE2NjUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNjc3LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNjc4OkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTY3OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNjgwOnZvaWQgbXQ3OTI1X3VzYl9zZGlvX3R4X2NvbXBsZXRlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTY4MS1cXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBtdDc2X3F1ZXVlX2VudHJ5ICplKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTY5OC19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTY5OTpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNzAwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE3MDE6Ym9vbCBtdDc5MjVfdXNiX3NkaW9fdHhfc3RhdHVzX2RhdGEoc3RydWN0IG10NzZfZGV2ICptZGV2LCB1OCAqdXBkYXRlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE3MDIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTcxMC19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTcxMTpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfdXNiX3NkaW9fdHhfc3RhdHVzX2RhdGEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE3MTItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaD0zNjk9aW50IG10NzkyNV9tY3VfZ2V0X3RlbXBlcmF0dXJlKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTM3MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaDozNzE6aW50IG10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTM3Mi1cXHRcXHRcXHRcXHQgICBlbnVtIG10NzZfdHhxX2lkIHFpZCwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTM3NC1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgbXQ3Nl90eF9pbmZvICp0eF9pbmZvKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaDozNzU6dm9pZCBtdDc5MjVfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaC0zNzYtXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgbXQ3Nl9xdWV1ZV9lbnRyeSAqZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg6Mzc3OmJvb2wgbXQ3OTI1X3VzYl9zZGlvX3R4X3N0YXR1c19kYXRhKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdTggKnVwZGF0ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMzc4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM9ODA9c3RhdGljIGludCBtdDc5MjV1X21hY19yZXNldChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMTQ5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjE1MDpzdGF0aWMgaW50IG10NzkyNXVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE1MS1cXHRcXHRcXHQgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMTU5LVxcdFxcdFxcdFxcdFNVUlZFWV9JTkZPX1RJTUVfQlNTX1JYLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjE2MDpcXHRcXHQudHhfcHJlcGFyZV9za2IgPSBtdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6MTYxOlxcdFxcdC50eF9jb21wbGV0ZV9za2IgPSBtdDc5MjVfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjE2MjpcXHRcXHQudHhfc3RhdHVzX2RhdGEgPSBtdDc5MjVfdXNiX3NkaW9fdHhfc3RhdHVzX2RhdGEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMTYzLVxcdFxcdC5yeF9za2IgPSBtdDc5MjVfcXVldWVfcnhfc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMjY5LSNpZmRlZiBDT05GSUdfUE1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzoyNzA6c3RhdGljIGludCBtdDc5MjV1X3N1c3BlbmQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIHBtX21lc3NhZ2VfdCBzdGF0ZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0yNzEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMzAyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjMwMzpzdGF0aWMgaW50IG10NzkyNXVfcmVzdW1lKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTMwNC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA5OjE3OjQxLjU1NDAyNzI1M1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE0ODY3MzMwNDM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aGlzOlxuXG4qKkFuYWx5emluZyB0aGUgbXQ3OTI1IFVTQiBEcml2ZXIgUGF0Y2gqKlxuXG5BbHJpZ2h0LCBzbyBpdCBsb29rcyBsaWtlIHRoZSBgbXQ3OTI1YCBoYXMgYSBVU0IgZHJpdmVyLCB3aGljaCBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIFRoZSBwYXRjaCBJJ20gZXhhbWluaW5nIGZvY3VzZXMgb24gbW9kaWZ5aW5nIGBtdDc5MjVfcnVuX2Zpcm13YXJlYC4gU3BlY2lmaWNhbGx5LCBpdCBpbnRyb2R1Y2VzIGEgY2FsbCB0byBgbXQ3OTI1X2xvYWRfdmVmdXNlX2Zyb21fZndgIHdpdGhpbiB0aGF0IGZ1bmN0aW9uLiBUaGlzIGlzIGludGVyZXN0aW5nLCBhcyB0aGF0IHN1Z2dlc3RzIHRoZSBWRSBmdXNlIGxvYWRpbmcgcHJvY2VzcyBpcyBub3cgaW50ZWdyYXRlZCBkaXJlY3RseSBpbnRvIHRoZSBmaXJtd2FyZSBydW50aW1lIHByb2Nlc3MuIFRoaW5raW5nIGFib3V0IHRoZSBjb250ZXh0LCB0aGlzIGNhbGwgb2NjdXJzIGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24uIE5vdywgc2luY2UgdGhpcyBpcyBhIFVTQiBkZXZpY2UsIGRldmljZSBpbml0aWFsaXphdGlvbiBpcyBuYXR1cmFsbHkgZ29pbmcgdG8gYmUgdHJpZ2dlcmVkIHdoZW4gdGhlIFVTQiBkZXZpY2UgaXMgcHJvYmVkLiBTbywgdGhlIGNvcmUgcXVlc3Rpb24gaXM6IGlzIGBtdDc5MjVfcnVuX2Zpcm13YXJlYCBhY3R1YWxseSBjYWxsZWQgZHVyaW5nIHRoYXQgcHJvYmUgcHJvY2Vzcz8gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IHRoaXMgY2FsbCBjaGFpbiBpcyBoYXBwZW5pbmcgYXMgZXhwZWN0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNTA4LCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDk6MTc6NTYuNDIxMzU5NDE3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMDM3MDAyMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5MjVfcnVuX2Zpcm13YXJlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYz0xNDA3PUVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV9tY3Vfc2V0X3RoZXJtYWxfcHJvdGVjdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtMTQwOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYzoxNDA5OmludCBtdDc5MjVfcnVuX2Zpcm13YXJlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtMTQxMC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0xNDM0LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYzoxNDM1OkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV9ydW5fZmlybXdhcmUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTE0MzYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaD0yNzk9dm9pZCBtdDc5MjVfdW5yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg6MjgwOmludCBtdDc5MjVfcnVuX2Zpcm13YXJlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTI4MS1pbnQgbXQ3OTI1X21jdV9zZXRfYnNzX3BtKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWFjLmM9NzE9aW50IG10NzkyNWVfbWFjX3Jlc2V0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWFjLmMtMTMzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tYWMuYzoxMzQ6XFx0ZXJyID0gbXQ3OTI1X3J1bl9maXJtd2FyZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tYWMuYy0xMzUtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tY3UuYz0yNz1pbnQgbXQ3OTI1ZV9tY3VfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21jdS5jLTQ3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tY3UuYzo0ODpcXHRlcnIgPSBtdDc5MjVfcnVuX2Zpcm13YXJlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21jdS5jLTQ5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM9NTY9c3RhdGljIGludCBtdDc5MjV1X21jdV9pbml0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy02OS1cXHRtdDc2X3NldChkZXYsIE1UX1VETUFfVFhfUVNFTCwgTVRfRldfRExfRU4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjcwOlxcdHJldCA9IG10NzkyNV9ydW5fZmlybXdhcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy03MS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM9ODA9c3RhdGljIGludCBtdDc5MjV1X21hY19yZXNldChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMTIwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjEyMTpcXHRlcnIgPSBtdDc5MjVfcnVuX2Zpcm13YXJlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMTIyLVxcdGlmIChlcnIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA5OjE3OjU2LjUyMTczMjE1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzYwNjg4NzAxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgYG10NzkyNWAgRmlybXdhcmUgTG9hZGluZyBhbmQgVVNCIFJlYWNoYWJpbGl0eSoqXG5cbk9rYXksIHNvIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEkgc2VlLCBgbXQ3OTI1X3J1bl9maXJtd2FyZWAgaXMgYSBrZXkgZnVuY3Rpb24uIEl0J3MgY2FsbGVkIGRpcmVjdGx5IGZyb20gYG10NzkyNXVfbWN1X2luaXRgIGFuZCBgbXQ3OTI1dV9tYWNfcmVzZXRgIHdpdGhpbiBgdXNiLmNgLiBUaGlzIGlzIHNpZ25pZmljYW50IGJlY2F1c2UgdGhhdCBtZWFucyB3ZSBoYXZlIGEgZGlyZWN0IHBhdGggdG8gdGhpcyBjb2RlIHZpYSBVU0IgaW50ZXJhY3Rpb24sIG1ha2luZyBpdCBhIHZpYWJsZSB0YXJnZXQgZm9yIFVTQiBmdXp6aW5nIGNhbXBhaWducy5cblxuVGhlIHBhdGNoIGludHJvZHVjZXMgYG10NzkyNV9sb2FkX3ZlZnVzZV9mcm9tX2Z3YCwgd2hpY2ggaXMgdGhlIGNydWNpYWwgcG9pbnQgaGVyZSBiZWNhdXNlIGl0IGRlYWxzIHdpdGggcGFyc2luZyBmaXJtd2FyZSBkYXRhLiBJdCBhbHNvIGFkZHMgYSBkZWJ1Z2ZzIGZpbGUgbmFtZWQgYHZlZnVzZWAsIHdoaWNoLCB1cG9uIHJlYWRpbmcsIHRyaWdnZXJzIGBtdDc5MjVfdmVmdXNlX3JlYWRgLiBUaGUgY3JlYXRpb24gb2YgdGhpcyBkZWJ1Z2ZzIGVudHJ5IGlzIGNvbmRpdGlvbmFsOyBpdCBoYXBwZW5zIHdpdGhpbiBgbXQ3OTI1X2luaXRfZGVidWdmc2AgYnV0ICpvbmx5KiBpZiBgZGV2LVx1MDAzZXZlZnVzZV9jYXAucHJlc2VudGAgaXMgdHJ1ZSwgd2hpY2ggaW4gdHVybiBtZWFucyB0aGUgZmlybXdhcmUgbXVzdCBjb250YWluIHRoZSBgRldfVFlQRV9FWFRFTkRfQklOX0VGVVNFYCBmbGFnLlxuXG5Ob3csIGhlcmUncyB3aGVyZSBpdCBnZXRzIGludGVyZXN0aW5nLiBJJ20gdGhpbmtpbmcsIFwic3l6a2FsbGVyXCIuIEl0IGNhbiB1c2UgYHJlcXVlc3RfZmlybXdhcmVgIGludGVyY2VwdGlvbiB0byBwcm92aWRlIGN1c3RvbSBmaXJtd2FyZSBpZiBpdCBrbm93cyB0aGUgZmlybXdhcmUgbmFtZSwgcmlnaHQ/IEV2ZW4gaWYgc3l6a2FsbGVyICpkb2Vzbid0KiBrbm93IHRoZSBmaXJtd2FyZSBuYW1lIGluaXRpYWxseSwgdGhlIHBhcnNpbmcgY29kZSB3aXRoaW4gYG10NzkyNV9sb2FkX3ZlZnVzZV9mcm9tX2Z3YCB3aWxsIHN0aWxsIGJlIGV4ZWN1dGVkLiBXZSBhbHJlYWR5IGtub3cgdGhhdCBpdCBleGVjdXRlcyBgcmVxdWVzdF9maXJtd2FyZShcdTAwMjZmdywgZndfbmFtZSwgbWRldi1cdTAwM2VkZXYpO2AuIElmIHRoZSBmaXJtd2FyZSBpcyBub3QgaW1tZWRpYXRlbHkgYXZhaWxhYmxlLCBpdCBzaW1wbHkgc2tpcHMgdGhhdCBwYXJ0LiBJZiBpdCAqaXMqIGF2YWlsYWJsZSwgaXQgcGFyc2VzIGl0LlxuXG5TbywgdGhlIHF1ZXN0aW9uIGlzLCBjYW4gc3l6a2FsbGVyIGZ1enogdGhpcyBsb2FkaW5nIHByb2Nlc3M/IFRoZSBhbnN3ZXIgaXMgYSBjbGVhciBcInllcy5cIiBJdCBjYW4gZGVmaW5pdGVseSBmdXp6IHRoZSBmaXJtd2FyZSBsb2FkaW5nIGlmIHRoZSBmaXJtd2FyZSBuYW1lIGlzIGtub3duIG9yIGR5bmFtaWNhbGx5IHJlcXVlc3RlZC4gV2Ugc2hvdWxkIGJlIGFibGUgdG8gbGV2ZXJhZ2Ugc3l6a2FsbGVyJ3MgZmlybXdhcmUgbG9hZGluZyBjYXBhYmlsaXRpZXMsIGxpa2VseSB1c2luZyBgc3l6X21vdW50X2ltYWdlYCBvciBhIHNpbWlsYXIgY29uc3RydWN0LCBidXQgYWRhcHRlZCBmb3IgZmlybXdhcmUgd2hlcmUgaXQgaW50ZXJjZXB0cyBgcmVxdWVzdF9maXJtd2FyZWAuXG5cbk5vdywgdGhlIG5leHQgY29uc2lkZXJhdGlvbjogYXJlIHRoZXJlIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cz8gV2UgbmVlZCB0byBlbnN1cmUgZWl0aGVyIGBDT05GSUdfTVQ3OTI1RWAgb3IgYENPTkZJR19NVDc5MjVVYCBpcyBlbmFibGVkLiBMZXQncyBkaWcgaW50byB0aGUgYG10NzkyNWAgS2NvbmZpZyBmaWxlIHRvIGNvbmZpcm0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExOTgzLCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzkzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA5OjE4OjA0LjEyODYyMjgzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MjcxMDE4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTVQ3OTI1XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZzoyOmNvbmZpZyBNVDc5MjVfQ09NTU9OXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0zLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZzo3OmNvbmZpZyBNVDc5MjVFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy04LVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MjVFIChQQ0llKSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0xOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjE5OmNvbmZpZyBNVDc5MjVVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0yMC1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3OTI1VSAoVVNCKSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwOToxODowNC41ODEzMzcyMzhaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5NDcxOTQ1MjAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhlIGRlcGVuZGVuY2llcyBvZiBgTVQ3OTI1VWA6XG5cbioqQ2hlY2tpbmcgdGhlIERlcGVuZGVuY2llcyBvZiBNVDc5MjVVKipcblxuT2theSwgc28gd2UncmUgbG9va2luZyBhdCBgTVQ3OTI1VWAuIFRpbWUgdG8gcnVuIHRocm91Z2ggdGhlIG1lbnRhbCBjaGVja2xpc3QuIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgY29tcG9uZW50ICpkb2VzKi4gSXMgdGhpcyBhIGRyaXZlciwgYSBmaXJtd2FyZSBtb2R1bGUsIGEgc3BlY2lmaWMgaGFyZHdhcmUgYmxvY2ssIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBUaGUgbmFtZSBpdHNlbGYgc3VnZ2VzdHMgYSBNZWRpYVRlayBjaGlwc2V0LCBwb3RlbnRpYWxseSBhIFdpRmkgb3IgQmx1ZXRvb3RoIHNvbHV0aW9uLiBcIlVcIiB1c3VhbGx5IGltcGxpZXMgYSBVU0IgaW50ZXJmYWNlLCByaWdodD8gU28gd2UncmUgbGlrZWx5IGRlYWxpbmcgd2l0aCBhIFVTQi1jb25uZWN0ZWQgd2lyZWxlc3Mgc29sdXRpb24sIHdoaWNoIGltbWVkaWF0ZWx5IG5hcnJvd3MgZG93biB0aGUgcGxheWluZyBmaWVsZC5cblxuTm93LCB0aGUgZGVwZW5kZW5jeSBhbmFseXNpcyBiZWdpbnMuIFdoZXJlIGRvZXMgYE1UNzkyNVVgIHNpdCBpbiB0aGUgc3lzdGVtIGFyY2hpdGVjdHVyZT8gSXMgaXQgZGlyZWN0bHkgY29tbXVuaWNhdGluZyB3aXRoIHRoZSBrZXJuZWwncyBVU0Igc3RhY2s/IERvZXMgaXQgcmVseSBvbiBzcGVjaWZpYyBVU0IgZHJpdmVyIG1vZHVsZXM/IEFyZSB0aGVyZSBhbnkgYXNzb2NpYXRlZCBmaXJtd2FyZSBibG9icyB0aGF0IG5lZWQgdG8gYmUgbG9hZGVkPyBUaGlua2luZyBhYm91dCB0aGUgcG90ZW50aWFsIGRlcGVuZGVuY2llcywgSSBleHBlY3QgdG8gc2VlIGtlcm5lbCBtb2R1bGVzIHJlbGF0ZWQgdG8gVVNCIGRldmljZSBkcml2ZXJzIGFuZCBwb3RlbnRpYWxseSBzb21lIGZpcm13YXJlIGxvYWRpbmcgbWVjaGFuaXNtcy4gSSdsbCBuZWVkIHRvIGxvb2sgZm9yIGNhbGxzIHRvIHRoZSBzdGFuZGFyZCBVU0IgaW50ZXJmYWNlIGZ1bmN0aW9ucy5cblxuRnVydGhlcm1vcmUsIEkgaGF2ZSB0byBjb25zaWRlciB0aGUgcG90ZW50aWFsIGZvciBkZXBlbmRlbmNpZXMgb24gc3BlY2lmaWMgbmV0d29yayBjb25maWd1cmF0aW9uIHRvb2xzIG9yIGxpYnJhcmllcy4gRG9lcyBgTVQ3OTI1VWAgaW50ZXJmYWNlIHdpdGggYGl3bHdpZmlgLCBvciBhbm90aGVyIGNvbW1vbiBuZXR3b3JraW5nIHN0YWNrIGNvbXBvbmVudD8gQXJlIHRoZXJlIGFueSBmaXJtd2FyZSB2ZXJzaW9ucyB0aGF0IGFyZSBzdXBwb3J0ZWQgb3Iga25vd24gdG8gYmUgcmVxdWlyZWQ/IEFyZSB0aGVyZSBhbnkga25vd24gY29uZmxpY3RzIHdpdGggc3BlY2lmaWMga2VybmVsIHZlcnNpb25zIG9yIG90aGVyIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb25zPyBUaG9zZSB3b3VsZCBiZSBjcml0aWNhbC5cblxuVGhlbiB0aGVyZSBpcyB0aGUgcmVndWxhdG9yeSBhc3BlY3QuIERvZXMgYE1UNzkyNVVgIGhhdmUgYW55IGRlcGVuZGVuY2llcyBvbiByZWd1bGF0b3J5IGRhdGFiYXNlcyBvciBjb3VudHJ5IGNvZGUgc2V0dGluZ3M/IFNvbWUgd2lyZWxlc3MgZHJpdmVycyBhcmUgdmVyeSB0aWdodGx5IGNvdXBsZWQgdG8gcmVndWxhdG9yeSByZXF1aXJlbWVudHMgZm9yIGVhY2ggcmVnaW9uLlxuXG5BbHJpZ2h0LCBJJ2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIHJlbGV2YW50IHNvdXJjZSBjb2RlLCBkb2N1bWVudGF0aW9uLCBhbmQgcG90ZW50aWFsbHkgZXhpc3Rpbmcga2VybmVsIGNvbmZpZ3MuIEkgd2FudCB0byBzZWUgaG93IHRoaXMgdGhpbmcgKmludGVncmF0ZXMqIGFuZCAqaW50ZXJhY3RzKiB3aXRoIHRoZSByZXN0IG9mIHRoZSBzeXN0ZW0uIEknbGwgYmUgbG9va2luZyBhdCB0aGUgTWFrZWZpbGUsIEtjb25maWcgZmlsZXMsIGFuZCBhbnkgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uLCBsb29raW5nIGZvciBleHBsaWNpdCBkZXBlbmRlbmNpZXMgb3IgaW1wbGljaXQgcmVxdWlyZW1lbnRzLiBUaGlzIHdpbGwgYmUgdGhlIGZpcnN0IHN0ZXAgdG93YXJkcyB1bmRlcnN0YW5kaW5nIGhvdyB0byBkZWFsIHdpdGggdGhpcyBtb2R1bGUuIFRoaXMgaXMgYSBiaXQgb2YgYSBkZXRlY3RpdmUgam9iLCBidXQgaXQgaXMgaW1wb3J0YW50IHRvIGtub3cgZXZlcnl0aGluZyBhYm91dCB0aGlzIGNvbXBvbmVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMyNzIsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwOToxODoxNC4wNTMyODUyNzJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyNDgyNzI1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNVDc5MjVVXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnPTc9Y29uZmlnIE1UNzkyNUVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZzoxOTpjb25maWcgTVQ3OTI1VVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMjAtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzkyNVUgKFVTQikgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDk6MTg6MTQuMTE1NzczMzM3WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc0MjUxODUzMjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNVDc5MjUgS2NvbmZpZyoqXG5cbkFscmlnaHQsIHRpbWUgdG8gY3JhY2sgb3BlbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWdgIGZpbGUuIEknbSBhc3N1bWluZywgYXMgYWx3YXlzIHdpdGggdGhlc2UgTWVkaWF0ZWsgY29uZmlndXJhdGlvbnMsIHRoYXQgaXQncyBnb2luZyB0byBiZSBhIHdlbGwtc3RydWN0dXJlZCBzZXQgb2YgZGVwZW5kZW5jaWVzIGFuZCBmZWF0dXJlIGZsYWdzIGZvciB0aGUgTVQ3OTI1IHdpcmVsZXNzIGNoaXBzZXQuIEkgZXhwZWN0IHRvIHNlZSB0aGUgdXN1YWwgc3VzcGVjdHMg4oCTIGVuYWJsaW5nL2Rpc2FibGluZyBvZiB2YXJpb3VzIDgwMi4xMSBzdGFuZGFyZHMsIHByb2JhYmx5IHNvbWUgY29uZmlndXJhdGlvbiBmb3IgcG93ZXIgbWFuYWdlbWVudCwgZGVmaW5pdGVseSBvcHRpb25zIGZvciBkZWJ1ZyBmZWF0dXJlcywgYW5kIG9mIGNvdXJzZSwgdGhlIGV2ZXItcHJlc2VudCBjYWxpYnJhdGlvbiBhbmQgaGFyZHdhcmUtc3BlY2lmaWMgc2V0dGluZ3MuIEknbGwgYmUgbG9va2luZyB0byBzZWUgaG93IHRoZXkndmUgc3RydWN0dXJlZCB0aGUgZHJpdmVyIG9wdGlvbnMgZm9yIG11bHRpcGxlIGhhcmR3YXJlIHJldmlzaW9ucy4gR2l2ZW4gdGhlIE1UNzYncyBtb2R1bGFyIGFwcHJvYWNoLCBJIGFudGljaXBhdGUgY2xlYW4gc2VwYXJhdGlvbiBvZiBjb3JlIGZ1bmN0aW9uYWxpdHkgYW5kIHRoZSBNVDc5MjUtc3BlY2lmaWMgZ2x1ZSBjb2RlLiBJIHdpbGwgY2hlY2sgZm9yIGFueSB1bnVzdWFsLCBwbGF0Zm9ybS1zcGVjaWZpYyBjb25zdHJhaW50cyBvciBhbnl0aGluZyB0aGF0IG1pZ2h0IGltcGFjdCBvdmVyYWxsIHBlcmZvcm1hbmNlIG9yIHBvd2VyIGNvbnN1bXB0aW9uLiBMZXQncyBnZXQgdG8gaXQgYW5kIHNlZSB3aGF0IGludGVyZXN0aW5nIG9wdGltaXphdGlvbnMgdGhleSd2ZSBpbXBsZW1lbnRlZCwgb3IgYXJlYXMgd2hlcmUgdGhleSd2ZSBtYXliZSBmYWxsZW4gc2hvcnQgYW5kIEkgY2FuIHN1Z2dlc3QgaW1wcm92ZW1lbnRzLiBJJ20gaG9waW5nIGl0J3MgYSBjbGVhbiwgd2VsbC1jb21tZW50ZWQgS2NvbmZpZywgYWx3YXlzIG1ha2VzIGxpZmUgZWFzaWVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzk0NCwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA5OjE4OjIxLjU0MDk2MTM3NVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MjY1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuICAgMjpcXHRjb25maWcgTVQ3OTI1X0NPTU1PTlxcbiAgIDM6XFx0XFx0dHJpc3RhdGVcXG4gICA0OlxcdFxcdHNlbGVjdCBNVDc5MnhfTElCXFxuICAgNTpcXHRcXHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcXG4gICA2OlxcdFxcbiAgIDc6XFx0Y29uZmlnIE1UNzkyNUVcXG4gICA4OlxcdFxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MjVFIChQQ0llKSBzdXBwb3J0XFxcIlxcbiAgIDk6XFx0XFx0c2VsZWN0IE1UNzkyNV9DT01NT05cXG4gIDEwOlxcdFxcdGRlcGVuZHMgb24gTUFDODAyMTFcXG4gIDExOlxcdFxcdGRlcGVuZHMgb24gUENJXFxuICAxMjpcXHRcXHRoZWxwXFxuICAxMzpcXHRcXHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc5MjUtYmFzZWQgd2lyZWxlc3MgUENJZSBkZXZpY2VzLFxcbiAgMTQ6XFx0XFx0ICB3aGljaCBzdXBwb3J0IG9wZXJhdGlvbiBhdCA2R0h6LCA1R0h6LCBhbmQgMi40R0h6IElFRUUgODAyLjExYmVcXG4gIDE1OlxcdFxcdCAgMngyOjJTUyA0MDk2LVFBTSwgMTYwTUh6IGNoYW5uZWxzLlxcbiAgMTY6XFx0XFxuICAxNzpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXFxuICAxODpcXHRcXG4gIDE5OlxcdGNvbmZpZyBNVDc5MjVVXFxuICAyMDpcXHRcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3OTI1VSAoVVNCKSBzdXBwb3J0XFxcIlxcbiAgMjE6XFx0XFx0c2VsZWN0IE1UNzkyeF9VU0JcXG4gIDIyOlxcdFxcdHNlbGVjdCBNVDc5MjVfQ09NTU9OXFxuICAyMzpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuICAyNDpcXHRcXHRkZXBlbmRzIG9uIFVTQlxcbiAgMjU6XFx0XFx0aGVscFxcbiAgMjY6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTI1LWJhc2VkIHdpcmVsZXNzIFVTQiBkZXZpY2VzLFxcbiAgMjc6XFx0XFx0ICB3aGljaCBzdXBwb3J0IG9wZXJhdGlvbiBhdCA2R0h6LCA1R0h6LCBhbmQgMi40R0h6IElFRUUgODAyLjExYmVcXG4gIDI4OlxcdFxcdCAgMngyOjJTUyA0MDk2LVFBTSwgMTYwTUh6IGNoYW5uZWxzLlxcbiAgMjk6XFx0XFxuICAzMDpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA5OjE4OjIxLjU0MTAyNjY2NVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNjM3MTU3OTE5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgTVQ3OTI1VSBEcml2ZXIncyBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYE1UNzkyNVVgIGRyaXZlciwgd2hpY2ggaGluZ2VzIG9uIGBNQUM4MDIxMWAgYW5kIHRoZSBVU0Igc3Vic3lzdGVtLiBUaGF0IGltbWVkaWF0ZWx5IHN1Z2dlc3RzIHNvbWUgcHJvbWlzaW5nIGF2ZW51ZXMgZm9yIGZ1enppbmcuIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIGZldyBuZXcgZnVuY3Rpb25zOiBgbXQ3OTI1X2xvYWRfdmVmdXNlX2Zyb21fZndgLCBgbXQ3OTI1X21jdV9yZWFkX3ZlZnVzZWAsIGFuZCBgbXQ3OTI1X21jdV9zZW5kX3ZlZnVzZV9wYWdlYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoZXNlIGFyZSBkZWZpbml0ZWx5IHJlYWNoYWJsZSB2aWEgVVNCIGZ1enppbmcgdGVjaG5pcXVlczsgaXQncyBwcmFjdGljYWxseSBhIGdpdmVuLiBBbmQgb2YgY291cnNlLCB0aGUgZGVidWdmcyBpbnRlcmZhY2UgY29tZXMgaW50byBwbGF5IGlmIHRoZSBmaXJtd2FyZSBpbmNsdWRlcyB0aGF0IHZlZnVzZSByZWdpb24uXG5cbk5vdywgdGhlIGZpcm13YXJlIHBhcnNpbmcgd2l0aGluIGBtdDc5MjVfbG9hZF92ZWZ1c2VfZnJvbV9md2AgcmVhbGx5IGdyYWJzIG15IGF0dGVudGlvbi4gVGhlIGZhY3QgdGhhdCB0aGlzIHBhcnNpbmcgY29kZSBpcyAqcmVhY2hhYmxlIGV2ZW4gd2l0aCBtYWxmb3JtZWQgZmlybXdhcmUqLi4uIHRoYXQgc2NyZWFtcyBcImZ1enppbmcgdGFyZ2V0LlwiIFRoaXMgaXMgd2hlcmUgU3l6a2FsbGVyIHJlYWxseSBzaGluZXM6IGl0IGNhbiBmdXp6IGZpcm13YXJlIGxvYWRpbmcuIFNvLCB0aGUga2V5IGZ1bmN0aW9ucyB0byBjb25jZW50cmF0ZSBvbiBzZWVtIHRvIGJlOlxuXG4qICAgYG10NzkyNV9sb2FkX3ZlZnVzZV9mcm9tX2Z3YFxuKiAgIGBtdDc5MjVfbWN1X3JlYWRfdmVmdXNlYFxuKiAgIGBtdDc5MjVfbWN1X3NlbmRfdmVmdXNlX3BhZ2VgXG4qICAgYG10NzkyNV92ZWZ1c2VfcmVhZGBcblxuSSBzaG91bGQgY2hlY2sgaWYgYG10NzkyNV92ZWZ1c2VfcmVhZGAgaXMgc3RhdGljLiBMb29rcyBsaWtlIGl0IGlzOiBgc3RhdGljIGludCBtdDc5MjVfdmVmdXNlX3JlYWQoc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICpkYXRhKWAuIEFoLCBzdGF0aWMuLi4gaXQgbWlnaHQgYmUgaW5saW5lZCBvciBtaWdodCBub3QgaGF2ZSBhIGRpc3RpbmN0IHN5bWJvbC4gQnV0IGBtdDc5MjVfbWN1X3JlYWRfdmVmdXNlYCAqaXNuJ3QqIHN0YXRpYy4gSG9sZCBvbiwgaXNuJ3QgYG10NzkyNV9tY3VfcmVhZF92ZWZ1c2VgIGluIGBtY3UuY2AgYW5kIGV4cG9ydGVkPyBUaW1lIHRvIGNoZWNrIHRoZSBzb3VyY2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0Nzg0LCJPdXRwdXRUb2tlbnMiOjUyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzg4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDk6MTg6MzcuOTEyNjA4MTQ0WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODU5MDA5MDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTI1X21jdV9yZWFkX3ZlZnVzZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTI5MD1tdDc5MjVfdmVmdXNlX3JlYWQoc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICpkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTMxMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MzExOlxcdFxcdHJldCA9IG10NzkyNV9tY3VfcmVhZF92ZWZ1c2UoZGV2LCBvZmYsIGNodW5rLCBidWYgKyBvZmYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0zMTItXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jPTg3NT1tdDc5MjVfbWN1X3NlbmRfdmVmdXNlX3BhZ2Uoc3RydWN0IG10NzkyeF9kZXYgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTkwNy0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYzo5MDg6aW50IG10NzkyNV9tY3VfcmVhZF92ZWZ1c2Uoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTE2IG9mZnNldCwgdTE2IGNvdW50LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTkwOS1cXHRcXHRcXHQgICB1OCAqb3V0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1Lmg9MTYxPXN0cnVjdCBtdDc5MjVfdmVmdXNlX3BhZ2VfY21kIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5oLTE3MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuaDoxNzI6aW50IG10NzkyNV9tY3VfcmVhZF92ZWZ1c2Uoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTE2IG9mZnNldCwgdTE2IGNvdW50LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5oLTE3My1cXHRcXHRcXHQgICB1OCAqb3V0KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDk6MTg6MzguNTk4NTE0NTA3WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg0NTE0MjEzNzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNVDc5MjUgVkVmdXNlIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duIHN5c3RlbWF0aWNhbGx5LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgbXQ3OTI1X21jdV9yZWFkX3ZlZnVzZWAgaXNuJ3Qgc3RhdGljLCB3aGljaCBpbW1lZGlhdGVseSBmbGFncyBpdCBhcyBzb21ldGhpbmcgdG8gcGF5IGF0dGVudGlvbiB0by4gQnV0LCBgbXQ3OTI1X2xvYWRfdmVmdXNlX2Zyb21fZndgICppcyogc3RhdGljLiBUaGlzIHJhaXNlcyB0aGUgcXVlc3Rpb24gb2YgaW5saW5pbmcuIFNpbmNlIGl0J3Mgc3RhdGljLCBpdCBjb3VsZCBiZSBpbmxpbmVkIGludG8gYG10NzkyNV9ydW5fZmlybXdhcmVgLiBMZXQncyB1c2UgYG10NzkyNV9ydW5fZmlybXdhcmVgIGFzIGEgZm9jdXMgc3ltYm9sLiBBaCwgYnV0IHdhaXQsIGBtdDc5MjVfcnVuX2Zpcm13YXJlYCBpcyBpbml0IHRpbWUsIHNvIGl0IGlzIGEgZ29vZCBmb2N1cyBzeW1ib2wuIE9uIHRoZSBvdGhlciBoYW5kLCBgbXQ3OTI1X21jdV9yZWFkX3ZlZnVzZWAgaXMgYWxzbyB3b3J0aCBmb2N1c2luZyBvbi5cblxuTm93LCB3aGF0IGFib3V0IGBtdDc5MjVfbWN1X3NlbmRfdmVmdXNlX3BhZ2VgPyBUaGF0J3Mgc3RhdGljIHRvbywgc28gaXQgY291bGQgcG90ZW50aWFsbHkgYmUgaW5saW5lZCBpbnRvIGBtdDc5MjVfbG9hZF92ZWZ1c2VfZnJvbV9md2AuICBXZSBzaG91bGQgY2hlY2sgYG10NzkyNV92ZWZ1c2VfcmVhZGAsIHdoaWNoIGlzIHN0YXRpYywgYnV0IGFsc28gcGFzc2VkIGFzIGEgZnVuY3Rpb24gcG9pbnRlciB0byBgZGVidWdmc19jcmVhdGVfZGV2bV9zZXFmaWxlYC4gVGhhdCBtZWFucyBpdCAqY2FuJ3QqIGJlIGZ1bGx5IGlubGluZWQgYmVjYXVzZSBpdHMgYWRkcmVzcyBpcyBiZWluZyB0YWtlbi4gIFN0aWxsLCBpdCBtaWdodCBub3QgYmUgZXhwb3J0ZWQsIHNvIGl0cyBzY29wZSBtYXkgYmUgbGltaXRlZC5cblxuSW4gY29uY2x1c2lvbiwgSSB0aGluayB3ZSdyZSBzYWZlIHRvIHVzZSBgbXQ3OTI1X3J1bl9maXJtd2FyZWAgYW5kIGBtdDc5MjVfbWN1X3JlYWRfdmVmdXNlYCBhcyBvdXIgcHJpbWFyeSBmb2N1cyBzeW1ib2xzLlxuXG5Ob3csIGxldCdzIHJlLWV4YW1pbmUgdGhlIHBhdGNoIGl0c2VsZi4gSXQncyBhZGRpbmc6XG5cbiogICBgbXQ3OTI1X3ZlZnVzZV9yZWFkYCAoc3RhdGljLCBhZGRyZXNzIHRha2VuIC0gdGhhdCBmdW5jdGlvbiBwb2ludGVyIGFnYWluISlcbiogICBgbXQ3OTI1X21jdV9zZW5kX3ZlZnVzZV9wYWdlYCAoc3RhdGljKVxuKiAgIGBtdDc5MjVfbWN1X3JlYWRfdmVmdXNlYCAobm9uLXN0YXRpYyAtIG91ciBtYWluIGNvbmNlcm4hKVxuKiAgIGBtdDc5MjVfbG9hZF92ZWZ1c2VfZnJvbV9md2AgKHN0YXRpYylcblxuU28sIG15IGtleSBmb2N1cyBzeW1ib2xzIHJlbWFpbjpcblxuKiAgIGBtdDc5MjVfcnVuX2Zpcm13YXJlYFxuKiAgIGBtdDc5MjVfbWN1X3JlYWRfdmVmdXNlYFxuXG5SZWdhcmRpbmcgY29uZmlndXJhdGlvbnMsIHdlJ3JlIGxvb2tpbmcgYXQgYE1UNzkyNVVgLCBgTUFDODAyMTFgLCBhbmQgYFVTQmAuIEhhbmcgb27igKYgYE1UNzkyNVVgIGRlcGVuZHMgb24gYm90aCBgTUFDODAyMTFgIGFuZCBgVVNCYC4gVGhpcyBpcyBwcmV0dHkgc3RhbmRhcmQgZm9yIHRoaXMgdHlwZSBvZiBoYXJkd2FyZSwgYnV0IGxldCdzIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJ3QgYW55IG90aGVyIGRlcGVuZGVuY2llcyBpbiBwbGF5LiBMZXQncyBicmllZmx5IGNoZWNrIGBNVDc5MnhfVVNCYCBhbmQgYE1UNzkyNV9DT01NT05gIHRvIGJlIHN1cmUuIEl0J3MgaW1wb3J0YW50IHRvIHJ1bGUgb3V0IGFueSB1bmV4cGVjdGVkIGludGVyYWN0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTYyMTksIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDk6MTg6NDcuMDQ5OTQwMjA0WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MjA5NTY3NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTVQ3OTJ4X1VTQlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc9MzI9Y29uZmlnIE1UNzkyeF9MSUJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0zNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6MzY6Y29uZmlnIE1UNzkyeF9VU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMzctXFx0dHJpc3RhdGVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDk6MTg6NDcuMTEyMDQxNDVaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE0MTAyMjMyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBNVDc5MjVVIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSBpbml0aWFsbHkgdGhvdWdodCBgTVQ3OTI1VWAgd291bGQgYmUgZW5vdWdoIHRvIGdldCB0aGUgYmFsbCByb2xsaW5nLiBCdXQgd2FpdCwgYSBsaXR0bGUgbW9yZSBkaWdnaW5nLCBhbmQgaXQgc2VlbXMgdGhhdCBgTVQ3OTI1VWAgaXNuJ3QgYSBzaW1wbGUgb24vb2ZmLCBidXQgYSB0cmlzdGF0ZSBjb25maWd1cmF0aW9uLiBMZXQgbWUgbWFrZSBzdXJlIEknbSBjb25maWd1cmluZyB0aGUgZHJpdmVyIGFwcHJvcHJpYXRlbHkuXG5cblNvLCBJJ20gZ29pbmcgdG8gZW5hYmxlIGBNVDc5MjVVYCB0byBlbnN1cmUgdGhlIGRyaXZlciBpcyBmdW5jdGlvbmFsLlxuXG5BbHNvLCBpZiBJIHdhbnQgdG8gcGxheSB3aXRoIHRoZSBkZWJ1ZyBmaWxlc3lzdGVtLCBgREVCVUdfRlNgIGlzIHJlcXVpcmVkLiBUaGF0J3MgYSBtdXN0LiBOb3csIGJlZm9yZSBJIGp1bXAgaW4sIEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayB0aGF0IGBtdDc5MjVfaW5pdF9kZWJ1Z2ZzYCBpcyBjb21waWxlZCBpbiBhIGNvbmRpdGlvbmFsIG1hbm5lci4gSSBuZWVkIHRvIGtub3cgaXQncyBvbmx5IGVuYWJsZWQgaWYgYERFQlVHX0ZTYCBpcyBkZWZpbmVkLCBvdGhlcndpc2UgSSB3aWxsIHdhc3RlIG15IHRpbWUgY2hhc2luZyBhIG5vbi1leGlzdGVudCBmdW5jdGlvbi4gVGhpcyBjb25kaXRpb25hbCBjb21waWxlIGNoZWNrIGlzIGtleSB0byBlbnN1cmluZyBhIGNsZWFuIGFuZCBlZmZlY3RpdmUgZGVidWdnaW5nIHN0cmF0ZWd5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzU1NCwiT3V0cHV0VG9rZW5zIjo0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA5OjE4OjUxLjI1MzA2NjcyNVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQwNDU1NjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTI1X2luaXRfZGVidWdmc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTI5MD1tdDc5MjVfdmVmdXNlX3JlYWQoc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICpkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTMzMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MzM0OmludCBtdDc5MjVfaW5pdF9kZWJ1Z2ZzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTMzNS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM9MTkwPXN0YXRpYyB2b2lkIG10NzkyNV9pbml0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIxOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjE5OlxcdHJldCA9IG10NzkyNV9pbml0X2RlYnVnZnMoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjIwLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oPTMyMT1pbnQgbXQ3OTI1X2luaXRfbWxvX2NhcHMoc3RydWN0IG10NzkyeF9waHkgKnBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg6MzIyOmludCBtdDc5MjVfaW5pdF9kZWJ1Z2ZzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTMyMy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDk6MTg6NTEuMjk3MTIxNDIzWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NzA0ODk0ODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipEZWJ1Z2dpbmcgdGhlIENvbmRpdGlvbmFsIENvbXBpbGF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYGRlYnVnZnMuY2AuIE15IGluaXRpYWwgcXVlc3Rpb24gaXMgd2hldGhlciBvciBub3QgdGhpcyBmaWxlIGlzIGNvbXBpbGVkIHVuZGVyIHNwZWNpZmljIGNvbmRpdGlvbnMuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZXJlJ3MgYW55IGNvbmRpdGlvbmFsIGxvZ2ljIGF0IHBsYXkgaGVyZS4gQXJlIHRoZXJlIGAjaWZkZWZgIGJsb2NrcyBvciBzb21ldGhpbmcgc2ltaWxhciB0aGF0IHdvdWxkIHByZXZlbnQgdGhpcyBmaWxlIGZyb20gYmVpbmcgaW5jbHVkZWQgaW4gZXZlcnkgYnVpbGQ/IElzIHRoaXMgZnVuY3Rpb25hbGl0eSBlbmFibGVkIG9yIGRpc2FibGVkIGJ5IGEgZmVhdHVyZSBmbGFnLCBhIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbiwgb3IgcGVyaGFwcyBhIGJ1aWxkIGVudmlyb25tZW50IHNldHRpbmc/IFRoaXMgaXMgY3J1Y2lhbCBiZWNhdXNlIGlmIGl0J3MgKm5vdCogYWx3YXlzIGNvbXBpbGVkLCBhbnkgZGVidWdnaW5nIHJlbGF0ZWQgdG8gdGhpcyBmaWxlIGNvdWxkIGJlIG1pc2xlYWRpbmcgd2l0aG91dCB0aGUgc3BlY2lmaWMgY29uZGl0aW9ucyB0aGF0IGNhdXNlIGNvbXBpbGF0aW9uIGJlaW5nIG1ldC4gSSBoYXZlIHRvIGNvbmZpcm0gaXRzIHByZXNlbmNlIGJlZm9yZSBJIHN0YXJ0IGRlYnVnZ2luZywgdG8gYXZvaWQgd2FzdGluZyB0aW1lLiBJIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcsIE1ha2VmaWxlcywgb3IgZXZlbiB0aGUgYnVpbGQgc2NyaXB0cyB0byB1bmRlcnN0YW5kIHRoZSBpbmNsdXNpb24gY3JpdGVyaWEuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4MzgxLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDk6MTg6NTQuNzY3NjEzMjQ2WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDcxMzIzNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZWJ1Z2ZzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlPTU9b2JqLSQoQ09ORklHX01UNzkyNVUpICs9IG10NzkyNXUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlLTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvTWFrZWZpbGU6NzptdDc5MjUtY29tbW9uLXkgOj0gbWFjLm8gbWN1Lm8gcmVnZC5vIG1haW4ubyBpbml0Lm8gZGVidWdmcy5vIG5hbi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvTWFrZWZpbGUtOC1tdDc5MjUtY29tbW9uLSQoQ09ORklHX05MODAyMTFfVEVTVE1PREUpICs9IHRlc3Rtb2RlLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDk6MTg6NTQuODEyMzI4MjQzWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc2Mjg3OTA3MzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ29uZmlndXJhdGlvbiBDb25zaWRlcmF0aW9ucyBmb3IgRnV6emluZyB0aGUgTVQ3OTI1IERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBwdXR0aW5nIHRvZ2V0aGVyIGEgZnV6emluZyBjb25maWd1cmF0aW9uIGZvciB0aGUgTVQ3OTI1IGRyaXZlci4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGNvdmVyIGFsbCB0aGUgYmFzZXMuIEknbSBzdGFydGluZyBieSByZW1lbWJlcmluZyB0aGF0IGNvZGUgaXMgY29tcGlsZWQgYnV0IHRoZXJlJ3MgYSBjaGFuY2UgYGRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZWAgY291bGQgYmUgYSBzdHViIGlmIGBERUJVR19GU2AgaXMgZGlzYWJsZWQsIHNvIEkgbmVlZCB0byBleHBsaWNpdGx5IGVuYWJsZSB0aGF0IHRvIGJlIG9uIHRoZSBzYWZlIHNpZGUuIEl0J3MgbGlrZWx5IGVuYWJsZWQgYnkgZGVmYXVsdCBpbiBzeXprYWxsZXIgY29uZmlncywgYnV0IGl0J3MgZ29vZCB0byBiZSBleHBsaWNpdC5cblxuTm93LCBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIGRpZmZlcmVudCBNVDc5MjUgdmFyaWFudHMuIGBNVDc5MjVFYCBpcyBmb3IgUENJZSwgYW5kIHdoaWxlIHN5emthbGxlcidzIG5vdCAqaWRlYWwqIGZvciBmdXp6aW5nIFBDSWUgdW5sZXNzIGl0J3MgYSB2ZXJ5IHNwZWNpZmljIGRyaXZlciB3aXRoIGEgZmFrZSBQQ0kgZGV2aWNlLCBJJ3ZlIGdvdCBgTVQ3OTI1VWAgKFVTQikgd2hpY2ggaXMgZGVmaW5pdGVseSBmdXp6YWJsZSB3aXRoIHN5emthbGxlci4gSSdsbCBpbmNsdWRlIGJvdGggYE1UNzkyNUVgIGFuZCBgTVQ3OTI1VWAganVzdCBpbiBjYXNlLCBiZXR0ZXIgc2FmZSB0aGFuIHNvcnJ5LlxuXG5TbywgaGVyZSdzIG15IGluaXRpYWwgc3VtbWFyeTogSSdtIGNvbmZpZGVudCB0aGlzIGlzIHdvcnRoIGZ1enppbmcsIGFuZCBJIHdhbnQgdG8gZm9jdXMgb24gZnVuY3Rpb25zIGxpa2UgYG10NzkyNV9ydW5fZmlybXdhcmVgIGFuZCBgbXQ3OTI1X21jdV9yZWFkX3ZlZnVzZWAuIE15IGluaXRpYWwgY29uZmlnIGxvb2tzIGxpa2UgdGhpczpcblxuKiAgICoqV29ydGhGdXp6aW5nOioqIGB0cnVlYFxuKiAgICoqRm9jdXNTeW1ib2xzOioqXG4gICAgKiAgIGBtdDc5MjVfcnVuX2Zpcm13YXJlYFxuICAgICogICBgbXQ3OTI1X21jdV9yZWFkX3ZlZnVzZWBcbiogICAqKkVuYWJsZUNvbmZpZ3M6KipcbiAgICAqICAgYE1UNzkyNVVgXG4gICAgKiAgIGBNVDc5MjVFYFxuICAgICogICBgTUFDODAyMTFgXG4gICAgKiAgIGBVU0JgXG4gICAgKiAgIGBERUJVR19GU2BcblxuQnV0LCB3YWl0LCBJIG5lZWQgdG8gYWNjb3VudCBmb3IgZGVwZW5kZW5jaWVzLiBgTVQ3OTI1RWAgZGVwZW5kcyBvbiBgUENJYCwgc28gSSBoYXZlIHRvIGluY2x1ZGUgYFBDSWAgbm93LiBBbHNvLCBgTVQ3OTI1VWAgZGVwZW5kcyBvbiBgTUFDODAyMTFgIGFuZCBgVVNCYC4gYE1BQzgwMjExYCBpbiB0dXJuIGRlcGVuZHMgb24gYENGRzgwMjExYCwgc28gSSdsbCBhZGQgdGhhdCB0byB0aGUgZW5hYmxlIGxpc3QgYXMgd2VsbC4gSnVzdCB0byBiZSB0aG9yb3VnaCBJIG5lZWQgdG8gY2hlY2sgYE1BQzgwMjExYCBkZXBlbmRlbmNpZXMgdG9vLCBjYW4ndCBiZSB0b28gY2FyZWZ1bCBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODgwMywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwOToxOTowMi40NDExMjIwMTFaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMDA3NTEyMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTUFDODAyMTFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21hYzgwMjExL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbWFjODAyMTEvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI6Y29uZmlnIE1BQzgwMjExXFxubmV0L21hYzgwMjExL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiR2VuZXJpYyBJRUVFIDgwMi4xMSBOZXR3b3JraW5nIFN0YWNrIChtYWM4MDIxMSlcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0xOT1pZiBNQUM4MDIxMSAhPSBuXFxubmV0L21hYzgwMjExL0tjb25maWctMjAtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjE6Y29uZmlnIE1BQzgwMjExX0hBU19SQ1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyLVxcdGJvb2xcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMy1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDpjb25maWcgTUFDODAyMTFfUkNfTUlOU1RSRUxcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNS1cXHRib29sIFxcXCJNaW5zdHJlbFxcXCIgaWYgRVhQRVJUXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0zMT1jaG9pY2VcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQwLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjQxOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUX01JTlNUUkVMXFxubmV0L21hYzgwMjExL0tjb25maWctNDItXFx0Ym9vbCBcXFwiTWluc3RyZWxcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZz00OD1lbmRjaG9pY2VcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00OS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo1MDpjb25maWcgTUFDODAyMTFfUkNfREVGQVVMVFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTUxLVxcdHN0cmluZ1xcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9NTc9Y29tbWVudCBcXFwiU29tZSB3aXJlbGVzcyBkcml2ZXJzIHJlcXVpcmUgYSByYXRlIGNvbnRyb2wgYWxnb3JpdGhtXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctNTktXFxubmV0L21hYzgwMjExL0tjb25maWc6NjA6Y29uZmlnIE1BQzgwMjExX0tVTklUX1RFU1RcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy02MS1cXHR0cmlzdGF0ZSBcXFwiS1VuaXQgdGVzdHMgZm9yIG1hYzgwMjExXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy02OS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo3MDpjb25maWcgTUFDODAyMTFfTUVTSFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTcxLVxcdGJvb2wgXFxcIkVuYWJsZSBtYWM4MDIxMSBtZXNoIG5ldHdvcmtpbmcgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTc4LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjc5OmNvbmZpZyBNQUM4MDIxMV9MRURTXFxubmV0L21hYzgwMjExL0tjb25maWctODAtXFx0Ym9vbCBcXFwiRW5hYmxlIExFRCB0cmlnZ2Vyc1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg3LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjg4OmNvbmZpZyBNQUM4MDIxMV9ERUJVR0ZTXFxubmV0L21hYzgwMjExL0tjb25maWctODktXFx0Ym9vbCBcXFwiRXhwb3J0IG1hYzgwMjExIGludGVybmFscyBpbiBEZWJ1Z0ZTXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctOTYtXFxubmV0L21hYzgwMjExL0tjb25maWc6OTc6Y29uZmlnIE1BQzgwMjExX01FU1NBR0VfVFJBQ0lOR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTk4LVxcdGJvb2wgXFxcIlRyYWNlIGFsbCBtYWM4MDIxMSBkZWJ1ZyBtZXNzYWdlc1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEwOS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTA6bWVudWNvbmZpZyBNQUM4MDIxMV9ERUJVR19NRU5VXFxubmV0L21hYzgwMjExL0tjb25maWctMTExLVxcdGJvb2wgXFxcIlNlbGVjdCBtYWM4MDIxMSBkZWJ1Z2dpbmcgZmVhdHVyZXNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTUtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTE2OmNvbmZpZyBNQUM4MDIxMV9OT0lOTElORVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNy1cXHRib29sIFxcXCJEbyBub3QgaW5saW5lIFRYL1JYIGhhbmRsZXJzXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTMxLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjEzMjpjb25maWcgTUFDODAyMTFfVkVSQk9TRV9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEzMy1cXHRib29sIFxcXCJWZXJib3NlIGRlYnVnZ2luZyBvdXRwdXRcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDItXFxubmV0L21hYzgwMjExL0tjb25maWc6MTQzOmNvbmZpZyBNQUM4MDIxMV9NTE1FX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTQ0LVxcdGJvb2wgXFxcIlZlcmJvc2UgbWFuYWdlZCBNTE1FIG91dHB1dFxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1My1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNTQ6Y29uZmlnIE1BQzgwMjExX1NUQV9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1NS1cXHRib29sIFxcXCJWZXJib3NlIHN0YXRpb24gZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTYyLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE2Mzpjb25maWcgTUFDODAyMTFfSFRfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjQtXFx0Ym9vbCBcXFwiVmVyYm9zZSBIVCBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNzQtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTc1OmNvbmZpZyBNQUM4MDIxMV9PQ0JfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNzYtXFx0Ym9vbCBcXFwiVmVyYm9zZSBPQ0IgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTg1LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE4Njpjb25maWcgTUFDODAyMTFfSUJTU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE4Ny1cXHRib29sIFxcXCJWZXJib3NlIElCU1MgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTk2LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE5Nzpjb25maWcgTUFDODAyMTFfUFNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTgtXFx0Ym9vbCBcXFwiVmVyYm9zZSBwb3dlcnNhdmUgbW9kZSBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMDgtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjA5OmNvbmZpZyBNQUM4MDIxMV9NUExfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMTAtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHBlZXIgbGluayBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjEtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjIyOmNvbmZpZyBNQUM4MDIxMV9NUEFUSF9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyMy1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggcGF0aCBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMzQtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjM1OmNvbmZpZyBNQUM4MDIxMV9NSFdNUF9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNi1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggSFdNUCByb3V0aW5nIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI0Ny1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDg6Y29uZmlnIE1BQzgwMjExX01FU0hfU1lOQ19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI0OS1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggc3luY2hyb25pemF0aW9uIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1OC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNTk6Y29uZmlnIE1BQzgwMjExX01FU0hfQ1NBX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjYwLVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBjaGFubmVsIHN3aXRjaCBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNjktXFxubmV0L21hYzgwMjExL0tjb25maWc6MjcwOmNvbmZpZyBNQUM4MDIxMV9NRVNIX1BTX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjcxLVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBwb3dlcnNhdmUgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjgwLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI4MTpjb25maWcgTUFDODAyMTFfVERMU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI4Mi1cXHRib29sIFxcXCJWZXJib3NlIFRETFMgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjkyLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI5Mzpjb25maWcgTUFDODAyMTFfREVCVUdfQ09VTlRFUlNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTQtXFx0Ym9vbCBcXFwiRXh0cmEgc3RhdGlzdGljcyBmb3IgVFgvUlggZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMzA3LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjMwODpjb25maWcgTUFDODAyMTFfU1RBX0hBU0hfTUFYX1NJWkVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDktXFx0aW50IFxcXCJTdGF0aW9uIGhhc2ggdGFibGUgbWF4aW11bSBzaXplXFxcIiBpZiBNQUM4MDIxMV9ERUJVR19NRU5VXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA5OjE5OjAyLjU0MTIwMzQwNFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NzgxNzMxNjg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgZXhwZXJ0IHBlcnNwZWN0aXZlOlxuXG4qKkRlcGVuZGVuY3kgRGVlcCBEaXZlKipcblxuUmlnaHQsIHNvIGBNQUM4MDIxMWAgaGluZ2VzIG9uIGBDRkc4MDIxMWAuIFRoYXQncyBzdGFuZGFyZCBmYXJlLCBidXQgaXQncyBjcnVjaWFsIHRvIHVuZGVyc3RhbmQgd2hlcmUgKnRoYXQqIGRlcGVuZGVuY3kgY2hhaW4gbGVhZHMuIEl0J3MgdGltZSB0byBkaWcgaW50byB0aGUgYENGRzgwMjExYCBkZXBlbmRlbmNpZXMgdGhlbXNlbHZlcy4gV2UgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gb2YgdGhlIHN1cHBvcnRpbmcgaW5mcmFzdHJ1Y3R1cmUuIEknbSB0aGlua2luZywgYXJlIHRoZXJlIGFueSBwb3RlbnRpYWwgY29uZmxpY3RzIGx1cmtpbmcgaW4gdGhvc2UgZGVwZW5kZW5jaWVzPyBBcmUgd2UgbG9va2luZyBhdCBhIGNsZWFuLCB3ZWxsLWRlZmluZWQgYXJjaGl0ZWN0dXJlLCBvciBzb21ldGhpbmcgdGhhdCBjb3VsZCBjYXVzZSBpc3N1ZXMgZG93biB0aGUgbGluZT8gTGV0J3MgZ2V0IGEgaGFuZGxlIG9uIHRoZSBsYW5kc2NhcGUgYmVmb3JlIHdlIHByb2NlZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxOTM5LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDk6MTk6MTAuMzIyOTM3NzU5WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjMyMDA0OTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIENGRzgwMjExXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC93aXJlbGVzcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3dpcmVsZXNzL0tjb25maWc9MTQ9Y29uZmlnIFdFWFRfUFJJVlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTYtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTc6Y29uZmlnIENGRzgwMjExXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTgtXFx0dHJpc3RhdGUgXFxcImNmZzgwMjExIC0gd2lyZWxlc3MgY29uZmlndXJhdGlvbiBBUElcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZz0zOD1jb25maWcgTkw4MDIxMV9URVNUTU9ERVxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctNTEtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6NTI6Y29uZmlnIENGRzgwMjExX0RFVkVMT1BFUl9XQVJOSU5HU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTUzLVxcdGJvb2wgXFxcImVuYWJsZSBkZXZlbG9wZXIgd2FybmluZ3NcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy02Ny1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo2ODpjb25maWcgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxubmV0L3dpcmVsZXNzL0tjb25maWctNjktXFx0Ym9vbCBcXFwiY2ZnODAyMTEgY2VydGlmaWNhdGlvbiBvbnVzXFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctODgtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6ODk6Y29uZmlnIENGRzgwMjExX1JFUVVJUkVfU0lHTkVEX1JFR0RCXFxubmV0L3dpcmVsZXNzL0tjb25maWctOTAtXFx0Ym9vbCBcXFwicmVxdWlyZSByZWdkYiBzaWduYXR1cmVcXFwiIGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctOTgtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6OTk6Y29uZmlnIENGRzgwMjExX1VTRV9LRVJORUxfUkVHREJfS0VZU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEwMC1cXHRib29sIFxcXCJhbGxvdyByZWdkYiBrZXlzIHNoaXBwZWQgd2l0aCB0aGUga2VybmVsXFxcIiBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTExMC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMTE6Y29uZmlnIENGRzgwMjExX0VYVFJBX1JFR0RCX0tFWURJUlxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTExMi1cXHRzdHJpbmcgXFxcImFkZGl0aW9uYWwgcmVnZGIga2V5IGRpcmVjdG9yeVxcXCIgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMjEtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTIyOmNvbmZpZyBDRkc4MDIxMV9SRUdfQ0VMTFVMQVJfSElOVFNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMjMtXFx0Ym9vbCBcXFwiY2ZnODAyMTEgcmVndWxhdG9yeSBzdXBwb3J0IGZvciBjZWxsdWxhciBiYXNlIHN0YXRpb24gaGludHNcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMzQtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTM1OmNvbmZpZyBDRkc4MDIxMV9SRUdfUkVMQVhfTk9fSVJcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMzYtXFx0Ym9vbCBcXFwiY2ZnODAyMTEgc3VwcG9ydCBmb3IgTk9fSVIgcmVsYXhhdGlvblxcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE1OC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNTk6Y29uZmlnIENGRzgwMjExX0RFRkFVTFRfUFNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNjAtXFx0Ym9vbCBcXFwiZW5hYmxlIHBvd2Vyc2F2ZSBieSBkZWZhdWx0XFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTY4LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE2OTpjb25maWcgQ0ZHODAyMTFfREVCVUdGU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3MC1cXHRib29sIFxcXCJjZmc4MDIxMSBEZWJ1Z0ZTIGVudHJpZXNcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzYtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTc3OmNvbmZpZyBDRkc4MDIxMV9DUkRBX1NVUFBPUlRcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzgtXFx0Ym9vbCBcXFwic3VwcG9ydCBDUkRBXFxcIiBpZiBFWFBFUlRcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4Ni1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxODc6Y29uZmlnIENGRzgwMjExX1dFWFRcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xODgtXFx0Ym9vbCBcXFwiY2ZnODAyMTEgd2lyZWxlc3MgZXh0ZW5zaW9ucyBjb21wYXRpYmlsaXR5XFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTkzLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE5NDpjb25maWcgQ0ZHODAyMTFfS1VOSVRfVEVTVFxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE5NS1cXHR0cmlzdGF0ZSBcXFwiS1VuaXQgdGVzdHMgZm9yIGNmZzgwMjExXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA5OjE5OjEwLjc4NjE0MjgxNloiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MjEwMTY3MTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIE1UNzkyNSBEcml2ZXIgUGF0Y2ggZm9yIEZ1enppbmcqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBsYW5kc2NhcGUuIGBDRkc4MDIxMWAgYXBwZWFycyB0byBiZSB0aGUgY29yZSwgd2l0aCBubyBzaWduaWZpY2FudCBkZXBlbmRlbmNpZXMsIHBlcmhhcHMganVzdCBgTkVUYC4gVGhlIHNwZWNpZmljIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb25zIGFyZSBgTVQ3OTI1VWAgYW5kIGBNVDc5MjVFYCwgYW5kIHRoZW4gdGhlIGNvbW1vbiBjb21wb25lbnRzIGxpa2UgYE1BQzgwMjExYCwgYENGRzgwMjExYCwgYFVTQmAsIGBQQ0lgLCBhbmQgYERFQlVHX0ZTYC5cblxuQSBxdWljayBzYW5pdHkgY2hlY2sgcmV2ZWFscyBzb21lIGRlcGVuZGVuY2llcyBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kLiBgTVQ3OTI1VWAgbmVlZHMgYFVTQmAsIGFuZCBgTVQ3OTI1RWAgbmVlZHMgYFBDSWAuIE9idmlvdXNseSwgYE1BQzgwMjExYCBkZXBlbmRzIG9uIGBDRkc4MDIxMWAsIHNvIEknbGwgaW5jbHVkZSBhbGwgb2YgdGhlbS5cblxuTm93LCBmb3IgZnV6emluZywgSSBuZWVkIHRvIGlkZW50aWZ5IGdvb2QgZm9jdXMgc3ltYm9scy4gIEkgaW5pdGlhbGx5IHRob3VnaHQgYG10NzkyNV9ydW5fZmlybXdhcmVgIHdvdWxkIGJlIHN1aXRhYmxlLCBhbmQgaXQgc2VlbXMgdG8gYmUgY2FsbGVkIGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24sIHdoaWNoIGlzIHByb21pc2luZy4gYG10NzkyNV9tY3VfcmVhZF92ZWZ1c2VgIGlzIGFsc28gaW50cmlndWluZywgYW5kIGl0IGFwcGVhcnMgZHVyaW5nIHRoZSByZWFkaW5nIG9mIHRoZSBkZWJ1Z2ZzIGZpbGUgd2hpY2ggc2VlbXMgbGlrZSBhIGdvb2QgdGFyZ2V0LiBJIGxpa2UgdGhhdCwgYXMgaXQgaW1wbGllcyB1c2VyIGludGVyYWN0aW9uIGFuZCBwb3RlbnRpYWwgZm9yIGZ1enppbmcuIFRoaXMgcGF0Y2ggYXBwZWFycyB0byBpbXBsZW1lbnQgYSBuZXcgZmVhdHVyZSAodmlydHVhbCBlZnVzZSBsb2FkaW5nIGZyb20gZmlybXdhcmUpLCBzbyBpdCdzIGEgZ29vZCBjYW5kaWRhdGUgZm9yIHRob3JvdWdoIHRlc3RpbmcuXG5cbkxldCdzIGRvdWJsZS1jaGVjayBmb3IgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb25zIGFkZGVkIGJ5IHRoaXMgcGF0Y2gsIHRvIGJyb2FkZW4gbXkgZnV6emluZyBjb3ZlcmFnZS4gYG10NzkyNV9tY3VfcmVhZF92ZWZ1c2VgIHNlZW1zIHRvIGJlIHRoZSBvbmx5IG9uZS4gVGhlIG90aGVyIHBvdGVudGlhbGx5IHJlbGV2YW50IGZ1bmN0aW9ucywgYG10NzkyNV9tY3Vfc2VuZF92ZWZ1c2VfcGFnZWAsIGBtdDc5MjVfbG9hZF92ZWZ1c2VfZnJvbV9md2AsIGFuZCBgbXQ3OTI1X3ZlZnVzZV9yZWFkYCwgYXJlIHN0YXRpYywgd2hpY2ggSSB3aWxsIG5vdCBiZSBkaXJlY3RseSB0YXJnZXRpbmcuXG5cblRoZXJlZm9yZSwgdGhlIG1haW4gZm9jdXMgc3ltYm9scyBmb3IgZnV6emluZyB3aWxsIGJlOlxuXG4qICAgYG10NzkyNV9ydW5fZmlybXdhcmVgXG4qICAgYG10NzkyNV9tY3VfcmVhZF92ZWZ1c2VgXG5cblRpbWUgdG8gc2V0IHRoZSByZXN1bHRzIGFuZCBtb3ZlIGZvcndhcmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMDcyLCJPdXRwdXRUb2tlbnMiOjIxNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwOToxOToxOS45OTYzMTMxNTdaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3Njk1OTQ4NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVQ3OTI1VVwiLFxuICAgIFwiTVQ3OTI1RVwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIkNGRzgwMjExXCIsXG4gICAgXCJVU0JcIixcbiAgICBcIlBDSVwiLFxuICAgIFwiREVCVUdfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc5MjVfcnVuX2Zpcm13YXJlXCIsXG4gICAgXCJtdDc5MjVfbWN1X3JlYWRfdmVmdXNlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBsb2FkaW5nICd2aXJ0dWFsIGVmdXNlJyAodmVmdXNlKSBkYXRhIGZyb20gZmlybXdhcmUgZm9yIHRoZSBNZWRpYVRlayBNVDc5MjUgd2lyZWxlc3MgZHJpdmVyLiBUaGUgZHJpdmVyIGhhcyBhIFVTQiB2YXJpYW50IChNVDc5MjVVKSB3aGljaCBjYW4gYmUgZnV6emVkIHVzaW5nIHN5emthbGxlcidzIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcy4gVGhlIGZpcm13YXJlIGxvYWRpbmcgbG9naWMgaW4gYG10NzkyNV9ydW5fZmlybXdhcmVgIGFuZCB0aGUgZGVidWdmcyByZWFkIGZ1bmN0aW9uIGBtdDc5MjVfbWN1X3JlYWRfdmVmdXNlYCBhcmUgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzkyNVVcIixcbiAgICBcIk1UNzkyNUVcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJDRkc4MDIxMVwiLFxuICAgIFwiVVNCXCIsXG4gICAgXCJQQ0lcIixcbiAgICBcIkRFQlVHX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3OTI1X3J1bl9maXJtd2FyZVwiLFxuICAgIFwibXQ3OTI1X21jdV9yZWFkX3ZlZnVzZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgbG9hZGluZyAndmlydHVhbCBlZnVzZScgKHZlZnVzZSkgZGF0YSBmcm9tIGZpcm13YXJlIGZvciB0aGUgTWVkaWFUZWsgTVQ3OTI1IHdpcmVsZXNzIGRyaXZlci4gVGhlIGRyaXZlciBoYXMgYSBVU0IgdmFyaWFudCAoTVQ3OTI1VSkgd2hpY2ggY2FuIGJlIGZ1enplZCB1c2luZyBzeXprYWxsZXIncyBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXMuIFRoZSBmaXJtd2FyZSBsb2FkaW5nIGxvZ2ljIGluIGBtdDc5MjVfcnVuX2Zpcm13YXJlYCBhbmQgdGhlIGRlYnVnZnMgcmVhZCBmdW5jdGlvbiBgbXQ3OTI1X21jdV9yZWFkX3ZlZnVzZWAgYXJlIHJlYWNoYWJsZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowvq44m[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-05 08:29:44 +0000 UTC FinishedAt: 2026-08-05 09:19:22 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "6c5fc504d0d6934132637aa3db4b9b58148eaa78", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT7925U", "MT7925E", "MAC80211", "CFG80211", "USB", "PCI", "DEBUG_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "6c5fc504d0d6934132637aa3db4b9b58148eaa78", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT7925U", "MT7925E", "MAC80211", "CFG80211", "USB", "PCI", "DEBUG_FS" ], "series_id": "7113c193-4a7e-4459-bac5-b3e20ddaef37" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mt7925_run_firmware", "mt7925_mcu_read_vefuse" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA5OjE3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzkyNVUmIzM0OywKICAgICYjMzQ7TVQ3OTI1RSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OywKICAgICYjMzQ7UENJJiMzNDssCiAgICAmIzM0O0RFQlVHX0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXQ3OTI1X3J1bl9maXJtd2FyZSYjMzQ7LAogICAgJiMzNDttdDc5MjVfbWN1X3JlYWRfdmVmdXNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgbG9hZGluZyAmIzM5O3ZpcnR1YWwgZWZ1c2UmIzM5OyAodmVmdXNlKSBkYXRhIGZyb20gZmlybXdhcmUgZm9yIHRoZSBNZWRpYVRlayBNVDc5MjUgd2lyZWxlc3MgZHJpdmVyLiBUaGUgZHJpdmVyIGhhcyBhIFVTQiB2YXJpYW50IChNVDc5MjVVKSB3aGljaCBjYW4gYmUgZnV6emVkIHVzaW5nIHN5emthbGxlciYjMzk7cyBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXMuIFRoZSBmaXJtd2FyZSBsb2FkaW5nIGxvZ2ljIGluIGBtdDc5MjVfcnVuX2Zpcm13YXJlYCBhbmQgdGhlIGRlYnVnZnMgcmVhZCBmdW5jdGlvbiBgbXQ3OTI1X21jdV9yZWFkX3ZlZnVzZWAgYXJlIHJlYWNoYWJsZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwOToxNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDFlOGVkNDc2NzAzMmI4NzZjYTk1MWQ5Y2FkNjUyZWQyN2Y0ZjVlZjVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyA1IDA5OjE3OjI5IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5oXG5pbmRleCAwZWRlZGE1NjllOWE1Li45Yzg0NGJlZjkyYzlmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuaFxuQEAgLTQ0LDYgJiM0Mzs0NCw3IEBAXG4gZW51bSB7XG4gXHRGV19UWVBFX0RFRkFVTFQgPSAwLFxuIFx0RldfVFlQRV9DTEMgPSAyLFxuJiM0MztcdEZXX1RZUEVfRVhURU5EX0JJTl9FRlVTRSA9IDMsXG4gXHRGV19UWVBFX01BWF9OVU0gPSAyNTVcbiB9O1xuIFxuQEAgLTE0ODEsNiAmIzQzOzE0ODIsNyBAQCBlbnVtIHtcbiBcdE1UX05JQ19DQVBfNkcsXG4gXHRNVF9OSUNfQ0FQX0NISVBfQ0FQID0gMHgyMCxcbiBcdE1UX05JQ19DQVBfRU1MX0NBUCA9IDB4MjIsXG4mIzQzO1x0TVRfTklDX0NBUF9WRUZVU0VfSU5GTyA9IDB4NDQsXG4gfTtcbiBcbiAjZGVmaW5lIFVOSV9XT1dfREVURUNUX1RZUEVfTUFHSUNcdFx0QklUKDApXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jXG5pbmRleCBkMDFmZjQ5ZGU0N2FmLi4zNGUyNjFlMjQ3ZmNkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmNcbkBAIC0yODYsNiAmIzQzOzI4Niw1MSBAQCBzdGF0aWMgaW50IG10NzkyNV9jaGlwX3Jlc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXG4gXG4gREVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcmVzZXQsIE5VTEwsIG10NzkyNV9jaGlwX3Jlc2V0LCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbiBcbiYjNDM7c3RhdGljIGludFxuJiM0MzttdDc5MjVfdmVmdXNlX3JlYWQoc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICpkYXRhKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IG10NzkyeF9kZXYgKmRldiA9IGRldl9nZXRfZHJ2ZGF0YShzLVx1MDAzZXByaXZhdGUpO1xuJiM0MztcdHUxNiBzaXplID0gZGV2LVx1MDAzZXZlZnVzZV9jYXAuc2l6ZTtcbiYjNDM7XHRpbnQgb2ZmID0gMDtcbiYjNDM7XHR1OCAqYnVmO1xuJiM0MztcdGludCByZXQgPSAwO1xuJiM0MztcbiYjNDM7XHRpZiAoIWRldi1cdTAwM2V2ZWZ1c2VfY2FwLnByZXNlbnQgfHwgIXNpemUpIHtcbiYjNDM7XHRcdHNlcV9wdXRzKHMsIFwmIzM0O3ZlZnVzZTogbm8gcmVnaW9uIGluIEZXIGltYWdlXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0YnVmID0ga3phbGxvYyhzaXplLCBHRlBfS0VSTkVMKTtcbiYjNDM7XHRpZiAoIWJ1ZilcbiYjNDM7XHRcdHJldHVybiAtRU5PTUVNO1xuJiM0MztcbiYjNDM7XHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShkZXYpO1xuJiM0MztcdHdoaWxlIChvZmYgXHUwMDNjIChpbnQpc2l6ZSkge1xuJiM0MztcdFx0dTE2IGNodW5rID0gbWluX3QodTE2LCA1MTIsIHNpemUgLSBvZmYpO1xuJiM0MztcbiYjNDM7XHRcdHJldCA9IG10NzkyNV9tY3VfcmVhZF92ZWZ1c2UoZGV2LCBvZmYsIGNodW5rLCBidWYgJiM0Mzsgb2ZmKTtcbiYjNDM7XHRcdGlmIChyZXQpXG4mIzQzO1x0XHRcdGJyZWFrO1xuJiM0MztcdFx0b2ZmICYjNDM7PSBjaHVuaztcbiYjNDM7XHR9XG4mIzQzO1x0bXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTtcbiYjNDM7XG4mIzQzO1x0aWYgKHJldCkge1xuJiM0MztcdFx0c2VxX3ByaW50ZihzLCBcJiMzNDt2ZWZ1c2U6IHJlYWQgZmFpbGVkIGF0IDB4JTA0eCAoJWQpXFxuXCYjMzQ7LCBvZmYsIHJldCk7XG4mIzQzO1x0XHRrZnJlZShidWYpO1xuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRzZXFfcHJpbnRmKHMsIFwmIzM0O3ZlZnVzZSBjb250ZW50OiAldSBieXRlc1xcblwmIzM0Oywgc2l6ZSk7XG4mIzQzO1x0Zm9yIChvZmYgPSAwOyBvZmYgXHUwMDNjIChpbnQpc2l6ZTsgb2ZmICYjNDM7PSAxNilcbiYjNDM7XHRcdHNlcV9wcmludGYocywgXCYjMzQ7JTA0eDogJSpwaFxcblwmIzM0Oywgb2ZmLFxuJiM0MztcdFx0XHQgICAoaW50KW1pbl90KHUxNiwgMTYsIHNpemUgLSBvZmYpLCBidWYgJiM0Mzsgb2ZmKTtcbiYjNDM7XG4mIzQzO1x0a2ZyZWUoYnVmKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4gaW50IG10NzkyNV9pbml0X2RlYnVnZnMoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbiB7XG4gXHRzdHJ1Y3QgZGVudHJ5ICpkaXI7XG5AQCAtMzA5LDYgJiM0MzszNTQsMTMgQEAgaW50IG10NzkyNV9pbml0X2RlYnVnZnMoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbiBcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCYjMzQ7aWRsZS10aW1lb3V0XCYjMzQ7LCAwNjAwLCBkaXIsIGRldixcbiBcdFx0XHQgICAgXHUwMDI2Zm9wc19wbV9pZGxlX3RpbWVvdXQpO1xuIFx0ZGVidWdmc19jcmVhdGVfZmlsZShcJiMzNDtjaGlwX3Jlc2V0XCYjMzQ7LCAwNjAwLCBkaXIsIGRldiwgXHUwMDI2Zm9wc19yZXNldCk7XG4mIzQzO1x0Lyogb25seSBleHBvc2UgdGhlIHZlZnVzZSByZWFkIG5vZGUgd2hlbiBhIHZlZnVzZSByZWdpb24gd2FzIGZvdW5kIGluIHRoZVxuJiM0MztcdCAqIEZXIGltYWdlIChGVyByZXBvcnRzIHRoZSBjYXBhYmlsaXR5IHVuY29uZGl0aW9uYWxseSwgc28gZ2F0ZSBvbiB0aGVcbiYjNDM7XHQgKiBhY3R1YWwgcmVnaW9uIHByZXNlbmNlIGluc3RlYWQpXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKGRldi1cdTAwM2V2ZWZ1c2VfY2FwLnByZXNlbnQpXG4mIzQzO1x0XHRkZWJ1Z2ZzX2NyZWF0ZV9kZXZtX3NlcWZpbGUoZGV2LVx1MDAzZW10NzYuZGV2LCBcJiMzNDt2ZWZ1c2VcJiMzNDssIGRpcixcbiYjNDM7XHRcdFx0XHRcdCAgICBtdDc5MjVfdmVmdXNlX3JlYWQpO1xuIFx0ZGVidWdmc19jcmVhdGVfZGV2bV9zZXFmaWxlKGRldi1cdTAwM2VtdDc2LmRldiwgXCYjMzQ7cnVudGltZV9wbV9zdGF0c1wmIzM0OywgZGlyLFxuIFx0XHRcdFx0ICAgIG10NzkyeF9wbV9zdGF0cyk7XG4gXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFwmIzM0O2RlZXAtc2xlZXBcJiMzNDssIDA2MDAsIGRpciwgZGV2LCBcdTAwMjZmb3BzX2RzKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jXG5pbmRleCBmYTI5YzQ4NmE0NTUzLi44MDBkNDhiZWUxMTBjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jXG5AQCAtODcxLDYgJiM0Mzs4NzEsMjE0IEBAIHN0YXRpYyBpbnQgbXQ3OTI1X21jdV9yZWFkX2VlcHJvbShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1MzIgb2Zmc2V0LCB1OCAqdmFsKVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuJiM0MztzdGF0aWMgaW50XG4mIzQzO210NzkyNV9tY3Vfc2VuZF92ZWZ1c2VfcGFnZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LFxuJiM0MztcdFx0XHQgICAgY29uc3QgdTggKmRhdGEsIHUzMiB0b3RhbF9sZW4sXG4mIzQzO1x0XHRcdCAgICBpbnQgcGFnZV9pZHgsIGludCB0b3RhbF9wYWdlcylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBtdDc5MjVfdmVmdXNlX3BhZ2VfY21kICpjbWQ7XG4mIzQzO1x0c2l6ZV90IG9mZnNldCA9IChzaXplX3QpcGFnZV9pZHggKiBNVDc5MjVfVkVGVVNFX1BBR0VfU0laRTtcbiYjNDM7XHR1MTYgcGFnZV9sZW4gPSAodTE2KW1pbl90KHNpemVfdCxcbiYjNDM7XHRcdFx0XHQgIE1UNzkyNV9WRUZVU0VfUEFHRV9TSVpFLFxuJiM0MztcdFx0XHRcdCAgdG90YWxfbGVuIC0gb2Zmc2V0KTtcbiYjNDM7XHRpbnQgcmV0O1xuJiM0MztcbiYjNDM7XHRjbWQgPSBremFsbG9jKHNpemVvZigqY21kKSwgR0ZQX0tFUk5FTCk7XG4mIzQzO1x0aWYgKCFjbWQpXG4mIzQzO1x0XHRyZXR1cm4gLUVOT01FTTtcbiYjNDM7XG4mIzQzO1x0Y21kLVx1MDAzZXRhZyAgICAgICAgICAgID0gY3B1X3RvX2xlMTYoVU5JX0VGVVNFX0JVRkZFUl9NT0RFKTtcbiYjNDM7XHRjbWQtXHUwMDNlbGVuICAgICAgICAgICAgPSBjcHVfdG9fbGUxNihzaXplb2YoKmNtZCkgLSBzaXplb2YoY21kLVx1MDAzZXJzdikpO1xuJiM0MztcdGNtZC1cdTAwM2Vzb3VyY2VfbW9kZSAgICA9IFVOSV9FRlVTRV9TT1VSQ0VfVkVGVVNFO1xuJiM0MztcdGNtZC1cdTAwM2Vjb250ZW50X2Zvcm1hdCA9IEZJRUxEX1BSRVAoTVQ3OTI1X1ZFRlVTRV9UT1RBTF9QQUdFLCB0b3RhbF9wYWdlcykgfFxuJiM0MztcdFx0XHQgICAgICBGSUVMRF9QUkVQKE1UNzkyNV9WRUZVU0VfUEFHRV9JTkRFWCwgcGFnZV9pZHgpO1xuJiM0MztcdGNtZC1cdTAwM2Vjb3VudCAgICAgICAgICA9IGNwdV90b19sZTE2KHBhZ2VfbGVuKTtcbiYjNDM7XHRtZW1jcHkoY21kLVx1MDAzZWJpbl9jb250ZW50LCBkYXRhICYjNDM7IG9mZnNldCwgcGFnZV9sZW4pO1xuJiM0MztcbiYjNDM7XHRyZXQgPSBtdDc2X21jdV9zZW5kX21zZyhcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgTUNVX1VOSV9DTUQoRUZVU0VfQ1RSTCksXG4mIzQzO1x0XHRcdFx0Y21kLCBzaXplb2YoKmNtZCksIHRydWUpO1xuJiM0MztcdGtmcmVlKGNtZCk7XG4mIzQzO1x0cmV0dXJuIHJldDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7LyogUmVhZCBiYWNrIHZlZnVzZSBjb250ZW50IGZyb20gRlcgKFVOSSBFRlVTRV9DVFJMIHF1ZXJ5LCBCVUZGRVJfUkQgdGFnKS5cbiYjNDM7ICogb2Zmc2V0IGlzIHRoZSByYXcgMC1iYXNlZCBpbmRleCBpbnRvIHRoZSBGVyB2ZWZ1c2UgYnVmZmVyOyBzb3VyY2VfbW9kZVxuJiM0MzsgKiBzZWxlY3RzIHRoZSBWRUZVU0UgcmVnaW9uLiBFeHBvc2VkIGZvciB0aGUgZGVidWdmcyBcJiMzNDt2ZWZ1c2VcJiMzNDsgbm9kZS5cbiYjNDM7ICovXG4mIzQzO2ludCBtdDc5MjVfbWN1X3JlYWRfdmVmdXNlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHUxNiBvZmZzZXQsIHUxNiBjb3VudCxcbiYjNDM7XHRcdFx0ICAgdTggKm91dClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCB7XG4mIzQzO1x0XHR1OCByc3ZbNF07XG4mIzQzO1xuJiM0MztcdFx0X19sZTE2IHRhZztcbiYjNDM7XHRcdF9fbGUxNiBsZW47XG4mIzQzO1xuJiM0MztcdFx0dTggc291cmNlX21vZGU7XG4mIzQzO1x0XHR1OCBjb250ZW50X2Zvcm1hdDtcbiYjNDM7XHRcdF9fbGUxNiBvZmZzZXQ7XG4mIzQzO1x0XHRfX2xlMTYgY291bnQ7XG4mIzQzO1x0XHRfX2xlMTYgcnN2MTtcbiYjNDM7XHR9IF9fcGFja2VkIHJlcSA9IHtcbiYjNDM7XHRcdC50YWcgPSBjcHVfdG9fbGUxNihVTklfRUZVU0VfQlVGRkVSX1JEKSxcbiYjNDM7XHRcdC5sZW4gPSBjcHVfdG9fbGUxNihzaXplb2YocmVxKSAtIHNpemVvZihyZXEucnN2KSksXG4mIzQzO1x0XHQuc291cmNlX21vZGUgPSBVTklfRUZVU0VfU09VUkNFX1ZFRlVTRSxcbiYjNDM7XHRcdC5vZmZzZXQgPSBjcHVfdG9fbGUxNihvZmZzZXQpLFxuJiM0MztcdFx0LmNvdW50ID0gY3B1X3RvX2xlMTYoY291bnQpLFxuJiM0MztcdH07XG4mIzQzO1x0c3RydWN0IHtcbiYjNDM7XHRcdHU4IHJzdls0XTtcbiYjNDM7XG4mIzQzO1x0XHRfX2xlMTYgdGFnO1xuJiM0MztcdFx0X19sZTE2IGxlbjtcbiYjNDM7XG4mIzQzO1x0XHR1OCBzb3VyY2VfbW9kZTtcbiYjNDM7XHRcdHU4IGNvbnRlbnRfZm9ybWF0O1xuJiM0MztcdFx0X19sZTE2IG9mZnNldDtcbiYjNDM7XHRcdF9fbGUxNiBjb3VudDtcbiYjNDM7XHRcdHU4IHJzdjFbMl07XG4mIzQzO1x0XHR1OCBkYXRhW107XG4mIzQzO1x0fSBfX3BhY2tlZCAqIHJlcztcbiYjNDM7XHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdHJldCA9IG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2coXHUwMDI2ZGV2LVx1MDAzZW10NzYsIE1DVV9XTV9VTklfQ01EX1FVRVJZKEVGVVNFX0NUUkwpLFxuJiM0MztcdFx0XHRcdFx0XHUwMDI2cmVxLCBzaXplb2YocmVxKSwgdHJ1ZSwgXHUwMDI2c2tiKTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XG4mIzQzO1x0cmVzID0gKHZvaWQgKilza2ItXHUwMDNlZGF0YTtcbiYjNDM7XHRpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2Mgc2l6ZW9mKCpyZXMpICYjNDM7IGNvdW50KSB7XG4mIzQzO1x0XHRkZXZfa2ZyZWVfc2tiKHNrYik7XG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdG1lbWNweShvdXQsIHJlcy1cdTAwM2VkYXRhLCBjb3VudCk7XG4mIzQzO1x0ZGV2X2tmcmVlX3NrYihza2IpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludFxuJiM0MzttdDc5MjVfbG9hZF92ZWZ1c2VfZnJvbV9mdyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBjb25zdCBjaGFyICpmd19uYW1lKVxuJiM0Mzt7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IG10NzZfY29ubmFjMl9md190cmFpbGVyICpoZHI7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IG10NzZfY29ubmFjMl9md19yZWdpb24gKnJlZ2lvbjtcbiYjNDM7XHRzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYgPSBcdTAwMjZkZXYtXHUwMDNlbXQ3NjtcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3ID0gTlVMTDtcbiYjNDM7XHRjb25zdCB1OCAqdmVmdXNlX2Jhc2UgPSBOVUxMO1xuJiM0MztcdHUzMiBvZmZzZXQgPSAwLCBsZW4gPSAwLCBwYXlsb2FkO1xuJiM0MztcdGludCBpLCB0b3RhbF9wYWdlcywgcmV0ID0gMDtcbiYjNDM7XG4mIzQzO1x0aWYgKCFkZXYtXHUwMDNldmVmdXNlX2NhcC5lbmFibGVkKVxuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1xuJiM0MztcdC8qIHJlY29tcHV0ZWQgb24gZXZlcnkgRlcgbG9hZDsgc2V0IHRydWUgb25seSBvbmNlIGEgdmVmdXNlIHJlZ2lvbiBpc1xuJiM0MztcdCAqIGZvdW5kIGluIHRoZSBpbWFnZSBiZWxvdyAodGhlIGRlYnVnZnMgbm9kZSBpcyBnYXRlZCBvbiB0aGlzKS5cbiYjNDM7XHQgKi9cbiYjNDM7XHRkZXYtXHUwMDNldmVmdXNlX2NhcC5wcmVzZW50ID0gZmFsc2U7XG4mIzQzO1xuJiM0MztcdHJldCA9IHJlcXVlc3RfZmlybXdhcmUoXHUwMDI2ZncsIGZ3X25hbWUsIG1kZXYtXHUwMDNlZGV2KTtcbiYjNDM7XHRpZiAocmV0KSB7XG4mIzQzO1x0XHRkZXZfd2FybihtZGV2LVx1MDAzZWRldixcbiYjNDM7XHRcdFx0IFwmIzM0O3ZlZnVzZTogZmlybXdhcmUgJXMgbm90IGF2YWlsYWJsZSAoJWQpLCBza2lwcGluZ1xcblwmIzM0OyxcbiYjNDM7XHRcdFx0IGZ3X25hbWUsIHJldCk7XG4mIzQzO1x0XHRyZXQgPSAwO1xuJiM0MztcdFx0Z290byBvdXQ7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRpZiAoIWZ3IHx8ICFmdy1cdTAwM2VkYXRhIHx8IGZ3LVx1MDAzZXNpemUgXHUwMDNjIHNpemVvZigqaGRyKSkge1xuJiM0MztcdFx0ZGV2X3dhcm4obWRldi1cdTAwM2VkZXYsIFwmIzM0O3ZlZnVzZTogaW52YWxpZCBmaXJtd2FyZSwgc2tpcHBpbmdcXG5cJiMzNDspO1xuJiM0MztcdFx0Z290byBvdXQ7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRoZHIgPSAoY29uc3Qgdm9pZCAqKShmdy1cdTAwM2VkYXRhICYjNDM7IGZ3LVx1MDAzZXNpemUgLSBzaXplb2YoKmhkcikpO1xuJiM0MztcbiYjNDM7XHQvKiBSZWdpb24gZGVzY3JpcHRvcnMgc2l0IHJpZ2h0IGJlZm9yZSB0aGUgdHJhaWxlci4gTWFrZSBzdXJlIHRoZSB3aG9sZVxuJiM0MztcdCAqIGRlc2NyaXB0b3IgYXJyYXkgaXMgd2l0aGluIHRoZSBpbWFnZSBiZWZvcmUgZGVyZWZlcmVuY2luZyB0aGVtLCBzbyBhXG4mIzQzO1x0ICogY29ycnVwdCBuX3JlZ2lvbiBjYW5ub3Qgd2FsayB0aGUgcmVnaW9uIHBvaW50ZXIgYmVmb3JlIGZ3LVx1MDAzZWRhdGEuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKGZ3LVx1MDAzZXNpemUgXHUwMDNjIHNpemVvZigqaGRyKSAmIzQzOyAoc2l6ZV90KWhkci1cdTAwM2VuX3JlZ2lvbiAqIHNpemVvZigqcmVnaW9uKSkge1xuJiM0MztcdFx0ZGV2X3dhcm4obWRldi1cdTAwM2VkZXYsXG4mIzQzO1x0XHRcdCBcJiMzNDt2ZWZ1c2U6IGZpcm13YXJlIHRvbyBzbWFsbCBmb3IgJXUgcmVnaW9uIGRlc2NyaXB0b3JzLCBza2lwcGluZ1xcblwmIzM0OyxcbiYjNDM7XHRcdFx0IGhkci1cdTAwM2VuX3JlZ2lvbik7XG4mIzQzO1x0XHRnb3RvIG91dDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGhkci1cdTAwM2VuX3JlZ2lvbjsgaSYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdHJlZ2lvbiA9IChjb25zdCB2b2lkICopKChjb25zdCB1OCAqKWhkciAtXG4mIzQzO1x0XHRcdFx0XHQoaGRyLVx1MDAzZW5fcmVnaW9uIC0gaSkgKiBzaXplb2YoKnJlZ2lvbikpO1xuJiM0MztcdFx0bGVuID0gbGUzMl90b19jcHUocmVnaW9uLVx1MDAzZWxlbik7XG4mIzQzO1xuJiM0MztcdFx0aWYgKGxlbiBcdTAwM2UgZnctXHUwMDNlc2l6ZSAtIG9mZnNldCkge1xuJiM0MztcdFx0XHRkZXZfd2FybihtZGV2LVx1MDAzZWRldiwgXCYjMzQ7dmVmdXNlOiBpbnZhbGlkIGZpcm13YXJlIHJlZ2lvbiwgc2tpcHBpbmdcXG5cJiMzNDspO1xuJiM0MztcdFx0XHRnb3RvIG91dDtcbiYjNDM7XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHRpZiAoKHJlZ2lvbi1cdTAwM2VmZWF0dXJlX3NldCBcdTAwMjYgRldfRkVBVFVSRV9OT05fREwpIFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0ICAgIHJlZ2lvbi1cdTAwM2V0eXBlID09IEZXX1RZUEVfRVhURU5EX0JJTl9FRlVTRSkge1xuJiM0MztcdFx0XHR2ZWZ1c2VfYmFzZSA9IGZ3LVx1MDAzZWRhdGEgJiM0Mzsgb2Zmc2V0O1xuJiM0MztcdFx0XHRkZXYtXHUwMDNldmVmdXNlX2NhcC5wcmVzZW50ID0gdHJ1ZTtcbiYjNDM7XHRcdFx0YnJlYWs7XG4mIzQzO1x0XHR9XG4mIzQzO1x0XHRvZmZzZXQgJiM0Mzs9IGxlbjtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGlmICghdmVmdXNlX2Jhc2UpIHtcbiYjNDM7XHRcdGRldl93YXJuKG1kZXYtXHUwMDNlZGV2LFxuJiM0MztcdFx0XHQgXCYjMzQ7RldfVFlQRV9FWFRFTkRfQklOX0VGVVNFIGNodW5rIG5vdCBmb3VuZCBpbiBGVyBpbWFnZSwgdmlydHVhbCBlZnVzZSBza2lwcGVkXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdC8qIHZlZnVzZV9jYXAucHJlc2VudCBzdGF5cyBmYWxzZSAtXHUwMDNlIGRlYnVnZnMgbm9kZSBub3QgZXhwb3NlZCBvbiBhXG4mIzQzO1x0XHQgKiBXRiB3aXRob3V0IGEgdmlydHVhbCBlZnVzZS4gdmVmdXNlX2NhcC5lbmFibGVkICh0aGUgRlctcmVwb3J0ZWRcbiYjNDM7XHRcdCAqIGNhcGFiaWxpdHkpIGlzIGxlZnQgdW50b3VjaGVkLlxuJiM0MztcdFx0ICovXG4mIzQzO1x0XHRnb3RvIG91dDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdC8qIFRoZSBwYWNrZWQgRlcgcmVnaW9uIGNhcnJpZXMgdGhlIHZlZnVzZSBwYXlsb2FkIHBsdXMgY29ubmFjXG4mIzQzO1x0ICogcGVyLXJlZ2lvbiBmcmFtaW5nICg0LWJ5dGUgQ1JDICYjNDM7IDE2LWJ5dGUgYWxpZ25tZW50KSwgc28gcmVnaW9uXG4mIzQzO1x0ICogbGVuZ3RoIGlzIGxhcmdlciB0aGFuIHRoZSBGVy1yZXBvcnRlZCBwYXlsb2FkLiBPbmx5IHRoZSBsZWFkaW5nXG4mIzQzO1x0ICogdmVmdXNlX2NhcC5zaXplIGJ5dGVzIGFyZSB0aGUgYWN0dWFsIHZlZnVzZSBjb250ZW50IHRvIHB1c2guXG4mIzQzO1x0ICovXG4mIzQzO1x0cGF5bG9hZCA9IGRldi1cdTAwM2V2ZWZ1c2VfY2FwLnNpemU7XG4mIzQzO1xuJiM0MztcdC8qIHZpcnR1YWwgZWZ1c2UgaXMgYW4gb3B0aW9uYWwgb3ZlcnJpZGU6IGlmIGl0IGNhbm5vdCBiZSBhcHBsaWVkIHRoZVxuJiM0MztcdCAqIGNoaXAgc3RpbGwgd29ya3Mgb24gaXRzIGRlZmF1bHQgZWZ1c2UgdmFsdWVzLCBzbyB0aGUgY2hlY2tzIGJlbG93XG4mIzQzO1x0ICogb25seSB3YXJuIGFuZCBza2lwIC0gdGhleSBtdXN0IG5vdCBmYWlsIGZpcm13YXJlIGJyaW5nLXVwLlxuJiM0MztcdCAqL1xuJiM0MztcbiYjNDM7XHQvKiBbQ2hlY2sgIzFdIHJlZ2lvbiBtdXN0IGhvbGQgYXQgbGVhc3QgdGhlIEZXLXJlcG9ydGVkIHBheWxvYWQgKi9cbiYjNDM7XHRpZiAobGVuIFx1MDAzYyBwYXlsb2FkKSB7XG4mIzQzO1x0XHRkZXZfd2FybihtZGV2LVx1MDAzZWRldixcbiYjNDM7XHRcdFx0IFwmIzM0O3ZlZnVzZTogcmVnaW9uIHNpemUgJXUgc21hbGxlciB0aGFuIEZXIGNhcGFiaWxpdHkgJXUsIHNraXBwaW5nXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHQgbGVuLCBwYXlsb2FkKTtcbiYjNDM7XHRcdGdvdG8gb3V0O1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0dG90YWxfcGFnZXMgPSBESVZfUk9VTkRfVVAocGF5bG9hZCwgTVQ3OTI1X1ZFRlVTRV9QQUdFX1NJWkUpO1xuJiM0MztcdGlmICh0b3RhbF9wYWdlcyBcdTAwM2UgTVQ3OTI1X1ZFRlVTRV9NQVhfUEFHRVMpIHtcbiYjNDM7XHRcdGRldl93YXJuKG1kZXYtXHUwMDNlZGV2LFxuJiM0MztcdFx0XHQgXCYjMzQ7dmVmdXNlOiBwYXlsb2FkIHRvbyBsYXJnZTogJXUgYnl0ZXMgKCVkIHBhZ2VzKSwgbWF4ICVkIHBhZ2VzIHN1cHBvcnRlZCwgc2tpcHBpbmdcXG5cJiMzNDssXG4mIzQzO1x0XHRcdCBwYXlsb2FkLCB0b3RhbF9wYWdlcywgTVQ3OTI1X1ZFRlVTRV9NQVhfUEFHRVMpO1xuJiM0MztcdFx0Z290byBvdXQ7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB0b3RhbF9wYWdlczsgaSYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdHJldCA9IG10NzkyNV9tY3Vfc2VuZF92ZWZ1c2VfcGFnZShkZXYsIHZlZnVzZV9iYXNlLCBwYXlsb2FkLFxuJiM0MztcdFx0XHRcdFx0XHQgIGksIHRvdGFsX3BhZ2VzKTtcbiYjNDM7XHRcdGlmIChyZXQpIHtcbiYjNDM7XHRcdFx0ZGV2X3dhcm4obWRldi1cdTAwM2VkZXYsXG4mIzQzO1x0XHRcdFx0IFwmIzM0O3ZlZnVzZSBwYWdlICVkLyVkIHNlbmQgZmFpbGVkOiAlZCwgc2tpcHBpbmdcXG5cJiMzNDssXG4mIzQzO1x0XHRcdFx0IGkgJiM0MzsgMSwgdG90YWxfcGFnZXMsIHJldCk7XG4mIzQzO1x0XHRcdHJldCA9IDA7XG4mIzQzO1x0XHRcdGdvdG8gb3V0O1xuJiM0MztcdFx0fVxuJiM0MztcdH1cbiYjNDM7XG4mIzQzO291dDpcbiYjNDM7XHRyZWxlYXNlX2Zpcm13YXJlKGZ3KTtcbiYjNDM7XHRyZXR1cm4gcmV0O1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBpbnQgbXQ3OTI1X2xvYWRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIGNvbnN0IGNoYXIgKmZ3X25hbWUpXG4ge1xuIFx0Y29uc3Qgc3RydWN0IG10NzZfY29ubmFjMl9md190cmFpbGVyICpoZHI7XG5AQCAtMTEyNiw2ICYjNDM7MTMzNCwxNyBAQCBtdDc5MjVfbWN1X2dldF9uaWNfY2FwYWJpbGl0eShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuIFx0XHRjYXNlIE1UX05JQ19DQVBfRU1MX0NBUDpcbiBcdFx0XHRtdDc5MjVfbWN1X3BhcnNlX2VtbF9jYXAoZGV2LCB0bHYtXHUwMDNlZGF0YSk7XG4gXHRcdFx0YnJlYWs7XG4mIzQzO1x0XHRjYXNlIE1UX05JQ19DQVBfVkVGVVNFX0lORk86IHtcbiYjNDM7XHRcdFx0c3RydWN0IG10NzkyNV92ZWZ1c2VfY2FwICpjYXA7XG4mIzQzO1xuJiM0MztcdFx0XHRpZiAobGVuIFx1MDAzYyBzaXplb2YoKnRsdikgJiM0Mzsgc2l6ZW9mKCpjYXApKVxuJiM0MztcdFx0XHRcdGJyZWFrO1xuJiM0MztcbiYjNDM7XHRcdFx0Y2FwID0gKHN0cnVjdCBtdDc5MjVfdmVmdXNlX2NhcCAqKXRsdi1cdTAwM2VkYXRhO1xuJiM0MztcdFx0XHRkZXYtXHUwMDNldmVmdXNlX2NhcC5lbmFibGVkICAgPSBjYXAtXHUwMDNlZW5hYmxlZDtcbiYjNDM7XHRcdFx0ZGV2LVx1MDAzZXZlZnVzZV9jYXAuc2l6ZSAgICAgID0gbGUxNl90b19jcHUoY2FwLVx1MDAzZXNpemUpO1xuJiM0MztcdFx0XHRicmVhaztcbiYjNDM7XHRcdH1cbiBcdFx0ZGVmYXVsdDpcbiBcdFx0XHRicmVhaztcbiBcdFx0fVxuQEAgLTExOTksNiAmIzQzOzE0MTgsMTMgQEAgaW50IG10NzkyNV9ydW5fZmlybXdhcmUoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbiBcdGlmIChlcnIpXG4gXHRcdHJldHVybiBlcnI7XG4gXG4mIzQzO1x0LyogVmlydHVhbCBlZnVzZSBpcyBiZXN0LWVmZm9ydCBhbmQgY3VycmVudGx5IG5ldmVyIGZhaWxzIGJyaW5nLXVwLCBidXRcbiYjNDM7XHQgKiBrZWVwIHRoZSBlcnJvciBwcm9wYWdhdGlvbiBmb3IgYSBwb3NzaWJsZSBmdXR1cmUgZmF0YWwgdmVmdXNlIGVycm9yLlxuJiM0MztcdCAqL1xuJiM0MztcdGVyciA9IG10NzkyNV9sb2FkX3ZlZnVzZV9mcm9tX2Z3KGRldiwgbXQ3OTJ4X3JhbV9uYW1lKGRldikpO1xuJiM0MztcdGlmIChlcnIpXG4mIzQzO1x0XHRyZXR1cm4gZXJyO1xuJiM0MztcbiBcdGVyciA9IG10NzkyNV9sb2FkX2NsYyhkZXYsIG10NzkyeF9yYW1fbmFtZShkZXYpKTtcbiBcdGlmIChlcnIpXG4gXHRcdHJldHVybiBlcnI7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuaFxuaW5kZXggMTFmOWVhYzEzZmZjNi4uYTBlYjMwZDI1NzBkZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuaFxuQEAgLTEzNyw2ICYjNDM7MTM3LDQxIEBAIGVudW0ge1xuIFx0VU5JX0VGVVNFX0JVRkZFUl9SRCxcbiB9O1xuIFxuJiM0MzsvKiBwYWdlIHNpemUgYW5kIGNvbnRlbnRfZm9ybWF0IGxheW91dCBmb2xsb3cgdGhlIEZXIGJ1ZmZlci1tb2RlIEFCSSAqL1xuJiM0MzsjZGVmaW5lIE1UNzkyNV9WRUZVU0VfUEFHRV9TSVpFXHRcdDEwMjRcdC8qIEZXIEJVRkZFUl9CSU5fUEFHRV9TSVpFICgweDQwMCkgKi9cbiYjNDM7I2RlZmluZSBNVDc5MjVfVkVGVVNFX01BWF9QQUdFU1x0XHQ3XHQvKiBjb250ZW50X2Zvcm1hdCBwYWdlIGZpZWxkcyBhcmUgMy1iaXQgKi9cbiYjNDM7XG4mIzQzOyNkZWZpbmUgTVQ3OTI1X1ZFRlVTRV9UT1RBTF9QQUdFXHRHRU5NQVNLKDcsIDUpXHQvKiBGVyBCVUZGRVJfQklOX1RPVEFMX1BBR0UgKi9cbiYjNDM7I2RlZmluZSBNVDc5MjVfVkVGVVNFX1BBR0VfSU5ERVhcdEdFTk1BU0soNCwgMilcdC8qIEZXIEJVRkZFUl9CSU5fUEFHRV9JTkRFWCAqL1xuJiM0MztcbiYjNDM7LyogYnVmZmVyIG1vZGUgY29udGVudCBzb3VyY2UsIGFsaWducyB3aXRoIEZXIEJVRkZFUl9TT1VSQ0VfTU9ERV9JTkZPXyogKi9cbiYjNDM7ZW51bSB7XG4mIzQzO1x0VU5JX0VGVVNFX1NPVVJDRV9FRlVTRSA9IDAsXG4mIzQzO1x0VU5JX0VGVVNFX1NPVVJDRV9FRVBST00gPSAxLFxuJiM0MztcdFVOSV9FRlVTRV9TT1VSQ0VfVkVGVVNFID0gMixcbiYjNDM7fTtcbiYjNDM7XG4mIzQzO3N0cnVjdCBtdDc5MjVfdmVmdXNlX2NhcCB7XG4mIzQzO1x0dTggdmVyc2lvbjtcbiYjNDM7XHR1OCBlbmFibGVkO1xuJiM0MztcdF9fbGUxNiBzaXplO1xuJiM0MztcdF9fbGUzMiBoYXNoX2FkZHI7XG4mIzQzO30gX19wYWNrZWQ7XG4mIzQzO1xuJiM0MztzdHJ1Y3QgbXQ3OTI1X3ZlZnVzZV9wYWdlX2NtZCB7XG4mIzQzO1x0dTggcnN2WzRdO1x0XHQvKiBVTklfQ01EX0VGVVNFX0NPTlRST0wgaGVhZGVyIGJlZm9yZSBUTFYgKi9cbiYjNDM7XG4mIzQzO1x0X19sZTE2IHRhZztcdFx0LyogVU5JX0VGVVNFX0JVRkZFUl9NT0RFICovXG4mIzQzO1x0X19sZTE2IGxlbjtcbiYjNDM7XHR1OCBzb3VyY2VfbW9kZTtcdFx0LyogVU5JX0VGVVNFX1NPVVJDRV9WRUZVU0UgKi9cbiYjNDM7XHR1OCBjb250ZW50X2Zvcm1hdDtcdC8qIFs3OjVdPXRvdGFsX3BhZ2VzIFs0OjJdPXBhZ2VfaWR4ICovXG4mIzQzO1x0X19sZTE2IGNvdW50O1x0XHQvKiB2YWxpZCBieXRlcyBpbiB0aGlzIHBhZ2UgKi9cbiYjNDM7XHR1OCBiaW5fY29udGVudFtNVDc5MjVfVkVGVVNFX1BBR0VfU0laRV07XG4mIzQzO30gX19wYWNrZWQ7XG4mIzQzO1xuJiM0MztpbnQgbXQ3OTI1X21jdV9yZWFkX3ZlZnVzZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1MTYgb2Zmc2V0LCB1MTYgY291bnQsXG4mIzQzO1x0XHRcdCAgIHU4ICpvdXQpO1xuJiM0MztcbiBlbnVtIHtcbiBcdFVOSV9DTURfQUNDRVNTX1JFR19CQVNJQyA9IDB4MCxcbiBcdFVOSV9DTURfQUNDRVNTX1JGX1JFR19CQVNJQyxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaFxuaW5kZXggOWVmYzI1MWNiNzQ1Zi4uNzBhNzRlMDcxYjE3YiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmhcbkBAIC0zNDIsNiAmIzQzOzM0MiwxMiBAQCBzdHJ1Y3QgbXQ3OTJ4X2RldiB7XG4gXHRzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqbmFuX3ZpZjtcbiBcdGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfaWZhY2VfY29tYmluYXRpb24gKmlmYWNlX2NvbWJpbmF0aW9ucztcbiBcdGludCBuX2lmYWNlX2NvbWJpbmF0aW9ucztcbiYjNDM7XG4mIzQzO1x0c3RydWN0IHtcbiYjNDM7XHRcdGJvb2wgZW5hYmxlZDtcdC8qIEZXIHJlcG9ydHMgdmVmdXNlIGNhcGFiaWxpdHkgKHVuY29uZGl0aW9uYWwpICovXG4mIzQzO1x0XHRib29sIHByZXNlbnQ7XHQvKiBhIHZlZnVzZSByZWdpb24gd2FzIGZvdW5kIGluIHRoZSBGVyBpbWFnZSAqL1xuJiM0MztcdFx0dTE2IHNpemU7XG4mIzQzO1x0fSB2ZWZ1c2VfY2FwO1xuIH07XG4gXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgbXQ3OTJ4X2Jzc19jb25mICpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwOToxNzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TVQ3OTI1VSYjMzQ7LAogICAgJiMzNDtNVDc5MjVFJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7LAogICAgJiMzNDtQQ0kmIzM0OywKICAgICYjMzQ7REVCVUdfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc5MjVfcnVuX2Zpcm13YXJlJiMzNDssCiAgICAmIzM0O210NzkyNV9tY3VfcmVhZF92ZWZ1c2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBsb2FkaW5nICYjMzk7dmlydHVhbCBlZnVzZSYjMzk7ICh2ZWZ1c2UpIGRhdGEgZnJvbSBmaXJtd2FyZSBmb3IgdGhlIE1lZGlhVGVrIE1UNzkyNSB3aXJlbGVzcyBkcml2ZXIuIFRoZSBkcml2ZXIgaGFzIGEgVVNCIHZhcmlhbnQgKE1UNzkyNVUpIHdoaWNoIGNhbiBiZSBmdXp6ZWQgdXNpbmcgc3l6a2FsbGVyJiMzOTtzIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcy4gVGhlIGZpcm13YXJlIGxvYWRpbmcgbG9naWMgaW4gYG10NzkyNV9ydW5fZmlybXdhcmVgIGFuZCB0aGUgZGVidWdmcyByZWFkIGZ1bmN0aW9uIGBtdDc5MjVfbWN1X3JlYWRfdmVmdXNlYCBhcmUgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMWU4ZWQ0NzY3MDMyYjg3NmNhOTUxZDljYWQ2NTJlZDI3ZjRmNWVmNQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgQXVnIDUgMDk6MTc6MjkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuaAppbmRleCAwZWRlZGE1NjllOWE1Li45Yzg0NGJlZjkyYzlmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmgKQEAgLTQ0LDYgJiM0Mzs0NCw3IEBACiBlbnVtIHsKIAlGV19UWVBFX0RFRkFVTFQgPSAwLAogCUZXX1RZUEVfQ0xDID0gMiwKJiM0MzsJRldfVFlQRV9FWFRFTkRfQklOX0VGVVNFID0gMywKIAlGV19UWVBFX01BWF9OVU0gPSAyNTUKIH07CiAKQEAgLTE0ODEsNiAmIzQzOzE0ODIsNyBAQCBlbnVtIHsKIAlNVF9OSUNfQ0FQXzZHLAogCU1UX05JQ19DQVBfQ0hJUF9DQVAgPSAweDIwLAogCU1UX05JQ19DQVBfRU1MX0NBUCA9IDB4MjIsCiYjNDM7CU1UX05JQ19DQVBfVkVGVVNFX0lORk8gPSAweDQ0LAogfTsKIAogI2RlZmluZSBVTklfV09XX0RFVEVDVF9UWVBFX01BR0lDCQlCSVQoMCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYwppbmRleCBkMDFmZjQ5ZGU0N2FmLi4zNGUyNjFlMjQ3ZmNkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jCkBAIC0yODYsNiAmIzQzOzI4Niw1MSBAQCBzdGF0aWMgaW50IG10NzkyNV9jaGlwX3Jlc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpCiAKIERFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3Jlc2V0LCBOVUxMLCBtdDc5MjVfY2hpcF9yZXNldCwgJiMzNDslbGxkXG4mIzM0Oyk7CiAKJiM0MztzdGF0aWMgaW50CiYjNDM7bXQ3OTI1X3ZlZnVzZV9yZWFkKHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBkZXZfZ2V0X2RydmRhdGEocy0mZ3Q7cHJpdmF0ZSk7CiYjNDM7CXUxNiBzaXplID0gZGV2LSZndDt2ZWZ1c2VfY2FwLnNpemU7CiYjNDM7CWludCBvZmYgPSAwOwomIzQzOwl1OCAqYnVmOwomIzQzOwlpbnQgcmV0ID0gMDsKJiM0MzsKJiM0MzsJaWYgKCFkZXYtJmd0O3ZlZnVzZV9jYXAucHJlc2VudCB8fCAhc2l6ZSkgewomIzQzOwkJc2VxX3B1dHMocywgJiMzNDt2ZWZ1c2U6IG5vIHJlZ2lvbiBpbiBGVyBpbWFnZVxuJiMzNDspOwomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CX0KJiM0MzsKJiM0MzsJYnVmID0ga3phbGxvYyhzaXplLCBHRlBfS0VSTkVMKTsKJiM0MzsJaWYgKCFidWYpCiYjNDM7CQlyZXR1cm4gLUVOT01FTTsKJiM0MzsKJiM0MzsJbXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTsKJiM0MzsJd2hpbGUgKG9mZiAmbHQ7IChpbnQpc2l6ZSkgewomIzQzOwkJdTE2IGNodW5rID0gbWluX3QodTE2LCA1MTIsIHNpemUgLSBvZmYpOwomIzQzOwomIzQzOwkJcmV0ID0gbXQ3OTI1X21jdV9yZWFkX3ZlZnVzZShkZXYsIG9mZiwgY2h1bmssIGJ1ZiAmIzQzOyBvZmYpOwomIzQzOwkJaWYgKHJldCkKJiM0MzsJCQlicmVhazsKJiM0MzsJCW9mZiAmIzQzOz0gY2h1bms7CiYjNDM7CX0KJiM0MzsJbXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTsKJiM0MzsKJiM0MzsJaWYgKHJldCkgewomIzQzOwkJc2VxX3ByaW50ZihzLCAmIzM0O3ZlZnVzZTogcmVhZCBmYWlsZWQgYXQgMHglMDR4ICglZClcbiYjMzQ7LCBvZmYsIHJldCk7CiYjNDM7CQlrZnJlZShidWYpOwomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CX0KJiM0MzsKJiM0MzsJc2VxX3ByaW50ZihzLCAmIzM0O3ZlZnVzZSBjb250ZW50OiAldSBieXRlc1xuJiMzNDssIHNpemUpOwomIzQzOwlmb3IgKG9mZiA9IDA7IG9mZiAmbHQ7IChpbnQpc2l6ZTsgb2ZmICYjNDM7PSAxNikKJiM0MzsJCXNlcV9wcmludGYocywgJiMzNDslMDR4OiAlKnBoXG4mIzM0Oywgb2ZmLAomIzQzOwkJCSAgIChpbnQpbWluX3QodTE2LCAxNiwgc2l6ZSAtIG9mZiksIGJ1ZiAmIzQzOyBvZmYpOwomIzQzOwomIzQzOwlrZnJlZShidWYpOwomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiBpbnQgbXQ3OTI1X2luaXRfZGVidWdmcyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KQogewogCXN0cnVjdCBkZW50cnkgKmRpcjsKQEAgLTMwOSw2ICYjNDM7MzU0LDEzIEBAIGludCBtdDc5MjVfaW5pdF9kZWJ1Z2ZzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpCiAJZGVidWdmc19jcmVhdGVfZmlsZSgmIzM0O2lkbGUtdGltZW91dCYjMzQ7LCAwNjAwLCBkaXIsIGRldiwKIAkJCSAgICAmYW1wO2ZvcHNfcG1faWRsZV90aW1lb3V0KTsKIAlkZWJ1Z2ZzX2NyZWF0ZV9maWxlKCYjMzQ7Y2hpcF9yZXNldCYjMzQ7LCAwNjAwLCBkaXIsIGRldiwgJmFtcDtmb3BzX3Jlc2V0KTsKJiM0MzsJLyogb25seSBleHBvc2UgdGhlIHZlZnVzZSByZWFkIG5vZGUgd2hlbiBhIHZlZnVzZSByZWdpb24gd2FzIGZvdW5kIGluIHRoZQomIzQzOwkgKiBGVyBpbWFnZSAoRlcgcmVwb3J0cyB0aGUgY2FwYWJpbGl0eSB1bmNvbmRpdGlvbmFsbHksIHNvIGdhdGUgb24gdGhlCiYjNDM7CSAqIGFjdHVhbCByZWdpb24gcHJlc2VuY2UgaW5zdGVhZCkKJiM0MzsJICovCiYjNDM7CWlmIChkZXYtJmd0O3ZlZnVzZV9jYXAucHJlc2VudCkKJiM0MzsJCWRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZShkZXYtJmd0O210NzYuZGV2LCAmIzM0O3ZlZnVzZSYjMzQ7LCBkaXIsCiYjNDM7CQkJCQkgICAgbXQ3OTI1X3ZlZnVzZV9yZWFkKTsKIAlkZWJ1Z2ZzX2NyZWF0ZV9kZXZtX3NlcWZpbGUoZGV2LSZndDttdDc2LmRldiwgJiMzNDtydW50aW1lX3BtX3N0YXRzJiMzNDssIGRpciwKIAkJCQkgICAgbXQ3OTJ4X3BtX3N0YXRzKTsKIAlkZWJ1Z2ZzX2NyZWF0ZV9maWxlKCYjMzQ7ZGVlcC1zbGVlcCYjMzQ7LCAwNjAwLCBkaXIsIGRldiwgJmFtcDtmb3BzX2RzKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMKaW5kZXggZmEyOWM0ODZhNDU1My4uODAwZDQ4YmVlMTEwYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMKQEAgLTg3MSw2ICYjNDM7ODcxLDIxNCBAQCBzdGF0aWMgaW50IG10NzkyNV9tY3VfcmVhZF9lZXByb20oc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTMyIG9mZnNldCwgdTggKnZhbCkKIAlyZXR1cm4gMDsKIH0KIAomIzQzO3N0YXRpYyBpbnQKJiM0MzttdDc5MjVfbWN1X3NlbmRfdmVmdXNlX3BhZ2Uoc3RydWN0IG10NzkyeF9kZXYgKmRldiwKJiM0MzsJCQkgICAgY29uc3QgdTggKmRhdGEsIHUzMiB0b3RhbF9sZW4sCiYjNDM7CQkJICAgIGludCBwYWdlX2lkeCwgaW50IHRvdGFsX3BhZ2VzKQomIzQzO3sKJiM0MzsJc3RydWN0IG10NzkyNV92ZWZ1c2VfcGFnZV9jbWQgKmNtZDsKJiM0MzsJc2l6ZV90IG9mZnNldCA9IChzaXplX3QpcGFnZV9pZHggKiBNVDc5MjVfVkVGVVNFX1BBR0VfU0laRTsKJiM0MzsJdTE2IHBhZ2VfbGVuID0gKHUxNiltaW5fdChzaXplX3QsCiYjNDM7CQkJCSAgTVQ3OTI1X1ZFRlVTRV9QQUdFX1NJWkUsCiYjNDM7CQkJCSAgdG90YWxfbGVuIC0gb2Zmc2V0KTsKJiM0MzsJaW50IHJldDsKJiM0MzsKJiM0MzsJY21kID0ga3phbGxvYyhzaXplb2YoKmNtZCksIEdGUF9LRVJORUwpOwomIzQzOwlpZiAoIWNtZCkKJiM0MzsJCXJldHVybiAtRU5PTUVNOwomIzQzOwomIzQzOwljbWQtJmd0O3RhZyAgICAgICAgICAgID0gY3B1X3RvX2xlMTYoVU5JX0VGVVNFX0JVRkZFUl9NT0RFKTsKJiM0MzsJY21kLSZndDtsZW4gICAgICAgICAgICA9IGNwdV90b19sZTE2KHNpemVvZigqY21kKSAtIHNpemVvZihjbWQtJmd0O3JzdikpOwomIzQzOwljbWQtJmd0O3NvdXJjZV9tb2RlICAgID0gVU5JX0VGVVNFX1NPVVJDRV9WRUZVU0U7CiYjNDM7CWNtZC0mZ3Q7Y29udGVudF9mb3JtYXQgPSBGSUVMRF9QUkVQKE1UNzkyNV9WRUZVU0VfVE9UQUxfUEFHRSwgdG90YWxfcGFnZXMpIHwKJiM0MzsJCQkgICAgICBGSUVMRF9QUkVQKE1UNzkyNV9WRUZVU0VfUEFHRV9JTkRFWCwgcGFnZV9pZHgpOwomIzQzOwljbWQtJmd0O2NvdW50ICAgICAgICAgID0gY3B1X3RvX2xlMTYocGFnZV9sZW4pOwomIzQzOwltZW1jcHkoY21kLSZndDtiaW5fY29udGVudCwgZGF0YSAmIzQzOyBvZmZzZXQsIHBhZ2VfbGVuKTsKJiM0MzsKJiM0MzsJcmV0ID0gbXQ3Nl9tY3Vfc2VuZF9tc2coJmFtcDtkZXYtJmd0O210NzYsIE1DVV9VTklfQ01EKEVGVVNFX0NUUkwpLAomIzQzOwkJCQljbWQsIHNpemVvZigqY21kKSwgdHJ1ZSk7CiYjNDM7CWtmcmVlKGNtZCk7CiYjNDM7CXJldHVybiByZXQ7CiYjNDM7fQomIzQzOwomIzQzOy8qIFJlYWQgYmFjayB2ZWZ1c2UgY29udGVudCBmcm9tIEZXIChVTkkgRUZVU0VfQ1RSTCBxdWVyeSwgQlVGRkVSX1JEIHRhZykuCiYjNDM7ICogb2Zmc2V0IGlzIHRoZSByYXcgMC1iYXNlZCBpbmRleCBpbnRvIHRoZSBGVyB2ZWZ1c2UgYnVmZmVyOyBzb3VyY2VfbW9kZQomIzQzOyAqIHNlbGVjdHMgdGhlIFZFRlVTRSByZWdpb24uIEV4cG9zZWQgZm9yIHRoZSBkZWJ1Z2ZzICYjMzQ7dmVmdXNlJiMzNDsgbm9kZS4KJiM0MzsgKi8KJiM0MztpbnQgbXQ3OTI1X21jdV9yZWFkX3ZlZnVzZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1MTYgb2Zmc2V0LCB1MTYgY291bnQsCiYjNDM7CQkJICAgdTggKm91dCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCB7CiYjNDM7CQl1OCByc3ZbNF07CiYjNDM7CiYjNDM7CQlfX2xlMTYgdGFnOwomIzQzOwkJX19sZTE2IGxlbjsKJiM0MzsKJiM0MzsJCXU4IHNvdXJjZV9tb2RlOwomIzQzOwkJdTggY29udGVudF9mb3JtYXQ7CiYjNDM7CQlfX2xlMTYgb2Zmc2V0OwomIzQzOwkJX19sZTE2IGNvdW50OwomIzQzOwkJX19sZTE2IHJzdjE7CiYjNDM7CX0gX19wYWNrZWQgcmVxID0gewomIzQzOwkJLnRhZyA9IGNwdV90b19sZTE2KFVOSV9FRlVTRV9CVUZGRVJfUkQpLAomIzQzOwkJLmxlbiA9IGNwdV90b19sZTE2KHNpemVvZihyZXEpIC0gc2l6ZW9mKHJlcS5yc3YpKSwKJiM0MzsJCS5zb3VyY2VfbW9kZSA9IFVOSV9FRlVTRV9TT1VSQ0VfVkVGVVNFLAomIzQzOwkJLm9mZnNldCA9IGNwdV90b19sZTE2KG9mZnNldCksCiYjNDM7CQkuY291bnQgPSBjcHVfdG9fbGUxNihjb3VudCksCiYjNDM7CX07CiYjNDM7CXN0cnVjdCB7CiYjNDM7CQl1OCByc3ZbNF07CiYjNDM7CiYjNDM7CQlfX2xlMTYgdGFnOwomIzQzOwkJX19sZTE2IGxlbjsKJiM0MzsKJiM0MzsJCXU4IHNvdXJjZV9tb2RlOwomIzQzOwkJdTggY29udGVudF9mb3JtYXQ7CiYjNDM7CQlfX2xlMTYgb2Zmc2V0OwomIzQzOwkJX19sZTE2IGNvdW50OwomIzQzOwkJdTggcnN2MVsyXTsKJiM0MzsJCXU4IGRhdGFbXTsKJiM0MzsJfSBfX3BhY2tlZCAqIHJlczsKJiM0MzsJc3RydWN0IHNrX2J1ZmYgKnNrYjsKJiM0MzsJaW50IHJldDsKJiM0MzsKJiM0MzsJcmV0ID0gbXQ3Nl9tY3Vfc2VuZF9hbmRfZ2V0X21zZygmYW1wO2Rldi0mZ3Q7bXQ3NiwgTUNVX1dNX1VOSV9DTURfUVVFUlkoRUZVU0VfQ1RSTCksCiYjNDM7CQkJCQkmYW1wO3JlcSwgc2l6ZW9mKHJlcSksIHRydWUsICZhbXA7c2tiKTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CiYjNDM7CXJlcyA9ICh2b2lkICopc2tiLSZndDtkYXRhOwomIzQzOwlpZiAoc2tiLSZndDtsZW4gJmx0OyBzaXplb2YoKnJlcykgJiM0MzsgY291bnQpIHsKJiM0MzsJCWRldl9rZnJlZV9za2Ioc2tiKTsKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwl9CiYjNDM7CiYjNDM7CW1lbWNweShvdXQsIHJlcy0mZ3Q7ZGF0YSwgY291bnQpOwomIzQzOwlkZXZfa2ZyZWVfc2tiKHNrYik7CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50CiYjNDM7bXQ3OTI1X2xvYWRfdmVmdXNlX2Zyb21fZncoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgY29uc3QgY2hhciAqZndfbmFtZSkKJiM0Mzt7CiYjNDM7CWNvbnN0IHN0cnVjdCBtdDc2X2Nvbm5hYzJfZndfdHJhaWxlciAqaGRyOwomIzQzOwljb25zdCBzdHJ1Y3QgbXQ3Nl9jb25uYWMyX2Z3X3JlZ2lvbiAqcmVnaW9uOwomIzQzOwlzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYgPSAmYW1wO2Rldi0mZ3Q7bXQ3NjsKJiM0MzsJY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdyA9IE5VTEw7CiYjNDM7CWNvbnN0IHU4ICp2ZWZ1c2VfYmFzZSA9IE5VTEw7CiYjNDM7CXUzMiBvZmZzZXQgPSAwLCBsZW4gPSAwLCBwYXlsb2FkOwomIzQzOwlpbnQgaSwgdG90YWxfcGFnZXMsIHJldCA9IDA7CiYjNDM7CiYjNDM7CWlmICghZGV2LSZndDt2ZWZ1c2VfY2FwLmVuYWJsZWQpCiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsKJiM0MzsJLyogcmVjb21wdXRlZCBvbiBldmVyeSBGVyBsb2FkOyBzZXQgdHJ1ZSBvbmx5IG9uY2UgYSB2ZWZ1c2UgcmVnaW9uIGlzCiYjNDM7CSAqIGZvdW5kIGluIHRoZSBpbWFnZSBiZWxvdyAodGhlIGRlYnVnZnMgbm9kZSBpcyBnYXRlZCBvbiB0aGlzKS4KJiM0MzsJICovCiYjNDM7CWRldi0mZ3Q7dmVmdXNlX2NhcC5wcmVzZW50ID0gZmFsc2U7CiYjNDM7CiYjNDM7CXJldCA9IHJlcXVlc3RfZmlybXdhcmUoJmFtcDtmdywgZndfbmFtZSwgbWRldi0mZ3Q7ZGV2KTsKJiM0MzsJaWYgKHJldCkgewomIzQzOwkJZGV2X3dhcm4obWRldi0mZ3Q7ZGV2LAomIzQzOwkJCSAmIzM0O3ZlZnVzZTogZmlybXdhcmUgJXMgbm90IGF2YWlsYWJsZSAoJWQpLCBza2lwcGluZ1xuJiMzNDssCiYjNDM7CQkJIGZ3X25hbWUsIHJldCk7CiYjNDM7CQlyZXQgPSAwOwomIzQzOwkJZ290byBvdXQ7CiYjNDM7CX0KJiM0MzsKJiM0MzsJaWYgKCFmdyB8fCAhZnctJmd0O2RhdGEgfHwgZnctJmd0O3NpemUgJmx0OyBzaXplb2YoKmhkcikpIHsKJiM0MzsJCWRldl93YXJuKG1kZXYtJmd0O2RldiwgJiMzNDt2ZWZ1c2U6IGludmFsaWQgZmlybXdhcmUsIHNraXBwaW5nXG4mIzM0Oyk7CiYjNDM7CQlnb3RvIG91dDsKJiM0MzsJfQomIzQzOwomIzQzOwloZHIgPSAoY29uc3Qgdm9pZCAqKShmdy0mZ3Q7ZGF0YSAmIzQzOyBmdy0mZ3Q7c2l6ZSAtIHNpemVvZigqaGRyKSk7CiYjNDM7CiYjNDM7CS8qIFJlZ2lvbiBkZXNjcmlwdG9ycyBzaXQgcmlnaHQgYmVmb3JlIHRoZSB0cmFpbGVyLiBNYWtlIHN1cmUgdGhlIHdob2xlCiYjNDM7CSAqIGRlc2NyaXB0b3IgYXJyYXkgaXMgd2l0aGluIHRoZSBpbWFnZSBiZWZvcmUgZGVyZWZlcmVuY2luZyB0aGVtLCBzbyBhCiYjNDM7CSAqIGNvcnJ1cHQgbl9yZWdpb24gY2Fubm90IHdhbGsgdGhlIHJlZ2lvbiBwb2ludGVyIGJlZm9yZSBmdy0mZ3Q7ZGF0YS4KJiM0MzsJICovCiYjNDM7CWlmIChmdy0mZ3Q7c2l6ZSAmbHQ7IHNpemVvZigqaGRyKSAmIzQzOyAoc2l6ZV90KWhkci0mZ3Q7bl9yZWdpb24gKiBzaXplb2YoKnJlZ2lvbikpIHsKJiM0MzsJCWRldl93YXJuKG1kZXYtJmd0O2RldiwKJiM0MzsJCQkgJiMzNDt2ZWZ1c2U6IGZpcm13YXJlIHRvbyBzbWFsbCBmb3IgJXUgcmVnaW9uIGRlc2NyaXB0b3JzLCBza2lwcGluZ1xuJiMzNDssCiYjNDM7CQkJIGhkci0mZ3Q7bl9yZWdpb24pOwomIzQzOwkJZ290byBvdXQ7CiYjNDM7CX0KJiM0MzsKJiM0MzsJZm9yIChpID0gMDsgaSAmbHQ7IGhkci0mZ3Q7bl9yZWdpb247IGkmIzQzOyYjNDM7KSB7CiYjNDM7CQlyZWdpb24gPSAoY29uc3Qgdm9pZCAqKSgoY29uc3QgdTggKiloZHIgLQomIzQzOwkJCQkJKGhkci0mZ3Q7bl9yZWdpb24gLSBpKSAqIHNpemVvZigqcmVnaW9uKSk7CiYjNDM7CQlsZW4gPSBsZTMyX3RvX2NwdShyZWdpb24tJmd0O2xlbik7CiYjNDM7CiYjNDM7CQlpZiAobGVuICZndDsgZnctJmd0O3NpemUgLSBvZmZzZXQpIHsKJiM0MzsJCQlkZXZfd2FybihtZGV2LSZndDtkZXYsICYjMzQ7dmVmdXNlOiBpbnZhbGlkIGZpcm13YXJlIHJlZ2lvbiwgc2tpcHBpbmdcbiYjMzQ7KTsKJiM0MzsJCQlnb3RvIG91dDsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCWlmICgocmVnaW9uLSZndDtmZWF0dXJlX3NldCAmYW1wOyBGV19GRUFUVVJFX05PTl9ETCkgJmFtcDsmYW1wOwomIzQzOwkJICAgIHJlZ2lvbi0mZ3Q7dHlwZSA9PSBGV19UWVBFX0VYVEVORF9CSU5fRUZVU0UpIHsKJiM0MzsJCQl2ZWZ1c2VfYmFzZSA9IGZ3LSZndDtkYXRhICYjNDM7IG9mZnNldDsKJiM0MzsJCQlkZXYtJmd0O3ZlZnVzZV9jYXAucHJlc2VudCA9IHRydWU7CiYjNDM7CQkJYnJlYWs7CiYjNDM7CQl9CiYjNDM7CQlvZmZzZXQgJiM0Mzs9IGxlbjsKJiM0MzsJfQomIzQzOwomIzQzOwlpZiAoIXZlZnVzZV9iYXNlKSB7CiYjNDM7CQlkZXZfd2FybihtZGV2LSZndDtkZXYsCiYjNDM7CQkJICYjMzQ7RldfVFlQRV9FWFRFTkRfQklOX0VGVVNFIGNodW5rIG5vdCBmb3VuZCBpbiBGVyBpbWFnZSwgdmlydHVhbCBlZnVzZSBza2lwcGVkXG4mIzM0Oyk7CiYjNDM7CQkvKiB2ZWZ1c2VfY2FwLnByZXNlbnQgc3RheXMgZmFsc2UgLSZndDsgZGVidWdmcyBub2RlIG5vdCBleHBvc2VkIG9uIGEKJiM0MzsJCSAqIFdGIHdpdGhvdXQgYSB2aXJ0dWFsIGVmdXNlLiB2ZWZ1c2VfY2FwLmVuYWJsZWQgKHRoZSBGVy1yZXBvcnRlZAomIzQzOwkJICogY2FwYWJpbGl0eSkgaXMgbGVmdCB1bnRvdWNoZWQuCiYjNDM7CQkgKi8KJiM0MzsJCWdvdG8gb3V0OwomIzQzOwl9CiYjNDM7CiYjNDM7CS8qIFRoZSBwYWNrZWQgRlcgcmVnaW9uIGNhcnJpZXMgdGhlIHZlZnVzZSBwYXlsb2FkIHBsdXMgY29ubmFjCiYjNDM7CSAqIHBlci1yZWdpb24gZnJhbWluZyAoNC1ieXRlIENSQyAmIzQzOyAxNi1ieXRlIGFsaWdubWVudCksIHNvIHJlZ2lvbgomIzQzOwkgKiBsZW5ndGggaXMgbGFyZ2VyIHRoYW4gdGhlIEZXLXJlcG9ydGVkIHBheWxvYWQuIE9ubHkgdGhlIGxlYWRpbmcKJiM0MzsJICogdmVmdXNlX2NhcC5zaXplIGJ5dGVzIGFyZSB0aGUgYWN0dWFsIHZlZnVzZSBjb250ZW50IHRvIHB1c2guCiYjNDM7CSAqLwomIzQzOwlwYXlsb2FkID0gZGV2LSZndDt2ZWZ1c2VfY2FwLnNpemU7CiYjNDM7CiYjNDM7CS8qIHZpcnR1YWwgZWZ1c2UgaXMgYW4gb3B0aW9uYWwgb3ZlcnJpZGU6IGlmIGl0IGNhbm5vdCBiZSBhcHBsaWVkIHRoZQomIzQzOwkgKiBjaGlwIHN0aWxsIHdvcmtzIG9uIGl0cyBkZWZhdWx0IGVmdXNlIHZhbHVlcywgc28gdGhlIGNoZWNrcyBiZWxvdwomIzQzOwkgKiBvbmx5IHdhcm4gYW5kIHNraXAgLSB0aGV5IG11c3Qgbm90IGZhaWwgZmlybXdhcmUgYnJpbmctdXAuCiYjNDM7CSAqLwomIzQzOwomIzQzOwkvKiBbQ2hlY2sgIzFdIHJlZ2lvbiBtdXN0IGhvbGQgYXQgbGVhc3QgdGhlIEZXLXJlcG9ydGVkIHBheWxvYWQgKi8KJiM0MzsJaWYgKGxlbiAmbHQ7IHBheWxvYWQpIHsKJiM0MzsJCWRldl93YXJuKG1kZXYtJmd0O2RldiwKJiM0MzsJCQkgJiMzNDt2ZWZ1c2U6IHJlZ2lvbiBzaXplICV1IHNtYWxsZXIgdGhhbiBGVyBjYXBhYmlsaXR5ICV1LCBza2lwcGluZ1xuJiMzNDssCiYjNDM7CQkJIGxlbiwgcGF5bG9hZCk7CiYjNDM7CQlnb3RvIG91dDsKJiM0MzsJfQomIzQzOwomIzQzOwl0b3RhbF9wYWdlcyA9IERJVl9ST1VORF9VUChwYXlsb2FkLCBNVDc5MjVfVkVGVVNFX1BBR0VfU0laRSk7CiYjNDM7CWlmICh0b3RhbF9wYWdlcyAmZ3Q7IE1UNzkyNV9WRUZVU0VfTUFYX1BBR0VTKSB7CiYjNDM7CQlkZXZfd2FybihtZGV2LSZndDtkZXYsCiYjNDM7CQkJICYjMzQ7dmVmdXNlOiBwYXlsb2FkIHRvbyBsYXJnZTogJXUgYnl0ZXMgKCVkIHBhZ2VzKSwgbWF4ICVkIHBhZ2VzIHN1cHBvcnRlZCwgc2tpcHBpbmdcbiYjMzQ7LAomIzQzOwkJCSBwYXlsb2FkLCB0b3RhbF9wYWdlcywgTVQ3OTI1X1ZFRlVTRV9NQVhfUEFHRVMpOwomIzQzOwkJZ290byBvdXQ7CiYjNDM7CX0KJiM0MzsKJiM0MzsJZm9yIChpID0gMDsgaSAmbHQ7IHRvdGFsX3BhZ2VzOyBpJiM0MzsmIzQzOykgewomIzQzOwkJcmV0ID0gbXQ3OTI1X21jdV9zZW5kX3ZlZnVzZV9wYWdlKGRldiwgdmVmdXNlX2Jhc2UsIHBheWxvYWQsCiYjNDM7CQkJCQkJICBpLCB0b3RhbF9wYWdlcyk7CiYjNDM7CQlpZiAocmV0KSB7CiYjNDM7CQkJZGV2X3dhcm4obWRldi0mZ3Q7ZGV2LAomIzQzOwkJCQkgJiMzNDt2ZWZ1c2UgcGFnZSAlZC8lZCBzZW5kIGZhaWxlZDogJWQsIHNraXBwaW5nXG4mIzM0OywKJiM0MzsJCQkJIGkgJiM0MzsgMSwgdG90YWxfcGFnZXMsIHJldCk7CiYjNDM7CQkJcmV0ID0gMDsKJiM0MzsJCQlnb3RvIG91dDsKJiM0MzsJCX0KJiM0MzsJfQomIzQzOwomIzQzO291dDoKJiM0MzsJcmVsZWFzZV9maXJtd2FyZShmdyk7CiYjNDM7CXJldHVybiByZXQ7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBtdDc5MjVfbG9hZF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgY29uc3QgY2hhciAqZndfbmFtZSkKIHsKIAljb25zdCBzdHJ1Y3QgbXQ3Nl9jb25uYWMyX2Z3X3RyYWlsZXIgKmhkcjsKQEAgLTExMjYsNiAmIzQzOzEzMzQsMTcgQEAgbXQ3OTI1X21jdV9nZXRfbmljX2NhcGFiaWxpdHkoc3RydWN0IG10NzkyeF9kZXYgKmRldikKIAkJY2FzZSBNVF9OSUNfQ0FQX0VNTF9DQVA6CiAJCQltdDc5MjVfbWN1X3BhcnNlX2VtbF9jYXAoZGV2LCB0bHYtJmd0O2RhdGEpOwogCQkJYnJlYWs7CiYjNDM7CQljYXNlIE1UX05JQ19DQVBfVkVGVVNFX0lORk86IHsKJiM0MzsJCQlzdHJ1Y3QgbXQ3OTI1X3ZlZnVzZV9jYXAgKmNhcDsKJiM0MzsKJiM0MzsJCQlpZiAobGVuICZsdDsgc2l6ZW9mKCp0bHYpICYjNDM7IHNpemVvZigqY2FwKSkKJiM0MzsJCQkJYnJlYWs7CiYjNDM7CiYjNDM7CQkJY2FwID0gKHN0cnVjdCBtdDc5MjVfdmVmdXNlX2NhcCAqKXRsdi0mZ3Q7ZGF0YTsKJiM0MzsJCQlkZXYtJmd0O3ZlZnVzZV9jYXAuZW5hYmxlZCAgID0gY2FwLSZndDtlbmFibGVkOwomIzQzOwkJCWRldi0mZ3Q7dmVmdXNlX2NhcC5zaXplICAgICAgPSBsZTE2X3RvX2NwdShjYXAtJmd0O3NpemUpOwomIzQzOwkJCWJyZWFrOwomIzQzOwkJfQogCQlkZWZhdWx0OgogCQkJYnJlYWs7CiAJCX0KQEAgLTExOTksNiAmIzQzOzE0MTgsMTMgQEAgaW50IG10NzkyNV9ydW5fZmlybXdhcmUoc3RydWN0IG10NzkyeF9kZXYgKmRldikKIAlpZiAoZXJyKQogCQlyZXR1cm4gZXJyOwogCiYjNDM7CS8qIFZpcnR1YWwgZWZ1c2UgaXMgYmVzdC1lZmZvcnQgYW5kIGN1cnJlbnRseSBuZXZlciBmYWlscyBicmluZy11cCwgYnV0CiYjNDM7CSAqIGtlZXAgdGhlIGVycm9yIHByb3BhZ2F0aW9uIGZvciBhIHBvc3NpYmxlIGZ1dHVyZSBmYXRhbCB2ZWZ1c2UgZXJyb3IuCiYjNDM7CSAqLwomIzQzOwllcnIgPSBtdDc5MjVfbG9hZF92ZWZ1c2VfZnJvbV9mdyhkZXYsIG10NzkyeF9yYW1fbmFtZShkZXYpKTsKJiM0MzsJaWYgKGVycikKJiM0MzsJCXJldHVybiBlcnI7CiYjNDM7CiAJZXJyID0gbXQ3OTI1X2xvYWRfY2xjKGRldiwgbXQ3OTJ4X3JhbV9uYW1lKGRldikpOwogCWlmIChlcnIpCiAJCXJldHVybiBlcnI7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5oCmluZGV4IDExZjllYWMxM2ZmYzYuLmEwZWIzMGQyNTcwZGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5oCkBAIC0xMzcsNiAmIzQzOzEzNyw0MSBAQCBlbnVtIHsKIAlVTklfRUZVU0VfQlVGRkVSX1JELAogfTsKIAomIzQzOy8qIHBhZ2Ugc2l6ZSBhbmQgY29udGVudF9mb3JtYXQgbGF5b3V0IGZvbGxvdyB0aGUgRlcgYnVmZmVyLW1vZGUgQUJJICovCiYjNDM7I2RlZmluZSBNVDc5MjVfVkVGVVNFX1BBR0VfU0laRQkJMTAyNAkvKiBGVyBCVUZGRVJfQklOX1BBR0VfU0laRSAoMHg0MDApICovCiYjNDM7I2RlZmluZSBNVDc5MjVfVkVGVVNFX01BWF9QQUdFUwkJNwkvKiBjb250ZW50X2Zvcm1hdCBwYWdlIGZpZWxkcyBhcmUgMy1iaXQgKi8KJiM0MzsKJiM0MzsjZGVmaW5lIE1UNzkyNV9WRUZVU0VfVE9UQUxfUEFHRQlHRU5NQVNLKDcsIDUpCS8qIEZXIEJVRkZFUl9CSU5fVE9UQUxfUEFHRSAqLwomIzQzOyNkZWZpbmUgTVQ3OTI1X1ZFRlVTRV9QQUdFX0lOREVYCUdFTk1BU0soNCwgMikJLyogRlcgQlVGRkVSX0JJTl9QQUdFX0lOREVYICovCiYjNDM7CiYjNDM7LyogYnVmZmVyIG1vZGUgY29udGVudCBzb3VyY2UsIGFsaWducyB3aXRoIEZXIEJVRkZFUl9TT1VSQ0VfTU9ERV9JTkZPXyogKi8KJiM0MztlbnVtIHsKJiM0MzsJVU5JX0VGVVNFX1NPVVJDRV9FRlVTRSA9IDAsCiYjNDM7CVVOSV9FRlVTRV9TT1VSQ0VfRUVQUk9NID0gMSwKJiM0MzsJVU5JX0VGVVNFX1NPVVJDRV9WRUZVU0UgPSAyLAomIzQzO307CiYjNDM7CiYjNDM7c3RydWN0IG10NzkyNV92ZWZ1c2VfY2FwIHsKJiM0MzsJdTggdmVyc2lvbjsKJiM0MzsJdTggZW5hYmxlZDsKJiM0MzsJX19sZTE2IHNpemU7CiYjNDM7CV9fbGUzMiBoYXNoX2FkZHI7CiYjNDM7fSBfX3BhY2tlZDsKJiM0MzsKJiM0MztzdHJ1Y3QgbXQ3OTI1X3ZlZnVzZV9wYWdlX2NtZCB7CiYjNDM7CXU4IHJzdls0XTsJCS8qIFVOSV9DTURfRUZVU0VfQ09OVFJPTCBoZWFkZXIgYmVmb3JlIFRMViAqLwomIzQzOwomIzQzOwlfX2xlMTYgdGFnOwkJLyogVU5JX0VGVVNFX0JVRkZFUl9NT0RFICovCiYjNDM7CV9fbGUxNiBsZW47CiYjNDM7CXU4IHNvdXJjZV9tb2RlOwkJLyogVU5JX0VGVVNFX1NPVVJDRV9WRUZVU0UgKi8KJiM0MzsJdTggY29udGVudF9mb3JtYXQ7CS8qIFs3OjVdPXRvdGFsX3BhZ2VzIFs0OjJdPXBhZ2VfaWR4ICovCiYjNDM7CV9fbGUxNiBjb3VudDsJCS8qIHZhbGlkIGJ5dGVzIGluIHRoaXMgcGFnZSAqLwomIzQzOwl1OCBiaW5fY29udGVudFtNVDc5MjVfVkVGVVNFX1BBR0VfU0laRV07CiYjNDM7fSBfX3BhY2tlZDsKJiM0MzsKJiM0MztpbnQgbXQ3OTI1X21jdV9yZWFkX3ZlZnVzZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1MTYgb2Zmc2V0LCB1MTYgY291bnQsCiYjNDM7CQkJICAgdTggKm91dCk7CiYjNDM7CiBlbnVtIHsKIAlVTklfQ01EX0FDQ0VTU19SRUdfQkFTSUMgPSAweDAsCiAJVU5JX0NNRF9BQ0NFU1NfUkZfUkVHX0JBU0lDLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmgKaW5kZXggOWVmYzI1MWNiNzQ1Zi4uNzBhNzRlMDcxYjE3YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oCkBAIC0zNDIsNiAmIzQzOzM0MiwxMiBAQCBzdHJ1Y3QgbXQ3OTJ4X2RldiB7CiAJc3RydWN0IGllZWU4MDIxMV92aWYgKm5hbl92aWY7CiAJY29uc3Qgc3RydWN0IGllZWU4MDIxMV9pZmFjZV9jb21iaW5hdGlvbiAqaWZhY2VfY29tYmluYXRpb25zOwogCWludCBuX2lmYWNlX2NvbWJpbmF0aW9uczsKJiM0MzsKJiM0MzsJc3RydWN0IHsKJiM0MzsJCWJvb2wgZW5hYmxlZDsJLyogRlcgcmVwb3J0cyB2ZWZ1c2UgY2FwYWJpbGl0eSAodW5jb25kaXRpb25hbCkgKi8KJiM0MzsJCWJvb2wgcHJlc2VudDsJLyogYSB2ZWZ1c2UgcmVnaW9uIHdhcyBmb3VuZCBpbiB0aGUgRlcgaW1hZ2UgKi8KJiM0MzsJCXUxNiBzaXplOwomIzQzOwl9IHZlZnVzZV9jYXA7CiB9OwogCiBzdGF0aWMgaW5saW5lIHN0cnVjdCBtdDc5MnhfYnNzX2NvbmYgKgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwOToxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MzY0CgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogNDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFzc2Vzc2luZyB0aGUgRnV6emluZyBQb3RlbnRpYWwgb2YgYSBLZXJuZWwgUGF0Y2gqKgoKT2theSwgc28gd2UgaGF2ZSB0aGlzIHBhdGNoLCByaWdodD8gSXQmIzM5O3MgYXBwbGllZCB0byB0aGUgTGludXgga2VybmVsIGFuZCBzcGVjaWZpY2FsbHkgdHdlYWtzIHRoZSBgbXQ3NmAgd2lyZWxlc3MgZHJpdmVyLCB0YXJnZXRpbmcgdGhlIE1lZGlhdGVrIGBtdDc5MjVgIGhhcmR3YXJlLiBUaGUgcGF0Y2gmIzM5O3MgY29yZSBmdW5jdGlvbiBpcyBhZGRpbmcgc3VwcG9ydCBmb3IgJiMzNDt2aXJ0dWFsIGVmdXNlJiMzNDsg4oCTIGB2ZWZ1c2VgIOKAkyB0byBiZSBsb2FkZWQgZnJvbSB0aGUgZmlybXdhcmUuIEl0IGFsc28gcHJvdmlkZXMgYSBkZWJ1Z2ZzIGludGVyZmFjZSBmb3IgcmVhZGluZyB0aGlzIHZlZnVzZSBkYXRhLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtjYW4gd2UgYWN0dWFsbHkgZ2V0IHRvIHRoaXMgY29kZSwgYW5kIGlzIGl0IGV2ZW4gd29ydGggZnV6emluZz8mIzM0OwoKVGhlIGRyaXZlciBpdHNlbGYgaXMgYG10NzZgLCBtb3JlIHByZWNpc2VseSBgbXQ3OTI1YCwgc28gSSYjMzk7bGwgbmVlZCB0byBmb2N1cyBvbiBjb2RlIHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvYC4gSSBjYW4gc2VlIGZyb20gdGhlIHBhdGNoIHRoYXQgYG10NzkyNV92ZWZ1c2VfcmVhZGAgaGFzIGJlZW4gYWRkZWQgaW4gYGRlYnVnZnMuY2AsIGV4cG9zZWQgdmlhIGRlYnVnZnMsIGFuZCBgbXQ3OTI1X2xvYWRfdmVmdXNlX2Zyb21fZndgIGhhcyBiZWVuIGFkZGVkIGluIGBtY3UuY2AsIGNhbGxlZCBmcm9tIGBtdDc5MjVfcnVuX2Zpcm13YXJlYC4gSXQgbG9va3MgbGlrZSBgbXQ3OTI1X3J1bl9maXJtd2FyZWAgaXMgdHJpZ2dlcmVkIGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24uCgpTaW5jZSB0aGlzIGlzIGEgd2lyZWxlc3MgZHJpdmVyLCBteSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIHJlYWNoIGZvciBgbWFjODAyMTFfaHdzaW1gLiBCdXQgd2FpdCwgdGhhdCYjMzk7cyBqdXN0IGEgc29mdHdhcmUgc2ltdWxhdG9yLCBpdCBkb2VzbiYjMzk7dCByZXByZXNlbnQgTWVkaWF0ZWsgaGFyZHdhcmUsIHNvIHRoYXQmIzM5O3Mgbm90IGdvaW5nIHRvIHdvcmsuIENhbiB3ZSBzaW11bGF0ZSBgbXQ3OTI1YCBzb21laG93PyBXaXJlbGVzcyBkcml2ZXJzIGFyZSB1c3VhbGx5IGhhcmR3YXJlLWRlcGVuZGVudCwgbmVlZGluZyBQQ0llLCBVU0IsIG9yIFNESU8uIE5vdywgdGhlIHF1ZXN0aW9uIGlzLCBjYW4gd2UgZW11bGF0ZSB0aGUgaGFyZHdhcmUgaW4gb3VyIGZ1enppbmcgc2V0dXA/IAoKVGhlbiBpdCBoaXRzIG1lLCB3ZSBzaG91bGQgc2VlIHdoYXQgYnVzIHR5cGVzIGBtdDc5MjVgIHN1cHBvcnRzLiBBbmQgd2UgYXJlIGluIGx1Y2shIExvb2tzIGxpa2UgdGhlIGBtdDc5MjVgIGRyaXZlciBzdXBwb3J0cyBib3RoIFBDSWUgYW5kIFVTQi4gU3l6a2FsbGVyIGhhcyBhIFVTQiBmdXp6ZXIsIHdoaWNoIHVzZXMgYSBkdW1teSBob3N0IGNvbnRyb2xsZXIgKGhjZCkgYW5kIHJhdyBnYWRnZXQgbW9kZSwgc28gaWYgaXQmIzM5O3MgYSBVU0IgZHJpdmVyLCB3ZSYjMzk7cmUgaW4gYnVzaW5lc3MhIFRoYXTigJlzIHByb21pc2luZywgbGV0JiMzOTtzIHNlZSBpZiB0aGUgYG10NzkyNWAgZHJpdmVyIGhhcyBhIFVTQiBpbXBsZW1lbnRhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwOToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5MjUuKnVzYiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZT05PW10NzkyNWUteSA6PSBwY2kubyBwY2lfbWFjLm8gcGNpX21jdS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZToxMDptdDc5MjV1LXkgOj0gdXNiLm9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz0xNjIwPXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNjIxOm10NzkyNV91c2Jfc2Rpb193cml0ZV90eHdpKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNjIyLVx0XHRcdCAgIGVudW0gbXQ3Nl90eHFfaWQgcWlkLCBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE2MzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNjMzOmludCBtdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCB2b2lkICp0eHdpX3B0cixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE2MzQtXHRcdFx0XHQgICBlbnVtIG10NzZfdHhxX2lkIHFpZCwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNjYzLVx0cGt0aWQgPSBtdDc2X3R4X3N0YXR1c19za2JfYWRkKFx1MDAyNmRldi1cdTAwM2VtdDc2LCB3Y2lkLCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTY2NDpcdG10NzkyNV91c2Jfc2Rpb193cml0ZV90eHdpKGRldiwgd2NpZCwgcWlkLCBzdGEsIGtleSwgcGt0aWQsIHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNjY1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE2NzctfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTY3ODpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTY3OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE2ODA6dm9pZCBtdDc5MjVfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE2ODEtXHRcdFx0XHQgICAgIHN0cnVjdCBtdDc2X3F1ZXVlX2VudHJ5ICplKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE2OTgtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTY5OTpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE3MDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNzAxOmJvb2wgbXQ3OTI1X3VzYl9zZGlvX3R4X3N0YXR1c19kYXRhKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdTggKnVwZGF0ZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE3MDIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE3MTAtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTcxMTpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfdXNiX3NkaW9fdHhfc3RhdHVzX2RhdGEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTcxMi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaD0zNjk9aW50IG10NzkyNV9tY3VfZ2V0X3RlbXBlcmF0dXJlKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMzcwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg6MzcxOmludCBtdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCB2b2lkICp0eHdpX3B0cixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTM3Mi1cdFx0XHRcdCAgIGVudW0gbXQ3Nl90eHFfaWQgcWlkLCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTM3NC1cdFx0XHRcdCAgIHN0cnVjdCBtdDc2X3R4X2luZm8gKnR4X2luZm8pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg6Mzc1OnZvaWQgbXQ3OTI1X3VzYl9zZGlvX3R4X2NvbXBsZXRlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaC0zNzYtXHRcdFx0XHQgICAgIHN0cnVjdCBtdDc2X3F1ZXVlX2VudHJ5ICplKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oOjM3Nzpib29sIG10NzkyNV91c2Jfc2Rpb190eF9zdGF0dXNfZGF0YShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHU4ICp1cGRhdGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMzc4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jPTgwPXN0YXRpYyBpbnQgbXQ3OTI1dV9tYWNfcmVzZXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0xNDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzoxNTA6c3RhdGljIGludCBtdDc5MjV1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE1MS1cdFx0XHQgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE1OS1cdFx0XHRcdFNVUlZFWV9JTkZPX1RJTUVfQlNTX1JYLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6MTYwOlx0XHQudHhfcHJlcGFyZV9za2IgPSBtdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzoxNjE6XHRcdC50eF9jb21wbGV0ZV9za2IgPSBtdDc5MjVfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6MTYyOlx0XHQudHhfc3RhdHVzX2RhdGEgPSBtdDc5MjVfdXNiX3NkaW9fdHhfc3RhdHVzX2RhdGEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0xNjMtXHRcdC5yeF9za2IgPSBtdDc5MjVfcXVldWVfcnhfc2tiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTI2OS0jaWZkZWYgQ09ORklHX1BNXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzoyNzA6c3RhdGljIGludCBtdDc5MjV1X3N1c3BlbmQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIHBtX21lc3NhZ2VfdCBzdGF0ZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTI3MS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMzAyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6MzAzOnN0YXRpYyBpbnQgbXQ3OTI1dV9yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0zMDQte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA5OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNTA4CgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogODgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGlzOgoKKipBbmFseXppbmcgdGhlIG10NzkyNSBVU0IgRHJpdmVyIFBhdGNoKioKCkFscmlnaHQsIHNvIGl0IGxvb2tzIGxpa2UgdGhlIGBtdDc5MjVgIGhhcyBhIFVTQiBkcml2ZXIsIHdoaWNoIGlzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gVGhlIHBhdGNoIEkmIzM5O20gZXhhbWluaW5nIGZvY3VzZXMgb24gbW9kaWZ5aW5nIGBtdDc5MjVfcnVuX2Zpcm13YXJlYC4gU3BlY2lmaWNhbGx5LCBpdCBpbnRyb2R1Y2VzIGEgY2FsbCB0byBgbXQ3OTI1X2xvYWRfdmVmdXNlX2Zyb21fZndgIHdpdGhpbiB0aGF0IGZ1bmN0aW9uLiBUaGlzIGlzIGludGVyZXN0aW5nLCBhcyB0aGF0IHN1Z2dlc3RzIHRoZSBWRSBmdXNlIGxvYWRpbmcgcHJvY2VzcyBpcyBub3cgaW50ZWdyYXRlZCBkaXJlY3RseSBpbnRvIHRoZSBmaXJtd2FyZSBydW50aW1lIHByb2Nlc3MuIFRoaW5raW5nIGFib3V0IHRoZSBjb250ZXh0LCB0aGlzIGNhbGwgb2NjdXJzIGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24uIE5vdywgc2luY2UgdGhpcyBpcyBhIFVTQiBkZXZpY2UsIGRldmljZSBpbml0aWFsaXphdGlvbiBpcyBuYXR1cmFsbHkgZ29pbmcgdG8gYmUgdHJpZ2dlcmVkIHdoZW4gdGhlIFVTQiBkZXZpY2UgaXMgcHJvYmVkLiBTbywgdGhlIGNvcmUgcXVlc3Rpb24gaXM6IGlzIGBtdDc5MjVfcnVuX2Zpcm13YXJlYCBhY3R1YWxseSBjYWxsZWQgZHVyaW5nIHRoYXQgcHJvYmUgcHJvY2Vzcz8gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IHRoaXMgY2FsbCBjaGFpbiBpcyBoYXBwZW5pbmcgYXMgZXhwZWN0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDk6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTI1X3J1bl9maXJtd2FyZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYz0xNDA3PUVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV9tY3Vfc2V0X3RoZXJtYWxfcHJvdGVjdCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0xNDA4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM6MTQwOTppbnQgbXQ3OTI1X3J1bl9maXJtd2FyZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtMTQxMC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtMTQzNC19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYzoxNDM1OkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV9ydW5fZmlybXdhcmUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtMTQzNi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaD0yNzk9dm9pZCBtdDc5MjVfdW5yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaDoyODA6aW50IG10NzkyNV9ydW5fZmlybXdhcmUoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaC0yODEtaW50IG10NzkyNV9tY3Vfc2V0X2Jzc19wbShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tYWMuYz03MT1pbnQgbXQ3OTI1ZV9tYWNfcmVzZXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWFjLmMtMTMzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21hYy5jOjEzNDpcdGVyciA9IG10NzkyNV9ydW5fZmlybXdhcmUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tYWMuYy0xMzUtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tY3UuYz0yNz1pbnQgbXQ3OTI1ZV9tY3VfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tY3UuYy00Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tY3UuYzo0ODpcdGVyciA9IG10NzkyNV9ydW5fZmlybXdhcmUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tY3UuYy00OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYz01Nj1zdGF0aWMgaW50IG10NzkyNXVfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy02OS1cdG10NzZfc2V0KGRldiwgTVRfVURNQV9UWF9RU0VMLCBNVF9GV19ETF9FTik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzo3MDpcdHJldCA9IG10NzkyNV9ydW5fZmlybXdhcmUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTcxLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYz04MD1zdGF0aWMgaW50IG10NzkyNXVfbWFjX3Jlc2V0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMTIwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6MTIxOlx0ZXJyID0gbXQ3OTI1X3J1bl9maXJtd2FyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMTIyLVx0aWYgKGVycilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwOToxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTk4MwoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDM5MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgYG10NzkyNWAgRmlybXdhcmUgTG9hZGluZyBhbmQgVVNCIFJlYWNoYWJpbGl0eSoqCgpPa2F5LCBzbyBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGcm9tIHdoYXQgSSBzZWUsIGBtdDc5MjVfcnVuX2Zpcm13YXJlYCBpcyBhIGtleSBmdW5jdGlvbi4gSXQmIzM5O3MgY2FsbGVkIGRpcmVjdGx5IGZyb20gYG10NzkyNXVfbWN1X2luaXRgIGFuZCBgbXQ3OTI1dV9tYWNfcmVzZXRgIHdpdGhpbiBgdXNiLmNgLiBUaGlzIGlzIHNpZ25pZmljYW50IGJlY2F1c2UgdGhhdCBtZWFucyB3ZSBoYXZlIGEgZGlyZWN0IHBhdGggdG8gdGhpcyBjb2RlIHZpYSBVU0IgaW50ZXJhY3Rpb24sIG1ha2luZyBpdCBhIHZpYWJsZSB0YXJnZXQgZm9yIFVTQiBmdXp6aW5nIGNhbXBhaWducy4KClRoZSBwYXRjaCBpbnRyb2R1Y2VzIGBtdDc5MjVfbG9hZF92ZWZ1c2VfZnJvbV9md2AsIHdoaWNoIGlzIHRoZSBjcnVjaWFsIHBvaW50IGhlcmUgYmVjYXVzZSBpdCBkZWFscyB3aXRoIHBhcnNpbmcgZmlybXdhcmUgZGF0YS4gSXQgYWxzbyBhZGRzIGEgZGVidWdmcyBmaWxlIG5hbWVkIGB2ZWZ1c2VgLCB3aGljaCwgdXBvbiByZWFkaW5nLCB0cmlnZ2VycyBgbXQ3OTI1X3ZlZnVzZV9yZWFkYC4gVGhlIGNyZWF0aW9uIG9mIHRoaXMgZGVidWdmcyBlbnRyeSBpcyBjb25kaXRpb25hbDsgaXQgaGFwcGVucyB3aXRoaW4gYG10NzkyNV9pbml0X2RlYnVnZnNgIGJ1dCAqb25seSogaWYgYGRldi0mZ3Q7dmVmdXNlX2NhcC5wcmVzZW50YCBpcyB0cnVlLCB3aGljaCBpbiB0dXJuIG1lYW5zIHRoZSBmaXJtd2FyZSBtdXN0IGNvbnRhaW4gdGhlIGBGV19UWVBFX0VYVEVORF9CSU5fRUZVU0VgIGZsYWcuCgpOb3csIGhlcmUmIzM5O3Mgd2hlcmUgaXQgZ2V0cyBpbnRlcmVzdGluZy4gSSYjMzk7bSB0aGlua2luZywgJiMzNDtzeXprYWxsZXImIzM0Oy4gSXQgY2FuIHVzZSBgcmVxdWVzdF9maXJtd2FyZWAgaW50ZXJjZXB0aW9uIHRvIHByb3ZpZGUgY3VzdG9tIGZpcm13YXJlIGlmIGl0IGtub3dzIHRoZSBmaXJtd2FyZSBuYW1lLCByaWdodD8gRXZlbiBpZiBzeXprYWxsZXIgKmRvZXNuJiMzOTt0KiBrbm93IHRoZSBmaXJtd2FyZSBuYW1lIGluaXRpYWxseSwgdGhlIHBhcnNpbmcgY29kZSB3aXRoaW4gYG10NzkyNV9sb2FkX3ZlZnVzZV9mcm9tX2Z3YCB3aWxsIHN0aWxsIGJlIGV4ZWN1dGVkLiBXZSBhbHJlYWR5IGtub3cgdGhhdCBpdCBleGVjdXRlcyBgcmVxdWVzdF9maXJtd2FyZSgmYW1wO2Z3LCBmd19uYW1lLCBtZGV2LSZndDtkZXYpO2AuIElmIHRoZSBmaXJtd2FyZSBpcyBub3QgaW1tZWRpYXRlbHkgYXZhaWxhYmxlLCBpdCBzaW1wbHkgc2tpcHMgdGhhdCBwYXJ0LiBJZiBpdCAqaXMqIGF2YWlsYWJsZSwgaXQgcGFyc2VzIGl0LgoKU28sIHRoZSBxdWVzdGlvbiBpcywgY2FuIHN5emthbGxlciBmdXp6IHRoaXMgbG9hZGluZyBwcm9jZXNzPyBUaGUgYW5zd2VyIGlzIGEgY2xlYXIgJiMzNDt5ZXMuJiMzNDsgSXQgY2FuIGRlZmluaXRlbHkgZnV6eiB0aGUgZmlybXdhcmUgbG9hZGluZyBpZiB0aGUgZmlybXdhcmUgbmFtZSBpcyBrbm93biBvciBkeW5hbWljYWxseSByZXF1ZXN0ZWQuIFdlIHNob3VsZCBiZSBhYmxlIHRvIGxldmVyYWdlIHN5emthbGxlciYjMzk7cyBmaXJtd2FyZSBsb2FkaW5nIGNhcGFiaWxpdGllcywgbGlrZWx5IHVzaW5nIGBzeXpfbW91bnRfaW1hZ2VgIG9yIGEgc2ltaWxhciBjb25zdHJ1Y3QsIGJ1dCBhZGFwdGVkIGZvciBmaXJtd2FyZSB3aGVyZSBpdCBpbnRlcmNlcHRzIGByZXF1ZXN0X2Zpcm13YXJlYC4KCk5vdywgdGhlIG5leHQgY29uc2lkZXJhdGlvbjogYXJlIHRoZXJlIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cz8gV2UgbmVlZCB0byBlbnN1cmUgZWl0aGVyIGBDT05GSUdfTVQ3OTI1RWAgb3IgYENPTkZJR19NVDc5MjVVYCBpcyBlbmFibGVkLiBMZXQmIzM5O3MgZGlnIGludG8gdGhlIGBtdDc5MjVgIEtjb25maWcgZmlsZSB0byBjb25maXJtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA5OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNVDc5MjUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZzoyOmNvbmZpZyBNVDc5MjVfQ09NTU9OXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTMtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc6Nzpjb25maWcgTVQ3OTI1RVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy04LVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3OTI1RSAoUENJZSkgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjE5OmNvbmZpZyBNVDc5MjVVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTIwLVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3OTI1VSAoVVNCKSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDk6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMyNzIKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGUgZGVwZW5kZW5jaWVzIG9mIGBNVDc5MjVVYDoKCioqQ2hlY2tpbmcgdGhlIERlcGVuZGVuY2llcyBvZiBNVDc5MjVVKioKCk9rYXksIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IGBNVDc5MjVVYC4gVGltZSB0byBydW4gdGhyb3VnaCB0aGUgbWVudGFsIGNoZWNrbGlzdC4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBjb21wb25lbnQgKmRvZXMqLiBJcyB0aGlzIGEgZHJpdmVyLCBhIGZpcm13YXJlIG1vZHVsZSwgYSBzcGVjaWZpYyBoYXJkd2FyZSBibG9jaywgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IFRoZSBuYW1lIGl0c2VsZiBzdWdnZXN0cyBhIE1lZGlhVGVrIGNoaXBzZXQsIHBvdGVudGlhbGx5IGEgV2lGaSBvciBCbHVldG9vdGggc29sdXRpb24uICYjMzQ7VSYjMzQ7IHVzdWFsbHkgaW1wbGllcyBhIFVTQiBpbnRlcmZhY2UsIHJpZ2h0PyBTbyB3ZSYjMzk7cmUgbGlrZWx5IGRlYWxpbmcgd2l0aCBhIFVTQi1jb25uZWN0ZWQgd2lyZWxlc3Mgc29sdXRpb24sIHdoaWNoIGltbWVkaWF0ZWx5IG5hcnJvd3MgZG93biB0aGUgcGxheWluZyBmaWVsZC4KCk5vdywgdGhlIGRlcGVuZGVuY3kgYW5hbHlzaXMgYmVnaW5zLiBXaGVyZSBkb2VzIGBNVDc5MjVVYCBzaXQgaW4gdGhlIHN5c3RlbSBhcmNoaXRlY3R1cmU/IElzIGl0IGRpcmVjdGx5IGNvbW11bmljYXRpbmcgd2l0aCB0aGUga2VybmVsJiMzOTtzIFVTQiBzdGFjaz8gRG9lcyBpdCByZWx5IG9uIHNwZWNpZmljIFVTQiBkcml2ZXIgbW9kdWxlcz8gQXJlIHRoZXJlIGFueSBhc3NvY2lhdGVkIGZpcm13YXJlIGJsb2JzIHRoYXQgbmVlZCB0byBiZSBsb2FkZWQ/IFRoaW5raW5nIGFib3V0IHRoZSBwb3RlbnRpYWwgZGVwZW5kZW5jaWVzLCBJIGV4cGVjdCB0byBzZWUga2VybmVsIG1vZHVsZXMgcmVsYXRlZCB0byBVU0IgZGV2aWNlIGRyaXZlcnMgYW5kIHBvdGVudGlhbGx5IHNvbWUgZmlybXdhcmUgbG9hZGluZyBtZWNoYW5pc21zLiBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgZm9yIGNhbGxzIHRvIHRoZSBzdGFuZGFyZCBVU0IgaW50ZXJmYWNlIGZ1bmN0aW9ucy4KCkZ1cnRoZXJtb3JlLCBJIGhhdmUgdG8gY29uc2lkZXIgdGhlIHBvdGVudGlhbCBmb3IgZGVwZW5kZW5jaWVzIG9uIHNwZWNpZmljIG5ldHdvcmsgY29uZmlndXJhdGlvbiB0b29scyBvciBsaWJyYXJpZXMuIERvZXMgYE1UNzkyNVVgIGludGVyZmFjZSB3aXRoIGBpd2x3aWZpYCwgb3IgYW5vdGhlciBjb21tb24gbmV0d29ya2luZyBzdGFjayBjb21wb25lbnQ/IEFyZSB0aGVyZSBhbnkgZmlybXdhcmUgdmVyc2lvbnMgdGhhdCBhcmUgc3VwcG9ydGVkIG9yIGtub3duIHRvIGJlIHJlcXVpcmVkPyBBcmUgdGhlcmUgYW55IGtub3duIGNvbmZsaWN0cyB3aXRoIHNwZWNpZmljIGtlcm5lbCB2ZXJzaW9ucyBvciBvdGhlciBoYXJkd2FyZSBjb25maWd1cmF0aW9ucz8gVGhvc2Ugd291bGQgYmUgY3JpdGljYWwuCgpUaGVuIHRoZXJlIGlzIHRoZSByZWd1bGF0b3J5IGFzcGVjdC4gRG9lcyBgTVQ3OTI1VWAgaGF2ZSBhbnkgZGVwZW5kZW5jaWVzIG9uIHJlZ3VsYXRvcnkgZGF0YWJhc2VzIG9yIGNvdW50cnkgY29kZSBzZXR0aW5ncz8gU29tZSB3aXJlbGVzcyBkcml2ZXJzIGFyZSB2ZXJ5IHRpZ2h0bHkgY291cGxlZCB0byByZWd1bGF0b3J5IHJlcXVpcmVtZW50cyBmb3IgZWFjaCByZWdpb24uCgpBbHJpZ2h0LCBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSByZWxldmFudCBzb3VyY2UgY29kZSwgZG9jdW1lbnRhdGlvbiwgYW5kIHBvdGVudGlhbGx5IGV4aXN0aW5nIGtlcm5lbCBjb25maWdzLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGlzIHRoaW5nICppbnRlZ3JhdGVzKiBhbmQgKmludGVyYWN0cyogd2l0aCB0aGUgcmVzdCBvZiB0aGUgc3lzdGVtLiBJJiMzOTtsbCBiZSBsb29raW5nIGF0IHRoZSBNYWtlZmlsZSwgS2NvbmZpZyBmaWxlcywgYW5kIGFueSBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24sIGxvb2tpbmcgZm9yIGV4cGxpY2l0IGRlcGVuZGVuY2llcyBvciBpbXBsaWNpdCByZXF1aXJlbWVudHMuIFRoaXMgd2lsbCBiZSB0aGUgZmlyc3Qgc3RlcCB0b3dhcmRzIHVuZGVyc3RhbmRpbmcgaG93IHRvIGRlYWwgd2l0aCB0aGlzIG1vZHVsZS4gVGhpcyBpcyBhIGJpdCBvZiBhIGRldGVjdGl2ZSBqb2IsIGJ1dCBpdCBpcyBpbXBvcnRhbnQgdG8ga25vdyBldmVyeXRoaW5nIGFib3V0IHRoaXMgY29tcG9uZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwOToxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTVQ3OTI1VSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnPTc9Y29uZmlnIE1UNzkyNUVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTE4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZzoxOTpjb25maWcgTVQ3OTI1VVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0yMC1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyNVUgKFVTQikgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwOToxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzk0NAoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipEaXZpbmcgaW50byB0aGUgTVQ3OTI1IEtjb25maWcqKgoKQWxyaWdodCwgdGltZSB0byBjcmFjayBvcGVuIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZ2AgZmlsZS4gSSYjMzk7bSBhc3N1bWluZywgYXMgYWx3YXlzIHdpdGggdGhlc2UgTWVkaWF0ZWsgY29uZmlndXJhdGlvbnMsIHRoYXQgaXQmIzM5O3MgZ29pbmcgdG8gYmUgYSB3ZWxsLXN0cnVjdHVyZWQgc2V0IG9mIGRlcGVuZGVuY2llcyBhbmQgZmVhdHVyZSBmbGFncyBmb3IgdGhlIE1UNzkyNSB3aXJlbGVzcyBjaGlwc2V0LiBJIGV4cGVjdCB0byBzZWUgdGhlIHVzdWFsIHN1c3BlY3RzIOKAkyBlbmFibGluZy9kaXNhYmxpbmcgb2YgdmFyaW91cyA4MDIuMTEgc3RhbmRhcmRzLCBwcm9iYWJseSBzb21lIGNvbmZpZ3VyYXRpb24gZm9yIHBvd2VyIG1hbmFnZW1lbnQsIGRlZmluaXRlbHkgb3B0aW9ucyBmb3IgZGVidWcgZmVhdHVyZXMsIGFuZCBvZiBjb3Vyc2UsIHRoZSBldmVyLXByZXNlbnQgY2FsaWJyYXRpb24gYW5kIGhhcmR3YXJlLXNwZWNpZmljIHNldHRpbmdzLiBJJiMzOTtsbCBiZSBsb29raW5nIHRvIHNlZSBob3cgdGhleSYjMzk7dmUgc3RydWN0dXJlZCB0aGUgZHJpdmVyIG9wdGlvbnMgZm9yIG11bHRpcGxlIGhhcmR3YXJlIHJldmlzaW9ucy4gR2l2ZW4gdGhlIE1UNzYmIzM5O3MgbW9kdWxhciBhcHByb2FjaCwgSSBhbnRpY2lwYXRlIGNsZWFuIHNlcGFyYXRpb24gb2YgY29yZSBmdW5jdGlvbmFsaXR5IGFuZCB0aGUgTVQ3OTI1LXNwZWNpZmljIGdsdWUgY29kZS4gSSB3aWxsIGNoZWNrIGZvciBhbnkgdW51c3VhbCwgcGxhdGZvcm0tc3BlY2lmaWMgY29uc3RyYWludHMgb3IgYW55dGhpbmcgdGhhdCBtaWdodCBpbXBhY3Qgb3ZlcmFsbCBwZXJmb3JtYW5jZSBvciBwb3dlciBjb25zdW1wdGlvbi4gTGV0JiMzOTtzIGdldCB0byBpdCBhbmQgc2VlIHdoYXQgaW50ZXJlc3Rpbmcgb3B0aW1pemF0aW9ucyB0aGV5JiMzOTt2ZSBpbXBsZW1lbnRlZCwgb3IgYXJlYXMgd2hlcmUgdGhleSYjMzk7dmUgbWF5YmUgZmFsbGVuIHNob3J0IGFuZCBJIGNhbiBzdWdnZXN0IGltcHJvdmVtZW50cy4gSSYjMzk7bSBob3BpbmcgaXQmIzM5O3MgYSBjbGVhbiwgd2VsbC1jb21tZW50ZWQgS2NvbmZpZywgYWx3YXlzIG1ha2VzIGxpZmUgZWFzaWVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwOToxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbiAgIDI6XHRjb25maWcgTVQ3OTI1X0NPTU1PTlxuICAgMzpcdFx0dHJpc3RhdGVcbiAgIDQ6XHRcdHNlbGVjdCBNVDc5MnhfTElCXG4gICA1Olx0XHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcbiAgIDY6XHRcbiAgIDc6XHRjb25maWcgTVQ3OTI1RVxuICAgODpcdFx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3OTI1RSAoUENJZSkgc3VwcG9ydFwmIzM0O1xuICAgOTpcdFx0c2VsZWN0IE1UNzkyNV9DT01NT05cbiAgMTA6XHRcdGRlcGVuZHMgb24gTUFDODAyMTFcbiAgMTE6XHRcdGRlcGVuZHMgb24gUENJXG4gIDEyOlx0XHRoZWxwXG4gIDEzOlx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc5MjUtYmFzZWQgd2lyZWxlc3MgUENJZSBkZXZpY2VzLFxuICAxNDpcdFx0ICB3aGljaCBzdXBwb3J0IG9wZXJhdGlvbiBhdCA2R0h6LCA1R0h6LCBhbmQgMi40R0h6IElFRUUgODAyLjExYmVcbiAgMTU6XHRcdCAgMngyOjJTUyA0MDk2LVFBTSwgMTYwTUh6IGNoYW5uZWxzLlxuICAxNjpcdFxuICAxNzpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxuICAxODpcdFxuICAxOTpcdGNvbmZpZyBNVDc5MjVVXG4gIDIwOlx0XHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc5MjVVIChVU0IpIHN1cHBvcnRcJiMzNDtcbiAgMjE6XHRcdHNlbGVjdCBNVDc5MnhfVVNCXG4gIDIyOlx0XHRzZWxlY3QgTVQ3OTI1X0NPTU1PTlxuICAyMzpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuICAyNDpcdFx0ZGVwZW5kcyBvbiBVU0JcbiAgMjU6XHRcdGhlbHBcbiAgMjY6XHRcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzkyNS1iYXNlZCB3aXJlbGVzcyBVU0IgZGV2aWNlcyxcbiAgMjc6XHRcdCAgd2hpY2ggc3VwcG9ydCBvcGVyYXRpb24gYXQgNkdIeiwgNUdIeiwgYW5kIDIuNEdIeiBJRUVFIDgwMi4xMWJlXG4gIDI4Olx0XHQgIDJ4MjoyU1MgNDA5Ni1RQU0sIDE2ME1IeiBjaGFubmVscy5cbiAgMjk6XHRcbiAgMzA6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDk6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ3ODQKCQkJCQkJCW91dHB1dDogNTIKCQkJCQkJCXRob3VnaHRzOiAzODgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIE1UNzkyNVUgRHJpdmVyJiMzOTtzIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBNVDc5MjVVYCBkcml2ZXIsIHdoaWNoIGhpbmdlcyBvbiBgTUFDODAyMTFgIGFuZCB0aGUgVVNCIHN1YnN5c3RlbS4gVGhhdCBpbW1lZGlhdGVseSBzdWdnZXN0cyBzb21lIHByb21pc2luZyBhdmVudWVzIGZvciBmdXp6aW5nLiBUaGlzIHBhdGNoIGludHJvZHVjZXMgYSBmZXcgbmV3IGZ1bmN0aW9uczogYG10NzkyNV9sb2FkX3ZlZnVzZV9mcm9tX2Z3YCwgYG10NzkyNV9tY3VfcmVhZF92ZWZ1c2VgLCBhbmQgYG10NzkyNV9tY3Vfc2VuZF92ZWZ1c2VfcGFnZWAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGVzZSBhcmUgZGVmaW5pdGVseSByZWFjaGFibGUgdmlhIFVTQiBmdXp6aW5nIHRlY2huaXF1ZXM7IGl0JiMzOTtzIHByYWN0aWNhbGx5IGEgZ2l2ZW4uIEFuZCBvZiBjb3Vyc2UsIHRoZSBkZWJ1Z2ZzIGludGVyZmFjZSBjb21lcyBpbnRvIHBsYXkgaWYgdGhlIGZpcm13YXJlIGluY2x1ZGVzIHRoYXQgdmVmdXNlIHJlZ2lvbi4KCk5vdywgdGhlIGZpcm13YXJlIHBhcnNpbmcgd2l0aGluIGBtdDc5MjVfbG9hZF92ZWZ1c2VfZnJvbV9md2AgcmVhbGx5IGdyYWJzIG15IGF0dGVudGlvbi4gVGhlIGZhY3QgdGhhdCB0aGlzIHBhcnNpbmcgY29kZSBpcyAqcmVhY2hhYmxlIGV2ZW4gd2l0aCBtYWxmb3JtZWQgZmlybXdhcmUqLi4uIHRoYXQgc2NyZWFtcyAmIzM0O2Z1enppbmcgdGFyZ2V0LiYjMzQ7IFRoaXMgaXMgd2hlcmUgU3l6a2FsbGVyIHJlYWxseSBzaGluZXM6IGl0IGNhbiBmdXp6IGZpcm13YXJlIGxvYWRpbmcuIFNvLCB0aGUga2V5IGZ1bmN0aW9ucyB0byBjb25jZW50cmF0ZSBvbiBzZWVtIHRvIGJlOgoKKiAgIGBtdDc5MjVfbG9hZF92ZWZ1c2VfZnJvbV9md2AKKiAgIGBtdDc5MjVfbWN1X3JlYWRfdmVmdXNlYAoqICAgYG10NzkyNV9tY3Vfc2VuZF92ZWZ1c2VfcGFnZWAKKiAgIGBtdDc5MjVfdmVmdXNlX3JlYWRgCgpJIHNob3VsZCBjaGVjayBpZiBgbXQ3OTI1X3ZlZnVzZV9yZWFkYCBpcyBzdGF0aWMuIExvb2tzIGxpa2UgaXQgaXM6IGBzdGF0aWMgaW50IG10NzkyNV92ZWZ1c2VfcmVhZChzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpYC4gQWgsIHN0YXRpYy4uLiBpdCBtaWdodCBiZSBpbmxpbmVkIG9yIG1pZ2h0IG5vdCBoYXZlIGEgZGlzdGluY3Qgc3ltYm9sLiBCdXQgYG10NzkyNV9tY3VfcmVhZF92ZWZ1c2VgICppc24mIzM5O3QqIHN0YXRpYy4gSG9sZCBvbiwgaXNuJiMzOTt0IGBtdDc5MjVfbWN1X3JlYWRfdmVmdXNlYCBpbiBgbWN1LmNgIGFuZCBleHBvcnRlZD8gVGltZSB0byBjaGVjayB0aGUgc291cmNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwOToxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5MjVfbWN1X3JlYWRfdmVmdXNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz0yOTA9bXQ3OTI1X3ZlZnVzZV9yZWFkKHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMzEwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjMxMTpcdFx0cmV0ID0gbXQ3OTI1X21jdV9yZWFkX3ZlZnVzZShkZXYsIG9mZiwgY2h1bmssIGJ1ZiAmIzQzOyBvZmYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTMxMi1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYz04NzU9bXQ3OTI1X21jdV9zZW5kX3ZlZnVzZV9wYWdlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtOTA3LSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM6OTA4OmludCBtdDc5MjVfbWN1X3JlYWRfdmVmdXNlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHUxNiBvZmZzZXQsIHUxNiBjb3VudCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTkwOS1cdFx0XHQgICB1OCAqb3V0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5oPTE2MT1zdHJ1Y3QgbXQ3OTI1X3ZlZnVzZV9wYWdlX2NtZCB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmgtMTcxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1Lmg6MTcyOmludCBtdDc5MjVfbWN1X3JlYWRfdmVmdXNlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHUxNiBvZmZzZXQsIHUxNiBjb3VudCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5oLTE3My1cdFx0XHQgICB1OCAqb3V0KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDk6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTYyMTkKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiA1MzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNVDc5MjUgVkVmdXNlIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24gc3lzdGVtYXRpY2FsbHkuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGBtdDc5MjVfbWN1X3JlYWRfdmVmdXNlYCBpc24mIzM5O3Qgc3RhdGljLCB3aGljaCBpbW1lZGlhdGVseSBmbGFncyBpdCBhcyBzb21ldGhpbmcgdG8gcGF5IGF0dGVudGlvbiB0by4gQnV0LCBgbXQ3OTI1X2xvYWRfdmVmdXNlX2Zyb21fZndgICppcyogc3RhdGljLiBUaGlzIHJhaXNlcyB0aGUgcXVlc3Rpb24gb2YgaW5saW5pbmcuIFNpbmNlIGl0JiMzOTtzIHN0YXRpYywgaXQgY291bGQgYmUgaW5saW5lZCBpbnRvIGBtdDc5MjVfcnVuX2Zpcm13YXJlYC4gTGV0JiMzOTtzIHVzZSBgbXQ3OTI1X3J1bl9maXJtd2FyZWAgYXMgYSBmb2N1cyBzeW1ib2wuIEFoLCBidXQgd2FpdCwgYG10NzkyNV9ydW5fZmlybXdhcmVgIGlzIGluaXQgdGltZSwgc28gaXQgaXMgYSBnb29kIGZvY3VzIHN5bWJvbC4gT24gdGhlIG90aGVyIGhhbmQsIGBtdDc5MjVfbWN1X3JlYWRfdmVmdXNlYCBpcyBhbHNvIHdvcnRoIGZvY3VzaW5nIG9uLgoKTm93LCB3aGF0IGFib3V0IGBtdDc5MjVfbWN1X3NlbmRfdmVmdXNlX3BhZ2VgPyBUaGF0JiMzOTtzIHN0YXRpYyB0b28sIHNvIGl0IGNvdWxkIHBvdGVudGlhbGx5IGJlIGlubGluZWQgaW50byBgbXQ3OTI1X2xvYWRfdmVmdXNlX2Zyb21fZndgLiAgV2Ugc2hvdWxkIGNoZWNrIGBtdDc5MjVfdmVmdXNlX3JlYWRgLCB3aGljaCBpcyBzdGF0aWMsIGJ1dCBhbHNvIHBhc3NlZCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXIgdG8gYGRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZWAuIFRoYXQgbWVhbnMgaXQgKmNhbiYjMzk7dCogYmUgZnVsbHkgaW5saW5lZCBiZWNhdXNlIGl0cyBhZGRyZXNzIGlzIGJlaW5nIHRha2VuLiAgU3RpbGwsIGl0IG1pZ2h0IG5vdCBiZSBleHBvcnRlZCwgc28gaXRzIHNjb3BlIG1heSBiZSBsaW1pdGVkLgoKSW4gY29uY2x1c2lvbiwgSSB0aGluayB3ZSYjMzk7cmUgc2FmZSB0byB1c2UgYG10NzkyNV9ydW5fZmlybXdhcmVgIGFuZCBgbXQ3OTI1X21jdV9yZWFkX3ZlZnVzZWAgYXMgb3VyIHByaW1hcnkgZm9jdXMgc3ltYm9scy4KCk5vdywgbGV0JiMzOTtzIHJlLWV4YW1pbmUgdGhlIHBhdGNoIGl0c2VsZi4gSXQmIzM5O3MgYWRkaW5nOgoKKiAgIGBtdDc5MjVfdmVmdXNlX3JlYWRgIChzdGF0aWMsIGFkZHJlc3MgdGFrZW4gLSB0aGF0IGZ1bmN0aW9uIHBvaW50ZXIgYWdhaW4hKQoqICAgYG10NzkyNV9tY3Vfc2VuZF92ZWZ1c2VfcGFnZWAgKHN0YXRpYykKKiAgIGBtdDc5MjVfbWN1X3JlYWRfdmVmdXNlYCAobm9uLXN0YXRpYyAtIG91ciBtYWluIGNvbmNlcm4hKQoqICAgYG10NzkyNV9sb2FkX3ZlZnVzZV9mcm9tX2Z3YCAoc3RhdGljKQoKU28sIG15IGtleSBmb2N1cyBzeW1ib2xzIHJlbWFpbjoKCiogICBgbXQ3OTI1X3J1bl9maXJtd2FyZWAKKiAgIGBtdDc5MjVfbWN1X3JlYWRfdmVmdXNlYAoKUmVnYXJkaW5nIGNvbmZpZ3VyYXRpb25zLCB3ZSYjMzk7cmUgbG9va2luZyBhdCBgTVQ3OTI1VWAsIGBNQUM4MDIxMWAsIGFuZCBgVVNCYC4gSGFuZyBvbuKApiBgTVQ3OTI1VWAgZGVwZW5kcyBvbiBib3RoIGBNQUM4MDIxMWAgYW5kIGBVU0JgLiBUaGlzIGlzIHByZXR0eSBzdGFuZGFyZCBmb3IgdGhpcyB0eXBlIG9mIGhhcmR3YXJlLCBidXQgbGV0JiMzOTtzIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJiMzOTt0IGFueSBvdGhlciBkZXBlbmRlbmNpZXMgaW4gcGxheS4gTGV0JiMzOTtzIGJyaWVmbHkgY2hlY2sgYE1UNzkyeF9VU0JgIGFuZCBgTVQ3OTI1X0NPTU1PTmAgdG8gYmUgc3VyZS4gSXQmIzM5O3MgaW1wb3J0YW50IHRvIHJ1bGUgb3V0IGFueSB1bmV4cGVjdGVkIGludGVyYWN0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDk6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1UNzkyeF9VU0ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc9MzI9Y29uZmlnIE1UNzkyeF9MSUJcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6MzY6Y29uZmlnIE1UNzkyeF9VU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0zNy1cdHRyaXN0YXRlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA5OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3NTU0CgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogODQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgTVQ3OTI1VSBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJIGluaXRpYWxseSB0aG91Z2h0IGBNVDc5MjVVYCB3b3VsZCBiZSBlbm91Z2ggdG8gZ2V0IHRoZSBiYWxsIHJvbGxpbmcuIEJ1dCB3YWl0LCBhIGxpdHRsZSBtb3JlIGRpZ2dpbmcsIGFuZCBpdCBzZWVtcyB0aGF0IGBNVDc5MjVVYCBpc24mIzM5O3QgYSBzaW1wbGUgb24vb2ZmLCBidXQgYSB0cmlzdGF0ZSBjb25maWd1cmF0aW9uLiBMZXQgbWUgbWFrZSBzdXJlIEkmIzM5O20gY29uZmlndXJpbmcgdGhlIGRyaXZlciBhcHByb3ByaWF0ZWx5LgoKU28sIEkmIzM5O20gZ29pbmcgdG8gZW5hYmxlIGBNVDc5MjVVYCB0byBlbnN1cmUgdGhlIGRyaXZlciBpcyBmdW5jdGlvbmFsLgoKQWxzbywgaWYgSSB3YW50IHRvIHBsYXkgd2l0aCB0aGUgZGVidWcgZmlsZXN5c3RlbSwgYERFQlVHX0ZTYCBpcyByZXF1aXJlZC4gVGhhdCYjMzk7cyBhIG11c3QuIE5vdywgYmVmb3JlIEkganVtcCBpbiwgSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIHRoYXQgYG10NzkyNV9pbml0X2RlYnVnZnNgIGlzIGNvbXBpbGVkIGluIGEgY29uZGl0aW9uYWwgbWFubmVyLiBJIG5lZWQgdG8ga25vdyBpdCYjMzk7cyBvbmx5IGVuYWJsZWQgaWYgYERFQlVHX0ZTYCBpcyBkZWZpbmVkLCBvdGhlcndpc2UgSSB3aWxsIHdhc3RlIG15IHRpbWUgY2hhc2luZyBhIG5vbi1leGlzdGVudCBmdW5jdGlvbi4gVGhpcyBjb25kaXRpb25hbCBjb21waWxlIGNoZWNrIGlzIGtleSB0byBlbnN1cmluZyBhIGNsZWFuIGFuZCBlZmZlY3RpdmUgZGVidWdnaW5nIHN0cmF0ZWd5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwOToxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5MjVfaW5pdF9kZWJ1Z2ZzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz0yOTA9bXQ3OTI1X3ZlZnVzZV9yZWFkKHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMzMzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjMzNDppbnQgbXQ3OTI1X2luaXRfZGVidWdmcyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTMzNS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jPTE5MD1zdGF0aWMgdm9pZCBtdDc5MjVfaW5pdF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjE4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjIxOTpcdHJldCA9IG10NzkyNV9pbml0X2RlYnVnZnMoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMjAtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg9MzIxPWludCBtdDc5MjVfaW5pdF9tbG9fY2FwcyhzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oOjMyMjppbnQgbXQ3OTI1X2luaXRfZGVidWdmcyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTMyMy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDk6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgzODEKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqRGVidWdnaW5nIHRoZSBDb25kaXRpb25hbCBDb21waWxhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYGRlYnVnZnMuY2AuIE15IGluaXRpYWwgcXVlc3Rpb24gaXMgd2hldGhlciBvciBub3QgdGhpcyBmaWxlIGlzIGNvbXBpbGVkIHVuZGVyIHNwZWNpZmljIGNvbmRpdGlvbnMuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZXJlJiMzOTtzIGFueSBjb25kaXRpb25hbCBsb2dpYyBhdCBwbGF5IGhlcmUuIEFyZSB0aGVyZSBgI2lmZGVmYCBibG9ja3Mgb3Igc29tZXRoaW5nIHNpbWlsYXIgdGhhdCB3b3VsZCBwcmV2ZW50IHRoaXMgZmlsZSBmcm9tIGJlaW5nIGluY2x1ZGVkIGluIGV2ZXJ5IGJ1aWxkPyBJcyB0aGlzIGZ1bmN0aW9uYWxpdHkgZW5hYmxlZCBvciBkaXNhYmxlZCBieSBhIGZlYXR1cmUgZmxhZywgYSBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb24sIG9yIHBlcmhhcHMgYSBidWlsZCBlbnZpcm9ubWVudCBzZXR0aW5nPyBUaGlzIGlzIGNydWNpYWwgYmVjYXVzZSBpZiBpdCYjMzk7cyAqbm90KiBhbHdheXMgY29tcGlsZWQsIGFueSBkZWJ1Z2dpbmcgcmVsYXRlZCB0byB0aGlzIGZpbGUgY291bGQgYmUgbWlzbGVhZGluZyB3aXRob3V0IHRoZSBzcGVjaWZpYyBjb25kaXRpb25zIHRoYXQgY2F1c2UgY29tcGlsYXRpb24gYmVpbmcgbWV0LiBJIGhhdmUgdG8gY29uZmlybSBpdHMgcHJlc2VuY2UgYmVmb3JlIEkgc3RhcnQgZGVidWdnaW5nLCB0byBhdm9pZCB3YXN0aW5nIHRpbWUuIEkgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZywgTWFrZWZpbGVzLCBvciBldmVuIHRoZSBidWlsZCBzY3JpcHRzIHRvIHVuZGVyc3RhbmQgdGhlIGluY2x1c2lvbiBjcml0ZXJpYS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDk6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVidWdmcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlPTU9b2JqLSQoQ09ORklHX01UNzkyNVUpICYjNDM7PSBtdDc5MjV1Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlLTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZTo3Om10NzkyNS1jb21tb24teSA6PSBtYWMubyBtY3UubyByZWdkLm8gbWFpbi5vIGluaXQubyBkZWJ1Z2ZzLm8gbmFuLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlLTgtbXQ3OTI1LWNvbW1vbi0kKENPTkZJR19OTDgwMjExX1RFU1RNT0RFKSAmIzQzOz0gdGVzdG1vZGUub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwOToxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODgwMwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDM4MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDb25maWd1cmF0aW9uIENvbnNpZGVyYXRpb25zIGZvciBGdXp6aW5nIHRoZSBNVDc5MjUgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gcHV0dGluZyB0b2dldGhlciBhIGZ1enppbmcgY29uZmlndXJhdGlvbiBmb3IgdGhlIE1UNzkyNSBkcml2ZXIuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBjb3ZlciBhbGwgdGhlIGJhc2VzLiBJJiMzOTttIHN0YXJ0aW5nIGJ5IHJlbWVtYmVyaW5nIHRoYXQgY29kZSBpcyBjb21waWxlZCBidXQgdGhlcmUmIzM5O3MgYSBjaGFuY2UgYGRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZWAgY291bGQgYmUgYSBzdHViIGlmIGBERUJVR19GU2AgaXMgZGlzYWJsZWQsIHNvIEkgbmVlZCB0byBleHBsaWNpdGx5IGVuYWJsZSB0aGF0IHRvIGJlIG9uIHRoZSBzYWZlIHNpZGUuIEl0JiMzOTtzIGxpa2VseSBlbmFibGVkIGJ5IGRlZmF1bHQgaW4gc3l6a2FsbGVyIGNvbmZpZ3MsIGJ1dCBpdCYjMzk7cyBnb29kIHRvIGJlIGV4cGxpY2l0LgoKTm93LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBkaWZmZXJlbnQgTVQ3OTI1IHZhcmlhbnRzLiBgTVQ3OTI1RWAgaXMgZm9yIFBDSWUsIGFuZCB3aGlsZSBzeXprYWxsZXImIzM5O3Mgbm90ICppZGVhbCogZm9yIGZ1enppbmcgUENJZSB1bmxlc3MgaXQmIzM5O3MgYSB2ZXJ5IHNwZWNpZmljIGRyaXZlciB3aXRoIGEgZmFrZSBQQ0kgZGV2aWNlLCBJJiMzOTt2ZSBnb3QgYE1UNzkyNVVgIChVU0IpIHdoaWNoIGlzIGRlZmluaXRlbHkgZnV6emFibGUgd2l0aCBzeXprYWxsZXIuIEkmIzM5O2xsIGluY2x1ZGUgYm90aCBgTVQ3OTI1RWAgYW5kIGBNVDc5MjVVYCBqdXN0IGluIGNhc2UsIGJldHRlciBzYWZlIHRoYW4gc29ycnkuCgpTbywgaGVyZSYjMzk7cyBteSBpbml0aWFsIHN1bW1hcnk6IEkmIzM5O20gY29uZmlkZW50IHRoaXMgaXMgd29ydGggZnV6emluZywgYW5kIEkgd2FudCB0byBmb2N1cyBvbiBmdW5jdGlvbnMgbGlrZSBgbXQ3OTI1X3J1bl9maXJtd2FyZWAgYW5kIGBtdDc5MjVfbWN1X3JlYWRfdmVmdXNlYC4gTXkgaW5pdGlhbCBjb25maWcgbG9va3MgbGlrZSB0aGlzOgoKKiAgICoqV29ydGhGdXp6aW5nOioqIGB0cnVlYAoqICAgKipGb2N1c1N5bWJvbHM6KioKICAgICogICBgbXQ3OTI1X3J1bl9maXJtd2FyZWAKICAgICogICBgbXQ3OTI1X21jdV9yZWFkX3ZlZnVzZWAKKiAgICoqRW5hYmxlQ29uZmlnczoqKgogICAgKiAgIGBNVDc5MjVVYAogICAgKiAgIGBNVDc5MjVFYAogICAgKiAgIGBNQUM4MDIxMWAKICAgICogICBgVVNCYAogICAgKiAgIGBERUJVR19GU2AKCkJ1dCwgd2FpdCwgSSBuZWVkIHRvIGFjY291bnQgZm9yIGRlcGVuZGVuY2llcy4gYE1UNzkyNUVgIGRlcGVuZHMgb24gYFBDSWAsIHNvIEkgaGF2ZSB0byBpbmNsdWRlIGBQQ0lgIG5vdy4gQWxzbywgYE1UNzkyNVVgIGRlcGVuZHMgb24gYE1BQzgwMjExYCBhbmQgYFVTQmAuIGBNQUM4MDIxMWAgaW4gdHVybiBkZXBlbmRzIG9uIGBDRkc4MDIxMWAsIHNvIEkmIzM5O2xsIGFkZCB0aGF0IHRvIHRoZSBlbmFibGUgbGlzdCBhcyB3ZWxsLiBKdXN0IHRvIGJlIHRob3JvdWdoIEkgbmVlZCB0byBjaGVjayBgTUFDODAyMTFgIGRlcGVuZGVuY2llcyB0b28sIGNhbiYjMzk7dCBiZSB0b28gY2FyZWZ1bCBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwOToxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTUFDODAyMTEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOmNvbmZpZyBNQUM4MDIxMVxubmV0L21hYzgwMjExL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgSUVFRSA4MDIuMTEgTmV0d29ya2luZyBTdGFjayAobWFjODAyMTEpXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9MTk9aWYgTUFDODAyMTEgIT0gblxubmV0L21hYzgwMjExL0tjb25maWctMjAtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMTpjb25maWcgTUFDODAyMTFfSEFTX1JDXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMi1cdGJvb2xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzLVxubmV0L21hYzgwMjExL0tjb25maWc6MjQ6Y29uZmlnIE1BQzgwMjExX1JDX01JTlNUUkVMXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNS1cdGJvb2wgXCYjMzQ7TWluc3RyZWxcJiMzNDsgaWYgRVhQRVJUXG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9MzE9Y2hvaWNlXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNDAtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo0MTpjb25maWcgTUFDODAyMTFfUkNfREVGQVVMVF9NSU5TVFJFTFxubmV0L21hYzgwMjExL0tjb25maWctNDItXHRib29sIFwmIzM0O01pbnN0cmVsXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9NDg9ZW5kY2hvaWNlXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjUwOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01MS1cdHN0cmluZ1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTU3PWNvbW1lbnQgXCYjMzQ7U29tZSB3aXJlbGVzcyBkcml2ZXJzIHJlcXVpcmUgYSByYXRlIGNvbnRyb2wgYWxnb3JpdGhtXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNTktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo2MDpjb25maWcgTUFDODAyMTFfS1VOSVRfVEVTVFxubmV0L21hYzgwMjExL0tjb25maWctNjEtXHR0cmlzdGF0ZSBcJiMzNDtLVW5pdCB0ZXN0cyBmb3IgbWFjODAyMTFcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTY5LVxubmV0L21hYzgwMjExL0tjb25maWc6NzA6Y29uZmlnIE1BQzgwMjExX01FU0hcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTcxLVx0Ym9vbCBcJiMzNDtFbmFibGUgbWFjODAyMTEgbWVzaCBuZXR3b3JraW5nIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03OC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjc5OmNvbmZpZyBNQUM4MDIxMV9MRURTXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04MC1cdGJvb2wgXCYjMzQ7RW5hYmxlIExFRCB0cmlnZ2Vyc1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg3LVxubmV0L21hYzgwMjExL0tjb25maWc6ODg6Y29uZmlnIE1BQzgwMjExX0RFQlVHRlNcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg5LVx0Ym9vbCBcJiMzNDtFeHBvcnQgbWFjODAyMTEgaW50ZXJuYWxzIGluIERlYnVnRlNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05Ni1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjk3OmNvbmZpZyBNQUM4MDIxMV9NRVNTQUdFX1RSQUNJTkdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTk4LVx0Ym9vbCBcJiMzNDtUcmFjZSBhbGwgbWFjODAyMTEgZGVidWcgbWVzc2FnZXNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMDktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTA6bWVudWNvbmZpZyBNQUM4MDIxMV9ERUJVR19NRU5VXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTEtXHRib29sIFwmIzM0O1NlbGVjdCBtYWM4MDIxMSBkZWJ1Z2dpbmcgZmVhdHVyZXNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTUtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTY6Y29uZmlnIE1BQzgwMjExX05PSU5MSU5FXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTctXHRib29sIFwmIzM0O0RvIG5vdCBpbmxpbmUgVFgvUlggaGFuZGxlcnNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzEtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMzI6Y29uZmlnIE1BQzgwMjExX1ZFUkJPU0VfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEzMy1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBkZWJ1Z2dpbmcgb3V0cHV0XCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTQyLVxubmV0L21hYzgwMjExL0tjb25maWc6MTQzOmNvbmZpZyBNQUM4MDIxMV9NTE1FX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDQtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWFuYWdlZCBNTE1FIG91dHB1dFwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1My1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE1NDpjb25maWcgTUFDODAyMTFfU1RBX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTUtXHRib29sIFwmIzM0O1ZlcmJvc2Ugc3RhdGlvbiBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjItXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNjM6Y29uZmlnIE1BQzgwMjExX0hUX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjQtXHRib29sIFwmIzM0O1ZlcmJvc2UgSFQgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTc0LVxubmV0L21hYzgwMjExL0tjb25maWc6MTc1OmNvbmZpZyBNQUM4MDIxMV9PQ0JfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3Ni1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBPQ0IgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTg1LVxubmV0L21hYzgwMjExL0tjb25maWc6MTg2OmNvbmZpZyBNQUM4MDIxMV9JQlNTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODctXHRib29sIFwmIzM0O1ZlcmJvc2UgSUJTUyBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTYtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxOTc6Y29uZmlnIE1BQzgwMjExX1BTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTgtXHRib29sIFwmIzM0O1ZlcmJvc2UgcG93ZXJzYXZlIG1vZGUgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjA4LVxubmV0L21hYzgwMjExL0tjb25maWc6MjA5OmNvbmZpZyBNQUM4MDIxMV9NUExfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIxMC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIHBlZXIgbGluayBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjEtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMjI6Y29uZmlnIE1BQzgwMjExX01QQVRIX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjMtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBwYXRoIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIzNTpjb25maWcgTUFDODAyMTFfTUhXTVBfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNi1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIEhXTVAgcm91dGluZyBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDg6Y29uZmlnIE1BQzgwMjExX01FU0hfU1lOQ19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjQ5LVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggc3luY2hyb25pemF0aW9uIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1OC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI1OTpjb25maWcgTUFDODAyMTFfTUVTSF9DU0FfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2MC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIGNoYW5uZWwgc3dpdGNoIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI3MDpjb25maWcgTUFDODAyMTFfTUVTSF9QU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjcxLVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggcG93ZXJzYXZlIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI4MC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI4MTpjb25maWcgTUFDODAyMTFfVERMU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjgyLVx0Ym9vbCBcJiMzNDtWZXJib3NlIFRETFMgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjkyLVxubmV0L21hYzgwMjExL0tjb25maWc6MjkzOmNvbmZpZyBNQUM4MDIxMV9ERUJVR19DT1VOVEVSU1xubmV0L21hYzgwMjExL0tjb25maWctMjk0LVx0Ym9vbCBcJiMzNDtFeHRyYSBzdGF0aXN0aWNzIGZvciBUWC9SWCBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzozMDg6Y29uZmlnIE1BQzgwMjExX1NUQV9IQVNIX01BWF9TSVpFXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDktXHRpbnQgXCYjMzQ7U3RhdGlvbiBoYXNoIHRhYmxlIG1heGltdW0gc2l6ZVwmIzM0OyBpZiBNQUM4MDIxMV9ERUJVR19NRU5VXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA5OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxOTM5CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgZXhwZXJ0IHBlcnNwZWN0aXZlOgoKKipEZXBlbmRlbmN5IERlZXAgRGl2ZSoqCgpSaWdodCwgc28gYE1BQzgwMjExYCBoaW5nZXMgb24gYENGRzgwMjExYC4gVGhhdCYjMzk7cyBzdGFuZGFyZCBmYXJlLCBidXQgaXQmIzM5O3MgY3J1Y2lhbCB0byB1bmRlcnN0YW5kIHdoZXJlICp0aGF0KiBkZXBlbmRlbmN5IGNoYWluIGxlYWRzLiBJdCYjMzk7cyB0aW1lIHRvIGRpZyBpbnRvIHRoZSBgQ0ZHODAyMTFgIGRlcGVuZGVuY2llcyB0aGVtc2VsdmVzLiBXZSBuZWVkIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBvZiB0aGUgc3VwcG9ydGluZyBpbmZyYXN0cnVjdHVyZS4gSSYjMzk7bSB0aGlua2luZywgYXJlIHRoZXJlIGFueSBwb3RlbnRpYWwgY29uZmxpY3RzIGx1cmtpbmcgaW4gdGhvc2UgZGVwZW5kZW5jaWVzPyBBcmUgd2UgbG9va2luZyBhdCBhIGNsZWFuLCB3ZWxsLWRlZmluZWQgYXJjaGl0ZWN0dXJlLCBvciBzb21ldGhpbmcgdGhhdCBjb3VsZCBjYXVzZSBpc3N1ZXMgZG93biB0aGUgbGluZT8gTGV0JiMzOTtzIGdldCBhIGhhbmRsZSBvbiB0aGUgbGFuZHNjYXBlIGJlZm9yZSB3ZSBwcm9jZWVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwOToxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQ0ZHODAyMTEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9LY29uZmlnPTE0PWNvbmZpZyBXRVhUX1BSSVZcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNi1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE3OmNvbmZpZyBDRkc4MDIxMVxubmV0L3dpcmVsZXNzL0tjb25maWctMTgtXHR0cmlzdGF0ZSBcJiMzNDtjZmc4MDIxMSAtIHdpcmVsZXNzIGNvbmZpZ3VyYXRpb24gQVBJXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWc9Mzg9Y29uZmlnIE5MODAyMTFfVEVTVE1PREVcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy01MS1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjUyOmNvbmZpZyBDRkc4MDIxMV9ERVZFTE9QRVJfV0FSTklOR1Ncbm5ldC93aXJlbGVzcy9LY29uZmlnLTUzLVx0Ym9vbCBcJiMzNDtlbmFibGUgZGV2ZWxvcGVyIHdhcm5pbmdzXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctNjctXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo2ODpjb25maWcgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy02OS1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgY2VydGlmaWNhdGlvbiBvbnVzXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctODgtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo4OTpjb25maWcgQ0ZHODAyMTFfUkVRVUlSRV9TSUdORURfUkVHREJcbm5ldC93aXJlbGVzcy9LY29uZmlnLTkwLVx0Ym9vbCBcJiMzNDtyZXF1aXJlIHJlZ2RiIHNpZ25hdHVyZVwmIzM0OyBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy05OC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjk5OmNvbmZpZyBDRkc4MDIxMV9VU0VfS0VSTkVMX1JFR0RCX0tFWVNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEwMC1cdGJvb2wgXCYjMzQ7YWxsb3cgcmVnZGIga2V5cyBzaGlwcGVkIHdpdGggdGhlIGtlcm5lbFwmIzM0OyBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMTAtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMTE6Y29uZmlnIENGRzgwMjExX0VYVFJBX1JFR0RCX0tFWURJUlxubmV0L3dpcmVsZXNzL0tjb25maWctMTEyLVx0c3RyaW5nIFwmIzM0O2FkZGl0aW9uYWwgcmVnZGIga2V5IGRpcmVjdG9yeVwmIzM0OyBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMjEtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMjI6Y29uZmlnIENGRzgwMjExX1JFR19DRUxMVUxBUl9ISU5UU1xubmV0L3dpcmVsZXNzL0tjb25maWctMTIzLVx0Ym9vbCBcJiMzNDtjZmc4MDIxMSByZWd1bGF0b3J5IHN1cHBvcnQgZm9yIGNlbGx1bGFyIGJhc2Ugc3RhdGlvbiBoaW50c1wmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTEzNC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjEzNTpjb25maWcgQ0ZHODAyMTFfUkVHX1JFTEFYX05PX0lSXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMzYtXHRib29sIFwmIzM0O2NmZzgwMjExIHN1cHBvcnQgZm9yIE5PX0lSIHJlbGF4YXRpb25cJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNTgtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNTk6Y29uZmlnIENGRzgwMjExX0RFRkFVTFRfUFNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2MC1cdGJvb2wgXCYjMzQ7ZW5hYmxlIHBvd2Vyc2F2ZSBieSBkZWZhdWx0XCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTY4LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTY5OmNvbmZpZyBDRkc4MDIxMV9ERUJVR0ZTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzAtXHRib29sIFwmIzM0O2NmZzgwMjExIERlYnVnRlMgZW50cmllc1wmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3Ni1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE3Nzpjb25maWcgQ0ZHODAyMTFfQ1JEQV9TVVBQT1JUXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzgtXHRib29sIFwmIzM0O3N1cHBvcnQgQ1JEQVwmIzM0OyBpZiBFWFBFUlRcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xODYtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxODc6Y29uZmlnIENGRzgwMjExX1dFWFRcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4OC1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgd2lyZWxlc3MgZXh0ZW5zaW9ucyBjb21wYXRpYmlsaXR5XCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTkzLVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTk0OmNvbmZpZyBDRkc4MDIxMV9LVU5JVF9URVNUXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOTUtXHR0cmlzdGF0ZSBcJiMzNDtLVW5pdCB0ZXN0cyBmb3IgY2ZnODAyMTFcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwOToxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzA3MgoJCQkJCQkJb3V0cHV0OiAyMTcKCQkJCQkJCXRob3VnaHRzOiAzNjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgTVQ3OTI1IERyaXZlciBQYXRjaCBmb3IgRnV6emluZyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gbGFuZHNjYXBlLiBgQ0ZHODAyMTFgIGFwcGVhcnMgdG8gYmUgdGhlIGNvcmUsIHdpdGggbm8gc2lnbmlmaWNhbnQgZGVwZW5kZW5jaWVzLCBwZXJoYXBzIGp1c3QgYE5FVGAuIFRoZSBzcGVjaWZpYyBoYXJkd2FyZSBjb25maWd1cmF0aW9ucyBhcmUgYE1UNzkyNVVgIGFuZCBgTVQ3OTI1RWAsIGFuZCB0aGVuIHRoZSBjb21tb24gY29tcG9uZW50cyBsaWtlIGBNQUM4MDIxMWAsIGBDRkc4MDIxMWAsIGBVU0JgLCBgUENJYCwgYW5kIGBERUJVR19GU2AuCgpBIHF1aWNrIHNhbml0eSBjaGVjayByZXZlYWxzIHNvbWUgZGVwZW5kZW5jaWVzIEkgbmVlZCB0byBrZWVwIGluIG1pbmQuIGBNVDc5MjVVYCBuZWVkcyBgVVNCYCwgYW5kIGBNVDc5MjVFYCBuZWVkcyBgUENJYC4gT2J2aW91c2x5LCBgTUFDODAyMTFgIGRlcGVuZHMgb24gYENGRzgwMjExYCwgc28gSSYjMzk7bGwgaW5jbHVkZSBhbGwgb2YgdGhlbS4KCk5vdywgZm9yIGZ1enppbmcsIEkgbmVlZCB0byBpZGVudGlmeSBnb29kIGZvY3VzIHN5bWJvbHMuICBJIGluaXRpYWxseSB0aG91Z2h0IGBtdDc5MjVfcnVuX2Zpcm13YXJlYCB3b3VsZCBiZSBzdWl0YWJsZSwgYW5kIGl0IHNlZW1zIHRvIGJlIGNhbGxlZCBkdXJpbmcgZGV2aWNlIGluaXRpYWxpemF0aW9uLCB3aGljaCBpcyBwcm9taXNpbmcuIGBtdDc5MjVfbWN1X3JlYWRfdmVmdXNlYCBpcyBhbHNvIGludHJpZ3VpbmcsIGFuZCBpdCBhcHBlYXJzIGR1cmluZyB0aGUgcmVhZGluZyBvZiB0aGUgZGVidWdmcyBmaWxlIHdoaWNoIHNlZW1zIGxpa2UgYSBnb29kIHRhcmdldC4gSSBsaWtlIHRoYXQsIGFzIGl0IGltcGxpZXMgdXNlciBpbnRlcmFjdGlvbiBhbmQgcG90ZW50aWFsIGZvciBmdXp6aW5nLiBUaGlzIHBhdGNoIGFwcGVhcnMgdG8gaW1wbGVtZW50IGEgbmV3IGZlYXR1cmUgKHZpcnR1YWwgZWZ1c2UgbG9hZGluZyBmcm9tIGZpcm13YXJlKSwgc28gaXQmIzM5O3MgYSBnb29kIGNhbmRpZGF0ZSBmb3IgdGhvcm91Z2ggdGVzdGluZy4KCkxldCYjMzk7cyBkb3VibGUtY2hlY2sgZm9yIGFueSBub24tc3RhdGljIGZ1bmN0aW9ucyBhZGRlZCBieSB0aGlzIHBhdGNoLCB0byBicm9hZGVuIG15IGZ1enppbmcgY292ZXJhZ2UuIGBtdDc5MjVfbWN1X3JlYWRfdmVmdXNlYCBzZWVtcyB0byBiZSB0aGUgb25seSBvbmUuIFRoZSBvdGhlciBwb3RlbnRpYWxseSByZWxldmFudCBmdW5jdGlvbnMsIGBtdDc5MjVfbWN1X3NlbmRfdmVmdXNlX3BhZ2VgLCBgbXQ3OTI1X2xvYWRfdmVmdXNlX2Zyb21fZndgLCBhbmQgYG10NzkyNV92ZWZ1c2VfcmVhZGAsIGFyZSBzdGF0aWMsIHdoaWNoIEkgd2lsbCBub3QgYmUgZGlyZWN0bHkgdGFyZ2V0aW5nLgoKVGhlcmVmb3JlLCB0aGUgbWFpbiBmb2N1cyBzeW1ib2xzIGZvciBmdXp6aW5nIHdpbGwgYmU6CgoqICAgYG10NzkyNV9ydW5fZmlybXdhcmVgCiogICBgbXQ3OTI1X21jdV9yZWFkX3ZlZnVzZWAKClRpbWUgdG8gc2V0IHRoZSByZXN1bHRzIGFuZCBtb3ZlIGZvcndhcmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA5OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNVDc5MjVVJiMzNDssCiAgICAmIzM0O01UNzkyNUUmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7Q0ZHODAyMTEmIzM0OywKICAgICYjMzQ7VVNCJiMzNDssCiAgICAmIzM0O1BDSSYjMzQ7LAogICAgJiMzNDtERUJVR19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzkyNV9ydW5fZmlybXdhcmUmIzM0OywKICAgICYjMzQ7bXQ3OTI1X21jdV9yZWFkX3ZlZnVzZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIGxvYWRpbmcgJiMzOTt2aXJ0dWFsIGVmdXNlJiMzOTsgKHZlZnVzZSkgZGF0YSBmcm9tIGZpcm13YXJlIGZvciB0aGUgTWVkaWFUZWsgTVQ3OTI1IHdpcmVsZXNzIGRyaXZlci4gVGhlIGRyaXZlciBoYXMgYSBVU0IgdmFyaWFudCAoTVQ3OTI1VSkgd2hpY2ggY2FuIGJlIGZ1enplZCB1c2luZyBzeXprYWxsZXImIzM5O3MgVVNCIGZ1enppbmcgY2FwYWJpbGl0aWVzLiBUaGUgZmlybXdhcmUgbG9hZGluZyBsb2dpYyBpbiBgbXQ3OTI1X3J1bl9maXJtd2FyZWAgYW5kIHRoZSBkZWJ1Z2ZzIHJlYWQgZnVuY3Rpb24gYG10NzkyNV9tY3VfcmVhZF92ZWZ1c2VgIGFyZSByZWFjaGFibGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzkyNVUmIzM0OywKICAgICYjMzQ7TVQ3OTI1RSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OywKICAgICYjMzQ7UENJJiMzNDssCiAgICAmIzM0O0RFQlVHX0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXQ3OTI1X3J1bl9maXJtd2FyZSYjMzQ7LAogICAgJiMzNDttdDc5MjVfbWN1X3JlYWRfdmVmdXNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgbG9hZGluZyAmIzM5O3ZpcnR1YWwgZWZ1c2UmIzM5OyAodmVmdXNlKSBkYXRhIGZyb20gZmlybXdhcmUgZm9yIHRoZSBNZWRpYVRlayBNVDc5MjUgd2lyZWxlc3MgZHJpdmVyLiBUaGUgZHJpdmVyIGhhcyBhIFVTQiB2YXJpYW50IChNVDc5MjVVKSB3aGljaCBjYW4gYmUgZnV6emVkIHVzaW5nIHN5emthbGxlciYjMzk7cyBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXMuIFRoZSBmaXJtd2FyZSBsb2FkaW5nIGxvZ2ljIGluIGBtdDc5MjVfcnVuX2Zpcm13YXJlYCBhbmQgdGhlIGRlYnVnZnMgcmVhZCBmdW5jdGlvbiBgbXQ3OTI1X21jdV9yZWFkX3ZlZnVzZWAgYXJlIHJlYWNoYWJsZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA5OjE3OjMwLjgzODM4NzhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDkyMzQ4OTY4MDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVQ3OTI1VVwiLFxuICAgIFwiTVQ3OTI1RVwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIkNGRzgwMjExXCIsXG4gICAgXCJVU0JcIixcbiAgICBcIlBDSVwiLFxuICAgIFwiREVCVUdfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc5MjVfcnVuX2Zpcm13YXJlXCIsXG4gICAgXCJtdDc5MjVfbWN1X3JlYWRfdmVmdXNlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBsb2FkaW5nICd2aXJ0dWFsIGVmdXNlJyAodmVmdXNlKSBkYXRhIGZyb20gZmlybXdhcmUgZm9yIHRoZSBNZWRpYVRlayBNVDc5MjUgd2lyZWxlc3MgZHJpdmVyLiBUaGUgZHJpdmVyIGhhcyBhIFVTQiB2YXJpYW50IChNVDc5MjVVKSB3aGljaCBjYW4gYmUgZnV6emVkIHVzaW5nIHN5emthbGxlcidzIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcy4gVGhlIGZpcm13YXJlIGxvYWRpbmcgbG9naWMgaW4gYG10NzkyNV9ydW5fZmlybXdhcmVgIGFuZCB0aGUgZGVidWdmcyByZWFkIGZ1bmN0aW9uIGBtdDc5MjVfbWN1X3JlYWRfdmVmdXNlYCBhcmUgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwOToxNzozMC44MzgzOTQ2NFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgzMTU4MjcwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDFlOGVkNDc2NzAzMmI4NzZjYTk1MWQ5Y2FkNjUyZWQyN2Y0ZjVlZjVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBBdWcgNSAwOToxNzoyOSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuaFxcbmluZGV4IDBlZGVkYTU2OWU5YTUuLjljODQ0YmVmOTJjOWYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuaFxcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmhcXG5AQCAtNDQsNiArNDQsNyBAQFxcbiBlbnVtIHtcXG4gXFx0RldfVFlQRV9ERUZBVUxUID0gMCxcXG4gXFx0RldfVFlQRV9DTEMgPSAyLFxcbitcXHRGV19UWVBFX0VYVEVORF9CSU5fRUZVU0UgPSAzLFxcbiBcXHRGV19UWVBFX01BWF9OVU0gPSAyNTVcXG4gfTtcXG4gXFxuQEAgLTE0ODEsNiArMTQ4Miw3IEBAIGVudW0ge1xcbiBcXHRNVF9OSUNfQ0FQXzZHLFxcbiBcXHRNVF9OSUNfQ0FQX0NISVBfQ0FQID0gMHgyMCxcXG4gXFx0TVRfTklDX0NBUF9FTUxfQ0FQID0gMHgyMixcXG4rXFx0TVRfTklDX0NBUF9WRUZVU0VfSU5GTyA9IDB4NDQsXFxuIH07XFxuIFxcbiAjZGVmaW5lIFVOSV9XT1dfREVURUNUX1RZUEVfTUFHSUNcXHRcXHRCSVQoMClcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jXFxuaW5kZXggZDAxZmY0OWRlNDdhZi4uMzRlMjYxZTI0N2ZjZCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmNcXG5AQCAtMjg2LDYgKzI4Niw1MSBAQCBzdGF0aWMgaW50IG10NzkyNV9jaGlwX3Jlc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuIFxcbiBERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19yZXNldCwgTlVMTCwgbXQ3OTI1X2NoaXBfcmVzZXQsIFxcXCIlbGxkXFxcXG5cXFwiKTtcXG4gXFxuK3N0YXRpYyBpbnRcXG4rbXQ3OTI1X3ZlZnVzZV9yZWFkKHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSlcXG4re1xcbitcXHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gZGV2X2dldF9kcnZkYXRhKHMtXFx1MDAzZXByaXZhdGUpO1xcbitcXHR1MTYgc2l6ZSA9IGRldi1cXHUwMDNldmVmdXNlX2NhcC5zaXplO1xcbitcXHRpbnQgb2ZmID0gMDtcXG4rXFx0dTggKmJ1ZjtcXG4rXFx0aW50IHJldCA9IDA7XFxuK1xcbitcXHRpZiAoIWRldi1cXHUwMDNldmVmdXNlX2NhcC5wcmVzZW50IHx8ICFzaXplKSB7XFxuK1xcdFxcdHNlcV9wdXRzKHMsIFxcXCJ2ZWZ1c2U6IG5vIHJlZ2lvbiBpbiBGVyBpbWFnZVxcXFxuXFxcIik7XFxuK1xcdFxcdHJldHVybiAwO1xcbitcXHR9XFxuK1xcbitcXHRidWYgPSBremFsbG9jKHNpemUsIEdGUF9LRVJORUwpO1xcbitcXHRpZiAoIWJ1ZilcXG4rXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuK1xcbitcXHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShkZXYpO1xcbitcXHR3aGlsZSAob2ZmIFxcdTAwM2MgKGludClzaXplKSB7XFxuK1xcdFxcdHUxNiBjaHVuayA9IG1pbl90KHUxNiwgNTEyLCBzaXplIC0gb2ZmKTtcXG4rXFxuK1xcdFxcdHJldCA9IG10NzkyNV9tY3VfcmVhZF92ZWZ1c2UoZGV2LCBvZmYsIGNodW5rLCBidWYgKyBvZmYpO1xcbitcXHRcXHRpZiAocmV0KVxcbitcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0b2ZmICs9IGNodW5rO1xcbitcXHR9XFxuK1xcdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XFxuK1xcbitcXHRpZiAocmV0KSB7XFxuK1xcdFxcdHNlcV9wcmludGYocywgXFxcInZlZnVzZTogcmVhZCBmYWlsZWQgYXQgMHglMDR4ICglZClcXFxcblxcXCIsIG9mZiwgcmV0KTtcXG4rXFx0XFx0a2ZyZWUoYnVmKTtcXG4rXFx0XFx0cmV0dXJuIDA7XFxuK1xcdH1cXG4rXFxuK1xcdHNlcV9wcmludGYocywgXFxcInZlZnVzZSBjb250ZW50OiAldSBieXRlc1xcXFxuXFxcIiwgc2l6ZSk7XFxuK1xcdGZvciAob2ZmID0gMDsgb2ZmIFxcdTAwM2MgKGludClzaXplOyBvZmYgKz0gMTYpXFxuK1xcdFxcdHNlcV9wcmludGYocywgXFxcIiUwNHg6ICUqcGhcXFxcblxcXCIsIG9mZixcXG4rXFx0XFx0XFx0ICAgKGludCltaW5fdCh1MTYsIDE2LCBzaXplIC0gb2ZmKSwgYnVmICsgb2ZmKTtcXG4rXFxuK1xcdGtmcmVlKGJ1Zik7XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4gaW50IG10NzkyNV9pbml0X2RlYnVnZnMoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG4ge1xcbiBcXHRzdHJ1Y3QgZGVudHJ5ICpkaXI7XFxuQEAgLTMwOSw2ICszNTQsMTMgQEAgaW50IG10NzkyNV9pbml0X2RlYnVnZnMoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG4gXFx0ZGVidWdmc19jcmVhdGVfZmlsZShcXFwiaWRsZS10aW1lb3V0XFxcIiwgMDYwMCwgZGlyLCBkZXYsXFxuIFxcdFxcdFxcdCAgICBcXHUwMDI2Zm9wc19wbV9pZGxlX3RpbWVvdXQpO1xcbiBcXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFxcXCJjaGlwX3Jlc2V0XFxcIiwgMDYwMCwgZGlyLCBkZXYsIFxcdTAwMjZmb3BzX3Jlc2V0KTtcXG4rXFx0Lyogb25seSBleHBvc2UgdGhlIHZlZnVzZSByZWFkIG5vZGUgd2hlbiBhIHZlZnVzZSByZWdpb24gd2FzIGZvdW5kIGluIHRoZVxcbitcXHQgKiBGVyBpbWFnZSAoRlcgcmVwb3J0cyB0aGUgY2FwYWJpbGl0eSB1bmNvbmRpdGlvbmFsbHksIHNvIGdhdGUgb24gdGhlXFxuK1xcdCAqIGFjdHVhbCByZWdpb24gcHJlc2VuY2UgaW5zdGVhZClcXG4rXFx0ICovXFxuK1xcdGlmIChkZXYtXFx1MDAzZXZlZnVzZV9jYXAucHJlc2VudClcXG4rXFx0XFx0ZGVidWdmc19jcmVhdGVfZGV2bV9zZXFmaWxlKGRldi1cXHUwMDNlbXQ3Ni5kZXYsIFxcXCJ2ZWZ1c2VcXFwiLCBkaXIsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICBtdDc5MjVfdmVmdXNlX3JlYWQpO1xcbiBcXHRkZWJ1Z2ZzX2NyZWF0ZV9kZXZtX3NlcWZpbGUoZGV2LVxcdTAwM2VtdDc2LmRldiwgXFxcInJ1bnRpbWVfcG1fc3RhdHNcXFwiLCBkaXIsXFxuIFxcdFxcdFxcdFxcdCAgICBtdDc5MnhfcG1fc3RhdHMpO1xcbiBcXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFxcXCJkZWVwLXNsZWVwXFxcIiwgMDYwMCwgZGlyLCBkZXYsIFxcdTAwMjZmb3BzX2RzKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuY1xcbmluZGV4IGZhMjljNDg2YTQ1NTMuLjgwMGQ0OGJlZTExMGMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuY1xcbkBAIC04NzEsNiArODcxLDIxNCBAQCBzdGF0aWMgaW50IG10NzkyNV9tY3VfcmVhZF9lZXByb20oc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTMyIG9mZnNldCwgdTggKnZhbClcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuK3N0YXRpYyBpbnRcXG4rbXQ3OTI1X21jdV9zZW5kX3ZlZnVzZV9wYWdlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsXFxuK1xcdFxcdFxcdCAgICBjb25zdCB1OCAqZGF0YSwgdTMyIHRvdGFsX2xlbixcXG4rXFx0XFx0XFx0ICAgIGludCBwYWdlX2lkeCwgaW50IHRvdGFsX3BhZ2VzKVxcbit7XFxuK1xcdHN0cnVjdCBtdDc5MjVfdmVmdXNlX3BhZ2VfY21kICpjbWQ7XFxuK1xcdHNpemVfdCBvZmZzZXQgPSAoc2l6ZV90KXBhZ2VfaWR4ICogTVQ3OTI1X1ZFRlVTRV9QQUdFX1NJWkU7XFxuK1xcdHUxNiBwYWdlX2xlbiA9ICh1MTYpbWluX3Qoc2l6ZV90LFxcbitcXHRcXHRcXHRcXHQgIE1UNzkyNV9WRUZVU0VfUEFHRV9TSVpFLFxcbitcXHRcXHRcXHRcXHQgIHRvdGFsX2xlbiAtIG9mZnNldCk7XFxuK1xcdGludCByZXQ7XFxuK1xcbitcXHRjbWQgPSBremFsbG9jKHNpemVvZigqY21kKSwgR0ZQX0tFUk5FTCk7XFxuK1xcdGlmICghY21kKVxcbitcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4rXFxuK1xcdGNtZC1cXHUwMDNldGFnICAgICAgICAgICAgPSBjcHVfdG9fbGUxNihVTklfRUZVU0VfQlVGRkVSX01PREUpO1xcbitcXHRjbWQtXFx1MDAzZWxlbiAgICAgICAgICAgID0gY3B1X3RvX2xlMTYoc2l6ZW9mKCpjbWQpIC0gc2l6ZW9mKGNtZC1cXHUwMDNlcnN2KSk7XFxuK1xcdGNtZC1cXHUwMDNlc291cmNlX21vZGUgICAgPSBVTklfRUZVU0VfU09VUkNFX1ZFRlVTRTtcXG4rXFx0Y21kLVxcdTAwM2Vjb250ZW50X2Zvcm1hdCA9IEZJRUxEX1BSRVAoTVQ3OTI1X1ZFRlVTRV9UT1RBTF9QQUdFLCB0b3RhbF9wYWdlcykgfFxcbitcXHRcXHRcXHQgICAgICBGSUVMRF9QUkVQKE1UNzkyNV9WRUZVU0VfUEFHRV9JTkRFWCwgcGFnZV9pZHgpO1xcbitcXHRjbWQtXFx1MDAzZWNvdW50ICAgICAgICAgID0gY3B1X3RvX2xlMTYocGFnZV9sZW4pO1xcbitcXHRtZW1jcHkoY21kLVxcdTAwM2ViaW5fY29udGVudCwgZGF0YSArIG9mZnNldCwgcGFnZV9sZW4pO1xcbitcXG4rXFx0cmV0ID0gbXQ3Nl9tY3Vfc2VuZF9tc2coXFx1MDAyNmRldi1cXHUwMDNlbXQ3NiwgTUNVX1VOSV9DTUQoRUZVU0VfQ1RSTCksXFxuK1xcdFxcdFxcdFxcdGNtZCwgc2l6ZW9mKCpjbWQpLCB0cnVlKTtcXG4rXFx0a2ZyZWUoY21kKTtcXG4rXFx0cmV0dXJuIHJldDtcXG4rfVxcbitcXG4rLyogUmVhZCBiYWNrIHZlZnVzZSBjb250ZW50IGZyb20gRlcgKFVOSSBFRlVTRV9DVFJMIHF1ZXJ5LCBCVUZGRVJfUkQgdGFnKS5cXG4rICogb2Zmc2V0IGlzIHRoZSByYXcgMC1iYXNlZCBpbmRleCBpbnRvIHRoZSBGVyB2ZWZ1c2UgYnVmZmVyOyBzb3VyY2VfbW9kZVxcbisgKiBzZWxlY3RzIHRoZSBWRUZVU0UgcmVnaW9uLiBFeHBvc2VkIGZvciB0aGUgZGVidWdmcyBcXFwidmVmdXNlXFxcIiBub2RlLlxcbisgKi9cXG4raW50IG10NzkyNV9tY3VfcmVhZF92ZWZ1c2Uoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTE2IG9mZnNldCwgdTE2IGNvdW50LFxcbitcXHRcXHRcXHQgICB1OCAqb3V0KVxcbit7XFxuK1xcdHN0cnVjdCB7XFxuK1xcdFxcdHU4IHJzdls0XTtcXG4rXFxuK1xcdFxcdF9fbGUxNiB0YWc7XFxuK1xcdFxcdF9fbGUxNiBsZW47XFxuK1xcbitcXHRcXHR1OCBzb3VyY2VfbW9kZTtcXG4rXFx0XFx0dTggY29udGVudF9mb3JtYXQ7XFxuK1xcdFxcdF9fbGUxNiBvZmZzZXQ7XFxuK1xcdFxcdF9fbGUxNiBjb3VudDtcXG4rXFx0XFx0X19sZTE2IHJzdjE7XFxuK1xcdH0gX19wYWNrZWQgcmVxID0ge1xcbitcXHRcXHQudGFnID0gY3B1X3RvX2xlMTYoVU5JX0VGVVNFX0JVRkZFUl9SRCksXFxuK1xcdFxcdC5sZW4gPSBjcHVfdG9fbGUxNihzaXplb2YocmVxKSAtIHNpemVvZihyZXEucnN2KSksXFxuK1xcdFxcdC5zb3VyY2VfbW9kZSA9IFVOSV9FRlVTRV9TT1VSQ0VfVkVGVVNFLFxcbitcXHRcXHQub2Zmc2V0ID0gY3B1X3RvX2xlMTYob2Zmc2V0KSxcXG4rXFx0XFx0LmNvdW50ID0gY3B1X3RvX2xlMTYoY291bnQpLFxcbitcXHR9O1xcbitcXHRzdHJ1Y3Qge1xcbitcXHRcXHR1OCByc3ZbNF07XFxuK1xcbitcXHRcXHRfX2xlMTYgdGFnO1xcbitcXHRcXHRfX2xlMTYgbGVuO1xcbitcXG4rXFx0XFx0dTggc291cmNlX21vZGU7XFxuK1xcdFxcdHU4IGNvbnRlbnRfZm9ybWF0O1xcbitcXHRcXHRfX2xlMTYgb2Zmc2V0O1xcbitcXHRcXHRfX2xlMTYgY291bnQ7XFxuK1xcdFxcdHU4IHJzdjFbMl07XFxuK1xcdFxcdHU4IGRhdGFbXTtcXG4rXFx0fSBfX3BhY2tlZCAqIHJlcztcXG4rXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4rXFx0aW50IHJldDtcXG4rXFxuK1xcdHJldCA9IG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2coXFx1MDAyNmRldi1cXHUwMDNlbXQ3NiwgTUNVX1dNX1VOSV9DTURfUVVFUlkoRUZVU0VfQ1RSTCksXFxuK1xcdFxcdFxcdFxcdFxcdFxcdTAwMjZyZXEsIHNpemVvZihyZXEpLCB0cnVlLCBcXHUwMDI2c2tiKTtcXG4rXFx0aWYgKHJldClcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFxuK1xcdHJlcyA9ICh2b2lkICopc2tiLVxcdTAwM2VkYXRhO1xcbitcXHRpZiAoc2tiLVxcdTAwM2VsZW4gXFx1MDAzYyBzaXplb2YoKnJlcykgKyBjb3VudCkge1xcbitcXHRcXHRkZXZfa2ZyZWVfc2tiKHNrYik7XFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHR9XFxuK1xcbitcXHRtZW1jcHkob3V0LCByZXMtXFx1MDAzZWRhdGEsIGNvdW50KTtcXG4rXFx0ZGV2X2tmcmVlX3NrYihza2IpO1xcbitcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK3N0YXRpYyBpbnRcXG4rbXQ3OTI1X2xvYWRfdmVmdXNlX2Zyb21fZncoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgY29uc3QgY2hhciAqZndfbmFtZSlcXG4re1xcbitcXHRjb25zdCBzdHJ1Y3QgbXQ3Nl9jb25uYWMyX2Z3X3RyYWlsZXIgKmhkcjtcXG4rXFx0Y29uc3Qgc3RydWN0IG10NzZfY29ubmFjMl9md19yZWdpb24gKnJlZ2lvbjtcXG4rXFx0c3RydWN0IG10NzZfZGV2ICptZGV2ID0gXFx1MDAyNmRldi1cXHUwMDNlbXQ3NjtcXG4rXFx0Y29uc3Qgc3RydWN0IGZpcm13YXJlICpmdyA9IE5VTEw7XFxuK1xcdGNvbnN0IHU4ICp2ZWZ1c2VfYmFzZSA9IE5VTEw7XFxuK1xcdHUzMiBvZmZzZXQgPSAwLCBsZW4gPSAwLCBwYXlsb2FkO1xcbitcXHRpbnQgaSwgdG90YWxfcGFnZXMsIHJldCA9IDA7XFxuK1xcbitcXHRpZiAoIWRldi1cXHUwMDNldmVmdXNlX2NhcC5lbmFibGVkKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFxuK1xcdC8qIHJlY29tcHV0ZWQgb24gZXZlcnkgRlcgbG9hZDsgc2V0IHRydWUgb25seSBvbmNlIGEgdmVmdXNlIHJlZ2lvbiBpc1xcbitcXHQgKiBmb3VuZCBpbiB0aGUgaW1hZ2UgYmVsb3cgKHRoZSBkZWJ1Z2ZzIG5vZGUgaXMgZ2F0ZWQgb24gdGhpcykuXFxuK1xcdCAqL1xcbitcXHRkZXYtXFx1MDAzZXZlZnVzZV9jYXAucHJlc2VudCA9IGZhbHNlO1xcbitcXG4rXFx0cmV0ID0gcmVxdWVzdF9maXJtd2FyZShcXHUwMDI2ZncsIGZ3X25hbWUsIG1kZXYtXFx1MDAzZWRldik7XFxuK1xcdGlmIChyZXQpIHtcXG4rXFx0XFx0ZGV2X3dhcm4obWRldi1cXHUwMDNlZGV2LFxcbitcXHRcXHRcXHQgXFxcInZlZnVzZTogZmlybXdhcmUgJXMgbm90IGF2YWlsYWJsZSAoJWQpLCBza2lwcGluZ1xcXFxuXFxcIixcXG4rXFx0XFx0XFx0IGZ3X25hbWUsIHJldCk7XFxuK1xcdFxcdHJldCA9IDA7XFxuK1xcdFxcdGdvdG8gb3V0O1xcbitcXHR9XFxuK1xcbitcXHRpZiAoIWZ3IHx8ICFmdy1cXHUwMDNlZGF0YSB8fCBmdy1cXHUwMDNlc2l6ZSBcXHUwMDNjIHNpemVvZigqaGRyKSkge1xcbitcXHRcXHRkZXZfd2FybihtZGV2LVxcdTAwM2VkZXYsIFxcXCJ2ZWZ1c2U6IGludmFsaWQgZmlybXdhcmUsIHNraXBwaW5nXFxcXG5cXFwiKTtcXG4rXFx0XFx0Z290byBvdXQ7XFxuK1xcdH1cXG4rXFxuK1xcdGhkciA9IChjb25zdCB2b2lkICopKGZ3LVxcdTAwM2VkYXRhICsgZnctXFx1MDAzZXNpemUgLSBzaXplb2YoKmhkcikpO1xcbitcXG4rXFx0LyogUmVnaW9uIGRlc2NyaXB0b3JzIHNpdCByaWdodCBiZWZvcmUgdGhlIHRyYWlsZXIuIE1ha2Ugc3VyZSB0aGUgd2hvbGVcXG4rXFx0ICogZGVzY3JpcHRvciBhcnJheSBpcyB3aXRoaW4gdGhlIGltYWdlIGJlZm9yZSBkZXJlZmVyZW5jaW5nIHRoZW0sIHNvIGFcXG4rXFx0ICogY29ycnVwdCBuX3JlZ2lvbiBjYW5ub3Qgd2FsayB0aGUgcmVnaW9uIHBvaW50ZXIgYmVmb3JlIGZ3LVxcdTAwM2VkYXRhLlxcbitcXHQgKi9cXG4rXFx0aWYgKGZ3LVxcdTAwM2VzaXplIFxcdTAwM2Mgc2l6ZW9mKCpoZHIpICsgKHNpemVfdCloZHItXFx1MDAzZW5fcmVnaW9uICogc2l6ZW9mKCpyZWdpb24pKSB7XFxuK1xcdFxcdGRldl93YXJuKG1kZXYtXFx1MDAzZWRldixcXG4rXFx0XFx0XFx0IFxcXCJ2ZWZ1c2U6IGZpcm13YXJlIHRvbyBzbWFsbCBmb3IgJXUgcmVnaW9uIGRlc2NyaXB0b3JzLCBza2lwcGluZ1xcXFxuXFxcIixcXG4rXFx0XFx0XFx0IGhkci1cXHUwMDNlbl9yZWdpb24pO1xcbitcXHRcXHRnb3RvIG91dDtcXG4rXFx0fVxcbitcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGhkci1cXHUwMDNlbl9yZWdpb247IGkrKykge1xcbitcXHRcXHRyZWdpb24gPSAoY29uc3Qgdm9pZCAqKSgoY29uc3QgdTggKiloZHIgLVxcbitcXHRcXHRcXHRcXHRcXHQoaGRyLVxcdTAwM2VuX3JlZ2lvbiAtIGkpICogc2l6ZW9mKCpyZWdpb24pKTtcXG4rXFx0XFx0bGVuID0gbGUzMl90b19jcHUocmVnaW9uLVxcdTAwM2VsZW4pO1xcbitcXG4rXFx0XFx0aWYgKGxlbiBcXHUwMDNlIGZ3LVxcdTAwM2VzaXplIC0gb2Zmc2V0KSB7XFxuK1xcdFxcdFxcdGRldl93YXJuKG1kZXYtXFx1MDAzZWRldiwgXFxcInZlZnVzZTogaW52YWxpZCBmaXJtd2FyZSByZWdpb24sIHNraXBwaW5nXFxcXG5cXFwiKTtcXG4rXFx0XFx0XFx0Z290byBvdXQ7XFxuK1xcdFxcdH1cXG4rXFxuK1xcdFxcdGlmICgocmVnaW9uLVxcdTAwM2VmZWF0dXJlX3NldCBcXHUwMDI2IEZXX0ZFQVRVUkVfTk9OX0RMKSBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHQgICAgcmVnaW9uLVxcdTAwM2V0eXBlID09IEZXX1RZUEVfRVhURU5EX0JJTl9FRlVTRSkge1xcbitcXHRcXHRcXHR2ZWZ1c2VfYmFzZSA9IGZ3LVxcdTAwM2VkYXRhICsgb2Zmc2V0O1xcbitcXHRcXHRcXHRkZXYtXFx1MDAzZXZlZnVzZV9jYXAucHJlc2VudCA9IHRydWU7XFxuK1xcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHR9XFxuK1xcdFxcdG9mZnNldCArPSBsZW47XFxuK1xcdH1cXG4rXFxuK1xcdGlmICghdmVmdXNlX2Jhc2UpIHtcXG4rXFx0XFx0ZGV2X3dhcm4obWRldi1cXHUwMDNlZGV2LFxcbitcXHRcXHRcXHQgXFxcIkZXX1RZUEVfRVhURU5EX0JJTl9FRlVTRSBjaHVuayBub3QgZm91bmQgaW4gRlcgaW1hZ2UsIHZpcnR1YWwgZWZ1c2Ugc2tpcHBlZFxcXFxuXFxcIik7XFxuK1xcdFxcdC8qIHZlZnVzZV9jYXAucHJlc2VudCBzdGF5cyBmYWxzZSAtXFx1MDAzZSBkZWJ1Z2ZzIG5vZGUgbm90IGV4cG9zZWQgb24gYVxcbitcXHRcXHQgKiBXRiB3aXRob3V0IGEgdmlydHVhbCBlZnVzZS4gdmVmdXNlX2NhcC5lbmFibGVkICh0aGUgRlctcmVwb3J0ZWRcXG4rXFx0XFx0ICogY2FwYWJpbGl0eSkgaXMgbGVmdCB1bnRvdWNoZWQuXFxuK1xcdFxcdCAqL1xcbitcXHRcXHRnb3RvIG91dDtcXG4rXFx0fVxcbitcXG4rXFx0LyogVGhlIHBhY2tlZCBGVyByZWdpb24gY2FycmllcyB0aGUgdmVmdXNlIHBheWxvYWQgcGx1cyBjb25uYWNcXG4rXFx0ICogcGVyLXJlZ2lvbiBmcmFtaW5nICg0LWJ5dGUgQ1JDICsgMTYtYnl0ZSBhbGlnbm1lbnQpLCBzbyByZWdpb25cXG4rXFx0ICogbGVuZ3RoIGlzIGxhcmdlciB0aGFuIHRoZSBGVy1yZXBvcnRlZCBwYXlsb2FkLiBPbmx5IHRoZSBsZWFkaW5nXFxuK1xcdCAqIHZlZnVzZV9jYXAuc2l6ZSBieXRlcyBhcmUgdGhlIGFjdHVhbCB2ZWZ1c2UgY29udGVudCB0byBwdXNoLlxcbitcXHQgKi9cXG4rXFx0cGF5bG9hZCA9IGRldi1cXHUwMDNldmVmdXNlX2NhcC5zaXplO1xcbitcXG4rXFx0LyogdmlydHVhbCBlZnVzZSBpcyBhbiBvcHRpb25hbCBvdmVycmlkZTogaWYgaXQgY2Fubm90IGJlIGFwcGxpZWQgdGhlXFxuK1xcdCAqIGNoaXAgc3RpbGwgd29ya3Mgb24gaXRzIGRlZmF1bHQgZWZ1c2UgdmFsdWVzLCBzbyB0aGUgY2hlY2tzIGJlbG93XFxuK1xcdCAqIG9ubHkgd2FybiBhbmQgc2tpcCAtIHRoZXkgbXVzdCBub3QgZmFpbCBmaXJtd2FyZSBicmluZy11cC5cXG4rXFx0ICovXFxuK1xcbitcXHQvKiBbQ2hlY2sgIzFdIHJlZ2lvbiBtdXN0IGhvbGQgYXQgbGVhc3QgdGhlIEZXLXJlcG9ydGVkIHBheWxvYWQgKi9cXG4rXFx0aWYgKGxlbiBcXHUwMDNjIHBheWxvYWQpIHtcXG4rXFx0XFx0ZGV2X3dhcm4obWRldi1cXHUwMDNlZGV2LFxcbitcXHRcXHRcXHQgXFxcInZlZnVzZTogcmVnaW9uIHNpemUgJXUgc21hbGxlciB0aGFuIEZXIGNhcGFiaWxpdHkgJXUsIHNraXBwaW5nXFxcXG5cXFwiLFxcbitcXHRcXHRcXHQgbGVuLCBwYXlsb2FkKTtcXG4rXFx0XFx0Z290byBvdXQ7XFxuK1xcdH1cXG4rXFxuK1xcdHRvdGFsX3BhZ2VzID0gRElWX1JPVU5EX1VQKHBheWxvYWQsIE1UNzkyNV9WRUZVU0VfUEFHRV9TSVpFKTtcXG4rXFx0aWYgKHRvdGFsX3BhZ2VzIFxcdTAwM2UgTVQ3OTI1X1ZFRlVTRV9NQVhfUEFHRVMpIHtcXG4rXFx0XFx0ZGV2X3dhcm4obWRldi1cXHUwMDNlZGV2LFxcbitcXHRcXHRcXHQgXFxcInZlZnVzZTogcGF5bG9hZCB0b28gbGFyZ2U6ICV1IGJ5dGVzICglZCBwYWdlcyksIG1heCAlZCBwYWdlcyBzdXBwb3J0ZWQsIHNraXBwaW5nXFxcXG5cXFwiLFxcbitcXHRcXHRcXHQgcGF5bG9hZCwgdG90YWxfcGFnZXMsIE1UNzkyNV9WRUZVU0VfTUFYX1BBR0VTKTtcXG4rXFx0XFx0Z290byBvdXQ7XFxuK1xcdH1cXG4rXFxuK1xcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyB0b3RhbF9wYWdlczsgaSsrKSB7XFxuK1xcdFxcdHJldCA9IG10NzkyNV9tY3Vfc2VuZF92ZWZ1c2VfcGFnZShkZXYsIHZlZnVzZV9iYXNlLCBwYXlsb2FkLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgIGksIHRvdGFsX3BhZ2VzKTtcXG4rXFx0XFx0aWYgKHJldCkge1xcbitcXHRcXHRcXHRkZXZfd2FybihtZGV2LVxcdTAwM2VkZXYsXFxuK1xcdFxcdFxcdFxcdCBcXFwidmVmdXNlIHBhZ2UgJWQvJWQgc2VuZCBmYWlsZWQ6ICVkLCBza2lwcGluZ1xcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0IGkgKyAxLCB0b3RhbF9wYWdlcywgcmV0KTtcXG4rXFx0XFx0XFx0cmV0ID0gMDtcXG4rXFx0XFx0XFx0Z290byBvdXQ7XFxuK1xcdFxcdH1cXG4rXFx0fVxcbitcXG4rb3V0OlxcbitcXHRyZWxlYXNlX2Zpcm13YXJlKGZ3KTtcXG4rXFx0cmV0dXJuIHJldDtcXG4rfVxcbitcXG4gc3RhdGljIGludCBtdDc5MjVfbG9hZF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgY29uc3QgY2hhciAqZndfbmFtZSlcXG4ge1xcbiBcXHRjb25zdCBzdHJ1Y3QgbXQ3Nl9jb25uYWMyX2Z3X3RyYWlsZXIgKmhkcjtcXG5AQCAtMTEyNiw2ICsxMzM0LDE3IEBAIG10NzkyNV9tY3VfZ2V0X25pY19jYXBhYmlsaXR5KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuIFxcdFxcdGNhc2UgTVRfTklDX0NBUF9FTUxfQ0FQOlxcbiBcXHRcXHRcXHRtdDc5MjVfbWN1X3BhcnNlX2VtbF9jYXAoZGV2LCB0bHYtXFx1MDAzZWRhdGEpO1xcbiBcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0Y2FzZSBNVF9OSUNfQ0FQX1ZFRlVTRV9JTkZPOiB7XFxuK1xcdFxcdFxcdHN0cnVjdCBtdDc5MjVfdmVmdXNlX2NhcCAqY2FwO1xcbitcXG4rXFx0XFx0XFx0aWYgKGxlbiBcXHUwMDNjIHNpemVvZigqdGx2KSArIHNpemVvZigqY2FwKSlcXG4rXFx0XFx0XFx0XFx0YnJlYWs7XFxuK1xcbitcXHRcXHRcXHRjYXAgPSAoc3RydWN0IG10NzkyNV92ZWZ1c2VfY2FwICopdGx2LVxcdTAwM2VkYXRhO1xcbitcXHRcXHRcXHRkZXYtXFx1MDAzZXZlZnVzZV9jYXAuZW5hYmxlZCAgID0gY2FwLVxcdTAwM2VlbmFibGVkO1xcbitcXHRcXHRcXHRkZXYtXFx1MDAzZXZlZnVzZV9jYXAuc2l6ZSAgICAgID0gbGUxNl90b19jcHUoY2FwLVxcdTAwM2VzaXplKTtcXG4rXFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdH1cXG4gXFx0XFx0ZGVmYXVsdDpcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdH1cXG5AQCAtMTE5OSw2ICsxNDE4LDEzIEBAIGludCBtdDc5MjVfcnVuX2Zpcm13YXJlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuIFxcdGlmIChlcnIpXFxuIFxcdFxcdHJldHVybiBlcnI7XFxuIFxcbitcXHQvKiBWaXJ0dWFsIGVmdXNlIGlzIGJlc3QtZWZmb3J0IGFuZCBjdXJyZW50bHkgbmV2ZXIgZmFpbHMgYnJpbmctdXAsIGJ1dFxcbitcXHQgKiBrZWVwIHRoZSBlcnJvciBwcm9wYWdhdGlvbiBmb3IgYSBwb3NzaWJsZSBmdXR1cmUgZmF0YWwgdmVmdXNlIGVycm9yLlxcbitcXHQgKi9cXG4rXFx0ZXJyID0gbXQ3OTI1X2xvYWRfdmVmdXNlX2Zyb21fZncoZGV2LCBtdDc5MnhfcmFtX25hbWUoZGV2KSk7XFxuK1xcdGlmIChlcnIpXFxuK1xcdFxcdHJldHVybiBlcnI7XFxuK1xcbiBcXHRlcnIgPSBtdDc5MjVfbG9hZF9jbGMoZGV2LCBtdDc5MnhfcmFtX25hbWUoZGV2KSk7XFxuIFxcdGlmIChlcnIpXFxuIFxcdFxcdHJldHVybiBlcnI7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmhcXG5pbmRleCAxMWY5ZWFjMTNmZmM2Li5hMGViMzBkMjU3MGRkIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5oXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmhcXG5AQCAtMTM3LDYgKzEzNyw0MSBAQCBlbnVtIHtcXG4gXFx0VU5JX0VGVVNFX0JVRkZFUl9SRCxcXG4gfTtcXG4gXFxuKy8qIHBhZ2Ugc2l6ZSBhbmQgY29udGVudF9mb3JtYXQgbGF5b3V0IGZvbGxvdyB0aGUgRlcgYnVmZmVyLW1vZGUgQUJJICovXFxuKyNkZWZpbmUgTVQ3OTI1X1ZFRlVTRV9QQUdFX1NJWkVcXHRcXHQxMDI0XFx0LyogRlcgQlVGRkVSX0JJTl9QQUdFX1NJWkUgKDB4NDAwKSAqL1xcbisjZGVmaW5lIE1UNzkyNV9WRUZVU0VfTUFYX1BBR0VTXFx0XFx0N1xcdC8qIGNvbnRlbnRfZm9ybWF0IHBhZ2UgZmllbGRzIGFyZSAzLWJpdCAqL1xcbitcXG4rI2RlZmluZSBNVDc5MjVfVkVGVVNFX1RPVEFMX1BBR0VcXHRHRU5NQVNLKDcsIDUpXFx0LyogRlcgQlVGRkVSX0JJTl9UT1RBTF9QQUdFICovXFxuKyNkZWZpbmUgTVQ3OTI1X1ZFRlVTRV9QQUdFX0lOREVYXFx0R0VOTUFTSyg0LCAyKVxcdC8qIEZXIEJVRkZFUl9CSU5fUEFHRV9JTkRFWCAqL1xcbitcXG4rLyogYnVmZmVyIG1vZGUgY29udGVudCBzb3VyY2UsIGFsaWducyB3aXRoIEZXIEJVRkZFUl9TT1VSQ0VfTU9ERV9JTkZPXyogKi9cXG4rZW51bSB7XFxuK1xcdFVOSV9FRlVTRV9TT1VSQ0VfRUZVU0UgPSAwLFxcbitcXHRVTklfRUZVU0VfU09VUkNFX0VFUFJPTSA9IDEsXFxuK1xcdFVOSV9FRlVTRV9TT1VSQ0VfVkVGVVNFID0gMixcXG4rfTtcXG4rXFxuK3N0cnVjdCBtdDc5MjVfdmVmdXNlX2NhcCB7XFxuK1xcdHU4IHZlcnNpb247XFxuK1xcdHU4IGVuYWJsZWQ7XFxuK1xcdF9fbGUxNiBzaXplO1xcbitcXHRfX2xlMzIgaGFzaF9hZGRyO1xcbit9IF9fcGFja2VkO1xcbitcXG4rc3RydWN0IG10NzkyNV92ZWZ1c2VfcGFnZV9jbWQge1xcbitcXHR1OCByc3ZbNF07XFx0XFx0LyogVU5JX0NNRF9FRlVTRV9DT05UUk9MIGhlYWRlciBiZWZvcmUgVExWICovXFxuK1xcbitcXHRfX2xlMTYgdGFnO1xcdFxcdC8qIFVOSV9FRlVTRV9CVUZGRVJfTU9ERSAqL1xcbitcXHRfX2xlMTYgbGVuO1xcbitcXHR1OCBzb3VyY2VfbW9kZTtcXHRcXHQvKiBVTklfRUZVU0VfU09VUkNFX1ZFRlVTRSAqL1xcbitcXHR1OCBjb250ZW50X2Zvcm1hdDtcXHQvKiBbNzo1XT10b3RhbF9wYWdlcyBbNDoyXT1wYWdlX2lkeCAqL1xcbitcXHRfX2xlMTYgY291bnQ7XFx0XFx0LyogdmFsaWQgYnl0ZXMgaW4gdGhpcyBwYWdlICovXFxuK1xcdHU4IGJpbl9jb250ZW50W01UNzkyNV9WRUZVU0VfUEFHRV9TSVpFXTtcXG4rfSBfX3BhY2tlZDtcXG4rXFxuK2ludCBtdDc5MjVfbWN1X3JlYWRfdmVmdXNlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHUxNiBvZmZzZXQsIHUxNiBjb3VudCxcXG4rXFx0XFx0XFx0ICAgdTggKm91dCk7XFxuK1xcbiBlbnVtIHtcXG4gXFx0VU5JX0NNRF9BQ0NFU1NfUkVHX0JBU0lDID0gMHgwLFxcbiBcXHRVTklfQ01EX0FDQ0VTU19SRl9SRUdfQkFTSUMsXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oXFxuaW5kZXggOWVmYzI1MWNiNzQ1Zi4uNzBhNzRlMDcxYjE3YiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaFxcbkBAIC0zNDIsNiArMzQyLDEyIEBAIHN0cnVjdCBtdDc5MnhfZGV2IHtcXG4gXFx0c3RydWN0IGllZWU4MDIxMV92aWYgKm5hbl92aWY7XFxuIFxcdGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfaWZhY2VfY29tYmluYXRpb24gKmlmYWNlX2NvbWJpbmF0aW9ucztcXG4gXFx0aW50IG5faWZhY2VfY29tYmluYXRpb25zO1xcbitcXG4rXFx0c3RydWN0IHtcXG4rXFx0XFx0Ym9vbCBlbmFibGVkO1xcdC8qIEZXIHJlcG9ydHMgdmVmdXNlIGNhcGFiaWxpdHkgKHVuY29uZGl0aW9uYWwpICovXFxuK1xcdFxcdGJvb2wgcHJlc2VudDtcXHQvKiBhIHZlZnVzZSByZWdpb24gd2FzIGZvdW5kIGluIHRoZSBGVyBpbWFnZSAqL1xcbitcXHRcXHR1MTYgc2l6ZTtcXG4rXFx0fSB2ZWZ1c2VfY2FwO1xcbiB9O1xcbiBcXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgbXQ3OTJ4X2Jzc19jb25mICpcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDk6MTc6MzIuNjcwNzUxMzUyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTA3NDAyNTI0MDg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzkyNVVcIixcbiAgICBcIk1UNzkyNUVcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJDRkc4MDIxMVwiLFxuICAgIFwiVVNCXCIsXG4gICAgXCJQQ0lcIixcbiAgICBcIkRFQlVHX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3OTI1X3J1bl9maXJtd2FyZVwiLFxuICAgIFwibXQ3OTI1X21jdV9yZWFkX3ZlZnVzZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgbG9hZGluZyAndmlydHVhbCBlZnVzZScgKHZlZnVzZSkgZGF0YSBmcm9tIGZpcm13YXJlIGZvciB0aGUgTWVkaWFUZWsgTVQ3OTI1IHdpcmVsZXNzIGRyaXZlci4gVGhlIGRyaXZlciBoYXMgYSBVU0IgdmFyaWFudCAoTVQ3OTI1VSkgd2hpY2ggY2FuIGJlIGZ1enplZCB1c2luZyBzeXprYWxsZXIncyBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXMuIFRoZSBmaXJtd2FyZSBsb2FkaW5nIGxvZ2ljIGluIGBtdDc5MjVfcnVuX2Zpcm13YXJlYCBhbmQgdGhlIGRlYnVnZnMgcmVhZCBmdW5jdGlvbiBgbXQ3OTI1X21jdV9yZWFkX3ZlZnVzZWAgYXJlIHJlYWNoYWJsZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMWU4ZWQ0NzY3MDMyYjg3NmNhOTUxZDljYWQ2NTJlZDI3ZjRmNWVmNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDUgMDk6MTc6MjkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuaFxuaW5kZXggMGVkZWRhNTY5ZTlhNS4uOWM4NDRiZWY5MmM5ZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmhcbkBAIC00NCw2ICs0NCw3IEBAXG4gZW51bSB7XG4gXHRGV19UWVBFX0RFRkFVTFQgPSAwLFxuIFx0RldfVFlQRV9DTEMgPSAyLFxuK1x0RldfVFlQRV9FWFRFTkRfQklOX0VGVVNFID0gMyxcbiBcdEZXX1RZUEVfTUFYX05VTSA9IDI1NVxuIH07XG4gXG5AQCAtMTQ4MSw2ICsxNDgyLDcgQEAgZW51bSB7XG4gXHRNVF9OSUNfQ0FQXzZHLFxuIFx0TVRfTklDX0NBUF9DSElQX0NBUCA9IDB4MjAsXG4gXHRNVF9OSUNfQ0FQX0VNTF9DQVAgPSAweDIyLFxuK1x0TVRfTklDX0NBUF9WRUZVU0VfSU5GTyA9IDB4NDQsXG4gfTtcbiBcbiAjZGVmaW5lIFVOSV9XT1dfREVURUNUX1RZUEVfTUFHSUNcdFx0QklUKDApXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jXG5pbmRleCBkMDFmZjQ5ZGU0N2FmLi4zNGUyNjFlMjQ3ZmNkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmNcbkBAIC0yODYsNiArMjg2LDUxIEBAIHN0YXRpYyBpbnQgbXQ3OTI1X2NoaXBfcmVzZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcbiBcbiBERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19yZXNldCwgTlVMTCwgbXQ3OTI1X2NoaXBfcmVzZXQsIFwiJWxsZFxcblwiKTtcbiBcbitzdGF0aWMgaW50XG4rbXQ3OTI1X3ZlZnVzZV9yZWFkKHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSlcbit7XG4rXHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gZGV2X2dldF9kcnZkYXRhKHMtXHUwMDNlcHJpdmF0ZSk7XG4rXHR1MTYgc2l6ZSA9IGRldi1cdTAwM2V2ZWZ1c2VfY2FwLnNpemU7XG4rXHRpbnQgb2ZmID0gMDtcbitcdHU4ICpidWY7XG4rXHRpbnQgcmV0ID0gMDtcbitcbitcdGlmICghZGV2LVx1MDAzZXZlZnVzZV9jYXAucHJlc2VudCB8fCAhc2l6ZSkge1xuK1x0XHRzZXFfcHV0cyhzLCBcInZlZnVzZTogbm8gcmVnaW9uIGluIEZXIGltYWdlXFxuXCIpO1xuK1x0XHRyZXR1cm4gMDtcbitcdH1cbitcbitcdGJ1ZiA9IGt6YWxsb2Moc2l6ZSwgR0ZQX0tFUk5FTCk7XG4rXHRpZiAoIWJ1ZilcbitcdFx0cmV0dXJuIC1FTk9NRU07XG4rXG4rXHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShkZXYpO1xuK1x0d2hpbGUgKG9mZiBcdTAwM2MgKGludClzaXplKSB7XG4rXHRcdHUxNiBjaHVuayA9IG1pbl90KHUxNiwgNTEyLCBzaXplIC0gb2ZmKTtcbitcbitcdFx0cmV0ID0gbXQ3OTI1X21jdV9yZWFkX3ZlZnVzZShkZXYsIG9mZiwgY2h1bmssIGJ1ZiArIG9mZik7XG4rXHRcdGlmIChyZXQpXG4rXHRcdFx0YnJlYWs7XG4rXHRcdG9mZiArPSBjaHVuaztcbitcdH1cbitcdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XG4rXG4rXHRpZiAocmV0KSB7XG4rXHRcdHNlcV9wcmludGYocywgXCJ2ZWZ1c2U6IHJlYWQgZmFpbGVkIGF0IDB4JTA0eCAoJWQpXFxuXCIsIG9mZiwgcmV0KTtcbitcdFx0a2ZyZWUoYnVmKTtcbitcdFx0cmV0dXJuIDA7XG4rXHR9XG4rXG4rXHRzZXFfcHJpbnRmKHMsIFwidmVmdXNlIGNvbnRlbnQ6ICV1IGJ5dGVzXFxuXCIsIHNpemUpO1xuK1x0Zm9yIChvZmYgPSAwOyBvZmYgXHUwMDNjIChpbnQpc2l6ZTsgb2ZmICs9IDE2KVxuK1x0XHRzZXFfcHJpbnRmKHMsIFwiJTA0eDogJSpwaFxcblwiLCBvZmYsXG4rXHRcdFx0ICAgKGludCltaW5fdCh1MTYsIDE2LCBzaXplIC0gb2ZmKSwgYnVmICsgb2ZmKTtcbitcbitcdGtmcmVlKGJ1Zik7XG4rXG4rXHRyZXR1cm4gMDtcbit9XG4rXG4gaW50IG10NzkyNV9pbml0X2RlYnVnZnMoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbiB7XG4gXHRzdHJ1Y3QgZGVudHJ5ICpkaXI7XG5AQCAtMzA5LDYgKzM1NCwxMyBAQCBpbnQgbXQ3OTI1X2luaXRfZGVidWdmcyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuIFx0ZGVidWdmc19jcmVhdGVfZmlsZShcImlkbGUtdGltZW91dFwiLCAwNjAwLCBkaXIsIGRldixcbiBcdFx0XHQgICAgXHUwMDI2Zm9wc19wbV9pZGxlX3RpbWVvdXQpO1xuIFx0ZGVidWdmc19jcmVhdGVfZmlsZShcImNoaXBfcmVzZXRcIiwgMDYwMCwgZGlyLCBkZXYsIFx1MDAyNmZvcHNfcmVzZXQpO1xuK1x0Lyogb25seSBleHBvc2UgdGhlIHZlZnVzZSByZWFkIG5vZGUgd2hlbiBhIHZlZnVzZSByZWdpb24gd2FzIGZvdW5kIGluIHRoZVxuK1x0ICogRlcgaW1hZ2UgKEZXIHJlcG9ydHMgdGhlIGNhcGFiaWxpdHkgdW5jb25kaXRpb25hbGx5LCBzbyBnYXRlIG9uIHRoZVxuK1x0ICogYWN0dWFsIHJlZ2lvbiBwcmVzZW5jZSBpbnN0ZWFkKVxuK1x0ICovXG4rXHRpZiAoZGV2LVx1MDAzZXZlZnVzZV9jYXAucHJlc2VudClcbitcdFx0ZGVidWdmc19jcmVhdGVfZGV2bV9zZXFmaWxlKGRldi1cdTAwM2VtdDc2LmRldiwgXCJ2ZWZ1c2VcIiwgZGlyLFxuK1x0XHRcdFx0XHQgICAgbXQ3OTI1X3ZlZnVzZV9yZWFkKTtcbiBcdGRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZShkZXYtXHUwMDNlbXQ3Ni5kZXYsIFwicnVudGltZV9wbV9zdGF0c1wiLCBkaXIsXG4gXHRcdFx0XHQgICAgbXQ3OTJ4X3BtX3N0YXRzKTtcbiBcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCJkZWVwLXNsZWVwXCIsIDA2MDAsIGRpciwgZGV2LCBcdTAwMjZmb3BzX2RzKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jXG5pbmRleCBmYTI5YzQ4NmE0NTUzLi44MDBkNDhiZWUxMTBjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jXG5AQCAtODcxLDYgKzg3MSwyMTQgQEAgc3RhdGljIGludCBtdDc5MjVfbWN1X3JlYWRfZWVwcm9tKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHUzMiBvZmZzZXQsIHU4ICp2YWwpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4rc3RhdGljIGludFxuK210NzkyNV9tY3Vfc2VuZF92ZWZ1c2VfcGFnZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LFxuK1x0XHRcdCAgICBjb25zdCB1OCAqZGF0YSwgdTMyIHRvdGFsX2xlbixcbitcdFx0XHQgICAgaW50IHBhZ2VfaWR4LCBpbnQgdG90YWxfcGFnZXMpXG4re1xuK1x0c3RydWN0IG10NzkyNV92ZWZ1c2VfcGFnZV9jbWQgKmNtZDtcbitcdHNpemVfdCBvZmZzZXQgPSAoc2l6ZV90KXBhZ2VfaWR4ICogTVQ3OTI1X1ZFRlVTRV9QQUdFX1NJWkU7XG4rXHR1MTYgcGFnZV9sZW4gPSAodTE2KW1pbl90KHNpemVfdCxcbitcdFx0XHRcdCAgTVQ3OTI1X1ZFRlVTRV9QQUdFX1NJWkUsXG4rXHRcdFx0XHQgIHRvdGFsX2xlbiAtIG9mZnNldCk7XG4rXHRpbnQgcmV0O1xuK1xuK1x0Y21kID0ga3phbGxvYyhzaXplb2YoKmNtZCksIEdGUF9LRVJORUwpO1xuK1x0aWYgKCFjbWQpXG4rXHRcdHJldHVybiAtRU5PTUVNO1xuK1xuK1x0Y21kLVx1MDAzZXRhZyAgICAgICAgICAgID0gY3B1X3RvX2xlMTYoVU5JX0VGVVNFX0JVRkZFUl9NT0RFKTtcbitcdGNtZC1cdTAwM2VsZW4gICAgICAgICAgICA9IGNwdV90b19sZTE2KHNpemVvZigqY21kKSAtIHNpemVvZihjbWQtXHUwMDNlcnN2KSk7XG4rXHRjbWQtXHUwMDNlc291cmNlX21vZGUgICAgPSBVTklfRUZVU0VfU09VUkNFX1ZFRlVTRTtcbitcdGNtZC1cdTAwM2Vjb250ZW50X2Zvcm1hdCA9IEZJRUxEX1BSRVAoTVQ3OTI1X1ZFRlVTRV9UT1RBTF9QQUdFLCB0b3RhbF9wYWdlcykgfFxuK1x0XHRcdCAgICAgIEZJRUxEX1BSRVAoTVQ3OTI1X1ZFRlVTRV9QQUdFX0lOREVYLCBwYWdlX2lkeCk7XG4rXHRjbWQtXHUwMDNlY291bnQgICAgICAgICAgPSBjcHVfdG9fbGUxNihwYWdlX2xlbik7XG4rXHRtZW1jcHkoY21kLVx1MDAzZWJpbl9jb250ZW50LCBkYXRhICsgb2Zmc2V0LCBwYWdlX2xlbik7XG4rXG4rXHRyZXQgPSBtdDc2X21jdV9zZW5kX21zZyhcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgTUNVX1VOSV9DTUQoRUZVU0VfQ1RSTCksXG4rXHRcdFx0XHRjbWQsIHNpemVvZigqY21kKSwgdHJ1ZSk7XG4rXHRrZnJlZShjbWQpO1xuK1x0cmV0dXJuIHJldDtcbit9XG4rXG4rLyogUmVhZCBiYWNrIHZlZnVzZSBjb250ZW50IGZyb20gRlcgKFVOSSBFRlVTRV9DVFJMIHF1ZXJ5LCBCVUZGRVJfUkQgdGFnKS5cbisgKiBvZmZzZXQgaXMgdGhlIHJhdyAwLWJhc2VkIGluZGV4IGludG8gdGhlIEZXIHZlZnVzZSBidWZmZXI7IHNvdXJjZV9tb2RlXG4rICogc2VsZWN0cyB0aGUgVkVGVVNFIHJlZ2lvbi4gRXhwb3NlZCBmb3IgdGhlIGRlYnVnZnMgXCJ2ZWZ1c2VcIiBub2RlLlxuKyAqL1xuK2ludCBtdDc5MjVfbWN1X3JlYWRfdmVmdXNlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHUxNiBvZmZzZXQsIHUxNiBjb3VudCxcbitcdFx0XHQgICB1OCAqb3V0KVxuK3tcbitcdHN0cnVjdCB7XG4rXHRcdHU4IHJzdls0XTtcbitcbitcdFx0X19sZTE2IHRhZztcbitcdFx0X19sZTE2IGxlbjtcbitcbitcdFx0dTggc291cmNlX21vZGU7XG4rXHRcdHU4IGNvbnRlbnRfZm9ybWF0O1xuK1x0XHRfX2xlMTYgb2Zmc2V0O1xuK1x0XHRfX2xlMTYgY291bnQ7XG4rXHRcdF9fbGUxNiByc3YxO1xuK1x0fSBfX3BhY2tlZCByZXEgPSB7XG4rXHRcdC50YWcgPSBjcHVfdG9fbGUxNihVTklfRUZVU0VfQlVGRkVSX1JEKSxcbitcdFx0LmxlbiA9IGNwdV90b19sZTE2KHNpemVvZihyZXEpIC0gc2l6ZW9mKHJlcS5yc3YpKSxcbitcdFx0LnNvdXJjZV9tb2RlID0gVU5JX0VGVVNFX1NPVVJDRV9WRUZVU0UsXG4rXHRcdC5vZmZzZXQgPSBjcHVfdG9fbGUxNihvZmZzZXQpLFxuK1x0XHQuY291bnQgPSBjcHVfdG9fbGUxNihjb3VudCksXG4rXHR9O1xuK1x0c3RydWN0IHtcbitcdFx0dTggcnN2WzRdO1xuK1xuK1x0XHRfX2xlMTYgdGFnO1xuK1x0XHRfX2xlMTYgbGVuO1xuK1xuK1x0XHR1OCBzb3VyY2VfbW9kZTtcbitcdFx0dTggY29udGVudF9mb3JtYXQ7XG4rXHRcdF9fbGUxNiBvZmZzZXQ7XG4rXHRcdF9fbGUxNiBjb3VudDtcbitcdFx0dTggcnN2MVsyXTtcbitcdFx0dTggZGF0YVtdO1xuK1x0fSBfX3BhY2tlZCAqIHJlcztcbitcdHN0cnVjdCBza19idWZmICpza2I7XG4rXHRpbnQgcmV0O1xuK1xuK1x0cmV0ID0gbXQ3Nl9tY3Vfc2VuZF9hbmRfZ2V0X21zZyhcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgTUNVX1dNX1VOSV9DTURfUVVFUlkoRUZVU0VfQ1RSTCksXG4rXHRcdFx0XHRcdFx1MDAyNnJlcSwgc2l6ZW9mKHJlcSksIHRydWUsIFx1MDAyNnNrYik7XG4rXHRpZiAocmV0KVxuK1x0XHRyZXR1cm4gcmV0O1xuK1xuK1x0cmVzID0gKHZvaWQgKilza2ItXHUwMDNlZGF0YTtcbitcdGlmIChza2ItXHUwMDNlbGVuIFx1MDAzYyBzaXplb2YoKnJlcykgKyBjb3VudCkge1xuK1x0XHRkZXZfa2ZyZWVfc2tiKHNrYik7XG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1x0fVxuK1xuK1x0bWVtY3B5KG91dCwgcmVzLVx1MDAzZWRhdGEsIGNvdW50KTtcbitcdGRldl9rZnJlZV9za2Ioc2tiKTtcbitcbitcdHJldHVybiAwO1xuK31cbitcbitzdGF0aWMgaW50XG4rbXQ3OTI1X2xvYWRfdmVmdXNlX2Zyb21fZncoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgY29uc3QgY2hhciAqZndfbmFtZSlcbit7XG4rXHRjb25zdCBzdHJ1Y3QgbXQ3Nl9jb25uYWMyX2Z3X3RyYWlsZXIgKmhkcjtcbitcdGNvbnN0IHN0cnVjdCBtdDc2X2Nvbm5hYzJfZndfcmVnaW9uICpyZWdpb247XG4rXHRzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYgPSBcdTAwMjZkZXYtXHUwMDNlbXQ3NjtcbitcdGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZncgPSBOVUxMO1xuK1x0Y29uc3QgdTggKnZlZnVzZV9iYXNlID0gTlVMTDtcbitcdHUzMiBvZmZzZXQgPSAwLCBsZW4gPSAwLCBwYXlsb2FkO1xuK1x0aW50IGksIHRvdGFsX3BhZ2VzLCByZXQgPSAwO1xuK1xuK1x0aWYgKCFkZXYtXHUwMDNldmVmdXNlX2NhcC5lbmFibGVkKVxuK1x0XHRyZXR1cm4gMDtcbitcbitcdC8qIHJlY29tcHV0ZWQgb24gZXZlcnkgRlcgbG9hZDsgc2V0IHRydWUgb25seSBvbmNlIGEgdmVmdXNlIHJlZ2lvbiBpc1xuK1x0ICogZm91bmQgaW4gdGhlIGltYWdlIGJlbG93ICh0aGUgZGVidWdmcyBub2RlIGlzIGdhdGVkIG9uIHRoaXMpLlxuK1x0ICovXG4rXHRkZXYtXHUwMDNldmVmdXNlX2NhcC5wcmVzZW50ID0gZmFsc2U7XG4rXG4rXHRyZXQgPSByZXF1ZXN0X2Zpcm13YXJlKFx1MDAyNmZ3LCBmd19uYW1lLCBtZGV2LVx1MDAzZWRldik7XG4rXHRpZiAocmV0KSB7XG4rXHRcdGRldl93YXJuKG1kZXYtXHUwMDNlZGV2LFxuK1x0XHRcdCBcInZlZnVzZTogZmlybXdhcmUgJXMgbm90IGF2YWlsYWJsZSAoJWQpLCBza2lwcGluZ1xcblwiLFxuK1x0XHRcdCBmd19uYW1lLCByZXQpO1xuK1x0XHRyZXQgPSAwO1xuK1x0XHRnb3RvIG91dDtcbitcdH1cbitcbitcdGlmICghZncgfHwgIWZ3LVx1MDAzZWRhdGEgfHwgZnctXHUwMDNlc2l6ZSBcdTAwM2Mgc2l6ZW9mKCpoZHIpKSB7XG4rXHRcdGRldl93YXJuKG1kZXYtXHUwMDNlZGV2LCBcInZlZnVzZTogaW52YWxpZCBmaXJtd2FyZSwgc2tpcHBpbmdcXG5cIik7XG4rXHRcdGdvdG8gb3V0O1xuK1x0fVxuK1xuK1x0aGRyID0gKGNvbnN0IHZvaWQgKikoZnctXHUwMDNlZGF0YSArIGZ3LVx1MDAzZXNpemUgLSBzaXplb2YoKmhkcikpO1xuK1xuK1x0LyogUmVnaW9uIGRlc2NyaXB0b3JzIHNpdCByaWdodCBiZWZvcmUgdGhlIHRyYWlsZXIuIE1ha2Ugc3VyZSB0aGUgd2hvbGVcbitcdCAqIGRlc2NyaXB0b3IgYXJyYXkgaXMgd2l0aGluIHRoZSBpbWFnZSBiZWZvcmUgZGVyZWZlcmVuY2luZyB0aGVtLCBzbyBhXG4rXHQgKiBjb3JydXB0IG5fcmVnaW9uIGNhbm5vdCB3YWxrIHRoZSByZWdpb24gcG9pbnRlciBiZWZvcmUgZnctXHUwMDNlZGF0YS5cbitcdCAqL1xuK1x0aWYgKGZ3LVx1MDAzZXNpemUgXHUwMDNjIHNpemVvZigqaGRyKSArIChzaXplX3QpaGRyLVx1MDAzZW5fcmVnaW9uICogc2l6ZW9mKCpyZWdpb24pKSB7XG4rXHRcdGRldl93YXJuKG1kZXYtXHUwMDNlZGV2LFxuK1x0XHRcdCBcInZlZnVzZTogZmlybXdhcmUgdG9vIHNtYWxsIGZvciAldSByZWdpb24gZGVzY3JpcHRvcnMsIHNraXBwaW5nXFxuXCIsXG4rXHRcdFx0IGhkci1cdTAwM2VuX3JlZ2lvbik7XG4rXHRcdGdvdG8gb3V0O1xuK1x0fVxuK1xuK1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgaGRyLVx1MDAzZW5fcmVnaW9uOyBpKyspIHtcbitcdFx0cmVnaW9uID0gKGNvbnN0IHZvaWQgKikoKGNvbnN0IHU4ICopaGRyIC1cbitcdFx0XHRcdFx0KGhkci1cdTAwM2VuX3JlZ2lvbiAtIGkpICogc2l6ZW9mKCpyZWdpb24pKTtcbitcdFx0bGVuID0gbGUzMl90b19jcHUocmVnaW9uLVx1MDAzZWxlbik7XG4rXG4rXHRcdGlmIChsZW4gXHUwMDNlIGZ3LVx1MDAzZXNpemUgLSBvZmZzZXQpIHtcbitcdFx0XHRkZXZfd2FybihtZGV2LVx1MDAzZWRldiwgXCJ2ZWZ1c2U6IGludmFsaWQgZmlybXdhcmUgcmVnaW9uLCBza2lwcGluZ1xcblwiKTtcbitcdFx0XHRnb3RvIG91dDtcbitcdFx0fVxuK1xuK1x0XHRpZiAoKHJlZ2lvbi1cdTAwM2VmZWF0dXJlX3NldCBcdTAwMjYgRldfRkVBVFVSRV9OT05fREwpIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgcmVnaW9uLVx1MDAzZXR5cGUgPT0gRldfVFlQRV9FWFRFTkRfQklOX0VGVVNFKSB7XG4rXHRcdFx0dmVmdXNlX2Jhc2UgPSBmdy1cdTAwM2VkYXRhICsgb2Zmc2V0O1xuK1x0XHRcdGRldi1cdTAwM2V2ZWZ1c2VfY2FwLnByZXNlbnQgPSB0cnVlO1xuK1x0XHRcdGJyZWFrO1xuK1x0XHR9XG4rXHRcdG9mZnNldCArPSBsZW47XG4rXHR9XG4rXG4rXHRpZiAoIXZlZnVzZV9iYXNlKSB7XG4rXHRcdGRldl93YXJuKG1kZXYtXHUwMDNlZGV2LFxuK1x0XHRcdCBcIkZXX1RZUEVfRVhURU5EX0JJTl9FRlVTRSBjaHVuayBub3QgZm91bmQgaW4gRlcgaW1hZ2UsIHZpcnR1YWwgZWZ1c2Ugc2tpcHBlZFxcblwiKTtcbitcdFx0LyogdmVmdXNlX2NhcC5wcmVzZW50IHN0YXlzIGZhbHNlIC1cdTAwM2UgZGVidWdmcyBub2RlIG5vdCBleHBvc2VkIG9uIGFcbitcdFx0ICogV0Ygd2l0aG91dCBhIHZpcnR1YWwgZWZ1c2UuIHZlZnVzZV9jYXAuZW5hYmxlZCAodGhlIEZXLXJlcG9ydGVkXG4rXHRcdCAqIGNhcGFiaWxpdHkpIGlzIGxlZnQgdW50b3VjaGVkLlxuK1x0XHQgKi9cbitcdFx0Z290byBvdXQ7XG4rXHR9XG4rXG4rXHQvKiBUaGUgcGFja2VkIEZXIHJlZ2lvbiBjYXJyaWVzIHRoZSB2ZWZ1c2UgcGF5bG9hZCBwbHVzIGNvbm5hY1xuK1x0ICogcGVyLXJlZ2lvbiBmcmFtaW5nICg0LWJ5dGUgQ1JDICsgMTYtYnl0ZSBhbGlnbm1lbnQpLCBzbyByZWdpb25cbitcdCAqIGxlbmd0aCBpcyBsYXJnZXIgdGhhbiB0aGUgRlctcmVwb3J0ZWQgcGF5bG9hZC4gT25seSB0aGUgbGVhZGluZ1xuK1x0ICogdmVmdXNlX2NhcC5zaXplIGJ5dGVzIGFyZSB0aGUgYWN0dWFsIHZlZnVzZSBjb250ZW50IHRvIHB1c2guXG4rXHQgKi9cbitcdHBheWxvYWQgPSBkZXYtXHUwMDNldmVmdXNlX2NhcC5zaXplO1xuK1xuK1x0LyogdmlydHVhbCBlZnVzZSBpcyBhbiBvcHRpb25hbCBvdmVycmlkZTogaWYgaXQgY2Fubm90IGJlIGFwcGxpZWQgdGhlXG4rXHQgKiBjaGlwIHN0aWxsIHdvcmtzIG9uIGl0cyBkZWZhdWx0IGVmdXNlIHZhbHVlcywgc28gdGhlIGNoZWNrcyBiZWxvd1xuK1x0ICogb25seSB3YXJuIGFuZCBza2lwIC0gdGhleSBtdXN0IG5vdCBmYWlsIGZpcm13YXJlIGJyaW5nLXVwLlxuK1x0ICovXG4rXG4rXHQvKiBbQ2hlY2sgIzFdIHJlZ2lvbiBtdXN0IGhvbGQgYXQgbGVhc3QgdGhlIEZXLXJlcG9ydGVkIHBheWxvYWQgKi9cbitcdGlmIChsZW4gXHUwMDNjIHBheWxvYWQpIHtcbitcdFx0ZGV2X3dhcm4obWRldi1cdTAwM2VkZXYsXG4rXHRcdFx0IFwidmVmdXNlOiByZWdpb24gc2l6ZSAldSBzbWFsbGVyIHRoYW4gRlcgY2FwYWJpbGl0eSAldSwgc2tpcHBpbmdcXG5cIixcbitcdFx0XHQgbGVuLCBwYXlsb2FkKTtcbitcdFx0Z290byBvdXQ7XG4rXHR9XG4rXG4rXHR0b3RhbF9wYWdlcyA9IERJVl9ST1VORF9VUChwYXlsb2FkLCBNVDc5MjVfVkVGVVNFX1BBR0VfU0laRSk7XG4rXHRpZiAodG90YWxfcGFnZXMgXHUwMDNlIE1UNzkyNV9WRUZVU0VfTUFYX1BBR0VTKSB7XG4rXHRcdGRldl93YXJuKG1kZXYtXHUwMDNlZGV2LFxuK1x0XHRcdCBcInZlZnVzZTogcGF5bG9hZCB0b28gbGFyZ2U6ICV1IGJ5dGVzICglZCBwYWdlcyksIG1heCAlZCBwYWdlcyBzdXBwb3J0ZWQsIHNraXBwaW5nXFxuXCIsXG4rXHRcdFx0IHBheWxvYWQsIHRvdGFsX3BhZ2VzLCBNVDc5MjVfVkVGVVNFX01BWF9QQUdFUyk7XG4rXHRcdGdvdG8gb3V0O1xuK1x0fVxuK1xuK1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgdG90YWxfcGFnZXM7IGkrKykge1xuK1x0XHRyZXQgPSBtdDc5MjVfbWN1X3NlbmRfdmVmdXNlX3BhZ2UoZGV2LCB2ZWZ1c2VfYmFzZSwgcGF5bG9hZCxcbitcdFx0XHRcdFx0XHQgIGksIHRvdGFsX3BhZ2VzKTtcbitcdFx0aWYgKHJldCkge1xuK1x0XHRcdGRldl93YXJuKG1kZXYtXHUwMDNlZGV2LFxuK1x0XHRcdFx0IFwidmVmdXNlIHBhZ2UgJWQvJWQgc2VuZCBmYWlsZWQ6ICVkLCBza2lwcGluZ1xcblwiLFxuK1x0XHRcdFx0IGkgKyAxLCB0b3RhbF9wYWdlcywgcmV0KTtcbitcdFx0XHRyZXQgPSAwO1xuK1x0XHRcdGdvdG8gb3V0O1xuK1x0XHR9XG4rXHR9XG4rXG4rb3V0OlxuK1x0cmVsZWFzZV9maXJtd2FyZShmdyk7XG4rXHRyZXR1cm4gcmV0O1xuK31cbitcbiBzdGF0aWMgaW50IG10NzkyNV9sb2FkX2NsYyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBjb25zdCBjaGFyICpmd19uYW1lKVxuIHtcbiBcdGNvbnN0IHN0cnVjdCBtdDc2X2Nvbm5hYzJfZndfdHJhaWxlciAqaGRyO1xuQEAgLTExMjYsNiArMTMzNCwxNyBAQCBtdDc5MjVfbWN1X2dldF9uaWNfY2FwYWJpbGl0eShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuIFx0XHRjYXNlIE1UX05JQ19DQVBfRU1MX0NBUDpcbiBcdFx0XHRtdDc5MjVfbWN1X3BhcnNlX2VtbF9jYXAoZGV2LCB0bHYtXHUwMDNlZGF0YSk7XG4gXHRcdFx0YnJlYWs7XG4rXHRcdGNhc2UgTVRfTklDX0NBUF9WRUZVU0VfSU5GTzoge1xuK1x0XHRcdHN0cnVjdCBtdDc5MjVfdmVmdXNlX2NhcCAqY2FwO1xuK1xuK1x0XHRcdGlmIChsZW4gXHUwMDNjIHNpemVvZigqdGx2KSArIHNpemVvZigqY2FwKSlcbitcdFx0XHRcdGJyZWFrO1xuK1xuK1x0XHRcdGNhcCA9IChzdHJ1Y3QgbXQ3OTI1X3ZlZnVzZV9jYXAgKil0bHYtXHUwMDNlZGF0YTtcbitcdFx0XHRkZXYtXHUwMDNldmVmdXNlX2NhcC5lbmFibGVkICAgPSBjYXAtXHUwMDNlZW5hYmxlZDtcbitcdFx0XHRkZXYtXHUwMDNldmVmdXNlX2NhcC5zaXplICAgICAgPSBsZTE2X3RvX2NwdShjYXAtXHUwMDNlc2l6ZSk7XG4rXHRcdFx0YnJlYWs7XG4rXHRcdH1cbiBcdFx0ZGVmYXVsdDpcbiBcdFx0XHRicmVhaztcbiBcdFx0fVxuQEAgLTExOTksNiArMTQxOCwxMyBAQCBpbnQgbXQ3OTI1X3J1bl9maXJtd2FyZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuIFx0aWYgKGVycilcbiBcdFx0cmV0dXJuIGVycjtcbiBcbitcdC8qIFZpcnR1YWwgZWZ1c2UgaXMgYmVzdC1lZmZvcnQgYW5kIGN1cnJlbnRseSBuZXZlciBmYWlscyBicmluZy11cCwgYnV0XG4rXHQgKiBrZWVwIHRoZSBlcnJvciBwcm9wYWdhdGlvbiBmb3IgYSBwb3NzaWJsZSBmdXR1cmUgZmF0YWwgdmVmdXNlIGVycm9yLlxuK1x0ICovXG4rXHRlcnIgPSBtdDc5MjVfbG9hZF92ZWZ1c2VfZnJvbV9mdyhkZXYsIG10NzkyeF9yYW1fbmFtZShkZXYpKTtcbitcdGlmIChlcnIpXG4rXHRcdHJldHVybiBlcnI7XG4rXG4gXHRlcnIgPSBtdDc5MjVfbG9hZF9jbGMoZGV2LCBtdDc5MnhfcmFtX25hbWUoZGV2KSk7XG4gXHRpZiAoZXJyKVxuIFx0XHRyZXR1cm4gZXJyO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmhcbmluZGV4IDExZjllYWMxM2ZmYzYuLmEwZWIzMGQyNTcwZGQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmhcbkBAIC0xMzcsNiArMTM3LDQxIEBAIGVudW0ge1xuIFx0VU5JX0VGVVNFX0JVRkZFUl9SRCxcbiB9O1xuIFxuKy8qIHBhZ2Ugc2l6ZSBhbmQgY29udGVudF9mb3JtYXQgbGF5b3V0IGZvbGxvdyB0aGUgRlcgYnVmZmVyLW1vZGUgQUJJICovXG4rI2RlZmluZSBNVDc5MjVfVkVGVVNFX1BBR0VfU0laRVx0XHQxMDI0XHQvKiBGVyBCVUZGRVJfQklOX1BBR0VfU0laRSAoMHg0MDApICovXG4rI2RlZmluZSBNVDc5MjVfVkVGVVNFX01BWF9QQUdFU1x0XHQ3XHQvKiBjb250ZW50X2Zvcm1hdCBwYWdlIGZpZWxkcyBhcmUgMy1iaXQgKi9cbitcbisjZGVmaW5lIE1UNzkyNV9WRUZVU0VfVE9UQUxfUEFHRVx0R0VOTUFTSyg3LCA1KVx0LyogRlcgQlVGRkVSX0JJTl9UT1RBTF9QQUdFICovXG4rI2RlZmluZSBNVDc5MjVfVkVGVVNFX1BBR0VfSU5ERVhcdEdFTk1BU0soNCwgMilcdC8qIEZXIEJVRkZFUl9CSU5fUEFHRV9JTkRFWCAqL1xuK1xuKy8qIGJ1ZmZlciBtb2RlIGNvbnRlbnQgc291cmNlLCBhbGlnbnMgd2l0aCBGVyBCVUZGRVJfU09VUkNFX01PREVfSU5GT18qICovXG4rZW51bSB7XG4rXHRVTklfRUZVU0VfU09VUkNFX0VGVVNFID0gMCxcbitcdFVOSV9FRlVTRV9TT1VSQ0VfRUVQUk9NID0gMSxcbitcdFVOSV9FRlVTRV9TT1VSQ0VfVkVGVVNFID0gMixcbit9O1xuK1xuK3N0cnVjdCBtdDc5MjVfdmVmdXNlX2NhcCB7XG4rXHR1OCB2ZXJzaW9uO1xuK1x0dTggZW5hYmxlZDtcbitcdF9fbGUxNiBzaXplO1xuK1x0X19sZTMyIGhhc2hfYWRkcjtcbit9IF9fcGFja2VkO1xuK1xuK3N0cnVjdCBtdDc5MjVfdmVmdXNlX3BhZ2VfY21kIHtcbitcdHU4IHJzdls0XTtcdFx0LyogVU5JX0NNRF9FRlVTRV9DT05UUk9MIGhlYWRlciBiZWZvcmUgVExWICovXG4rXG4rXHRfX2xlMTYgdGFnO1x0XHQvKiBVTklfRUZVU0VfQlVGRkVSX01PREUgKi9cbitcdF9fbGUxNiBsZW47XG4rXHR1OCBzb3VyY2VfbW9kZTtcdFx0LyogVU5JX0VGVVNFX1NPVVJDRV9WRUZVU0UgKi9cbitcdHU4IGNvbnRlbnRfZm9ybWF0O1x0LyogWzc6NV09dG90YWxfcGFnZXMgWzQ6Ml09cGFnZV9pZHggKi9cbitcdF9fbGUxNiBjb3VudDtcdFx0LyogdmFsaWQgYnl0ZXMgaW4gdGhpcyBwYWdlICovXG4rXHR1OCBiaW5fY29udGVudFtNVDc5MjVfVkVGVVNFX1BBR0VfU0laRV07XG4rfSBfX3BhY2tlZDtcbitcbitpbnQgbXQ3OTI1X21jdV9yZWFkX3ZlZnVzZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1MTYgb2Zmc2V0LCB1MTYgY291bnQsXG4rXHRcdFx0ICAgdTggKm91dCk7XG4rXG4gZW51bSB7XG4gXHRVTklfQ01EX0FDQ0VTU19SRUdfQkFTSUMgPSAweDAsXG4gXHRVTklfQ01EX0FDQ0VTU19SRl9SRUdfQkFTSUMsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmhcbmluZGV4IDllZmMyNTFjYjc0NWYuLjcwYTc0ZTA3MWIxN2IgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oXG5AQCAtMzQyLDYgKzM0MiwxMiBAQCBzdHJ1Y3QgbXQ3OTJ4X2RldiB7XG4gXHRzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqbmFuX3ZpZjtcbiBcdGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfaWZhY2VfY29tYmluYXRpb24gKmlmYWNlX2NvbWJpbmF0aW9ucztcbiBcdGludCBuX2lmYWNlX2NvbWJpbmF0aW9ucztcbitcbitcdHN0cnVjdCB7XG4rXHRcdGJvb2wgZW5hYmxlZDtcdC8qIEZXIHJlcG9ydHMgdmVmdXNlIGNhcGFiaWxpdHkgKHVuY29uZGl0aW9uYWwpICovXG4rXHRcdGJvb2wgcHJlc2VudDtcdC8qIGEgdmVmdXNlIHJlZ2lvbiB3YXMgZm91bmQgaW4gdGhlIEZXIGltYWdlICovXG4rXHRcdHUxNiBzaXplO1xuK1x0fSB2ZWZ1c2VfY2FwO1xuIH07XG4gXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgbXQ3OTJ4X2Jzc19jb25mICpcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA5OjE3OjMyLjY3MDc1MjM3MloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg4MjgzMTA3MDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQXNzZXNzaW5nIHRoZSBGdXp6aW5nIFBvdGVudGlhbCBvZiBhIEtlcm5lbCBQYXRjaCoqXG5cbk9rYXksIHNvIHdlIGhhdmUgdGhpcyBwYXRjaCwgcmlnaHQ/IEl0J3MgYXBwbGllZCB0byB0aGUgTGludXgga2VybmVsIGFuZCBzcGVjaWZpY2FsbHkgdHdlYWtzIHRoZSBgbXQ3NmAgd2lyZWxlc3MgZHJpdmVyLCB0YXJnZXRpbmcgdGhlIE1lZGlhdGVrIGBtdDc5MjVgIGhhcmR3YXJlLiBUaGUgcGF0Y2gncyBjb3JlIGZ1bmN0aW9uIGlzIGFkZGluZyBzdXBwb3J0IGZvciBcInZpcnR1YWwgZWZ1c2VcIiDigJMgYHZlZnVzZWAg4oCTIHRvIGJlIGxvYWRlZCBmcm9tIHRoZSBmaXJtd2FyZS4gSXQgYWxzbyBwcm92aWRlcyBhIGRlYnVnZnMgaW50ZXJmYWNlIGZvciByZWFkaW5nIHRoaXMgdmVmdXNlIGRhdGEuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcImNhbiB3ZSBhY3R1YWxseSBnZXQgdG8gdGhpcyBjb2RlLCBhbmQgaXMgaXQgZXZlbiB3b3J0aCBmdXp6aW5nP1wiXG5cblRoZSBkcml2ZXIgaXRzZWxmIGlzIGBtdDc2YCwgbW9yZSBwcmVjaXNlbHkgYG10NzkyNWAsIHNvIEknbGwgbmVlZCB0byBmb2N1cyBvbiBjb2RlIHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvYC4gSSBjYW4gc2VlIGZyb20gdGhlIHBhdGNoIHRoYXQgYG10NzkyNV92ZWZ1c2VfcmVhZGAgaGFzIGJlZW4gYWRkZWQgaW4gYGRlYnVnZnMuY2AsIGV4cG9zZWQgdmlhIGRlYnVnZnMsIGFuZCBgbXQ3OTI1X2xvYWRfdmVmdXNlX2Zyb21fZndgIGhhcyBiZWVuIGFkZGVkIGluIGBtY3UuY2AsIGNhbGxlZCBmcm9tIGBtdDc5MjVfcnVuX2Zpcm13YXJlYC4gSXQgbG9va3MgbGlrZSBgbXQ3OTI1X3J1bl9maXJtd2FyZWAgaXMgdHJpZ2dlcmVkIGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24uXG5cblNpbmNlIHRoaXMgaXMgYSB3aXJlbGVzcyBkcml2ZXIsIG15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gcmVhY2ggZm9yIGBtYWM4MDIxMV9od3NpbWAuIEJ1dCB3YWl0LCB0aGF0J3MganVzdCBhIHNvZnR3YXJlIHNpbXVsYXRvciwgaXQgZG9lc24ndCByZXByZXNlbnQgTWVkaWF0ZWsgaGFyZHdhcmUsIHNvIHRoYXQncyBub3QgZ29pbmcgdG8gd29yay4gQ2FuIHdlIHNpbXVsYXRlIGBtdDc5MjVgIHNvbWVob3c/IFdpcmVsZXNzIGRyaXZlcnMgYXJlIHVzdWFsbHkgaGFyZHdhcmUtZGVwZW5kZW50LCBuZWVkaW5nIFBDSWUsIFVTQiwgb3IgU0RJTy4gTm93LCB0aGUgcXVlc3Rpb24gaXMsIGNhbiB3ZSBlbXVsYXRlIHRoZSBoYXJkd2FyZSBpbiBvdXIgZnV6emluZyBzZXR1cD8gXG5cblRoZW4gaXQgaGl0cyBtZSwgd2Ugc2hvdWxkIHNlZSB3aGF0IGJ1cyB0eXBlcyBgbXQ3OTI1YCBzdXBwb3J0cy4gQW5kIHdlIGFyZSBpbiBsdWNrISBMb29rcyBsaWtlIHRoZSBgbXQ3OTI1YCBkcml2ZXIgc3VwcG9ydHMgYm90aCBQQ0llIGFuZCBVU0IuIFN5emthbGxlciBoYXMgYSBVU0IgZnV6emVyLCB3aGljaCB1c2VzIGEgZHVtbXkgaG9zdCBjb250cm9sbGVyIChoY2QpIGFuZCByYXcgZ2FkZ2V0IG1vZGUsIHNvIGlmIGl0J3MgYSBVU0IgZHJpdmVyLCB3ZSdyZSBpbiBidXNpbmVzcyEgVGhhdOKAmXMgcHJvbWlzaW5nLCBsZXQncyBzZWUgaWYgdGhlIGBtdDc5MjVgIGRyaXZlciBoYXMgYSBVU0IgaW1wbGVtZW50YXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjczNjQsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MTMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwOToxNzo0MS40OTkwNjQ2MTdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ5NjAwNjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTI1Lip1c2JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlPTk9bXQ3OTI1ZS15IDo9IHBjaS5vIHBjaV9tYWMubyBwY2lfbWN1Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZToxMDptdDc5MjV1LXkgOj0gdXNiLm9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTE2MjA9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNjIxOm10NzkyNV91c2Jfc2Rpb193cml0ZV90eHdpKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTYyMi1cXHRcXHRcXHQgICBlbnVtIG10NzZfdHhxX2lkIHFpZCwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE2MzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTYzMzppbnQgbXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqdHh3aV9wdHIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTYzNC1cXHRcXHRcXHRcXHQgICBlbnVtIG10NzZfdHhxX2lkIHFpZCwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE2NjMtXFx0cGt0aWQgPSBtdDc2X3R4X3N0YXR1c19za2JfYWRkKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIHdjaWQsIHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTY2NDpcXHRtdDc5MjVfdXNiX3NkaW9fd3JpdGVfdHh3aShkZXYsIHdjaWQsIHFpZCwgc3RhLCBrZXksIHBrdGlkLCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE2NjUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNjc3LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNjc4OkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTY3OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNjgwOnZvaWQgbXQ3OTI1X3VzYl9zZGlvX3R4X2NvbXBsZXRlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTY4MS1cXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBtdDc2X3F1ZXVlX2VudHJ5ICplKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTY5OC19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTY5OTpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNzAwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE3MDE6Ym9vbCBtdDc5MjVfdXNiX3NkaW9fdHhfc3RhdHVzX2RhdGEoc3RydWN0IG10NzZfZGV2ICptZGV2LCB1OCAqdXBkYXRlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE3MDIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTcxMC19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTcxMTpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfdXNiX3NkaW9fdHhfc3RhdHVzX2RhdGEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE3MTItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaD0zNjk9aW50IG10NzkyNV9tY3VfZ2V0X3RlbXBlcmF0dXJlKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTM3MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaDozNzE6aW50IG10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTM3Mi1cXHRcXHRcXHRcXHQgICBlbnVtIG10NzZfdHhxX2lkIHFpZCwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTM3NC1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgbXQ3Nl90eF9pbmZvICp0eF9pbmZvKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaDozNzU6dm9pZCBtdDc5MjVfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaC0zNzYtXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgbXQ3Nl9xdWV1ZV9lbnRyeSAqZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg6Mzc3OmJvb2wgbXQ3OTI1X3VzYl9zZGlvX3R4X3N0YXR1c19kYXRhKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdTggKnVwZGF0ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMzc4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM9ODA9c3RhdGljIGludCBtdDc5MjV1X21hY19yZXNldChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMTQ5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjE1MDpzdGF0aWMgaW50IG10NzkyNXVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE1MS1cXHRcXHRcXHQgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMTU5LVxcdFxcdFxcdFxcdFNVUlZFWV9JTkZPX1RJTUVfQlNTX1JYLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjE2MDpcXHRcXHQudHhfcHJlcGFyZV9za2IgPSBtdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6MTYxOlxcdFxcdC50eF9jb21wbGV0ZV9za2IgPSBtdDc5MjVfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjE2MjpcXHRcXHQudHhfc3RhdHVzX2RhdGEgPSBtdDc5MjVfdXNiX3NkaW9fdHhfc3RhdHVzX2RhdGEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMTYzLVxcdFxcdC5yeF9za2IgPSBtdDc5MjVfcXVldWVfcnhfc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMjY5LSNpZmRlZiBDT05GSUdfUE1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzoyNzA6c3RhdGljIGludCBtdDc5MjV1X3N1c3BlbmQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIHBtX21lc3NhZ2VfdCBzdGF0ZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0yNzEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMzAyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjMwMzpzdGF0aWMgaW50IG10NzkyNXVfcmVzdW1lKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTMwNC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA5OjE3OjQxLjU1NDAyNzI1M1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE0ODY3MzMwNDM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aGlzOlxuXG4qKkFuYWx5emluZyB0aGUgbXQ3OTI1IFVTQiBEcml2ZXIgUGF0Y2gqKlxuXG5BbHJpZ2h0LCBzbyBpdCBsb29rcyBsaWtlIHRoZSBgbXQ3OTI1YCBoYXMgYSBVU0IgZHJpdmVyLCB3aGljaCBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIFRoZSBwYXRjaCBJJ20gZXhhbWluaW5nIGZvY3VzZXMgb24gbW9kaWZ5aW5nIGBtdDc5MjVfcnVuX2Zpcm13YXJlYC4gU3BlY2lmaWNhbGx5LCBpdCBpbnRyb2R1Y2VzIGEgY2FsbCB0byBgbXQ3OTI1X2xvYWRfdmVmdXNlX2Zyb21fZndgIHdpdGhpbiB0aGF0IGZ1bmN0aW9uLiBUaGlzIGlzIGludGVyZXN0aW5nLCBhcyB0aGF0IHN1Z2dlc3RzIHRoZSBWRSBmdXNlIGxvYWRpbmcgcHJvY2VzcyBpcyBub3cgaW50ZWdyYXRlZCBkaXJlY3RseSBpbnRvIHRoZSBmaXJtd2FyZSBydW50aW1lIHByb2Nlc3MuIFRoaW5raW5nIGFib3V0IHRoZSBjb250ZXh0LCB0aGlzIGNhbGwgb2NjdXJzIGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24uIE5vdywgc2luY2UgdGhpcyBpcyBhIFVTQiBkZXZpY2UsIGRldmljZSBpbml0aWFsaXphdGlvbiBpcyBuYXR1cmFsbHkgZ29pbmcgdG8gYmUgdHJpZ2dlcmVkIHdoZW4gdGhlIFVTQiBkZXZpY2UgaXMgcHJvYmVkLiBTbywgdGhlIGNvcmUgcXVlc3Rpb24gaXM6IGlzIGBtdDc5MjVfcnVuX2Zpcm13YXJlYCBhY3R1YWxseSBjYWxsZWQgZHVyaW5nIHRoYXQgcHJvYmUgcHJvY2Vzcz8gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IHRoaXMgY2FsbCBjaGFpbiBpcyBoYXBwZW5pbmcgYXMgZXhwZWN0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNTA4LCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDk6MTc6NTYuNDIxMzU5NDE3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMDM3MDAyMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5MjVfcnVuX2Zpcm13YXJlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYz0xNDA3PUVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV9tY3Vfc2V0X3RoZXJtYWxfcHJvdGVjdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtMTQwOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYzoxNDA5OmludCBtdDc5MjVfcnVuX2Zpcm13YXJlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtMTQxMC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0xNDM0LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYzoxNDM1OkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV9ydW5fZmlybXdhcmUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTE0MzYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaD0yNzk9dm9pZCBtdDc5MjVfdW5yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg6MjgwOmludCBtdDc5MjVfcnVuX2Zpcm13YXJlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTI4MS1pbnQgbXQ3OTI1X21jdV9zZXRfYnNzX3BtKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWFjLmM9NzE9aW50IG10NzkyNWVfbWFjX3Jlc2V0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWFjLmMtMTMzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tYWMuYzoxMzQ6XFx0ZXJyID0gbXQ3OTI1X3J1bl9maXJtd2FyZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tYWMuYy0xMzUtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tY3UuYz0yNz1pbnQgbXQ3OTI1ZV9tY3VfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21jdS5jLTQ3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tY3UuYzo0ODpcXHRlcnIgPSBtdDc5MjVfcnVuX2Zpcm13YXJlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21jdS5jLTQ5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM9NTY9c3RhdGljIGludCBtdDc5MjV1X21jdV9pbml0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy02OS1cXHRtdDc2X3NldChkZXYsIE1UX1VETUFfVFhfUVNFTCwgTVRfRldfRExfRU4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjcwOlxcdHJldCA9IG10NzkyNV9ydW5fZmlybXdhcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy03MS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM9ODA9c3RhdGljIGludCBtdDc5MjV1X21hY19yZXNldChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMTIwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjEyMTpcXHRlcnIgPSBtdDc5MjVfcnVuX2Zpcm13YXJlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMTIyLVxcdGlmIChlcnIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA5OjE3OjU2LjUyMTczMjE1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzYwNjg4NzAxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgYG10NzkyNWAgRmlybXdhcmUgTG9hZGluZyBhbmQgVVNCIFJlYWNoYWJpbGl0eSoqXG5cbk9rYXksIHNvIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEkgc2VlLCBgbXQ3OTI1X3J1bl9maXJtd2FyZWAgaXMgYSBrZXkgZnVuY3Rpb24uIEl0J3MgY2FsbGVkIGRpcmVjdGx5IGZyb20gYG10NzkyNXVfbWN1X2luaXRgIGFuZCBgbXQ3OTI1dV9tYWNfcmVzZXRgIHdpdGhpbiBgdXNiLmNgLiBUaGlzIGlzIHNpZ25pZmljYW50IGJlY2F1c2UgdGhhdCBtZWFucyB3ZSBoYXZlIGEgZGlyZWN0IHBhdGggdG8gdGhpcyBjb2RlIHZpYSBVU0IgaW50ZXJhY3Rpb24sIG1ha2luZyBpdCBhIHZpYWJsZSB0YXJnZXQgZm9yIFVTQiBmdXp6aW5nIGNhbXBhaWducy5cblxuVGhlIHBhdGNoIGludHJvZHVjZXMgYG10NzkyNV9sb2FkX3ZlZnVzZV9mcm9tX2Z3YCwgd2hpY2ggaXMgdGhlIGNydWNpYWwgcG9pbnQgaGVyZSBiZWNhdXNlIGl0IGRlYWxzIHdpdGggcGFyc2luZyBmaXJtd2FyZSBkYXRhLiBJdCBhbHNvIGFkZHMgYSBkZWJ1Z2ZzIGZpbGUgbmFtZWQgYHZlZnVzZWAsIHdoaWNoLCB1cG9uIHJlYWRpbmcsIHRyaWdnZXJzIGBtdDc5MjVfdmVmdXNlX3JlYWRgLiBUaGUgY3JlYXRpb24gb2YgdGhpcyBkZWJ1Z2ZzIGVudHJ5IGlzIGNvbmRpdGlvbmFsOyBpdCBoYXBwZW5zIHdpdGhpbiBgbXQ3OTI1X2luaXRfZGVidWdmc2AgYnV0ICpvbmx5KiBpZiBgZGV2LVx1MDAzZXZlZnVzZV9jYXAucHJlc2VudGAgaXMgdHJ1ZSwgd2hpY2ggaW4gdHVybiBtZWFucyB0aGUgZmlybXdhcmUgbXVzdCBjb250YWluIHRoZSBgRldfVFlQRV9FWFRFTkRfQklOX0VGVVNFYCBmbGFnLlxuXG5Ob3csIGhlcmUncyB3aGVyZSBpdCBnZXRzIGludGVyZXN0aW5nLiBJJ20gdGhpbmtpbmcsIFwic3l6a2FsbGVyXCIuIEl0IGNhbiB1c2UgYHJlcXVlc3RfZmlybXdhcmVgIGludGVyY2VwdGlvbiB0byBwcm92aWRlIGN1c3RvbSBmaXJtd2FyZSBpZiBpdCBrbm93cyB0aGUgZmlybXdhcmUgbmFtZSwgcmlnaHQ/IEV2ZW4gaWYgc3l6a2FsbGVyICpkb2Vzbid0KiBrbm93IHRoZSBmaXJtd2FyZSBuYW1lIGluaXRpYWxseSwgdGhlIHBhcnNpbmcgY29kZSB3aXRoaW4gYG10NzkyNV9sb2FkX3ZlZnVzZV9mcm9tX2Z3YCB3aWxsIHN0aWxsIGJlIGV4ZWN1dGVkLiBXZSBhbHJlYWR5IGtub3cgdGhhdCBpdCBleGVjdXRlcyBgcmVxdWVzdF9maXJtd2FyZShcdTAwMjZmdywgZndfbmFtZSwgbWRldi1cdTAwM2VkZXYpO2AuIElmIHRoZSBmaXJtd2FyZSBpcyBub3QgaW1tZWRpYXRlbHkgYXZhaWxhYmxlLCBpdCBzaW1wbHkgc2tpcHMgdGhhdCBwYXJ0LiBJZiBpdCAqaXMqIGF2YWlsYWJsZSwgaXQgcGFyc2VzIGl0LlxuXG5TbywgdGhlIHF1ZXN0aW9uIGlzLCBjYW4gc3l6a2FsbGVyIGZ1enogdGhpcyBsb2FkaW5nIHByb2Nlc3M/IFRoZSBhbnN3ZXIgaXMgYSBjbGVhciBcInllcy5cIiBJdCBjYW4gZGVmaW5pdGVseSBmdXp6IHRoZSBmaXJtd2FyZSBsb2FkaW5nIGlmIHRoZSBmaXJtd2FyZSBuYW1lIGlzIGtub3duIG9yIGR5bmFtaWNhbGx5IHJlcXVlc3RlZC4gV2Ugc2hvdWxkIGJlIGFibGUgdG8gbGV2ZXJhZ2Ugc3l6a2FsbGVyJ3MgZmlybXdhcmUgbG9hZGluZyBjYXBhYmlsaXRpZXMsIGxpa2VseSB1c2luZyBgc3l6X21vdW50X2ltYWdlYCBvciBhIHNpbWlsYXIgY29uc3RydWN0LCBidXQgYWRhcHRlZCBmb3IgZmlybXdhcmUgd2hlcmUgaXQgaW50ZXJjZXB0cyBgcmVxdWVzdF9maXJtd2FyZWAuXG5cbk5vdywgdGhlIG5leHQgY29uc2lkZXJhdGlvbjogYXJlIHRoZXJlIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cz8gV2UgbmVlZCB0byBlbnN1cmUgZWl0aGVyIGBDT05GSUdfTVQ3OTI1RWAgb3IgYENPTkZJR19NVDc5MjVVYCBpcyBlbmFibGVkLiBMZXQncyBkaWcgaW50byB0aGUgYG10NzkyNWAgS2NvbmZpZyBmaWxlIHRvIGNvbmZpcm0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExOTgzLCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzkzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA5OjE4OjA0LjEyODYyMjgzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MjcxMDE4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTVQ3OTI1XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZzoyOmNvbmZpZyBNVDc5MjVfQ09NTU9OXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0zLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZzo3OmNvbmZpZyBNVDc5MjVFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy04LVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MjVFIChQQ0llKSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0xOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjE5OmNvbmZpZyBNVDc5MjVVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0yMC1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3OTI1VSAoVVNCKSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwOToxODowNC41ODEzMzcyMzhaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5NDcxOTQ1MjAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhlIGRlcGVuZGVuY2llcyBvZiBgTVQ3OTI1VWA6XG5cbioqQ2hlY2tpbmcgdGhlIERlcGVuZGVuY2llcyBvZiBNVDc5MjVVKipcblxuT2theSwgc28gd2UncmUgbG9va2luZyBhdCBgTVQ3OTI1VWAuIFRpbWUgdG8gcnVuIHRocm91Z2ggdGhlIG1lbnRhbCBjaGVja2xpc3QuIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgY29tcG9uZW50ICpkb2VzKi4gSXMgdGhpcyBhIGRyaXZlciwgYSBmaXJtd2FyZSBtb2R1bGUsIGEgc3BlY2lmaWMgaGFyZHdhcmUgYmxvY2ssIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBUaGUgbmFtZSBpdHNlbGYgc3VnZ2VzdHMgYSBNZWRpYVRlayBjaGlwc2V0LCBwb3RlbnRpYWxseSBhIFdpRmkgb3IgQmx1ZXRvb3RoIHNvbHV0aW9uLiBcIlVcIiB1c3VhbGx5IGltcGxpZXMgYSBVU0IgaW50ZXJmYWNlLCByaWdodD8gU28gd2UncmUgbGlrZWx5IGRlYWxpbmcgd2l0aCBhIFVTQi1jb25uZWN0ZWQgd2lyZWxlc3Mgc29sdXRpb24sIHdoaWNoIGltbWVkaWF0ZWx5IG5hcnJvd3MgZG93biB0aGUgcGxheWluZyBmaWVsZC5cblxuTm93LCB0aGUgZGVwZW5kZW5jeSBhbmFseXNpcyBiZWdpbnMuIFdoZXJlIGRvZXMgYE1UNzkyNVVgIHNpdCBpbiB0aGUgc3lzdGVtIGFyY2hpdGVjdHVyZT8gSXMgaXQgZGlyZWN0bHkgY29tbXVuaWNhdGluZyB3aXRoIHRoZSBrZXJuZWwncyBVU0Igc3RhY2s/IERvZXMgaXQgcmVseSBvbiBzcGVjaWZpYyBVU0IgZHJpdmVyIG1vZHVsZXM/IEFyZSB0aGVyZSBhbnkgYXNzb2NpYXRlZCBmaXJtd2FyZSBibG9icyB0aGF0IG5lZWQgdG8gYmUgbG9hZGVkPyBUaGlua2luZyBhYm91dCB0aGUgcG90ZW50aWFsIGRlcGVuZGVuY2llcywgSSBleHBlY3QgdG8gc2VlIGtlcm5lbCBtb2R1bGVzIHJlbGF0ZWQgdG8gVVNCIGRldmljZSBkcml2ZXJzIGFuZCBwb3RlbnRpYWxseSBzb21lIGZpcm13YXJlIGxvYWRpbmcgbWVjaGFuaXNtcy4gSSdsbCBuZWVkIHRvIGxvb2sgZm9yIGNhbGxzIHRvIHRoZSBzdGFuZGFyZCBVU0IgaW50ZXJmYWNlIGZ1bmN0aW9ucy5cblxuRnVydGhlcm1vcmUsIEkgaGF2ZSB0byBjb25zaWRlciB0aGUgcG90ZW50aWFsIGZvciBkZXBlbmRlbmNpZXMgb24gc3BlY2lmaWMgbmV0d29yayBjb25maWd1cmF0aW9uIHRvb2xzIG9yIGxpYnJhcmllcy4gRG9lcyBgTVQ3OTI1VWAgaW50ZXJmYWNlIHdpdGggYGl3bHdpZmlgLCBvciBhbm90aGVyIGNvbW1vbiBuZXR3b3JraW5nIHN0YWNrIGNvbXBvbmVudD8gQXJlIHRoZXJlIGFueSBmaXJtd2FyZSB2ZXJzaW9ucyB0aGF0IGFyZSBzdXBwb3J0ZWQgb3Iga25vd24gdG8gYmUgcmVxdWlyZWQ/IEFyZSB0aGVyZSBhbnkga25vd24gY29uZmxpY3RzIHdpdGggc3BlY2lmaWMga2VybmVsIHZlcnNpb25zIG9yIG90aGVyIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb25zPyBUaG9zZSB3b3VsZCBiZSBjcml0aWNhbC5cblxuVGhlbiB0aGVyZSBpcyB0aGUgcmVndWxhdG9yeSBhc3BlY3QuIERvZXMgYE1UNzkyNVVgIGhhdmUgYW55IGRlcGVuZGVuY2llcyBvbiByZWd1bGF0b3J5IGRhdGFiYXNlcyBvciBjb3VudHJ5IGNvZGUgc2V0dGluZ3M/IFNvbWUgd2lyZWxlc3MgZHJpdmVycyBhcmUgdmVyeSB0aWdodGx5IGNvdXBsZWQgdG8gcmVndWxhdG9yeSByZXF1aXJlbWVudHMgZm9yIGVhY2ggcmVnaW9uLlxuXG5BbHJpZ2h0LCBJJ2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIHJlbGV2YW50IHNvdXJjZSBjb2RlLCBkb2N1bWVudGF0aW9uLCBhbmQgcG90ZW50aWFsbHkgZXhpc3Rpbmcga2VybmVsIGNvbmZpZ3MuIEkgd2FudCB0byBzZWUgaG93IHRoaXMgdGhpbmcgKmludGVncmF0ZXMqIGFuZCAqaW50ZXJhY3RzKiB3aXRoIHRoZSByZXN0IG9mIHRoZSBzeXN0ZW0uIEknbGwgYmUgbG9va2luZyBhdCB0aGUgTWFrZWZpbGUsIEtjb25maWcgZmlsZXMsIGFuZCBhbnkgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uLCBsb29raW5nIGZvciBleHBsaWNpdCBkZXBlbmRlbmNpZXMgb3IgaW1wbGljaXQgcmVxdWlyZW1lbnRzLiBUaGlzIHdpbGwgYmUgdGhlIGZpcnN0IHN0ZXAgdG93YXJkcyB1bmRlcnN0YW5kaW5nIGhvdyB0byBkZWFsIHdpdGggdGhpcyBtb2R1bGUuIFRoaXMgaXMgYSBiaXQgb2YgYSBkZXRlY3RpdmUgam9iLCBidXQgaXQgaXMgaW1wb3J0YW50IHRvIGtub3cgZXZlcnl0aGluZyBhYm91dCB0aGlzIGNvbXBvbmVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMyNzIsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwOToxODoxNC4wNTMyODUyNzJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyNDgyNzI1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNVDc5MjVVXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnPTc9Y29uZmlnIE1UNzkyNUVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZzoxOTpjb25maWcgTVQ3OTI1VVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMjAtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzkyNVUgKFVTQikgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDk6MTg6MTQuMTE1NzczMzM3WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc0MjUxODUzMjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNVDc5MjUgS2NvbmZpZyoqXG5cbkFscmlnaHQsIHRpbWUgdG8gY3JhY2sgb3BlbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWdgIGZpbGUuIEknbSBhc3N1bWluZywgYXMgYWx3YXlzIHdpdGggdGhlc2UgTWVkaWF0ZWsgY29uZmlndXJhdGlvbnMsIHRoYXQgaXQncyBnb2luZyB0byBiZSBhIHdlbGwtc3RydWN0dXJlZCBzZXQgb2YgZGVwZW5kZW5jaWVzIGFuZCBmZWF0dXJlIGZsYWdzIGZvciB0aGUgTVQ3OTI1IHdpcmVsZXNzIGNoaXBzZXQuIEkgZXhwZWN0IHRvIHNlZSB0aGUgdXN1YWwgc3VzcGVjdHMg4oCTIGVuYWJsaW5nL2Rpc2FibGluZyBvZiB2YXJpb3VzIDgwMi4xMSBzdGFuZGFyZHMsIHByb2JhYmx5IHNvbWUgY29uZmlndXJhdGlvbiBmb3IgcG93ZXIgbWFuYWdlbWVudCwgZGVmaW5pdGVseSBvcHRpb25zIGZvciBkZWJ1ZyBmZWF0dXJlcywgYW5kIG9mIGNvdXJzZSwgdGhlIGV2ZXItcHJlc2VudCBjYWxpYnJhdGlvbiBhbmQgaGFyZHdhcmUtc3BlY2lmaWMgc2V0dGluZ3MuIEknbGwgYmUgbG9va2luZyB0byBzZWUgaG93IHRoZXkndmUgc3RydWN0dXJlZCB0aGUgZHJpdmVyIG9wdGlvbnMgZm9yIG11bHRpcGxlIGhhcmR3YXJlIHJldmlzaW9ucy4gR2l2ZW4gdGhlIE1UNzYncyBtb2R1bGFyIGFwcHJvYWNoLCBJIGFudGljaXBhdGUgY2xlYW4gc2VwYXJhdGlvbiBvZiBjb3JlIGZ1bmN0aW9uYWxpdHkgYW5kIHRoZSBNVDc5MjUtc3BlY2lmaWMgZ2x1ZSBjb2RlLiBJIHdpbGwgY2hlY2sgZm9yIGFueSB1bnVzdWFsLCBwbGF0Zm9ybS1zcGVjaWZpYyBjb25zdHJhaW50cyBvciBhbnl0aGluZyB0aGF0IG1pZ2h0IGltcGFjdCBvdmVyYWxsIHBlcmZvcm1hbmNlIG9yIHBvd2VyIGNvbnN1bXB0aW9uLiBMZXQncyBnZXQgdG8gaXQgYW5kIHNlZSB3aGF0IGludGVyZXN0aW5nIG9wdGltaXphdGlvbnMgdGhleSd2ZSBpbXBsZW1lbnRlZCwgb3IgYXJlYXMgd2hlcmUgdGhleSd2ZSBtYXliZSBmYWxsZW4gc2hvcnQgYW5kIEkgY2FuIHN1Z2dlc3QgaW1wcm92ZW1lbnRzLiBJJ20gaG9waW5nIGl0J3MgYSBjbGVhbiwgd2VsbC1jb21tZW50ZWQgS2NvbmZpZywgYWx3YXlzIG1ha2VzIGxpZmUgZWFzaWVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzk0NCwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA5OjE4OjIxLjU0MDk2MTM3NVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MjY1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuICAgMjpcXHRjb25maWcgTVQ3OTI1X0NPTU1PTlxcbiAgIDM6XFx0XFx0dHJpc3RhdGVcXG4gICA0OlxcdFxcdHNlbGVjdCBNVDc5MnhfTElCXFxuICAgNTpcXHRcXHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcXG4gICA2OlxcdFxcbiAgIDc6XFx0Y29uZmlnIE1UNzkyNUVcXG4gICA4OlxcdFxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MjVFIChQQ0llKSBzdXBwb3J0XFxcIlxcbiAgIDk6XFx0XFx0c2VsZWN0IE1UNzkyNV9DT01NT05cXG4gIDEwOlxcdFxcdGRlcGVuZHMgb24gTUFDODAyMTFcXG4gIDExOlxcdFxcdGRlcGVuZHMgb24gUENJXFxuICAxMjpcXHRcXHRoZWxwXFxuICAxMzpcXHRcXHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc5MjUtYmFzZWQgd2lyZWxlc3MgUENJZSBkZXZpY2VzLFxcbiAgMTQ6XFx0XFx0ICB3aGljaCBzdXBwb3J0IG9wZXJhdGlvbiBhdCA2R0h6LCA1R0h6LCBhbmQgMi40R0h6IElFRUUgODAyLjExYmVcXG4gIDE1OlxcdFxcdCAgMngyOjJTUyA0MDk2LVFBTSwgMTYwTUh6IGNoYW5uZWxzLlxcbiAgMTY6XFx0XFxuICAxNzpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXFxuICAxODpcXHRcXG4gIDE5OlxcdGNvbmZpZyBNVDc5MjVVXFxuICAyMDpcXHRcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3OTI1VSAoVVNCKSBzdXBwb3J0XFxcIlxcbiAgMjE6XFx0XFx0c2VsZWN0IE1UNzkyeF9VU0JcXG4gIDIyOlxcdFxcdHNlbGVjdCBNVDc5MjVfQ09NTU9OXFxuICAyMzpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuICAyNDpcXHRcXHRkZXBlbmRzIG9uIFVTQlxcbiAgMjU6XFx0XFx0aGVscFxcbiAgMjY6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTI1LWJhc2VkIHdpcmVsZXNzIFVTQiBkZXZpY2VzLFxcbiAgMjc6XFx0XFx0ICB3aGljaCBzdXBwb3J0IG9wZXJhdGlvbiBhdCA2R0h6LCA1R0h6LCBhbmQgMi40R0h6IElFRUUgODAyLjExYmVcXG4gIDI4OlxcdFxcdCAgMngyOjJTUyA0MDk2LVFBTSwgMTYwTUh6IGNoYW5uZWxzLlxcbiAgMjk6XFx0XFxuICAzMDpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA5OjE4OjIxLjU0MTAyNjY2NVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNjM3MTU3OTE5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgTVQ3OTI1VSBEcml2ZXIncyBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYE1UNzkyNVVgIGRyaXZlciwgd2hpY2ggaGluZ2VzIG9uIGBNQUM4MDIxMWAgYW5kIHRoZSBVU0Igc3Vic3lzdGVtLiBUaGF0IGltbWVkaWF0ZWx5IHN1Z2dlc3RzIHNvbWUgcHJvbWlzaW5nIGF2ZW51ZXMgZm9yIGZ1enppbmcuIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIGZldyBuZXcgZnVuY3Rpb25zOiBgbXQ3OTI1X2xvYWRfdmVmdXNlX2Zyb21fZndgLCBgbXQ3OTI1X21jdV9yZWFkX3ZlZnVzZWAsIGFuZCBgbXQ3OTI1X21jdV9zZW5kX3ZlZnVzZV9wYWdlYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoZXNlIGFyZSBkZWZpbml0ZWx5IHJlYWNoYWJsZSB2aWEgVVNCIGZ1enppbmcgdGVjaG5pcXVlczsgaXQncyBwcmFjdGljYWxseSBhIGdpdmVuLiBBbmQgb2YgY291cnNlLCB0aGUgZGVidWdmcyBpbnRlcmZhY2UgY29tZXMgaW50byBwbGF5IGlmIHRoZSBmaXJtd2FyZSBpbmNsdWRlcyB0aGF0IHZlZnVzZSByZWdpb24uXG5cbk5vdywgdGhlIGZpcm13YXJlIHBhcnNpbmcgd2l0aGluIGBtdDc5MjVfbG9hZF92ZWZ1c2VfZnJvbV9md2AgcmVhbGx5IGdyYWJzIG15IGF0dGVudGlvbi4gVGhlIGZhY3QgdGhhdCB0aGlzIHBhcnNpbmcgY29kZSBpcyAqcmVhY2hhYmxlIGV2ZW4gd2l0aCBtYWxmb3JtZWQgZmlybXdhcmUqLi4uIHRoYXQgc2NyZWFtcyBcImZ1enppbmcgdGFyZ2V0LlwiIFRoaXMgaXMgd2hlcmUgU3l6a2FsbGVyIHJlYWxseSBzaGluZXM6IGl0IGNhbiBmdXp6IGZpcm13YXJlIGxvYWRpbmcuIFNvLCB0aGUga2V5IGZ1bmN0aW9ucyB0byBjb25jZW50cmF0ZSBvbiBzZWVtIHRvIGJlOlxuXG4qICAgYG10NzkyNV9sb2FkX3ZlZnVzZV9mcm9tX2Z3YFxuKiAgIGBtdDc5MjVfbWN1X3JlYWRfdmVmdXNlYFxuKiAgIGBtdDc5MjVfbWN1X3NlbmRfdmVmdXNlX3BhZ2VgXG4qICAgYG10NzkyNV92ZWZ1c2VfcmVhZGBcblxuSSBzaG91bGQgY2hlY2sgaWYgYG10NzkyNV92ZWZ1c2VfcmVhZGAgaXMgc3RhdGljLiBMb29rcyBsaWtlIGl0IGlzOiBgc3RhdGljIGludCBtdDc5MjVfdmVmdXNlX3JlYWQoc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICpkYXRhKWAuIEFoLCBzdGF0aWMuLi4gaXQgbWlnaHQgYmUgaW5saW5lZCBvciBtaWdodCBub3QgaGF2ZSBhIGRpc3RpbmN0IHN5bWJvbC4gQnV0IGBtdDc5MjVfbWN1X3JlYWRfdmVmdXNlYCAqaXNuJ3QqIHN0YXRpYy4gSG9sZCBvbiwgaXNuJ3QgYG10NzkyNV9tY3VfcmVhZF92ZWZ1c2VgIGluIGBtY3UuY2AgYW5kIGV4cG9ydGVkPyBUaW1lIHRvIGNoZWNrIHRoZSBzb3VyY2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0Nzg0LCJPdXRwdXRUb2tlbnMiOjUyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzg4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDk6MTg6MzcuOTEyNjA4MTQ0WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODU5MDA5MDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTI1X21jdV9yZWFkX3ZlZnVzZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTI5MD1tdDc5MjVfdmVmdXNlX3JlYWQoc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICpkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTMxMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MzExOlxcdFxcdHJldCA9IG10NzkyNV9tY3VfcmVhZF92ZWZ1c2UoZGV2LCBvZmYsIGNodW5rLCBidWYgKyBvZmYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0zMTItXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jPTg3NT1tdDc5MjVfbWN1X3NlbmRfdmVmdXNlX3BhZ2Uoc3RydWN0IG10NzkyeF9kZXYgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTkwNy0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYzo5MDg6aW50IG10NzkyNV9tY3VfcmVhZF92ZWZ1c2Uoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTE2IG9mZnNldCwgdTE2IGNvdW50LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTkwOS1cXHRcXHRcXHQgICB1OCAqb3V0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1Lmg9MTYxPXN0cnVjdCBtdDc5MjVfdmVmdXNlX3BhZ2VfY21kIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5oLTE3MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuaDoxNzI6aW50IG10NzkyNV9tY3VfcmVhZF92ZWZ1c2Uoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTE2IG9mZnNldCwgdTE2IGNvdW50LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5oLTE3My1cXHRcXHRcXHQgICB1OCAqb3V0KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDk6MTg6MzguNTk4NTE0NTA3WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg0NTE0MjEzNzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNVDc5MjUgVkVmdXNlIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duIHN5c3RlbWF0aWNhbGx5LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgbXQ3OTI1X21jdV9yZWFkX3ZlZnVzZWAgaXNuJ3Qgc3RhdGljLCB3aGljaCBpbW1lZGlhdGVseSBmbGFncyBpdCBhcyBzb21ldGhpbmcgdG8gcGF5IGF0dGVudGlvbiB0by4gQnV0LCBgbXQ3OTI1X2xvYWRfdmVmdXNlX2Zyb21fZndgICppcyogc3RhdGljLiBUaGlzIHJhaXNlcyB0aGUgcXVlc3Rpb24gb2YgaW5saW5pbmcuIFNpbmNlIGl0J3Mgc3RhdGljLCBpdCBjb3VsZCBiZSBpbmxpbmVkIGludG8gYG10NzkyNV9ydW5fZmlybXdhcmVgLiBMZXQncyB1c2UgYG10NzkyNV9ydW5fZmlybXdhcmVgIGFzIGEgZm9jdXMgc3ltYm9sLiBBaCwgYnV0IHdhaXQsIGBtdDc5MjVfcnVuX2Zpcm13YXJlYCBpcyBpbml0IHRpbWUsIHNvIGl0IGlzIGEgZ29vZCBmb2N1cyBzeW1ib2wuIE9uIHRoZSBvdGhlciBoYW5kLCBgbXQ3OTI1X21jdV9yZWFkX3ZlZnVzZWAgaXMgYWxzbyB3b3J0aCBmb2N1c2luZyBvbi5cblxuTm93LCB3aGF0IGFib3V0IGBtdDc5MjVfbWN1X3NlbmRfdmVmdXNlX3BhZ2VgPyBUaGF0J3Mgc3RhdGljIHRvbywgc28gaXQgY291bGQgcG90ZW50aWFsbHkgYmUgaW5saW5lZCBpbnRvIGBtdDc5MjVfbG9hZF92ZWZ1c2VfZnJvbV9md2AuICBXZSBzaG91bGQgY2hlY2sgYG10NzkyNV92ZWZ1c2VfcmVhZGAsIHdoaWNoIGlzIHN0YXRpYywgYnV0IGFsc28gcGFzc2VkIGFzIGEgZnVuY3Rpb24gcG9pbnRlciB0byBgZGVidWdmc19jcmVhdGVfZGV2bV9zZXFmaWxlYC4gVGhhdCBtZWFucyBpdCAqY2FuJ3QqIGJlIGZ1bGx5IGlubGluZWQgYmVjYXVzZSBpdHMgYWRkcmVzcyBpcyBiZWluZyB0YWtlbi4gIFN0aWxsLCBpdCBtaWdodCBub3QgYmUgZXhwb3J0ZWQsIHNvIGl0cyBzY29wZSBtYXkgYmUgbGltaXRlZC5cblxuSW4gY29uY2x1c2lvbiwgSSB0aGluayB3ZSdyZSBzYWZlIHRvIHVzZSBgbXQ3OTI1X3J1bl9maXJtd2FyZWAgYW5kIGBtdDc5MjVfbWN1X3JlYWRfdmVmdXNlYCBhcyBvdXIgcHJpbWFyeSBmb2N1cyBzeW1ib2xzLlxuXG5Ob3csIGxldCdzIHJlLWV4YW1pbmUgdGhlIHBhdGNoIGl0c2VsZi4gSXQncyBhZGRpbmc6XG5cbiogICBgbXQ3OTI1X3ZlZnVzZV9yZWFkYCAoc3RhdGljLCBhZGRyZXNzIHRha2VuIC0gdGhhdCBmdW5jdGlvbiBwb2ludGVyIGFnYWluISlcbiogICBgbXQ3OTI1X21jdV9zZW5kX3ZlZnVzZV9wYWdlYCAoc3RhdGljKVxuKiAgIGBtdDc5MjVfbWN1X3JlYWRfdmVmdXNlYCAobm9uLXN0YXRpYyAtIG91ciBtYWluIGNvbmNlcm4hKVxuKiAgIGBtdDc5MjVfbG9hZF92ZWZ1c2VfZnJvbV9md2AgKHN0YXRpYylcblxuU28sIG15IGtleSBmb2N1cyBzeW1ib2xzIHJlbWFpbjpcblxuKiAgIGBtdDc5MjVfcnVuX2Zpcm13YXJlYFxuKiAgIGBtdDc5MjVfbWN1X3JlYWRfdmVmdXNlYFxuXG5SZWdhcmRpbmcgY29uZmlndXJhdGlvbnMsIHdlJ3JlIGxvb2tpbmcgYXQgYE1UNzkyNVVgLCBgTUFDODAyMTFgLCBhbmQgYFVTQmAuIEhhbmcgb27igKYgYE1UNzkyNVVgIGRlcGVuZHMgb24gYm90aCBgTUFDODAyMTFgIGFuZCBgVVNCYC4gVGhpcyBpcyBwcmV0dHkgc3RhbmRhcmQgZm9yIHRoaXMgdHlwZSBvZiBoYXJkd2FyZSwgYnV0IGxldCdzIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJ3QgYW55IG90aGVyIGRlcGVuZGVuY2llcyBpbiBwbGF5LiBMZXQncyBicmllZmx5IGNoZWNrIGBNVDc5MnhfVVNCYCBhbmQgYE1UNzkyNV9DT01NT05gIHRvIGJlIHN1cmUuIEl0J3MgaW1wb3J0YW50IHRvIHJ1bGUgb3V0IGFueSB1bmV4cGVjdGVkIGludGVyYWN0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTYyMTksIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDk6MTg6NDcuMDQ5OTQwMjA0WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MjA5NTY3NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTVQ3OTJ4X1VTQlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc9MzI9Y29uZmlnIE1UNzkyeF9MSUJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0zNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6MzY6Y29uZmlnIE1UNzkyeF9VU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMzctXFx0dHJpc3RhdGVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDk6MTg6NDcuMTEyMDQxNDVaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE0MTAyMjMyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBNVDc5MjVVIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSBpbml0aWFsbHkgdGhvdWdodCBgTVQ3OTI1VWAgd291bGQgYmUgZW5vdWdoIHRvIGdldCB0aGUgYmFsbCByb2xsaW5nLiBCdXQgd2FpdCwgYSBsaXR0bGUgbW9yZSBkaWdnaW5nLCBhbmQgaXQgc2VlbXMgdGhhdCBgTVQ3OTI1VWAgaXNuJ3QgYSBzaW1wbGUgb24vb2ZmLCBidXQgYSB0cmlzdGF0ZSBjb25maWd1cmF0aW9uLiBMZXQgbWUgbWFrZSBzdXJlIEknbSBjb25maWd1cmluZyB0aGUgZHJpdmVyIGFwcHJvcHJpYXRlbHkuXG5cblNvLCBJJ20gZ29pbmcgdG8gZW5hYmxlIGBNVDc5MjVVYCB0byBlbnN1cmUgdGhlIGRyaXZlciBpcyBmdW5jdGlvbmFsLlxuXG5BbHNvLCBpZiBJIHdhbnQgdG8gcGxheSB3aXRoIHRoZSBkZWJ1ZyBmaWxlc3lzdGVtLCBgREVCVUdfRlNgIGlzIHJlcXVpcmVkLiBUaGF0J3MgYSBtdXN0LiBOb3csIGJlZm9yZSBJIGp1bXAgaW4sIEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayB0aGF0IGBtdDc5MjVfaW5pdF9kZWJ1Z2ZzYCBpcyBjb21waWxlZCBpbiBhIGNvbmRpdGlvbmFsIG1hbm5lci4gSSBuZWVkIHRvIGtub3cgaXQncyBvbmx5IGVuYWJsZWQgaWYgYERFQlVHX0ZTYCBpcyBkZWZpbmVkLCBvdGhlcndpc2UgSSB3aWxsIHdhc3RlIG15IHRpbWUgY2hhc2luZyBhIG5vbi1leGlzdGVudCBmdW5jdGlvbi4gVGhpcyBjb25kaXRpb25hbCBjb21waWxlIGNoZWNrIGlzIGtleSB0byBlbnN1cmluZyBhIGNsZWFuIGFuZCBlZmZlY3RpdmUgZGVidWdnaW5nIHN0cmF0ZWd5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzU1NCwiT3V0cHV0VG9rZW5zIjo0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA5OjE4OjUxLjI1MzA2NjcyNVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQwNDU1NjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTI1X2luaXRfZGVidWdmc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTI5MD1tdDc5MjVfdmVmdXNlX3JlYWQoc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICpkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTMzMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MzM0OmludCBtdDc5MjVfaW5pdF9kZWJ1Z2ZzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTMzNS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM9MTkwPXN0YXRpYyB2b2lkIG10NzkyNV9pbml0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIxOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjE5OlxcdHJldCA9IG10NzkyNV9pbml0X2RlYnVnZnMoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjIwLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oPTMyMT1pbnQgbXQ3OTI1X2luaXRfbWxvX2NhcHMoc3RydWN0IG10NzkyeF9waHkgKnBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg6MzIyOmludCBtdDc5MjVfaW5pdF9kZWJ1Z2ZzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTMyMy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDk6MTg6NTEuMjk3MTIxNDIzWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NzA0ODk0ODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipEZWJ1Z2dpbmcgdGhlIENvbmRpdGlvbmFsIENvbXBpbGF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYGRlYnVnZnMuY2AuIE15IGluaXRpYWwgcXVlc3Rpb24gaXMgd2hldGhlciBvciBub3QgdGhpcyBmaWxlIGlzIGNvbXBpbGVkIHVuZGVyIHNwZWNpZmljIGNvbmRpdGlvbnMuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZXJlJ3MgYW55IGNvbmRpdGlvbmFsIGxvZ2ljIGF0IHBsYXkgaGVyZS4gQXJlIHRoZXJlIGAjaWZkZWZgIGJsb2NrcyBvciBzb21ldGhpbmcgc2ltaWxhciB0aGF0IHdvdWxkIHByZXZlbnQgdGhpcyBmaWxlIGZyb20gYmVpbmcgaW5jbHVkZWQgaW4gZXZlcnkgYnVpbGQ/IElzIHRoaXMgZnVuY3Rpb25hbGl0eSBlbmFibGVkIG9yIGRpc2FibGVkIGJ5IGEgZmVhdHVyZSBmbGFnLCBhIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbiwgb3IgcGVyaGFwcyBhIGJ1aWxkIGVudmlyb25tZW50IHNldHRpbmc/IFRoaXMgaXMgY3J1Y2lhbCBiZWNhdXNlIGlmIGl0J3MgKm5vdCogYWx3YXlzIGNvbXBpbGVkLCBhbnkgZGVidWdnaW5nIHJlbGF0ZWQgdG8gdGhpcyBmaWxlIGNvdWxkIGJlIG1pc2xlYWRpbmcgd2l0aG91dCB0aGUgc3BlY2lmaWMgY29uZGl0aW9ucyB0aGF0IGNhdXNlIGNvbXBpbGF0aW9uIGJlaW5nIG1ldC4gSSBoYXZlIHRvIGNvbmZpcm0gaXRzIHByZXNlbmNlIGJlZm9yZSBJIHN0YXJ0IGRlYnVnZ2luZywgdG8gYXZvaWQgd2FzdGluZyB0aW1lLiBJIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcsIE1ha2VmaWxlcywgb3IgZXZlbiB0aGUgYnVpbGQgc2NyaXB0cyB0byB1bmRlcnN0YW5kIHRoZSBpbmNsdXNpb24gY3JpdGVyaWEuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4MzgxLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDk6MTg6NTQuNzY3NjEzMjQ2WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDcxMzIzNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZWJ1Z2ZzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlPTU9b2JqLSQoQ09ORklHX01UNzkyNVUpICs9IG10NzkyNXUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlLTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvTWFrZWZpbGU6NzptdDc5MjUtY29tbW9uLXkgOj0gbWFjLm8gbWN1Lm8gcmVnZC5vIG1haW4ubyBpbml0Lm8gZGVidWdmcy5vIG5hbi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvTWFrZWZpbGUtOC1tdDc5MjUtY29tbW9uLSQoQ09ORklHX05MODAyMTFfVEVTVE1PREUpICs9IHRlc3Rtb2RlLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDk6MTg6NTQuODEyMzI4MjQzWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc2Mjg3OTA3MzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ29uZmlndXJhdGlvbiBDb25zaWRlcmF0aW9ucyBmb3IgRnV6emluZyB0aGUgTVQ3OTI1IERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBwdXR0aW5nIHRvZ2V0aGVyIGEgZnV6emluZyBjb25maWd1cmF0aW9uIGZvciB0aGUgTVQ3OTI1IGRyaXZlci4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGNvdmVyIGFsbCB0aGUgYmFzZXMuIEknbSBzdGFydGluZyBieSByZW1lbWJlcmluZyB0aGF0IGNvZGUgaXMgY29tcGlsZWQgYnV0IHRoZXJlJ3MgYSBjaGFuY2UgYGRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZWAgY291bGQgYmUgYSBzdHViIGlmIGBERUJVR19GU2AgaXMgZGlzYWJsZWQsIHNvIEkgbmVlZCB0byBleHBsaWNpdGx5IGVuYWJsZSB0aGF0IHRvIGJlIG9uIHRoZSBzYWZlIHNpZGUuIEl0J3MgbGlrZWx5IGVuYWJsZWQgYnkgZGVmYXVsdCBpbiBzeXprYWxsZXIgY29uZmlncywgYnV0IGl0J3MgZ29vZCB0byBiZSBleHBsaWNpdC5cblxuTm93LCBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIGRpZmZlcmVudCBNVDc5MjUgdmFyaWFudHMuIGBNVDc5MjVFYCBpcyBmb3IgUENJZSwgYW5kIHdoaWxlIHN5emthbGxlcidzIG5vdCAqaWRlYWwqIGZvciBmdXp6aW5nIFBDSWUgdW5sZXNzIGl0J3MgYSB2ZXJ5IHNwZWNpZmljIGRyaXZlciB3aXRoIGEgZmFrZSBQQ0kgZGV2aWNlLCBJJ3ZlIGdvdCBgTVQ3OTI1VWAgKFVTQikgd2hpY2ggaXMgZGVmaW5pdGVseSBmdXp6YWJsZSB3aXRoIHN5emthbGxlci4gSSdsbCBpbmNsdWRlIGJvdGggYE1UNzkyNUVgIGFuZCBgTVQ3OTI1VWAganVzdCBpbiBjYXNlLCBiZXR0ZXIgc2FmZSB0aGFuIHNvcnJ5LlxuXG5TbywgaGVyZSdzIG15IGluaXRpYWwgc3VtbWFyeTogSSdtIGNvbmZpZGVudCB0aGlzIGlzIHdvcnRoIGZ1enppbmcsIGFuZCBJIHdhbnQgdG8gZm9jdXMgb24gZnVuY3Rpb25zIGxpa2UgYG10NzkyNV9ydW5fZmlybXdhcmVgIGFuZCBgbXQ3OTI1X21jdV9yZWFkX3ZlZnVzZWAuIE15IGluaXRpYWwgY29uZmlnIGxvb2tzIGxpa2UgdGhpczpcblxuKiAgICoqV29ydGhGdXp6aW5nOioqIGB0cnVlYFxuKiAgICoqRm9jdXNTeW1ib2xzOioqXG4gICAgKiAgIGBtdDc5MjVfcnVuX2Zpcm13YXJlYFxuICAgICogICBgbXQ3OTI1X21jdV9yZWFkX3ZlZnVzZWBcbiogICAqKkVuYWJsZUNvbmZpZ3M6KipcbiAgICAqICAgYE1UNzkyNVVgXG4gICAgKiAgIGBNVDc5MjVFYFxuICAgICogICBgTUFDODAyMTFgXG4gICAgKiAgIGBVU0JgXG4gICAgKiAgIGBERUJVR19GU2BcblxuQnV0LCB3YWl0LCBJIG5lZWQgdG8gYWNjb3VudCBmb3IgZGVwZW5kZW5jaWVzLiBgTVQ3OTI1RWAgZGVwZW5kcyBvbiBgUENJYCwgc28gSSBoYXZlIHRvIGluY2x1ZGUgYFBDSWAgbm93LiBBbHNvLCBgTVQ3OTI1VWAgZGVwZW5kcyBvbiBgTUFDODAyMTFgIGFuZCBgVVNCYC4gYE1BQzgwMjExYCBpbiB0dXJuIGRlcGVuZHMgb24gYENGRzgwMjExYCwgc28gSSdsbCBhZGQgdGhhdCB0byB0aGUgZW5hYmxlIGxpc3QgYXMgd2VsbC4gSnVzdCB0byBiZSB0aG9yb3VnaCBJIG5lZWQgdG8gY2hlY2sgYE1BQzgwMjExYCBkZXBlbmRlbmNpZXMgdG9vLCBjYW4ndCBiZSB0b28gY2FyZWZ1bCBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODgwMywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwOToxOTowMi40NDExMjIwMTFaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMDA3NTEyMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTUFDODAyMTFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21hYzgwMjExL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbWFjODAyMTEvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI6Y29uZmlnIE1BQzgwMjExXFxubmV0L21hYzgwMjExL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiR2VuZXJpYyBJRUVFIDgwMi4xMSBOZXR3b3JraW5nIFN0YWNrIChtYWM4MDIxMSlcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0xOT1pZiBNQUM4MDIxMSAhPSBuXFxubmV0L21hYzgwMjExL0tjb25maWctMjAtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjE6Y29uZmlnIE1BQzgwMjExX0hBU19SQ1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyLVxcdGJvb2xcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMy1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDpjb25maWcgTUFDODAyMTFfUkNfTUlOU1RSRUxcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNS1cXHRib29sIFxcXCJNaW5zdHJlbFxcXCIgaWYgRVhQRVJUXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0zMT1jaG9pY2VcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQwLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjQxOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUX01JTlNUUkVMXFxubmV0L21hYzgwMjExL0tjb25maWctNDItXFx0Ym9vbCBcXFwiTWluc3RyZWxcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZz00OD1lbmRjaG9pY2VcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00OS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo1MDpjb25maWcgTUFDODAyMTFfUkNfREVGQVVMVFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTUxLVxcdHN0cmluZ1xcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9NTc9Y29tbWVudCBcXFwiU29tZSB3aXJlbGVzcyBkcml2ZXJzIHJlcXVpcmUgYSByYXRlIGNvbnRyb2wgYWxnb3JpdGhtXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctNTktXFxubmV0L21hYzgwMjExL0tjb25maWc6NjA6Y29uZmlnIE1BQzgwMjExX0tVTklUX1RFU1RcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy02MS1cXHR0cmlzdGF0ZSBcXFwiS1VuaXQgdGVzdHMgZm9yIG1hYzgwMjExXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy02OS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo3MDpjb25maWcgTUFDODAyMTFfTUVTSFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTcxLVxcdGJvb2wgXFxcIkVuYWJsZSBtYWM4MDIxMSBtZXNoIG5ldHdvcmtpbmcgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTc4LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjc5OmNvbmZpZyBNQUM4MDIxMV9MRURTXFxubmV0L21hYzgwMjExL0tjb25maWctODAtXFx0Ym9vbCBcXFwiRW5hYmxlIExFRCB0cmlnZ2Vyc1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg3LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjg4OmNvbmZpZyBNQUM4MDIxMV9ERUJVR0ZTXFxubmV0L21hYzgwMjExL0tjb25maWctODktXFx0Ym9vbCBcXFwiRXhwb3J0IG1hYzgwMjExIGludGVybmFscyBpbiBEZWJ1Z0ZTXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctOTYtXFxubmV0L21hYzgwMjExL0tjb25maWc6OTc6Y29uZmlnIE1BQzgwMjExX01FU1NBR0VfVFJBQ0lOR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTk4LVxcdGJvb2wgXFxcIlRyYWNlIGFsbCBtYWM4MDIxMSBkZWJ1ZyBtZXNzYWdlc1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEwOS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTA6bWVudWNvbmZpZyBNQUM4MDIxMV9ERUJVR19NRU5VXFxubmV0L21hYzgwMjExL0tjb25maWctMTExLVxcdGJvb2wgXFxcIlNlbGVjdCBtYWM4MDIxMSBkZWJ1Z2dpbmcgZmVhdHVyZXNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTUtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTE2OmNvbmZpZyBNQUM4MDIxMV9OT0lOTElORVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNy1cXHRib29sIFxcXCJEbyBub3QgaW5saW5lIFRYL1JYIGhhbmRsZXJzXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTMxLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjEzMjpjb25maWcgTUFDODAyMTFfVkVSQk9TRV9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEzMy1cXHRib29sIFxcXCJWZXJib3NlIGRlYnVnZ2luZyBvdXRwdXRcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDItXFxubmV0L21hYzgwMjExL0tjb25maWc6MTQzOmNvbmZpZyBNQUM4MDIxMV9NTE1FX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTQ0LVxcdGJvb2wgXFxcIlZlcmJvc2UgbWFuYWdlZCBNTE1FIG91dHB1dFxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1My1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNTQ6Y29uZmlnIE1BQzgwMjExX1NUQV9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1NS1cXHRib29sIFxcXCJWZXJib3NlIHN0YXRpb24gZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTYyLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE2Mzpjb25maWcgTUFDODAyMTFfSFRfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjQtXFx0Ym9vbCBcXFwiVmVyYm9zZSBIVCBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNzQtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTc1OmNvbmZpZyBNQUM4MDIxMV9PQ0JfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNzYtXFx0Ym9vbCBcXFwiVmVyYm9zZSBPQ0IgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTg1LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE4Njpjb25maWcgTUFDODAyMTFfSUJTU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE4Ny1cXHRib29sIFxcXCJWZXJib3NlIElCU1MgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTk2LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE5Nzpjb25maWcgTUFDODAyMTFfUFNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTgtXFx0Ym9vbCBcXFwiVmVyYm9zZSBwb3dlcnNhdmUgbW9kZSBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMDgtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjA5OmNvbmZpZyBNQUM4MDIxMV9NUExfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMTAtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHBlZXIgbGluayBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjEtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjIyOmNvbmZpZyBNQUM4MDIxMV9NUEFUSF9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyMy1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggcGF0aCBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMzQtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjM1OmNvbmZpZyBNQUM4MDIxMV9NSFdNUF9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNi1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggSFdNUCByb3V0aW5nIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI0Ny1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDg6Y29uZmlnIE1BQzgwMjExX01FU0hfU1lOQ19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI0OS1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggc3luY2hyb25pemF0aW9uIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1OC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNTk6Y29uZmlnIE1BQzgwMjExX01FU0hfQ1NBX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjYwLVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBjaGFubmVsIHN3aXRjaCBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNjktXFxubmV0L21hYzgwMjExL0tjb25maWc6MjcwOmNvbmZpZyBNQUM4MDIxMV9NRVNIX1BTX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjcxLVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBwb3dlcnNhdmUgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjgwLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI4MTpjb25maWcgTUFDODAyMTFfVERMU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI4Mi1cXHRib29sIFxcXCJWZXJib3NlIFRETFMgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjkyLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI5Mzpjb25maWcgTUFDODAyMTFfREVCVUdfQ09VTlRFUlNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTQtXFx0Ym9vbCBcXFwiRXh0cmEgc3RhdGlzdGljcyBmb3IgVFgvUlggZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMzA3LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjMwODpjb25maWcgTUFDODAyMTFfU1RBX0hBU0hfTUFYX1NJWkVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDktXFx0aW50IFxcXCJTdGF0aW9uIGhhc2ggdGFibGUgbWF4aW11bSBzaXplXFxcIiBpZiBNQUM4MDIxMV9ERUJVR19NRU5VXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA5OjE5OjAyLjU0MTIwMzQwNFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NzgxNzMxNjg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgZXhwZXJ0IHBlcnNwZWN0aXZlOlxuXG4qKkRlcGVuZGVuY3kgRGVlcCBEaXZlKipcblxuUmlnaHQsIHNvIGBNQUM4MDIxMWAgaGluZ2VzIG9uIGBDRkc4MDIxMWAuIFRoYXQncyBzdGFuZGFyZCBmYXJlLCBidXQgaXQncyBjcnVjaWFsIHRvIHVuZGVyc3RhbmQgd2hlcmUgKnRoYXQqIGRlcGVuZGVuY3kgY2hhaW4gbGVhZHMuIEl0J3MgdGltZSB0byBkaWcgaW50byB0aGUgYENGRzgwMjExYCBkZXBlbmRlbmNpZXMgdGhlbXNlbHZlcy4gV2UgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gb2YgdGhlIHN1cHBvcnRpbmcgaW5mcmFzdHJ1Y3R1cmUuIEknbSB0aGlua2luZywgYXJlIHRoZXJlIGFueSBwb3RlbnRpYWwgY29uZmxpY3RzIGx1cmtpbmcgaW4gdGhvc2UgZGVwZW5kZW5jaWVzPyBBcmUgd2UgbG9va2luZyBhdCBhIGNsZWFuLCB3ZWxsLWRlZmluZWQgYXJjaGl0ZWN0dXJlLCBvciBzb21ldGhpbmcgdGhhdCBjb3VsZCBjYXVzZSBpc3N1ZXMgZG93biB0aGUgbGluZT8gTGV0J3MgZ2V0IGEgaGFuZGxlIG9uIHRoZSBsYW5kc2NhcGUgYmVmb3JlIHdlIHByb2NlZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxOTM5LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDk6MTk6MTAuMzIyOTM3NzU5WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjMyMDA0OTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIENGRzgwMjExXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC93aXJlbGVzcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3dpcmVsZXNzL0tjb25maWc9MTQ9Y29uZmlnIFdFWFRfUFJJVlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTYtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTc6Y29uZmlnIENGRzgwMjExXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTgtXFx0dHJpc3RhdGUgXFxcImNmZzgwMjExIC0gd2lyZWxlc3MgY29uZmlndXJhdGlvbiBBUElcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZz0zOD1jb25maWcgTkw4MDIxMV9URVNUTU9ERVxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctNTEtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6NTI6Y29uZmlnIENGRzgwMjExX0RFVkVMT1BFUl9XQVJOSU5HU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTUzLVxcdGJvb2wgXFxcImVuYWJsZSBkZXZlbG9wZXIgd2FybmluZ3NcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy02Ny1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo2ODpjb25maWcgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxubmV0L3dpcmVsZXNzL0tjb25maWctNjktXFx0Ym9vbCBcXFwiY2ZnODAyMTEgY2VydGlmaWNhdGlvbiBvbnVzXFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctODgtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6ODk6Y29uZmlnIENGRzgwMjExX1JFUVVJUkVfU0lHTkVEX1JFR0RCXFxubmV0L3dpcmVsZXNzL0tjb25maWctOTAtXFx0Ym9vbCBcXFwicmVxdWlyZSByZWdkYiBzaWduYXR1cmVcXFwiIGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctOTgtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6OTk6Y29uZmlnIENGRzgwMjExX1VTRV9LRVJORUxfUkVHREJfS0VZU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEwMC1cXHRib29sIFxcXCJhbGxvdyByZWdkYiBrZXlzIHNoaXBwZWQgd2l0aCB0aGUga2VybmVsXFxcIiBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTExMC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMTE6Y29uZmlnIENGRzgwMjExX0VYVFJBX1JFR0RCX0tFWURJUlxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTExMi1cXHRzdHJpbmcgXFxcImFkZGl0aW9uYWwgcmVnZGIga2V5IGRpcmVjdG9yeVxcXCIgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMjEtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTIyOmNvbmZpZyBDRkc4MDIxMV9SRUdfQ0VMTFVMQVJfSElOVFNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMjMtXFx0Ym9vbCBcXFwiY2ZnODAyMTEgcmVndWxhdG9yeSBzdXBwb3J0IGZvciBjZWxsdWxhciBiYXNlIHN0YXRpb24gaGludHNcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMzQtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTM1OmNvbmZpZyBDRkc4MDIxMV9SRUdfUkVMQVhfTk9fSVJcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMzYtXFx0Ym9vbCBcXFwiY2ZnODAyMTEgc3VwcG9ydCBmb3IgTk9fSVIgcmVsYXhhdGlvblxcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE1OC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNTk6Y29uZmlnIENGRzgwMjExX0RFRkFVTFRfUFNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNjAtXFx0Ym9vbCBcXFwiZW5hYmxlIHBvd2Vyc2F2ZSBieSBkZWZhdWx0XFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTY4LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE2OTpjb25maWcgQ0ZHODAyMTFfREVCVUdGU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3MC1cXHRib29sIFxcXCJjZmc4MDIxMSBEZWJ1Z0ZTIGVudHJpZXNcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzYtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTc3OmNvbmZpZyBDRkc4MDIxMV9DUkRBX1NVUFBPUlRcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzgtXFx0Ym9vbCBcXFwic3VwcG9ydCBDUkRBXFxcIiBpZiBFWFBFUlRcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4Ni1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxODc6Y29uZmlnIENGRzgwMjExX1dFWFRcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xODgtXFx0Ym9vbCBcXFwiY2ZnODAyMTEgd2lyZWxlc3MgZXh0ZW5zaW9ucyBjb21wYXRpYmlsaXR5XFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTkzLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE5NDpjb25maWcgQ0ZHODAyMTFfS1VOSVRfVEVTVFxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE5NS1cXHR0cmlzdGF0ZSBcXFwiS1VuaXQgdGVzdHMgZm9yIGNmZzgwMjExXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA5OjE5OjEwLjc4NjE0MjgxNloiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MjEwMTY3MTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIE1UNzkyNSBEcml2ZXIgUGF0Y2ggZm9yIEZ1enppbmcqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBsYW5kc2NhcGUuIGBDRkc4MDIxMWAgYXBwZWFycyB0byBiZSB0aGUgY29yZSwgd2l0aCBubyBzaWduaWZpY2FudCBkZXBlbmRlbmNpZXMsIHBlcmhhcHMganVzdCBgTkVUYC4gVGhlIHNwZWNpZmljIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb25zIGFyZSBgTVQ3OTI1VWAgYW5kIGBNVDc5MjVFYCwgYW5kIHRoZW4gdGhlIGNvbW1vbiBjb21wb25lbnRzIGxpa2UgYE1BQzgwMjExYCwgYENGRzgwMjExYCwgYFVTQmAsIGBQQ0lgLCBhbmQgYERFQlVHX0ZTYC5cblxuQSBxdWljayBzYW5pdHkgY2hlY2sgcmV2ZWFscyBzb21lIGRlcGVuZGVuY2llcyBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kLiBgTVQ3OTI1VWAgbmVlZHMgYFVTQmAsIGFuZCBgTVQ3OTI1RWAgbmVlZHMgYFBDSWAuIE9idmlvdXNseSwgYE1BQzgwMjExYCBkZXBlbmRzIG9uIGBDRkc4MDIxMWAsIHNvIEknbGwgaW5jbHVkZSBhbGwgb2YgdGhlbS5cblxuTm93LCBmb3IgZnV6emluZywgSSBuZWVkIHRvIGlkZW50aWZ5IGdvb2QgZm9jdXMgc3ltYm9scy4gIEkgaW5pdGlhbGx5IHRob3VnaHQgYG10NzkyNV9ydW5fZmlybXdhcmVgIHdvdWxkIGJlIHN1aXRhYmxlLCBhbmQgaXQgc2VlbXMgdG8gYmUgY2FsbGVkIGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24sIHdoaWNoIGlzIHByb21pc2luZy4gYG10NzkyNV9tY3VfcmVhZF92ZWZ1c2VgIGlzIGFsc28gaW50cmlndWluZywgYW5kIGl0IGFwcGVhcnMgZHVyaW5nIHRoZSByZWFkaW5nIG9mIHRoZSBkZWJ1Z2ZzIGZpbGUgd2hpY2ggc2VlbXMgbGlrZSBhIGdvb2QgdGFyZ2V0LiBJIGxpa2UgdGhhdCwgYXMgaXQgaW1wbGllcyB1c2VyIGludGVyYWN0aW9uIGFuZCBwb3RlbnRpYWwgZm9yIGZ1enppbmcuIFRoaXMgcGF0Y2ggYXBwZWFycyB0byBpbXBsZW1lbnQgYSBuZXcgZmVhdHVyZSAodmlydHVhbCBlZnVzZSBsb2FkaW5nIGZyb20gZmlybXdhcmUpLCBzbyBpdCdzIGEgZ29vZCBjYW5kaWRhdGUgZm9yIHRob3JvdWdoIHRlc3RpbmcuXG5cbkxldCdzIGRvdWJsZS1jaGVjayBmb3IgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb25zIGFkZGVkIGJ5IHRoaXMgcGF0Y2gsIHRvIGJyb2FkZW4gbXkgZnV6emluZyBjb3ZlcmFnZS4gYG10NzkyNV9tY3VfcmVhZF92ZWZ1c2VgIHNlZW1zIHRvIGJlIHRoZSBvbmx5IG9uZS4gVGhlIG90aGVyIHBvdGVudGlhbGx5IHJlbGV2YW50IGZ1bmN0aW9ucywgYG10NzkyNV9tY3Vfc2VuZF92ZWZ1c2VfcGFnZWAsIGBtdDc5MjVfbG9hZF92ZWZ1c2VfZnJvbV9md2AsIGFuZCBgbXQ3OTI1X3ZlZnVzZV9yZWFkYCwgYXJlIHN0YXRpYywgd2hpY2ggSSB3aWxsIG5vdCBiZSBkaXJlY3RseSB0YXJnZXRpbmcuXG5cblRoZXJlZm9yZSwgdGhlIG1haW4gZm9jdXMgc3ltYm9scyBmb3IgZnV6emluZyB3aWxsIGJlOlxuXG4qICAgYG10NzkyNV9ydW5fZmlybXdhcmVgXG4qICAgYG10NzkyNV9tY3VfcmVhZF92ZWZ1c2VgXG5cblRpbWUgdG8gc2V0IHRoZSByZXN1bHRzIGFuZCBtb3ZlIGZvcndhcmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMDcyLCJPdXRwdXRUb2tlbnMiOjIxNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwOToxOToxOS45OTYzMTMxNTdaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3Njk1OTQ4NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVQ3OTI1VVwiLFxuICAgIFwiTVQ3OTI1RVwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIkNGRzgwMjExXCIsXG4gICAgXCJVU0JcIixcbiAgICBcIlBDSVwiLFxuICAgIFwiREVCVUdfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc5MjVfcnVuX2Zpcm13YXJlXCIsXG4gICAgXCJtdDc5MjVfbWN1X3JlYWRfdmVmdXNlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBsb2FkaW5nICd2aXJ0dWFsIGVmdXNlJyAodmVmdXNlKSBkYXRhIGZyb20gZmlybXdhcmUgZm9yIHRoZSBNZWRpYVRlayBNVDc5MjUgd2lyZWxlc3MgZHJpdmVyLiBUaGUgZHJpdmVyIGhhcyBhIFVTQiB2YXJpYW50IChNVDc5MjVVKSB3aGljaCBjYW4gYmUgZnV6emVkIHVzaW5nIHN5emthbGxlcidzIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcy4gVGhlIGZpcm13YXJlIGxvYWRpbmcgbG9naWMgaW4gYG10NzkyNV9ydW5fZmlybXdhcmVgIGFuZCB0aGUgZGVidWdmcyByZWFkIGZ1bmN0aW9uIGBtdDc5MjVfbWN1X3JlYWRfdmVmdXNlYCBhcmUgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzkyNVVcIixcbiAgICBcIk1UNzkyNUVcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJDRkc4MDIxMVwiLFxuICAgIFwiVVNCXCIsXG4gICAgXCJQQ0lcIixcbiAgICBcIkRFQlVHX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3OTI1X3J1bl9maXJtd2FyZVwiLFxuICAgIFwibXQ3OTI1X21jdV9yZWFkX3ZlZnVzZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgbG9hZGluZyAndmlydHVhbCBlZnVzZScgKHZlZnVzZSkgZGF0YSBmcm9tIGZpcm13YXJlIGZvciB0aGUgTWVkaWFUZWsgTVQ3OTI1IHdpcmVsZXNzIGRyaXZlci4gVGhlIGRyaXZlciBoYXMgYSBVU0IgdmFyaWFudCAoTVQ3OTI1VSkgd2hpY2ggY2FuIGJlIGZ1enplZCB1c2luZyBzeXprYWxsZXIncyBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXMuIFRoZSBmaXJtd2FyZSBsb2FkaW5nIGxvZ2ljIGluIGBtdDc5MjVfcnVuX2Zpcm13YXJlYCBhbmQgdGhlIGRlYnVnZnMgcmVhZCBmdW5jdGlvbiBgbXQ3OTI1X21jdV9yZWFkX3ZlZnVzZWAgYXJlIHJlYWNoYWJsZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowvq44m[1] Phase: Succeeded StartedAt: 2026-08-05 09:19:31 +0000 UTC FinishedAt: 2026-08-05 09:19:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvq44m[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-05 09:19:31 +0000 UTC FinishedAt: 2026-08-05 09:19:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvq44m[2] Phase: Succeeded StartedAt: 2026-08-05 09:19:31 +0000 UTC FinishedAt: 2026-08-05 10:06:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvq44m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211","CFG80211","USB","PCI","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_run_firmware","mt7925_mcu_read_vefuse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211","CFG80211","USB","PCI","DEBUG_FS"],"series_id":"7113c193-4a7e-4459-bac5-b3e20ddaef37","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-05 09:19:31 +0000 UTC FinishedAt: 2026-08-05 10:06:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211","CFG80211","USB","PCI","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_run_firmware","mt7925_mcu_read_vefuse"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211","CFG80211","USB","PCI","DEBUG_FS"],"series_id":"7113c193-4a7e-4459-bac5-b3e20ddaef37","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowvq44m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211","CFG80211","USB","PCI","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_run_firmware","mt7925_mcu_read_vefuse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211","CFG80211","USB","PCI","DEBUG_FS"],"series_id":"7113c193-4a7e-4459-bac5-b3e20ddaef37","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-05 09:19:31 +0000 UTC FinishedAt: 2026-08-05 09:19:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvq44m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211","CFG80211","USB","PCI","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_run_firmware","mt7925_mcu_read_vefuse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211","CFG80211","USB","PCI","DEBUG_FS"],"series_id":"7113c193-4a7e-4459-bac5-b3e20ddaef37","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-05 09:19:31 +0000 UTC FinishedAt: 2026-08-05 09:19:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211","CFG80211","USB","PCI","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvq44m/series-workflowvq44m-convert-artifact-1418492129/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvq44m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211","CFG80211","USB","PCI","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_run_firmware","mt7925_mcu_read_vefuse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211","CFG80211","USB","PCI","DEBUG_FS"],"series_id":"7113c193-4a7e-4459-bac5-b3e20ddaef37","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-05 09:19:42 +0000 UTC FinishedAt: 2026-08-05 09:39:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvq44m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211","CFG80211","USB","PCI","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_run_firmware","mt7925_mcu_read_vefuse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211","CFG80211","USB","PCI","DEBUG_FS"],"series_id":"7113c193-4a7e-4459-bac5-b3e20ddaef37","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-05 09:19:42 +0000 UTC FinishedAt: 2026-08-05 09:39:47 +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:*0a7a2899-105e-4a6e-80f1-393e4735d61a,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-workflowvq44m/series-workflowvq44m-convert-artifact-1418492129/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": "33fb843f-8ee7-43e2-9bce-6e8474e9a72c", "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-workflowvq44m/series-workflowvq44m-build-action-2504803855/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvq44m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211","CFG80211","USB","PCI","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_run_firmware","mt7925_mcu_read_vefuse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211","CFG80211","USB","PCI","DEBUG_FS"],"series_id":"7113c193-4a7e-4459-bac5-b3e20ddaef37","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-05 09:19:42 +0000 UTC FinishedAt: 2026-08-05 09:39:37 +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:*0a7a2899-105e-4a6e-80f1-393e4735d61a,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-workflowvq44m/series-workflowvq44m-convert-artifact-1418492129/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": "33fb843f-8ee7-43e2-9bce-6e8474e9a72c", "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-workflowvq44m/series-workflowvq44m-build-action-2504803855/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvq44m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211","CFG80211","USB","PCI","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_run_firmware","mt7925_mcu_read_vefuse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211","CFG80211","USB","PCI","DEBUG_FS"],"series_id":"7113c193-4a7e-4459-bac5-b3e20ddaef37","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-05 09:39:47 +0000 UTC FinishedAt: 2026-08-05 09:39:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvq44m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211","CFG80211","USB","PCI","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_run_firmware","mt7925_mcu_read_vefuse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211","CFG80211","USB","PCI","DEBUG_FS"],"series_id":"7113c193-4a7e-4459-bac5-b3e20ddaef37","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-05 09:39:47 +0000 UTC FinishedAt: 2026-08-05 09:39:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvq44m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211","CFG80211","USB","PCI","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_run_firmware","mt7925_mcu_read_vefuse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211","CFG80211","USB","PCI","DEBUG_FS"],"series_id":"7113c193-4a7e-4459-bac5-b3e20ddaef37","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-05 09:39:47 +0000 UTC FinishedAt: 2026-08-05 09:39:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvq44m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211","CFG80211","USB","PCI","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_run_firmware","mt7925_mcu_read_vefuse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211","CFG80211","USB","PCI","DEBUG_FS"],"series_id":"7113c193-4a7e-4459-bac5-b3e20ddaef37","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-05 09:39:47 +0000 UTC FinishedAt: 2026-08-05 09:39:53 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211","CFG80211","USB","PCI","DEBUG_FS"],"series_id":"7113c193-4a7e-4459-bac5-b3e20ddaef37","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvq44m/series-workflowvq44m-convert-artifact-2756579636/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvq44m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211","CFG80211","USB","PCI","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_run_firmware","mt7925_mcu_read_vefuse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211","CFG80211","USB","PCI","DEBUG_FS"],"series_id":"7113c193-4a7e-4459-bac5-b3e20ddaef37","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-05 09:39:57 +0000 UTC FinishedAt: 2026-08-05 09:41:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvq44m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211","CFG80211","USB","PCI","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_run_firmware","mt7925_mcu_read_vefuse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211","CFG80211","USB","PCI","DEBUG_FS"],"series_id":"7113c193-4a7e-4459-bac5-b3e20ddaef37","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-05 09:39:57 +0000 UTC FinishedAt: 2026-08-05 09:41:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*33fb843f-8ee7-43e2-9bce-6e8474e9a72c,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-workflowvq44m/series-workflowvq44m-build-action-2504803855/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowvq44m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211","CFG80211","USB","PCI","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_run_firmware","mt7925_mcu_read_vefuse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211","CFG80211","USB","PCI","DEBUG_FS"],"series_id":"7113c193-4a7e-4459-bac5-b3e20ddaef37","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-05 09:41:51 +0000 UTC FinishedAt: 2026-08-05 09:41:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvq44m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211","CFG80211","USB","PCI","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_run_firmware","mt7925_mcu_read_vefuse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211","CFG80211","USB","PCI","DEBUG_FS"],"series_id":"7113c193-4a7e-4459-bac5-b3e20ddaef37","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-05 09:41:51 +0000 UTC FinishedAt: 2026-08-05 09:41:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvq44m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211","CFG80211","USB","PCI","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_run_firmware","mt7925_mcu_read_vefuse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211","CFG80211","USB","PCI","DEBUG_FS"],"series_id":"7113c193-4a7e-4459-bac5-b3e20ddaef37","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-05 09:41:51 +0000 UTC FinishedAt: 2026-08-05 10:01:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvq44m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211","CFG80211","USB","PCI","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_run_firmware","mt7925_mcu_read_vefuse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211","CFG80211","USB","PCI","DEBUG_FS"],"series_id":"7113c193-4a7e-4459-bac5-b3e20ddaef37","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-05 09:41:51 +0000 UTC FinishedAt: 2026-08-05 10:01:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*0a7a2899-105e-4a6e-80f1-393e4735d61a,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-workflowvq44m/series-workflowvq44m-convert-artifact-2756579636/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": "2122484c-7990-49c7-90f2-53b8c3e81331", "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-workflowvq44m/series-workflowvq44m-build-action-345535232/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvq44m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211","CFG80211","USB","PCI","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_run_firmware","mt7925_mcu_read_vefuse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211","CFG80211","USB","PCI","DEBUG_FS"],"series_id":"7113c193-4a7e-4459-bac5-b3e20ddaef37","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-05 09:41:51 +0000 UTC FinishedAt: 2026-08-05 10:01:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*0a7a2899-105e-4a6e-80f1-393e4735d61a,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-workflowvq44m/series-workflowvq44m-convert-artifact-2756579636/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": "2122484c-7990-49c7-90f2-53b8c3e81331", "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-workflowvq44m/series-workflowvq44m-build-action-345535232/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvq44m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211","CFG80211","USB","PCI","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_run_firmware","mt7925_mcu_read_vefuse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211","CFG80211","USB","PCI","DEBUG_FS"],"series_id":"7113c193-4a7e-4459-bac5-b3e20ddaef37","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-05 10:01:38 +0000 UTC FinishedAt: 2026-08-05 10:01:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvq44m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211","CFG80211","USB","PCI","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_run_firmware","mt7925_mcu_read_vefuse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211","CFG80211","USB","PCI","DEBUG_FS"],"series_id":"7113c193-4a7e-4459-bac5-b3e20ddaef37","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-05 10:01:38 +0000 UTC FinishedAt: 2026-08-05 10:01:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvq44m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211","CFG80211","USB","PCI","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_run_firmware","mt7925_mcu_read_vefuse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211","CFG80211","USB","PCI","DEBUG_FS"],"series_id":"7113c193-4a7e-4459-bac5-b3e20ddaef37","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-05 10:01:38 +0000 UTC FinishedAt: 2026-08-05 10:03:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvq44m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211","CFG80211","USB","PCI","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_run_firmware","mt7925_mcu_read_vefuse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211","CFG80211","USB","PCI","DEBUG_FS"],"series_id":"7113c193-4a7e-4459-bac5-b3e20ddaef37","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-05 10:01:38 +0000 UTC FinishedAt: 2026-08-05 10:03:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*2122484c-7990-49c7-90f2-53b8c3e81331,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvq44m/series-workflowvq44m-build-action-345535232/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowvq44m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211","CFG80211","USB","PCI","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_run_firmware","mt7925_mcu_read_vefuse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211","CFG80211","USB","PCI","DEBUG_FS"],"series_id":"7113c193-4a7e-4459-bac5-b3e20ddaef37","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-05 10:03:37 +0000 UTC FinishedAt: 2026-08-05 10:06:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvq44m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211","CFG80211","USB","PCI","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_run_firmware","mt7925_mcu_read_vefuse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211","CFG80211","USB","PCI","DEBUG_FS"],"series_id":"7113c193-4a7e-4459-bac5-b3e20ddaef37","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-05 10:03:37 +0000 UTC FinishedAt: 2026-08-05 10:06:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_run_firmware","mt7925_mcu_read_vefuse"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*33fb843f-8ee7-43e2-9bce-6e8474e9a72c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*2122484c-7990-49c7-90f2-53b8c3e81331,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvq44m/series-workflowvq44m-build-action-2504803855/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvq44m/series-workflowvq44m-build-action-345535232/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowvq44m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211","CFG80211","USB","PCI","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_run_firmware","mt7925_mcu_read_vefuse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211","CFG80211","USB","PCI","DEBUG_FS"],"series_id":"7113c193-4a7e-4459-bac5-b3e20ddaef37","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-05 10:03:37 +0000 UTC FinishedAt: 2026-08-05 10:03:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvq44m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211","CFG80211","USB","PCI","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_run_firmware","mt7925_mcu_read_vefuse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211","CFG80211","USB","PCI","DEBUG_FS"],"series_id":"7113c193-4a7e-4459-bac5-b3e20ddaef37","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-05 10:03:37 +0000 UTC FinishedAt: 2026-08-05 10:03:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_run_firmware","mt7925_mcu_read_vefuse"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvq44m/series-workflowvq44m-convert-artifact-3154105181/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvq44m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211","CFG80211","USB","PCI","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_run_firmware","mt7925_mcu_read_vefuse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211","CFG80211","USB","PCI","DEBUG_FS"],"series_id":"7113c193-4a7e-4459-bac5-b3e20ddaef37","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-05 10:03:37 +0000 UTC FinishedAt: 2026-08-05 10:03:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvq44m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211","CFG80211","USB","PCI","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_run_firmware","mt7925_mcu_read_vefuse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211","CFG80211","USB","PCI","DEBUG_FS"],"series_id":"7113c193-4a7e-4459-bac5-b3e20ddaef37","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-05 10:03:37 +0000 UTC FinishedAt: 2026-08-05 10:03:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvq44m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211","CFG80211","USB","PCI","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_run_firmware","mt7925_mcu_read_vefuse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211","CFG80211","USB","PCI","DEBUG_FS"],"series_id":"7113c193-4a7e-4459-bac5-b3e20ddaef37","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-05 10:03:37 +0000 UTC FinishedAt: 2026-08-05 10:03:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvq44m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211","CFG80211","USB","PCI","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_run_firmware","mt7925_mcu_read_vefuse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211","CFG80211","USB","PCI","DEBUG_FS"],"series_id":"7113c193-4a7e-4459-bac5-b3e20ddaef37","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-05 10:03:47 +0000 UTC FinishedAt: 2026-08-05 10:06:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvq44m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211","CFG80211","USB","PCI","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_run_firmware","mt7925_mcu_read_vefuse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211","CFG80211","USB","PCI","DEBUG_FS"],"series_id":"7113c193-4a7e-4459-bac5-b3e20ddaef37","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-05 10:03:47 +0000 UTC FinishedAt: 2026-08-05 10:06:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*33fb843f-8ee7-43e2-9bce-6e8474e9a72c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*2122484c-7990-49c7-90f2-53b8c3e81331,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvq44m/series-workflowvq44m-build-action-2504803855/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvq44m/series-workflowvq44m-build-action-345535232/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvq44m/series-workflowvq44m-convert-artifact-3154105181/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}